@fundamental-ngx/platform 0.44.0-rc.2 → 0.44.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/button.component.d.ts +8 -2
- package/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.d.ts +1 -1
- package/esm2022/action-bar/action-bar.component.mjs +9 -3
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
- package/esm2022/approval-flow/approval-flow.component.mjs +14 -4
- package/esm2022/button/button.component.mjs +21 -1
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -2
- package/esm2022/feed-input/feed-input.component.mjs +12 -1
- package/esm2022/form/checkbox/checkbox.component.mjs +11 -1
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +1 -1
- package/esm2022/form/date-picker/date-picker.component.mjs +34 -1
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +45 -1
- package/esm2022/form/form-group/form-field/form-field.component.mjs +13 -3
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +1 -1
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
- package/esm2022/form/select/commons/base-select.mjs +9 -3
- package/esm2022/form/select/select/select.component.mjs +1 -1
- package/esm2022/form/time-picker/time-picker.component.mjs +17 -1
- package/esm2022/list/base-list-item.mjs +4 -1
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +31 -29
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +12 -11
- package/esm2022/message-popover/message-popover.component.mjs +21 -22
- package/esm2022/page-footer/page-footer.component.mjs +11 -3
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +1 -1
- package/esm2022/search-field/search-field.component.mjs +34 -11
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +8 -8
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +18 -17
- package/esm2022/settings-generator/settings-generator.component.mjs +14 -17
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +1 -1
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +1 -1
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +75 -21
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +14 -13
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +14 -11
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +7 -9
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +1 -1
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +5 -7
- package/esm2022/table/components/table-row/table-row.component.mjs +31 -32
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +1 -1
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +1 -1
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -4
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +8 -12
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +10 -11
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +9 -15
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +5 -8
- package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +10 -4
- package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +12 -4
- package/esm2022/thumbnail/thumbnail.component.mjs +13 -4
- package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +1 -1
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +36 -3
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +23 -6
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +14 -2
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +36 -3
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +13 -16
- package/esm2022/variant-management/variant-management.component.mjs +1 -1
- package/feed-input/feed-input.component.d.ts +4 -1
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs +10 -4
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +17 -7
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +20 -0
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +11 -0
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +127 -8
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +3 -0
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +54 -50
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +11 -3
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +34 -11
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +31 -33
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +82 -26
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +23 -35
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +64 -67
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +27 -8
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +38 -5
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +70 -8
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +15 -16
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/checkbox/checkbox.component.d.ts +4 -2
- package/form/date-picker/date-picker.component.d.ts +16 -7
- package/form/datetime-picker/datetime-picker.component.d.ts +20 -8
- package/form/form-group/form-field/form-field.component.d.ts +4 -1
- package/form/time-picker/time-picker.component.d.ts +4 -1
- package/fundamental-ngx-platform-v0.44.0-rc.4.tgz +0 -0
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +22 -21
- package/message-popover/components/message-view/message-view.component.d.ts +4 -5
- package/message-popover/message-popover.component.d.ts +7 -6
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/search-field/search-field.component.d.ts +25 -19
- package/settings-generator/layouts/base-settings-generator-layout.d.ts +16 -17
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.d.ts +3 -3
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.d.ts +6 -7
- package/settings-generator/settings-generator.component.d.ts +8 -8
- package/smart-filter-bar/smart-filter-bar.class.d.ts +5 -5
- package/smart-filter-bar/smart-filter-bar.component.d.ts +31 -17
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +3 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +1 -1
- package/table/components/table-row/table-row.component.d.ts +10 -10
- package/table-helpers/directives/table-data-source.directive.d.ts +11 -13
- package/table-helpers/directives/table-header-resizer.directive.d.ts +3 -3
- package/table-helpers/directives/table-scrollable.directive.d.ts +1 -1
- package/table-helpers/directives/table-virtual-scroll.directive.d.ts +1 -1
- package/thumbnail/thumbnail-details/thumbnail-details.component.d.ts +2 -2
- package/thumbnail/thumbnail-image/thumbnail-image.component.d.ts +1 -1
- package/upload-collection/upload-collection/upload-collection.component.d.ts +11 -5
- package/value-help-dialog/components/define-tab/define-tab.component.d.ts +8 -2
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +6 -3
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +12 -3
- package/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.d.ts +1 -3
- package/fundamental-ngx-platform-v0.44.0-rc.2.tgz +0 -0
|
@@ -2,11 +2,11 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, EventEmitter, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, HostBinding, Directive, Optional, ContentChildren, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/common';
|
|
4
4
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i5$1 from '@angular/forms';
|
|
6
6
|
import { FormGroup, ControlContainer, NgModel, FormsModule } from '@angular/forms';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i3$1 from '@fundamental-ngx/core/bar';
|
|
8
8
|
import { BarModule } from '@fundamental-ngx/core/bar';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i6$1 from '@fundamental-ngx/core/button';
|
|
10
10
|
import { ButtonModule } from '@fundamental-ngx/core/button';
|
|
11
11
|
import { IconModule } from '@fundamental-ngx/core/icon';
|
|
12
12
|
import * as i6 from '@fundamental-ngx/core/link';
|
|
@@ -15,22 +15,23 @@ import * as i3 from '@fundamental-ngx/core/list';
|
|
|
15
15
|
import { ListModule } from '@fundamental-ngx/core/list';
|
|
16
16
|
import * as i4 from '@fundamental-ngx/core/object-status';
|
|
17
17
|
import { ObjectStatusModule } from '@fundamental-ngx/core/object-status';
|
|
18
|
-
import * as
|
|
18
|
+
import * as i2$1 from '@fundamental-ngx/core/popover';
|
|
19
19
|
import { PopoverModule } from '@fundamental-ngx/core/popover';
|
|
20
20
|
import * as i5 from '@fundamental-ngx/core/scrollbar';
|
|
21
21
|
import { ScrollbarModule } from '@fundamental-ngx/core/scrollbar';
|
|
22
|
-
import * as
|
|
22
|
+
import * as i4$1 from '@fundamental-ngx/core/segmented-button';
|
|
23
23
|
import { SegmentedButtonModule } from '@fundamental-ngx/core/segmented-button';
|
|
24
24
|
import * as i1 from '@fundamental-ngx/cdk/utils';
|
|
25
|
-
import { resizeObservable,
|
|
25
|
+
import { resizeObservable, TabbableElementService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';
|
|
26
26
|
import * as i7 from '@fundamental-ngx/i18n';
|
|
27
27
|
import { I18nModule } from '@fundamental-ngx/i18n';
|
|
28
28
|
import { PlatformButtonModule } from '@fundamental-ngx/platform/button';
|
|
29
29
|
import { PlatformObjectStatusModule } from '@fundamental-ngx/platform/object-status';
|
|
30
30
|
import { countBy, flatten, mergeWith } from 'lodash-es';
|
|
31
31
|
import { getFormState } from '@fundamental-ngx/platform/form';
|
|
32
|
-
import {
|
|
32
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
33
33
|
import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';
|
|
34
|
+
import { debounceTime, Subject, BehaviorSubject, Subscription, switchMap, startWith, filter, zip } from 'rxjs';
|
|
34
35
|
import { PlatformFormFieldControl } from '@fundamental-ngx/platform/shared';
|
|
35
36
|
|
|
36
37
|
const FDP_MESSAGE_POPOVER_DEFAULT_CONFIG = {
|
|
@@ -69,8 +70,8 @@ function convertFormState(type) {
|
|
|
69
70
|
|
|
70
71
|
class MessageViewComponent {
|
|
71
72
|
/** @hidden */
|
|
72
|
-
constructor(
|
|
73
|
-
this.
|
|
73
|
+
constructor(_destroyRef, _tabbableService, _document) {
|
|
74
|
+
this._destroyRef = _destroyRef;
|
|
74
75
|
this._tabbableService = _tabbableService;
|
|
75
76
|
this._document = _document;
|
|
76
77
|
/** Event emitted when user clicks on error entry containing additional description. */
|
|
@@ -87,7 +88,7 @@ class MessageViewComponent {
|
|
|
87
88
|
/** @hidden */
|
|
88
89
|
ngAfterViewInit() {
|
|
89
90
|
resizeObservable(this._detailsView.nativeElement)
|
|
90
|
-
.pipe(debounceTime(20),
|
|
91
|
+
.pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))
|
|
91
92
|
.subscribe(() => {
|
|
92
93
|
const { height } = this._detailsView.nativeElement.getBoundingClientRect();
|
|
93
94
|
this._listView.nativeElement.style.minHeight = `${height}px`;
|
|
@@ -123,8 +124,8 @@ class MessageViewComponent {
|
|
|
123
124
|
this._activeListElement = null;
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, deps: [{ token:
|
|
127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessageViewComponent, selector: "fdp-message-view", inputs: { currentScreen: "currentScreen", filteredErrors: "filteredErrors", currentEntry: "currentEntry" }, outputs: { openDetails: "openDetails", focusItem: "focusItem", closePopover: "closePopover" }, host: { properties: { "class": "this._initialClass" } }, providers: [
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, deps: [{ token: i0.DestroyRef }, { token: i1.TabbableElementService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessageViewComponent, selector: "fdp-message-view", inputs: { currentScreen: "currentScreen", filteredErrors: "filteredErrors", currentEntry: "currentEntry" }, outputs: { openDetails: "openDetails", focusItem: "focusItem", closePopover: "closePopover" }, host: { properties: { "class": "this._initialClass" } }, providers: [TabbableElementService], viewQueries: [{ propertyName: "_listView", first: true, predicate: ["listView"], descendants: true, read: ElementRef }, { propertyName: "_detailsView", first: true, predicate: ["detailsView"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator"], outputs: ["focusEscapeList"] }, { kind: "component", type: i3.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i3.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i3.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i3.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i3.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i5.ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "component", type: i6.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i7.FdTranslatePipe, name: "fdTranslate" }], animations: [
|
|
128
129
|
trigger('openCloseList', [
|
|
129
130
|
// ...
|
|
130
131
|
state('open', style({
|
|
@@ -173,7 +174,7 @@ class MessageViewComponent {
|
|
|
173
174
|
}
|
|
174
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, decorators: [{
|
|
175
176
|
type: Component,
|
|
176
|
-
args: [{ selector: 'fdp-message-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
177
|
+
args: [{ selector: 'fdp-message-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [TabbableElementService], animations: [
|
|
177
178
|
trigger('openCloseList', [
|
|
178
179
|
// ...
|
|
179
180
|
state('open', style({
|
|
@@ -219,7 +220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
219
220
|
])
|
|
220
221
|
])
|
|
221
222
|
], template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n" }]
|
|
222
|
-
}], ctorParameters: function () { return [{ type:
|
|
223
|
+
}], ctorParameters: function () { return [{ type: i0.DestroyRef }, { type: i1.TabbableElementService }, { type: Document, decorators: [{
|
|
223
224
|
type: Inject,
|
|
224
225
|
args: [DOCUMENT]
|
|
225
226
|
}] }]; }, propDecorators: { currentScreen: [{
|
|
@@ -247,9 +248,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
247
248
|
|
|
248
249
|
class MessagePopoverComponent {
|
|
249
250
|
/** @hidden */
|
|
250
|
-
constructor(_cdr,
|
|
251
|
+
constructor(_cdr, _destroyRef) {
|
|
251
252
|
this._cdr = _cdr;
|
|
252
|
-
this.
|
|
253
|
+
this._destroyRef = _destroyRef;
|
|
253
254
|
/** Event emits when user clicks on error entry and item's element needs to be focused. */
|
|
254
255
|
this.focusItem = new EventEmitter();
|
|
255
256
|
/** Current message popover screen. Can be `list` or `details`. */
|
|
@@ -268,7 +269,7 @@ class MessagePopoverComponent {
|
|
|
268
269
|
/** @hidden */
|
|
269
270
|
ngOnInit() {
|
|
270
271
|
this.wrapper?.setMessagePopover(this);
|
|
271
|
-
this.wrapper?.errors.pipe(
|
|
272
|
+
this.wrapper?.errors.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((errors) => {
|
|
272
273
|
this._groupedErrors = errors;
|
|
273
274
|
this._errorTypes = [];
|
|
274
275
|
const countedErrors = countBy(flatten(Object.values(this._groupedErrors.map((group) => group.errors))), 'type');
|
|
@@ -319,19 +320,19 @@ class MessagePopoverComponent {
|
|
|
319
320
|
});
|
|
320
321
|
});
|
|
321
322
|
}
|
|
322
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverComponent, deps: [{ token: i0.ChangeDetectorRef }, { token:
|
|
323
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverComponent, selector: "fdp-message-popover", inputs: { wrapper: "wrapper" }, outputs: { focusItem: "focusItem" }, providers: [DestroyedService], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "<fd-popover\n #popover\n placement=\"top-start\"\n *ngIf=\"_errorTypes.length > 0\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [disableScrollbar]=\"true\"\n>\n <fd-popover-control>\n <button\n fd-button\n type=\"button\"\n class=\"fd-message-popover__trigger fd-message-popover__trigger\"\n [ngClass]=\"'fd-message-popover__trigger--' + _priorityState\"\n [glyph]=\"'message-' + _priorityFormState\"\n [label]=\"_priorityStateItemsCount.toString()\"\n ></button>\n </fd-popover-control>\n <div>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\" class=\"fd-bar--growing\">\n <div fd-bar-left>\n <fd-segmented-button\n [(ngModel)]=\"_currentErrorType\"\n *ngIf=\"currentScreen === 'list'\"\n (ngModelChange)=\"_filterErrors()\"\n >\n <button\n fd-button\n [label]=\"'platformMessagePopover.allErrors' | fdTranslate\"\n value=\"all\"\n ></button>\n <button fd-button *ngFor=\"let type of _errorTypes\" [value]=\"type.group\">\n <span fd-object-status [status]=\"type.state\" [glyph]=\"'message-' + type.group\"></span>\n <span class=\"fd-button__text\">{{ type.count }}</span>\n </button>\n </fd-segmented-button>\n <button\n *ngIf=\"currentScreen === 'details'\"\n fd-button\n fdInitialFocus\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n title=\"Go back\"\n (click)=\"_showList()\"\n ></button>\n </div>\n <div fd-bar-right>\n <button fd-button fdType=\"transparent\" (click)=\"popover.close()\" glyph=\"decline\"></button>\n </div>\n </div>\n </div>\n <fdp-message-view\n [currentScreen]=\"currentScreen\"\n [filteredErrors]=\"_filteredErrors\"\n [currentEntry]=\"currentEntry\"\n (openDetails)=\"_showDetails($event)\"\n (closePopover)=\"_closePopover($event)\"\n (focusItem)=\"focusItem.emit($event)\"\n ></fdp-message-view>\n </div>\n</fd-popover>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-message-view{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-message-view:after,.fd-message-view:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:26rem;padding:0}.fd-message-view__list:after,.fd-message-view__list:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list--hidden{opacity:0}.fd-message-view__details{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;inset:0;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 1rem 1rem 3.5rem;position:absolute}.fd-message-view__details:after,.fd-message-view__details:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details[dir=rtl],[dir=rtl] .fd-message-view__details{padding:1rem 3.5rem 1rem 1rem}.fd-message-view__details-title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:block;font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader5Size);font-weight:400;font-weight:var(--sapFontHeaderWeight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-title:after,.fd-message-view__details-title:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details-title .fd-message-view__icon{font-size:1rem;margin:0 .5rem 0 -2rem}.fd-message-view__details-title .fd-message-view__icon[dir=rtl],[dir=rtl] .fd-message-view__details-title .fd-message-view__icon{margin:0 -2rem 0 .5rem}.fd-message-view__details-description{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1.4;margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-description:after,.fd-message-view__details-description:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details--visible{display:block}.fd-message-popover__trigger.is-focus,.fd-message-popover__trigger:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-message-popover__trigger--critical{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor)}.fd-message-popover__trigger--critical.is-hover,.fd-message-popover__trigger--critical:hover{--fdButtonColor:var(--sapButton_Critical_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Hover_Background);--fdButtonBorderColor:var(--sapButton_Critical_Hover_BorderColor)}.fd-message-popover__trigger--critical.is-active,.fd-message-popover__trigger--critical:active{--fdButtonColor:var(--sapButton_Critical_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Active_Background);--fdButtonBorderColor:var(--sapButton_Critical_Active_BorderColor)}.fd-message-popover__trigger--negative{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor)}.fd-message-popover__trigger--negative.is-hover,.fd-message-popover__trigger--negative:hover{--fdButtonColor:var(--sapButton_Negative_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Hover_Background);--fdButtonBorderColor:var(--sapButton_Negative_Hover_BorderColor)}.fd-message-popover__trigger--negative.is-active,.fd-message-popover__trigger--negative:active{--fdButtonColor:var(--sapButton_Negative_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Active_Background);--fdButtonBorderColor:var(--sapButton_Negative_Active_BorderColor)}.fd-message-popover__trigger--success{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor)}.fd-message-popover__trigger--success.is-hover,.fd-message-popover__trigger--success:hover{--fdButtonColor:var(--sapButton_Success_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Hover_Background);--fdButtonBorderColor:var(--sapButton_Success_Hover_BorderColor)}.fd-message-popover__trigger--success.is-active,.fd-message-popover__trigger--success:active{--fdButtonColor:var(--sapButton_Success_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Active_Background);--fdButtonBorderColor:var(--sapButton_Success_Active_BorderColor)}.fd-message-popover__trigger--information{--fdButtonColor:var(--sapButton_Neutral_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Background);--fdButtonBorderColor:var(--sapButton_Neutral_BorderColor)}.fd-message-popover__trigger--information.is-hover,.fd-message-popover__trigger--information:hover{--fdButtonColor:var(--sapButton_Neutral_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Hover_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Hover_BorderColor)}.fd-message-popover__trigger--information.is-active,.fd-message-popover__trigger--information:active{--fdButtonColor:var(--sapButton_Neutral_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Active_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Active_BorderColor)}.fd-message-popover__view-container{border-bottom-left-radius:var(--fdPopover_Border_Radius);border-bottom-right-radius:var(--fdPopover_Border_Radius);overflow:hidden;display:block;max-height:40vh}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child:before{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-view__list{min-width:20rem;min-height:10rem;max-height:40vh}.fd-message-view__list .fd-link{font-size:inherit}.fd-message-view__list .fd-list__link:active,.fd-message-view__list .fd-list__link.is-active{--sapLinkColor: var(--sapList_Active_TextColor);--sapLink_Active_Color: var(--sapList_Active_TextColor)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "directive", type: i3$1.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "component", type: i3$1.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i4$1.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4$1.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4$1.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i5$1.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i6$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i1.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "directive", type: i1.DeprecatedInitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus"] }, { kind: "component", type: MessageViewComponent, selector: "fdp-message-view", inputs: ["currentScreen", "filteredErrors", "currentEntry"], outputs: ["openDetails", "focusItem", "closePopover"] }, { kind: "pipe", type: i7.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
324
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverComponent, selector: "fdp-message-popover", inputs: { wrapper: "wrapper" }, outputs: { focusItem: "focusItem" }, viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "<fd-popover\n #popover\n placement=\"top-start\"\n *ngIf=\"_errorTypes.length > 0\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [disableScrollbar]=\"true\"\n>\n <fd-popover-control>\n <button\n fd-button\n type=\"button\"\n class=\"fd-message-popover__trigger fd-message-popover__trigger\"\n [ngClass]=\"'fd-message-popover__trigger--' + _priorityState\"\n [glyph]=\"'message-' + _priorityFormState\"\n [label]=\"_priorityStateItemsCount.toString()\"\n ></button>\n </fd-popover-control>\n <div>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\" class=\"fd-bar--growing\">\n <div fd-bar-left>\n <fd-segmented-button\n [(ngModel)]=\"_currentErrorType\"\n *ngIf=\"currentScreen === 'list'\"\n (ngModelChange)=\"_filterErrors()\"\n >\n <button\n fd-button\n [label]=\"'platformMessagePopover.allErrors' | fdTranslate\"\n value=\"all\"\n ></button>\n <button fd-button *ngFor=\"let type of _errorTypes\" [value]=\"type.group\">\n <span fd-object-status [status]=\"type.state\" [glyph]=\"'message-' + type.group\"></span>\n <span class=\"fd-button__text\">{{ type.count }}</span>\n </button>\n </fd-segmented-button>\n <button\n *ngIf=\"currentScreen === 'details'\"\n fd-button\n fdInitialFocus\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n title=\"Go back\"\n (click)=\"_showList()\"\n ></button>\n </div>\n <div fd-bar-right>\n <button fd-button fdType=\"transparent\" (click)=\"popover.close()\" glyph=\"decline\"></button>\n </div>\n </div>\n </div>\n <fdp-message-view\n [currentScreen]=\"currentScreen\"\n [filteredErrors]=\"_filteredErrors\"\n [currentEntry]=\"currentEntry\"\n (openDetails)=\"_showDetails($event)\"\n (closePopover)=\"_closePopover($event)\"\n (focusItem)=\"focusItem.emit($event)\"\n ></fdp-message-view>\n </div>\n</fd-popover>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-message-view{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-message-view:after,.fd-message-view:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:26rem;padding:0}.fd-message-view__list:after,.fd-message-view__list:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list--hidden{opacity:0}.fd-message-view__details{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;inset:0;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 1rem 1rem 3.5rem;position:absolute}.fd-message-view__details:after,.fd-message-view__details:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details[dir=rtl],[dir=rtl] .fd-message-view__details{padding:1rem 3.5rem 1rem 1rem}.fd-message-view__details-title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:block;font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader5Size);font-weight:400;font-weight:var(--sapFontHeaderWeight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-title:after,.fd-message-view__details-title:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details-title .fd-message-view__icon{font-size:1rem;margin:0 .5rem 0 -2rem}.fd-message-view__details-title .fd-message-view__icon[dir=rtl],[dir=rtl] .fd-message-view__details-title .fd-message-view__icon{margin:0 -2rem 0 .5rem}.fd-message-view__details-description{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1.4;margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-description:after,.fd-message-view__details-description:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details--visible{display:block}.fd-message-popover__trigger.is-focus,.fd-message-popover__trigger:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-message-popover__trigger--critical{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor)}.fd-message-popover__trigger--critical.is-hover,.fd-message-popover__trigger--critical:hover{--fdButtonColor:var(--sapButton_Critical_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Hover_Background);--fdButtonBorderColor:var(--sapButton_Critical_Hover_BorderColor)}.fd-message-popover__trigger--critical.is-active,.fd-message-popover__trigger--critical:active{--fdButtonColor:var(--sapButton_Critical_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Active_Background);--fdButtonBorderColor:var(--sapButton_Critical_Active_BorderColor)}.fd-message-popover__trigger--negative{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor)}.fd-message-popover__trigger--negative.is-hover,.fd-message-popover__trigger--negative:hover{--fdButtonColor:var(--sapButton_Negative_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Hover_Background);--fdButtonBorderColor:var(--sapButton_Negative_Hover_BorderColor)}.fd-message-popover__trigger--negative.is-active,.fd-message-popover__trigger--negative:active{--fdButtonColor:var(--sapButton_Negative_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Active_Background);--fdButtonBorderColor:var(--sapButton_Negative_Active_BorderColor)}.fd-message-popover__trigger--success{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor)}.fd-message-popover__trigger--success.is-hover,.fd-message-popover__trigger--success:hover{--fdButtonColor:var(--sapButton_Success_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Hover_Background);--fdButtonBorderColor:var(--sapButton_Success_Hover_BorderColor)}.fd-message-popover__trigger--success.is-active,.fd-message-popover__trigger--success:active{--fdButtonColor:var(--sapButton_Success_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Active_Background);--fdButtonBorderColor:var(--sapButton_Success_Active_BorderColor)}.fd-message-popover__trigger--information{--fdButtonColor:var(--sapButton_Neutral_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Background);--fdButtonBorderColor:var(--sapButton_Neutral_BorderColor)}.fd-message-popover__trigger--information.is-hover,.fd-message-popover__trigger--information:hover{--fdButtonColor:var(--sapButton_Neutral_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Hover_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Hover_BorderColor)}.fd-message-popover__trigger--information.is-active,.fd-message-popover__trigger--information:active{--fdButtonColor:var(--sapButton_Neutral_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Active_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Active_BorderColor)}.fd-message-popover__view-container{border-bottom-left-radius:var(--fdPopover_Border_Radius);border-bottom-right-radius:var(--fdPopover_Border_Radius);overflow:hidden;display:block;max-height:40vh}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child:before{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-view__list{min-width:20rem;min-height:10rem;max-height:40vh}.fd-message-view__list .fd-link{font-size:inherit}.fd-message-view__list .fd-list__link:active,.fd-message-view__list .fd-list__link.is-active{--sapLinkColor: var(--sapList_Active_TextColor);--sapLink_Active_Color: var(--sapList_Active_TextColor)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "directive", type: i2$1.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "component", type: i2$1.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i3$1.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3$1.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$1.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4$1.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i1.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "directive", type: i1.DeprecatedInitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus"] }, { kind: "component", type: MessageViewComponent, selector: "fdp-message-view", inputs: ["currentScreen", "filteredErrors", "currentEntry"], outputs: ["openDetails", "focusItem", "closePopover"] }, { kind: "pipe", type: i7.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
324
325
|
}
|
|
325
326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverComponent, decorators: [{
|
|
326
327
|
type: Component,
|
|
327
|
-
args: [{ selector: 'fdp-message-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DestroyedService], template: "<fd-popover\n #popover\n placement=\"top-start\"\n *ngIf=\"_errorTypes.length > 0\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [disableScrollbar]=\"true\"\n>\n <fd-popover-control>\n <button\n fd-button\n type=\"button\"\n class=\"fd-message-popover__trigger fd-message-popover__trigger\"\n [ngClass]=\"'fd-message-popover__trigger--' + _priorityState\"\n [glyph]=\"'message-' + _priorityFormState\"\n [label]=\"_priorityStateItemsCount.toString()\"\n ></button>\n </fd-popover-control>\n <div>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\" class=\"fd-bar--growing\">\n <div fd-bar-left>\n <fd-segmented-button\n [(ngModel)]=\"_currentErrorType\"\n *ngIf=\"currentScreen === 'list'\"\n (ngModelChange)=\"_filterErrors()\"\n >\n <button\n fd-button\n [label]=\"'platformMessagePopover.allErrors' | fdTranslate\"\n value=\"all\"\n ></button>\n <button fd-button *ngFor=\"let type of _errorTypes\" [value]=\"type.group\">\n <span fd-object-status [status]=\"type.state\" [glyph]=\"'message-' + type.group\"></span>\n <span class=\"fd-button__text\">{{ type.count }}</span>\n </button>\n </fd-segmented-button>\n <button\n *ngIf=\"currentScreen === 'details'\"\n fd-button\n fdInitialFocus\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n title=\"Go back\"\n (click)=\"_showList()\"\n ></button>\n </div>\n <div fd-bar-right>\n <button fd-button fdType=\"transparent\" (click)=\"popover.close()\" glyph=\"decline\"></button>\n </div>\n </div>\n </div>\n <fdp-message-view\n [currentScreen]=\"currentScreen\"\n [filteredErrors]=\"_filteredErrors\"\n [currentEntry]=\"currentEntry\"\n (openDetails)=\"_showDetails($event)\"\n (closePopover)=\"_closePopover($event)\"\n (focusItem)=\"focusItem.emit($event)\"\n ></fdp-message-view>\n </div>\n</fd-popover>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-message-view{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-message-view:after,.fd-message-view:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:26rem;padding:0}.fd-message-view__list:after,.fd-message-view__list:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list--hidden{opacity:0}.fd-message-view__details{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;inset:0;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 1rem 1rem 3.5rem;position:absolute}.fd-message-view__details:after,.fd-message-view__details:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details[dir=rtl],[dir=rtl] .fd-message-view__details{padding:1rem 3.5rem 1rem 1rem}.fd-message-view__details-title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:block;font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader5Size);font-weight:400;font-weight:var(--sapFontHeaderWeight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-title:after,.fd-message-view__details-title:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details-title .fd-message-view__icon{font-size:1rem;margin:0 .5rem 0 -2rem}.fd-message-view__details-title .fd-message-view__icon[dir=rtl],[dir=rtl] .fd-message-view__details-title .fd-message-view__icon{margin:0 -2rem 0 .5rem}.fd-message-view__details-description{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1.4;margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-description:after,.fd-message-view__details-description:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details--visible{display:block}.fd-message-popover__trigger.is-focus,.fd-message-popover__trigger:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-message-popover__trigger--critical{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor)}.fd-message-popover__trigger--critical.is-hover,.fd-message-popover__trigger--critical:hover{--fdButtonColor:var(--sapButton_Critical_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Hover_Background);--fdButtonBorderColor:var(--sapButton_Critical_Hover_BorderColor)}.fd-message-popover__trigger--critical.is-active,.fd-message-popover__trigger--critical:active{--fdButtonColor:var(--sapButton_Critical_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Active_Background);--fdButtonBorderColor:var(--sapButton_Critical_Active_BorderColor)}.fd-message-popover__trigger--negative{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor)}.fd-message-popover__trigger--negative.is-hover,.fd-message-popover__trigger--negative:hover{--fdButtonColor:var(--sapButton_Negative_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Hover_Background);--fdButtonBorderColor:var(--sapButton_Negative_Hover_BorderColor)}.fd-message-popover__trigger--negative.is-active,.fd-message-popover__trigger--negative:active{--fdButtonColor:var(--sapButton_Negative_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Active_Background);--fdButtonBorderColor:var(--sapButton_Negative_Active_BorderColor)}.fd-message-popover__trigger--success{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor)}.fd-message-popover__trigger--success.is-hover,.fd-message-popover__trigger--success:hover{--fdButtonColor:var(--sapButton_Success_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Hover_Background);--fdButtonBorderColor:var(--sapButton_Success_Hover_BorderColor)}.fd-message-popover__trigger--success.is-active,.fd-message-popover__trigger--success:active{--fdButtonColor:var(--sapButton_Success_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Active_Background);--fdButtonBorderColor:var(--sapButton_Success_Active_BorderColor)}.fd-message-popover__trigger--information{--fdButtonColor:var(--sapButton_Neutral_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Background);--fdButtonBorderColor:var(--sapButton_Neutral_BorderColor)}.fd-message-popover__trigger--information.is-hover,.fd-message-popover__trigger--information:hover{--fdButtonColor:var(--sapButton_Neutral_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Hover_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Hover_BorderColor)}.fd-message-popover__trigger--information.is-active,.fd-message-popover__trigger--information:active{--fdButtonColor:var(--sapButton_Neutral_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Active_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Active_BorderColor)}.fd-message-popover__view-container{border-bottom-left-radius:var(--fdPopover_Border_Radius);border-bottom-right-radius:var(--fdPopover_Border_Radius);overflow:hidden;display:block;max-height:40vh}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child:before{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-view__list{min-width:20rem;min-height:10rem;max-height:40vh}.fd-message-view__list .fd-link{font-size:inherit}.fd-message-view__list .fd-list__link:active,.fd-message-view__list .fd-list__link.is-active{--sapLinkColor: var(--sapList_Active_TextColor);--sapLink_Active_Color: var(--sapList_Active_TextColor)}\n"] }]
|
|
328
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type:
|
|
328
|
+
args: [{ selector: 'fdp-message-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-popover\n #popover\n placement=\"top-start\"\n *ngIf=\"_errorTypes.length > 0\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [disableScrollbar]=\"true\"\n>\n <fd-popover-control>\n <button\n fd-button\n type=\"button\"\n class=\"fd-message-popover__trigger fd-message-popover__trigger\"\n [ngClass]=\"'fd-message-popover__trigger--' + _priorityState\"\n [glyph]=\"'message-' + _priorityFormState\"\n [label]=\"_priorityStateItemsCount.toString()\"\n ></button>\n </fd-popover-control>\n <div>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\" class=\"fd-bar--growing\">\n <div fd-bar-left>\n <fd-segmented-button\n [(ngModel)]=\"_currentErrorType\"\n *ngIf=\"currentScreen === 'list'\"\n (ngModelChange)=\"_filterErrors()\"\n >\n <button\n fd-button\n [label]=\"'platformMessagePopover.allErrors' | fdTranslate\"\n value=\"all\"\n ></button>\n <button fd-button *ngFor=\"let type of _errorTypes\" [value]=\"type.group\">\n <span fd-object-status [status]=\"type.state\" [glyph]=\"'message-' + type.group\"></span>\n <span class=\"fd-button__text\">{{ type.count }}</span>\n </button>\n </fd-segmented-button>\n <button\n *ngIf=\"currentScreen === 'details'\"\n fd-button\n fdInitialFocus\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n title=\"Go back\"\n (click)=\"_showList()\"\n ></button>\n </div>\n <div fd-bar-right>\n <button fd-button fdType=\"transparent\" (click)=\"popover.close()\" glyph=\"decline\"></button>\n </div>\n </div>\n </div>\n <fdp-message-view\n [currentScreen]=\"currentScreen\"\n [filteredErrors]=\"_filteredErrors\"\n [currentEntry]=\"currentEntry\"\n (openDetails)=\"_showDetails($event)\"\n (closePopover)=\"_closePopover($event)\"\n (focusItem)=\"focusItem.emit($event)\"\n ></fdp-message-view>\n </div>\n</fd-popover>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-message-view{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;position:relative}.fd-message-view:after,.fd-message-view:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:26rem;padding:0}.fd-message-view__list:after,.fd-message-view__list:before{box-sizing:inherit;font-size:inherit}.fd-message-view__list--hidden{opacity:0}.fd-message-view__details{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;inset:0;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 1rem 1rem 3.5rem;position:absolute}.fd-message-view__details:after,.fd-message-view__details:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details[dir=rtl],[dir=rtl] .fd-message-view__details{padding:1rem 3.5rem 1rem 1rem}.fd-message-view__details-title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:block;font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader5Size);font-weight:400;font-weight:var(--sapFontHeaderWeight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-title:after,.fd-message-view__details-title:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details-title .fd-message-view__icon{font-size:1rem;margin:0 .5rem 0 -2rem}.fd-message-view__details-title .fd-message-view__icon[dir=rtl],[dir=rtl] .fd-message-view__details-title .fd-message-view__icon{margin:0 -2rem 0 .5rem}.fd-message-view__details-description{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1.4;margin:0 0 1rem;padding:0;white-space:normal}.fd-message-view__details-description:after,.fd-message-view__details-description:before{box-sizing:inherit;font-size:inherit}.fd-message-view__details--visible{display:block}.fd-message-popover__trigger.is-focus,.fd-message-popover__trigger:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-message-popover__trigger--critical{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor)}.fd-message-popover__trigger--critical.is-hover,.fd-message-popover__trigger--critical:hover{--fdButtonColor:var(--sapButton_Critical_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Hover_Background);--fdButtonBorderColor:var(--sapButton_Critical_Hover_BorderColor)}.fd-message-popover__trigger--critical.is-active,.fd-message-popover__trigger--critical:active{--fdButtonColor:var(--sapButton_Critical_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Active_Background);--fdButtonBorderColor:var(--sapButton_Critical_Active_BorderColor)}.fd-message-popover__trigger--negative{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor)}.fd-message-popover__trigger--negative.is-hover,.fd-message-popover__trigger--negative:hover{--fdButtonColor:var(--sapButton_Negative_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Hover_Background);--fdButtonBorderColor:var(--sapButton_Negative_Hover_BorderColor)}.fd-message-popover__trigger--negative.is-active,.fd-message-popover__trigger--negative:active{--fdButtonColor:var(--sapButton_Negative_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Active_Background);--fdButtonBorderColor:var(--sapButton_Negative_Active_BorderColor)}.fd-message-popover__trigger--success{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor)}.fd-message-popover__trigger--success.is-hover,.fd-message-popover__trigger--success:hover{--fdButtonColor:var(--sapButton_Success_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Hover_Background);--fdButtonBorderColor:var(--sapButton_Success_Hover_BorderColor)}.fd-message-popover__trigger--success.is-active,.fd-message-popover__trigger--success:active{--fdButtonColor:var(--sapButton_Success_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Active_Background);--fdButtonBorderColor:var(--sapButton_Success_Active_BorderColor)}.fd-message-popover__trigger--information{--fdButtonColor:var(--sapButton_Neutral_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Background);--fdButtonBorderColor:var(--sapButton_Neutral_BorderColor)}.fd-message-popover__trigger--information.is-hover,.fd-message-popover__trigger--information:hover{--fdButtonColor:var(--sapButton_Neutral_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Hover_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Hover_BorderColor)}.fd-message-popover__trigger--information.is-active,.fd-message-popover__trigger--information:active{--fdButtonColor:var(--sapButton_Neutral_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Neutral_Active_Background);--fdButtonBorderColor:var(--sapButton_Neutral_Active_BorderColor)}.fd-message-popover__view-container{border-bottom-left-radius:var(--fdPopover_Border_Radius);border-bottom-right-radius:var(--fdPopover_Border_Radius);overflow:hidden;display:block;max-height:40vh}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child:before{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-view__list{min-width:20rem;min-height:10rem;max-height:40vh}.fd-message-view__list .fd-link{font-size:inherit}.fd-message-view__list .fd-list__link:active,.fd-message-view__list .fd-list__link.is-active{--sapLinkColor: var(--sapList_Active_TextColor);--sapLink_Active_Color: var(--sapList_Active_TextColor)}\n"] }]
|
|
329
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.DestroyRef }]; }, propDecorators: { _popover: [{
|
|
330
|
+
type: ViewChild,
|
|
331
|
+
args: ['popover']
|
|
332
|
+
}], wrapper: [{
|
|
329
333
|
type: Input
|
|
330
334
|
}], focusItem: [{
|
|
331
335
|
type: Output
|
|
332
|
-
}], _popover: [{
|
|
333
|
-
type: ViewChild,
|
|
334
|
-
args: ['popover']
|
|
335
336
|
}] } });
|
|
336
337
|
|
|
337
338
|
class MessagePopoverFormItemDirective {
|
|
@@ -340,7 +341,7 @@ class MessagePopoverFormItemDirective {
|
|
|
340
341
|
this.elementRef = elementRef;
|
|
341
342
|
this.control = control;
|
|
342
343
|
}
|
|
343
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormItemDirective, deps: [{ token: i0.ElementRef }, { token:
|
|
344
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormItemDirective, deps: [{ token: i0.ElementRef }, { token: i5$1.NgControl, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
344
345
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormItemDirective, selector: "[fdpMessagePopoverFormItem]", inputs: { label: ["fdpMessagePopoverFormItem", "label"] }, ngImport: i0 }); }
|
|
345
346
|
}
|
|
346
347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormItemDirective, decorators: [{
|
|
@@ -348,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
348
349
|
args: [{
|
|
349
350
|
selector: '[fdpMessagePopoverFormItem]'
|
|
350
351
|
}]
|
|
351
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type:
|
|
352
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i5$1.NgControl, decorators: [{
|
|
352
353
|
type: Optional
|
|
353
354
|
}] }]; }, propDecorators: { label: [{
|
|
354
355
|
type: Input,
|
|
@@ -378,25 +379,26 @@ class MessagePopoverFormWrapperComponent {
|
|
|
378
379
|
return this._formFields;
|
|
379
380
|
}
|
|
380
381
|
/** @hidden */
|
|
381
|
-
constructor(
|
|
382
|
-
this.
|
|
382
|
+
constructor(_destroyRef, _config) {
|
|
383
|
+
this._destroyRef = _destroyRef;
|
|
383
384
|
this._config = _config;
|
|
384
385
|
/** Message Popover instance. */
|
|
385
386
|
this.messagePopover$ = new Subject();
|
|
386
387
|
/** @hidden */
|
|
387
|
-
this._formFields = [];
|
|
388
|
-
/** @hidden */
|
|
389
388
|
this._errors$ = new BehaviorSubject([]);
|
|
389
|
+
/**
|
|
390
|
+
* Error models Observable. Emitted when form submitted and contains invalid fields.
|
|
391
|
+
*/
|
|
392
|
+
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
393
|
+
this.errors = this._errors$.asObservable();
|
|
394
|
+
/** @hidden */
|
|
395
|
+
this._formFields = [];
|
|
390
396
|
/** @hidden */
|
|
391
397
|
this._ngForms = [];
|
|
392
398
|
/** @hidden */
|
|
393
399
|
this._formItemErrorsSubscription = new Subscription();
|
|
394
400
|
/** @hidden */
|
|
395
401
|
this._formSubmitted = false;
|
|
396
|
-
/**
|
|
397
|
-
* Error models Observable. Emitted when form submitted and contains invalid fields.
|
|
398
|
-
*/
|
|
399
|
-
this.errors = this._errors$.asObservable();
|
|
400
402
|
}
|
|
401
403
|
/** @hidden */
|
|
402
404
|
ngAfterViewInit() {
|
|
@@ -406,7 +408,7 @@ class MessagePopoverFormWrapperComponent {
|
|
|
406
408
|
}
|
|
407
409
|
this._ngForms = this._projectedForm?.toArray();
|
|
408
410
|
this._startListeningForErrors();
|
|
409
|
-
this._projectedForm?.changes.pipe(
|
|
411
|
+
this._projectedForm?.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
410
412
|
this._ngForms = this._projectedForm.toArray();
|
|
411
413
|
this._startListeningForErrors();
|
|
412
414
|
});
|
|
@@ -420,7 +422,7 @@ class MessagePopoverFormWrapperComponent {
|
|
|
420
422
|
}
|
|
421
423
|
/**
|
|
422
424
|
* Programmatically add new form to array of forms.
|
|
423
|
-
* @param
|
|
425
|
+
* @param forms
|
|
424
426
|
*/
|
|
425
427
|
addForms(forms) {
|
|
426
428
|
const formsArray = Array.isArray(forms) ? forms : [forms];
|
|
@@ -435,6 +437,10 @@ class MessagePopoverFormWrapperComponent {
|
|
|
435
437
|
this._formFields.push(...formFields);
|
|
436
438
|
this._listenToFormFieldErrors(this._formFields);
|
|
437
439
|
}
|
|
440
|
+
/** @hidden */
|
|
441
|
+
ngOnDestroy() {
|
|
442
|
+
this._formItemErrorsSubscription.unsubscribe();
|
|
443
|
+
}
|
|
438
444
|
/**
|
|
439
445
|
* @hidden
|
|
440
446
|
* Listens to the form submission and collects form control errors.
|
|
@@ -447,7 +453,7 @@ class MessagePopoverFormWrapperComponent {
|
|
|
447
453
|
this._errors$.next([]);
|
|
448
454
|
const formSubmitEvents = this._ngForms.map((form) => form.ngSubmit.pipe(switchMap(() => form.statusChanges.pipe(startWith(form.status), filter((status) => status.toLowerCase() !== 'pending')))));
|
|
449
455
|
this._formErrorsSubscription = zip(...formSubmitEvents)
|
|
450
|
-
.pipe(
|
|
456
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
451
457
|
.subscribe(() => {
|
|
452
458
|
this._formSubmitted = true;
|
|
453
459
|
const errors = this._directiveItems.length > 0 ? this._collectPlainFormData() : this._collectAdvancedFormData();
|
|
@@ -475,10 +481,6 @@ class MessagePopoverFormWrapperComponent {
|
|
|
475
481
|
});
|
|
476
482
|
}
|
|
477
483
|
/** @hidden */
|
|
478
|
-
ngOnDestroy() {
|
|
479
|
-
this._formItemErrorsSubscription.unsubscribe();
|
|
480
|
-
}
|
|
481
|
-
/** @hidden */
|
|
482
484
|
_collectPlainFormData() {
|
|
483
485
|
const errors = [
|
|
484
486
|
{
|
|
@@ -599,6 +601,8 @@ class MessagePopoverFormWrapperComponent {
|
|
|
599
601
|
* @param field Form Field Control.
|
|
600
602
|
* @param errorDirective Optional Error directive
|
|
601
603
|
* @param section Section where text should be rendered.
|
|
604
|
+
* @param errorKey
|
|
605
|
+
* @param error
|
|
602
606
|
*/
|
|
603
607
|
_getErrorText(field, errorDirective, section = 'heading', errorKey, error) {
|
|
604
608
|
const errorTextObj = {
|
|
@@ -649,20 +653,16 @@ class MessagePopoverFormWrapperComponent {
|
|
|
649
653
|
_isAdvancedError(error) {
|
|
650
654
|
return !!error && typeof error !== 'string';
|
|
651
655
|
}
|
|
652
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, deps: [{ token:
|
|
653
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormWrapperComponent, selector: "fdp-message-popover-form-wrapper", inputs: { forms: "forms", formFields: "formFields" },
|
|
656
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, deps: [{ token: i0.DestroyRef }, { token: FDP_MESSAGE_POPOVER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
657
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormWrapperComponent, selector: "fdp-message-popover-form-wrapper", inputs: { forms: "forms", formFields: "formFields" }, queries: [{ propertyName: "_projectedForm", predicate: ControlContainer, descendants: true }, { propertyName: "_projectedFormItems", predicate: NgModel, descendants: true }, { propertyName: "_projectedFormFieldControls", predicate: PlatformFormFieldControl, descendants: true }, { propertyName: "_directiveItems", predicate: MessagePopoverFormItemDirective, descendants: true }], exportAs: ["messagePopoverWrapper"], ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
654
658
|
}
|
|
655
659
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, decorators: [{
|
|
656
660
|
type: Component,
|
|
657
|
-
args: [{ selector: 'fdp-message-popover-form-wrapper', exportAs: 'messagePopoverWrapper',
|
|
658
|
-
}], ctorParameters: function () { return [{ type:
|
|
661
|
+
args: [{ selector: 'fdp-message-popover-form-wrapper', exportAs: 'messagePopoverWrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n" }]
|
|
662
|
+
}], ctorParameters: function () { return [{ type: i0.DestroyRef }, { type: undefined, decorators: [{
|
|
659
663
|
type: Inject,
|
|
660
664
|
args: [FDP_MESSAGE_POPOVER_CONFIG]
|
|
661
|
-
}] }]; }, propDecorators: {
|
|
662
|
-
type: Input
|
|
663
|
-
}], formFields: [{
|
|
664
|
-
type: Input
|
|
665
|
-
}], _projectedForm: [{
|
|
665
|
+
}] }]; }, propDecorators: { _projectedForm: [{
|
|
666
666
|
type: ContentChildren,
|
|
667
667
|
args: [ControlContainer, { descendants: true }]
|
|
668
668
|
}], _projectedFormItems: [{
|
|
@@ -674,6 +674,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
674
674
|
}], _directiveItems: [{
|
|
675
675
|
type: ContentChildren,
|
|
676
676
|
args: [MessagePopoverFormItemDirective, { descendants: true }]
|
|
677
|
+
}], forms: [{
|
|
678
|
+
type: Input
|
|
679
|
+
}], formFields: [{
|
|
680
|
+
type: Input
|
|
677
681
|
}] } });
|
|
678
682
|
|
|
679
683
|
class PlatformMessagePopoverModule {
|