@fundamental-ngx/platform 0.65.1-rc.9 → 0.65.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.
Files changed (63) hide show
  1. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +40 -40
  2. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-platform-button.mjs +7 -7
  4. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +50 -51
  5. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  6. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +8 -8
  7. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  8. package/fesm2022/fundamental-ngx-platform-form.mjs +321 -321
  9. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  10. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +64 -64
  11. package/fesm2022/fundamental-ngx-platform-link.mjs +7 -7
  12. package/fesm2022/fundamental-ngx-platform-list.mjs +59 -59
  13. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +7 -7
  14. package/fesm2022/fundamental-ngx-platform-menu.mjs +13 -13
  15. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +688 -34
  16. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +7 -7
  18. package/fesm2022/fundamental-ngx-platform-object-status.mjs +10 -10
  19. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +7 -7
  20. package/fesm2022/fundamental-ngx-platform-panel.mjs +16 -16
  21. package/fesm2022/fundamental-ngx-platform-search-field.mjs +19 -20
  22. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +34 -34
  24. package/fesm2022/fundamental-ngx-platform-shared.mjs +28 -28
  25. package/fesm2022/fundamental-ngx-platform-slider.mjs +8 -8
  26. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +34 -34
  28. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +7 -7
  30. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +82 -82
  31. package/fesm2022/fundamental-ngx-platform-table.mjs +136 -136
  32. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +29 -29
  34. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +19 -19
  36. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +43 -43
  38. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-platform.mjs +4 -5
  40. package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
  41. package/package.json +5 -13
  42. package/schematics/ng-add/index.js +1 -1
  43. package/schematics/package.json +1 -1
  44. package/types/fundamental-ngx-platform-approval-flow.d.ts +1 -1
  45. package/types/fundamental-ngx-platform-dynamic-page.d.ts +1 -1
  46. package/types/fundamental-ngx-platform-form.d.ts +11 -11
  47. package/types/fundamental-ngx-platform-icon-tab-bar.d.ts +1 -1
  48. package/types/fundamental-ngx-platform-list.d.ts +1 -1
  49. package/types/fundamental-ngx-platform-message-popover.d.ts +253 -9
  50. package/types/fundamental-ngx-platform-panel.d.ts +1 -1
  51. package/types/fundamental-ngx-platform-settings-generator.d.ts +2 -2
  52. package/types/fundamental-ngx-platform-shared.d.ts +3 -3
  53. package/types/fundamental-ngx-platform-smart-filter-bar.d.ts +1 -1
  54. package/types/fundamental-ngx-platform-table-helpers.d.ts +5 -5
  55. package/types/fundamental-ngx-platform-wizard-generator.d.ts +2 -2
  56. package/types/fundamental-ngx-platform.d.ts +0 -1
  57. package/fesm2022/fundamental-ngx-platform-message-view.mjs +0 -170
  58. package/fesm2022/fundamental-ngx-platform-message-view.mjs.map +0 -1
  59. package/fesm2022/fundamental-ngx-platform-messages-shared.mjs +0 -803
  60. package/fesm2022/fundamental-ngx-platform-messages-shared.mjs.map +0 -1
  61. package/message-view/README.md +0 -88
  62. package/types/fundamental-ngx-platform-message-view.d.ts +0 -70
  63. package/types/fundamental-ngx-platform-messages-shared.d.ts +0 -306
