import * as _openmfp_ngx from '@openmfp/ngx'; import * as gridstack from 'gridstack'; import { Breakpoint, GridStackOptions } from 'gridstack'; import * as _angular_core from '@angular/core'; import { OnInit, OnDestroy, Type, PipeTransform } from '@angular/core'; import { GridStackEngine } from 'gridstack/dist/gridstack-engine'; import { SafeHtml } from '@angular/platform-browser'; import { FormGroup, FormControl } from '@angular/forms'; /** Subset of fields of a generic resource that the table/form components rely on. */ interface GenericResource extends Record { /** Optional unique identifier. */ id?: string; /** Whether the resource is available/healthy. */ isAvailable?: boolean; /** Human-readable name used for screen readers and tooltips. */ accessibleName?: string; } /** Text transformation applied to a field value before display. */ type TransformType = 'uppercase' | 'lowercase' | 'capitalize' | 'decode' | 'encode'; /** Resolves a field value via a property path with optional transforms. */ interface PropertyField { /** Dot-separated JSON path to the value (e.g. `metadata.name`). */ key: string; /** Ordered list of transforms applied to the resolved string. */ transform?: TransformType[]; } /** Appearance settings for tag chip rendering. */ interface TagSettings { design?: 'Neutral' | 'Positive' | 'Critical' | 'Negative' | 'Information' | 'Set1' | 'Set2'; colorScheme?: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10'; /** Delimiter used to split a plain-string value into individual tags. Default: `','`. */ valueSeparator?: string; } /** Display and interaction settings for a table cell. */ interface UiSettings { /** How the cell value is rendered. Defaults to plain text when omitted. */ displayAs?: 'secret' | 'boolIcon' | 'link' | 'tooltip' | 'alert' | 'img' | 'button' | 'tag'; /** Button appearance and action — only used when `displayAs` is `'button'`. */ buttonSettings?: ButtonSettings; /** Tag chip configuration — only used when `displayAs` is `'tag'`. */ tagSettings?: TagSettings; /** SAP UI5 icon name shown as the tooltip trigger icon. */ tooltipIcon?: string; /** When `true`, a copy-to-clipboard button is rendered next to the value. */ withCopyButton?: boolean; /** Inline CSS overrides applied unconditionally to the cell. */ cssCustomization?: Partial; /** Conditional CSS rules evaluated against the cell value at render time. */ cssRules?: CssRule[]; /** Conditional value rules evaluated at render time. First match replaces the displayed value; raw value shown when none match. */ valueRules?: ValueRule[]; /** Fixed column width including unit (e.g. `'200px'`, `'20%'`). */ columnWidth?: string; align?: 'start' | 'center' | 'end'; } type KnownButtonActions = 'openInModal' | 'navigate' | 'edit' | 'delete'; type ButtonActions = KnownButtonActions | (string & {}); /** Appearance and action configuration for a button rendered inside a table cell or toolbar. */ interface ButtonSettings { /** Button label text. */ text?: string; /** SAP UI5 icon name placed before the label. */ icon?: string; /** SAP UI5 icon name placed after the label. */ endIcon?: string; /** SAP UI5 button design variant. */ design?: 'Default' | 'Positive' | 'Negative' | 'Transparent' | 'Emphasized' | 'Attention'; /** Tooltip shown on hover. */ tooltip?: string; /** Action identifier. `'edit'` and `'delete'` are handled internally; all other values are forwarded to the host via `actionButtonClick`. */ action: ButtonActions; /** Settings for the modal opened when `action` is `'openInModal'`. */ modalSettings?: ModalSettings; } /** Size and dimension overrides for the modal opened by a button with `action: 'openInModal'`. */ interface ModalSettings { /** Modal title shown in the dialog header. */ title?: string; /** Named size breakpoint. */ size?: 'fullscreen' | 'l' | 'm' | 's'; /** Explicit width override. */ width?: string; /** Explicit height override. */ height?: string; } /** Comparison operator used in conditional CSS and value rules. */ type RuleCondition = 'equals' | 'notEquals' | 'greaterThan' | 'greaterThanOrEqual' | 'lessThan' | 'lessThanOrEqual' | 'contains'; /** Conditional CSS rule: applies `styles` to the cell when `if` evaluates to `true`. */ interface CssRule { /** Condition evaluated against the cell's string value. */ if: { condition: RuleCondition; value: string; }; /** CSS properties applied when the condition is met. */ styles: Partial; } /** Conditional value rule: when `if` evaluates to `true`, the cell renders `then` instead of the raw value. First match wins. */ interface ValueRule { /** Condition evaluated against the cell's string value. */ if: { condition: RuleCondition; value: string; }; /** Display string used when the condition is met. */ then: string; } /** Event payload emitted when a button inside a table cell is clicked. */ interface ResourceFieldButtonClickEvent { /** Original DOM click event. */ event: MouseEvent; /** The field definition of the button cell that was clicked. */ field: FieldDefinition; /** The data row associated with the clicked button. */ resource: T | undefined; } /** Base field definition shared by table columns and form fields. */ interface FieldDefinition { /** Column header / form label. */ label?: string; /** Dot-separated path to the resource property (e.g. `metadata.name`). For a collection field this is the path to the array itself (e.g. `status.conditions`). */ property?: string | string[]; /** Alternative path resolver with optional transforms. */ propertyField?: PropertyField; /** JSONPath expression evaluated against the resource when `property` is not enough. */ jsonPathExpression?: string; /** Static value — used when the cell shows a constant rather than a resource field. */ value?: string; /** Display and interaction configuration for this cell. */ uiSettings?: UiSettings; /** * Sub-field definitions describing one entry of an array-of-objects field. * When set, `property` points at the array; each sub-field describes one * column/input of an entry. Mirrors `propertyField` naming for consistency. */ propertyCollection?: FieldDefinition[]; /** Verb required to render this field (e.g. 'update', 'delete'). * Evaluated against the row's granted actions. Absent → always render. */ requirePermission?: string; } declare const DASHBOARD_I18N_KEYS: { readonly TITLE: "title"; readonly DESCRIPTION: "description"; readonly EDIT_HOME_BUTTON: "editHomeButton"; readonly EDIT_CARDS_BUTTON: "editCardsButton"; readonly UNSAVED_CHANGES: "unsavedChanges"; readonly EDIT_CARDS: "editCards"; readonly ACTIONS: "actions"; readonly SAVE: "save"; readonly CANCEL: "cancel"; readonly DISCARD: "discard"; readonly DISCARD_CHANGES: "discardChanges"; readonly DISCARD_CONFIRM_BODY: "discardConfirmBody"; readonly UNSAVED_NAV_BODY: "unsavedNavBody"; readonly NO_CARDS_AVAILABLE: "noCardsAvailable"; readonly REMOVE_SECTION: "removeSection"; readonly REMOVE_CARD: "removeCard"; readonly RESIZABLE: "resizable"; }; type DashboardI18nKey = (typeof DASHBOARD_I18N_KEYS)[keyof typeof DASHBOARD_I18N_KEYS]; /** * The full set of dashboard chrome strings (toolbar buttons, dialogs, a11y * labels). Client applications provide translated values through * `DashboardConfig.i18n`; any key they omit falls back to `EN_DEFAULTS`. */ type DashboardTranslations = Record; /** * Built-in English strings. This is the only translation the library ships and * the fallback used whenever a key is not supplied by the client through * `DashboardConfig.i18n`. */ declare const EN_DEFAULTS: DashboardTranslations; /** * Resolves translation keys for the dashboard chrome (toolbar buttons, * dialogs, a11y labels). Provided at the `Dashboard` component level so every * nested dashboard component shares the same instance — child components * inject it and react to translation changes automatically because * `getTranslation` reads the `overrides` signal on every call. * * The library ships English only (`EN_DEFAULTS`). Client applications supply * translated strings through `DashboardConfig.i18n`, which the `Dashboard` * component pushes into `overrides`; switching language is just the client * swapping that object. Any key not present in the overrides falls back to the * English default, and finally to the key itself. */ declare class DashboardI18nService { readonly overrides: _angular_core.WritableSignal>; getTranslation(key: DashboardI18nKey): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare const CARD_TYPES: { readonly WC: "wc"; readonly ANGULAR: "angular"; readonly SAP_UI: "sap-ui"; }; type CardsType = (typeof CARD_TYPES)[keyof typeof CARD_TYPES]; /** Configuration for a single card placed in the dashboard grid or a section. */ interface CardConfig { /** Unique identifier for this card. Used as a stable key for position persistence. */ id: string; /** Column span (1–12). Defaults to 12 when omitted. */ w?: number; /** Row span — number of CSS grid rows occupied (1 row = 10 px by default). Defaults to 100 when omitted. */ h?: number; /** Starting column index (0-based). Omit to let the grid auto-place the card. */ x?: number; /** Starting row index (0-based). Omit to let the grid auto-place the card. */ y?: number; /** Maximum row span in edit mode. */ maxH?: number; /** Maximum column span in edit mode. */ maxW?: number; /** Minimum row span in edit mode. */ minH?: number; /** Minimum column span in edit mode. */ minW?: number; /** ID of the parent section. Omit to place the card in the loose-card grid. */ sectionId?: string; /** * Custom-element tag name (for `'wc'`/omitted), Angular component selector (for `'angular'`), * or SAP UI5 component name (for `'sap-ui'`). */ component: string; /** * Render strategy for the card. * - `'wc'` (default) — creates a custom element and sets `componentInputs` as DOM properties. * - `'angular'` — looks up the Angular registry; warns and renders nothing if not found. * - `'sap-ui'` — mounts via `window.sap.ui.require` + `ComponentContainer`. */ type?: CardsType; /** Key/value pairs passed to the rendered card. Behaviour depends on `type`. */ componentInputs?: Record; /** Human-readable label shown in the "Edit Cards" dialog. */ label?: string; } type MountCfg = Pick; /** Configuration for a named horizontal section that groups cards. */ interface SectionConfig { /** Unique identifier for this section. */ id: string; /** Column span (1–12). Defaults to 12 when omitted. */ w?: number; /** Section heading displayed in the UI. */ title?: string; /** When `false`, the section and its cards are excluded from edit mode. Defaults to `true` when omitted. */ editable?: boolean; } /** Overrides for the two built-in dashboard toolbar buttons. */ interface DashboardButtonsSettings { /** Partial override merged on top of the Edit View button defaults. */ editViewButton?: Partial; /** Partial override merged on top of the Edit Cards button defaults. */ editCardsButton?: Partial; } /** Top-level configuration for the `` component. */ interface DashboardConfig { /** URL of the background image applied to the dashboard host element. */ backgroundImageUrl?: string; /** Overrides for the built-in Edit View and Edit Cards toolbar buttons. */ buttonsSettings?: DashboardButtonsSettings; /** When `true`, shows the Edit View button in the toolbar, allowing the user to enter edit mode. */ editable?: boolean; /** When `true`, the Edit View button is rendered before the custom actions instead of after. Defaults to `false`. */ editButtonFirst?: boolean; /** When provided, enable z-flow layout. */ zFlow?: { /** Sets the height of each card in the z-flow layout. */ cardHeight: number; }; } /** * Layout strategy applied at each breakpoint when Gridstack changes column * count. See ColumnOptions in gridstack/dist/types.d.ts:27 for the full set. */ type LayoutStrategy = 'compact' | 'list' | 'none'; type DashboardBreakpoint = Readonly> & { layout: LayoutStrategy; }>; interface EngineProfile { /** GridStack engine class, or undefined to use GridStack's native engine. */ engineClass: typeof GridStackEngine | undefined; /** Column breakpoint table fed to GridStack columnOpts. */ breakpoints: readonly DashboardBreakpoint[]; /** Column counts for [sm, md, lg, xl] page size. Pushed to CSS vars so the section grids match. */ sectionColumns: readonly [number, number, number, number]; /** When true, all loose cards get a fixed h/maxH from the engine's config. */ fixedCardHeight: boolean; /** When true, the XL-page width swap (3↔4) runs. */ xlWidthSwap: boolean; /** When true, the origin position is rendered. */ renderOriginPosition: boolean; } declare class Dashboard implements OnInit, OnDestroy { static registerAngularComponents(componentTypes: Type[]): void; private readonly hostEl; private readonly injector; private readonly sanitizer; protected readonly i18nService: DashboardI18nService; config: _angular_core.InputSignal; sections: _angular_core.ModelSignal; cards: _angular_core.ModelSignal; availableCards: _angular_core.InputSignal; /** Extra action buttons rendered in the toolbar alongside the built-in ones. */ customActions: _angular_core.InputSignal; /** * Full set of dashboard-chrome translations (title, description, toolbar * buttons, dialogs, a11y labels). The library ships English only. Provide a * complete `DashboardTranslations` to render the dashboard in another * language, and swap it to switch language. When `null`, `undefined`, or an * empty object, the built-in English defaults (`EN_DEFAULTS`) are used. See * `DashboardTranslations` / `DashboardI18nKey` for the full key contract. */ i18n: _angular_core.InputSignal; readonly saved: _angular_core.OutputEmitterRef<{ sections: SectionConfig[]; cards: CardConfig[]; }>; readonly actionButtonClick: _angular_core.OutputEmitterRef<{ event: MouseEvent; action: ButtonSettings; }>; readonly unsavedChangesChange: _angular_core.OutputEmitterRef; protected readonly i18nKeys: { readonly TITLE: "title"; readonly DESCRIPTION: "description"; readonly EDIT_HOME_BUTTON: "editHomeButton"; readonly EDIT_CARDS_BUTTON: "editCardsButton"; readonly UNSAVED_CHANGES: "unsavedChanges"; readonly EDIT_CARDS: "editCards"; readonly ACTIONS: "actions"; readonly SAVE: "save"; readonly CANCEL: "cancel"; readonly DISCARD: "discard"; readonly DISCARD_CHANGES: "discardChanges"; readonly DISCARD_CONFIRM_BODY: "discardConfirmBody"; readonly UNSAVED_NAV_BODY: "unsavedNavBody"; readonly NO_CARDS_AVAILABLE: "noCardsAvailable"; readonly REMOVE_SECTION: "removeSection"; readonly REMOVE_CARD: "removeCard"; readonly RESIZABLE: "resizable"; }; /** True once the user has dragged/resized any grid item while in edit mode. */ private gridDirty; private isXLPage; editMode: _angular_core.WritableSignal; compactToolbar: _angular_core.WritableSignal; toolbarMenuOpen: _angular_core.WritableSignal; cardDialogOpen: _angular_core.WritableSignal; discardDialogOpen: _angular_core.WritableSignal; unsavedNavDialogOpen: _angular_core.WritableSignal; backgroundImageHeight: _angular_core.WritableSignal; dragOriginStyle: _angular_core.WritableSignal<{ top: string; left: string; width: string; height: string; } | null>; protected hasUnsavedChanges: _angular_core.Signal; protected safeTitle: _angular_core.Signal; protected safeDescription: _angular_core.Signal; protected engineProfile: _angular_core.Signal; protected gridStackEngine: _angular_core.Signal; protected gridBreakpoints: _angular_core.Signal> & { layout: "compact" | "list" | "none"; }>[]>; protected columnVars: _angular_core.Signal<{ '--dashboard-cols-sm': number; '--dashboard-cols-md': number; '--dashboard-cols-lg': number; '--dashboard-cols-xl': number; }>; protected addedCardsIds: _angular_core.Signal>; protected editViewButton: _angular_core.Signal<{ text: string; icon: string; endIcon?: string; design: "Default" | "Positive" | "Negative" | "Transparent" | "Emphasized" | "Attention"; tooltip: string; action?: (("openInModal" | "navigate" | "edit" | "delete") | (string & {})) | undefined; modalSettings?: _openmfp_ngx.ModalSettings; }>; protected editCardsButton: _angular_core.Signal<{ text: string; icon: string; endIcon?: string; design: "Default" | "Positive" | "Negative" | "Transparent" | "Emphasized" | "Attention"; tooltip: string; action?: (("openInModal" | "navigate" | "edit" | "delete") | (string & {})) | undefined; modalSettings?: _openmfp_ngx.ModalSettings; }>; protected sectionCards: _angular_core.Signal<(sectionId: string) => CardConfig[]>; protected looseCards: _angular_core.WritableSignal; protected gridOptions: _angular_core.Signal; /** JSON snapshots of sections/cards taken on entering edit mode, used to detect changes. */ private sectionsSnapshotJson; private cardsSnapshotJson; private sectionsSnapshot; private cardsSnapshot; private gridStack; private addCardBtn; private resizeObserver?; private cardsPosition; /** Callback that resumes the intercepted navigation once the user resolves the dialog. */ private pendingNavigation; /** beforeunload handler kept on instance so add/removeEventListener pair up. */ private readonly beforeUnloadHandler; constructor(); ngOnInit(): void; ngOnDestroy(): void; onMenuItemClick(actionId: string, event: Event): void; enterEditMode(): void; saveEdit(): void; cancelEdit(): void; confirmDiscard(): void; cancelDiscard(): void; /** * Public framework-agnostic navigation guard. Consumer apps (Angular Router * CanDeactivate guard, Luigi navigation listener, plain `` click handler, * window history listener — anything) call this before performing their * navigation: * * if (dashboard.requestNavigation(() => router.navigateByUrl(target))) { * // already navigated synchronously — clean state * } else { * // dashboard popped the unsaved-changes dialog; the navigation will * // resume from the user's choice (Save → proceed, Discard → proceed, * // Cancel → drop the request entirely). * } * * Returns `true` when navigation may proceed immediately (no unsaved * changes — `proceed` was invoked synchronously). Returns `false` when the * dialog has been opened and the caller must NOT navigate; the dashboard * will run the callback later if the user picks Save or Discard. * * If a previous navigation is already pending, that one is dropped in * favour of the new request — Cancel always means "stay here", so losing * the older queued navigation is the correct outcome. */ requestNavigation(proceed: () => void): boolean; /** Save → persist changes, close the dialog, then resume navigation. */ onUnsavedNavSave(): void; /** Discard → revert to snapshot, close the dialog, then resume navigation. */ onUnsavedNavDiscard(): void; /** Cancel → drop the queued navigation and stay in edit mode. */ onUnsavedNavCancel(): void; private runPendingNavigation; private discardEdit; removeSection(id: string): void; removeCard(id: string): void; openCardPanel(): void; closeCardPanel(): void; onCardsEdited(event: { added: CardConfig[]; removed: string[]; }): void; onDragStart(event: { el: Element; }): void; onDragStop(): void; onGridChange(): void; private saveCardsPosition; private updateCardsPositions; private getZFlowEngine; private updateCardsForBreakpoint; private changeCardSettingsForXlPage; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * `createCustomElement` only proxies `@Input()`/`output()` — public methods on * the component class are NOT reachable from the DOM. This forwards the * dashboard's public methods onto the custom-element prototype so that * non-Angular consumers (UI5, plain JS, Luigi, etc.) can call them directly on * the `` DOM node. * * `requestNavigation` needs a synchronous fallback when the Angular component * isn't created yet: run the navigation immediately (returning `true`) rather * than silently blocking the user — this preserves the original, pre-guard * behaviour. The remaining handlers no-op until the component exists. */ declare function defineDashboardElementMethods(elementCtor: CustomElementConstructor): void; /** Definition for a single form field rendered by `mfp-declarative-form`. */ interface FormFieldDefinition { /** JSON-path key used to read and write the field value (e.g. `metadata.name`). */ name: string; /** Display label shown above the input. */ label: string; /** When `true`, passes the `required` attribute to the UI5 input — shows a visual required indicator. Validation itself is the host's responsibility via `FormFieldErrors`. */ required?: boolean; /** Fixed list of options rendered as a select/dropdown. */ values?: string[]; /** When `true`, the field is disabled (not interactive). */ disabled?: boolean; /** Controls when `fieldChange` is emitted for this field. When omitted, `fieldChange` is never emitted. */ validation?: 'onBlur' | 'onChange'; /** * Nested field definitions describing one item of an object collection. * * When set, this field represents an array of objects; the form renders it * as a stack of expandable/collapsible cards. Each card is a nested * `mfp-declarative-form` whose `fields` are the entries in * `propertyCollection`; an inline Add button appends entries and a trash * button removes them. Editing is live — no per-card Save/Cancel. * * The submitted value at this field's path is `Array>`, * with each entry keyed by the sub-fields' `name`s. When `required` is * `true`, the host is expected to require at least one entry in the array. */ propertyCollection?: FormFieldDefinition[]; } /** Event payload emitted each time a single form field value changes. */ interface FormFieldChangeEvent { /** The `name` (JSON-path key) of the field that changed. */ fieldProperty: string; /** The new value entered by the user. */ value: unknown; } /** Map of field names to their current validation error messages (`null` = no error). */ type FormFieldErrors = Record; declare class DeclarativeForm { readonly fields: _angular_core.InputSignal; readonly initialValues: _angular_core.InputSignal; readonly fieldErrors: _angular_core.InputSignal; readonly fieldChange: _angular_core.OutputEmitterRef; readonly formSubmit: _angular_core.OutputEmitterRef; readonly formValueChange: _angular_core.OutputEmitterRef>; readonly form: FormGroup; protected readonly collectionSeeds: _angular_core.WritableSignal[]>>; private readonly fb; constructor(); setFormControlValue($event: Event, field: FormFieldDefinition): void; onCollectionValueChange(field: FormFieldDefinition, entries: Record[]): void; getError(name: string): string | null; getValueState(name: string): 'None' | 'Negative'; onFieldBlur(field: FormFieldDefinition): void; submit(): void; clear(): void; collectionEntries(field: FormFieldDefinition): Record[]; private rebuildControls; private setInitialValues; private buildOutputValue; private buildEntryGroup; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration, "mfp-declarative-form", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "initialValues": { "alias": "initialValues"; "required": false; "isSignal": true; }; "fieldErrors": { "alias": "fieldErrors"; "required": false; "isSignal": true; }; }, { "fieldChange": "fieldChange"; "formSubmit": "formSubmit"; "formValueChange": "formValueChange"; }, never, never, true, never>; } /** Table column definition — extends `FieldDefinition` with optional column grouping. */ interface TableFieldDefinition extends FieldDefinition { /** Groups this column visually with adjacent columns that share the same `name`. */ group?: { /** Logical group identifier. */ name: string; /** Group header label shown above the grouped cells. */ label?: string; /** Separator placed between values in the same group cell. */ delimiter?: string; /** When `true`, each value is rendered on its own line. */ multiline?: boolean; }; } type GroupBase = NonNullable; type ProcessedGroup = GroupBase & { fields?: TableFieldDefinition[]; }; type ProcessedTableFieldDefinition = Omit & { group?: ProcessedGroup; }; declare class DeclarativeTable { columns: _angular_core.InputSignal; resources: _angular_core.InputSignal; trackByPath: _angular_core.InputSignal; permissions: _angular_core.InputSignal | undefined>; totalItemsCount: _angular_core.InputSignal; paginationLimit: _angular_core.InputSignal; hasMore: _angular_core.InputSignal; loadMode: _angular_core.InputSignal<"button" | "scroll" | "pager">; loadMoreButtonText: _angular_core.InputSignal; height: _angular_core.InputSignal; currentPage: _angular_core.InputSignal; readonly buttonClick: _angular_core.OutputEmitterRef>; readonly tableRowClicked: _angular_core.OutputEmitterRef; readonly loadMoreResources: _angular_core.OutputEmitterRef; readonly paginationLimitChanged: _angular_core.OutputEmitterRef; readonly pageChange: _angular_core.OutputEmitterRef; columnTrackBy: (column: TableFieldDefinition, index: number) => string | number | string[]; rowTrackBy: (_index: number, item: T) => unknown; viewColumns: _angular_core.Signal; onRowClick(item: T): void; isPagerMode: _angular_core.Signal; knowsTotal: _angular_core.Signal; hasResults: _angular_core.Signal; totalPages: _angular_core.Signal; canPrev: _angular_core.Signal; canNext: _angular_core.Signal; goToPage(page: number): void; firstPage: () => void; prevPage: () => void; nextPage: () => void; lastPage: () => void; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration, "mfp-declarative-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "resources": { "alias": "resources"; "required": true; "isSignal": true; }; "trackByPath": { "alias": "trackByPath"; "required": false; "isSignal": true; }; "permissions": { "alias": "permissions"; "required": false; "isSignal": true; }; "totalItemsCount": { "alias": "totalItemsCount"; "required": false; "isSignal": true; }; "paginationLimit": { "alias": "paginationLimit"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "loadMode": { "alias": "loadMode"; "required": false; "isSignal": true; }; "loadMoreButtonText": { "alias": "loadMoreButtonText"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; }, { "buttonClick": "buttonClick"; "tableRowClicked": "tableRowClicked"; "loadMoreResources": "loadMoreResources"; "paginationLimitChanged": "paginationLimitChanged"; "pageChange": "pageChange"; }, never, never, true, never>; } /** Configuration for the create/edit resource form rendered inside the table card dialogs. */ interface ResourceFormConfig { /** * Ordered list of fields to render in the form. May be a plain array, or a * thunk returning a promise of the fields — the thunk form is resolved lazily * when the dialog opens (e.g. to fetch dynamic select options on demand * rather than prefetching them on render). */ fields: FormFieldDefinition[] | (() => Promise); /** Dialog title shown in the header. May contain HTML, which is sanitized before rendering. */ title?: string; /** Label for the confirm/submit button. */ confirmLabel?: string; /** Label for the cancel button. */ cancelLabel?: string; } /** Runtime validation and submit state passed to the table card from the host. */ interface TableCardFormState { /** Map of field names to their current error messages. Any truthy error in the map disables the submit button. */ fieldErrors?: FormFieldErrors; } /** Configuration for the delete-confirmation dialog. */ interface DeleteResourceConfirmationConfig { /** Dialog title. May contain HTML, which is sanitized before rendering. */ title?: string; /** Explanatory message shown below the title. May contain HTML, which is sanitized before rendering. */ message?: string; /** * When set, the dialog renders a text input and keeps the confirm button * disabled until the typed value matches this text (case-insensitive, * trimmed). Use it to require the user to type e.g. the resource name before * deleting. Omit to allow immediate confirmation. */ confirmationText?: string; /** Placeholder for the confirmation input. Defaults to `Type to confirm`. Only used when {@link confirmationText} is set. */ confirmationPlaceholder?: string; /** Label for the confirm/delete button. */ confirmLabel?: string; /** Label for the cancel button. */ cancelLabel?: string; } /** * One entry in the {@link TableCardSearchConfig.filterTabs} strip rendered * above the table. Clicking a tab activates that filter; the host receives the * selected definition via the `filterTabChanged` output and is responsible for * applying the filter to its data set. * * The strip renders exactly the array of `FieldFilterDefinition` it receives * — no extra "All" / no-filter tab is auto-added. If the host wants such an * option it must author it as a regular filter entry. */ interface FieldFilterDefinition { /** Visible label rendered as the tab text. */ label: string; /** Name of the property the value applies to. Passed through to the host. */ property: string; /** Value compared against `property` when the host applies the filter. */ value: string; /** When `true`, this tab is selected on initial render; otherwise the first tab is. */ default?: boolean; } /** Configuration for the inner `mfp-declarative-table`. */ interface TableConfig { /** Column definitions. */ fields: TableFieldDefinition[]; /** Total number of items on the server (used by pagination). */ totalItemsCount?: number; /** Page size in `pager` mode; batch size for the grow modes otherwise. */ paginationLimit?: number; /** 1-based current page. Only used when `loadMode` is `'pager'`. */ currentPage?: number; /** When `true`, the "Load More" control is shown. Grow modes only. */ hasMore?: boolean; height?: number; /** * How additional rows are presented: * - `'scroll'` / `'button'` — grow the list in place via `ui5-table-growing`. * - `'pager'` — classic arrow pager (first/prev/next/last) emitting `pageChange`. */ loadMode?: 'scroll' | 'button' | 'pager'; /** Text on the grow "Load More" button. Grow modes only. */ loadMoreButtonText?: string; } /** Overrides for the table card's built-in action buttons. */ interface TableCardButtonSettings { /** Partial override for the "Create" button. */ createButton?: Partial; /** Partial override for the search toggle button. */ searchButton?: Partial; } /** * Groups all search/filter concerns for ``. Passing * this object opts the card into showing the search input and (if `filterTabs` * is set) the filter-tab strip. Omit the whole object to hide both. * * `initialSearch` and `initialFilter` are **one-shot seeds** — read once when * the card mounts (or when they first appear) and never re-applied afterwards. * User-driven updates continue to flow through the `searchChanged` and * `filterTabChanged` outputs; the host is expected to keep its own state. */ interface TableCardSearchConfig { /** * One-shot seed for the search input. Applied to the internal `searchControl` * on first render (or the first time `searchConfig` appears), without * emitting `searchChanged`. Later changes to this value have no effect. */ initialSearch?: string; /** * Placeholder text shown in the always-visible search input to prompt * searching. Defaults to `Search` when omitted. */ placeholder?: string; /** * Predefined filters rendered as a horizontal tab strip above the table. * Omit (or pass an empty array) to hide the strip while keeping the search * input visible. */ filterTabs?: FieldFilterDefinition[]; /** * One-shot seed for the initially selected filter tab. Must match a * `filterTabs` entry by `property`+`value` to take effect. When set, this * takes precedence over any `default: true` flag on filter entries. * User-driven tab changes afterwards flow through `filterTabChanged`. */ initialFilter?: FieldFilterDefinition; } /** Top-level configuration for ``. */ interface TableCardConfig { /** Card heading. */ header?: string; /** Tooltip shown on hover of the card heading. */ headerTooltip?: string; /** Required table configuration. */ tableConfig: TableConfig; /** Overrides for built-in toolbar and row-action buttons. */ buttonSettings?: TableCardButtonSettings; /** * Search-and-filter configuration. When present, the card shows the search * input in the toolbar. Its `filterTabs` (if any) render as a strip above * the table. Omit the whole object to hide the search UI and filter strip. */ searchConfig?: TableCardSearchConfig; /** When set, enables the "Create" button and create dialog. */ createResourceFormConfig?: ResourceFormConfig; /** When set, enables per-row "Edit" button and edit dialog. */ editResourceFormConfig?: (resource: T) => ResourceFormConfig; /** When set, enables per-row "Delete" button and confirmation dialog. */ deleteResourceConfirmationConfig?: (resource: T) => DeleteResourceConfirmationConfig; } declare class DeleteConfirmationDialog { readonly open: _angular_core.InputSignal; readonly config: _angular_core.InputSignal; readonly confirmed: _angular_core.OutputEmitterRef; readonly cancelled: _angular_core.OutputEmitterRef; /** Input used to confirm deletion by typing `confirmationText`. */ protected readonly confirmationControl: FormControl; /** True when the config requires typing a confirmation phrase before deleting. */ protected readonly requiresConfirmation: _angular_core.Signal; /** Recomputes whenever the control's validity changes. */ private readonly status; /** Disables the confirm button while the confirmation input is invalid. */ protected readonly confirmDisabled: _angular_core.Signal; constructor(); protected onConfirm(): void; /** Passes only when the trimmed, case-insensitive control value equals `expected`. */ private matchValidator; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class DeclarativeTableCard { resources: _angular_core.InputSignal; permissions: _angular_core.InputSignal | undefined>; config: _angular_core.InputSignal>; createFormState: _angular_core.InputSignal; editFormState: _angular_core.InputSignal; readonly actionButtonClick: _angular_core.OutputEmitterRef>; readonly tableRowClicked: _angular_core.OutputEmitterRef; readonly loadMoreResources: _angular_core.OutputEmitterRef; readonly paginationLimitChanged: _angular_core.OutputEmitterRef; readonly pageChange: _angular_core.OutputEmitterRef; readonly searchChanged: _angular_core.OutputEmitterRef; readonly createFieldChange: _angular_core.OutputEmitterRef; readonly editFieldChange: _angular_core.OutputEmitterRef<{ resource: R; formChangeEvent: FormFieldChangeEvent; }>; readonly createSubmit: _angular_core.OutputEmitterRef; readonly editSubmit: _angular_core.OutputEmitterRef<{ resource: R; value: Record; }>; readonly deleteSubmit: _angular_core.OutputEmitterRef; readonly filterTabChanged: _angular_core.OutputEmitterRef; protected searchControl: FormControl; protected createDialogOpen: _angular_core.WritableSignal; protected editDialogOpen: _angular_core.WritableSignal; protected deleteDialogOpen: _angular_core.WritableSignal; protected pendingResource: _angular_core.WritableSignal; protected resolvedCreateFields: _angular_core.WritableSignal; protected resolvedEditFields: _angular_core.WritableSignal; protected tableConfig: _angular_core.Signal<_openmfp_ngx.TableConfig>; protected header: _angular_core.Signal; protected headerTooltip: _angular_core.Signal; protected createFormConfig: _angular_core.Signal<_openmfp_ngx.ResourceFormConfig | undefined>; protected editFormConfig: _angular_core.Signal<_openmfp_ngx.ResourceFormConfig | undefined>; protected deleteConfirmationConfig: _angular_core.Signal<_openmfp_ngx.DeleteResourceConfirmationConfig | undefined>; protected createButtonConfig: _angular_core.Signal | undefined>; protected searchButtonConfig: _angular_core.Signal | undefined>; protected effectiveColumns: _angular_core.Signal<_openmfp_ngx.TableFieldDefinition[]>; protected editInitialValue: _angular_core.Signal>; protected searchConfig: _angular_core.Signal<_openmfp_ngx.TableCardSearchConfig | undefined>; protected resourcesSearchable: _angular_core.Signal; protected searchPlaceholder: _angular_core.Signal; protected filterTabs: _angular_core.Signal; protected hasFilterTabs: _angular_core.Signal; constructor(); protected onFilterTabChanged(tab: FieldFilterDefinition | undefined): void; submitSearch(): void; onButtonClick(event: ResourceFieldButtonClickEvent): void; openCreateDialog(): Promise; private openEditDialog; private resolveFormFields; closeCreateDialog(): void; closeEditDialog(): void; closeDeleteDialog(): void; onCreateFieldChange(event: FormFieldChangeEvent): void; onEditFieldChange(event: FormFieldChangeEvent): void; onCreateSubmit(value: Record): void; onEditSubmit(value: Record): void; onDeleteSubmit(): void; private buildInitialValues; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration, "mfp-declarative-table-card", never, { "resources": { "alias": "resources"; "required": true; "isSignal": true; }; "permissions": { "alias": "permissions"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "createFormState": { "alias": "createFormState"; "required": false; "isSignal": true; }; "editFormState": { "alias": "editFormState"; "required": false; "isSignal": true; }; }, { "actionButtonClick": "actionButtonClick"; "tableRowClicked": "tableRowClicked"; "loadMoreResources": "loadMoreResources"; "paginationLimitChanged": "paginationLimitChanged"; "pageChange": "pageChange"; "searchChanged": "searchChanged"; "createFieldChange": "createFieldChange"; "editFieldChange": "editFieldChange"; "createSubmit": "createSubmit"; "editSubmit": "editSubmit"; "deleteSubmit": "deleteSubmit"; "filterTabChanged": "filterTabChanged"; }, never, never, true, never>; } declare class ResourceFormDialog { readonly open: _angular_core.InputSignal; readonly config: _angular_core.InputSignal; readonly fields: _angular_core.InputSignal; readonly fieldErrors: _angular_core.InputSignal; readonly initialValues: _angular_core.InputSignal>; readonly defaultTitle: _angular_core.InputSignal; readonly defaultConfirmLabel: _angular_core.InputSignal; readonly defaultCancelLabel: _angular_core.InputSignal; readonly dataTestidPrefix: _angular_core.InputSignal; readonly fieldChange: _angular_core.OutputEmitterRef; readonly submitted: _angular_core.OutputEmitterRef>; readonly cancelled: _angular_core.OutputEmitterRef; protected hasErrors: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class SanitizeHtmlPipe implements PipeTransform { private readonly sanitizer; transform(value: string | null | undefined): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵpipe: _angular_core.ɵɵPipeDeclaration; } declare class ResourceField { fieldDefinition: _angular_core.InputSignal; resource: _angular_core.InputSignal; permissions: _angular_core.InputSignal | undefined>; readonly buttonClick: _angular_core.OutputEmitterRef>; value: _angular_core.Signal; uiSettings: _angular_core.Signal<_openmfp_ngx.UiSettings | undefined>; displayAs: _angular_core.Signal<"secret" | "boolIcon" | "link" | "tooltip" | "alert" | "img" | "button" | "tag" | undefined>; withCopyButton: _angular_core.Signal; cssCustomization: _angular_core.Signal | undefined>; tooltipIcon: _angular_core.Signal; cssRules: _angular_core.Signal>; cssStyles: _angular_core.Signal<{ [x: number]: string | undefined; accentColor?: string | undefined; alignContent?: string | undefined; alignItems?: string | undefined; alignSelf?: string | undefined; alignmentBaseline?: string | undefined; all?: string | undefined; animation?: string | undefined; animationComposition?: string | undefined; animationDelay?: string | undefined; animationDirection?: string | undefined; animationDuration?: string | undefined; animationFillMode?: string | undefined; animationIterationCount?: string | undefined; animationName?: string | undefined; animationPlayState?: string | undefined; animationTimingFunction?: string | undefined; appearance?: string | undefined; aspectRatio?: string | undefined; backdropFilter?: string | undefined; backfaceVisibility?: string | undefined; background?: string | undefined; backgroundAttachment?: string | undefined; backgroundBlendMode?: string | undefined; backgroundClip?: string | undefined; backgroundColor?: string | undefined; backgroundImage?: string | undefined; backgroundOrigin?: string | undefined; backgroundPosition?: string | undefined; backgroundPositionX?: string | undefined; backgroundPositionY?: string | undefined; backgroundRepeat?: string | undefined; backgroundSize?: string | undefined; baselineShift?: string | undefined; baselineSource?: string | undefined; blockSize?: string | undefined; border?: string | undefined; borderBlock?: string | undefined; borderBlockColor?: string | undefined; borderBlockEnd?: string | undefined; borderBlockEndColor?: string | undefined; borderBlockEndStyle?: string | undefined; borderBlockEndWidth?: string | undefined; borderBlockStart?: string | undefined; borderBlockStartColor?: string | undefined; borderBlockStartStyle?: string | undefined; borderBlockStartWidth?: string | undefined; borderBlockStyle?: string | undefined; borderBlockWidth?: string | undefined; borderBottom?: string | undefined; borderBottomColor?: string | undefined; borderBottomLeftRadius?: string | undefined; borderBottomRightRadius?: string | undefined; borderBottomStyle?: string | undefined; borderBottomWidth?: string | undefined; borderCollapse?: string | undefined; borderColor?: string | undefined; borderEndEndRadius?: string | undefined; borderEndStartRadius?: string | undefined; borderImage?: string | undefined; borderImageOutset?: string | undefined; borderImageRepeat?: string | undefined; borderImageSlice?: string | undefined; borderImageSource?: string | undefined; borderImageWidth?: string | undefined; borderInline?: string | undefined; borderInlineColor?: string | undefined; borderInlineEnd?: string | undefined; borderInlineEndColor?: string | undefined; borderInlineEndStyle?: string | undefined; borderInlineEndWidth?: string | undefined; borderInlineStart?: string | undefined; borderInlineStartColor?: string | undefined; borderInlineStartStyle?: string | undefined; borderInlineStartWidth?: string | undefined; borderInlineStyle?: string | undefined; borderInlineWidth?: string | undefined; borderLeft?: string | undefined; borderLeftColor?: string | undefined; borderLeftStyle?: string | undefined; borderLeftWidth?: string | undefined; borderRadius?: string | undefined; borderRight?: string | undefined; borderRightColor?: string | undefined; borderRightStyle?: string | undefined; borderRightWidth?: string | undefined; borderSpacing?: string | undefined; borderStartEndRadius?: string | undefined; borderStartStartRadius?: string | undefined; borderStyle?: string | undefined; borderTop?: string | undefined; borderTopColor?: string | undefined; borderTopLeftRadius?: string | undefined; borderTopRightRadius?: string | undefined; borderTopStyle?: string | undefined; borderTopWidth?: string | undefined; borderWidth?: string | undefined; bottom?: string | undefined; boxDecorationBreak?: string | undefined; boxShadow?: string | undefined; boxSizing?: string | undefined; breakAfter?: string | undefined; breakBefore?: string | undefined; breakInside?: string | undefined; captionSide?: string | undefined; caretColor?: string | undefined; clear?: string | undefined; clip?: string | undefined; clipPath?: string | undefined; clipRule?: string | undefined; color?: string | undefined; colorInterpolation?: string | undefined; colorInterpolationFilters?: string | undefined; colorScheme?: string | undefined; columnCount?: string | undefined; columnFill?: string | undefined; columnGap?: string | undefined; columnRule?: string | undefined; columnRuleColor?: string | undefined; columnRuleStyle?: string | undefined; columnRuleWidth?: string | undefined; columnSpan?: string | undefined; columnWidth?: string | undefined; columns?: string | undefined; contain?: string | undefined; containIntrinsicBlockSize?: string | undefined; containIntrinsicHeight?: string | undefined; containIntrinsicInlineSize?: string | undefined; containIntrinsicSize?: string | undefined; containIntrinsicWidth?: string | undefined; container?: string | undefined; containerName?: string | undefined; containerType?: string | undefined; content?: string | undefined; contentVisibility?: string | undefined; counterIncrement?: string | undefined; counterReset?: string | undefined; counterSet?: string | undefined; cssFloat?: string | undefined; cssText?: string | undefined; cursor?: string | undefined; cx?: string | undefined; cy?: string | undefined; d?: string | undefined; direction?: string | undefined; display?: string | undefined; dominantBaseline?: string | undefined; emptyCells?: string | undefined; fill?: string | undefined; fillOpacity?: string | undefined; fillRule?: string | undefined; filter?: string | undefined; flex?: string | undefined; flexBasis?: string | undefined; flexDirection?: string | undefined; flexFlow?: string | undefined; flexGrow?: string | undefined; flexShrink?: string | undefined; flexWrap?: string | undefined; float?: string | undefined; floodColor?: string | undefined; floodOpacity?: string | undefined; font?: string | undefined; fontFamily?: string | undefined; fontFeatureSettings?: string | undefined; fontKerning?: string | undefined; fontOpticalSizing?: string | undefined; fontPalette?: string | undefined; fontSize?: string | undefined; fontSizeAdjust?: string | undefined; fontStretch?: string | undefined; fontStyle?: string | undefined; fontSynthesis?: string | undefined; fontSynthesisSmallCaps?: string | undefined; fontSynthesisStyle?: string | undefined; fontSynthesisWeight?: string | undefined; fontVariant?: string | undefined; fontVariantAlternates?: string | undefined; fontVariantCaps?: string | undefined; fontVariantEastAsian?: string | undefined; fontVariantLigatures?: string | undefined; fontVariantNumeric?: string | undefined; fontVariantPosition?: string | undefined; fontVariationSettings?: string | undefined; fontWeight?: string | undefined; forcedColorAdjust?: string | undefined; gap?: string | undefined; grid?: string | undefined; gridArea?: string | undefined; gridAutoColumns?: string | undefined; gridAutoFlow?: string | undefined; gridAutoRows?: string | undefined; gridColumn?: string | undefined; gridColumnEnd?: string | undefined; gridColumnGap?: string | undefined; gridColumnStart?: string | undefined; gridGap?: string | undefined; gridRow?: string | undefined; gridRowEnd?: string | undefined; gridRowGap?: string | undefined; gridRowStart?: string | undefined; gridTemplate?: string | undefined; gridTemplateAreas?: string | undefined; gridTemplateColumns?: string | undefined; gridTemplateRows?: string | undefined; height?: string | undefined; hyphenateCharacter?: string | undefined; hyphenateLimitChars?: string | undefined; hyphens?: string | undefined; imageOrientation?: string | undefined; imageRendering?: string | undefined; inlineSize?: string | undefined; inset?: string | undefined; insetBlock?: string | undefined; insetBlockEnd?: string | undefined; insetBlockStart?: string | undefined; insetInline?: string | undefined; insetInlineEnd?: string | undefined; insetInlineStart?: string | undefined; isolation?: string | undefined; justifyContent?: string | undefined; justifyItems?: string | undefined; justifySelf?: string | undefined; left?: string | undefined; length?: number | undefined; letterSpacing?: string | undefined; lightingColor?: string | undefined; lineBreak?: string | undefined; lineHeight?: string | undefined; listStyle?: string | undefined; listStyleImage?: string | undefined; listStylePosition?: string | undefined; listStyleType?: string | undefined; margin?: string | undefined; marginBlock?: string | undefined; marginBlockEnd?: string | undefined; marginBlockStart?: string | undefined; marginBottom?: string | undefined; marginInline?: string | undefined; marginInlineEnd?: string | undefined; marginInlineStart?: string | undefined; marginLeft?: string | undefined; marginRight?: string | undefined; marginTop?: string | undefined; marker?: string | undefined; markerEnd?: string | undefined; markerMid?: string | undefined; markerStart?: string | undefined; mask?: string | undefined; maskClip?: string | undefined; maskComposite?: string | undefined; maskImage?: string | undefined; maskMode?: string | undefined; maskOrigin?: string | undefined; maskPosition?: string | undefined; maskRepeat?: string | undefined; maskSize?: string | undefined; maskType?: string | undefined; mathDepth?: string | undefined; mathStyle?: string | undefined; maxBlockSize?: string | undefined; maxHeight?: string | undefined; maxInlineSize?: string | undefined; maxWidth?: string | undefined; minBlockSize?: string | undefined; minHeight?: string | undefined; minInlineSize?: string | undefined; minWidth?: string | undefined; mixBlendMode?: string | undefined; objectFit?: string | undefined; objectPosition?: string | undefined; offset?: string | undefined; offsetAnchor?: string | undefined; offsetDistance?: string | undefined; offsetPath?: string | undefined; offsetPosition?: string | undefined; offsetRotate?: string | undefined; opacity?: string | undefined; order?: string | undefined; orphans?: string | undefined; outline?: string | undefined; outlineColor?: string | undefined; outlineOffset?: string | undefined; outlineStyle?: string | undefined; outlineWidth?: string | undefined; overflow?: string | undefined; overflowAnchor?: string | undefined; overflowBlock?: string | undefined; overflowClipMargin?: string | undefined; overflowInline?: string | undefined; overflowWrap?: string | undefined; overflowX?: string | undefined; overflowY?: string | undefined; overscrollBehavior?: string | undefined; overscrollBehaviorBlock?: string | undefined; overscrollBehaviorInline?: string | undefined; overscrollBehaviorX?: string | undefined; overscrollBehaviorY?: string | undefined; padding?: string | undefined; paddingBlock?: string | undefined; paddingBlockEnd?: string | undefined; paddingBlockStart?: string | undefined; paddingBottom?: string | undefined; paddingInline?: string | undefined; paddingInlineEnd?: string | undefined; paddingInlineStart?: string | undefined; paddingLeft?: string | undefined; paddingRight?: string | undefined; paddingTop?: string | undefined; page?: string | undefined; pageBreakAfter?: string | undefined; pageBreakBefore?: string | undefined; pageBreakInside?: string | undefined; paintOrder?: string | undefined; parentRule?: CSSRule | null | undefined; perspective?: string | undefined; perspectiveOrigin?: string | undefined; placeContent?: string | undefined; placeItems?: string | undefined; placeSelf?: string | undefined; pointerEvents?: string | undefined; position?: string | undefined; printColorAdjust?: string | undefined; quotes?: string | undefined; r?: string | undefined; resize?: string | undefined; right?: string | undefined; rotate?: string | undefined; rowGap?: string | undefined; rubyAlign?: string | undefined; rubyPosition?: string | undefined; rx?: string | undefined; ry?: string | undefined; scale?: string | undefined; scrollBehavior?: string | undefined; scrollMargin?: string | undefined; scrollMarginBlock?: string | undefined; scrollMarginBlockEnd?: string | undefined; scrollMarginBlockStart?: string | undefined; scrollMarginBottom?: string | undefined; scrollMarginInline?: string | undefined; scrollMarginInlineEnd?: string | undefined; scrollMarginInlineStart?: string | undefined; scrollMarginLeft?: string | undefined; scrollMarginRight?: string | undefined; scrollMarginTop?: string | undefined; scrollPadding?: string | undefined; scrollPaddingBlock?: string | undefined; scrollPaddingBlockEnd?: string | undefined; scrollPaddingBlockStart?: string | undefined; scrollPaddingBottom?: string | undefined; scrollPaddingInline?: string | undefined; scrollPaddingInlineEnd?: string | undefined; scrollPaddingInlineStart?: string | undefined; scrollPaddingLeft?: string | undefined; scrollPaddingRight?: string | undefined; scrollPaddingTop?: string | undefined; scrollSnapAlign?: string | undefined; scrollSnapStop?: string | undefined; scrollSnapType?: string | undefined; scrollbarColor?: string | undefined; scrollbarGutter?: string | undefined; scrollbarWidth?: string | undefined; shapeImageThreshold?: string | undefined; shapeMargin?: string | undefined; shapeOutside?: string | undefined; shapeRendering?: string | undefined; stopColor?: string | undefined; stopOpacity?: string | undefined; stroke?: string | undefined; strokeDasharray?: string | undefined; strokeDashoffset?: string | undefined; strokeLinecap?: string | undefined; strokeLinejoin?: string | undefined; strokeMiterlimit?: string | undefined; strokeOpacity?: string | undefined; strokeWidth?: string | undefined; tabSize?: string | undefined; tableLayout?: string | undefined; textAlign?: string | undefined; textAlignLast?: string | undefined; textAnchor?: string | undefined; textBox?: string | undefined; textBoxEdge?: string | undefined; textBoxTrim?: string | undefined; textCombineUpright?: string | undefined; textDecoration?: string | undefined; textDecorationColor?: string | undefined; textDecorationLine?: string | undefined; textDecorationSkipInk?: string | undefined; textDecorationStyle?: string | undefined; textDecorationThickness?: string | undefined; textEmphasis?: string | undefined; textEmphasisColor?: string | undefined; textEmphasisPosition?: string | undefined; textEmphasisStyle?: string | undefined; textIndent?: string | undefined; textOrientation?: string | undefined; textOverflow?: string | undefined; textRendering?: string | undefined; textShadow?: string | undefined; textTransform?: string | undefined; textUnderlineOffset?: string | undefined; textUnderlinePosition?: string | undefined; textWrap?: string | undefined; textWrapMode?: string | undefined; textWrapStyle?: string | undefined; top?: string | undefined; touchAction?: string | undefined; transform?: string | undefined; transformBox?: string | undefined; transformOrigin?: string | undefined; transformStyle?: string | undefined; transition?: string | undefined; transitionBehavior?: string | undefined; transitionDelay?: string | undefined; transitionDuration?: string | undefined; transitionProperty?: string | undefined; transitionTimingFunction?: string | undefined; translate?: string | undefined; unicodeBidi?: string | undefined; userSelect?: string | undefined; vectorEffect?: string | undefined; verticalAlign?: string | undefined; viewTransitionClass?: string | undefined; viewTransitionName?: string | undefined; visibility?: string | undefined; webkitAlignContent?: string | undefined; webkitAlignItems?: string | undefined; webkitAlignSelf?: string | undefined; webkitAnimation?: string | undefined; webkitAnimationDelay?: string | undefined; webkitAnimationDirection?: string | undefined; webkitAnimationDuration?: string | undefined; webkitAnimationFillMode?: string | undefined; webkitAnimationIterationCount?: string | undefined; webkitAnimationName?: string | undefined; webkitAnimationPlayState?: string | undefined; webkitAnimationTimingFunction?: string | undefined; webkitAppearance?: string | undefined; webkitBackfaceVisibility?: string | undefined; webkitBackgroundClip?: string | undefined; webkitBackgroundOrigin?: string | undefined; webkitBackgroundSize?: string | undefined; webkitBorderBottomLeftRadius?: string | undefined; webkitBorderBottomRightRadius?: string | undefined; webkitBorderRadius?: string | undefined; webkitBorderTopLeftRadius?: string | undefined; webkitBorderTopRightRadius?: string | undefined; webkitBoxAlign?: string | undefined; webkitBoxFlex?: string | undefined; webkitBoxOrdinalGroup?: string | undefined; webkitBoxOrient?: string | undefined; webkitBoxPack?: string | undefined; webkitBoxShadow?: string | undefined; webkitBoxSizing?: string | undefined; webkitFilter?: string | undefined; webkitFlex?: string | undefined; webkitFlexBasis?: string | undefined; webkitFlexDirection?: string | undefined; webkitFlexFlow?: string | undefined; webkitFlexGrow?: string | undefined; webkitFlexShrink?: string | undefined; webkitFlexWrap?: string | undefined; webkitJustifyContent?: string | undefined; webkitLineClamp?: string | undefined; webkitMask?: string | undefined; webkitMaskBoxImage?: string | undefined; webkitMaskBoxImageOutset?: string | undefined; webkitMaskBoxImageRepeat?: string | undefined; webkitMaskBoxImageSlice?: string | undefined; webkitMaskBoxImageSource?: string | undefined; webkitMaskBoxImageWidth?: string | undefined; webkitMaskClip?: string | undefined; webkitMaskComposite?: string | undefined; webkitMaskImage?: string | undefined; webkitMaskOrigin?: string | undefined; webkitMaskPosition?: string | undefined; webkitMaskRepeat?: string | undefined; webkitMaskSize?: string | undefined; webkitOrder?: string | undefined; webkitPerspective?: string | undefined; webkitPerspectiveOrigin?: string | undefined; webkitTextFillColor?: string | undefined; webkitTextSizeAdjust?: string | undefined; webkitTextStroke?: string | undefined; webkitTextStrokeColor?: string | undefined; webkitTextStrokeWidth?: string | undefined; webkitTransform?: string | undefined; webkitTransformOrigin?: string | undefined; webkitTransformStyle?: string | undefined; webkitTransition?: string | undefined; webkitTransitionDelay?: string | undefined; webkitTransitionDuration?: string | undefined; webkitTransitionProperty?: string | undefined; webkitTransitionTimingFunction?: string | undefined; webkitUserSelect?: string | undefined; whiteSpace?: string | undefined; whiteSpaceCollapse?: string | undefined; widows?: string | undefined; width?: string | undefined; willChange?: string | undefined; wordBreak?: string | undefined; wordSpacing?: string | undefined; wordWrap?: string | undefined; writingMode?: string | undefined; x?: string | undefined; y?: string | undefined; zIndex?: string | undefined; zoom?: string | undefined; getPropertyPriority?: ((property: string) => string) | undefined; getPropertyValue?: ((property: string) => string) | undefined; item?: ((index: number) => string) | undefined; removeProperty?: ((property: string) => string) | undefined; setProperty?: ((property: string, value: string | null, priority?: string) => void) | undefined; [Symbol.iterator]?: (() => ArrayIterator) | undefined; }>; displayValue: _angular_core.Signal; isBoolLike: _angular_core.Signal; isUrlValue: _angular_core.Signal; testId: _angular_core.Signal; buttonDisabled: _angular_core.Signal; buttonAccessibleName: _angular_core.Signal; boolValue: _angular_core.Signal; stringValue: _angular_core.Signal; tags: _angular_core.Signal; isVisible: _angular_core.WritableSignal; copySuccess: _angular_core.WritableSignal; isCollection: _angular_core.Signal; protected canRenderField: _angular_core.Signal; toggleVisibility(e: Event): void; private normalizeBoolean; private normalizeString; private normalizeTagsArray; private checkValidUrl; copyValue(event: Event): void; protected buttonClicked(event: MouseEvent): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration, "mfp-resource-field", never, { "fieldDefinition": { "alias": "fieldDefinition"; "required": true; "isSignal": true; }; "resource": { "alias": "resource"; "required": false; "isSignal": true; }; "permissions": { "alias": "permissions"; "required": false; "isSignal": true; }; }, { "buttonClick": "buttonClick"; }, never, never, true, never>; } declare const ICON_DESIGN_POSITIVE = "Positive"; declare const ICON_DESIGN_NEGATIVE = "Negative"; type IconDesignType = typeof ICON_DESIGN_POSITIVE | typeof ICON_DESIGN_NEGATIVE; declare class BooleanValue { boolValue: _angular_core.InputSignal; testId: _angular_core.InputSignal; iconDesign: _angular_core.Signal; iconName: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class LinkValue { urlValue: _angular_core.InputSignal; testId: _angular_core.InputSignal; stopPropagation(event: Event): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class SecretValue { value: _angular_core.InputSignal; isVisible: _angular_core.InputSignal; testId: _angular_core.InputSignal; maskedValue: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class TagListValue { tags: _angular_core.InputSignal; tagSettings: _angular_core.InputSignal; testId: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class VisitedServiceCard { serviceType: _angular_core.InputSignal; serviceName: _angular_core.InputSignal; serviceDescription: _angular_core.InputSignal; serviceIcon: _angular_core.InputSignal; path: _angular_core.InputSignal; readonly cardClick: _angular_core.OutputEmitterRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class Favorites { readonly items: { label: string; icon: string; action: string; }[]; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** Possible health states for a service. */ type ServiceStatusValue = 'operational' | 'degraded' | 'outage' | 'maintenance'; /** A single service entry displayed in the service-status card. */ interface ServiceStatusItem { /** Display name of the service. */ name: string; /** SAP UI5 icon name used as the service icon. */ icon: string; /** Current health status of the service. */ status: ServiceStatusValue; } declare class ServiceStatusCard { readonly services: ServiceStatusItem[]; readonly statusConfig: Record; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class WhatsNew { readonly headlines: { title: string; description: string; icon: string; }[]; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MockCard { readonly title: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } export { BooleanValue, CARD_TYPES, DASHBOARD_I18N_KEYS, Dashboard, DashboardI18nService, DeclarativeForm, DeclarativeTable, DeclarativeTableCard, DeleteConfirmationDialog, EN_DEFAULTS, Favorites, LinkValue, MockCard, ResourceField, ResourceFormDialog, SanitizeHtmlPipe, SecretValue, ServiceStatusCard, TagListValue, VisitedServiceCard, WhatsNew, defineDashboardElementMethods }; export type { ButtonSettings, CardConfig, CardsType, CssRule, DashboardButtonsSettings, DashboardConfig, DashboardI18nKey, DashboardTranslations, DeleteResourceConfirmationConfig, FieldDefinition, FieldFilterDefinition, FormFieldChangeEvent, FormFieldDefinition, FormFieldErrors, GenericResource, IconDesignType, ModalSettings, MountCfg, PropertyField, ResourceFieldButtonClickEvent, ResourceFormConfig, RuleCondition, SectionConfig, ServiceStatusItem, ServiceStatusValue, TableCardButtonSettings, TableCardConfig, TableCardFormState, TableCardSearchConfig, TableConfig, TableFieldDefinition, TagSettings, TransformType, UiSettings, ValueRule };