@clr/angular 18.0.0-beta.1 → 18.0.0-beta.11
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/fesm2022/clr-angular-accordion.mjs +1 -1
- package/fesm2022/clr-angular-accordion.mjs.map +1 -1
- package/fesm2022/clr-angular-button.mjs +6 -6
- package/fesm2022/clr-angular-button.mjs.map +1 -1
- package/fesm2022/clr-angular-data-datagrid.mjs +45 -35
- package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -1
- package/fesm2022/clr-angular-data-tree-view.mjs +3 -3
- package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -1
- package/fesm2022/clr-angular-data.mjs +11 -9116
- package/fesm2022/clr-angular-data.mjs.map +1 -1
- package/fesm2022/clr-angular-emphasis-alert.mjs +2 -2
- package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -1
- package/fesm2022/clr-angular-emphasis.mjs +12 -778
- package/fesm2022/clr-angular-emphasis.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-checkbox.mjs +13 -44
- package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-combobox.mjs +420 -90
- package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-common.mjs +62 -57
- package/fesm2022/clr-angular-forms-common.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-datalist.mjs +2 -14
- package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-datepicker.mjs +20 -28
- package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-file-input.mjs +78 -62
- package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-input.mjs +4 -18
- package/fesm2022/clr-angular-forms-input.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-number-input.mjs +2 -14
- package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-password.mjs +2 -14
- package/fesm2022/clr-angular-forms-password.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-radio.mjs +13 -44
- package/fesm2022/clr-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-range.mjs +3 -16
- package/fesm2022/clr-angular-forms-range.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-select.mjs +3 -16
- package/fesm2022/clr-angular-forms-select.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-textarea.mjs +4 -17
- package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/clr-angular-forms.mjs +68 -8560
- package/fesm2022/clr-angular-forms.mjs.map +1 -1
- package/fesm2022/clr-angular-icon.mjs +10 -0
- package/fesm2022/clr-angular-icon.mjs.map +1 -1
- package/fesm2022/clr-angular-layout-nav.mjs +27 -25
- package/fesm2022/clr-angular-layout-nav.mjs.map +1 -1
- package/fesm2022/clr-angular-layout-tabs.mjs +1 -1
- package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -1
- package/fesm2022/clr-angular-layout.mjs +15 -2057
- package/fesm2022/clr-angular-layout.mjs.map +1 -1
- package/fesm2022/clr-angular-modal.mjs +4 -5
- package/fesm2022/clr-angular-modal.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-common.mjs +151 -85
- package/fesm2022/clr-angular-popover-common.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-dropdown.mjs +7 -4
- package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-signpost.mjs +30 -15
- package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-tooltip.mjs +7 -7
- package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -1
- package/fesm2022/clr-angular-popover.mjs +12 -2242
- package/fesm2022/clr-angular-popover.mjs.map +1 -1
- package/fesm2022/clr-angular-stepper.mjs +5 -5
- package/fesm2022/clr-angular-stepper.mjs.map +1 -1
- package/fesm2022/clr-angular-utils.mjs +20 -485
- package/fesm2022/clr-angular-utils.mjs.map +1 -1
- package/fesm2022/clr-angular-wizard.mjs +434 -223
- package/fesm2022/clr-angular-wizard.mjs.map +1 -1
- package/fesm2022/clr-angular.mjs +94 -38740
- package/fesm2022/clr-angular.mjs.map +1 -1
- package/package.json +10 -5
- package/popover/common/README.md +14 -12
- package/schematics/collection.json +14 -0
- package/schematics/ng-update/index.d.ts +2 -0
- package/schematics/ng-update/index.js +69 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
- package/schematics/ng-update/migrations/css-migration.js +177 -0
- package/schematics/ng-update/migrations/css-migration.js.map +1 -0
- package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
- package/schematics/ng-update/migrations/import-migration.js +187 -0
- package/schematics/ng-update/migrations/import-migration.js.map +1 -0
- package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
- package/schematics/ng-update/migrations/template-migration.js +261 -0
- package/schematics/ng-update/migrations/template-migration.js.map +1 -0
- package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
- package/schematics/ng-update/replacements/css-replacements.js +74 -0
- package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
- package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
- package/schematics/ng-update/replacements/import-replacements.js +108 -0
- package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
- package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
- package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
- package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
- package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
- package/schematics/ng-update/replacements/template-replacements.js +57 -0
- package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
- package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
- package/schematics/ng-update/tests/test-helpers.js +34 -0
- package/schematics/ng-update/tests/test-helpers.js.map +1 -0
- package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
- package/schematics/ng-update/utils/file-visitor.js +44 -0
- package/schematics/ng-update/utils/file-visitor.js.map +1 -0
- package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
- package/schematics/ng-update/utils/regexp-utils.js +34 -0
- package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
- package/schematics/vitest.config.d.ts +2 -0
- package/schematics/vitest.config.js +17 -0
- package/schematics/vitest.config.js.map +1 -0
- package/types/clr-angular-accordion.d.ts +1 -1
- package/types/clr-angular-button.d.ts +1 -1
- package/types/clr-angular-data-datagrid.d.ts +23 -33
- package/types/clr-angular-data-tree-view.d.ts +10 -1
- package/types/clr-angular-data.d.ts +4 -2136
- package/types/clr-angular-emphasis.d.ts +4 -220
- package/types/clr-angular-forms-combobox.d.ts +64 -11
- package/types/clr-angular-forms-common.d.ts +9 -9
- package/types/clr-angular-forms-datepicker.d.ts +8 -1
- package/types/clr-angular-forms-file-input.d.ts +6 -3
- package/types/clr-angular-forms.d.ts +26 -2062
- package/types/clr-angular-layout-nav.d.ts +6 -2
- package/types/clr-angular-layout-tabs.d.ts +1 -1
- package/types/clr-angular-layout.d.ts +6 -463
- package/types/clr-angular-popover-common.d.ts +38 -13
- package/types/clr-angular-popover-dropdown.d.ts +2 -1
- package/types/clr-angular-popover-signpost.d.ts +15 -7
- package/types/clr-angular-popover-tooltip.d.ts +1 -1
- package/types/clr-angular-popover.d.ts +7 -559
- package/types/clr-angular-stepper.d.ts +1 -1
- package/types/clr-angular-utils.d.ts +13 -175
- package/types/clr-angular-wizard.d.ts +92 -35
- package/types/clr-angular.d.ts +22 -10238
|
@@ -1,17 +1,55 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i6 from '@angular/common';
|
|
2
2
|
import { isPlatformBrowser, CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable, EventEmitter, Output, Input, Component, Directive, ContentChild, PLATFORM_ID, ViewChild, ContentChildren, Inject, NgModule } from '@angular/core';
|
|
5
|
-
import * as i8 from '@clr/angular/modal';
|
|
6
|
-
import { ClrModal, ClrModalModule } from '@clr/angular/modal';
|
|
4
|
+
import { Injectable, EventEmitter, Output, Input, Component, Directive, ContentChild, ViewChildren, PLATFORM_ID, ViewChild, ContentChildren, Inject, NgModule } from '@angular/core';
|
|
7
5
|
import * as i3 from '@clr/angular/utils';
|
|
8
6
|
import { uniqueIdFactory } from '@clr/angular/utils';
|
|
9
7
|
import { filter } from 'rxjs/operators';
|
|
10
|
-
import { Subject, startWith, tap } from 'rxjs';
|
|
8
|
+
import { Subject, startWith, debounceTime, tap } from 'rxjs';
|
|
11
9
|
import * as i5 from '@clr/angular/icon';
|
|
12
10
|
import { ClarityIcons, errorStandardIcon, successStandardIcon, ClrIcon } from '@clr/angular/icon';
|
|
11
|
+
import * as i8 from '@clr/angular/modal';
|
|
12
|
+
import { ClrModalModule } from '@clr/angular/modal';
|
|
13
13
|
import { ClrAlertModule } from '@clr/angular/emphasis/alert';
|
|
14
14
|
|
|
15
|
+
/*
|
|
16
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
17
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18
|
+
* This software is released under MIT license.
|
|
19
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20
|
+
*/
|
|
21
|
+
var ClrWizardFooterAlign;
|
|
22
|
+
(function (ClrWizardFooterAlign) {
|
|
23
|
+
ClrWizardFooterAlign["START"] = "start";
|
|
24
|
+
ClrWizardFooterAlign["END"] = "end";
|
|
25
|
+
})(ClrWizardFooterAlign || (ClrWizardFooterAlign = {}));
|
|
26
|
+
const CLR_WIZARD_FOOTER_ALIGN_VALUES = new Set(Object.values(ClrWizardFooterAlign));
|
|
27
|
+
function footerAlignAttribute(value) {
|
|
28
|
+
if (CLR_WIZARD_FOOTER_ALIGN_VALUES.has(value)) {
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
throw new Error(`Invalid ClrWizardFooterAlign: "${value}". Expected one of: ${[...CLR_WIZARD_FOOTER_ALIGN_VALUES].join(', ')}`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
36
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
37
|
+
* This software is released under MIT license.
|
|
38
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
39
|
+
*/
|
|
40
|
+
var ClrWizardStepnavLayout;
|
|
41
|
+
(function (ClrWizardStepnavLayout) {
|
|
42
|
+
ClrWizardStepnavLayout["VERTICAL"] = "vertical";
|
|
43
|
+
ClrWizardStepnavLayout["HORIZONTAL"] = "horizontal";
|
|
44
|
+
})(ClrWizardStepnavLayout || (ClrWizardStepnavLayout = {}));
|
|
45
|
+
const CLR_WIZARD_STEPNAV_LAYOUT_VALUES = new Set(Object.values(ClrWizardStepnavLayout));
|
|
46
|
+
function stepnavLayoutAttribute(value) {
|
|
47
|
+
if (CLR_WIZARD_STEPNAV_LAYOUT_VALUES.has(value)) {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Invalid ClrWizardStepnavLayout: "${value}". Expected one of: ${[...CLR_WIZARD_STEPNAV_LAYOUT_VALUES].join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
15
53
|
/*
|
|
16
54
|
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
17
55
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -522,6 +560,10 @@ class WizardNavigationService {
|
|
|
522
560
|
* @memberof WizardNavigationService
|
|
523
561
|
*/
|
|
524
562
|
this.wizardDisableStepnav = false;
|
|
563
|
+
/**
|
|
564
|
+
* The layout of the wizard stepnav, either 'vertical' or 'horizontal'.
|
|
565
|
+
*/
|
|
566
|
+
this.stepnavLayout = ClrWizardStepnavLayout.VERTICAL;
|
|
525
567
|
/**
|
|
526
568
|
*
|
|
527
569
|
* @memberof WizardNavigationService
|
|
@@ -589,9 +631,7 @@ class WizardNavigationService {
|
|
|
589
631
|
*
|
|
590
632
|
* @memberof WizardNavigationService
|
|
591
633
|
*/
|
|
592
|
-
get
|
|
593
|
-
// TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'
|
|
594
|
-
// A BREAKING CHANGE SO AWAITING MINOR RELEASE
|
|
634
|
+
get currentPageChange() {
|
|
595
635
|
return this._currentChanged.asObservable();
|
|
596
636
|
}
|
|
597
637
|
/**
|
|
@@ -1033,6 +1073,191 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1033
1073
|
type: Injectable
|
|
1034
1074
|
}], ctorParameters: () => [{ type: WizardNavigationService }] });
|
|
1035
1075
|
|
|
1076
|
+
/*
|
|
1077
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1078
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1079
|
+
* This software is released under MIT license.
|
|
1080
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1081
|
+
*/
|
|
1082
|
+
const DEFAULT_BUTTON_TYPES = {
|
|
1083
|
+
cancel: 'cancel',
|
|
1084
|
+
previous: 'previous',
|
|
1085
|
+
next: 'next',
|
|
1086
|
+
finish: 'finish',
|
|
1087
|
+
danger: 'danger',
|
|
1088
|
+
};
|
|
1089
|
+
const CUSTOM_BUTTON_TYPES = {
|
|
1090
|
+
cancel: 'custom-cancel',
|
|
1091
|
+
previous: 'custom-previous',
|
|
1092
|
+
next: 'custom-next',
|
|
1093
|
+
finish: 'custom-finish',
|
|
1094
|
+
danger: 'custom-danger',
|
|
1095
|
+
};
|
|
1096
|
+
class ClrWizardButton {
|
|
1097
|
+
constructor(navService, buttonService) {
|
|
1098
|
+
this.navService = navService;
|
|
1099
|
+
this.buttonService = buttonService;
|
|
1100
|
+
this.type = '';
|
|
1101
|
+
this.disabled = false;
|
|
1102
|
+
this.hidden = false;
|
|
1103
|
+
// EventEmitter which is emitted when a button is clicked.
|
|
1104
|
+
this.wasClicked = new EventEmitter(false);
|
|
1105
|
+
}
|
|
1106
|
+
get isCancel() {
|
|
1107
|
+
return this.checkDefaultAndCustomType(this.type, 'cancel');
|
|
1108
|
+
}
|
|
1109
|
+
get isNext() {
|
|
1110
|
+
return this.checkDefaultAndCustomType(this.type, 'next');
|
|
1111
|
+
}
|
|
1112
|
+
get isPrevious() {
|
|
1113
|
+
return this.checkDefaultAndCustomType(this.type, 'previous');
|
|
1114
|
+
}
|
|
1115
|
+
get isFinish() {
|
|
1116
|
+
return this.checkDefaultAndCustomType(this.type, 'finish');
|
|
1117
|
+
}
|
|
1118
|
+
get isDanger() {
|
|
1119
|
+
return this.checkDefaultAndCustomType(this.type, 'danger');
|
|
1120
|
+
}
|
|
1121
|
+
get isPrimaryAction() {
|
|
1122
|
+
return this.isNext || this.isDanger || this.isFinish;
|
|
1123
|
+
}
|
|
1124
|
+
get _disabledAttribute() {
|
|
1125
|
+
if (this.isDisabled) {
|
|
1126
|
+
return '';
|
|
1127
|
+
}
|
|
1128
|
+
return null;
|
|
1129
|
+
}
|
|
1130
|
+
get isDisabled() {
|
|
1131
|
+
// dealing with negatives here. cognitively easier to think of it like this...
|
|
1132
|
+
const disabled = true;
|
|
1133
|
+
const nav = this.navService;
|
|
1134
|
+
const page = this.navService.currentPage;
|
|
1135
|
+
// Ensure we don't change the response until buttons are ready to avoid chocolate
|
|
1136
|
+
if (!this.buttonService.buttonsReady) {
|
|
1137
|
+
return !disabled;
|
|
1138
|
+
}
|
|
1139
|
+
if (this.disabled || nav.wizardStopNavigation || !page) {
|
|
1140
|
+
return true;
|
|
1141
|
+
}
|
|
1142
|
+
if (this.isCancel) {
|
|
1143
|
+
return !disabled;
|
|
1144
|
+
}
|
|
1145
|
+
if (this.isPrevious && (nav.currentPageIsFirst || page.previousStepDisabled)) {
|
|
1146
|
+
return disabled;
|
|
1147
|
+
}
|
|
1148
|
+
if (this.isDanger && !page.readyToComplete) {
|
|
1149
|
+
return disabled;
|
|
1150
|
+
}
|
|
1151
|
+
if (this.isNext && (nav.currentPageIsLast || !page.readyToComplete)) {
|
|
1152
|
+
return disabled;
|
|
1153
|
+
}
|
|
1154
|
+
if (this.isFinish && (!nav.currentPageIsLast || !page.readyToComplete)) {
|
|
1155
|
+
return disabled;
|
|
1156
|
+
}
|
|
1157
|
+
return !disabled;
|
|
1158
|
+
}
|
|
1159
|
+
get isHidden() {
|
|
1160
|
+
// dealing with negatives here. cognitively easier to think of it like this...
|
|
1161
|
+
const hidden = true;
|
|
1162
|
+
const nav = this.navService;
|
|
1163
|
+
// Ensure we don't change the response until buttons are ready to avoid chocolate
|
|
1164
|
+
if (!this.buttonService.buttonsReady) {
|
|
1165
|
+
return !hidden;
|
|
1166
|
+
}
|
|
1167
|
+
if (this.hidden) {
|
|
1168
|
+
return true;
|
|
1169
|
+
}
|
|
1170
|
+
if (this.isCancel) {
|
|
1171
|
+
return !hidden;
|
|
1172
|
+
}
|
|
1173
|
+
if (this.isPrevious && nav.currentPageIsFirst) {
|
|
1174
|
+
return hidden;
|
|
1175
|
+
}
|
|
1176
|
+
if (this.isNext && nav.currentPageIsLast) {
|
|
1177
|
+
return hidden;
|
|
1178
|
+
}
|
|
1179
|
+
if (this.isFinish && !nav.currentPageIsLast) {
|
|
1180
|
+
return hidden;
|
|
1181
|
+
}
|
|
1182
|
+
return !hidden;
|
|
1183
|
+
}
|
|
1184
|
+
click() {
|
|
1185
|
+
if (this.isDisabled) {
|
|
1186
|
+
return;
|
|
1187
|
+
}
|
|
1188
|
+
this.wasClicked.emit(this.type);
|
|
1189
|
+
this.buttonService.buttonClicked(this.type);
|
|
1190
|
+
}
|
|
1191
|
+
checkDefaultAndCustomType(valueToCheck = '', typeToLookUp) {
|
|
1192
|
+
if (DEFAULT_BUTTON_TYPES[typeToLookUp] === valueToCheck) {
|
|
1193
|
+
return true;
|
|
1194
|
+
}
|
|
1195
|
+
if (CUSTOM_BUTTON_TYPES[typeToLookUp] === valueToCheck) {
|
|
1196
|
+
return true;
|
|
1197
|
+
}
|
|
1198
|
+
return false;
|
|
1199
|
+
}
|
|
1200
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardButton, deps: [{ token: WizardNavigationService }, { token: ButtonHubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1201
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrWizardButton, isStandalone: false, selector: "clr-wizard-button", inputs: { type: "type", disabled: ["clrWizardButtonDisabled", "disabled"], hidden: ["clrWizardButtonHidden", "hidden"] }, outputs: { wasClicked: "clrWizardButtonClicked" }, host: { properties: { "attr.aria-hidden": "isHidden" }, classAttribute: "clr-wizard-btn-wrapper" }, ngImport: i0, template: `
|
|
1202
|
+
<button
|
|
1203
|
+
type="button"
|
|
1204
|
+
class="btn clr-wizard-btn"
|
|
1205
|
+
[class.btn-link]="isCancel"
|
|
1206
|
+
[class.clr-wizard-btn--tertiary]="isCancel"
|
|
1207
|
+
[class.btn-outline]="isPrevious"
|
|
1208
|
+
[class.clr-wizard-btn--secondary]="isPrevious"
|
|
1209
|
+
[class.btn-primary]="isPrimaryAction"
|
|
1210
|
+
[class.clr-wizard-btn--primary]="isPrimaryAction"
|
|
1211
|
+
[class.btn-success]="isFinish"
|
|
1212
|
+
[class.btn-danger]="isDanger"
|
|
1213
|
+
[class.disabled]="isDisabled"
|
|
1214
|
+
[attr.disabled]="_disabledAttribute"
|
|
1215
|
+
(click)="click()"
|
|
1216
|
+
>
|
|
1217
|
+
<ng-content></ng-content>
|
|
1218
|
+
</button>
|
|
1219
|
+
`, isInline: true }); }
|
|
1220
|
+
}
|
|
1221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardButton, decorators: [{
|
|
1222
|
+
type: Component,
|
|
1223
|
+
args: [{
|
|
1224
|
+
selector: 'clr-wizard-button',
|
|
1225
|
+
template: `
|
|
1226
|
+
<button
|
|
1227
|
+
type="button"
|
|
1228
|
+
class="btn clr-wizard-btn"
|
|
1229
|
+
[class.btn-link]="isCancel"
|
|
1230
|
+
[class.clr-wizard-btn--tertiary]="isCancel"
|
|
1231
|
+
[class.btn-outline]="isPrevious"
|
|
1232
|
+
[class.clr-wizard-btn--secondary]="isPrevious"
|
|
1233
|
+
[class.btn-primary]="isPrimaryAction"
|
|
1234
|
+
[class.clr-wizard-btn--primary]="isPrimaryAction"
|
|
1235
|
+
[class.btn-success]="isFinish"
|
|
1236
|
+
[class.btn-danger]="isDanger"
|
|
1237
|
+
[class.disabled]="isDisabled"
|
|
1238
|
+
[attr.disabled]="_disabledAttribute"
|
|
1239
|
+
(click)="click()"
|
|
1240
|
+
>
|
|
1241
|
+
<ng-content></ng-content>
|
|
1242
|
+
</button>
|
|
1243
|
+
`,
|
|
1244
|
+
host: { class: 'clr-wizard-btn-wrapper', '[attr.aria-hidden]': 'isHidden' },
|
|
1245
|
+
standalone: false,
|
|
1246
|
+
}]
|
|
1247
|
+
}], ctorParameters: () => [{ type: WizardNavigationService }, { type: ButtonHubService }], propDecorators: { type: [{
|
|
1248
|
+
type: Input,
|
|
1249
|
+
args: ['type']
|
|
1250
|
+
}], disabled: [{
|
|
1251
|
+
type: Input,
|
|
1252
|
+
args: ['clrWizardButtonDisabled']
|
|
1253
|
+
}], hidden: [{
|
|
1254
|
+
type: Input,
|
|
1255
|
+
args: ['clrWizardButtonHidden']
|
|
1256
|
+
}], wasClicked: [{
|
|
1257
|
+
type: Output,
|
|
1258
|
+
args: ['clrWizardButtonClicked']
|
|
1259
|
+
}] } });
|
|
1260
|
+
|
|
1036
1261
|
/*
|
|
1037
1262
|
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1038
1263
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -1659,7 +1884,7 @@ class ClrWizardPage {
|
|
|
1659
1884
|
*
|
|
1660
1885
|
*/
|
|
1661
1886
|
get title() {
|
|
1662
|
-
return this.pageTitle
|
|
1887
|
+
return this.pageTitle?.pageTitleTemplateRef;
|
|
1663
1888
|
}
|
|
1664
1889
|
/**
|
|
1665
1890
|
*
|
|
@@ -1670,7 +1895,7 @@ class ClrWizardPage {
|
|
|
1670
1895
|
if (this.pageNavTitle) {
|
|
1671
1896
|
return this.pageNavTitle.pageNavTitleTemplateRef;
|
|
1672
1897
|
}
|
|
1673
|
-
return this.pageTitle
|
|
1898
|
+
return this.pageTitle?.pageTitleTemplateRef;
|
|
1674
1899
|
}
|
|
1675
1900
|
/**
|
|
1676
1901
|
*
|
|
@@ -1753,7 +1978,7 @@ class ClrWizardPage {
|
|
|
1753
1978
|
this.navService.currentPage = this;
|
|
1754
1979
|
}
|
|
1755
1980
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardPage, deps: [{ token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1756
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrWizardPage, isStandalone: false, selector: "clr-wizard-page", inputs: { _id: ["id", "_id"], preventDefault: ["clrWizardPagePreventDefault", "preventDefault"], nextStepDisabled: ["clrWizardPageNextDisabled", "nextStepDisabled"], previousStepDisabled: ["clrWizardPagePreviousDisabled", "previousStepDisabled"], hasError: ["clrWizardPageHasError", "hasError"], stopCancel: ["clrWizardPagePreventDefaultCancel", "stopCancel"], stopNext: ["clrWizardPagePreventDefaultNext", "stopNext"] }, outputs: { nextStepDisabledChange: "clrWizardPageNextDisabledChange", previousStepDisabledChange: "clrWizardPagePreviousDisabledChange", stopCancelChange: "clrWizardPagePreventDefaultCancelChange", onCommit: "clrWizardPageOnCommit", onLoad: "clrWizardPageOnLoad", pageOnCancel: "clrWizardPageOnCancel", finishButtonClicked: "clrWizardPageFinish", previousButtonClicked: "clrWizardPagePrevious", nextButtonClicked: "clrWizardPageNext", dangerButtonClicked: "clrWizardPageDanger", primaryButtonClicked: "clrWizardPagePrimary", customButtonClicked: "clrWizardPageCustomButton" }, host: { properties: { "id": "id", "attr.aria-hidden": "!current", "attr.aria-labelledby": "stepItemId", "class.active": "current", "class.clr-wizard-page": "true" } }, queries: [{ propertyName: "pageTitle", first: true, predicate: ClrWizardPageTitle,
|
|
1981
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrWizardPage, isStandalone: false, selector: "clr-wizard-page", inputs: { _id: ["id", "_id"], preventDefault: ["clrWizardPagePreventDefault", "preventDefault"], nextStepDisabled: ["clrWizardPageNextDisabled", "nextStepDisabled"], previousStepDisabled: ["clrWizardPagePreviousDisabled", "previousStepDisabled"], hasError: ["clrWizardPageHasError", "hasError"], stopCancel: ["clrWizardPagePreventDefaultCancel", "stopCancel"], stopNext: ["clrWizardPagePreventDefaultNext", "stopNext"] }, outputs: { nextStepDisabledChange: "clrWizardPageNextDisabledChange", previousStepDisabledChange: "clrWizardPagePreviousDisabledChange", stopCancelChange: "clrWizardPagePreventDefaultCancelChange", onCommit: "clrWizardPageOnCommit", onLoad: "clrWizardPageOnLoad", pageOnCancel: "clrWizardPageOnCancel", finishButtonClicked: "clrWizardPageFinish", previousButtonClicked: "clrWizardPagePrevious", nextButtonClicked: "clrWizardPageNext", dangerButtonClicked: "clrWizardPageDanger", primaryButtonClicked: "clrWizardPagePrimary", customButtonClicked: "clrWizardPageCustomButton" }, host: { properties: { "id": "id", "attr.aria-hidden": "!current", "attr.aria-labelledby": "stepItemId", "class.active": "current", "class.clr-wizard-page": "true" } }, queries: [{ propertyName: "pageTitle", first: true, predicate: ClrWizardPageTitle, static: true }, { propertyName: "pageNavTitle", first: true, predicate: ClrWizardPageNavTitle, static: true }, { propertyName: "_buttons", first: true, predicate: ClrWizardPageButtons, static: true }, { propertyName: "_headerActions", first: true, predicate: ClrWizardPageHeaderActions, descendants: true, static: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1757
1982
|
}
|
|
1758
1983
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardPage, decorators: [{
|
|
1759
1984
|
type: Component,
|
|
@@ -1813,13 +2038,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1813
2038
|
args: ['clrWizardPageCustomButton']
|
|
1814
2039
|
}], pageTitle: [{
|
|
1815
2040
|
type: ContentChild,
|
|
1816
|
-
args: [ClrWizardPageTitle, { static: true }]
|
|
2041
|
+
args: [ClrWizardPageTitle, { static: true, descendants: false }]
|
|
1817
2042
|
}], pageNavTitle: [{
|
|
1818
2043
|
type: ContentChild,
|
|
1819
|
-
args: [ClrWizardPageNavTitle, { static: true }]
|
|
2044
|
+
args: [ClrWizardPageNavTitle, { static: true, descendants: false }]
|
|
1820
2045
|
}], _buttons: [{
|
|
1821
2046
|
type: ContentChild,
|
|
1822
|
-
args: [ClrWizardPageButtons, { static: true }]
|
|
2047
|
+
args: [ClrWizardPageButtons, { static: true, descendants: false }]
|
|
1823
2048
|
}], _headerActions: [{
|
|
1824
2049
|
type: ContentChild,
|
|
1825
2050
|
args: [ClrWizardPageHeaderActions, { static: true }]
|
|
@@ -1923,7 +2148,7 @@ class ClrWizardStepnavItem {
|
|
|
1923
2148
|
return allIds.join(' ');
|
|
1924
2149
|
}
|
|
1925
2150
|
get icon() {
|
|
1926
|
-
if (this.isCurrent) {
|
|
2151
|
+
if (this.isCurrent && this.navService.stepnavLayout !== ClrWizardStepnavLayout.HORIZONTAL) {
|
|
1927
2152
|
return {
|
|
1928
2153
|
shape: 'dot-circle',
|
|
1929
2154
|
label: this.commonStrings.keys.wizardStepCurrent || this.commonStrings.keys.timelineStepCurrent,
|
|
@@ -1960,6 +2185,9 @@ class ClrWizardStepnavItem {
|
|
|
1960
2185
|
this.skipNextScroll = true;
|
|
1961
2186
|
this.navService.goTo(this.page);
|
|
1962
2187
|
}
|
|
2188
|
+
scrollIntoView() {
|
|
2189
|
+
this.elementRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
|
|
2190
|
+
}
|
|
1963
2191
|
pageGuard() {
|
|
1964
2192
|
if (!this.page) {
|
|
1965
2193
|
throw new Error('Wizard stepnav item is not associated with a wizard page.');
|
|
@@ -1969,7 +2197,7 @@ class ClrWizardStepnavItem {
|
|
|
1969
2197
|
// Don't use "smooth" scrolling when the wizard is first opened to avoid a delay in scrolling the current step into view.
|
|
1970
2198
|
// The current step when the wizard is opened might not be the first step. For example, the wizard can be closed and re-opened.
|
|
1971
2199
|
let scrollBehavior = 'auto';
|
|
1972
|
-
return this.navService.
|
|
2200
|
+
return this.navService.currentPageChange.pipe(startWith(this.navService.currentPage), debounceTime(1), tap(currentPage => {
|
|
1973
2201
|
if (!this.skipNextScroll && currentPage === this.page) {
|
|
1974
2202
|
this.elementRef.nativeElement.scrollIntoView({ behavior: scrollBehavior, block: 'center', inline: 'center' });
|
|
1975
2203
|
}
|
|
@@ -1978,7 +2206,7 @@ class ClrWizardStepnavItem {
|
|
|
1978
2206
|
}));
|
|
1979
2207
|
}
|
|
1980
2208
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardStepnavItem, deps: [{ token: WizardNavigationService }, { token: PageCollectionService }, { token: i3.ClrCommonStringsService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1981
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizardStepnavItem, isStandalone: false, selector: "[clr-wizard-stepnav-item]", inputs: { page: "page" }, host: { properties: { "id": "id", "attr.aria-current": "stepAriaCurrent", "attr.aria-controls": "page.id", "class.clr-nav-link": "true", "class.nav-item": "true", "class.active": "isCurrent", "class.disabled": "isDisabled", "class.no-click": "!canNavigate", "class.complete": "isComplete", "class.error": "hasError" } }, ngImport: i0, template: `
|
|
2209
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizardStepnavItem, isStandalone: false, selector: "[clr-wizard-stepnav-item]", inputs: { page: "page" }, host: { listeners: { "focusin": "scrollIntoView()" }, properties: { "id": "id", "attr.aria-current": "stepAriaCurrent", "attr.aria-controls": "page.id", "class.clr-nav-link": "true", "class.nav-item": "true", "class.active": "isCurrent", "class.disabled": "isDisabled", "class.no-click": "!canNavigate", "class.complete": "isComplete", "class.error": "hasError" } }, ngImport: i0, template: `
|
|
1982
2210
|
<button
|
|
1983
2211
|
type="button"
|
|
1984
2212
|
class="btn btn-link clr-wizard-stepnav-link"
|
|
@@ -2006,7 +2234,7 @@ class ClrWizardStepnavItem {
|
|
|
2006
2234
|
<ng-template [ngTemplateOutlet]="page.navTitle"></ng-template>
|
|
2007
2235
|
</span>
|
|
2008
2236
|
</button>
|
|
2009
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
2237
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
|
|
2010
2238
|
}
|
|
2011
2239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardStepnavItem, decorators: [{
|
|
2012
2240
|
type: Component,
|
|
@@ -2052,6 +2280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2052
2280
|
'[class.no-click]': '!canNavigate',
|
|
2053
2281
|
'[class.complete]': 'isComplete',
|
|
2054
2282
|
'[class.error]': 'hasError',
|
|
2283
|
+
'(focusin)': 'scrollIntoView()',
|
|
2055
2284
|
},
|
|
2056
2285
|
standalone: false,
|
|
2057
2286
|
}]
|
|
@@ -2067,12 +2296,94 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2067
2296
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2068
2297
|
*/
|
|
2069
2298
|
class ClrWizardStepnav {
|
|
2070
|
-
constructor(pageService) {
|
|
2299
|
+
constructor(pageService, navService, elementRef) {
|
|
2071
2300
|
this.pageService = pageService;
|
|
2301
|
+
this.navService = navService;
|
|
2302
|
+
this.elementRef = elementRef;
|
|
2303
|
+
this.showScrollLeftButton = false;
|
|
2304
|
+
this.showScrollRightButton = false;
|
|
2305
|
+
this.firstItemVisible = true;
|
|
2306
|
+
this.lastItemVisible = true;
|
|
2307
|
+
}
|
|
2308
|
+
get stepnavLayout() {
|
|
2309
|
+
return this.navService.stepnavLayout;
|
|
2310
|
+
}
|
|
2311
|
+
ngAfterViewInit() {
|
|
2312
|
+
if (this.stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL) {
|
|
2313
|
+
this.setupIntersectionObserver();
|
|
2314
|
+
this.stepnavItems.notifyOnChanges();
|
|
2315
|
+
this.subscription = this.stepnavItems.changes.pipe(startWith(undefined)).subscribe(() => {
|
|
2316
|
+
this.observeEdgeItems();
|
|
2317
|
+
});
|
|
2318
|
+
}
|
|
2319
|
+
}
|
|
2320
|
+
ngOnDestroy() {
|
|
2321
|
+
this.subscription?.unsubscribe();
|
|
2322
|
+
this.intersectionObserver?.disconnect();
|
|
2323
|
+
}
|
|
2324
|
+
scrollLeft() {
|
|
2325
|
+
this.scroll('left');
|
|
2326
|
+
}
|
|
2327
|
+
scrollRight() {
|
|
2328
|
+
this.scroll('right');
|
|
2329
|
+
}
|
|
2330
|
+
setupIntersectionObserver() {
|
|
2331
|
+
const scrollContainer = this.elementRef.nativeElement.querySelector('.clr-wizard-stepnav-list');
|
|
2332
|
+
this.intersectionObserver = new IntersectionObserver(entries => {
|
|
2333
|
+
for (const entry of entries) {
|
|
2334
|
+
const target = entry.target;
|
|
2335
|
+
const isFirst = target === this.stepnavItems.first?.elementRef.nativeElement;
|
|
2336
|
+
const isLast = target === this.stepnavItems.last?.elementRef.nativeElement;
|
|
2337
|
+
if (isFirst) {
|
|
2338
|
+
this.firstItemVisible = entry.isIntersecting;
|
|
2339
|
+
}
|
|
2340
|
+
if (isLast) {
|
|
2341
|
+
this.lastItemVisible = entry.isIntersecting;
|
|
2342
|
+
}
|
|
2343
|
+
}
|
|
2344
|
+
this.showScrollLeftButton = !this.firstItemVisible;
|
|
2345
|
+
this.showScrollRightButton = !this.lastItemVisible;
|
|
2346
|
+
}, { root: scrollContainer, threshold: 0.99 });
|
|
2347
|
+
}
|
|
2348
|
+
observeEdgeItems() {
|
|
2349
|
+
this.intersectionObserver.disconnect();
|
|
2350
|
+
this.firstItemVisible = true;
|
|
2351
|
+
this.lastItemVisible = true;
|
|
2352
|
+
const first = this.stepnavItems.first;
|
|
2353
|
+
const last = this.stepnavItems.last;
|
|
2354
|
+
if (first) {
|
|
2355
|
+
this.intersectionObserver.observe(first.elementRef.nativeElement);
|
|
2356
|
+
}
|
|
2357
|
+
if (last && last !== first) {
|
|
2358
|
+
this.intersectionObserver.observe(last.elementRef.nativeElement);
|
|
2359
|
+
}
|
|
2360
|
+
}
|
|
2361
|
+
scroll(direction) {
|
|
2362
|
+
const scrollContainer = this.elementRef.nativeElement.querySelector('.clr-wizard-stepnav-list');
|
|
2363
|
+
const scrollAmount = scrollContainer.clientWidth * 0.5;
|
|
2364
|
+
scrollContainer.scrollBy({ left: direction === 'left' ? -scrollAmount : scrollAmount, behavior: 'smooth' });
|
|
2365
|
+
}
|
|
2366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardStepnav, deps: [{ token: PageCollectionService }, { token: WizardNavigationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizardStepnav, isStandalone: false, selector: "clr-wizard-stepnav", inputs: { label: "label" }, host: { classAttribute: "clr-wizard-stepnav" }, viewQueries: [{ propertyName: "stepnavItems", predicate: ClrWizardStepnavItem, descendants: true }], ngImport: i0, template: `
|
|
2368
|
+
@if (showScrollLeftButton && stepnavLayout === 'horizontal') {
|
|
2369
|
+
<button
|
|
2370
|
+
type="button"
|
|
2371
|
+
class="btn btn-sm btn-icon clr-wizard-stepnav-scroll-button-left"
|
|
2372
|
+
(click)="scrollLeft()"
|
|
2373
|
+
tabindex="-1"
|
|
2374
|
+
>
|
|
2375
|
+
<cds-icon shape="angle" direction="left"></cds-icon>
|
|
2376
|
+
</button>
|
|
2072
2377
|
}
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2378
|
+
|
|
2379
|
+
<nav
|
|
2380
|
+
class="clr-wizard-stepnav-nav"
|
|
2381
|
+
[ngClass]="{
|
|
2382
|
+
'clr-wizard-stepnav-nav--with-one-scroll-button': showScrollLeftButton || showScrollRightButton,
|
|
2383
|
+
'clr-wizard-stepnav-nav--with-two-scroll-buttons': showScrollLeftButton && showScrollRightButton,
|
|
2384
|
+
}"
|
|
2385
|
+
[attr.aria-label]="label"
|
|
2386
|
+
>
|
|
2076
2387
|
<ol class="clr-wizard-stepnav-list">
|
|
2077
2388
|
@for (page of pageService.pages; track page; let i = $index) {
|
|
2078
2389
|
<li clr-wizard-stepnav-item [page]="page" class="clr-wizard-stepnav-item">
|
|
@@ -2081,14 +2392,43 @@ class ClrWizardStepnav {
|
|
|
2081
2392
|
}
|
|
2082
2393
|
</ol>
|
|
2083
2394
|
</nav>
|
|
2084
|
-
|
|
2395
|
+
|
|
2396
|
+
@if (showScrollRightButton && stepnavLayout === 'horizontal') {
|
|
2397
|
+
<button
|
|
2398
|
+
type="button"
|
|
2399
|
+
class="btn btn-sm btn-icon clr-wizard-stepnav-scroll-button-right"
|
|
2400
|
+
(click)="scrollRight()"
|
|
2401
|
+
tabindex="-1"
|
|
2402
|
+
>
|
|
2403
|
+
<cds-icon shape="angle" direction="right"></cds-icon>
|
|
2404
|
+
</button>
|
|
2405
|
+
}
|
|
2406
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: ClrWizardStepnavItem, selector: "[clr-wizard-stepnav-item]", inputs: ["page"] }] }); }
|
|
2085
2407
|
}
|
|
2086
2408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardStepnav, decorators: [{
|
|
2087
2409
|
type: Component,
|
|
2088
2410
|
args: [{
|
|
2089
2411
|
selector: 'clr-wizard-stepnav',
|
|
2090
2412
|
template: `
|
|
2091
|
-
|
|
2413
|
+
@if (showScrollLeftButton && stepnavLayout === 'horizontal') {
|
|
2414
|
+
<button
|
|
2415
|
+
type="button"
|
|
2416
|
+
class="btn btn-sm btn-icon clr-wizard-stepnav-scroll-button-left"
|
|
2417
|
+
(click)="scrollLeft()"
|
|
2418
|
+
tabindex="-1"
|
|
2419
|
+
>
|
|
2420
|
+
<cds-icon shape="angle" direction="left"></cds-icon>
|
|
2421
|
+
</button>
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2424
|
+
<nav
|
|
2425
|
+
class="clr-wizard-stepnav-nav"
|
|
2426
|
+
[ngClass]="{
|
|
2427
|
+
'clr-wizard-stepnav-nav--with-one-scroll-button': showScrollLeftButton || showScrollRightButton,
|
|
2428
|
+
'clr-wizard-stepnav-nav--with-two-scroll-buttons': showScrollLeftButton && showScrollRightButton,
|
|
2429
|
+
}"
|
|
2430
|
+
[attr.aria-label]="label"
|
|
2431
|
+
>
|
|
2092
2432
|
<ol class="clr-wizard-stepnav-list">
|
|
2093
2433
|
@for (page of pageService.pages; track page; let i = $index) {
|
|
2094
2434
|
<li clr-wizard-stepnav-item [page]="page" class="clr-wizard-stepnav-item">
|
|
@@ -2097,12 +2437,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2097
2437
|
}
|
|
2098
2438
|
</ol>
|
|
2099
2439
|
</nav>
|
|
2440
|
+
|
|
2441
|
+
@if (showScrollRightButton && stepnavLayout === 'horizontal') {
|
|
2442
|
+
<button
|
|
2443
|
+
type="button"
|
|
2444
|
+
class="btn btn-sm btn-icon clr-wizard-stepnav-scroll-button-right"
|
|
2445
|
+
(click)="scrollRight()"
|
|
2446
|
+
tabindex="-1"
|
|
2447
|
+
>
|
|
2448
|
+
<cds-icon shape="angle" direction="right"></cds-icon>
|
|
2449
|
+
</button>
|
|
2450
|
+
}
|
|
2100
2451
|
`,
|
|
2101
2452
|
host: { class: 'clr-wizard-stepnav' },
|
|
2102
2453
|
standalone: false,
|
|
2103
2454
|
}]
|
|
2104
|
-
}], ctorParameters: () => [{ type: PageCollectionService }], propDecorators: { label: [{
|
|
2455
|
+
}], ctorParameters: () => [{ type: PageCollectionService }, { type: WizardNavigationService }, { type: i0.ElementRef }], propDecorators: { label: [{
|
|
2105
2456
|
type: Input
|
|
2457
|
+
}], stepnavItems: [{
|
|
2458
|
+
type: ViewChildren,
|
|
2459
|
+
args: [ClrWizardStepnavItem]
|
|
2106
2460
|
}] } });
|
|
2107
2461
|
|
|
2108
2462
|
/*
|
|
@@ -2124,6 +2478,10 @@ class ClrWizard {
|
|
|
2124
2478
|
* Set the aria-label for the stepnav section of the wizard. Set using `[clrWizardStepnavAriaLabel]` input.
|
|
2125
2479
|
*/
|
|
2126
2480
|
this.stepnavAriaLabel = this.commonStrings.keys.wizardStepnavAriaLabel;
|
|
2481
|
+
/**
|
|
2482
|
+
* Set the wizard stepnav layout to 'vertical' (default) or 'horizontal'. Set using `[clrWizardStepnavLayout]` input.
|
|
2483
|
+
*/
|
|
2484
|
+
this.stepnavLayout = ClrWizardStepnavLayout.VERTICAL;
|
|
2127
2485
|
/**
|
|
2128
2486
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
2129
2487
|
*/
|
|
@@ -2137,6 +2495,18 @@ class ClrWizard {
|
|
|
2137
2495
|
* If you can't use this option, you will likely need to provide custom CSS to set the wizard's height and margins.
|
|
2138
2496
|
*/
|
|
2139
2497
|
this.inPageFillContentArea = false;
|
|
2498
|
+
/**
|
|
2499
|
+
* Hide the wizard footer entirely. Set using `[clrWizardHideFooter]` input.
|
|
2500
|
+
* Useful when a nested wizard or stepper handles its own navigation.
|
|
2501
|
+
*/
|
|
2502
|
+
this.hideFooter = false;
|
|
2503
|
+
/**
|
|
2504
|
+
* Align the footer buttons to 'start' (left) or 'end' (right).
|
|
2505
|
+
* By default, modal wizards align to 'end' and in-page wizards align to 'start'.
|
|
2506
|
+
* Nested wizards inherit the default unless this input is explicitly set.
|
|
2507
|
+
* Set using `[clrWizardFooterAlign]` input.
|
|
2508
|
+
*/
|
|
2509
|
+
this._footerAlign = null;
|
|
2140
2510
|
/**
|
|
2141
2511
|
* Tells the modal part of the wizard whether it should have a close "X"
|
|
2142
2512
|
* in the top right corner. Set using `[clrWizardClosable]` input.
|
|
@@ -2170,10 +2540,10 @@ class ClrWizard {
|
|
|
2170
2540
|
*/
|
|
2171
2541
|
this.onReset = new EventEmitter(false);
|
|
2172
2542
|
/**
|
|
2173
|
-
* Emits when the current page has changed. Listen via `(
|
|
2543
|
+
* Emits when the current page has changed. Listen via `(clrWizardCurrentPageChange)` event.
|
|
2174
2544
|
* output. Useful for non-blocking validation.
|
|
2175
2545
|
*/
|
|
2176
|
-
this.
|
|
2546
|
+
this.currentPageChange = new EventEmitter(false);
|
|
2177
2547
|
/**
|
|
2178
2548
|
* Emits when the wizard moves to the next page. Listen via `(clrWizardOnNext)` event.
|
|
2179
2549
|
* Can be combined with the `[clrWizardPreventDefaultNext]` input to create
|
|
@@ -2187,6 +2557,8 @@ class ClrWizard {
|
|
|
2187
2557
|
this.onMovePrevious = new EventEmitter(false);
|
|
2188
2558
|
this._open = false;
|
|
2189
2559
|
this.wizardId = uniqueIdFactory();
|
|
2560
|
+
this.ClrWizardFooterAlign = ClrWizardFooterAlign;
|
|
2561
|
+
this.ClrWizardStepnavLayout = ClrWizardStepnavLayout;
|
|
2190
2562
|
this._forceForward = false;
|
|
2191
2563
|
this._stopNext = false;
|
|
2192
2564
|
this._stopCancel = false;
|
|
@@ -2289,10 +2661,24 @@ class ClrWizard {
|
|
|
2289
2661
|
get isInline() {
|
|
2290
2662
|
return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');
|
|
2291
2663
|
}
|
|
2664
|
+
get showHeader() {
|
|
2665
|
+
return (!!this.navService.currentPage?.pageTitle ||
|
|
2666
|
+
(this.stepnavLayout === ClrWizardStepnavLayout.VERTICAL && this.headerActionService.displayHeaderActionsWrapper));
|
|
2667
|
+
}
|
|
2668
|
+
get showFooter() {
|
|
2669
|
+
return !this.hideFooter && (this.navService.currentPage?.hasButtons || this.wizardButtons?.length > 0);
|
|
2670
|
+
}
|
|
2671
|
+
get footerAlign() {
|
|
2672
|
+
if (this._footerAlign !== null) {
|
|
2673
|
+
return this._footerAlign;
|
|
2674
|
+
}
|
|
2675
|
+
return this.inPage ? ClrWizardFooterAlign.START : ClrWizardFooterAlign.END;
|
|
2676
|
+
}
|
|
2292
2677
|
get stopModalAnimations() {
|
|
2293
2678
|
return this._stopModalAnimations;
|
|
2294
2679
|
}
|
|
2295
2680
|
ngAfterContentInit() {
|
|
2681
|
+
this.navService.stepnavLayout = this.stepnavLayout;
|
|
2296
2682
|
this.pageCollection.pages = this.pages;
|
|
2297
2683
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
2298
2684
|
if (this.inPage) {
|
|
@@ -2485,12 +2871,12 @@ class ClrWizard {
|
|
|
2485
2871
|
return this.navService.wizardFinished.subscribe(() => this.emitWizardFinished());
|
|
2486
2872
|
}
|
|
2487
2873
|
listenForPageChanges() {
|
|
2488
|
-
return this.navService.
|
|
2874
|
+
return this.navService.currentPageChange.subscribe(() => {
|
|
2489
2875
|
// Added to address VPAT-749:
|
|
2490
2876
|
// When clicking on a wizard tab, focus should move to that
|
|
2491
2877
|
// tabs content to make the wizard more accessible.
|
|
2492
2878
|
this.pageTitle?.nativeElement.focus();
|
|
2493
|
-
this.
|
|
2879
|
+
this.currentPageChange.emit();
|
|
2494
2880
|
// scroll to top of page in case there is long page content
|
|
2495
2881
|
this.bodyElementRef?.nativeElement.scrollTo(0, 0);
|
|
2496
2882
|
});
|
|
@@ -2515,7 +2901,7 @@ class ClrWizard {
|
|
|
2515
2901
|
this.wizardFinished.emit();
|
|
2516
2902
|
}
|
|
2517
2903
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: i3.ClrCommonStringsService }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2518
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizard, isStandalone: false, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], inPage: ["clrWizardInPage", "inPage"], inPageFillContentArea: ["clrWizardInPageFillContentArea", "inPageFillContentArea"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset",
|
|
2904
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizard, isStandalone: false, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], stepnavLayout: ["clrWizardStepnavLayout", "stepnavLayout", stepnavLayoutAttribute], size: ["clrWizardSize", "size"], inPage: ["clrWizardInPage", "inPage"], inPageFillContentArea: ["clrWizardInPageFillContentArea", "inPageFillContentArea"], hideFooter: ["clrWizardHideFooter", "hideFooter"], _footerAlign: ["clrWizardFooterAlign", "_footerAlign", footerAlignAttribute], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChange: "clrWizardCurrentPageChange", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.wizard-in-page": "inPage", "class.wizard-in-page--fill-content-area": "inPage && inPageFillContentArea", "class.wizard-horizontal": "stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage }, { propertyName: "wizardButtons", predicate: ClrWizardButton }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<ng-template #coreWizardContent>\n <div class=\"clr-wizard-content-wrapper\">\n @if (stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL) {\n <div class=\"clr-wizard-title-wrapper\">\n <ng-container [ngTemplateOutlet]=\"wizardTitleTemplate\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"wizardActionsTemplate\"></ng-container>\n </div>\n }\n\n <div class=\"clr-wizard-stepnav-wrapper\" role=\"region\">\n @if (stepnavLayout === ClrWizardStepnavLayout.VERTICAL) {\n <ng-container [ngTemplateOutlet]=\"wizardTitleTemplate\"></ng-container>\n }\n <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n </div>\n\n <div class=\"clr-wizard-main-content\">\n @if (showHeader) {\n <div class=\"clr-wizard-header\">\n @if (navService.currentPage?.pageTitle) {\n <div class=\"clr-wizard-page-title-wrapper\" cdkFocusInitial tabindex=\"-1\">\n <div\n class=\"clr-wizard-page-title\"\n role=\"heading\"\n [attr.aria-level]=\"navService.currentPage?.pageTitle?.headingLevel || 2\"\n >\n <span tabindex=\"-1\" #pageTitle class=\"clr-wizard-page-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n </div>\n </div>\n } @if (stepnavLayout === ClrWizardStepnavLayout.VERTICAL) {\n <ng-container [ngTemplateOutlet]=\"wizardActionsTemplate\"></ng-container>\n }\n </div>\n }\n\n <div #body class=\"clr-wizard-body-wrapper\">\n <div class=\"clr-wizard-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n </div>\n\n @if (showFooter) {\n <div class=\"clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n class=\"clr-wizard-footer-buttons-wrapper\"\n [ngClass]=\"{'align-start': footerAlign === ClrWizardFooterAlign.START, 'align-end': footerAlign === ClrWizardFooterAlign.END}\"\n >\n @if (navService.currentPage?.hasButtons) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n } @else {\n <ng-content select=\"clr-wizard-button\"></ng-content>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #wizardTitleTemplate>\n <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle?.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #wizardActionsTemplate>\n @if (headerActionService.displayHeaderActionsWrapper) {\n <div class=\"clr-wizard-header-actions-wrapper\">\n @if (headerActionService.showWizardHeaderActions) {\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n } @if (headerActionService.currentPageHasHeaderActions) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage?.headerActions\"></ng-template>\n }\n </div>\n } @if (closable && !inPage) {\n <button type=\"button\" class=\"close\" [attr.aria-label]=\"commonStrings.keys.close\" (click)=\"modalCancel()\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n }\n</ng-template>\n\n@if (inPage) {\n<ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n} @else {\n<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <ng-template #clrInternalModalContentTemplate>\n <ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n </ng-template>\n</clr-modal>\n}\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: i8.ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav", inputs: ["label"] }] }); }
|
|
2519
2905
|
}
|
|
2520
2906
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizard, decorators: [{
|
|
2521
2907
|
type: Component,
|
|
@@ -2526,13 +2912,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2526
2912
|
'[class.wizard-xl]': "size == 'xl'",
|
|
2527
2913
|
'[class.wizard-in-page]': 'inPage',
|
|
2528
2914
|
'[class.wizard-in-page--fill-content-area]': 'inPage && inPageFillContentArea',
|
|
2529
|
-
|
|
2915
|
+
'[class.wizard-horizontal]': 'stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL',
|
|
2916
|
+
}, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<ng-template #coreWizardContent>\n <div class=\"clr-wizard-content-wrapper\">\n @if (stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL) {\n <div class=\"clr-wizard-title-wrapper\">\n <ng-container [ngTemplateOutlet]=\"wizardTitleTemplate\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"wizardActionsTemplate\"></ng-container>\n </div>\n }\n\n <div class=\"clr-wizard-stepnav-wrapper\" role=\"region\">\n @if (stepnavLayout === ClrWizardStepnavLayout.VERTICAL) {\n <ng-container [ngTemplateOutlet]=\"wizardTitleTemplate\"></ng-container>\n }\n <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n </div>\n\n <div class=\"clr-wizard-main-content\">\n @if (showHeader) {\n <div class=\"clr-wizard-header\">\n @if (navService.currentPage?.pageTitle) {\n <div class=\"clr-wizard-page-title-wrapper\" cdkFocusInitial tabindex=\"-1\">\n <div\n class=\"clr-wizard-page-title\"\n role=\"heading\"\n [attr.aria-level]=\"navService.currentPage?.pageTitle?.headingLevel || 2\"\n >\n <span tabindex=\"-1\" #pageTitle class=\"clr-wizard-page-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n </div>\n </div>\n } @if (stepnavLayout === ClrWizardStepnavLayout.VERTICAL) {\n <ng-container [ngTemplateOutlet]=\"wizardActionsTemplate\"></ng-container>\n }\n </div>\n }\n\n <div #body class=\"clr-wizard-body-wrapper\">\n <div class=\"clr-wizard-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n </div>\n\n @if (showFooter) {\n <div class=\"clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n class=\"clr-wizard-footer-buttons-wrapper\"\n [ngClass]=\"{'align-start': footerAlign === ClrWizardFooterAlign.START, 'align-end': footerAlign === ClrWizardFooterAlign.END}\"\n >\n @if (navService.currentPage?.hasButtons) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n } @else {\n <ng-content select=\"clr-wizard-button\"></ng-content>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #wizardTitleTemplate>\n <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle?.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #wizardActionsTemplate>\n @if (headerActionService.displayHeaderActionsWrapper) {\n <div class=\"clr-wizard-header-actions-wrapper\">\n @if (headerActionService.showWizardHeaderActions) {\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n } @if (headerActionService.currentPageHasHeaderActions) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage?.headerActions\"></ng-template>\n }\n </div>\n } @if (closable && !inPage) {\n <button type=\"button\" class=\"close\" [attr.aria-label]=\"commonStrings.keys.close\" (click)=\"modalCancel()\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n }\n</ng-template>\n\n@if (inPage) {\n<ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n} @else {\n<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <ng-template #clrInternalModalContentTemplate>\n <ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n </ng-template>\n</clr-modal>\n}\n" }]
|
|
2530
2917
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2531
2918
|
type: Inject,
|
|
2532
2919
|
args: [PLATFORM_ID]
|
|
2533
2920
|
}] }, { type: i3.ClrCommonStringsService }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }], propDecorators: { stepnavAriaLabel: [{
|
|
2534
2921
|
type: Input,
|
|
2535
2922
|
args: ['clrWizardStepnavAriaLabel']
|
|
2923
|
+
}], stepnavLayout: [{
|
|
2924
|
+
type: Input,
|
|
2925
|
+
args: [{ alias: 'clrWizardStepnavLayout', transform: stepnavLayoutAttribute }]
|
|
2536
2926
|
}], size: [{
|
|
2537
2927
|
type: Input,
|
|
2538
2928
|
args: ['clrWizardSize']
|
|
@@ -2542,6 +2932,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2542
2932
|
}], inPageFillContentArea: [{
|
|
2543
2933
|
type: Input,
|
|
2544
2934
|
args: ['clrWizardInPageFillContentArea']
|
|
2935
|
+
}], hideFooter: [{
|
|
2936
|
+
type: Input,
|
|
2937
|
+
args: ['clrWizardHideFooter']
|
|
2938
|
+
}], _footerAlign: [{
|
|
2939
|
+
type: Input,
|
|
2940
|
+
args: [{ alias: 'clrWizardFooterAlign', transform: footerAlignAttribute }]
|
|
2545
2941
|
}], closable: [{
|
|
2546
2942
|
type: Input,
|
|
2547
2943
|
args: ['clrWizardClosable']
|
|
@@ -2560,9 +2956,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2560
2956
|
}], onReset: [{
|
|
2561
2957
|
type: Output,
|
|
2562
2958
|
args: ['clrWizardOnReset']
|
|
2563
|
-
}],
|
|
2959
|
+
}], currentPageChange: [{
|
|
2564
2960
|
type: Output,
|
|
2565
|
-
args: ['
|
|
2961
|
+
args: ['clrWizardCurrentPageChange']
|
|
2566
2962
|
}], onMoveNext: [{
|
|
2567
2963
|
type: Output,
|
|
2568
2964
|
args: ['clrWizardOnNext']
|
|
@@ -2574,7 +2970,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2574
2970
|
args: ['pageTitle']
|
|
2575
2971
|
}], pages: [{
|
|
2576
2972
|
type: ContentChildren,
|
|
2577
|
-
args: [ClrWizardPage
|
|
2973
|
+
args: [ClrWizardPage]
|
|
2974
|
+
}], wizardButtons: [{
|
|
2975
|
+
type: ContentChildren,
|
|
2976
|
+
args: [ClrWizardButton, { descendants: false }]
|
|
2578
2977
|
}], headerActions: [{
|
|
2579
2978
|
type: ContentChildren,
|
|
2580
2979
|
args: [ClrWizardHeaderAction]
|
|
@@ -2584,9 +2983,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2584
2983
|
}], bodyElementRef: [{
|
|
2585
2984
|
type: ViewChild,
|
|
2586
2985
|
args: ['body']
|
|
2587
|
-
}], modal: [{
|
|
2588
|
-
type: ViewChild,
|
|
2589
|
-
args: [ClrModal]
|
|
2590
2986
|
}], forceForward: [{
|
|
2591
2987
|
type: Input,
|
|
2592
2988
|
args: ['clrWizardForceForwardNavigation']
|
|
@@ -2607,191 +3003,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2607
3003
|
args: ['clrWizardDisableStepnav']
|
|
2608
3004
|
}] } });
|
|
2609
3005
|
|
|
2610
|
-
/*
|
|
2611
|
-
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2612
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2613
|
-
* This software is released under MIT license.
|
|
2614
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2615
|
-
*/
|
|
2616
|
-
const DEFAULT_BUTTON_TYPES = {
|
|
2617
|
-
cancel: 'cancel',
|
|
2618
|
-
previous: 'previous',
|
|
2619
|
-
next: 'next',
|
|
2620
|
-
finish: 'finish',
|
|
2621
|
-
danger: 'danger',
|
|
2622
|
-
};
|
|
2623
|
-
const CUSTOM_BUTTON_TYPES = {
|
|
2624
|
-
cancel: 'custom-cancel',
|
|
2625
|
-
previous: 'custom-previous',
|
|
2626
|
-
next: 'custom-next',
|
|
2627
|
-
finish: 'custom-finish',
|
|
2628
|
-
danger: 'custom-danger',
|
|
2629
|
-
};
|
|
2630
|
-
class ClrWizardButton {
|
|
2631
|
-
constructor(navService, buttonService) {
|
|
2632
|
-
this.navService = navService;
|
|
2633
|
-
this.buttonService = buttonService;
|
|
2634
|
-
this.type = '';
|
|
2635
|
-
this.disabled = false;
|
|
2636
|
-
this.hidden = false;
|
|
2637
|
-
// EventEmitter which is emitted when a button is clicked.
|
|
2638
|
-
this.wasClicked = new EventEmitter(false);
|
|
2639
|
-
}
|
|
2640
|
-
get isCancel() {
|
|
2641
|
-
return this.checkDefaultAndCustomType(this.type, 'cancel');
|
|
2642
|
-
}
|
|
2643
|
-
get isNext() {
|
|
2644
|
-
return this.checkDefaultAndCustomType(this.type, 'next');
|
|
2645
|
-
}
|
|
2646
|
-
get isPrevious() {
|
|
2647
|
-
return this.checkDefaultAndCustomType(this.type, 'previous');
|
|
2648
|
-
}
|
|
2649
|
-
get isFinish() {
|
|
2650
|
-
return this.checkDefaultAndCustomType(this.type, 'finish');
|
|
2651
|
-
}
|
|
2652
|
-
get isDanger() {
|
|
2653
|
-
return this.checkDefaultAndCustomType(this.type, 'danger');
|
|
2654
|
-
}
|
|
2655
|
-
get isPrimaryAction() {
|
|
2656
|
-
return this.isNext || this.isDanger || this.isFinish;
|
|
2657
|
-
}
|
|
2658
|
-
get _disabledAttribute() {
|
|
2659
|
-
if (this.isDisabled) {
|
|
2660
|
-
return '';
|
|
2661
|
-
}
|
|
2662
|
-
return null;
|
|
2663
|
-
}
|
|
2664
|
-
get isDisabled() {
|
|
2665
|
-
// dealing with negatives here. cognitively easier to think of it like this...
|
|
2666
|
-
const disabled = true;
|
|
2667
|
-
const nav = this.navService;
|
|
2668
|
-
const page = this.navService.currentPage;
|
|
2669
|
-
// Ensure we don't change the response until buttons are ready to avoid chocolate
|
|
2670
|
-
if (!this.buttonService.buttonsReady) {
|
|
2671
|
-
return !disabled;
|
|
2672
|
-
}
|
|
2673
|
-
if (this.disabled || nav.wizardStopNavigation || !page) {
|
|
2674
|
-
return true;
|
|
2675
|
-
}
|
|
2676
|
-
if (this.isCancel) {
|
|
2677
|
-
return !disabled;
|
|
2678
|
-
}
|
|
2679
|
-
if (this.isPrevious && (nav.currentPageIsFirst || page.previousStepDisabled)) {
|
|
2680
|
-
return disabled;
|
|
2681
|
-
}
|
|
2682
|
-
if (this.isDanger && !page.readyToComplete) {
|
|
2683
|
-
return disabled;
|
|
2684
|
-
}
|
|
2685
|
-
if (this.isNext && (nav.currentPageIsLast || !page.readyToComplete)) {
|
|
2686
|
-
return disabled;
|
|
2687
|
-
}
|
|
2688
|
-
if (this.isFinish && (!nav.currentPageIsLast || !page.readyToComplete)) {
|
|
2689
|
-
return disabled;
|
|
2690
|
-
}
|
|
2691
|
-
return !disabled;
|
|
2692
|
-
}
|
|
2693
|
-
get isHidden() {
|
|
2694
|
-
// dealing with negatives here. cognitively easier to think of it like this...
|
|
2695
|
-
const hidden = true;
|
|
2696
|
-
const nav = this.navService;
|
|
2697
|
-
// Ensure we don't change the response until buttons are ready to avoid chocolate
|
|
2698
|
-
if (!this.buttonService.buttonsReady) {
|
|
2699
|
-
return !hidden;
|
|
2700
|
-
}
|
|
2701
|
-
if (this.hidden) {
|
|
2702
|
-
return true;
|
|
2703
|
-
}
|
|
2704
|
-
if (this.isCancel) {
|
|
2705
|
-
return !hidden;
|
|
2706
|
-
}
|
|
2707
|
-
if (this.isPrevious && nav.currentPageIsFirst) {
|
|
2708
|
-
return hidden;
|
|
2709
|
-
}
|
|
2710
|
-
if (this.isNext && nav.currentPageIsLast) {
|
|
2711
|
-
return hidden;
|
|
2712
|
-
}
|
|
2713
|
-
if (this.isFinish && !nav.currentPageIsLast) {
|
|
2714
|
-
return hidden;
|
|
2715
|
-
}
|
|
2716
|
-
return !hidden;
|
|
2717
|
-
}
|
|
2718
|
-
click() {
|
|
2719
|
-
if (this.isDisabled) {
|
|
2720
|
-
return;
|
|
2721
|
-
}
|
|
2722
|
-
this.wasClicked.emit(this.type);
|
|
2723
|
-
this.buttonService.buttonClicked(this.type);
|
|
2724
|
-
}
|
|
2725
|
-
checkDefaultAndCustomType(valueToCheck = '', typeToLookUp) {
|
|
2726
|
-
if (DEFAULT_BUTTON_TYPES[typeToLookUp] === valueToCheck) {
|
|
2727
|
-
return true;
|
|
2728
|
-
}
|
|
2729
|
-
if (CUSTOM_BUTTON_TYPES[typeToLookUp] === valueToCheck) {
|
|
2730
|
-
return true;
|
|
2731
|
-
}
|
|
2732
|
-
return false;
|
|
2733
|
-
}
|
|
2734
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardButton, deps: [{ token: WizardNavigationService }, { token: ButtonHubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2735
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrWizardButton, isStandalone: false, selector: "clr-wizard-button", inputs: { type: "type", disabled: ["clrWizardButtonDisabled", "disabled"], hidden: ["clrWizardButtonHidden", "hidden"] }, outputs: { wasClicked: "clrWizardButtonClicked" }, host: { properties: { "attr.aria-hidden": "isHidden" }, classAttribute: "clr-wizard-btn-wrapper" }, ngImport: i0, template: `
|
|
2736
|
-
<button
|
|
2737
|
-
type="button"
|
|
2738
|
-
class="btn clr-wizard-btn"
|
|
2739
|
-
[class.btn-link]="isCancel"
|
|
2740
|
-
[class.clr-wizard-btn--tertiary]="isCancel"
|
|
2741
|
-
[class.btn-outline]="isPrevious"
|
|
2742
|
-
[class.clr-wizard-btn--secondary]="isPrevious"
|
|
2743
|
-
[class.btn-primary]="isPrimaryAction"
|
|
2744
|
-
[class.clr-wizard-btn--primary]="isPrimaryAction"
|
|
2745
|
-
[class.btn-success]="isFinish"
|
|
2746
|
-
[class.btn-danger]="isDanger"
|
|
2747
|
-
[class.disabled]="isDisabled"
|
|
2748
|
-
[attr.disabled]="_disabledAttribute"
|
|
2749
|
-
(click)="click()"
|
|
2750
|
-
>
|
|
2751
|
-
<ng-content></ng-content>
|
|
2752
|
-
</button>
|
|
2753
|
-
`, isInline: true }); }
|
|
2754
|
-
}
|
|
2755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizardButton, decorators: [{
|
|
2756
|
-
type: Component,
|
|
2757
|
-
args: [{
|
|
2758
|
-
selector: 'clr-wizard-button',
|
|
2759
|
-
template: `
|
|
2760
|
-
<button
|
|
2761
|
-
type="button"
|
|
2762
|
-
class="btn clr-wizard-btn"
|
|
2763
|
-
[class.btn-link]="isCancel"
|
|
2764
|
-
[class.clr-wizard-btn--tertiary]="isCancel"
|
|
2765
|
-
[class.btn-outline]="isPrevious"
|
|
2766
|
-
[class.clr-wizard-btn--secondary]="isPrevious"
|
|
2767
|
-
[class.btn-primary]="isPrimaryAction"
|
|
2768
|
-
[class.clr-wizard-btn--primary]="isPrimaryAction"
|
|
2769
|
-
[class.btn-success]="isFinish"
|
|
2770
|
-
[class.btn-danger]="isDanger"
|
|
2771
|
-
[class.disabled]="isDisabled"
|
|
2772
|
-
[attr.disabled]="_disabledAttribute"
|
|
2773
|
-
(click)="click()"
|
|
2774
|
-
>
|
|
2775
|
-
<ng-content></ng-content>
|
|
2776
|
-
</button>
|
|
2777
|
-
`,
|
|
2778
|
-
host: { class: 'clr-wizard-btn-wrapper', '[attr.aria-hidden]': 'isHidden' },
|
|
2779
|
-
standalone: false,
|
|
2780
|
-
}]
|
|
2781
|
-
}], ctorParameters: () => [{ type: WizardNavigationService }, { type: ButtonHubService }], propDecorators: { type: [{
|
|
2782
|
-
type: Input,
|
|
2783
|
-
args: ['type']
|
|
2784
|
-
}], disabled: [{
|
|
2785
|
-
type: Input,
|
|
2786
|
-
args: ['clrWizardButtonDisabled']
|
|
2787
|
-
}], hidden: [{
|
|
2788
|
-
type: Input,
|
|
2789
|
-
args: ['clrWizardButtonHidden']
|
|
2790
|
-
}], wasClicked: [{
|
|
2791
|
-
type: Output,
|
|
2792
|
-
args: ['clrWizardButtonClicked']
|
|
2793
|
-
}] } });
|
|
2794
|
-
|
|
2795
3006
|
/*
|
|
2796
3007
|
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2797
3008
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -2859,5 +3070,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2859
3070
|
* Generated bundle index. Do not edit.
|
|
2860
3071
|
*/
|
|
2861
3072
|
|
|
2862
|
-
export { CLR_WIZARD_DIRECTIVES, CUSTOM_BUTTON_TYPES, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, DEFAULT_BUTTON_TYPES };
|
|
3073
|
+
export { CLR_WIZARD_DIRECTIVES, CUSTOM_BUTTON_TYPES, ClrWizard, ClrWizardButton, ClrWizardFooterAlign, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardStepnavLayout, ClrWizardTitle, DEFAULT_BUTTON_TYPES, footerAlignAttribute, stepnavLayoutAttribute };
|
|
2863
3074
|
//# sourceMappingURL=clr-angular-wizard.mjs.map
|