@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/fesm2020/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
|
/*
|
|
@@ -336,6 +339,11 @@ function preventArrowKeyScroll(event) {
|
|
|
336
339
|
event.preventDefault();
|
|
337
340
|
}
|
|
338
341
|
}
|
|
342
|
+
function isKeyEitherLetterOrNumber(event) {
|
|
343
|
+
const char = event.key;
|
|
344
|
+
// Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter.
|
|
345
|
+
return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9');
|
|
346
|
+
}
|
|
339
347
|
|
|
340
348
|
/*
|
|
341
349
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -785,6 +793,7 @@ class ClrPopoverContent {
|
|
|
785
793
|
this.smartEventsService = smartEventsService;
|
|
786
794
|
this.smartOpenService = smartOpenService;
|
|
787
795
|
this.subscriptions = [];
|
|
796
|
+
this.removeClickListenerFn = null;
|
|
788
797
|
this.shouldRealign = false;
|
|
789
798
|
// Check-collector pattern:
|
|
790
799
|
// In order to get accurate content height/width values, we cannot calculate alignment offsets until
|
|
@@ -840,6 +849,10 @@ class ClrPopoverContent {
|
|
|
840
849
|
if (!this.view) {
|
|
841
850
|
return;
|
|
842
851
|
}
|
|
852
|
+
if (this.removeClickListenerFn) {
|
|
853
|
+
this.removeClickListenerFn();
|
|
854
|
+
this.removeClickListenerFn = null;
|
|
855
|
+
}
|
|
843
856
|
this.view.rootNodes.forEach(node => this.renderer.removeChild(this.document.body, node));
|
|
844
857
|
this.container.clear();
|
|
845
858
|
delete this.view;
|
|
@@ -854,16 +867,17 @@ class ClrPopoverContent {
|
|
|
854
867
|
addContent() {
|
|
855
868
|
// Create the view container
|
|
856
869
|
this.view = this.container.createEmbeddedView(this.template);
|
|
857
|
-
|
|
858
|
-
this.
|
|
870
|
+
const [rootNode] = this.view.rootNodes;
|
|
871
|
+
this.smartEventsService.contentRef = rootNode; // So we know where/what to set close focus on
|
|
872
|
+
this.renderer.addClass(rootNode, 'clr-popover-content');
|
|
859
873
|
// Reset to the begining of the document to be available for sizing/positioning calculations.
|
|
860
874
|
// If we add new content to the bottom it triggers changes in the layout that may lead to false anchor
|
|
861
875
|
// coordinates values.
|
|
862
|
-
this.renderer.setStyle(
|
|
863
|
-
this.renderer.setStyle(
|
|
876
|
+
this.renderer.setStyle(rootNode, 'top', '0px');
|
|
877
|
+
this.renderer.setStyle(rootNode, 'left', '0px');
|
|
864
878
|
// We need to hide it during the calculation phase, while it's not yet finally positioned.
|
|
865
|
-
this.renderer.setStyle(
|
|
866
|
-
this.renderer.listen(
|
|
879
|
+
this.renderer.setStyle(rootNode, 'opacity', '0');
|
|
880
|
+
this.removeClickListenerFn = this.renderer.listen(rootNode, 'click', event => {
|
|
867
881
|
this.smartOpenService.openEvent = event;
|
|
868
882
|
});
|
|
869
883
|
this.view.rootNodes.forEach(node => {
|
|
@@ -893,7 +907,7 @@ ClrPopoverContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
|
|
|
893
907
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverContent, decorators: [{
|
|
894
908
|
type: Directive,
|
|
895
909
|
args: [{ selector: '[clrPopoverContent]' }]
|
|
896
|
-
}], ctorParameters: function () { return [{ type:
|
|
910
|
+
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
897
911
|
type: Inject,
|
|
898
912
|
args: [DOCUMENT]
|
|
899
913
|
}] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: ClrPopoverPositionService }, { type: ClrPopoverEventsService }, { type: ClrPopoverToggleService }]; }, propDecorators: { open: [{
|
|
@@ -1229,7 +1243,7 @@ ClrButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
1229
1243
|
<ng-content></ng-content>
|
|
1230
1244
|
</button>
|
|
1231
1245
|
</ng-template>
|
|
1232
|
-
`, isInline: true, directives: [{ type:
|
|
1246
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1233
1247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrButton, decorators: [{
|
|
1234
1248
|
type: Component,
|
|
1235
1249
|
args: [{
|
|
@@ -1296,6 +1310,47 @@ const UNIQUE_ID_PROVIDER = {
|
|
|
1296
1310
|
useFactory: uniqueIdFactory,
|
|
1297
1311
|
};
|
|
1298
1312
|
|
|
1313
|
+
/*
|
|
1314
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
1315
|
+
* This software is released under MIT license.
|
|
1316
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1317
|
+
*/
|
|
1318
|
+
/**
|
|
1319
|
+
* @description
|
|
1320
|
+
*
|
|
1321
|
+
* Developers should explicitly add this service to providers; it then can be injected
|
|
1322
|
+
* into a constructor and used as a notifier for the `takeUntil` operator. This eliminates
|
|
1323
|
+
* the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy`
|
|
1324
|
+
* interface and teardown subscriptions there.
|
|
1325
|
+
*
|
|
1326
|
+
* This can be used as follows:
|
|
1327
|
+
* ```ts
|
|
1328
|
+
* @Component({
|
|
1329
|
+
* selector: 'clr-button-group',
|
|
1330
|
+
* templateUrl: 'button-group.html',
|
|
1331
|
+
* providers: [ClrDestroyService],
|
|
1332
|
+
* })
|
|
1333
|
+
* export class ClrButtonGroup {
|
|
1334
|
+
* constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: ClrDestroyService) {}
|
|
1335
|
+
*
|
|
1336
|
+
* ngAfterContentInit() {
|
|
1337
|
+
* this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));
|
|
1338
|
+
* }
|
|
1339
|
+
* }
|
|
1340
|
+
* ```
|
|
1341
|
+
*/
|
|
1342
|
+
class ClrDestroyService extends Subject {
|
|
1343
|
+
ngOnDestroy() {
|
|
1344
|
+
this.next();
|
|
1345
|
+
this.complete();
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
ClrDestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
1349
|
+
ClrDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDestroyService });
|
|
1350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDestroyService, decorators: [{
|
|
1351
|
+
type: Injectable
|
|
1352
|
+
}] });
|
|
1353
|
+
|
|
1299
1354
|
/*
|
|
1300
1355
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
1301
1356
|
* This software is released under MIT license.
|
|
@@ -1523,11 +1578,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1523
1578
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1524
1579
|
*/
|
|
1525
1580
|
class ClrButtonGroup {
|
|
1526
|
-
constructor(buttonGroupNewService, toggleService, popoverId, commonStrings) {
|
|
1581
|
+
constructor(buttonGroupNewService, toggleService, popoverId, commonStrings, destroy$) {
|
|
1527
1582
|
this.buttonGroupNewService = buttonGroupNewService;
|
|
1528
1583
|
this.toggleService = toggleService;
|
|
1529
1584
|
this.popoverId = popoverId;
|
|
1530
1585
|
this.commonStrings = commonStrings;
|
|
1586
|
+
this.destroy$ = destroy$;
|
|
1531
1587
|
this.popoverPosition = ClrPopoverPositions['bottom-left'];
|
|
1532
1588
|
this.inlineButtons = [];
|
|
1533
1589
|
this.menuButtons = [];
|
|
@@ -1542,7 +1598,7 @@ class ClrButtonGroup {
|
|
|
1542
1598
|
*/
|
|
1543
1599
|
ngAfterContentInit() {
|
|
1544
1600
|
this.initializeButtons();
|
|
1545
|
-
this.buttonGroupNewService.changes.subscribe(button => this.rearrangeButton(button));
|
|
1601
|
+
this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));
|
|
1546
1602
|
this.buttons.changes.subscribe(() => {
|
|
1547
1603
|
this.initializeButtons();
|
|
1548
1604
|
});
|
|
@@ -1612,14 +1668,15 @@ class ClrButtonGroup {
|
|
|
1612
1668
|
this.popoverPosition = ClrPopoverPositions[this._menuPosition];
|
|
1613
1669
|
}
|
|
1614
1670
|
}
|
|
1615
|
-
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 });
|
|
1671
|
+
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 });
|
|
1616
1672
|
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: [
|
|
1617
1673
|
ButtonInGroupService,
|
|
1618
1674
|
UNIQUE_ID_PROVIDER,
|
|
1619
1675
|
ClrPopoverToggleService,
|
|
1620
1676
|
ClrPopoverEventsService,
|
|
1621
1677
|
ClrPopoverPositionService,
|
|
1622
|
-
|
|
1678
|
+
ClrDestroyService,
|
|
1679
|
+
], 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"] }] });
|
|
1623
1680
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrButtonGroup, decorators: [{
|
|
1624
1681
|
type: Component,
|
|
1625
1682
|
args: [{ selector: 'clr-button-group', providers: [
|
|
@@ -1628,11 +1685,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1628
1685
|
ClrPopoverToggleService,
|
|
1629
1686
|
ClrPopoverEventsService,
|
|
1630
1687
|
ClrPopoverPositionService,
|
|
1688
|
+
ClrDestroyService,
|
|
1631
1689
|
], 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" }]
|
|
1632
1690
|
}], ctorParameters: function () { return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
|
|
1633
1691
|
type: Inject,
|
|
1634
1692
|
args: [UNIQUE_ID]
|
|
1635
|
-
}] }, { type: ClrCommonStringsService }]; }, propDecorators: { buttons: [{
|
|
1693
|
+
}] }, { type: ClrCommonStringsService }, { type: ClrDestroyService }]; }, propDecorators: { buttons: [{
|
|
1636
1694
|
type: ContentChildren,
|
|
1637
1695
|
args: [ClrButton]
|
|
1638
1696
|
}], menuPosition: [{
|
|
@@ -1729,7 +1787,7 @@ ClrLoadingButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
1729
1787
|
<ng-content></ng-content>
|
|
1730
1788
|
</span>
|
|
1731
1789
|
</ng-container>
|
|
1732
|
-
`, isInline: true, directives: [{ type:
|
|
1790
|
+
`, isInline: true, directives: [{ type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [
|
|
1733
1791
|
trigger('defaultButton', [
|
|
1734
1792
|
transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),
|
|
1735
1793
|
// TODO: see if we can get leave animation to work before spinner's enter animation
|
|
@@ -2679,7 +2737,7 @@ ClrControlContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
2679
2737
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
2680
2738
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
2681
2739
|
</div>
|
|
2682
|
-
`, isInline: true, directives: [{ type:
|
|
2740
|
+
`, 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" }] });
|
|
2683
2741
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrControlContainer, decorators: [{
|
|
2684
2742
|
type: Component,
|
|
2685
2743
|
args: [{
|
|
@@ -3055,7 +3113,7 @@ ClrCheckboxWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
3055
3113
|
<ng-content select="[clrCheckbox],[clrToggle]"></ng-content>
|
|
3056
3114
|
<ng-content select="label"></ng-content>
|
|
3057
3115
|
<label *ngIf="!label"></label>
|
|
3058
|
-
`, isInline: true, directives: [{ type:
|
|
3116
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
3059
3117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCheckboxWrapper, decorators: [{
|
|
3060
3118
|
type: Component,
|
|
3061
3119
|
args: [{
|
|
@@ -3181,7 +3239,7 @@ ClrCheckboxContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
3181
3239
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
3182
3240
|
</div>
|
|
3183
3241
|
</div>
|
|
3184
|
-
`, isInline: true, directives: [{ type:
|
|
3242
|
+
`, 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" }] });
|
|
3185
3243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCheckboxContainer, decorators: [{
|
|
3186
3244
|
type: Component,
|
|
3187
3245
|
args: [{
|
|
@@ -4911,10 +4969,10 @@ class ClrCalendar {
|
|
|
4911
4969
|
}
|
|
4912
4970
|
}
|
|
4913
4971
|
ClrCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCalendar, deps: [{ token: LocaleHelperService }, { token: DateNavigationService }, { token: DatepickerFocusService }, { token: DateIOService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
4914
|
-
ClrCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrCalendar, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <
|
|
4972
|
+
ClrCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrCalendar, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\"></clr-day>\n </td>\n </tr>\n</table>\n", components: [{ type: ClrDay, selector: "clr-day", inputs: ["clrDayView"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
4915
4973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCalendar, decorators: [{
|
|
4916
4974
|
type: Component,
|
|
4917
|
-
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <
|
|
4975
|
+
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\"></clr-day>\n </td>\n </tr>\n</table>\n" }]
|
|
4918
4976
|
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }]; }, propDecorators: { onKeyDown: [{
|
|
4919
4977
|
type: HostListener,
|
|
4920
4978
|
args: ['keydown', ['$event']]
|
|
@@ -4947,9 +5005,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
4947
5005
|
* This software is released under MIT license.
|
|
4948
5006
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
4949
5007
|
*/
|
|
5008
|
+
/**
|
|
5009
|
+
* TODO:
|
|
5010
|
+
* Using core functions like:
|
|
5011
|
+
* - pluckPixelValue
|
|
5012
|
+
* - getCssPropertyValue
|
|
5013
|
+
*
|
|
5014
|
+
* to get the value of the design token.
|
|
5015
|
+
*
|
|
5016
|
+
* Note: Memoization/Cache usage possible.
|
|
5017
|
+
*/
|
|
4950
5018
|
// iPad mini screen width
|
|
4951
5019
|
// http://stephen.io/mediaqueries/#iPadMini
|
|
4952
5020
|
const DATEPICKER_ENABLE_BREAKPOINT = 768;
|
|
5021
|
+
const SMALL_BREAKPOINT = 576;
|
|
5022
|
+
const MEDIUM_BREAKPOINT = 768;
|
|
5023
|
+
const LARGE_BREAKPOINT = 992;
|
|
5024
|
+
const EXTRA_LARGE_BREAKPOINT = 1200;
|
|
4953
5025
|
|
|
4954
5026
|
/*
|
|
4955
5027
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -5121,7 +5193,7 @@ ClrMonthpicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
5121
5193
|
>
|
|
5122
5194
|
{{ month }}
|
|
5123
5195
|
</button>
|
|
5124
|
-
`, isInline: true, directives: [{ type:
|
|
5196
|
+
`, isInline: true, directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5125
5197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrMonthpicker, decorators: [{
|
|
5126
5198
|
type: Component,
|
|
5127
5199
|
args: [{
|
|
@@ -5374,7 +5446,7 @@ ClrYearpicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
5374
5446
|
{{ year }}
|
|
5375
5447
|
</button>
|
|
5376
5448
|
</div>
|
|
5377
|
-
`, isInline: true, directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }, { type:
|
|
5449
|
+
`, isInline: true, directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5378
5450
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrYearpicker, decorators: [{
|
|
5379
5451
|
type: Component,
|
|
5380
5452
|
args: [{
|
|
@@ -5530,7 +5602,7 @@ class ClrDatepickerViewManager {
|
|
|
5530
5602
|
}
|
|
5531
5603
|
}
|
|
5532
5604
|
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 });
|
|
5533
|
-
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:
|
|
5605
|
+
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"] }] });
|
|
5534
5606
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
|
|
5535
5607
|
type: Component,
|
|
5536
5608
|
args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
|
|
@@ -5698,7 +5770,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
5698
5770
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
5699
5771
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
5700
5772
|
</div>
|
|
5701
|
-
`, isInline: true, components: [{ type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }], directives: [{ type:
|
|
5773
|
+
`, 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"] }] });
|
|
5702
5774
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDateContainer, decorators: [{
|
|
5703
5775
|
type: Component,
|
|
5704
5776
|
args: [{
|
|
@@ -6164,7 +6236,7 @@ ClrInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
6164
6236
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6165
6237
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6166
6238
|
</div>
|
|
6167
|
-
`, isInline: true, directives: [{ type:
|
|
6239
|
+
`, 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" }] });
|
|
6168
6240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrInputContainer, decorators: [{
|
|
6169
6241
|
type: Component,
|
|
6170
6242
|
args: [{
|
|
@@ -6309,11 +6381,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6309
6381
|
class="clr-input-group-icon-action"
|
|
6310
6382
|
type="button"
|
|
6311
6383
|
>
|
|
6312
|
-
<cds-icon
|
|
6313
|
-
status="info"
|
|
6314
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6315
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6316
|
-
></cds-icon>
|
|
6384
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6317
6385
|
<span class="clr-sr-only">{{
|
|
6318
6386
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6319
6387
|
}}</span>
|
|
@@ -6338,7 +6406,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6338
6406
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6339
6407
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6340
6408
|
</div>
|
|
6341
|
-
`, isInline: true, directives: [{ type:
|
|
6409
|
+
`, 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" }] });
|
|
6342
6410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPasswordContainer, decorators: [{
|
|
6343
6411
|
type: Component,
|
|
6344
6412
|
args: [{
|
|
@@ -6357,11 +6425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
6357
6425
|
class="clr-input-group-icon-action"
|
|
6358
6426
|
type="button"
|
|
6359
6427
|
>
|
|
6360
|
-
<cds-icon
|
|
6361
|
-
status="info"
|
|
6362
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6363
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6364
|
-
></cds-icon>
|
|
6428
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6365
6429
|
<span class="clr-sr-only">{{
|
|
6366
6430
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6367
6431
|
}}</span>
|
|
@@ -6511,7 +6575,7 @@ ClrRadioWrapper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
6511
6575
|
<ng-content select="[clrRadio]"></ng-content>
|
|
6512
6576
|
<ng-content select="label"></ng-content>
|
|
6513
6577
|
<label *ngIf="!label"></label>
|
|
6514
|
-
`, isInline: true, directives: [{ type:
|
|
6578
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
6515
6579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrRadioWrapper, decorators: [{
|
|
6516
6580
|
type: Component,
|
|
6517
6581
|
args: [{
|
|
@@ -6616,7 +6680,7 @@ ClrRadioContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
6616
6680
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6617
6681
|
</div>
|
|
6618
6682
|
</div>
|
|
6619
|
-
`, isInline: true, directives: [{ type:
|
|
6683
|
+
`, 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" }] });
|
|
6620
6684
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrRadioContainer, decorators: [{
|
|
6621
6685
|
type: Component,
|
|
6622
6686
|
args: [{
|
|
@@ -6740,7 +6804,7 @@ ClrSelectContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
6740
6804
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6741
6805
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6742
6806
|
</div>
|
|
6743
|
-
`, isInline: true, directives: [{ type:
|
|
6807
|
+
`, 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" }] });
|
|
6744
6808
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrSelectContainer, decorators: [{
|
|
6745
6809
|
type: Component,
|
|
6746
6810
|
args: [{
|
|
@@ -6863,7 +6927,7 @@ ClrTextareaContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6863
6927
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
6864
6928
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
6865
6929
|
</div>
|
|
6866
|
-
`, isInline: true, directives: [{ type:
|
|
6930
|
+
`, 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" }] });
|
|
6867
6931
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTextareaContainer, decorators: [{
|
|
6868
6932
|
type: Component,
|
|
6869
6933
|
args: [{
|
|
@@ -7011,7 +7075,7 @@ ClrRangeContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
7011
7075
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
7012
7076
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
7013
7077
|
</div>
|
|
7014
|
-
`, isInline: true, directives: [{ type:
|
|
7078
|
+
`, 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" }] });
|
|
7015
7079
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrRangeContainer, decorators: [{
|
|
7016
7080
|
type: Component,
|
|
7017
7081
|
args: [{
|
|
@@ -7180,7 +7244,7 @@ ClrDatalistContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
7180
7244
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
7181
7245
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
7182
7246
|
</div>
|
|
7183
|
-
`, isInline: true, directives: [{ type:
|
|
7247
|
+
`, 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" }] });
|
|
7184
7248
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatalistContainer, decorators: [{
|
|
7185
7249
|
type: Component,
|
|
7186
7250
|
args: [{
|
|
@@ -7870,7 +7934,7 @@ class ClrOption {
|
|
|
7870
7934
|
}
|
|
7871
7935
|
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 });
|
|
7872
7936
|
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>
|
|
7873
|
-
<span *ngIf="selected" class="clr-sr-only"> {{ commonStrings.keys.comboboxSelected }} </span> `, isInline: true, directives: [{ type:
|
|
7937
|
+
<span *ngIf="selected" class="clr-sr-only"> {{ commonStrings.keys.comboboxSelected }} </span> `, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
7874
7938
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOption, decorators: [{
|
|
7875
7939
|
type: Component,
|
|
7876
7940
|
args: [{
|
|
@@ -8092,7 +8156,7 @@ ClrOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "1
|
|
|
8092
8156
|
|
|
8093
8157
|
<!--Option Groups and Options will be projected here-->
|
|
8094
8158
|
<ng-content></ng-content>
|
|
8095
|
-
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type:
|
|
8159
|
+
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
8096
8160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOptions, decorators: [{
|
|
8097
8161
|
type: Component,
|
|
8098
8162
|
args: [{
|
|
@@ -8204,7 +8268,7 @@ ClrComboboxContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
8204
8268
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
8205
8269
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
8206
8270
|
</div>
|
|
8207
|
-
`, isInline: true, directives: [{ type:
|
|
8271
|
+
`, 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" }] });
|
|
8208
8272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrComboboxContainer, decorators: [{
|
|
8209
8273
|
type: Component,
|
|
8210
8274
|
args: [{
|
|
@@ -8936,9 +9000,6 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
8936
9000
|
// the aria properties on the input element, not on the component.
|
|
8937
9001
|
this.el = this.textbox;
|
|
8938
9002
|
}
|
|
8939
|
-
ngOnDestroy() {
|
|
8940
|
-
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
8941
|
-
}
|
|
8942
9003
|
}
|
|
8943
9004
|
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 });
|
|
8944
9005
|
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: [
|
|
@@ -8953,7 +9014,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
8953
9014
|
ClrPopoverToggleService,
|
|
8954
9015
|
ClrPopoverEventsService,
|
|
8955
9016
|
ClrPopoverPositionService,
|
|
8956
|
-
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n
|
|
9017
|
+
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
|
|
8957
9018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
8958
9019
|
type: Component,
|
|
8959
9020
|
args: [{ selector: 'clr-combobox', providers: [
|
|
@@ -8972,7 +9033,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
8972
9033
|
'[class.aria-required]': 'true',
|
|
8973
9034
|
'[class.clr-combobox]': 'true',
|
|
8974
9035
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
8975
|
-
}, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n
|
|
9036
|
+
}, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
8976
9037
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
8977
9038
|
type: Self
|
|
8978
9039
|
}, {
|
|
@@ -9536,13 +9597,13 @@ class DragEventListenerService {
|
|
|
9536
9597
|
};
|
|
9537
9598
|
// Initialize nested listeners' property with a new empty array;
|
|
9538
9599
|
this.nestedListeners = [];
|
|
9539
|
-
//
|
|
9540
|
-
this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
|
|
9541
|
-
selectEvent.preventDefault();
|
|
9542
|
-
selectEvent.stopImmediatePropagation();
|
|
9543
|
-
}));
|
|
9544
|
-
// Listen to mousemove/touchmove events outside of angular zone.
|
|
9600
|
+
// Listen to selectstart/mousemove/touchmove events outside of angular zone.
|
|
9545
9601
|
this.ngZone.runOutsideAngular(() => {
|
|
9602
|
+
// This is needed to disable selection during dragging (especially in EDGE/IE11).
|
|
9603
|
+
this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
|
|
9604
|
+
selectEvent.preventDefault();
|
|
9605
|
+
selectEvent.stopImmediatePropagation();
|
|
9606
|
+
}));
|
|
9546
9607
|
// During the drag start delay, pointer should stay within the boundary.
|
|
9547
9608
|
this.checkDragStartBoundary(moveOnEvent);
|
|
9548
9609
|
this.dragStartDelayTimeout = setTimeout(() => {
|
|
@@ -10429,11 +10490,12 @@ const FOCUS_ON_VIEW_INIT_PROVIDER = {
|
|
|
10429
10490
|
/* This directive is for guiding the document focus to the newly added content when its view is initialized
|
|
10430
10491
|
so that assistive technologies can read its content. */
|
|
10431
10492
|
class ClrFocusOnViewInit {
|
|
10432
|
-
constructor(el, platformId, focusOnViewInit, document, renderer) {
|
|
10493
|
+
constructor(el, platformId, focusOnViewInit, document, renderer, ngZone) {
|
|
10433
10494
|
this.el = el;
|
|
10434
10495
|
this.platformId = platformId;
|
|
10435
10496
|
this.focusOnViewInit = focusOnViewInit;
|
|
10436
10497
|
this.renderer = renderer;
|
|
10498
|
+
this.destroy$ = new Subject();
|
|
10437
10499
|
this.directFocus = true; // true if the element gets focused without need to set tabindex;
|
|
10438
10500
|
this._isEnabled = this.focusOnViewInit;
|
|
10439
10501
|
// Angular compiler doesn't understand the type Document
|
|
@@ -10441,13 +10503,15 @@ class ClrFocusOnViewInit {
|
|
|
10441
10503
|
// even though it understands the injection token DOCUMENT
|
|
10442
10504
|
// https://github.com/angular/angular/issues/20351
|
|
10443
10505
|
this.document = document;
|
|
10444
|
-
|
|
10445
|
-
|
|
10446
|
-
|
|
10447
|
-
|
|
10448
|
-
|
|
10449
|
-
|
|
10450
|
-
|
|
10506
|
+
ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusout')
|
|
10507
|
+
.pipe(takeUntil(this.destroy$))
|
|
10508
|
+
.subscribe(() => {
|
|
10509
|
+
if (!this.directFocus) {
|
|
10510
|
+
// manually set attributes and styles should be removed
|
|
10511
|
+
this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');
|
|
10512
|
+
this.renderer.setStyle(this.el.nativeElement, 'outline', null);
|
|
10513
|
+
}
|
|
10514
|
+
}));
|
|
10451
10515
|
}
|
|
10452
10516
|
set isEnabled(value) {
|
|
10453
10517
|
if (this.focusOnViewInit && typeof value === 'boolean') {
|
|
@@ -10457,6 +10521,9 @@ class ClrFocusOnViewInit {
|
|
|
10457
10521
|
ngAfterViewInit() {
|
|
10458
10522
|
this.focus();
|
|
10459
10523
|
}
|
|
10524
|
+
ngOnDestroy() {
|
|
10525
|
+
this.destroy$.next();
|
|
10526
|
+
}
|
|
10460
10527
|
focus() {
|
|
10461
10528
|
if (!isPlatformBrowser(this.platformId)) {
|
|
10462
10529
|
return;
|
|
@@ -10477,8 +10544,8 @@ class ClrFocusOnViewInit {
|
|
|
10477
10544
|
}
|
|
10478
10545
|
}
|
|
10479
10546
|
}
|
|
10480
|
-
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 });
|
|
10481
|
-
ClrFocusOnViewInit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: { isEnabled: ["clrFocusOnViewInit", "isEnabled"] },
|
|
10547
|
+
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 });
|
|
10548
|
+
ClrFocusOnViewInit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: { isEnabled: ["clrFocusOnViewInit", "isEnabled"] }, ngImport: i0 });
|
|
10482
10549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrFocusOnViewInit, decorators: [{
|
|
10483
10550
|
type: Directive,
|
|
10484
10551
|
args: [{
|
|
@@ -10493,10 +10560,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10493
10560
|
}] }, { type: undefined, decorators: [{
|
|
10494
10561
|
type: Inject,
|
|
10495
10562
|
args: [DOCUMENT]
|
|
10496
|
-
}] }, { type: i0.Renderer2 }]; }, propDecorators: {
|
|
10497
|
-
type: HostListener,
|
|
10498
|
-
args: ['focusout']
|
|
10499
|
-
}], isEnabled: [{
|
|
10563
|
+
}] }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { isEnabled: [{
|
|
10500
10564
|
type: Input,
|
|
10501
10565
|
args: ['clrFocusOnViewInit']
|
|
10502
10566
|
}] } });
|
|
@@ -11175,11 +11239,12 @@ class DatagridStringFilterImpl {
|
|
|
11175
11239
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11176
11240
|
*/
|
|
11177
11241
|
class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
11178
|
-
constructor(filters, domAdapter, commonStrings, smartToggleService) {
|
|
11242
|
+
constructor(filters, domAdapter, commonStrings, smartToggleService, ngZone) {
|
|
11179
11243
|
super(filters);
|
|
11180
11244
|
this.domAdapter = domAdapter;
|
|
11181
11245
|
this.commonStrings = commonStrings;
|
|
11182
11246
|
this.smartToggleService = smartToggleService;
|
|
11247
|
+
this.ngZone = ngZone;
|
|
11183
11248
|
this.subs = [];
|
|
11184
11249
|
/**
|
|
11185
11250
|
* Indicates if the filter dropdown is open
|
|
@@ -11187,6 +11252,9 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
11187
11252
|
this.open = false;
|
|
11188
11253
|
this.filterValueChange = new EventEmitter();
|
|
11189
11254
|
}
|
|
11255
|
+
get placeholderValue() {
|
|
11256
|
+
return this.placeholder || this.commonStrings.keys.filterItems;
|
|
11257
|
+
}
|
|
11190
11258
|
/**
|
|
11191
11259
|
* Customizable filter logic based on a search text
|
|
11192
11260
|
*/
|
|
@@ -11208,9 +11276,16 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
11208
11276
|
ngAfterViewInit() {
|
|
11209
11277
|
this.subs.push(this.smartToggleService.openChange.subscribe(openChange => {
|
|
11210
11278
|
this.open = openChange;
|
|
11211
|
-
//
|
|
11212
|
-
|
|
11213
|
-
|
|
11279
|
+
// Note: this is being run outside of the Angular zone because `element.focus()` doesn't require
|
|
11280
|
+
// running change detection.
|
|
11281
|
+
this.ngZone.runOutsideAngular(() => {
|
|
11282
|
+
// The animation frame in used because when this executes, the input isn't displayed.
|
|
11283
|
+
// Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
|
|
11284
|
+
// `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.
|
|
11285
|
+
// Animation tasks are executed within the next rendering frame.
|
|
11286
|
+
requestAnimationFrame(() => {
|
|
11287
|
+
this.domAdapter.focus(this.input.nativeElement);
|
|
11288
|
+
});
|
|
11214
11289
|
});
|
|
11215
11290
|
}));
|
|
11216
11291
|
}
|
|
@@ -11239,8 +11314,8 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
11239
11314
|
}
|
|
11240
11315
|
}
|
|
11241
11316
|
}
|
|
11242
|
-
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 });
|
|
11243
|
-
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: `
|
|
11317
|
+
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 });
|
|
11318
|
+
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: `
|
|
11244
11319
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
11245
11320
|
<input
|
|
11246
11321
|
#input
|
|
@@ -11248,8 +11323,8 @@ DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
11248
11323
|
name="search"
|
|
11249
11324
|
[(ngModel)]="value"
|
|
11250
11325
|
class="clr-input"
|
|
11251
|
-
[attr.aria-label]="
|
|
11252
|
-
[placeholder]="
|
|
11326
|
+
[attr.aria-label]="placeholderValue"
|
|
11327
|
+
[placeholder]="placeholderValue"
|
|
11253
11328
|
/>
|
|
11254
11329
|
</clr-dg-filter>
|
|
11255
11330
|
`, 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"] }] });
|
|
@@ -11266,13 +11341,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11266
11341
|
name="search"
|
|
11267
11342
|
[(ngModel)]="value"
|
|
11268
11343
|
class="clr-input"
|
|
11269
|
-
[attr.aria-label]="
|
|
11270
|
-
[placeholder]="
|
|
11344
|
+
[attr.aria-label]="placeholderValue"
|
|
11345
|
+
[placeholder]="placeholderValue"
|
|
11271
11346
|
/>
|
|
11272
11347
|
</clr-dg-filter>
|
|
11273
11348
|
`,
|
|
11274
11349
|
}]
|
|
11275
|
-
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }]; }, propDecorators: {
|
|
11350
|
+
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
|
|
11351
|
+
type: Input,
|
|
11352
|
+
args: ['clrFilterPlaceholder']
|
|
11353
|
+
}], customStringFilter: [{
|
|
11276
11354
|
type: Input,
|
|
11277
11355
|
args: ['clrDgStringFilter']
|
|
11278
11356
|
}], input: [{
|
|
@@ -11413,11 +11491,12 @@ class DatagridNumericFilterImpl {
|
|
|
11413
11491
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11414
11492
|
*/
|
|
11415
11493
|
class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
11416
|
-
constructor(filters, domAdapter, commonStrings, popoverToggleService) {
|
|
11494
|
+
constructor(filters, domAdapter, commonStrings, popoverToggleService, ngZone) {
|
|
11417
11495
|
super(filters);
|
|
11418
11496
|
this.domAdapter = domAdapter;
|
|
11419
11497
|
this.commonStrings = commonStrings;
|
|
11420
11498
|
this.popoverToggleService = popoverToggleService;
|
|
11499
|
+
this.ngZone = ngZone;
|
|
11421
11500
|
this.subscriptions = [];
|
|
11422
11501
|
/**
|
|
11423
11502
|
* Indicates if the filter dropdown is open
|
|
@@ -11426,10 +11505,17 @@ class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
|
11426
11505
|
this.filterValueChange = new EventEmitter();
|
|
11427
11506
|
}
|
|
11428
11507
|
ngOnDestroy() {
|
|
11508
|
+
super.ngOnDestroy();
|
|
11429
11509
|
this.subscriptions.forEach(sub => {
|
|
11430
11510
|
sub.unsubscribe();
|
|
11431
11511
|
});
|
|
11432
11512
|
}
|
|
11513
|
+
get maxPlaceholderValue() {
|
|
11514
|
+
return this.maxPlaceholder || this.commonStrings.keys.maxValue;
|
|
11515
|
+
}
|
|
11516
|
+
get minPlaceholderValue() {
|
|
11517
|
+
return this.minPlaceholder || this.commonStrings.keys.minValue;
|
|
11518
|
+
}
|
|
11433
11519
|
/**
|
|
11434
11520
|
* Customizable filter logic based on high and low values
|
|
11435
11521
|
*/
|
|
@@ -11451,9 +11537,16 @@ class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
|
11451
11537
|
ngAfterViewInit() {
|
|
11452
11538
|
this.subscriptions.push(this.popoverToggleService.openChange.subscribe(openChange => {
|
|
11453
11539
|
this.open = openChange;
|
|
11454
|
-
//
|
|
11455
|
-
|
|
11456
|
-
|
|
11540
|
+
// Note: this is being run outside of the Angular zone because `element.focus()` doesn't require
|
|
11541
|
+
// running change detection.
|
|
11542
|
+
this.ngZone.runOutsideAngular(() => {
|
|
11543
|
+
// The animation frame in used because when this executes, the input isn't displayed.
|
|
11544
|
+
// Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
|
|
11545
|
+
// `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.
|
|
11546
|
+
// Animation tasks are executed within the next rendering frame.
|
|
11547
|
+
requestAnimationFrame(() => {
|
|
11548
|
+
this.domAdapter.focus(this.input.nativeElement);
|
|
11549
|
+
});
|
|
11457
11550
|
});
|
|
11458
11551
|
}));
|
|
11459
11552
|
}
|
|
@@ -11524,8 +11617,8 @@ class DatagridNumericFilter extends DatagridFilterRegistrar {
|
|
|
11524
11617
|
}
|
|
11525
11618
|
}
|
|
11526
11619
|
}
|
|
11527
|
-
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 });
|
|
11528
|
-
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: `
|
|
11620
|
+
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 });
|
|
11621
|
+
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: `
|
|
11529
11622
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
11530
11623
|
<input
|
|
11531
11624
|
class="datagrid-numeric-filter-input"
|
|
@@ -11533,8 +11626,8 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11533
11626
|
type="number"
|
|
11534
11627
|
name="low"
|
|
11535
11628
|
[(ngModel)]="low"
|
|
11536
|
-
[placeholder]="
|
|
11537
|
-
[attr.aria-label]="
|
|
11629
|
+
[placeholder]="minPlaceholderValue"
|
|
11630
|
+
[attr.aria-label]="minPlaceholderValue"
|
|
11538
11631
|
/>
|
|
11539
11632
|
<span class="datagrid-filter-input-spacer"></span>
|
|
11540
11633
|
<input
|
|
@@ -11543,8 +11636,8 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11543
11636
|
type="number"
|
|
11544
11637
|
name="high"
|
|
11545
11638
|
[(ngModel)]="high"
|
|
11546
|
-
[placeholder]="
|
|
11547
|
-
[attr.aria-label]="
|
|
11639
|
+
[placeholder]="maxPlaceholderValue"
|
|
11640
|
+
[attr.aria-label]="maxPlaceholderValue"
|
|
11548
11641
|
/>
|
|
11549
11642
|
</clr-dg-filter>
|
|
11550
11643
|
`, 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"] }] });
|
|
@@ -11561,8 +11654,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11561
11654
|
type="number"
|
|
11562
11655
|
name="low"
|
|
11563
11656
|
[(ngModel)]="low"
|
|
11564
|
-
[placeholder]="
|
|
11565
|
-
[attr.aria-label]="
|
|
11657
|
+
[placeholder]="minPlaceholderValue"
|
|
11658
|
+
[attr.aria-label]="minPlaceholderValue"
|
|
11566
11659
|
/>
|
|
11567
11660
|
<span class="datagrid-filter-input-spacer"></span>
|
|
11568
11661
|
<input
|
|
@@ -11571,13 +11664,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11571
11664
|
type="number"
|
|
11572
11665
|
name="high"
|
|
11573
11666
|
[(ngModel)]="high"
|
|
11574
|
-
[placeholder]="
|
|
11575
|
-
[attr.aria-label]="
|
|
11667
|
+
[placeholder]="maxPlaceholderValue"
|
|
11668
|
+
[attr.aria-label]="maxPlaceholderValue"
|
|
11576
11669
|
/>
|
|
11577
11670
|
</clr-dg-filter>
|
|
11578
11671
|
`,
|
|
11579
11672
|
}]
|
|
11580
|
-
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }]; }, propDecorators: {
|
|
11673
|
+
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { maxPlaceholder: [{
|
|
11674
|
+
type: Input,
|
|
11675
|
+
args: ['clrFilterMaxPlaceholder']
|
|
11676
|
+
}], minPlaceholder: [{
|
|
11677
|
+
type: Input,
|
|
11678
|
+
args: ['clrFilterMinPlaceholder']
|
|
11679
|
+
}], customNumericFilter: [{
|
|
11581
11680
|
type: Input,
|
|
11582
11681
|
args: ['clrDgNumericFilter']
|
|
11583
11682
|
}], input: [{
|
|
@@ -12374,6 +12473,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12374
12473
|
this.subscriptions.push(this.listenForDetailPaneChanges());
|
|
12375
12474
|
}
|
|
12376
12475
|
ngOnDestroy() {
|
|
12476
|
+
super.ngOnDestroy();
|
|
12377
12477
|
this.subscriptions.forEach(s => s.unsubscribe());
|
|
12378
12478
|
}
|
|
12379
12479
|
listenForDetailPaneChanges() {
|
|
@@ -12559,6 +12659,15 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12559
12659
|
this.customFilter = true;
|
|
12560
12660
|
}
|
|
12561
12661
|
}
|
|
12662
|
+
get filterStringPlaceholderValue() {
|
|
12663
|
+
return this.filterStringPlaceholder || this.commonStrings.keys.filterItems;
|
|
12664
|
+
}
|
|
12665
|
+
get filterNumberMaxPlaceholderValue() {
|
|
12666
|
+
return this.filterNumberMaxPlaceholder || this.commonStrings.keys.maxValue;
|
|
12667
|
+
}
|
|
12668
|
+
get filterNumberMinPlaceholderValue() {
|
|
12669
|
+
return this.filterNumberMinPlaceholder || this.commonStrings.keys.minValue;
|
|
12670
|
+
}
|
|
12562
12671
|
set updateFilterValue(newValue) {
|
|
12563
12672
|
if (this.filter) {
|
|
12564
12673
|
if (this.filter instanceof DatagridStringFilterImpl) {
|
|
@@ -12610,7 +12719,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12610
12719
|
}
|
|
12611
12720
|
}
|
|
12612
12721
|
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 });
|
|
12613
|
-
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: `
|
|
12722
|
+
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: `
|
|
12614
12723
|
<div class="datagrid-column-flex">
|
|
12615
12724
|
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
12616
12725
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
@@ -12627,12 +12736,15 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
12627
12736
|
|
|
12628
12737
|
<clr-dg-string-filter
|
|
12629
12738
|
*ngIf="field && !customFilter && colType == 'string'"
|
|
12739
|
+
[clrFilterPlaceholder]="filterStringPlaceholderValue"
|
|
12630
12740
|
[clrDgStringFilter]="registered"
|
|
12631
12741
|
[(clrFilterValue)]="filterValue"
|
|
12632
12742
|
></clr-dg-string-filter>
|
|
12633
12743
|
|
|
12634
12744
|
<clr-dg-numeric-filter
|
|
12635
12745
|
*ngIf="field && !customFilter && colType == 'number'"
|
|
12746
|
+
[clrFilterMaxPlaceholder]="filterMaxPlaceholderValue"
|
|
12747
|
+
[clrFilterMinPlaceholder]="filterMinPlaceholderValue"
|
|
12636
12748
|
[clrDgNumericFilter]="registered"
|
|
12637
12749
|
[(clrFilterValue)]="filterValue"
|
|
12638
12750
|
></clr-dg-numeric-filter>
|
|
@@ -12647,7 +12759,7 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
12647
12759
|
|
|
12648
12760
|
<clr-dg-column-separator *ngIf="showSeparator"></clr-dg-column-separator>
|
|
12649
12761
|
</div>
|
|
12650
|
-
`, 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:
|
|
12762
|
+
`, 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 });
|
|
12651
12763
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridColumn, decorators: [{
|
|
12652
12764
|
type: Component,
|
|
12653
12765
|
args: [{
|
|
@@ -12669,12 +12781,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
12669
12781
|
|
|
12670
12782
|
<clr-dg-string-filter
|
|
12671
12783
|
*ngIf="field && !customFilter && colType == 'string'"
|
|
12784
|
+
[clrFilterPlaceholder]="filterStringPlaceholderValue"
|
|
12672
12785
|
[clrDgStringFilter]="registered"
|
|
12673
12786
|
[(clrFilterValue)]="filterValue"
|
|
12674
12787
|
></clr-dg-string-filter>
|
|
12675
12788
|
|
|
12676
12789
|
<clr-dg-numeric-filter
|
|
12677
12790
|
*ngIf="field && !customFilter && colType == 'number'"
|
|
12791
|
+
[clrFilterMaxPlaceholder]="filterMaxPlaceholderValue"
|
|
12792
|
+
[clrFilterMinPlaceholder]="filterMinPlaceholderValue"
|
|
12678
12793
|
[clrDgNumericFilter]="registered"
|
|
12679
12794
|
[(clrFilterValue)]="filterValue"
|
|
12680
12795
|
></clr-dg-numeric-filter>
|
|
@@ -12722,6 +12837,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
12722
12837
|
}], projectedFilter: [{
|
|
12723
12838
|
type: ContentChild,
|
|
12724
12839
|
args: [CustomFilter]
|
|
12840
|
+
}], filterStringPlaceholder: [{
|
|
12841
|
+
type: Input,
|
|
12842
|
+
args: ['clrFilterStringPlaceholder']
|
|
12843
|
+
}], filterNumberMaxPlaceholder: [{
|
|
12844
|
+
type: Input,
|
|
12845
|
+
args: ['clrFilterNumberMaxPlaceholder']
|
|
12846
|
+
}], filterNumberMinPlaceholder: [{
|
|
12847
|
+
type: Input,
|
|
12848
|
+
args: ['clrFilterNumberMinPlaceholder']
|
|
12725
12849
|
}], updateFilterValue: [{
|
|
12726
12850
|
type: Input,
|
|
12727
12851
|
args: ['clrFilterValue']
|
|
@@ -12978,7 +13102,7 @@ ClrDatagridPlaceholder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
12978
13102
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
12979
13103
|
<span role="gridcell"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
12980
13104
|
</div>
|
|
12981
|
-
`, isInline: true, directives: [{ type:
|
|
13105
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
12982
13106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPlaceholder, decorators: [{
|
|
12983
13107
|
type: Component,
|
|
12984
13108
|
args: [{
|
|
@@ -13176,7 +13300,7 @@ ClrSignpost.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
13176
13300
|
</ng-container>
|
|
13177
13301
|
|
|
13178
13302
|
<ng-content></ng-content>
|
|
13179
|
-
`, isInline: true, directives: [{ type:
|
|
13303
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrSignpostTrigger, selector: "[clrSignpostTrigger]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
13180
13304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrSignpost, decorators: [{
|
|
13181
13305
|
type: Component,
|
|
13182
13306
|
args: [{
|
|
@@ -13947,7 +14071,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
13947
14071
|
DatagridIfExpandService,
|
|
13948
14072
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
13949
14073
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
13950
|
-
], 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:
|
|
14074
|
+
], 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" }] });
|
|
13951
14075
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
13952
14076
|
type: Component,
|
|
13953
14077
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -14356,7 +14480,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
14356
14480
|
TableSizeService,
|
|
14357
14481
|
ColumnsService,
|
|
14358
14482
|
DisplayModeService,
|
|
14359
|
-
], 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:
|
|
14483
|
+
], 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"] }] });
|
|
14360
14484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
14361
14485
|
type: Component,
|
|
14362
14486
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -14798,7 +14922,9 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
14798
14922
|
>
|
|
14799
14923
|
<div class="switch-header">
|
|
14800
14924
|
<div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
|
|
14801
|
-
<ng-container *ngIf="!customToggleTitle">
|
|
14925
|
+
<ng-container *ngIf="!customToggleTitle">
|
|
14926
|
+
<h2>{{ commonStrings.keys.showColumns }}</h2>
|
|
14927
|
+
</ng-container>
|
|
14802
14928
|
<ng-content select="clr-dg-column-toggle-title"></ng-content>
|
|
14803
14929
|
<button
|
|
14804
14930
|
class="btn btn-sm btn-link toggle-switch-close-button"
|
|
@@ -14833,7 +14959,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
14833
14959
|
</clr-dg-column-toggle-button>
|
|
14834
14960
|
</div>
|
|
14835
14961
|
</div>
|
|
14836
|
-
`, 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:
|
|
14962
|
+
`, 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"] }] });
|
|
14837
14963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
|
|
14838
14964
|
type: Component,
|
|
14839
14965
|
args: [{
|
|
@@ -14862,7 +14988,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14862
14988
|
>
|
|
14863
14989
|
<div class="switch-header">
|
|
14864
14990
|
<div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
|
|
14865
|
-
<ng-container *ngIf="!customToggleTitle">
|
|
14991
|
+
<ng-container *ngIf="!customToggleTitle">
|
|
14992
|
+
<h2>{{ commonStrings.keys.showColumns }}</h2>
|
|
14993
|
+
</ng-container>
|
|
14866
14994
|
<ng-content select="clr-dg-column-toggle-title"></ng-content>
|
|
14867
14995
|
<button
|
|
14868
14996
|
class="btn btn-sm btn-link toggle-switch-close-button"
|
|
@@ -15036,7 +15164,7 @@ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
15036
15164
|
<ng-content></ng-content>
|
|
15037
15165
|
<div class="clr-sr-only">{{ commonStrings.keys.detailPaneEnd }}</div>
|
|
15038
15166
|
</div>
|
|
15039
|
-
`, isInline: true, directives: [{ type:
|
|
15167
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
|
|
15040
15168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridDetail, decorators: [{
|
|
15041
15169
|
type: Component,
|
|
15042
15170
|
args: [{
|
|
@@ -15507,6 +15635,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15507
15635
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15508
15636
|
*/
|
|
15509
15637
|
|
|
15638
|
+
/*
|
|
15639
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15640
|
+
* This software is released under MIT license.
|
|
15641
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15642
|
+
*/
|
|
15643
|
+
class ForTypeAheadProvider {
|
|
15644
|
+
constructor() {
|
|
15645
|
+
this._textContentChange = new Subject();
|
|
15646
|
+
}
|
|
15647
|
+
get textContentChange() {
|
|
15648
|
+
return this._textContentChange.asObservable();
|
|
15649
|
+
}
|
|
15650
|
+
get textContent() {
|
|
15651
|
+
return this._textContent;
|
|
15652
|
+
}
|
|
15653
|
+
set textContent(value) {
|
|
15654
|
+
this._textContent = value;
|
|
15655
|
+
this._textContentChange.next(value);
|
|
15656
|
+
}
|
|
15657
|
+
}
|
|
15658
|
+
ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15659
|
+
ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider });
|
|
15660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
|
|
15661
|
+
type: Injectable
|
|
15662
|
+
}] });
|
|
15663
|
+
|
|
15664
|
+
/*
|
|
15665
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15666
|
+
* This software is released under MIT license.
|
|
15667
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15668
|
+
*/
|
|
15669
|
+
// The purpose of this directive is to provide the text content of its host element
|
|
15670
|
+
// or text content that's passed to its input.
|
|
15671
|
+
// This directive must stay optional. So do not embed this directive in a component module by default.
|
|
15672
|
+
// If users need to use this directive, they should import its module on their side.
|
|
15673
|
+
class ClrForTypeAhead {
|
|
15674
|
+
constructor(el, forTypeAheadProvider) {
|
|
15675
|
+
this.el = el;
|
|
15676
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
15677
|
+
}
|
|
15678
|
+
trimAndLowerCase(value) {
|
|
15679
|
+
return value.toLocaleLowerCase().trim();
|
|
15680
|
+
}
|
|
15681
|
+
get content() {
|
|
15682
|
+
return this._content;
|
|
15683
|
+
}
|
|
15684
|
+
set content(value) {
|
|
15685
|
+
if (value) {
|
|
15686
|
+
this._content = this.trimAndLowerCase(value);
|
|
15687
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15688
|
+
}
|
|
15689
|
+
else {
|
|
15690
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15691
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15692
|
+
}
|
|
15693
|
+
}
|
|
15694
|
+
ngOnInit() {
|
|
15695
|
+
if (!this._content) {
|
|
15696
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15697
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15698
|
+
}
|
|
15699
|
+
}
|
|
15700
|
+
}
|
|
15701
|
+
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 });
|
|
15702
|
+
ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
|
|
15703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAhead, decorators: [{
|
|
15704
|
+
type: Directive,
|
|
15705
|
+
args: [{
|
|
15706
|
+
providers: [ForTypeAheadProvider],
|
|
15707
|
+
selector: '[clrForTypeAhead]',
|
|
15708
|
+
}]
|
|
15709
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
|
|
15710
|
+
type: Input,
|
|
15711
|
+
args: ['clrForTypeAhead']
|
|
15712
|
+
}] } });
|
|
15713
|
+
|
|
15714
|
+
/*
|
|
15715
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15716
|
+
* This software is released under MIT license.
|
|
15717
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15718
|
+
*/
|
|
15719
|
+
class ClrForTypeAheadModule {
|
|
15720
|
+
}
|
|
15721
|
+
ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15722
|
+
ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
|
|
15723
|
+
ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, imports: [[CommonModule]] });
|
|
15724
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
|
|
15725
|
+
type: NgModule,
|
|
15726
|
+
args: [{
|
|
15727
|
+
imports: [CommonModule],
|
|
15728
|
+
declarations: [ClrForTypeAhead],
|
|
15729
|
+
exports: [ClrForTypeAhead],
|
|
15730
|
+
}]
|
|
15731
|
+
}] });
|
|
15732
|
+
|
|
15733
|
+
/*
|
|
15734
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15735
|
+
* This software is released under MIT license.
|
|
15736
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15737
|
+
*/
|
|
15738
|
+
|
|
15739
|
+
/*
|
|
15740
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15741
|
+
* This software is released under MIT license.
|
|
15742
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15743
|
+
*/
|
|
15744
|
+
|
|
15510
15745
|
/*
|
|
15511
15746
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15512
15747
|
* This software is released under MIT license.
|
|
@@ -15544,7 +15779,7 @@ ClrDatagridFooter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
15544
15779
|
</div>
|
|
15545
15780
|
</ng-container>
|
|
15546
15781
|
<ng-content select="clr-dg-pagination"></ng-content>
|
|
15547
|
-
`, isInline: true, components: [{ type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { type: ClrDatagridColumnToggle, selector: "clr-dg-column-toggle" }], directives: [{ type:
|
|
15782
|
+
`, 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"] }] });
|
|
15548
15783
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridFooter, decorators: [{
|
|
15549
15784
|
type: Component,
|
|
15550
15785
|
args: [{
|
|
@@ -15714,7 +15949,7 @@ ClrDatagridPageSize.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
15714
15949
|
<option *ngFor="let option of pageSizeOptions" [ngValue]="option">{{ option }}</option>
|
|
15715
15950
|
</select>
|
|
15716
15951
|
</div>
|
|
15717
|
-
`, 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:
|
|
15952
|
+
`, 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"] }] });
|
|
15718
15953
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPageSize, decorators: [{
|
|
15719
15954
|
type: Component,
|
|
15720
15955
|
args: [{
|
|
@@ -15970,7 +16205,7 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
15970
16205
|
</button>
|
|
15971
16206
|
</div>
|
|
15972
16207
|
</ng-container>
|
|
15973
|
-
`, isInline: true, directives: [{ type:
|
|
16208
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
15974
16209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPagination, decorators: [{
|
|
15975
16210
|
type: Component,
|
|
15976
16211
|
args: [{
|
|
@@ -16512,7 +16747,7 @@ const domAdapterFactory = (platformId) => {
|
|
|
16512
16747
|
// Fixes build error
|
|
16513
16748
|
// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)
|
|
16514
16749
|
class DatagridMainRenderer {
|
|
16515
|
-
constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService) {
|
|
16750
|
+
constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone) {
|
|
16516
16751
|
this.organizer = organizer;
|
|
16517
16752
|
this.items = items;
|
|
16518
16753
|
this.page = page;
|
|
@@ -16522,6 +16757,7 @@ class DatagridMainRenderer {
|
|
|
16522
16757
|
this.detailService = detailService;
|
|
16523
16758
|
this.tableSizeService = tableSizeService;
|
|
16524
16759
|
this.columnsService = columnsService;
|
|
16760
|
+
this.ngZone = ngZone;
|
|
16525
16761
|
this._heightSet = false;
|
|
16526
16762
|
this.subscriptions = [];
|
|
16527
16763
|
/**
|
|
@@ -16561,8 +16797,10 @@ class DatagridMainRenderer {
|
|
|
16561
16797
|
this.stabilizeColumns();
|
|
16562
16798
|
}
|
|
16563
16799
|
if (this.shouldComputeHeight()) {
|
|
16564
|
-
|
|
16565
|
-
|
|
16800
|
+
this.ngZone.runOutsideAngular(() => {
|
|
16801
|
+
setTimeout(() => {
|
|
16802
|
+
this.computeDatagridHeight();
|
|
16803
|
+
});
|
|
16566
16804
|
});
|
|
16567
16805
|
}
|
|
16568
16806
|
}
|
|
@@ -16660,7 +16898,7 @@ class DatagridMainRenderer {
|
|
|
16660
16898
|
}
|
|
16661
16899
|
}
|
|
16662
16900
|
}
|
|
16663
|
-
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 });
|
|
16901
|
+
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 });
|
|
16664
16902
|
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 });
|
|
16665
16903
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DatagridMainRenderer, decorators: [{
|
|
16666
16904
|
type: Directive,
|
|
@@ -16668,7 +16906,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
16668
16906
|
selector: 'clr-datagrid',
|
|
16669
16907
|
providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],
|
|
16670
16908
|
}]
|
|
16671
|
-
}], 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: [{
|
|
16909
|
+
}], 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: [{
|
|
16672
16910
|
type: ContentChildren,
|
|
16673
16911
|
args: [DatagridHeaderRenderer]
|
|
16674
16912
|
}], rows: [{
|
|
@@ -17042,7 +17280,7 @@ ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
17042
17280
|
<ng-content select="clr-stack-block"></ng-content>
|
|
17043
17281
|
</div>
|
|
17044
17282
|
</clr-expandable-animation>
|
|
17045
|
-
`, isInline: true, styles: [":host{display:block}\n"], components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }], directives: [{ type:
|
|
17283
|
+
`, 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" }] });
|
|
17046
17284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackBlock, decorators: [{
|
|
17047
17285
|
type: Component,
|
|
17048
17286
|
args: [{
|
|
@@ -17230,7 +17468,7 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
17230
17468
|
<!-- End of undocumented experimental feature. -->
|
|
17231
17469
|
</span>
|
|
17232
17470
|
</h4>
|
|
17233
|
-
`, isInline: true, styles: [":host{display:block}\n"], directives: [{ type:
|
|
17471
|
+
`, isInline: true, styles: [":host{display:block}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
17234
17472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackHeader, decorators: [{
|
|
17235
17473
|
type: Component,
|
|
17236
17474
|
args: [{
|
|
@@ -17276,14 +17514,22 @@ class StackControl {
|
|
|
17276
17514
|
this.modelChange = new EventEmitter(false);
|
|
17277
17515
|
// Make the ClrStackView editable, since it contains a StackControl
|
|
17278
17516
|
this.stackView.editable = true;
|
|
17279
|
-
this.stackView.editingChange.subscribe((editing) => {
|
|
17517
|
+
this.subscription = this.stackView.editingChange.subscribe((editing) => {
|
|
17280
17518
|
// Edit mode was closed
|
|
17281
17519
|
if (!editing) {
|
|
17282
17520
|
this.modelChange.emit(this.model);
|
|
17283
17521
|
}
|
|
17284
17522
|
});
|
|
17285
17523
|
}
|
|
17524
|
+
ngOnDestroy() {
|
|
17525
|
+
this.subscription.unsubscribe();
|
|
17526
|
+
}
|
|
17286
17527
|
}
|
|
17528
|
+
StackControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackControl, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17529
|
+
StackControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: StackControl, ngImport: i0 });
|
|
17530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackControl, decorators: [{
|
|
17531
|
+
type: Directive
|
|
17532
|
+
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
17287
17533
|
|
|
17288
17534
|
/*
|
|
17289
17535
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -17301,7 +17547,7 @@ ClrStackInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
|
17301
17547
|
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: `
|
|
17302
17548
|
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
17303
17549
|
<input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
|
|
17304
|
-
`, isInline: true, directives: [{ type:
|
|
17550
|
+
`, 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"] }] });
|
|
17305
17551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackInput, decorators: [{
|
|
17306
17552
|
type: Component,
|
|
17307
17553
|
args: [{
|
|
@@ -17334,7 +17580,7 @@ ClrStackSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
17334
17580
|
<ng-content></ng-content>
|
|
17335
17581
|
</select>
|
|
17336
17582
|
</div>
|
|
17337
|
-
`, isInline: true, directives: [{ type:
|
|
17583
|
+
`, 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"] }] });
|
|
17338
17584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStackSelect, decorators: [{
|
|
17339
17585
|
type: Component,
|
|
17340
17586
|
args: [{
|
|
@@ -17723,6 +17969,71 @@ class TreeFocusManagerService {
|
|
|
17723
17969
|
return this.findNextFocusable(model);
|
|
17724
17970
|
}
|
|
17725
17971
|
}
|
|
17972
|
+
findDescendentNodeStartsWith(searchString, model) {
|
|
17973
|
+
if (model.expanded && model.children.length > 0) {
|
|
17974
|
+
for (const childModel of model.children) {
|
|
17975
|
+
const found = this.findNodeStartsWith(searchString, childModel);
|
|
17976
|
+
if (found) {
|
|
17977
|
+
return found;
|
|
17978
|
+
}
|
|
17979
|
+
}
|
|
17980
|
+
}
|
|
17981
|
+
return null;
|
|
17982
|
+
}
|
|
17983
|
+
findSiblingNodeStartsWith(searchString, model) {
|
|
17984
|
+
const siblings = this.findSiblings(model);
|
|
17985
|
+
const selfIndex = siblings.indexOf(model);
|
|
17986
|
+
// Look from sibling nodes
|
|
17987
|
+
for (let i = selfIndex + 1; i < siblings.length; i++) {
|
|
17988
|
+
const siblingModel = siblings[i];
|
|
17989
|
+
const found = this.findNodeStartsWith(searchString, siblingModel);
|
|
17990
|
+
if (found) {
|
|
17991
|
+
return found;
|
|
17992
|
+
}
|
|
17993
|
+
}
|
|
17994
|
+
return null;
|
|
17995
|
+
}
|
|
17996
|
+
findRootNodeStartsWith(searchString, model) {
|
|
17997
|
+
for (const rootModel of this.rootNodeModels) {
|
|
17998
|
+
// Don't look from a parent yet
|
|
17999
|
+
if (model.parent && model.parent === rootModel) {
|
|
18000
|
+
continue;
|
|
18001
|
+
}
|
|
18002
|
+
const found = this.findNodeStartsWith(searchString, rootModel);
|
|
18003
|
+
if (found) {
|
|
18004
|
+
return found;
|
|
18005
|
+
}
|
|
18006
|
+
}
|
|
18007
|
+
return null;
|
|
18008
|
+
}
|
|
18009
|
+
findNodeStartsWith(searchString, model) {
|
|
18010
|
+
if (!model) {
|
|
18011
|
+
return null;
|
|
18012
|
+
}
|
|
18013
|
+
if (model.textContent.startsWith(searchString)) {
|
|
18014
|
+
return model;
|
|
18015
|
+
}
|
|
18016
|
+
return this.findDescendentNodeStartsWith(searchString, model);
|
|
18017
|
+
}
|
|
18018
|
+
findClosestNodeStartsWith(searchString, model) {
|
|
18019
|
+
if (!model) {
|
|
18020
|
+
return null;
|
|
18021
|
+
}
|
|
18022
|
+
const foundFromDescendents = this.findDescendentNodeStartsWith(searchString, model);
|
|
18023
|
+
if (foundFromDescendents) {
|
|
18024
|
+
return foundFromDescendents;
|
|
18025
|
+
}
|
|
18026
|
+
const foundFromSiblings = this.findSiblingNodeStartsWith(searchString, model);
|
|
18027
|
+
if (foundFromSiblings) {
|
|
18028
|
+
return foundFromSiblings;
|
|
18029
|
+
}
|
|
18030
|
+
const foundFromRootNodes = this.findRootNodeStartsWith(searchString, model);
|
|
18031
|
+
if (foundFromRootNodes) {
|
|
18032
|
+
return foundFromRootNodes;
|
|
18033
|
+
}
|
|
18034
|
+
// Now look from its own direct parent
|
|
18035
|
+
return this.findNodeStartsWith(searchString, model.parent);
|
|
18036
|
+
}
|
|
17726
18037
|
focusNode(model) {
|
|
17727
18038
|
if (model) {
|
|
17728
18039
|
this._focusRequest.next(model.nodeId);
|
|
@@ -17752,6 +18063,9 @@ class TreeFocusManagerService {
|
|
|
17752
18063
|
focusNodeBelow(model) {
|
|
17753
18064
|
this.focusNode(this.findNodeBelow(model));
|
|
17754
18065
|
}
|
|
18066
|
+
focusNodeStartsWith(searchString, model) {
|
|
18067
|
+
this.focusNode(this.findClosestNodeStartsWith(searchString, model));
|
|
18068
|
+
}
|
|
17755
18069
|
}
|
|
17756
18070
|
TreeFocusManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17757
18071
|
TreeFocusManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService });
|
|
@@ -17809,7 +18123,7 @@ RecursiveChildren.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
17809
18123
|
<ng-container *ngTemplateOutlet="featuresService.recursion.template; context: getContext(child)"></ng-container>
|
|
17810
18124
|
</ng-container>
|
|
17811
18125
|
</ng-container>
|
|
17812
|
-
`, isInline: true, directives: [{ type:
|
|
18126
|
+
`, 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"] }] });
|
|
17813
18127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RecursiveChildren, decorators: [{
|
|
17814
18128
|
type: Component,
|
|
17815
18129
|
args: [{
|
|
@@ -17841,10 +18155,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
17841
18155
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17842
18156
|
*/
|
|
17843
18157
|
const LVIEW_CONTEXT_INDEX = 8;
|
|
18158
|
+
// If the user types multiple keys without allowing 200ms to pass between them,
|
|
18159
|
+
// then those keys are sent together in one request.
|
|
18160
|
+
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
17844
18161
|
class ClrTreeNode {
|
|
17845
|
-
constructor(nodeId, platformId, parent, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
18162
|
+
constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
17846
18163
|
this.nodeId = nodeId;
|
|
17847
18164
|
this.platformId = platformId;
|
|
18165
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
17848
18166
|
this.featuresService = featuresService;
|
|
17849
18167
|
this.expandService = expandService;
|
|
17850
18168
|
this.commonStrings = commonStrings;
|
|
@@ -17852,6 +18170,8 @@ class ClrTreeNode {
|
|
|
17852
18170
|
this.STATES = ClrSelectedState;
|
|
17853
18171
|
this.skipEmitChange = false;
|
|
17854
18172
|
this.isModelLoading = false;
|
|
18173
|
+
this.typeAheadKeyEvent = new Subject();
|
|
18174
|
+
this.typeAheadKeyBuffer = '';
|
|
17855
18175
|
this.selectedChange = new EventEmitter(false);
|
|
17856
18176
|
this.expandedChange = new EventEmitter();
|
|
17857
18177
|
this.subscriptions = [];
|
|
@@ -17934,6 +18254,16 @@ class ClrTreeNode {
|
|
|
17934
18254
|
}));
|
|
17935
18255
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
17936
18256
|
}
|
|
18257
|
+
ngAfterContentInit() {
|
|
18258
|
+
if (this.forTypeAheadProvider) {
|
|
18259
|
+
this._model.textContent = this.forTypeAheadProvider.textContent;
|
|
18260
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18261
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18262
|
+
// reset once bufferedKeys are used
|
|
18263
|
+
this.typeAheadKeyBuffer = '';
|
|
18264
|
+
}));
|
|
18265
|
+
}
|
|
18266
|
+
}
|
|
17937
18267
|
ngOnDestroy() {
|
|
17938
18268
|
this._model.destroy();
|
|
17939
18269
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -17951,9 +18281,11 @@ class ClrTreeNode {
|
|
|
17951
18281
|
}
|
|
17952
18282
|
}
|
|
17953
18283
|
focusTreeNode() {
|
|
17954
|
-
|
|
18284
|
+
const containerEl = this.contentContainer.nativeElement;
|
|
18285
|
+
if (isPlatformBrowser(this.platformId) && document.activeElement !== containerEl) {
|
|
17955
18286
|
this.setTabIndex(0);
|
|
17956
|
-
|
|
18287
|
+
containerEl.focus();
|
|
18288
|
+
containerEl.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
17957
18289
|
}
|
|
17958
18290
|
}
|
|
17959
18291
|
broadcastFocusOnContainer() {
|
|
@@ -17980,30 +18312,39 @@ class ClrTreeNode {
|
|
|
17980
18312
|
this.collapseOrFocusParent();
|
|
17981
18313
|
break;
|
|
17982
18314
|
case KeyCodes.Home:
|
|
18315
|
+
event.preventDefault();
|
|
17983
18316
|
this.focusManager.focusFirstVisibleNode();
|
|
17984
18317
|
break;
|
|
17985
18318
|
case KeyCodes.End:
|
|
18319
|
+
event.preventDefault();
|
|
17986
18320
|
this.focusManager.focusLastVisibleNode();
|
|
17987
18321
|
break;
|
|
17988
18322
|
case KeyCodes.Enter:
|
|
17989
|
-
this.
|
|
18323
|
+
this.toggleExpandOrTriggerDefault();
|
|
17990
18324
|
break;
|
|
17991
18325
|
case KeyCodes.Space:
|
|
17992
18326
|
case KeyCodes.Spacebar:
|
|
17993
18327
|
// to prevent scrolling on space key in this specific case
|
|
17994
18328
|
event.preventDefault();
|
|
17995
|
-
this.
|
|
18329
|
+
this.toggleExpandOrTriggerDefault();
|
|
17996
18330
|
break;
|
|
17997
18331
|
default:
|
|
18332
|
+
if (this._model.textContent && isKeyEitherLetterOrNumber(event)) {
|
|
18333
|
+
this.typeAheadKeyBuffer += event.key;
|
|
18334
|
+
this.typeAheadKeyEvent.next(this.typeAheadKeyBuffer);
|
|
18335
|
+
return;
|
|
18336
|
+
}
|
|
17998
18337
|
break;
|
|
17999
18338
|
}
|
|
18339
|
+
// if non-letter keys are pressed, do reset.
|
|
18340
|
+
this.typeAheadKeyBuffer = '';
|
|
18000
18341
|
}
|
|
18001
18342
|
get isParent() {
|
|
18002
18343
|
return this._model.children && this._model.children.length > 0;
|
|
18003
18344
|
}
|
|
18004
|
-
|
|
18345
|
+
toggleExpandOrTriggerDefault() {
|
|
18005
18346
|
if (this.isExpandable() && !this.isSelectable()) {
|
|
18006
|
-
this.
|
|
18347
|
+
this.expandService.expanded = !this.expanded;
|
|
18007
18348
|
}
|
|
18008
18349
|
else {
|
|
18009
18350
|
this.triggerDefaultAction();
|
|
@@ -18043,13 +18384,13 @@ class ClrTreeNode {
|
|
|
18043
18384
|
}
|
|
18044
18385
|
}
|
|
18045
18386
|
}
|
|
18046
|
-
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 });
|
|
18387
|
+
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 });
|
|
18047
18388
|
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: [
|
|
18048
18389
|
UNIQUE_ID_PROVIDER,
|
|
18049
18390
|
TREE_FEATURES_PROVIDER,
|
|
18050
18391
|
IfExpandService,
|
|
18051
18392
|
{ provide: LoadingListener, useExisting: IfExpandService },
|
|
18052
|
-
], 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:
|
|
18393
|
+
], 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: [
|
|
18053
18394
|
trigger('toggleChildrenAnim', [
|
|
18054
18395
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
18055
18396
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -18084,6 +18425,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18084
18425
|
type: Optional
|
|
18085
18426
|
}, {
|
|
18086
18427
|
type: SkipSelf
|
|
18428
|
+
}] }, { type: ForTypeAheadProvider, decorators: [{
|
|
18429
|
+
type: Optional
|
|
18430
|
+
}, {
|
|
18431
|
+
type: Self
|
|
18087
18432
|
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }]; }, propDecorators: { selected: [{
|
|
18088
18433
|
type: Input,
|
|
18089
18434
|
args: ['clrSelected']
|
|
@@ -18159,7 +18504,7 @@ ClrTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0
|
|
|
18159
18504
|
*ngIf="featuresService.recursion"
|
|
18160
18505
|
[children]="featuresService.recursion.root"
|
|
18161
18506
|
></clr-recursive-children>
|
|
18162
|
-
`, isInline: true, components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type:
|
|
18507
|
+
`, isInline: true, components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
18163
18508
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTree, decorators: [{
|
|
18164
18509
|
type: Component,
|
|
18165
18510
|
args: [{
|
|
@@ -18436,7 +18781,7 @@ class DropdownFocusHandler {
|
|
|
18436
18781
|
* If the dropdown was opened by clicking on the trigger, we automatically move to the first item
|
|
18437
18782
|
*/
|
|
18438
18783
|
moveToFirstItemWhenOpen() {
|
|
18439
|
-
this.toggleService.openChange.subscribe(open => {
|
|
18784
|
+
const subscription = this.toggleService.openChange.subscribe(open => {
|
|
18440
18785
|
if (open && this.toggleService.originalEvent) {
|
|
18441
18786
|
// Even if we properly waited for ngAfterViewInit, the container still wouldn't be attached to the DOM.
|
|
18442
18787
|
// So setTimeout is the only way to wait for the container to be ready to move focus to first item.
|
|
@@ -18451,12 +18796,13 @@ class DropdownFocusHandler {
|
|
|
18451
18796
|
});
|
|
18452
18797
|
}
|
|
18453
18798
|
});
|
|
18799
|
+
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
18454
18800
|
}
|
|
18455
18801
|
/**
|
|
18456
18802
|
* Focus on the menu when it opens, and focus back on the root trigger when the whole dropdown becomes closed
|
|
18457
18803
|
*/
|
|
18458
18804
|
handleRootFocus() {
|
|
18459
|
-
this.toggleService.openChange.subscribe(open => {
|
|
18805
|
+
const subscription = this.toggleService.openChange.subscribe(open => {
|
|
18460
18806
|
if (!open) {
|
|
18461
18807
|
// We reset the state of the focus service both on initialization and when closing.
|
|
18462
18808
|
this.focusService.reset(this);
|
|
@@ -18467,6 +18813,7 @@ class DropdownFocusHandler {
|
|
|
18467
18813
|
}
|
|
18468
18814
|
this.focusBackOnTrigger = open;
|
|
18469
18815
|
});
|
|
18816
|
+
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
18470
18817
|
}
|
|
18471
18818
|
get trigger() {
|
|
18472
18819
|
return this._trigger;
|
|
@@ -19084,6 +19431,7 @@ class AbstractPopover {
|
|
|
19084
19431
|
* a separate directive on the host. So let's do dirty but performant for now.
|
|
19085
19432
|
*/
|
|
19086
19433
|
this.closeOnOutsideClick = false;
|
|
19434
|
+
this.documentESCListener = null;
|
|
19087
19435
|
this.closeOnOutsideClickCallback = event => {
|
|
19088
19436
|
// The anchor element containing the click event origin means, the click wasn't triggered outside.
|
|
19089
19437
|
if (this.anchorElem.contains(event.target)) {
|
|
@@ -19094,6 +19442,8 @@ class AbstractPopover {
|
|
|
19094
19442
|
this.el = injector.get(ElementRef);
|
|
19095
19443
|
this.toggleService = injector.get(ClrPopoverToggleService);
|
|
19096
19444
|
this.renderer = injector.get(Renderer2);
|
|
19445
|
+
this.ngZone = injector.get(NgZone);
|
|
19446
|
+
this.ref = injector.get(ChangeDetectorRef);
|
|
19097
19447
|
// Default anchor is the parent host
|
|
19098
19448
|
this.anchorElem = parentHost.nativeElement;
|
|
19099
19449
|
this.popoverInstance = new Popover(this.el.nativeElement);
|
|
@@ -19143,20 +19493,26 @@ class AbstractPopover {
|
|
|
19143
19493
|
return this.toggleService.open ? false : true;
|
|
19144
19494
|
}
|
|
19145
19495
|
attachESCListener() {
|
|
19146
|
-
if (
|
|
19496
|
+
if (this.popoverOptions.ignoreGlobalESCListener) {
|
|
19497
|
+
return;
|
|
19498
|
+
}
|
|
19499
|
+
this.ngZone.runOutsideAngular(() => {
|
|
19147
19500
|
this.documentESCListener = this.renderer.listen('document', 'keydown', event => {
|
|
19148
19501
|
if (event && event.key) {
|
|
19149
19502
|
if (event.key === 'Escape' || event.key === 'Esc') {
|
|
19150
|
-
this.
|
|
19503
|
+
this.ngZone.run(() => {
|
|
19504
|
+
this.toggleService.open = false;
|
|
19505
|
+
this.ref.markForCheck();
|
|
19506
|
+
});
|
|
19151
19507
|
}
|
|
19152
19508
|
}
|
|
19153
19509
|
});
|
|
19154
|
-
}
|
|
19510
|
+
});
|
|
19155
19511
|
}
|
|
19156
19512
|
detachESCListener() {
|
|
19157
19513
|
if (this.documentESCListener) {
|
|
19158
19514
|
this.documentESCListener();
|
|
19159
|
-
|
|
19515
|
+
this.documentESCListener = null;
|
|
19160
19516
|
}
|
|
19161
19517
|
}
|
|
19162
19518
|
attachOutsideClickListener() {
|
|
@@ -19607,7 +19963,7 @@ class ClrAlert {
|
|
|
19607
19963
|
}
|
|
19608
19964
|
}
|
|
19609
19965
|
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 });
|
|
19610
|
-
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:
|
|
19966
|
+
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" }] });
|
|
19611
19967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlert, decorators: [{
|
|
19612
19968
|
type: Component,
|
|
19613
19969
|
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" }]
|
|
@@ -19812,7 +20168,7 @@ class ClrAlerts {
|
|
|
19812
20168
|
}
|
|
19813
20169
|
}
|
|
19814
20170
|
ClrAlerts.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlerts, deps: [{ token: MultiAlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
19815
|
-
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:
|
|
20171
|
+
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"] }] });
|
|
19816
20172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAlerts, decorators: [{
|
|
19817
20173
|
type: Component,
|
|
19818
20174
|
args: [{ selector: 'clr-alerts', providers: [MultiAlertService], host: {
|
|
@@ -20124,6 +20480,11 @@ class ClrHeader {
|
|
|
20124
20480
|
this.initializeNavTriggers(navLevelList);
|
|
20125
20481
|
},
|
|
20126
20482
|
});
|
|
20483
|
+
this._subscription.add(this.responsiveNavService.navControl
|
|
20484
|
+
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE || controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
20485
|
+
.subscribe(() => {
|
|
20486
|
+
this.openNavLevel = null;
|
|
20487
|
+
}));
|
|
20127
20488
|
}
|
|
20128
20489
|
get responsiveNavCommonString() {
|
|
20129
20490
|
const myCommonStrings = this.commonStrings.keys;
|
|
@@ -20168,10 +20529,21 @@ class ClrHeader {
|
|
|
20168
20529
|
closeOpenNav() {
|
|
20169
20530
|
this.responsiveNavService.closeAllNavs();
|
|
20170
20531
|
}
|
|
20171
|
-
|
|
20532
|
+
/**
|
|
20533
|
+
* @deprecated Will be removed in with @clr/angular v15.0.0
|
|
20534
|
+
*
|
|
20535
|
+
* Use `openNav(navLevel)` instead to open the navigation and ResponsiveNavService to close it.
|
|
20536
|
+
*/
|
|
20172
20537
|
toggleNav(navLevel) {
|
|
20173
|
-
|
|
20174
|
-
|
|
20538
|
+
if (this.openNavLevel === navLevel) {
|
|
20539
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, navLevel);
|
|
20540
|
+
return;
|
|
20541
|
+
}
|
|
20542
|
+
this.openNav(navLevel);
|
|
20543
|
+
}
|
|
20544
|
+
openNav(navLevel) {
|
|
20545
|
+
this.openNavLevel = navLevel;
|
|
20546
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, navLevel);
|
|
20175
20547
|
}
|
|
20176
20548
|
ngOnDestroy() {
|
|
20177
20549
|
this._subscription.unsubscribe();
|
|
@@ -20185,7 +20557,7 @@ ClrHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
20185
20557
|
class="header-hamburger-trigger"
|
|
20186
20558
|
[attr.aria-label]="responsiveNavCommonString"
|
|
20187
20559
|
[attr.aria-expanded]="openNavLevel === 1 ? 'true' : 'false'"
|
|
20188
|
-
(click)="
|
|
20560
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_1)"
|
|
20189
20561
|
>
|
|
20190
20562
|
<span></span>
|
|
20191
20563
|
</button>
|
|
@@ -20196,12 +20568,12 @@ ClrHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
20196
20568
|
class="header-overflow-trigger"
|
|
20197
20569
|
[attr.aria-label]="responsiveOverflowCommonString"
|
|
20198
20570
|
[attr.aria-expanded]="openNavLevel === 2 ? 'true' : 'false'"
|
|
20199
|
-
(click)="
|
|
20571
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_2)"
|
|
20200
20572
|
>
|
|
20201
20573
|
<span></span>
|
|
20202
20574
|
</button>
|
|
20203
20575
|
<div class="header-backdrop" (click)="closeOpenNav()"></div>
|
|
20204
|
-
`, isInline: true, directives: [{ type:
|
|
20576
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
20205
20577
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrHeader, decorators: [{
|
|
20206
20578
|
type: Component,
|
|
20207
20579
|
args: [{
|
|
@@ -20213,7 +20585,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20213
20585
|
class="header-hamburger-trigger"
|
|
20214
20586
|
[attr.aria-label]="responsiveNavCommonString"
|
|
20215
20587
|
[attr.aria-expanded]="openNavLevel === 1 ? 'true' : 'false'"
|
|
20216
|
-
(click)="
|
|
20588
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_1)"
|
|
20217
20589
|
>
|
|
20218
20590
|
<span></span>
|
|
20219
20591
|
</button>
|
|
@@ -20224,7 +20596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20224
20596
|
class="header-overflow-trigger"
|
|
20225
20597
|
[attr.aria-label]="responsiveOverflowCommonString"
|
|
20226
20598
|
[attr.aria-expanded]="openNavLevel === 2 ? 'true' : 'false'"
|
|
20227
|
-
(click)="
|
|
20599
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_2)"
|
|
20228
20600
|
>
|
|
20229
20601
|
<span></span>
|
|
20230
20602
|
</button>
|
|
@@ -20239,12 +20611,186 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20239
20611
|
* This software is released under MIT license.
|
|
20240
20612
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20241
20613
|
*/
|
|
20242
|
-
|
|
20243
|
-
|
|
20614
|
+
function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
|
|
20615
|
+
const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
|
|
20616
|
+
const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
|
|
20617
|
+
if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
|
|
20618
|
+
elementToRefocus = elementToRefocus || focusTrapElement;
|
|
20619
|
+
elementToRefocus.focus();
|
|
20620
|
+
}
|
|
20621
|
+
else {
|
|
20622
|
+
focusedElement.focus();
|
|
20623
|
+
}
|
|
20624
|
+
}
|
|
20625
|
+
function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
|
|
20626
|
+
if (focusedElement === focusTrapElement.topReboundElement ||
|
|
20627
|
+
focusedElement === focusTrapElement.bottomReboundElement) {
|
|
20628
|
+
return true;
|
|
20629
|
+
}
|
|
20630
|
+
const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
|
|
20631
|
+
if (elementIsInFocusTrapLightDom) {
|
|
20632
|
+
return false;
|
|
20633
|
+
}
|
|
20634
|
+
if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
|
|
20635
|
+
return false;
|
|
20636
|
+
}
|
|
20637
|
+
return true;
|
|
20638
|
+
}
|
|
20639
|
+
function createFocusTrapReboundElement(document) {
|
|
20640
|
+
const offScreenSpan = document.createElement('span');
|
|
20641
|
+
offScreenSpan.setAttribute('tabindex', '0');
|
|
20642
|
+
offScreenSpan.classList.add('offscreen-focus-rebounder');
|
|
20643
|
+
return offScreenSpan;
|
|
20644
|
+
}
|
|
20645
|
+
function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
|
|
20646
|
+
if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
|
|
20647
|
+
focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
|
|
20648
|
+
focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
|
|
20649
|
+
const parent = focusTrapElement.parentElement;
|
|
20650
|
+
const sibling = focusTrapElement.nextSibling;
|
|
20651
|
+
if (parent) {
|
|
20652
|
+
parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
|
|
20653
|
+
if (sibling) {
|
|
20654
|
+
parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
|
|
20655
|
+
}
|
|
20656
|
+
else {
|
|
20657
|
+
parent.appendChild(focusTrapElement.bottomReboundElement);
|
|
20658
|
+
}
|
|
20659
|
+
}
|
|
20660
|
+
}
|
|
20661
|
+
}
|
|
20662
|
+
function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
|
|
20663
|
+
if (focusTrapElement) {
|
|
20664
|
+
const parent = focusTrapElement.parentElement;
|
|
20665
|
+
if (parent) {
|
|
20666
|
+
const topRebound = focusTrapElement.topReboundElement;
|
|
20667
|
+
const bottomRebound = focusTrapElement.bottomReboundElement;
|
|
20668
|
+
if (topRebound) {
|
|
20669
|
+
parent.removeChild(topRebound);
|
|
20670
|
+
}
|
|
20671
|
+
if (bottomRebound) {
|
|
20672
|
+
parent.removeChild(bottomRebound);
|
|
20673
|
+
}
|
|
20674
|
+
}
|
|
20675
|
+
// These are here to to make sure that we completely delete all traces of the removed DOM objects.
|
|
20676
|
+
delete focusTrapElement.topReboundElement;
|
|
20677
|
+
delete focusTrapElement.bottomReboundElement;
|
|
20678
|
+
}
|
|
20679
|
+
}
|
|
20680
|
+
// this helper exists to enable the focus trap class to handle vanilla html elements
|
|
20681
|
+
// it's primary concern is to keep TS happy.
|
|
20682
|
+
function castHtmlElementToFocusTrapElement(el) {
|
|
20683
|
+
return el;
|
|
20684
|
+
}
|
|
20685
|
+
class FocusTrap {
|
|
20686
|
+
constructor(renderer, injector, platformId, hostElement) {
|
|
20687
|
+
this.renderer = renderer;
|
|
20688
|
+
this.active = false;
|
|
20689
|
+
if (isPlatformBrowser(platformId)) {
|
|
20690
|
+
this._document = injector.get(DOCUMENT);
|
|
20691
|
+
}
|
|
20692
|
+
hostElement = castHtmlElementToFocusTrapElement(hostElement);
|
|
20693
|
+
if (!hostElement.focusTrapId) {
|
|
20694
|
+
hostElement.focusTrapId = createId();
|
|
20695
|
+
}
|
|
20696
|
+
this.focusTrapElement = hostElement;
|
|
20697
|
+
}
|
|
20698
|
+
enableFocusTrap() {
|
|
20699
|
+
const fte = this.focusTrapElement;
|
|
20700
|
+
const firstFocusElement = fte.querySelector('[cds-first-focus]');
|
|
20701
|
+
const activeEl = this._document.activeElement;
|
|
20702
|
+
if (FocusTrapTrackerService.getCurrent() === fte) {
|
|
20703
|
+
throw new Error('Focus trap is already enabled for this instance.');
|
|
20704
|
+
}
|
|
20705
|
+
this.firstFocusElement = firstFocusElement || this.focusTrapElement;
|
|
20706
|
+
addReboundElementsToFocusTrapElement(this._document, fte);
|
|
20707
|
+
if (!isFocusable(fte)) {
|
|
20708
|
+
fte.setAttribute('tabindex', '-1');
|
|
20709
|
+
}
|
|
20710
|
+
if (activeEl && isHTMLElement(activeEl)) {
|
|
20711
|
+
this.previousFocus = activeEl;
|
|
20712
|
+
}
|
|
20713
|
+
FocusTrapTrackerService.setCurrent(fte);
|
|
20714
|
+
// setTimeout here is required for Safari which may try to set focus on
|
|
20715
|
+
// element before it is visible...
|
|
20716
|
+
const focusTimer = setTimeout(() => {
|
|
20717
|
+
this.firstFocusElement.focus();
|
|
20718
|
+
clearTimeout(focusTimer);
|
|
20719
|
+
}, 10);
|
|
20720
|
+
this.onFocusInEvent = this.onFocusIn.bind(this);
|
|
20721
|
+
this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
|
|
20722
|
+
this.active = true;
|
|
20723
|
+
}
|
|
20724
|
+
removeFocusTrap() {
|
|
20725
|
+
if (this.unlisten) {
|
|
20726
|
+
this.unlisten();
|
|
20727
|
+
}
|
|
20728
|
+
removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
|
|
20729
|
+
this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
|
|
20730
|
+
FocusTrapTrackerService.activatePreviousCurrent();
|
|
20731
|
+
this.active = false;
|
|
20732
|
+
if (this.previousFocus) {
|
|
20733
|
+
this.previousFocus.focus();
|
|
20734
|
+
}
|
|
20735
|
+
}
|
|
20736
|
+
onFocusIn(event) {
|
|
20737
|
+
refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
|
|
20738
|
+
}
|
|
20739
|
+
}
|
|
20740
|
+
FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
20741
|
+
FocusTrap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap });
|
|
20742
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FocusTrap, decorators: [{
|
|
20743
|
+
type: Injectable
|
|
20744
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined }, { type: undefined }]; } });
|
|
20745
|
+
|
|
20746
|
+
/*
|
|
20747
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20748
|
+
* This software is released under MIT license.
|
|
20749
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20750
|
+
*/
|
|
20751
|
+
const createCdsCloseButton = (document, ariaLabel) => {
|
|
20752
|
+
const cdsCloseButton = document.createElement('cds-internal-close-button');
|
|
20753
|
+
cdsCloseButton.setAttribute('icon-size', '32');
|
|
20754
|
+
cdsCloseButton.setAttribute('aria-label', ariaLabel);
|
|
20755
|
+
cdsCloseButton.setAttribute('aria-hidden', 'true');
|
|
20756
|
+
cdsCloseButton.setAttribute('type', 'button');
|
|
20757
|
+
/**
|
|
20758
|
+
* The button is hidden by default based on our Desktop-first approach.
|
|
20759
|
+
*/
|
|
20760
|
+
cdsCloseButton.setAttribute('hidden', 'true');
|
|
20761
|
+
cdsCloseButton.className = 'clr-nav-close';
|
|
20762
|
+
return cdsCloseButton;
|
|
20763
|
+
};
|
|
20764
|
+
class ClrNavLevel extends FocusTrap {
|
|
20765
|
+
constructor(platformId, responsiveNavService, elementRef, renderer, injector) {
|
|
20766
|
+
super(renderer, injector, platformId, elementRef.nativeElement);
|
|
20244
20767
|
this.responsiveNavService = responsiveNavService;
|
|
20245
20768
|
this.elementRef = elementRef;
|
|
20769
|
+
this._isOpen = false;
|
|
20770
|
+
if (isPlatformBrowser(platformId)) {
|
|
20771
|
+
this._document = injector.get(DOCUMENT);
|
|
20772
|
+
}
|
|
20773
|
+
this._subscription = responsiveNavService.navControl
|
|
20774
|
+
.pipe(filter(x => x.navLevel === this.level), filter(({ controlCode }) => (controlCode === ResponsiveNavCodes.NAV_OPEN && !this.isOpen) ||
|
|
20775
|
+
(controlCode === ResponsiveNavCodes.NAV_CLOSE && this.isOpen)))
|
|
20776
|
+
.subscribe(({ controlCode }) => {
|
|
20777
|
+
if (controlCode === ResponsiveNavCodes.NAV_OPEN) {
|
|
20778
|
+
this.open();
|
|
20779
|
+
return;
|
|
20780
|
+
}
|
|
20781
|
+
this.close();
|
|
20782
|
+
});
|
|
20783
|
+
this._subscription.add(responsiveNavService.navControl
|
|
20784
|
+
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
20785
|
+
.subscribe(() => this.close()));
|
|
20246
20786
|
}
|
|
20247
20787
|
ngOnInit() {
|
|
20788
|
+
if (!this.closeButtonAriaLabel) {
|
|
20789
|
+
this.closeButtonAriaLabel =
|
|
20790
|
+
this._level === ResponsiveNavCodes.NAV_LEVEL_1
|
|
20791
|
+
? commonStringsDefault.responsiveNavToggleClose
|
|
20792
|
+
: commonStringsDefault.responsiveNavOverflowClose;
|
|
20793
|
+
}
|
|
20248
20794
|
if (this.level !== ResponsiveNavCodes.NAV_LEVEL_1 && this.level !== ResponsiveNavCodes.NAV_LEVEL_2) {
|
|
20249
20795
|
console.error('Nav Level can only be 1 or 2');
|
|
20250
20796
|
return;
|
|
@@ -20252,6 +20798,20 @@ class ClrNavLevel {
|
|
|
20252
20798
|
this.responsiveNavService.registerNav(this.level);
|
|
20253
20799
|
this.addNavClass(this.level);
|
|
20254
20800
|
}
|
|
20801
|
+
ngAfterViewInit() {
|
|
20802
|
+
const closeButton = createCdsCloseButton(this._document, this.closeButtonAriaLabel);
|
|
20803
|
+
this.renderer.listen(closeButton, 'click', this.close.bind(this));
|
|
20804
|
+
this.renderer.insertBefore(this.elementRef.nativeElement, closeButton, this.elementRef.nativeElement.firstChild); // Adding the button at the top of the nav
|
|
20805
|
+
if (this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
20806
|
+
/**
|
|
20807
|
+
* Close if the document body is smaller than the large breakpoint for example:
|
|
20808
|
+
* - Refreshing the page
|
|
20809
|
+
* - Browser window size is changed when opening the applicaiton
|
|
20810
|
+
* - Browser zoom is turned on and zoomed to a size that makes the document smaller than the large breakpoint
|
|
20811
|
+
*/
|
|
20812
|
+
this.close();
|
|
20813
|
+
}
|
|
20814
|
+
}
|
|
20255
20815
|
addNavClass(level) {
|
|
20256
20816
|
const navHostClassList = this.elementRef.nativeElement.classList;
|
|
20257
20817
|
if (level === ResponsiveNavCodes.NAV_LEVEL_1) {
|
|
@@ -20268,10 +20828,29 @@ class ClrNavLevel {
|
|
|
20268
20828
|
get responsiveNavCodes() {
|
|
20269
20829
|
return ResponsiveNavCodes;
|
|
20270
20830
|
}
|
|
20831
|
+
get isOpen() {
|
|
20832
|
+
return this._isOpen;
|
|
20833
|
+
}
|
|
20834
|
+
onResize(event) {
|
|
20835
|
+
const target = event.target;
|
|
20836
|
+
if (target.innerWidth < LARGE_BREAKPOINT && this.isOpen) {
|
|
20837
|
+
this.close();
|
|
20838
|
+
return;
|
|
20839
|
+
}
|
|
20840
|
+
this.showNavigation();
|
|
20841
|
+
}
|
|
20271
20842
|
open() {
|
|
20843
|
+
this._isOpen = true;
|
|
20844
|
+
this.showNavigation();
|
|
20845
|
+
this.enableFocusTrap();
|
|
20846
|
+
this.showCloseButton();
|
|
20272
20847
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
|
|
20273
20848
|
}
|
|
20274
20849
|
close() {
|
|
20850
|
+
this._isOpen = false;
|
|
20851
|
+
this.hideNavigation();
|
|
20852
|
+
this.removeFocusTrap();
|
|
20853
|
+
this.hideCloseButton();
|
|
20275
20854
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
|
|
20276
20855
|
}
|
|
20277
20856
|
// TODO: Figure out whats the best way to do this. Possible methods
|
|
@@ -20287,30 +20866,81 @@ class ClrNavLevel {
|
|
|
20287
20866
|
if (current === navHost) {
|
|
20288
20867
|
return;
|
|
20289
20868
|
}
|
|
20290
|
-
else if (current.classList.contains('nav-link')) {
|
|
20869
|
+
else if (current.classList.contains('nav-link') && this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
20291
20870
|
this.close();
|
|
20292
20871
|
return;
|
|
20293
20872
|
}
|
|
20294
20873
|
current = current.parentNode;
|
|
20295
20874
|
}
|
|
20296
20875
|
}
|
|
20876
|
+
hideNavigation() {
|
|
20877
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');
|
|
20878
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', 'true');
|
|
20879
|
+
}
|
|
20880
|
+
showNavigation() {
|
|
20881
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'false');
|
|
20882
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');
|
|
20883
|
+
}
|
|
20884
|
+
hideCloseButton() {
|
|
20885
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');
|
|
20886
|
+
this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden', 'true');
|
|
20887
|
+
}
|
|
20888
|
+
showCloseButton() {
|
|
20889
|
+
this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'aria-hidden', 'false');
|
|
20890
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden');
|
|
20891
|
+
}
|
|
20297
20892
|
ngOnDestroy() {
|
|
20298
20893
|
this.responsiveNavService.unregisterNav(this.level);
|
|
20894
|
+
this._subscription.unsubscribe();
|
|
20299
20895
|
}
|
|
20300
20896
|
}
|
|
20301
|
-
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 });
|
|
20302
|
-
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 });
|
|
20897
|
+
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 });
|
|
20898
|
+
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 });
|
|
20303
20899
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavLevel, decorators: [{
|
|
20304
20900
|
type: Directive,
|
|
20305
20901
|
args: [{ selector: '[clr-nav-level]' }]
|
|
20306
|
-
}], ctorParameters: function () { return [{ type:
|
|
20902
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
20903
|
+
type: Inject,
|
|
20904
|
+
args: [PLATFORM_ID]
|
|
20905
|
+
}] }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { _level: [{
|
|
20307
20906
|
type: Input,
|
|
20308
20907
|
args: ['clr-nav-level']
|
|
20908
|
+
}], closeButtonAriaLabel: [{
|
|
20909
|
+
type: Input,
|
|
20910
|
+
args: ['closeAriaLabel']
|
|
20911
|
+
}], onResize: [{
|
|
20912
|
+
type: HostListener,
|
|
20913
|
+
args: ['window:resize', ['$event']]
|
|
20309
20914
|
}], onMouseClick: [{
|
|
20310
20915
|
type: HostListener,
|
|
20311
20916
|
args: ['click', ['$event.target']]
|
|
20312
20917
|
}] } });
|
|
20313
20918
|
|
|
20919
|
+
/*
|
|
20920
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20921
|
+
* This software is released under MIT license.
|
|
20922
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20923
|
+
*/
|
|
20924
|
+
class ClrAriaCurrentLink {
|
|
20925
|
+
constructor(rla) {
|
|
20926
|
+
this.rla = rla;
|
|
20927
|
+
}
|
|
20928
|
+
ngOnInit() {
|
|
20929
|
+
this.subscription = this.rla.isActiveChange.subscribe(isActive => {
|
|
20930
|
+
this.ariaCurrent = isActive ? 'page' : undefined;
|
|
20931
|
+
});
|
|
20932
|
+
}
|
|
20933
|
+
ngOnDestroy() {
|
|
20934
|
+
this.subscription.unsubscribe();
|
|
20935
|
+
}
|
|
20936
|
+
}
|
|
20937
|
+
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 });
|
|
20938
|
+
ClrAriaCurrentLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrAriaCurrentLink, selector: "[clrAriaCurrentLink]", host: { properties: { "attr.aria-current": "ariaCurrent" } }, ngImport: i0 });
|
|
20939
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAriaCurrentLink, decorators: [{
|
|
20940
|
+
type: Directive,
|
|
20941
|
+
args: [{ selector: '[clrAriaCurrentLink]', host: { '[attr.aria-current]': 'ariaCurrent' } }]
|
|
20942
|
+
}], ctorParameters: function () { return [{ type: i1$1.RouterLinkActive }]; } });
|
|
20943
|
+
|
|
20314
20944
|
/*
|
|
20315
20945
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20316
20946
|
* This software is released under MIT license.
|
|
@@ -20319,6 +20949,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20319
20949
|
const CLR_NAVIGATION_DIRECTIVES = [
|
|
20320
20950
|
ClrHeader,
|
|
20321
20951
|
ClrNavLevel,
|
|
20952
|
+
ClrAriaCurrentLink,
|
|
20322
20953
|
NavDetectionOompaLoompa,
|
|
20323
20954
|
MainContainerWillyWonka,
|
|
20324
20955
|
];
|
|
@@ -20327,9 +20958,11 @@ class ClrNavigationModule {
|
|
|
20327
20958
|
ClrNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20328
20959
|
ClrNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, declarations: [ClrHeader,
|
|
20329
20960
|
ClrNavLevel,
|
|
20961
|
+
ClrAriaCurrentLink,
|
|
20330
20962
|
NavDetectionOompaLoompa,
|
|
20331
20963
|
MainContainerWillyWonka], imports: [CommonModule, ClrIconModule, ClrDropdownModule], exports: [ClrHeader,
|
|
20332
20964
|
ClrNavLevel,
|
|
20965
|
+
ClrAriaCurrentLink,
|
|
20333
20966
|
NavDetectionOompaLoompa,
|
|
20334
20967
|
MainContainerWillyWonka] });
|
|
20335
20968
|
ClrNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, imports: [[CommonModule, ClrIconModule, ClrDropdownModule]] });
|
|
@@ -20962,7 +21595,7 @@ ClrTabs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0
|
|
|
20962
21595
|
</ng-container>
|
|
20963
21596
|
</ul>
|
|
20964
21597
|
<ng-container #tabContentViewContainer></ng-container>
|
|
20965
|
-
`, isInline: true, components: [{ type: ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }, { type: ClrTabOverflowContent, selector: "clr-tab-overflow-content" }], directives: [{ type:
|
|
21598
|
+
`, 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" }] });
|
|
20966
21599
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTabs, decorators: [{
|
|
20967
21600
|
type: Component,
|
|
20968
21601
|
args: [{
|
|
@@ -21242,7 +21875,7 @@ class ClrVerticalNav {
|
|
|
21242
21875
|
}
|
|
21243
21876
|
}
|
|
21244
21877
|
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 });
|
|
21245
|
-
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:
|
|
21878
|
+
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" }] });
|
|
21246
21879
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrVerticalNav, decorators: [{
|
|
21247
21880
|
type: Component,
|
|
21248
21881
|
args: [{ selector: 'clr-vertical-nav', providers: [VerticalNavService, VerticalNavIconService, VerticalNavGroupRegistrationService], host: {
|
|
@@ -21409,7 +22042,7 @@ class ClrVerticalNavGroup {
|
|
|
21409
22042
|
}
|
|
21410
22043
|
}
|
|
21411
22044
|
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 });
|
|
21412
|
-
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]=\"
|
|
22045
|
+
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: [
|
|
21413
22046
|
trigger('clrExpand', [
|
|
21414
22047
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
21415
22048
|
state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
|
|
@@ -21424,7 +22057,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
21424
22057
|
state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
|
|
21425
22058
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
21426
22059
|
]),
|
|
21427
|
-
], 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]=\"
|
|
22060
|
+
], 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" }]
|
|
21428
22061
|
}], ctorParameters: function () { return [{ type: IfExpandService }, { type: VerticalNavGroupRegistrationService }, { type: VerticalNavGroupService }, { type: VerticalNavService }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
|
|
21429
22062
|
type: HostBinding,
|
|
21430
22063
|
args: ['class.is-expanded']
|
|
@@ -21483,17 +22116,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
21483
22116
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21484
22117
|
*/
|
|
21485
22118
|
class ClrVerticalNavLink {
|
|
21486
|
-
constructor(
|
|
21487
|
-
this.
|
|
22119
|
+
constructor(host, ref, navGroupService) {
|
|
22120
|
+
this.destroy$ = new Subject();
|
|
22121
|
+
// Note: since the `VerticalNavGroupService` is an optional provider, we'll setup the event
|
|
22122
|
+
// listener only when the `[clrVerticalLink]` is located within the `clr-vertical-nav-group`.
|
|
22123
|
+
navGroupService &&
|
|
22124
|
+
fromEvent(host.nativeElement, 'click')
|
|
22125
|
+
.pipe(takeUntil(this.destroy$))
|
|
22126
|
+
.subscribe(() => {
|
|
22127
|
+
navGroupService.expand();
|
|
22128
|
+
ref.markForCheck();
|
|
22129
|
+
});
|
|
21488
22130
|
}
|
|
21489
|
-
|
|
21490
|
-
|
|
21491
|
-
this._navGroupService.expand();
|
|
21492
|
-
}
|
|
22131
|
+
ngOnDestroy() {
|
|
22132
|
+
this.destroy$.next();
|
|
21493
22133
|
}
|
|
21494
22134
|
}
|
|
21495
|
-
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 });
|
|
21496
|
-
ClrVerticalNavLink.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNavLink, selector: "[clrVerticalNavLink]", host: {
|
|
22135
|
+
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 });
|
|
22136
|
+
ClrVerticalNavLink.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrVerticalNavLink, selector: "[clrVerticalNavLink]", host: { classAttribute: "nav-link" }, ngImport: i0, template: `
|
|
21497
22137
|
<ng-content select="[clrVerticalNavIcon]"></ng-content>
|
|
21498
22138
|
<span class="nav-text">
|
|
21499
22139
|
<ng-content></ng-content>
|
|
@@ -21511,12 +22151,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
21511
22151
|
`,
|
|
21512
22152
|
host: { class: 'nav-link' },
|
|
21513
22153
|
}]
|
|
21514
|
-
}], ctorParameters: function () { return [{ type: VerticalNavGroupService, decorators: [{
|
|
22154
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: VerticalNavGroupService, decorators: [{
|
|
21515
22155
|
type: Optional
|
|
21516
|
-
}
|
|
21517
|
-
|
|
21518
|
-
|
|
21519
|
-
|
|
22156
|
+
}, {
|
|
22157
|
+
type: Inject,
|
|
22158
|
+
args: [VerticalNavGroupService]
|
|
22159
|
+
}] }]; } });
|
|
21520
22160
|
|
|
21521
22161
|
/*
|
|
21522
22162
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -21659,7 +22299,7 @@ class ClrModal {
|
|
|
21659
22299
|
}
|
|
21660
22300
|
}
|
|
21661
22301
|
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 });
|
|
21662
|
-
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:
|
|
22302
|
+
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: [
|
|
21663
22303
|
trigger('fadeDown', [
|
|
21664
22304
|
transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
|
|
21665
22305
|
transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
|
|
@@ -21752,7 +22392,8 @@ class ClrModalBody {
|
|
|
21752
22392
|
this.tabindex = '0';
|
|
21753
22393
|
this.unlisteners = [];
|
|
21754
22394
|
ngZone.runOutsideAngular(() => {
|
|
21755
|
-
new ResizeObserver(() => this.addOrRemoveTabIndex())
|
|
22395
|
+
this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());
|
|
22396
|
+
this.observer.observe(this.host.nativeElement);
|
|
21756
22397
|
this.unlisteners.push(this.renderer.listen(this.host.nativeElement, 'mouseup', () => {
|
|
21757
22398
|
// set the tabindex binding back when click is completed with mouseup
|
|
21758
22399
|
this.addOrRemoveTabIndex();
|
|
@@ -21767,6 +22408,8 @@ class ClrModalBody {
|
|
|
21767
22408
|
while (this.unlisteners.length) {
|
|
21768
22409
|
this.unlisteners.pop()();
|
|
21769
22410
|
}
|
|
22411
|
+
this.observer.disconnect();
|
|
22412
|
+
this.observer = null;
|
|
21770
22413
|
}
|
|
21771
22414
|
addTabIndex() {
|
|
21772
22415
|
this.renderer.setAttribute(this.host.nativeElement, 'tabindex', this.tabindex);
|
|
@@ -21931,6 +22574,7 @@ class ClrSignpostContent extends AbstractPopover {
|
|
|
21931
22574
|
this.popoverOptions.offsetX = setPosition.offsetX;
|
|
21932
22575
|
}
|
|
21933
22576
|
ngOnDestroy() {
|
|
22577
|
+
super.ngOnDestroy();
|
|
21934
22578
|
if (isPlatformBrowser(this.platformId) && this.el.nativeElement.contains(this.document.activeElement)) {
|
|
21935
22579
|
this.signpostFocusManager.focusTrigger();
|
|
21936
22580
|
}
|
|
@@ -24201,7 +24845,7 @@ ClrWizardStepnavItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
24201
24845
|
<span *ngIf="hasError" class="clr-sr-only">{{ commonStrings.keys.wizardStepError }}</span>
|
|
24202
24846
|
<span *ngIf="!hasError && isComplete" class="clr-sr-only">{{ commonStrings.keys.wizardStepSuccess }}</span>
|
|
24203
24847
|
</button>
|
|
24204
|
-
`, isInline: true, directives: [{ type:
|
|
24848
|
+
`, 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"] }] });
|
|
24205
24849
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrWizardStepnavItem, decorators: [{
|
|
24206
24850
|
type: Component,
|
|
24207
24851
|
args: [{
|
|
@@ -24269,7 +24913,7 @@ ClrWizardStepnav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
24269
24913
|
{{ i + 1 }}
|
|
24270
24914
|
</div>
|
|
24271
24915
|
</div>
|
|
24272
|
-
`, isInline: true, components: [{ type: ClrWizardStepnavItem, selector: "[clr-wizard-stepnav-item]", inputs: ["page"] }], directives: [{ type:
|
|
24916
|
+
`, isInline: true, components: [{ type: ClrWizardStepnavItem, selector: "[clr-wizard-stepnav-item]", inputs: ["page"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
24273
24917
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrWizardStepnav, decorators: [{
|
|
24274
24918
|
type: Component,
|
|
24275
24919
|
args: [{
|
|
@@ -24688,7 +25332,7 @@ ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
|
|
|
24688
25332
|
ButtonHubService,
|
|
24689
25333
|
HeaderActionService,
|
|
24690
25334
|
UNIQUE_ID_PROVIDER,
|
|
24691
|
-
], 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:
|
|
25335
|
+
], 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" }] });
|
|
24692
25336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrWizard, decorators: [{
|
|
24693
25337
|
type: Component,
|
|
24694
25338
|
args: [{ selector: 'clr-wizard', providers: [
|
|
@@ -25265,7 +25909,7 @@ class ClrAccordionPanel {
|
|
|
25265
25909
|
}
|
|
25266
25910
|
}
|
|
25267
25911
|
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 });
|
|
25268
|
-
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:
|
|
25912
|
+
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 });
|
|
25269
25913
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAccordionPanel, decorators: [{
|
|
25270
25914
|
type: Component,
|
|
25271
25915
|
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" }]
|
|
@@ -25697,7 +26341,7 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
25697
26341
|
}
|
|
25698
26342
|
}
|
|
25699
26343
|
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 });
|
|
25700
|
-
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:
|
|
26344
|
+
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 });
|
|
25701
26345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
25702
26346
|
type: Component,
|
|
25703
26347
|
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" }]
|
|
@@ -26010,7 +26654,7 @@ ClrProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version:
|
|
|
26010
26654
|
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: `
|
|
26011
26655
|
<progress [id]="id" [attr.max]="max" [attr.value]="value" [attr.data-displayval]="displayValue"></progress>
|
|
26012
26656
|
<span *ngIf="displayStringValue()">{{ displayValue }}</span>
|
|
26013
|
-
`, isInline: true, directives: [{ type:
|
|
26657
|
+
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
26014
26658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrProgressBar, decorators: [{
|
|
26015
26659
|
type: Component,
|
|
26016
26660
|
args: [{
|
|
@@ -26282,7 +26926,7 @@ ClrTimelineStep.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
26282
26926
|
<ng-template #processing>
|
|
26283
26927
|
<clr-spinner clrMedium [attr.aria-label]="iconAriaLabel"></clr-spinner>
|
|
26284
26928
|
</ng-template>
|
|
26285
|
-
`, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type:
|
|
26929
|
+
`, 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" }] });
|
|
26286
26930
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTimelineStep, decorators: [{
|
|
26287
26931
|
type: Component,
|
|
26288
26932
|
args: [{
|
|
@@ -26404,6 +27048,7 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
26404
27048
|
ClrConditionalModule,
|
|
26405
27049
|
ClrFocusTrapModule,
|
|
26406
27050
|
ClrFocusOnViewInitModule,
|
|
27051
|
+
ClrForTypeAheadModule,
|
|
26407
27052
|
ClrButtonModule,
|
|
26408
27053
|
ClrFormsModule,
|
|
26409
27054
|
ClrLayoutModule,
|
|
@@ -26423,6 +27068,7 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
26423
27068
|
ClrConditionalModule,
|
|
26424
27069
|
ClrFocusTrapModule,
|
|
26425
27070
|
ClrFocusOnViewInitModule,
|
|
27071
|
+
ClrForTypeAheadModule,
|
|
26426
27072
|
ClrButtonModule,
|
|
26427
27073
|
ClrFormsModule,
|
|
26428
27074
|
ClrLayoutModule,
|
|
@@ -26446,6 +27092,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
26446
27092
|
ClrConditionalModule,
|
|
26447
27093
|
ClrFocusTrapModule,
|
|
26448
27094
|
ClrFocusOnViewInitModule,
|
|
27095
|
+
ClrForTypeAheadModule,
|
|
26449
27096
|
ClrButtonModule,
|
|
26450
27097
|
ClrFormsModule,
|
|
26451
27098
|
ClrLayoutModule,
|
|
@@ -26757,5 +27404,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
26757
27404
|
* Generated bundle index. Do not edit.
|
|
26758
27405
|
*/
|
|
26759
27406
|
|
|
26760
|
-
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 };
|
|
27407
|
+
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 };
|
|
26761
27408
|
//# sourceMappingURL=clr-angular.mjs.map
|