@i-cell/ids-angular 0.2.20 → 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/datepicker/index.d.ts +1 -1
- package/fesm2022/i-cell-ids-angular-breadcrumb.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-chip.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-chip.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-datepicker.mjs +3 -3
- package/fesm2022/i-cell-ids-angular-datepicker.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-dialog.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-dialog.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-forms.mjs +7 -8
- package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-icon-button.mjs +3 -2
- package/fesm2022/i-cell-ids-angular-icon-button.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-notification.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-notification.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-overlay-panel.mjs +6 -6
- package/fesm2022/i-cell-ids-angular-overlay-panel.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-radio.mjs +19 -3
- package/fesm2022/i-cell-ids-angular-radio.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs +8 -4
- package/fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-segmented-control.mjs +8 -4
- package/fesm2022/i-cell-ids-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-side-nav.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-side-nav.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-side-sheet.mjs +2 -2
- package/fesm2022/i-cell-ids-angular-side-sheet.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-snackbar.mjs +1 -1
- package/fesm2022/i-cell-ids-angular-snackbar.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-table.mjs +50 -4
- package/fesm2022/i-cell-ids-angular-table.mjs.map +1 -1
- package/icon-button/index.d.ts +2 -1
- package/overlay-panel/index.d.ts +2 -2
- package/package.json +21 -21
- package/radio/index.d.ts +1 -0
- package/table/index.d.ts +21 -2
|
@@ -58,6 +58,7 @@ class IdsIconButtonComponent extends ComponentBaseWithDefaults {
|
|
|
58
58
|
this.size = input(this._defaultConfig.size, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
59
59
|
this.variant = input(this._defaultConfig.variant, ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
60
60
|
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: coerceBooleanAttribute }] : [{ transform: coerceBooleanAttribute }]));
|
|
61
|
+
this.allowCustomContent = input(false, ...(ngDevMode ? [{ debugName: "allowCustomContent", transform: coerceBooleanAttribute }] : [{ transform: coerceBooleanAttribute }]));
|
|
61
62
|
this._icons = contentChildren(IdsIconComponent, ...(ngDevMode ? [{ debugName: "_icons" }] : []));
|
|
62
63
|
this._parentOrSelfAppearance = computed(() => this._parent?.embeddedIconButtonAppearance() ?? this.appearance(), ...(ngDevMode ? [{ debugName: "_parentOrSelfAppearance" }] : []));
|
|
63
64
|
this._parentOrSelfSize = computed(() => {
|
|
@@ -102,14 +103,14 @@ class IdsIconButtonComponent extends ComponentBaseWithDefaults {
|
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsIconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: IdsIconButtonComponent, isStandalone: true, selector: "button[idsIconButton], a[idsIconButton]", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.disabled": "_parentOrSelfDisabled() ? \"\" : null", "attr.aria-disabled": "_parentOrSelfDisabled()" } }, queries: [{ propertyName: "_icons", predicate: IdsIconComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (_icons().length) {\n <ng-content select=\"ids-icon\" />\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
106
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: IdsIconButtonComponent, isStandalone: true, selector: "button[idsIconButton], a[idsIconButton]", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, allowCustomContent: { classPropertyName: "allowCustomContent", publicName: "allowCustomContent", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.disabled": "_parentOrSelfDisabled() ? \"\" : null", "attr.aria-disabled": "_parentOrSelfDisabled()" } }, queries: [{ propertyName: "_icons", predicate: IdsIconComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (allowCustomContent()) {\n <ng-content />\n} @else if (_icons().length) {\n <ng-content select=\"ids-icon\" />\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
106
107
|
}
|
|
107
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsIconButtonComponent, decorators: [{
|
|
108
109
|
type: Component,
|
|
109
110
|
args: [{ selector: 'button[idsIconButton], a[idsIconButton]', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
110
111
|
'[attr.disabled]': '_parentOrSelfDisabled() ? "" : null',
|
|
111
112
|
'[attr.aria-disabled]': '_parentOrSelfDisabled()',
|
|
112
|
-
}, template: "@if (_icons().length) {\n <ng-content select=\"ids-icon\" />\n}\n" }]
|
|
113
|
+
}, template: "@if (allowCustomContent()) {\n <ng-content />\n} @else if (_icons().length) {\n <ng-content select=\"ids-icon\" />\n}\n" }]
|
|
113
114
|
}], ctorParameters: () => [] });
|
|
114
115
|
|
|
115
116
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-icon-button.mjs","sources":["../../../projects/widgets/icon-button/tokens/icon-button-parent.ts","../../../projects/widgets/icon-button/types/icon-button-appearance.type.ts","../../../projects/widgets/icon-button/types/icon-button-variant.type.ts","../../../projects/widgets/icon-button/icon-button-defaults.ts","../../../projects/widgets/icon-button/icon-button.component.ts","../../../projects/widgets/icon-button/icon-button.component.html","../../../projects/widgets/icon-button/i-cell-ids-angular-icon-button.ts"],"sourcesContent":["import { IdsIconButtonAppearanceType } from '../types/icon-button-appearance.type';\nimport { IdsIconButtonVariantType } from '../types/icon-button-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\n\nexport abstract class IdsIconButtonParent {\n public readonly embeddedIconButtonVariant!: Signal<IdsIconButtonVariantType>;\n public readonly embeddedIconButtonAppearance!: Signal<IdsIconButtonAppearanceType>;\n public readonly disabled!: Signal<boolean>;\n};\n\nexport const IDS_ICON_BUTTON_PARENT = new InjectionToken<IdsIconButtonParent>(\n 'IDS_ICON_BUTTON_PARENT',\n);\n","export const IdsIconButtonAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n STANDARD: 'standard',\n} as const;\n\nexport type IdsIconButtonAppearanceType = (typeof IdsIconButtonAppearance)[keyof typeof IdsIconButtonAppearance];\n","export const IdsIconButtonVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n BRAND: 'brand',\n LIGHT: 'light',\n DARK: 'dark',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsIconButtonVariantType = (typeof IdsIconButtonVariant)[keyof typeof IdsIconButtonVariant];\n\n","import { IdsIconButtonAppearance, IdsIconButtonAppearanceType } from './types/icon-button-appearance.type';\nimport { IdsIconButtonVariant, IdsIconButtonVariantType } from './types/icon-button-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsIconButtonDefaultConfig {\n appearance?: IdsIconButtonAppearanceType,\n size?: IdsSizeType,\n variant?: IdsIconButtonVariantType,\n}\n\nexport const IDS_ICON_BUTTON_DEFAULT_CONFIG = new InjectionToken<IdsIconButtonDefaultConfig>(\n 'IDS_ICON_BUTTON_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY(): Required<IdsIconButtonDefaultConfig> {\n return {\n appearance: IdsIconButtonAppearance.FILLED,\n size: IdsSize.COMPACT,\n variant: IdsIconButtonVariant.PRIMARY,\n };\n}\n\n","import { IDS_ICON_BUTTON_DEFAULT_CONFIG, IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY, IdsIconButtonDefaultConfig } from './icon-button-defaults';\nimport { IDS_ICON_BUTTON_PARENT } from './tokens/icon-button-parent';\nimport { IdsIconButtonAppearanceType } from './types/icon-button-appearance.type';\nimport { IdsIconButtonVariantType } from './types/icon-button-variant.type';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n ComponentBaseWithDefaults,\n IdsSizeType,\n coerceBooleanAttribute,\n} from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\nconst defaultConfig = IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'button[idsIconButton], a[idsIconButton]',\n imports: [],\n templateUrl: './icon-button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': '_parentOrSelfDisabled() ? \"\" : null',\n '[attr.aria-disabled]': '_parentOrSelfDisabled()',\n },\n})\nexport class IdsIconButtonComponent extends ComponentBaseWithDefaults<IdsIconButtonDefaultConfig> {\n protected override get _hostName(): string {\n return 'icon-button';\n }\n\n private readonly _parent = inject(IDS_ICON_BUTTON_PARENT, { optional: true });\n private _hostElement = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>).nativeElement;\n private _routerLink = inject(RouterLink, { optional: true, self: true });\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_ICON_BUTTON_DEFAULT_CONFIG);\n\n public appearance = input<IdsIconButtonAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsIconButtonVariantType>(this._defaultConfig.variant);\n public disabled = input(false, { transform: coerceBooleanAttribute });\n\n protected _icons = contentChildren(IdsIconComponent);\n\n private _parentOrSelfAppearance = computed(() => this._parent?.embeddedIconButtonAppearance() ?? this.appearance());\n private _parentOrSelfSize = computed(() => {\n const embeddedIconButtonSize = this._parent?.embeddedIconButtonSize;\n return embeddedIconButtonSize ? embeddedIconButtonSize() : this.size();\n });\n\n private _parentOrSelfVariant = computed(() => this._parent?.embeddedIconButtonVariant() ?? this.variant());\n private _parentOrSelfDisabled = computed(() => {\n const parentDisabled = this._parent?.disabled;\n return parentDisabled ? parentDisabled() : this.disabled();\n });\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parentOrSelfAppearance(),\n this._parentOrSelfSize(),\n this._parentOrSelfVariant(),\n this.disabled() ? 'disabled' : null,\n ]));\n\n private get _buttonType(): string | null {\n return this._hostElement.tagName === 'BUTTON' ? 'button' : null;\n }\n\n constructor() {\n super();\n\n effect(() => {\n if (this._buttonType) {\n return;\n }\n\n const link = this._hostElement as HTMLAnchorElement;\n\n if (this.disabled()) {\n this._disableLink(link);\n } else {\n this._enableLink(link);\n }\n });\n }\n\n private _disableLink(link: HTMLAnchorElement): void {\n if (!this._routerLink) {\n link.setAttribute('data-href', link.href);\n }\n link.removeAttribute('href');\n }\n\n private _enableLink(link: HTMLAnchorElement): void {\n const prevHref = this._routerLink?.href ?? link.getAttribute('data-href') ?? '';\n\n if (prevHref) {\n link.href = prevHref;\n link.removeAttribute('data-href');\n }\n }\n}\n","@if (_icons().length) {\n <ng-content select=\"ids-icon\" />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i-cell-ids-angular-icon-button.mjs","sources":["../../../projects/widgets/icon-button/tokens/icon-button-parent.ts","../../../projects/widgets/icon-button/types/icon-button-appearance.type.ts","../../../projects/widgets/icon-button/types/icon-button-variant.type.ts","../../../projects/widgets/icon-button/icon-button-defaults.ts","../../../projects/widgets/icon-button/icon-button.component.ts","../../../projects/widgets/icon-button/icon-button.component.html","../../../projects/widgets/icon-button/i-cell-ids-angular-icon-button.ts"],"sourcesContent":["import { IdsIconButtonAppearanceType } from '../types/icon-button-appearance.type';\nimport { IdsIconButtonVariantType } from '../types/icon-button-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport abstract class IdsIconButtonParent {\n public readonly embeddedIconButtonVariant!: Signal<IdsIconButtonVariantType>;\n public readonly embeddedIconButtonAppearance!: Signal<IdsIconButtonAppearanceType>;\n public readonly embeddedIconButtonSize?: Signal<IdsSizeType>;\n public readonly disabled?: Signal<boolean>;\n};\n\nexport const IDS_ICON_BUTTON_PARENT = new InjectionToken<IdsIconButtonParent>(\n 'IDS_ICON_BUTTON_PARENT',\n);\n","export const IdsIconButtonAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n STANDARD: 'standard',\n} as const;\n\nexport type IdsIconButtonAppearanceType = (typeof IdsIconButtonAppearance)[keyof typeof IdsIconButtonAppearance];\n","export const IdsIconButtonVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n BRAND: 'brand',\n LIGHT: 'light',\n DARK: 'dark',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsIconButtonVariantType = (typeof IdsIconButtonVariant)[keyof typeof IdsIconButtonVariant];\n\n","import { IdsIconButtonAppearance, IdsIconButtonAppearanceType } from './types/icon-button-appearance.type';\nimport { IdsIconButtonVariant, IdsIconButtonVariantType } from './types/icon-button-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsIconButtonDefaultConfig {\n appearance?: IdsIconButtonAppearanceType,\n size?: IdsSizeType,\n variant?: IdsIconButtonVariantType,\n}\n\nexport const IDS_ICON_BUTTON_DEFAULT_CONFIG = new InjectionToken<IdsIconButtonDefaultConfig>(\n 'IDS_ICON_BUTTON_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY(): Required<IdsIconButtonDefaultConfig> {\n return {\n appearance: IdsIconButtonAppearance.FILLED,\n size: IdsSize.COMPACT,\n variant: IdsIconButtonVariant.PRIMARY,\n };\n}\n\n","import { IDS_ICON_BUTTON_DEFAULT_CONFIG, IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY, IdsIconButtonDefaultConfig } from './icon-button-defaults';\nimport { IDS_ICON_BUTTON_PARENT } from './tokens/icon-button-parent';\nimport { IdsIconButtonAppearanceType } from './types/icon-button-appearance.type';\nimport { IdsIconButtonVariantType } from './types/icon-button-variant.type';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n ComponentBaseWithDefaults,\n IdsSizeType,\n coerceBooleanAttribute,\n} from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\nconst defaultConfig = IDS_ICON_BUTTON_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'button[idsIconButton], a[idsIconButton]',\n imports: [],\n templateUrl: './icon-button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': '_parentOrSelfDisabled() ? \"\" : null',\n '[attr.aria-disabled]': '_parentOrSelfDisabled()',\n },\n})\nexport class IdsIconButtonComponent extends ComponentBaseWithDefaults<IdsIconButtonDefaultConfig> {\n protected override get _hostName(): string {\n return 'icon-button';\n }\n\n private readonly _parent = inject(IDS_ICON_BUTTON_PARENT, { optional: true });\n private _hostElement = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>).nativeElement;\n private _routerLink = inject(RouterLink, { optional: true, self: true });\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_ICON_BUTTON_DEFAULT_CONFIG);\n\n public appearance = input<IdsIconButtonAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsIconButtonVariantType>(this._defaultConfig.variant);\n public disabled = input(false, { transform: coerceBooleanAttribute });\n public allowCustomContent = input(false, { transform: coerceBooleanAttribute });\n\n protected _icons = contentChildren(IdsIconComponent);\n\n private _parentOrSelfAppearance = computed(() => this._parent?.embeddedIconButtonAppearance() ?? this.appearance());\n private _parentOrSelfSize = computed(() => {\n const embeddedIconButtonSize = this._parent?.embeddedIconButtonSize;\n return embeddedIconButtonSize ? embeddedIconButtonSize() : this.size();\n });\n\n private _parentOrSelfVariant = computed(() => this._parent?.embeddedIconButtonVariant() ?? this.variant());\n private _parentOrSelfDisabled = computed(() => {\n const parentDisabled = this._parent?.disabled;\n return parentDisabled ? parentDisabled() : this.disabled();\n });\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parentOrSelfAppearance(),\n this._parentOrSelfSize(),\n this._parentOrSelfVariant(),\n this.disabled() ? 'disabled' : null,\n ]));\n\n private get _buttonType(): string | null {\n return this._hostElement.tagName === 'BUTTON' ? 'button' : null;\n }\n\n constructor() {\n super();\n\n effect(() => {\n if (this._buttonType) {\n return;\n }\n\n const link = this._hostElement as HTMLAnchorElement;\n\n if (this.disabled()) {\n this._disableLink(link);\n } else {\n this._enableLink(link);\n }\n });\n }\n\n private _disableLink(link: HTMLAnchorElement): void {\n if (!this._routerLink) {\n link.setAttribute('data-href', link.href);\n }\n link.removeAttribute('href');\n }\n\n private _enableLink(link: HTMLAnchorElement): void {\n const prevHref = this._routerLink?.href ?? link.getAttribute('data-href') ?? '';\n\n if (prevHref) {\n link.href = prevHref;\n link.removeAttribute('data-href');\n }\n }\n}\n","@if (allowCustomContent()) {\n <ng-content />\n} @else if (_icons().length) {\n <ng-content select=\"ids-icon\" />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -137,7 +137,7 @@ class IdsNotificationComponent extends ComponentBaseWithDefaults {
|
|
|
137
137
|
provide: IDS_ICON_BUTTON_PARENT,
|
|
138
138
|
useExisting: IdsNotificationComponent,
|
|
139
139
|
},
|
|
140
|
-
], queries: [{ propertyName: "_actionButtons", predicate: IdsNotificationActionButtonDirective, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ids-notification__content-wrapper\">\n @let fontIcon = icon();\n @if (fontIcon) {\n <div class=\"ids-notification__leading-element\">\n <ids-icon [fontIcon]=\"fontIcon\" />\n </div>\n }\n\n <div class=\"ids-notification__container\">\n <div class=\"ids-notification__title-msg-container\">\n <div class=\"ids-notification__title\">\n {{ title() }}\n </div>\n <div class=\"ids-notification__message\">\n <ng-content />\n </div>\n </div>\n @if (_actionButtons()) {\n <div class=\"ids-notification__action\">\n <ng-content select=\"button[idsNotificationActionButton]\" />\n </div>\n }\n </div>\n\n <div class=\"ids-notification__close-button-container\" [class]=\"_closeLabelButtonClass()\">\n @let buttonLabel = closeButtonLabel();\n @if (buttonLabel) {\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"closeButtonSize()\"\n [appearance]=\"closeLabelButtonAppearance()\"\n (click)=\"_close()\"\n >\n {{ buttonLabel }}\n </button>\n } @else {\n <button type=\"button\" aria-label=\"Close notification\" idsIconButton [size]=\"closeButtonSize()\" (click)=\"_close()\">\n <ids-icon alt=\"close icon\" fontIcon=\"close\" />\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsButtonComponent, selector: "button[idsButton], a[idsButton]", inputs: ["appearance", "size", "variant", "disabled"] }, { kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton], a[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
140
|
+
], queries: [{ propertyName: "_actionButtons", predicate: IdsNotificationActionButtonDirective, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ids-notification__content-wrapper\">\n @let fontIcon = icon();\n @if (fontIcon) {\n <div class=\"ids-notification__leading-element\">\n <ids-icon [fontIcon]=\"fontIcon\" />\n </div>\n }\n\n <div class=\"ids-notification__container\">\n <div class=\"ids-notification__title-msg-container\">\n <div class=\"ids-notification__title\">\n {{ title() }}\n </div>\n <div class=\"ids-notification__message\">\n <ng-content />\n </div>\n </div>\n @if (_actionButtons()) {\n <div class=\"ids-notification__action\">\n <ng-content select=\"button[idsNotificationActionButton]\" />\n </div>\n }\n </div>\n\n <div class=\"ids-notification__close-button-container\" [class]=\"_closeLabelButtonClass()\">\n @let buttonLabel = closeButtonLabel();\n @if (buttonLabel) {\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"closeButtonSize()\"\n [appearance]=\"closeLabelButtonAppearance()\"\n (click)=\"_close()\"\n >\n {{ buttonLabel }}\n </button>\n } @else {\n <button type=\"button\" aria-label=\"Close notification\" idsIconButton [size]=\"closeButtonSize()\" (click)=\"_close()\">\n <ids-icon alt=\"close icon\" fontIcon=\"close\" />\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsButtonComponent, selector: "button[idsButton], a[idsButton]", inputs: ["appearance", "size", "variant", "disabled"] }, { kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton], a[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled", "allowCustomContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
141
141
|
}
|
|
142
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsNotificationComponent, decorators: [{
|
|
143
143
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-notification.mjs","sources":["../../../projects/widgets/notification/types/notification-appearance.type.ts","../../../projects/widgets/notification/types/notification-variant.type.ts","../../../projects/widgets/notification/notification-action-button.directive.ts","../../../projects/widgets/notification/notification-defaults.ts","../../../projects/widgets/notification/notification.component.ts","../../../projects/widgets/notification/notification.component.html","../../../projects/widgets/notification/i-cell-ids-angular-notification.ts"],"sourcesContent":["export const IdsNotificationAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n} as const;\n\nexport type IdsNotificationAppearanceType = (typeof IdsNotificationAppearance)[keyof typeof IdsNotificationAppearance];\n","export const IdsNotificationVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsNotificationVariantType = (typeof IdsNotificationVariant)[keyof typeof IdsNotificationVariant];\n\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsNotificationActionButton]',\n standalone: true,\n})\nexport class IdsNotificationActionButtonDirective {\n}\n","import { IdsNotificationAppearance, IdsNotificationAppearanceType } from './types/notification-appearance.type';\nimport { IdsNotificationVariant, IdsNotificationVariantType } from './types/notification-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsButtonAppearance, IdsButtonAppearanceType } from '@i-cell/ids-angular/button';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsNotificationDefaultConfig {\n appearance?: IdsNotificationAppearanceType,\n size?: IdsSizeType,\n variant?: IdsNotificationVariantType,\n closeButtonSize?: IdsSizeType,\n closeLabelButtonAppearance?: IdsButtonAppearanceType,\n displayActionsAtBottom?: boolean,\n}\n\nexport const IDS_NOTIFICATION_DEFAULT_CONFIG = new InjectionToken<IdsNotificationDefaultConfig>(\n 'IDS_NOTIFICATION_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY(): Required<IdsNotificationDefaultConfig> {\n return {\n appearance: IdsNotificationAppearance.OUTLINED,\n size: IdsSize.COMPACT,\n variant: IdsNotificationVariant.DARK,\n closeButtonSize: IdsSize.COMPACT,\n closeLabelButtonAppearance: IdsButtonAppearance.OUTLINED,\n displayActionsAtBottom: false,\n };\n}\n\n","import { IdsNotificationActionButtonDirective } from './notification-action-button.directive';\nimport { IDS_NOTIFICATION_DEFAULT_CONFIG, IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY, IdsNotificationDefaultConfig } from './notification-defaults';\nimport { IdsNotificationAppearance, IdsNotificationAppearanceType } from './types/notification-appearance.type';\nimport { IdsNotificationVariant, IdsNotificationVariantType } from './types/notification-variant.type';\n\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, output, signal, ViewEncapsulation } from '@angular/core';\nimport { IDS_BUTTON_PARENT, IdsButtonAppearanceType, IdsButtonComponent, IdsButtonParent, IdsButtonVariant } from '@i-cell/ids-angular/button';\nimport { coerceBooleanAttribute, coerceStringAttribute, ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IDS_ICON_BUTTON_PARENT, IdsIconButtonAppearance, IdsIconButtonAppearanceType, IdsIconButtonComponent, IdsIconButtonParent, IdsIconButtonVariant, IdsIconButtonVariantType } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-notification',\n imports: [\n IdsIconComponent,\n IdsButtonComponent,\n IdsIconButtonComponent,\n ],\n templateUrl: './notification.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[role]': '_role()',\n },\n providers: [\n {\n provide: IDS_BUTTON_PARENT,\n useExisting: IdsNotificationComponent,\n },\n {\n provide: IDS_ICON_BUTTON_PARENT,\n useExisting: IdsNotificationComponent,\n },\n ],\n})\nexport class IdsNotificationComponent extends ComponentBaseWithDefaults<IdsNotificationDefaultConfig>\n implements IdsButtonParent, IdsIconButtonParent {\n protected override get _hostName(): string {\n return 'notification';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_NOTIFICATION_DEFAULT_CONFIG);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public appearance = input<IdsNotificationAppearanceType>(this._defaultConfig.appearance);\n public variant = input<IdsNotificationVariantType>(this._defaultConfig.variant);\n public icon = input<string | undefined>();\n public title = input<string>('');\n public urgent = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n public displayActionsAtBottom = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n public closeButtonSize = input<IdsSizeType>(this._defaultConfig.closeButtonSize);\n public closeLabelButtonAppearance = input<IdsButtonAppearanceType>(this._defaultConfig.closeLabelButtonAppearance);\n public closeButtonLabel = input<string, string>('', { transform: coerceStringAttribute });\n\n public embeddedIconButtonAppearance = signal<IdsIconButtonAppearanceType>(IdsIconButtonAppearance.STANDARD);\n public disabled = signal<boolean>(false);\n\n protected _actionButtons = contentChildren<IdsNotificationActionButtonDirective>(IdsNotificationActionButtonDirective);\n\n public closed = output<void>();\n\n private _role = computed(() => (this.urgent() ? 'alert' : 'status'));\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.appearance(),\n this.variant(),\n this.displayActionsAtBottom() ? 'actions-bottom-mode' : null,\n ]));\n\n protected _closeLabelButtonClass = computed(() => (this.closeButtonLabel() ? 'ids-notification__label-button' : ''));\n\n public embeddedButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const notificationVariant = this.variant();\n const notificationAppearance = this.appearance();\n\n if (notificationAppearance === IdsNotificationAppearance.OUTLINED) {\n switch (notificationVariant) {\n case IdsNotificationVariant.DARK:\n return IdsButtonVariant.DARK;\n case IdsNotificationVariant.LIGHT:\n return IdsButtonVariant.LIGHT;\n default:\n return IdsButtonVariant.SURFACE;\n }\n } else {\n switch (notificationVariant) {\n case IdsNotificationVariant.SURFACE:\n case IdsNotificationVariant.LIGHT:\n return IdsButtonVariant.DARK;\n default:\n return IdsButtonVariant.LIGHT;\n }\n }\n });\n\n public embeddedIconButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const notificationVariant = this.variant();\n const notificationAppearance = this.appearance();\n\n if (notificationAppearance === IdsNotificationAppearance.OUTLINED) {\n switch (notificationVariant) {\n case IdsNotificationVariant.DARK:\n return IdsIconButtonVariant.DARK;\n case IdsNotificationVariant.LIGHT:\n return IdsIconButtonVariant.LIGHT;\n default:\n return IdsIconButtonVariant.SURFACE;\n }\n } else {\n switch (notificationVariant) {\n case IdsNotificationVariant.SURFACE:\n case IdsNotificationVariant.LIGHT:\n return IdsIconButtonVariant.DARK;\n default:\n return IdsIconButtonVariant.LIGHT;\n }\n }\n });\n\n protected _close(): void {\n this.closed.emit();\n }\n}\n","<div class=\"ids-notification__content-wrapper\">\n @let fontIcon = icon();\n @if (fontIcon) {\n <div class=\"ids-notification__leading-element\">\n <ids-icon [fontIcon]=\"fontIcon\" />\n </div>\n }\n\n <div class=\"ids-notification__container\">\n <div class=\"ids-notification__title-msg-container\">\n <div class=\"ids-notification__title\">\n {{ title() }}\n </div>\n <div class=\"ids-notification__message\">\n <ng-content />\n </div>\n </div>\n @if (_actionButtons()) {\n <div class=\"ids-notification__action\">\n <ng-content select=\"button[idsNotificationActionButton]\" />\n </div>\n }\n </div>\n\n <div class=\"ids-notification__close-button-container\" [class]=\"_closeLabelButtonClass()\">\n @let buttonLabel = closeButtonLabel();\n @if (buttonLabel) {\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"closeButtonSize()\"\n [appearance]=\"closeLabelButtonAppearance()\"\n (click)=\"_close()\"\n >\n {{ buttonLabel }}\n </button>\n } @else {\n <button type=\"button\" aria-label=\"Close notification\" idsIconButton [size]=\"closeButtonSize()\" (click)=\"_close()\">\n <ids-icon alt=\"close icon\" fontIcon=\"close\" />\n </button>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i-cell-ids-angular-notification.mjs","sources":["../../../projects/widgets/notification/types/notification-appearance.type.ts","../../../projects/widgets/notification/types/notification-variant.type.ts","../../../projects/widgets/notification/notification-action-button.directive.ts","../../../projects/widgets/notification/notification-defaults.ts","../../../projects/widgets/notification/notification.component.ts","../../../projects/widgets/notification/notification.component.html","../../../projects/widgets/notification/i-cell-ids-angular-notification.ts"],"sourcesContent":["export const IdsNotificationAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n} as const;\n\nexport type IdsNotificationAppearanceType = (typeof IdsNotificationAppearance)[keyof typeof IdsNotificationAppearance];\n","export const IdsNotificationVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsNotificationVariantType = (typeof IdsNotificationVariant)[keyof typeof IdsNotificationVariant];\n\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsNotificationActionButton]',\n standalone: true,\n})\nexport class IdsNotificationActionButtonDirective {\n}\n","import { IdsNotificationAppearance, IdsNotificationAppearanceType } from './types/notification-appearance.type';\nimport { IdsNotificationVariant, IdsNotificationVariantType } from './types/notification-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsButtonAppearance, IdsButtonAppearanceType } from '@i-cell/ids-angular/button';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsNotificationDefaultConfig {\n appearance?: IdsNotificationAppearanceType,\n size?: IdsSizeType,\n variant?: IdsNotificationVariantType,\n closeButtonSize?: IdsSizeType,\n closeLabelButtonAppearance?: IdsButtonAppearanceType,\n displayActionsAtBottom?: boolean,\n}\n\nexport const IDS_NOTIFICATION_DEFAULT_CONFIG = new InjectionToken<IdsNotificationDefaultConfig>(\n 'IDS_NOTIFICATION_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY(): Required<IdsNotificationDefaultConfig> {\n return {\n appearance: IdsNotificationAppearance.OUTLINED,\n size: IdsSize.COMPACT,\n variant: IdsNotificationVariant.DARK,\n closeButtonSize: IdsSize.COMPACT,\n closeLabelButtonAppearance: IdsButtonAppearance.OUTLINED,\n displayActionsAtBottom: false,\n };\n}\n\n","import { IdsNotificationActionButtonDirective } from './notification-action-button.directive';\nimport { IDS_NOTIFICATION_DEFAULT_CONFIG, IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY, IdsNotificationDefaultConfig } from './notification-defaults';\nimport { IdsNotificationAppearance, IdsNotificationAppearanceType } from './types/notification-appearance.type';\nimport { IdsNotificationVariant, IdsNotificationVariantType } from './types/notification-variant.type';\n\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, output, signal, ViewEncapsulation } from '@angular/core';\nimport { IDS_BUTTON_PARENT, IdsButtonAppearanceType, IdsButtonComponent, IdsButtonParent, IdsButtonVariant } from '@i-cell/ids-angular/button';\nimport { coerceBooleanAttribute, coerceStringAttribute, ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IDS_ICON_BUTTON_PARENT, IdsIconButtonAppearance, IdsIconButtonAppearanceType, IdsIconButtonComponent, IdsIconButtonParent, IdsIconButtonVariant, IdsIconButtonVariantType } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_NOTIFICATION_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-notification',\n imports: [\n IdsIconComponent,\n IdsButtonComponent,\n IdsIconButtonComponent,\n ],\n templateUrl: './notification.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[role]': '_role()',\n },\n providers: [\n {\n provide: IDS_BUTTON_PARENT,\n useExisting: IdsNotificationComponent,\n },\n {\n provide: IDS_ICON_BUTTON_PARENT,\n useExisting: IdsNotificationComponent,\n },\n ],\n})\nexport class IdsNotificationComponent extends ComponentBaseWithDefaults<IdsNotificationDefaultConfig>\n implements IdsButtonParent, IdsIconButtonParent {\n protected override get _hostName(): string {\n return 'notification';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_NOTIFICATION_DEFAULT_CONFIG);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public appearance = input<IdsNotificationAppearanceType>(this._defaultConfig.appearance);\n public variant = input<IdsNotificationVariantType>(this._defaultConfig.variant);\n public icon = input<string | undefined>();\n public title = input<string>('');\n public urgent = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n public displayActionsAtBottom = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n public closeButtonSize = input<IdsSizeType>(this._defaultConfig.closeButtonSize);\n public closeLabelButtonAppearance = input<IdsButtonAppearanceType>(this._defaultConfig.closeLabelButtonAppearance);\n public closeButtonLabel = input<string, string>('', { transform: coerceStringAttribute });\n\n public embeddedIconButtonAppearance = signal<IdsIconButtonAppearanceType>(IdsIconButtonAppearance.STANDARD);\n public disabled = signal<boolean>(false);\n\n protected _actionButtons = contentChildren<IdsNotificationActionButtonDirective>(IdsNotificationActionButtonDirective);\n\n public closed = output<void>();\n\n private _role = computed(() => (this.urgent() ? 'alert' : 'status'));\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.appearance(),\n this.variant(),\n this.displayActionsAtBottom() ? 'actions-bottom-mode' : null,\n ]));\n\n protected _closeLabelButtonClass = computed(() => (this.closeButtonLabel() ? 'ids-notification__label-button' : ''));\n\n public embeddedButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const notificationVariant = this.variant();\n const notificationAppearance = this.appearance();\n\n if (notificationAppearance === IdsNotificationAppearance.OUTLINED) {\n switch (notificationVariant) {\n case IdsNotificationVariant.DARK:\n return IdsButtonVariant.DARK;\n case IdsNotificationVariant.LIGHT:\n return IdsButtonVariant.LIGHT;\n default:\n return IdsButtonVariant.SURFACE;\n }\n } else {\n switch (notificationVariant) {\n case IdsNotificationVariant.SURFACE:\n case IdsNotificationVariant.LIGHT:\n return IdsButtonVariant.DARK;\n default:\n return IdsButtonVariant.LIGHT;\n }\n }\n });\n\n public embeddedIconButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const notificationVariant = this.variant();\n const notificationAppearance = this.appearance();\n\n if (notificationAppearance === IdsNotificationAppearance.OUTLINED) {\n switch (notificationVariant) {\n case IdsNotificationVariant.DARK:\n return IdsIconButtonVariant.DARK;\n case IdsNotificationVariant.LIGHT:\n return IdsIconButtonVariant.LIGHT;\n default:\n return IdsIconButtonVariant.SURFACE;\n }\n } else {\n switch (notificationVariant) {\n case IdsNotificationVariant.SURFACE:\n case IdsNotificationVariant.LIGHT:\n return IdsIconButtonVariant.DARK;\n default:\n return IdsIconButtonVariant.LIGHT;\n }\n }\n });\n\n protected _close(): void {\n this.closed.emit();\n }\n}\n","<div class=\"ids-notification__content-wrapper\">\n @let fontIcon = icon();\n @if (fontIcon) {\n <div class=\"ids-notification__leading-element\">\n <ids-icon [fontIcon]=\"fontIcon\" />\n </div>\n }\n\n <div class=\"ids-notification__container\">\n <div class=\"ids-notification__title-msg-container\">\n <div class=\"ids-notification__title\">\n {{ title() }}\n </div>\n <div class=\"ids-notification__message\">\n <ng-content />\n </div>\n </div>\n @if (_actionButtons()) {\n <div class=\"ids-notification__action\">\n <ng-content select=\"button[idsNotificationActionButton]\" />\n </div>\n }\n </div>\n\n <div class=\"ids-notification__close-button-container\" [class]=\"_closeLabelButtonClass()\">\n @let buttonLabel = closeButtonLabel();\n @if (buttonLabel) {\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"closeButtonSize()\"\n [appearance]=\"closeLabelButtonAppearance()\"\n (click)=\"_close()\"\n >\n {{ buttonLabel }}\n </button>\n } @else {\n <button type=\"button\" aria-label=\"Close notification\" idsIconButton [size]=\"closeButtonSize()\" (click)=\"_close()\">\n <ids-icon alt=\"close icon\" fontIcon=\"close\" />\n </button>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, model, input, computed, contentChild,
|
|
2
|
+
import { InjectionToken, model, input, viewChild, computed, contentChild, effect, untracked, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
3
3
|
import { IdsSize, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';
|
|
4
4
|
import * as i2 from '@angular/cdk/a11y';
|
|
5
5
|
import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
|
|
@@ -75,9 +75,9 @@ class IdsOverlayPanelComponent extends ComponentBaseWithDefaults {
|
|
|
75
75
|
this.variant = input(this._defaultConfig.variant, ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
76
76
|
this.panelClasses = input('', ...(ngDevMode ? [{ debugName: "panelClasses" }] : []));
|
|
77
77
|
this.width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : []));
|
|
78
|
+
this.overlayDir = viewChild(CdkConnectedOverlay, ...(ngDevMode ? [{ debugName: "overlayDir" }] : []));
|
|
78
79
|
this._hasCdkMenu = computed(() => !!this._cdkMenu(), ...(ngDevMode ? [{ debugName: "_hasCdkMenu" }] : []));
|
|
79
80
|
this._cdkMenu = contentChild(CdkMenu, ...(ngDevMode ? [{ debugName: "_cdkMenu", descendants: true }] : [{ descendants: true }]));
|
|
80
|
-
this._overlayRef = viewChild(CdkConnectedOverlay, ...(ngDevMode ? [{ debugName: "_overlayRef" }] : []));
|
|
81
81
|
this._focusTrap = viewChild(CdkTrapFocus, ...(ngDevMode ? [{ debugName: "_focusTrap" }] : []));
|
|
82
82
|
this._panelClasses = computed(() => this._getHostClasses([
|
|
83
83
|
this.appearance(),
|
|
@@ -92,12 +92,12 @@ class IdsOverlayPanelComponent extends ComponentBaseWithDefaults {
|
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
94
|
effect(() => {
|
|
95
|
-
const
|
|
95
|
+
const overlayDir = this.overlayDir();
|
|
96
96
|
const overlayWidth = this.width();
|
|
97
97
|
// apply width after the overlay has been rendered
|
|
98
98
|
untracked(() => {
|
|
99
|
-
if (
|
|
100
|
-
|
|
99
|
+
if (overlayDir && overlayWidth) {
|
|
100
|
+
overlayDir.width = overlayWidth;
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
103
|
});
|
|
@@ -111,7 +111,7 @@ class IdsOverlayPanelComponent extends ComponentBaseWithDefaults {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsOverlayPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
114
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: IdsOverlayPanelComponent, isStandalone: true, selector: "ids-overlay-panel", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, origin: { classPropertyName: "origin", publicName: "origin", isSignal: true, isRequired: true, transformFunction: null }, positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, panelClasses: { classPropertyName: "panelClasses", publicName: "panelClasses", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, queries: [{ propertyName: "_cdkMenu", first: true, predicate: CdkMenu, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "
|
|
114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: IdsOverlayPanelComponent, isStandalone: true, selector: "ids-overlay-panel", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, origin: { classPropertyName: "origin", publicName: "origin", isSignal: true, isRequired: true, transformFunction: null }, positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, panelClasses: { classPropertyName: "panelClasses", publicName: "panelClasses", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, queries: [{ propertyName: "_cdkMenu", first: true, predicate: CdkMenu, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "_focusTrap", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
115
115
|
}
|
|
116
116
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsOverlayPanelComponent, decorators: [{
|
|
117
117
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-overlay-panel.mjs","sources":["../../../projects/widgets/overlay-panel/types/overlay-panel-appearance.type.ts","../../../projects/widgets/overlay-panel/types/overlay-panel-variant.type.ts","../../../projects/widgets/overlay-panel/overlay-positions.ts","../../../projects/widgets/overlay-panel/overlay-panel-defaults.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.html","../../../projects/widgets/overlay-panel/i-cell-ids-angular-overlay-panel.ts"],"sourcesContent":["export const IdsOverlayPanelAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n ELEVATED: 'elevated',\n} as const;\n\nexport type IdsOverlayPanelAppearanceType = (typeof IdsOverlayPanelAppearance)[keyof typeof IdsOverlayPanelAppearance];\n","export const IdsOverlayPanelVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsOverlayPanelVariantType = (typeof IdsOverlayPanelVariant)[keyof typeof IdsOverlayPanelVariant];\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const overlayConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n","import { overlayConnectedPositions } from './overlay-positions';\nimport { IdsOverlayPanelAppearance, IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariant, IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsOverlayPanelDefaultConfig {\n appearance?: IdsOverlayPanelAppearanceType,\n size?: IdsSizeType,\n variant?: IdsOverlayPanelVariantType,\n positions?: ConnectedPosition[],\n}\n\nexport const IDS_OVERLAY_PANEL_DEFAULT_CONFIG = new InjectionToken<IdsOverlayPanelDefaultConfig>(\n 'IDS_OVERLAY_PANEL_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY(): Required<IdsOverlayPanelDefaultConfig> {\n return {\n appearance: IdsOverlayPanelAppearance.FILLED,\n size: IdsSize.COMPACT,\n variant: IdsOverlayPanelVariant.LIGHT,\n positions: overlayConnectedPositions,\n };\n}\n\n","import {\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG,\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n IdsOverlayPanelDefaultConfig,\n} from './overlay-panel-defaults';\nimport { IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CdkMenu } from '@angular/cdk/menu';\nimport { OverlayModule, CdkOverlayOrigin, CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input, computed, contentChild,\n ElementRef,\n viewChild,\n untracked,\n effect,\n model,\n} from '@angular/core';\nimport { IdsSizeType, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-overlay-panel',\n imports: [\n OverlayModule,\n A11yModule,\n NgClass,\n ],\n templateUrl: './overlay-panel.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class IdsOverlayPanelComponent extends ComponentBaseWithDefaults<IdsOverlayPanelDefaultConfig> {\n protected override get _hostName(): string {\n return 'overlay-panel';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_OVERLAY_PANEL_DEFAULT_CONFIG);\n\n public open = model<boolean>(false);\n public origin = input.required<CdkOverlayOrigin | ElementRef>();\n public positions = input<ConnectedPosition[]>(this._defaultConfig.positions);\n\n public appearance = input<IdsOverlayPanelAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsOverlayPanelVariantType>(this._defaultConfig.variant);\n public panelClasses = input<string>('');\n public width = input<string | number>();\n\n protected _hasCdkMenu = computed(() => !!this._cdkMenu());\n\n private _cdkMenu = contentChild(CdkMenu, { descendants: true });\n private _overlayRef = viewChild(CdkConnectedOverlay);\n\n private _focusTrap = viewChild(CdkTrapFocus);\n\n constructor() {\n super();\n\n effect(() => {\n if (this._focusTrap()) {\n this._focusTrap()?.focusTrap.focusInitialElementWhenReady({ preventScroll: true });\n }\n });\n\n effect(() => {\n const overlayRef = this._overlayRef();\n const overlayWidth = this.width();\n\n // apply width after the overlay has been rendered\n untracked(() => {\n if (overlayRef && overlayWidth) {\n overlayRef.width = overlayWidth;\n }\n });\n });\n }\n\n public toggle(): void {\n this.open.update((open) => !open);\n }\n\n protected _close(): void {\n if (this.open()) {\n this.open.set(false);\n }\n }\n\n protected _panelClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n this._hasCdkMenu() ? 'has-menu' : null,\n ]),\n );\n\n protected _hostClasses = computed(() => '');\n}\n","<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i-cell-ids-angular-overlay-panel.mjs","sources":["../../../projects/widgets/overlay-panel/types/overlay-panel-appearance.type.ts","../../../projects/widgets/overlay-panel/types/overlay-panel-variant.type.ts","../../../projects/widgets/overlay-panel/overlay-positions.ts","../../../projects/widgets/overlay-panel/overlay-panel-defaults.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.html","../../../projects/widgets/overlay-panel/i-cell-ids-angular-overlay-panel.ts"],"sourcesContent":["export const IdsOverlayPanelAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n ELEVATED: 'elevated',\n} as const;\n\nexport type IdsOverlayPanelAppearanceType = (typeof IdsOverlayPanelAppearance)[keyof typeof IdsOverlayPanelAppearance];\n","export const IdsOverlayPanelVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsOverlayPanelVariantType = (typeof IdsOverlayPanelVariant)[keyof typeof IdsOverlayPanelVariant];\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const overlayConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n","import { overlayConnectedPositions } from './overlay-positions';\nimport { IdsOverlayPanelAppearance, IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariant, IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsOverlayPanelDefaultConfig {\n appearance?: IdsOverlayPanelAppearanceType,\n size?: IdsSizeType,\n variant?: IdsOverlayPanelVariantType,\n positions?: ConnectedPosition[],\n}\n\nexport const IDS_OVERLAY_PANEL_DEFAULT_CONFIG = new InjectionToken<IdsOverlayPanelDefaultConfig>(\n 'IDS_OVERLAY_PANEL_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY(): Required<IdsOverlayPanelDefaultConfig> {\n return {\n appearance: IdsOverlayPanelAppearance.FILLED,\n size: IdsSize.COMPACT,\n variant: IdsOverlayPanelVariant.LIGHT,\n positions: overlayConnectedPositions,\n };\n}\n\n","import {\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG,\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n IdsOverlayPanelDefaultConfig,\n} from './overlay-panel-defaults';\nimport { IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CdkMenu } from '@angular/cdk/menu';\nimport { OverlayModule, CdkOverlayOrigin, CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input, computed, contentChild,\n ElementRef,\n viewChild,\n untracked,\n effect,\n model,\n} from '@angular/core';\nimport { IdsSizeType, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-overlay-panel',\n imports: [\n OverlayModule,\n A11yModule,\n NgClass,\n ],\n templateUrl: './overlay-panel.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class IdsOverlayPanelComponent extends ComponentBaseWithDefaults<IdsOverlayPanelDefaultConfig> {\n protected override get _hostName(): string {\n return 'overlay-panel';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_OVERLAY_PANEL_DEFAULT_CONFIG);\n\n public open = model<boolean>(false);\n public origin = input.required<CdkOverlayOrigin | ElementRef>();\n public positions = input<ConnectedPosition[]>(this._defaultConfig.positions);\n\n public appearance = input<IdsOverlayPanelAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsOverlayPanelVariantType>(this._defaultConfig.variant);\n public panelClasses = input<string>('');\n public width = input<string | number>();\n public readonly overlayDir = viewChild(CdkConnectedOverlay);\n\n protected _hasCdkMenu = computed(() => !!this._cdkMenu());\n private _cdkMenu = contentChild(CdkMenu, { descendants: true });\n private _focusTrap = viewChild(CdkTrapFocus);\n\n constructor() {\n super();\n\n effect(() => {\n if (this._focusTrap()) {\n this._focusTrap()?.focusTrap.focusInitialElementWhenReady({ preventScroll: true });\n }\n });\n\n effect(() => {\n const overlayDir = this.overlayDir();\n const overlayWidth = this.width();\n\n // apply width after the overlay has been rendered\n untracked(() => {\n if (overlayDir && overlayWidth) {\n overlayDir.width = overlayWidth;\n }\n });\n });\n }\n\n public toggle(): void {\n this.open.update((open) => !open);\n }\n\n protected _close(): void {\n if (this.open()) {\n this.open.set(false);\n }\n }\n\n protected _panelClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n this._hasCdkMenu() ? 'has-menu' : null,\n ]),\n );\n\n protected _hostClasses = computed(() => '');\n}\n","<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -137,9 +137,10 @@ class IdsRadioGroupDirective extends ComponentBaseWithDefaults {
|
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
139
|
const items = this._items();
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
const index = this._getCurrentItemIndex(event, items);
|
|
141
|
+
if (index < 0) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
143
144
|
switch (event.key) {
|
|
144
145
|
case 'ArrowUp': {
|
|
145
146
|
if (orientation === IdsOrientation.HORIZONTAL) {
|
|
@@ -194,6 +195,21 @@ class IdsRadioGroupDirective extends ComponentBaseWithDefaults {
|
|
|
194
195
|
return;
|
|
195
196
|
}
|
|
196
197
|
}
|
|
198
|
+
_getCurrentItemIndex(event, items) {
|
|
199
|
+
const target = event.target;
|
|
200
|
+
const activeElement = document.activeElement;
|
|
201
|
+
const currentInputId = target?.id || activeElement?.id;
|
|
202
|
+
if (currentInputId) {
|
|
203
|
+
const focusedItemIndex = items.findIndex((item) => {
|
|
204
|
+
const itemInputId = item.inputId();
|
|
205
|
+
return itemInputId === currentInputId || `${itemInputId}-native` === currentInputId;
|
|
206
|
+
});
|
|
207
|
+
if (focusedItemIndex >= 0) {
|
|
208
|
+
return focusedItemIndex;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return items.findIndex((item) => item.selected());
|
|
212
|
+
}
|
|
197
213
|
ngOnInit() {
|
|
198
214
|
this._selectionModel = new SelectionModel(false, undefined, false, this.valueCompareFn);
|
|
199
215
|
if (this._hasInvalidLabelPosition()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-radio.mjs","sources":["../../../projects/widgets/radio/types/radio-variant.type.ts","../../../projects/widgets/radio/types/radio-events.class.ts","../../../projects/widgets/radio/radio-defaults.ts","../../../projects/widgets/radio/radio.component.ts","../../../projects/widgets/radio/radio.component.html","../../../projects/widgets/radio/radio-group.directive.ts","../../../projects/widgets/radio/i-cell-ids-angular-radio.ts"],"sourcesContent":["export const IdsRadioVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsRadioVariantType = (typeof IdsRadioVariant)[keyof typeof IdsRadioVariant];\n","import { IdsRadioComponent } from '../radio.component';\n\nexport class IdsRadioChangeEvent {\n constructor(\n public source: IdsRadioComponent,\n public value: unknown,\n ) {}\n}\n","import { IdsRadioVariant, IdsRadioVariantType } from './types/radio-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsOrientation, IdsOrientationType, IdsPosition, IdsPositionType, IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsRadioDefaultConfig {\n size?: IdsSizeType\n variant?: IdsRadioVariantType\n orientation?: IdsOrientationType\n labelPosition?: IdsPositionType\n}\n\nexport const IDS_RADIO_DEFAULT_CONFIG = new InjectionToken<IdsRadioDefaultConfig>(\n 'IDS_RADIO_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_RADIO_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_RADIO_DEFAULT_CONFIG_FACTORY(): Required<IdsRadioDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsRadioVariant.SURFACE,\n orientation: IdsOrientation.VERTICAL,\n labelPosition: IdsPosition.RIGHT,\n };\n}\n","import { IdsRadioGroupDirective } from './radio-group.directive';\nimport { IdsRadioChangeEvent } from './types/radio-events.class';\n\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, OnInit, output, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { coerceNumberAttribute, ComponentBase } from '@i-cell/ids-angular/core';\n\n@Component({\n selector: 'ids-radio',\n imports: [],\n templateUrl: './radio.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsRadioComponent extends ComponentBase implements OnInit {\n protected override get _hostName(): string {\n return 'radio';\n }\n\n private _group = inject(IdsRadioGroupDirective, { optional: true, skipSelf: true });\n\n public selected = signal<boolean>(false);\n\n public inputId = input<string>(this._uniqueId);\n public value = input.required<unknown>();\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledBy = input<string>('', { alias: 'aria-labelledby' });\n public ariaDescribedBy = input<string>('', { alias: 'aria-describedby' });\n public tabIndex = input<number, unknown>(0, { transform: coerceNumberAttribute });\n public disabled = input<boolean>(false);\n\n protected _isDisabled = computed(() => this.disabled() || this._group?.isDisabled());\n protected _name = computed(() => this._group?.name());\n protected _required = computed(() => this._group?.required());\n protected _ariaChecked = computed(() => this.selected());\n protected _inputId = computed(() => (this.inputId() === this._uniqueId ? `${this._uniqueId}-native` : this.inputId()));\n protected _hostClasses = computed(() => this._getHostClasses([\n this._group?.variant() ?? null,\n this._group?.labelPosition() ?? null,\n this._isDisabled() ? 'disabled' : null,\n ]));\n\n private _inputElement = viewChild.required<ElementRef<HTMLButtonElement>>('input');\n\n public readonly changes = output<IdsRadioChangeEvent>();\n\n public ngOnInit(): void {\n if (!this._group) {\n throw this._createHostError('component must be direct child of a radio group');\n }\n if (this._group.isItemPreSelectedByValue(this.value())) {\n this.selected.set(true);\n }\n }\n\n public onChange(): void {\n this.changes.emit(new IdsRadioChangeEvent(this, this.value()));\n }\n\n protected _touchTargetClick(): void {\n if (!this.selected() && !this._isDisabled()) {\n this._inputElement().nativeElement.focus();\n this.onChange();\n }\n }\n\n protected _innerCircleClick(): void {\n if (!this.selected() && !this._isDisabled()) {\n this._inputElement().nativeElement.focus();\n this.onChange();\n }\n }\n\n public focus(options?: FocusOptions): void {\n this._inputElement().nativeElement.focus(options);\n }\n}\n","<div class=\"ids-radio__input-wrapper\">\n <div class=\"ids-radio__touch-target\" (click)=\"_touchTargetClick()\"></div>\n <input\n #input\n class=\"ids-radio__native-control\"\n type=\"radio\"\n [id]=\"_inputId()\"\n [checked]=\"selected()\"\n [disabled]=\"_isDisabled()\"\n [attr.name]=\"_name()\"\n [attr.value]=\"value()\"\n [required]=\"_required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.aria-checked]=\"_ariaChecked()\"\n (change)=\"onChange()\"\n />\n <div class=\"ids-radio__inner-circle\" (click)=\"_innerCircleClick()\"></div>\n</div>\n<label class=\"ids-radio__label\" [for]=\"_inputId()\">\n <ng-content />\n</label>\n","import { IDS_RADIO_DEFAULT_CONFIG, IDS_RADIO_DEFAULT_CONFIG_FACTORY, IdsRadioDefaultConfig } from './radio-defaults';\nimport { IdsRadioComponent } from './radio.component';\nimport { IdsRadioChangeEvent } from './types/radio-events.class';\nimport { IdsRadioVariantType } from './types/radio-variant.type';\n\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { AfterContentChecked, computed, contentChildren, Directive, forwardRef, Input, input, isDevMode, OnInit, output, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanAttribute, IdsOrientation, IdsOrientationType, IdsPositionType, IdsSizeType, IdsVerticalPosition, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_RADIO_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: 'ids-radio-group',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsRadioGroupDirective),\n multi: true,\n },\n ],\n host: {\n '(keydown)': '_handleKeyDown($event)',\n },\n})\nexport class IdsRadioGroupDirective\n extends ComponentBaseWithDefaults<IdsRadioDefaultConfig>\n implements OnInit, AfterContentChecked, ControlValueAccessor {\n protected override get _hostName(): string {\n return 'radio-group';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_RADIO_DEFAULT_CONFIG);\n\n private _selectionModel?: SelectionModel<IdsRadioComponent>;\n private _rawValue: unknown;\n private _items = contentChildren<IdsRadioComponent>(IdsRadioComponent, { descendants: true });\n\n public name = input.required<string>();\n public required = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsRadioVariantType>(this._defaultConfig.variant);\n public orientation = input<IdsOrientationType>(this._defaultConfig.orientation);\n public labelPosition = input<IdsPositionType>(this._defaultConfig.labelPosition);\n public isDisabled = signal<boolean>(false);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.orientation(),\n this.labelPosition(),\n ]));\n\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => unknown = () => {};\n\n @Input() public valueCompareFn?: (o1: IdsRadioComponent, o2: IdsRadioComponent) => boolean;\n @Input({ transform: coerceBooleanAttribute })\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this.isDisabled.set(value);\n }\n }\n\n public readonly itemChanges = output<IdsRadioChangeEvent>();\n\n private _handleKeyDown(event: KeyboardEvent): void {\n const navigationKeys: Record<IdsOrientationType, Set<string>> = {\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n horizontal: new Set(['ArrowLeft', 'ArrowRight', 'Enter', ' ']),\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n vertical: new Set(['ArrowUp', 'ArrowDown', 'Enter', ' ']),\n };\n\n const orientation = this.orientation();\n\n if (navigationKeys.horizontal.has(event.key) || navigationKeys.vertical.has(event.key)) {\n event.preventDefault();\n }\n if (!navigationKeys[orientation].has(event.key)) {\n return;\n }\n\n const items = this._items();\n const target = event.target as HTMLButtonElement;\n const inputId = target.id;\n const index = items.findIndex((item) => item.inputId() === inputId);\n\n switch (event.key) {\n case 'ArrowUp': {\n if (orientation === IdsOrientation.HORIZONTAL) {\n return;\n }\n if (index === 0) {\n return;\n }\n const prevItem = items[index - 1];\n prevItem.focus();\n break;\n }\n case 'ArrowLeft': {\n if (orientation === IdsOrientation.VERTICAL) {\n return;\n }\n if (index === 0) {\n return;\n }\n const prevItem = items[index - 1];\n prevItem.focus();\n break;\n }\n case 'ArrowDown': {\n if (orientation === IdsOrientation.HORIZONTAL) {\n return;\n }\n if (index === (items.length - 1)) {\n return;\n }\n const nextItem = items[index + 1];\n nextItem.focus();\n break;\n }\n case 'ArrowRight': {\n if (orientation === IdsOrientation.VERTICAL) {\n return;\n }\n if (index === (items.length - 1)) {\n return;\n }\n const nextItem = items[index + 1];\n nextItem.focus();\n break;\n }\n case 'Enter':\n case ' ': {\n items[index].onChange();\n break;\n }\n default:\n return;\n }\n }\n\n public ngOnInit(): void {\n this._selectionModel = new SelectionModel<IdsRadioComponent>(false, undefined, false, this.valueCompareFn);\n\n if (this._hasInvalidLabelPosition()) {\n throw this._createHostError('invalid `orientation` + `labelPosition` combination.');\n }\n }\n\n public ngAfterContentChecked(): void {\n const items = this._items();\n const minItemCount = 2;\n\n if (isDevMode() && (items.length < minItemCount)) {\n throw this._createHostError('invalid count of radio items. Minimum item count is 2.');\n }\n\n this._selectionModel?.select(...this._items().filter((item) => item.selected()));\n this._subscribeItemChanges();\n }\n\n public writeValue(value: unknown | unknown[]): void {\n this._setSelectionByValue(value);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => unknown): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n private _subscribeItemChanges(): void {\n this._items().forEach((item) => {\n item.changes.subscribe(\n (change) => {\n this._handleItemChanges(change);\n },\n );\n });\n }\n\n private _handleItemChanges(change: IdsRadioChangeEvent): void {\n const { source } = change;\n this._clearSelection();\n source.selected.set(true);\n this._selectionModel?.select(source);\n this.itemChanges.emit(change);\n this._handleChange();\n this._onTouched();\n }\n\n private _setSelectionByValue(value: unknown | unknown[]): void {\n this._rawValue = value;\n\n if (this._items().length === 0) {\n return;\n }\n\n this._clearSelection();\n this._selectValue(value);\n }\n\n private _selectValue(value: unknown): void {\n const correspondingItem = this._items().find((item) => item.value() != null && item.value() === value);\n if (correspondingItem) {\n correspondingItem.selected.set(true);\n this._selectionModel?.select(correspondingItem);\n }\n }\n\n private _clearSelection(): void {\n this._selectionModel?.clear();\n this._items().forEach((item) => {\n item.selected.set(false);\n });\n }\n\n private _handleChange(): void {\n const selectionModelValues = this._selectionModel?.selected?.map((item) => item.value());\n this._onChange(selectionModelValues?.[0]);\n }\n\n public isItemPreSelectedByValue(itemValue: unknown): boolean {\n if (this._rawValue === undefined) {\n return false;\n }\n\n return itemValue === this._rawValue;\n }\n\n private _hasInvalidLabelPosition(): boolean {\n const orientation = this.orientation();\n const labelPosition = this.labelPosition();\n\n return (orientation === IdsOrientation.VERTICAL && Object.values(IdsVerticalPosition).some((pos) => pos === labelPosition));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i-cell-ids-angular-radio.mjs","sources":["../../../projects/widgets/radio/types/radio-variant.type.ts","../../../projects/widgets/radio/types/radio-events.class.ts","../../../projects/widgets/radio/radio-defaults.ts","../../../projects/widgets/radio/radio.component.ts","../../../projects/widgets/radio/radio.component.html","../../../projects/widgets/radio/radio-group.directive.ts","../../../projects/widgets/radio/i-cell-ids-angular-radio.ts"],"sourcesContent":["export const IdsRadioVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsRadioVariantType = (typeof IdsRadioVariant)[keyof typeof IdsRadioVariant];\n","import { IdsRadioComponent } from '../radio.component';\n\nexport class IdsRadioChangeEvent {\n constructor(\n public source: IdsRadioComponent,\n public value: unknown,\n ) {}\n}\n","import { IdsRadioVariant, IdsRadioVariantType } from './types/radio-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsOrientation, IdsOrientationType, IdsPosition, IdsPositionType, IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsRadioDefaultConfig {\n size?: IdsSizeType\n variant?: IdsRadioVariantType\n orientation?: IdsOrientationType\n labelPosition?: IdsPositionType\n}\n\nexport const IDS_RADIO_DEFAULT_CONFIG = new InjectionToken<IdsRadioDefaultConfig>(\n 'IDS_RADIO_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_RADIO_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_RADIO_DEFAULT_CONFIG_FACTORY(): Required<IdsRadioDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsRadioVariant.SURFACE,\n orientation: IdsOrientation.VERTICAL,\n labelPosition: IdsPosition.RIGHT,\n };\n}\n","import { IdsRadioGroupDirective } from './radio-group.directive';\nimport { IdsRadioChangeEvent } from './types/radio-events.class';\n\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, OnInit, output, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { coerceNumberAttribute, ComponentBase } from '@i-cell/ids-angular/core';\n\n@Component({\n selector: 'ids-radio',\n imports: [],\n templateUrl: './radio.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsRadioComponent extends ComponentBase implements OnInit {\n protected override get _hostName(): string {\n return 'radio';\n }\n\n private _group = inject(IdsRadioGroupDirective, { optional: true, skipSelf: true });\n\n public selected = signal<boolean>(false);\n\n public inputId = input<string>(this._uniqueId);\n public value = input.required<unknown>();\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledBy = input<string>('', { alias: 'aria-labelledby' });\n public ariaDescribedBy = input<string>('', { alias: 'aria-describedby' });\n public tabIndex = input<number, unknown>(0, { transform: coerceNumberAttribute });\n public disabled = input<boolean>(false);\n\n protected _isDisabled = computed(() => this.disabled() || this._group?.isDisabled());\n protected _name = computed(() => this._group?.name());\n protected _required = computed(() => this._group?.required());\n protected _ariaChecked = computed(() => this.selected());\n protected _inputId = computed(() => (this.inputId() === this._uniqueId ? `${this._uniqueId}-native` : this.inputId()));\n protected _hostClasses = computed(() => this._getHostClasses([\n this._group?.variant() ?? null,\n this._group?.labelPosition() ?? null,\n this._isDisabled() ? 'disabled' : null,\n ]));\n\n private _inputElement = viewChild.required<ElementRef<HTMLButtonElement>>('input');\n\n public readonly changes = output<IdsRadioChangeEvent>();\n\n public ngOnInit(): void {\n if (!this._group) {\n throw this._createHostError('component must be direct child of a radio group');\n }\n if (this._group.isItemPreSelectedByValue(this.value())) {\n this.selected.set(true);\n }\n }\n\n public onChange(): void {\n this.changes.emit(new IdsRadioChangeEvent(this, this.value()));\n }\n\n protected _touchTargetClick(): void {\n if (!this.selected() && !this._isDisabled()) {\n this._inputElement().nativeElement.focus();\n this.onChange();\n }\n }\n\n protected _innerCircleClick(): void {\n if (!this.selected() && !this._isDisabled()) {\n this._inputElement().nativeElement.focus();\n this.onChange();\n }\n }\n\n public focus(options?: FocusOptions): void {\n this._inputElement().nativeElement.focus(options);\n }\n}\n","<div class=\"ids-radio__input-wrapper\">\n <div class=\"ids-radio__touch-target\" (click)=\"_touchTargetClick()\"></div>\n <input\n #input\n class=\"ids-radio__native-control\"\n type=\"radio\"\n [id]=\"_inputId()\"\n [checked]=\"selected()\"\n [disabled]=\"_isDisabled()\"\n [attr.name]=\"_name()\"\n [attr.value]=\"value()\"\n [required]=\"_required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.aria-checked]=\"_ariaChecked()\"\n (change)=\"onChange()\"\n />\n <div class=\"ids-radio__inner-circle\" (click)=\"_innerCircleClick()\"></div>\n</div>\n<label class=\"ids-radio__label\" [for]=\"_inputId()\">\n <ng-content />\n</label>\n","import { IDS_RADIO_DEFAULT_CONFIG, IDS_RADIO_DEFAULT_CONFIG_FACTORY, IdsRadioDefaultConfig } from './radio-defaults';\nimport { IdsRadioComponent } from './radio.component';\nimport { IdsRadioChangeEvent } from './types/radio-events.class';\nimport { IdsRadioVariantType } from './types/radio-variant.type';\n\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { AfterContentChecked, computed, contentChildren, Directive, forwardRef, Input, input, isDevMode, OnInit, output, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanAttribute, IdsOrientation, IdsOrientationType, IdsPositionType, IdsSizeType, IdsVerticalPosition, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_RADIO_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: 'ids-radio-group',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsRadioGroupDirective),\n multi: true,\n },\n ],\n host: {\n '(keydown)': '_handleKeyDown($event)',\n },\n})\nexport class IdsRadioGroupDirective\n extends ComponentBaseWithDefaults<IdsRadioDefaultConfig>\n implements OnInit, AfterContentChecked, ControlValueAccessor {\n protected override get _hostName(): string {\n return 'radio-group';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_RADIO_DEFAULT_CONFIG);\n\n private _selectionModel?: SelectionModel<IdsRadioComponent>;\n private _rawValue: unknown;\n private _items = contentChildren<IdsRadioComponent>(IdsRadioComponent, { descendants: true });\n\n public name = input.required<string>();\n public required = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsRadioVariantType>(this._defaultConfig.variant);\n public orientation = input<IdsOrientationType>(this._defaultConfig.orientation);\n public labelPosition = input<IdsPositionType>(this._defaultConfig.labelPosition);\n public isDisabled = signal<boolean>(false);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.orientation(),\n this.labelPosition(),\n ]));\n\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => unknown = () => {};\n\n @Input() public valueCompareFn?: (o1: IdsRadioComponent, o2: IdsRadioComponent) => boolean;\n @Input({ transform: coerceBooleanAttribute })\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this.isDisabled.set(value);\n }\n }\n\n public readonly itemChanges = output<IdsRadioChangeEvent>();\n\n private _handleKeyDown(event: KeyboardEvent): void {\n const navigationKeys: Record<IdsOrientationType, Set<string>> = {\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n horizontal: new Set(['ArrowLeft', 'ArrowRight', 'Enter', ' ']),\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n vertical: new Set(['ArrowUp', 'ArrowDown', 'Enter', ' ']),\n };\n\n const orientation = this.orientation();\n\n if (navigationKeys.horizontal.has(event.key) || navigationKeys.vertical.has(event.key)) {\n event.preventDefault();\n }\n if (!navigationKeys[orientation].has(event.key)) {\n return;\n }\n\n const items = this._items();\n const index = this._getCurrentItemIndex(event, items);\n\n if (index < 0) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowUp': {\n if (orientation === IdsOrientation.HORIZONTAL) {\n return;\n }\n if (index === 0) {\n return;\n }\n const prevItem = items[index - 1];\n prevItem.focus();\n break;\n }\n case 'ArrowLeft': {\n if (orientation === IdsOrientation.VERTICAL) {\n return;\n }\n if (index === 0) {\n return;\n }\n const prevItem = items[index - 1];\n prevItem.focus();\n break;\n }\n case 'ArrowDown': {\n if (orientation === IdsOrientation.HORIZONTAL) {\n return;\n }\n if (index === (items.length - 1)) {\n return;\n }\n const nextItem = items[index + 1];\n nextItem.focus();\n break;\n }\n case 'ArrowRight': {\n if (orientation === IdsOrientation.VERTICAL) {\n return;\n }\n if (index === (items.length - 1)) {\n return;\n }\n const nextItem = items[index + 1];\n nextItem.focus();\n break;\n }\n case 'Enter':\n case ' ': {\n items[index].onChange();\n break;\n }\n default:\n return;\n }\n }\n\n private _getCurrentItemIndex(event: KeyboardEvent, items: readonly IdsRadioComponent[]): number {\n const target = event.target as HTMLElement | null;\n const activeElement = document.activeElement as HTMLElement | null;\n const currentInputId = target?.id || activeElement?.id;\n\n if (currentInputId) {\n const focusedItemIndex = items.findIndex((item) => {\n const itemInputId = item.inputId();\n return itemInputId === currentInputId || `${itemInputId}-native` === currentInputId;\n });\n\n if (focusedItemIndex >= 0) {\n return focusedItemIndex;\n }\n }\n\n return items.findIndex((item) => item.selected());\n }\n\n public ngOnInit(): void {\n this._selectionModel = new SelectionModel<IdsRadioComponent>(false, undefined, false, this.valueCompareFn);\n\n if (this._hasInvalidLabelPosition()) {\n throw this._createHostError('invalid `orientation` + `labelPosition` combination.');\n }\n }\n\n public ngAfterContentChecked(): void {\n const items = this._items();\n const minItemCount = 2;\n\n if (isDevMode() && (items.length < minItemCount)) {\n throw this._createHostError('invalid count of radio items. Minimum item count is 2.');\n }\n\n this._selectionModel?.select(...this._items().filter((item) => item.selected()));\n this._subscribeItemChanges();\n }\n\n public writeValue(value: unknown | unknown[]): void {\n this._setSelectionByValue(value);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => unknown): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n private _subscribeItemChanges(): void {\n this._items().forEach((item) => {\n item.changes.subscribe(\n (change) => {\n this._handleItemChanges(change);\n },\n );\n });\n }\n\n private _handleItemChanges(change: IdsRadioChangeEvent): void {\n const { source } = change;\n this._clearSelection();\n source.selected.set(true);\n this._selectionModel?.select(source);\n this.itemChanges.emit(change);\n this._handleChange();\n this._onTouched();\n }\n\n private _setSelectionByValue(value: unknown | unknown[]): void {\n this._rawValue = value;\n\n if (this._items().length === 0) {\n return;\n }\n\n this._clearSelection();\n this._selectValue(value);\n }\n\n private _selectValue(value: unknown): void {\n const correspondingItem = this._items().find((item) => item.value() != null && item.value() === value);\n if (correspondingItem) {\n correspondingItem.selected.set(true);\n this._selectionModel?.select(correspondingItem);\n }\n }\n\n private _clearSelection(): void {\n this._selectionModel?.clear();\n this._items().forEach((item) => {\n item.selected.set(false);\n });\n }\n\n private _handleChange(): void {\n const selectionModelValues = this._selectionModel?.selected?.map((item) => item.value());\n this._onChange(selectionModelValues?.[0]);\n }\n\n public isItemPreSelectedByValue(itemValue: unknown): boolean {\n if (this._rawValue === undefined) {\n return false;\n }\n\n return itemValue === this._rawValue;\n }\n\n private _hasInvalidLabelPosition(): boolean {\n const orientation = this.orientation();\n const labelPosition = this.labelPosition();\n\n return (orientation === IdsOrientation.VERTICAL && Object.values(IdsVerticalPosition).some((pos) => pos === labelPosition));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAAO,MAAM,eAAe,GAAG;AAC7B,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;;;MCDD,mBAAmB,CAAA;IAC9B,WAAA,CACS,MAAyB,EACzB,KAAc,EAAA;QADd,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;IACX;AACJ;;MCKY,wBAAwB,GAAG,IAAI,cAAc,CACxD,0BAA0B,EAC1B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,gCAAgC;AAC1C,CAAA;SAGa,gCAAgC,GAAA;IAC9C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,WAAW,EAAE,cAAc,CAAC,QAAQ;QACpC,aAAa,EAAE,WAAW,CAAC,KAAK;KACjC;AACH;;ACdM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AAPpD,IAAA,WAAA,GAAA;;AAYU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5E,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;AAEjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,IAAI,CAAC,SAAS,mDAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAW;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,6CAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,kDAAI,KAAK,EAAE,iBAAiB,EAAA,CAAA,GAAA,CAA1B,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAC;AAChE,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAS,EAAE,mDAAI,KAAK,EAAE,kBAAkB,EAAA,CAAA,GAAA,CAA3B,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAC;AAClE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,CAAC,4CAAI,SAAS,EAAE,qBAAqB,EAAA,CAAA,GAAA,CAAlC,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAC;AAC1E,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,uDAAC;AAC1E,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,iDAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,qDAAC;QACnD,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,oDAAC;QAC5G,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI;YACpC,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,GAAG,IAAI;AACvC,SAAA,CAAC,wDAAC;AAEK,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAgC,OAAO,CAAC;QAElE,IAAA,CAAA,OAAO,GAAG,MAAM,EAAuB;AAgCxD,IAAA;AA7DC,IAAA,IAAuB,SAAS,GAAA;AAC9B,QAAA,OAAO,OAAO;IAChB;IA6BO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,iDAAiD,CAAC;QAChF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB;IACF;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChE;IAEU,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YAC3C,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAC1C,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;IAEU,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YAC3C,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAC1C,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;AAEO,IAAA,KAAK,CAAC,OAAsB,EAAA;QACjC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;IACnD;8GA7DW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wqCCb9B,4wBAuBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDVa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,EAAE,EAAA,aAAA,EAEI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4wBAAA,EAAA;;;AEDjD,MAAM,aAAa,GAAG,gCAAgC,EAAE;AAgBlD,MAAO,sBACX,SAAQ,yBAAgD,CAAA;AAf1D,IAAA,WAAA,GAAA;;QAqBqB,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,wBAAwB,CAAC;AAI3F,QAAA,IAAA,CAAA,MAAM,GAAG,eAAe,CAAoB,iBAAiB,0CAAI,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAAnB,EAAE,WAAW,EAAE,IAAI,EAAE,GAAC;AAEtF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAU;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAmB,KAAK,4CAAI,SAAS,EAAE,sBAAsB,EAAA,CAAA,GAAA,CAAnC,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAC;QAChF,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAsB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjE,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxE,IAAA,CAAA,aAAa,GAAG,KAAK,CAAkB,IAAI,CAAC,cAAc,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;QAEhC,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;AACrB,SAAA,CAAC,wDAAC;AAEK,QAAA,IAAA,CAAA,SAAS,GAA6B,MAAK,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAkB,MAAK,EAAE,CAAC;QAU5B,IAAA,CAAA,WAAW,GAAG,MAAM,EAAuB;AAyM5D,IAAA;AA5OC,IAAA,IAAuB,SAAS,GAAA;AAC9B,QAAA,OAAO,aAAa;IACtB;IA0BA,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACF;AAIQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACzC,QAAA,MAAM,cAAc,GAA4C;;AAE9D,YAAA,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;;AAE9D,YAAA,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;SAC1D;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACtF,KAAK,CAAC,cAAc,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/C;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;AAErD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb;QACF;AAEA,QAAA,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,SAAS,EAAE;AACd,gBAAA,IAAI,WAAW,KAAK,cAAc,CAAC,UAAU,EAAE;oBAC7C;gBACF;AACA,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf;gBACF;gBACA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjC,QAAQ,CAAC,KAAK,EAAE;gBAChB;YACF;YACA,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,WAAW,KAAK,cAAc,CAAC,QAAQ,EAAE;oBAC3C;gBACF;AACA,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf;gBACF;gBACA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjC,QAAQ,CAAC,KAAK,EAAE;gBAChB;YACF;YACA,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,WAAW,KAAK,cAAc,CAAC,UAAU,EAAE;oBAC7C;gBACF;gBACA,IAAI,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBAChC;gBACF;gBACA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjC,QAAQ,CAAC,KAAK,EAAE;gBAChB;YACF;YACA,KAAK,YAAY,EAAE;AACjB,gBAAA,IAAI,WAAW,KAAK,cAAc,CAAC,QAAQ,EAAE;oBAC3C;gBACF;gBACA,IAAI,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBAChC;gBACF;gBACA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjC,QAAQ,CAAC,KAAK,EAAE;gBAChB;YACF;AACA,YAAA,KAAK,OAAO;YACZ,KAAK,GAAG,EAAE;AACR,gBAAA,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;gBACvB;YACF;AACA,YAAA;gBACE;;IAEN;IAEQ,oBAAoB,CAAC,KAAoB,EAAE,KAAmC,EAAA;AACpF,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAmC;QAClE,MAAM,cAAc,GAAG,MAAM,EAAE,EAAE,IAAI,aAAa,EAAE,EAAE;QAEtD,IAAI,cAAc,EAAE;YAClB,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAChD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;gBAClC,OAAO,WAAW,KAAK,cAAc,IAAI,GAAG,WAAW,CAAA,OAAA,CAAS,KAAK,cAAc;AACrF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,gBAAgB,IAAI,CAAC,EAAE;AACzB,gBAAA,OAAO,gBAAgB;YACzB;QACF;AAEA,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnD;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAoB,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC;AAE1G,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACnC,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,sDAAsD,CAAC;QACrF;IACF;IAEO,qBAAqB,GAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;QAC3B,MAAM,YAAY,GAAG,CAAC;QAEtB,IAAI,SAAS,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,wDAAwD,CAAC;QACvF;QAEA,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEO,IAAA,UAAU,CAAC,KAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAClC;AAEO,IAAA,gBAAgB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,CAAC,MAAM,KAAI;AACT,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACjC,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,kBAAkB,CAAC,MAA2B,EAAA;AACpD,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;QACzB,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEQ,IAAA,oBAAoB,CAAC,KAA0B,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B;QACF;QAEA,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;AAEQ,IAAA,YAAY,CAAC,KAAc,EAAA;AACjC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC;QACtG,IAAI,iBAAiB,EAAE;AACrB,YAAA,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;QACjD;IACF;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;QACnB,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;IAC3C;AAEO,IAAA,wBAAwB,CAAC,SAAkB,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS;IACrC;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAE1C,QAAQ,WAAW,KAAK,cAAc,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,aAAa,CAAC;IAC5H;8GA9OW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA+Bb,sBAAsB,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EA1C/B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAgBmD,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAX1D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,wBAAwB;AACtC,qBAAA;AACF,iBAAA;8BA+BiB,cAAc,EAAA,CAAA;sBAA7B;gBAEG,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,SAAS,EAAE,sBAAsB,EAAE;;;ACzD9C;;AAEG;;;;"}
|
|
@@ -68,15 +68,18 @@ class IdsSegmentedControlToggleDirective extends ComponentBaseWithDefaults {
|
|
|
68
68
|
}
|
|
69
69
|
_handleKeyDown(event) {
|
|
70
70
|
// eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline
|
|
71
|
-
const navigationKeys = ['ArrowLeft', 'ArrowRight', 'Enter', ' '];
|
|
71
|
+
const navigationKeys = ['ArrowLeft', 'ArrowRight', 'Enter', 'Spacebar', ' '];
|
|
72
72
|
if (!navigationKeys.includes(event.key)) {
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
event.preventDefault();
|
|
76
76
|
const items = this._items();
|
|
77
77
|
const target = event.target;
|
|
78
|
-
const buttonId = target
|
|
79
|
-
const index = items.findIndex((item) => item.id() === buttonId);
|
|
78
|
+
const buttonId = target?.closest('button')?.id;
|
|
79
|
+
const index = items.findIndex((item) => `${item.id()}-button` === buttonId);
|
|
80
|
+
if (index < 0) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
80
83
|
switch (event.key) {
|
|
81
84
|
case 'ArrowLeft': {
|
|
82
85
|
if (index === 0) {
|
|
@@ -95,7 +98,8 @@ class IdsSegmentedControlToggleDirective extends ComponentBaseWithDefaults {
|
|
|
95
98
|
break;
|
|
96
99
|
}
|
|
97
100
|
case 'Enter':
|
|
98
|
-
case ' ':
|
|
101
|
+
case ' ':
|
|
102
|
+
case 'Spacebar': {
|
|
99
103
|
items[index].onClick();
|
|
100
104
|
break;
|
|
101
105
|
}
|