@clr/angular 13.0.3 → 13.2.1
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/button/button-group/button-group.d.ts +5 -3
- package/clarity.api.md +145 -48
- package/clr-angular.module.d.ts +13 -12
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +11 -3
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +9 -3
- package/data/datagrid/datagrid-column.d.ts +10 -1
- package/data/datagrid/render/main-renderer.d.ts +3 -2
- package/data/stack-view/stack-control.d.ts +7 -2
- 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 +10 -5
- package/esm2020/accordion/stepper/models/stepper.model.mjs +1 -1
- package/esm2020/accordion/stepper/providers/stepper.service.mjs +1 -1
- package/esm2020/accordion/stepper/stepper-panel.mjs +1 -1
- package/esm2020/button/button-group/button-group.mjs +17 -11
- package/esm2020/clr-angular.module.mjs +5 -1
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +37 -16
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +27 -13
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +7 -3
- package/esm2020/data/datagrid/datagrid-column.mjs +28 -3
- package/esm2020/data/datagrid/datagrid-filter.mjs +1 -1
- package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +1 -1
- package/esm2020/data/datagrid/render/main-renderer.mjs +9 -6
- package/esm2020/data/stack-view/stack-control.mjs +13 -3
- package/esm2020/data/stack-view/stack-input.mjs +1 -1
- package/esm2020/data/stack-view/stack-select.mjs +1 -1
- package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +1 -1
- package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +1 -1
- 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 +55 -22
- package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
- package/esm2020/forms/checkbox/checkbox.mjs +1 -1
- package/esm2020/forms/combobox/combobox-container.mjs +1 -1
- package/esm2020/forms/combobox/combobox.mjs +3 -6
- package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +1 -1
- package/esm2020/forms/common/control.mjs +1 -1
- package/esm2020/forms/common/error.mjs +1 -1
- package/esm2020/forms/common/helper.mjs +1 -1
- package/esm2020/forms/common/if-control-state/if-error.mjs +1 -1
- package/esm2020/forms/common/if-control-state/if-success.mjs +1 -1
- package/esm2020/forms/common/success.mjs +1 -1
- package/esm2020/forms/datalist/datalist-container.mjs +1 -1
- package/esm2020/forms/datalist/datalist-input.mjs +1 -1
- package/esm2020/forms/datepicker/calendar.mjs +3 -3
- package/esm2020/forms/datepicker/date-container.mjs +1 -1
- package/esm2020/forms/datepicker/date-input.mjs +1 -1
- package/esm2020/forms/input/input.mjs +1 -1
- package/esm2020/forms/password/password-container.mjs +3 -11
- package/esm2020/forms/password/password.mjs +1 -1
- package/esm2020/forms/radio/radio-container.mjs +1 -1
- package/esm2020/forms/range/range-container.mjs +1 -1
- package/esm2020/forms/select/select-container.mjs +1 -1
- package/esm2020/forms/select/select.mjs +1 -1
- package/esm2020/forms/textarea/textarea.mjs +1 -1
- package/esm2020/layout/nav/aria-current-link.mjs +28 -0
- package/esm2020/layout/nav/header.mjs +25 -8
- package/esm2020/layout/nav/index.mjs +2 -1
- package/esm2020/layout/nav/nav-level.mjs +110 -8
- package/esm2020/layout/nav/navigation.module.mjs +5 -1
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -3
- package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +25 -15
- package/esm2020/modal/modal-body.mjs +5 -2
- package/esm2020/popover/common/abstract-popover.mjs +15 -6
- package/esm2020/popover/dropdown/dropdown-menu.mjs +1 -1
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +5 -3
- package/esm2020/popover/signpost/signpost-content.mjs +2 -1
- package/esm2020/utils/breakpoints/breakpoints.mjs +15 -1
- package/esm2020/utils/destroy/destroy.service.mjs +44 -0
- package/esm2020/utils/destroy/index.mjs +7 -0
- package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +7 -7
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +21 -16
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +1 -1
- package/esm2020/utils/focus/key-focus/util.mjs +6 -1
- package/esm2020/utils/focus-trap/focus-trap.mjs +141 -0
- 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 +3 -1
- package/esm2020/utils/popover/popover-content.mjs +14 -8
- package/fesm2015/clr-angular.mjs +831 -182
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +828 -181
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/combobox/combobox.d.ts +0 -1
- package/layout/nav/aria-current-link.d.ts +13 -0
- package/layout/nav/header.d.ts +6 -0
- package/layout/nav/index.d.ts +1 -0
- package/layout/nav/nav-level.d.ts +16 -4
- package/layout/nav/navigation.module.d.ts +7 -6
- package/layout/vertical-nav/vertical-nav-link.d.ts +6 -5
- package/modal/modal-body.d.ts +1 -0
- package/package.json +4 -4
- package/popover/common/abstract-popover.d.ts +3 -1
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +2 -2
- package/utils/breakpoints/breakpoints.d.ts +14 -0
- package/utils/destroy/destroy.service.d.ts +32 -0
- package/utils/destroy/index.d.ts +1 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +5 -4
- package/utils/focus/key-focus/util.d.ts +1 -0
- package/utils/focus-trap/focus-trap.d.ts +29 -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 +2 -0
- package/utils/popover/popover-content.d.ts +2 -1
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, NgModule, Injectable, Inject, PLATFORM_ID, EventEmitter, Input, Output, HostListener, Optional, Component, SkipSelf, ViewChild, InjectionToken, ContentChildren, ComponentFactoryResolver, ElementRef, HostBinding, ContentChild, Self, Attribute, LOCALE_ID, Renderer2, ChangeDetectionStrategy, ViewContainerRef, TemplateRef } from '@angular/core';
|
|
2
|
+
import { Directive, NgModule, Injectable, Inject, PLATFORM_ID, EventEmitter, Input, Output, HostListener, Optional, Component, SkipSelf, ViewChild, InjectionToken, ContentChildren, ComponentFactoryResolver, ElementRef, HostBinding, ContentChild, Self, Attribute, LOCALE_ID, Renderer2, ChangeDetectionStrategy, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
|
|
3
3
|
import { ClarityIcons, ellipsisHorizontalIcon, exclamationCircleIcon, checkCircleIcon, angleIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, windowCloseIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, infoCircleIcon, exclamationTriangleIcon, errorStandardIcon, circleIcon, dotCircleIcon, successStandardIcon } from '@cds/core/icon';
|
|
4
|
-
import * as
|
|
4
|
+
import * as i5 from '@angular/common';
|
|
5
5
|
import { CommonModule, DOCUMENT, isPlatformBrowser, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth, NgForOf } from '@angular/common';
|
|
6
|
-
import { filter, debounceTime, first, startWith, switchMap, take, map, tap, distinctUntilChanged, pairwise } from 'rxjs/operators';
|
|
6
|
+
import { filter, debounceTime, takeUntil, first, startWith, switchMap, take, map, tap, distinctUntilChanged, pairwise } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from 'rxjs';
|
|
8
8
|
import { Subject, fromEvent, BehaviorSubject, of, ReplaySubject, isObservable, combineLatest, Observable } from 'rxjs';
|
|
9
9
|
import { trigger, transition, style, animate, keyframes, state } from '@angular/animations';
|
|
10
10
|
import * as i1 from '@angular/forms';
|
|
11
11
|
import { FormsModule, SelectMultipleControlValueAccessor, FormControl, FormGroup } from '@angular/forms';
|
|
12
|
+
import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
|
|
13
|
+
import '@cds/core/internal-components/close-button/register.js';
|
|
14
|
+
import * as i1$1 from '@angular/router';
|
|
12
15
|
import '@cds/core/icon/register';
|
|
13
16
|
|
|
14
17
|
/*
|
|
@@ -327,6 +330,11 @@ function preventArrowKeyScroll(event) {
|
|
|
327
330
|
event.preventDefault();
|
|
328
331
|
}
|
|
329
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
|
+
}
|
|
330
338
|
|
|
331
339
|
/*
|
|
332
340
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -780,6 +788,7 @@ class ClrPopoverContent {
|
|
|
780
788
|
this.smartEventsService = smartEventsService;
|
|
781
789
|
this.smartOpenService = smartOpenService;
|
|
782
790
|
this.subscriptions = [];
|
|
791
|
+
this.removeClickListenerFn = null;
|
|
783
792
|
this.shouldRealign = false;
|
|
784
793
|
// Check-collector pattern:
|
|
785
794
|
// In order to get accurate content height/width values, we cannot calculate alignment offsets until
|
|
@@ -835,6 +844,10 @@ class ClrPopoverContent {
|
|
|
835
844
|
if (!this.view) {
|
|
836
845
|
return;
|
|
837
846
|
}
|
|
847
|
+
if (this.removeClickListenerFn) {
|
|
848
|
+
this.removeClickListenerFn();
|
|
849
|
+
this.removeClickListenerFn = null;
|
|
850
|
+
}
|
|
838
851
|
this.view.rootNodes.forEach(node => this.renderer.removeChild(this.document.body, node));
|
|
839
852
|
this.container.clear();
|
|
840
853
|
delete this.view;
|
|
@@ -849,16 +862,17 @@ class ClrPopoverContent {
|
|
|
849
862
|
addContent() {
|
|
850
863
|
// Create the view container
|
|
851
864
|
this.view = this.container.createEmbeddedView(this.template);
|
|
852
|
-
|
|
853
|
-
this.
|
|
865
|
+
const [rootNode] = this.view.rootNodes;
|
|
866
|
+
this.smartEventsService.contentRef = rootNode; // So we know where/what to set close focus on
|
|
867
|
+
this.renderer.addClass(rootNode, 'clr-popover-content');
|
|
854
868
|
// Reset to the begining of the document to be available for sizing/positioning calculations.
|
|
855
869
|
// If we add new content to the bottom it triggers changes in the layout that may lead to false anchor
|
|
856
870
|
// coordinates values.
|
|
857
|
-
this.renderer.setStyle(
|
|
858
|
-
this.renderer.setStyle(
|
|
871
|
+
this.renderer.setStyle(rootNode, 'top', '0px');
|
|
872
|
+
this.renderer.setStyle(rootNode, 'left', '0px');
|
|
859
873
|
// We need to hide it during the calculation phase, while it's not yet finally positioned.
|
|
860
|
-
this.renderer.setStyle(
|
|
861
|
-
this.renderer.listen(
|
|
874
|
+
this.renderer.setStyle(rootNode, 'opacity', '0');
|
|
875
|
+
this.removeClickListenerFn = this.renderer.listen(rootNode, 'click', event => {
|
|
862
876
|
this.smartOpenService.openEvent = event;
|
|
863
877
|
});
|
|
864
878
|
this.view.rootNodes.forEach(node => {
|
|
@@ -889,7 +903,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
889
903
|
type: Directive,
|
|
890
904
|
args: [{ selector: '[clrPopoverContent]' }]
|
|
891
905
|
}], ctorParameters: function () {
|
|
892
|
-
return [{ type:
|
|
906
|
+
return [{ type: Document, decorators: [{
|
|
893
907
|
type: Inject,
|
|
894
908
|
args: [DOCUMENT]
|
|
895
909
|
}] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: ClrPopoverPositionService }, { type: ClrPopoverEventsService }, { type: ClrPopoverToggleService }];
|
|
@@ -1228,7 +1242,7 @@ ClrButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
1228
1242
|
<ng-content></ng-content>
|
|
1229
1243
|
</button>
|
|
1230
1244
|
</ng-template>
|
|
1231
|
-
`, isInline: true, directives: [{ type:
|
|
1245
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1232
1246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrButton, decorators: [{
|
|
1233
1247
|
type: Component,
|
|
1234
1248
|
args: [{
|
|
@@ -1297,6 +1311,47 @@ const UNIQUE_ID_PROVIDER = {
|
|
|
1297
1311
|
useFactory: uniqueIdFactory,
|
|
1298
1312
|
};
|
|
1299
1313
|
|
|
1314
|
+
/*
|
|
1315
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
1316
|
+
* This software is released under MIT license.
|
|
1317
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1318
|
+
*/
|
|
1319
|
+
/**
|
|
1320
|
+
* @description
|
|
1321
|
+
*
|
|
1322
|
+
* Developers should explicitly add this service to providers; it then can be injected
|
|
1323
|
+
* into a constructor and used as a notifier for the `takeUntil` operator. This eliminates
|
|
1324
|
+
* the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy`
|
|
1325
|
+
* interface and teardown subscriptions there.
|
|
1326
|
+
*
|
|
1327
|
+
* This can be used as follows:
|
|
1328
|
+
* ```ts
|
|
1329
|
+
* @Component({
|
|
1330
|
+
* selector: 'clr-button-group',
|
|
1331
|
+
* templateUrl: 'button-group.html',
|
|
1332
|
+
* providers: [ClrDestroyService],
|
|
1333
|
+
* })
|
|
1334
|
+
* export class ClrButtonGroup {
|
|
1335
|
+
* constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: ClrDestroyService) {}
|
|
1336
|
+
*
|
|
1337
|
+
* ngAfterContentInit() {
|
|
1338
|
+
* this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));
|
|
1339
|
+
* }
|
|
1340
|
+
* }
|
|
1341
|
+
* ```
|
|
1342
|
+
*/
|
|
1343
|
+
class ClrDestroyService extends Subject {
|
|
1344
|
+
ngOnDestroy() {
|
|
1345
|
+
this.next();
|
|
1346
|
+
this.complete();
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
ClrDestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
1350
|
+
ClrDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDestroyService });
|
|
1351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDestroyService, decorators: [{
|
|
1352
|
+
type: Injectable
|
|
1353
|
+
}] });
|
|
1354
|
+
|
|
1300
1355
|
/*
|
|
1301
1356
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
1302
1357
|
* This software is released under MIT license.
|
|
@@ -1524,11 +1579,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1524
1579
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1525
1580
|
*/
|
|
1526
1581
|
class ClrButtonGroup {
|
|
1527
|
-
constructor(buttonGroupNewService, toggleService, popoverId, commonStrings) {
|
|
1582
|
+
constructor(buttonGroupNewService, toggleService, popoverId, commonStrings, destroy$) {
|
|
1528
1583
|
this.buttonGroupNewService = buttonGroupNewService;
|
|
1529
1584
|
this.toggleService = toggleService;
|
|
1530
1585
|
this.popoverId = popoverId;
|
|
1531
1586
|
this.commonStrings = commonStrings;
|
|
1587
|
+
this.destroy$ = destroy$;
|
|
1532
1588
|
this.popoverPosition = ClrPopoverPositions['bottom-left'];
|
|
1533
1589
|
this.inlineButtons = [];
|
|
1534
1590
|
this.menuButtons = [];
|
|
@@ -1543,7 +1599,7 @@ class ClrButtonGroup {
|
|
|
1543
1599
|
*/
|
|
1544
1600
|
ngAfterContentInit() {
|
|
1545
1601
|
this.initializeButtons();
|
|
1546
|
-
this.buttonGroupNewService.changes.subscribe(button => this.rearrangeButton(button));
|
|
1602
|
+
this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));
|
|
1547
1603
|
this.buttons.changes.subscribe(() => {
|
|
1548
1604
|
this.initializeButtons();
|
|
1549
1605
|
});
|
|
@@ -1613,14 +1669,15 @@ class ClrButtonGroup {
|
|
|
1613
1669
|
this.popoverPosition = ClrPopoverPositions[this._menuPosition];
|
|
1614
1670
|
}
|
|
1615
1671
|
}
|
|
1616
|
-
ClrButtonGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: ClrPopoverToggleService }, { token: UNIQUE_ID }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1672
|
+
ClrButtonGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: ClrPopoverToggleService }, { token: UNIQUE_ID }, { token: ClrCommonStringsService }, { token: ClrDestroyService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1617
1673
|
ClrButtonGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrButtonGroup, selector: "clr-button-group", inputs: { menuPosition: ["clrMenuPosition", "menuPosition"] }, host: { properties: { "class.btn-group": "true" } }, providers: [
|
|
1618
1674
|
ButtonInGroupService,
|
|
1619
1675
|
UNIQUE_ID_PROVIDER,
|
|
1620
1676
|
ClrPopoverToggleService,
|
|
1621
1677
|
ClrPopoverEventsService,
|
|
1622
1678
|
ClrPopoverPositionService,
|
|
1623
|
-
|
|
1679
|
+
ClrDestroyService,
|
|
1680
|
+
], queries: [{ propertyName: "buttons", predicate: ClrButton }], 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-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"commonStrings.keys.rowActions\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template [ngTemplateOutlet]=\"ref\"></ng-template>\n </div>\n </div>\n</ng-container>\n<ng-template #ref>\n <ng-container *ngFor=\"let menuButton of menuButtons\">\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </ng-container>\n</ng-template>\n", directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
|
|
1624
1681
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrButtonGroup, decorators: [{
|
|
1625
1682
|
type: Component,
|
|
1626
1683
|
args: [{ selector: 'clr-button-group', providers: [
|
|
@@ -1629,12 +1686,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1629
1686
|
ClrPopoverToggleService,
|
|
1630
1687
|
ClrPopoverEventsService,
|
|
1631
1688
|
ClrPopoverPositionService,
|
|
1689
|
+
ClrDestroyService,
|
|
1632
1690
|
], host: { '[class.btn-group]': 'true' }, 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-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"commonStrings.keys.rowActions\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template [ngTemplateOutlet]=\"ref\"></ng-template>\n </div>\n </div>\n</ng-container>\n<ng-template #ref>\n <ng-container *ngFor=\"let menuButton of menuButtons\">\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </ng-container>\n</ng-template>\n" }]
|
|
1633
1691
|
}], ctorParameters: function () {
|
|
1634
1692
|
return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
|
|
1635
1693
|
type: Inject,
|
|
1636
1694
|
args: [UNIQUE_ID]
|
|
1637
|
-
}] }, { type: ClrCommonStringsService }];
|
|
1695
|
+
}] }, { type: ClrCommonStringsService }, { type: ClrDestroyService }];
|
|
1638
1696
|
}, propDecorators: { buttons: [{
|
|
1639
1697
|
type: ContentChildren,
|
|
1640
1698
|
args: [ClrButton]
|
|
@@ -1732,7 +1790,7 @@ ClrLoadingButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
1732
1790
|
<ng-content></ng-content>
|
|
1733
1791
|
</span>
|
|
1734
1792
|
</ng-container>
|
|
1735
|
-
`, isInline: true, directives: [{ type:
|
|
1793
|
+
`, isInline: true, directives: [{ type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [
|
|
1736
1794
|
trigger('defaultButton', [
|
|
1737
1795
|
transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),
|
|
1738
1796
|
// TODO: see if we can get leave animation to work before spinner's enter animation
|
|
@@ -2696,7 +2754,7 @@ ClrControlContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
2696
2754
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
2697
2755
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
2698
2756
|
</div>
|
|
2699
|
-
`, isInline: true, directives: [{ type:
|
|
2757
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
2700
2758
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrControlContainer, decorators: [{
|
|
2701
2759
|
type: Component,
|
|
2702
2760
|
args: [{
|
|
@@ -3080,7 +3138,7 @@ ClrCheckboxWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
3080
3138
|
<ng-content select="[clrCheckbox],[clrToggle]"></ng-content>
|
|
3081
3139
|
<ng-content select="label"></ng-content>
|
|
3082
3140
|
<label *ngIf="!label"></label>
|
|
3083
|
-
`, isInline: true, directives: [{ type:
|
|
3141
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
3084
3142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCheckboxWrapper, decorators: [{
|
|
3085
3143
|
type: Component,
|
|
3086
3144
|
args: [{
|
|
@@ -3210,7 +3268,7 @@ ClrCheckboxContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
3210
3268
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
3211
3269
|
</div>
|
|
3212
3270
|
</div>
|
|
3213
|
-
`, isInline: true, directives: [{ type:
|
|
3271
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
3214
3272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCheckboxContainer, decorators: [{
|
|
3215
3273
|
type: Component,
|
|
3216
3274
|
args: [{
|
|
@@ -4952,10 +5010,10 @@ class ClrCalendar {
|
|
|
4952
5010
|
}
|
|
4953
5011
|
}
|
|
4954
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 });
|
|
4955
|
-
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"] }] });
|
|
4956
5014
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCalendar, decorators: [{
|
|
4957
5015
|
type: Component,
|
|
4958
|
-
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" }]
|
|
4959
5017
|
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }]; }, propDecorators: { onKeyDown: [{
|
|
4960
5018
|
type: HostListener,
|
|
4961
5019
|
args: ['keydown', ['$event']]
|
|
@@ -4988,9 +5046,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
4988
5046
|
* This software is released under MIT license.
|
|
4989
5047
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
4990
5048
|
*/
|
|
5049
|
+
/**
|
|
5050
|
+
* TODO:
|
|
5051
|
+
* Using core functions like:
|
|
5052
|
+
* - pluckPixelValue
|
|
5053
|
+
* - getCssPropertyValue
|
|
5054
|
+
*
|
|
5055
|
+
* to get the value of the design token.
|
|
5056
|
+
*
|
|
5057
|
+
* Note: Memoization/Cache usage possible.
|
|
5058
|
+
*/
|
|
4991
5059
|
// iPad mini screen width
|
|
4992
5060
|
// http://stephen.io/mediaqueries/#iPadMini
|
|
4993
5061
|
const DATEPICKER_ENABLE_BREAKPOINT = 768;
|
|
5062
|
+
const SMALL_BREAKPOINT = 576;
|
|
5063
|
+
const MEDIUM_BREAKPOINT = 768;
|
|
5064
|
+
const LARGE_BREAKPOINT = 992;
|
|
5065
|
+
const EXTRA_LARGE_BREAKPOINT = 1200;
|
|
4994
5066
|
|
|
4995
5067
|
/*
|
|
4996
5068
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -5164,7 +5236,7 @@ ClrMonthpicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
5164
5236
|
>
|
|
5165
5237
|
{{ month }}
|
|
5166
5238
|
</button>
|
|
5167
|
-
`, isInline: true, directives: [{ type:
|
|
5239
|
+
`, isInline: true, directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5168
5240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrMonthpicker, decorators: [{
|
|
5169
5241
|
type: Component,
|
|
5170
5242
|
args: [{
|
|
@@ -5417,7 +5489,7 @@ ClrYearpicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
5417
5489
|
{{ year }}
|
|
5418
5490
|
</button>
|
|
5419
5491
|
</div>
|
|
5420
|
-
`, isInline: true, directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }, { type:
|
|
5492
|
+
`, isInline: true, directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5421
5493
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrYearpicker, decorators: [{
|
|
5422
5494
|
type: Component,
|
|
5423
5495
|
args: [{
|
|
@@ -5573,7 +5645,7 @@ class ClrDatepickerViewManager {
|
|
|
5573
5645
|
}
|
|
5574
5646
|
}
|
|
5575
5647
|
ClrDatepickerViewManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatepickerViewManager, deps: [{ token: ClrCommonStringsService }, { token: ViewManagerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5576
|
-
ClrDatepickerViewManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager", host: { attributes: { "role": "dialog" }, properties: { "class.datepicker": "true", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], 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<clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n<clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n<clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n", components: [{ type: ClrMonthpicker, selector: "clr-monthpicker" }, { type: ClrYearpicker, selector: "clr-yearpicker" }, { type: ClrDaypicker, selector: "clr-daypicker" }], directives: [{ type:
|
|
5648
|
+
ClrDatepickerViewManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager", host: { attributes: { "role": "dialog" }, properties: { "class.datepicker": "true", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], 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<clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n<clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n<clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n", components: [{ type: ClrMonthpicker, selector: "clr-monthpicker" }, { type: ClrYearpicker, selector: "clr-yearpicker" }, { type: ClrDaypicker, selector: "clr-daypicker" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
5577
5649
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
|
|
5578
5650
|
type: Component,
|
|
5579
5651
|
args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
|
|
@@ -5741,7 +5813,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
5741
5813
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
5742
5814
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
5743
5815
|
</div>
|
|
5744
|
-
`, isInline: true, components: [{ type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }], directives: [{ type:
|
|
5816
|
+
`, isInline: true, components: [{ type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
|
|
5745
5817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDateContainer, decorators: [{
|
|
5746
5818
|
type: Component,
|
|
5747
5819
|
args: [{
|
|
@@ -6211,7 +6283,7 @@ ClrInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
6211
6283
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6212
6284
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6213
6285
|
</div>
|
|
6214
|
-
`, isInline: true, directives: [{ type:
|
|
6286
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
6215
6287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrInputContainer, decorators: [{
|
|
6216
6288
|
type: Component,
|
|
6217
6289
|
args: [{
|
|
@@ -6358,11 +6430,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6358
6430
|
class="clr-input-group-icon-action"
|
|
6359
6431
|
type="button"
|
|
6360
6432
|
>
|
|
6361
|
-
<cds-icon
|
|
6362
|
-
status="info"
|
|
6363
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6364
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6365
|
-
></cds-icon>
|
|
6433
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6366
6434
|
<span class="clr-sr-only">{{
|
|
6367
6435
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6368
6436
|
}}</span>
|
|
@@ -6387,7 +6455,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6387
6455
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6388
6456
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6389
6457
|
</div>
|
|
6390
|
-
`, isInline: true, directives: [{ type:
|
|
6458
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
6391
6459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPasswordContainer, decorators: [{
|
|
6392
6460
|
type: Component,
|
|
6393
6461
|
args: [{
|
|
@@ -6406,11 +6474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
6406
6474
|
class="clr-input-group-icon-action"
|
|
6407
6475
|
type="button"
|
|
6408
6476
|
>
|
|
6409
|
-
<cds-icon
|
|
6410
|
-
status="info"
|
|
6411
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6412
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6413
|
-
></cds-icon>
|
|
6477
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6414
6478
|
<span class="clr-sr-only">{{
|
|
6415
6479
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6416
6480
|
}}</span>
|
|
@@ -6564,7 +6628,7 @@ ClrRadioWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
6564
6628
|
<ng-content select="[clrRadio]"></ng-content>
|
|
6565
6629
|
<ng-content select="label"></ng-content>
|
|
6566
6630
|
<label *ngIf="!label"></label>
|
|
6567
|
-
`, isInline: true, directives: [{ type:
|
|
6631
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
6568
6632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrRadioWrapper, decorators: [{
|
|
6569
6633
|
type: Component,
|
|
6570
6634
|
args: [{
|
|
@@ -6671,7 +6735,7 @@ ClrRadioContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
6671
6735
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6672
6736
|
</div>
|
|
6673
6737
|
</div>
|
|
6674
|
-
`, isInline: true, directives: [{ type:
|
|
6738
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
6675
6739
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrRadioContainer, decorators: [{
|
|
6676
6740
|
type: Component,
|
|
6677
6741
|
args: [{
|
|
@@ -6797,7 +6861,7 @@ ClrSelectContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
6797
6861
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6798
6862
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6799
6863
|
</div>
|
|
6800
|
-
`, isInline: true, directives: [{ type:
|
|
6864
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
6801
6865
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrSelectContainer, decorators: [{
|
|
6802
6866
|
type: Component,
|
|
6803
6867
|
args: [{
|
|
@@ -6924,7 +6988,7 @@ ClrTextareaContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6924
6988
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6925
6989
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6926
6990
|
</div>
|
|
6927
|
-
`, isInline: true, directives: [{ type:
|
|
6991
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
6928
6992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTextareaContainer, decorators: [{
|
|
6929
6993
|
type: Component,
|
|
6930
6994
|
args: [{
|
|
@@ -7074,7 +7138,7 @@ ClrRangeContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
7074
7138
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
7075
7139
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
7076
7140
|
</div>
|
|
7077
|
-
`, isInline: true, directives: [{ type:
|
|
7141
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
7078
7142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrRangeContainer, decorators: [{
|
|
7079
7143
|
type: Component,
|
|
7080
7144
|
args: [{
|
|
@@ -7247,7 +7311,7 @@ ClrDatalistContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
7247
7311
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
7248
7312
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
7249
7313
|
</div>
|
|
7250
|
-
`, isInline: true, directives: [{ type:
|
|
7314
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
7251
7315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatalistContainer, decorators: [{
|
|
7252
7316
|
type: Component,
|
|
7253
7317
|
args: [{
|
|
@@ -7945,7 +8009,7 @@ class ClrOption {
|
|
|
7945
8009
|
}
|
|
7946
8010
|
ClrOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOption, deps: [{ token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: OptionSelectionService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
7947
8011
|
ClrOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrOption, selector: "clr-option", inputs: { optionId: ["id", "optionId"], value: ["clrValue", "value"] }, host: { listeners: { "click": "onClick()" }, properties: { "class.clr-combobox-option": "true", "attr.role": "\"option\"", "attr.tabindex": "-1", "attr.id": "optionId", "class.active": "this.selected", "class.clr-focus": "this.focusClass" } }, providers: [UNIQUE_ID_PROVIDER], ngImport: i0, template: `<ng-content></ng-content>
|
|
7948
|
-
<span *ngIf="selected" class="clr-sr-only"> {{ commonStrings.keys.comboboxSelected }} </span> `, isInline: true, directives: [{ type:
|
|
8012
|
+
<span *ngIf="selected" class="clr-sr-only"> {{ commonStrings.keys.comboboxSelected }} </span> `, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
7949
8013
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOption, decorators: [{
|
|
7950
8014
|
type: Component,
|
|
7951
8015
|
args: [{
|
|
@@ -8169,7 +8233,7 @@ ClrOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "1
|
|
|
8169
8233
|
|
|
8170
8234
|
<!--Option Groups and Options will be projected here-->
|
|
8171
8235
|
<ng-content></ng-content>
|
|
8172
|
-
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type:
|
|
8236
|
+
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
8173
8237
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOptions, decorators: [{
|
|
8174
8238
|
type: Component,
|
|
8175
8239
|
args: [{
|
|
@@ -8283,7 +8347,7 @@ ClrComboboxContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
8283
8347
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
8284
8348
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
8285
8349
|
</div>
|
|
8286
|
-
`, isInline: true, directives: [{ type:
|
|
8350
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
8287
8351
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrComboboxContainer, decorators: [{
|
|
8288
8352
|
type: Component,
|
|
8289
8353
|
args: [{
|
|
@@ -9019,9 +9083,6 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9019
9083
|
// the aria properties on the input element, not on the component.
|
|
9020
9084
|
this.el = this.textbox;
|
|
9021
9085
|
}
|
|
9022
|
-
ngOnDestroy() {
|
|
9023
|
-
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
9024
|
-
}
|
|
9025
9086
|
}
|
|
9026
9087
|
ClrCombobox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCombobox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: OptionSelectionService }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: ClrPopoverPositionService }, { token: IfControlStateService, optional: true }, { token: ComboboxContainerService, optional: true }, { token: PLATFORM_ID }, { token: AriaService }, { token: ComboboxFocusHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
9027
9088
|
ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrCombobox, selector: "clr-combobox", inputs: { placeholder: "placeholder", multiSelect: ["clrMulti", "multiSelect"] }, outputs: { clrInputChange: "clrInputChange", clrOpenChange: "clrOpenChange", clrSelectionChange: "clrSelectionChange" }, host: { listeners: { "keydown": "onKeyUp($event)" }, properties: { "class.aria-required": "true", "class.clr-combobox": "true", "class.clr-combobox-disabled": "control?.disabled" } }, providers: [
|
|
@@ -9036,7 +9097,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
9036
9097
|
ClrPopoverToggleService,
|
|
9037
9098
|
ClrPopoverEventsService,
|
|
9038
9099
|
ClrPopoverPositionService,
|
|
9039
|
-
], 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"] }] });
|
|
9040
9101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
9041
9102
|
type: Component,
|
|
9042
9103
|
args: [{ selector: 'clr-combobox', providers: [
|
|
@@ -9055,7 +9116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9055
9116
|
'[class.aria-required]': 'true',
|
|
9056
9117
|
'[class.clr-combobox]': 'true',
|
|
9057
9118
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
9058
|
-
}, 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" }]
|
|
9059
9120
|
}], ctorParameters: function () {
|
|
9060
9121
|
return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
9061
9122
|
type: Self
|
|
@@ -9621,13 +9682,13 @@ class DragEventListenerService {
|
|
|
9621
9682
|
};
|
|
9622
9683
|
// Initialize nested listeners' property with a new empty array;
|
|
9623
9684
|
this.nestedListeners = [];
|
|
9624
|
-
//
|
|
9625
|
-
this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
|
|
9626
|
-
selectEvent.preventDefault();
|
|
9627
|
-
selectEvent.stopImmediatePropagation();
|
|
9628
|
-
}));
|
|
9629
|
-
// Listen to mousemove/touchmove events outside of angular zone.
|
|
9685
|
+
// Listen to selectstart/mousemove/touchmove events outside of angular zone.
|
|
9630
9686
|
this.ngZone.runOutsideAngular(() => {
|
|
9687
|
+
// This is needed to disable selection during dragging (especially in EDGE/IE11).
|
|
9688
|
+
this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
|
|
9689
|
+
selectEvent.preventDefault();
|
|
9690
|
+
selectEvent.stopImmediatePropagation();
|
|
9691
|
+
}));
|
|
9631
9692
|
// During the drag start delay, pointer should stay within the boundary.
|
|
9632
9693
|
this.checkDragStartBoundary(moveOnEvent);
|
|
9633
9694
|
this.dragStartDelayTimeout = setTimeout(() => {
|
|
@@ -10520,11 +10581,12 @@ const FOCUS_ON_VIEW_INIT_PROVIDER = {
|
|
|
10520
10581
|
/* This directive is for guiding the document focus to the newly added content when its view is initialized
|
|
10521
10582
|
so that assistive technologies can read its content. */
|
|
10522
10583
|
class ClrFocusOnViewInit {
|
|
10523
|
-
constructor(el, platformId, focusOnViewInit, document, renderer) {
|
|
10584
|
+
constructor(el, platformId, focusOnViewInit, document, renderer, ngZone) {
|
|
10524
10585
|
this.el = el;
|
|
10525
10586
|
this.platformId = platformId;
|
|
10526
10587
|
this.focusOnViewInit = focusOnViewInit;
|
|
10527
10588
|
this.renderer = renderer;
|
|
10589
|
+
this.destroy$ = new Subject();
|
|
10528
10590
|
this.directFocus = true; // true if the element gets focused without need to set tabindex;
|
|
10529
10591
|
this._isEnabled = this.focusOnViewInit;
|
|
10530
10592
|
// Angular compiler doesn't understand the type Document
|
|
@@ -10532,13 +10594,15 @@ class ClrFocusOnViewInit {
|
|
|
10532
10594
|
// even though it understands the injection token DOCUMENT
|
|
10533
10595
|
// https://github.com/angular/angular/issues/20351
|
|
10534
10596
|
this.document = document;
|
|
10535
|
-
|
|
10536
|
-
|
|
10537
|
-
|
|
10538
|
-
|
|
10539
|
-
|
|
10540
|
-
|
|
10541
|
-
|
|
10597
|
+
ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusout')
|
|
10598
|
+
.pipe(takeUntil(this.destroy$))
|
|
10599
|
+
.subscribe(() => {
|
|
10600
|
+
if (!this.directFocus) {
|
|
10601
|
+
// manually set attributes and styles should be removed
|
|
10602
|
+
this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');
|
|
10603
|
+
this.renderer.setStyle(this.el.nativeElement, 'outline', null);
|
|
10604
|
+
}
|
|
10605
|
+
}));
|
|
10542
10606
|
}
|
|
10543
10607
|
set isEnabled(value) {
|
|
10544
10608
|
if (this.focusOnViewInit && typeof value === 'boolean') {
|
|
@@ -10548,6 +10612,9 @@ class ClrFocusOnViewInit {
|
|
|
10548
10612
|
ngAfterViewInit() {
|
|
10549
10613
|
this.focus();
|
|
10550
10614
|
}
|
|
10615
|
+
ngOnDestroy() {
|
|
10616
|
+
this.destroy$.next();
|
|
10617
|
+
}
|
|
10551
10618
|
focus() {
|
|
10552
10619
|
if (!isPlatformBrowser(this.platformId)) {
|
|
10553
10620
|
return;
|
|
@@ -10568,8 +10635,8 @@ class ClrFocusOnViewInit {
|
|
|
10568
10635
|
}
|
|
10569
10636
|
}
|
|
10570
10637
|
}
|
|
10571
|
-
ClrFocusOnViewInit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: FOCUS_ON_VIEW_INIT }, { token: DOCUMENT }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
10572
|
-
ClrFocusOnViewInit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: { isEnabled: ["clrFocusOnViewInit", "isEnabled"] },
|
|
10638
|
+
ClrFocusOnViewInit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: FOCUS_ON_VIEW_INIT }, { token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
10639
|
+
ClrFocusOnViewInit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: { isEnabled: ["clrFocusOnViewInit", "isEnabled"] }, ngImport: i0 });
|
|
10573
10640
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, decorators: [{
|
|
10574
10641
|
type: Directive,
|
|
10575
10642
|
args: [{
|
|
@@ -10585,11 +10652,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10585
10652
|
}] }, { type: undefined, decorators: [{
|
|
10586
10653
|
type: Inject,
|
|
10587
10654
|
args: [DOCUMENT]
|
|
10588
|
-
}] }, { type: i0.Renderer2 }];
|
|
10589
|
-
}, propDecorators: {
|
|
10590
|
-
type: HostListener,
|
|
10591
|
-
args: ['focusout']
|
|
10592
|
-
}], isEnabled: [{
|
|
10655
|
+
}] }, { type: i0.Renderer2 }, { type: i0.NgZone }];
|
|
10656
|
+
}, propDecorators: { isEnabled: [{
|
|
10593
10657
|
type: Input,
|
|
10594
10658
|
args: ['clrFocusOnViewInit']
|
|
10595
10659
|
}] } });
|
|
@@ -11270,11 +11334,12 @@ class DatagridStringFilterImpl {
|
|
|
11270
11334
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11271
11335
|
*/
|
|
11272
11336
|
class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
11273
|
-
constructor(filters, domAdapter, commonStrings, smartToggleService) {
|
|
11337
|
+
constructor(filters, domAdapter, commonStrings, smartToggleService, ngZone) {
|
|
11274
11338
|
super(filters);
|
|
11275
11339
|
this.domAdapter = domAdapter;
|
|
11276
11340
|
this.commonStrings = commonStrings;
|
|
11277
11341
|
this.smartToggleService = smartToggleService;
|
|
11342
|
+
this.ngZone = ngZone;
|
|
11278
11343
|
this.subs = [];
|
|
11279
11344
|
/**
|
|
11280
11345
|
* Indicates if the filter dropdown is open
|
|
@@ -11282,6 +11347,9 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
11282
11347
|
this.open = false;
|
|
11283
11348
|
this.filterValueChange = new EventEmitter();
|
|
11284
11349
|
}
|
|
11350
|
+
get placeholderValue() {
|
|
11351
|
+
return this.placeholder || this.commonStrings.keys.filterItems;
|
|
11352
|
+
}
|
|
11285
11353
|
/**
|
|
11286
11354
|
* Customizable filter logic based on a search text
|
|
11287
11355
|
*/
|
|
@@ -11303,9 +11371,16 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
11303
11371
|
ngAfterViewInit() {
|
|
11304
11372
|
this.subs.push(this.smartToggleService.openChange.subscribe(openChange => {
|
|
11305
11373
|
this.open = openChange;
|
|
11306
|
-
//
|
|
11307
|
-
|
|
11308
|
-
|
|
11374
|
+
// Note: this is being run outside of the Angular zone because `element.focus()` doesn't require
|
|
11375
|
+
// running change detection.
|
|
11376
|
+
this.ngZone.runOutsideAngular(() => {
|
|
11377
|
+
// The animation frame in used because when this executes, the input isn't displayed.
|
|
11378
|
+
// Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
|
|
11379
|
+
// `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.
|
|
11380
|
+
// Animation tasks are executed within the next rendering frame.
|
|
11381
|
+
requestAnimationFrame(() => {
|
|
11382
|
+
this.domAdapter.focus(this.input.nativeElement);
|
|
11383
|
+
});
|
|
11309
11384
|
});
|
|
11310
11385
|
}));
|
|
11311
11386
|
}
|
|
@@ -11334,8 +11409,8 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
11334
11409
|
}
|
|
11335
11410
|
}
|
|
11336
11411
|
}
|
|
11337
|
-
DatagridStringFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridStringFilter, deps: [{ token: FiltersProvider }, { token: DomAdapter }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11338
|
-
DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: { customStringFilter: ["clrDgStringFilter", "customStringFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
11412
|
+
DatagridStringFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridStringFilter, deps: [{ token: FiltersProvider }, { token: DomAdapter }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
11413
|
+
DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: { placeholder: ["clrFilterPlaceholder", "placeholder"], customStringFilter: ["clrDgStringFilter", "customStringFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
11339
11414
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
11340
11415
|
<input
|
|
11341
11416
|
#input
|
|
@@ -11343,8 +11418,8 @@ DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
11343
11418
|
name="search"
|
|
11344
11419
|
[(ngModel)]="value"
|
|
11345
11420
|
class="clr-input"
|
|
11346
|
-
[attr.aria-label]="
|
|
11347
|
-
[placeholder]="
|
|
11421
|
+
[attr.aria-label]="placeholderValue"
|
|
11422
|
+
[placeholder]="placeholderValue"
|
|
11348
11423
|
/>
|
|
11349
11424
|
</clr-dg-filter>
|
|
11350
11425
|
`, isInline: true, components: [{ type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }], directives: [{ 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"] }] });
|
|
@@ -11361,13 +11436,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11361
11436
|
name="search"
|
|
11362
11437
|
[(ngModel)]="value"
|
|
11363
11438
|
class="clr-input"
|
|
11364
|
-
[attr.aria-label]="
|
|
11365
|
-
[placeholder]="
|
|
11439
|
+
[attr.aria-label]="placeholderValue"
|
|
11440
|
+
[placeholder]="placeholderValue"
|
|
11366
11441
|
/>
|
|
11367
11442
|
</clr-dg-filter>
|
|
11368
11443
|
`,
|
|
11369
11444
|
}]
|
|
11370
|
-
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }]; }, propDecorators: {
|
|
11445
|
+
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
|
|
11446
|
+
type: Input,
|
|
11447
|
+
args: ['clrFilterPlaceholder']
|
|
11448
|
+
}], customStringFilter: [{
|
|
11371
11449
|
type: Input,
|
|
11372
11450
|
args: ['clrDgStringFilter']
|
|
11373
11451
|
}], input: [{
|
|
@@ -11508,11 +11586,12 @@ class DatagridNumericFilterImpl {
|
|
|
11508
11586
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11509
11587
|
*/
|
|
11510
11588
|
class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
11511
|
-
constructor(filters, domAdapter, commonStrings, popoverToggleService) {
|
|
11589
|
+
constructor(filters, domAdapter, commonStrings, popoverToggleService, ngZone) {
|
|
11512
11590
|
super(filters);
|
|
11513
11591
|
this.domAdapter = domAdapter;
|
|
11514
11592
|
this.commonStrings = commonStrings;
|
|
11515
11593
|
this.popoverToggleService = popoverToggleService;
|
|
11594
|
+
this.ngZone = ngZone;
|
|
11516
11595
|
this.subscriptions = [];
|
|
11517
11596
|
/**
|
|
11518
11597
|
* Indicates if the filter dropdown is open
|
|
@@ -11521,10 +11600,17 @@ class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
|
11521
11600
|
this.filterValueChange = new EventEmitter();
|
|
11522
11601
|
}
|
|
11523
11602
|
ngOnDestroy() {
|
|
11603
|
+
super.ngOnDestroy();
|
|
11524
11604
|
this.subscriptions.forEach(sub => {
|
|
11525
11605
|
sub.unsubscribe();
|
|
11526
11606
|
});
|
|
11527
11607
|
}
|
|
11608
|
+
get maxPlaceholderValue() {
|
|
11609
|
+
return this.maxPlaceholder || this.commonStrings.keys.maxValue;
|
|
11610
|
+
}
|
|
11611
|
+
get minPlaceholderValue() {
|
|
11612
|
+
return this.minPlaceholder || this.commonStrings.keys.minValue;
|
|
11613
|
+
}
|
|
11528
11614
|
/**
|
|
11529
11615
|
* Customizable filter logic based on high and low values
|
|
11530
11616
|
*/
|
|
@@ -11546,9 +11632,16 @@ class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
|
11546
11632
|
ngAfterViewInit() {
|
|
11547
11633
|
this.subscriptions.push(this.popoverToggleService.openChange.subscribe(openChange => {
|
|
11548
11634
|
this.open = openChange;
|
|
11549
|
-
//
|
|
11550
|
-
|
|
11551
|
-
|
|
11635
|
+
// Note: this is being run outside of the Angular zone because `element.focus()` doesn't require
|
|
11636
|
+
// running change detection.
|
|
11637
|
+
this.ngZone.runOutsideAngular(() => {
|
|
11638
|
+
// The animation frame in used because when this executes, the input isn't displayed.
|
|
11639
|
+
// Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
|
|
11640
|
+
// `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.
|
|
11641
|
+
// Animation tasks are executed within the next rendering frame.
|
|
11642
|
+
requestAnimationFrame(() => {
|
|
11643
|
+
this.domAdapter.focus(this.input.nativeElement);
|
|
11644
|
+
});
|
|
11552
11645
|
});
|
|
11553
11646
|
}));
|
|
11554
11647
|
}
|
|
@@ -11619,8 +11712,8 @@ class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
|
11619
11712
|
}
|
|
11620
11713
|
}
|
|
11621
11714
|
}
|
|
11622
|
-
DatagridNumericFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridNumericFilter, deps: [{ token: FiltersProvider }, { token: DomAdapter }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11623
|
-
DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: { customNumericFilter: ["clrDgNumericFilter", "customNumericFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input_low"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
11715
|
+
DatagridNumericFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridNumericFilter, deps: [{ token: FiltersProvider }, { token: DomAdapter }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
11716
|
+
DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: { maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], customNumericFilter: ["clrDgNumericFilter", "customNumericFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input_low"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
11624
11717
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
11625
11718
|
<input
|
|
11626
11719
|
class="datagrid-numeric-filter-input"
|
|
@@ -11628,8 +11721,8 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11628
11721
|
type="number"
|
|
11629
11722
|
name="low"
|
|
11630
11723
|
[(ngModel)]="low"
|
|
11631
|
-
[placeholder]="
|
|
11632
|
-
[attr.aria-label]="
|
|
11724
|
+
[placeholder]="minPlaceholderValue"
|
|
11725
|
+
[attr.aria-label]="minPlaceholderValue"
|
|
11633
11726
|
/>
|
|
11634
11727
|
<span class="datagrid-filter-input-spacer"></span>
|
|
11635
11728
|
<input
|
|
@@ -11638,8 +11731,8 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11638
11731
|
type="number"
|
|
11639
11732
|
name="high"
|
|
11640
11733
|
[(ngModel)]="high"
|
|
11641
|
-
[placeholder]="
|
|
11642
|
-
[attr.aria-label]="
|
|
11734
|
+
[placeholder]="maxPlaceholderValue"
|
|
11735
|
+
[attr.aria-label]="maxPlaceholderValue"
|
|
11643
11736
|
/>
|
|
11644
11737
|
</clr-dg-filter>
|
|
11645
11738
|
`, isInline: true, components: [{ type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }], directives: [{ type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }] });
|
|
@@ -11656,8 +11749,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11656
11749
|
type="number"
|
|
11657
11750
|
name="low"
|
|
11658
11751
|
[(ngModel)]="low"
|
|
11659
|
-
[placeholder]="
|
|
11660
|
-
[attr.aria-label]="
|
|
11752
|
+
[placeholder]="minPlaceholderValue"
|
|
11753
|
+
[attr.aria-label]="minPlaceholderValue"
|
|
11661
11754
|
/>
|
|
11662
11755
|
<span class="datagrid-filter-input-spacer"></span>
|
|
11663
11756
|
<input
|
|
@@ -11666,13 +11759,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11666
11759
|
type="number"
|
|
11667
11760
|
name="high"
|
|
11668
11761
|
[(ngModel)]="high"
|
|
11669
|
-
[placeholder]="
|
|
11670
|
-
[attr.aria-label]="
|
|
11762
|
+
[placeholder]="maxPlaceholderValue"
|
|
11763
|
+
[attr.aria-label]="maxPlaceholderValue"
|
|
11671
11764
|
/>
|
|
11672
11765
|
</clr-dg-filter>
|
|
11673
11766
|
`,
|
|
11674
11767
|
}]
|
|
11675
|
-
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }]; }, propDecorators: {
|
|
11768
|
+
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { maxPlaceholder: [{
|
|
11769
|
+
type: Input,
|
|
11770
|
+
args: ['clrFilterMaxPlaceholder']
|
|
11771
|
+
}], minPlaceholder: [{
|
|
11772
|
+
type: Input,
|
|
11773
|
+
args: ['clrFilterMinPlaceholder']
|
|
11774
|
+
}], customNumericFilter: [{
|
|
11676
11775
|
type: Input,
|
|
11677
11776
|
args: ['clrDgNumericFilter']
|
|
11678
11777
|
}], input: [{
|
|
@@ -12477,6 +12576,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12477
12576
|
this.subscriptions.push(this.listenForDetailPaneChanges());
|
|
12478
12577
|
}
|
|
12479
12578
|
ngOnDestroy() {
|
|
12579
|
+
super.ngOnDestroy();
|
|
12480
12580
|
this.subscriptions.forEach(s => s.unsubscribe());
|
|
12481
12581
|
}
|
|
12482
12582
|
listenForDetailPaneChanges() {
|
|
@@ -12662,6 +12762,15 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12662
12762
|
this.customFilter = true;
|
|
12663
12763
|
}
|
|
12664
12764
|
}
|
|
12765
|
+
get filterStringPlaceholderValue() {
|
|
12766
|
+
return this.filterStringPlaceholder || this.commonStrings.keys.filterItems;
|
|
12767
|
+
}
|
|
12768
|
+
get filterNumberMaxPlaceholderValue() {
|
|
12769
|
+
return this.filterNumberMaxPlaceholder || this.commonStrings.keys.maxValue;
|
|
12770
|
+
}
|
|
12771
|
+
get filterNumberMinPlaceholderValue() {
|
|
12772
|
+
return this.filterNumberMinPlaceholder || this.commonStrings.keys.minValue;
|
|
12773
|
+
}
|
|
12665
12774
|
set updateFilterValue(newValue) {
|
|
12666
12775
|
if (this.filter) {
|
|
12667
12776
|
if (this.filter instanceof DatagridStringFilterImpl) {
|
|
@@ -12713,7 +12822,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12713
12822
|
}
|
|
12714
12823
|
}
|
|
12715
12824
|
ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
12716
|
-
ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sorted: ["clrDgSorted", "sorted"], sortOrder: ["clrDgSortOrder", "sortOrder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortedChange: "clrDgSortedChange", sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, providers: [ClrPopoverPositionService, ClrPopoverEventsService, ClrPopoverToggleService], queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
12825
|
+
ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sorted: ["clrDgSorted", "sorted"], sortOrder: ["clrDgSortOrder", "sortOrder"], filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortedChange: "clrDgSortedChange", sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, providers: [ClrPopoverPositionService, ClrPopoverEventsService, ClrPopoverToggleService], queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
12717
12826
|
<div class="datagrid-column-flex">
|
|
12718
12827
|
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
12719
12828
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
@@ -12730,12 +12839,15 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
12730
12839
|
|
|
12731
12840
|
<clr-dg-string-filter
|
|
12732
12841
|
*ngIf="field && !customFilter && colType == 'string'"
|
|
12842
|
+
[clrFilterPlaceholder]="filterStringPlaceholderValue"
|
|
12733
12843
|
[clrDgStringFilter]="registered"
|
|
12734
12844
|
[(clrFilterValue)]="filterValue"
|
|
12735
12845
|
></clr-dg-string-filter>
|
|
12736
12846
|
|
|
12737
12847
|
<clr-dg-numeric-filter
|
|
12738
12848
|
*ngIf="field && !customFilter && colType == 'number'"
|
|
12849
|
+
[clrFilterMaxPlaceholder]="filterMaxPlaceholderValue"
|
|
12850
|
+
[clrFilterMinPlaceholder]="filterMinPlaceholderValue"
|
|
12739
12851
|
[clrDgNumericFilter]="registered"
|
|
12740
12852
|
[(clrFilterValue)]="filterValue"
|
|
12741
12853
|
></clr-dg-numeric-filter>
|
|
@@ -12750,7 +12862,7 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
12750
12862
|
|
|
12751
12863
|
<clr-dg-column-separator *ngIf="showSeparator"></clr-dg-column-separator>
|
|
12752
12864
|
</div>
|
|
12753
|
-
`, isInline: true, components: [{ type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: ["clrDgStringFilter", "clrFilterValue"], outputs: ["clrFilterValueChange"] }, { type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: ["clrDgNumericFilter", "clrFilterValue"], outputs: ["clrFilterValueChange"] }, { type: ClrDatagridColumnSeparator, selector: "clr-dg-column-separator" }], directives: [{ type:
|
|
12865
|
+
`, isInline: true, components: [{ type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: ["clrFilterPlaceholder", "clrDgStringFilter", "clrFilterValue"], outputs: ["clrFilterValueChange"] }, { type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: ["clrFilterMaxPlaceholder", "clrFilterMinPlaceholder", "clrDgNumericFilter", "clrFilterValue"], outputs: ["clrFilterValueChange"] }, { type: ClrDatagridColumnSeparator, selector: "clr-dg-column-separator" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12754
12866
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridColumn, decorators: [{
|
|
12755
12867
|
type: Component,
|
|
12756
12868
|
args: [{
|
|
@@ -12772,12 +12884,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
12772
12884
|
|
|
12773
12885
|
<clr-dg-string-filter
|
|
12774
12886
|
*ngIf="field && !customFilter && colType == 'string'"
|
|
12887
|
+
[clrFilterPlaceholder]="filterStringPlaceholderValue"
|
|
12775
12888
|
[clrDgStringFilter]="registered"
|
|
12776
12889
|
[(clrFilterValue)]="filterValue"
|
|
12777
12890
|
></clr-dg-string-filter>
|
|
12778
12891
|
|
|
12779
12892
|
<clr-dg-numeric-filter
|
|
12780
12893
|
*ngIf="field && !customFilter && colType == 'number'"
|
|
12894
|
+
[clrFilterMaxPlaceholder]="filterMaxPlaceholderValue"
|
|
12895
|
+
[clrFilterMinPlaceholder]="filterMinPlaceholderValue"
|
|
12781
12896
|
[clrDgNumericFilter]="registered"
|
|
12782
12897
|
[(clrFilterValue)]="filterValue"
|
|
12783
12898
|
></clr-dg-numeric-filter>
|
|
@@ -12825,6 +12940,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
12825
12940
|
}], projectedFilter: [{
|
|
12826
12941
|
type: ContentChild,
|
|
12827
12942
|
args: [CustomFilter]
|
|
12943
|
+
}], filterStringPlaceholder: [{
|
|
12944
|
+
type: Input,
|
|
12945
|
+
args: ['clrFilterStringPlaceholder']
|
|
12946
|
+
}], filterNumberMaxPlaceholder: [{
|
|
12947
|
+
type: Input,
|
|
12948
|
+
args: ['clrFilterNumberMaxPlaceholder']
|
|
12949
|
+
}], filterNumberMinPlaceholder: [{
|
|
12950
|
+
type: Input,
|
|
12951
|
+
args: ['clrFilterNumberMinPlaceholder']
|
|
12828
12952
|
}], updateFilterValue: [{
|
|
12829
12953
|
type: Input,
|
|
12830
12954
|
args: ['clrFilterValue']
|
|
@@ -13081,7 +13205,7 @@ ClrDatagridPlaceholder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
13081
13205
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
13082
13206
|
<span role="gridcell"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13083
13207
|
</div>
|
|
13084
|
-
`, isInline: true, directives: [{ type:
|
|
13208
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
13085
13209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPlaceholder, decorators: [{
|
|
13086
13210
|
type: Component,
|
|
13087
13211
|
args: [{
|
|
@@ -13281,7 +13405,7 @@ ClrSignpost.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
13281
13405
|
</ng-container>
|
|
13282
13406
|
|
|
13283
13407
|
<ng-content></ng-content>
|
|
13284
|
-
`, isInline: true, directives: [{ type:
|
|
13408
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrSignpostTrigger, selector: "[clrSignpostTrigger]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
13285
13409
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrSignpost, decorators: [{
|
|
13286
13410
|
type: Component,
|
|
13287
13411
|
args: [{
|
|
@@ -14052,7 +14176,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
14052
14176
|
DatagridIfExpandService,
|
|
14053
14177
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
14054
14178
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
14055
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable\" *ngIf=\"selection.rowSelectionMode\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\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]=\"checkboxId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type:
|
|
14179
|
+
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable\" *ngIf=\"selection.rowSelectionMode\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\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]=\"checkboxId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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: ClrRadio, selector: "[clrRadio]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
14056
14180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
14057
14181
|
type: Component,
|
|
14058
14182
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -14461,7 +14585,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
14461
14585
|
TableSizeService,
|
|
14462
14586
|
ColumnsService,
|
|
14463
14587
|
DisplayModeService,
|
|
14464
|
-
], 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 >\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", components: [{ type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type:
|
|
14588
|
+
], 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 >\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", 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"] }] });
|
|
14465
14589
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
14466
14590
|
type: Component,
|
|
14467
14591
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -14909,7 +15033,9 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
14909
15033
|
>
|
|
14910
15034
|
<div class="switch-header">
|
|
14911
15035
|
<div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
|
|
14912
|
-
<ng-container *ngIf="!customToggleTitle">
|
|
15036
|
+
<ng-container *ngIf="!customToggleTitle">
|
|
15037
|
+
<h2>{{ commonStrings.keys.showColumns }}</h2>
|
|
15038
|
+
</ng-container>
|
|
14913
15039
|
<ng-content select="clr-dg-column-toggle-title"></ng-content>
|
|
14914
15040
|
<button
|
|
14915
15041
|
class="btn btn-sm btn-link toggle-switch-close-button"
|
|
@@ -14944,7 +15070,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
14944
15070
|
</clr-dg-column-toggle-button>
|
|
14945
15071
|
</div>
|
|
14946
15072
|
</div>
|
|
14947
|
-
`, isInline: true, components: [{ type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { type:
|
|
15073
|
+
`, isInline: true, components: [{ type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { 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"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
14948
15074
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
|
|
14949
15075
|
type: Component,
|
|
14950
15076
|
args: [{
|
|
@@ -14973,7 +15099,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14973
15099
|
>
|
|
14974
15100
|
<div class="switch-header">
|
|
14975
15101
|
<div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
|
|
14976
|
-
<ng-container *ngIf="!customToggleTitle">
|
|
15102
|
+
<ng-container *ngIf="!customToggleTitle">
|
|
15103
|
+
<h2>{{ commonStrings.keys.showColumns }}</h2>
|
|
15104
|
+
</ng-container>
|
|
14977
15105
|
<ng-content select="clr-dg-column-toggle-title"></ng-content>
|
|
14978
15106
|
<button
|
|
14979
15107
|
class="btn btn-sm btn-link toggle-switch-close-button"
|
|
@@ -15151,7 +15279,7 @@ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
15151
15279
|
<ng-content></ng-content>
|
|
15152
15280
|
<div class="clr-sr-only">{{ commonStrings.keys.detailPaneEnd }}</div>
|
|
15153
15281
|
</div>
|
|
15154
|
-
`, isInline: true, directives: [{ type:
|
|
15282
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
|
|
15155
15283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridDetail, decorators: [{
|
|
15156
15284
|
type: Component,
|
|
15157
15285
|
args: [{
|
|
@@ -15606,6 +15734,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15606
15734
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15607
15735
|
*/
|
|
15608
15736
|
|
|
15737
|
+
/*
|
|
15738
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15739
|
+
* This software is released under MIT license.
|
|
15740
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15741
|
+
*/
|
|
15742
|
+
class ForTypeAheadProvider {
|
|
15743
|
+
constructor() {
|
|
15744
|
+
this._textContentChange = new Subject();
|
|
15745
|
+
}
|
|
15746
|
+
get textContentChange() {
|
|
15747
|
+
return this._textContentChange.asObservable();
|
|
15748
|
+
}
|
|
15749
|
+
get textContent() {
|
|
15750
|
+
return this._textContent;
|
|
15751
|
+
}
|
|
15752
|
+
set textContent(value) {
|
|
15753
|
+
this._textContent = value;
|
|
15754
|
+
this._textContentChange.next(value);
|
|
15755
|
+
}
|
|
15756
|
+
}
|
|
15757
|
+
ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15758
|
+
ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider });
|
|
15759
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
|
|
15760
|
+
type: Injectable
|
|
15761
|
+
}] });
|
|
15762
|
+
|
|
15763
|
+
/*
|
|
15764
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15765
|
+
* This software is released under MIT license.
|
|
15766
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15767
|
+
*/
|
|
15768
|
+
// The purpose of this directive is to provide the text content of its host element
|
|
15769
|
+
// or text content that's passed to its input.
|
|
15770
|
+
// This directive must stay optional. So do not embed this directive in a component module by default.
|
|
15771
|
+
// If users need to use this directive, they should import its module on their side.
|
|
15772
|
+
class ClrForTypeAhead {
|
|
15773
|
+
constructor(el, forTypeAheadProvider) {
|
|
15774
|
+
this.el = el;
|
|
15775
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
15776
|
+
}
|
|
15777
|
+
trimAndLowerCase(value) {
|
|
15778
|
+
return value.toLocaleLowerCase().trim();
|
|
15779
|
+
}
|
|
15780
|
+
get content() {
|
|
15781
|
+
return this._content;
|
|
15782
|
+
}
|
|
15783
|
+
set content(value) {
|
|
15784
|
+
if (value) {
|
|
15785
|
+
this._content = this.trimAndLowerCase(value);
|
|
15786
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15787
|
+
}
|
|
15788
|
+
else {
|
|
15789
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15790
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15791
|
+
}
|
|
15792
|
+
}
|
|
15793
|
+
ngOnInit() {
|
|
15794
|
+
if (!this._content) {
|
|
15795
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15796
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15797
|
+
}
|
|
15798
|
+
}
|
|
15799
|
+
}
|
|
15800
|
+
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 });
|
|
15801
|
+
ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
|
|
15802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAhead, decorators: [{
|
|
15803
|
+
type: Directive,
|
|
15804
|
+
args: [{
|
|
15805
|
+
providers: [ForTypeAheadProvider],
|
|
15806
|
+
selector: '[clrForTypeAhead]',
|
|
15807
|
+
}]
|
|
15808
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
|
|
15809
|
+
type: Input,
|
|
15810
|
+
args: ['clrForTypeAhead']
|
|
15811
|
+
}] } });
|
|
15812
|
+
|
|
15813
|
+
/*
|
|
15814
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15815
|
+
* This software is released under MIT license.
|
|
15816
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15817
|
+
*/
|
|
15818
|
+
class ClrForTypeAheadModule {
|
|
15819
|
+
}
|
|
15820
|
+
ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15821
|
+
ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
|
|
15822
|
+
ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, imports: [[CommonModule]] });
|
|
15823
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
|
|
15824
|
+
type: NgModule,
|
|
15825
|
+
args: [{
|
|
15826
|
+
imports: [CommonModule],
|
|
15827
|
+
declarations: [ClrForTypeAhead],
|
|
15828
|
+
exports: [ClrForTypeAhead],
|
|
15829
|
+
}]
|
|
15830
|
+
}] });
|
|
15831
|
+
|
|
15832
|
+
/*
|
|
15833
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15834
|
+
* This software is released under MIT license.
|
|
15835
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15836
|
+
*/
|
|
15837
|
+
|
|
15838
|
+
/*
|
|
15839
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15840
|
+
* This software is released under MIT license.
|
|
15841
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15842
|
+
*/
|
|
15843
|
+
|
|
15609
15844
|
/*
|
|
15610
15845
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15611
15846
|
* This software is released under MIT license.
|
|
@@ -15643,7 +15878,7 @@ ClrDatagridFooter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
15643
15878
|
</div>
|
|
15644
15879
|
</ng-container>
|
|
15645
15880
|
<ng-content select="clr-dg-pagination"></ng-content>
|
|
15646
|
-
`, isInline: true, components: [{ type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { type: ClrDatagridColumnToggle, selector: "clr-dg-column-toggle" }], directives: [{ type:
|
|
15881
|
+
`, isInline: true, components: [{ type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { type: ClrDatagridColumnToggle, selector: "clr-dg-column-toggle" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
15647
15882
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridFooter, decorators: [{
|
|
15648
15883
|
type: Component,
|
|
15649
15884
|
args: [{
|
|
@@ -15815,7 +16050,7 @@ ClrDatagridPageSize.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
15815
16050
|
<option *ngFor="let option of pageSizeOptions" [ngValue]="option">{{ option }}</option>
|
|
15816
16051
|
</select>
|
|
15817
16052
|
</div>
|
|
15818
|
-
`, isInline: true, directives: [{ type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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:
|
|
16053
|
+
`, isInline: true, directives: [{ type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
|
|
15819
16054
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPageSize, decorators: [{
|
|
15820
16055
|
type: Component,
|
|
15821
16056
|
args: [{
|
|
@@ -16071,7 +16306,7 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
16071
16306
|
</button>
|
|
16072
16307
|
</div>
|
|
16073
16308
|
</ng-container>
|
|
16074
|
-
`, isInline: true, directives: [{ type:
|
|
16309
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
16075
16310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPagination, decorators: [{
|
|
16076
16311
|
type: Component,
|
|
16077
16312
|
args: [{
|
|
@@ -16615,7 +16850,7 @@ const domAdapterFactory = (platformId) => {
|
|
|
16615
16850
|
// Fixes build error
|
|
16616
16851
|
// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)
|
|
16617
16852
|
class DatagridMainRenderer {
|
|
16618
|
-
constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService) {
|
|
16853
|
+
constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone) {
|
|
16619
16854
|
this.organizer = organizer;
|
|
16620
16855
|
this.items = items;
|
|
16621
16856
|
this.page = page;
|
|
@@ -16625,6 +16860,7 @@ class DatagridMainRenderer {
|
|
|
16625
16860
|
this.detailService = detailService;
|
|
16626
16861
|
this.tableSizeService = tableSizeService;
|
|
16627
16862
|
this.columnsService = columnsService;
|
|
16863
|
+
this.ngZone = ngZone;
|
|
16628
16864
|
this._heightSet = false;
|
|
16629
16865
|
this.subscriptions = [];
|
|
16630
16866
|
/**
|
|
@@ -16664,8 +16900,10 @@ class DatagridMainRenderer {
|
|
|
16664
16900
|
this.stabilizeColumns();
|
|
16665
16901
|
}
|
|
16666
16902
|
if (this.shouldComputeHeight()) {
|
|
16667
|
-
|
|
16668
|
-
|
|
16903
|
+
this.ngZone.runOutsideAngular(() => {
|
|
16904
|
+
setTimeout(() => {
|
|
16905
|
+
this.computeDatagridHeight();
|
|
16906
|
+
});
|
|
16669
16907
|
});
|
|
16670
16908
|
}
|
|
16671
16909
|
}
|
|
@@ -16760,7 +16998,7 @@ class DatagridMainRenderer {
|
|
|
16760
16998
|
}
|
|
16761
16999
|
}
|
|
16762
17000
|
}
|
|
16763
|
-
DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: DomAdapter }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17001
|
+
DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: DomAdapter }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16764
17002
|
DatagridMainRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: DatagridMainRenderer, selector: "clr-datagrid", providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }], queries: [{ propertyName: "headers", predicate: DatagridHeaderRenderer }, { propertyName: "rows", predicate: DatagridRowRenderer, descendants: true }], ngImport: i0 });
|
|
16765
17003
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridMainRenderer, decorators: [{
|
|
16766
17004
|
type: Directive,
|
|
@@ -16768,7 +17006,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
16768
17006
|
selector: 'clr-datagrid',
|
|
16769
17007
|
providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],
|
|
16770
17008
|
}]
|
|
16771
|
-
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: DomAdapter }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }]; }, propDecorators: { headers: [{
|
|
17009
|
+
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: DomAdapter }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }, { type: i0.NgZone }]; }, propDecorators: { headers: [{
|
|
16772
17010
|
type: ContentChildren,
|
|
16773
17011
|
args: [DatagridHeaderRenderer]
|
|
16774
17012
|
}], rows: [{
|
|
@@ -17146,7 +17384,7 @@ ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
17146
17384
|
<ng-content select="clr-stack-block"></ng-content>
|
|
17147
17385
|
</div>
|
|
17148
17386
|
</clr-expandable-animation>
|
|
17149
|
-
`, isInline: true, styles: [":host{display:block}\n"], components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }], directives: [{ type:
|
|
17387
|
+
`, isInline: true, styles: [":host{display:block}\n"], components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
17150
17388
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackBlock, decorators: [{
|
|
17151
17389
|
type: Component,
|
|
17152
17390
|
args: [{
|
|
@@ -17336,7 +17574,7 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
17336
17574
|
<!-- End of undocumented experimental feature. -->
|
|
17337
17575
|
</span>
|
|
17338
17576
|
</h4>
|
|
17339
|
-
`, isInline: true, styles: [":host{display:block}\n"], directives: [{ type:
|
|
17577
|
+
`, isInline: true, styles: [":host{display:block}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
17340
17578
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackHeader, decorators: [{
|
|
17341
17579
|
type: Component,
|
|
17342
17580
|
args: [{
|
|
@@ -17382,14 +17620,22 @@ class StackControl {
|
|
|
17382
17620
|
this.modelChange = new EventEmitter(false);
|
|
17383
17621
|
// Make the ClrStackView editable, since it contains a StackControl
|
|
17384
17622
|
this.stackView.editable = true;
|
|
17385
|
-
this.stackView.editingChange.subscribe((editing) => {
|
|
17623
|
+
this.subscription = this.stackView.editingChange.subscribe((editing) => {
|
|
17386
17624
|
// Edit mode was closed
|
|
17387
17625
|
if (!editing) {
|
|
17388
17626
|
this.modelChange.emit(this.model);
|
|
17389
17627
|
}
|
|
17390
17628
|
});
|
|
17391
17629
|
}
|
|
17630
|
+
ngOnDestroy() {
|
|
17631
|
+
this.subscription.unsubscribe();
|
|
17632
|
+
}
|
|
17392
17633
|
}
|
|
17634
|
+
StackControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackControl, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17635
|
+
StackControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: StackControl, ngImport: i0 });
|
|
17636
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackControl, decorators: [{
|
|
17637
|
+
type: Directive
|
|
17638
|
+
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
17393
17639
|
|
|
17394
17640
|
/*
|
|
17395
17641
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -17407,7 +17653,7 @@ ClrStackInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
|
17407
17653
|
ClrStackInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrStackInput, selector: "clr-stack-input", inputs: { model: ["clrModel", "model"], type: "type" }, outputs: { modelChange: "clrModelChange" }, usesInheritance: true, ngImport: i0, template: `
|
|
17408
17654
|
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
17409
17655
|
<input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
|
|
17410
|
-
`, isInline: true, directives: [{ type:
|
|
17656
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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"] }] });
|
|
17411
17657
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackInput, decorators: [{
|
|
17412
17658
|
type: Component,
|
|
17413
17659
|
args: [{
|
|
@@ -17440,7 +17686,7 @@ ClrStackSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
17440
17686
|
<ng-content></ng-content>
|
|
17441
17687
|
</select>
|
|
17442
17688
|
</div>
|
|
17443
|
-
`, isInline: true, directives: [{ type:
|
|
17689
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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"] }] });
|
|
17444
17690
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackSelect, decorators: [{
|
|
17445
17691
|
type: Component,
|
|
17446
17692
|
args: [{
|
|
@@ -17831,6 +18077,71 @@ class TreeFocusManagerService {
|
|
|
17831
18077
|
return this.findNextFocusable(model);
|
|
17832
18078
|
}
|
|
17833
18079
|
}
|
|
18080
|
+
findDescendentNodeStartsWith(searchString, model) {
|
|
18081
|
+
if (model.expanded && model.children.length > 0) {
|
|
18082
|
+
for (const childModel of model.children) {
|
|
18083
|
+
const found = this.findNodeStartsWith(searchString, childModel);
|
|
18084
|
+
if (found) {
|
|
18085
|
+
return found;
|
|
18086
|
+
}
|
|
18087
|
+
}
|
|
18088
|
+
}
|
|
18089
|
+
return null;
|
|
18090
|
+
}
|
|
18091
|
+
findSiblingNodeStartsWith(searchString, model) {
|
|
18092
|
+
const siblings = this.findSiblings(model);
|
|
18093
|
+
const selfIndex = siblings.indexOf(model);
|
|
18094
|
+
// Look from sibling nodes
|
|
18095
|
+
for (let i = selfIndex + 1; i < siblings.length; i++) {
|
|
18096
|
+
const siblingModel = siblings[i];
|
|
18097
|
+
const found = this.findNodeStartsWith(searchString, siblingModel);
|
|
18098
|
+
if (found) {
|
|
18099
|
+
return found;
|
|
18100
|
+
}
|
|
18101
|
+
}
|
|
18102
|
+
return null;
|
|
18103
|
+
}
|
|
18104
|
+
findRootNodeStartsWith(searchString, model) {
|
|
18105
|
+
for (const rootModel of this.rootNodeModels) {
|
|
18106
|
+
// Don't look from a parent yet
|
|
18107
|
+
if (model.parent && model.parent === rootModel) {
|
|
18108
|
+
continue;
|
|
18109
|
+
}
|
|
18110
|
+
const found = this.findNodeStartsWith(searchString, rootModel);
|
|
18111
|
+
if (found) {
|
|
18112
|
+
return found;
|
|
18113
|
+
}
|
|
18114
|
+
}
|
|
18115
|
+
return null;
|
|
18116
|
+
}
|
|
18117
|
+
findNodeStartsWith(searchString, model) {
|
|
18118
|
+
if (!model) {
|
|
18119
|
+
return null;
|
|
18120
|
+
}
|
|
18121
|
+
if (model.textContent.startsWith(searchString)) {
|
|
18122
|
+
return model;
|
|
18123
|
+
}
|
|
18124
|
+
return this.findDescendentNodeStartsWith(searchString, model);
|
|
18125
|
+
}
|
|
18126
|
+
findClosestNodeStartsWith(searchString, model) {
|
|
18127
|
+
if (!model) {
|
|
18128
|
+
return null;
|
|
18129
|
+
}
|
|
18130
|
+
const foundFromDescendents = this.findDescendentNodeStartsWith(searchString, model);
|
|
18131
|
+
if (foundFromDescendents) {
|
|
18132
|
+
return foundFromDescendents;
|
|
18133
|
+
}
|
|
18134
|
+
const foundFromSiblings = this.findSiblingNodeStartsWith(searchString, model);
|
|
18135
|
+
if (foundFromSiblings) {
|
|
18136
|
+
return foundFromSiblings;
|
|
18137
|
+
}
|
|
18138
|
+
const foundFromRootNodes = this.findRootNodeStartsWith(searchString, model);
|
|
18139
|
+
if (foundFromRootNodes) {
|
|
18140
|
+
return foundFromRootNodes;
|
|
18141
|
+
}
|
|
18142
|
+
// Now look from its own direct parent
|
|
18143
|
+
return this.findNodeStartsWith(searchString, model.parent);
|
|
18144
|
+
}
|
|
17834
18145
|
focusNode(model) {
|
|
17835
18146
|
if (model) {
|
|
17836
18147
|
this._focusRequest.next(model.nodeId);
|
|
@@ -17860,6 +18171,9 @@ class TreeFocusManagerService {
|
|
|
17860
18171
|
focusNodeBelow(model) {
|
|
17861
18172
|
this.focusNode(this.findNodeBelow(model));
|
|
17862
18173
|
}
|
|
18174
|
+
focusNodeStartsWith(searchString, model) {
|
|
18175
|
+
this.focusNode(this.findClosestNodeStartsWith(searchString, model));
|
|
18176
|
+
}
|
|
17863
18177
|
}
|
|
17864
18178
|
TreeFocusManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17865
18179
|
TreeFocusManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService });
|
|
@@ -17917,7 +18231,7 @@ RecursiveChildren.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
17917
18231
|
<ng-container *ngTemplateOutlet="featuresService.recursion.template; context: getContext(child)"></ng-container>
|
|
17918
18232
|
</ng-container>
|
|
17919
18233
|
</ng-container>
|
|
17920
|
-
`, isInline: true, directives: [{ type:
|
|
18234
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
17921
18235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RecursiveChildren, decorators: [{
|
|
17922
18236
|
type: Component,
|
|
17923
18237
|
args: [{
|
|
@@ -17951,10 +18265,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
17951
18265
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17952
18266
|
*/
|
|
17953
18267
|
const LVIEW_CONTEXT_INDEX = 8;
|
|
18268
|
+
// If the user types multiple keys without allowing 200ms to pass between them,
|
|
18269
|
+
// then those keys are sent together in one request.
|
|
18270
|
+
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
17954
18271
|
class ClrTreeNode {
|
|
17955
|
-
constructor(nodeId, platformId, parent, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
18272
|
+
constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
17956
18273
|
this.nodeId = nodeId;
|
|
17957
18274
|
this.platformId = platformId;
|
|
18275
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
17958
18276
|
this.featuresService = featuresService;
|
|
17959
18277
|
this.expandService = expandService;
|
|
17960
18278
|
this.commonStrings = commonStrings;
|
|
@@ -17962,6 +18280,8 @@ class ClrTreeNode {
|
|
|
17962
18280
|
this.STATES = ClrSelectedState;
|
|
17963
18281
|
this.skipEmitChange = false;
|
|
17964
18282
|
this.isModelLoading = false;
|
|
18283
|
+
this.typeAheadKeyEvent = new Subject();
|
|
18284
|
+
this.typeAheadKeyBuffer = '';
|
|
17965
18285
|
this.selectedChange = new EventEmitter(false);
|
|
17966
18286
|
this.expandedChange = new EventEmitter();
|
|
17967
18287
|
this.subscriptions = [];
|
|
@@ -18044,6 +18364,16 @@ class ClrTreeNode {
|
|
|
18044
18364
|
}));
|
|
18045
18365
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
18046
18366
|
}
|
|
18367
|
+
ngAfterContentInit() {
|
|
18368
|
+
if (this.forTypeAheadProvider) {
|
|
18369
|
+
this._model.textContent = this.forTypeAheadProvider.textContent;
|
|
18370
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18371
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18372
|
+
// reset once bufferedKeys are used
|
|
18373
|
+
this.typeAheadKeyBuffer = '';
|
|
18374
|
+
}));
|
|
18375
|
+
}
|
|
18376
|
+
}
|
|
18047
18377
|
ngOnDestroy() {
|
|
18048
18378
|
this._model.destroy();
|
|
18049
18379
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -18061,9 +18391,11 @@ class ClrTreeNode {
|
|
|
18061
18391
|
}
|
|
18062
18392
|
}
|
|
18063
18393
|
focusTreeNode() {
|
|
18064
|
-
|
|
18394
|
+
const containerEl = this.contentContainer.nativeElement;
|
|
18395
|
+
if (isPlatformBrowser(this.platformId) && document.activeElement !== containerEl) {
|
|
18065
18396
|
this.setTabIndex(0);
|
|
18066
|
-
|
|
18397
|
+
containerEl.focus();
|
|
18398
|
+
containerEl.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
18067
18399
|
}
|
|
18068
18400
|
}
|
|
18069
18401
|
broadcastFocusOnContainer() {
|
|
@@ -18090,30 +18422,39 @@ class ClrTreeNode {
|
|
|
18090
18422
|
this.collapseOrFocusParent();
|
|
18091
18423
|
break;
|
|
18092
18424
|
case KeyCodes.Home:
|
|
18425
|
+
event.preventDefault();
|
|
18093
18426
|
this.focusManager.focusFirstVisibleNode();
|
|
18094
18427
|
break;
|
|
18095
18428
|
case KeyCodes.End:
|
|
18429
|
+
event.preventDefault();
|
|
18096
18430
|
this.focusManager.focusLastVisibleNode();
|
|
18097
18431
|
break;
|
|
18098
18432
|
case KeyCodes.Enter:
|
|
18099
|
-
this.
|
|
18433
|
+
this.toggleExpandOrTriggerDefault();
|
|
18100
18434
|
break;
|
|
18101
18435
|
case KeyCodes.Space:
|
|
18102
18436
|
case KeyCodes.Spacebar:
|
|
18103
18437
|
// to prevent scrolling on space key in this specific case
|
|
18104
18438
|
event.preventDefault();
|
|
18105
|
-
this.
|
|
18439
|
+
this.toggleExpandOrTriggerDefault();
|
|
18106
18440
|
break;
|
|
18107
18441
|
default:
|
|
18442
|
+
if (this._model.textContent && isKeyEitherLetterOrNumber(event)) {
|
|
18443
|
+
this.typeAheadKeyBuffer += event.key;
|
|
18444
|
+
this.typeAheadKeyEvent.next(this.typeAheadKeyBuffer);
|
|
18445
|
+
return;
|
|
18446
|
+
}
|
|
18108
18447
|
break;
|
|
18109
18448
|
}
|
|
18449
|
+
// if non-letter keys are pressed, do reset.
|
|
18450
|
+
this.typeAheadKeyBuffer = '';
|
|
18110
18451
|
}
|
|
18111
18452
|
get isParent() {
|
|
18112
18453
|
return this._model.children && this._model.children.length > 0;
|
|
18113
18454
|
}
|
|
18114
|
-
|
|
18455
|
+
toggleExpandOrTriggerDefault() {
|
|
18115
18456
|
if (this.isExpandable() && !this.isSelectable()) {
|
|
18116
|
-
this.
|
|
18457
|
+
this.expandService.expanded = !this.expanded;
|
|
18117
18458
|
}
|
|
18118
18459
|
else {
|
|
18119
18460
|
this.triggerDefaultAction();
|
|
@@ -18153,13 +18494,13 @@ class ClrTreeNode {
|
|
|
18153
18494
|
}
|
|
18154
18495
|
}
|
|
18155
18496
|
}
|
|
18156
|
-
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 });
|
|
18497
|
+
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 });
|
|
18157
18498
|
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: [
|
|
18158
18499
|
UNIQUE_ID_PROVIDER,
|
|
18159
18500
|
TREE_FEATURES_PROVIDER,
|
|
18160
18501
|
IfExpandService,
|
|
18161
18502
|
{ provide: LoadingListener, useExisting: IfExpandService },
|
|
18162
|
-
], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: 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<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\"> selected </span>\n <span *ngIf=\"!ariaSelected\"> unselected </span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type:
|
|
18503
|
+
], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: 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<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\"> selected </span>\n <span *ngIf=\"!ariaSelected\"> unselected </span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
|
|
18163
18504
|
trigger('toggleChildrenAnim', [
|
|
18164
18505
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
18165
18506
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -18195,6 +18536,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18195
18536
|
type: Optional
|
|
18196
18537
|
}, {
|
|
18197
18538
|
type: SkipSelf
|
|
18539
|
+
}] }, { type: ForTypeAheadProvider, decorators: [{
|
|
18540
|
+
type: Optional
|
|
18541
|
+
}, {
|
|
18542
|
+
type: Self
|
|
18198
18543
|
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }];
|
|
18199
18544
|
}, propDecorators: { selected: [{
|
|
18200
18545
|
type: Input,
|
|
@@ -18271,7 +18616,7 @@ ClrTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0
|
|
|
18271
18616
|
*ngIf="featuresService.recursion"
|
|
18272
18617
|
[children]="featuresService.recursion.root"
|
|
18273
18618
|
></clr-recursive-children>
|
|
18274
|
-
`, isInline: true, components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type:
|
|
18619
|
+
`, isInline: true, components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
18275
18620
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTree, decorators: [{
|
|
18276
18621
|
type: Component,
|
|
18277
18622
|
args: [{
|
|
@@ -18548,7 +18893,7 @@ class DropdownFocusHandler {
|
|
|
18548
18893
|
* If the dropdown was opened by clicking on the trigger, we automatically move to the first item
|
|
18549
18894
|
*/
|
|
18550
18895
|
moveToFirstItemWhenOpen() {
|
|
18551
|
-
this.toggleService.openChange.subscribe(open => {
|
|
18896
|
+
const subscription = this.toggleService.openChange.subscribe(open => {
|
|
18552
18897
|
if (open && this.toggleService.originalEvent) {
|
|
18553
18898
|
// Even if we properly waited for ngAfterViewInit, the container still wouldn't be attached to the DOM.
|
|
18554
18899
|
// So setTimeout is the only way to wait for the container to be ready to move focus to first item.
|
|
@@ -18563,12 +18908,13 @@ class DropdownFocusHandler {
|
|
|
18563
18908
|
});
|
|
18564
18909
|
}
|
|
18565
18910
|
});
|
|
18911
|
+
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
18566
18912
|
}
|
|
18567
18913
|
/**
|
|
18568
18914
|
* Focus on the menu when it opens, and focus back on the root trigger when the whole dropdown becomes closed
|
|
18569
18915
|
*/
|
|
18570
18916
|
handleRootFocus() {
|
|
18571
|
-
this.toggleService.openChange.subscribe(open => {
|
|
18917
|
+
const subscription = this.toggleService.openChange.subscribe(open => {
|
|
18572
18918
|
if (!open) {
|
|
18573
18919
|
// We reset the state of the focus service both on initialization and when closing.
|
|
18574
18920
|
this.focusService.reset(this);
|
|
@@ -18579,6 +18925,7 @@ class DropdownFocusHandler {
|
|
|
18579
18925
|
}
|
|
18580
18926
|
this.focusBackOnTrigger = open;
|
|
18581
18927
|
});
|
|
18928
|
+
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
18582
18929
|
}
|
|
18583
18930
|
get trigger() {
|
|
18584
18931
|
return this._trigger;
|
|
@@ -19202,6 +19549,7 @@ class AbstractPopover {
|
|
|
19202
19549
|
* a separate directive on the host. So let's do dirty but performant for now.
|
|
19203
19550
|
*/
|
|
19204
19551
|
this.closeOnOutsideClick = false;
|
|
19552
|
+
this.documentESCListener = null;
|
|
19205
19553
|
this.closeOnOutsideClickCallback = event => {
|
|
19206
19554
|
// The anchor element containing the click event origin means, the click wasn't triggered outside.
|
|
19207
19555
|
if (this.anchorElem.contains(event.target)) {
|
|
@@ -19212,6 +19560,8 @@ class AbstractPopover {
|
|
|
19212
19560
|
this.el = injector.get(ElementRef);
|
|
19213
19561
|
this.toggleService = injector.get(ClrPopoverToggleService);
|
|
19214
19562
|
this.renderer = injector.get(Renderer2);
|
|
19563
|
+
this.ngZone = injector.get(NgZone);
|
|
19564
|
+
this.ref = injector.get(ChangeDetectorRef);
|
|
19215
19565
|
// Default anchor is the parent host
|
|
19216
19566
|
this.anchorElem = parentHost.nativeElement;
|
|
19217
19567
|
this.popoverInstance = new Popover(this.el.nativeElement);
|
|
@@ -19261,20 +19611,26 @@ class AbstractPopover {
|
|
|
19261
19611
|
return this.toggleService.open ? false : true;
|
|
19262
19612
|
}
|
|
19263
19613
|
attachESCListener() {
|
|
19264
|
-
if (
|
|
19614
|
+
if (this.popoverOptions.ignoreGlobalESCListener) {
|
|
19615
|
+
return;
|
|
19616
|
+
}
|
|
19617
|
+
this.ngZone.runOutsideAngular(() => {
|
|
19265
19618
|
this.documentESCListener = this.renderer.listen('document', 'keydown', event => {
|
|
19266
19619
|
if (event && event.key) {
|
|
19267
19620
|
if (event.key === 'Escape' || event.key === 'Esc') {
|
|
19268
|
-
this.
|
|
19621
|
+
this.ngZone.run(() => {
|
|
19622
|
+
this.toggleService.open = false;
|
|
19623
|
+
this.ref.markForCheck();
|
|
19624
|
+
});
|
|
19269
19625
|
}
|
|
19270
19626
|
}
|
|
19271
19627
|
});
|
|
19272
|
-
}
|
|
19628
|
+
});
|
|
19273
19629
|
}
|
|
19274
19630
|
detachESCListener() {
|
|
19275
19631
|
if (this.documentESCListener) {
|
|
19276
19632
|
this.documentESCListener();
|
|
19277
|
-
|
|
19633
|
+
this.documentESCListener = null;
|
|
19278
19634
|
}
|
|
19279
19635
|
}
|
|
19280
19636
|
attachOutsideClickListener() {
|
|
@@ -19730,7 +20086,7 @@ class ClrAlert {
|
|
|
19730
20086
|
}
|
|
19731
20087
|
}
|
|
19732
20088
|
ClrAlert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlert, deps: [{ token: AlertIconAndTypesService }, { token: i0.ChangeDetectorRef }, { token: MultiAlertService, optional: true }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
19733
|
-
ClrAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrAlert, selector: "clr-alert", inputs: { isSmall: ["clrAlertSizeSmall", "isSmall"], closable: ["clrAlertClosable", "closable"], isAppLevel: ["clrAlertAppLevel", "isAppLevel"], clrCloseButtonAriaLabel: "clrCloseButtonAriaLabel", closed: ["clrAlertClosed", "closed"], alertType: ["clrAlertType", "alertType"], alertIconShape: ["clrAlertIcon", "alertIconShape"] }, outputs: { _closedChanged: "clrAlertClosedChange" }, providers: [AlertIconAndTypesService], 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<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-hidden]=\"hidden\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n", styles: [":host{display:block}\n"], directives: [{ type:
|
|
20089
|
+
ClrAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrAlert, selector: "clr-alert", inputs: { isSmall: ["clrAlertSizeSmall", "isSmall"], closable: ["clrAlertClosable", "closable"], isAppLevel: ["clrAlertAppLevel", "isAppLevel"], clrCloseButtonAriaLabel: "clrCloseButtonAriaLabel", closed: ["clrAlertClosed", "closed"], alertType: ["clrAlertType", "alertType"], alertIconShape: ["clrAlertIcon", "alertIconShape"] }, outputs: { _closedChanged: "clrAlertClosedChange" }, providers: [AlertIconAndTypesService], 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<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-hidden]=\"hidden\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n", styles: [":host{display:block}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
19734
20090
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlert, decorators: [{
|
|
19735
20091
|
type: Component,
|
|
19736
20092
|
args: [{ selector: 'clr-alert', providers: [AlertIconAndTypesService], styles: [':host { display: block; }'], 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<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-hidden]=\"hidden\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n" }]
|
|
@@ -19937,7 +20293,7 @@ class ClrAlerts {
|
|
|
19937
20293
|
}
|
|
19938
20294
|
}
|
|
19939
20295
|
ClrAlerts.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlerts, deps: [{ token: MultiAlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
19940
|
-
ClrAlerts.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrAlerts, selector: "clr-alerts", inputs: { _inputCurrentIndex: ["clrCurrentAlertIndex", "_inputCurrentIndex"], currentAlert: ["clrCurrentAlert", "currentAlert"] }, outputs: { currentAlertIndexChange: "clrCurrentAlertIndexChange", currentAlertChange: "clrCurrentAlertChange" }, host: { properties: { "class.alerts": "true", "class.alert-danger": "this.currentAlertType == 'danger'", "class.alert-info": "this.currentAlertType == 'info'", "class.alert-success": "this.currentAlertType == 'success'", "class.alert-warning": "this.currentAlertType == 'warning'" } }, providers: [MultiAlertService], queries: [{ propertyName: "allAlerts", predicate: ClrAlert }], 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<clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"> </clr-alerts-pager>\n<ng-content select=\"clr-alert\"></ng-content>\n", styles: [":host{display:block}\n"], components: [{ type: ClrAlertsPager, selector: "clr-alerts-pager", inputs: ["clrCurrentAlert", "clrCurrentAlertIndex"], outputs: ["clrCurrentAlertChange", "clrCurrentAlertIndexChange"] }], directives: [{ type:
|
|
20296
|
+
ClrAlerts.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrAlerts, selector: "clr-alerts", inputs: { _inputCurrentIndex: ["clrCurrentAlertIndex", "_inputCurrentIndex"], currentAlert: ["clrCurrentAlert", "currentAlert"] }, outputs: { currentAlertIndexChange: "clrCurrentAlertIndexChange", currentAlertChange: "clrCurrentAlertChange" }, host: { properties: { "class.alerts": "true", "class.alert-danger": "this.currentAlertType == 'danger'", "class.alert-info": "this.currentAlertType == 'info'", "class.alert-success": "this.currentAlertType == 'success'", "class.alert-warning": "this.currentAlertType == 'warning'" } }, providers: [MultiAlertService], queries: [{ propertyName: "allAlerts", predicate: ClrAlert }], 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<clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"> </clr-alerts-pager>\n<ng-content select=\"clr-alert\"></ng-content>\n", styles: [":host{display:block}\n"], components: [{ type: ClrAlertsPager, selector: "clr-alerts-pager", inputs: ["clrCurrentAlert", "clrCurrentAlertIndex"], outputs: ["clrCurrentAlertChange", "clrCurrentAlertIndexChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
19941
20297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlerts, decorators: [{
|
|
19942
20298
|
type: Component,
|
|
19943
20299
|
args: [{ selector: 'clr-alerts', providers: [MultiAlertService], host: {
|
|
@@ -20251,6 +20607,11 @@ class ClrHeader {
|
|
|
20251
20607
|
this.initializeNavTriggers(navLevelList);
|
|
20252
20608
|
},
|
|
20253
20609
|
});
|
|
20610
|
+
this._subscription.add(this.responsiveNavService.navControl
|
|
20611
|
+
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE || controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
20612
|
+
.subscribe(() => {
|
|
20613
|
+
this.openNavLevel = null;
|
|
20614
|
+
}));
|
|
20254
20615
|
}
|
|
20255
20616
|
get responsiveNavCommonString() {
|
|
20256
20617
|
const myCommonStrings = this.commonStrings.keys;
|
|
@@ -20295,10 +20656,21 @@ class ClrHeader {
|
|
|
20295
20656
|
closeOpenNav() {
|
|
20296
20657
|
this.responsiveNavService.closeAllNavs();
|
|
20297
20658
|
}
|
|
20298
|
-
|
|
20659
|
+
/**
|
|
20660
|
+
* @deprecated Will be removed in with @clr/angular v15.0.0
|
|
20661
|
+
*
|
|
20662
|
+
* Use `openNav(navLevel)` instead to open the navigation and ResponsiveNavService to close it.
|
|
20663
|
+
*/
|
|
20299
20664
|
toggleNav(navLevel) {
|
|
20300
|
-
|
|
20301
|
-
|
|
20665
|
+
if (this.openNavLevel === navLevel) {
|
|
20666
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, navLevel);
|
|
20667
|
+
return;
|
|
20668
|
+
}
|
|
20669
|
+
this.openNav(navLevel);
|
|
20670
|
+
}
|
|
20671
|
+
openNav(navLevel) {
|
|
20672
|
+
this.openNavLevel = navLevel;
|
|
20673
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, navLevel);
|
|
20302
20674
|
}
|
|
20303
20675
|
ngOnDestroy() {
|
|
20304
20676
|
this._subscription.unsubscribe();
|
|
@@ -20312,7 +20684,7 @@ ClrHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
20312
20684
|
class="header-hamburger-trigger"
|
|
20313
20685
|
[attr.aria-label]="responsiveNavCommonString"
|
|
20314
20686
|
[attr.aria-expanded]="openNavLevel === 1 ? 'true' : 'false'"
|
|
20315
|
-
(click)="
|
|
20687
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_1)"
|
|
20316
20688
|
>
|
|
20317
20689
|
<span></span>
|
|
20318
20690
|
</button>
|
|
@@ -20323,12 +20695,12 @@ ClrHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
20323
20695
|
class="header-overflow-trigger"
|
|
20324
20696
|
[attr.aria-label]="responsiveOverflowCommonString"
|
|
20325
20697
|
[attr.aria-expanded]="openNavLevel === 2 ? 'true' : 'false'"
|
|
20326
|
-
(click)="
|
|
20698
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_2)"
|
|
20327
20699
|
>
|
|
20328
20700
|
<span></span>
|
|
20329
20701
|
</button>
|
|
20330
20702
|
<div class="header-backdrop" (click)="closeOpenNav()"></div>
|
|
20331
|
-
`, isInline: true, directives: [{ type:
|
|
20703
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
20332
20704
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrHeader, decorators: [{
|
|
20333
20705
|
type: Component,
|
|
20334
20706
|
args: [{
|
|
@@ -20340,7 +20712,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20340
20712
|
class="header-hamburger-trigger"
|
|
20341
20713
|
[attr.aria-label]="responsiveNavCommonString"
|
|
20342
20714
|
[attr.aria-expanded]="openNavLevel === 1 ? 'true' : 'false'"
|
|
20343
|
-
(click)="
|
|
20715
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_1)"
|
|
20344
20716
|
>
|
|
20345
20717
|
<span></span>
|
|
20346
20718
|
</button>
|
|
@@ -20351,7 +20723,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20351
20723
|
class="header-overflow-trigger"
|
|
20352
20724
|
[attr.aria-label]="responsiveOverflowCommonString"
|
|
20353
20725
|
[attr.aria-expanded]="openNavLevel === 2 ? 'true' : 'false'"
|
|
20354
|
-
(click)="
|
|
20726
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_2)"
|
|
20355
20727
|
>
|
|
20356
20728
|
<span></span>
|
|
20357
20729
|
</button>
|
|
@@ -20366,12 +20738,186 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20366
20738
|
* This software is released under MIT license.
|
|
20367
20739
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20368
20740
|
*/
|
|
20369
|
-
|
|
20370
|
-
|
|
20741
|
+
function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
|
|
20742
|
+
const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
|
|
20743
|
+
const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
|
|
20744
|
+
if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
|
|
20745
|
+
elementToRefocus = elementToRefocus || focusTrapElement;
|
|
20746
|
+
elementToRefocus.focus();
|
|
20747
|
+
}
|
|
20748
|
+
else {
|
|
20749
|
+
focusedElement.focus();
|
|
20750
|
+
}
|
|
20751
|
+
}
|
|
20752
|
+
function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
|
|
20753
|
+
if (focusedElement === focusTrapElement.topReboundElement ||
|
|
20754
|
+
focusedElement === focusTrapElement.bottomReboundElement) {
|
|
20755
|
+
return true;
|
|
20756
|
+
}
|
|
20757
|
+
const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
|
|
20758
|
+
if (elementIsInFocusTrapLightDom) {
|
|
20759
|
+
return false;
|
|
20760
|
+
}
|
|
20761
|
+
if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
|
|
20762
|
+
return false;
|
|
20763
|
+
}
|
|
20764
|
+
return true;
|
|
20765
|
+
}
|
|
20766
|
+
function createFocusTrapReboundElement(document) {
|
|
20767
|
+
const offScreenSpan = document.createElement('span');
|
|
20768
|
+
offScreenSpan.setAttribute('tabindex', '0');
|
|
20769
|
+
offScreenSpan.classList.add('offscreen-focus-rebounder');
|
|
20770
|
+
return offScreenSpan;
|
|
20771
|
+
}
|
|
20772
|
+
function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
|
|
20773
|
+
if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
|
|
20774
|
+
focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
|
|
20775
|
+
focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
|
|
20776
|
+
const parent = focusTrapElement.parentElement;
|
|
20777
|
+
const sibling = focusTrapElement.nextSibling;
|
|
20778
|
+
if (parent) {
|
|
20779
|
+
parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
|
|
20780
|
+
if (sibling) {
|
|
20781
|
+
parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
|
|
20782
|
+
}
|
|
20783
|
+
else {
|
|
20784
|
+
parent.appendChild(focusTrapElement.bottomReboundElement);
|
|
20785
|
+
}
|
|
20786
|
+
}
|
|
20787
|
+
}
|
|
20788
|
+
}
|
|
20789
|
+
function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
|
|
20790
|
+
if (focusTrapElement) {
|
|
20791
|
+
const parent = focusTrapElement.parentElement;
|
|
20792
|
+
if (parent) {
|
|
20793
|
+
const topRebound = focusTrapElement.topReboundElement;
|
|
20794
|
+
const bottomRebound = focusTrapElement.bottomReboundElement;
|
|
20795
|
+
if (topRebound) {
|
|
20796
|
+
parent.removeChild(topRebound);
|
|
20797
|
+
}
|
|
20798
|
+
if (bottomRebound) {
|
|
20799
|
+
parent.removeChild(bottomRebound);
|
|
20800
|
+
}
|
|
20801
|
+
}
|
|
20802
|
+
// These are here to to make sure that we completely delete all traces of the removed DOM objects.
|
|
20803
|
+
delete focusTrapElement.topReboundElement;
|
|
20804
|
+
delete focusTrapElement.bottomReboundElement;
|
|
20805
|
+
}
|
|
20806
|
+
}
|
|
20807
|
+
// this helper exists to enable the focus trap class to handle vanilla html elements
|
|
20808
|
+
// it's primary concern is to keep TS happy.
|
|
20809
|
+
function castHtmlElementToFocusTrapElement(el) {
|
|
20810
|
+
return el;
|
|
20811
|
+
}
|
|
20812
|
+
class FocusTrap {
|
|
20813
|
+
constructor(renderer, injector, platformId, hostElement) {
|
|
20814
|
+
this.renderer = renderer;
|
|
20815
|
+
this.active = false;
|
|
20816
|
+
if (isPlatformBrowser(platformId)) {
|
|
20817
|
+
this._document = injector.get(DOCUMENT);
|
|
20818
|
+
}
|
|
20819
|
+
hostElement = castHtmlElementToFocusTrapElement(hostElement);
|
|
20820
|
+
if (!hostElement.focusTrapId) {
|
|
20821
|
+
hostElement.focusTrapId = createId();
|
|
20822
|
+
}
|
|
20823
|
+
this.focusTrapElement = hostElement;
|
|
20824
|
+
}
|
|
20825
|
+
enableFocusTrap() {
|
|
20826
|
+
const fte = this.focusTrapElement;
|
|
20827
|
+
const firstFocusElement = fte.querySelector('[cds-first-focus]');
|
|
20828
|
+
const activeEl = this._document.activeElement;
|
|
20829
|
+
if (FocusTrapTrackerService.getCurrent() === fte) {
|
|
20830
|
+
throw new Error('Focus trap is already enabled for this instance.');
|
|
20831
|
+
}
|
|
20832
|
+
this.firstFocusElement = firstFocusElement || this.focusTrapElement;
|
|
20833
|
+
addReboundElementsToFocusTrapElement(this._document, fte);
|
|
20834
|
+
if (!isFocusable(fte)) {
|
|
20835
|
+
fte.setAttribute('tabindex', '-1');
|
|
20836
|
+
}
|
|
20837
|
+
if (activeEl && isHTMLElement(activeEl)) {
|
|
20838
|
+
this.previousFocus = activeEl;
|
|
20839
|
+
}
|
|
20840
|
+
FocusTrapTrackerService.setCurrent(fte);
|
|
20841
|
+
// setTimeout here is required for Safari which may try to set focus on
|
|
20842
|
+
// element before it is visible...
|
|
20843
|
+
const focusTimer = setTimeout(() => {
|
|
20844
|
+
this.firstFocusElement.focus();
|
|
20845
|
+
clearTimeout(focusTimer);
|
|
20846
|
+
}, 10);
|
|
20847
|
+
this.onFocusInEvent = this.onFocusIn.bind(this);
|
|
20848
|
+
this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
|
|
20849
|
+
this.active = true;
|
|
20850
|
+
}
|
|
20851
|
+
removeFocusTrap() {
|
|
20852
|
+
if (this.unlisten) {
|
|
20853
|
+
this.unlisten();
|
|
20854
|
+
}
|
|
20855
|
+
removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
|
|
20856
|
+
this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
|
|
20857
|
+
FocusTrapTrackerService.activatePreviousCurrent();
|
|
20858
|
+
this.active = false;
|
|
20859
|
+
if (this.previousFocus) {
|
|
20860
|
+
this.previousFocus.focus();
|
|
20861
|
+
}
|
|
20862
|
+
}
|
|
20863
|
+
onFocusIn(event) {
|
|
20864
|
+
refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
|
|
20865
|
+
}
|
|
20866
|
+
}
|
|
20867
|
+
FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
20868
|
+
FocusTrap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap });
|
|
20869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap, decorators: [{
|
|
20870
|
+
type: Injectable
|
|
20871
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined }, { type: undefined }]; } });
|
|
20872
|
+
|
|
20873
|
+
/*
|
|
20874
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20875
|
+
* This software is released under MIT license.
|
|
20876
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20877
|
+
*/
|
|
20878
|
+
const createCdsCloseButton = (document, ariaLabel) => {
|
|
20879
|
+
const cdsCloseButton = document.createElement('cds-internal-close-button');
|
|
20880
|
+
cdsCloseButton.setAttribute('icon-size', '32');
|
|
20881
|
+
cdsCloseButton.setAttribute('aria-label', ariaLabel);
|
|
20882
|
+
cdsCloseButton.setAttribute('aria-hidden', 'true');
|
|
20883
|
+
cdsCloseButton.setAttribute('type', 'button');
|
|
20884
|
+
/**
|
|
20885
|
+
* The button is hidden by default based on our Desktop-first approach.
|
|
20886
|
+
*/
|
|
20887
|
+
cdsCloseButton.setAttribute('hidden', 'true');
|
|
20888
|
+
cdsCloseButton.className = 'clr-nav-close';
|
|
20889
|
+
return cdsCloseButton;
|
|
20890
|
+
};
|
|
20891
|
+
class ClrNavLevel extends FocusTrap {
|
|
20892
|
+
constructor(platformId, responsiveNavService, elementRef, renderer, injector) {
|
|
20893
|
+
super(renderer, injector, platformId, elementRef.nativeElement);
|
|
20371
20894
|
this.responsiveNavService = responsiveNavService;
|
|
20372
20895
|
this.elementRef = elementRef;
|
|
20896
|
+
this._isOpen = false;
|
|
20897
|
+
if (isPlatformBrowser(platformId)) {
|
|
20898
|
+
this._document = injector.get(DOCUMENT);
|
|
20899
|
+
}
|
|
20900
|
+
this._subscription = responsiveNavService.navControl
|
|
20901
|
+
.pipe(filter(x => x.navLevel === this.level), filter(({ controlCode }) => (controlCode === ResponsiveNavCodes.NAV_OPEN && !this.isOpen) ||
|
|
20902
|
+
(controlCode === ResponsiveNavCodes.NAV_CLOSE && this.isOpen)))
|
|
20903
|
+
.subscribe(({ controlCode }) => {
|
|
20904
|
+
if (controlCode === ResponsiveNavCodes.NAV_OPEN) {
|
|
20905
|
+
this.open();
|
|
20906
|
+
return;
|
|
20907
|
+
}
|
|
20908
|
+
this.close();
|
|
20909
|
+
});
|
|
20910
|
+
this._subscription.add(responsiveNavService.navControl
|
|
20911
|
+
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
20912
|
+
.subscribe(() => this.close()));
|
|
20373
20913
|
}
|
|
20374
20914
|
ngOnInit() {
|
|
20915
|
+
if (!this.closeButtonAriaLabel) {
|
|
20916
|
+
this.closeButtonAriaLabel =
|
|
20917
|
+
this._level === ResponsiveNavCodes.NAV_LEVEL_1
|
|
20918
|
+
? commonStringsDefault.responsiveNavToggleClose
|
|
20919
|
+
: commonStringsDefault.responsiveNavOverflowClose;
|
|
20920
|
+
}
|
|
20375
20921
|
if (this.level !== ResponsiveNavCodes.NAV_LEVEL_1 && this.level !== ResponsiveNavCodes.NAV_LEVEL_2) {
|
|
20376
20922
|
console.error('Nav Level can only be 1 or 2');
|
|
20377
20923
|
return;
|
|
@@ -20379,6 +20925,20 @@ class ClrNavLevel {
|
|
|
20379
20925
|
this.responsiveNavService.registerNav(this.level);
|
|
20380
20926
|
this.addNavClass(this.level);
|
|
20381
20927
|
}
|
|
20928
|
+
ngAfterViewInit() {
|
|
20929
|
+
const closeButton = createCdsCloseButton(this._document, this.closeButtonAriaLabel);
|
|
20930
|
+
this.renderer.listen(closeButton, 'click', this.close.bind(this));
|
|
20931
|
+
this.renderer.insertBefore(this.elementRef.nativeElement, closeButton, this.elementRef.nativeElement.firstChild); // Adding the button at the top of the nav
|
|
20932
|
+
if (this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
20933
|
+
/**
|
|
20934
|
+
* Close if the document body is smaller than the large breakpoint for example:
|
|
20935
|
+
* - Refreshing the page
|
|
20936
|
+
* - Browser window size is changed when opening the applicaiton
|
|
20937
|
+
* - Browser zoom is turned on and zoomed to a size that makes the document smaller than the large breakpoint
|
|
20938
|
+
*/
|
|
20939
|
+
this.close();
|
|
20940
|
+
}
|
|
20941
|
+
}
|
|
20382
20942
|
addNavClass(level) {
|
|
20383
20943
|
const navHostClassList = this.elementRef.nativeElement.classList;
|
|
20384
20944
|
if (level === ResponsiveNavCodes.NAV_LEVEL_1) {
|
|
@@ -20395,10 +20955,29 @@ class ClrNavLevel {
|
|
|
20395
20955
|
get responsiveNavCodes() {
|
|
20396
20956
|
return ResponsiveNavCodes;
|
|
20397
20957
|
}
|
|
20958
|
+
get isOpen() {
|
|
20959
|
+
return this._isOpen;
|
|
20960
|
+
}
|
|
20961
|
+
onResize(event) {
|
|
20962
|
+
const target = event.target;
|
|
20963
|
+
if (target.innerWidth < LARGE_BREAKPOINT && this.isOpen) {
|
|
20964
|
+
this.close();
|
|
20965
|
+
return;
|
|
20966
|
+
}
|
|
20967
|
+
this.showNavigation();
|
|
20968
|
+
}
|
|
20398
20969
|
open() {
|
|
20970
|
+
this._isOpen = true;
|
|
20971
|
+
this.showNavigation();
|
|
20972
|
+
this.enableFocusTrap();
|
|
20973
|
+
this.showCloseButton();
|
|
20399
20974
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
|
|
20400
20975
|
}
|
|
20401
20976
|
close() {
|
|
20977
|
+
this._isOpen = false;
|
|
20978
|
+
this.hideNavigation();
|
|
20979
|
+
this.removeFocusTrap();
|
|
20980
|
+
this.hideCloseButton();
|
|
20402
20981
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
|
|
20403
20982
|
}
|
|
20404
20983
|
// TODO: Figure out whats the best way to do this. Possible methods
|
|
@@ -20414,30 +20993,83 @@ class ClrNavLevel {
|
|
|
20414
20993
|
if (current === navHost) {
|
|
20415
20994
|
return;
|
|
20416
20995
|
}
|
|
20417
|
-
else if (current.classList.contains('nav-link')) {
|
|
20996
|
+
else if (current.classList.contains('nav-link') && this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
20418
20997
|
this.close();
|
|
20419
20998
|
return;
|
|
20420
20999
|
}
|
|
20421
21000
|
current = current.parentNode;
|
|
20422
21001
|
}
|
|
20423
21002
|
}
|
|
21003
|
+
hideNavigation() {
|
|
21004
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');
|
|
21005
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', 'true');
|
|
21006
|
+
}
|
|
21007
|
+
showNavigation() {
|
|
21008
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'false');
|
|
21009
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');
|
|
21010
|
+
}
|
|
21011
|
+
hideCloseButton() {
|
|
21012
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');
|
|
21013
|
+
this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden', 'true');
|
|
21014
|
+
}
|
|
21015
|
+
showCloseButton() {
|
|
21016
|
+
this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'aria-hidden', 'false');
|
|
21017
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden');
|
|
21018
|
+
}
|
|
20424
21019
|
ngOnDestroy() {
|
|
20425
21020
|
this.responsiveNavService.unregisterNav(this.level);
|
|
21021
|
+
this._subscription.unsubscribe();
|
|
20426
21022
|
}
|
|
20427
21023
|
}
|
|
20428
|
-
ClrNavLevel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavLevel, deps: [{ token: ResponsiveNavigationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
20429
|
-
ClrNavLevel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrNavLevel, selector: "[clr-nav-level]", inputs: { _level: ["clr-nav-level", "_level"] }, host: { listeners: { "click": "onMouseClick($event.target)" } }, ngImport: i0 });
|
|
21024
|
+
ClrNavLevel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavLevel, deps: [{ token: PLATFORM_ID }, { token: ResponsiveNavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21025
|
+
ClrNavLevel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrNavLevel, selector: "[clr-nav-level]", inputs: { _level: ["clr-nav-level", "_level"], closeButtonAriaLabel: ["closeAriaLabel", "closeButtonAriaLabel"] }, host: { listeners: { "window:resize": "onResize($event)", "click": "onMouseClick($event.target)" } }, usesInheritance: true, ngImport: i0 });
|
|
20430
21026
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavLevel, decorators: [{
|
|
20431
21027
|
type: Directive,
|
|
20432
21028
|
args: [{ selector: '[clr-nav-level]' }]
|
|
20433
|
-
}], ctorParameters: function () {
|
|
21029
|
+
}], ctorParameters: function () {
|
|
21030
|
+
return [{ type: undefined, decorators: [{
|
|
21031
|
+
type: Inject,
|
|
21032
|
+
args: [PLATFORM_ID]
|
|
21033
|
+
}] }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }];
|
|
21034
|
+
}, propDecorators: { _level: [{
|
|
20434
21035
|
type: Input,
|
|
20435
21036
|
args: ['clr-nav-level']
|
|
21037
|
+
}], closeButtonAriaLabel: [{
|
|
21038
|
+
type: Input,
|
|
21039
|
+
args: ['closeAriaLabel']
|
|
21040
|
+
}], onResize: [{
|
|
21041
|
+
type: HostListener,
|
|
21042
|
+
args: ['window:resize', ['$event']]
|
|
20436
21043
|
}], onMouseClick: [{
|
|
20437
21044
|
type: HostListener,
|
|
20438
21045
|
args: ['click', ['$event.target']]
|
|
20439
21046
|
}] } });
|
|
20440
21047
|
|
|
21048
|
+
/*
|
|
21049
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
21050
|
+
* This software is released under MIT license.
|
|
21051
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21052
|
+
*/
|
|
21053
|
+
class ClrAriaCurrentLink {
|
|
21054
|
+
constructor(rla) {
|
|
21055
|
+
this.rla = rla;
|
|
21056
|
+
}
|
|
21057
|
+
ngOnInit() {
|
|
21058
|
+
this.subscription = this.rla.isActiveChange.subscribe(isActive => {
|
|
21059
|
+
this.ariaCurrent = isActive ? 'page' : undefined;
|
|
21060
|
+
});
|
|
21061
|
+
}
|
|
21062
|
+
ngOnDestroy() {
|
|
21063
|
+
this.subscription.unsubscribe();
|
|
21064
|
+
}
|
|
21065
|
+
}
|
|
21066
|
+
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 });
|
|
21067
|
+
ClrAriaCurrentLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrAriaCurrentLink, selector: "[clrAriaCurrentLink]", host: { properties: { "attr.aria-current": "ariaCurrent" } }, ngImport: i0 });
|
|
21068
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAriaCurrentLink, decorators: [{
|
|
21069
|
+
type: Directive,
|
|
21070
|
+
args: [{ selector: '[clrAriaCurrentLink]', host: { '[attr.aria-current]': 'ariaCurrent' } }]
|
|
21071
|
+
}], ctorParameters: function () { return [{ type: i1$1.RouterLinkActive }]; } });
|
|
21072
|
+
|
|
20441
21073
|
/*
|
|
20442
21074
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20443
21075
|
* This software is released under MIT license.
|
|
@@ -20446,6 +21078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20446
21078
|
const CLR_NAVIGATION_DIRECTIVES = [
|
|
20447
21079
|
ClrHeader,
|
|
20448
21080
|
ClrNavLevel,
|
|
21081
|
+
ClrAriaCurrentLink,
|
|
20449
21082
|
NavDetectionOompaLoompa,
|
|
20450
21083
|
MainContainerWillyWonka,
|
|
20451
21084
|
];
|
|
@@ -20454,9 +21087,11 @@ class ClrNavigationModule {
|
|
|
20454
21087
|
ClrNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20455
21088
|
ClrNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, declarations: [ClrHeader,
|
|
20456
21089
|
ClrNavLevel,
|
|
21090
|
+
ClrAriaCurrentLink,
|
|
20457
21091
|
NavDetectionOompaLoompa,
|
|
20458
21092
|
MainContainerWillyWonka], imports: [CommonModule, ClrIconModule, ClrDropdownModule], exports: [ClrHeader,
|
|
20459
21093
|
ClrNavLevel,
|
|
21094
|
+
ClrAriaCurrentLink,
|
|
20460
21095
|
NavDetectionOompaLoompa,
|
|
20461
21096
|
MainContainerWillyWonka] });
|
|
20462
21097
|
ClrNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, imports: [[CommonModule, ClrIconModule, ClrDropdownModule]] });
|
|
@@ -21097,7 +21732,7 @@ ClrTabs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0
|
|
|
21097
21732
|
</ng-container>
|
|
21098
21733
|
</ul>
|
|
21099
21734
|
<ng-container #tabContentViewContainer></ng-container>
|
|
21100
|
-
`, isInline: true, components: [{ type: ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }, { type: ClrTabOverflowContent, selector: "clr-tab-overflow-content" }], directives: [{ type:
|
|
21735
|
+
`, isInline: true, components: [{ type: ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }, { type: ClrTabOverflowContent, selector: "clr-tab-overflow-content" }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
21101
21736
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTabs, decorators: [{
|
|
21102
21737
|
type: Component,
|
|
21103
21738
|
args: [{
|
|
@@ -21379,7 +22014,7 @@ class ClrVerticalNav {
|
|
|
21379
22014
|
}
|
|
21380
22015
|
}
|
|
21381
22016
|
ClrVerticalNav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrVerticalNav, deps: [{ token: VerticalNavService }, { token: VerticalNavIconService }, { token: VerticalNavGroupRegistrationService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
21382
|
-
ClrVerticalNav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNav, selector: "clr-vertical-nav", inputs: { collapsible: ["clrVerticalNavCollapsible", "collapsible"], collapsed: ["clrVerticalNavCollapsed", "collapsed"] }, outputs: { _collapsedChanged: "clrVerticalNavCollapsedChange" }, host: { properties: { "class.is-collapsed": "collapsed", "class.has-nav-groups": "hasNavGroups", "class.has-icons": "hasIcons" }, classAttribute: "clr-vertical-nav" }, providers: [VerticalNavService, VerticalNavIconService, VerticalNavGroupRegistrationService], 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<button\n type=\"button\"\n class=\"nav-trigger\"\n [class.on-collapse]=\"collapsed\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n (click)=\"toggleByButton()\"\n *ngIf=\"collapsible\"\n>\n <cds-icon\n shape=\"angle-double\"\n class=\"nav-trigger-icon\"\n [attr.direction]=\"(this.collapsed) ? 'right' : 'left'\"\n [attr.title]=\"(this.collapsed) ? commonStrings.keys.expand : commonStrings.keys.collapse\"\n ></cds-icon>\n</button>\n<!-- Click handler on .nav-content is bad but required :-( -->\n<div class=\"nav-content\">\n <ng-content></ng-content>\n <button\n (click)=\"collapsed = false\"\n class=\"nav-btn\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n *ngIf=\"collapsible && collapsed\"\n ></button>\n</div>\n", directives: [{ type:
|
|
22017
|
+
ClrVerticalNav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNav, selector: "clr-vertical-nav", inputs: { collapsible: ["clrVerticalNavCollapsible", "collapsible"], collapsed: ["clrVerticalNavCollapsed", "collapsed"] }, outputs: { _collapsedChanged: "clrVerticalNavCollapsedChange" }, host: { properties: { "class.is-collapsed": "collapsed", "class.has-nav-groups": "hasNavGroups", "class.has-icons": "hasIcons" }, classAttribute: "clr-vertical-nav" }, providers: [VerticalNavService, VerticalNavIconService, VerticalNavGroupRegistrationService], 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<button\n type=\"button\"\n class=\"nav-trigger\"\n [class.on-collapse]=\"collapsed\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n (click)=\"toggleByButton()\"\n *ngIf=\"collapsible\"\n>\n <cds-icon\n shape=\"angle-double\"\n class=\"nav-trigger-icon\"\n [attr.direction]=\"(this.collapsed) ? 'right' : 'left'\"\n [attr.title]=\"(this.collapsed) ? commonStrings.keys.expand : commonStrings.keys.collapse\"\n ></cds-icon>\n</button>\n<!-- Click handler on .nav-content is bad but required :-( -->\n<div class=\"nav-content\">\n <ng-content></ng-content>\n <button\n (click)=\"collapsed = false\"\n class=\"nav-btn\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n *ngIf=\"collapsible && collapsed\"\n ></button>\n</div>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
21383
22018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrVerticalNav, decorators: [{
|
|
21384
22019
|
type: Component,
|
|
21385
22020
|
args: [{ selector: 'clr-vertical-nav', providers: [VerticalNavService, VerticalNavIconService, VerticalNavGroupRegistrationService], host: {
|
|
@@ -21546,7 +22181,7 @@ class ClrVerticalNavGroup {
|
|
|
21546
22181
|
}
|
|
21547
22182
|
}
|
|
21548
22183
|
ClrVerticalNavGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrVerticalNavGroup, deps: [{ token: IfExpandService }, { token: VerticalNavGroupRegistrationService }, { token: VerticalNavGroupService }, { token: VerticalNavService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
21549
|
-
ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: { groupLabel: ["clrVerticalNavGroupLabel", "groupLabel"], userExpandedInput: ["clrVerticalNavGroupExpanded", "userExpandedInput"] }, outputs: { expandedChange: "clrVerticalNavGroupExpandedChange" }, host: { properties: { "class.is-expanded": "this.expanded" }, classAttribute: "nav-group" }, providers: [IfExpandService, VerticalNavGroupService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 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<div class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"
|
|
22184
|
+
ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: { groupLabel: ["clrVerticalNavGroupLabel", "groupLabel"], userExpandedInput: ["clrVerticalNavGroupExpanded", "userExpandedInput"] }, outputs: { expandedChange: "clrVerticalNavGroupExpandedChange" }, host: { properties: { "class.is-expanded": "this.expanded" }, classAttribute: "nav-group" }, providers: [IfExpandService, VerticalNavGroupService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 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<div class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n >\n </cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n", directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
|
|
21550
22185
|
trigger('clrExpand', [
|
|
21551
22186
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
21552
22187
|
state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
|
|
@@ -21561,7 +22196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
21561
22196
|
state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
|
|
21562
22197
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
21563
22198
|
]),
|
|
21564
|
-
], host: { class: 'nav-group' }, template: "<!--\n ~ Copyright (c) 2016-2022 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<div class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"
|
|
22199
|
+
], host: { class: 'nav-group' }, template: "<!--\n ~ Copyright (c) 2016-2022 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<div class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n >\n </cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n" }]
|
|
21565
22200
|
}], ctorParameters: function () { return [{ type: IfExpandService }, { type: VerticalNavGroupRegistrationService }, { type: VerticalNavGroupService }, { type: VerticalNavService }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
|
|
21566
22201
|
type: HostBinding,
|
|
21567
22202
|
args: ['class.is-expanded']
|
|
@@ -21620,17 +22255,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
21620
22255
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21621
22256
|
*/
|
|
21622
22257
|
class ClrVerticalNavLink {
|
|
21623
|
-
constructor(
|
|
21624
|
-
this.
|
|
22258
|
+
constructor(host, ref, navGroupService) {
|
|
22259
|
+
this.destroy$ = new Subject();
|
|
22260
|
+
// Note: since the `VerticalNavGroupService` is an optional provider, we'll setup the event
|
|
22261
|
+
// listener only when the `[clrVerticalLink]` is located within the `clr-vertical-nav-group`.
|
|
22262
|
+
navGroupService &&
|
|
22263
|
+
fromEvent(host.nativeElement, 'click')
|
|
22264
|
+
.pipe(takeUntil(this.destroy$))
|
|
22265
|
+
.subscribe(() => {
|
|
22266
|
+
navGroupService.expand();
|
|
22267
|
+
ref.markForCheck();
|
|
22268
|
+
});
|
|
21625
22269
|
}
|
|
21626
|
-
|
|
21627
|
-
|
|
21628
|
-
this._navGroupService.expand();
|
|
21629
|
-
}
|
|
22270
|
+
ngOnDestroy() {
|
|
22271
|
+
this.destroy$.next();
|
|
21630
22272
|
}
|
|
21631
22273
|
}
|
|
21632
|
-
ClrVerticalNavLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrVerticalNavLink, deps: [{ token: VerticalNavGroupService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
21633
|
-
ClrVerticalNavLink.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNavLink, selector: "[clrVerticalNavLink]", host: {
|
|
22274
|
+
ClrVerticalNavLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrVerticalNavLink, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: VerticalNavGroupService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
22275
|
+
ClrVerticalNavLink.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNavLink, selector: "[clrVerticalNavLink]", host: { classAttribute: "nav-link" }, ngImport: i0, template: `
|
|
21634
22276
|
<ng-content select="[clrVerticalNavIcon]"></ng-content>
|
|
21635
22277
|
<span class="nav-text">
|
|
21636
22278
|
<ng-content></ng-content>
|
|
@@ -21649,13 +22291,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
21649
22291
|
host: { class: 'nav-link' },
|
|
21650
22292
|
}]
|
|
21651
22293
|
}], ctorParameters: function () {
|
|
21652
|
-
return [{ type: VerticalNavGroupService, decorators: [{
|
|
22294
|
+
return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: VerticalNavGroupService, decorators: [{
|
|
21653
22295
|
type: Optional
|
|
22296
|
+
}, {
|
|
22297
|
+
type: Inject,
|
|
22298
|
+
args: [VerticalNavGroupService]
|
|
21654
22299
|
}] }];
|
|
21655
|
-
}
|
|
21656
|
-
type: HostListener,
|
|
21657
|
-
args: ['click']
|
|
21658
|
-
}] } });
|
|
22300
|
+
} });
|
|
21659
22301
|
|
|
21660
22302
|
/*
|
|
21661
22303
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -21800,7 +22442,7 @@ class ClrModal {
|
|
|
21800
22442
|
}
|
|
21801
22443
|
}
|
|
21802
22444
|
ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
21803
|
-
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { listeners: { "body:keyup.escape": "close()" }, properties: { "class.open": "this._open" } }, providers: [UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "focusTrap", first: true, predicate: FocusTrapDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 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<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], directives: [{ type:
|
|
22445
|
+
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { listeners: { "body:keyup.escape": "close()" }, properties: { "class.open": "this._open" } }, providers: [UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "focusTrap", first: true, predicate: FocusTrapDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 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<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: ["clrFocusOnViewInit"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
|
|
21804
22446
|
trigger('fadeDown', [
|
|
21805
22447
|
transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
|
|
21806
22448
|
transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
|
|
@@ -21895,7 +22537,8 @@ class ClrModalBody {
|
|
|
21895
22537
|
this.tabindex = '0';
|
|
21896
22538
|
this.unlisteners = [];
|
|
21897
22539
|
ngZone.runOutsideAngular(() => {
|
|
21898
|
-
new ResizeObserver(() => this.addOrRemoveTabIndex())
|
|
22540
|
+
this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());
|
|
22541
|
+
this.observer.observe(this.host.nativeElement);
|
|
21899
22542
|
this.unlisteners.push(this.renderer.listen(this.host.nativeElement, 'mouseup', () => {
|
|
21900
22543
|
// set the tabindex binding back when click is completed with mouseup
|
|
21901
22544
|
this.addOrRemoveTabIndex();
|
|
@@ -21910,6 +22553,8 @@ class ClrModalBody {
|
|
|
21910
22553
|
while (this.unlisteners.length) {
|
|
21911
22554
|
this.unlisteners.pop()();
|
|
21912
22555
|
}
|
|
22556
|
+
this.observer.disconnect();
|
|
22557
|
+
this.observer = null;
|
|
21913
22558
|
}
|
|
21914
22559
|
addTabIndex() {
|
|
21915
22560
|
this.renderer.setAttribute(this.host.nativeElement, 'tabindex', this.tabindex);
|
|
@@ -22074,6 +22719,7 @@ class ClrSignpostContent extends AbstractPopover {
|
|
|
22074
22719
|
this.popoverOptions.offsetX = setPosition.offsetX;
|
|
22075
22720
|
}
|
|
22076
22721
|
ngOnDestroy() {
|
|
22722
|
+
super.ngOnDestroy();
|
|
22077
22723
|
if (isPlatformBrowser(this.platformId) && this.el.nativeElement.contains(this.document.activeElement)) {
|
|
22078
22724
|
this.signpostFocusManager.focusTrigger();
|
|
22079
22725
|
}
|
|
@@ -24348,7 +24994,7 @@ ClrWizardStepnavItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
24348
24994
|
<span *ngIf="hasError" class="clr-sr-only">{{ commonStrings.keys.wizardStepError }}</span>
|
|
24349
24995
|
<span *ngIf="!hasError && isComplete" class="clr-sr-only">{{ commonStrings.keys.wizardStepSuccess }}</span>
|
|
24350
24996
|
</button>
|
|
24351
|
-
`, isInline: true, directives: [{ type:
|
|
24997
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
24352
24998
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrWizardStepnavItem, decorators: [{
|
|
24353
24999
|
type: Component,
|
|
24354
25000
|
args: [{
|
|
@@ -24416,7 +25062,7 @@ ClrWizardStepnav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
24416
25062
|
{{ i + 1 }}
|
|
24417
25063
|
</div>
|
|
24418
25064
|
</div>
|
|
24419
|
-
`, isInline: true, components: [{ type: ClrWizardStepnavItem, selector: "[clr-wizard-stepnav-item]", inputs: ["page"] }], directives: [{ type:
|
|
25065
|
+
`, isInline: true, components: [{ type: ClrWizardStepnavItem, selector: "[clr-wizard-stepnav-item]", inputs: ["page"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
24420
25066
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrWizardStepnav, decorators: [{
|
|
24421
25067
|
type: Component,
|
|
24422
25068
|
args: [{
|
|
@@ -24838,7 +25484,7 @@ ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
24838
25484
|
ButtonHubService,
|
|
24839
25485
|
HeaderActionService,
|
|
24840
25486
|
UNIQUE_ID_PROVIDER,
|
|
24841
|
-
], queries: [{ propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "wizardTitle", first: true, predicate: ["wizardTitle"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 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<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isStatic\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <nav class=\"modal-nav clr-wizard-stepnav-wrapper\">\n <h1 class=\"clr-wizard-title\" id=\"{{wizardId}}\"><ng-content select=\"clr-wizard-title\"></ng-content></h1>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </nav>\n\n <h2 class=\"modal-title\">\n <span tabindex=\"-1\" #wizardTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </h2>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n", components: [{ type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalOverrideScrollService", "clrModalPreventClose", "clrModalLabelledById"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }], directives: [{ type:
|
|
25487
|
+
], queries: [{ propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "wizardTitle", first: true, predicate: ["wizardTitle"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 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<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isStatic\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <nav class=\"modal-nav clr-wizard-stepnav-wrapper\">\n <h1 class=\"clr-wizard-title\" id=\"{{wizardId}}\"><ng-content select=\"clr-wizard-title\"></ng-content></h1>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </nav>\n\n <h2 class=\"modal-title\">\n <span tabindex=\"-1\" #wizardTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </h2>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n", components: [{ type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalOverrideScrollService", "clrModalPreventClose", "clrModalLabelledById"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }], directives: [{ type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrModalBody, selector: ".modal-body" }] });
|
|
24842
25488
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrWizard, decorators: [{
|
|
24843
25489
|
type: Component,
|
|
24844
25490
|
args: [{ selector: 'clr-wizard', providers: [
|
|
@@ -25417,7 +26063,7 @@ class ClrAccordionPanel {
|
|
|
25417
26063
|
}
|
|
25418
26064
|
}
|
|
25419
26065
|
ClrAccordionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAccordionPanel, deps: [{ token: ClrCommonStringsService }, { token: AccordionService }, { token: IfExpandService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
25420
|
-
ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrAccordionPanel, selector: "clr-accordion-panel", inputs: { disabled: ["clrAccordionPanelDisabled", "disabled"], panelOpen: ["clrAccordionPanelOpen", "panelOpen"] }, outputs: { panelOpenChange: "clrAccordionPanelOpenChange" }, host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService, UNIQUE_ID_PROVIDER], queries: [{ propertyName: "accordionDescription", predicate: ClrAccordionDescription }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type:
|
|
26066
|
+
ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrAccordionPanel, selector: "clr-accordion-panel", inputs: { disabled: ["clrAccordionPanelDisabled", "disabled"], panelOpen: ["clrAccordionPanelOpen", "panelOpen"] }, outputs: { panelOpenChange: "clrAccordionPanelOpenChange" }, host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService, UNIQUE_ID_PROVIDER], queries: [{ propertyName: "accordionDescription", predicate: ClrAccordionDescription }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], pipes: { "async": i5.AsyncPipe }, animations: panelAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25421
26067
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAccordionPanel, decorators: [{
|
|
25422
26068
|
type: Component,
|
|
25423
26069
|
args: [{ selector: 'clr-accordion-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: panelAnimation, providers: [IfExpandService, UNIQUE_ID_PROVIDER], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
@@ -25853,7 +26499,7 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
25853
26499
|
}
|
|
25854
26500
|
}
|
|
25855
26501
|
ClrStepperPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStepperPanel, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: i1.FormGroupName, optional: true }, { token: i1.NgModelGroup, optional: true }, { token: StepperService }, { token: IfExpandService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
25856
|
-
ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService, UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type:
|
|
26502
|
+
ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService, UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], pipes: { "async": i5.AsyncPipe }, animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25857
26503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
25858
26504
|
type: Component,
|
|
25859
26505
|
args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService, UNIQUE_ID_PROVIDER], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
@@ -26172,7 +26818,7 @@ ClrProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version:
|
|
|
26172
26818
|
ClrProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrProgressBar, selector: "clr-progress-bar", inputs: { id: "id", max: ["clrMax", "max"], displayval: ["clrDisplayval", "displayval"], value: ["clrValue", "value"], clrLabeled: "clrLabeled", clrFade: "clrFade", clrLoop: "clrLoop", clrSuccess: "clrSuccess", clrDanger: "clrDanger", clrFlash: "clrFlash", clrFlashDanger: "clrFlashDanger" }, host: { properties: { "attr.id": "this.externalId", "class.progress": "this.progressClass", "class.labeled": "this.labeledClass", "class.progress-fade": "this.fadeClass", "class.loop": "this.loopClass", "class.success": "this.successClass", "class.danger": "this.dangerClass", "class.flash": "this.flashClass", "class.flash-danger": "this.flashDangerClass" } }, ngImport: i0, template: `
|
|
26173
26819
|
<progress [id]="id" [attr.max]="max" [attr.value]="value" [attr.data-displayval]="displayValue"></progress>
|
|
26174
26820
|
<span *ngIf="displayStringValue()">{{ displayValue }}</span>
|
|
26175
|
-
`, isInline: true, directives: [{ type:
|
|
26821
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
26176
26822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrProgressBar, decorators: [{
|
|
26177
26823
|
type: Component,
|
|
26178
26824
|
args: [{
|
|
@@ -26444,7 +27090,7 @@ ClrTimelineStep.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
26444
27090
|
<ng-template #processing>
|
|
26445
27091
|
<clr-spinner clrMedium [attr.aria-label]="iconAriaLabel"></clr-spinner>
|
|
26446
27092
|
</ng-template>
|
|
26447
|
-
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type:
|
|
27093
|
+
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
26448
27094
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTimelineStep, decorators: [{
|
|
26449
27095
|
type: Component,
|
|
26450
27096
|
args: [{
|
|
@@ -26568,6 +27214,7 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
26568
27214
|
ClrConditionalModule,
|
|
26569
27215
|
ClrFocusTrapModule,
|
|
26570
27216
|
ClrFocusOnViewInitModule,
|
|
27217
|
+
ClrForTypeAheadModule,
|
|
26571
27218
|
ClrButtonModule,
|
|
26572
27219
|
ClrFormsModule,
|
|
26573
27220
|
ClrLayoutModule,
|
|
@@ -26587,6 +27234,7 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
26587
27234
|
ClrConditionalModule,
|
|
26588
27235
|
ClrFocusTrapModule,
|
|
26589
27236
|
ClrFocusOnViewInitModule,
|
|
27237
|
+
ClrForTypeAheadModule,
|
|
26590
27238
|
ClrButtonModule,
|
|
26591
27239
|
ClrFormsModule,
|
|
26592
27240
|
ClrLayoutModule,
|
|
@@ -26610,6 +27258,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
26610
27258
|
ClrConditionalModule,
|
|
26611
27259
|
ClrFocusTrapModule,
|
|
26612
27260
|
ClrFocusOnViewInitModule,
|
|
27261
|
+
ClrForTypeAheadModule,
|
|
26613
27262
|
ClrButtonModule,
|
|
26614
27263
|
ClrFormsModule,
|
|
26615
27264
|
ClrLayoutModule,
|
|
@@ -26891,5 +27540,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
26891
27540
|
* Generated bundle index. Do not edit.
|
|
26892
27541
|
*/
|
|
26893
27542
|
|
|
26894
|
-
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, 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 };
|
|
27543
|
+
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 };
|
|
26895
27544
|
//# sourceMappingURL=clr-angular.mjs.map
|