@fundamental-ngx/core 0.62.2-rc.8 → 0.62.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 +2 -2
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-calendar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-combobox.mjs +2 -8
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-form.mjs +16 -16
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +22 -6
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-popover.mjs +8 -5
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-settings.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/package.json +4 -4
- package/types/fundamental-ngx-core-grid-list.d.ts +10 -1
- package/types/fundamental-ngx-core-popover.d.ts +1 -1
|
@@ -249,7 +249,7 @@ class SegmentedButtonComponent {
|
|
|
249
249
|
if (!this._buttons || !this._focusableItems) {
|
|
250
250
|
return;
|
|
251
251
|
}
|
|
252
|
-
this._buttons.forEach((button) => button.setDisabled(disable));
|
|
252
|
+
this._buttons.forEach((button) => button.setDisabled(disable || button.disabled()));
|
|
253
253
|
this._focusableItems.forEach((focusableItemDirective) => {
|
|
254
254
|
focusableItemDirective.setTabbable(!disable);
|
|
255
255
|
focusableItemDirective.setFocusable(!disable);
|
|
@@ -288,7 +288,7 @@ class SegmentedButtonComponent {
|
|
|
288
288
|
useExisting: forwardRef(() => SegmentedButtonComponent),
|
|
289
289
|
multi: true
|
|
290
290
|
}
|
|
291
|
-
], queries: [{ propertyName: "_buttons", predicate: FD_BUTTON_COMPONENT }, { propertyName: "_focusableItems", predicate: FocusableItemDirective }], usesOnChanges: true, hostDirectives: [{ directive: i1.FocusableListDirective }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [".fd-segmented-button{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-block:0;padding-inline:0;position:relative;vertical-align:middle;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.fd-segmented-button:after,.fd-segmented-button:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{margin-block:0;margin-inline:0;--fdButtonPrioritizedBorderColor:var(--fdButton_Split_Border_Color);--fdButtonPrioritizedBackgroundColor:var(--fdButton_Split_Background_Color)}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child,:last-child){border-radius:var(--sapButton_Segment_BorderCornerRadius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){-webkit-margin-end:var(--fdButton_Segmented_Border_Offset);margin-inline-end:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button.is-disabled.is-selected,.fd-segmented-button button.is-disabled[aria-selected=true],.fd-segmented-button button:disabled.is-selected,.fd-segmented-button button:disabled[aria-selected=true],.fd-segmented-button button[aria-disabled=true].is-selected,.fd-segmented-button button[aria-disabled=true][aria-selected=true]{--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-segmented-button:has(button.is-disabled):focus-visible,.fd-segmented-button:has(button:disabled):focus-visible,.fd-segmented-button:has(button[aria-disabled=true]):focus-visible{outline:none}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}.fd-segmented-button--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fd-segmented-button--vertical button:first-child{border-radius:var(--fdButton_Vertical_Border_Radius_Left)}.fd-segmented-button--vertical button:last-child{border-radius:var(--fdButton_Vertical_Border_Radius_Right)}.fd-segmented-button--vertical button:not(:last-child){-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-after:var(--fdButton_Segmented_Border_Offset);margin-block-end:var(--fdButton_Segmented_Border_Offset)}.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]{--fdButtonBorderColor: var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor: var(--sapButton_Selected_Background)}.fd-segmented-button:has(.fd-button.is-disabled):focus-visible,.fd-segmented-button:has(.fd-button:disabled):focus-visible,.fd-segmented-button:has(.fd-button[aria-disabled=true]):focus-visible{outline:none}\n/*! Bundled license information:\n\nfundamental-styles/dist/segmented-button.css:\n (*!\n * Fundamental Library Styles v0.41.
|
|
291
|
+
], queries: [{ propertyName: "_buttons", predicate: FD_BUTTON_COMPONENT }, { propertyName: "_focusableItems", predicate: FocusableItemDirective }], usesOnChanges: true, hostDirectives: [{ directive: i1.FocusableListDirective }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [".fd-segmented-button{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-block:0;padding-inline:0;position:relative;vertical-align:middle;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.fd-segmented-button:after,.fd-segmented-button:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{margin-block:0;margin-inline:0;--fdButtonPrioritizedBorderColor:var(--fdButton_Split_Border_Color);--fdButtonPrioritizedBackgroundColor:var(--fdButton_Split_Background_Color)}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child,:last-child){border-radius:var(--sapButton_Segment_BorderCornerRadius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){-webkit-margin-end:var(--fdButton_Segmented_Border_Offset);margin-inline-end:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button.is-disabled.is-selected,.fd-segmented-button button.is-disabled[aria-selected=true],.fd-segmented-button button:disabled.is-selected,.fd-segmented-button button:disabled[aria-selected=true],.fd-segmented-button button[aria-disabled=true].is-selected,.fd-segmented-button button[aria-disabled=true][aria-selected=true]{--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-segmented-button:has(button.is-disabled):focus-visible,.fd-segmented-button:has(button:disabled):focus-visible,.fd-segmented-button:has(button[aria-disabled=true]):focus-visible{outline:none}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}.fd-segmented-button--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fd-segmented-button--vertical button:first-child{border-radius:var(--fdButton_Vertical_Border_Radius_Left)}.fd-segmented-button--vertical button:last-child{border-radius:var(--fdButton_Vertical_Border_Radius_Right)}.fd-segmented-button--vertical button:not(:last-child){-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-after:var(--fdButton_Segmented_Border_Offset);margin-block-end:var(--fdButton_Segmented_Border_Offset)}.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]{--fdButtonBorderColor: var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor: var(--sapButton_Selected_Background)}.fd-segmented-button:has(.fd-button.is-disabled):focus-visible,.fd-segmented-button:has(.fd-button:disabled):focus-visible,.fd-segmented-button:has(.fd-button[aria-disabled=true]):focus-visible{outline:none}\n/*! Bundled license information:\n\nfundamental-styles/dist/segmented-button.css:\n (*!\n * Fundamental Library Styles v0.41.6\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"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
292
292
|
}
|
|
293
293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SegmentedButtonComponent, decorators: [{
|
|
294
294
|
type: Component,
|
|
@@ -306,7 +306,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
306
306
|
useExisting: forwardRef(() => SegmentedButtonComponent),
|
|
307
307
|
multi: true
|
|
308
308
|
}
|
|
309
|
-
], hostDirectives: [FocusableListDirective], styles: [".fd-segmented-button{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-block:0;padding-inline:0;position:relative;vertical-align:middle;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.fd-segmented-button:after,.fd-segmented-button:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{margin-block:0;margin-inline:0;--fdButtonPrioritizedBorderColor:var(--fdButton_Split_Border_Color);--fdButtonPrioritizedBackgroundColor:var(--fdButton_Split_Background_Color)}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child,:last-child){border-radius:var(--sapButton_Segment_BorderCornerRadius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){-webkit-margin-end:var(--fdButton_Segmented_Border_Offset);margin-inline-end:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button.is-disabled.is-selected,.fd-segmented-button button.is-disabled[aria-selected=true],.fd-segmented-button button:disabled.is-selected,.fd-segmented-button button:disabled[aria-selected=true],.fd-segmented-button button[aria-disabled=true].is-selected,.fd-segmented-button button[aria-disabled=true][aria-selected=true]{--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-segmented-button:has(button.is-disabled):focus-visible,.fd-segmented-button:has(button:disabled):focus-visible,.fd-segmented-button:has(button[aria-disabled=true]):focus-visible{outline:none}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}.fd-segmented-button--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fd-segmented-button--vertical button:first-child{border-radius:var(--fdButton_Vertical_Border_Radius_Left)}.fd-segmented-button--vertical button:last-child{border-radius:var(--fdButton_Vertical_Border_Radius_Right)}.fd-segmented-button--vertical button:not(:last-child){-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-after:var(--fdButton_Segmented_Border_Offset);margin-block-end:var(--fdButton_Segmented_Border_Offset)}.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]{--fdButtonBorderColor: var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor: var(--sapButton_Selected_Background)}.fd-segmented-button:has(.fd-button.is-disabled):focus-visible,.fd-segmented-button:has(.fd-button:disabled):focus-visible,.fd-segmented-button:has(.fd-button[aria-disabled=true]):focus-visible{outline:none}\n/*! Bundled license information:\n\nfundamental-styles/dist/segmented-button.css:\n (*!\n * Fundamental Library Styles v0.41.
|
|
309
|
+
], hostDirectives: [FocusableListDirective], styles: [".fd-segmented-button{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-block:0;padding-inline:0;position:relative;vertical-align:middle;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.fd-segmented-button:after,.fd-segmented-button:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor,var(--sapButton_BorderColor));content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{margin-block:0;margin-inline:0;--fdButtonPrioritizedBorderColor:var(--fdButton_Split_Border_Color);--fdButtonPrioritizedBackgroundColor:var(--fdButton_Split_Background_Color)}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child,:last-child){border-radius:var(--sapButton_Segment_BorderCornerRadius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){-webkit-margin-end:var(--fdButton_Segmented_Border_Offset);margin-inline-end:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button.is-disabled.is-selected,.fd-segmented-button button.is-disabled[aria-selected=true],.fd-segmented-button button:disabled.is-selected,.fd-segmented-button button:disabled[aria-selected=true],.fd-segmented-button button[aria-disabled=true].is-selected,.fd-segmented-button button[aria-disabled=true][aria-selected=true]{--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-segmented-button:has(button.is-disabled):focus-visible,.fd-segmented-button:has(button:disabled):focus-visible,.fd-segmented-button:has(button[aria-disabled=true]):focus-visible{outline:none}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}.fd-segmented-button--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fd-segmented-button--vertical button:first-child{border-radius:var(--fdButton_Vertical_Border_Radius_Left)}.fd-segmented-button--vertical button:last-child{border-radius:var(--fdButton_Vertical_Border_Radius_Right)}.fd-segmented-button--vertical button:not(:last-child){-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-after:var(--fdButton_Segmented_Border_Offset);margin-block-end:var(--fdButton_Segmented_Border_Offset)}.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]{--fdButtonBorderColor: var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor: var(--sapButton_Selected_Background)}.fd-segmented-button:has(.fd-button.is-disabled):focus-visible,.fd-segmented-button:has(.fd-button:disabled):focus-visible,.fd-segmented-button:has(.fd-button[aria-disabled=true]):focus-visible{outline:none}\n/*! Bundled license information:\n\nfundamental-styles/dist/segmented-button.css:\n (*!\n * Fundamental Library Styles v0.41.6\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"] }]
|
|
310
310
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.DestroyRef }, { type: i1.FocusableListDirective, decorators: [{
|
|
311
311
|
type: Host
|
|
312
312
|
}] }], propDecorators: { toggle: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-segmented-button.mjs","sources":["../../../../libs/core/segmented-button/segmented-button.component.ts","../../../../libs/core/segmented-button/segmented-button.module.ts","../../../../libs/core/segmented-button/fundamental-ngx-core-segmented-button.ts"],"sourcesContent":["import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n Host,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n FocusableItemDirective,\n FocusableListDirective,\n KeyUtil,\n Nullable,\n RtlService,\n destroyObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent, FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { EMPTY, Subject, asyncScheduler, fromEvent, merge } from 'rxjs';\nimport { filter, observeOn, startWith, takeUntil, tap } from 'rxjs/operators';\n\nexport type SegmentedButtonValue = string | (string | null)[] | null;\n\n/**\n * Container for grouped buttons.\n *\n * ```html\n * <fd-segmented-button [(ngModel)]=\"value\">\n * <button fd-button value=\"first\">Button</button>\n * <button fd-button value=\"second\">Button</button>\n * <button fd-button value=\"third\">Button</button>\n * </fd-segmented-button>\n * ```\n */\n@Component({\n selector: 'fd-segmented-button',\n template: `<ng-content></ng-content>`,\n styleUrl: './segmented-button.component.scss',\n host: {\n role: 'listbox',\n '[class.fd-segmented-button]': 'true',\n '[class.fd-segmented-button--vertical]': 'vertical',\n '[attr.aria-multiselectable]': 'toggle',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[attr.aria-roledescription]': '_groupRoleDescription',\n '[attr.aria-activedescendant]': '_focusedItemId()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedButtonComponent),\n multi: true\n }\n ],\n hostDirectives: [FocusableListDirective]\n})\nexport class SegmentedButtonComponent implements AfterViewInit, ControlValueAccessor, OnDestroy, OnChanges {\n /** Whether segmented button is on toggle mode, which allows to toggle more than 1 button */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /**\n * Whether segmented button is on vertical mode,\n * which allows to display buttons vertically\n **/\n @Input({ transform: booleanAttribute })\n vertical = false;\n\n /** @hidden */\n @ContentChildren(FD_BUTTON_COMPONENT)\n _buttons: QueryList<ButtonComponent>;\n\n /** @hidden */\n @ContentChildren(FocusableItemDirective)\n _focusableItems: QueryList<FocusableItemDirective>;\n\n /** @hidden */\n _groupRoleDescription: string;\n\n /** @hidden */\n _buttonRoleDescription: string;\n\n /** @hidden */\n protected _focusedItemId = signal<string | null | undefined>(null);\n\n /**\n * Value of segmented button can have 2 types:\n * - string, when there is no toggle mode and only 1 value can be chosen.\n * - array of strings, when there is toggle mode and more than 1 value can be chosen.\n */\n private _currentValue: SegmentedButtonValue;\n\n /** @hidden */\n private _isDisabled = false;\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n private _translationResolver = inject(TranslationResolver);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private readonly _changeDetRef: ChangeDetectorRef,\n private readonly _elementRef: ElementRef,\n private readonly _destroyRef: DestroyRef,\n @Host() private _focusableList: FocusableListDirective\n ) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n effect(() => {\n this._focusableList.contentDirection.set(this._rtlService?.rtl() ? 'rtl' : 'ltr');\n });\n const itemFocusedSubscription = this._focusableList.itemFocused.subscribe((item) => {\n this._focusedItemId.set(item.id);\n });\n this._destroyRef.onDestroy(() => itemFocusedSubscription.unsubscribe());\n\n // Effect for language changes\n effect(() => {\n const lang = this._langSignal();\n this._groupRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.groupRoleDescription'\n );\n this._buttonRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.buttonRoleDescription'\n );\n this._updateButtonRoleDescriptions();\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n if (this._isDisabled) {\n return;\n }\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /** @hidden */\n onChange: (value: SegmentedButtonValue) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToButtonChanges();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.vertical) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onRefresh$.complete();\n this._buttons = null as any;\n this._focusableItems = null as any;\n }\n\n /** @hidden */\n writeValue(values: string[] | string): void {\n this._currentValue = values;\n this._pickButtonsByValues(values);\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onChange* event of the SegmentedButtons.\n */\n registerOnChange(fn: (value: SegmentedButtonValue) => void): void {\n this.onChange = fn;\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onTouch* event of the SegmentedButtons.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * @hidden\n * @param isDisabled Sets the value of the *disabled* property of the SegmentedButtons.\n */\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled = isDisabled;\n this._toggleDisableButtons(isDisabled);\n this._onRefresh$.next();\n\n if (!isDisabled) {\n if (this._buttons) {\n this._listenToButtonChanges();\n this._pickButtonsByValues(this._currentValue);\n }\n }\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _listenToButtonChanges(): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._onRefresh$.next();\n\n merge(this._buttons.changes ?? EMPTY, this._focusableItems.changes ?? EMPTY)\n .pipe(startWith(1), observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._toggleDisableButtons(this._isDisabled);\n this._pickButtonsByValues(this._currentValue);\n this._buttons.forEach((button, index) => {\n this._setButtonAttributes(button, index);\n this._listenToTriggerEvents(button);\n });\n });\n }\n\n /** @hidden */\n private _listenToTriggerEvents(buttonComponent: ButtonComponent): void {\n const htmlElement = buttonComponent.elementRef.nativeElement;\n\n const refresh$ = merge(destroyObservable(this._destroyRef), this._onRefresh$);\n\n const triggerEvents$ = merge(\n fromEvent(htmlElement, 'click'),\n fromEvent<KeyboardEvent>(htmlElement, 'keydown').pipe(\n filter((event) => KeyUtil.isKeyCode(event, [ENTER, SPACE])),\n tap((event) => {\n event.preventDefault();\n this.onTouched();\n })\n )\n );\n\n triggerEvents$.pipe(takeUntil(refresh$)).subscribe(() => this._handleTriggerOnButton(buttonComponent));\n }\n\n /** @hidden */\n private _setButtonAttributes(buttonComponent: ButtonComponent, index: number): void {\n const el = buttonComponent.elementRef.nativeElement;\n this.renderer.setAttribute(el, 'role', 'option');\n this.renderer.setAttribute(el, 'aria-roledescription', this._buttonRoleDescription);\n this.renderer.setAttribute(el, 'aria-posinset', String(index + 1));\n this.renderer.setAttribute(el, 'aria-setsize', String(this._buttons.length));\n }\n\n private _updateButtonRoleDescriptions(): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => {\n this.renderer.setAttribute(\n button.elementRef.nativeElement,\n 'aria-roledescription',\n this._buttonRoleDescription\n );\n });\n }\n\n /** @hidden */\n private _handleTriggerOnButton(buttonComponent: ButtonComponent): void {\n if (!this._isButtonDisabled(buttonComponent)) {\n if (!this.toggle) {\n this._buttons.forEach((button) => this._deselectButton(button));\n this._selectButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n } else {\n this._toggleButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n }\n }\n }\n\n /** @hidden */\n private _propagateChange(): void {\n const selectedValue = this._getValuesBySelected();\n this.onChange(selectedValue);\n this._currentValue = selectedValue;\n }\n\n /** @hidden */\n private _toggleButton(buttonComponent: ButtonComponent): void {\n if (this._isButtonSelected(buttonComponent)) {\n this._deselectButton(buttonComponent);\n } else {\n this._selectButton(buttonComponent);\n }\n }\n\n /** @hidden */\n private _pickButtonsByValues(values: SegmentedButtonValue): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => this._deselectButton(button));\n this._getButtonsByValues(values).forEach((button) => this._selectButton(button));\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _getButtonsByValues(values: SegmentedButtonValue): ButtonComponent[] {\n if (!values) {\n return [];\n }\n\n if (Array.isArray(values)) {\n return this._buttons.filter((button) => !!values.find((value) => this._getButtonValue(button) === value));\n } else {\n return this._buttons.filter((button) => this._getButtonValue(button) === values);\n }\n }\n\n /** @hidden */\n private _selectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(true);\n }\n\n /** @hidden */\n private _deselectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(false);\n }\n\n /** @hidden */\n private _isButtonSelected(buttonComponent: ButtonComponent): Nullable<boolean> {\n return !!buttonComponent.isSelected();\n }\n\n /** @hidden */\n private _isButtonDisabled(buttonComponent: ButtonComponent): boolean {\n return buttonComponent.isDisabled() || buttonComponent.ariaDisabled();\n }\n\n /** @hidden */\n private _toggleDisableButtons(disable: boolean): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._buttons.forEach((button) => button.setDisabled(disable));\n\n this._focusableItems.forEach((focusableItemDirective) => {\n focusableItemDirective.setTabbable(!disable);\n focusableItemDirective.setFocusable(!disable);\n });\n\n this._changeDetRef.markForCheck();\n }\n\n /** @hidden */\n private _getButtonValue(buttonComponent: ButtonComponent): string | null {\n const element = buttonComponent.elementRef.nativeElement;\n if (element instanceof HTMLButtonElement) {\n return element.value;\n }\n return element.getAttribute('value');\n }\n\n /** @hidden\n * Returns values depending on selected state of buttons\n */\n private _getValuesBySelected(): SegmentedButtonValue {\n if (!this._buttons) {\n return [];\n }\n\n const resButtons = this._buttons\n .filter((button) => !!this._isButtonSelected(button))\n .map((button) => this._getButtonValue(button));\n if (!this.toggle) {\n return resButtons.length === 1 ? resButtons[0] : null;\n } else {\n return resButtons;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SegmentedButtonComponent } from './segmented-button.component';\n\n/**\n * @deprecated\n * Use direct `SegmentedButtonComponent` import instead.\n */\n@NgModule({\n imports: [SegmentedButtonComponent],\n exports: [SegmentedButtonComponent]\n})\nexport class SegmentedButtonModule {}\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-segmented-button.mjs","sources":["../../../../libs/core/segmented-button/segmented-button.component.ts","../../../../libs/core/segmented-button/segmented-button.module.ts","../../../../libs/core/segmented-button/fundamental-ngx-core-segmented-button.ts"],"sourcesContent":["import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n Host,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n FocusableItemDirective,\n FocusableListDirective,\n KeyUtil,\n Nullable,\n RtlService,\n destroyObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent, FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { EMPTY, Subject, asyncScheduler, fromEvent, merge } from 'rxjs';\nimport { filter, observeOn, startWith, takeUntil, tap } from 'rxjs/operators';\n\nexport type SegmentedButtonValue = string | (string | null)[] | null;\n\n/**\n * Container for grouped buttons.\n *\n * ```html\n * <fd-segmented-button [(ngModel)]=\"value\">\n * <button fd-button value=\"first\">Button</button>\n * <button fd-button value=\"second\">Button</button>\n * <button fd-button value=\"third\">Button</button>\n * </fd-segmented-button>\n * ```\n */\n@Component({\n selector: 'fd-segmented-button',\n template: `<ng-content></ng-content>`,\n styleUrl: './segmented-button.component.scss',\n host: {\n role: 'listbox',\n '[class.fd-segmented-button]': 'true',\n '[class.fd-segmented-button--vertical]': 'vertical',\n '[attr.aria-multiselectable]': 'toggle',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[attr.aria-roledescription]': '_groupRoleDescription',\n '[attr.aria-activedescendant]': '_focusedItemId()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedButtonComponent),\n multi: true\n }\n ],\n hostDirectives: [FocusableListDirective]\n})\nexport class SegmentedButtonComponent implements AfterViewInit, ControlValueAccessor, OnDestroy, OnChanges {\n /** Whether segmented button is on toggle mode, which allows to toggle more than 1 button */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /**\n * Whether segmented button is on vertical mode,\n * which allows to display buttons vertically\n **/\n @Input({ transform: booleanAttribute })\n vertical = false;\n\n /** @hidden */\n @ContentChildren(FD_BUTTON_COMPONENT)\n _buttons: QueryList<ButtonComponent>;\n\n /** @hidden */\n @ContentChildren(FocusableItemDirective)\n _focusableItems: QueryList<FocusableItemDirective>;\n\n /** @hidden */\n _groupRoleDescription: string;\n\n /** @hidden */\n _buttonRoleDescription: string;\n\n /** @hidden */\n protected _focusedItemId = signal<string | null | undefined>(null);\n\n /**\n * Value of segmented button can have 2 types:\n * - string, when there is no toggle mode and only 1 value can be chosen.\n * - array of strings, when there is toggle mode and more than 1 value can be chosen.\n */\n private _currentValue: SegmentedButtonValue;\n\n /** @hidden */\n private _isDisabled = false;\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n private _translationResolver = inject(TranslationResolver);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private readonly _changeDetRef: ChangeDetectorRef,\n private readonly _elementRef: ElementRef,\n private readonly _destroyRef: DestroyRef,\n @Host() private _focusableList: FocusableListDirective\n ) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n effect(() => {\n this._focusableList.contentDirection.set(this._rtlService?.rtl() ? 'rtl' : 'ltr');\n });\n const itemFocusedSubscription = this._focusableList.itemFocused.subscribe((item) => {\n this._focusedItemId.set(item.id);\n });\n this._destroyRef.onDestroy(() => itemFocusedSubscription.unsubscribe());\n\n // Effect for language changes\n effect(() => {\n const lang = this._langSignal();\n this._groupRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.groupRoleDescription'\n );\n this._buttonRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.buttonRoleDescription'\n );\n this._updateButtonRoleDescriptions();\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n if (this._isDisabled) {\n return;\n }\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /** @hidden */\n onChange: (value: SegmentedButtonValue) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToButtonChanges();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.vertical) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onRefresh$.complete();\n this._buttons = null as any;\n this._focusableItems = null as any;\n }\n\n /** @hidden */\n writeValue(values: string[] | string): void {\n this._currentValue = values;\n this._pickButtonsByValues(values);\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onChange* event of the SegmentedButtons.\n */\n registerOnChange(fn: (value: SegmentedButtonValue) => void): void {\n this.onChange = fn;\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onTouch* event of the SegmentedButtons.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * @hidden\n * @param isDisabled Sets the value of the *disabled* property of the SegmentedButtons.\n */\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled = isDisabled;\n this._toggleDisableButtons(isDisabled);\n this._onRefresh$.next();\n\n if (!isDisabled) {\n if (this._buttons) {\n this._listenToButtonChanges();\n this._pickButtonsByValues(this._currentValue);\n }\n }\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _listenToButtonChanges(): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._onRefresh$.next();\n\n merge(this._buttons.changes ?? EMPTY, this._focusableItems.changes ?? EMPTY)\n .pipe(startWith(1), observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._toggleDisableButtons(this._isDisabled);\n this._pickButtonsByValues(this._currentValue);\n this._buttons.forEach((button, index) => {\n this._setButtonAttributes(button, index);\n this._listenToTriggerEvents(button);\n });\n });\n }\n\n /** @hidden */\n private _listenToTriggerEvents(buttonComponent: ButtonComponent): void {\n const htmlElement = buttonComponent.elementRef.nativeElement;\n\n const refresh$ = merge(destroyObservable(this._destroyRef), this._onRefresh$);\n\n const triggerEvents$ = merge(\n fromEvent(htmlElement, 'click'),\n fromEvent<KeyboardEvent>(htmlElement, 'keydown').pipe(\n filter((event) => KeyUtil.isKeyCode(event, [ENTER, SPACE])),\n tap((event) => {\n event.preventDefault();\n this.onTouched();\n })\n )\n );\n\n triggerEvents$.pipe(takeUntil(refresh$)).subscribe(() => this._handleTriggerOnButton(buttonComponent));\n }\n\n /** @hidden */\n private _setButtonAttributes(buttonComponent: ButtonComponent, index: number): void {\n const el = buttonComponent.elementRef.nativeElement;\n this.renderer.setAttribute(el, 'role', 'option');\n this.renderer.setAttribute(el, 'aria-roledescription', this._buttonRoleDescription);\n this.renderer.setAttribute(el, 'aria-posinset', String(index + 1));\n this.renderer.setAttribute(el, 'aria-setsize', String(this._buttons.length));\n }\n\n private _updateButtonRoleDescriptions(): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => {\n this.renderer.setAttribute(\n button.elementRef.nativeElement,\n 'aria-roledescription',\n this._buttonRoleDescription\n );\n });\n }\n\n /** @hidden */\n private _handleTriggerOnButton(buttonComponent: ButtonComponent): void {\n if (!this._isButtonDisabled(buttonComponent)) {\n if (!this.toggle) {\n this._buttons.forEach((button) => this._deselectButton(button));\n this._selectButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n } else {\n this._toggleButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n }\n }\n }\n\n /** @hidden */\n private _propagateChange(): void {\n const selectedValue = this._getValuesBySelected();\n this.onChange(selectedValue);\n this._currentValue = selectedValue;\n }\n\n /** @hidden */\n private _toggleButton(buttonComponent: ButtonComponent): void {\n if (this._isButtonSelected(buttonComponent)) {\n this._deselectButton(buttonComponent);\n } else {\n this._selectButton(buttonComponent);\n }\n }\n\n /** @hidden */\n private _pickButtonsByValues(values: SegmentedButtonValue): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => this._deselectButton(button));\n this._getButtonsByValues(values).forEach((button) => this._selectButton(button));\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _getButtonsByValues(values: SegmentedButtonValue): ButtonComponent[] {\n if (!values) {\n return [];\n }\n\n if (Array.isArray(values)) {\n return this._buttons.filter((button) => !!values.find((value) => this._getButtonValue(button) === value));\n } else {\n return this._buttons.filter((button) => this._getButtonValue(button) === values);\n }\n }\n\n /** @hidden */\n private _selectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(true);\n }\n\n /** @hidden */\n private _deselectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(false);\n }\n\n /** @hidden */\n private _isButtonSelected(buttonComponent: ButtonComponent): Nullable<boolean> {\n return !!buttonComponent.isSelected();\n }\n\n /** @hidden */\n private _isButtonDisabled(buttonComponent: ButtonComponent): boolean {\n return buttonComponent.isDisabled() || buttonComponent.ariaDisabled();\n }\n\n /** @hidden */\n private _toggleDisableButtons(disable: boolean): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._buttons.forEach((button) => button.setDisabled(disable || button.disabled()));\n\n this._focusableItems.forEach((focusableItemDirective) => {\n focusableItemDirective.setTabbable(!disable);\n focusableItemDirective.setFocusable(!disable);\n });\n\n this._changeDetRef.markForCheck();\n }\n\n /** @hidden */\n private _getButtonValue(buttonComponent: ButtonComponent): string | null {\n const element = buttonComponent.elementRef.nativeElement;\n if (element instanceof HTMLButtonElement) {\n return element.value;\n }\n return element.getAttribute('value');\n }\n\n /** @hidden\n * Returns values depending on selected state of buttons\n */\n private _getValuesBySelected(): SegmentedButtonValue {\n if (!this._buttons) {\n return [];\n }\n\n const resButtons = this._buttons\n .filter((button) => !!this._isButtonSelected(button))\n .map((button) => this._getButtonValue(button));\n if (!this.toggle) {\n return resButtons.length === 1 ? resButtons[0] : null;\n } else {\n return resButtons;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SegmentedButtonComponent } from './segmented-button.component';\n\n/**\n * @deprecated\n * Use direct `SegmentedButtonComponent` import instead.\n */\n@NgModule({\n imports: [SegmentedButtonComponent],\n exports: [SegmentedButtonComponent]\n})\nexport class SegmentedButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|