@fundamental-ngx/core 0.63.2-rc.6 → 0.63.2
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-core-action-bar.mjs +26 -27
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +22 -25
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +31 -35
- package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +43 -52
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +43 -67
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +41 -50
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +14 -18
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +23 -34
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-button.mjs +37 -56
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +62 -87
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +188 -264
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +26 -35
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-combobox.mjs +18 -19
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-content-density.mjs +36 -46
- package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +14 -15
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +31 -32
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +89 -116
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +77 -100
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-facets.mjs +20 -24
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +17 -18
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +24 -24
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +16 -16
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +15 -17
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-form.mjs +74 -74
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-formatted-text.mjs +12 -17
- package/fesm2022/fundamental-ngx-core-formatted-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs +13 -19
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +51 -56
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +20 -33
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +31 -42
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs +9 -11
- package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +18 -29
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +25 -35
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +27 -40
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +37 -41
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +19 -24
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +91 -100
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +101 -125
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +38 -39
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +19 -19
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +55 -79
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +17 -17
- package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +20 -21
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +66 -98
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +21 -27
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +43 -46
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +132 -178
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +17 -24
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +24 -41
- package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +21 -33
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +26 -41
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +32 -33
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +10 -10
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +35 -51
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +164 -267
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +32 -46
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +44 -47
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +8 -8
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +39 -61
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +11 -12
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-scroll-spy.mjs +12 -17
- package/fesm2022/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-scrollbar.mjs +12 -14
- package/fesm2022/fundamental-ngx-core-scrollbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +8 -9
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +21 -22
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-settings.mjs +60 -70
- package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shared.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +63 -77
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +16 -24
- package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +13 -15
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +10 -10
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +35 -62
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +9 -11
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +8 -8
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +50 -51
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +55 -56
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +19 -29
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-theming.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-tile.mjs +136 -171
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +8 -9
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +14 -17
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-timeline.mjs +43 -43
- package/fesm2022/fundamental-ngx-core-title.mjs +10 -12
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +25 -34
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +32 -35
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +36 -41
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +57 -43
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +84 -108
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +17 -20
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +32 -41
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core.mjs +4 -4
- package/package.json +10 -11
- package/schematics/add-styles/index.js +3 -3
- package/schematics/add-styles/index.js.map +1 -1
- package/schematics/add-theming/index.js +1 -1
- package/schematics/add-theming/index.js.map +1 -1
- package/schematics/tsconfig.json +6 -12
- package/schematics/tsconfig.spec.json +0 -2
- package/schematics/utils/calls-providers-function.js +1 -34
- package/schematics/utils/calls-providers-function.js.map +1 -1
- package/schematics/utils/ng-module-utils.js +1 -34
- package/schematics/utils/ng-module-utils.js.map +1 -1
- package/types/fundamental-ngx-core-avatar-group-legacy.d.ts +0 -1
- package/types/fundamental-ngx-core-carousel.d.ts +0 -2
- package/types/fundamental-ngx-core-list.d.ts +2 -2
- package/types/fundamental-ngx-core-menu.d.ts +4 -4
- package/types/fundamental-ngx-core-notification.d.ts +2 -0
- package/types/fundamental-ngx-core-popover.d.ts +6 -8
- package/types/fundamental-ngx-core-product-switch.d.ts +3 -6
- package/types/fundamental-ngx-core-upload-collection.d.ts +2 -0
- package/types/fundamental-ngx-core-wizard.d.ts +1 -4
- package/schematics/package.json +0 -7
|
@@ -11,41 +11,37 @@ class BaseButton {
|
|
|
11
11
|
* Used for toggle buttons that maintain an on/off state.
|
|
12
12
|
* When true, adds the toggled class and sets aria-pressed="true".
|
|
13
13
|
*/
|
|
14
|
-
this.toggled = input(false, { ...(ngDevMode ? { debugName: "toggled" } :
|
|
14
|
+
this.toggled = input(false, { ...(ngDevMode ? { debugName: "toggled" } : {}), transform: booleanAttribute });
|
|
15
15
|
/**
|
|
16
16
|
* Whether the button is selected.
|
|
17
17
|
* Used in button groups or toolbars to indicate the currently selected option.
|
|
18
18
|
* When true, sets aria-selected="true".
|
|
19
19
|
*/
|
|
20
|
-
this.selected = input(false, { ...(ngDevMode ? { debugName: "selected" } :
|
|
20
|
+
this.selected = input(false, { ...(ngDevMode ? { debugName: "selected" } : {}), transform: booleanAttribute });
|
|
21
21
|
/**
|
|
22
22
|
* Native type attribute of the button element.
|
|
23
23
|
* Defaults to 'button' to prevent form submission.
|
|
24
24
|
* Set to 'submit' for form submission buttons or 'reset' for form reset buttons.
|
|
25
25
|
*/
|
|
26
|
-
this.type = input('button',
|
|
27
|
-
...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
26
|
+
this.type = input('button', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
28
27
|
/**
|
|
29
28
|
* Position of the icon relative to the button text.
|
|
30
29
|
* - 'before': Icon appears before the text (default)
|
|
31
30
|
* - 'after': Icon appears after the text
|
|
32
31
|
*/
|
|
33
|
-
this.glyphPosition = input('before',
|
|
34
|
-
...(ngDevMode ? [{ debugName: "glyphPosition" }] : /* istanbul ignore next */ []));
|
|
32
|
+
this.glyphPosition = input('before', ...(ngDevMode ? [{ debugName: "glyphPosition" }] : []));
|
|
35
33
|
/**
|
|
36
34
|
* The icon to display in the button.
|
|
37
35
|
* See the icon documentation for the list of available icons.
|
|
38
36
|
* Example values: 'add', 'edit', 'delete', 'accept', 'decline'
|
|
39
37
|
*/
|
|
40
|
-
this.glyph = input(
|
|
41
|
-
...(ngDevMode ? [undefined, { debugName: "glyph" }] : /* istanbul ignore next */ []));
|
|
38
|
+
this.glyph = input(...(ngDevMode ? [undefined, { debugName: "glyph" }] : []));
|
|
42
39
|
/**
|
|
43
40
|
* Font family for the icon.
|
|
44
41
|
* Defaults to the SAP icon font.
|
|
45
42
|
* Override when using custom icon fonts.
|
|
46
43
|
*/
|
|
47
|
-
this.glyphFont = input(FD_DEFAULT_ICON_FONT_FAMILY,
|
|
48
|
-
...(ngDevMode ? [{ debugName: "glyphFont" }] : /* istanbul ignore next */ []));
|
|
44
|
+
this.glyphFont = input(FD_DEFAULT_ICON_FONT_FAMILY, ...(ngDevMode ? [{ debugName: "glyphFont" }] : []));
|
|
49
45
|
/**
|
|
50
46
|
* Visual style of the button.
|
|
51
47
|
* Available types:
|
|
@@ -59,48 +55,44 @@ class BaseButton {
|
|
|
59
55
|
* - 'half': Split button style
|
|
60
56
|
* - 'menu': Menu trigger button
|
|
61
57
|
*/
|
|
62
|
-
this.fdType = input(defaultButtonType,
|
|
63
|
-
...(ngDevMode ? [{ debugName: "fdType" }] : /* istanbul ignore next */ []));
|
|
58
|
+
this.fdType = input(defaultButtonType, ...(ngDevMode ? [{ debugName: "fdType" }] : []));
|
|
64
59
|
/**
|
|
65
60
|
* Text label displayed inside the button.
|
|
66
61
|
* Can be used alone or combined with an icon.
|
|
67
62
|
*/
|
|
68
|
-
this.label = input(
|
|
69
|
-
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
63
|
+
this.label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
70
64
|
/**
|
|
71
65
|
* Whether to apply menu mode styling to the button.
|
|
72
66
|
* When true, adds a dropdown arrow icon and menu-specific styling.
|
|
73
67
|
*/
|
|
74
|
-
this.fdMenu = input(false, { ...(ngDevMode ? { debugName: "fdMenu" } :
|
|
68
|
+
this.fdMenu = input(false, { ...(ngDevMode ? { debugName: "fdMenu" } : {}), transform: booleanAttribute });
|
|
75
69
|
/**
|
|
76
70
|
* Whether the button is disabled.
|
|
77
71
|
* When true, the button cannot be interacted with and displays a disabled state.
|
|
78
72
|
* This sets the native 'disabled' attribute on button elements.
|
|
79
73
|
*/
|
|
80
|
-
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } :
|
|
74
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
81
75
|
/**
|
|
82
76
|
* ARIA disabled attribute for accessibility.
|
|
83
77
|
* Use this when you want to indicate a disabled state to screen readers
|
|
84
78
|
* without preventing interaction (e.g., for showing tooltips on disabled buttons).
|
|
85
79
|
* Unlike the 'disabled' attribute, this does not prevent click events.
|
|
86
80
|
*/
|
|
87
|
-
this.ariaDisabled = input(false, { ...(ngDevMode ? { debugName: "ariaDisabled" } :
|
|
81
|
+
this.ariaDisabled = input(false, { ...(ngDevMode ? { debugName: "ariaDisabled" } : {}), alias: 'aria-disabled',
|
|
88
82
|
transform: booleanAttribute });
|
|
89
83
|
/**
|
|
90
84
|
* ARIA label for the button.
|
|
91
85
|
* Provides an accessible name for screen readers.
|
|
92
86
|
* If not provided, special button types will auto-generate from label or glyph.
|
|
93
87
|
*/
|
|
94
|
-
this.ariaLabel = input(
|
|
95
|
-
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
88
|
+
this.ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : []));
|
|
96
89
|
/**
|
|
97
90
|
* ARIA description for the button.
|
|
98
91
|
* Provides additional context for screen readers beyond the label.
|
|
99
92
|
* Special button types (emphasized, positive, negative, attention) will
|
|
100
93
|
* auto-generate a description from their type if not provided.
|
|
101
94
|
*/
|
|
102
|
-
this.ariaDescription = input(
|
|
103
|
-
...(ngDevMode ? [undefined, { debugName: "ariaDescription" }] : /* istanbul ignore next */ []));
|
|
95
|
+
this.ariaDescription = input(...(ngDevMode ? [undefined, { debugName: "ariaDescription" }] : []));
|
|
104
96
|
/** @hidden */
|
|
105
97
|
this.elementRef = inject(ElementRef);
|
|
106
98
|
/**
|
|
@@ -108,29 +100,25 @@ class BaseButton {
|
|
|
108
100
|
* Syncs with the toggled input but allows internal modification.
|
|
109
101
|
* @hidden
|
|
110
102
|
*/
|
|
111
|
-
this.toggledState = linkedSignal(() => this.toggled(),
|
|
112
|
-
...(ngDevMode ? [{ debugName: "toggledState" }] : /* istanbul ignore next */ []));
|
|
103
|
+
this.toggledState = linkedSignal(() => this.toggled(), ...(ngDevMode ? [{ debugName: "toggledState" }] : []));
|
|
113
104
|
/**
|
|
114
105
|
* Internal selected state that can be mutated programmatically.
|
|
115
106
|
* Syncs with the selected input but allows internal modification.
|
|
116
107
|
* @hidden
|
|
117
108
|
*/
|
|
118
|
-
this.selectedState = linkedSignal(() => this.selected(),
|
|
119
|
-
...(ngDevMode ? [{ debugName: "selectedState" }] : /* istanbul ignore next */ []));
|
|
109
|
+
this.selectedState = linkedSignal(() => this.selected(), ...(ngDevMode ? [{ debugName: "selectedState" }] : []));
|
|
120
110
|
/**
|
|
121
111
|
* Internal button type state that can be mutated programmatically.
|
|
122
112
|
* Syncs with the fdType input but allows internal modification.
|
|
123
113
|
* @hidden
|
|
124
114
|
*/
|
|
125
|
-
this.fdTypeState = linkedSignal(() => this.fdType(),
|
|
126
|
-
...(ngDevMode ? [{ debugName: "fdTypeState" }] : /* istanbul ignore next */ []));
|
|
115
|
+
this.fdTypeState = linkedSignal(() => this.fdType(), ...(ngDevMode ? [{ debugName: "fdTypeState" }] : []));
|
|
127
116
|
/**
|
|
128
117
|
* Internal disabled state that can be mutated programmatically.
|
|
129
118
|
* Syncs with the disabled input but allows internal modification.
|
|
130
119
|
* @hidden
|
|
131
120
|
*/
|
|
132
|
-
this._disabledState = linkedSignal(() => this.disabled(),
|
|
133
|
-
...(ngDevMode ? [{ debugName: "_disabledState" }] : /* istanbul ignore next */ []));
|
|
121
|
+
this._disabledState = linkedSignal(() => this.disabled(), ...(ngDevMode ? [{ debugName: "_disabledState" }] : []));
|
|
134
122
|
}
|
|
135
123
|
/**
|
|
136
124
|
* No-op for ButtonModel interface compatibility.
|
|
@@ -251,10 +239,10 @@ class BaseButton {
|
|
|
251
239
|
isToggled() {
|
|
252
240
|
return this.toggledState();
|
|
253
241
|
}
|
|
254
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
255
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
242
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BaseButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
243
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: BaseButton, isStandalone: true, inputs: { toggled: { classPropertyName: "toggled", publicName: "toggled", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, glyphPosition: { classPropertyName: "glyphPosition", publicName: "glyphPosition", isSignal: true, isRequired: false, transformFunction: null }, glyph: { classPropertyName: "glyph", publicName: "glyph", isSignal: true, isRequired: false, transformFunction: null }, glyphFont: { classPropertyName: "glyphFont", publicName: "glyphFont", isSignal: true, isRequired: false, transformFunction: null }, fdType: { classPropertyName: "fdType", publicName: "fdType", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, fdMenu: { classPropertyName: "fdMenu", publicName: "fdMenu", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaDisabled: { classPropertyName: "ariaDisabled", publicName: "aria-disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescription: { classPropertyName: "ariaDescription", publicName: "ariaDescription", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-button--toggled": "toggledState()", "attr.aria-pressed": "toggledState() || null", "attr.aria-selected": "selectedState() || null" } }, ngImport: i0 }); }
|
|
256
244
|
}
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BaseButton, decorators: [{
|
|
258
246
|
type: Directive,
|
|
259
247
|
args: [{
|
|
260
248
|
host: {
|
|
@@ -293,8 +281,7 @@ class ButtonBadgeDirective {
|
|
|
293
281
|
* Should not exceed 4 characters for optimal display.
|
|
294
282
|
* Supports both string and numeric values.
|
|
295
283
|
*/
|
|
296
|
-
this.content = input(
|
|
297
|
-
...(ngDevMode ? [undefined, { debugName: "content" }] : /* istanbul ignore next */ []));
|
|
284
|
+
this.content = input(...(ngDevMode ? [undefined, { debugName: "content" }] : []));
|
|
298
285
|
/** @hidden */
|
|
299
286
|
this.elementRef = inject(ElementRef);
|
|
300
287
|
/** @hidden */
|
|
@@ -324,10 +311,10 @@ class ButtonBadgeDirective {
|
|
|
324
311
|
console.warn(`Currently the ${JSON.stringify(badgeEnabledButtonTypes)} type of buttons are required for Badge enablement`);
|
|
325
312
|
}
|
|
326
313
|
}
|
|
327
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
328
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
314
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonBadgeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
315
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: ButtonBadgeDirective, isStandalone: true, selector: "fd-button-badge", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "fd-button__badge" }, ngImport: i0 }); }
|
|
329
316
|
}
|
|
330
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonBadgeDirective, decorators: [{
|
|
331
318
|
type: Directive,
|
|
332
319
|
args: [{
|
|
333
320
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -355,8 +342,7 @@ class ButtonComponent extends BaseButton {
|
|
|
355
342
|
constructor() {
|
|
356
343
|
super();
|
|
357
344
|
/** Button ID - default value is provided if not set */
|
|
358
|
-
this.id = input(`fd-button-${++buttonId}`,
|
|
359
|
-
...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
345
|
+
this.id = input(`fd-button-${++buttonId}`, ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
360
346
|
/** @hidden */
|
|
361
347
|
this.elementRef = inject(ElementRef);
|
|
362
348
|
/** @hidden */
|
|
@@ -377,8 +363,7 @@ class ButtonComponent extends BaseButton {
|
|
|
377
363
|
return this.label() ?? this._glyphLabel() ?? null;
|
|
378
364
|
}
|
|
379
365
|
return null;
|
|
380
|
-
},
|
|
381
|
-
...(ngDevMode ? [{ debugName: "buttonArialabel" }] : /* istanbul ignore next */ []));
|
|
366
|
+
}, ...(ngDevMode ? [{ debugName: "buttonArialabel" }] : []));
|
|
382
367
|
/**
|
|
383
368
|
* Calculate aria-description attribute
|
|
384
369
|
* @hidden
|
|
@@ -391,8 +376,7 @@ class ButtonComponent extends BaseButton {
|
|
|
391
376
|
return this.fdTypeState();
|
|
392
377
|
}
|
|
393
378
|
return null;
|
|
394
|
-
},
|
|
395
|
-
...(ngDevMode ? [{ debugName: "buttonAriaDescription" }] : /* istanbul ignore next */ []));
|
|
379
|
+
}, ...(ngDevMode ? [{ debugName: "buttonAriaDescription" }] : []));
|
|
396
380
|
/**
|
|
397
381
|
* Computed CSS classes for the button.
|
|
398
382
|
* Built as a string to avoid array allocation overhead.
|
|
@@ -414,8 +398,7 @@ class ButtonComponent extends BaseButton {
|
|
|
414
398
|
classes += ' fd-button--toggled';
|
|
415
399
|
}
|
|
416
400
|
return classes;
|
|
417
|
-
},
|
|
418
|
-
...(ngDevMode ? [{ debugName: "cssClass" }] : /* istanbul ignore next */ []));
|
|
401
|
+
}, ...(ngDevMode ? [{ debugName: "cssClass" }] : []));
|
|
419
402
|
/**
|
|
420
403
|
* Memoized glyph label for aria-label fallback.
|
|
421
404
|
* Transforms glyph name (e.g., "slim-arrow-down") to readable text (e.g., "slim arrow down").
|
|
@@ -424,15 +407,13 @@ class ButtonComponent extends BaseButton {
|
|
|
424
407
|
this._glyphLabel = computed(() => {
|
|
425
408
|
const glyph = this.glyph();
|
|
426
409
|
return glyph ? glyph.replace(/-/g, ' ') : null;
|
|
427
|
-
},
|
|
428
|
-
...(ngDevMode ? [{ debugName: "_glyphLabel" }] : /* istanbul ignore next */ []));
|
|
410
|
+
}, ...(ngDevMode ? [{ debugName: "_glyphLabel" }] : []));
|
|
429
411
|
/**
|
|
430
412
|
* Native aria-label attribute read from the DOM element.
|
|
431
413
|
* Captured once after render for use in aria-label computation.
|
|
432
414
|
* @hidden
|
|
433
415
|
*/
|
|
434
|
-
this._nativeAriaLabel = signal(null,
|
|
435
|
-
...(ngDevMode ? [{ debugName: "_nativeAriaLabel" }] : /* istanbul ignore next */ []));
|
|
416
|
+
this._nativeAriaLabel = signal(null, ...(ngDevMode ? [{ debugName: "_nativeAriaLabel" }] : []));
|
|
436
417
|
// Read native aria-label attribute once after render
|
|
437
418
|
afterNextRender(() => {
|
|
438
419
|
const nativeLabel = this.elementRef.nativeElement.getAttribute('aria-label');
|
|
@@ -449,8 +430,8 @@ class ButtonComponent extends BaseButton {
|
|
|
449
430
|
target.focus();
|
|
450
431
|
}
|
|
451
432
|
}
|
|
452
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
453
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
433
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
434
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ButtonComponent, isStandalone: true, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "clicked($event)" }, properties: { "attr.type": "type()", "attr.disabled": "_disabledState() || null", "attr.aria-disabled": "ariaDisabled() || null", "attr.aria-label": "buttonArialabel()", "attr.aria-description": "buttonAriaDescription()", "attr.id": "id()", "class": "cssClass()" } }, providers: [
|
|
454
435
|
contentDensityObserverProviders(),
|
|
455
436
|
{
|
|
456
437
|
provide: FD_BUTTON_COMPONENT,
|
|
@@ -458,7 +439,7 @@ class ButtonComponent extends BaseButton {
|
|
|
458
439
|
}
|
|
459
440
|
], exportAs: ["fd-button"], usesInheritance: true, ngImport: i0, template: "@if (glyph() && glyphPosition() === 'before') {\n <fd-icon [glyph]=\"glyph()\" [font]=\"glyphFont()\"></fd-icon>\n}\n@if (label()) {\n <span class=\"fd-button__text\">\n {{ label() }}\n </span>\n}\n<ng-content></ng-content>\n<ng-content select=\"fd-button-badge\"></ng-content>\n@if (glyph() && glyphPosition() === 'after') {\n <fd-icon [glyph]=\"glyph()\" [font]=\"glyphFont()\"></fd-icon>\n}\n@if (fdMenu()) {\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n}\n", styles: [".fd-button{--fdButton_Clickable_Height:2.75rem;--fdButton_Padding_X:.625rem;--fdButton_Min_Width:2.25rem;--fdButton_Badge_Offset:-.3125rem;--fdButton_Badge_Margin:.25rem;--fdButton_Badge_Margin_Inline_Start:0;--fdButton_Badge_Width:auto;--fdButton_Badge_Height:1rem;--fdButton_Badge_Position:absolute;--fdButton_Badge_Position_Attention:absolute;--fdButton_Badge_Padding_Inline:.3125rem;--fdButton_Badge_Size_Attention:.75rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;background-image:none;border:0;border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:inline-block;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;outline:0;padding-block:0;padding-inline:0;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-style:solid;border-width:var(--sapButton_BorderWidth);height:var(--fdButton_Height,var(--sapElement_Height));max-height:var(--fdButton_Height,var(--sapElement_Height));min-width:var(--fdButton_Min_Width);padding-inline:calc(var(--fdButton_Padding_X) - var(--sapButton_BorderWidth));position:relative;text-align:center;text-shadow:var(--fdButton_Text_Shadow);--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button:after,.fd-button:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-button::-moz-focus-inner{border:0}.fd-button:before{content:\"\";display:block;height:auto;inset:calc((var(--fdButton_Clickable_Height) - var(--fdButton_Height, var(--sapElement_Height)))*-.5) 0;position:absolute;width:100%}.fd-button__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:inherit;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:inherit;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-button__text:after,.fd-button__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-button,.fd-button__text{font-family:var(--fdButton_Font_Family,var(--sapButton_FontFamily))}.fd-button :not(:first-child):not(.fd-button__badge){-webkit-margin-start:.375rem;margin-inline-start:.375rem}.fd-button>[class*=sap-icon]{color:inherit;font-size:1rem;font-style:normal;height:1rem;line-height:1rem;min-width:1rem;vertical-align:text-bottom;width:1rem}.fd-button>[class*=sap-icon]:after,.fd-button>[class*=sap-icon]:before{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.fd-button__badge{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapContent_BadgeBackground);border:.0625rem solid var(--sapContent_BadgeBorderColor);border-radius:.5rem;color:var(--sapContent_BadgeTextColor);font-size:var(--sapFontSmallSize);height:var(--fdButton_Badge_Height);padding-block:0;padding-inline:var(--fdButton_Badge_Padding_Inline);position:var(--fdButton_Badge_Position);right:var(--fdButton_Badge_Offset);top:var(--fdButton_Badge_Offset);width:var(--fdButton_Badge_Width);z-index:1;-webkit-margin-start:var(--fdButton_Badge_Margin_Inline_Start);margin-inline-start:var(--fdButton_Badge_Margin_Inline_Start)}.fd-button__badge:after,.fd-button__badge:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-button__badge[dir=rtl],[dir=rtl] .fd-button__badge{left:var(--fdButton_Badge_Offset);right:auto}.fd-button__badge--attention{--fdButton_Badge_Padding_Inline:0;--fdButton_Badge_Offset:-.1875rem;--fdButton_Badge_Width:var(--fdButton_Badge_Size_Attention);--fdButton_Badge_Height:var(--fdButton_Badge_Size_Attention);--fdButton_Badge_Position:var(--fdButton_Badge_Position_Attention)}.fd-button[class*=-compact],.fd-button[class*=-condensed],[class*=-compact] .fd-button:not([class*=-cozy]),[class*=-condensed] .fd-button:not([class*=-cozy]){--fdButton_Height:var(--fdButton_Compact_Height,var(--sapElement_Compact_Height));--fdButton_Clickable_Height:2rem;--fdButton_Padding_X:.5rem;--fdButton_Min_Width:2rem;--fdButton_Badge_Position:static;--fdButton_Badge_Margin_Inline_Start:.25rem;--fdButton_Badge_Size_Attention:.625rem}.fd-button[class*=-compact]:not(.fd-button--tool-header):has(.fd-button__badge),.fd-button[class*=-condensed]:not(.fd-button--tool-header):has(.fd-button__badge),[class*=-compact] .fd-button:not([class*=-cozy]):not(.fd-button--tool-header):has(.fd-button__badge),[class*=-condensed] .fd-button:not([class*=-cozy]):not(.fd-button--tool-header):has(.fd-button__badge){padding-inline:calc(.5rem - var(--sapButton_BorderWidth)) calc(.25rem - var(--sapButton_BorderWidth))}.fd-button--menu{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-button--menu-fixed-width{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.fd-button--menu .fd-button__text{line-height:1rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:start}.fd-button--full-width{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:100%;width:100%}.fd-button--text-alignment-left{text-align:left;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-button--text-alignment-right{text-align:right;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.fd-button--decisive{min-width:4rem}.fd-button__instructions{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin-block:-1px;margin-inline:-1px;overflow:hidden;padding-block:0;padding-inline:0;white-space:nowrap;width:1px}.fd-button.is-focus,.fd-button:focus{-webkit-box-shadow:none;box-shadow:none;outline:none;z-index:5}.fd-button.is-focus:after,.fd-button:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:var(--fdButton_Focus_Border_Radius);content:\"\";display:block;inset:var(--fdButton_Outline_Offset) var(--fdButton_Outline_Offset) var(--fdButton_Outline_Offset) var(--fdButton_Outline_Offset);position:absolute}.fd-button.is-focus.fd-button--toggled:after,.fd-button.is-focus.is-selected:after,.fd-button:focus.fd-button--toggled:after,.fd-button:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-button.is-active,.fd-button.is-selected,.fd-button:active,.fd-button[aria-selected=true]{-webkit-box-shadow:none;box-shadow:none;outline:none}.fd-button.is-disabled,.fd-button:disabled,.fd-button[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none;cursor:not-allowed;opacity:var(--sapContent_DisabledOpacity)}.fd-button.is-selected,.fd-button[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button.is-hover,.fd-button:hover{--fdButtonColor:var(--sapButton_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Hover_Background))}.fd-button.is-active,.fd-button:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Active_Background));--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button.is-active .fd-button__icon,.fd-button:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button.is-disabled,.fd-button:disabled,.fd-button[aria-disabled=true]{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Background))}.fd-button.is-disabled.is-selected,.fd-button.is-disabled[aria-selected=true],.fd-button:disabled.is-selected,.fd-button:disabled[aria-selected=true],.fd-button[aria-disabled=true].is-selected,.fd-button[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button.fd-button--toggled{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Background)}.fd-button.fd-button--toggled.is-hover,.fd-button.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Hover_Background)}.fd-button.fd-button--toggled.is-active,.fd-button.fd-button--toggled.is-selected,.fd-button.fd-button--toggled:active,.fd-button.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background))}.fd-button.fd-button--toggled.is-active .fd-button__icon,.fd-button.fd-button--toggled.is-selected .fd-button__icon,.fd-button.fd-button--toggled:active .fd-button__icon,.fd-button.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button.fd-button--toggled.is-disabled,.fd-button.fd-button--toggled:disabled,.fd-button.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--emphasized,.fd-button--emphasized .fd-button__text{--fdButton_Font_Family:var(--sapButton_Emphasized_FontFamily)}.fd-button--emphasized{--fdButtonColor:var(--sapButton_Emphasized_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Emphasized_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Emphasized_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);border-width:var(--sapButton_Emphasized_BorderWidth);color:var(--fdButtonColor)}.fd-button--emphasized.is-selected,.fd-button--emphasized[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button--emphasized.is-hover,.fd-button--emphasized:hover{--fdButtonColor:var(--sapButton_Emphasized_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Emphasized_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Emphasized_Hover_Background))}.fd-button--emphasized.is-active,.fd-button--emphasized:active{--fdButtonColor:var(--sapButton_Emphasized_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Emphasized_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Emphasized_Active_Background));--fdElementTextColor:var(--sapButton_Emphasized_Active_TextColor);--fdElementIconColor:var(--sapButton_Emphasized_Active_TextColor)}.fd-button--emphasized.is-active .fd-button__icon,.fd-button--emphasized:active .fd-button__icon{color:var(--sapButton_Emphasized_Active_TextColor);text-shadow:none}.fd-button--emphasized.is-disabled,.fd-button--emphasized:disabled,.fd-button--emphasized[aria-disabled=true]{--fdButtonColor:var(--sapButton_Emphasized_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Emphasized_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Emphasized_Background))}.fd-button--emphasized.is-disabled.is-selected,.fd-button--emphasized.is-disabled[aria-selected=true],.fd-button--emphasized:disabled.is-selected,.fd-button--emphasized:disabled[aria-selected=true],.fd-button--emphasized[aria-disabled=true].is-selected,.fd-button--emphasized[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button--emphasized.fd-button--toggled{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--emphasized.fd-button--toggled.is-hover,.fd-button--emphasized.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Hover_Background)}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background))}.fd-button--emphasized.fd-button--toggled.is-active .fd-button__icon,.fd-button--emphasized.fd-button--toggled.is-selected .fd-button__icon,.fd-button--emphasized.fd-button--toggled:active .fd-button__icon,.fd-button--emphasized.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Emphasized_Active_TextColor);text-shadow:none}.fd-button--emphasized.fd-button--toggled.is-disabled,.fd-button--emphasized.fd-button--toggled:disabled,.fd-button--emphasized.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--emphasized.is-focus,.fd-button--emphasized:focus{z-index:5}.fd-button--emphasized.is-focus:after,.fd-button--emphasized:focus:after{border-color:var(--sapContent_ContrastFocusColor)}.fd-button--emphasized.is-focus.is-active:after,.fd-button--emphasized.is-focus:active:after,.fd-button--emphasized:focus.is-active:after,.fd-button--emphasized:focus:active:after{border-color:var(--sapContent_FocusColor)}.fd-button--emphasized[class*=-compact].is-focus,.fd-button--emphasized[class*=-compact]:focus,.fd-button--emphasized[class*=-condensed].is-focus,.fd-button--emphasized[class*=-condensed]:focus,[class*=-compact] .fd-button--emphasized:not([class*=-cozy]).is-focus,[class*=-compact] .fd-button--emphasized:not([class*=-cozy]):focus,[class*=-condensed] .fd-button--emphasized:not([class*=-cozy]).is-focus,[class*=-condensed] .fd-button--emphasized:not([class*=-cozy]):focus{z-index:5}.fd-button--emphasized[class*=-compact].is-focus.is-active:after,.fd-button--emphasized[class*=-compact].is-focus:active:after,.fd-button--emphasized[class*=-compact]:focus.is-active:after,.fd-button--emphasized[class*=-compact]:focus:active:after,.fd-button--emphasized[class*=-condensed].is-focus.is-active:after,.fd-button--emphasized[class*=-condensed].is-focus:active:after,.fd-button--emphasized[class*=-condensed]:focus.is-active:after,.fd-button--emphasized[class*=-condensed]:focus:active:after,[class*=-compact] .fd-button--emphasized:not([class*=-cozy]).is-focus.is-active:after,[class*=-compact] .fd-button--emphasized:not([class*=-cozy]).is-focus:active:after,[class*=-compact] .fd-button--emphasized:not([class*=-cozy]):focus.is-active:after,[class*=-compact] .fd-button--emphasized:not([class*=-cozy]):focus:active:after,[class*=-condensed] .fd-button--emphasized:not([class*=-cozy]).is-focus.is-active:after,[class*=-condensed] .fd-button--emphasized:not([class*=-cozy]).is-focus:active:after,[class*=-condensed] .fd-button--emphasized:not([class*=-cozy]):focus.is-active:after,[class*=-condensed] .fd-button--emphasized:not([class*=-cozy]):focus:active:after{border-color:transparent}.fd-button--emphasized.is-active,.fd-button--emphasized.is-selected,.fd-button--emphasized:active,.fd-button--emphasized[aria-selected=true]{outline:none}.fd-button--emphasized.fd-button--toggled.is-focus,.fd-button--emphasized.fd-button--toggled:focus{outline-color:var(--fdButton_Emphasized_Active_Outline);z-index:5}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{outline:none}.fd-button--attention{--fdButtonColor:var(--sapButton_Attention_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Attention_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Attention_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--attention.is-selected,.fd-button--attention[aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Attention_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Attention_Selected_Background))}.fd-button--attention.is-hover,.fd-button--attention:hover{--fdButtonColor:var(--sapButton_Attention_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Attention_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Attention_Hover_Background))}.fd-button--attention.is-active,.fd-button--attention:active{--fdButtonColor:var(--sapButton_Attention_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Attention_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Attention_Active_Background));--fdElementTextColor:var(--sapButton_Attention_Active_TextColor);--fdElementIconColor:var(--sapButton_Attention_Active_TextColor)}.fd-button--attention.is-active .fd-button__icon,.fd-button--attention:active .fd-button__icon{color:var(--sapButton_Attention_Active_TextColor);text-shadow:none}.fd-button--attention.is-disabled,.fd-button--attention:disabled,.fd-button--attention[aria-disabled=true]{--fdButtonColor:var(--sapButton_Attention_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Attention_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Attention_Background))}.fd-button--attention.is-disabled.is-selected,.fd-button--attention.is-disabled[aria-selected=true],.fd-button--attention:disabled.is-selected,.fd-button--attention:disabled[aria-selected=true],.fd-button--attention[aria-disabled=true].is-selected,.fd-button--attention[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Attention_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Attention_Selected_Background))}.fd-button--attention.fd-button--toggled{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Attention_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Attention_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Attention_Selected_Background)}.fd-button--attention.fd-button--toggled.is-hover,.fd-button--attention.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Attention_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Attention_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Attention_Selected_Hover_Background)}.fd-button--attention.fd-button--toggled.is-active,.fd-button--attention.fd-button--toggled.is-selected,.fd-button--attention.fd-button--toggled:active,.fd-button--attention.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Attention_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Attention_Selected_Hover_Background))}.fd-button--attention.fd-button--toggled.is-active .fd-button__icon,.fd-button--attention.fd-button--toggled.is-selected .fd-button__icon,.fd-button--attention.fd-button--toggled:active .fd-button__icon,.fd-button--attention.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Attention_Active_TextColor);text-shadow:none}.fd-button--attention.fd-button--toggled.is-disabled,.fd-button--attention.fd-button--toggled:disabled,.fd-button--attention.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--negative{--fdButtonColor:var(--sapButton_Reject_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Reject_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Reject_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--negative.is-selected,.fd-button--negative[aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Reject_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Reject_Selected_Background))}.fd-button--negative.is-hover,.fd-button--negative:hover{--fdButtonColor:var(--sapButton_Reject_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Reject_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Reject_Hover_Background))}.fd-button--negative.is-active,.fd-button--negative:active{--fdButtonColor:var(--sapButton_Reject_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Reject_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Reject_Active_Background));--fdElementTextColor:var(--sapButton_Reject_Active_TextColor);--fdElementIconColor:var(--sapButton_Reject_Active_TextColor)}.fd-button--negative.is-active .fd-button__icon,.fd-button--negative:active .fd-button__icon{color:var(--sapButton_Reject_Active_TextColor);text-shadow:none}.fd-button--negative.is-disabled,.fd-button--negative:disabled,.fd-button--negative[aria-disabled=true]{--fdButtonColor:var(--sapButton_Reject_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Reject_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Reject_Background))}.fd-button--negative.is-disabled.is-selected,.fd-button--negative.is-disabled[aria-selected=true],.fd-button--negative:disabled.is-selected,.fd-button--negative:disabled[aria-selected=true],.fd-button--negative[aria-disabled=true].is-selected,.fd-button--negative[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Reject_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Reject_Selected_Background))}.fd-button--negative.fd-button--toggled{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Reject_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Reject_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Reject_Selected_Background)}.fd-button--negative.fd-button--toggled.is-hover,.fd-button--negative.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Reject_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Reject_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Reject_Selected_Hover_Background)}.fd-button--negative.fd-button--toggled.is-active,.fd-button--negative.fd-button--toggled.is-selected,.fd-button--negative.fd-button--toggled:active,.fd-button--negative.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Reject_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Reject_Selected_Hover_Background))}.fd-button--negative.fd-button--toggled.is-active .fd-button__icon,.fd-button--negative.fd-button--toggled.is-selected .fd-button__icon,.fd-button--negative.fd-button--toggled:active .fd-button__icon,.fd-button--negative.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Reject_Active_TextColor);text-shadow:none}.fd-button--negative.fd-button--toggled.is-disabled,.fd-button--negative.fd-button--toggled:disabled,.fd-button--negative.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--positive{--fdButtonColor:var(--sapButton_Accept_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Accept_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Accept_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--positive.is-selected,.fd-button--positive[aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Accept_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Accept_Selected_Background))}.fd-button--positive.is-hover,.fd-button--positive:hover{--fdButtonColor:var(--sapButton_Accept_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Accept_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Accept_Hover_Background))}.fd-button--positive.is-active,.fd-button--positive:active{--fdButtonColor:var(--sapButton_Accept_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Accept_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Accept_Active_Background));--fdElementTextColor:var(--sapButton_Accept_Active_TextColor);--fdElementIconColor:var(--sapButton_Accept_Active_TextColor)}.fd-button--positive.is-active .fd-button__icon,.fd-button--positive:active .fd-button__icon{color:var(--sapButton_Accept_Active_TextColor);text-shadow:none}.fd-button--positive.is-disabled,.fd-button--positive:disabled,.fd-button--positive[aria-disabled=true]{--fdButtonColor:var(--sapButton_Accept_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Accept_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Accept_Background))}.fd-button--positive.is-disabled.is-selected,.fd-button--positive.is-disabled[aria-selected=true],.fd-button--positive:disabled.is-selected,.fd-button--positive:disabled[aria-selected=true],.fd-button--positive[aria-disabled=true].is-selected,.fd-button--positive[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Accept_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Accept_Selected_Background))}.fd-button--positive.fd-button--toggled{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Accept_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Accept_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Accept_Selected_Background)}.fd-button--positive.fd-button--toggled.is-hover,.fd-button--positive.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Accept_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Accept_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Accept_Selected_Hover_Background)}.fd-button--positive.fd-button--toggled.is-active,.fd-button--positive.fd-button--toggled.is-selected,.fd-button--positive.fd-button--toggled:active,.fd-button--positive.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Accept_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Accept_Selected_Hover_Background))}.fd-button--positive.fd-button--toggled.is-active .fd-button__icon,.fd-button--positive.fd-button--toggled.is-selected .fd-button__icon,.fd-button--positive.fd-button--toggled:active .fd-button__icon,.fd-button--positive.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Accept_Active_TextColor);text-shadow:none}.fd-button--positive.fd-button--toggled.is-disabled,.fd-button--positive.fd-button--toggled:disabled,.fd-button--positive.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--transparent{--fdButtonColor:var(--sapButton_Lite_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Lite_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Lite_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--transparent.is-selected,.fd-button--transparent[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button--transparent.is-hover,.fd-button--transparent:hover{--fdButtonColor:var(--sapButton_Lite_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Lite_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Lite_Hover_Background))}.fd-button--transparent.is-active,.fd-button--transparent:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Lite_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Lite_Active_Background));--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button--transparent.is-active .fd-button__icon,.fd-button--transparent:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--transparent.is-disabled,.fd-button--transparent:disabled,.fd-button--transparent[aria-disabled=true]{--fdButtonColor:var(--sapButton_Lite_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Lite_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Lite_Background))}.fd-button--transparent.is-disabled.is-selected,.fd-button--transparent.is-disabled[aria-selected=true],.fd-button--transparent:disabled.is-selected,.fd-button--transparent:disabled[aria-selected=true],.fd-button--transparent[aria-disabled=true].is-selected,.fd-button--transparent[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button--transparent.fd-button--toggled{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--transparent.fd-button--toggled.is-hover,.fd-button--transparent.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Hover_Background)}.fd-button--transparent.fd-button--toggled.is-active,.fd-button--transparent.fd-button--toggled.is-selected,.fd-button--transparent.fd-button--toggled:active,.fd-button--transparent.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background))}.fd-button--transparent.fd-button--toggled.is-active .fd-button__icon,.fd-button--transparent.fd-button--toggled.is-selected .fd-button__icon,.fd-button--transparent.fd-button--toggled:active .fd-button__icon,.fd-button--transparent.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--transparent.fd-button--toggled.is-disabled,.fd-button--transparent.fd-button--toggled:disabled,.fd-button--transparent.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--ghost{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--fdButton_Ghost_Background));background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--ghost.is-selected,.fd-button--ghost[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonSelectedPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonSelectedPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button--ghost.is-hover,.fd-button--ghost:hover{--fdButtonColor:var(--sapButton_Hover_TextColor);--fdButtonBorderColor:var(--fdButtonHoverPrioritizedBorderColor,var(--sapButton_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonHoverPrioritizedBackgroundColor,var(--sapButton_Hover_Background))}.fd-button--ghost.is-active,.fd-button--ghost:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--fdButtonActivePrioritizedBorderColor,var(--sapButton_Active_BorderColor));--fdButtonBackgroundColor:var(--fdButtonActivePrioritizedBackgroundColor,var(--sapButton_Active_Background));--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button--ghost.is-active .fd-button__icon,.fd-button--ghost:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--ghost.is-disabled,.fd-button--ghost:disabled,.fd-button--ghost[aria-disabled=true]{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--fdButton_Ghost_Background))}.fd-button--ghost.is-disabled.is-selected,.fd-button--ghost.is-disabled[aria-selected=true],.fd-button--ghost:disabled.is-selected,.fd-button--ghost:disabled[aria-selected=true],.fd-button--ghost[aria-disabled=true].is-selected,.fd-button--ghost[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Background))}.fd-button--ghost.fd-button--toggled{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledPrioritizedBorderColor,var(--sapButton_Selected_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledPrioritizedBackgroundColor,var(--sapButton_Selected_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--ghost.fd-button--toggled.is-hover,.fd-button--ghost.fd-button--toggled:hover{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--fdButtonToggledActivePrioritizedBorderColor,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonToggledActivePrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background));--fdButtonPrioritizedBackgroundColor:var(--sapButton_Selected_Hover_Background)}.fd-button--ghost.fd-button--toggled.is-active,.fd-button--ghost.fd-button--toggled.is-selected,.fd-button--ghost.fd-button--toggled:active,.fd-button--ghost.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(true,var(--sapButton_Selected_Hover_BorderColor));--fdButtonBackgroundColor:var(--fdButtonPrioritizedBackgroundColor,var(--sapButton_Selected_Hover_Background))}.fd-button--ghost.fd-button--toggled.is-active .fd-button__icon,.fd-button--ghost.fd-button--toggled.is-selected .fd-button__icon,.fd-button--ghost.fd-button--toggled:active .fd-button__icon,.fd-button--ghost.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--ghost.fd-button--toggled.is-disabled,.fd-button--ghost.fd-button--toggled:disabled,.fd-button--ghost.fd-button--toggled[aria-disabled=true]{-webkit-box-shadow:none;box-shadow:none}.fd-button--tool-header{--fdButton_ToolHeader_Icon_Size:1rem;--fdButton_ToolHeader_Padding:.75rem;--fdButton_ToolHeader_Size:var(--fdButton_ToolHeader_Button_Size);--fdButton_ToolHeader_Background:var(--sapButton_Lite_Background);--fdButton_ToolHeader_Color:var(--fdButton_ToolHeader_Color_Normal);--fdButton_ToolHeader_Border_Color:var(--fdButton_ToolHeader_Border_Color_Normal);--fdButton_ToolHeader_Border_Radius:var(--fdButton_ToolHeader_Button_Border_Radius);background:var(--fdButton_ToolHeader_Background);border:var(--sapButton_BorderWidth) solid var(--fdButton_ToolHeader_Border_Color);border-radius:var(--fdButton_ToolHeader_Border_Radius);color:var(--fdButton_ToolHeader_Color);height:var(--fdButton_ToolHeader_Size);max-height:var(--fdButton_ToolHeader_Size);max-width:var(--fdButton_ToolHeader_Size);min-height:var(--fdButton_ToolHeader_Size);min-width:var(--fdButton_ToolHeader_Size);padding-block:var(--fdButton_ToolHeader_Padding);padding-inline:var(--fdButton_ToolHeader_Padding);width:var(--fdButton_ToolHeader_Size)}.fd-button--tool-header [class*=sap-icon],.fd-button--tool-header[class*=sap-icon]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;font-size:var(--fdButton_ToolHeader_Icon_Size);height:var(--fdButton_ToolHeader_Icon_Size);width:var(--fdButton_ToolHeader_Icon_Size)}.fd-button--tool-header.is-hover,.fd-button--tool-header:hover{--fdButton_ToolHeader_Background:var(--fdButton_ToolHeader_Background_Hover);--fdButton_ToolHeader_Border_Color:var(--fdButton_ToolHeader_Border_Color_Hover);--fdButton_Hover_Shadow:none}.fd-button--tool-header.is-active,.fd-button--tool-header:active{--fdButton_ToolHeader_Background:var(--fdButton_ToolHeader_Background_Active);--fdButton_ToolHeader_Border_Color:var(--fdButton_ToolHeader_Border_Color_Active);--fdButton_ToolHeader_Color:var(--fdButton_ToolHeader_Color_Active);outline:none}.fd-button--tool-header.is-active.is-focus,.fd-button--tool-header.is-active:focus,.fd-button--tool-header:active.is-focus,.fd-button--tool-header:active:focus{z-index:5;--fdButton_ToolHeader_Border_Radius:.375rem;--fdButton_ToolHeader_Background:var(--fdButton_ToolHeader_Background_Active);--fdButton_ToolHeader_Border_Color:var(--fdButton_ToolHeader_Border_Color_Active);outline:none}.fd-button--tool-header.is-active.is-focus:after,.fd-button--tool-header.is-active:focus:after,.fd-button--tool-header:active.is-focus:after,.fd-button--tool-header:active:focus:after{border:none}.fd-button--tool-header.is-focus,.fd-button--tool-header:focus{z-index:5;--fdButton_ToolHeader_Background:var(--fdButton_ToolHeader_Background_Active);--fdButton_ToolHeader_Border_Color:var(--fdButton_ToolHeader_Border_Color_Focus);--fdButton_ToolHeader_Border_Radius:var(--fdButton_ToolHeader_Border_Radius_Focus);outline:var(--sapContent_FocusStyle) var(--sapContent_FocusWidth) var(--fdButton_ToolHeader_Outline_Color)}.fd-button--tool-header.is-focus:after,.fd-button--tool-header:focus:after{border:none}.fd-button--tool-header.is-disabled,.fd-button--tool-header:disabled,.fd-button--tool-header[aria-disabled=true]{--fdButton_ToolHeader_Background:var(--sapButton_Lite_Background);--fdButton_ToolHeader_Border_Color:var(--fdButton_ToolHeader_Border_Color_Disabled);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-button--tool-header[class*=-compact],[class*=-compact] .fd-button--tool-header:not([class*=-cozy]){--fdButton_ToolHeader_Padding:.5rem;--fdButton_ToolHeader_Size:var(--fdButton_ToolHeader_Button_Size_Compact)}.fd-button--tool-header .fd-button__badge{background:var(--sapContent_BadgeBackground);border:0;border:.0625rem solid var(--fdButton_ToolHeader_Badge_Border_Color);border-radius:100%;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_BadgeBackground);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.625rem;line-height:normal;margin-block:0;margin-inline:0;max-height:.625rem;max-width:.625rem;min-height:.625rem;min-width:.625rem;overflow:hidden;padding-block:0;padding-inline:0;position:absolute;right:-.125rem;top:-.125rem;width:.625rem}.fd-button--tool-header .fd-button__badge:after,.fd-button--tool-header .fd-button__badge:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-button--tool-header .fd-button__badge[dir=rtl],[dir=rtl] .fd-button--tool-header .fd-button__badge{left:-.125rem;right:auto}.fd-button--nested,.fd-button--nested-square{--fdButton_Nested_Size:1.5rem;--fdButton_Nested_Icon_Size:.75rem;--fdButton_Nested_Click_Area:2rem;--fdButton_Nested_Color:var(--sapContent_IconColor);--fdButton_Nested_Background:var(--sapButton_Lite_Background);--fdButton_Nested_Border_Color:var(--fdButton_ToolHeader_Border_Color_Normal);--fdButton_Nested_Border_Radius:1rem;background:var(--fdButton_Nested_Background);border:var(--sapButton_BorderWidth) solid var(--fdButton_Nested_Border_Color);border-radius:var(--fdButton_Nested_Border_Radius);color:var(--fdButton_Nested_Color);height:var(--fdButton_Nested_Size);max-height:var(--fdButton_Nested_Size);max-width:var(--fdButton_Nested_Size);min-height:var(--fdButton_Nested_Size);min-width:var(--fdButton_Nested_Size);padding-block:0;padding-inline:0;width:var(--fdButton_Nested_Size)}.fd-button--nested [class*=sap-icon],.fd-button--nested-square [class*=sap-icon],.fd-button--nested-square[class*=sap-icon],.fd-button--nested[class*=sap-icon]{color:inherit;font-size:var(--fdButton_Nested_Icon_Size)}.fd-button--nested-square:before,.fd-button--nested:before{height:var(--fdButton_Nested_Click_Area);inset:auto;max-height:var(--fdButton_Nested_Click_Area);max-width:var(--fdButton_Nested_Click_Area);min-height:var(--fdButton_Nested_Click_Area);min-width:var(--fdButton_Nested_Click_Area);width:var(--fdButton_Nested_Click_Area)}.fd-button--nested-square.is-hover,.fd-button--nested-square:hover,.fd-button--nested.is-hover,.fd-button--nested:hover{--fdButton_Nested_Background:var(--sapButton_Lite_Hover_Background);--fdButton_Nested_Border_Color:var(--fdButton_Nested_Border_Color_Hover);--fdButton_Hover_Shadow:none}.fd-button--nested-square.is-active,.fd-button--nested-square:active,.fd-button--nested.is-active,.fd-button--nested:active{--fdButton_Nested_Background:var(--fdButton_Nested_Background_Active);--fdButton_Nested_Border_Color:var(--fdButton_Nested_Border_Color_Active);--fdButton_Nested_Color:var(--fdButton_Nested_Color_Active);outline:none}.fd-button--nested-square.is-active.is-focus,.fd-button--nested-square.is-active:focus,.fd-button--nested-square:active.is-focus,.fd-button--nested-square:active:focus,.fd-button--nested.is-active.is-focus,.fd-button--nested.is-active:focus,.fd-button--nested:active.is-focus,.fd-button--nested:active:focus{z-index:5;--fdButton_Nested_Border_Radius:.75rem;--fdButton_Nested_Background:var(--fdButton_Nested_Background_Active);--fdButton_Nested_Border_Color:var(--fdButton_Nested_Border_Color_Active);outline:none}.fd-button--nested-square.is-active.is-focus:after,.fd-button--nested-square.is-active:focus:after,.fd-button--nested-square:active.is-focus:after,.fd-button--nested-square:active:focus:after,.fd-button--nested.is-active.is-focus:after,.fd-button--nested.is-active:focus:after,.fd-button--nested:active.is-focus:after,.fd-button--nested:active:focus:after{border:none}.fd-button--nested-square.is-focus,.fd-button--nested-square:focus,.fd-button--nested.is-focus,.fd-button--nested:focus{z-index:5;--fdButton_Nested_Background:var(--fdButton_Nested_Background_Focus);--fdButton_Nested_Border_Color:var(--fdButton_Nested_Border_Color_Focus);--fdButton_Nested_Border_Radius:var(--fdButton_Nested_Border_Radius_Focus);outline:var(--sapContent_FocusStyle) var(--sapContent_FocusWidth) var(--sapContent_FocusColor)}.fd-button--nested-square.is-focus:after,.fd-button--nested-square:focus:after,.fd-button--nested.is-focus:after,.fd-button--nested:focus:after{border:none}.fd-button--nested-square.is-disabled,.fd-button--nested-square:disabled,.fd-button--nested-square[aria-disabled=true],.fd-button--nested.is-disabled,.fd-button--nested:disabled,.fd-button--nested[aria-disabled=true]{--fdButton_Nested_Background:var(--sapButton_Lite_Background);--fdButton_Nested_Border_Color:var(--fdButton_Nested_Border_Color_Disabled);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-button--nested-square[class*=-compact],.fd-button--nested[class*=-compact],[class*=-compact] .fd-button--nested-square:not([class*=-cozy]),[class*=-compact] .fd-button--nested:not([class*=-cozy]){--fdButton_Nested_Size:1.375rem;--fdButton_Nested_Click_Area:1.625rem}.fd-button--nested-square,.fd-button--nested-square.is-active,.fd-button--nested-square:active{--fdButton_Nested_Border_Radius:.1875rem}.fd-button--nested-square.is-active.is-focus,.fd-button--nested-square.is-active:focus,.fd-button--nested-square.is-focus,.fd-button--nested-square:active.is-focus,.fd-button--nested-square:active:focus,.fd-button--nested-square:focus{z-index:5;--fdButton_Nested_Border_Radius:.1875rem}.fd-button.fd-button--emphasized{font-weight:400}\n/*! Bundled license information:\n\nfundamental-styles/dist/button.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
460
441
|
}
|
|
461
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
462
443
|
type: Component,
|
|
463
444
|
args: [{ selector: 'button[fd-button], a[fd-button], span[fd-button]', exportAs: 'fd-button', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
464
445
|
'[attr.type]': 'type()',
|
|
@@ -483,11 +464,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
483
464
|
* Use `ButtonComponent` import instead
|
|
484
465
|
*/
|
|
485
466
|
class ButtonModule {
|
|
486
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
487
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
488
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
467
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
468
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: ButtonModule, imports: [ButtonComponent], exports: [ButtonComponent] }); }
|
|
469
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonModule, imports: [ButtonComponent] }); }
|
|
489
470
|
}
|
|
490
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
471
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ButtonModule, decorators: [{
|
|
491
472
|
type: NgModule,
|
|
492
473
|
args: [{
|
|
493
474
|
imports: [ButtonComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-button.mjs","sources":["../../../../libs/core/button/base-button.ts","../../../../libs/core/button/tokens.ts","../../../../libs/core/button/button-badge.directive.ts","../../../../libs/core/button/button.component.ts","../../../../libs/core/button/button.component.html","../../../../libs/core/button/button.module.ts","../../../../libs/core/button/fundamental-ngx-core-button.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, booleanAttribute, inject, input, linkedSignal } from '@angular/core';\n\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { ButtonModel } from './button.model';\n\nexport type GlyphPosition = 'before' | 'after';\n\nexport type ButtonType =\n | ''\n | 'standard'\n | 'positive'\n | 'negative'\n | 'attention'\n | 'half'\n | 'ghost'\n | 'transparent'\n | 'emphasized'\n | 'menu';\n\nexport const defaultButtonType = 'standard' as ButtonType;\n\n@Directive({\n host: {\n '[class.fd-button--toggled]': 'toggledState()',\n '[attr.aria-pressed]': 'toggledState() || null',\n '[attr.aria-selected]': 'selectedState() || null'\n }\n})\nexport class BaseButton implements HasElementRef, ButtonModel {\n /**\n * Whether the button is in a toggled state.\n * Used for toggle buttons that maintain an on/off state.\n * When true, adds the toggled class and sets aria-pressed=\"true\".\n */\n readonly toggled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button is selected.\n * Used in button groups or toolbars to indicate the currently selected option.\n * When true, sets aria-selected=\"true\".\n */\n readonly selected = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Native type attribute of the button element.\n * Defaults to 'button' to prevent form submission.\n * Set to 'submit' for form submission buttons or 'reset' for form reset buttons.\n */\n readonly type = input<string | null | undefined>('button');\n\n /**\n * Position of the icon relative to the button text.\n * - 'before': Icon appears before the text (default)\n * - 'after': Icon appears after the text\n */\n readonly glyphPosition = input<GlyphPosition>('before');\n\n /**\n * The icon to display in the button.\n * See the icon documentation for the list of available icons.\n * Example values: 'add', 'edit', 'delete', 'accept', 'decline'\n */\n readonly glyph = input<string | null | undefined>();\n\n /**\n * Font family for the icon.\n * Defaults to the SAP icon font.\n * Override when using custom icon fonts.\n */\n readonly glyphFont = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /**\n * Visual style of the button.\n * Available types:\n * - 'standard': Default button style (blue)\n * - 'emphasized': High emphasis action (darker blue)\n * - 'positive': Successful/positive action (green)\n * - 'negative': Destructive/negative action (red)\n * - 'attention': Warning action (orange)\n * - 'transparent': No background, minimal style\n * - 'ghost': Subtle button with border on hover\n * - 'half': Split button style\n * - 'menu': Menu trigger button\n */\n readonly fdType = input<ButtonType>(defaultButtonType);\n\n /**\n * Text label displayed inside the button.\n * Can be used alone or combined with an icon.\n */\n readonly label = input<string | undefined>();\n\n /**\n * Whether to apply menu mode styling to the button.\n * When true, adds a dropdown arrow icon and menu-specific styling.\n */\n readonly fdMenu = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button is disabled.\n * When true, the button cannot be interacted with and displays a disabled state.\n * This sets the native 'disabled' attribute on button elements.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * ARIA disabled attribute for accessibility.\n * Use this when you want to indicate a disabled state to screen readers\n * without preventing interaction (e.g., for showing tooltips on disabled buttons).\n * Unlike the 'disabled' attribute, this does not prevent click events.\n */\n readonly ariaDisabled = input<boolean, BooleanInput>(false, {\n alias: 'aria-disabled',\n transform: booleanAttribute\n });\n\n /**\n * ARIA label for the button.\n * Provides an accessible name for screen readers.\n * If not provided, special button types will auto-generate from label or glyph.\n */\n readonly ariaLabel = input<string | null | undefined>();\n\n /**\n * ARIA description for the button.\n * Provides additional context for screen readers beyond the label.\n * Special button types (emphasized, positive, negative, attention) will\n * auto-generate a description from their type if not provided.\n */\n readonly ariaDescription = input<string | null | undefined>();\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * Internal toggled state that can be mutated programmatically.\n * Syncs with the toggled input but allows internal modification.\n * @hidden\n */\n protected readonly toggledState = linkedSignal(() => this.toggled());\n\n /**\n * Internal selected state that can be mutated programmatically.\n * Syncs with the selected input but allows internal modification.\n * @hidden\n */\n protected readonly selectedState = linkedSignal(() => this.selected());\n\n /**\n * Internal button type state that can be mutated programmatically.\n * Syncs with the fdType input but allows internal modification.\n * @hidden\n */\n protected readonly fdTypeState = linkedSignal(() => this.fdType());\n\n /**\n * Internal disabled state that can be mutated programmatically.\n * Syncs with the disabled input but allows internal modification.\n * @hidden\n */\n protected readonly _disabledState = linkedSignal(() => this.disabled());\n\n /**\n * No-op for ButtonModel interface compatibility.\n * Signals automatically notify Angular when they change.\n * @deprecated Signals eliminate the need for manual change detection.\n */\n markForCheck(): void {\n // No-op: Signals automatically trigger change detection\n }\n\n /**\n * Programmatically set the disabled state.\n * This allows parent components or directives to update the button's disabled state.\n *\n * @param value - Whether the button should be disabled\n *\n * @example\n * ```typescript\n * // In a form component that needs to disable all buttons\n * this.submitButton.setDisabled(this.form.invalid);\n * ```\n */\n setDisabled(value: boolean): void {\n this._disabledState.set(value);\n }\n\n /**\n * Get the current disabled state.\n * Returns the internal disabled state which may have been modified programmatically.\n *\n * @returns True if the button is currently disabled\n *\n * @example\n * ```typescript\n * if (!this.button.isDisabled()) {\n * this.button.setDisabled(true);\n * }\n * ```\n */\n isDisabled(): boolean {\n return this._disabledState();\n }\n\n /**\n * Programmatically set the button type.\n * This allows directives to override the button's visual style.\n *\n * @param value - The button type to apply\n *\n * @example\n * ```typescript\n * // A directive that changes button style based on validation state\n * if (this.validationFailed) {\n * this.button.setFdType('negative');\n * }\n * ```\n */\n setFdType(value: ButtonType): void {\n this.fdTypeState.set(value);\n }\n\n /**\n * Get the current button type.\n * Returns the internal button type which may have been modified programmatically.\n *\n * @returns The current button type\n */\n getFdType(): ButtonType {\n return this.fdTypeState();\n }\n\n /**\n * Programmatically set the selected state.\n * This allows parent components to update the button's selected state.\n * Used in button groups or toolbars to indicate active selection.\n *\n * @param value - Whether the button should be selected\n *\n * @example\n * ```typescript\n * // In a button group component managing selection\n * this.buttons.forEach(btn => btn.setSelected(false));\n * this.activeButton.setSelected(true);\n * ```\n */\n setSelected(value: boolean): void {\n this.selectedState.set(value);\n }\n\n /**\n * Get the current selected state.\n * Returns the internal selected state which may have been modified programmatically.\n *\n * @returns True if the button is currently selected\n */\n isSelected(): boolean {\n return this.selectedState();\n }\n\n /**\n * Programmatically set the toggled state.\n * This allows parent components to update the button's toggled state.\n * Used for toggle buttons that maintain an on/off state.\n *\n * @param value - Whether the button should be toggled on\n *\n * @example\n * ```typescript\n * // In a toolbar with toggle buttons\n * handleBoldClick(): void {\n * const isActive = !this.boldButton.isToggled();\n * this.boldButton.setToggled(isActive);\n * }\n * ```\n */\n setToggled(value: boolean): void {\n this.toggledState.set(value);\n }\n\n /**\n * Get the current toggled state.\n * Returns the internal toggled state which may have been modified programmatically.\n *\n * @returns True if the button is currently toggled\n */\n isToggled(): boolean {\n return this.toggledState();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { BaseButton } from './base-button';\n\nexport const FD_BUTTON_COMPONENT = new InjectionToken<BaseButton>('FdButtonComponent');\n","import { Directive, ElementRef, effect, inject, input, isDevMode } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BaseButton, ButtonType } from './base-button';\nimport { FD_BUTTON_COMPONENT } from './tokens';\n\nexport const badgeEnabledButtonTypes: ButtonType[] = ['emphasized', 'standard', 'ghost', 'transparent'];\n\n/**\n * Directive to display a badge on a button.\n *\n * Badges are small status indicators that can be added to buttons to show\n * notifications, counts, or other supplementary information.\n *\n * Usage:\n * ```html\n * <button fd-button>\n * Button Text\n * <fd-button-badge [content]=\"5\" />\n * </button>\n * ```\n *\n * @note Badge content should not exceed 4 characters for optimal display.\n * @note Badges are only supported on emphasized, standard, ghost, and transparent button types.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-button-badge',\n host: {\n class: 'fd-button__badge'\n }\n})\nexport class ButtonBadgeDirective implements HasElementRef {\n /**\n * Content to display inside the badge.\n * Should not exceed 4 characters for optimal display.\n * Supports both string and numeric values.\n */\n readonly content = input<string | number>();\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden */\n protected readonly buttonComponent = inject<BaseButton>(FD_BUTTON_COMPONENT, { host: true });\n\n /** @hidden */\n constructor() {\n // Single-purpose effect: Sync badge content to DOM\n effect(() => {\n this.elementRef.nativeElement.textContent = String(this.content() ?? '');\n });\n\n // Validation effect only in development mode (zero overhead in production)\n if (isDevMode()) {\n effect(() => {\n this._validateBadge();\n });\n }\n }\n\n /**\n * Validates badge configuration in development mode.\n * Checks content length and button type compatibility.\n * @hidden\n */\n private _validateBadge(): void {\n const contentValue = this.content();\n if (contentValue && contentValue.toString().length > 4) {\n console.warn('Badge content should not be longer than 4 characters');\n }\n\n if (!badgeEnabledButtonTypes.includes(this.buttonComponent.getFdType())) {\n console.warn(\n `Currently the ${JSON.stringify(\n badgeEnabledButtonTypes\n )} type of buttons are required for Badge enablement`\n );\n }\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { BaseButton } from './base-button';\n\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FD_BUTTON_COMPONENT } from './tokens';\n\nlet buttonId = 0;\n\nconst SPECIAL_BUTTON_TYPES = new Set(['emphasized', 'positive', 'negative', 'attention']);\n\n/**\n * Button directive, used to enhance standard HTML buttons.\n *\n * ``` selector: button[fd-button], a[fd-button] ```\n *\n * ```html\n * <button fd-button label=\"Button Text\"></button>\n * <a fd-button label=\"Button Text\"></a>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[fd-button], a[fd-button], span[fd-button]',\n exportAs: 'fd-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.type]': 'type()',\n '[attr.disabled]': '_disabledState() || null',\n '[attr.aria-disabled]': 'ariaDisabled() || null',\n '[attr.aria-label]': 'buttonArialabel()',\n '[attr.aria-description]': 'buttonAriaDescription()',\n '[attr.id]': 'id()',\n '[class]': 'cssClass()',\n '(click)': 'clicked($event)'\n },\n providers: [\n contentDensityObserverProviders(),\n {\n provide: FD_BUTTON_COMPONENT,\n useExisting: ButtonComponent\n }\n ],\n imports: [IconComponent]\n})\nexport class ButtonComponent extends BaseButton implements HasElementRef {\n /** Button ID - default value is provided if not set */\n readonly id = input(`fd-button-${++buttonId}`);\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n protected readonly contentDensityObserver = inject(ContentDensityObserver);\n\n /**\n * Calculate aria-label attribute\n * @hidden\n */\n protected readonly buttonArialabel = computed(() => {\n if (this.ariaLabel()) {\n return this.ariaLabel(); // return the input aria-label\n }\n\n const nativeLabel = this._nativeAriaLabel();\n\n if (nativeLabel) {\n return nativeLabel; // return the native attribute aria-label\n }\n\n if (SPECIAL_BUTTON_TYPES.has(this.fdTypeState())) {\n return this.label() ?? this._glyphLabel() ?? null;\n }\n\n return null;\n });\n\n /**\n * Calculate aria-description attribute\n * @hidden\n */\n protected readonly buttonAriaDescription = computed(() => {\n if (this.ariaDescription()) {\n return this.ariaDescription();\n }\n\n if (SPECIAL_BUTTON_TYPES.has(this.fdTypeState())) {\n return this.fdTypeState();\n }\n\n return null;\n });\n\n /**\n * Computed CSS classes for the button.\n * Built as a string to avoid array allocation overhead.\n * @hidden\n */\n protected readonly cssClass = computed(() => {\n let classes = 'fd-button';\n\n const type = this.fdTypeState();\n if (type) {\n classes += ` fd-button--${type}`;\n }\n\n if (this.fdMenu()) {\n classes += ' fd-button--menu';\n }\n\n if (this._disabledState() || this.ariaDisabled()) {\n classes += ' is-disabled';\n }\n\n if (this.toggledState()) {\n classes += ' fd-button--toggled';\n }\n\n return classes;\n });\n\n /**\n * Memoized glyph label for aria-label fallback.\n * Transforms glyph name (e.g., \"slim-arrow-down\") to readable text (e.g., \"slim arrow down\").\n * @hidden\n */\n private readonly _glyphLabel = computed(() => {\n const glyph = this.glyph();\n return glyph ? glyph.replace(/-/g, ' ') : null;\n });\n\n /**\n * Native aria-label attribute read from the DOM element.\n * Captured once after render for use in aria-label computation.\n * @hidden\n */\n private readonly _nativeAriaLabel = signal<string | null>(null);\n\n /** @hidden */\n constructor() {\n super();\n\n // Read native aria-label attribute once after render\n afterNextRender(() => {\n const nativeLabel = this.elementRef.nativeElement.getAttribute('aria-label');\n if (nativeLabel) {\n this._nativeAriaLabel.set(nativeLabel);\n }\n });\n }\n\n /** Forces the focus outline around the button, which is not default behavior in Safari. */\n protected clicked(event: Event): void {\n const target = event?.target as HTMLElement;\n // Target can be empty during unit tests execution.\n if (target && document.activeElement !== target) {\n target.focus();\n }\n }\n}\n","@if (glyph() && glyphPosition() === 'before') {\n <fd-icon [glyph]=\"glyph()\" [font]=\"glyphFont()\"></fd-icon>\n}\n@if (label()) {\n <span class=\"fd-button__text\">\n {{ label() }}\n </span>\n}\n<ng-content></ng-content>\n<ng-content select=\"fd-button-badge\"></ng-content>\n@if (glyph() && glyphPosition() === 'after') {\n <fd-icon [glyph]=\"glyph()\" [font]=\"glyphFont()\"></fd-icon>\n}\n@if (fdMenu()) {\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n}\n","import { NgModule } from '@angular/core';\n\nimport { ButtonComponent } from './button.component';\n\n/**\n * @deprecated\n * Use `ButtonComponent` import instead\n */\n@NgModule({\n imports: [ButtonComponent],\n exports: [ButtonComponent]\n})\nexport class ButtonModule {}\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-core-button.mjs","sources":["../../../../libs/core/button/base-button.ts","../../../../libs/core/button/tokens.ts","../../../../libs/core/button/button-badge.directive.ts","../../../../libs/core/button/button.component.ts","../../../../libs/core/button/button.component.html","../../../../libs/core/button/button.module.ts","../../../../libs/core/button/fundamental-ngx-core-button.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, booleanAttribute, inject, input, linkedSignal } from '@angular/core';\n\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { ButtonModel } from './button.model';\n\nexport type GlyphPosition = 'before' | 'after';\n\nexport type ButtonType =\n | ''\n | 'standard'\n | 'positive'\n | 'negative'\n | 'attention'\n | 'half'\n | 'ghost'\n | 'transparent'\n | 'emphasized'\n | 'menu';\n\nexport const defaultButtonType = 'standard' as ButtonType;\n\n@Directive({\n host: {\n '[class.fd-button--toggled]': 'toggledState()',\n '[attr.aria-pressed]': 'toggledState() || null',\n '[attr.aria-selected]': 'selectedState() || null'\n }\n})\nexport class BaseButton implements HasElementRef, ButtonModel {\n /**\n * Whether the button is in a toggled state.\n * Used for toggle buttons that maintain an on/off state.\n * When true, adds the toggled class and sets aria-pressed=\"true\".\n */\n readonly toggled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button is selected.\n * Used in button groups or toolbars to indicate the currently selected option.\n * When true, sets aria-selected=\"true\".\n */\n readonly selected = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Native type attribute of the button element.\n * Defaults to 'button' to prevent form submission.\n * Set to 'submit' for form submission buttons or 'reset' for form reset buttons.\n */\n readonly type = input<string | null | undefined>('button');\n\n /**\n * Position of the icon relative to the button text.\n * - 'before': Icon appears before the text (default)\n * - 'after': Icon appears after the text\n */\n readonly glyphPosition = input<GlyphPosition>('before');\n\n /**\n * The icon to display in the button.\n * See the icon documentation for the list of available icons.\n * Example values: 'add', 'edit', 'delete', 'accept', 'decline'\n */\n readonly glyph = input<string | null | undefined>();\n\n /**\n * Font family for the icon.\n * Defaults to the SAP icon font.\n * Override when using custom icon fonts.\n */\n readonly glyphFont = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /**\n * Visual style of the button.\n * Available types:\n * - 'standard': Default button style (blue)\n * - 'emphasized': High emphasis action (darker blue)\n * - 'positive': Successful/positive action (green)\n * - 'negative': Destructive/negative action (red)\n * - 'attention': Warning action (orange)\n * - 'transparent': No background, minimal style\n * - 'ghost': Subtle button with border on hover\n * - 'half': Split button style\n * - 'menu': Menu trigger button\n */\n readonly fdType = input<ButtonType>(defaultButtonType);\n\n /**\n * Text label displayed inside the button.\n * Can be used alone or combined with an icon.\n */\n readonly label = input<string | undefined>();\n\n /**\n * Whether to apply menu mode styling to the button.\n * When true, adds a dropdown arrow icon and menu-specific styling.\n */\n readonly fdMenu = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button is disabled.\n * When true, the button cannot be interacted with and displays a disabled state.\n * This sets the native 'disabled' attribute on button elements.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * ARIA disabled attribute for accessibility.\n * Use this when you want to indicate a disabled state to screen readers\n * without preventing interaction (e.g., for showing tooltips on disabled buttons).\n * Unlike the 'disabled' attribute, this does not prevent click events.\n */\n readonly ariaDisabled = input<boolean, BooleanInput>(false, {\n alias: 'aria-disabled',\n transform: booleanAttribute\n });\n\n /**\n * ARIA label for the button.\n * Provides an accessible name for screen readers.\n * If not provided, special button types will auto-generate from label or glyph.\n */\n readonly ariaLabel = input<string | null | undefined>();\n\n /**\n * ARIA description for the button.\n * Provides additional context for screen readers beyond the label.\n * Special button types (emphasized, positive, negative, attention) will\n * auto-generate a description from their type if not provided.\n */\n readonly ariaDescription = input<string | null | undefined>();\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * Internal toggled state that can be mutated programmatically.\n * Syncs with the toggled input but allows internal modification.\n * @hidden\n */\n protected readonly toggledState = linkedSignal(() => this.toggled());\n\n /**\n * Internal selected state that can be mutated programmatically.\n * Syncs with the selected input but allows internal modification.\n * @hidden\n */\n protected readonly selectedState = linkedSignal(() => this.selected());\n\n /**\n * Internal button type state that can be mutated programmatically.\n * Syncs with the fdType input but allows internal modification.\n * @hidden\n */\n protected readonly fdTypeState = linkedSignal(() => this.fdType());\n\n /**\n * Internal disabled state that can be mutated programmatically.\n * Syncs with the disabled input but allows internal modification.\n * @hidden\n */\n protected readonly _disabledState = linkedSignal(() => this.disabled());\n\n /**\n * No-op for ButtonModel interface compatibility.\n * Signals automatically notify Angular when they change.\n * @deprecated Signals eliminate the need for manual change detection.\n */\n markForCheck(): void {\n // No-op: Signals automatically trigger change detection\n }\n\n /**\n * Programmatically set the disabled state.\n * This allows parent components or directives to update the button's disabled state.\n *\n * @param value - Whether the button should be disabled\n *\n * @example\n * ```typescript\n * // In a form component that needs to disable all buttons\n * this.submitButton.setDisabled(this.form.invalid);\n * ```\n */\n setDisabled(value: boolean): void {\n this._disabledState.set(value);\n }\n\n /**\n * Get the current disabled state.\n * Returns the internal disabled state which may have been modified programmatically.\n *\n * @returns True if the button is currently disabled\n *\n * @example\n * ```typescript\n * if (!this.button.isDisabled()) {\n * this.button.setDisabled(true);\n * }\n * ```\n */\n isDisabled(): boolean {\n return this._disabledState();\n }\n\n /**\n * Programmatically set the button type.\n * This allows directives to override the button's visual style.\n *\n * @param value - The button type to apply\n *\n * @example\n * ```typescript\n * // A directive that changes button style based on validation state\n * if (this.validationFailed) {\n * this.button.setFdType('negative');\n * }\n * ```\n */\n setFdType(value: ButtonType): void {\n this.fdTypeState.set(value);\n }\n\n /**\n * Get the current button type.\n * Returns the internal button type which may have been modified programmatically.\n *\n * @returns The current button type\n */\n getFdType(): ButtonType {\n return this.fdTypeState();\n }\n\n /**\n * Programmatically set the selected state.\n * This allows parent components to update the button's selected state.\n * Used in button groups or toolbars to indicate active selection.\n *\n * @param value - Whether the button should be selected\n *\n * @example\n * ```typescript\n * // In a button group component managing selection\n * this.buttons.forEach(btn => btn.setSelected(false));\n * this.activeButton.setSelected(true);\n * ```\n */\n setSelected(value: boolean): void {\n this.selectedState.set(value);\n }\n\n /**\n * Get the current selected state.\n * Returns the internal selected state which may have been modified programmatically.\n *\n * @returns True if the button is currently selected\n */\n isSelected(): boolean {\n return this.selectedState();\n }\n\n /**\n * Programmatically set the toggled state.\n * This allows parent components to update the button's toggled state.\n * Used for toggle buttons that maintain an on/off state.\n *\n * @param value - Whether the button should be toggled on\n *\n * @example\n * ```typescript\n * // In a toolbar with toggle buttons\n * handleBoldClick(): void {\n * const isActive = !this.boldButton.isToggled();\n * this.boldButton.setToggled(isActive);\n * }\n * ```\n */\n setToggled(value: boolean): void {\n this.toggledState.set(value);\n }\n\n /**\n * Get the current toggled state.\n * Returns the internal toggled state which may have been modified programmatically.\n *\n * @returns True if the button is currently toggled\n */\n isToggled(): boolean {\n return this.toggledState();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { BaseButton } from './base-button';\n\nexport const FD_BUTTON_COMPONENT = new InjectionToken<BaseButton>('FdButtonComponent');\n","import { Directive, ElementRef, effect, inject, input, isDevMode } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BaseButton, ButtonType } from './base-button';\nimport { FD_BUTTON_COMPONENT } from './tokens';\n\nexport const badgeEnabledButtonTypes: ButtonType[] = ['emphasized', 'standard', 'ghost', 'transparent'];\n\n/**\n * Directive to display a badge on a button.\n *\n * Badges are small status indicators that can be added to buttons to show\n * notifications, counts, or other supplementary information.\n *\n * Usage:\n * ```html\n * <button fd-button>\n * Button Text\n * <fd-button-badge [content]=\"5\" />\n * </button>\n * ```\n *\n * @note Badge content should not exceed 4 characters for optimal display.\n * @note Badges are only supported on emphasized, standard, ghost, and transparent button types.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-button-badge',\n host: {\n class: 'fd-button__badge'\n }\n})\nexport class ButtonBadgeDirective implements HasElementRef {\n /**\n * Content to display inside the badge.\n * Should not exceed 4 characters for optimal display.\n * Supports both string and numeric values.\n */\n readonly content = input<string | number>();\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden */\n protected readonly buttonComponent = inject<BaseButton>(FD_BUTTON_COMPONENT, { host: true });\n\n /** @hidden */\n constructor() {\n // Single-purpose effect: Sync badge content to DOM\n effect(() => {\n this.elementRef.nativeElement.textContent = String(this.content() ?? '');\n });\n\n // Validation effect only in development mode (zero overhead in production)\n if (isDevMode()) {\n effect(() => {\n this._validateBadge();\n });\n }\n }\n\n /**\n * Validates badge configuration in development mode.\n * Checks content length and button type compatibility.\n * @hidden\n */\n private _validateBadge(): void {\n const contentValue = this.content();\n if (contentValue && contentValue.toString().length > 4) {\n console.warn('Badge content should not be longer than 4 characters');\n }\n\n if (!badgeEnabledButtonTypes.includes(this.buttonComponent.getFdType())) {\n console.warn(\n `Currently the ${JSON.stringify(\n badgeEnabledButtonTypes\n )} type of buttons are required for Badge enablement`\n );\n }\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { BaseButton } from './base-button';\n\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FD_BUTTON_COMPONENT } from './tokens';\n\nlet buttonId = 0;\n\nconst SPECIAL_BUTTON_TYPES = new Set(['emphasized', 'positive', 'negative', 'attention']);\n\n/**\n * Button directive, used to enhance standard HTML buttons.\n *\n * ``` selector: button[fd-button], a[fd-button] ```\n *\n * ```html\n * <button fd-button label=\"Button Text\"></button>\n * <a fd-button label=\"Button Text\"></a>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[fd-button], a[fd-button], span[fd-button]',\n exportAs: 'fd-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.type]': 'type()',\n '[attr.disabled]': '_disabledState() || null',\n '[attr.aria-disabled]': 'ariaDisabled() || null',\n '[attr.aria-label]': 'buttonArialabel()',\n '[attr.aria-description]': 'buttonAriaDescription()',\n '[attr.id]': 'id()',\n '[class]': 'cssClass()',\n '(click)': 'clicked($event)'\n },\n providers: [\n contentDensityObserverProviders(),\n {\n provide: FD_BUTTON_COMPONENT,\n useExisting: ButtonComponent\n }\n ],\n imports: [IconComponent]\n})\nexport class ButtonComponent extends BaseButton implements HasElementRef {\n /** Button ID - default value is provided if not set */\n readonly id = input(`fd-button-${++buttonId}`);\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n protected readonly contentDensityObserver = inject(ContentDensityObserver);\n\n /**\n * Calculate aria-label attribute\n * @hidden\n */\n protected readonly buttonArialabel = computed(() => {\n if (this.ariaLabel()) {\n return this.ariaLabel(); // return the input aria-label\n }\n\n const nativeLabel = this._nativeAriaLabel();\n\n if (nativeLabel) {\n return nativeLabel; // return the native attribute aria-label\n }\n\n if (SPECIAL_BUTTON_TYPES.has(this.fdTypeState())) {\n return this.label() ?? this._glyphLabel() ?? null;\n }\n\n return null;\n });\n\n /**\n * Calculate aria-description attribute\n * @hidden\n */\n protected readonly buttonAriaDescription = computed(() => {\n if (this.ariaDescription()) {\n return this.ariaDescription();\n }\n\n if (SPECIAL_BUTTON_TYPES.has(this.fdTypeState())) {\n return this.fdTypeState();\n }\n\n return null;\n });\n\n /**\n * Computed CSS classes for the button.\n * Built as a string to avoid array allocation overhead.\n * @hidden\n */\n protected readonly cssClass = computed(() => {\n let classes = 'fd-button';\n\n const type = this.fdTypeState();\n if (type) {\n classes += ` fd-button--${type}`;\n }\n\n if (this.fdMenu()) {\n classes += ' fd-button--menu';\n }\n\n if (this._disabledState() || this.ariaDisabled()) {\n classes += ' is-disabled';\n }\n\n if (this.toggledState()) {\n classes += ' fd-button--toggled';\n }\n\n return classes;\n });\n\n /**\n * Memoized glyph label for aria-label fallback.\n * Transforms glyph name (e.g., \"slim-arrow-down\") to readable text (e.g., \"slim arrow down\").\n * @hidden\n */\n private readonly _glyphLabel = computed(() => {\n const glyph = this.glyph();\n return glyph ? glyph.replace(/-/g, ' ') : null;\n });\n\n /**\n * Native aria-label attribute read from the DOM element.\n * Captured once after render for use in aria-label computation.\n * @hidden\n */\n private readonly _nativeAriaLabel = signal<string | null>(null);\n\n /** @hidden */\n constructor() {\n super();\n\n // Read native aria-label attribute once after render\n afterNextRender(() => {\n const nativeLabel = this.elementRef.nativeElement.getAttribute('aria-label');\n if (nativeLabel) {\n this._nativeAriaLabel.set(nativeLabel);\n }\n });\n }\n\n /** Forces the focus outline around the button, which is not default behavior in Safari. */\n protected clicked(event: Event): void {\n const target = event?.target as HTMLElement;\n // Target can be empty during unit tests execution.\n if (target && document.activeElement !== target) {\n target.focus();\n }\n }\n}\n","@if (glyph() && glyphPosition() === 'before') {\n <fd-icon [glyph]=\"glyph()\" [font]=\"glyphFont()\"></fd-icon>\n}\n@if (label()) {\n <span class=\"fd-button__text\">\n {{ label() }}\n </span>\n}\n<ng-content></ng-content>\n<ng-content select=\"fd-button-badge\"></ng-content>\n@if (glyph() && glyphPosition() === 'after') {\n <fd-icon [glyph]=\"glyph()\" [font]=\"glyphFont()\"></fd-icon>\n}\n@if (fdMenu()) {\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n}\n","import { NgModule } from '@angular/core';\n\nimport { ButtonComponent } from './button.component';\n\n/**\n * @deprecated\n * Use `ButtonComponent` import instead\n */\n@NgModule({\n imports: [ButtonComponent],\n exports: [ButtonComponent]\n})\nexport class ButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|