@fundamental-ngx/platform 0.62.0-rc.26 → 0.62.0-rc.28

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.
@@ -80,6 +80,16 @@ class ButtonComponent {
80
80
  this._effectiveFdType = computed(() => this.buttonType() || this.fdType(), ...(ngDevMode ? [{ debugName: "_effectiveFdType" }] : []));
81
81
  /** @hidden Computed to determine effective toggled state */
82
82
  this._effectiveToggled = computed(() => this.toggled() || this.ariaPressed() || this.ariaSelected(), ...(ngDevMode ? [{ debugName: "_effectiveToggled" }] : []));
83
+ /**
84
+ * Computed accessible name for the button.
85
+ * Follows ARIA accessible name computation priority:
86
+ * 1. aria-label input
87
+ * 2. title input (commonly used for icon-only buttons)
88
+ * 3. label input (visible text)
89
+ * 4. glyph name as fallback (e.g., "decline" -> "decline")
90
+ * @hidden
91
+ */
92
+ this.accessibleName = computed(() => this.ariaLabel() || this.title() || this.label() || this.glyph() || null, ...(ngDevMode ? [{ debugName: "accessibleName" }] : []));
83
93
  warnOnce("Platform's ButtonComponent is deprecated and will be removed in the next major release. Consider using Core's ButtonComponent instead.");
84
94
  // Warn about deprecated inputs
85
95
  effect(() => {
@@ -143,7 +153,7 @@ class ButtonComponent {
143
153
  provide: FDP_BUTTON,
144
154
  useExisting: ButtonComponent
145
155
  }
146
- ], ngImport: i0, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id()\"\n [attr.name]=\"name()\"\n [ariaLabel]=\"ariaLabel()\"\n [attr.aria-controls]=\"ariaControlsId()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.title]=\"!!glyph() && !label() ? title() : null\"\n [attr.value]=\"value()\"\n [glyphPosition]=\"glyphPosition()\"\n [label]=\"label()\"\n [type]=\"type()\"\n [toggled]=\"_effectiveToggled()\"\n [glyph]=\"glyph()\"\n [glyphFont]=\"glyphFont()\"\n [disabled]=\"disabled()\"\n [fdType]=\"_effectiveFdType()\"\n class=\"fd-ellipsis\"\n [class.is-disabled]=\"ariaDisabled()\"\n [style.width]=\"width()\"\n (click)=\"onBtnClick($event)\"\n></button>\n", styles: [":host{display:inline-block}:host(:focus){outline:none}.fd-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], dependencies: [{ kind: "component", type: ButtonComponent$1, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }] }); }
156
+ ], ngImport: i0, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id()\"\n [attr.name]=\"name()\"\n [ariaLabel]=\"accessibleName()\"\n [attr.aria-controls]=\"ariaControlsId()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.title]=\"!!glyph() && !label() ? title() : null\"\n [attr.value]=\"value()\"\n [glyphPosition]=\"glyphPosition()\"\n [label]=\"label()\"\n [type]=\"type()\"\n [toggled]=\"_effectiveToggled()\"\n [glyph]=\"glyph()\"\n [glyphFont]=\"glyphFont()\"\n [disabled]=\"disabled()\"\n [fdType]=\"_effectiveFdType()\"\n class=\"fd-ellipsis\"\n [class.is-disabled]=\"ariaDisabled()\"\n [style.width]=\"width()\"\n (click)=\"onBtnClick($event)\"\n></button>\n", styles: [":host{display:inline-block}:host(:focus){outline:none}.fd-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], dependencies: [{ kind: "component", type: ButtonComponent$1, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }] }); }
147
157
  }
148
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonComponent, decorators: [{
149
159
  type: Component,
@@ -155,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
155
165
  ], imports: [ButtonComponent$1], host: {
156
166
  role: 'button',
157
167
  '[attr.tabindex]': '-1'
158
- }, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id()\"\n [attr.name]=\"name()\"\n [ariaLabel]=\"ariaLabel()\"\n [attr.aria-controls]=\"ariaControlsId()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.title]=\"!!glyph() && !label() ? title() : null\"\n [attr.value]=\"value()\"\n [glyphPosition]=\"glyphPosition()\"\n [label]=\"label()\"\n [type]=\"type()\"\n [toggled]=\"_effectiveToggled()\"\n [glyph]=\"glyph()\"\n [glyphFont]=\"glyphFont()\"\n [disabled]=\"disabled()\"\n [fdType]=\"_effectiveFdType()\"\n class=\"fd-ellipsis\"\n [class.is-disabled]=\"ariaDisabled()\"\n [style.width]=\"width()\"\n (click)=\"onBtnClick($event)\"\n></button>\n", styles: [":host{display:inline-block}:host(:focus){outline:none}.fd-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"] }]
168
+ }, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id()\"\n [attr.name]=\"name()\"\n [ariaLabel]=\"accessibleName()\"\n [attr.aria-controls]=\"ariaControlsId()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.title]=\"!!glyph() && !label() ? title() : null\"\n [attr.value]=\"value()\"\n [glyphPosition]=\"glyphPosition()\"\n [label]=\"label()\"\n [type]=\"type()\"\n [toggled]=\"_effectiveToggled()\"\n [glyph]=\"glyph()\"\n [glyphFont]=\"glyphFont()\"\n [disabled]=\"disabled()\"\n [fdType]=\"_effectiveFdType()\"\n class=\"fd-ellipsis\"\n [class.is-disabled]=\"ariaDisabled()\"\n [style.width]=\"width()\"\n (click)=\"onBtnClick($event)\"\n></button>\n", styles: [":host{display:inline-block}:host(:focus){outline:none}.fd-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"] }]
159
169
  }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], glyphPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "glyphPosition", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], glyph: [{ type: i0.Input, args: [{ isSignal: true, alias: "glyph", required: false }] }], glyphFont: [{ type: i0.Input, args: [{ isSignal: true, alias: "glyphFont", required: false }] }], fdType: [{ type: i0.Input, args: [{ isSignal: true, alias: "fdType", required: false }] }], buttonType: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonType", required: false }] }], toggled: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggled", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], ariaSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaSelected", required: false }] }], ariaDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDisabled", required: false }] }], ariaExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaExpanded", required: false }] }], ariaControlsId: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaControlsId", required: false }] }], ariaPressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaPressed", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], buttonClicked: [{ type: i0.Output, args: ["buttonClicked"] }] } });
