@clr/angular 12.0.13 → 12.0.14
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/bundles/clr-angular.umd.js +857 -557
- package/bundles/clr-angular.umd.js.map +1 -1
- package/clarity.api.md +4010 -0
- package/clr-angular.d.ts +21 -20
- package/clr-angular.metadata.json +1 -1
- package/esm2015/clr-angular.js +21 -20
- package/esm2015/data/datagrid/datagrid-column-toggle.js +4 -2
- package/esm2015/forms/datepicker/calendar.js +1 -1
- package/esm2015/forms/password/password-container.js +4 -1
- package/esm2015/layout/nav/header.js +25 -5
- package/esm2015/layout/nav/nav-level.js +106 -5
- package/esm2015/utils/breakpoints/breakpoints.js +15 -1
- package/esm2015/utils/focus-trap/focus-trap.js +144 -0
- package/esm2015/utils/i18n/common-strings.default.js +14 -1
- package/esm2015/utils/i18n/common-strings.interface.js +1 -1
- package/esm2015/wizard/providers/wizard-navigation.service.js +1 -1
- package/esm2015/wizard/wizard.js +9 -2
- package/fesm2015/clr-angular.js +862 -567
- package/fesm2015/clr-angular.js.map +1 -1
- package/layout/nav/header.d.ts +6 -0
- package/layout/nav/nav-level.d.ts +15 -3
- package/package.json +5 -5
- package/utils/breakpoints/breakpoints.d.ts +14 -0
- package/utils/focus-trap/focus-trap.d.ts +26 -0
- package/utils/i18n/common-strings.interface.d.ts +21 -0
package/fesm2015/clr-angular.js
CHANGED
|
@@ -7,6 +7,8 @@ import { Subject, fromEvent, BehaviorSubject, of, ReplaySubject, isObservable, c
|
|
|
7
7
|
import { filter, debounceTime, first, startWith, switchMap, take, map, tap, distinctUntilChanged, pairwise } from 'rxjs/operators';
|
|
8
8
|
import { trigger, transition, style, animate, keyframes, state } from '@angular/animations';
|
|
9
9
|
import { NgControl, FormsModule, SelectMultipleControlValueAccessor, FormControl, FormGroup, FormGroupName, NgModelGroup, FormGroupDirective, NgForm } from '@angular/forms';
|
|
10
|
+
import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
|
|
11
|
+
import '@cds/core/internal-components/close-button/register.js';
|
|
10
12
|
import '@cds/core/icon/register';
|
|
11
13
|
|
|
12
14
|
/*
|
|
@@ -1297,6 +1299,19 @@ const commonStringsDefault = {
|
|
|
1297
1299
|
datagridExpandableEndOf: 'End of',
|
|
1298
1300
|
datagridExpandableRowContent: 'Expandable row content',
|
|
1299
1301
|
datagridExpandableRowsHelperText: `Screen reader table commands may not work for viewing expanded content, please use your screen reader's browse mode to read the content exposed by this button`,
|
|
1302
|
+
responsiveNavToggleOpen: 'Navigation menu',
|
|
1303
|
+
responsiveNavToggleClose: 'Navigation menu',
|
|
1304
|
+
responsiveNavOverflowOpen: 'Navigation overflow menu',
|
|
1305
|
+
responsiveNavOverflowClose: 'Navigation overflow menu',
|
|
1306
|
+
// Wizard
|
|
1307
|
+
wizardStepSuccess: 'Completed',
|
|
1308
|
+
wizardStepError: 'Error',
|
|
1309
|
+
/**
|
|
1310
|
+
* Password Input
|
|
1311
|
+
* Screen-reader text for the hide/show password field button
|
|
1312
|
+
*/
|
|
1313
|
+
passwordHide: 'Hide password',
|
|
1314
|
+
passwordShow: 'Show password',
|
|
1300
1315
|
};
|
|
1301
1316
|
|
|
1302
1317
|
/*
|
|
@@ -4497,7 +4512,7 @@ class ClrCalendar {
|
|
|
4497
4512
|
}
|
|
4498
4513
|
}
|
|
4499
4514
|
ClrCalendar.decorators = [
|
|
4500
|
-
{ type: Component, args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <
|
|
4515
|
+
{ type: Component, 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" },] }
|
|
4501
4516
|
];
|
|
4502
4517
|
ClrCalendar.ctorParameters = () => [
|
|
4503
4518
|
{ type: LocaleHelperService },
|
|
@@ -4566,9 +4581,23 @@ DateFormControlService.decorators = [
|
|
|
4566
4581
|
* This software is released under MIT license.
|
|
4567
4582
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
4568
4583
|
*/
|
|
4584
|
+
/**
|
|
4585
|
+
* TODO:
|
|
4586
|
+
* Using core functions like:
|
|
4587
|
+
* - pluckPixelValue
|
|
4588
|
+
* - getCssPropertyValue
|
|
4589
|
+
*
|
|
4590
|
+
* to get the value of the design token.
|
|
4591
|
+
*
|
|
4592
|
+
* Note: Memoization/Cache usage possible.
|
|
4593
|
+
*/
|
|
4569
4594
|
// iPad mini screen width
|
|
4570
4595
|
// http://stephen.io/mediaqueries/#iPadMini
|
|
4571
4596
|
const DATEPICKER_ENABLE_BREAKPOINT = 768;
|
|
4597
|
+
const SMALL_BREAKPOINT = 576;
|
|
4598
|
+
const MEDIUM_BREAKPOINT = 768;
|
|
4599
|
+
const LARGE_BREAKPOINT = 992;
|
|
4600
|
+
const EXTRA_LARGE_BREAKPOINT = 1200;
|
|
4572
4601
|
|
|
4573
4602
|
/*
|
|
4574
4603
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -5828,6 +5857,9 @@ ClrPasswordContainer.decorators = [
|
|
|
5828
5857
|
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
5829
5858
|
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
5830
5859
|
></cds-icon>
|
|
5860
|
+
<span class="clr-sr-only">{{
|
|
5861
|
+
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
5862
|
+
}}</span>
|
|
5831
5863
|
</button>
|
|
5832
5864
|
</div>
|
|
5833
5865
|
<cds-icon
|
|
@@ -12709,10 +12741,10 @@ var DatagridColumnChanges;
|
|
|
12709
12741
|
DatagridColumnChanges[DatagridColumnChanges["WIDTH"] = 0] = "WIDTH";
|
|
12710
12742
|
DatagridColumnChanges[DatagridColumnChanges["HIDDEN"] = 1] = "HIDDEN";
|
|
12711
12743
|
})(DatagridColumnChanges || (DatagridColumnChanges = {}));
|
|
12712
|
-
const ɵ1 = key => DatagridColumnChanges[key], ɵ0 = key => key === parseInt(key, 10);
|
|
12744
|
+
const ɵ1 = key => DatagridColumnChanges[key], ɵ0$1 = key => key === parseInt(key, 10);
|
|
12713
12745
|
const ALL_COLUMN_CHANGES = Object.keys(DatagridColumnChanges)
|
|
12714
12746
|
.map(ɵ1)
|
|
12715
|
-
.filter(ɵ0); // extracts only integer keys
|
|
12747
|
+
.filter(ɵ0$1); // extracts only integer keys
|
|
12716
12748
|
|
|
12717
12749
|
/*
|
|
12718
12750
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -13508,7 +13540,9 @@ ClrDatagridColumnToggle.decorators = [
|
|
|
13508
13540
|
>
|
|
13509
13541
|
<div class="switch-header">
|
|
13510
13542
|
<div class="clr-sr-only" tabindex="-1" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>
|
|
13511
|
-
<ng-container *ngIf="!customToggleTitle">
|
|
13543
|
+
<ng-container *ngIf="!customToggleTitle">
|
|
13544
|
+
<h2>{{ commonStrings.keys.showColumns }}</h2>
|
|
13545
|
+
</ng-container>
|
|
13512
13546
|
<ng-content select="clr-dg-column-toggle-title"></ng-content>
|
|
13513
13547
|
<button
|
|
13514
13548
|
class="btn btn-sm btn-link toggle-switch-close-button"
|
|
@@ -17878,6 +17912,11 @@ class ClrHeader {
|
|
|
17878
17912
|
this.initializeNavTriggers(navLevelList);
|
|
17879
17913
|
},
|
|
17880
17914
|
});
|
|
17915
|
+
this._subscription.add(this.responsiveNavService.navControl
|
|
17916
|
+
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE || controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
17917
|
+
.subscribe(() => {
|
|
17918
|
+
this.openNavLevel = null;
|
|
17919
|
+
}));
|
|
17881
17920
|
}
|
|
17882
17921
|
// reset triggers. handles cases when an application has different nav levels on different pages.
|
|
17883
17922
|
resetNavTriggers() {
|
|
@@ -17904,10 +17943,21 @@ class ClrHeader {
|
|
|
17904
17943
|
closeOpenNav() {
|
|
17905
17944
|
this.responsiveNavService.closeAllNavs();
|
|
17906
17945
|
}
|
|
17907
|
-
|
|
17946
|
+
/**
|
|
17947
|
+
* @deprecated Will be removed in with @clr/angular v15.0.0
|
|
17948
|
+
*
|
|
17949
|
+
* Use `openNav(navLevel)` instead to open the navigation and ResponsiveNavService to close it.
|
|
17950
|
+
*/
|
|
17908
17951
|
toggleNav(navLevel) {
|
|
17909
|
-
|
|
17910
|
-
|
|
17952
|
+
if (this.openNavLevel === navLevel) {
|
|
17953
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, navLevel);
|
|
17954
|
+
return;
|
|
17955
|
+
}
|
|
17956
|
+
this.openNav(navLevel);
|
|
17957
|
+
}
|
|
17958
|
+
openNav(navLevel) {
|
|
17959
|
+
this.openNavLevel = navLevel;
|
|
17960
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, navLevel);
|
|
17911
17961
|
}
|
|
17912
17962
|
ngOnDestroy() {
|
|
17913
17963
|
this._subscription.unsubscribe();
|
|
@@ -17925,6 +17975,8 @@ ClrHeader.decorators = [
|
|
|
17925
17975
|
openNavLevel !== responsiveNavCodes.NAV_LEVEL_1 ? commonStrings.keys.open : commonStrings.keys.close
|
|
17926
17976
|
"
|
|
17927
17977
|
(click)="toggleNav(responsiveNavCodes.NAV_LEVEL_1)"
|
|
17978
|
+
[attr.aria-expanded]="openNavLevel === 1 ? 'true' : 'false'"
|
|
17979
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_1)"
|
|
17928
17980
|
>
|
|
17929
17981
|
<span></span>
|
|
17930
17982
|
</button>
|
|
@@ -17936,7 +17988,8 @@ ClrHeader.decorators = [
|
|
|
17936
17988
|
[attr.aria-label]="
|
|
17937
17989
|
openNavLevel !== responsiveNavCodes.NAV_LEVEL_2 ? commonStrings.keys.open : commonStrings.keys.close
|
|
17938
17990
|
"
|
|
17939
|
-
|
|
17991
|
+
[attr.aria-expanded]="openNavLevel === 2 ? 'true' : 'false'"
|
|
17992
|
+
(click)="openNav(responsiveNavCodes.NAV_LEVEL_2)"
|
|
17940
17993
|
>
|
|
17941
17994
|
<span></span>
|
|
17942
17995
|
</button>
|
|
@@ -17955,257 +18008,838 @@ ClrHeader.ctorParameters = () => [
|
|
|
17955
18008
|
* This software is released under MIT license.
|
|
17956
18009
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17957
18010
|
*/
|
|
17958
|
-
|
|
17959
|
-
|
|
17960
|
-
|
|
17961
|
-
|
|
17962
|
-
|
|
17963
|
-
|
|
17964
|
-
if (this.level !== ResponsiveNavCodes.NAV_LEVEL_1 && this.level !== ResponsiveNavCodes.NAV_LEVEL_2) {
|
|
17965
|
-
console.error('Nav Level can only be 1 or 2');
|
|
17966
|
-
return;
|
|
17967
|
-
}
|
|
17968
|
-
this.responsiveNavService.registerNav(this.level);
|
|
17969
|
-
this.addNavClass(this.level);
|
|
18011
|
+
function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
|
|
18012
|
+
const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
|
|
18013
|
+
const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
|
|
18014
|
+
if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
|
|
18015
|
+
elementToRefocus = elementToRefocus || focusTrapElement;
|
|
18016
|
+
elementToRefocus.focus();
|
|
17970
18017
|
}
|
|
17971
|
-
|
|
17972
|
-
|
|
17973
|
-
if (level === ResponsiveNavCodes.NAV_LEVEL_1) {
|
|
17974
|
-
navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_1);
|
|
17975
|
-
}
|
|
17976
|
-
else if (level === ResponsiveNavCodes.NAV_LEVEL_2) {
|
|
17977
|
-
navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_2);
|
|
17978
|
-
}
|
|
18018
|
+
else {
|
|
18019
|
+
focusedElement.focus();
|
|
17979
18020
|
}
|
|
17980
|
-
|
|
17981
|
-
|
|
18021
|
+
}
|
|
18022
|
+
function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
|
|
18023
|
+
if (focusedElement === focusTrapElement.topReboundElement ||
|
|
18024
|
+
focusedElement === focusTrapElement.bottomReboundElement) {
|
|
18025
|
+
return true;
|
|
17982
18026
|
}
|
|
17983
|
-
|
|
17984
|
-
|
|
17985
|
-
return
|
|
18027
|
+
const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
|
|
18028
|
+
if (elementIsInFocusTrapLightDom) {
|
|
18029
|
+
return false;
|
|
17986
18030
|
}
|
|
17987
|
-
|
|
17988
|
-
|
|
18031
|
+
if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
|
|
18032
|
+
return false;
|
|
17989
18033
|
}
|
|
17990
|
-
|
|
17991
|
-
|
|
18034
|
+
return true;
|
|
18035
|
+
}
|
|
18036
|
+
function createFocusTrapReboundElement(document) {
|
|
18037
|
+
const offScreenSpan = document.createElement('span');
|
|
18038
|
+
offScreenSpan.setAttribute('tabindex', '0');
|
|
18039
|
+
offScreenSpan.classList.add('offscreen-focus-rebounder');
|
|
18040
|
+
return offScreenSpan;
|
|
18041
|
+
}
|
|
18042
|
+
function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
|
|
18043
|
+
if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
|
|
18044
|
+
focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
|
|
18045
|
+
focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
|
|
18046
|
+
const parent = focusTrapElement.parentElement;
|
|
18047
|
+
const sibling = focusTrapElement.nextSibling;
|
|
18048
|
+
if (parent) {
|
|
18049
|
+
parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
|
|
18050
|
+
if (sibling) {
|
|
18051
|
+
parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
|
|
18052
|
+
}
|
|
18053
|
+
else {
|
|
18054
|
+
parent.appendChild(focusTrapElement.bottomReboundElement);
|
|
18055
|
+
}
|
|
18056
|
+
}
|
|
17992
18057
|
}
|
|
17993
|
-
|
|
17994
|
-
|
|
17995
|
-
|
|
17996
|
-
|
|
17997
|
-
|
|
17998
|
-
|
|
17999
|
-
|
|
18000
|
-
|
|
18001
|
-
|
|
18002
|
-
while (current) {
|
|
18003
|
-
if (current === navHost) {
|
|
18004
|
-
return;
|
|
18058
|
+
}
|
|
18059
|
+
function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
|
|
18060
|
+
if (focusTrapElement) {
|
|
18061
|
+
const parent = focusTrapElement.parentElement;
|
|
18062
|
+
if (parent) {
|
|
18063
|
+
const topRebound = focusTrapElement.topReboundElement;
|
|
18064
|
+
const bottomRebound = focusTrapElement.bottomReboundElement;
|
|
18065
|
+
if (topRebound) {
|
|
18066
|
+
parent.removeChild(topRebound);
|
|
18005
18067
|
}
|
|
18006
|
-
|
|
18007
|
-
|
|
18008
|
-
return;
|
|
18068
|
+
if (bottomRebound) {
|
|
18069
|
+
parent.removeChild(bottomRebound);
|
|
18009
18070
|
}
|
|
18010
|
-
current = current.parentNode;
|
|
18011
18071
|
}
|
|
18072
|
+
// These are here to to make sure that we completely delete all traces of the removed DOM objects.
|
|
18073
|
+
delete focusTrapElement.topReboundElement;
|
|
18074
|
+
delete focusTrapElement.bottomReboundElement;
|
|
18012
18075
|
}
|
|
18013
|
-
|
|
18014
|
-
|
|
18076
|
+
}
|
|
18077
|
+
// this helper exists to enable the focus trap class to handle vanilla html elements
|
|
18078
|
+
// it's primary concern is to keep TS happy.
|
|
18079
|
+
function castHtmlElementToFocusTrapElement(el) {
|
|
18080
|
+
return el;
|
|
18081
|
+
}
|
|
18082
|
+
class FocusTrap {
|
|
18083
|
+
constructor(renderer, injector, platformId, hostElement) {
|
|
18084
|
+
this.renderer = renderer;
|
|
18085
|
+
this.active = false;
|
|
18086
|
+
if (isPlatformBrowser(platformId)) {
|
|
18087
|
+
this._document = injector.get(DOCUMENT);
|
|
18088
|
+
}
|
|
18089
|
+
hostElement = castHtmlElementToFocusTrapElement(hostElement);
|
|
18090
|
+
if (!hostElement.focusTrapId) {
|
|
18091
|
+
hostElement.focusTrapId = createId();
|
|
18092
|
+
}
|
|
18093
|
+
this.focusTrapElement = hostElement;
|
|
18094
|
+
}
|
|
18095
|
+
enableFocusTrap() {
|
|
18096
|
+
const fte = this.focusTrapElement;
|
|
18097
|
+
const firstFocusElement = fte.querySelector('[cds-first-focus]');
|
|
18098
|
+
const activeEl = this._document.activeElement;
|
|
18099
|
+
if (FocusTrapTrackerService.getCurrent() === fte) {
|
|
18100
|
+
throw new Error('Focus trap is already enabled for this instance.');
|
|
18101
|
+
}
|
|
18102
|
+
this.firstFocusElement = firstFocusElement || this.focusTrapElement;
|
|
18103
|
+
addReboundElementsToFocusTrapElement(this._document, fte);
|
|
18104
|
+
if (!isFocusable(fte)) {
|
|
18105
|
+
fte.setAttribute('tabindex', '-1');
|
|
18106
|
+
}
|
|
18107
|
+
if (activeEl && isHTMLElement(activeEl)) {
|
|
18108
|
+
this.previousFocus = activeEl;
|
|
18109
|
+
}
|
|
18110
|
+
FocusTrapTrackerService.setCurrent(fte);
|
|
18111
|
+
// setTimeout here is required for Safari which may try to set focus on
|
|
18112
|
+
// element before it is visible...
|
|
18113
|
+
const focusTimer = setTimeout(() => {
|
|
18114
|
+
this.firstFocusElement.focus();
|
|
18115
|
+
clearTimeout(focusTimer);
|
|
18116
|
+
}, 10);
|
|
18117
|
+
this.onFocusInEvent = this.onFocusIn.bind(this);
|
|
18118
|
+
this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
|
|
18119
|
+
this.active = true;
|
|
18120
|
+
}
|
|
18121
|
+
removeFocusTrap() {
|
|
18122
|
+
if (this.unlisten) {
|
|
18123
|
+
this.unlisten();
|
|
18124
|
+
}
|
|
18125
|
+
removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
|
|
18126
|
+
this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
|
|
18127
|
+
FocusTrapTrackerService.activatePreviousCurrent();
|
|
18128
|
+
this.active = false;
|
|
18129
|
+
if (this.previousFocus) {
|
|
18130
|
+
this.previousFocus.focus();
|
|
18131
|
+
}
|
|
18132
|
+
}
|
|
18133
|
+
onFocusIn(event) {
|
|
18134
|
+
refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
|
|
18015
18135
|
}
|
|
18016
18136
|
}
|
|
18017
|
-
|
|
18018
|
-
{ type:
|
|
18137
|
+
FocusTrap.decorators = [
|
|
18138
|
+
{ type: Injectable }
|
|
18019
18139
|
];
|
|
18020
|
-
|
|
18021
|
-
{ type:
|
|
18022
|
-
{ type:
|
|
18140
|
+
FocusTrap.ctorParameters = () => [
|
|
18141
|
+
{ type: Renderer2 },
|
|
18142
|
+
{ type: Injector },
|
|
18143
|
+
{ type: undefined },
|
|
18144
|
+
{ type: undefined }
|
|
18023
18145
|
];
|
|
18024
|
-
ClrNavLevel.propDecorators = {
|
|
18025
|
-
_level: [{ type: Input, args: ['clr-nav-level',] }],
|
|
18026
|
-
onMouseClick: [{ type: HostListener, args: ['click', ['$event.target'],] }]
|
|
18027
|
-
};
|
|
18028
18146
|
|
|
18029
18147
|
/*
|
|
18030
18148
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18031
18149
|
* This software is released under MIT license.
|
|
18032
18150
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18033
18151
|
*/
|
|
18034
|
-
const
|
|
18035
|
-
ClrHeader,
|
|
18036
|
-
ClrNavLevel,
|
|
18037
|
-
NavDetectionOompaLoompa,
|
|
18038
|
-
MainContainerWillyWonka,
|
|
18039
|
-
];
|
|
18040
|
-
class ClrNavigationModule {
|
|
18041
|
-
}
|
|
18042
|
-
ClrNavigationModule.decorators = [
|
|
18043
|
-
{ type: NgModule, args: [{
|
|
18044
|
-
imports: [CommonModule, ClrIconModule, ClrDropdownModule],
|
|
18045
|
-
declarations: [CLR_NAVIGATION_DIRECTIVES],
|
|
18046
|
-
exports: [CLR_NAVIGATION_DIRECTIVES],
|
|
18047
|
-
},] }
|
|
18048
|
-
];
|
|
18152
|
+
const defaultAnimationTiming = '0.2s ease-in-out';
|
|
18049
18153
|
|
|
18050
18154
|
/*
|
|
18051
18155
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18052
18156
|
* This software is released under MIT license.
|
|
18053
18157
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18054
18158
|
*/
|
|
18055
|
-
|
|
18159
|
+
function collapse() {
|
|
18160
|
+
'use strict';
|
|
18161
|
+
return [
|
|
18162
|
+
state('true', style({ height: 0, 'overflow-y': 'hidden' })),
|
|
18163
|
+
transition('true => false', [animate(defaultAnimationTiming, style({ height: '*', 'overflow-y': 'hidden' }))]),
|
|
18164
|
+
transition('false => true', [style({ height: '*', 'overflow-y': 'hidden' }), animate(defaultAnimationTiming)]),
|
|
18165
|
+
];
|
|
18056
18166
|
}
|
|
18057
|
-
TemplateRefContainer.decorators = [
|
|
18058
|
-
{ type: Component, args: [{
|
|
18059
|
-
template: `
|
|
18060
|
-
<ng-template>
|
|
18061
|
-
<ng-content></ng-content>
|
|
18062
|
-
</ng-template>
|
|
18063
|
-
`
|
|
18064
|
-
},] }
|
|
18065
|
-
];
|
|
18066
|
-
TemplateRefContainer.propDecorators = {
|
|
18067
|
-
template: [{ type: ViewChild, args: [TemplateRef,] }]
|
|
18068
|
-
};
|
|
18069
18167
|
|
|
18070
18168
|
/*
|
|
18071
18169
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18072
18170
|
* This software is released under MIT license.
|
|
18073
18171
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18074
18172
|
*/
|
|
18075
|
-
const TEMPLATE_REF_DIRECTIVES = [TemplateRefContainer];
|
|
18076
18173
|
|
|
18077
18174
|
/*
|
|
18078
18175
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18079
18176
|
* This software is released under MIT license.
|
|
18080
18177
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18081
18178
|
*/
|
|
18082
|
-
|
|
18179
|
+
function fade(opacity = 1) {
|
|
18180
|
+
return [
|
|
18181
|
+
transition('void => *', [style({ opacity: 0 }), animate(defaultAnimationTiming, style({ opacity: opacity }))]),
|
|
18182
|
+
transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0 }))]),
|
|
18183
|
+
];
|
|
18083
18184
|
}
|
|
18084
|
-
ClrTemplateRefModule.decorators = [
|
|
18085
|
-
{ type: NgModule, args: [{
|
|
18086
|
-
imports: [CommonModule],
|
|
18087
|
-
declarations: [TEMPLATE_REF_DIRECTIVES],
|
|
18088
|
-
entryComponents: [TEMPLATE_REF_DIRECTIVES],
|
|
18089
|
-
exports: [TEMPLATE_REF_DIRECTIVES],
|
|
18090
|
-
},] }
|
|
18091
|
-
];
|
|
18092
18185
|
|
|
18093
18186
|
/*
|
|
18094
18187
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18095
18188
|
* This software is released under MIT license.
|
|
18096
18189
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18097
18190
|
*/
|
|
18098
|
-
class TabsWillyWonka extends WillyWonka {
|
|
18099
|
-
}
|
|
18100
|
-
TabsWillyWonka.decorators = [
|
|
18101
|
-
{ type: Directive, args: [{ selector: 'clr-tabs' },] }
|
|
18102
|
-
];
|
|
18103
18191
|
|
|
18104
18192
|
/*
|
|
18105
18193
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18106
18194
|
* This software is released under MIT license.
|
|
18107
18195
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18108
18196
|
*/
|
|
18109
|
-
|
|
18110
|
-
|
|
18111
|
-
|
|
18112
|
-
|
|
18113
|
-
}
|
|
18114
|
-
super(cdr, willyWonka);
|
|
18115
|
-
this.ifActive = ifActive;
|
|
18116
|
-
this.id = id;
|
|
18197
|
+
function fadeSlide(direction) {
|
|
18198
|
+
let transform = null;
|
|
18199
|
+
if (direction === 'up') {
|
|
18200
|
+
transform = 'translate(0, 25%)';
|
|
18117
18201
|
}
|
|
18118
|
-
|
|
18119
|
-
|
|
18202
|
+
else if (direction === 'down') {
|
|
18203
|
+
transform = 'translate(0, -25%)';
|
|
18204
|
+
}
|
|
18205
|
+
else if (direction === 'left') {
|
|
18206
|
+
transform = 'translate(25%, 0)';
|
|
18207
|
+
}
|
|
18208
|
+
else if (direction === 'right') {
|
|
18209
|
+
transform = 'translate(-25%, 0)';
|
|
18210
|
+
}
|
|
18211
|
+
else {
|
|
18212
|
+
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
18120
18213
|
}
|
|
18214
|
+
return [
|
|
18215
|
+
transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
|
|
18216
|
+
transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
|
|
18217
|
+
];
|
|
18121
18218
|
}
|
|
18122
|
-
ActiveOompaLoompa.decorators = [
|
|
18123
|
-
{ type: Directive, args: [{ selector: '[clrTabLink], clr-tab-content' },] }
|
|
18124
|
-
];
|
|
18125
|
-
ActiveOompaLoompa.ctorParameters = () => [
|
|
18126
|
-
{ type: ChangeDetectorRef },
|
|
18127
|
-
{ type: TabsWillyWonka, decorators: [{ type: Optional }] },
|
|
18128
|
-
{ type: Number, decorators: [{ type: Inject, args: [IF_ACTIVE_ID,] }] },
|
|
18129
|
-
{ type: IfActiveService }
|
|
18130
|
-
];
|
|
18131
18219
|
|
|
18132
18220
|
/*
|
|
18133
18221
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18134
18222
|
* This software is released under MIT license.
|
|
18135
18223
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18136
18224
|
*/
|
|
18137
|
-
var TabsLayout;
|
|
18138
|
-
(function (TabsLayout) {
|
|
18139
|
-
TabsLayout["HORIZONTAL"] = "horizontal";
|
|
18140
|
-
TabsLayout["VERTICAL"] = "vertical";
|
|
18141
|
-
})(TabsLayout || (TabsLayout = {}));
|
|
18142
18225
|
|
|
18143
18226
|
/*
|
|
18144
18227
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18145
18228
|
* This software is released under MIT license.
|
|
18146
18229
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18147
18230
|
*/
|
|
18148
|
-
|
|
18149
|
-
|
|
18150
|
-
|
|
18151
|
-
|
|
18152
|
-
}
|
|
18153
|
-
register(tab) {
|
|
18154
|
-
this._children.push(tab);
|
|
18231
|
+
function slide(direction) {
|
|
18232
|
+
let transform = null;
|
|
18233
|
+
if (direction === 'up') {
|
|
18234
|
+
transform = 'translate(0, 25%)';
|
|
18155
18235
|
}
|
|
18156
|
-
|
|
18157
|
-
|
|
18236
|
+
else if (direction === 'down') {
|
|
18237
|
+
transform = 'translate(0, -25%)';
|
|
18158
18238
|
}
|
|
18159
|
-
|
|
18160
|
-
|
|
18161
|
-
return tab.active;
|
|
18162
|
-
});
|
|
18239
|
+
else if (direction === 'left') {
|
|
18240
|
+
transform = 'translate(25%, 0)';
|
|
18163
18241
|
}
|
|
18164
|
-
|
|
18165
|
-
|
|
18166
|
-
return [];
|
|
18167
|
-
}
|
|
18168
|
-
else {
|
|
18169
|
-
return this.children.filter((tab) => tab.tabLink.inOverflow === true);
|
|
18170
|
-
}
|
|
18242
|
+
else if (direction === 'right') {
|
|
18243
|
+
transform = 'translate(-25%, 0)';
|
|
18171
18244
|
}
|
|
18172
|
-
|
|
18173
|
-
|
|
18174
|
-
if (index > -1) {
|
|
18175
|
-
this.children.splice(index, 1);
|
|
18176
|
-
}
|
|
18245
|
+
else {
|
|
18246
|
+
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
18177
18247
|
}
|
|
18248
|
+
return [
|
|
18249
|
+
transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
|
|
18250
|
+
transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
|
|
18251
|
+
];
|
|
18178
18252
|
}
|
|
18179
|
-
TabsService.decorators = [
|
|
18180
|
-
{ type: Injectable }
|
|
18181
|
-
];
|
|
18182
18253
|
|
|
18183
18254
|
/*
|
|
18184
18255
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18185
18256
|
* This software is released under MIT license.
|
|
18186
18257
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18187
18258
|
*/
|
|
18188
|
-
|
|
18189
|
-
|
|
18190
|
-
|
|
18191
|
-
|
|
18192
|
-
|
|
18193
|
-
|
|
18194
|
-
|
|
18195
|
-
|
|
18196
|
-
|
|
18197
|
-
|
|
18198
|
-
|
|
18199
|
-
|
|
18200
|
-
|
|
18201
|
-
|
|
18202
|
-
|
|
18203
|
-
|
|
18204
|
-
|
|
18205
|
-
|
|
18206
|
-
|
|
18207
|
-
|
|
18208
|
-
|
|
18259
|
+
|
|
18260
|
+
/*
|
|
18261
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18262
|
+
* This software is released under MIT license.
|
|
18263
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18264
|
+
*/
|
|
18265
|
+
|
|
18266
|
+
/*
|
|
18267
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18268
|
+
* This software is released under MIT license.
|
|
18269
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18270
|
+
*/
|
|
18271
|
+
|
|
18272
|
+
/*
|
|
18273
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18274
|
+
* This software is released under MIT license.
|
|
18275
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18276
|
+
*/
|
|
18277
|
+
|
|
18278
|
+
/*
|
|
18279
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18280
|
+
* This software is released under MIT license.
|
|
18281
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18282
|
+
*/
|
|
18283
|
+
|
|
18284
|
+
/*
|
|
18285
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18286
|
+
* This software is released under MIT license.
|
|
18287
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18288
|
+
*/
|
|
18289
|
+
|
|
18290
|
+
/*
|
|
18291
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18292
|
+
* This software is released under MIT license.
|
|
18293
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18294
|
+
*/
|
|
18295
|
+
var ClrAriaLivePoliteness;
|
|
18296
|
+
(function (ClrAriaLivePoliteness) {
|
|
18297
|
+
ClrAriaLivePoliteness["off"] = "off";
|
|
18298
|
+
ClrAriaLivePoliteness["polite"] = "polite";
|
|
18299
|
+
ClrAriaLivePoliteness["assertive"] = "assertive";
|
|
18300
|
+
})(ClrAriaLivePoliteness || (ClrAriaLivePoliteness = {}));
|
|
18301
|
+
/**
|
|
18302
|
+
* Time in milliseconds before inserting the content into the container
|
|
18303
|
+
*/
|
|
18304
|
+
const ARIA_LIVE_TICK = 100;
|
|
18305
|
+
/**
|
|
18306
|
+
* @deprecated
|
|
18307
|
+
*
|
|
18308
|
+
* -- ClrAriaLiveService is deprecated in 5.0 to be removed in 6.0 --
|
|
18309
|
+
* Please consider using the LiveAnnouncer in the Angular Material CDK
|
|
18310
|
+
* if your project needs this functionality.
|
|
18311
|
+
* More info: https://material.angular.io/cdk/a11y/overview#example-1
|
|
18312
|
+
*
|
|
18313
|
+
* This service handle `aria-live` accessibility attribute. The issue is that you need
|
|
18314
|
+
* to have the DOM Element with attribute `aria-live` before you could insert content
|
|
18315
|
+
* and SR (Screen Reader) pick the change and announce it.
|
|
18316
|
+
*
|
|
18317
|
+
* ```typescript
|
|
18318
|
+
* import { ClrAriaLiveService } from 'src/clr-angular/utils/a11y/aria-live.service';
|
|
18319
|
+
*
|
|
18320
|
+
* @Component({
|
|
18321
|
+
* selector: 'clr-demo-component',
|
|
18322
|
+
* providers: [ClrAriaLiveService],
|
|
18323
|
+
* template: `
|
|
18324
|
+
* <ng-content></ng-content>
|
|
18325
|
+
* `,
|
|
18326
|
+
* })
|
|
18327
|
+
* export class DemoComponent {
|
|
18328
|
+
* constructor(ariaLiveService: ClrAriaLiveService) {}
|
|
18329
|
+
*
|
|
18330
|
+
* public actionThatWillTriggerChange() {
|
|
18331
|
+
* this.ariaLiveService.announce('message that I want to announce to SR');
|
|
18332
|
+
* }
|
|
18333
|
+
* }
|
|
18334
|
+
* ```
|
|
18335
|
+
*
|
|
18336
|
+
*/
|
|
18337
|
+
class ClrAriaLiveService {
|
|
18338
|
+
constructor(ngZone, _document, platformId) {
|
|
18339
|
+
this.ngZone = ngZone;
|
|
18340
|
+
this.platformId = platformId;
|
|
18341
|
+
this._id = `clr-aria-live-element-${uniqueIdFactory()}`;
|
|
18342
|
+
this.document = _document;
|
|
18343
|
+
}
|
|
18344
|
+
/**
|
|
18345
|
+
* get access to the internal HTML `id` that gonna be used for the AriaLive container.
|
|
18346
|
+
* @return ID of the DOM Element as string.
|
|
18347
|
+
*/
|
|
18348
|
+
get id() {
|
|
18349
|
+
return this._id;
|
|
18350
|
+
}
|
|
18351
|
+
/**
|
|
18352
|
+
* Append text content inside the AriaLive Container. This method will check if the
|
|
18353
|
+
* DOM Element is existing if not it will create one for us and the will apply the text.
|
|
18354
|
+
*
|
|
18355
|
+
* ```typescript
|
|
18356
|
+
* this.ariaLiveService.announce(this.el.nativeElement);
|
|
18357
|
+
* // or
|
|
18358
|
+
* this.ariaLiveService.announce('Message to announce to SR');
|
|
18359
|
+
* ```
|
|
18360
|
+
*
|
|
18361
|
+
* @remark
|
|
18362
|
+
* When second argument is `AriaLivePoliteness.off` we won't create aria container or update it.
|
|
18363
|
+
* The reason for that is that we don't want to do additional work if the SR will ignore it.
|
|
18364
|
+
*
|
|
18365
|
+
* @param message - This could be simple string or HTMLElement
|
|
18366
|
+
* @param politeness - 'polite', 'assertive' or 'off'
|
|
18367
|
+
*/
|
|
18368
|
+
announce(message, politeness = ClrAriaLivePoliteness.polite) {
|
|
18369
|
+
if (politeness === ClrAriaLivePoliteness.off) {
|
|
18370
|
+
return;
|
|
18371
|
+
}
|
|
18372
|
+
if (!this.ariaLiveElement && isPlatformBrowser(this.platformId)) {
|
|
18373
|
+
this.ariaLiveElement = this.createContainer();
|
|
18374
|
+
}
|
|
18375
|
+
message = typeof message !== 'string' && isPlatformBrowser(this.platformId) ? message.textContent : message;
|
|
18376
|
+
// when there is no message do NOTHING!
|
|
18377
|
+
if (!message) {
|
|
18378
|
+
return;
|
|
18379
|
+
}
|
|
18380
|
+
this.ariaLiveElement.setAttribute('aria-live', politeness);
|
|
18381
|
+
// This 100ms timeout is necessary for some browser + screen-reader combinations:
|
|
18382
|
+
// - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
|
|
18383
|
+
// - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
|
|
18384
|
+
// second time without clearing and then using a non-zero delay.
|
|
18385
|
+
// (using JAWS 17 at time of this writing).
|
|
18386
|
+
this.ngZone.runOutsideAngular(() => {
|
|
18387
|
+
// This clearTimeout will stop all older messages from announcing
|
|
18388
|
+
// in the case where the messages are comming too fast we gonna try to append only
|
|
18389
|
+
// the last one. That's what the SR will try to do anyway.
|
|
18390
|
+
clearTimeout(this.previousTimeout);
|
|
18391
|
+
this.previousTimeout = setTimeout(() => {
|
|
18392
|
+
this.ariaLiveElement.textContent = message;
|
|
18393
|
+
}, ARIA_LIVE_TICK);
|
|
18394
|
+
});
|
|
18395
|
+
}
|
|
18396
|
+
/**
|
|
18397
|
+
* onDestroy life cycle - must stop all active setTimeouts and remove the AriaLive
|
|
18398
|
+
* container from the document.
|
|
18399
|
+
*/
|
|
18400
|
+
ngOnDestroy() {
|
|
18401
|
+
clearTimeout(this.previousTimeout);
|
|
18402
|
+
if (isPlatformBrowser(this.platformId) && this.ariaLiveElement) {
|
|
18403
|
+
this.document.body.removeChild(this.ariaLiveElement);
|
|
18404
|
+
this.ariaLiveElement = null;
|
|
18405
|
+
}
|
|
18406
|
+
}
|
|
18407
|
+
/**
|
|
18408
|
+
* Create AriaLive DOM element as a last child of the document.
|
|
18409
|
+
* After the element is created, we gonna apply Clarity class to hide it from
|
|
18410
|
+
* the screen and set the `aria-live` politness.
|
|
18411
|
+
*
|
|
18412
|
+
* `clr-sr-only` is the CSS class that is used to hide the element from the screen.
|
|
18413
|
+
*
|
|
18414
|
+
* @remark
|
|
18415
|
+
* Calling this method multiple times will create multiple DOM Elements, that
|
|
18416
|
+
* won't be tracked and will be GC after the service is destroyed.
|
|
18417
|
+
*
|
|
18418
|
+
* @return AriaLive container as HTMLElement
|
|
18419
|
+
*
|
|
18420
|
+
*/
|
|
18421
|
+
createContainer() {
|
|
18422
|
+
const ariaLiveElement = this.document.createElement('div');
|
|
18423
|
+
ariaLiveElement.setAttribute('id', this.id);
|
|
18424
|
+
// Use clarity screen reader class to hide the dom element
|
|
18425
|
+
// and fix the scrollbar shake
|
|
18426
|
+
ariaLiveElement.classList.add('clr-sr-only');
|
|
18427
|
+
ariaLiveElement.setAttribute('aria-atomic', 'true');
|
|
18428
|
+
ariaLiveElement.setAttribute('aria-live', ClrAriaLivePoliteness.polite);
|
|
18429
|
+
this.document.body.appendChild(ariaLiveElement);
|
|
18430
|
+
return ariaLiveElement;
|
|
18431
|
+
}
|
|
18432
|
+
}
|
|
18433
|
+
ClrAriaLiveService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ClrAriaLiveService_Factory() { return new ClrAriaLiveService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i0.PLATFORM_ID)); }, token: ClrAriaLiveService, providedIn: "root" });
|
|
18434
|
+
ClrAriaLiveService.decorators = [
|
|
18435
|
+
{ type: Injectable, args: [{
|
|
18436
|
+
providedIn: 'root',
|
|
18437
|
+
},] }
|
|
18438
|
+
];
|
|
18439
|
+
ClrAriaLiveService.ctorParameters = () => [
|
|
18440
|
+
{ type: NgZone },
|
|
18441
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
18442
|
+
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
18443
|
+
];
|
|
18444
|
+
|
|
18445
|
+
/*
|
|
18446
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18447
|
+
* This software is released under MIT license.
|
|
18448
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18449
|
+
*/
|
|
18450
|
+
|
|
18451
|
+
/*
|
|
18452
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18453
|
+
* This software is released under MIT license.
|
|
18454
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18455
|
+
*/
|
|
18456
|
+
|
|
18457
|
+
/*
|
|
18458
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18459
|
+
* This software is released under MIT license.
|
|
18460
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18461
|
+
*/
|
|
18462
|
+
|
|
18463
|
+
/*
|
|
18464
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18465
|
+
* This software is released under MIT license.
|
|
18466
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18467
|
+
*/
|
|
18468
|
+
|
|
18469
|
+
/*
|
|
18470
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18471
|
+
* This software is released under MIT license.
|
|
18472
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18473
|
+
*/
|
|
18474
|
+
|
|
18475
|
+
/*
|
|
18476
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18477
|
+
* This software is released under MIT license.
|
|
18478
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18479
|
+
*/
|
|
18480
|
+
|
|
18481
|
+
/*
|
|
18482
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18483
|
+
* This software is released under MIT license.
|
|
18484
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18485
|
+
*/
|
|
18486
|
+
|
|
18487
|
+
/*
|
|
18488
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18489
|
+
* This software is released under MIT license.
|
|
18490
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18491
|
+
*/
|
|
18492
|
+
|
|
18493
|
+
/*
|
|
18494
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18495
|
+
* This software is released under MIT license.
|
|
18496
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18497
|
+
*/
|
|
18498
|
+
const createCdsCloseButton = (document, ariaLabel) => {
|
|
18499
|
+
const cdsCloseButton = document.createElement('cds-internal-close-button');
|
|
18500
|
+
cdsCloseButton.setAttribute('icon-size', '32');
|
|
18501
|
+
console.log(ariaLabel);
|
|
18502
|
+
cdsCloseButton.setAttribute('aria-label', ariaLabel);
|
|
18503
|
+
cdsCloseButton.setAttribute('aria-hidden', 'true');
|
|
18504
|
+
cdsCloseButton.setAttribute('type', 'button');
|
|
18505
|
+
/**
|
|
18506
|
+
* The button is hidden by default based on our Desktop-first approach.
|
|
18507
|
+
*/
|
|
18508
|
+
cdsCloseButton.setAttribute('hidden', 'true');
|
|
18509
|
+
cdsCloseButton.className = 'clr-nav-close';
|
|
18510
|
+
return cdsCloseButton;
|
|
18511
|
+
};
|
|
18512
|
+
const ɵ0 = createCdsCloseButton;
|
|
18513
|
+
class ClrNavLevel extends FocusTrap {
|
|
18514
|
+
constructor(platformId, responsiveNavService, elementRef, renderer, injector) {
|
|
18515
|
+
super(renderer, injector, platformId, elementRef.nativeElement);
|
|
18516
|
+
this.responsiveNavService = responsiveNavService;
|
|
18517
|
+
this.elementRef = elementRef;
|
|
18518
|
+
this._isOpen = false;
|
|
18519
|
+
if (isPlatformBrowser(platformId)) {
|
|
18520
|
+
this._document = injector.get(DOCUMENT);
|
|
18521
|
+
}
|
|
18522
|
+
this._subscription = responsiveNavService.navControl
|
|
18523
|
+
.pipe(filter(x => x.navLevel === this.level), filter(({ controlCode }) => (controlCode === ResponsiveNavCodes.NAV_OPEN && !this.isOpen) ||
|
|
18524
|
+
(controlCode === ResponsiveNavCodes.NAV_CLOSE && this.isOpen)))
|
|
18525
|
+
.subscribe(({ controlCode }) => {
|
|
18526
|
+
if (controlCode === ResponsiveNavCodes.NAV_OPEN) {
|
|
18527
|
+
this.open();
|
|
18528
|
+
return;
|
|
18529
|
+
}
|
|
18530
|
+
this.close();
|
|
18531
|
+
});
|
|
18532
|
+
this._subscription.add(responsiveNavService.navControl
|
|
18533
|
+
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
18534
|
+
.subscribe(() => this.close()));
|
|
18535
|
+
}
|
|
18536
|
+
ngOnInit() {
|
|
18537
|
+
if (!this.closeButtonAriaLabel) {
|
|
18538
|
+
this.closeButtonAriaLabel =
|
|
18539
|
+
this._level === ResponsiveNavCodes.NAV_LEVEL_1
|
|
18540
|
+
? commonStringsDefault.responsiveNavToggleClose
|
|
18541
|
+
: commonStringsDefault.responsiveNavOverflowClose;
|
|
18542
|
+
}
|
|
18543
|
+
if (this.level !== ResponsiveNavCodes.NAV_LEVEL_1 && this.level !== ResponsiveNavCodes.NAV_LEVEL_2) {
|
|
18544
|
+
console.error('Nav Level can only be 1 or 2');
|
|
18545
|
+
return;
|
|
18546
|
+
}
|
|
18547
|
+
this.responsiveNavService.registerNav(this.level);
|
|
18548
|
+
this.addNavClass(this.level);
|
|
18549
|
+
}
|
|
18550
|
+
ngAfterViewInit() {
|
|
18551
|
+
const closeButton = createCdsCloseButton(this._document, this.closeButtonAriaLabel);
|
|
18552
|
+
this.renderer.listen(closeButton, 'click', this.close.bind(this));
|
|
18553
|
+
this.renderer.insertBefore(this.elementRef.nativeElement, closeButton, this.elementRef.nativeElement.firstChild); // Adding the button at the top of the nav
|
|
18554
|
+
if (this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
18555
|
+
/**
|
|
18556
|
+
* Close if the document body is smaller than the large breakpoint for example:
|
|
18557
|
+
* - Refreshing the page
|
|
18558
|
+
* - Browser window size is changed when opening the applicaiton
|
|
18559
|
+
* - Browser zoom is turned on and zoomed to a size that makes the document smaller than the large breakpoint
|
|
18560
|
+
*/
|
|
18561
|
+
this.close();
|
|
18562
|
+
}
|
|
18563
|
+
}
|
|
18564
|
+
addNavClass(level) {
|
|
18565
|
+
const navHostClassList = this.elementRef.nativeElement.classList;
|
|
18566
|
+
if (level === ResponsiveNavCodes.NAV_LEVEL_1) {
|
|
18567
|
+
navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_1);
|
|
18568
|
+
}
|
|
18569
|
+
else if (level === ResponsiveNavCodes.NAV_LEVEL_2) {
|
|
18570
|
+
navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_2);
|
|
18571
|
+
}
|
|
18572
|
+
}
|
|
18573
|
+
get level() {
|
|
18574
|
+
return this._level;
|
|
18575
|
+
}
|
|
18576
|
+
// getter to access the responsive navigation codes from the template
|
|
18577
|
+
get responsiveNavCodes() {
|
|
18578
|
+
return ResponsiveNavCodes;
|
|
18579
|
+
}
|
|
18580
|
+
get isOpen() {
|
|
18581
|
+
return this._isOpen;
|
|
18582
|
+
}
|
|
18583
|
+
onResize(event) {
|
|
18584
|
+
const target = event.target;
|
|
18585
|
+
if (target.innerWidth < LARGE_BREAKPOINT && this.isOpen) {
|
|
18586
|
+
this.close();
|
|
18587
|
+
return;
|
|
18588
|
+
}
|
|
18589
|
+
this.showNavigation();
|
|
18590
|
+
}
|
|
18591
|
+
open() {
|
|
18592
|
+
this._isOpen = true;
|
|
18593
|
+
this.showNavigation();
|
|
18594
|
+
this.enableFocusTrap();
|
|
18595
|
+
this.showCloseButton();
|
|
18596
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
|
|
18597
|
+
}
|
|
18598
|
+
close() {
|
|
18599
|
+
this._isOpen = false;
|
|
18600
|
+
this.hideNavigation();
|
|
18601
|
+
this.removeFocusTrap();
|
|
18602
|
+
this.hideCloseButton();
|
|
18603
|
+
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
|
|
18604
|
+
}
|
|
18605
|
+
// TODO: Figure out whats the best way to do this. Possible methods
|
|
18606
|
+
// 1. HostListener (current solution)
|
|
18607
|
+
// 2. Directives on the .nav-link class. We discussed on moving away from class selectors but I forget the reason
|
|
18608
|
+
// why
|
|
18609
|
+
onMouseClick(target) {
|
|
18610
|
+
let current = target; // Get the element in the DOM on which the mouse was clicked
|
|
18611
|
+
const navHost = this.elementRef.nativeElement; // Get the current nav native HTML element
|
|
18612
|
+
// Start checking if current and navHost are equal.
|
|
18613
|
+
// If not traverse to the parentNode and check again.
|
|
18614
|
+
while (current) {
|
|
18615
|
+
if (current === navHost) {
|
|
18616
|
+
return;
|
|
18617
|
+
}
|
|
18618
|
+
else if (current.classList.contains('nav-link')) {
|
|
18619
|
+
this.close();
|
|
18620
|
+
return;
|
|
18621
|
+
}
|
|
18622
|
+
current = current.parentNode;
|
|
18623
|
+
}
|
|
18624
|
+
}
|
|
18625
|
+
hideNavigation() {
|
|
18626
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');
|
|
18627
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', 'true');
|
|
18628
|
+
}
|
|
18629
|
+
showNavigation() {
|
|
18630
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'false');
|
|
18631
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');
|
|
18632
|
+
}
|
|
18633
|
+
hideCloseButton() {
|
|
18634
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');
|
|
18635
|
+
this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden', 'true');
|
|
18636
|
+
}
|
|
18637
|
+
showCloseButton() {
|
|
18638
|
+
this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'aria-hidden', 'false');
|
|
18639
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden');
|
|
18640
|
+
}
|
|
18641
|
+
ngOnDestroy() {
|
|
18642
|
+
this.responsiveNavService.unregisterNav(this.level);
|
|
18643
|
+
this._subscription.unsubscribe();
|
|
18644
|
+
}
|
|
18645
|
+
}
|
|
18646
|
+
ClrNavLevel.decorators = [
|
|
18647
|
+
{ type: Directive, args: [{ selector: '[clr-nav-level]' },] }
|
|
18648
|
+
];
|
|
18649
|
+
ClrNavLevel.ctorParameters = () => [
|
|
18650
|
+
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
|
|
18651
|
+
{ type: ResponsiveNavigationService },
|
|
18652
|
+
{ type: ElementRef },
|
|
18653
|
+
{ type: Renderer2 },
|
|
18654
|
+
{ type: Injector }
|
|
18655
|
+
];
|
|
18656
|
+
ClrNavLevel.propDecorators = {
|
|
18657
|
+
_level: [{ type: Input, args: ['clr-nav-level',] }],
|
|
18658
|
+
closeButtonAriaLabel: [{ type: Input, args: ['closeAriaLabel',] }],
|
|
18659
|
+
onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }],
|
|
18660
|
+
onMouseClick: [{ type: HostListener, args: ['click', ['$event.target'],] }]
|
|
18661
|
+
};
|
|
18662
|
+
|
|
18663
|
+
/*
|
|
18664
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18665
|
+
* This software is released under MIT license.
|
|
18666
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18667
|
+
*/
|
|
18668
|
+
const CLR_NAVIGATION_DIRECTIVES = [
|
|
18669
|
+
ClrHeader,
|
|
18670
|
+
ClrNavLevel,
|
|
18671
|
+
NavDetectionOompaLoompa,
|
|
18672
|
+
MainContainerWillyWonka,
|
|
18673
|
+
];
|
|
18674
|
+
class ClrNavigationModule {
|
|
18675
|
+
}
|
|
18676
|
+
ClrNavigationModule.decorators = [
|
|
18677
|
+
{ type: NgModule, args: [{
|
|
18678
|
+
imports: [CommonModule, ClrIconModule, ClrDropdownModule],
|
|
18679
|
+
declarations: [CLR_NAVIGATION_DIRECTIVES],
|
|
18680
|
+
exports: [CLR_NAVIGATION_DIRECTIVES],
|
|
18681
|
+
},] }
|
|
18682
|
+
];
|
|
18683
|
+
|
|
18684
|
+
/*
|
|
18685
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18686
|
+
* This software is released under MIT license.
|
|
18687
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18688
|
+
*/
|
|
18689
|
+
class TemplateRefContainer {
|
|
18690
|
+
}
|
|
18691
|
+
TemplateRefContainer.decorators = [
|
|
18692
|
+
{ type: Component, args: [{
|
|
18693
|
+
template: `
|
|
18694
|
+
<ng-template>
|
|
18695
|
+
<ng-content></ng-content>
|
|
18696
|
+
</ng-template>
|
|
18697
|
+
`
|
|
18698
|
+
},] }
|
|
18699
|
+
];
|
|
18700
|
+
TemplateRefContainer.propDecorators = {
|
|
18701
|
+
template: [{ type: ViewChild, args: [TemplateRef,] }]
|
|
18702
|
+
};
|
|
18703
|
+
|
|
18704
|
+
/*
|
|
18705
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18706
|
+
* This software is released under MIT license.
|
|
18707
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18708
|
+
*/
|
|
18709
|
+
const TEMPLATE_REF_DIRECTIVES = [TemplateRefContainer];
|
|
18710
|
+
|
|
18711
|
+
/*
|
|
18712
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18713
|
+
* This software is released under MIT license.
|
|
18714
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18715
|
+
*/
|
|
18716
|
+
class ClrTemplateRefModule {
|
|
18717
|
+
}
|
|
18718
|
+
ClrTemplateRefModule.decorators = [
|
|
18719
|
+
{ type: NgModule, args: [{
|
|
18720
|
+
imports: [CommonModule],
|
|
18721
|
+
declarations: [TEMPLATE_REF_DIRECTIVES],
|
|
18722
|
+
entryComponents: [TEMPLATE_REF_DIRECTIVES],
|
|
18723
|
+
exports: [TEMPLATE_REF_DIRECTIVES],
|
|
18724
|
+
},] }
|
|
18725
|
+
];
|
|
18726
|
+
|
|
18727
|
+
/*
|
|
18728
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18729
|
+
* This software is released under MIT license.
|
|
18730
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18731
|
+
*/
|
|
18732
|
+
class TabsWillyWonka extends WillyWonka {
|
|
18733
|
+
}
|
|
18734
|
+
TabsWillyWonka.decorators = [
|
|
18735
|
+
{ type: Directive, args: [{ selector: 'clr-tabs' },] }
|
|
18736
|
+
];
|
|
18737
|
+
|
|
18738
|
+
/*
|
|
18739
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18740
|
+
* This software is released under MIT license.
|
|
18741
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18742
|
+
*/
|
|
18743
|
+
class ActiveOompaLoompa extends OompaLoompa {
|
|
18744
|
+
constructor(cdr, willyWonka, id, ifActive) {
|
|
18745
|
+
if (!willyWonka) {
|
|
18746
|
+
throw new Error('clrTabLink and clr-tab-content should only be used inside of a clr-tabs');
|
|
18747
|
+
}
|
|
18748
|
+
super(cdr, willyWonka);
|
|
18749
|
+
this.ifActive = ifActive;
|
|
18750
|
+
this.id = id;
|
|
18751
|
+
}
|
|
18752
|
+
get flavor() {
|
|
18753
|
+
return this.ifActive.current === this.id;
|
|
18754
|
+
}
|
|
18755
|
+
}
|
|
18756
|
+
ActiveOompaLoompa.decorators = [
|
|
18757
|
+
{ type: Directive, args: [{ selector: '[clrTabLink], clr-tab-content' },] }
|
|
18758
|
+
];
|
|
18759
|
+
ActiveOompaLoompa.ctorParameters = () => [
|
|
18760
|
+
{ type: ChangeDetectorRef },
|
|
18761
|
+
{ type: TabsWillyWonka, decorators: [{ type: Optional }] },
|
|
18762
|
+
{ type: Number, decorators: [{ type: Inject, args: [IF_ACTIVE_ID,] }] },
|
|
18763
|
+
{ type: IfActiveService }
|
|
18764
|
+
];
|
|
18765
|
+
|
|
18766
|
+
/*
|
|
18767
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18768
|
+
* This software is released under MIT license.
|
|
18769
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18770
|
+
*/
|
|
18771
|
+
var TabsLayout;
|
|
18772
|
+
(function (TabsLayout) {
|
|
18773
|
+
TabsLayout["HORIZONTAL"] = "horizontal";
|
|
18774
|
+
TabsLayout["VERTICAL"] = "vertical";
|
|
18775
|
+
})(TabsLayout || (TabsLayout = {}));
|
|
18776
|
+
|
|
18777
|
+
/*
|
|
18778
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18779
|
+
* This software is released under MIT license.
|
|
18780
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18781
|
+
*/
|
|
18782
|
+
class TabsService {
|
|
18783
|
+
constructor() {
|
|
18784
|
+
this._children = [];
|
|
18785
|
+
this.layout = TabsLayout.HORIZONTAL;
|
|
18786
|
+
}
|
|
18787
|
+
register(tab) {
|
|
18788
|
+
this._children.push(tab);
|
|
18789
|
+
}
|
|
18790
|
+
get children() {
|
|
18791
|
+
return this._children;
|
|
18792
|
+
}
|
|
18793
|
+
get activeTab() {
|
|
18794
|
+
return this.children.find((tab) => {
|
|
18795
|
+
return tab.active;
|
|
18796
|
+
});
|
|
18797
|
+
}
|
|
18798
|
+
get overflowTabs() {
|
|
18799
|
+
if (this.layout === TabsLayout.VERTICAL) {
|
|
18800
|
+
return [];
|
|
18801
|
+
}
|
|
18802
|
+
else {
|
|
18803
|
+
return this.children.filter((tab) => tab.tabLink.inOverflow === true);
|
|
18804
|
+
}
|
|
18805
|
+
}
|
|
18806
|
+
unregister(tab) {
|
|
18807
|
+
const index = this.children.indexOf(tab);
|
|
18808
|
+
if (index > -1) {
|
|
18809
|
+
this.children.splice(index, 1);
|
|
18810
|
+
}
|
|
18811
|
+
}
|
|
18812
|
+
}
|
|
18813
|
+
TabsService.decorators = [
|
|
18814
|
+
{ type: Injectable }
|
|
18815
|
+
];
|
|
18816
|
+
|
|
18817
|
+
/*
|
|
18818
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18819
|
+
* This software is released under MIT license.
|
|
18820
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18821
|
+
*/
|
|
18822
|
+
let nbTabContentComponents = 0;
|
|
18823
|
+
class ClrTabContent {
|
|
18824
|
+
constructor(ifActiveService, id, ariaService, tabsService) {
|
|
18825
|
+
this.ifActiveService = ifActiveService;
|
|
18826
|
+
this.id = id;
|
|
18827
|
+
this.ariaService = ariaService;
|
|
18828
|
+
this.tabsService = tabsService;
|
|
18829
|
+
if (!this.tabContentId) {
|
|
18830
|
+
this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;
|
|
18831
|
+
}
|
|
18832
|
+
}
|
|
18833
|
+
// The template must be applied on the top-down phase of view-child initialization to prevent
|
|
18834
|
+
// components in the content from initializing before a content container exists.
|
|
18835
|
+
// Some child components need their container for sizing calculations.
|
|
18836
|
+
set templateRef(value) {
|
|
18837
|
+
this.viewRef = this.tabsService.tabContentViewContainer.createEmbeddedView(value);
|
|
18838
|
+
}
|
|
18839
|
+
get ariaLabelledBy() {
|
|
18840
|
+
return this.ariaService.ariaLabelledBy;
|
|
18841
|
+
}
|
|
18842
|
+
get tabContentId() {
|
|
18209
18843
|
return this.ariaService.ariaControls;
|
|
18210
18844
|
}
|
|
18211
18845
|
set tabContentId(id) {
|
|
@@ -21857,7 +22491,14 @@ class ClrWizard {
|
|
|
21857
22491
|
return this.navService.wizardFinished.subscribe(() => this.emitWizardFinished());
|
|
21858
22492
|
}
|
|
21859
22493
|
listenForPageChanges() {
|
|
21860
|
-
return this.navService.currentPageChanged.subscribe(() =>
|
|
22494
|
+
return this.navService.currentPageChanged.subscribe(() => {
|
|
22495
|
+
var _a;
|
|
22496
|
+
// Added to address VPAT-749:
|
|
22497
|
+
// When clicking on a wizard tab, focus should move to that
|
|
22498
|
+
// tabs content to make the wizard more accessible.
|
|
22499
|
+
(_a = this.wizardTitle) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
22500
|
+
this.currentPageChanged.emit();
|
|
22501
|
+
});
|
|
21861
22502
|
}
|
|
21862
22503
|
updateNavOnPageChanges() {
|
|
21863
22504
|
const changes = this.differ.diff(this.pages);
|
|
@@ -22377,13 +23018,6 @@ AccordionService.decorators = [
|
|
|
22377
23018
|
{ type: Injectable }
|
|
22378
23019
|
];
|
|
22379
23020
|
|
|
22380
|
-
/*
|
|
22381
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
22382
|
-
* This software is released under MIT license.
|
|
22383
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
22384
|
-
*/
|
|
22385
|
-
const defaultAnimationTiming = '0.2s ease-in-out';
|
|
22386
|
-
|
|
22387
23021
|
/*
|
|
22388
23022
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
22389
23023
|
* This software is released under MIT license.
|
|
@@ -23501,173 +24135,41 @@ ClrTimelineModule.decorators = [
|
|
|
23501
24135
|
exports: [...CLR_TIMELINE_DIRECTIVES, ClrIconModule, ClrSpinnerModule],
|
|
23502
24136
|
declarations: [CLR_TIMELINE_DIRECTIVES],
|
|
23503
24137
|
},] }
|
|
23504
|
-
];
|
|
23505
|
-
ClrTimelineModule.ctorParameters = () => [];
|
|
23506
|
-
|
|
23507
|
-
/*
|
|
23508
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23509
|
-
* This software is released under MIT license.
|
|
23510
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23511
|
-
*/
|
|
23512
|
-
class ClarityModule {
|
|
23513
|
-
}
|
|
23514
|
-
ClarityModule.decorators = [
|
|
23515
|
-
{ type: NgModule, args: [{
|
|
23516
|
-
exports: [
|
|
23517
|
-
ClrEmphasisModule,
|
|
23518
|
-
ClrDataModule,
|
|
23519
|
-
ClrIconModule,
|
|
23520
|
-
ClrModalModule,
|
|
23521
|
-
ClrLoadingModule,
|
|
23522
|
-
ClrConditionalModule,
|
|
23523
|
-
ClrFocusTrapModule,
|
|
23524
|
-
ClrFocusOnViewInitModule,
|
|
23525
|
-
ClrButtonModule,
|
|
23526
|
-
ClrFormsModule,
|
|
23527
|
-
ClrLayoutModule,
|
|
23528
|
-
ClrPopoverModule,
|
|
23529
|
-
ClrWizardModule,
|
|
23530
|
-
ClrDragAndDropModule,
|
|
23531
|
-
ClrStepperModule,
|
|
23532
|
-
ClrSpinnerModule,
|
|
23533
|
-
ClrProgressBarModule,
|
|
23534
|
-
ClrPopoverModuleNext,
|
|
23535
|
-
ClrTimelineModule,
|
|
23536
|
-
],
|
|
23537
|
-
},] }
|
|
23538
|
-
];
|
|
23539
|
-
|
|
23540
|
-
/*
|
|
23541
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23542
|
-
* This software is released under MIT license.
|
|
23543
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23544
|
-
*/
|
|
23545
|
-
|
|
23546
|
-
/*
|
|
23547
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23548
|
-
* This software is released under MIT license.
|
|
23549
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23550
|
-
*/
|
|
23551
|
-
|
|
23552
|
-
/*
|
|
23553
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23554
|
-
* This software is released under MIT license.
|
|
23555
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23556
|
-
*/
|
|
23557
|
-
|
|
23558
|
-
/*
|
|
23559
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23560
|
-
* This software is released under MIT license.
|
|
23561
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23562
|
-
*/
|
|
23563
|
-
|
|
23564
|
-
/*
|
|
23565
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23566
|
-
* This software is released under MIT license.
|
|
23567
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23568
|
-
*/
|
|
23569
|
-
|
|
23570
|
-
/*
|
|
23571
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23572
|
-
* This software is released under MIT license.
|
|
23573
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23574
|
-
*/
|
|
23575
|
-
|
|
23576
|
-
/*
|
|
23577
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23578
|
-
* This software is released under MIT license.
|
|
23579
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23580
|
-
*/
|
|
23581
|
-
|
|
23582
|
-
/*
|
|
23583
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23584
|
-
* This software is released under MIT license.
|
|
23585
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23586
|
-
*/
|
|
23587
|
-
|
|
23588
|
-
/*
|
|
23589
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23590
|
-
* This software is released under MIT license.
|
|
23591
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23592
|
-
*/
|
|
23593
|
-
|
|
23594
|
-
/*
|
|
23595
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23596
|
-
* This software is released under MIT license.
|
|
23597
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23598
|
-
*/
|
|
23599
|
-
|
|
23600
|
-
/*
|
|
23601
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23602
|
-
* This software is released under MIT license.
|
|
23603
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23604
|
-
*/
|
|
23605
|
-
|
|
23606
|
-
/*
|
|
23607
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23608
|
-
* This software is released under MIT license.
|
|
23609
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23610
|
-
*/
|
|
23611
|
-
|
|
23612
|
-
/*
|
|
23613
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23614
|
-
* This software is released under MIT license.
|
|
23615
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23616
|
-
*/
|
|
23617
|
-
|
|
23618
|
-
/*
|
|
23619
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23620
|
-
* This software is released under MIT license.
|
|
23621
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23622
|
-
*/
|
|
23623
|
-
|
|
23624
|
-
/*
|
|
23625
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23626
|
-
* This software is released under MIT license.
|
|
23627
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23628
|
-
*/
|
|
23629
|
-
|
|
23630
|
-
/*
|
|
23631
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23632
|
-
* This software is released under MIT license.
|
|
23633
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23634
|
-
*/
|
|
23635
|
-
|
|
23636
|
-
/*
|
|
23637
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23638
|
-
* This software is released under MIT license.
|
|
23639
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23640
|
-
*/
|
|
23641
|
-
|
|
23642
|
-
/*
|
|
23643
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23644
|
-
* This software is released under MIT license.
|
|
23645
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23646
|
-
*/
|
|
23647
|
-
|
|
23648
|
-
/*
|
|
23649
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23650
|
-
* This software is released under MIT license.
|
|
23651
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23652
|
-
*/
|
|
23653
|
-
|
|
23654
|
-
/*
|
|
23655
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23656
|
-
* This software is released under MIT license.
|
|
23657
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23658
|
-
*/
|
|
23659
|
-
|
|
23660
|
-
/*
|
|
23661
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23662
|
-
* This software is released under MIT license.
|
|
23663
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23664
|
-
*/
|
|
24138
|
+
];
|
|
24139
|
+
ClrTimelineModule.ctorParameters = () => [];
|
|
23665
24140
|
|
|
23666
24141
|
/*
|
|
23667
24142
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23668
24143
|
* This software is released under MIT license.
|
|
23669
24144
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23670
24145
|
*/
|
|
24146
|
+
class ClarityModule {
|
|
24147
|
+
}
|
|
24148
|
+
ClarityModule.decorators = [
|
|
24149
|
+
{ type: NgModule, args: [{
|
|
24150
|
+
exports: [
|
|
24151
|
+
ClrEmphasisModule,
|
|
24152
|
+
ClrDataModule,
|
|
24153
|
+
ClrIconModule,
|
|
24154
|
+
ClrModalModule,
|
|
24155
|
+
ClrLoadingModule,
|
|
24156
|
+
ClrConditionalModule,
|
|
24157
|
+
ClrFocusTrapModule,
|
|
24158
|
+
ClrFocusOnViewInitModule,
|
|
24159
|
+
ClrButtonModule,
|
|
24160
|
+
ClrFormsModule,
|
|
24161
|
+
ClrLayoutModule,
|
|
24162
|
+
ClrPopoverModule,
|
|
24163
|
+
ClrWizardModule,
|
|
24164
|
+
ClrDragAndDropModule,
|
|
24165
|
+
ClrStepperModule,
|
|
24166
|
+
ClrSpinnerModule,
|
|
24167
|
+
ClrProgressBarModule,
|
|
24168
|
+
ClrPopoverModuleNext,
|
|
24169
|
+
ClrTimelineModule,
|
|
24170
|
+
],
|
|
24171
|
+
},] }
|
|
24172
|
+
];
|
|
23671
24173
|
|
|
23672
24174
|
/*
|
|
23673
24175
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -23746,16 +24248,6 @@ ClarityModule.decorators = [
|
|
|
23746
24248
|
* This software is released under MIT license.
|
|
23747
24249
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23748
24250
|
*/
|
|
23749
|
-
const CLR_MENU_POSITIONS = [
|
|
23750
|
-
'bottom-left',
|
|
23751
|
-
'bottom-right',
|
|
23752
|
-
'top-left',
|
|
23753
|
-
'top-right',
|
|
23754
|
-
'left-bottom',
|
|
23755
|
-
'left-top',
|
|
23756
|
-
'right-bottom',
|
|
23757
|
-
'right-top',
|
|
23758
|
-
];
|
|
23759
24251
|
|
|
23760
24252
|
/*
|
|
23761
24253
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -23786,14 +24278,6 @@ const CLR_MENU_POSITIONS = [
|
|
|
23786
24278
|
* This software is released under MIT license.
|
|
23787
24279
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23788
24280
|
*/
|
|
23789
|
-
function collapse() {
|
|
23790
|
-
'use strict';
|
|
23791
|
-
return [
|
|
23792
|
-
state('true', style({ height: 0, 'overflow-y': 'hidden' })),
|
|
23793
|
-
transition('true => false', [animate(defaultAnimationTiming, style({ height: '*', 'overflow-y': 'hidden' }))]),
|
|
23794
|
-
transition('false => true', [style({ height: '*', 'overflow-y': 'hidden' }), animate(defaultAnimationTiming)]),
|
|
23795
|
-
];
|
|
23796
|
-
}
|
|
23797
24281
|
|
|
23798
24282
|
/*
|
|
23799
24283
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -23806,12 +24290,6 @@ function collapse() {
|
|
|
23806
24290
|
* This software is released under MIT license.
|
|
23807
24291
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23808
24292
|
*/
|
|
23809
|
-
function fade(opacity = 1) {
|
|
23810
|
-
return [
|
|
23811
|
-
transition('void => *', [style({ opacity: 0 }), animate(defaultAnimationTiming, style({ opacity: opacity }))]),
|
|
23812
|
-
transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0 }))]),
|
|
23813
|
-
];
|
|
23814
|
-
}
|
|
23815
24293
|
|
|
23816
24294
|
/*
|
|
23817
24295
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -23824,28 +24302,6 @@ function fade(opacity = 1) {
|
|
|
23824
24302
|
* This software is released under MIT license.
|
|
23825
24303
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23826
24304
|
*/
|
|
23827
|
-
function fadeSlide(direction) {
|
|
23828
|
-
let transform = null;
|
|
23829
|
-
if (direction === 'up') {
|
|
23830
|
-
transform = 'translate(0, 25%)';
|
|
23831
|
-
}
|
|
23832
|
-
else if (direction === 'down') {
|
|
23833
|
-
transform = 'translate(0, -25%)';
|
|
23834
|
-
}
|
|
23835
|
-
else if (direction === 'left') {
|
|
23836
|
-
transform = 'translate(25%, 0)';
|
|
23837
|
-
}
|
|
23838
|
-
else if (direction === 'right') {
|
|
23839
|
-
transform = 'translate(-25%, 0)';
|
|
23840
|
-
}
|
|
23841
|
-
else {
|
|
23842
|
-
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
23843
|
-
}
|
|
23844
|
-
return [
|
|
23845
|
-
transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
|
|
23846
|
-
transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
|
|
23847
|
-
];
|
|
23848
|
-
}
|
|
23849
24305
|
|
|
23850
24306
|
/*
|
|
23851
24307
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -23858,28 +24314,6 @@ function fadeSlide(direction) {
|
|
|
23858
24314
|
* This software is released under MIT license.
|
|
23859
24315
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23860
24316
|
*/
|
|
23861
|
-
function slide(direction) {
|
|
23862
|
-
let transform = null;
|
|
23863
|
-
if (direction === 'up') {
|
|
23864
|
-
transform = 'translate(0, 25%)';
|
|
23865
|
-
}
|
|
23866
|
-
else if (direction === 'down') {
|
|
23867
|
-
transform = 'translate(0, -25%)';
|
|
23868
|
-
}
|
|
23869
|
-
else if (direction === 'left') {
|
|
23870
|
-
transform = 'translate(25%, 0)';
|
|
23871
|
-
}
|
|
23872
|
-
else if (direction === 'right') {
|
|
23873
|
-
transform = 'translate(-25%, 0)';
|
|
23874
|
-
}
|
|
23875
|
-
else {
|
|
23876
|
-
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
23877
|
-
}
|
|
23878
|
-
return [
|
|
23879
|
-
transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
|
|
23880
|
-
transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
|
|
23881
|
-
];
|
|
23882
|
-
}
|
|
23883
24317
|
|
|
23884
24318
|
/*
|
|
23885
24319
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -23922,155 +24356,6 @@ function slide(direction) {
|
|
|
23922
24356
|
* This software is released under MIT license.
|
|
23923
24357
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23924
24358
|
*/
|
|
23925
|
-
var ClrAriaLivePoliteness;
|
|
23926
|
-
(function (ClrAriaLivePoliteness) {
|
|
23927
|
-
ClrAriaLivePoliteness["off"] = "off";
|
|
23928
|
-
ClrAriaLivePoliteness["polite"] = "polite";
|
|
23929
|
-
ClrAriaLivePoliteness["assertive"] = "assertive";
|
|
23930
|
-
})(ClrAriaLivePoliteness || (ClrAriaLivePoliteness = {}));
|
|
23931
|
-
/**
|
|
23932
|
-
* Time in milliseconds before inserting the content into the container
|
|
23933
|
-
*/
|
|
23934
|
-
const ARIA_LIVE_TICK = 100;
|
|
23935
|
-
/**
|
|
23936
|
-
* @deprecated
|
|
23937
|
-
*
|
|
23938
|
-
* -- ClrAriaLiveService is deprecated in 5.0 to be removed in 6.0 --
|
|
23939
|
-
* Please consider using the LiveAnnouncer in the Angular Material CDK
|
|
23940
|
-
* if your project needs this functionality.
|
|
23941
|
-
* More info: https://material.angular.io/cdk/a11y/overview#example-1
|
|
23942
|
-
*
|
|
23943
|
-
* This service handle `aria-live` accessibility attribute. The issue is that you need
|
|
23944
|
-
* to have the DOM Element with attribute `aria-live` before you could insert content
|
|
23945
|
-
* and SR (Screen Reader) pick the change and announce it.
|
|
23946
|
-
*
|
|
23947
|
-
* ```typescript
|
|
23948
|
-
* import { ClrAriaLiveService } from 'src/clr-angular/utils/a11y/aria-live.service';
|
|
23949
|
-
*
|
|
23950
|
-
* @Component({
|
|
23951
|
-
* selector: 'clr-demo-component',
|
|
23952
|
-
* providers: [ClrAriaLiveService],
|
|
23953
|
-
* template: `
|
|
23954
|
-
* <ng-content></ng-content>
|
|
23955
|
-
* `,
|
|
23956
|
-
* })
|
|
23957
|
-
* export class DemoComponent {
|
|
23958
|
-
* constructor(ariaLiveService: ClrAriaLiveService) {}
|
|
23959
|
-
*
|
|
23960
|
-
* public actionThatWillTriggerChange() {
|
|
23961
|
-
* this.ariaLiveService.announce('message that I want to announce to SR');
|
|
23962
|
-
* }
|
|
23963
|
-
* }
|
|
23964
|
-
* ```
|
|
23965
|
-
*
|
|
23966
|
-
*/
|
|
23967
|
-
class ClrAriaLiveService {
|
|
23968
|
-
constructor(ngZone, _document, platformId) {
|
|
23969
|
-
this.ngZone = ngZone;
|
|
23970
|
-
this.platformId = platformId;
|
|
23971
|
-
this._id = `clr-aria-live-element-${uniqueIdFactory()}`;
|
|
23972
|
-
this.document = _document;
|
|
23973
|
-
}
|
|
23974
|
-
/**
|
|
23975
|
-
* get access to the internal HTML `id` that gonna be used for the AriaLive container.
|
|
23976
|
-
* @return ID of the DOM Element as string.
|
|
23977
|
-
*/
|
|
23978
|
-
get id() {
|
|
23979
|
-
return this._id;
|
|
23980
|
-
}
|
|
23981
|
-
/**
|
|
23982
|
-
* Append text content inside the AriaLive Container. This method will check if the
|
|
23983
|
-
* DOM Element is existing if not it will create one for us and the will apply the text.
|
|
23984
|
-
*
|
|
23985
|
-
* ```typescript
|
|
23986
|
-
* this.ariaLiveService.announce(this.el.nativeElement);
|
|
23987
|
-
* // or
|
|
23988
|
-
* this.ariaLiveService.announce('Message to announce to SR');
|
|
23989
|
-
* ```
|
|
23990
|
-
*
|
|
23991
|
-
* @remark
|
|
23992
|
-
* When second argument is `AriaLivePoliteness.off` we won't create aria container or update it.
|
|
23993
|
-
* The reason for that is that we don't want to do additional work if the SR will ignore it.
|
|
23994
|
-
*
|
|
23995
|
-
* @param message - This could be simple string or HTMLElement
|
|
23996
|
-
* @param politeness - 'polite', 'assertive' or 'off'
|
|
23997
|
-
*/
|
|
23998
|
-
announce(message, politeness = ClrAriaLivePoliteness.polite) {
|
|
23999
|
-
if (politeness === ClrAriaLivePoliteness.off) {
|
|
24000
|
-
return;
|
|
24001
|
-
}
|
|
24002
|
-
if (!this.ariaLiveElement && isPlatformBrowser(this.platformId)) {
|
|
24003
|
-
this.ariaLiveElement = this.createContainer();
|
|
24004
|
-
}
|
|
24005
|
-
message = typeof message !== 'string' && isPlatformBrowser(this.platformId) ? message.textContent : message;
|
|
24006
|
-
// when there is no message do NOTHING!
|
|
24007
|
-
if (!message) {
|
|
24008
|
-
return;
|
|
24009
|
-
}
|
|
24010
|
-
this.ariaLiveElement.setAttribute('aria-live', politeness);
|
|
24011
|
-
// This 100ms timeout is necessary for some browser + screen-reader combinations:
|
|
24012
|
-
// - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
|
|
24013
|
-
// - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
|
|
24014
|
-
// second time without clearing and then using a non-zero delay.
|
|
24015
|
-
// (using JAWS 17 at time of this writing).
|
|
24016
|
-
this.ngZone.runOutsideAngular(() => {
|
|
24017
|
-
// This clearTimeout will stop all older messages from announcing
|
|
24018
|
-
// in the case where the messages are comming too fast we gonna try to append only
|
|
24019
|
-
// the last one. That's what the SR will try to do anyway.
|
|
24020
|
-
clearTimeout(this.previousTimeout);
|
|
24021
|
-
this.previousTimeout = setTimeout(() => {
|
|
24022
|
-
this.ariaLiveElement.textContent = message;
|
|
24023
|
-
}, ARIA_LIVE_TICK);
|
|
24024
|
-
});
|
|
24025
|
-
}
|
|
24026
|
-
/**
|
|
24027
|
-
* onDestroy life cycle - must stop all active setTimeouts and remove the AriaLive
|
|
24028
|
-
* container from the document.
|
|
24029
|
-
*/
|
|
24030
|
-
ngOnDestroy() {
|
|
24031
|
-
clearTimeout(this.previousTimeout);
|
|
24032
|
-
if (isPlatformBrowser(this.platformId) && this.ariaLiveElement) {
|
|
24033
|
-
this.document.body.removeChild(this.ariaLiveElement);
|
|
24034
|
-
this.ariaLiveElement = null;
|
|
24035
|
-
}
|
|
24036
|
-
}
|
|
24037
|
-
/**
|
|
24038
|
-
* Create AriaLive DOM element as a last child of the document.
|
|
24039
|
-
* After the element is created, we gonna apply Clarity class to hide it from
|
|
24040
|
-
* the screen and set the `aria-live` politness.
|
|
24041
|
-
*
|
|
24042
|
-
* `clr-sr-only` is the CSS class that is used to hide the element from the screen.
|
|
24043
|
-
*
|
|
24044
|
-
* @remark
|
|
24045
|
-
* Calling this method multiple times will create multiple DOM Elements, that
|
|
24046
|
-
* won't be tracked and will be GC after the service is destroyed.
|
|
24047
|
-
*
|
|
24048
|
-
* @return AriaLive container as HTMLElement
|
|
24049
|
-
*
|
|
24050
|
-
*/
|
|
24051
|
-
createContainer() {
|
|
24052
|
-
const ariaLiveElement = this.document.createElement('div');
|
|
24053
|
-
ariaLiveElement.setAttribute('id', this.id);
|
|
24054
|
-
// Use clarity screen reader class to hide the dom element
|
|
24055
|
-
// and fix the scrollbar shake
|
|
24056
|
-
ariaLiveElement.classList.add('clr-sr-only');
|
|
24057
|
-
ariaLiveElement.setAttribute('aria-atomic', 'true');
|
|
24058
|
-
ariaLiveElement.setAttribute('aria-live', ClrAriaLivePoliteness.polite);
|
|
24059
|
-
this.document.body.appendChild(ariaLiveElement);
|
|
24060
|
-
return ariaLiveElement;
|
|
24061
|
-
}
|
|
24062
|
-
}
|
|
24063
|
-
ClrAriaLiveService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ClrAriaLiveService_Factory() { return new ClrAriaLiveService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i0.PLATFORM_ID)); }, token: ClrAriaLiveService, providedIn: "root" });
|
|
24064
|
-
ClrAriaLiveService.decorators = [
|
|
24065
|
-
{ type: Injectable, args: [{
|
|
24066
|
-
providedIn: 'root',
|
|
24067
|
-
},] }
|
|
24068
|
-
];
|
|
24069
|
-
ClrAriaLiveService.ctorParameters = () => [
|
|
24070
|
-
{ type: NgZone },
|
|
24071
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
24072
|
-
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
24073
|
-
];
|
|
24074
24359
|
|
|
24075
24360
|
/*
|
|
24076
24361
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -24095,6 +24380,16 @@ ClrAriaLiveService.ctorParameters = () => [
|
|
|
24095
24380
|
* This software is released under MIT license.
|
|
24096
24381
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
24097
24382
|
*/
|
|
24383
|
+
const CLR_MENU_POSITIONS = [
|
|
24384
|
+
'bottom-left',
|
|
24385
|
+
'bottom-right',
|
|
24386
|
+
'top-left',
|
|
24387
|
+
'top-right',
|
|
24388
|
+
'left-bottom',
|
|
24389
|
+
'left-top',
|
|
24390
|
+
'right-bottom',
|
|
24391
|
+
'right-top',
|
|
24392
|
+
];
|
|
24098
24393
|
|
|
24099
24394
|
/*
|
|
24100
24395
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -24172,5 +24467,5 @@ ClrAriaLiveService.ctorParameters = () => [
|
|
|
24172
24467
|
* Generated bundle index. Do not edit.
|
|
24173
24468
|
*/
|
|
24174
24469
|
|
|
24175
|
-
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, domAdapterFactory as ɵa, LayoutService as ɵb, AlertIconAndTypesService as ɵba, MultiAlertService as ɵbb, ControlIdService as ɵbc, NgControlService as ɵbd, ClrAbstractControl as ɵbe, ContainerIdService as ɵbf, AbstractIfState as ɵbg, IfControlStateService as ɵbh, MarkControlService as ɵbi, ControlClassService as ɵbj, ClrHostWrappingModule as ɵbk, EmptyAnchor as ɵbl, ClrKeyFocusModule as ɵbm, ClrKeyFocus as ɵbn, ClrKeyFocusItem as ɵbo, ClrRovingTabindex as ɵbp, OptionSelectionService as ɵbq, AriaService as ɵbr, ComboboxFocusHandler as ɵbs, COMBOBOX_FOCUS_HANDLER_PROVIDER as ɵbt, ComboboxContainerService as ɵbu, DateNavigationService as ɵbv, DateFormControlService as ɵbw, LocaleHelperService as ɵbx, FocusService$1 as ɵby, DateIOService as ɵbz, FOCUS_ON_VIEW_INIT_PROVIDER as ɵc, DatepickerEnabledService as ɵca, ViewManagerService as ɵcb, DatepickerFocusService as ɵcc, DatalistIdService as ɵcd, ClrOutsideClickModule as ɵce, OUSTIDE_CLICK_DIRECTIVES as ɵcf, OutsideClick as ɵcg, ClrExpandableAnimationModule as ɵch, DomAdapter as ɵci, DragEventListenerService as ɵcj, DragAndDropEventBusService as ɵck, DragHandleRegistrarService as ɵcl, DraggableSnapshotService as ɵcm, GlobalDragModeService as ɵcn, Selection as ɵco, Items as ɵcp, FiltersProvider as ɵcq, Page as ɵcr, StateDebouncer as ɵcs, Sort as ɵct, DatagridRenderOrganizer as ɵcu, RowActionService as ɵcv, ExpandableRowsCount as ɵcw, DetailService as ɵcx, StateProvider as ɵcy, TableSizeService as ɵcz, FOCUS_TRAP_DIRECTIVES as ɵd, ColumnsService as ɵda, DisplayModeService as ɵdb, DatagridFilterRegistrar as ɵdc, CustomFilter as ɵdd, DatagridIfExpandService as ɵde, SignpostFocusManager as ɵdf, SignpostIdService as ɵdg, ColumnResizerService as ɵdh, COLUMN_STATE as ɵdi, columnStateFactory as ɵdj, COLUMN_STATE_PROVIDER as ɵdk, WillyWonka as ɵdm, OompaLoompa as ɵdn, StackControl as ɵdo, TreeFeaturesService as ɵdp, treeFeaturesFactory as ɵdq, TREE_FEATURES_PROVIDER as ɵdr, TreeFocusManagerService as ɵds, RecursiveChildren as ɵdt, ScrollingService as ɵdu, ButtonInGroupService as ɵdv, ResponsiveNavigationService as ɵdw, ClrTemplateRefModule as
|
|
24470
|
+
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, ɵ0, domAdapterFactory as ɵa, LayoutService as ɵb, AlertIconAndTypesService as ɵba, MultiAlertService as ɵbb, ControlIdService as ɵbc, NgControlService as ɵbd, ClrAbstractControl as ɵbe, ContainerIdService as ɵbf, AbstractIfState as ɵbg, IfControlStateService as ɵbh, MarkControlService as ɵbi, ControlClassService as ɵbj, ClrHostWrappingModule as ɵbk, EmptyAnchor as ɵbl, ClrKeyFocusModule as ɵbm, ClrKeyFocus as ɵbn, ClrKeyFocusItem as ɵbo, ClrRovingTabindex as ɵbp, OptionSelectionService as ɵbq, AriaService as ɵbr, ComboboxFocusHandler as ɵbs, COMBOBOX_FOCUS_HANDLER_PROVIDER as ɵbt, ComboboxContainerService as ɵbu, DateNavigationService as ɵbv, DateFormControlService as ɵbw, LocaleHelperService as ɵbx, FocusService$1 as ɵby, DateIOService as ɵbz, FOCUS_ON_VIEW_INIT_PROVIDER as ɵc, DatepickerEnabledService as ɵca, ViewManagerService as ɵcb, DatepickerFocusService as ɵcc, DatalistIdService as ɵcd, ClrOutsideClickModule as ɵce, OUSTIDE_CLICK_DIRECTIVES as ɵcf, OutsideClick as ɵcg, ClrExpandableAnimationModule as ɵch, DomAdapter as ɵci, DragEventListenerService as ɵcj, DragAndDropEventBusService as ɵck, DragHandleRegistrarService as ɵcl, DraggableSnapshotService as ɵcm, GlobalDragModeService as ɵcn, Selection as ɵco, Items as ɵcp, FiltersProvider as ɵcq, Page as ɵcr, StateDebouncer as ɵcs, Sort as ɵct, DatagridRenderOrganizer as ɵcu, RowActionService as ɵcv, ExpandableRowsCount as ɵcw, DetailService as ɵcx, StateProvider as ɵcy, TableSizeService as ɵcz, FOCUS_TRAP_DIRECTIVES as ɵd, ColumnsService as ɵda, DisplayModeService as ɵdb, DatagridFilterRegistrar as ɵdc, CustomFilter as ɵdd, DatagridIfExpandService as ɵde, SignpostFocusManager as ɵdf, SignpostIdService as ɵdg, ColumnResizerService as ɵdh, COLUMN_STATE as ɵdi, columnStateFactory as ɵdj, COLUMN_STATE_PROVIDER as ɵdk, WillyWonka as ɵdm, OompaLoompa as ɵdn, StackControl as ɵdo, TreeFeaturesService as ɵdp, treeFeaturesFactory as ɵdq, TREE_FEATURES_PROVIDER as ɵdr, TreeFocusManagerService as ɵds, RecursiveChildren as ɵdt, ScrollingService as ɵdu, ButtonInGroupService as ɵdv, ResponsiveNavigationService as ɵdw, FocusTrap as ɵdy, ClrTemplateRefModule as ɵdz, RootDropdownService as ɵe, TEMPLATE_REF_DIRECTIVES as ɵea, TemplateRefContainer as ɵeb, TabsService as ɵec, TABS_ID as ɵed, tokenFactory as ɵee, TABS_ID_PROVIDER as ɵef, VerticalNavService as ɵeg, VerticalNavIconService as ɵeh, VerticalNavGroupRegistrationService as ɵei, VerticalNavGroupService as ɵej, TooltipIdService as ɵek, WizardNavigationService as ɵel, PageCollectionService as ɵem, ButtonHubService as ɵen, HeaderActionService as ɵeo, AccordionService as ɵep, panelAnimation as ɵeq, stepAnimation as ɵer, defaultAnimationTiming as ɵes, StepperService as ɵet, TimelineIconAttributeService as ɵeu, clrRootDropdownFactory as ɵf, ROOT_DROPDOWN_PROVIDER as ɵg, POPOVER_HOST_ANCHOR as ɵh, FocusService as ɵi, clrFocusServiceFactory as ɵj, FOCUS_SERVICE_PROVIDER as ɵk, DropdownFocusHandler as ɵl, DROPDOWN_FOCUS_HANDLER_PROVIDER as ɵm, customFocusableItemProvider as ɵn, UNIQUE_ID as ɵo, uniqueIdFactory as ɵp, UNIQUE_ID_PROVIDER as ɵq, FocusableItem as ɵr, AbstractPopover as ɵs, BasicFocusableItem as ɵt, BASIC_FOCUSABLE_ITEM_PROVIDER as ɵu, IF_ACTIVE_ID as ɵv, tokenFactory$1 as ɵw, IF_ACTIVE_ID_PROVIDER as ɵx, IfActiveService as ɵy, IfExpandService as ɵz };
|
|
24176
24471
|
//# sourceMappingURL=clr-angular.js.map
|