@@ -1 +0,0 @@
1
- {"version":3,"file":"fundamental-ngx-platform-messages-shared.mjs","sources":["../../../../libs/platform/messages-shared/default-config.ts","../../../../libs/platform/messages-shared/directives/message-popover-form-item.directive.ts","../../../../libs/platform/messages-shared/utils.ts","../../../../libs/platform/messages-shared/components/message-popover-form-wrapper/message-popover-form-wrapper.component.ts","../../../../libs/platform/messages-shared/components/messages-list/messages-list.component.ts","../../../../libs/platform/messages-shared/components/messages-list/messages-list.component.html","../../../../libs/platform/messages-shared/message-list-shared.ts","../../../../libs/platform/messages-shared/platform-messages-shared.module.ts","../../../../libs/platform/messages-shared/fundamental-ngx-platform-messages-shared.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\n\nexport interface MessagePopoverErrorConfig {\n heading: string;\n description?: string;\n type: FormStates;\n}\n\nexport interface MessagePopoverConfig {\n /**\n * Errors object where key is error type and value is i18n string.\n */\n errors: Record<string, string | MessagePopoverErrorConfig>;\n}\n\nexport const FDP_MESSAGE_POPOVER_DEFAULT_CONFIG: MessagePopoverConfig = {\n errors: {\n email: 'platformMessagePopover.defaultErrors.email',\n max: 'platformMessagePopover.defaultErrors.max',\n maxlength: 'platformMessagePopover.defaultErrors.maxLength',\n min: 'platformMessagePopover.defaultErrors.min',\n minlength: 'platformMessagePopover.defaultErrors.minLength',\n pattern: 'platformMessagePopover.defaultErrors.pattern',\n required: 'platformMessagePopover.defaultErrors.required',\n requiredTrue: 'platformMessagePopover.defaultErrors.requiredTrue'\n }\n};\n\nexport const FDP_MESSAGE_POPOVER_CONFIG = new InjectionToken<MessagePopoverConfig>('FdpMessagePopoverConfig');\n","import { Directive, ElementRef, Input, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MessagePopoverConfig } from '../default-config';\n\n@Directive({\n selector: '[fdpMessagePopoverFormItem]'\n})\nexport class MessagePopoverFormItemDirective {\n /** Form item name. */\n @Input('fdpMessagePopoverFormItem')\n label: string;\n\n /** Error type definition. */\n @Input()\n errorTypes: MessagePopoverConfig['errors'];\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n @Optional() public readonly control: NgControl\n ) {}\n}\n","import { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { ObjectStatus } from '@fundamental-ngx/core/object-status';\nimport { MessagePopoverState } from './models/message-popover.interface';\n\n/**\n * Converts Object Status into Message Popover State\n * @param status Object status\n * @returns Message Popover State.\n */\nexport function convertFormStateToMessagePopoverState(state: FormStates): MessagePopoverState {\n switch (state) {\n case 'error':\n return 'negative';\n case 'warning':\n return 'critical';\n case 'default':\n return 'neutral';\n default:\n return state;\n }\n}\n\n/**\n * Converts Form State into Object status type.\n * @param type Form state.\n * @returns `ObjectStatus` type.\n */\nexport function convertFormState(type: FormStates): ObjectStatus {\n switch (type) {\n case 'success':\n return 'positive';\n case 'error':\n return 'negative';\n case 'warning':\n return 'critical';\n case 'information':\n return 'informative';\n default:\n return 'neutral';\n }\n}\n\n/**\n * Maps message type to icon name.\n * @param type Message type (error, success, warning, information, default).\n * @returns Icon name for the given message type.\n */\nexport function getIconForMessageType(type: string): string {\n switch (type) {\n case 'error':\n return 'error';\n case 'success':\n return 'sys-enter-2';\n case 'warning':\n return 'alert';\n case 'information':\n return 'information';\n default:\n return 'sys-help-2';\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, ControlContainer, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n FormFieldErrorDirectiveContext,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\nimport { Subject, Subscription, filter, startWith, switchMap, zip } from 'rxjs';\nimport { FDP_MESSAGE_POPOVER_CONFIG, MessagePopoverConfig, MessagePopoverErrorConfig } from '../../default-config';\nimport { MessagePopoverFormItemDirective } from '../../directives/message-popover-form-item.directive';\nimport {\n MessagePopoverEntry,\n MessagePopoverErrorGroup,\n MessagePopoverErrorText\n} from '../../models/message-popover-entry.interface';\nimport { MessagePopoverWrapper } from '../../models/message-popover-wrapper.interface';\nimport { MessagePopover } from '../../models/message-popover.interface';\nimport { convertFormState } from '../../utils';\n\nexport type MessagePopoverForm = NgForm | FormGroupDirective;\n\n@Component({\n selector: 'fdp-message-popover-form-wrapper',\n template: `<ng-content></ng-content>`,\n exportAs: 'messagePopoverWrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class MessagePopoverFormWrapperComponent implements MessagePopoverWrapper, AfterViewInit, OnDestroy {\n /** @hidden */\n @ContentChildren(ControlContainer, { descendants: true })\n private readonly _projectedForm: QueryList<MessagePopoverForm>;\n\n /** @hidden */\n @ContentChildren(FD_FORM_FIELD_CONTROL, { descendants: true })\n private readonly _projectedFormFieldControls!: QueryList<PlatformFormFieldControl>;\n\n /** @hidden */\n @ContentChildren(MessagePopoverFormItemDirective, { descendants: true })\n private readonly _directiveItems!: QueryList<MessagePopoverFormItemDirective>;\n\n /** Message Popover instance. */\n messagePopover$ = new Subject<MessagePopover>();\n\n /**\n * User-passed forms.\n */\n @Input()\n set forms(forms: MessagePopoverForm | MessagePopoverForm[]) {\n if (!forms) {\n return;\n }\n if (!Array.isArray(forms)) {\n forms = [forms];\n }\n this._ngForms = forms;\n this._startListeningForErrors();\n }\n\n /** User-passed form fields. */\n @Input()\n set formFields(value: PlatformFormFieldControl[]) {\n this._formFields = value;\n this._listenToFormFieldErrors(value);\n }\n\n get formFields(): PlatformFormFieldControl[] {\n return this._formFields;\n }\n\n /**\n * Error models Signal. Emitted when form submitted and contains invalid fields.\n */\n readonly errors$ = signal<MessagePopoverErrorGroup[]>([]);\n\n /** @hidden */\n private _formFields: PlatformFormFieldControl[] = [];\n\n /** @hidden */\n private _formErrorsSubscription: Subscription | undefined;\n\n /** @hidden */\n private _ngForms: (NgForm | FormGroupDirective)[] = [];\n\n /** @hidden */\n private _formItemErrorsSubscription = new Subscription();\n\n /** @hidden */\n private _formSubmitted = false;\n\n /** @hidden */\n constructor(\n private readonly _destroyRef: DestroyRef,\n @Inject(FDP_MESSAGE_POPOVER_CONFIG) private readonly _config: MessagePopoverConfig\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n // Forms are passed via input property.\n if (this._ngForms.length > 0) {\n return;\n }\n this._projectedForm?.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._ngForms = this._projectedForm.toArray();\n this._startListeningForErrors();\n });\n }\n\n /**\n * Sets Message Popover component instance.\n */\n setMessagePopover(messagePopover: MessagePopover): void {\n this.messagePopover$.next(messagePopover);\n // this.messagePopover = messagePopover;\n }\n\n /**\n * Programmatically add new form to array of forms.\n * @param forms\n */\n addForms(forms: MessagePopoverForm | MessagePopoverForm[]): void {\n const formsArray = Array.isArray(forms) ? forms : [forms];\n this._ngForms.push(...formsArray);\n this._startListeningForErrors();\n }\n\n /**\n * Programmatically add new form fields to array of listened form fields.\n * @param formFields\n */\n addFormFields(formFields: PlatformFormFieldControl[]): void {\n this._formFields.push(...formFields);\n this._listenToFormFieldErrors(this._formFields);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._formItemErrorsSubscription.unsubscribe();\n }\n\n /**\n * @hidden\n * Listens to the form submission and collects form control errors.\n */\n private _startListeningForErrors(): void {\n if (!this._ngForms) {\n return;\n }\n this._formErrorsSubscription?.unsubscribe();\n this.errors$.set([]);\n\n const formSubmitEvents = this._ngForms.map((form) =>\n form.ngSubmit.pipe(\n switchMap(() =>\n form.statusChanges!.pipe(\n startWith(form.status),\n filter((status: string) => status.toLowerCase() !== 'pending')\n )\n )\n )\n );\n\n this._formErrorsSubscription = zip(...formSubmitEvents)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formSubmitted = true;\n const errors =\n this._directiveItems.length > 0 ? this._collectPlainFormData() : this._collectAdvancedFormData();\n\n this.errors$.set(errors);\n });\n\n this._listenToFormFieldErrors(this._projectedFormFieldControls.toArray());\n\n this._projectedFormFieldControls?.changes.subscribe(() => {\n this._listenToFormFieldErrors(this._projectedFormFieldControls.toArray());\n });\n }\n\n /** @hidden */\n private _listenToFormFieldErrors(fields: PlatformFormFieldControl[]): void {\n this._formItemErrorsSubscription.unsubscribe();\n\n this._formItemErrorsSubscription = new Subscription();\n\n fields?.forEach((field) => {\n this._formItemErrorsSubscription.add(\n field.formField?.errorsChange$.subscribe(() => {\n if (!this._formSubmitted) {\n return;\n }\n const errors =\n this._directiveItems.length > 0\n ? this._collectPlainFormData()\n : this._collectAdvancedFormData();\n this.errors$.set(errors);\n })\n );\n });\n }\n\n /** @hidden */\n private _collectPlainFormData(): MessagePopoverErrorGroup[] {\n const errors: MessagePopoverErrorGroup[] = [\n {\n errors: []\n }\n ];\n\n const fields = this._directiveItems.toArray();\n\n this._ngForms.forEach((form) => {\n Object.keys(form.form.controls).forEach((controlName) => {\n const control = form.form.get(controlName);\n const field = fields.find((formField) => formField.control?.name === controlName);\n\n if (!control?.errors || !field) {\n return;\n }\n\n const configErrors = Object.keys(this._config.errors);\n\n Object.keys(control.errors)\n .filter((error) => configErrors.includes(error))\n .forEach((errorKey) => {\n const errorObj = control.errors![errorKey];\n\n const errorTextModel = this._getConfigErrorModel(errorKey, field.errorTypes);\n const errorConfig = field?.errorTypes ? field?.errorTypes[errorKey] : null;\n const errorState =\n errorConfig && this._isAdvancedError(errorConfig) && errorConfig.type\n ? errorConfig.type\n : 'error';\n const error: MessagePopoverEntry = {\n name: controlName,\n type: errorTextModel.type,\n state: convertFormState(errorState),\n fieldName: field?.label ?? '',\n element: field?.elementRef,\n heading: {\n type: 'string',\n error: errorObj,\n message: errorTextModel.heading\n },\n description: {\n type: 'string',\n error: errorObj,\n message: errorTextModel.description\n },\n errors: control!.errors\n };\n\n errors[0].errors.push(error);\n });\n });\n });\n\n return errors;\n }\n\n /** @hidden */\n private _collectAdvancedFormData(): MessagePopoverErrorGroup[] {\n let errors: MessagePopoverErrorGroup[] = [];\n const fields = this.formFields.length > 0 ? this.formFields : this._projectedFormFieldControls.toArray();\n\n /**\n * Iterates over form controls to collect their errors.\n * @param form Form Group or a collection of Form Groups.\n */\n const iterateOverForm = (form: FormGroup | FormGroup[]): MessagePopoverErrorGroup[] => {\n if (Array.isArray(form)) {\n form.forEach((formGroup) => {\n errors = iterateOverForm(formGroup);\n });\n return errors;\n }\n Object.keys(form.controls).forEach((controlName) => {\n const control = form.get(controlName);\n const field = fields.find((formField) => formField.id === controlName);\n\n if (control instanceof FormGroup) {\n errors = iterateOverForm(control);\n }\n\n if (!control?.errors || !field) {\n return;\n }\n\n Object.keys(control.errors).forEach((errorKey) => {\n const errorDirective = field.formField?.groupedErrors.find(\n (groupedError) => groupedError.directive.error === errorKey\n );\n\n const groupName = this._getGroupName(field?.formField);\n const error = this._getErrorModel(\n controlName,\n groupName,\n control,\n field,\n errorKey,\n errorDirective,\n control.errors![errorKey]\n );\n\n let errorGroupIndex = errors.findIndex((errorGroup) => errorGroup.group === groupName);\n\n if (errorGroupIndex === -1) {\n errorGroupIndex =\n errors.push({\n group: groupName,\n errors: []\n }) - 1;\n }\n\n const group = errors[errorGroupIndex];\n\n group.errors.push(error);\n });\n });\n\n return errors;\n };\n\n return iterateOverForm(this._ngForms.map((form) => form.form));\n }\n\n /**\n * @hidden\n * Creates error model\n */\n private _getErrorModel(\n controlName: string,\n groupName: string,\n control: AbstractControl,\n field: PlatformFormFieldControl,\n errorKey: string,\n errorDirective?: FormFieldErrorDirectiveContext,\n error?: any\n ): MessagePopoverEntry {\n let state: FormStates = 'error';\n const configError = this._config.errors[errorKey];\n\n if (errorDirective?.directive.type) {\n state = errorDirective.directive.type;\n } else if (this._isAdvancedError(configError)) {\n state = configError.type;\n }\n\n return {\n name: controlName,\n type: state,\n state: convertFormState(state),\n group: groupName,\n fieldName: field?.formField?.label ?? '',\n heading: this._getErrorText(field, errorDirective, 'heading', errorKey, error),\n description: this._getErrorText(field, errorDirective, 'description', errorKey, error),\n errors: control!.errors,\n formField: field,\n element: field?.elementRef\n };\n }\n\n /**\n * @hidden\n * Creates error text based on the type of the error.\n * @param field Form Field Control.\n * @param errorDirective Optional Error directive\n * @param section Section where text should be rendered.\n * @param errorKey\n * @param error\n */\n private _getErrorText(\n field: PlatformFormFieldControl,\n errorDirective: Nullable<FormFieldErrorDirectiveContext>,\n section: 'heading' | 'description' = 'heading',\n errorKey: string,\n error?: any\n ): MessagePopoverErrorText {\n const errorTextObj: MessagePopoverErrorText = {\n error: errorDirective?.error,\n type: errorDirective?.directive ? 'directive' : field?.formField?.i18Strings ? 'templateRef' : 'string'\n };\n\n if (errorTextObj.type === 'string') {\n const errorTextModel = this._getConfigErrorModel(errorKey);\n\n errorTextObj.error = error;\n errorTextObj.message = errorTextModel[section];\n return errorTextObj;\n }\n\n if (errorDirective?.directive) {\n errorTextObj.message =\n section === 'heading'\n ? (errorDirective.directive._headingTemplateRef ?? errorDirective.directive._descriptionTemplateRef)\n : errorDirective.directive._descriptionTemplateRef;\n return errorTextObj;\n }\n\n errorTextObj.message = field?.formField?.i18Strings ?? null;\n return errorTextObj;\n }\n\n /** @hidden */\n private _getGroupName(formField: Nullable<PlatformFormField>): string {\n const parts: string[] = [];\n\n if (formField?.formGroupContainer?.mainTitle) {\n parts.push(formField.formGroupContainer.mainTitle);\n }\n\n if (formField?.formFieldGroup?.label) {\n parts.push(formField.formFieldGroup.label);\n }\n\n return parts.join(', ');\n }\n\n /** @hidden */\n private _getConfigErrorModel(\n errorKey: string,\n customErrorTypes?: MessagePopoverConfig['errors']\n ): MessagePopoverErrorConfig {\n const configError =\n customErrorTypes && customErrorTypes[errorKey] ? customErrorTypes[errorKey] : this._config.errors[errorKey];\n const isPlainError = !this._isAdvancedError(configError);\n const errorType = isPlainError ? 'error' : configError.type;\n const headingMessage = isPlainError ? configError : configError.heading;\n const descriptionMessage = isPlainError ? undefined : configError.description;\n\n return {\n type: errorType,\n heading: headingMessage,\n description: descriptionMessage\n };\n }\n\n /** @hidden */\n private _isAdvancedError(error: string | MessagePopoverErrorConfig): error is MessagePopoverErrorConfig {\n return !!error && typeof error !== 'string';\n }\n}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ClickedDirective, Nullable, TabbableElementService, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { ObjectStatusComponent } from '@fundamental-ngx/core/object-status';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TextComponent } from '@fundamental-ngx/core/text';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { debounceTime } from 'rxjs';\nimport { MessagePopoverEntry, MessagePopoverErrorGroup } from '../../models/message-popover-entry.interface';\nimport { getIconForMessageType } from '../../utils';\n\nconst ANIMATION_EASING = 'cubic-bezier(0, 0, 0.2, 1)';\nconst ANIMATION_DURATION = 100;\n\n@Component({\n selector: 'fdp-messages-list',\n templateUrl: './messages-list.component.html',\n styleUrl: './messages-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [TabbableElementService, FdTranslatePipe],\n host: {\n class: 'fd-message-popover__view-container'\n },\n imports: [\n NgTemplateOutlet,\n CdkScrollable,\n ScrollbarDirective,\n ListModule,\n ObjectStatusComponent,\n LinkComponent,\n FdTranslatePipe,\n ClickedDirective,\n TextComponent\n ]\n})\nexport class MessagesListComponent implements AfterViewInit {\n /** Current Message Popover screen. Can be either `list` or `details`. */\n @Input()\n set currentScreen(value: 'list' | 'details') {\n const prev = this._currentScreen;\n this._currentScreen = value;\n if (prev && prev !== value) {\n this._animateScreenTransition(value);\n }\n }\n get currentScreen(): 'list' | 'details' {\n return this._currentScreen;\n }\n\n /** Filtered errors to render. */\n @Input()\n filteredErrors: MessagePopoverErrorGroup[];\n\n /** Current error entry. Used for details view. */\n @Input()\n currentEntry: Nullable<MessagePopoverEntry>;\n\n /** Event emitted when user clicks on error entry containing additional description. */\n @Output()\n openDetails = new EventEmitter<MessagePopoverEntry>();\n\n /** Event emitted when user clicks on error entry and item's element should be focused. */\n @Output()\n focusItem = new EventEmitter<MessagePopoverEntry>();\n\n /** Event emitted when user clicks on the field link to focus on the field itself. */\n @Output()\n closePopover = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild('listView', { read: ElementRef })\n protected listView: ElementRef;\n\n /** @hidden */\n @ViewChild('detailsView', { read: ElementRef })\n protected detailsView: ElementRef;\n\n /** @hidden */\n @ViewChild('listSection', { read: ElementRef })\n protected listSection: ElementRef;\n\n /** @hidden */\n @ViewChild('detailsSection', { read: ElementRef })\n protected detailsSection: ElementRef;\n\n /** @hidden */\n private _currentScreen: 'list' | 'details' = 'list';\n\n /** @hidden */\n private _activeListElement: Nullable<HTMLElement> = null;\n\n /** @hidden */\n private _listAnimation: Animation | null = null;\n\n /** @hidden */\n private _detailsAnimation: Animation | null = null;\n\n /** @hidden */\n private readonly _translatePipe = inject(FdTranslatePipe);\n\n /** @hidden */\n private readonly _additionalInfoText = this._translatePipe.transform('platformMessageView.additionalInformation');\n\n /** @hidden */\n constructor(\n private readonly _destroyRef: DestroyRef,\n private readonly _tabbableService: TabbableElementService,\n @Inject(DOCUMENT) private readonly _document: Document\n ) {\n this._destroyRef.onDestroy(() => {\n this._listAnimation?.cancel();\n this._listAnimation = null;\n this._detailsAnimation?.cancel();\n this._detailsAnimation = null;\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n resizeObservable(this.detailsView.nativeElement)\n .pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const { height } = this.detailsView.nativeElement.getBoundingClientRect();\n this.listSection.nativeElement.style.minHeight = `${height}px`;\n });\n }\n\n /** @hidden */\n showDetails(entry: MessagePopoverEntry): void {\n this._activeListElement = this._document.activeElement as HTMLElement;\n if (!entry.description.message) {\n this._focusElement(undefined, entry);\n return;\n }\n this.currentScreen = 'details';\n this.openDetails.emit(entry);\n }\n\n /** @hidden */\n _focusElement(event?: MouseEvent | KeyboardEvent, item?: MessagePopoverEntry): void {\n if (!item?.element?.nativeElement) {\n return;\n }\n event?.stopImmediatePropagation();\n this.closePopover.emit(false);\n this.focusItem.emit(item);\n setTimeout(() => {\n const tabbableElement = this._tabbableService.getTabbableElement(item.element?.nativeElement);\n tabbableElement?.focus();\n });\n }\n\n /** @hidden Map message type to icon name */\n protected getIconForType(type: string): string {\n return getIconForMessageType(type);\n }\n\n /** @hidden Get heading text for fd-text component */\n protected getHeadingText(item: MessagePopoverEntry): string {\n if (item.heading.type === 'string' && typeof item.heading.message === 'string') {\n return item.heading.message;\n }\n return '';\n }\n\n /** @hidden Get announcement text for screen reader when navigating to details */\n protected getAnnouncementText(entry: MessagePopoverEntry): string {\n let headingText = '';\n if (entry.heading.type === 'string' && entry.heading.message) {\n headingText = typeof entry.heading.message === 'string' ? entry.heading.message : '';\n }\n const additionalInfoText = this._additionalInfoText();\n return headingText ? `${headingText}. ${additionalInfoText}` : '';\n }\n\n /** @hidden Animate the transition between list and details screens. */\n private _animateScreenTransition(screen: 'list' | 'details'): void {\n const listEl = this.listSection?.nativeElement;\n const detailsEl = this.detailsSection?.nativeElement;\n\n if (!listEl || !detailsEl) {\n return;\n }\n\n this._listAnimation?.cancel();\n this._detailsAnimation?.cancel();\n\n if (screen === 'details') {\n this._animateListToDetails(listEl, detailsEl);\n } else {\n this._animateDetailsToList(listEl, detailsEl);\n }\n }\n\n /** @hidden Slide list out left, details in from right. */\n private _animateListToDetails(listEl: HTMLElement, detailsEl: HTMLElement): void {\n if (typeof listEl.animate !== 'function') {\n this._focusDetailsView();\n return;\n }\n\n this._listAnimation = listEl.animate(\n [\n { transform: 'translateX(0)', opacity: 1 },\n { transform: 'translateX(-50px)', opacity: 0 }\n ],\n { duration: ANIMATION_DURATION, easing: ANIMATION_EASING, fill: 'forwards' }\n );\n\n this._detailsAnimation = detailsEl.animate(\n [\n { transform: 'translateX(50px)', opacity: 0 },\n { transform: 'translateX(0)', opacity: 1 }\n ],\n { duration: ANIMATION_DURATION, easing: ANIMATION_EASING, fill: 'forwards' }\n );\n\n this._detailsAnimation.finished\n .then(() => {\n this._detailsAnimation = null;\n this._focusDetailsView();\n })\n .catch(() => {\n this._detailsAnimation = null;\n });\n }\n\n /** @hidden Slide details out right, list in from left. */\n private _animateDetailsToList(listEl: HTMLElement, detailsEl: HTMLElement): void {\n if (typeof listEl.animate !== 'function') {\n return;\n }\n\n this._detailsAnimation = detailsEl.animate(\n [\n { transform: 'translateX(0)', opacity: 1 },\n { transform: 'translateX(50px)', opacity: 0 }\n ],\n { duration: ANIMATION_DURATION, easing: ANIMATION_EASING, fill: 'forwards' }\n );\n\n this._listAnimation = listEl.animate(\n [\n { transform: 'translateX(-50px)', opacity: 0 },\n { transform: 'translateX(0)', opacity: 1 }\n ],\n { duration: ANIMATION_DURATION, easing: ANIMATION_EASING, fill: 'forwards' }\n );\n\n this._listAnimation.finished\n .then(() => {\n this._listAnimation = null;\n if (this._activeListElement) {\n this._activeListElement.focus();\n this._activeListElement = null;\n }\n })\n .catch(() => {\n this._listAnimation = null;\n });\n }\n\n /** @hidden Focus the first interactive element in the details view. */\n private _focusDetailsView(): void {\n if (!this.detailsView?.nativeElement) {\n return;\n }\n\n // Try to find the first tabbable element in the details view\n const firstTabbable = this._tabbableService.getTabbableElement(this.detailsView.nativeElement);\n\n if (firstTabbable) {\n firstTabbable.focus();\n }\n }\n}\n","<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<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.description.type === 'directive'\n ? directiveDescription\n : item.description.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n<div class=\"fd-message-view\">\n <!-- Screen reader announcement region for details view navigation -->\n <div aria-live=\"assertive\" aria-atomic=\"true\" class=\"fd-message-view__sr-only\">\n @if (currentScreen === 'details' && currentEntry) {\n {{ getAnnouncementText(currentEntry) }}\n }\n </div>\n <section\n #listSection\n class=\"fd-message-view__list\"\n [class.fd-message-view__list--hidden]=\"currentScreen === 'details'\"\n [attr.inert]=\"currentScreen === 'details' ? '' : null\"\n [attr.aria-hidden]=\"currentScreen === 'details'\"\n tabindex=\"-1\"\n fd-scrollbar\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n @for (group of filteredErrors; track group) {\n @if (group.group) {\n <li fd-list-group-header>\n <span fd-list-title>{{ group.group }}</span>\n </li>\n }\n @for (item of group.errors; track item; let i = $index) {\n <li\n fd-list-item\n [tabindex]=\"i === 0 ? 0 : -1\"\n [byline]=\"true\"\n [counter]=\"item.aggregatedMessages!\"\n (fdkClicked)=\"showDetails(item)\"\n >\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"getIconForType(item.type)\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n @if (item.heading.type === 'string' && item.heading.message) {\n <fd-text\n [text]=\"getHeadingText(item)\"\n [maxLines]=\"3\"\n [expandable]=\"true\"\n (fdkClicked)=\"$event.stopPropagation()\"\n ></fd-text>\n } @else {\n <span fd-list-subline>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n }\n </ng-template>\n @if (item.element && !!item.description.message) {\n <span fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (fdkClicked)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n } @else {\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 }\n </li>\n }\n }\n </ul>\n </section>\n <section\n #detailsSection\n class=\"fd-message-view__details\"\n [class.fd-message-view__details--visible]=\"currentScreen === 'details'\"\n [attr.inert]=\"currentScreen === 'list' ? '' : null\"\n [attr.aria-hidden]=\"currentScreen === 'list'\"\n >\n <div #detailsView>\n @if (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]=\"getIconForType(currentEntry.type)\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n @if (currentEntry.subtitle) {\n <span class=\"fd-message-view__details-subtitle\">\n {{ currentEntry.subtitle }}\n </span>\n }\n @if (currentEntry.description.message) {\n <span class=\"fd-message-view__details-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n }\n @if (currentEntry.link) {\n <span class=\"fd-message-view__details-link\">\n @if (currentEntry.link.href) {\n <a\n fd-link\n [attr.href]=\"currentEntry.link.href\"\n [attr.target]=\"currentEntry.link.target || '_blank'\"\n >\n {{ currentEntry.link.text }}\n </a>\n } @else {\n <a fd-link tabindex=\"0\" (fdkClicked)=\"currentEntry.link.callback?.()\">\n {{ currentEntry.link.text }}\n </a>\n }\n </span>\n }\n }\n </div>\n </section>\n</div>\n","import { EventEmitter, WritableSignal, computed, signal } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable, countBy } from '@fundamental-ngx/cdk/utils';\nimport { getFormState } from '@fundamental-ngx/platform/form';\nimport {\n MessagePopoverEntry,\n MessagePopoverError,\n MessagePopoverErrorGroup\n} from './models/message-popover-entry.interface';\nimport { MessagePopoverWrapper } from './models/message-popover-wrapper.interface';\nimport { MessagePopover, MessagePopoverState } from './models/message-popover.interface';\nimport { convertFormState, convertFormStateToMessagePopoverState } from './utils';\n\n/**\n * Abstract base class for message list components (MessagePopover and MessageView).\n * Contains shared logic for managing error states, filtering, and navigation between list/detail views.\n */\nexport abstract class MessageListShared implements MessagePopover {\n /** Event emits when user clicks on error entry and item's element needs to be focused. */\n focusItem = new EventEmitter<MessagePopoverEntry>();\n\n /** Current message popover screen. Can be `list` or `details`. */\n currentScreen: 'list' | 'details' = 'list';\n\n /** Current error entry. */\n currentEntry: Nullable<MessagePopoverEntry> = null;\n\n /** @hidden */\n _currentErrorType: WritableSignal<MessagePopoverError['group']> = signal('all');\n\n /** @hidden */\n _errorTypes$ = computed<MessagePopoverError[]>(() => {\n const countedErrors = this.countedErrors$();\n const errorTypes = Object.keys(countedErrors) as FormStates[];\n return errorTypes.map((errorType) => ({\n group: errorType,\n count: countedErrors[errorType],\n state: convertFormState(errorType)\n }));\n });\n\n /** @hidden */\n _priorityStateItemsCount$ = computed(() => this.countedErrors$()[this._priorityFormState$()!] || 0);\n\n /** @hidden */\n _priorityFormState$ = computed<FormStates>(() => {\n const countedErrors = this.countedErrors$();\n const errorTypes = Object.keys(countedErrors) as FormStates[];\n return getFormState(errorTypes);\n });\n\n /** @hidden */\n _priorityState$ = computed<Nullable<MessagePopoverState>>(() =>\n convertFormStateToMessagePopoverState(this._priorityFormState$())\n );\n\n /** @hidden */\n readonly _filteredErrors$ = computed(() => {\n const groupedErrors = this.groupedErrors$();\n const errorType = this._currentErrorType();\n\n if (errorType === 'all') {\n return groupedErrors;\n }\n\n const filteredErrors: MessagePopoverErrorGroup[] = [];\n groupedErrors.forEach((group) => {\n const errors = group.errors.filter((error) => error.type === errorType);\n\n if (errors.length === 0) {\n return;\n }\n\n filteredErrors.push({\n group: group.group,\n errors\n });\n });\n\n return filteredErrors;\n });\n\n /** @hidden */\n protected readonly groupedErrors$ = computed(() => this.wrapper$()?.errors$() || []);\n\n /** @hidden */\n protected readonly wrapper$ = signal<Nullable<MessagePopoverWrapper>>(null);\n\n /** @hidden */\n protected readonly countedErrors$ = computed(() => {\n const allErrors = this.groupedErrors$().flatMap((group) => group.errors);\n return countBy(allErrors, 'type');\n });\n\n /** @hidden */\n showList(): void {\n this.currentScreen = 'list';\n this.currentEntry = null;\n }\n\n /** @hidden */\n showDetails(entry: MessagePopoverEntry): void {\n this.currentScreen = 'details';\n this.currentEntry = entry;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { mergeWith } from '@fundamental-ngx/cdk/utils';\nimport { MessagePopoverFormWrapperComponent } from './components/message-popover-form-wrapper/message-popover-form-wrapper.component';\nimport { MessagesListComponent } from './components/messages-list/messages-list.component';\nimport { FDP_MESSAGE_POPOVER_CONFIG, FDP_MESSAGE_POPOVER_DEFAULT_CONFIG, MessagePopoverConfig } from './default-config';\nimport { MessagePopoverFormItemDirective } from './directives/message-popover-form-item.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [MessagePopoverFormWrapperComponent, MessagesListComponent, MessagePopoverFormItemDirective],\n exports: [MessagePopoverFormWrapperComponent, MessagesListComponent, MessagePopoverFormItemDirective],\n providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: FDP_MESSAGE_POPOVER_DEFAULT_CONFIG\n }\n ]\n})\nexport class PlatformMessagesSharedModule {\n /**\n * Method allows users to apply custom configuration.\n * @param config Object containing error definitions.\n */\n static withConfig(config: MessagePopoverConfig): ModuleWithProviders<PlatformMessagesSharedModule> {\n const customConfig = mergeWith(FDP_MESSAGE_POPOVER_DEFAULT_CONFIG, config, (obj, src) => {\n if (typeof obj === 'object' && !Array.isArray(obj)) {\n return Object.assign(obj, src);\n } else if (Array.isArray(obj)) {\n return obj.concat(src);\n } else {\n return src;\n }\n });\n\n return {\n ngModule: PlatformMessagesSharedModule,\n providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: customConfig\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- # Message View Component
2
-
3
- The `fdp-message-view` component is a message display component for showing messages, notifications, or validation errors in a dialog format.
4
-
5
- ## Usage
6
-
7
- ### Basic Example
8
-
9
- ```typescript
10
- import { Component, signal, viewChild } from '@angular/core';
11
- import { MessageViewComponent, MessagePopoverErrorGroup } from '@fundamental-ngx/platform/message-view';
12
-
13
- @Component({
14
- selector: 'app-example',
15
- template: `
16
- <fdp-message-view [messages]="messages()"> </fdp-message-view>
17
- <button (click)="messageView()?.open()">Show Messages</button>
18
- `,
19
- imports: [MessageViewComponent]
20
- })
21
- export class ExampleComponent {
22
- readonly messageView = viewChild(MessageViewComponent);
23
-
24
- messages = signal<MessagePopoverErrorGroup[]>([
25
- {
26
- group: 'Errors',
27
- errors: [
28
- {
29
- type: 'error',
30
- state: 'negative',
31
- heading: { type: 'string', message: 'Invalid Input' },
32
- description: { type: 'string', message: 'Please provide valid data.' },
33
- name: 'input1',
34
- fieldName: 'Input Field',
35
- errors: null
36
- }
37
- ]
38
- },
39
- {
40
- group: 'Information',
41
- errors: [
42
- {
43
- type: 'information',
44
- state: 'informative',
45
- heading: { type: 'string', message: 'Help Available' },
46
- description: { type: 'string', message: 'Click for more details.' },
47
- name: 'help1',
48
- fieldName: 'Help Section',
49
- errors: null
50
- }
51
- ]
52
- }
53
- ]);
54
- }
55
- ```
56
-
57
- ## Key Differences from Message Popover
58
-
59
- - **Display**: Opens in a dialog instead of a popover
60
- - **API**: Uses `DialogService` internally
61
- - **Usage**: Call `open()` and `close()` methods programmatically
62
-
63
- ## API
64
-
65
- ### Inputs
66
-
67
- - `messages: MessagePopoverErrorGroup[]` - Direct messages to display
68
- - `title: string` - Title for the dialog header
69
- - `detailsTitle: string` - Title for the details view
70
- - `mobile: boolean` - Whether the dialog should be opened in mobile mode
71
- - `width: string` - Width of the dialog when not in mobile mode (default: `'24rem'`)
72
- - `height: string` - Height of the dialog when not in mobile mode (default: `'auto'`)
73
- - `resizable: boolean` - Whether the dialog should be resizable when not in mobile mode (default: `true`)
74
-
75
- ### Outputs
76
-
77
- - `focusItem: EventEmitter<MessagePopoverEntry>` - Emits when an item should be focused
78
-
79
- ### Methods
80
-
81
- - `open(): void` - Opens the message view dialog
82
- - `close(): void` - Closes the message view dialog
83
-
84
- ## Import Path
85
-
86
- ```typescript
87
- import { MessageViewComponent } from '@fundamental-ngx/platform/message-view';
88
- ```
@@ -1,70 +0,0 @@
1
- import { MessageListShared, MessagePopoverEntry, MessagePopoverErrorGroup } from '@fundamental-ngx/platform/messages-shared';
2
- export * from '@fundamental-ngx/platform/messages-shared';
3
- import * as _angular_core from '@angular/core';
4
- import { OnDestroy, EventEmitter, Injector } from '@angular/core';
5
- import { Nullable } from '@fundamental-ngx/cdk/utils';
6
- import { DialogService, DialogRef } from '@fundamental-ngx/core/dialog';
7
-
8
- declare class MessageViewComponent extends MessageListShared implements OnDestroy {
9
- /** Event emits when user clicks on error entry and item's element needs to be focused. */
10
- focusItem: EventEmitter<MessagePopoverEntry>;
11
- /**
12
- * Messages to display in the message view.
13
- */
14
- readonly messages: _angular_core.InputSignal<MessagePopoverErrorGroup[]>;
15
- /**
16
- * Title to display in the message view dialog header.
17
- */
18
- readonly title: _angular_core.InputSignal<string>;
19
- /**
20
- * Title to display in the message view dialog header when viewing message details.
21
- */
22
- readonly detailsTitle: _angular_core.InputSignal<string>;
23
- /**
24
- * Whether the message view dialog should be opened in mobile mode.
25
- */
26
- readonly mobile: _angular_core.InputSignalWithTransform<boolean, unknown>;
27
- /**
28
- * Width of the dialog when not in mobile mode.
29
- * @default '24rem'
30
- */
31
- readonly width: _angular_core.InputSignal<string>;
32
- /**
33
- * Height of the dialog when not in mobile mode.
34
- * @default 'auto'
35
- */
36
- readonly height: _angular_core.InputSignal<string>;
37
- /**
38
- * Whether the dialog should be resizable when not in mobile mode.
39
- * @default true
40
- */
41
- readonly resizable: _angular_core.InputSignalWithTransform<boolean, unknown>;
42
- /** @hidden */
43
- protected readonly dialogService: DialogService;
44
- /** @hidden */
45
- protected readonly injector: Injector;
46
- /** @hidden */
47
- protected dialogRef: Nullable<DialogRef>;
48
- /** @hidden */
49
- protected readonly groupedErrors$: _angular_core.InputSignal<MessagePopoverErrorGroup[]>;
50
- /** Opens the dialog. */
51
- open(): void;
52
- /** Closes the dialog. */
53
- close(): void;
54
- /** @hidden */
55
- ngOnDestroy(): void;
56
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageViewComponent, never>;
57
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MessageViewComponent, "fdp-message-view", never, { "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "detailsTitle": { "alias": "detailsTitle"; "required": false; "isSignal": true; }; "mobile": { "alias": "mobile"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; }, { "focusItem": "focusItem"; }, never, never, true, never>;
58
- }
59
-
60
- /**
61
- * @deprecated
62
- * Use direct imports of components.
63
- */
64
- declare class PlatformMessageViewModule {
65
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PlatformMessageViewModule, never>;
66
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<PlatformMessageViewModule, never, [typeof MessageViewComponent], [typeof MessageViewComponent]>;
67
- static ɵinj: _angular_core.ɵɵInjectorDeclaration<PlatformMessageViewModule>;
68
- }
69
-
70
- export { MessageViewComponent, PlatformMessageViewModule };
@@ -1,306 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, TemplateRef, ElementRef, EventEmitter, Signal, AfterViewInit, OnDestroy, DestroyRef, WritableSignal, ModuleWithProviders } from '@angular/core';
3
- import { ValidationErrors, NgForm, FormGroupDirective, NgControl } from '@angular/forms';
4
- import { PlatformFormFieldControl } from '@fundamental-ngx/platform/shared';
5
- import { Subject } from 'rxjs';
6
- import { FormStates } from '@fundamental-ngx/cdk/forms';
7
- import { ObjectStatus } from '@fundamental-ngx/core/object-status';
8
- import { Nullable, TabbableElementService } from '@fundamental-ngx/cdk/utils';
9
-
10
- interface MessagePopoverErrorConfig {
11
- heading: string;
12
- description?: string;
13
- type: FormStates;
14
- }
15
- interface MessagePopoverConfig {
16
- /**
17
- * Errors object where key is error type and value is i18n string.
18
- */
19
- errors: Record<string, string | MessagePopoverErrorConfig>;
20
- }
21
- declare const FDP_MESSAGE_POPOVER_DEFAULT_CONFIG: MessagePopoverConfig;
22
- declare const FDP_MESSAGE_POPOVER_CONFIG: InjectionToken<MessagePopoverConfig>;
23
-
24
- interface MessagePopoverEntry {
25
- heading: MessagePopoverErrorText;
26
- type: FormStates;
27
- state: ObjectStatus;
28
- group?: string;
29
- description: MessagePopoverErrorText;
30
- name: string;
31
- fieldName: string;
32
- errors: ValidationErrors | null;
33
- element?: ElementRef;
34
- formField?: PlatformFormFieldControl;
35
- link?: MessagePopoverEntryLink;
36
- subtitle?: string;
37
- aggregatedMessages?: number;
38
- }
39
- interface MessagePopoverError {
40
- group: FormStates | 'all';
41
- state: ObjectStatus;
42
- count: number;
43
- }
44
- interface MessagePopoverErrorText {
45
- message?: TemplateRef<any> | string | null;
46
- type: 'templateRef' | 'directive' | 'string';
47
- error?: any;
48
- }
49
- interface MessagePopoverErrorGroup {
50
- group?: string;
51
- errors: MessagePopoverEntry[];
52
- }
53
- interface MessagePopoverEntryLink {
54
- text: string;
55
- callback?: () => void;
56
- href?: string;
57
- target?: string;
58
- }
59
-
60
- type MessagePopoverState = Omit<ObjectStatus, 'informative' | 'neutral' | 'positive'> | 'information' | 'success' | 'neutral';
61
- interface MessagePopover {
62
- focusItem: EventEmitter<MessagePopoverEntry>;
63
- }
64
-
65
- interface MessagePopoverWrapper {
66
- formFields: PlatformFormFieldControl[];
67
- errors$: Signal<MessagePopoverErrorGroup[]>;
68
- setMessagePopover: (messagePopover: MessagePopover) => void;
69
- }
70
-
71
- type MessagePopoverForm = NgForm | FormGroupDirective;
72
- declare class MessagePopoverFormWrapperComponent implements MessagePopoverWrapper, AfterViewInit, OnDestroy {
73
- private readonly _destroyRef;
74
- private readonly _config;
75
- /** @hidden */
76
- private readonly _projectedForm;
77
- /** @hidden */
78
- private readonly _projectedFormFieldControls;
79
- /** @hidden */
80
- private readonly _directiveItems;
81
- /** Message Popover instance. */
82
- messagePopover$: Subject<MessagePopover>;
83
- /**
84
- * User-passed forms.
85
- */
86
- set forms(forms: MessagePopoverForm | MessagePopoverForm[]);
87
- /** User-passed form fields. */
88
- set formFields(value: PlatformFormFieldControl[]);
89
- get formFields(): PlatformFormFieldControl[];
90
- /**
91
- * Error models Signal. Emitted when form submitted and contains invalid fields.
92
- */
93
- readonly errors$: i0.WritableSignal<MessagePopoverErrorGroup[]>;
94
- /** @hidden */
95
- private _formFields;
96
- /** @hidden */
97
- private _formErrorsSubscription;
98
- /** @hidden */
99
- private _ngForms;
100
- /** @hidden */
101
- private _formItemErrorsSubscription;
102
- /** @hidden */
103
- private _formSubmitted;
104
- /** @hidden */
105
- constructor(_destroyRef: DestroyRef, _config: MessagePopoverConfig);
106
- /** @hidden */
107
- ngAfterViewInit(): void;
108
- /**
109
- * Sets Message Popover component instance.
110
- */
111
- setMessagePopover(messagePopover: MessagePopover): void;
112
- /**
113
- * Programmatically add new form to array of forms.
114
- * @param forms
115
- */
116
- addForms(forms: MessagePopoverForm | MessagePopoverForm[]): void;
117
- /**
118
- * Programmatically add new form fields to array of listened form fields.
119
- * @param formFields
120
- */
121
- addFormFields(formFields: PlatformFormFieldControl[]): void;
122
- /** @hidden */
123
- ngOnDestroy(): void;
124
- /**
125
- * @hidden
126
- * Listens to the form submission and collects form control errors.
127
- */
128
- private _startListeningForErrors;
129
- /** @hidden */
130
- private _listenToFormFieldErrors;
131
- /** @hidden */
132
- private _collectPlainFormData;
133
- /** @hidden */
134
- private _collectAdvancedFormData;
135
- /**
136
- * @hidden
137
- * Creates error model
138
- */
139
- private _getErrorModel;
140
- /**
141
- * @hidden
142
- * Creates error text based on the type of the error.
143
- * @param field Form Field Control.
144
- * @param errorDirective Optional Error directive
145
- * @param section Section where text should be rendered.
146
- * @param errorKey
147
- * @param error
148
- */
149
- private _getErrorText;
150
- /** @hidden */
151
- private _getGroupName;
152
- /** @hidden */
153
- private _getConfigErrorModel;
154
- /** @hidden */
155
- private _isAdvancedError;
156
- static ɵfac: i0.ɵɵFactoryDeclaration<MessagePopoverFormWrapperComponent, never>;
157
- static ɵcmp: i0.ɵɵComponentDeclaration<MessagePopoverFormWrapperComponent, "fdp-message-popover-form-wrapper", ["messagePopoverWrapper"], { "forms": { "alias": "forms"; "required": false; }; "formFields": { "alias": "formFields"; "required": false; }; }, {}, ["_projectedForm", "_projectedFormFieldControls", "_directiveItems"], ["*"], true, never>;
158
- }
159
-
160
- declare class MessagesListComponent implements AfterViewInit {
161
- private readonly _destroyRef;
162
- private readonly _tabbableService;
163
- private readonly _document;
164
- /** Current Message Popover screen. Can be either `list` or `details`. */
165
- set currentScreen(value: 'list' | 'details');
166
- get currentScreen(): 'list' | 'details';
167
- /** Filtered errors to render. */
168
- filteredErrors: MessagePopoverErrorGroup[];
169
- /** Current error entry. Used for details view. */
170
- currentEntry: Nullable<MessagePopoverEntry>;
171
- /** Event emitted when user clicks on error entry containing additional description. */
172
- openDetails: EventEmitter<MessagePopoverEntry>;
173
- /** Event emitted when user clicks on error entry and item's element should be focused. */
174
- focusItem: EventEmitter<MessagePopoverEntry>;
175
- /** Event emitted when user clicks on the field link to focus on the field itself. */
176
- closePopover: EventEmitter<boolean>;
177
- /** @hidden */
178
- protected listView: ElementRef;
179
- /** @hidden */
180
- protected detailsView: ElementRef;
181
- /** @hidden */
182
- protected listSection: ElementRef;
183
- /** @hidden */
184
- protected detailsSection: ElementRef;
185
- /** @hidden */
186
- private _currentScreen;
187
- /** @hidden */
188
- private _activeListElement;
189
- /** @hidden */
190
- private _listAnimation;
191
- /** @hidden */
192
- private _detailsAnimation;
193
- /** @hidden */
194
- private readonly _translatePipe;
195
- /** @hidden */
196
- private readonly _additionalInfoText;
197
- /** @hidden */
198
- constructor(_destroyRef: DestroyRef, _tabbableService: TabbableElementService, _document: Document);
199
- /** @hidden */
200
- ngAfterViewInit(): void;
201
- /** @hidden */
202
- showDetails(entry: MessagePopoverEntry): void;
203
- /** @hidden */
204
- _focusElement(event?: MouseEvent | KeyboardEvent, item?: MessagePopoverEntry): void;
205
- /** @hidden Map message type to icon name */
206
- protected getIconForType(type: string): string;
207
- /** @hidden Get heading text for fd-text component */
208
- protected getHeadingText(item: MessagePopoverEntry): string;
209
- /** @hidden Get announcement text for screen reader when navigating to details */
210
- protected getAnnouncementText(entry: MessagePopoverEntry): string;
211
- /** @hidden Animate the transition between list and details screens. */
212
- private _animateScreenTransition;
213
- /** @hidden Slide list out left, details in from right. */
214
- private _animateListToDetails;
215
- /** @hidden Slide details out right, list in from left. */
216
- private _animateDetailsToList;
217
- /** @hidden Focus the first interactive element in the details view. */
218
- private _focusDetailsView;
219
- static ɵfac: i0.ɵɵFactoryDeclaration<MessagesListComponent, never>;
220
- static ɵcmp: i0.ɵɵComponentDeclaration<MessagesListComponent, "fdp-messages-list", never, { "currentScreen": { "alias": "currentScreen"; "required": false; }; "filteredErrors": { "alias": "filteredErrors"; "required": false; }; "currentEntry": { "alias": "currentEntry"; "required": false; }; }, { "openDetails": "openDetails"; "focusItem": "focusItem"; "closePopover": "closePopover"; }, never, never, true, never>;
221
- }
222
-
223
- declare class MessagePopoverFormItemDirective {
224
- readonly elementRef: ElementRef;
225
- readonly control: NgControl;
226
- /** Form item name. */
227
- label: string;
228
- /** Error type definition. */
229
- errorTypes: MessagePopoverConfig['errors'];
230
- /** @hidden */
231
- constructor(elementRef: ElementRef, control: NgControl);
232
- static ɵfac: i0.ɵɵFactoryDeclaration<MessagePopoverFormItemDirective, [null, { optional: true; }]>;
233
- static ɵdir: i0.ɵɵDirectiveDeclaration<MessagePopoverFormItemDirective, "[fdpMessagePopoverFormItem]", never, { "label": { "alias": "fdpMessagePopoverFormItem"; "required": false; }; "errorTypes": { "alias": "errorTypes"; "required": false; }; }, {}, never, never, true, never>;
234
- }
235
-
236
- /**
237
- * Abstract base class for message list components (MessagePopover and MessageView).
238
- * Contains shared logic for managing error states, filtering, and navigation between list/detail views.
239
- */
240
- declare abstract class MessageListShared implements MessagePopover {
241
- /** Event emits when user clicks on error entry and item's element needs to be focused. */
242
- focusItem: EventEmitter<MessagePopoverEntry>;
243
- /** Current message popover screen. Can be `list` or `details`. */
244
- currentScreen: 'list' | 'details';
245
- /** Current error entry. */
246
- currentEntry: Nullable<MessagePopoverEntry>;
247
- /** @hidden */
248
- _currentErrorType: WritableSignal<MessagePopoverError['group']>;
249
- /** @hidden */
250
- _errorTypes$: i0.Signal<MessagePopoverError[]>;
251
- /** @hidden */
252
- _priorityStateItemsCount$: i0.Signal<number>;
253
- /** @hidden */
254
- _priorityFormState$: i0.Signal<"success" | "error" | "warning" | "default" | "information">;
255
- /** @hidden */
256
- _priorityState$: i0.Signal<Nullable<MessagePopoverState>>;
257
- /** @hidden */
258
- readonly _filteredErrors$: i0.Signal<MessagePopoverErrorGroup[]>;
259
- /** @hidden */
260
- protected readonly groupedErrors$: i0.Signal<MessagePopoverErrorGroup[]>;
261
- /** @hidden */
262
- protected readonly wrapper$: WritableSignal<Nullable<MessagePopoverWrapper>>;
263
- /** @hidden */
264
- protected readonly countedErrors$: i0.Signal<Record<string, number>>;
265
- /** @hidden */
266
- showList(): void;
267
- /** @hidden */
268
- showDetails(entry: MessagePopoverEntry): void;
269
- }
270
-
271
- /**
272
- * @deprecated
273
- * Use direct imports of components and directives.
274
- */
275
- declare class PlatformMessagesSharedModule {
276
- /**
277
- * Method allows users to apply custom configuration.
278
- * @param config Object containing error definitions.
279
- */
280
- static withConfig(config: MessagePopoverConfig): ModuleWithProviders<PlatformMessagesSharedModule>;
281
- static ɵfac: i0.ɵɵFactoryDeclaration<PlatformMessagesSharedModule, never>;
282
- static ɵmod: i0.ɵɵNgModuleDeclaration<PlatformMessagesSharedModule, never, [typeof MessagePopoverFormWrapperComponent, typeof MessagesListComponent, typeof MessagePopoverFormItemDirective], [typeof MessagePopoverFormWrapperComponent, typeof MessagesListComponent, typeof MessagePopoverFormItemDirective]>;
283
- static ɵinj: i0.ɵɵInjectorDeclaration<PlatformMessagesSharedModule>;
284
- }
285
-
286
- /**
287
- * Converts Object Status into Message Popover State
288
- * @param status Object status
289
- * @returns Message Popover State.
290
- */
291
- declare function convertFormStateToMessagePopoverState(state: FormStates): MessagePopoverState;
292
- /**
293
- * Converts Form State into Object status type.
294
- * @param type Form state.
295
- * @returns `ObjectStatus` type.
296
- */
297
- declare function convertFormState(type: FormStates): ObjectStatus;
298
- /**
299
- * Maps message type to icon name.
300
- * @param type Message type (error, success, warning, information, default).
301
- * @returns Icon name for the given message type.
302
- */
303
- declare function getIconForMessageType(type: string): string;
304
-
305
- export { FDP_MESSAGE_POPOVER_CONFIG, FDP_MESSAGE_POPOVER_DEFAULT_CONFIG, MessageListShared, MessagePopoverFormItemDirective, MessagePopoverFormWrapperComponent, MessagesListComponent, PlatformMessagesSharedModule, convertFormState, convertFormStateToMessagePopoverState, getIconForMessageType };
306
- export type { MessagePopover, MessagePopoverConfig, MessagePopoverEntry, MessagePopoverEntryLink, MessagePopoverError, MessagePopoverErrorConfig, MessagePopoverErrorGroup, MessagePopoverErrorText, MessagePopoverForm, MessagePopoverState, MessagePopoverWrapper };