160
170
  class DeprecatedButtonAriaSelected {
161
171
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-button.mjs","sources":["../../../../libs/platform/button/tokens.ts","../../../../libs/platform/button/button.component.ts","../../../../libs/platform/button/button.component.html","../../../../libs/platform/button/button.module.ts","../../../../libs/platform/button/fundamental-ngx-platform-button.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FDP_BUTTON = new InjectionToken('FdpButtonComponent');\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Component, booleanAttribute, computed, effect, input, output } from '@angular/core';\n\nimport { ModuleDeprecation, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { ButtonType, ButtonComponent as CoreButtonComponent, GlyphPosition } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { ButtonModel } from './button.model';\nimport { FDP_BUTTON } from './tokens';\n\nlet platformButtonId = 0;\n\n/**\n * @deprecated\n * Button component is deprecated. Use `fd-button` from `@fundamental-ngx/core` instead.\n */\n@Component({\n selector: 'fdp-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n providers: [\n {\n provide: FDP_BUTTON,\n useExisting: ButtonComponent\n }\n ],\n imports: [CoreButtonComponent],\n host: {\n role: 'button',\n '[attr.tabindex]': '-1'\n }\n})\nexport class ButtonComponent implements ButtonModel {\n /** Button ID - default value is provided if not set */\n readonly id = input(`fdp-button-${++platformButtonId}`);\n\n /** Name for the element */\n readonly name = input<string>();\n\n /** Width of the element */\n readonly width = input<string>();\n\n /** Disabled status of the element */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Sets the `aria-label` attribute to the element */\n readonly ariaLabel = input<string>();\n\n /** Sets the `aria-labelledby` attribute to the element */\n readonly ariaLabelledBy = input<string>();\n\n /** Sets the `aria-describedby` attribute to the element */\n readonly ariaDescribedBy = input<string>();\n\n /** Position of glyph related to text */\n readonly glyphPosition = input<GlyphPosition>('before');\n\n /** Text rendered inside button component */\n readonly label = input<string>();\n\n /** The icon to include in the button. See the icon page for the list of icons */\n readonly glyph = input<string>();\n\n /** Glyph font family */\n readonly glyphFont = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /** The type of the button. Types include:\n * 'standard' | 'positive' | 'negative' | 'attention' | 'half' | 'ghost' | 'transparent' | 'emphasized' | 'menu'.\n * Leave empty for default (Standard button).\n * Default value is set to 'standard'\n */\n readonly fdType = input<ButtonType>('standard');\n\n /**\n * @deprecated\n * Use `fdType` property.\n * The buttonType of the button. Types includes\n * 'standard','positive', 'negative', 'attention', 'ghost',\n * 'transparent', 'emphasized','menu'.\n * Leave empty for default (standard button).\n */\n readonly buttonType = input<ButtonType>();\n\n /** Whether button is in toggled state */\n readonly toggled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** arialabel, tooltip for button, intended to be used when the button only contains an icon */\n readonly title = input<string>();\n\n /** @deprecated use toggled input property instead\n * aria-selected for accessibility to the native HTML button\n */\n readonly ariaSelected = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** aria-disabled for accessibility to the native HTML button */\n readonly ariaDisabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** propagate aria-expanded for accessibility to the native HTML button */\n readonly ariaExpanded = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** propagate aria-controls for accessibility to the native HTML button */\n readonly ariaControlsId = input<string>();\n\n /** @deprecated use toggled input property instead\n * propagate aria-pressed for accessibility to the native HTML button\n */\n readonly ariaPressed = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Specifies the type to the native HTML button */\n readonly type = input<string>();\n\n /** Specifies an initial value to the native HTML button */\n readonly value = input<string>();\n\n /** Event sent when button is clicked */\n readonly buttonClicked = output<any>();\n\n /** @hidden Computed to determine effective fdType (buttonType overrides fdType if provided) */\n protected readonly _effectiveFdType = computed(() => this.buttonType() || this.fdType());\n\n /** @hidden Computed to determine effective toggled state */\n protected readonly _effectiveToggled = computed(() => this.toggled() || this.ariaPressed() || this.ariaSelected());\n\n /** @hidden */\n constructor() {\n warnOnce(\n \"Platform's ButtonComponent is deprecated and will be removed in the next major release. Consider using Core's ButtonComponent instead.\"\n );\n\n // Warn about deprecated inputs\n effect(() => {\n if (this.ariaSelected()) {\n warnOnce('Property ariaSelected is deprecated. Use `toggled` input property instead.');\n }\n });\n\n effect(() => {\n if (this.ariaPressed()) {\n warnOnce('Property ariaPressed is deprecated. Use `toggled` input property instead.');\n }\n });\n }\n\n /**\n * Programmatically set the disabled state.\n * Implements ButtonModel interface.\n * Note: Cannot directly set signal inputs. This method exists for interface compatibility.\n */\n setDisabled(_value: boolean): void {\n console.warn('setDisabled() cannot modify signal input. Use template binding [disabled]=\"value\" instead.');\n }\n\n /**\n * Get the current disabled state.\n * Implements ButtonModel interface.\n */\n isDisabled(): boolean {\n return this.disabled();\n }\n\n /**\n * Programmatically set the button type.\n * Implements ButtonModel interface.\n * Note: Cannot directly set signal inputs. This method exists for interface compatibility.\n */\n setFdType(_value: ButtonType): void {\n console.warn('setFdType() cannot modify signal input. Use template binding [fdType]=\"value\" instead.');\n }\n\n /**\n * Get the current button type.\n * Implements ButtonModel interface.\n */\n getFdType(): ButtonType {\n return this._effectiveFdType();\n }\n\n /**\n * No-op method for interface compatibility.\n * Implements ButtonModel interface.\n * Signal-based components don't need manual change detection.\n */\n markForCheck(): void {\n // No-op: signals automatically trigger change detection\n }\n\n /**\n * Handles button click\n */\n protected onBtnClick($event: any): void {\n this.buttonClicked.emit($event);\n }\n}\n\nexport class DeprecatedButtonAriaSelected implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaSelected input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n\nexport class DeprecatedButtonAriaPressed implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaPressed input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n","<button\n #fdButton\n fd-button\n [attr.id]=\"id()\"\n [attr.name]=\"name()\"\n [ariaLabel]=\"ariaLabel()\"\n [attr.aria-controls]=\"ariaControlsId()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.title]=\"!!glyph() && !label() ? title() : null\"\n [attr.value]=\"value()\"\n [glyphPosition]=\"glyphPosition()\"\n [label]=\"label()\"\n [type]=\"type()\"\n [toggled]=\"_effectiveToggled()\"\n [glyph]=\"glyph()\"\n [glyphFont]=\"glyphFont()\"\n [disabled]=\"disabled()\"\n [fdType]=\"_effectiveFdType()\"\n class=\"fd-ellipsis\"\n [class.is-disabled]=\"ariaDisabled()\"\n [style.width]=\"width()\"\n (click)=\"onBtnClick($event)\"\n></button>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { ButtonComponent } from './button.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [ButtonComponent, ContentDensityModule],\n exports: [ButtonComponent, ContentDensityModule]\n})\nexport class PlatformButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CoreButtonComponent"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-button.mjs","sources":["../../../../libs/platform/button/tokens.ts","../../../../libs/platform/button/button.component.ts","../../../../libs/platform/button/button.component.html","../../../../libs/platform/button/button.module.ts","../../../../libs/platform/button/fundamental-ngx-platform-button.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FDP_BUTTON = new InjectionToken('FdpButtonComponent');\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Component, booleanAttribute, computed, effect, input, output } from '@angular/core';\n\nimport { ModuleDeprecation, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { ButtonType, ButtonComponent as CoreButtonComponent, GlyphPosition } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { ButtonModel } from './button.model';\nimport { FDP_BUTTON } from './tokens';\n\nlet platformButtonId = 0;\n\n/**\n * @deprecated\n * Button component is deprecated. Use `fd-button` from `@fundamental-ngx/core` instead.\n */\n@Component({\n selector: 'fdp-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n providers: [\n {\n provide: FDP_BUTTON,\n useExisting: ButtonComponent\n }\n ],\n imports: [CoreButtonComponent],\n host: {\n role: 'button',\n '[attr.tabindex]': '-1'\n }\n})\nexport class ButtonComponent implements ButtonModel {\n /** Button ID - default value is provided if not set */\n readonly id = input(`fdp-button-${++platformButtonId}`);\n\n /** Name for the element */\n readonly name = input<string>();\n\n /** Width of the element */\n readonly width = input<string>();\n\n /** Disabled status of the element */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Sets the `aria-label` attribute to the element */\n readonly ariaLabel = input<string>();\n\n /** Sets the `aria-labelledby` attribute to the element */\n readonly ariaLabelledBy = input<string>();\n\n /** Sets the `aria-describedby` attribute to the element */\n readonly ariaDescribedBy = input<string>();\n\n /** Position of glyph related to text */\n readonly glyphPosition = input<GlyphPosition>('before');\n\n /** Text rendered inside button component */\n readonly label = input<string>();\n\n /** The icon to include in the button. See the icon page for the list of icons */\n readonly glyph = input<string>();\n\n /** Glyph font family */\n readonly glyphFont = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /** The type of the button. Types include:\n * 'standard' | 'positive' | 'negative' | 'attention' | 'half' | 'ghost' | 'transparent' | 'emphasized' | 'menu'.\n * Leave empty for default (Standard button).\n * Default value is set to 'standard'\n */\n readonly fdType = input<ButtonType>('standard');\n\n /**\n * @deprecated\n * Use `fdType` property.\n * The buttonType of the button. Types includes\n * 'standard','positive', 'negative', 'attention', 'ghost',\n * 'transparent', 'emphasized','menu'.\n * Leave empty for default (standard button).\n */\n readonly buttonType = input<ButtonType>();\n\n /** Whether button is in toggled state */\n readonly toggled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** arialabel, tooltip for button, intended to be used when the button only contains an icon */\n readonly title = input<string>();\n\n /** @deprecated use toggled input property instead\n * aria-selected for accessibility to the native HTML button\n */\n readonly ariaSelected = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** aria-disabled for accessibility to the native HTML button */\n readonly ariaDisabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** propagate aria-expanded for accessibility to the native HTML button */\n readonly ariaExpanded = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** propagate aria-controls for accessibility to the native HTML button */\n readonly ariaControlsId = input<string>();\n\n /** @deprecated use toggled input property instead\n * propagate aria-pressed for accessibility to the native HTML button\n */\n readonly ariaPressed = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Specifies the type to the native HTML button */\n readonly type = input<string>();\n\n /** Specifies an initial value to the native HTML button */\n readonly value = input<string>();\n\n /** Event sent when button is clicked */\n readonly buttonClicked = output<any>();\n\n /** @hidden Computed to determine effective fdType (buttonType overrides fdType if provided) */\n protected readonly _effectiveFdType = computed(() => this.buttonType() || this.fdType());\n\n /** @hidden Computed to determine effective toggled state */\n protected readonly _effectiveToggled = computed(() => this.toggled() || this.ariaPressed() || this.ariaSelected());\n\n /**\n * Computed accessible name for the button.\n * Follows ARIA accessible name computation priority:\n * 1. aria-label input\n * 2. title input (commonly used for icon-only buttons)\n * 3. label input (visible text)\n * 4. glyph name as fallback (e.g., \"decline\" -> \"decline\")\n * @hidden\n */\n protected readonly accessibleName = computed(\n () => this.ariaLabel() || this.title() || this.label() || this.glyph() || null\n );\n\n /** @hidden */\n constructor() {\n warnOnce(\n \"Platform's ButtonComponent is deprecated and will be removed in the next major release. Consider using Core's ButtonComponent instead.\"\n );\n\n // Warn about deprecated inputs\n effect(() => {\n if (this.ariaSelected()) {\n warnOnce('Property ariaSelected is deprecated. Use `toggled` input property instead.');\n }\n });\n\n effect(() => {\n if (this.ariaPressed()) {\n warnOnce('Property ariaPressed is deprecated. Use `toggled` input property instead.');\n }\n });\n }\n\n /**\n * Programmatically set the disabled state.\n * Implements ButtonModel interface.\n * Note: Cannot directly set signal inputs. This method exists for interface compatibility.\n */\n setDisabled(_value: boolean): void {\n console.warn('setDisabled() cannot modify signal input. Use template binding [disabled]=\"value\" instead.');\n }\n\n /**\n * Get the current disabled state.\n * Implements ButtonModel interface.\n */\n isDisabled(): boolean {\n return this.disabled();\n }\n\n /**\n * Programmatically set the button type.\n * Implements ButtonModel interface.\n * Note: Cannot directly set signal inputs. This method exists for interface compatibility.\n */\n setFdType(_value: ButtonType): void {\n console.warn('setFdType() cannot modify signal input. Use template binding [fdType]=\"value\" instead.');\n }\n\n /**\n * Get the current button type.\n * Implements ButtonModel interface.\n */\n getFdType(): ButtonType {\n return this._effectiveFdType();\n }\n\n /**\n * No-op method for interface compatibility.\n * Implements ButtonModel interface.\n * Signal-based components don't need manual change detection.\n */\n markForCheck(): void {\n // No-op: signals automatically trigger change detection\n }\n\n /**\n * Handles button click\n */\n protected onBtnClick($event: any): void {\n this.buttonClicked.emit($event);\n }\n}\n\nexport class DeprecatedButtonAriaSelected implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaSelected input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n\nexport class DeprecatedButtonAriaPressed implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaPressed input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n","<button\n #fdButton\n fd-button\n [attr.id]=\"id()\"\n [attr.name]=\"name()\"\n [ariaLabel]=\"accessibleName()\"\n [attr.aria-controls]=\"ariaControlsId()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.title]=\"!!glyph() && !label() ? title() : null\"\n [attr.value]=\"value()\"\n [glyphPosition]=\"glyphPosition()\"\n [label]=\"label()\"\n [type]=\"type()\"\n [toggled]=\"_effectiveToggled()\"\n [glyph]=\"glyph()\"\n [glyphFont]=\"glyphFont()\"\n [disabled]=\"disabled()\"\n [fdType]=\"_effectiveFdType()\"\n class=\"fd-ellipsis\"\n [class.is-disabled]=\"ariaDisabled()\"\n [style.width]=\"width()\"\n (click)=\"onBtnClick($event)\"\n></button>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { ButtonComponent } from './button.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [ButtonComponent, ContentDensityModule],\n exports: [ButtonComponent, ContentDensityModule]\n})\nexport class PlatformButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CoreButtonComponent"],"mappings":"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"}
@@ -3294,7 +3294,7 @@ class TableHeaderRowComponent extends TableRowDirective {
3294
3294
  provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
3295
3295
  useExisting: TableHeaderRowComponent
3296
3296
  }
3297
- ], viewQueries: [{ propertyName: "_focusableCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (_fdpTableService._semanticHighlighting$()) {\n <th\n [class.fd-table__cell--fixed]=\"fixed\"\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n fd-table-status-indicator\n fdkDisabled\n [style.min-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n [style.max-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n ></th>\n}\n\n@if (isShownSelectionColumn) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n [focusable]=\"true\"\n [class.fd-table__cell--fixed]=\"fixed\"\n class=\"fd-table__cell--checkbox\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: isRtl() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n (keydown.enter)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (keydown.space)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState);\n $event.preventDefault()\n \"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n [attr.title]=\"\n !checkedState\n ? ('platformTable.selectAllCheckboxLabel' | fdTranslate)()\n : ('platformTable.deselectAllCheckboxLabel' | fdTranslate)()\n \"\n [attr.aria-description]=\"\n checkedState\n ? ('platformTable.deselectAllCheckboxLongLabel' | fdTranslate)()\n : checkedState === null\n ? ('platformTable.selectAllCheckboxMixedLongLabel' | fdTranslate)()\n : ('platformTable.selectAllCheckboxLongLabel' | fdTranslate)()\n \"\n >\n @if (selectionMode === SELECTION_MODE.MULTIPLE) {\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [fdkDisabled]=\"_fdpTableService.visibleColumnsLength() === 0 || disableSelectionCheckbox\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"checkedState\"\n (ngModelChange)=\"_tableRowService.toggleAllSelectableRows($event)\"\n ></fd-checkbox>\n }\n </th>\n}\n\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <th\n [focusable]=\"true\"\n role=\"columnheader\"\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [id]=\"rowId + '__' + column.name\"\n [attr.aria-colindex]=\"$index\"\n [attr.aria-sort]=\"_fdpTableService.sortRules$().get(column.key) | fdpTableColumnSortingDirection\"\n [class.fd-table__cell--non-interactive]=\"column.nonInteractive\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : '',\n (column | isColumnHasHeaderMenu) ? 'fd-table__item--clickable' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : isRtl()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n : noBorders\n : noHorizontalBorders\n : noVerticalBorders\n \"\n [fdPopoverTrigger]=\"(column | isColumnHasHeaderMenu) ? tablePopover.popover : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n >\n <fdp-table-header-cell-content [id]=\"rowId\" [column]=\"column\" [attr.title]=\"column.label\">\n <!-- Header menu -->\n <fdp-table-cell-header-popover\n #tablePopover\n [disabled]=\"!(column | isColumnHasHeaderMenu)\"\n [columnFrozen]=\"column._freezed || column._endFreezed\"\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [popoverTemplate]=\"(column | isColumnHasHeaderMenu) ? column.headerCellPopoverTemplate : null\"\n [filteringFromHeaderDisabled]=\"_fdpTableService._isFilteringFromHeaderDisabled$()\"\n ></fdp-table-cell-header-popover>\n </fdp-table-header-cell-content>\n </th>\n}\n\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n class=\"fdp-table__cell--navigation is-last-child\"\n role=\"columnheader\"\n ></th>\n}\n\n<th\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n></th>\n", dependencies: [{ kind: "directive", type: i0.forwardRef(() => TableCellDirective), selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i0.forwardRef(() => TableStatusIndicatorDirective), selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: i0.forwardRef(() => DisabledBehaviorDirective), selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "component", type: i0.forwardRef(() => CheckboxComponent), selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => FormsModule) }, { kind: "directive", type: i0.forwardRef(() => i1$2.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i1$2.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i0.forwardRef(() => PlatformTableCellResizableDirective), selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(() => PopoverTriggerDirective), selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "component", type: i0.forwardRef(() => TableHeaderCellContentComponent), selector: "fdp-table-header-cell-content", inputs: ["id", "column"] }, { kind: "component", type: i0.forwardRef(() => TableCellHeaderPopoverComponent), selector: "fdp-table-cell-header-popover", inputs: ["column", "popoverTemplate", "disabled", "columnFrozen", "filteringFromHeaderDisabled", "columnIndex"] }, { kind: "pipe", type: i0.forwardRef(() => FdTranslatePipe), name: "fdTranslate" }, { kind: "pipe", type: i0.forwardRef(() => SelectionCellStylesPipe), name: "selectionCellStyles" }, { kind: "pipe", type: i0.forwardRef(() => TableCellStylesPipe), name: "tableCellStyles" }, { kind: "pipe", type: i0.forwardRef(() => ColumnResizableSidePipe), name: "columnResizableSide" }, { kind: "pipe", type: i0.forwardRef(() => TableColumnSortingDirectionPipe), name: "fdpTableColumnSortingDirection" }, { kind: "pipe", type: i0.forwardRef(() => IsColumnHasHeaderMenuPipe), name: "isColumnHasHeaderMenu" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3297
+ ], viewQueries: [{ propertyName: "_focusableCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (_fdpTableService._semanticHighlighting$()) {\n <th\n [class.fd-table__cell--fixed]=\"fixed\"\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n fd-table-status-indicator\n fdkDisabled\n [style.min-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n [style.max-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n ></th>\n}\n\n@if (isShownSelectionColumn) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n [focusable]=\"true\"\n [class.fd-table__cell--fixed]=\"fixed\"\n class=\"fd-table__cell--checkbox\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: isRtl() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n (keydown.enter)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (keydown.space)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState);\n $event.preventDefault()\n \"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n [attr.title]=\"\n !checkedState\n ? ('platformTable.selectAllCheckboxLabel' | fdTranslate)()\n : ('platformTable.deselectAllCheckboxLabel' | fdTranslate)()\n \"\n [attr.aria-description]=\"\n checkedState\n ? ('platformTable.deselectAllCheckboxLongLabel' | fdTranslate)()\n : checkedState === null\n ? ('platformTable.selectAllCheckboxMixedLongLabel' | fdTranslate)()\n : ('platformTable.selectAllCheckboxLongLabel' | fdTranslate)()\n \"\n >\n @if (selectionMode === SELECTION_MODE.MULTIPLE) {\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [fdkDisabled]=\"_fdpTableService.visibleColumnsLength() === 0 || disableSelectionCheckbox\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"checkedState\"\n (ngModelChange)=\"_tableRowService.toggleAllSelectableRows($event)\"\n ></fd-checkbox>\n }\n </th>\n}\n\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <th\n [focusable]=\"true\"\n role=\"columnheader\"\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [id]=\"rowId + '__' + column.name\"\n [attr.aria-colindex]=\"$index\"\n [attr.aria-sort]=\"_fdpTableService.sortRules$().get(column.key) | fdpTableColumnSortingDirection\"\n [class.fd-table__cell--non-interactive]=\"column.nonInteractive\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : '',\n (column | isColumnHasHeaderMenu) ? 'fd-table__item--clickable' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : isRtl()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n : noBorders\n : noHorizontalBorders\n : noVerticalBorders\n \"\n [fdPopoverTrigger]=\"(column | isColumnHasHeaderMenu) ? tablePopover.popover : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n >\n <fdp-table-header-cell-content [id]=\"rowId\" [column]=\"column\" [attr.title]=\"column.label\">\n <!-- Header menu -->\n <fdp-table-cell-header-popover\n #tablePopover\n [disabled]=\"!(column | isColumnHasHeaderMenu)\"\n [columnFrozen]=\"column._freezed || column._endFreezed\"\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [popoverTemplate]=\"(column | isColumnHasHeaderMenu) ? column.headerCellPopoverTemplate : null\"\n [filteringFromHeaderDisabled]=\"_fdpTableService._isFilteringFromHeaderDisabled$()\"\n ></fdp-table-cell-header-popover>\n </fdp-table-header-cell-content>\n </th>\n}\n\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n class=\"fdp-table__cell--navigation is-last-child\"\n role=\"columnheader\"\n >\n <span class=\"fd-table__sr-only\">\n {{ ('platformTable.navigationColumnTitle' | fdTranslate)() }}\n </span>\n </th>\n}\n\n<th\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n></th>\n", styles: [".fd-table__sr-only{position:absolute;clip:rect(0,0,0,0);height:1px;width:1px;border:0;margin:-1px;padding:0;overflow:hidden;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => TableCellDirective), selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i0.forwardRef(() => TableStatusIndicatorDirective), selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: i0.forwardRef(() => DisabledBehaviorDirective), selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "component", type: i0.forwardRef(() => CheckboxComponent), selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => FormsModule) }, { kind: "directive", type: i0.forwardRef(() => i1$2.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i1$2.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i0.forwardRef(() => PlatformTableCellResizableDirective), selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(() => PopoverTriggerDirective), selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "component", type: i0.forwardRef(() => TableHeaderCellContentComponent), selector: "fdp-table-header-cell-content", inputs: ["id", "column"] }, { kind: "component", type: i0.forwardRef(() => TableCellHeaderPopoverComponent), selector: "fdp-table-cell-header-popover", inputs: ["column", "popoverTemplate", "disabled", "columnFrozen", "filteringFromHeaderDisabled", "columnIndex"] }, { kind: "pipe", type: i0.forwardRef(() => FdTranslatePipe), name: "fdTranslate" }, { kind: "pipe", type: i0.forwardRef(() => SelectionCellStylesPipe), name: "selectionCellStyles" }, { kind: "pipe", type: i0.forwardRef(() => TableCellStylesPipe), name: "tableCellStyles" }, { kind: "pipe", type: i0.forwardRef(() => ColumnResizableSidePipe), name: "columnResizableSide" }, { kind: "pipe", type: i0.forwardRef(() => TableColumnSortingDirectionPipe), name: "fdpTableColumnSortingDirection" }, { kind: "pipe", type: i0.forwardRef(() => IsColumnHasHeaderMenuPipe), name: "isColumnHasHeaderMenu" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3298
3298
  }
3299
3299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TableHeaderRowComponent, decorators: [{
3300
3300
  type: Component,
@@ -3323,7 +3323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
3323
3323
  ColumnResizableSidePipe,
3324
3324
  TableColumnSortingDirectionPipe,
3325
3325
  forwardRef(() => IsColumnHasHeaderMenuPipe)
3326
- ], template: "@if (_fdpTableService._semanticHighlighting$()) {\n <th\n [class.fd-table__cell--fixed]=\"fixed\"\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n fd-table-status-indicator\n fdkDisabled\n [style.min-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n [style.max-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n ></th>\n}\n\n@if (isShownSelectionColumn) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n [focusable]=\"true\"\n [class.fd-table__cell--fixed]=\"fixed\"\n class=\"fd-table__cell--checkbox\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: isRtl() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n (keydown.enter)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (keydown.space)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState);\n $event.preventDefault()\n \"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n [attr.title]=\"\n !checkedState\n ? ('platformTable.selectAllCheckboxLabel' | fdTranslate)()\n : ('platformTable.deselectAllCheckboxLabel' | fdTranslate)()\n \"\n [attr.aria-description]=\"\n checkedState\n ? ('platformTable.deselectAllCheckboxLongLabel' | fdTranslate)()\n : checkedState === null\n ? ('platformTable.selectAllCheckboxMixedLongLabel' | fdTranslate)()\n : ('platformTable.selectAllCheckboxLongLabel' | fdTranslate)()\n \"\n >\n @if (selectionMode === SELECTION_MODE.MULTIPLE) {\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [fdkDisabled]=\"_fdpTableService.visibleColumnsLength() === 0 || disableSelectionCheckbox\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"checkedState\"\n (ngModelChange)=\"_tableRowService.toggleAllSelectableRows($event)\"\n ></fd-checkbox>\n }\n </th>\n}\n\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <th\n [focusable]=\"true\"\n role=\"columnheader\"\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [id]=\"rowId + '__' + column.name\"\n [attr.aria-colindex]=\"$index\"\n [attr.aria-sort]=\"_fdpTableService.sortRules$().get(column.key) | fdpTableColumnSortingDirection\"\n [class.fd-table__cell--non-interactive]=\"column.nonInteractive\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : '',\n (column | isColumnHasHeaderMenu) ? 'fd-table__item--clickable' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : isRtl()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n : noBorders\n : noHorizontalBorders\n : noVerticalBorders\n \"\n [fdPopoverTrigger]=\"(column | isColumnHasHeaderMenu) ? tablePopover.popover : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n >\n <fdp-table-header-cell-content [id]=\"rowId\" [column]=\"column\" [attr.title]=\"column.label\">\n <!-- Header menu -->\n <fdp-table-cell-header-popover\n #tablePopover\n [disabled]=\"!(column | isColumnHasHeaderMenu)\"\n [columnFrozen]=\"column._freezed || column._endFreezed\"\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [popoverTemplate]=\"(column | isColumnHasHeaderMenu) ? column.headerCellPopoverTemplate : null\"\n [filteringFromHeaderDisabled]=\"_fdpTableService._isFilteringFromHeaderDisabled$()\"\n ></fdp-table-cell-header-popover>\n </fdp-table-header-cell-content>\n </th>\n}\n\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n class=\"fdp-table__cell--navigation is-last-child\"\n role=\"columnheader\"\n ></th>\n}\n\n<th\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n></th>\n" }]
3326
+ ], template: "@if (_fdpTableService._semanticHighlighting$()) {\n <th\n [class.fd-table__cell--fixed]=\"fixed\"\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n fd-table-status-indicator\n fdkDisabled\n [style.min-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n [style.max-width]=\"_fdpTableService._semanticHighlightingColumnWidth$()\"\n ></th>\n}\n\n@if (isShownSelectionColumn) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n [focusable]=\"true\"\n [class.fd-table__cell--fixed]=\"fixed\"\n class=\"fd-table__cell--checkbox\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: isRtl() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n (keydown.enter)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState)\n \"\n (keydown.space)=\"\n selectionMode === SELECTION_MODE.MULTIPLE && _tableRowService.toggleAllSelectableRows(!checkedState);\n $event.preventDefault()\n \"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n [attr.title]=\"\n !checkedState\n ? ('platformTable.selectAllCheckboxLabel' | fdTranslate)()\n : ('platformTable.deselectAllCheckboxLabel' | fdTranslate)()\n \"\n [attr.aria-description]=\"\n checkedState\n ? ('platformTable.deselectAllCheckboxLongLabel' | fdTranslate)()\n : checkedState === null\n ? ('platformTable.selectAllCheckboxMixedLongLabel' | fdTranslate)()\n : ('platformTable.selectAllCheckboxLongLabel' | fdTranslate)()\n \"\n >\n @if (selectionMode === SELECTION_MODE.MULTIPLE) {\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [fdkDisabled]=\"_fdpTableService.visibleColumnsLength() === 0 || disableSelectionCheckbox\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"checkedState\"\n (ngModelChange)=\"_tableRowService.toggleAllSelectableRows($event)\"\n ></fd-checkbox>\n }\n </th>\n}\n\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <th\n [focusable]=\"true\"\n role=\"columnheader\"\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [id]=\"rowId + '__' + column.name\"\n [attr.aria-colindex]=\"$index\"\n [attr.aria-sort]=\"_fdpTableService.sortRules$().get(column.key) | fdpTableColumnSortingDirection\"\n [class.fd-table__cell--non-interactive]=\"column.nonInteractive\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : '',\n (column | isColumnHasHeaderMenu) ? 'fd-table__item--clickable' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : isRtl()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n : noBorders\n : noHorizontalBorders\n : noVerticalBorders\n \"\n [fdPopoverTrigger]=\"(column | isColumnHasHeaderMenu) ? tablePopover.popover : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n >\n <fdp-table-header-cell-content [id]=\"rowId\" [column]=\"column\" [attr.title]=\"column.label\">\n <!-- Header menu -->\n <fdp-table-cell-header-popover\n #tablePopover\n [disabled]=\"!(column | isColumnHasHeaderMenu)\"\n [columnFrozen]=\"column._freezed || column._endFreezed\"\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [popoverTemplate]=\"(column | isColumnHasHeaderMenu) ? column.headerCellPopoverTemplate : null\"\n [filteringFromHeaderDisabled]=\"_fdpTableService._isFilteringFromHeaderDisabled$()\"\n ></fdp-table-cell-header-popover>\n </fdp-table-header-cell-content>\n </th>\n}\n\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <th\n fd-table-cell\n [ngClass]=\"{\n 'fd-table__cell--no-horizontal-border': noHorizontalBorders || noBorders,\n 'fd-table__cell--no-vertical-border': noVerticalBorders || noBorders\n }\"\n class=\"fdp-table__cell--navigation is-last-child\"\n role=\"columnheader\"\n >\n <span class=\"fd-table__sr-only\">\n {{ ('platformTable.navigationColumnTitle' | fdTranslate)() }}\n </span>\n </th>\n}\n\n<th\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n></th>\n", styles: [".fd-table__sr-only{position:absolute;clip:rect(0,0,0,0);height:1px;width:1px;border:0;margin:-1px;padding:0;overflow:hidden;white-space:nowrap}\n"] }]
3327
3327
  }], propDecorators: { rowId: [{
3328
3328
  type: Input
3329
3329
  }], fixed: [{
@@ -3647,6 +3647,11 @@ class TableRowComponent extends TableRowDirective {
3647
3647
  this._announceEmptyCell.set(false);
3648
3648
  return;
3649
3649
  }
3650
+ // If cell contains elements with explicit accessible names, don't announce as empty
3651
+ if (this._hasAccessibleContent(tableTextContainer)) {
3652
+ this._announceEmptyCell.set(false);
3653
+ return;
3654
+ }
3650
3655
  let value;
3651
3656
  // For non-column templates (data-driven), always check for empty content.
3652
3657
  const isCellEmptyInNonColumnTemplate = !column.columnCellTemplate &&
@@ -3656,6 +3661,10 @@ class TableRowComponent extends TableRowDirective {
3656
3661
  const isCellEmptyInColumnTemplate = column.columnCellTemplate && column.announceEmptyCell() && tableTextContainer?.innerText?.trim() === '';
3657
3662
  this._announceEmptyCell.set(isCellEmptyInColumnTemplate || isCellEmptyInNonColumnTemplate);
3658
3663
  }
3664
+ /** @hidden Checks if container has elements with explicit accessible names (aria-label, aria-labelledby) */
3665
+ _hasAccessibleContent(container) {
3666
+ return !!container?.querySelector('[aria-label], [aria-labelledby]');
3667
+ }
3659
3668
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3660
3669
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: TableRowComponent, isStandalone: true, selector: "[fdp-table-row]", inputs: { rowId: "rowId", row: "row", index: "index", selectionMode: "selectionMode", selectableKey: "selectableKey", enableTristateMode: "enableTristateMode", fixed: "fixed", selectionColumnWidth: "selectionColumnWidth", freezeColumnsTo: "freezeColumnsTo", freezeEndColumnsTo: "freezeEndColumnsTo" }, outputs: { keyboardDrag: "keyboardDrag" }, host: { attributes: { "role": "row" }, properties: { "attr.aria-expanded": "_isTreeRow(row) ? row.expanded : null", "attr.aria-selected": "this._ariaSelected" } }, providers: [
3661
3670
  {