@clr/angular 17.2.1 → 17.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/stepper/stepper-panel.d.ts +1 -1
- package/button/button-loading/loading-button.d.ts +2 -2
- package/clarity.api.md +98 -72
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +1 -1
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +1 -1
- package/data/datagrid/datagrid-action-overflow.d.ts +2 -3
- package/data/datagrid/datagrid-detail-header.d.ts +1 -1
- package/data/datagrid/datagrid-filter.d.ts +1 -1
- package/data/datagrid/datagrid-hideable-column.d.ts +0 -1
- package/data/datagrid/datagrid-items.d.ts +0 -1
- package/data/datagrid/datagrid-pagination.d.ts +1 -1
- package/data/datagrid/datagrid-row.d.ts +5 -5
- package/data/datagrid/datagrid.d.ts +8 -5
- package/data/datagrid/providers/column-resizer.service.d.ts +1 -1
- package/data/datagrid/providers/selection.d.ts +1 -2
- package/data/datagrid/providers/table-size.service.d.ts +1 -1
- package/data/datagrid/render/cell-renderer.d.ts +1 -1
- package/data/datagrid/render/header-renderer.d.ts +1 -2
- package/data/datagrid/render/main-renderer.d.ts +4 -3
- package/data/datagrid/render/row-renderer.d.ts +2 -1
- package/data/tree-view/tree.d.ts +5 -1
- package/emphasis/alert/alert.d.ts +1 -1
- package/esm2020/accordion/stepper/stepper-panel.mjs +5 -4
- package/esm2020/button/button-loading/loading-button.mjs +1 -1
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +1 -1
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +1 -1
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +8 -9
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +1 -1
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +1 -1
- package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +3 -3
- package/esm2020/data/datagrid/datagrid-filter.mjs +1 -1
- package/esm2020/data/datagrid/datagrid-hideable-column.mjs +3 -4
- package/esm2020/data/datagrid/datagrid-if-detail.mjs +2 -2
- package/esm2020/data/datagrid/datagrid-items.mjs +2 -3
- package/esm2020/data/datagrid/datagrid-pagination.mjs +3 -3
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +5 -5
- package/esm2020/data/datagrid/datagrid-row.mjs +15 -9
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +5 -5
- package/esm2020/data/datagrid/datagrid.mjs +51 -42
- package/esm2020/data/datagrid/providers/column-resizer.service.mjs +1 -1
- package/esm2020/data/datagrid/providers/selection.mjs +11 -12
- package/esm2020/data/datagrid/providers/table-size.service.mjs +1 -1
- package/esm2020/data/datagrid/render/cell-renderer.mjs +1 -1
- package/esm2020/data/datagrid/render/header-renderer.mjs +2 -3
- package/esm2020/data/datagrid/render/main-renderer.mjs +30 -19
- package/esm2020/data/datagrid/render/row-renderer.mjs +6 -3
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +2 -2
- package/esm2020/data/stack-view/stack-block.mjs +4 -2
- package/esm2020/data/tree-view/recursive-children.mjs +3 -3
- package/esm2020/data/tree-view/tree-node.mjs +5 -5
- package/esm2020/data/tree-view/tree.mjs +24 -11
- package/esm2020/emphasis/alert/alert.mjs +1 -1
- package/esm2020/forms/checkbox/checkbox-container.mjs +9 -5
- package/esm2020/forms/checkbox/checkbox.mjs +1 -1
- package/esm2020/forms/combobox/combobox-container.mjs +1 -1
- package/esm2020/forms/combobox/combobox.mjs +2 -2
- package/esm2020/forms/combobox/option-items.directive.mjs +2 -3
- package/esm2020/forms/combobox/option.mjs +6 -5
- package/esm2020/forms/combobox/options.mjs +1 -1
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +1 -1
- package/esm2020/forms/common/abstract-container.mjs +3 -3
- package/esm2020/forms/common/control.mjs +1 -1
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +3 -3
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +2 -3
- package/esm2020/forms/common/label.mjs +1 -1
- package/esm2020/forms/common/wrapped-control.mjs +3 -3
- package/esm2020/forms/datalist/datalist-container.mjs +2 -3
- package/esm2020/forms/datalist/datalist-input.mjs +2 -2
- package/esm2020/forms/datepicker/calendar.mjs +1 -1
- package/esm2020/forms/datepicker/date-container.mjs +4 -5
- package/esm2020/forms/datepicker/date-input.mjs +1 -1
- package/esm2020/forms/datepicker/monthpicker.mjs +1 -1
- package/esm2020/forms/datepicker/providers/date-io.service.mjs +3 -4
- package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +2 -2
- package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +1 -1
- package/esm2020/forms/datepicker/yearpicker.mjs +1 -1
- package/esm2020/forms/input/input.mjs +1 -1
- package/esm2020/forms/password/password-container.mjs +2 -2
- package/esm2020/forms/password/password.mjs +3 -4
- package/esm2020/forms/radio/radio-container.mjs +9 -5
- package/esm2020/forms/radio/radio.mjs +1 -1
- package/esm2020/forms/range/range.mjs +1 -1
- package/esm2020/forms/select/select.mjs +1 -1
- package/esm2020/forms/textarea/textarea.mjs +1 -1
- package/esm2020/layout/main-container/main-container.mjs +1 -1
- package/esm2020/layout/nav/header.mjs +3 -3
- package/esm2020/layout/nav/nav-level.mjs +16 -12
- package/esm2020/layout/tabs/tab-link.directive.mjs +4 -6
- package/esm2020/layout/tabs/tabs.mjs +1 -1
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +8 -9
- package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +2 -2
- package/esm2020/layout/vertical-nav/vertical-nav.mjs +2 -2
- package/esm2020/modal/index.mjs +2 -1
- package/esm2020/modal/modal-body.mjs +4 -4
- package/esm2020/modal/modal-configuration.service.mjs +4 -3
- package/esm2020/modal/modal.mjs +15 -5
- package/esm2020/modal/modal.module.mjs +2 -4
- package/esm2020/modal/side-panel.mjs +4 -2
- package/esm2020/popover/common/abstract-popover.mjs +1 -1
- package/esm2020/popover/dropdown/dropdown.mjs +3 -4
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +2 -2
- package/esm2020/popover/signpost/signpost-content.mjs +2 -3
- package/esm2020/popover/signpost/signpost-trigger.mjs +1 -1
- package/esm2020/popover/tooltip/tooltip-content.mjs +1 -1
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +2 -3
- package/esm2020/timeline/timeline-step.mjs +1 -1
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +1 -1
- package/esm2020/utils/cdk/cdk-drag.module.mjs +1 -1
- package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +1 -1
- package/esm2020/utils/conditional/if-active.directive.mjs +2 -2
- package/esm2020/utils/conditional/if-expanded.directive.mjs +2 -2
- package/esm2020/utils/conditional/if-open.directive.mjs +2 -2
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +4 -4
- package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +1 -1
- package/esm2020/utils/focus/key-focus/key-focus-item.mjs +1 -1
- package/esm2020/utils/focus/key-focus/key-focus.mjs +1 -1
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +1 -1
- package/esm2020/utils/i18n/common-strings.default.mjs +4 -1
- package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
- package/esm2020/utils/popover/popover-anchor.mjs +1 -1
- package/esm2020/utils/popover/popover-close-button.mjs +1 -1
- package/esm2020/utils/popover/popover-content.mjs +10 -4
- package/esm2020/utils/popover/popover-open-close-button.mjs +2 -2
- package/esm2020/utils/popover/providers/popover-events.service.mjs +1 -1
- package/esm2020/wizard/providers/wizard-navigation.service.mjs +8 -8
- package/esm2020/wizard/wizard-stepnav-item.mjs +13 -19
- package/esm2020/wizard/wizard.mjs +3 -3
- package/esm2020/wizard/wizard.module.mjs +3 -3
- package/fesm2015/clr-angular.mjs +293 -233
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +290 -233
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/checkbox/checkbox.d.ts +1 -1
- package/forms/combobox/combobox-container.d.ts +2 -2
- package/forms/combobox/combobox.d.ts +4 -4
- package/forms/combobox/option-items.directive.d.ts +0 -1
- package/forms/combobox/option.d.ts +3 -3
- package/forms/combobox/options.d.ts +1 -1
- package/forms/combobox/providers/combobox-focus-handler.service.d.ts +1 -1
- package/forms/common/control.d.ts +1 -1
- package/forms/common/if-control-state/if-control-state.service.d.ts +0 -1
- package/forms/common/label.d.ts +1 -1
- package/forms/common/wrapped-control.d.ts +3 -3
- package/forms/datalist/datalist-container.d.ts +0 -1
- package/forms/datalist/datalist-input.d.ts +1 -1
- package/forms/datepicker/calendar.d.ts +1 -1
- package/forms/datepicker/date-container.d.ts +1 -2
- package/forms/datepicker/date-input.d.ts +2 -2
- package/forms/datepicker/monthpicker.d.ts +1 -1
- package/forms/datepicker/providers/date-io.service.d.ts +1 -2
- package/forms/datepicker/providers/datepicker-focus.service.d.ts +1 -1
- package/forms/datepicker/yearpicker.d.ts +1 -1
- package/forms/input/input.d.ts +1 -1
- package/forms/password/password.d.ts +1 -2
- package/forms/radio/radio.d.ts +1 -1
- package/forms/range/range.d.ts +1 -1
- package/forms/select/select.d.ts +1 -1
- package/forms/textarea/textarea.d.ts +1 -1
- package/layout/main-container/main-container.d.ts +1 -1
- package/layout/nav/nav-level.d.ts +0 -1
- package/layout/tabs/tab-link.directive.d.ts +2 -4
- package/layout/tabs/tabs.d.ts +1 -1
- package/layout/vertical-nav/vertical-nav-group.d.ts +1 -2
- package/modal/index.d.ts +1 -0
- package/modal/modal.d.ts +3 -1
- package/modal/side-panel.d.ts +1 -1
- package/package.json +5 -5
- package/popover/common/abstract-popover.d.ts +3 -3
- package/popover/dropdown/dropdown.d.ts +0 -1
- package/popover/signpost/signpost-content.d.ts +1 -2
- package/popover/signpost/signpost-trigger.d.ts +1 -1
- package/popover/tooltip/tooltip-content.d.ts +1 -1
- package/popover/tooltip/tooltip-trigger.d.ts +0 -1
- package/src/utils/popover/README.md +1 -1
- package/timeline/timeline-step.d.ts +1 -1
- package/utils/animations/expandable-animation/expandable-animation.d.ts +1 -1
- package/utils/cdk/cdk-drag.module.d.ts +1 -1
- package/utils/cdk/cdk-trap-focus.module.d.ts +1 -1
- package/utils/conditional/if-expanded.directive.d.ts +1 -1
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +1 -1
- package/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.d.ts +1 -1
- package/utils/focus/key-focus/key-focus-item.d.ts +2 -2
- package/utils/focus/key-focus/key-focus.d.ts +1 -1
- package/utils/focus/key-focus/roving-tabindex.d.ts +1 -1
- package/utils/i18n/common-strings.interface.d.ts +2 -0
- package/utils/popover/popover-anchor.d.ts +1 -1
- package/utils/popover/popover-close-button.d.ts +1 -1
- package/utils/popover/popover-content.d.ts +1 -0
- package/utils/popover/providers/popover-events.service.d.ts +3 -3
- package/wizard/wizard.d.ts +1 -1
package/fesm2020/clr-angular.mjs
CHANGED
|
@@ -19,7 +19,6 @@ import { _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';
|
|
|
19
19
|
import * as i3$1 from '@angular/cdk/scrolling';
|
|
20
20
|
import { FixedSizeVirtualScrollStrategy, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
21
21
|
import * as i1$3 from '@angular/router';
|
|
22
|
-
import '@cds/core/internal-components/close-button/register.js';
|
|
23
22
|
import '@cds/core/icon/register';
|
|
24
23
|
|
|
25
24
|
/*
|
|
@@ -395,6 +394,9 @@ const commonStringsDefault = {
|
|
|
395
394
|
fileCount: '{COUNT} files',
|
|
396
395
|
clearFile: 'Clear {FILE}',
|
|
397
396
|
clearFiles: 'Clear {COUNT} files',
|
|
397
|
+
// Tree
|
|
398
|
+
selectedTreeNode: 'selected',
|
|
399
|
+
unselectedTreeNode: 'unselected',
|
|
398
400
|
};
|
|
399
401
|
|
|
400
402
|
/*
|
|
@@ -1160,6 +1162,9 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1160
1162
|
// set panel status on form status change only after the form becomes invalid
|
|
1161
1163
|
const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));
|
|
1162
1164
|
this.subscriptions.push(this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {
|
|
1165
|
+
if (!this.formGroup.touched) {
|
|
1166
|
+
return;
|
|
1167
|
+
}
|
|
1163
1168
|
if (status === 'VALID') {
|
|
1164
1169
|
this.stepperService.setPanelValid(this.id);
|
|
1165
1170
|
}
|
|
@@ -1176,9 +1181,7 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1176
1181
|
this.subscriptions.push(this.stepperService.activeStep
|
|
1177
1182
|
.pipe(filter(panelId => isPlatformBrowser(this.platformId) && panelId === this.id))
|
|
1178
1183
|
.subscribe(() => {
|
|
1179
|
-
|
|
1180
|
-
//before focusing on the next stepper panel header
|
|
1181
|
-
setTimeout(() => this.headerButton.nativeElement.focus(), 1500);
|
|
1184
|
+
this.headerButton.nativeElement.focus();
|
|
1182
1185
|
}));
|
|
1183
1186
|
}
|
|
1184
1187
|
triggerAllFormControlValidationIfError(panel) {
|
|
@@ -2227,6 +2230,7 @@ class ClrPopoverContent {
|
|
|
2227
2230
|
this.subscriptions = [];
|
|
2228
2231
|
this.removeClickListenerFn = null;
|
|
2229
2232
|
this.shouldRealign = false;
|
|
2233
|
+
this.previousContentHeight = null;
|
|
2230
2234
|
// Check-collector pattern:
|
|
2231
2235
|
// In order to get accurate content height/width values, we cannot calculate alignment offsets until
|
|
2232
2236
|
// after the projected content has stabilized.
|
|
@@ -2248,9 +2252,14 @@ class ClrPopoverContent {
|
|
|
2248
2252
|
this.smartEventsService.scrollToClose = !!scrollToClose;
|
|
2249
2253
|
}
|
|
2250
2254
|
ngAfterContentChecked() {
|
|
2251
|
-
if (this.smartOpenService.open && this.view
|
|
2252
|
-
|
|
2253
|
-
this.
|
|
2255
|
+
if (this.smartOpenService.open && this.view) {
|
|
2256
|
+
const rootNodeOffsetHeight = this.view.rootNodes[0].offsetHeight;
|
|
2257
|
+
if (this.shouldRealign ||
|
|
2258
|
+
(this.previousContentHeight !== null && this.previousContentHeight !== rootNodeOffsetHeight)) {
|
|
2259
|
+
// Channel content-check event through the check-collector
|
|
2260
|
+
this.previousContentHeight = rootNodeOffsetHeight;
|
|
2261
|
+
this.checkCollector.emit();
|
|
2262
|
+
}
|
|
2254
2263
|
}
|
|
2255
2264
|
}
|
|
2256
2265
|
ngAfterViewInit() {
|
|
@@ -2366,7 +2375,7 @@ class ClrPopoverOpenCloseButton {
|
|
|
2366
2375
|
this.smartOpenService = smartOpenService;
|
|
2367
2376
|
this.openCloseChange = new EventEmitter();
|
|
2368
2377
|
this.subscriptions = [];
|
|
2369
|
-
this.subscriptions.push(
|
|
2378
|
+
this.subscriptions.push(smartOpenService.openChange.subscribe(change => {
|
|
2370
2379
|
this.openCloseChange.next(change);
|
|
2371
2380
|
}));
|
|
2372
2381
|
}
|
|
@@ -3319,7 +3328,7 @@ class ClrIfActive {
|
|
|
3319
3328
|
this.activeChange = new EventEmitter(false);
|
|
3320
3329
|
this.wasActive = false;
|
|
3321
3330
|
this.checkAndUpdateView(ifActiveService.current);
|
|
3322
|
-
this.subscription =
|
|
3331
|
+
this.subscription = ifActiveService.currentChange.subscribe(newCurrentId => {
|
|
3323
3332
|
this.checkAndUpdateView(newCurrentId);
|
|
3324
3333
|
});
|
|
3325
3334
|
}
|
|
@@ -3409,7 +3418,7 @@ class ClrIfOpen {
|
|
|
3409
3418
|
* used with de-structured / de-sugared syntax.
|
|
3410
3419
|
*/
|
|
3411
3420
|
this.openChange = new EventEmitter(false);
|
|
3412
|
-
this.subscription =
|
|
3421
|
+
this.subscription = toggleService.openChange.subscribe(change => {
|
|
3413
3422
|
this.updateView(change);
|
|
3414
3423
|
this.openChange.emit(change);
|
|
3415
3424
|
});
|
|
@@ -3479,7 +3488,7 @@ class ClrIfExpanded {
|
|
|
3479
3488
|
this._subscriptions = [];
|
|
3480
3489
|
this._subscriptions.push(expand.expandChange.subscribe(() => {
|
|
3481
3490
|
this.updateView();
|
|
3482
|
-
this.expandedChange.emit(
|
|
3491
|
+
this.expandedChange.emit(expand.expanded);
|
|
3483
3492
|
}));
|
|
3484
3493
|
}
|
|
3485
3494
|
get expanded() {
|
|
@@ -3636,7 +3645,7 @@ class ClrFocusOnViewInit {
|
|
|
3636
3645
|
this.renderer = renderer;
|
|
3637
3646
|
this.directFocus = true; // true if the element gets focused without need to set tabindex;
|
|
3638
3647
|
this.destroy$ = new Subject();
|
|
3639
|
-
this._isEnabled =
|
|
3648
|
+
this._isEnabled = focusOnViewInit;
|
|
3640
3649
|
// Angular compiler doesn't understand the type Document
|
|
3641
3650
|
// when working out the metadata for injectable parameters,
|
|
3642
3651
|
// even though it understands the injection token DOCUMENT
|
|
@@ -3647,8 +3656,8 @@ class ClrFocusOnViewInit {
|
|
|
3647
3656
|
.subscribe(() => {
|
|
3648
3657
|
if (!this.directFocus) {
|
|
3649
3658
|
// manually set attributes and styles should be removed
|
|
3650
|
-
|
|
3651
|
-
|
|
3659
|
+
renderer.removeAttribute(el.nativeElement, 'tabindex');
|
|
3660
|
+
renderer.setStyle(el.nativeElement, 'outline', null);
|
|
3652
3661
|
}
|
|
3653
3662
|
}));
|
|
3654
3663
|
}
|
|
@@ -4498,12 +4507,11 @@ var CONTROL_STATE;
|
|
|
4498
4507
|
})(CONTROL_STATE || (CONTROL_STATE = {}));
|
|
4499
4508
|
class IfControlStateService {
|
|
4500
4509
|
constructor(ngControlService) {
|
|
4501
|
-
this.ngControlService = ngControlService;
|
|
4502
4510
|
this.subscriptions = [];
|
|
4503
4511
|
// Implement our own status changes observable, since Angular controls don't
|
|
4504
4512
|
this._statusChanges = new BehaviorSubject(CONTROL_STATE.NONE);
|
|
4505
4513
|
// Wait for the control to be available
|
|
4506
|
-
this.subscriptions.push(
|
|
4514
|
+
this.subscriptions.push(ngControlService.controlChanges.subscribe(control => {
|
|
4507
4515
|
if (control) {
|
|
4508
4516
|
this.control = control;
|
|
4509
4517
|
// Subscribe to the status change events, only after touched
|
|
@@ -4753,14 +4761,14 @@ class ClrAbstractContainer {
|
|
|
4753
4761
|
this.ngControlService = ngControlService;
|
|
4754
4762
|
this._dynamic = false;
|
|
4755
4763
|
this.subscriptions = [];
|
|
4756
|
-
this.subscriptions.push(
|
|
4764
|
+
this.subscriptions.push(ifControlStateService.statusChanges.subscribe((state) => {
|
|
4757
4765
|
this.state = state;
|
|
4758
4766
|
// Make sure everything is updated before dispatching the values for helpers
|
|
4759
4767
|
setTimeout(() => {
|
|
4760
4768
|
this.updateHelpers();
|
|
4761
4769
|
});
|
|
4762
4770
|
}));
|
|
4763
|
-
this.subscriptions.push(
|
|
4771
|
+
this.subscriptions.push(ngControlService.controlChanges.subscribe(control => {
|
|
4764
4772
|
this.control = control;
|
|
4765
4773
|
}));
|
|
4766
4774
|
}
|
|
@@ -5013,10 +5021,10 @@ class WrappedFormControl {
|
|
|
5013
5021
|
this.vcr = vcr;
|
|
5014
5022
|
this.wrapperType = wrapperType;
|
|
5015
5023
|
this.ngControl = ngControl;
|
|
5016
|
-
this.index = 0;
|
|
5017
|
-
this.subscriptions = [];
|
|
5018
5024
|
this.renderer = renderer;
|
|
5019
5025
|
this.el = el;
|
|
5026
|
+
this.index = 0;
|
|
5027
|
+
this.subscriptions = [];
|
|
5020
5028
|
if (injector) {
|
|
5021
5029
|
this.ngControlService = injector.get(NgControlService, null);
|
|
5022
5030
|
this.ifControlStateService = injector.get(IfControlStateService, null);
|
|
@@ -5237,12 +5245,12 @@ class AbstractIfState {
|
|
|
5237
5245
|
this.subscriptions = [];
|
|
5238
5246
|
this.displayedContent = false;
|
|
5239
5247
|
if (ngControlService) {
|
|
5240
|
-
this.subscriptions.push(
|
|
5248
|
+
this.subscriptions.push(ngControlService.controlChanges.subscribe(control => {
|
|
5241
5249
|
this.control = control;
|
|
5242
5250
|
}));
|
|
5243
5251
|
}
|
|
5244
5252
|
if (ifControlStateService) {
|
|
5245
|
-
this.subscriptions.push(
|
|
5253
|
+
this.subscriptions.push(ifControlStateService.statusChanges.subscribe((state) => {
|
|
5246
5254
|
this.handleState(state);
|
|
5247
5255
|
}));
|
|
5248
5256
|
}
|
|
@@ -5610,8 +5618,10 @@ ClrCheckboxContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
5610
5618
|
<label *ngIf="!label && addGrid()"></label>
|
|
5611
5619
|
<div class="clr-control-container" [class.clr-control-inline]="clrInline" [ngClass]="controlClass()">
|
|
5612
5620
|
<ng-content select="clr-checkbox-wrapper,clr-toggle-wrapper"></ng-content>
|
|
5613
|
-
<div class="clr-subtext-wrapper">
|
|
5614
|
-
<ng-content select="clr-control-helper"
|
|
5621
|
+
<div *ngIf="showHelper" class="clr-subtext-wrapper">
|
|
5622
|
+
<ng-content select="clr-control-helper"></ng-content>
|
|
5623
|
+
</div>
|
|
5624
|
+
<div *ngIf="showInvalid || showValid" class="clr-subtext-wrapper">
|
|
5615
5625
|
<cds-icon
|
|
5616
5626
|
*ngIf="showInvalid"
|
|
5617
5627
|
class="clr-validate-icon"
|
|
@@ -5640,8 +5650,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
5640
5650
|
<label *ngIf="!label && addGrid()"></label>
|
|
5641
5651
|
<div class="clr-control-container" [class.clr-control-inline]="clrInline" [ngClass]="controlClass()">
|
|
5642
5652
|
<ng-content select="clr-checkbox-wrapper,clr-toggle-wrapper"></ng-content>
|
|
5643
|
-
<div class="clr-subtext-wrapper">
|
|
5644
|
-
<ng-content select="clr-control-helper"
|
|
5653
|
+
<div *ngIf="showHelper" class="clr-subtext-wrapper">
|
|
5654
|
+
<ng-content select="clr-control-helper"></ng-content>
|
|
5655
|
+
</div>
|
|
5656
|
+
<div *ngIf="showInvalid || showValid" class="clr-subtext-wrapper">
|
|
5645
5657
|
<cds-icon
|
|
5646
5658
|
*ngIf="showInvalid"
|
|
5647
5659
|
class="clr-validate-icon"
|
|
@@ -6795,7 +6807,7 @@ class ClrOption {
|
|
|
6795
6807
|
this.optionSelectionService = optionSelectionService;
|
|
6796
6808
|
// A proxy with only the necessary data to be used for a11y and the focus handler service.
|
|
6797
6809
|
this.optionProxy = new OptionData(null, null);
|
|
6798
|
-
this.optionProxy.el =
|
|
6810
|
+
this.optionProxy.el = elRef.nativeElement;
|
|
6799
6811
|
}
|
|
6800
6812
|
get optionId() {
|
|
6801
6813
|
return this._id;
|
|
@@ -6823,7 +6835,8 @@ class ClrOption {
|
|
|
6823
6835
|
this.optionProxy.id = this._id;
|
|
6824
6836
|
}
|
|
6825
6837
|
}
|
|
6826
|
-
onClick() {
|
|
6838
|
+
onClick(event) {
|
|
6839
|
+
event.stopPropagation();
|
|
6827
6840
|
if (this.optionSelectionService.multiselectable) {
|
|
6828
6841
|
this.optionSelectionService.toggle(this.value);
|
|
6829
6842
|
}
|
|
@@ -6838,7 +6851,7 @@ class ClrOption {
|
|
|
6838
6851
|
}
|
|
6839
6852
|
}
|
|
6840
6853
|
ClrOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrOption, deps: [{ token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: OptionSelectionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6841
|
-
ClrOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrOption, selector: "clr-option", inputs: { optionId: ["id", "optionId"], value: ["clrValue", "value"] }, host: { listeners: { "click": "onClick()" }, properties: { "class.clr-combobox-option": "true", "attr.role": "\"option\"", "attr.tabindex": "-1", "attr.id": "optionId", "class.active": "this.selected", "class.clr-focus": "this.focusClass" } }, ngImport: i0, template: `
|
|
6854
|
+
ClrOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrOption, selector: "clr-option", inputs: { optionId: ["id", "optionId"], value: ["clrValue", "value"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.clr-combobox-option": "true", "attr.role": "\"option\"", "attr.tabindex": "-1", "attr.id": "optionId", "class.active": "this.selected", "class.clr-focus": "this.focusClass" } }, ngImport: i0, template: `
|
|
6842
6855
|
<ng-content></ng-content>
|
|
6843
6856
|
<span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
|
|
6844
6857
|
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
@@ -6872,7 +6885,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
6872
6885
|
args: ['class.clr-focus']
|
|
6873
6886
|
}], onClick: [{
|
|
6874
6887
|
type: HostListener,
|
|
6875
|
-
args: ['click']
|
|
6888
|
+
args: ['click', ['$event']]
|
|
6876
6889
|
}] } });
|
|
6877
6890
|
|
|
6878
6891
|
/*
|
|
@@ -7058,7 +7071,7 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
7058
7071
|
control.valueAccessor = this;
|
|
7059
7072
|
}
|
|
7060
7073
|
// default to SingleSelectComboboxModel, in case the optional input [ClrMulti] isn't used
|
|
7061
|
-
|
|
7074
|
+
optionSelectionService.selectionModel = new SingleSelectComboboxModel();
|
|
7062
7075
|
this.updateControlValue();
|
|
7063
7076
|
}
|
|
7064
7077
|
get multiSelect() {
|
|
@@ -7354,11 +7367,10 @@ class ClrOptionItems {
|
|
|
7354
7367
|
this.differs = differs;
|
|
7355
7368
|
this.optionService = optionService;
|
|
7356
7369
|
this.positionService = positionService;
|
|
7357
|
-
this.vcr = vcr;
|
|
7358
7370
|
this.subscriptions = [];
|
|
7359
7371
|
this.filter = '';
|
|
7360
7372
|
this.differ = null;
|
|
7361
|
-
this.iterableProxy = new NgForOf(
|
|
7373
|
+
this.iterableProxy = new NgForOf(vcr, template, differs);
|
|
7362
7374
|
this.subscriptions.push(optionService.inputChanged.subscribe(filter => {
|
|
7363
7375
|
this.filter = filter;
|
|
7364
7376
|
this.updateItems();
|
|
@@ -7738,10 +7750,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
7738
7750
|
class ClrDatalistContainer extends ClrAbstractContainer {
|
|
7739
7751
|
constructor(controlClassService, layoutService, ngControlService, focusService, ifControlStateService) {
|
|
7740
7752
|
super(ifControlStateService, layoutService, controlClassService, ngControlService);
|
|
7741
|
-
this.focusService = focusService;
|
|
7742
7753
|
this.ifControlStateService = ifControlStateService;
|
|
7743
7754
|
this.focus = false;
|
|
7744
|
-
this.subscriptions.push(
|
|
7755
|
+
this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));
|
|
7745
7756
|
}
|
|
7746
7757
|
}
|
|
7747
7758
|
ClrDatalistContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatalistContainer, deps: [{ token: ControlClassService }, { token: LayoutService, optional: true }, { token: NgControlService }, { token: FocusService }, { token: IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -7845,7 +7856,7 @@ class ClrDatalistInput extends WrappedFormControl {
|
|
|
7845
7856
|
super(vcr, ClrDatalistContainer, injector, control, renderer, el);
|
|
7846
7857
|
this.focusService = focusService;
|
|
7847
7858
|
this.datalistIdService = datalistIdService;
|
|
7848
|
-
if (!
|
|
7859
|
+
if (!focusService) {
|
|
7849
7860
|
throw new Error('clrDatalist requires being wrapped in <clr-datalist-container>');
|
|
7850
7861
|
}
|
|
7851
7862
|
}
|
|
@@ -8619,8 +8630,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
8619
8630
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
8620
8631
|
*/
|
|
8621
8632
|
class DateIOService {
|
|
8622
|
-
constructor(
|
|
8623
|
-
this._localeHelperService = _localeHelperService;
|
|
8633
|
+
constructor(localeHelperService) {
|
|
8624
8634
|
this.disabledDates = {
|
|
8625
8635
|
// This is the default range. It approximates the beginning of time to the end of time.
|
|
8626
8636
|
// Unless a minDate or maxDate is set with the native HTML5 api the range is all dates
|
|
@@ -8631,7 +8641,7 @@ class DateIOService {
|
|
|
8631
8641
|
this.cldrLocaleDateFormat = DEFAULT_LOCALE_FORMAT;
|
|
8632
8642
|
this.localeDisplayFormat = LITTLE_ENDIAN;
|
|
8633
8643
|
this.delimiters = ['/', '/'];
|
|
8634
|
-
this.cldrLocaleDateFormat =
|
|
8644
|
+
this.cldrLocaleDateFormat = localeHelperService.localeDateFormat;
|
|
8635
8645
|
this.initializeLocaleDisplayFormat();
|
|
8636
8646
|
}
|
|
8637
8647
|
get placeholderText() {
|
|
@@ -9052,7 +9062,7 @@ class DatepickerEnabledService {
|
|
|
9052
9062
|
constructor(_document) {
|
|
9053
9063
|
this._document = _document;
|
|
9054
9064
|
this._isUserAgentMobile = false;
|
|
9055
|
-
if (
|
|
9065
|
+
if (_document) {
|
|
9056
9066
|
this._isUserAgentMobile = MOBILE_USERAGENT_REGEX.test(_document.defaultView.navigator.userAgent);
|
|
9057
9067
|
this._innerWidth = _document.defaultView.innerWidth;
|
|
9058
9068
|
}
|
|
@@ -9648,18 +9658,17 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
9648
9658
|
this.dateFormControlService = dateFormControlService;
|
|
9649
9659
|
this.dateIOService = dateIOService;
|
|
9650
9660
|
this.commonStrings = commonStrings;
|
|
9651
|
-
this.focusService = focusService;
|
|
9652
9661
|
this.viewManagerService = viewManagerService;
|
|
9653
9662
|
this.controlClassService = controlClassService;
|
|
9654
9663
|
this.layoutService = layoutService;
|
|
9655
9664
|
this.ngControlService = ngControlService;
|
|
9656
9665
|
this.ifControlStateService = ifControlStateService;
|
|
9657
9666
|
this.focus = false;
|
|
9658
|
-
this.subscriptions.push(
|
|
9667
|
+
this.subscriptions.push(focusService.focusChange.subscribe(state => {
|
|
9659
9668
|
this.focus = state;
|
|
9660
9669
|
}));
|
|
9661
|
-
this.subscriptions.push(
|
|
9662
|
-
|
|
9670
|
+
this.subscriptions.push(toggleService.openChange.subscribe(() => {
|
|
9671
|
+
dateFormControlService.markAsTouched();
|
|
9663
9672
|
}));
|
|
9664
9673
|
}
|
|
9665
9674
|
set clrPosition(position) {
|
|
@@ -10659,7 +10668,7 @@ class ClrPasswordContainer extends ClrAbstractContainer {
|
|
|
10659
10668
|
this.focus = false;
|
|
10660
10669
|
this._toggle = true;
|
|
10661
10670
|
/* The unsubscribe is handle inside the ClrAbstractContainer */
|
|
10662
|
-
this.subscriptions.push(
|
|
10671
|
+
this.subscriptions.push(focusService.focusChange.subscribe(state => {
|
|
10663
10672
|
this.focus = state;
|
|
10664
10673
|
}));
|
|
10665
10674
|
}
|
|
@@ -10809,12 +10818,11 @@ class ClrPassword extends WrappedFormControl {
|
|
|
10809
10818
|
constructor(vcr, injector, control, renderer, el, focusService, toggleService) {
|
|
10810
10819
|
super(vcr, ClrPasswordContainer, injector, control, renderer, el);
|
|
10811
10820
|
this.focusService = focusService;
|
|
10812
|
-
this.toggleService = toggleService;
|
|
10813
10821
|
this.index = 1;
|
|
10814
|
-
if (!
|
|
10822
|
+
if (!focusService) {
|
|
10815
10823
|
throw new Error('clrPassword requires being wrapped in <clr-password-container>');
|
|
10816
10824
|
}
|
|
10817
|
-
this.subscriptions.push(
|
|
10825
|
+
this.subscriptions.push(toggleService.subscribe(toggle => {
|
|
10818
10826
|
renderer.setProperty(el.nativeElement, 'type', toggle ? 'text' : 'password');
|
|
10819
10827
|
}));
|
|
10820
10828
|
}
|
|
@@ -11012,8 +11020,10 @@ ClrRadioContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
11012
11020
|
<label *ngIf="!label && addGrid()"></label>
|
|
11013
11021
|
<div class="clr-control-container" [class.clr-control-inline]="clrInline" [ngClass]="controlClass()">
|
|
11014
11022
|
<ng-content select="clr-radio-wrapper"></ng-content>
|
|
11015
|
-
<div class="clr-subtext-wrapper">
|
|
11016
|
-
<ng-content select="clr-control-helper"
|
|
11023
|
+
<div *ngIf="showHelper" class="clr-subtext-wrapper">
|
|
11024
|
+
<ng-content select="clr-control-helper"></ng-content>
|
|
11025
|
+
</div>
|
|
11026
|
+
<div *ngIf="showValid || showInvalid" class="clr-subtext-wrapper">
|
|
11017
11027
|
<cds-icon
|
|
11018
11028
|
*ngIf="showInvalid"
|
|
11019
11029
|
class="clr-validate-icon"
|
|
@@ -11042,8 +11052,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11042
11052
|
<label *ngIf="!label && addGrid()"></label>
|
|
11043
11053
|
<div class="clr-control-container" [class.clr-control-inline]="clrInline" [ngClass]="controlClass()">
|
|
11044
11054
|
<ng-content select="clr-radio-wrapper"></ng-content>
|
|
11045
|
-
<div class="clr-subtext-wrapper">
|
|
11046
|
-
<ng-content select="clr-control-helper"
|
|
11055
|
+
<div *ngIf="showHelper" class="clr-subtext-wrapper">
|
|
11056
|
+
<ng-content select="clr-control-helper"></ng-content>
|
|
11057
|
+
</div>
|
|
11058
|
+
<div *ngIf="showValid || showInvalid" class="clr-subtext-wrapper">
|
|
11047
11059
|
<cds-icon
|
|
11048
11060
|
*ngIf="showInvalid"
|
|
11049
11061
|
class="clr-validate-icon"
|
|
@@ -12113,7 +12125,7 @@ function getTabableItems(el) {
|
|
|
12113
12125
|
'iframe',
|
|
12114
12126
|
'object',
|
|
12115
12127
|
'embed',
|
|
12116
|
-
'*[tabindex]',
|
|
12128
|
+
'*[tabindex]:not([disabled])',
|
|
12117
12129
|
'*[contenteditable=true]',
|
|
12118
12130
|
'[role=button]:not([disabled])',
|
|
12119
12131
|
].join(',');
|
|
@@ -14380,11 +14392,10 @@ class ClrDatagridItems {
|
|
|
14380
14392
|
this.template = template;
|
|
14381
14393
|
this.differs = differs;
|
|
14382
14394
|
this.items = items;
|
|
14383
|
-
this.vcr = vcr;
|
|
14384
14395
|
this.differ = null;
|
|
14385
14396
|
this.subscriptions = [];
|
|
14386
14397
|
items.smartenUp();
|
|
14387
|
-
this.iterableProxy = new NgForOf(
|
|
14398
|
+
this.iterableProxy = new NgForOf(vcr, template, differs);
|
|
14388
14399
|
this.subscriptions.push(items.change.subscribe(newItems => {
|
|
14389
14400
|
this.iterableProxy.ngForOf = newItems;
|
|
14390
14401
|
this.iterableProxy.ngDoCheck();
|
|
@@ -14457,9 +14468,9 @@ class ClrDatagridPlaceholder {
|
|
|
14457
14468
|
}
|
|
14458
14469
|
ClrDatagridPlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridPlaceholder, deps: [{ token: Items }], target: i0.ɵɵFactoryTarget.Component });
|
|
14459
14470
|
ClrDatagridPlaceholder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder", host: { properties: { "class.datagrid-placeholder-container": "true" } }, ngImport: i0, template: `
|
|
14460
|
-
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid"
|
|
14471
|
+
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid">
|
|
14461
14472
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
14462
|
-
<span
|
|
14473
|
+
<span class="datagrid-placeholder-content"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
14463
14474
|
</div>
|
|
14464
14475
|
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
14465
14476
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridPlaceholder, decorators: [{
|
|
@@ -14467,9 +14478,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14467
14478
|
args: [{
|
|
14468
14479
|
selector: 'clr-dg-placeholder',
|
|
14469
14480
|
template: `
|
|
14470
|
-
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid"
|
|
14481
|
+
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid">
|
|
14471
14482
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
14472
|
-
<span
|
|
14483
|
+
<span class="datagrid-placeholder-content"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
14473
14484
|
</div>
|
|
14474
14485
|
`,
|
|
14475
14486
|
host: { '[class.datagrid-placeholder-container]': 'true' },
|
|
@@ -14880,9 +14891,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14880
14891
|
*/
|
|
14881
14892
|
let nbSelection = 0;
|
|
14882
14893
|
class Selection {
|
|
14883
|
-
constructor(_items,
|
|
14894
|
+
constructor(_items, filters) {
|
|
14884
14895
|
this._items = _items;
|
|
14885
|
-
this._filters = _filters;
|
|
14886
14896
|
this.preserveSelection = false;
|
|
14887
14897
|
/**
|
|
14888
14898
|
* Shift key state, for use in range selection.
|
|
@@ -14903,13 +14913,13 @@ class Selection {
|
|
|
14903
14913
|
*/
|
|
14904
14914
|
this.subscriptions = [];
|
|
14905
14915
|
this.id = 'clr-dg-selection' + nbSelection++;
|
|
14906
|
-
this.subscriptions.push(
|
|
14916
|
+
this.subscriptions.push(filters.change.subscribe(() => {
|
|
14907
14917
|
if (!this._selectable || this.preserveSelection) {
|
|
14908
14918
|
return;
|
|
14909
14919
|
}
|
|
14910
14920
|
this.clearSelection();
|
|
14911
14921
|
}));
|
|
14912
|
-
this.subscriptions.push(
|
|
14922
|
+
this.subscriptions.push(_items.allChanges.subscribe(updatedItems => {
|
|
14913
14923
|
// Reset the lockedRefs;
|
|
14914
14924
|
const updateLockedRef = [];
|
|
14915
14925
|
switch (this.selectionType) {
|
|
@@ -14921,10 +14931,10 @@ class Selection {
|
|
|
14921
14931
|
let selectionUpdated = false;
|
|
14922
14932
|
// if the currentSingle has been set before data was loaded, we look up and save the ref from current data set
|
|
14923
14933
|
if (this.currentSingle && !this.prevSingleSelectionRef) {
|
|
14924
|
-
this.prevSingleSelectionRef =
|
|
14934
|
+
this.prevSingleSelectionRef = _items.trackBy(this.currentSingle);
|
|
14925
14935
|
}
|
|
14926
14936
|
updatedItems.forEach(item => {
|
|
14927
|
-
const ref =
|
|
14937
|
+
const ref = _items.trackBy(item);
|
|
14928
14938
|
// If one of the updated items is the previously selectedSingle, set it as the new one
|
|
14929
14939
|
if (this.prevSingleSelectionRef === ref) {
|
|
14930
14940
|
newSingle = item;
|
|
@@ -14938,7 +14948,7 @@ class Selection {
|
|
|
14938
14948
|
// Therefore, we should delete the currentSingle if it used to be defined but doesn't exist anymore.
|
|
14939
14949
|
// No explicit "delete" is required, since newSingle would be undefined at this point.
|
|
14940
14950
|
// Marking it as selectionUpdated here will set currentSingle to undefined below in the setTimeout.
|
|
14941
|
-
if (
|
|
14951
|
+
if (_items.smart && !newSingle) {
|
|
14942
14952
|
selectionUpdated = true;
|
|
14943
14953
|
}
|
|
14944
14954
|
// TODO: Discussed this with Eudes and this is fine for now.
|
|
@@ -14959,7 +14969,7 @@ class Selection {
|
|
|
14959
14969
|
if (this.current.length > 0 && this.prevSelectionRefs.length !== this.current.length) {
|
|
14960
14970
|
this.prevSelectionRefs = [];
|
|
14961
14971
|
this.current.forEach(item => {
|
|
14962
|
-
this.prevSelectionRefs.push(
|
|
14972
|
+
this.prevSelectionRefs.push(_items.trackBy(item));
|
|
14963
14973
|
});
|
|
14964
14974
|
}
|
|
14965
14975
|
// Duplicate loop, when the issue is issue#2342 is revisited keep in mind that
|
|
@@ -14968,7 +14978,7 @@ class Selection {
|
|
|
14968
14978
|
//
|
|
14969
14979
|
// The both loops below that goes over updatedItems could be combined into one.
|
|
14970
14980
|
updatedItems.forEach(item => {
|
|
14971
|
-
const ref =
|
|
14981
|
+
const ref = _items.trackBy(item);
|
|
14972
14982
|
if (this.lockedRefs.indexOf(ref) > -1) {
|
|
14973
14983
|
updateLockedRef.push(ref);
|
|
14974
14984
|
}
|
|
@@ -14978,7 +14988,7 @@ class Selection {
|
|
|
14978
14988
|
// the if statement below results in broken behavior.
|
|
14979
14989
|
if (leftOver.length > 0) {
|
|
14980
14990
|
updatedItems.forEach(item => {
|
|
14981
|
-
const ref =
|
|
14991
|
+
const ref = _items.trackBy(item);
|
|
14982
14992
|
// Look in current selected refs array if item is selected, and update actual value
|
|
14983
14993
|
const selectedIndex = this.prevSelectionRefs.indexOf(ref);
|
|
14984
14994
|
if (selectedIndex > -1) {
|
|
@@ -14988,7 +14998,7 @@ class Selection {
|
|
|
14988
14998
|
});
|
|
14989
14999
|
// Filter out any unmatched items if we're using smart datagrids where we expect all items to be
|
|
14990
15000
|
// present
|
|
14991
|
-
if (
|
|
15001
|
+
if (_items.smart) {
|
|
14992
15002
|
leftOver = leftOver.filter(selected => updatedItems.indexOf(selected) > -1);
|
|
14993
15003
|
if (this.current.length !== leftOver.length) {
|
|
14994
15004
|
selectionUpdated = true;
|
|
@@ -15306,13 +15316,13 @@ class ClrDatagridRow {
|
|
|
15306
15316
|
this.detailService = detailService;
|
|
15307
15317
|
this.displayMode = displayMode;
|
|
15308
15318
|
this.vcr = vcr;
|
|
15309
|
-
this.renderer = renderer;
|
|
15310
|
-
this.el = el;
|
|
15311
15319
|
this.commonStrings = commonStrings;
|
|
15312
15320
|
this.items = items;
|
|
15313
15321
|
this.document = document;
|
|
15314
15322
|
this.selectedChanged = new EventEmitter(false);
|
|
15315
15323
|
this.expandedChange = new EventEmitter(false);
|
|
15324
|
+
this.detailDisabled = false;
|
|
15325
|
+
this.detailHidden = false;
|
|
15316
15326
|
this.displayCells = false;
|
|
15317
15327
|
this.expandAnimationTrigger = false;
|
|
15318
15328
|
/* reference to the enum so that template can access */
|
|
@@ -15333,17 +15343,17 @@ class ClrDatagridRow {
|
|
|
15333
15343
|
this.radioId = 'clr-dg-row-rd' + nbRow;
|
|
15334
15344
|
this.checkboxId = 'clr-dg-row-cb' + nbRow;
|
|
15335
15345
|
this.expandableId = expand.expandableId;
|
|
15336
|
-
this.subscriptions.push(combineLatest(
|
|
15346
|
+
this.subscriptions.push(combineLatest(expand.replace, expand.expandChange).subscribe(([expandReplaceValue, expandChangeValue]) => {
|
|
15337
15347
|
if (expandReplaceValue && expandChangeValue) {
|
|
15338
15348
|
// replaced and expanding
|
|
15339
15349
|
this.replaced = true;
|
|
15340
|
-
|
|
15350
|
+
renderer.addClass(el.nativeElement, 'datagrid-row-replaced');
|
|
15341
15351
|
}
|
|
15342
15352
|
else {
|
|
15343
15353
|
this.replaced = false;
|
|
15344
15354
|
// Handles these cases: not replaced and collapsing & replaced and
|
|
15345
15355
|
// collapsing and not replaced and expanding.
|
|
15346
|
-
|
|
15356
|
+
renderer.removeClass(el.nativeElement, 'datagrid-row-replaced');
|
|
15347
15357
|
}
|
|
15348
15358
|
}));
|
|
15349
15359
|
}
|
|
@@ -15540,11 +15550,11 @@ class ClrDatagridRow {
|
|
|
15540
15550
|
}
|
|
15541
15551
|
}
|
|
15542
15552
|
ClrDatagridRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, deps: [{ token: Selection }, { token: RowActionService }, { token: ExpandableRowsCount }, { token: DatagridIfExpandService }, { token: DetailService }, { token: DisplayModeService }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: Items }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
15543
|
-
ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridRow, selector: "clr-dg-row", inputs: { item: ["clrDgItem", "item"], clrDgSelectable: "clrDgSelectable", selected: ["clrDgSelected", "selected"], expanded: ["clrDgExpanded", "expanded"], clrDgDetailOpenLabel: "clrDgDetailOpenLabel", clrDgDetailCloseLabel: "clrDgDetailCloseLabel", clrDgRowSelectionLabel: "clrDgRowSelectionLabel" }, outputs: { selectedChanged: "clrDgSelectedChange", expandedChange: "clrDgExpandedChange" }, host: { attributes: { "role": "rowgroup" }, properties: { "class.datagrid-row": "true", "class.datagrid-selected": "selected", "attr.aria-owns": "id" } }, providers: [
|
|
15553
|
+
ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridRow, selector: "clr-dg-row", inputs: { detailDisabled: ["clrDgDetailDisabled", "detailDisabled"], detailHidden: ["clrDgDetailHidden", "detailHidden"], item: ["clrDgItem", "item"], clrDgSelectable: "clrDgSelectable", selected: ["clrDgSelected", "selected"], expanded: ["clrDgExpanded", "expanded"], clrDgDetailOpenLabel: "clrDgDetailOpenLabel", clrDgDetailCloseLabel: "clrDgDetailCloseLabel", clrDgRowSelectionLabel: "clrDgRowSelectionLabel" }, outputs: { selectedChanged: "clrDgSelectedChange", expandedChange: "clrDgExpandedChange" }, host: { attributes: { "role": "rowgroup" }, properties: { "class.datagrid-row": "true", "class.datagrid-selected": "selected", "attr.aria-owns": "id" } }, providers: [
|
|
15544
15554
|
DatagridIfExpandService,
|
|
15545
15555
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15546
15556
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15547
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n clrCheckbox\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </clr-checkbox-wrapper>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n tabindex=\"-1\"\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }] });
|
|
15557
|
+
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n clrCheckbox\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </clr-checkbox-wrapper>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n tabindex=\"-1\"\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n *ngIf=\"!detailHidden\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }] });
|
|
15548
15558
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
15549
15559
|
type: Component,
|
|
15550
15560
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -15556,7 +15566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15556
15566
|
DatagridIfExpandService,
|
|
15557
15567
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15558
15568
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15559
|
-
], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n clrCheckbox\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </clr-checkbox-wrapper>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n tabindex=\"-1\"\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
|
|
15569
|
+
], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n clrCheckbox\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </clr-checkbox-wrapper>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n tabindex=\"-1\"\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n *ngIf=\"!detailHidden\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
|
|
15560
15570
|
}], ctorParameters: function () { return [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: Items }, { type: undefined, decorators: [{
|
|
15561
15571
|
type: Inject,
|
|
15562
15572
|
args: [DOCUMENT]
|
|
@@ -15566,6 +15576,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15566
15576
|
}], expandedChange: [{
|
|
15567
15577
|
type: Output,
|
|
15568
15578
|
args: ['clrDgExpandedChange']
|
|
15579
|
+
}], detailDisabled: [{
|
|
15580
|
+
type: Input,
|
|
15581
|
+
args: ['clrDgDetailDisabled']
|
|
15582
|
+
}], detailHidden: [{
|
|
15583
|
+
type: Input,
|
|
15584
|
+
args: ['clrDgDetailHidden']
|
|
15569
15585
|
}], dgCells: [{
|
|
15570
15586
|
type: ContentChildren,
|
|
15571
15587
|
args: [ClrDatagridCell]
|
|
@@ -15856,7 +15872,7 @@ class DatagridRowRenderer {
|
|
|
15856
15872
|
}
|
|
15857
15873
|
}
|
|
15858
15874
|
DatagridRowRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, deps: [{ token: ColumnsService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
15859
|
-
DatagridRowRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail", queries: [{ propertyName: "cells", predicate: DatagridCellRenderer }], ngImport: i0 });
|
|
15875
|
+
DatagridRowRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail", queries: [{ propertyName: "expandableRow", first: true, predicate: i0.forwardRef(function () { return DatagridRowRenderer; }), descendants: true }, { propertyName: "cells", predicate: DatagridCellRenderer }], ngImport: i0 });
|
|
15860
15876
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, decorators: [{
|
|
15861
15877
|
type: Directive,
|
|
15862
15878
|
args: [{
|
|
@@ -15865,6 +15881,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15865
15881
|
}], ctorParameters: function () { return [{ type: ColumnsService }]; }, propDecorators: { cells: [{
|
|
15866
15882
|
type: ContentChildren,
|
|
15867
15883
|
args: [DatagridCellRenderer]
|
|
15884
|
+
}], expandableRow: [{
|
|
15885
|
+
type: ContentChild,
|
|
15886
|
+
args: [forwardRef(() => DatagridRowRenderer)]
|
|
15868
15887
|
}] } });
|
|
15869
15888
|
|
|
15870
15889
|
/*
|
|
@@ -15874,7 +15893,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15874
15893
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15875
15894
|
*/
|
|
15876
15895
|
class ClrDatagrid {
|
|
15877
|
-
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, document, el, page, commonStrings,
|
|
15896
|
+
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, document, el, page, commonStrings, keyNavigation, zone) {
|
|
15878
15897
|
this.organizer = organizer;
|
|
15879
15898
|
this.items = items;
|
|
15880
15899
|
this.expandableRows = expandableRows;
|
|
@@ -15888,7 +15907,6 @@ class ClrDatagrid {
|
|
|
15888
15907
|
this.el = el;
|
|
15889
15908
|
this.page = page;
|
|
15890
15909
|
this.commonStrings = commonStrings;
|
|
15891
|
-
this.columnsService = columnsService;
|
|
15892
15910
|
this.keyNavigation = keyNavigation;
|
|
15893
15911
|
this.zone = zone;
|
|
15894
15912
|
this.clrDgSingleSelectionAriaLabel = this.commonStrings.keys.singleSelectionAriaLabel;
|
|
@@ -15910,7 +15928,7 @@ class ClrDatagrid {
|
|
|
15910
15928
|
this._subscriptions = [];
|
|
15911
15929
|
const datagridId = uniqueIdFactory();
|
|
15912
15930
|
this.selectAllId = 'clr-dg-select-all-' + datagridId;
|
|
15913
|
-
|
|
15931
|
+
detailService.id = datagridId;
|
|
15914
15932
|
}
|
|
15915
15933
|
/**
|
|
15916
15934
|
* Freezes the datagrid while data is loading
|
|
@@ -16000,30 +16018,17 @@ class ClrDatagrid {
|
|
|
16000
16018
|
this.rows.forEach(row => {
|
|
16001
16019
|
this._displayedRows.insert(row._view);
|
|
16002
16020
|
});
|
|
16003
|
-
|
|
16004
|
-
|
|
16005
|
-
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16010
|
-
|
|
16011
|
-
// always keep open when virtual scroll is available otherwise close it
|
|
16012
|
-
}
|
|
16013
|
-
else if (!this.hasVirtualScroller) {
|
|
16014
|
-
// Using setTimeout to make sure the inner cycles in rows are done
|
|
16015
|
-
setTimeout(() => {
|
|
16016
|
-
this.detailService.close();
|
|
16021
|
+
this.updateDetailState();
|
|
16022
|
+
// retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller
|
|
16023
|
+
if (this.hasVirtualScroller) {
|
|
16024
|
+
const active = this.keyNavigation.getActiveCell();
|
|
16025
|
+
const isFocusInsideDatagrid = this.datagrid.nativeElement.contains(document.activeElement);
|
|
16026
|
+
if (active && isFocusInsideDatagrid) {
|
|
16027
|
+
this.zone.runOutsideAngular(() => {
|
|
16028
|
+
setTimeout(() => this.keyNavigation.setActiveCell(active));
|
|
16017
16029
|
});
|
|
16018
16030
|
}
|
|
16019
16031
|
}
|
|
16020
|
-
// retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller
|
|
16021
|
-
const active = this.keyNavigation.getActiveCell();
|
|
16022
|
-
if (active) {
|
|
16023
|
-
this.zone.runOutsideAngular(() => {
|
|
16024
|
-
setTimeout(() => this.keyNavigation.setActiveCell(active));
|
|
16025
|
-
});
|
|
16026
|
-
}
|
|
16027
16032
|
}));
|
|
16028
16033
|
}
|
|
16029
16034
|
/**
|
|
@@ -16031,6 +16036,7 @@ class ClrDatagrid {
|
|
|
16031
16036
|
*/
|
|
16032
16037
|
ngAfterViewInit() {
|
|
16033
16038
|
this.keyNavigation.initializeKeyGrid(this.el.nativeElement);
|
|
16039
|
+
this.updateDetailState();
|
|
16034
16040
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
16035
16041
|
this.refresh.emit(this.stateProvider.state);
|
|
16036
16042
|
this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
@@ -16114,6 +16120,29 @@ class ClrDatagrid {
|
|
|
16114
16120
|
resize() {
|
|
16115
16121
|
this.organizer.resize();
|
|
16116
16122
|
}
|
|
16123
|
+
/**
|
|
16124
|
+
* Checks the state of detail panel and if it's opened then
|
|
16125
|
+
* find the matching row and trigger the detail panel
|
|
16126
|
+
*/
|
|
16127
|
+
updateDetailState() {
|
|
16128
|
+
// Try to update only when there is something cached and its open.
|
|
16129
|
+
if (this.detailService.state && this.detailService.isOpen) {
|
|
16130
|
+
const row = this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state));
|
|
16131
|
+
/**
|
|
16132
|
+
* Reopen updated row or close it
|
|
16133
|
+
*/
|
|
16134
|
+
if (row) {
|
|
16135
|
+
this.detailService.open(row.item, row.detailButton.nativeElement);
|
|
16136
|
+
// always keep open when virtual scroll is available otherwise close it
|
|
16137
|
+
}
|
|
16138
|
+
else if (!this.hasVirtualScroller) {
|
|
16139
|
+
// Using setTimeout to make sure the inner cycles in rows are done
|
|
16140
|
+
setTimeout(() => {
|
|
16141
|
+
this.detailService.close();
|
|
16142
|
+
});
|
|
16143
|
+
}
|
|
16144
|
+
}
|
|
16145
|
+
}
|
|
16117
16146
|
/**
|
|
16118
16147
|
* Public method to re-trigger the computation of displayed items manually
|
|
16119
16148
|
*/
|
|
@@ -16121,7 +16150,7 @@ class ClrDatagrid {
|
|
|
16121
16150
|
this.items.refresh();
|
|
16122
16151
|
}
|
|
16123
16152
|
}
|
|
16124
|
-
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token:
|
|
16153
|
+
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
16125
16154
|
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loadingMoreItems: ["clrLoadingMoreItems", "loadingMoreItems"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
16126
16155
|
Selection,
|
|
16127
16156
|
Sort,
|
|
@@ -16138,7 +16167,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
16138
16167
|
ColumnsService,
|
|
16139
16168
|
DisplayModeService,
|
|
16140
16169
|
KeyNavigationGridController,
|
|
16141
|
-
], queries: [{ propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!hasVirtualScroller\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "component", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { kind: "component", type: ClrDatagridRow, selector: "clr-dg-row", inputs: ["clrDgItem", "clrDgSelectable", "clrDgSelected", "clrDgExpanded", "clrDgDetailOpenLabel", "clrDgDetailCloseLabel", "clrDgRowSelectionLabel"], outputs: ["clrDgSelectedChange", "clrDgExpandedChange"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }, { kind: "directive", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail" }, { kind: "directive", type: ActionableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }, { kind: "directive", type: ExpandableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }] });
|
|
16170
|
+
], queries: [{ propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!hasVirtualScroller\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "component", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { kind: "component", type: ClrDatagridRow, selector: "clr-dg-row", inputs: ["clrDgDetailDisabled", "clrDgDetailHidden", "clrDgItem", "clrDgSelectable", "clrDgSelected", "clrDgExpanded", "clrDgDetailOpenLabel", "clrDgDetailCloseLabel", "clrDgRowSelectionLabel"], outputs: ["clrDgSelectedChange", "clrDgExpandedChange"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }, { kind: "directive", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail" }, { kind: "directive", type: ActionableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }, { kind: "directive", type: ExpandableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }] });
|
|
16142
16171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
16143
16172
|
type: Component,
|
|
16144
16173
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -16164,7 +16193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16164
16193
|
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
16165
16194
|
type: Inject,
|
|
16166
16195
|
args: [DOCUMENT]
|
|
16167
|
-
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type:
|
|
16196
|
+
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }]; }, propDecorators: { loadingMoreItems: [{
|
|
16168
16197
|
type: Input,
|
|
16169
16198
|
args: ['clrLoadingMoreItems']
|
|
16170
16199
|
}], clrDgSingleSelectionAriaLabel: [{
|
|
@@ -16270,11 +16299,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16270
16299
|
*/
|
|
16271
16300
|
let clrDgActionId = 0;
|
|
16272
16301
|
class ClrDatagridActionOverflow {
|
|
16273
|
-
constructor(rowActionService, commonStrings, platformId,
|
|
16302
|
+
constructor(rowActionService, commonStrings, platformId, smartToggleService) {
|
|
16274
16303
|
this.rowActionService = rowActionService;
|
|
16275
16304
|
this.commonStrings = commonStrings;
|
|
16276
16305
|
this.platformId = platformId;
|
|
16277
|
-
this.zone = zone;
|
|
16278
16306
|
this.smartToggleService = smartToggleService;
|
|
16279
16307
|
this.openChange = new EventEmitter(false);
|
|
16280
16308
|
this.popoverId = uniqueIdFactory();
|
|
@@ -16286,10 +16314,10 @@ class ClrDatagridActionOverflow {
|
|
|
16286
16314
|
};
|
|
16287
16315
|
this._open = false;
|
|
16288
16316
|
this.subscriptions = [];
|
|
16289
|
-
|
|
16290
|
-
this.subscriptions.push(
|
|
16317
|
+
rowActionService.register();
|
|
16318
|
+
this.subscriptions.push(smartToggleService.openChange.subscribe(openState => {
|
|
16291
16319
|
this.open = openState;
|
|
16292
|
-
}),
|
|
16320
|
+
}), smartToggleService.popoverVisible.subscribe(visible => {
|
|
16293
16321
|
if (visible) {
|
|
16294
16322
|
this.initializeFocus();
|
|
16295
16323
|
}
|
|
@@ -16326,7 +16354,7 @@ class ClrDatagridActionOverflow {
|
|
|
16326
16354
|
}
|
|
16327
16355
|
}
|
|
16328
16356
|
}
|
|
16329
|
-
ClrDatagridActionOverflow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridActionOverflow, deps: [{ token: RowActionService }, { token: ClrCommonStringsService }, { token: PLATFORM_ID }, { token:
|
|
16357
|
+
ClrDatagridActionOverflow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridActionOverflow, deps: [{ token: RowActionService }, { token: ClrCommonStringsService }, { token: PLATFORM_ID }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
16330
16358
|
ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridActionOverflow, selector: "clr-dg-action-overflow", inputs: { buttonLabel: ["clrDgActionOverflowButtonLabel", "buttonLabel"], open: ["clrDgActionOverflowOpen", "open"] }, outputs: { openChange: "clrDgActionOverflowOpenChange" }, viewQueries: [{ propertyName: "keyFocus", first: true, predicate: ClrKeyFocus, descendants: true }], hostDirectives: [{ directive: ClrPopoverHostDirective }], ngImport: i0, template: `
|
|
16331
16359
|
<button
|
|
16332
16360
|
tabindex="-1"
|
|
@@ -16396,7 +16424,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16396
16424
|
}], ctorParameters: function () { return [{ type: RowActionService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
|
|
16397
16425
|
type: Inject,
|
|
16398
16426
|
args: [PLATFORM_ID]
|
|
16399
|
-
}] }, { type:
|
|
16427
|
+
}] }, { type: ClrPopoverToggleService }]; }, propDecorators: { buttonLabel: [{
|
|
16400
16428
|
type: Input,
|
|
16401
16429
|
args: ['clrDgActionOverflowButtonLabel']
|
|
16402
16430
|
}], openChange: [{
|
|
@@ -16851,8 +16879,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16851
16879
|
class DatagridDetailRegisterer {
|
|
16852
16880
|
constructor(expandableRowsCount) {
|
|
16853
16881
|
this.expandableRowsCount = expandableRowsCount;
|
|
16854
|
-
if (
|
|
16855
|
-
|
|
16882
|
+
if (expandableRowsCount) {
|
|
16883
|
+
expandableRowsCount.register();
|
|
16856
16884
|
}
|
|
16857
16885
|
}
|
|
16858
16886
|
ngOnDestroy() {
|
|
@@ -16979,13 +17007,12 @@ const COLUMN_STATE_PROVIDER = {
|
|
|
16979
17007
|
class ClrDatagridHideableColumn {
|
|
16980
17008
|
constructor(titleTemplateRef, viewContainerRef, columnsService, columnState) {
|
|
16981
17009
|
this.titleTemplateRef = titleTemplateRef;
|
|
16982
|
-
this.viewContainerRef = viewContainerRef;
|
|
16983
17010
|
this.columnsService = columnsService;
|
|
16984
17011
|
this.columnState = columnState;
|
|
16985
17012
|
this.hiddenChange = new EventEmitter();
|
|
16986
17013
|
this.subscriptions = [];
|
|
16987
|
-
|
|
16988
|
-
if (!
|
|
17014
|
+
viewContainerRef.createEmbeddedView(titleTemplateRef);
|
|
17015
|
+
if (!columnState) {
|
|
16989
17016
|
throw new Error('The *clrDgHideableColumn directive can only be used inside of a clr-dg-column component.');
|
|
16990
17017
|
}
|
|
16991
17018
|
}
|
|
@@ -17070,7 +17097,7 @@ class ClrIfDetail {
|
|
|
17070
17097
|
this.stateChange = new EventEmitter(null);
|
|
17071
17098
|
this.subscriptions = [];
|
|
17072
17099
|
this.skip = false; // This keeps us from resetting the input and calling the toggle twice
|
|
17073
|
-
|
|
17100
|
+
detailService.enabled = true;
|
|
17074
17101
|
}
|
|
17075
17102
|
set state(model) {
|
|
17076
17103
|
if (!this.skip) {
|
|
@@ -17208,7 +17235,7 @@ class ClrDatagridPagination {
|
|
|
17208
17235
|
this.commonStrings = commonStrings;
|
|
17209
17236
|
this.detailService = detailService;
|
|
17210
17237
|
this.currentChanged = new EventEmitter(false);
|
|
17211
|
-
|
|
17238
|
+
page.activated = true;
|
|
17212
17239
|
}
|
|
17213
17240
|
/**
|
|
17214
17241
|
* Page size
|
|
@@ -17344,7 +17371,7 @@ class ClrDatagridPagination {
|
|
|
17344
17371
|
* Set the input's value to the new current page. This is needed because the code
|
|
17345
17372
|
* above may have changed the value from what the user entered in.
|
|
17346
17373
|
*/
|
|
17347
|
-
this.currentPageInputRef.nativeElement.value = this.page.current;
|
|
17374
|
+
this.currentPageInputRef.nativeElement.value = this.page.current.toString();
|
|
17348
17375
|
}
|
|
17349
17376
|
}
|
|
17350
17377
|
ClrDatagridPagination.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridPagination, deps: [{ token: Page }, { token: ClrCommonStringsService }, { token: DetailService }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -17693,10 +17720,10 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
17693
17720
|
this.cdkVirtualForInputs = {
|
|
17694
17721
|
cdkVirtualForTrackBy: index => index,
|
|
17695
17722
|
};
|
|
17696
|
-
|
|
17697
|
-
|
|
17698
|
-
|
|
17699
|
-
this.datagridElementRef =
|
|
17723
|
+
items.smartenUp();
|
|
17724
|
+
datagrid.hasVirtualScroller = true;
|
|
17725
|
+
datagrid.detailService.preventFocusScroll = true;
|
|
17726
|
+
this.datagridElementRef = datagrid.el;
|
|
17700
17727
|
// default
|
|
17701
17728
|
this.cdkVirtualForTemplateCacheSize = 20;
|
|
17702
17729
|
this.mutationChanges.observe(this.datagridElementRef.nativeElement, {
|
|
@@ -17891,7 +17918,6 @@ class DatagridHeaderRenderer {
|
|
|
17891
17918
|
constructor(el, renderer, organizer, domAdapter, columnResizerService, columnsService, columnState) {
|
|
17892
17919
|
this.el = el;
|
|
17893
17920
|
this.renderer = renderer;
|
|
17894
|
-
this.organizer = organizer;
|
|
17895
17921
|
this.domAdapter = domAdapter;
|
|
17896
17922
|
this.columnResizerService = columnResizerService;
|
|
17897
17923
|
this.columnsService = columnsService;
|
|
@@ -17903,7 +17929,7 @@ class DatagridHeaderRenderer {
|
|
|
17903
17929
|
this.widthSet = false;
|
|
17904
17930
|
this.autoSet = false;
|
|
17905
17931
|
this.subscriptions = [];
|
|
17906
|
-
this.subscriptions.push(
|
|
17932
|
+
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
17907
17933
|
}
|
|
17908
17934
|
ngOnDestroy() {
|
|
17909
17935
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -18049,14 +18075,13 @@ const domAdapterFactory = (platformId) => {
|
|
|
18049
18075
|
// Fixes build error
|
|
18050
18076
|
// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)
|
|
18051
18077
|
class DatagridMainRenderer {
|
|
18052
|
-
constructor(organizer, items, page,
|
|
18078
|
+
constructor(datagrid, organizer, items, page, el, renderer, detailService, tableSizeService, columnsService, ngZone, keyNavigation) {
|
|
18079
|
+
this.datagrid = datagrid;
|
|
18053
18080
|
this.organizer = organizer;
|
|
18054
18081
|
this.items = items;
|
|
18055
18082
|
this.page = page;
|
|
18056
|
-
this.domAdapter = domAdapter;
|
|
18057
18083
|
this.el = el;
|
|
18058
18084
|
this.renderer = renderer;
|
|
18059
|
-
this.detailService = detailService;
|
|
18060
18085
|
this.tableSizeService = tableSizeService;
|
|
18061
18086
|
this.columnsService = columnsService;
|
|
18062
18087
|
this.ngZone = ngZone;
|
|
@@ -18070,16 +18095,14 @@ class DatagridMainRenderer {
|
|
|
18070
18095
|
* 2) When rows are lazily loaded for the first time
|
|
18071
18096
|
*/
|
|
18072
18097
|
this.columnsSizesStable = false;
|
|
18073
|
-
this.subscriptions.push(this.
|
|
18074
|
-
|
|
18075
|
-
.subscribe(() => this.computeHeadersWidth()));
|
|
18076
|
-
this.subscriptions.push(this.page.sizeChange.subscribe(() => {
|
|
18098
|
+
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS).subscribe(() => this.computeHeadersWidth()));
|
|
18099
|
+
this.subscriptions.push(page.sizeChange.subscribe(() => {
|
|
18077
18100
|
if (this._heightSet) {
|
|
18078
18101
|
this.resetDatagridHeight();
|
|
18079
18102
|
}
|
|
18080
18103
|
}));
|
|
18081
|
-
this.subscriptions.push(
|
|
18082
|
-
this.subscriptions.push(
|
|
18104
|
+
this.subscriptions.push(detailService.stateChange.subscribe(state => this.toggleDetailPane(state)));
|
|
18105
|
+
this.subscriptions.push(items.change.subscribe(() => (this.shouldStabilizeColumns = true)));
|
|
18083
18106
|
}
|
|
18084
18107
|
ngOnInit() {
|
|
18085
18108
|
this.columnsService.columnsStateChange.subscribe(change => this.columnStateChanged(change));
|
|
@@ -18099,7 +18122,8 @@ class DatagridMainRenderer {
|
|
|
18099
18122
|
this.tableSizeService.table = this.el;
|
|
18100
18123
|
}
|
|
18101
18124
|
ngAfterViewChecked() {
|
|
18102
|
-
|
|
18125
|
+
const datagridIsVisible = this.checkAndUpdateVisibility();
|
|
18126
|
+
if (this.shouldStabilizeColumns && datagridIsVisible) {
|
|
18103
18127
|
this.stabilizeColumns();
|
|
18104
18128
|
}
|
|
18105
18129
|
if (this.shouldComputeHeight()) {
|
|
@@ -18207,6 +18231,7 @@ class DatagridMainRenderer {
|
|
|
18207
18231
|
this.rows.forEach(row => {
|
|
18208
18232
|
if (row?.cells.length === this.columnsService.columns.length) {
|
|
18209
18233
|
row.cells.get(columnIndex).setWidth(state);
|
|
18234
|
+
row.expandableRow?.cells.get(columnIndex)?.setWidth(state);
|
|
18210
18235
|
}
|
|
18211
18236
|
});
|
|
18212
18237
|
break;
|
|
@@ -18215,6 +18240,7 @@ class DatagridMainRenderer {
|
|
|
18215
18240
|
this.rows.forEach(row => {
|
|
18216
18241
|
if (row.cells && row.cells.length) {
|
|
18217
18242
|
row.cells.get(columnIndex).setHidden(state);
|
|
18243
|
+
row.expandableRow?.cells.get(columnIndex)?.setHidden(state);
|
|
18218
18244
|
}
|
|
18219
18245
|
});
|
|
18220
18246
|
this.keyNavigation.resetKeyGrid();
|
|
@@ -18224,6 +18250,7 @@ class DatagridMainRenderer {
|
|
|
18224
18250
|
this.headers.get(columnIndex).setHidden(state);
|
|
18225
18251
|
this.rows.forEach(row => {
|
|
18226
18252
|
row.setCellsState();
|
|
18253
|
+
row.expandableRow?.setCellsState();
|
|
18227
18254
|
});
|
|
18228
18255
|
}
|
|
18229
18256
|
break;
|
|
@@ -18248,21 +18275,31 @@ class DatagridMainRenderer {
|
|
|
18248
18275
|
this.columnsSizesStable = true;
|
|
18249
18276
|
}
|
|
18250
18277
|
}
|
|
18278
|
+
checkAndUpdateVisibility() {
|
|
18279
|
+
if (this.el.nativeElement.offsetParent) {
|
|
18280
|
+
this.datagrid.datagrid.nativeElement.style.visibility = 'visible';
|
|
18281
|
+
return true;
|
|
18282
|
+
}
|
|
18283
|
+
else {
|
|
18284
|
+
this.datagrid.datagrid.nativeElement.style.visibility = 'hidden';
|
|
18285
|
+
return false;
|
|
18286
|
+
}
|
|
18287
|
+
}
|
|
18251
18288
|
}
|
|
18252
|
-
DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, deps: [{ token:
|
|
18253
|
-
DatagridMainRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridMainRenderer, selector: "clr-datagrid", providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }], queries: [{ propertyName: "headers", predicate: DatagridHeaderRenderer }, { propertyName: "rows", predicate: DatagridRowRenderer
|
|
18289
|
+
DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: ClrDatagrid }, { token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }, { token: i0.NgZone }, { token: KeyNavigationGridController }], target: i0.ɵɵFactoryTarget.Directive });
|
|
18290
|
+
DatagridMainRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridMainRenderer, selector: "clr-datagrid", providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }], queries: [{ propertyName: "headers", predicate: DatagridHeaderRenderer }, { propertyName: "rows", predicate: DatagridRowRenderer }], ngImport: i0 });
|
|
18254
18291
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, decorators: [{
|
|
18255
18292
|
type: Directive,
|
|
18256
18293
|
args: [{
|
|
18257
18294
|
selector: 'clr-datagrid',
|
|
18258
18295
|
providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],
|
|
18259
18296
|
}]
|
|
18260
|
-
}], ctorParameters: function () { return [{ type:
|
|
18297
|
+
}], ctorParameters: function () { return [{ type: ClrDatagrid }, { type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }, { type: i0.NgZone }, { type: KeyNavigationGridController }]; }, propDecorators: { headers: [{
|
|
18261
18298
|
type: ContentChildren,
|
|
18262
18299
|
args: [DatagridHeaderRenderer]
|
|
18263
18300
|
}], rows: [{
|
|
18264
18301
|
type: ContentChildren,
|
|
18265
|
-
args: [DatagridRowRenderer
|
|
18302
|
+
args: [DatagridRowRenderer]
|
|
18266
18303
|
}] } });
|
|
18267
18304
|
|
|
18268
18305
|
/*
|
|
@@ -18720,7 +18757,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
18720
18757
|
}] } });
|
|
18721
18758
|
function eventIsInputEvent(event) {
|
|
18722
18759
|
const targetElement = event?.target;
|
|
18723
|
-
return targetElement?.tagName
|
|
18760
|
+
return targetElement?.tagName
|
|
18761
|
+
? ['INPUT', 'TEXTAREA', 'BUTTON', 'A', 'SELECT', 'OPTION'].includes(targetElement.tagName)
|
|
18762
|
+
: false;
|
|
18724
18763
|
}
|
|
18725
18764
|
|
|
18726
18765
|
/*
|
|
@@ -18893,8 +18932,8 @@ class RecursiveChildren {
|
|
|
18893
18932
|
this.featuresService = featuresService;
|
|
18894
18933
|
this.expandService = expandService;
|
|
18895
18934
|
if (expandService) {
|
|
18896
|
-
this.subscription =
|
|
18897
|
-
if (!value && this.parent && !
|
|
18935
|
+
this.subscription = expandService.expandChange.subscribe(value => {
|
|
18936
|
+
if (!value && this.parent && !featuresService.eager && featuresService.recursion) {
|
|
18898
18937
|
// In the case of lazy-loading recursive trees, we clear the children on collapse.
|
|
18899
18938
|
// This is better in case they change between two user interaction, and that way
|
|
18900
18939
|
// the app itself can decide whether to cache them or not.
|
|
@@ -19508,7 +19547,7 @@ class ClrTreeNode {
|
|
|
19508
19547
|
this.typeAheadKeyBuffer = '';
|
|
19509
19548
|
this.typeAheadKeyEvent = new Subject();
|
|
19510
19549
|
this.subscriptions = [];
|
|
19511
|
-
if (
|
|
19550
|
+
if (featuresService.recursion) {
|
|
19512
19551
|
// I'm completely stuck, we have to hack into private properties until either
|
|
19513
19552
|
// https://github.com/angular/angular/issues/14935 or https://github.com/angular/angular/issues/15998
|
|
19514
19553
|
// are fixed
|
|
@@ -19690,7 +19729,7 @@ class ClrTreeNode {
|
|
|
19690
19729
|
}
|
|
19691
19730
|
setTabIndex(value) {
|
|
19692
19731
|
this.contentContainerTabindex = value;
|
|
19693
|
-
this.contentContainer.nativeElement.setAttribute('tabindex', value);
|
|
19732
|
+
this.contentContainer.nativeElement.setAttribute('tabindex', value.toString());
|
|
19694
19733
|
}
|
|
19695
19734
|
checkTabIndex(nodeId) {
|
|
19696
19735
|
if (isPlatformBrowser(this.platformId) && this.nodeId !== nodeId && this.contentContainerTabindex !== -1) {
|
|
@@ -19749,7 +19788,7 @@ class ClrTreeNode {
|
|
|
19749
19788
|
}
|
|
19750
19789
|
}
|
|
19751
19790
|
ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
19752
|
-
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { expandable: ["clrExpandable", "expandable"], disabled: ["clrDisabled", "disabled"], selected: ["clrSelected", "selected"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true", "class.disabled": "this._model.disabled" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div\n class=\"clr-treenode-content\"\n [class.clr-treenode-text-only]=\"treeNodeContentTextOnly\"\n (mouseup)=\"focusTreeNode()\"\n *ngIf=\"!featuresService.selectable\"\n >\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span
|
|
19791
|
+
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { expandable: ["clrExpandable", "expandable"], disabled: ["clrDisabled", "disabled"], selected: ["clrSelected", "selected"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true", "class.disabled": "this._model.disabled" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div\n class=\"clr-treenode-content\"\n [class.clr-treenode-text-only]=\"treeNodeContentTextOnly\"\n (mouseup)=\"focusTreeNode()\"\n *ngIf=\"!featuresService.selectable\"\n >\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span> {{ariaSelected ? commonStrings.keys.selectedTreeNode : commonStrings.keys.unselectedTreeNode}}</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
19753
19792
|
trigger('toggleChildrenAnim', [
|
|
19754
19793
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
19755
19794
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -19769,7 +19808,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
19769
19808
|
], host: {
|
|
19770
19809
|
'[class.clr-tree-node]': 'true',
|
|
19771
19810
|
'[class.disabled]': 'this._model.disabled',
|
|
19772
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div\n class=\"clr-treenode-content\"\n [class.clr-treenode-text-only]=\"treeNodeContentTextOnly\"\n (mouseup)=\"focusTreeNode()\"\n *ngIf=\"!featuresService.selectable\"\n >\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span
|
|
19811
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div\n class=\"clr-treenode-content\"\n [class.clr-treenode-text-only]=\"treeNodeContentTextOnly\"\n (mouseup)=\"focusTreeNode()\"\n *ngIf=\"!featuresService.selectable\"\n >\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span> {{ariaSelected ? commonStrings.keys.selectedTreeNode : commonStrings.keys.unselectedTreeNode}}</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
|
|
19773
19812
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
19774
19813
|
type: Inject,
|
|
19775
19814
|
args: [PLATFORM_ID]
|
|
@@ -19816,18 +19855,21 @@ function trimAndLowerCase(value) {
|
|
|
19816
19855
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
19817
19856
|
*/
|
|
19818
19857
|
class ClrTree {
|
|
19819
|
-
constructor(featuresService, focusManagerService,
|
|
19858
|
+
constructor(featuresService, focusManagerService, renderer, el, ngZone) {
|
|
19820
19859
|
this.featuresService = featuresService;
|
|
19821
19860
|
this.focusManagerService = focusManagerService;
|
|
19861
|
+
this.renderer = renderer;
|
|
19862
|
+
this.el = el;
|
|
19822
19863
|
this.subscriptions = [];
|
|
19823
|
-
|
|
19824
|
-
|
|
19864
|
+
this._isMultiSelectable = false;
|
|
19865
|
+
const subscription = ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusin').subscribe((event) => {
|
|
19866
|
+
if (event.target === el.nativeElement) {
|
|
19825
19867
|
// After discussing with the team, I've made it so that when the tree receives focus, the first visible node will be focused.
|
|
19826
19868
|
// This will prevent from the page scrolling abruptly to the first selected node if it exist in a deeply nested tree.
|
|
19827
|
-
|
|
19869
|
+
focusManagerService.focusFirstVisibleNode();
|
|
19828
19870
|
// when the first child gets focus,
|
|
19829
19871
|
// tree should no longer have tabindex of 0.
|
|
19830
|
-
renderer.removeAttribute(nativeElement, 'tabindex');
|
|
19872
|
+
renderer.removeAttribute(el.nativeElement, 'tabindex');
|
|
19831
19873
|
}
|
|
19832
19874
|
}));
|
|
19833
19875
|
this.subscriptions.push(subscription);
|
|
@@ -19836,17 +19878,28 @@ class ClrTree {
|
|
|
19836
19878
|
this.featuresService.eager = !value;
|
|
19837
19879
|
}
|
|
19838
19880
|
get isMultiSelectable() {
|
|
19839
|
-
return this.
|
|
19881
|
+
return this._isMultiSelectable;
|
|
19840
19882
|
}
|
|
19841
19883
|
ngAfterContentInit() {
|
|
19842
19884
|
this.setRootNodes();
|
|
19843
19885
|
this.subscriptions.push(this.rootNodes.changes.subscribe(() => {
|
|
19886
|
+
this.setMultiSelectable();
|
|
19844
19887
|
this.setRootNodes();
|
|
19845
19888
|
}));
|
|
19846
19889
|
}
|
|
19847
19890
|
ngOnDestroy() {
|
|
19848
19891
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
19849
19892
|
}
|
|
19893
|
+
setMultiSelectable() {
|
|
19894
|
+
if (this.featuresService.selectable && this.rootNodes.length > 0) {
|
|
19895
|
+
this._isMultiSelectable = true;
|
|
19896
|
+
this.renderer.setAttribute(this.el.nativeElement, 'aria-multiselectable', 'true');
|
|
19897
|
+
}
|
|
19898
|
+
else {
|
|
19899
|
+
this._isMultiSelectable = false;
|
|
19900
|
+
this.renderer.removeAttribute(this.el.nativeElement, 'aria-multiselectable');
|
|
19901
|
+
}
|
|
19902
|
+
}
|
|
19850
19903
|
setRootNodes() {
|
|
19851
19904
|
// if node has no parent, it's a root node
|
|
19852
19905
|
// for recursive tree, this.rootNodes registers also nested children
|
|
@@ -19854,8 +19907,8 @@ class ClrTree {
|
|
|
19854
19907
|
this.focusManagerService.rootNodeModels = this.rootNodes.map(node => node._model).filter(node => !node.parent);
|
|
19855
19908
|
}
|
|
19856
19909
|
}
|
|
19857
|
-
ClrTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTree, deps: [{ token: TreeFeaturesService }, { token: TreeFocusManagerService }, { token: i0.
|
|
19858
|
-
ClrTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTree, selector: "clr-tree", inputs: { lazy: ["clrLazy", "lazy"] }, host: { attributes: { "tabindex": "0" }, properties: { "attr.role": "\"tree\""
|
|
19910
|
+
ClrTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTree, deps: [{ token: TreeFeaturesService }, { token: TreeFocusManagerService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
19911
|
+
ClrTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTree, selector: "clr-tree", inputs: { lazy: ["clrLazy", "lazy"] }, host: { attributes: { "tabindex": "0" }, properties: { "attr.role": "\"tree\"" } }, providers: [TREE_FEATURES_PROVIDER, TreeFocusManagerService], queries: [{ propertyName: "rootNodes", predicate: ClrTreeNode }], ngImport: i0, template: `
|
|
19859
19912
|
<ng-content></ng-content>
|
|
19860
19913
|
<clr-recursive-children
|
|
19861
19914
|
*ngIf="featuresService.recursion"
|
|
@@ -19877,10 +19930,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
19877
19930
|
host: {
|
|
19878
19931
|
tabindex: '0',
|
|
19879
19932
|
'[attr.role]': '"tree"',
|
|
19880
|
-
'[attr.aria-multiselectable]': 'isMultiSelectable',
|
|
19881
19933
|
},
|
|
19882
19934
|
}]
|
|
19883
|
-
}], ctorParameters: function () { return [{ type: TreeFeaturesService }, { type: TreeFocusManagerService }, { type: i0.
|
|
19935
|
+
}], ctorParameters: function () { return [{ type: TreeFeaturesService }, { type: TreeFocusManagerService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rootNodes: [{
|
|
19884
19936
|
type: ContentChildren,
|
|
19885
19937
|
args: [ClrTreeNode]
|
|
19886
19938
|
}], lazy: [{
|
|
@@ -19967,7 +20019,7 @@ class DropdownFocusHandler {
|
|
|
19967
20019
|
this._unlistenFuncs = [];
|
|
19968
20020
|
this.resetChildren();
|
|
19969
20021
|
this.moveToFirstItemWhenOpen();
|
|
19970
|
-
if (!
|
|
20022
|
+
if (!parent) {
|
|
19971
20023
|
this.handleRootFocus();
|
|
19972
20024
|
}
|
|
19973
20025
|
}
|
|
@@ -20165,11 +20217,10 @@ class ClrDropdown {
|
|
|
20165
20217
|
this.parent = parent;
|
|
20166
20218
|
this.toggleService = toggleService;
|
|
20167
20219
|
this.focusHandler = focusHandler;
|
|
20168
|
-
this.cdr = cdr;
|
|
20169
20220
|
this.isMenuClosable = true;
|
|
20170
20221
|
this.subscriptions = [];
|
|
20171
|
-
this.subscriptions.push(dropdownService.changes.subscribe(value => (
|
|
20172
|
-
this.subscriptions.push(toggleService.openChange.subscribe(() =>
|
|
20222
|
+
this.subscriptions.push(dropdownService.changes.subscribe(value => (toggleService.open = value)));
|
|
20223
|
+
this.subscriptions.push(toggleService.openChange.subscribe(() => cdr.markForCheck()));
|
|
20173
20224
|
}
|
|
20174
20225
|
ngOnDestroy() {
|
|
20175
20226
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -21795,12 +21846,12 @@ class ClrHeader {
|
|
|
21795
21846
|
this.isNavLevel2OnPage = false;
|
|
21796
21847
|
this.openNavLevel = null;
|
|
21797
21848
|
this.responsiveNavCodes = ResponsiveNavCodes;
|
|
21798
|
-
this._subscription =
|
|
21849
|
+
this._subscription = responsiveNavService.registeredNavs.subscribe({
|
|
21799
21850
|
next: (navLevelList) => {
|
|
21800
21851
|
this.initializeNavTriggers(navLevelList);
|
|
21801
21852
|
},
|
|
21802
21853
|
});
|
|
21803
|
-
this._subscription.add(
|
|
21854
|
+
this._subscription.add(responsiveNavService.navControl
|
|
21804
21855
|
.pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE || controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))
|
|
21805
21856
|
.subscribe(() => {
|
|
21806
21857
|
this.openNavLevel = null;
|
|
@@ -21933,18 +21984,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21933
21984
|
* This software is released under MIT license.
|
|
21934
21985
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21935
21986
|
*/
|
|
21936
|
-
const
|
|
21937
|
-
const
|
|
21938
|
-
|
|
21939
|
-
|
|
21940
|
-
|
|
21941
|
-
|
|
21987
|
+
const createCloseButton = (document, ariaLabel) => {
|
|
21988
|
+
const closeButton = document.createElement('button');
|
|
21989
|
+
closeButton.setAttribute('aria-label', ariaLabel);
|
|
21990
|
+
closeButton.setAttribute('aria-hidden', 'true');
|
|
21991
|
+
closeButton.innerHTML = `
|
|
21992
|
+
<cds-icon
|
|
21993
|
+
inner-offset="1"
|
|
21994
|
+
shape="close"
|
|
21995
|
+
size="32"
|
|
21996
|
+
</cds-icon>
|
|
21997
|
+
`;
|
|
21942
21998
|
/**
|
|
21943
21999
|
* The button is hidden by default based on our Desktop-first approach.
|
|
21944
22000
|
*/
|
|
21945
|
-
|
|
21946
|
-
|
|
21947
|
-
return
|
|
22001
|
+
closeButton.setAttribute('hidden', 'true');
|
|
22002
|
+
closeButton.className = 'clr-nav-close';
|
|
22003
|
+
return closeButton;
|
|
21948
22004
|
};
|
|
21949
22005
|
class ClrNavLevel {
|
|
21950
22006
|
constructor(platformId, cdkTrapFocus, responsiveNavService, elementRef, renderer, injector) {
|
|
@@ -21996,7 +22052,7 @@ class ClrNavLevel {
|
|
|
21996
22052
|
this.addNavClass(this.level);
|
|
21997
22053
|
}
|
|
21998
22054
|
ngAfterViewInit() {
|
|
21999
|
-
const closeButton =
|
|
22055
|
+
const closeButton = createCloseButton(this._document, this.closeButtonAriaLabel);
|
|
22000
22056
|
this.renderer.listen(closeButton, 'click', this.close.bind(this));
|
|
22001
22057
|
this.renderer.insertBefore(this.elementRef.nativeElement, closeButton, this.elementRef.nativeElement.firstChild); // Adding the button at the top of the nav
|
|
22002
22058
|
if (this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
@@ -22412,8 +22468,6 @@ class ClrTabLink {
|
|
|
22412
22468
|
this.ifActiveService = ifActiveService;
|
|
22413
22469
|
this.id = id;
|
|
22414
22470
|
this.el = el;
|
|
22415
|
-
this.cfr = cfr;
|
|
22416
|
-
this.viewContainerRef = viewContainerRef;
|
|
22417
22471
|
this.tabsService = tabsService;
|
|
22418
22472
|
this.tabsId = tabsId;
|
|
22419
22473
|
if (!this.tabLinkId) {
|
|
@@ -22422,9 +22476,9 @@ class ClrTabLink {
|
|
|
22422
22476
|
// Tab links can be rendered in one of two places: in the main area or inside the overflow dropdown menu.
|
|
22423
22477
|
// Here, we create a container so that its template can be used to create embeddedView on the fly.
|
|
22424
22478
|
// See TabsService's renderView() method and how it's used in Tabs class for an example.
|
|
22425
|
-
const factory =
|
|
22426
|
-
this.templateRefContainer =
|
|
22427
|
-
[
|
|
22479
|
+
const factory = cfr.resolveComponentFactory(TemplateRefContainer);
|
|
22480
|
+
this.templateRefContainer = viewContainerRef.createComponent(factory, undefined, undefined, [
|
|
22481
|
+
[el.nativeElement],
|
|
22428
22482
|
]).instance;
|
|
22429
22483
|
}
|
|
22430
22484
|
get inOverflow() {
|
|
@@ -23006,7 +23060,7 @@ class ClrVerticalNav {
|
|
|
23006
23060
|
this._navGroupRegistrationService = _navGroupRegistrationService;
|
|
23007
23061
|
this.commonStrings = commonStrings;
|
|
23008
23062
|
this._collapsedChanged = new EventEmitter(true);
|
|
23009
|
-
this._sub =
|
|
23063
|
+
this._sub = _navService.collapsedChanged.subscribe(value => {
|
|
23010
23064
|
this._collapsedChanged.emit(value);
|
|
23011
23065
|
});
|
|
23012
23066
|
}
|
|
@@ -23094,27 +23148,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
23094
23148
|
const EXPANDED_STATE = 'expanded';
|
|
23095
23149
|
const COLLAPSED_STATE = 'collapsed';
|
|
23096
23150
|
class ClrVerticalNavGroup {
|
|
23097
|
-
constructor(_itemExpand, _navGroupRegistrationService,
|
|
23151
|
+
constructor(_itemExpand, _navGroupRegistrationService, navGroupService, _navService, commonStrings) {
|
|
23098
23152
|
this._itemExpand = _itemExpand;
|
|
23099
23153
|
this._navGroupRegistrationService = _navGroupRegistrationService;
|
|
23100
|
-
this._navGroupService = _navGroupService;
|
|
23101
23154
|
this._navService = _navService;
|
|
23102
23155
|
this.commonStrings = commonStrings;
|
|
23103
23156
|
this.expandedChange = new EventEmitter(true);
|
|
23104
23157
|
this.wasExpanded = false;
|
|
23105
23158
|
this._subscriptions = [];
|
|
23106
23159
|
this._expandAnimationState = COLLAPSED_STATE;
|
|
23107
|
-
|
|
23160
|
+
_navGroupRegistrationService.registerNavGroup();
|
|
23108
23161
|
// FIXME: This subscription handles a corner case
|
|
23109
23162
|
// Vertical Nav collapse requires the animation to run first and then
|
|
23110
23163
|
// remove the nodes from the DOM. If the user directly sets the input
|
|
23111
23164
|
// on the clrIfExpanded directive, we have no chance to run the animation
|
|
23112
23165
|
// and wait for it to complete. This subscription makes sure that the
|
|
23113
23166
|
// animation states are correct for that edge case.
|
|
23114
|
-
this._subscriptions.push(
|
|
23167
|
+
this._subscriptions.push(_itemExpand.expandChange.subscribe(value => {
|
|
23115
23168
|
if (value && this.expandAnimationState === COLLAPSED_STATE) {
|
|
23116
|
-
if (
|
|
23117
|
-
|
|
23169
|
+
if (_navService.collapsed) {
|
|
23170
|
+
_navService.collapsed = false;
|
|
23118
23171
|
}
|
|
23119
23172
|
this.expandAnimationState = EXPANDED_STATE;
|
|
23120
23173
|
}
|
|
@@ -23124,7 +23177,7 @@ class ClrVerticalNavGroup {
|
|
|
23124
23177
|
}));
|
|
23125
23178
|
// 1. If the nav is collapsing, close the open nav group + save its state
|
|
23126
23179
|
// 2. If the nav is expanding, expand the nav group if the previous state was expanded
|
|
23127
|
-
this._subscriptions.push(
|
|
23180
|
+
this._subscriptions.push(_navService.animateOnCollapsed.subscribe((goingToCollapse) => {
|
|
23128
23181
|
if (goingToCollapse && this.expanded) {
|
|
23129
23182
|
this.wasExpanded = true;
|
|
23130
23183
|
this.expandAnimationState = COLLAPSED_STATE;
|
|
@@ -23135,7 +23188,7 @@ class ClrVerticalNavGroup {
|
|
|
23135
23188
|
}
|
|
23136
23189
|
}));
|
|
23137
23190
|
// If a link is clicked, expand the nav group
|
|
23138
|
-
this._subscriptions.push(
|
|
23191
|
+
this._subscriptions.push(navGroupService.expandChange.subscribe((expand) => {
|
|
23139
23192
|
if (expand && !this.expanded) {
|
|
23140
23193
|
this.expandGroup();
|
|
23141
23194
|
}
|
|
@@ -23264,7 +23317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
23264
23317
|
class ClrVerticalNavIcon {
|
|
23265
23318
|
constructor(_verticalNavIconService) {
|
|
23266
23319
|
this._verticalNavIconService = _verticalNavIconService;
|
|
23267
|
-
|
|
23320
|
+
_verticalNavIconService.registerIcon();
|
|
23268
23321
|
}
|
|
23269
23322
|
ngOnDestroy() {
|
|
23270
23323
|
this._verticalNavIconService.unregisterIcon();
|
|
@@ -23428,9 +23481,10 @@ class ClrModalConfigurationService {
|
|
|
23428
23481
|
}
|
|
23429
23482
|
}
|
|
23430
23483
|
ClrModalConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23431
|
-
ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService });
|
|
23484
|
+
ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, providedIn: 'root' });
|
|
23432
23485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, decorators: [{
|
|
23433
|
-
type: Injectable
|
|
23486
|
+
type: Injectable,
|
|
23487
|
+
args: [{ providedIn: 'root' }]
|
|
23434
23488
|
}] });
|
|
23435
23489
|
|
|
23436
23490
|
/*
|
|
@@ -23489,6 +23543,13 @@ class ClrModal {
|
|
|
23489
23543
|
this._openChanged.emit(true);
|
|
23490
23544
|
this.modalStackService.trackModalOpen(this);
|
|
23491
23545
|
}
|
|
23546
|
+
backdropClick() {
|
|
23547
|
+
if (this.staticBackdrop) {
|
|
23548
|
+
this.title.nativeElement.focus();
|
|
23549
|
+
return;
|
|
23550
|
+
}
|
|
23551
|
+
this.close();
|
|
23552
|
+
}
|
|
23492
23553
|
close() {
|
|
23493
23554
|
if (this.stopClose) {
|
|
23494
23555
|
this.altClose.emit(false);
|
|
@@ -23508,7 +23569,7 @@ class ClrModal {
|
|
|
23508
23569
|
}
|
|
23509
23570
|
}
|
|
23510
23571
|
ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }, { token: ModalStackService }, { token: ClrModalConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23511
|
-
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"
|
|
23572
|
+
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" #title id=\"{{modalId}}\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
|
|
23512
23573
|
trigger('fadeMove', [
|
|
23513
23574
|
transition('* => fadeDown', [
|
|
23514
23575
|
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
@@ -23543,8 +23604,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
23543
23604
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
23544
23605
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
23545
23606
|
]),
|
|
23546
|
-
], template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"
|
|
23547
|
-
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: {
|
|
23607
|
+
], template: "<!--\n ~ Copyright (c) 2016-2024 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\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" #title id=\"{{modalId}}\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
|
|
23608
|
+
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: { title: [{
|
|
23609
|
+
type: ViewChild,
|
|
23610
|
+
args: ['title']
|
|
23611
|
+
}], _open: [{
|
|
23548
23612
|
type: Input,
|
|
23549
23613
|
args: ['clrModalOpen']
|
|
23550
23614
|
}, {
|
|
@@ -23602,11 +23666,11 @@ class ClrModalBody {
|
|
|
23602
23666
|
this.unlisteners = [];
|
|
23603
23667
|
ngZone.runOutsideAngular(() => {
|
|
23604
23668
|
this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());
|
|
23605
|
-
this.observer.observe(
|
|
23606
|
-
this.unlisteners.push(
|
|
23669
|
+
this.observer.observe(host.nativeElement);
|
|
23670
|
+
this.unlisteners.push(renderer.listen(host.nativeElement, 'mouseup', () => {
|
|
23607
23671
|
// set the tabindex binding back when click is completed with mouseup
|
|
23608
23672
|
this.addOrRemoveTabIndex();
|
|
23609
|
-
}),
|
|
23673
|
+
}), renderer.listen(host.nativeElement, 'mousedown', () => {
|
|
23610
23674
|
// tabindex = 0 binding should be removed
|
|
23611
23675
|
// so it won't be focused when click starts with mousedown
|
|
23612
23676
|
this.removeTabIndex();
|
|
@@ -23659,14 +23723,13 @@ class ClrModalModule {
|
|
|
23659
23723
|
}
|
|
23660
23724
|
ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23661
23725
|
ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule], exports: [ClrModal, ClrModalBody, ClrIconModule] });
|
|
23662
|
-
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule,
|
|
23726
|
+
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
|
|
23663
23727
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, decorators: [{
|
|
23664
23728
|
type: NgModule,
|
|
23665
23729
|
args: [{
|
|
23666
23730
|
imports: [CommonModule, CdkTrapFocusModule, ClrIconModule],
|
|
23667
23731
|
declarations: [CLR_MODAL_DIRECTIVES],
|
|
23668
23732
|
exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],
|
|
23669
|
-
providers: [ClrModalConfigurationService],
|
|
23670
23733
|
}]
|
|
23671
23734
|
}], ctorParameters: function () { return []; } });
|
|
23672
23735
|
|
|
@@ -23705,7 +23768,9 @@ class ClrSidePanel {
|
|
|
23705
23768
|
this.modal.close();
|
|
23706
23769
|
}
|
|
23707
23770
|
documentClick(event) {
|
|
23708
|
-
if (!this.element.nativeElement.contains(event.target) &&
|
|
23771
|
+
if (!this.element.nativeElement.contains(event.target) &&
|
|
23772
|
+
this.modal._open &&
|
|
23773
|
+
!this.configuration.backdrop) {
|
|
23709
23774
|
this.modal.close();
|
|
23710
23775
|
}
|
|
23711
23776
|
}
|
|
@@ -23822,7 +23887,6 @@ class ClrSignpostContent extends AbstractPopover {
|
|
|
23822
23887
|
constructor(injector, parentHost, commonStrings, signpostIdService, signpostFocusManager, platformId, document) {
|
|
23823
23888
|
super(injector, parentHost);
|
|
23824
23889
|
this.commonStrings = commonStrings;
|
|
23825
|
-
this.signpostIdService = signpostIdService;
|
|
23826
23890
|
this.signpostFocusManager = signpostFocusManager;
|
|
23827
23891
|
this.platformId = platformId;
|
|
23828
23892
|
this.signpostContentId = uniqueIdFactory();
|
|
@@ -23832,7 +23896,7 @@ class ClrSignpostContent extends AbstractPopover {
|
|
|
23832
23896
|
// Defaults
|
|
23833
23897
|
this.position = 'right-middle';
|
|
23834
23898
|
this.closeOnOutsideClick = true;
|
|
23835
|
-
|
|
23899
|
+
signpostIdService.setId(this.signpostContentId);
|
|
23836
23900
|
this.document = document;
|
|
23837
23901
|
}
|
|
23838
23902
|
/*********
|
|
@@ -24217,11 +24281,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
24217
24281
|
class ClrTooltipTrigger {
|
|
24218
24282
|
constructor(toggleService, tooltipIdService, tooltipMouseService) {
|
|
24219
24283
|
this.toggleService = toggleService;
|
|
24220
|
-
this.tooltipIdService = tooltipIdService;
|
|
24221
24284
|
this.tooltipMouseService = tooltipMouseService;
|
|
24222
24285
|
this.subs = [];
|
|
24223
24286
|
// The aria-described by comes from the id of content. It
|
|
24224
|
-
this.subs.push(
|
|
24287
|
+
this.subs.push(tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
|
|
24225
24288
|
}
|
|
24226
24289
|
ngOnDestroy() {
|
|
24227
24290
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
@@ -25333,7 +25396,7 @@ class WizardNavigationService {
|
|
|
25333
25396
|
* @memberof WizardNavigationService
|
|
25334
25397
|
*/
|
|
25335
25398
|
this._cancelWizard = new Subject();
|
|
25336
|
-
this.previousButtonSubscription =
|
|
25399
|
+
this.previousButtonSubscription = buttonService.previousBtnClicked.subscribe(() => {
|
|
25337
25400
|
const currentPage = this.currentPage;
|
|
25338
25401
|
if (this.currentPageIsFirst || currentPage.previousStepDisabled) {
|
|
25339
25402
|
return;
|
|
@@ -25343,21 +25406,21 @@ class WizardNavigationService {
|
|
|
25343
25406
|
this.previous();
|
|
25344
25407
|
}
|
|
25345
25408
|
});
|
|
25346
|
-
this.nextButtonSubscription =
|
|
25409
|
+
this.nextButtonSubscription = buttonService.nextBtnClicked.subscribe(() => {
|
|
25347
25410
|
this.checkAndCommitCurrentPage('next');
|
|
25348
25411
|
});
|
|
25349
|
-
this.dangerButtonSubscription =
|
|
25412
|
+
this.dangerButtonSubscription = buttonService.dangerBtnClicked.subscribe(() => {
|
|
25350
25413
|
this.checkAndCommitCurrentPage('danger');
|
|
25351
25414
|
});
|
|
25352
|
-
this.finishButtonSubscription =
|
|
25415
|
+
this.finishButtonSubscription = buttonService.finishBtnClicked.subscribe(() => {
|
|
25353
25416
|
this.checkAndCommitCurrentPage('finish');
|
|
25354
25417
|
});
|
|
25355
|
-
this.customButtonSubscription =
|
|
25418
|
+
this.customButtonSubscription = buttonService.customBtnClicked.subscribe((type) => {
|
|
25356
25419
|
if (!this.wizardStopNavigation) {
|
|
25357
25420
|
this.currentPage.customButtonClicked.emit(type);
|
|
25358
25421
|
}
|
|
25359
25422
|
});
|
|
25360
|
-
this.cancelButtonSubscription =
|
|
25423
|
+
this.cancelButtonSubscription = buttonService.cancelBtnClicked.subscribe(() => {
|
|
25361
25424
|
if (this.wizardStopNavigation) {
|
|
25362
25425
|
return;
|
|
25363
25426
|
}
|
|
@@ -25368,7 +25431,7 @@ class WizardNavigationService {
|
|
|
25368
25431
|
this.cancel();
|
|
25369
25432
|
}
|
|
25370
25433
|
});
|
|
25371
|
-
this.pagesResetSubscription =
|
|
25434
|
+
this.pagesResetSubscription = pageCollection.pagesReset.subscribe(() => {
|
|
25372
25435
|
this.setFirstPageCurrent();
|
|
25373
25436
|
});
|
|
25374
25437
|
}
|
|
@@ -26705,15 +26768,12 @@ ClrWizardStepnavItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
26705
26768
|
(click)="click()"
|
|
26706
26769
|
[attr.disabled]="isDisabled ? '' : null"
|
|
26707
26770
|
>
|
|
26708
|
-
<
|
|
26709
|
-
<cds-icon
|
|
26710
|
-
|
|
26711
|
-
|
|
26712
|
-
|
|
26713
|
-
|
|
26714
|
-
></cds-icon>
|
|
26715
|
-
<ng-content *ngIf="!hasError"></ng-content>
|
|
26716
|
-
</span>
|
|
26771
|
+
<div class="clr-wizard-stepnav-link-icon">
|
|
26772
|
+
<cds-icon *ngIf="hasError" shape="error-standard" aria-label="error"></cds-icon>
|
|
26773
|
+
<cds-icon *ngIf="!hasError && isComplete" shape="success-standard" aria-label="complete"></cds-icon>
|
|
26774
|
+
</div>
|
|
26775
|
+
|
|
26776
|
+
<div class="clr-wizard-stepnav-link-page-number"><ng-content></ng-content></div>
|
|
26717
26777
|
<span class="clr-wizard-stepnav-link-title">
|
|
26718
26778
|
<ng-template [ngTemplateOutlet]="page.navTitle"></ng-template>
|
|
26719
26779
|
</span>
|
|
@@ -26732,15 +26792,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26732
26792
|
(click)="click()"
|
|
26733
26793
|
[attr.disabled]="isDisabled ? '' : null"
|
|
26734
26794
|
>
|
|
26735
|
-
<
|
|
26736
|
-
<cds-icon
|
|
26737
|
-
|
|
26738
|
-
|
|
26739
|
-
|
|
26740
|
-
|
|
26741
|
-
></cds-icon>
|
|
26742
|
-
<ng-content *ngIf="!hasError"></ng-content>
|
|
26743
|
-
</span>
|
|
26795
|
+
<div class="clr-wizard-stepnav-link-icon">
|
|
26796
|
+
<cds-icon *ngIf="hasError" shape="error-standard" aria-label="error"></cds-icon>
|
|
26797
|
+
<cds-icon *ngIf="!hasError && isComplete" shape="success-standard" aria-label="complete"></cds-icon>
|
|
26798
|
+
</div>
|
|
26799
|
+
|
|
26800
|
+
<div class="clr-wizard-stepnav-link-page-number"><ng-content></ng-content></div>
|
|
26744
26801
|
<span class="clr-wizard-stepnav-link-title">
|
|
26745
26802
|
<ng-template [ngTemplateOutlet]="page.navTitle"></ng-template>
|
|
26746
26803
|
</span>
|
|
@@ -27207,7 +27264,7 @@ class ClrWizard {
|
|
|
27207
27264
|
}
|
|
27208
27265
|
}
|
|
27209
27266
|
ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
|
|
27210
|
-
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], 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", currentPageChanged: "clrWizardCurrentPageChanged", 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.lastPage": "navService.currentPageIsLast" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\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 <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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 <clr-wizard-stepnav></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage
|
|
27267
|
+
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], 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", currentPageChanged: "clrWizardCurrentPageChanged", 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.lastPage": "navService.currentPageIsLast" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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\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 <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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 <clr-wizard-stepnav></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: ClrModalBody, selector: ".modal-body" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }] });
|
|
27211
27268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
27212
27269
|
type: Component,
|
|
27213
27270
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -27216,7 +27273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
27216
27273
|
'[class.wizard-lg]': "size == 'lg'",
|
|
27217
27274
|
'[class.wizard-xl]': "size == 'xl'",
|
|
27218
27275
|
'[class.lastPage]': 'navService.currentPageIsLast',
|
|
27219
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2024 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\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 <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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 <clr-wizard-stepnav></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage
|
|
27276
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2024 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\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 <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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 <clr-wizard-stepnav></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n" }]
|
|
27220
27277
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
27221
27278
|
type: Inject,
|
|
27222
27279
|
args: [PLATFORM_ID]
|
|
@@ -27490,7 +27547,7 @@ const CLR_WIZARD_DIRECTIVES = [
|
|
|
27490
27547
|
];
|
|
27491
27548
|
class ClrWizardModule {
|
|
27492
27549
|
constructor() {
|
|
27493
|
-
ClarityIcons.addIcons(errorStandardIcon);
|
|
27550
|
+
ClarityIcons.addIcons(errorStandardIcon, successStandardIcon);
|
|
27494
27551
|
}
|
|
27495
27552
|
}
|
|
27496
27553
|
ClrWizardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -27925,5 +27982,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27925
27982
|
* Generated bundle index. Do not edit.
|
|
27926
27983
|
*/
|
|
27927
27984
|
|
|
27928
|
-
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_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_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, 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, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, 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, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, 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, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, 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, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
27985
|
+
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_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_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, 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, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, 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, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, 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, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
27929
27986
|
//# sourceMappingURL=clr-angular.mjs.map
|