@i-cell/ids-angular 0.1.4 → 0.1.6
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/avatar/avatar.component.d.ts +1 -1
- package/button/button.component.d.ts +3 -3
- package/checkbox/checkbox.component.d.ts +7 -5
- package/checkbox/types/checkbox-group-child.d.ts +2 -1
- package/dialog/dialog.component.d.ts +3 -3
- package/fesm2022/i-cell-ids-angular-avatar.mjs +4 -4
- package/fesm2022/i-cell-ids-angular-avatar.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-button.mjs +4 -4
- package/fesm2022/i-cell-ids-angular-button.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-checkbox.mjs +21 -20
- package/fesm2022/i-cell-ids-angular-checkbox.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-dialog.mjs +5 -5
- package/fesm2022/i-cell-ids-angular-dialog.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-forms.mjs +62 -57
- package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-icon-button.mjs +3 -3
- package/fesm2022/i-cell-ids-angular-icon-button.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-icon.mjs +12 -2
- package/fesm2022/i-cell-ids-angular-icon.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-menu.mjs +6 -6
- package/fesm2022/i-cell-ids-angular-menu.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-notification.mjs +3 -3
- package/fesm2022/i-cell-ids-angular-notification.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-paginator.mjs +11 -11
- package/fesm2022/i-cell-ids-angular-paginator.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-radio.mjs +11 -11
- package/fesm2022/i-cell-ids-angular-radio.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-select.mjs +59 -19
- package/fesm2022/i-cell-ids-angular-select.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-snackbar.mjs +8 -8
- package/fesm2022/i-cell-ids-angular-snackbar.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-spinner.mjs +67 -0
- package/fesm2022/i-cell-ids-angular-spinner.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-switch.mjs +15 -15
- package/fesm2022/i-cell-ids-angular-switch.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-tab.mjs +7 -6
- package/fesm2022/i-cell-ids-angular-tab.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-table.mjs +4 -7
- package/fesm2022/i-cell-ids-angular-table.mjs.map +1 -1
- package/fesm2022/i-cell-ids-angular-tag.mjs +4 -4
- package/fesm2022/i-cell-ids-angular-tag.mjs.map +1 -1
- package/forms/components/form-field/form-field-control.d.ts +1 -1
- package/forms/components/form-field/form-field.component.d.ts +12 -13
- package/forms/components/input/input.directive.d.ts +15 -10
- package/icon/icon-defaults.d.ts +1 -0
- package/icon/icon.component.d.ts +1 -0
- package/icon-button/icon-button.component.d.ts +2 -2
- package/menu/menu-item/menu-item.component.d.ts +4 -4
- package/notification/notification.component.d.ts +1 -1
- package/package.json +13 -9
- package/paginator/paginator.component.d.ts +7 -7
- package/radio/radio.component.d.ts +6 -6
- package/select/select.component.d.ts +19 -7
- package/snackbar/snackbar.component.d.ts +5 -5
- package/spinner/index.d.ts +5 -0
- package/spinner/public-api.d.ts +3 -0
- package/spinner/spinner-defaults.d.ts +11 -0
- package/spinner/spinner.component.d.ts +17 -0
- package/spinner/types/spinner-variant.type.d.ts +11 -0
- package/switch/switch.component.d.ts +3 -3
- package/tab/tab-group.component.d.ts +3 -2
- package/tag/tag.component.d.ts +3 -3
|
@@ -38,6 +38,7 @@ function IDS_ICON_DEFAULT_CONFIG_FACTORY() {
|
|
|
38
38
|
sizeCollection: IdsSizeCollection.SMALL,
|
|
39
39
|
variant: IdsIconVariant.SURFACE,
|
|
40
40
|
iconAssetsPath: '',
|
|
41
|
+
fontNameMappings: {},
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
44
|
|
|
@@ -58,6 +59,15 @@ class IdsIconComponent extends ComponentBaseWithDefaults {
|
|
|
58
59
|
this.svgIconName = input(null, { alias: 'svgIcon', transform: coerceStringAttribute });
|
|
59
60
|
this.ariaHidden = input(true, { alias: 'aria-hidden', transform: coerceBooleanAttribute });
|
|
60
61
|
this._svgIcon = null;
|
|
62
|
+
this._safeFontIcon = computed(() => {
|
|
63
|
+
const iconName = this.fontIcon();
|
|
64
|
+
if (!iconName) {
|
|
65
|
+
return iconName;
|
|
66
|
+
}
|
|
67
|
+
const fontNameMappings = this._defaultConfig.fontNameMappings;
|
|
68
|
+
const mappedIconName = fontNameMappings?.[iconName];
|
|
69
|
+
return mappedIconName ?? iconName;
|
|
70
|
+
});
|
|
61
71
|
this._iconSourceType = computed(() => (this.fontIcon() ? IdsIconSource.FONT : IdsIconSource.SVG));
|
|
62
72
|
this._parentOrSelfVariant = computed(() => this._parent?.embeddedIconVariant() ?? this.variant());
|
|
63
73
|
this._hostClasses = computed(() => this._getHostClasses([
|
|
@@ -123,7 +133,7 @@ class IdsIconComponent extends ComponentBaseWithDefaults {
|
|
|
123
133
|
return svg;
|
|
124
134
|
}
|
|
125
135
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.2", type: IdsIconComponent, isStandalone: true, selector: "ids-icon", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sizeCollection: { classPropertyName: "sizeCollection", publicName: "sizeCollection", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, fontIcon: { classPropertyName: "fontIcon", publicName: "fontIcon", isSignal: true, isRequired: false, transformFunction: null }, svgIconName: { classPropertyName: "svgIconName", publicName: "svgIcon", isSignal: true, isRequired: false, transformFunction: null }, ariaHidden: { classPropertyName: "ariaHidden", publicName: "aria-hidden", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "img" }, properties: { "attr.aria-hidden": "ariaHidden().toString()", "attr.fontIcon": "this.
|
|
136
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.2", type: IdsIconComponent, isStandalone: true, selector: "ids-icon", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sizeCollection: { classPropertyName: "sizeCollection", publicName: "sizeCollection", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, fontIcon: { classPropertyName: "fontIcon", publicName: "fontIcon", isSignal: true, isRequired: false, transformFunction: null }, svgIconName: { classPropertyName: "svgIconName", publicName: "svgIcon", isSignal: true, isRequired: false, transformFunction: null }, ariaHidden: { classPropertyName: "ariaHidden", publicName: "aria-hidden", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "img" }, properties: { "attr.aria-hidden": "ariaHidden().toString()", "attr.fontIcon": "this._safeFontIcon()" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
127
137
|
}
|
|
128
138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsIconComponent, decorators: [{
|
|
129
139
|
type: Component,
|
|
@@ -135,7 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
|
|
|
135
145
|
encapsulation: ViewEncapsulation.None,
|
|
136
146
|
host: {
|
|
137
147
|
'[attr.aria-hidden]': 'ariaHidden().toString()',
|
|
138
|
-
'[attr.fontIcon]': 'this.
|
|
148
|
+
'[attr.fontIcon]': 'this._safeFontIcon()',
|
|
139
149
|
'role': 'img',
|
|
140
150
|
},
|
|
141
151
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-icon.mjs","sources":["../../../projects/widgets/icon/tokens/icon-parent.ts","../../../projects/widgets/icon/types/icon-source.type.ts","../../../projects/widgets/icon/types/icon-variant.type.ts","../../../projects/widgets/icon/icon-defaults.ts","../../../projects/widgets/icon/icon.component.ts","../../../projects/widgets/icon/i-cell-ids-angular-icon.ts"],"sourcesContent":["import { IdsIconVariantType } from '../types/icon-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\n\nexport abstract class IdsIconParent {\n public readonly embeddedIconVariant!: Signal<IdsIconVariantType>;\n};\n\nexport const IDS_ICON_PARENT = new InjectionToken<IdsIconParent>(\n 'IDS_ICON_PARENT',\n);\n","export const IdsIconSource = {\n SVG: 'svg',\n FONT: 'font',\n} as const;\n\nexport type IdsIconSourceType = (typeof IdsIconSource)[keyof typeof IdsIconSource];\n","export const IdsIconVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n BRAND: 'brand',\n LIGHT: 'light',\n DARK: 'dark',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsIconVariantType = (typeof IdsIconVariant)[keyof typeof IdsIconVariant];\n","import { IdsIconVariant, IdsIconVariantType } from './types/icon-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeCollection, IdsSizeCollectionType, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsIconDefaultConfig {\n size?: IdsSizeType\n sizeCollection?: IdsSizeCollectionType\n variant?: IdsIconVariantType\n iconAssetsPath: string\n}\n\nexport const IDS_ICON_DEFAULT_CONFIG = new InjectionToken<IdsIconDefaultConfig>(\n 'IDS_ICON_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_ICON_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_ICON_DEFAULT_CONFIG_FACTORY(): Required<IdsIconDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n sizeCollection: IdsSizeCollection.SMALL,\n variant: IdsIconVariant.SURFACE,\n iconAssetsPath: '',\n };\n}\n","import { IDS_ICON_DEFAULT_CONFIG, IDS_ICON_DEFAULT_CONFIG_FACTORY, IdsIconDefaultConfig } from './icon-defaults';\nimport { IDS_ICON_PARENT } from './tokens/icon-parent';\nimport { IdsIconSource } from './types/icon-source.type';\nimport { IdsIconVariantType } from './types/icon-variant.type';\n\nimport { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, OnInit, SecurityContext, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { coerceBooleanAttribute, coerceStringAttribute, ComponentBaseWithDefaults, IdsSizeCollectionType, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_ICON_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-icon',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-hidden]': 'ariaHidden().toString()',\n '[attr.fontIcon]': 'this.fontIcon()',\n 'role': 'img',\n },\n})\nexport class IdsIconComponent extends ComponentBaseWithDefaults<IdsIconDefaultConfig> implements OnInit {\n protected override get _hostName(): string {\n return 'icon';\n }\n\n private readonly _parent = inject(IDS_ICON_PARENT, { optional: true });\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_ICON_DEFAULT_CONFIG);\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n private readonly _document = inject(DOCUMENT);\n private readonly _httpClient = inject(HttpClient);\n private readonly _sanitizer = inject(DomSanitizer);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public sizeCollection = input<IdsSizeCollectionType>(this._defaultConfig.sizeCollection);\n public variant = input<IdsIconVariantType>(this._defaultConfig.variant);\n public fontIcon = input<string | null, string>(null, { transform: coerceStringAttribute });\n public svgIconName = input<string | null, string>(null, { alias: 'svgIcon', transform: coerceStringAttribute });\n public ariaHidden = input<boolean, unknown>(true, { alias: 'aria-hidden', transform: coerceBooleanAttribute });\n\n protected _svgIcon: SVGElement | null = null;\n\n protected _iconSourceType = computed(() => (this.fontIcon() ? IdsIconSource.FONT : IdsIconSource.SVG));\n\n private _parentOrSelfVariant = computed(() => this._parent?.embeddedIconVariant() ?? this.variant());\n protected _hostClasses = computed(() => this._getHostClasses([\n [\n `${this.sizeCollection()}collection`,\n this.size(),\n ],\n this._parentOrSelfVariant(),\n this._iconSourceType(),\n ]));\n\n private _sanitizeSvgIconEffect = effect(() => {\n const svgIconName = this.svgIconName();\n if (!svgIconName) {\n this._svgIcon = null;\n return;\n }\n\n const svgIconSafeUrl = this._sanitizer.sanitize(\n SecurityContext.RESOURCE_URL,\n this._sanitizer.bypassSecurityTrustResourceUrl(`${this._defaultConfig.iconAssetsPath}/${svgIconName}.svg`),\n );\n\n if (!svgIconSafeUrl) {\n this._svgIcon = null;\n return;\n }\n\n this._getSvgElementSource(svgIconSafeUrl);\n });\n\n public ngOnInit(): void {\n if (this.fontIcon() && this.svgIconName()) {\n throw this._createHostError('Font icon and svg icon can not be used together!');\n }\n }\n\n private _getSvgElementSource(url: string): void {\n this._httpClient\n .get(url, { responseType: 'text' })\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((svg) => {\n this._svgIcon = this._getSvgElement(this._sanitizer.bypassSecurityTrustHtml(svg));\n this._setSvgElement(this._svgIcon);\n });\n }\n\n private _setSvgElement(svg: SVGElement): void {\n this._clearSvgElement();\n\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement(): void {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n\n private _getSvgElement(safeHtml: SafeHtml): SVGElement {\n const div = this._document.createElement('div');\n div.innerHTML = safeHtml as unknown as string;\n const svg = div.querySelector('svg');\n\n if (!svg) {\n throw this._createHostError('Svg element creation failed!');\n }\n\n return svg;\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-icon.mjs","sources":["../../../projects/widgets/icon/tokens/icon-parent.ts","../../../projects/widgets/icon/types/icon-source.type.ts","../../../projects/widgets/icon/types/icon-variant.type.ts","../../../projects/widgets/icon/icon-defaults.ts","../../../projects/widgets/icon/icon.component.ts","../../../projects/widgets/icon/i-cell-ids-angular-icon.ts"],"sourcesContent":["import { IdsIconVariantType } from '../types/icon-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\n\nexport abstract class IdsIconParent {\n public readonly embeddedIconVariant!: Signal<IdsIconVariantType>;\n};\n\nexport const IDS_ICON_PARENT = new InjectionToken<IdsIconParent>(\n 'IDS_ICON_PARENT',\n);\n","export const IdsIconSource = {\n SVG: 'svg',\n FONT: 'font',\n} as const;\n\nexport type IdsIconSourceType = (typeof IdsIconSource)[keyof typeof IdsIconSource];\n","export const IdsIconVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n BRAND: 'brand',\n LIGHT: 'light',\n DARK: 'dark',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsIconVariantType = (typeof IdsIconVariant)[keyof typeof IdsIconVariant];\n","import { IdsIconVariant, IdsIconVariantType } from './types/icon-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeCollection, IdsSizeCollectionType, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsIconDefaultConfig {\n size?: IdsSizeType\n sizeCollection?: IdsSizeCollectionType\n variant?: IdsIconVariantType\n iconAssetsPath: string\n fontNameMappings?: Record<string, string>\n}\n\nexport const IDS_ICON_DEFAULT_CONFIG = new InjectionToken<IdsIconDefaultConfig>(\n 'IDS_ICON_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_ICON_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_ICON_DEFAULT_CONFIG_FACTORY(): Required<IdsIconDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n sizeCollection: IdsSizeCollection.SMALL,\n variant: IdsIconVariant.SURFACE,\n iconAssetsPath: '',\n fontNameMappings: {},\n };\n}\n","import { IDS_ICON_DEFAULT_CONFIG, IDS_ICON_DEFAULT_CONFIG_FACTORY, IdsIconDefaultConfig } from './icon-defaults';\nimport { IDS_ICON_PARENT } from './tokens/icon-parent';\nimport { IdsIconSource } from './types/icon-source.type';\nimport { IdsIconVariantType } from './types/icon-variant.type';\n\nimport { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, OnInit, SecurityContext, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { coerceBooleanAttribute, coerceStringAttribute, ComponentBaseWithDefaults, IdsSizeCollectionType, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_ICON_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-icon',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-hidden]': 'ariaHidden().toString()',\n '[attr.fontIcon]': 'this._safeFontIcon()',\n 'role': 'img',\n },\n})\nexport class IdsIconComponent extends ComponentBaseWithDefaults<IdsIconDefaultConfig> implements OnInit {\n protected override get _hostName(): string {\n return 'icon';\n }\n\n private readonly _parent = inject(IDS_ICON_PARENT, { optional: true });\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_ICON_DEFAULT_CONFIG);\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n private readonly _document = inject(DOCUMENT);\n private readonly _httpClient = inject(HttpClient);\n private readonly _sanitizer = inject(DomSanitizer);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public sizeCollection = input<IdsSizeCollectionType>(this._defaultConfig.sizeCollection);\n public variant = input<IdsIconVariantType>(this._defaultConfig.variant);\n public fontIcon = input<string | null, string>(null, { transform: coerceStringAttribute });\n public svgIconName = input<string | null, string>(null, { alias: 'svgIcon', transform: coerceStringAttribute });\n public ariaHidden = input<boolean, unknown>(true, { alias: 'aria-hidden', transform: coerceBooleanAttribute });\n\n protected _svgIcon: SVGElement | null = null;\n\n protected _safeFontIcon = computed(() => {\n const iconName = this.fontIcon();\n if (!iconName) {\n return iconName;\n }\n const fontNameMappings = this._defaultConfig.fontNameMappings;\n const mappedIconName = fontNameMappings?.[iconName];\n return mappedIconName ?? iconName;\n });\n\n protected _iconSourceType = computed(() => (this.fontIcon() ? IdsIconSource.FONT : IdsIconSource.SVG));\n\n private _parentOrSelfVariant = computed(() => this._parent?.embeddedIconVariant() ?? this.variant());\n protected _hostClasses = computed(() => this._getHostClasses([\n [\n `${this.sizeCollection()}collection`,\n this.size(),\n ],\n this._parentOrSelfVariant(),\n this._iconSourceType(),\n ]));\n\n private _sanitizeSvgIconEffect = effect(() => {\n const svgIconName = this.svgIconName();\n if (!svgIconName) {\n this._svgIcon = null;\n return;\n }\n\n const svgIconSafeUrl = this._sanitizer.sanitize(\n SecurityContext.RESOURCE_URL,\n this._sanitizer.bypassSecurityTrustResourceUrl(`${this._defaultConfig.iconAssetsPath}/${svgIconName}.svg`),\n );\n\n if (!svgIconSafeUrl) {\n this._svgIcon = null;\n return;\n }\n\n this._getSvgElementSource(svgIconSafeUrl);\n });\n\n public ngOnInit(): void {\n if (this.fontIcon() && this.svgIconName()) {\n throw this._createHostError('Font icon and svg icon can not be used together!');\n }\n }\n\n private _getSvgElementSource(url: string): void {\n this._httpClient\n .get(url, { responseType: 'text' })\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((svg) => {\n this._svgIcon = this._getSvgElement(this._sanitizer.bypassSecurityTrustHtml(svg));\n this._setSvgElement(this._svgIcon);\n });\n }\n\n private _setSvgElement(svg: SVGElement): void {\n this._clearSvgElement();\n\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement(): void {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n\n private _getSvgElement(safeHtml: SafeHtml): SVGElement {\n const div = this._document.createElement('div');\n div.innerHTML = safeHtml as unknown as string;\n const svg = div.querySelector('svg');\n\n if (!svg) {\n throw this._createHostError('Svg element creation failed!');\n }\n\n return svg;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -67,7 +67,7 @@ class IdsMenuItemComponent extends ComponentBaseWithDefaults {
|
|
|
67
67
|
get _hostName() {
|
|
68
68
|
return 'menu-item';
|
|
69
69
|
}
|
|
70
|
-
get
|
|
70
|
+
get _buttonType() {
|
|
71
71
|
return this._hostElement.tagName === 'BUTTON' ? 'button' : null;
|
|
72
72
|
}
|
|
73
73
|
constructor() {
|
|
@@ -80,8 +80,8 @@ class IdsMenuItemComponent extends ComponentBaseWithDefaults {
|
|
|
80
80
|
this.size = input(this._defaultConfig.size);
|
|
81
81
|
this.variant = input(this._defaultConfig.variant);
|
|
82
82
|
this.disabled = input(false, { transform: coerceBooleanAttribute });
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
83
|
+
this._iconLeading = contentChildren('[icon-leading]');
|
|
84
|
+
this._iconTrailing = contentChildren('[icon-trailing]');
|
|
85
85
|
this._hostClasses = computed(() => this._getHostClasses([
|
|
86
86
|
this.appearance(),
|
|
87
87
|
this.size(),
|
|
@@ -90,7 +90,7 @@ class IdsMenuItemComponent extends ComponentBaseWithDefaults {
|
|
|
90
90
|
!this.label() ? 'no-label' : null,
|
|
91
91
|
]));
|
|
92
92
|
effect(() => {
|
|
93
|
-
if (this.
|
|
93
|
+
if (this._buttonType) {
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
96
|
const link = this._hostElement;
|
|
@@ -116,7 +116,7 @@ class IdsMenuItemComponent extends ComponentBaseWithDefaults {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsMenuItemComponent, isStandalone: true, selector: "button[idsMenuItem],a[idsMenuItem]", inputs: { label: { classPropertyName: "label", publicName: "label", 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 }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "type": "buttonType", "attr.disabled": "disabled() ? \"\" : null", "attr.aria-disabled": "disabled() || null" } }, queries: [{ propertyName: "
|
|
119
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsMenuItemComponent, isStandalone: true, selector: "button[idsMenuItem],a[idsMenuItem]", inputs: { label: { classPropertyName: "label", publicName: "label", 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 }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "type": "buttonType", "attr.disabled": "disabled() ? \"\" : null", "attr.aria-disabled": "disabled() || null" } }, queries: [{ propertyName: "_iconLeading", predicate: ["[icon-leading]"], isSignal: true }, { propertyName: "_iconTrailing", predicate: ["[icon-trailing]"], isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItem }], ngImport: i0, template: "@if (_iconLeading()) {\n <ng-content select=\"ids-icon[icon-leading]\" />\n}\n@if (label()) {\n <div class=\"ids-menu-item-label--wrapper\"><span class=\"ids-menu-item-label\">{{ label() }}</span></div>\n}\n\n@if (_iconTrailing()) {\n <ng-content select=\"ids-icon[icon-trailing]\" />\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
120
120
|
}
|
|
121
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsMenuItemComponent, decorators: [{
|
|
122
122
|
type: Component,
|
|
@@ -124,7 +124,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
|
|
|
124
124
|
'[type]': 'buttonType',
|
|
125
125
|
'[attr.disabled]': 'disabled() ? "" : null',
|
|
126
126
|
'[attr.aria-disabled]': 'disabled() || null',
|
|
127
|
-
}, template: "@if (
|
|
127
|
+
}, template: "@if (_iconLeading()) {\n <ng-content select=\"ids-icon[icon-leading]\" />\n}\n@if (label()) {\n <div class=\"ids-menu-item-label--wrapper\"><span class=\"ids-menu-item-label\">{{ label() }}</span></div>\n}\n\n@if (_iconTrailing()) {\n <ng-content select=\"ids-icon[icon-trailing]\" />\n}\n" }]
|
|
128
128
|
}], ctorParameters: () => [] });
|
|
129
129
|
|
|
130
130
|
class IdsActiveIndicatorDirective {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-cell-ids-angular-menu.mjs","sources":["../../../projects/widgets/menu/action-menu/action-menu-trigger.directive.ts","../../../projects/widgets/menu/menu-item/types/menu-item-appearance.type.ts","../../../projects/widgets/menu/menu-item/types/menu-item-variant.type.ts","../../../projects/widgets/menu/menu-item/menu-item-defaults.ts","../../../projects/widgets/menu/menu-item/menu-item.component.ts","../../../projects/widgets/menu/menu-item/menu-item.component.html","../../../projects/widgets/menu/active-indicator/active-indicator.directive.ts","../../../projects/widgets/menu/i-cell-ids-angular-menu.ts"],"sourcesContent":["import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, inject } from '@angular/core';\n\n@Directive({\n selector: 'button[idsActionMenuTriggerFor]',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n inputs: ['cdkMenuTriggerFor: idsActionMenuTriggerFor'],\n },\n ],\n exportAs: 'idsActionMenuTrigger',\n})\nexport class IdsActionMenuTriggerDirective {\n public menuTrigger = inject(CdkMenuTrigger);\n\n get isOpen(): boolean {\n return !!this.menuTrigger.isOpen();\n }\n\n public open(): void {\n this.menuTrigger.open();\n }\n\n public close(): void {\n this.menuTrigger.close();\n }\n\n public toggle(): void {\n this.menuTrigger.toggle();\n }\n}\n","export const IdsMenuItemAppearance = {\n FILLED: 'filled',\n TEXT: 'text',\n} as const;\n\nexport type IdsMenuItemAppearanceType = (typeof IdsMenuItemAppearance)[keyof typeof IdsMenuItemAppearance];\n","export const IdsMenuItemVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsMenuItemVariantType = (typeof IdsMenuItemVariant)[keyof typeof IdsMenuItemVariant];\n","import { IdsMenuItemAppearance, IdsMenuItemAppearanceType } from './types/menu-item-appearance.type';\nimport { IdsMenuItemVariant, IdsMenuItemVariantType } from './types/menu-item-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsMenuItemDefaultConfig {\n appearance?: IdsMenuItemAppearanceType,\n size?: IdsSizeType,\n variant?: IdsMenuItemVariantType,\n showLabel?: boolean,\n}\n\nexport const IDS_MENU_ITEM_DEFAULT_CONFIG = new InjectionToken<IdsMenuItemDefaultConfig>(\n 'IDS_MENU_ITEM_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY(): Required<IdsMenuItemDefaultConfig> {\n return {\n appearance: IdsMenuItemAppearance.TEXT,\n size: IdsSize.COMPACT,\n variant: IdsMenuItemVariant.SURFACE,\n showLabel: true,\n };\n}\n\n","import { IDS_MENU_ITEM_DEFAULT_CONFIG, IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY, IdsMenuItemDefaultConfig } from './menu-item-defaults';\nimport { IdsMenuItemAppearanceType } from './types/menu-item-appearance.type';\nimport { IdsMenuItemVariantType } from './types/menu-item-variant.type';\n\nimport { CdkMenuItem } from '@angular/cdk/menu';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, computed, contentChildren, effect, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ComponentBaseWithDefaults, IdsSizeType, coerceBooleanAttribute } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\nconst defaultConfig = IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'button[idsMenuItem],a[idsMenuItem]',\n imports: [],\n hostDirectives: [CdkMenuItem],\n templateUrl: './menu-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[type]': 'buttonType',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() || null',\n },\n})\nexport class IdsMenuItemComponent extends ComponentBaseWithDefaults<IdsMenuItemDefaultConfig> {\n protected override get _hostName(): string {\n return 'menu-item';\n }\n\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_MENU_ITEM_DEFAULT_CONFIG);\n\n public label = input<string>();\n public appearance = input<IdsMenuItemAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsMenuItemVariantType>(this._defaultConfig.variant);\n public disabled = input(false, { transform: coerceBooleanAttribute });\n\n public iconLeading = contentChildren<IdsIconComponent>('[icon-leading]');\n public iconTrailing = contentChildren<IdsIconComponent>('[icon-trailing]');\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n this.disabled() ? 'disabled' : null,\n !this.label() ? 'no-label' : null,\n ]));\n\n public 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 (iconLeading()) {\n <ng-content select=\"ids-icon[icon-leading]\" />\n}\n@if (label()) {\n <div class=\"ids-menu-item-label--wrapper\"><span class=\"ids-menu-item-label\">{{ label() }}</span></div>\n}\n\n@if (iconTrailing()) {\n <ng-content select=\"ids-icon[icon-trailing]\" />\n}\n","import { IdsMenuItemComponent } from '../menu-item/menu-item.component';\n\nimport { contentChild, Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[idsActiveIndicator]',\n host: {\n '[class.ids-active-indicator]': 'true',\n '[class.ids-active-indicator--active]': 'active()',\n },\n})\nexport class IdsActiveIndicatorDirective {\n private _menuItem = contentChild.required(IdsMenuItemComponent);\n\n public active = input.required<boolean>();\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-menu.mjs","sources":["../../../projects/widgets/menu/action-menu/action-menu-trigger.directive.ts","../../../projects/widgets/menu/menu-item/types/menu-item-appearance.type.ts","../../../projects/widgets/menu/menu-item/types/menu-item-variant.type.ts","../../../projects/widgets/menu/menu-item/menu-item-defaults.ts","../../../projects/widgets/menu/menu-item/menu-item.component.ts","../../../projects/widgets/menu/menu-item/menu-item.component.html","../../../projects/widgets/menu/active-indicator/active-indicator.directive.ts","../../../projects/widgets/menu/i-cell-ids-angular-menu.ts"],"sourcesContent":["import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, inject } from '@angular/core';\n\n@Directive({\n selector: 'button[idsActionMenuTriggerFor]',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n inputs: ['cdkMenuTriggerFor: idsActionMenuTriggerFor'],\n },\n ],\n exportAs: 'idsActionMenuTrigger',\n})\nexport class IdsActionMenuTriggerDirective {\n public menuTrigger = inject(CdkMenuTrigger);\n\n get isOpen(): boolean {\n return !!this.menuTrigger.isOpen();\n }\n\n public open(): void {\n this.menuTrigger.open();\n }\n\n public close(): void {\n this.menuTrigger.close();\n }\n\n public toggle(): void {\n this.menuTrigger.toggle();\n }\n}\n","export const IdsMenuItemAppearance = {\n FILLED: 'filled',\n TEXT: 'text',\n} as const;\n\nexport type IdsMenuItemAppearanceType = (typeof IdsMenuItemAppearance)[keyof typeof IdsMenuItemAppearance];\n","export const IdsMenuItemVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsMenuItemVariantType = (typeof IdsMenuItemVariant)[keyof typeof IdsMenuItemVariant];\n","import { IdsMenuItemAppearance, IdsMenuItemAppearanceType } from './types/menu-item-appearance.type';\nimport { IdsMenuItemVariant, IdsMenuItemVariantType } from './types/menu-item-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsMenuItemDefaultConfig {\n appearance?: IdsMenuItemAppearanceType,\n size?: IdsSizeType,\n variant?: IdsMenuItemVariantType,\n showLabel?: boolean,\n}\n\nexport const IDS_MENU_ITEM_DEFAULT_CONFIG = new InjectionToken<IdsMenuItemDefaultConfig>(\n 'IDS_MENU_ITEM_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY(): Required<IdsMenuItemDefaultConfig> {\n return {\n appearance: IdsMenuItemAppearance.TEXT,\n size: IdsSize.COMPACT,\n variant: IdsMenuItemVariant.SURFACE,\n showLabel: true,\n };\n}\n\n","import { IDS_MENU_ITEM_DEFAULT_CONFIG, IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY, IdsMenuItemDefaultConfig } from './menu-item-defaults';\nimport { IdsMenuItemAppearanceType } from './types/menu-item-appearance.type';\nimport { IdsMenuItemVariantType } from './types/menu-item-variant.type';\n\nimport { CdkMenuItem } from '@angular/cdk/menu';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, computed, contentChildren, effect, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ComponentBaseWithDefaults, IdsSizeType, coerceBooleanAttribute } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\nconst defaultConfig = IDS_MENU_ITEM_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'button[idsMenuItem],a[idsMenuItem]',\n imports: [],\n hostDirectives: [CdkMenuItem],\n templateUrl: './menu-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[type]': 'buttonType',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() || null',\n },\n})\nexport class IdsMenuItemComponent extends ComponentBaseWithDefaults<IdsMenuItemDefaultConfig> {\n protected override get _hostName(): string {\n return 'menu-item';\n }\n\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_MENU_ITEM_DEFAULT_CONFIG);\n\n public label = input<string>();\n public appearance = input<IdsMenuItemAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsMenuItemVariantType>(this._defaultConfig.variant);\n public disabled = input(false, { transform: coerceBooleanAttribute });\n\n protected _iconLeading = contentChildren<IdsIconComponent>('[icon-leading]');\n protected _iconTrailing = contentChildren<IdsIconComponent>('[icon-trailing]');\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n this.disabled() ? 'disabled' : null,\n !this.label() ? 'no-label' : 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 (_iconLeading()) {\n <ng-content select=\"ids-icon[icon-leading]\" />\n}\n@if (label()) {\n <div class=\"ids-menu-item-label--wrapper\"><span class=\"ids-menu-item-label\">{{ label() }}</span></div>\n}\n\n@if (_iconTrailing()) {\n <ng-content select=\"ids-icon[icon-trailing]\" />\n}\n","import { IdsMenuItemComponent } from '../menu-item/menu-item.component';\n\nimport { contentChild, Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[idsActiveIndicator]',\n host: {\n '[class.ids-active-indicator]': 'true',\n '[class.ids-active-indicator--active]': 'active()',\n },\n})\nexport class IdsActiveIndicatorDirective {\n private _menuItem = contentChild.required(IdsMenuItemComponent);\n\n public active = input.required<boolean>();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ class IdsNotificationComponent extends ComponentBaseWithDefaults {
|
|
|
66
66
|
this.disabled = signal(false);
|
|
67
67
|
this._actionButtons = contentChildren(IdsNotificationActionButtonDirective);
|
|
68
68
|
this.closed = output();
|
|
69
|
-
this.
|
|
69
|
+
this._role = computed(() => (this.urgent() ? 'alert' : 'status'));
|
|
70
70
|
this._hostClasses = computed(() => this._getHostClasses([
|
|
71
71
|
this.size(),
|
|
72
72
|
this.appearance(),
|
|
@@ -128,7 +128,7 @@ class IdsNotificationComponent extends ComponentBaseWithDefaults {
|
|
|
128
128
|
this.closed.emit();
|
|
129
129
|
}
|
|
130
130
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsNotificationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsNotificationComponent, isStandalone: true, selector: "ids-notification", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, urgent: { classPropertyName: "urgent", publicName: "urgent", isSignal: true, isRequired: false, transformFunction: null }, displayActionsAtBottom: { classPropertyName: "displayActionsAtBottom", publicName: "displayActionsAtBottom", isSignal: true, isRequired: false, transformFunction: null }, closeButtonSize: { classPropertyName: "closeButtonSize", publicName: "closeButtonSize", isSignal: true, isRequired: false, transformFunction: null }, closeLabelButtonAppearance: { classPropertyName: "closeLabelButtonAppearance", publicName: "closeLabelButtonAppearance", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { properties: { "role": "
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsNotificationComponent, isStandalone: true, selector: "ids-notification", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, urgent: { classPropertyName: "urgent", publicName: "urgent", isSignal: true, isRequired: false, transformFunction: null }, displayActionsAtBottom: { classPropertyName: "displayActionsAtBottom", publicName: "displayActionsAtBottom", isSignal: true, isRequired: false, transformFunction: null }, closeButtonSize: { classPropertyName: "closeButtonSize", publicName: "closeButtonSize", isSignal: true, isRequired: false, transformFunction: null }, closeLabelButtonAppearance: { classPropertyName: "closeLabelButtonAppearance", publicName: "closeLabelButtonAppearance", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { properties: { "role": "_role()" } }, providers: [
|
|
132
132
|
{
|
|
133
133
|
provide: IDS_BUTTON_PARENT,
|
|
134
134
|
useExisting: IdsNotificationComponent,
|
|
@@ -146,7 +146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
|
|
|
146
146
|
IdsButtonComponent,
|
|
147
147
|
IdsIconButtonComponent,
|
|
148
148
|
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
149
|
-
'[role]': '
|
|
149
|
+
'[role]': '_role()',
|
|
150
150
|
}, providers: [
|
|
151
151
|
{
|
|
152
152
|
provide: IDS_BUTTON_PARENT,
|
|
@@ -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 public 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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"}
|
|
@@ -123,7 +123,7 @@ class IdsPaginatorComponent extends ComponentBaseWithDefaults {
|
|
|
123
123
|
break;
|
|
124
124
|
}
|
|
125
125
|
if (event.key !== 'Tab' && navigationKeys.includes(event.key)) {
|
|
126
|
-
const pageButtonId = `${this.
|
|
126
|
+
const pageButtonId = `${this._pageButtonIdPrefix()}${this._pageIndex() + 1}`; // after navigation pageIndex is new value now
|
|
127
127
|
const button = this._hostElementRef.nativeElement.querySelector(`button#${pageButtonId}`);
|
|
128
128
|
button?.focus();
|
|
129
129
|
}
|
|
@@ -134,7 +134,7 @@ class IdsPaginatorComponent extends ComponentBaseWithDefaults {
|
|
|
134
134
|
this._hostElementRef = inject(ElementRef);
|
|
135
135
|
this._defaultConfig = this._getDefaultConfig(defaultConfig, IDS_PAGINATOR_DEFAULT_CONFIG);
|
|
136
136
|
this._pageEventDebouncer = new Subject();
|
|
137
|
-
this.
|
|
137
|
+
this._intl = inject(IdsPaginatorIntl);
|
|
138
138
|
this.pageSize = input(this._defaultConfig.pageSize, { transform: coerceNumberAttribute });
|
|
139
139
|
this.pageSizeOptions = input(this._defaultConfig.pageSizeOptions);
|
|
140
140
|
this.showFirstLastButton = input(this._defaultConfig.showFirstLastButton);
|
|
@@ -155,9 +155,9 @@ class IdsPaginatorComponent extends ComponentBaseWithDefaults {
|
|
|
155
155
|
this.variant(),
|
|
156
156
|
this.compactLayout() ? 'compact-layout' : null,
|
|
157
157
|
]));
|
|
158
|
-
this.
|
|
159
|
-
this.
|
|
160
|
-
this.
|
|
158
|
+
this._pageButtonClasses = computed(() => createClassList('ids-paginator__page-button', [this.pageButtonAppearance()]));
|
|
159
|
+
this._safePageSizeData = computed(() => this._getSafePageSizeData(this.pageSizeOptions(), this.pageSize()));
|
|
160
|
+
this._pageButtonIdPrefix = computed(() => `${this.id()}__page-button-`);
|
|
161
161
|
/**
|
|
162
162
|
* The index (0 based!) of the currently selected page.
|
|
163
163
|
*
|
|
@@ -186,16 +186,16 @@ class IdsPaginatorComponent extends ComponentBaseWithDefaults {
|
|
|
186
186
|
const maxPageIndex = this._numberOfPages() - 1;
|
|
187
187
|
return this._pageIndex() < maxPageIndex && this.pageSize() !== 0;
|
|
188
188
|
});
|
|
189
|
-
this.
|
|
190
|
-
this.
|
|
189
|
+
this._isPreviousButtonDisabled = computed(() => this.disabled() || !this._hasPreviousPage());
|
|
190
|
+
this._isNextButtonDisabled = computed(() => this.disabled() || !this._hasNextPage());
|
|
191
191
|
// eslint-disable-next-line arrow-body-style
|
|
192
|
-
this.
|
|
192
|
+
this._pageButtonLabels = computed(() => {
|
|
193
193
|
return this.compactLayout()
|
|
194
194
|
? []
|
|
195
195
|
: this._getPageButtonLabels(this._pageIndex(), this._numberOfPages(), this.showAllPages(), this.maxDisplayedItemCount(), this.showPageButtons());
|
|
196
196
|
});
|
|
197
197
|
this.pageChanged = output();
|
|
198
|
-
this.
|
|
198
|
+
this._intl.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._changeDetectorRef.markForCheck());
|
|
199
199
|
this._pageEventDebouncer.pipe(debounceTime(this._defaultConfig.debounceTime), takeUntilDestroyed(this._destroyRef)).subscribe((pageEvent) => {
|
|
200
200
|
this.pageChanged.emit(pageEvent);
|
|
201
201
|
});
|
|
@@ -302,13 +302,13 @@ class IdsPaginatorComponent extends ComponentBaseWithDefaults {
|
|
|
302
302
|
});
|
|
303
303
|
}
|
|
304
304
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
305
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsPaginatorComponent, isStandalone: true, selector: "ids-paginator", inputs: { pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showFirstLastButton: { classPropertyName: "showFirstLastButton", publicName: "showFirstLastButton", isSignal: true, isRequired: false, transformFunction: null }, showPrevNextLabel: { classPropertyName: "showPrevNextLabel", publicName: "showPrevNextLabel", isSignal: true, isRequired: false, transformFunction: null }, showPageInfo: { classPropertyName: "showPageInfo", publicName: "showPageInfo", isSignal: true, isRequired: false, transformFunction: null }, showPageButtons: { classPropertyName: "showPageButtons", publicName: "showPageButtons", isSignal: true, isRequired: false, transformFunction: null }, showAllPages: { classPropertyName: "showAllPages", publicName: "showAllPages", isSignal: true, isRequired: false, transformFunction: null }, maxDisplayedItemCount: { classPropertyName: "maxDisplayedItemCount", publicName: "maxDisplayedItemCount", 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 }, pageButtonAppearance: { classPropertyName: "pageButtonAppearance", publicName: "pageButtonAppearance", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, compactLayout: { classPropertyName: "compactLayout", publicName: "compactLayout", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageChanged: "pageChanged" }, host: { listeners: { "keydown": "_handleKeyDown($event)" } }, usesInheritance: true, ngImport: i0, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"
|
|
305
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsPaginatorComponent, isStandalone: true, selector: "ids-paginator", inputs: { pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showFirstLastButton: { classPropertyName: "showFirstLastButton", publicName: "showFirstLastButton", isSignal: true, isRequired: false, transformFunction: null }, showPrevNextLabel: { classPropertyName: "showPrevNextLabel", publicName: "showPrevNextLabel", isSignal: true, isRequired: false, transformFunction: null }, showPageInfo: { classPropertyName: "showPageInfo", publicName: "showPageInfo", isSignal: true, isRequired: false, transformFunction: null }, showPageButtons: { classPropertyName: "showPageButtons", publicName: "showPageButtons", isSignal: true, isRequired: false, transformFunction: null }, showAllPages: { classPropertyName: "showAllPages", publicName: "showAllPages", isSignal: true, isRequired: false, transformFunction: null }, maxDisplayedItemCount: { classPropertyName: "maxDisplayedItemCount", publicName: "maxDisplayedItemCount", 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 }, pageButtonAppearance: { classPropertyName: "pageButtonAppearance", publicName: "pageButtonAppearance", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, compactLayout: { classPropertyName: "compactLayout", publicName: "compactLayout", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageChanged: "pageChanged" }, host: { listeners: { "keydown": "_handleKeyDown($event)" } }, usesInheritance: true, ngImport: i0, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horizontal\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
306
306
|
}
|
|
307
307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsPaginatorComponent, decorators: [{
|
|
308
308
|
type: Component,
|
|
309
309
|
args: [{ selector: 'ids-paginator', imports: [IdsIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
310
310
|
'(keydown)': '_handleKeyDown($event)',
|
|
311
|
-
}, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"
|
|
311
|
+
}, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horizontal\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n" }]
|
|
312
312
|
}], ctorParameters: () => [] });
|
|
313
313
|
|
|
314
314
|
/**
|