@fundamental-ngx/ui5-webcomponents 0.65.0-rc.8 → 0.65.0
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/fesm2022/fundamental-ngx-ui5-webcomponents-avatar-badge.mjs +16 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar-badge.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item-group.mjs +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-custom.mjs +4 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-custom.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-group.mjs +3 -3
- package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-standard.mjs +4 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-standard.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-menu-item.mjs +4 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-menu-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.mjs +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-number-input.mjs +208 -0
- package/fesm2022/fundamental-ngx-ui5-webcomponents-number-input.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-ui5-webcomponents-option-group.mjs +109 -0
- package/fesm2022/fundamental-ngx-ui5-webcomponents-option-group.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-ui5-webcomponents-select.mjs +2 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-split-button.mjs +0 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-step-input.mjs +1 -11
- package/fesm2022/fundamental-ngx-ui5-webcomponents-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item-group.mjs +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-list-item.mjs +4 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-button.mjs +39 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-item.mjs +24 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-select.mjs +24 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-separator.mjs +24 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-separator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-spacer.mjs +24 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-spacer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item-custom.mjs +4 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item-custom.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item.mjs +4 -2
- package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-ui5-webcomponents.mjs +482 -45
- package/fesm2022/fundamental-ngx-ui5-webcomponents.mjs.map +1 -1
- package/package.json +12 -4
- package/types/fundamental-ngx-ui5-webcomponents-avatar-badge.d.ts +13 -1
- package/types/fundamental-ngx-ui5-webcomponents-combo-box-item-group.d.ts +1 -1
- package/types/fundamental-ngx-ui5-webcomponents-list-item-custom.d.ts +4 -2
- package/types/fundamental-ngx-ui5-webcomponents-list-item-group.d.ts +2 -2
- package/types/fundamental-ngx-ui5-webcomponents-list-item-standard.d.ts +4 -2
- package/types/fundamental-ngx-ui5-webcomponents-menu-item.d.ts +4 -2
- package/types/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.d.ts +1 -1
- package/types/fundamental-ngx-ui5-webcomponents-number-input.d.ts +110 -0
- package/types/fundamental-ngx-ui5-webcomponents-option-group.d.ts +49 -0
- package/types/fundamental-ngx-ui5-webcomponents-select.d.ts +1 -0
- package/types/fundamental-ngx-ui5-webcomponents-split-button.d.ts +0 -2
- package/types/fundamental-ngx-ui5-webcomponents-step-input.d.ts +0 -10
- package/types/fundamental-ngx-ui5-webcomponents-suggestion-item-group.d.ts +1 -1
- package/types/fundamental-ngx-ui5-webcomponents-suggestion-list-item.d.ts +4 -2
- package/types/fundamental-ngx-ui5-webcomponents-toolbar-button.d.ts +32 -1
- package/types/fundamental-ngx-ui5-webcomponents-toolbar-item.d.ts +21 -1
- package/types/fundamental-ngx-ui5-webcomponents-toolbar-select.d.ts +21 -1
- package/types/fundamental-ngx-ui5-webcomponents-toolbar-separator.d.ts +21 -1
- package/types/fundamental-ngx-ui5-webcomponents-toolbar-spacer.d.ts +21 -1
- package/types/fundamental-ngx-ui5-webcomponents-tree-item-custom.d.ts +4 -2
- package/types/fundamental-ngx-ui5-webcomponents-tree-item.d.ts +4 -2
- package/types/fundamental-ngx-ui5-webcomponents.d.ts +310 -36
|
@@ -11,7 +11,7 @@ class MultiComboBoxItemGroup {
|
|
|
11
11
|
this.headerAccessibleName = input(/* @ts-ignore */
|
|
12
12
|
...(ngDevMode ? [undefined, { debugName: "headerAccessibleName" }] : /* istanbul ignore next */ []));
|
|
13
13
|
/**
|
|
14
|
-
* Defines the header text of the
|
|
14
|
+
* Defines the header text of the group.
|
|
15
15
|
*/
|
|
16
16
|
this.headerText = input(/* @ts-ignore */
|
|
17
17
|
...(ngDevMode ? [undefined, { debugName: "headerText" }] : /* istanbul ignore next */ []));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.mjs","sources":["../../../../libs/ui5-webcomponents/multi-combo-box-item-group/index.ts","../../../../libs/ui5-webcomponents/multi-combo-box-item-group/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal,\n DestroyRef\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/MultiComboBoxItemGroup.js';\nimport { default as _MultiComboBoxItemGroup } from '@ui5/webcomponents/dist/MultiComboBoxItemGroup.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\n\nimport { default as WrappingType } from '@ui5/webcomponents/dist/types/WrappingType.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-mcb-item-group, [ui5-mcb-item-group]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5MultiComboBoxItemGroup',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiComboBoxItemGroup implements AfterViewInit {\n\n /**\n * Defines the accessible name of the header.\n */\n headerAccessibleName = input<typeof _MultiComboBoxItemGroup.prototype.headerAccessibleName | undefined>();\n\n /**\n * Defines the header text of the <code>ui5-li-group</code>.\n */\n headerText = input<typeof _MultiComboBoxItemGroup.prototype.headerText | undefined>();\n\n /**\n * Defines if the text of the component should wrap when it's too long.\nWhen set to \"Normal\", the content (title, description) will be wrapped\nusing the `ui5-expandable-text` component.<br/>\n\nThe text can wrap up to 100 characters on small screens (size S) and\nup to 300 characters on larger screens (size M and above). When text exceeds\nthese limits, it truncates with an ellipsis followed by a text expansion trigger.\n\nAvailable options are:\n- `None` (default) - The text will truncate with an ellipsis.\n- `Normal` - The text will wrap (without truncation).\n */\n wrappingType = input<typeof _MultiComboBoxItemGroup.prototype.wrappingType | undefined>(\"None\"); // className is now passed\n\n\n\n /**\n * Fired when a movable list item is dropped onto a drop target.\n\n**Note:** `move` event is fired only if there was a preceding `move-over` with prevented default action.\n */\n ui5Move = output<UI5CustomEvent<_MultiComboBoxItemGroup, 'move'>>();\n\n /**\n * Fired when a movable list item is moved over a potential drop target during a dragging operation.\n\nIf the new position is valid, prevent the default action of the event using `preventDefault()`.\n */\n ui5MoveOver = output<UI5CustomEvent<_MultiComboBoxItemGroup, 'move-over'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the items of the <code>ui5-mcb-item-group</code>.\n * - **header**: Defines the header of the component.\n\n**Note:** Using this slot, the default header text of group and the value of `headerText` property will be overwritten.\n *\n * @example\n * ```html\n * <ui5-mcb-item-group>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-mcb-item-group>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the items of the <code>ui5-mcb-item-group</code>.\"\n },\n {\n \"name\": \"header\",\n \"description\": \"Defines the header of the component.\\n\\n**Note:** Using this slot, the default header text of group and the value of `headerText` property will be overwritten.\"\n }\n ];\n\n\n public elementRef: ElementRef<_MultiComboBoxItemGroup> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n private readonly _destroyRef = inject(DestroyRef);\n\n get element(): _MultiComboBoxItemGroup {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'headerAccessibleName',\n 'headerText',\n 'wrappingType',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, (): void => {\n effect((): void => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Move',\n 'ui5MoveOver',\n ];\n \n // Synchronize outputs (events)\n const _listeners: Array<() => void> = [];\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n const listener = (e: Event): void => {\n\n this[outputName].emit(e as CustomEvent<any>);\n };\n wcElement.addEventListener(eventName, listener);\n _listeners.push(() => wcElement.removeEventListener(eventName, listener));\n }\n }\n this._destroyRef.onDestroy(() => _listeners.forEach((fn) => fn()));\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.mjs","sources":["../../../../libs/ui5-webcomponents/multi-combo-box-item-group/index.ts","../../../../libs/ui5-webcomponents/multi-combo-box-item-group/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal,\n DestroyRef\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/MultiComboBoxItemGroup.js';\nimport { default as _MultiComboBoxItemGroup } from '@ui5/webcomponents/dist/MultiComboBoxItemGroup.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\n\nimport { default as WrappingType } from '@ui5/webcomponents/dist/types/WrappingType.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-mcb-item-group, [ui5-mcb-item-group]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5MultiComboBoxItemGroup',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiComboBoxItemGroup implements AfterViewInit {\n\n /**\n * Defines the accessible name of the header.\n */\n headerAccessibleName = input<typeof _MultiComboBoxItemGroup.prototype.headerAccessibleName | undefined>();\n\n /**\n * Defines the header text of the group.\n */\n headerText = input<typeof _MultiComboBoxItemGroup.prototype.headerText | undefined>();\n\n /**\n * Defines if the text of the component should wrap when it's too long.\nWhen set to \"Normal\", the content (title, description) will be wrapped\nusing the `ui5-expandable-text` component.<br/>\n\nThe text can wrap up to 100 characters on small screens (size S) and\nup to 300 characters on larger screens (size M and above). When text exceeds\nthese limits, it truncates with an ellipsis followed by a text expansion trigger.\n\nAvailable options are:\n- `None` (default) - The text will truncate with an ellipsis.\n- `Normal` - The text will wrap (without truncation).\n */\n wrappingType = input<typeof _MultiComboBoxItemGroup.prototype.wrappingType | undefined>(\"None\"); // className is now passed\n\n\n\n /**\n * Fired when a movable list item is dropped onto a drop target.\n\n**Note:** `move` event is fired only if there was a preceding `move-over` with prevented default action.\n */\n ui5Move = output<UI5CustomEvent<_MultiComboBoxItemGroup, 'move'>>();\n\n /**\n * Fired when a movable list item is moved over a potential drop target during a dragging operation.\n\nIf the new position is valid, prevent the default action of the event using `preventDefault()`.\n */\n ui5MoveOver = output<UI5CustomEvent<_MultiComboBoxItemGroup, 'move-over'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the items of the <code>ui5-mcb-item-group</code>.\n * - **header**: Defines the header of the component.\n\n**Note:** Using this slot, the default header text of group and the value of `headerText` property will be overwritten.\n *\n * @example\n * ```html\n * <ui5-mcb-item-group>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-mcb-item-group>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the items of the <code>ui5-mcb-item-group</code>.\"\n },\n {\n \"name\": \"header\",\n \"description\": \"Defines the header of the component.\\n\\n**Note:** Using this slot, the default header text of group and the value of `headerText` property will be overwritten.\"\n }\n ];\n\n\n public elementRef: ElementRef<_MultiComboBoxItemGroup> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n private readonly _destroyRef = inject(DestroyRef);\n\n get element(): _MultiComboBoxItemGroup {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'headerAccessibleName',\n 'headerText',\n 'wrappingType',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, (): void => {\n effect((): void => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Move',\n 'ui5MoveOver',\n ];\n \n // Synchronize outputs (events)\n const _listeners: Array<() => void> = [];\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n const listener = (e: Event): void => {\n\n this[outputName].emit(e as CustomEvent<any>);\n };\n wcElement.addEventListener(eventName, listener);\n _listeners.push(() => wcElement.removeEventListener(eventName, listener));\n }\n }\n this._destroyRef.onDestroy(() => _listeners.forEach((fn) => fn()));\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, output, inject, ElementRef, Injector, DestroyRef, runInInjectionContext, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import '@ui5/webcomponents/dist/NumberInput.js';
|
|
4
|
+
import { ContentDensityObserver, contentDensityObserverProviders, ContentDensityMode } from '@fundamental-ngx/core/content-density';
|
|
5
|
+
|
|
6
|
+
class NumberInput {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Defines the accessible ARIA name of the component.
|
|
10
|
+
*/
|
|
11
|
+
this.accessibleName = input(/* @ts-ignore */
|
|
12
|
+
...(ngDevMode ? [undefined, { debugName: "accessibleName" }] : /* istanbul ignore next */ []));
|
|
13
|
+
/**
|
|
14
|
+
* Receives ID (or many IDs) of the elements that label the component.
|
|
15
|
+
*/
|
|
16
|
+
this.accessibleNameRef = input(/* @ts-ignore */
|
|
17
|
+
...(ngDevMode ? [undefined, { debugName: "accessibleNameRef" }] : /* istanbul ignore next */ []));
|
|
18
|
+
/**
|
|
19
|
+
* Determines whether the component is displayed as disabled.
|
|
20
|
+
*/
|
|
21
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
22
|
+
/**
|
|
23
|
+
* Defines a maximum value of the component.
|
|
24
|
+
*/
|
|
25
|
+
this.max = input(/* @ts-ignore */
|
|
26
|
+
...(ngDevMode ? [undefined, { debugName: "max" }] : /* istanbul ignore next */ []));
|
|
27
|
+
/**
|
|
28
|
+
* Defines a minimum value of the component.
|
|
29
|
+
*/
|
|
30
|
+
this.min = input(/* @ts-ignore */
|
|
31
|
+
...(ngDevMode ? [undefined, { debugName: "min" }] : /* istanbul ignore next */ []));
|
|
32
|
+
/**
|
|
33
|
+
* Determines the name by which the component will be identified upon submission in an HTML form.
|
|
34
|
+
|
|
35
|
+
**Note:** This property is only applicable within the context of an HTML Form element.
|
|
36
|
+
*/
|
|
37
|
+
this.name = input(/* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
|
|
39
|
+
/**
|
|
40
|
+
* Determines whether the component is displayed as read-only.
|
|
41
|
+
*/
|
|
42
|
+
this.readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
43
|
+
/**
|
|
44
|
+
* Defines a step of increasing/decreasing the value of the component.
|
|
45
|
+
*/
|
|
46
|
+
this.step = input(1, /* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [{ debugName: "step" }] : /* istanbul ignore next */ []));
|
|
48
|
+
/**
|
|
49
|
+
* Defines a value of the component.
|
|
50
|
+
*/
|
|
51
|
+
this.value = input(0, /* @ts-ignore */
|
|
52
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
53
|
+
/**
|
|
54
|
+
* Determines the number of digits after the decimal point of the component.
|
|
55
|
+
*/
|
|
56
|
+
this.valuePrecision = input(0, /* @ts-ignore */
|
|
57
|
+
...(ngDevMode ? [{ debugName: "valuePrecision" }] : /* istanbul ignore next */ []));
|
|
58
|
+
/**
|
|
59
|
+
* Defines the value state of the component.
|
|
60
|
+
*/
|
|
61
|
+
this.valueState = input("None", /* @ts-ignore */
|
|
62
|
+
...(ngDevMode ? [{ debugName: "valueState" }] : /* istanbul ignore next */ [])); // className is now passed
|
|
63
|
+
/**
|
|
64
|
+
* Fired when the input operation has finished by pressing Enter or on focusout.
|
|
65
|
+
*/
|
|
66
|
+
this.ui5Change = output();
|
|
67
|
+
/**
|
|
68
|
+
* Fired when the value of the component changes at each keystroke.
|
|
69
|
+
*/
|
|
70
|
+
this.ui5Input = output();
|
|
71
|
+
/**
|
|
72
|
+
* Fired before the value state of the component is updated internally.
|
|
73
|
+
The event is preventable, meaning that if its default action is
|
|
74
|
+
prevented, the component will not update the value state.
|
|
75
|
+
*/
|
|
76
|
+
this.ui5ValueStateChange = output();
|
|
77
|
+
/**
|
|
78
|
+
* Available slots for content projection in this component.
|
|
79
|
+
*
|
|
80
|
+
* Slots allow you to insert custom content into predefined areas of the web component.
|
|
81
|
+
* Use the `slot` attribute on child elements to target specific slots.
|
|
82
|
+
*
|
|
83
|
+
* - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.
|
|
84
|
+
|
|
85
|
+
**Note:** If not specified, a default text (in the respective language) will be displayed.
|
|
86
|
+
|
|
87
|
+
**Note:** The `valueStateMessage` would be displayed,
|
|
88
|
+
when the component is in `Information`, `Critical` or `Negative` value state.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```html
|
|
92
|
+
* <ui5-number-input>
|
|
93
|
+
* <div slot="header">Custom header content</div>
|
|
94
|
+
* <p>Default slot content</p>
|
|
95
|
+
* </ui5-number-input>
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* @readonly
|
|
99
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}
|
|
100
|
+
*/
|
|
101
|
+
this.slots = [
|
|
102
|
+
{
|
|
103
|
+
"name": "valueStateMessage",
|
|
104
|
+
"description": "Defines the value state message that will be displayed as pop up under the component.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state."
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
this.elementRef = inject(ElementRef);
|
|
108
|
+
this.injector = inject(Injector);
|
|
109
|
+
/**
|
|
110
|
+
* Content density observer is injected to activate automatic CSS class and
|
|
111
|
+
* UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.
|
|
112
|
+
* @private
|
|
113
|
+
*/
|
|
114
|
+
this._contentDensityObserver = inject(ContentDensityObserver);
|
|
115
|
+
this._destroyRef = inject(DestroyRef);
|
|
116
|
+
}
|
|
117
|
+
get element() {
|
|
118
|
+
return this.elementRef.nativeElement;
|
|
119
|
+
}
|
|
120
|
+
ngAfterViewInit() {
|
|
121
|
+
const wcElement = this.element;
|
|
122
|
+
const inputsToSync = [
|
|
123
|
+
'accessibleName',
|
|
124
|
+
'accessibleNameRef',
|
|
125
|
+
'disabled',
|
|
126
|
+
'max',
|
|
127
|
+
'min',
|
|
128
|
+
'name',
|
|
129
|
+
'readonly',
|
|
130
|
+
'step',
|
|
131
|
+
'value',
|
|
132
|
+
'valuePrecision',
|
|
133
|
+
'valueState',
|
|
134
|
+
];
|
|
135
|
+
// Synchronize inputs (properties)
|
|
136
|
+
for (const inputName of inputsToSync) {
|
|
137
|
+
// Find the corresponding camelCase signal property on the Angular component
|
|
138
|
+
const signalName = inputName.replace(/-./g, (x) => x[1].toUpperCase());
|
|
139
|
+
// Use the Injector to run the effect in the correct context
|
|
140
|
+
if (this[signalName] && typeof this[signalName] === 'function') {
|
|
141
|
+
runInInjectionContext(this.injector, () => {
|
|
142
|
+
effect(() => {
|
|
143
|
+
// Read the signal value
|
|
144
|
+
const value = this[signalName]();
|
|
145
|
+
if (wcElement) {
|
|
146
|
+
// Skip writes when the signal is undefined and the property is already truthy
|
|
147
|
+
// This prevents clobbering imperatively-set values (e.g., from RouterLink)
|
|
148
|
+
if (value === undefined && wcElement[inputName]) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Write the value to the Web Component's property
|
|
152
|
+
wcElement[inputName] = value;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const outputsToSync = [
|
|
159
|
+
'ui5Change',
|
|
160
|
+
'ui5Input',
|
|
161
|
+
'ui5ValueStateChange',
|
|
162
|
+
];
|
|
163
|
+
// Synchronize outputs (events)
|
|
164
|
+
const _listeners = [];
|
|
165
|
+
for (const outputName of outputsToSync) {
|
|
166
|
+
// Map Angular output name to UI5 web component event name
|
|
167
|
+
const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);
|
|
168
|
+
// Ensure the output property exists and has an emit function before adding listener
|
|
169
|
+
if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {
|
|
170
|
+
// Cast the listener to the correct type to satisfy TypeScript
|
|
171
|
+
const listener = (e) => {
|
|
172
|
+
this[outputName].emit(e);
|
|
173
|
+
};
|
|
174
|
+
wcElement.addEventListener(eventName, listener);
|
|
175
|
+
_listeners.push(() => wcElement.removeEventListener(eventName, listener));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
this._destroyRef.onDestroy(() => _listeners.forEach((fn) => fn()));
|
|
179
|
+
}
|
|
180
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: NumberInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
181
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: NumberInput, isStandalone: true, selector: "ui5-number-input, [ui5-number-input]", inputs: { accessibleName: { classPropertyName: "accessibleName", publicName: "accessibleName", isSignal: true, isRequired: false, transformFunction: null }, accessibleNameRef: { classPropertyName: "accessibleNameRef", publicName: "accessibleNameRef", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, valuePrecision: { classPropertyName: "valuePrecision", publicName: "valuePrecision", isSignal: true, isRequired: false, transformFunction: null }, valueState: { classPropertyName: "valueState", publicName: "valueState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ui5Change: "ui5Change", ui5Input: "ui5Input", ui5ValueStateChange: "ui5ValueStateChange" }, providers: [
|
|
182
|
+
contentDensityObserverProviders({
|
|
183
|
+
supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]
|
|
184
|
+
})
|
|
185
|
+
], exportAs: ["ui5NumberInput"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
186
|
+
}
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: NumberInput, decorators: [{
|
|
188
|
+
type: Component,
|
|
189
|
+
args: [{
|
|
190
|
+
standalone: true,
|
|
191
|
+
selector: 'ui5-number-input, [ui5-number-input]',
|
|
192
|
+
template: '<ng-content></ng-content>',
|
|
193
|
+
exportAs: 'ui5NumberInput',
|
|
194
|
+
providers: [
|
|
195
|
+
contentDensityObserverProviders({
|
|
196
|
+
supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]
|
|
197
|
+
})
|
|
198
|
+
],
|
|
199
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
200
|
+
}]
|
|
201
|
+
}], propDecorators: { accessibleName: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessibleName", required: false }] }], accessibleNameRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessibleNameRef", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valuePrecision: [{ type: i0.Input, args: [{ isSignal: true, alias: "valuePrecision", required: false }] }], valueState: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueState", required: false }] }], ui5Change: [{ type: i0.Output, args: ["ui5Change"] }], ui5Input: [{ type: i0.Output, args: ["ui5Input"] }], ui5ValueStateChange: [{ type: i0.Output, args: ["ui5ValueStateChange"] }] } });
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Generated bundle index. Do not edit.
|
|
205
|
+
*/
|
|
206
|
+
|
|
207
|
+
export { NumberInput };
|
|
208
|
+
//# sourceMappingURL=fundamental-ngx-ui5-webcomponents-number-input.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-ui5-webcomponents-number-input.mjs","sources":["../../../../libs/ui5-webcomponents/number-input/index.ts","../../../../libs/ui5-webcomponents/number-input/fundamental-ngx-ui5-webcomponents-number-input.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal,\n DestroyRef\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/NumberInput.js';\nimport { default as _NumberInput } from '@ui5/webcomponents/dist/NumberInput.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\n\nimport { default as ValueState } from '@ui5/webcomponents-base/dist/types/ValueState.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-number-input, [ui5-number-input]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5NumberInput',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberInput implements AfterViewInit {\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _NumberInput.prototype.accessibleName | undefined>();\n\n /**\n * Receives ID (or many IDs) of the elements that label the component.\n */\n accessibleNameRef = input<typeof _NumberInput.prototype.accessibleNameRef | undefined>();\n\n /**\n * Determines whether the component is displayed as disabled.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Defines a maximum value of the component.\n */\n max = input<typeof _NumberInput.prototype.max | undefined>();\n\n /**\n * Defines a minimum value of the component.\n */\n min = input<typeof _NumberInput.prototype.min | undefined>();\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _NumberInput.prototype.name | undefined>();\n\n /**\n * Determines whether the component is displayed as read-only.\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Defines a step of increasing/decreasing the value of the component.\n */\n step = input<typeof _NumberInput.prototype.step | undefined>(1);\n\n /**\n * Defines a value of the component.\n */\n value = input<typeof _NumberInput.prototype.value | undefined>(0);\n\n /**\n * Determines the number of digits after the decimal point of the component.\n */\n valuePrecision = input<typeof _NumberInput.prototype.valuePrecision | undefined>(0);\n\n /**\n * Defines the value state of the component.\n */\n valueState = input<typeof _NumberInput.prototype.valueState | undefined>(\"None\"); // className is now passed\n\n\n\n /**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n */\n ui5Change = output<UI5CustomEvent<_NumberInput, 'change'>>();\n\n /**\n * Fired when the value of the component changes at each keystroke.\n */\n ui5Input = output<UI5CustomEvent<_NumberInput, 'input'>>();\n\n /**\n * Fired before the value state of the component is updated internally.\nThe event is preventable, meaning that if its default action is\nprevented, the component will not update the value state.\n */\n ui5ValueStateChange = output<UI5CustomEvent<_NumberInput, 'value-state-change'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state.\n *\n * @example\n * ```html\n * <ui5-number-input>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-number-input>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"valueStateMessage\",\n \"description\": \"Defines the value state message that will be displayed as pop up under the component.\\n\\n**Note:** If not specified, a default text (in the respective language) will be displayed.\\n\\n**Note:** The `valueStateMessage` would be displayed,\\nwhen the component is in `Information`, `Critical` or `Negative` value state.\"\n }\n ];\n\n\n public elementRef: ElementRef<_NumberInput> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n private readonly _destroyRef = inject(DestroyRef);\n\n get element(): _NumberInput {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'max',\n 'min',\n 'name',\n 'readonly',\n 'step',\n 'value',\n 'valuePrecision',\n 'valueState',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, (): void => {\n effect((): void => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Input',\n 'ui5ValueStateChange',\n ];\n \n // Synchronize outputs (events)\n const _listeners: Array<() => void> = [];\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n const listener = (e: Event): void => {\n\n this[outputName].emit(e as CustomEvent<any>);\n };\n wcElement.addEventListener(eventName, listener);\n _listeners.push(() => wcElement.removeEventListener(eventName, listener));\n }\n }\n this._destroyRef.onDestroy(() => _listeners.forEach((fn) => fn()));\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, inject, ElementRef, Injector, runInInjectionContext, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import '@ui5/webcomponents/dist/OptionGroup.js';
|
|
4
|
+
import { ContentDensityObserver, contentDensityObserverProviders, ContentDensityMode } from '@fundamental-ngx/core/content-density';
|
|
5
|
+
|
|
6
|
+
class OptionGroup {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Defines the header text of the group.
|
|
10
|
+
*/
|
|
11
|
+
this.headerText = input(/* @ts-ignore */
|
|
12
|
+
...(ngDevMode ? [undefined, { debugName: "headerText" }] : /* istanbul ignore next */ [])); // className is now passed
|
|
13
|
+
/**
|
|
14
|
+
* Available slots for content projection in this component.
|
|
15
|
+
*
|
|
16
|
+
* Slots allow you to insert custom content into predefined areas of the web component.
|
|
17
|
+
* Use the `slot` attribute on child elements to target specific slots.
|
|
18
|
+
*
|
|
19
|
+
* - **(default)**: Defines the options of the group.
|
|
20
|
+
|
|
21
|
+
**Note:** Use the `ui5-option` component to define the desired options.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```html
|
|
25
|
+
* <ui5-option-group>
|
|
26
|
+
* <div slot="header">Custom header content</div>
|
|
27
|
+
* <p>Default slot content</p>
|
|
28
|
+
* </ui5-option-group>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @readonly
|
|
32
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}
|
|
33
|
+
*/
|
|
34
|
+
this.slots = [
|
|
35
|
+
{
|
|
36
|
+
"name": "default",
|
|
37
|
+
"description": "Defines the options of the group.\n\n**Note:** Use the `ui5-option` component to define the desired options."
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
this.elementRef = inject(ElementRef);
|
|
41
|
+
this.injector = inject(Injector);
|
|
42
|
+
/**
|
|
43
|
+
* Content density observer is injected to activate automatic CSS class and
|
|
44
|
+
* UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
this._contentDensityObserver = inject(ContentDensityObserver);
|
|
48
|
+
}
|
|
49
|
+
get element() {
|
|
50
|
+
return this.elementRef.nativeElement;
|
|
51
|
+
}
|
|
52
|
+
ngAfterViewInit() {
|
|
53
|
+
const wcElement = this.element;
|
|
54
|
+
const inputsToSync = [
|
|
55
|
+
'headerText',
|
|
56
|
+
];
|
|
57
|
+
// Synchronize inputs (properties)
|
|
58
|
+
for (const inputName of inputsToSync) {
|
|
59
|
+
// Find the corresponding camelCase signal property on the Angular component
|
|
60
|
+
const signalName = inputName.replace(/-./g, (x) => x[1].toUpperCase());
|
|
61
|
+
// Use the Injector to run the effect in the correct context
|
|
62
|
+
if (this[signalName] && typeof this[signalName] === 'function') {
|
|
63
|
+
runInInjectionContext(this.injector, () => {
|
|
64
|
+
effect(() => {
|
|
65
|
+
// Read the signal value
|
|
66
|
+
const value = this[signalName]();
|
|
67
|
+
if (wcElement) {
|
|
68
|
+
// Skip writes when the signal is undefined and the property is already truthy
|
|
69
|
+
// This prevents clobbering imperatively-set values (e.g., from RouterLink)
|
|
70
|
+
if (value === undefined && wcElement[inputName]) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Write the value to the Web Component's property
|
|
74
|
+
wcElement[inputName] = value;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OptionGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: OptionGroup, isStandalone: true, selector: "ui5-option-group, [ui5-option-group]", inputs: { headerText: { classPropertyName: "headerText", publicName: "headerText", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
83
|
+
contentDensityObserverProviders({
|
|
84
|
+
supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]
|
|
85
|
+
})
|
|
86
|
+
], exportAs: ["ui5OptionGroup"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OptionGroup, decorators: [{
|
|
89
|
+
type: Component,
|
|
90
|
+
args: [{
|
|
91
|
+
standalone: true,
|
|
92
|
+
selector: 'ui5-option-group, [ui5-option-group]',
|
|
93
|
+
template: '<ng-content></ng-content>',
|
|
94
|
+
exportAs: 'ui5OptionGroup',
|
|
95
|
+
providers: [
|
|
96
|
+
contentDensityObserverProviders({
|
|
97
|
+
supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]
|
|
98
|
+
})
|
|
99
|
+
],
|
|
100
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
101
|
+
}]
|
|
102
|
+
}], propDecorators: { headerText: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerText", required: false }] }] } });
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Generated bundle index. Do not edit.
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
export { OptionGroup };
|
|
109
|
+
//# sourceMappingURL=fundamental-ngx-ui5-webcomponents-option-group.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-ui5-webcomponents-option-group.mjs","sources":["../../../../libs/ui5-webcomponents/option-group/index.ts","../../../../libs/ui5-webcomponents/option-group/fundamental-ngx-ui5-webcomponents-option-group.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/OptionGroup.js';\nimport { default as _OptionGroup } from '@ui5/webcomponents/dist/OptionGroup.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\n\n\n\n@Component({\n standalone: true,\n selector: 'ui5-option-group, [ui5-option-group]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5OptionGroup',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OptionGroup implements AfterViewInit {\n\n /**\n * Defines the header text of the group.\n */\n headerText = input<typeof _OptionGroup.prototype.headerText | undefined>(); // className is now passed\n\n\n\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the options of the group.\n\n**Note:** Use the `ui5-option` component to define the desired options.\n *\n * @example\n * ```html\n * <ui5-option-group>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-option-group>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the options of the group.\\n\\n**Note:** Use the `ui5-option` component to define the desired options.\"\n }\n ];\n\n\n public elementRef: ElementRef<_OptionGroup> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _OptionGroup {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'headerText',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, (): void => {\n effect((): void => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -116,6 +116,7 @@ class Select {
|
|
|
116
116
|
If more than one option is defined as selected, the last one would be considered as the selected one.
|
|
117
117
|
|
|
118
118
|
**Note:** Use the `ui5-option` component to define the desired options.
|
|
119
|
+
Use the `ui5-option-group` component to group options.
|
|
119
120
|
* - **label**: Defines the HTML element that will be displayed in the component input part,
|
|
120
121
|
representing the selected option.
|
|
121
122
|
|
|
@@ -148,7 +149,7 @@ class Select {
|
|
|
148
149
|
this.slots = [
|
|
149
150
|
{
|
|
150
151
|
"name": "default",
|
|
151
|
-
"description": "Defines the component options.\n\n**Note:** Only one selected option is allowed.\nIf more than one option is defined as selected, the last one would be considered as the selected one.\n\n**Note:** Use the `ui5-option` component to define the desired options."
|
|
152
|
+
"description": "Defines the component options.\n\n**Note:** Only one selected option is allowed.\nIf more than one option is defined as selected, the last one would be considered as the selected one.\n\n**Note:** Use the `ui5-option` component to define the desired options.\nUse the `ui5-option-group` component to group options."
|
|
152
153
|
},
|
|
153
154
|
{
|
|
154
155
|
"name": "label",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-ui5-webcomponents-select.mjs","sources":["../../../../libs/ui5-webcomponents/select/index.ts","../../../../libs/ui5-webcomponents/select/fundamental-ngx-ui5-webcomponents-select.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal,\n DestroyRef\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/Select.js';\nimport { default as _Select } from '@ui5/webcomponents/dist/Select.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { GenericControlValueAccessor, CVA_CONFIG } from '@fundamental-ngx/ui5-webcomponents/utils';\n\nimport { IOption } from '@ui5/webcomponents/dist/Select.js';\nimport { default as SelectTextSeparator } from '@ui5/webcomponents/dist/types/SelectTextSeparator.js';\nimport { default as ValueState } from '@ui5/webcomponents-base/dist/types/ValueState.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-select, [ui5-select]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5Select',\n hostDirectives: [GenericControlValueAccessor],\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n }),\n {\n provide: CVA_CONFIG,\n useValue: {\n property: 'value',\n events: ['change', 'liveChange'],\n transformValue: (v) => v || ''\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _Select.prototype.accessibleDescription | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that describe the select.\n */\n accessibleDescriptionRef = input<typeof _Select.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _Select.prototype.accessibleName | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that label the select.\n */\n accessibleNameRef = input<typeof _Select.prototype.accessibleNameRef | undefined>();\n\n /**\n * Defines whether the component is in disabled state.\n\n**Note:** A disabled component is noninteractive.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _Select.prototype.name | undefined>();\n\n /**\n * Defines whether the component is read-only.\n\n**Note:** A read-only component is not editable,\nbut still provides visual feedback upon user interaction.\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Defines whether the component is required.\n */\n required = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the separator type for the two columns layout when Select is in read-only mode.\n */\n textSeparator = input<typeof _Select.prototype.textSeparator | undefined>(\"Dash\");\n\n /**\n * Defines the tooltip of the select.\n */\n tooltip = input<typeof _Select.prototype.tooltip | undefined>();\n\n /**\n * Defines the value of the component:\n\n- when get - returns the value of the component or the value/text content of the selected option.\n- when set - selects the option with matching `value` property or text content.\n\n**Note:** Use either the Select's value or the Options' selected property.\nMixed usage could result in unexpected behavior.\n\n**Note:** If the given value does not match any existing option,\nno option will be selected and the Select component will be displayed as empty.\n */\n value = input<typeof _Select.prototype.value | undefined>(\"\");\n\n /**\n * Defines the value state of the component.\n */\n valueState = input<typeof _Select.prototype.valueState | undefined>(\"None\"); // className is now passed\n\n /**\n * Currently selected `ui5-option` element.\n * @readonly This property is managed by the web component and updates reactively.\n * Based on schema: readonly field that updates via change event parameters.\n */\n selectedOption = computed((): IOption | undefined => this._selectedOptionSignal());\n\n\n /**\n * Fired when the selected option changes.\n */\n ui5Change = output<UI5CustomEvent<_Select, 'change'>>();\n\n /**\n * Fired after the component's dropdown menu closes.\n */\n ui5Close = output<UI5CustomEvent<_Select, 'close'>>();\n\n /**\n * Fired when the user navigates through the options, but the selection is not finalized,\nor when pressing the ESC key to revert the current selection.\n */\n ui5LiveChange = output<UI5CustomEvent<_Select, 'live-change'>>();\n\n /**\n * Fired after the component's dropdown menu opens.\n */\n ui5Open = output<UI5CustomEvent<_Select, 'open'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the component options.\n\n**Note:** Only one selected option is allowed.\nIf more than one option is defined as selected, the last one would be considered as the selected one.\n\n**Note:** Use the `ui5-option` component to define the desired options.\n * - **label**: Defines the HTML element that will be displayed in the component input part,\nrepresenting the selected option.\n\n**Note:** If not specified and `ui5-option-custom` is used,\neither the option's `display-text` or its textContent will be displayed.\n\n**Note:** If not specified and `ui5-option` is used,\nthe option's textContent will be displayed.\n * - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state.\n\n**Note:** If the component has `suggestionItems`,\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\n *\n * @example\n * ```html\n * <ui5-select>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-select>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the component options.\\n\\n**Note:** Only one selected option is allowed.\\nIf more than one option is defined as selected, the last one would be considered as the selected one.\\n\\n**Note:** Use the `ui5-option` component to define the desired options.\"\n },\n {\n \"name\": \"label\",\n \"description\": \"Defines the HTML element that will be displayed in the component input part,\\nrepresenting the selected option.\\n\\n**Note:** If not specified and `ui5-option-custom` is used,\\neither the option's `display-text` or its textContent will be displayed.\\n\\n**Note:** If not specified and `ui5-option` is used,\\nthe option's textContent will be displayed.\",\n \"since\": \"1.17.0\"\n },\n {\n \"name\": \"valueStateMessage\",\n \"description\": \"Defines the value state message that will be displayed as pop up under the component.\\n\\n**Note:** If not specified, a default text (in the respective language) will be displayed.\\n\\n**Note:** The `valueStateMessage` would be displayed,\\nwhen the component is in `Information`, `Critical` or `Negative` value state.\\n\\n**Note:** If the component has `suggestionItems`,\\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\"\n }\n ];\n\n\n public elementRef: ElementRef<_Select> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n private readonly _destroyRef = inject(DestroyRef);\n\n // Internal signal to track selectedOption from change events\n private _selectedOptionSignal = signal<IOption | undefined>(undefined);\n\n get element(): _Select {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'name',\n 'readonly',\n 'required',\n 'textSeparator',\n 'tooltip',\n 'value',\n 'valueState',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, (): void => {\n effect((): void => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Close',\n 'ui5LiveChange',\n 'ui5Open',\n ];\n \n // Synchronize outputs (events)\n const _listeners: Array<() => void> = [];\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n const listener = (e: Event): void => {\n // Update selectedOption signal when change event fires\n if (eventName === 'change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption! || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n // Update selectedOption signal when live-change event fires\n if (eventName === 'live-change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption! || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n this[outputName].emit(e as CustomEvent<any>);\n };\n wcElement.addEventListener(eventName, listener);\n _listeners.push(() => wcElement.removeEventListener(eventName, listener));\n }\n }\n this._destroyRef.onDestroy(() => _listeners.forEach((fn) => fn()));\n \n\n // Initialize selectedOption signal with current state using delayed initialization\n // to handle web component timing properly\n const initializeSelectedOption = (): void => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const currentValue = wcElement.selectedOption! || undefined;\n if (JSON.stringify(currentValue) !== JSON.stringify(this._selectedOptionSignal())) {\n this._selectedOptionSignal.set(currentValue);\n }\n };\n\n // Try immediate initialization\n initializeSelectedOption();\n\n // Fallback delayed initialization if web component needs more time\n // Use requestAnimationFrame for zoneless compatibility\n requestAnimationFrame((): void => initializeSelectedOption());\n }\n}\n\n// Re-export types for convenience\nexport { IOption } from '@ui5/webcomponents/dist/Select.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-ui5-webcomponents-select.mjs","sources":["../../../../libs/ui5-webcomponents/select/index.ts","../../../../libs/ui5-webcomponents/select/fundamental-ngx-ui5-webcomponents-select.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal,\n DestroyRef\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/Select.js';\nimport { default as _Select } from '@ui5/webcomponents/dist/Select.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { GenericControlValueAccessor, CVA_CONFIG } from '@fundamental-ngx/ui5-webcomponents/utils';\n\nimport { IOption } from '@ui5/webcomponents/dist/Select.js';\nimport { default as SelectTextSeparator } from '@ui5/webcomponents/dist/types/SelectTextSeparator.js';\nimport { default as ValueState } from '@ui5/webcomponents-base/dist/types/ValueState.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-select, [ui5-select]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5Select',\n hostDirectives: [GenericControlValueAccessor],\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n }),\n {\n provide: CVA_CONFIG,\n useValue: {\n property: 'value',\n events: ['change', 'liveChange'],\n transformValue: (v) => v || ''\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _Select.prototype.accessibleDescription | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that describe the select.\n */\n accessibleDescriptionRef = input<typeof _Select.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _Select.prototype.accessibleName | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that label the select.\n */\n accessibleNameRef = input<typeof _Select.prototype.accessibleNameRef | undefined>();\n\n /**\n * Defines whether the component is in disabled state.\n\n**Note:** A disabled component is noninteractive.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _Select.prototype.name | undefined>();\n\n /**\n * Defines whether the component is read-only.\n\n**Note:** A read-only component is not editable,\nbut still provides visual feedback upon user interaction.\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Defines whether the component is required.\n */\n required = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the separator type for the two columns layout when Select is in read-only mode.\n */\n textSeparator = input<typeof _Select.prototype.textSeparator | undefined>(\"Dash\");\n\n /**\n * Defines the tooltip of the select.\n */\n tooltip = input<typeof _Select.prototype.tooltip | undefined>();\n\n /**\n * Defines the value of the component:\n\n- when get - returns the value of the component or the value/text content of the selected option.\n- when set - selects the option with matching `value` property or text content.\n\n**Note:** Use either the Select's value or the Options' selected property.\nMixed usage could result in unexpected behavior.\n\n**Note:** If the given value does not match any existing option,\nno option will be selected and the Select component will be displayed as empty.\n */\n value = input<typeof _Select.prototype.value | undefined>(\"\");\n\n /**\n * Defines the value state of the component.\n */\n valueState = input<typeof _Select.prototype.valueState | undefined>(\"None\"); // className is now passed\n\n /**\n * Currently selected `ui5-option` element.\n * @readonly This property is managed by the web component and updates reactively.\n * Based on schema: readonly field that updates via change event parameters.\n */\n selectedOption = computed((): IOption | undefined => this._selectedOptionSignal());\n\n\n /**\n * Fired when the selected option changes.\n */\n ui5Change = output<UI5CustomEvent<_Select, 'change'>>();\n\n /**\n * Fired after the component's dropdown menu closes.\n */\n ui5Close = output<UI5CustomEvent<_Select, 'close'>>();\n\n /**\n * Fired when the user navigates through the options, but the selection is not finalized,\nor when pressing the ESC key to revert the current selection.\n */\n ui5LiveChange = output<UI5CustomEvent<_Select, 'live-change'>>();\n\n /**\n * Fired after the component's dropdown menu opens.\n */\n ui5Open = output<UI5CustomEvent<_Select, 'open'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the component options.\n\n**Note:** Only one selected option is allowed.\nIf more than one option is defined as selected, the last one would be considered as the selected one.\n\n**Note:** Use the `ui5-option` component to define the desired options.\nUse the `ui5-option-group` component to group options.\n * - **label**: Defines the HTML element that will be displayed in the component input part,\nrepresenting the selected option.\n\n**Note:** If not specified and `ui5-option-custom` is used,\neither the option's `display-text` or its textContent will be displayed.\n\n**Note:** If not specified and `ui5-option` is used,\nthe option's textContent will be displayed.\n * - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state.\n\n**Note:** If the component has `suggestionItems`,\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\n *\n * @example\n * ```html\n * <ui5-select>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-select>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the component options.\\n\\n**Note:** Only one selected option is allowed.\\nIf more than one option is defined as selected, the last one would be considered as the selected one.\\n\\n**Note:** Use the `ui5-option` component to define the desired options.\\nUse the `ui5-option-group` component to group options.\"\n },\n {\n \"name\": \"label\",\n \"description\": \"Defines the HTML element that will be displayed in the component input part,\\nrepresenting the selected option.\\n\\n**Note:** If not specified and `ui5-option-custom` is used,\\neither the option's `display-text` or its textContent will be displayed.\\n\\n**Note:** If not specified and `ui5-option` is used,\\nthe option's textContent will be displayed.\",\n \"since\": \"1.17.0\"\n },\n {\n \"name\": \"valueStateMessage\",\n \"description\": \"Defines the value state message that will be displayed as pop up under the component.\\n\\n**Note:** If not specified, a default text (in the respective language) will be displayed.\\n\\n**Note:** The `valueStateMessage` would be displayed,\\nwhen the component is in `Information`, `Critical` or `Negative` value state.\\n\\n**Note:** If the component has `suggestionItems`,\\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\"\n }\n ];\n\n\n public elementRef: ElementRef<_Select> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n private readonly _destroyRef = inject(DestroyRef);\n\n // Internal signal to track selectedOption from change events\n private _selectedOptionSignal = signal<IOption | undefined>(undefined);\n\n get element(): _Select {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'name',\n 'readonly',\n 'required',\n 'textSeparator',\n 'tooltip',\n 'value',\n 'valueState',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, (): void => {\n effect((): void => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Close',\n 'ui5LiveChange',\n 'ui5Open',\n ];\n \n // Synchronize outputs (events)\n const _listeners: Array<() => void> = [];\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n const listener = (e: Event): void => {\n // Update selectedOption signal when change event fires\n if (eventName === 'change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption! || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n // Update selectedOption signal when live-change event fires\n if (eventName === 'live-change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption! || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n this[outputName].emit(e as CustomEvent<any>);\n };\n wcElement.addEventListener(eventName, listener);\n _listeners.push(() => wcElement.removeEventListener(eventName, listener));\n }\n }\n this._destroyRef.onDestroy(() => _listeners.forEach((fn) => fn()));\n \n\n // Initialize selectedOption signal with current state using delayed initialization\n // to handle web component timing properly\n const initializeSelectedOption = (): void => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const currentValue = wcElement.selectedOption! || undefined;\n if (JSON.stringify(currentValue) !== JSON.stringify(this._selectedOptionSignal())) {\n this._selectedOptionSignal.set(currentValue);\n }\n };\n\n // Try immediate initialization\n initializeSelectedOption();\n\n // Fallback delayed initialization if web component needs more time\n // Use requestAnimationFrame for zoneless compatibility\n requestAnimationFrame((): void => initializeSelectedOption());\n }\n}\n\n// Re-export types for convenience\nexport { IOption } from '@ui5/webcomponents/dist/Select.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,6 @@ class SplitButton {
|
|
|
12
12
|
- **root**: Attributes that will be applied to the main (text) button.
|
|
13
13
|
- **hasPopup**: Indicates the presence and type of popup triggered by the button.
|
|
14
14
|
Accepts string values: `"dialog"`, `"grid"`, `"listbox"`, `"menu"`, or `"tree"`.
|
|
15
|
-
- **roleDescription**: Provides a human-readable description for the role of the button.
|
|
16
|
-
Accepts any string value.
|
|
17
15
|
- **title**: Specifies a tooltip or description for screen readers.
|
|
18
16
|
Accepts any string value.
|
|
19
17
|
- **ariaKeyShortcuts**: Defines keyboard shortcuts that activate or give focus to the button.
|