@fundamental-ngx/core 0.61.3 → 0.61.5
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-breadcrumb.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +7 -8
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +10 -16
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +34 -15
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +40 -29
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +75 -31
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +152 -16
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +23 -27
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +12 -3
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +19 -25
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-carousel.d.ts +2 -3
- package/types/fundamental-ngx-core-form.d.ts +7 -10
- package/types/fundamental-ngx-core-inline-help.d.ts +20 -15
- package/types/fundamental-ngx-core-menu.d.ts +17 -9
- package/types/fundamental-ngx-core-mobile-mode.d.ts +6 -2
- package/types/fundamental-ngx-core-multi-combobox.d.ts +18 -1
- package/types/fundamental-ngx-core-popover.d.ts +48 -3
- package/types/fundamental-ngx-core-product-switch.d.ts +20 -24
- package/types/fundamental-ngx-core-select.d.ts +5 -0
- package/types/fundamental-ngx-core-tabs.d.ts +5 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TAB, ENTER, SPACE, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';
|
|
2
2
|
import * as i1 from '@angular/cdk/scrolling';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, inject, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive, InjectionToken, input, model, output, contentChild, NgModule } from '@angular/core';
|
|
4
|
+
import { EventEmitter, inject, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive, InjectionToken, input, booleanAttribute, model, output, contentChild, NgModule } from '@angular/core';
|
|
5
5
|
import { Subscription } from 'rxjs';
|
|
6
6
|
import { RtlService, KeyUtil, DndItemDirective, DndListDirective } from '@fundamental-ngx/cdk/utils';
|
|
7
7
|
import { AvatarComponent } from '@fundamental-ngx/core/avatar';
|
|
@@ -202,44 +202,40 @@ const FD_PRODUCT_SWITCH_COMPONENT = new InjectionToken('FdProductSwitchComponent
|
|
|
202
202
|
|
|
203
203
|
class ProductSwitchComponent {
|
|
204
204
|
constructor() {
|
|
205
|
-
/**
|
|
206
|
-
* Configuration object for popover settings.
|
|
207
|
-
* When provided, these settings will be merged with individual input properties.
|
|
208
|
-
* Individual inputs take precedence over config object values.
|
|
209
|
-
*/
|
|
210
|
-
this.config = input({}, ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
211
|
-
/** Placement of a popover. */
|
|
205
|
+
/** Placement of the product switch dropdown. */
|
|
212
206
|
this.placement = input('bottom-end', ...(ngDevMode ? [{ debugName: "placement" }] : []));
|
|
213
207
|
/** Whether the product switch is disabled. */
|
|
214
|
-
this.disabled = input(false, ...(ngDevMode ?
|
|
215
|
-
/** Whether the
|
|
216
|
-
this.closeOnEscapeKey = input(true, ...(ngDevMode ?
|
|
217
|
-
/** Whether the
|
|
218
|
-
this.closeOnOutsideClick = input(true, ...(ngDevMode ?
|
|
219
|
-
/** Whether the
|
|
220
|
-
this.noArrow = input(true, ...(ngDevMode ?
|
|
208
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
209
|
+
/** Whether the product switch should close when the escape key is pressed. */
|
|
210
|
+
this.closeOnEscapeKey = input(true, { ...(ngDevMode ? { debugName: "closeOnEscapeKey" } : {}), transform: booleanAttribute });
|
|
211
|
+
/** Whether the product switch should close when a click is made outside its boundaries. */
|
|
212
|
+
this.closeOnOutsideClick = input(true, { ...(ngDevMode ? { debugName: "closeOnOutsideClick" } : {}), transform: booleanAttribute });
|
|
213
|
+
/** Whether the product switch dropdown should have an arrow. */
|
|
214
|
+
this.noArrow = input(true, { ...(ngDevMode ? { debugName: "noArrow" } : {}), transform: booleanAttribute });
|
|
221
215
|
/** Whether to wrap content with fd-scrollbar directive. */
|
|
222
|
-
this.disableScrollbar = input(false, ...(ngDevMode ?
|
|
223
|
-
/** The trigger events that will open/close the
|
|
216
|
+
this.disableScrollbar = input(false, { ...(ngDevMode ? { debugName: "disableScrollbar" } : {}), transform: booleanAttribute });
|
|
217
|
+
/** The trigger events that will open/close the product switch. */
|
|
224
218
|
this.triggers = input(['click'], ...(ngDevMode ? [{ debugName: "triggers" }] : []));
|
|
225
|
-
/** Whether the
|
|
226
|
-
this.focusTrapped = input(false, ...(ngDevMode ?
|
|
227
|
-
/** Whether the
|
|
228
|
-
this.focusAutoCapture = input(false, ...(ngDevMode ?
|
|
229
|
-
/** Two-way binding for open state. */
|
|
219
|
+
/** Whether the product switch should trap focus within its boundaries. */
|
|
220
|
+
this.focusTrapped = input(false, { ...(ngDevMode ? { debugName: "focusTrapped" } : {}), transform: booleanAttribute });
|
|
221
|
+
/** Whether the product switch should automatically move focus into the trapped region. */
|
|
222
|
+
this.focusAutoCapture = input(false, { ...(ngDevMode ? { debugName: "focusAutoCapture" } : {}), transform: booleanAttribute });
|
|
223
|
+
/** Two-way binding for product switch open state. */
|
|
230
224
|
this.isOpen = model(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
231
|
-
/** Event emitted right before the
|
|
225
|
+
/** Event emitted right before the product switch is being opened. */
|
|
232
226
|
this.beforeOpen = output();
|
|
227
|
+
/** Event emitted when the product switch open state changes. */
|
|
228
|
+
this.isOpenChange = output();
|
|
233
229
|
/** @hidden */
|
|
234
230
|
this.customProductSwitchButton = contentChild(ProductSwitchButtonDirective, ...(ngDevMode ? [{ debugName: "customProductSwitchButton" }] : []));
|
|
235
231
|
}
|
|
236
232
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ProductSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
237
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ProductSwitchComponent, isStandalone: true, selector: "fd-product-switch", inputs: {
|
|
233
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ProductSwitchComponent, isStandalone: true, selector: "fd-product-switch", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscapeKey: { classPropertyName: "closeOnEscapeKey", publicName: "closeOnEscapeKey", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsideClick: { classPropertyName: "closeOnOutsideClick", publicName: "closeOnOutsideClick", isSignal: true, isRequired: false, transformFunction: null }, noArrow: { classPropertyName: "noArrow", publicName: "noArrow", isSignal: true, isRequired: false, transformFunction: null }, disableScrollbar: { classPropertyName: "disableScrollbar", publicName: "disableScrollbar", isSignal: true, isRequired: false, transformFunction: null }, triggers: { classPropertyName: "triggers", publicName: "triggers", isSignal: true, isRequired: false, transformFunction: null }, focusTrapped: { classPropertyName: "focusTrapped", publicName: "focusTrapped", isSignal: true, isRequired: false, transformFunction: null }, focusAutoCapture: { classPropertyName: "focusAutoCapture", publicName: "focusAutoCapture", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", beforeOpen: "beforeOpen", isOpenChange: "isOpenChange" }, host: { properties: { "class.fd-popover-custom--disabled": "disabled()" } }, providers: [
|
|
238
234
|
{
|
|
239
235
|
provide: FD_PRODUCT_SWITCH_COMPONENT,
|
|
240
236
|
useExisting: ProductSwitchComponent
|
|
241
237
|
}
|
|
242
|
-
], queries: [{ propertyName: "customProductSwitchButton", first: true, predicate: ProductSwitchButtonDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"fd-product-switch\">\n <fd-popover\n [placement]=\"placement()\"\n [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n [(isOpen)]=\"isOpen\"\n [disabled]=\"disabled()\"\n [triggers]=\"triggers()\"\n [focusTrapped]=\"focusTrapped()\"\n [focusAutoCapture]=\"focusAutoCapture()\"\n [noArrow]=\"noArrow()\"\n [disableScrollbar]=\"disableScrollbar()\"\n >\n <fd-popover-control>\n @if (!customProductSwitchButton()) {\n <button\n fd-button\n [attr.aria-label]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n [attr.title]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n class=\"fd-shellbar__button\"\n glyph=\"grid\"\n fdType=\"transparent\"\n ></button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n }\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
238
|
+
], queries: [{ propertyName: "customProductSwitchButton", first: true, predicate: ProductSwitchButtonDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"fd-product-switch\">\n <fd-popover\n [placement]=\"placement()\"\n [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n [(isOpen)]=\"isOpen\"\n [disabled]=\"disabled()\"\n [triggers]=\"triggers()\"\n [focusTrapped]=\"focusTrapped()\"\n [focusAutoCapture]=\"focusAutoCapture()\"\n [noArrow]=\"noArrow()\"\n [disableScrollbar]=\"disableScrollbar()\"\n (beforeOpen)=\"beforeOpen.emit()\"\n (isOpenChange)=\"isOpenChange.emit($event)\"\n >\n <fd-popover-control>\n @if (!customProductSwitchButton()) {\n <button\n fd-button\n [attr.aria-label]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n [attr.title]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n class=\"fd-shellbar__button\"\n glyph=\"grid\"\n fdType=\"transparent\"\n ></button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n }\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
243
239
|
}
|
|
244
240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ProductSwitchComponent, decorators: [{
|
|
245
241
|
type: Component,
|
|
@@ -257,8 +253,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
257
253
|
NgTemplateOutlet
|
|
258
254
|
], host: {
|
|
259
255
|
'[class.fd-popover-custom--disabled]': 'disabled()'
|
|
260
|
-
}, template: "<div class=\"fd-product-switch\">\n <fd-popover\n [placement]=\"placement()\"\n [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n [(isOpen)]=\"isOpen\"\n [disabled]=\"disabled()\"\n [triggers]=\"triggers()\"\n [focusTrapped]=\"focusTrapped()\"\n [focusAutoCapture]=\"focusAutoCapture()\"\n [noArrow]=\"noArrow()\"\n [disableScrollbar]=\"disableScrollbar()\"\n >\n <fd-popover-control>\n @if (!customProductSwitchButton()) {\n <button\n fd-button\n [attr.aria-label]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n [attr.title]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n class=\"fd-shellbar__button\"\n glyph=\"grid\"\n fdType=\"transparent\"\n ></button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n }\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n" }]
|
|
261
|
-
}], propDecorators: {
|
|
256
|
+
}, template: "<div class=\"fd-product-switch\">\n <fd-popover\n [placement]=\"placement()\"\n [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n [(isOpen)]=\"isOpen\"\n [disabled]=\"disabled()\"\n [triggers]=\"triggers()\"\n [focusTrapped]=\"focusTrapped()\"\n [focusAutoCapture]=\"focusAutoCapture()\"\n [noArrow]=\"noArrow()\"\n [disableScrollbar]=\"disableScrollbar()\"\n (beforeOpen)=\"beforeOpen.emit()\"\n (isOpenChange)=\"isOpenChange.emit($event)\"\n >\n <fd-popover-control>\n @if (!customProductSwitchButton()) {\n <button\n fd-button\n [attr.aria-label]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n [attr.title]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n class=\"fd-shellbar__button\"\n glyph=\"grid\"\n fdType=\"transparent\"\n ></button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n }\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n" }]
|
|
257
|
+
}], propDecorators: { placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closeOnEscapeKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscapeKey", required: false }] }], closeOnOutsideClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsideClick", required: false }] }], noArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "noArrow", required: false }] }], disableScrollbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableScrollbar", required: false }] }], triggers: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggers", required: false }] }], focusTrapped: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusTrapped", required: false }] }], focusAutoCapture: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAutoCapture", required: false }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }, { type: i0.Output, args: ["isOpenChange"] }], beforeOpen: [{ type: i0.Output, args: ["beforeOpen"] }], isOpenChange: [{ type: i0.Output, args: ["isOpenChange"] }], customProductSwitchButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ProductSwitchButtonDirective), { isSignal: true }] }] } });
|
|
262
258
|
|
|
263
259
|
/**
|
|
264
260
|
* @deprecated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-product-switch.mjs","sources":["../../../../libs/core/product-switch/product-switch-body/product-switch-body.component.ts","../../../../libs/core/product-switch/product-switch-body/product-switch-body.component.html","../../../../libs/core/product-switch/product-switch-button.directive.ts","../../../../libs/core/product-switch/tokens.ts","../../../../libs/core/product-switch/product-switch/product-switch.component.ts","../../../../libs/core/product-switch/product-switch/product-switch.component.html","../../../../libs/core/product-switch/product-switch.module.ts","../../../../libs/core/product-switch/fundamental-ngx-core-product-switch.ts"],"sourcesContent":["import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { FdDropEvent, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { DndItemDirective, DndListDirective } from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ProductSwitchItem } from './product-switch.item';\n\nconst containerWidthPxSmallMode = 588;\nconst containerWidthPx = 776;\n\n@Component({\n selector: 'fd-product-switch-body',\n templateUrl: './product-switch-body.component.html',\n styleUrls: ['./product-switch-body.component.scss', '../../../cdk/utils/drag-and-drop/drag-and-drop.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DndItemDirective, DndListDirective, IconComponent, AvatarComponent]\n})\nexport class ProductSwitchBodyComponent implements OnInit, OnDestroy {\n /** Defines if drag and drop functionality should be included in product switch*/\n @Input()\n dragAndDropEnabled = true;\n\n /** The product switch's product items. */\n @Input()\n products: ProductSwitchItem[];\n\n /** Defines if the product switcher should be displayed in list mode, no matter what is the size of window */\n @Input()\n forceListMode = false;\n\n /** Event thrown on products array change */\n @Output()\n readonly productsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n /** Event emitted on product click */\n @Output()\n readonly itemClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n protected readonly FD_DEFAULT_ICON_FONT_FAMILY = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** @hidden */\n private _listMode: boolean;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private _viewportRuler: ViewportRuler,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(\n this._viewportRuler.change().subscribe((event) => {\n const { innerWidth } = <Window>event.target;\n this._checkSize(innerWidth);\n })\n );\n\n const { width } = this._viewportRuler.getViewportSize();\n this._checkSize(width);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _itemClick(item: ProductSwitchItem, event: MouseEvent): void {\n this.products.forEach((product) => (product.selected = product === item));\n\n this.itemClicked.emit();\n if (item.callback) {\n item.callback(event);\n }\n }\n\n /** Method called on products change */\n _productSwitchItemsChangeHandle(dropEvent: FdDropEvent<ProductSwitchItem>): void {\n this.productsChange.emit(dropEvent.items);\n this.products = dropEvent.items;\n }\n\n /** @hidden */\n _keyDownHandle(event: KeyboardEvent): void {\n const target = <HTMLElement>event.target;\n\n if (!KeyUtil.isKeyCode(event, TAB)) {\n event.preventDefault();\n }\n\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n target.click();\n } else if (!this._isListMode()) {\n const i = Array.from(target.parentElement?.children ?? []).indexOf(target);\n this._handleNoListKeydown(event, target, i);\n } else if (this._isListMode() && KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n this._handleListArrowUpDown(event, target);\n }\n }\n\n /** @hidden */\n _isSmallMode(): boolean {\n return this.products?.length < 7;\n }\n\n /** @hidden */\n _isListMode(): boolean {\n return this._listMode || this.forceListMode;\n }\n\n /** @hidden */\n private _checkSize(width: number): void {\n if (this._isSmallMode()) {\n this._listMode = width < containerWidthPxSmallMode;\n } else {\n this._listMode = width < containerWidthPx;\n }\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _handleNoListKeydown(event: KeyboardEvent, target: HTMLElement, i: number): void {\n const previousElementSibling = <HTMLElement>target.previousElementSibling;\n const nextElementSibling = <HTMLElement>target.nextElementSibling;\n\n if (\n i === this.products.length - 1 &&\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) || (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._rtlService?.rtl()))\n ) {\n while (<HTMLElement>target.previousElementSibling) {\n target = <HTMLElement>target.previousElementSibling;\n }\n target.focus();\n }\n\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n this._rtlService?.rtl() ? nextElementSibling?.focus() : previousElementSibling?.focus();\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n this._rtlService?.rtl() ? previousElementSibling?.focus() : nextElementSibling?.focus();\n } else if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n if (this.products.length >= 7) {\n this._handleNoListMoreThanSeven(event, target, i);\n } else if (this.products.length < 7) {\n this._handleNoListLessThanSeven(event, target, i);\n }\n }\n }\n\n /** @hidden */\n private _handleNoListMoreThanSeven(event: KeyboardEvent, target: HTMLElement, i: number): void {\n const nextIndexByColumn = 4;\n const children = target.parentElement?.children;\n\n if (!children) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n (<HTMLElement>children[i + nextIndexByColumn])?.focus();\n }\n\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n (<HTMLElement>children[i - nextIndexByColumn])?.focus();\n }\n }\n\n /** @hidden */\n private _handleNoListLessThanSeven(event: KeyboardEvent, target: HTMLElement, i: number): void {\n const nextIndexByColumn = 3;\n const children = target.parentElement?.children;\n\n if (!children) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n (<HTMLElement>children[i + nextIndexByColumn])?.focus();\n }\n\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n (<HTMLElement>children[i - nextIndexByColumn])?.focus();\n }\n }\n\n /** @hidden */\n private _handleListArrowUpDown(event: KeyboardEvent, target: HTMLElement): void {\n const targetIndex = Array.from(target.parentElement?.children ?? []).indexOf(target);\n const previousElementSibling =\n targetIndex === 0\n ? <HTMLElement>target.parentElement?.children[this.products.length - 1]\n : <HTMLElement>target.previousElementSibling;\n const nextElementSibling =\n targetIndex === this.products.length - 1\n ? <HTMLElement>target.parentElement?.children[0]\n : <HTMLElement>target.nextElementSibling;\n\n if (this._isListMode() && KeyUtil.isKeyCode(event, DOWN_ARROW) && nextElementSibling) {\n nextElementSibling.focus();\n } else if (this._isListMode() && KeyUtil.isKeyCode(event, UP_ARROW) && previousElementSibling) {\n previousElementSibling.focus();\n }\n }\n}\n","<div\n class=\"fd-product-switch__body\"\n [class.fd-product-switch__body--col-3]=\"_isSmallMode() && !_isListMode()\"\n [class.fd-product-switch__body--mobile]=\"_isListMode()\"\n>\n <ul\n fd-dnd-list\n class=\"fd-product-switch__list\"\n [items]=\"products\"\n [gridMode]=\"!_isListMode()\"\n (itemDropped)=\"_productSwitchItemsChangeHandle($event)\"\n >\n @for (product of products; track product) {\n <li\n fd-dnd-item\n tabindex=\"0\"\n class=\"fd-product-switch__item\"\n [class.selected]=\"product.selected\"\n (keydown)=\"_keyDownHandle($event)\"\n (click)=\"_itemClick(product, $event)\"\n [draggable]=\"!product.disabledDragAndDrop && dragAndDropEnabled\"\n [stickInPlace]=\"!!product.stickToPosition\"\n >\n @if (product.avatar) {\n <fd-avatar\n size=\"s\"\n [glyph]=\"product.avatar.glyph ?? null\"\n [label]=\"product.avatar.label ?? null\"\n [circle]=\"!!product.avatar.circle\"\n [image]=\"product.avatar.image ?? null\"\n [contain]=\"!!product.avatar.contain\"\n [transparent]=\"!!product.avatar.transparent\"\n [placeholder]=\"!!product.avatar.placeholder\"\n [tile]=\"!!product.avatar.tile\"\n [colorAccent]=\"product.avatar.colorAccent\"\n [colorIndication]=\"product.avatar.colorIndication\"\n [border]=\"!!product.avatar.border\"\n [alterIcon]=\"product.avatar.alterIcon ?? null\"\n [backupImage]=\"product.avatar.backupImage ?? null\"\n [ariaLabel]=\"product.avatar.ariaLabel ?? null\"\n >\n </fd-avatar>\n } @else {\n <fd-icon\n [font]=\"product.font || FD_DEFAULT_ICON_FONT_FAMILY\"\n role=\"presentation\"\n class=\"fd-product-switch__icon\"\n [glyph]=\"product.icon\"\n ></fd-icon>\n }\n\n <div class=\"fd-product-switch__text\">\n <div class=\"fd-product-switch__title\">{{ product.title }}</div>\n @if (product.subtitle) {\n <div class=\"fd-product-switch__subtitle\">{{ product.subtitle }}</div>\n }\n </div>\n </li>\n }\n </ul>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdProductSwitchButton]',\n standalone: true\n})\nexport class ProductSwitchButtonDirective {\n /** @hidden */\n constructor(readonly templateRef: TemplateRef<any>) {}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_PRODUCT_SWITCH_COMPONENT = new InjectionToken('FdProductSwitchComponent');\n","import { ChangeDetectionStrategy, Component, contentChild, input, model, output } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n PopoverBodyComponent,\n PopoverComponent,\n PopoverConfig,\n PopoverControlComponent,\n TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ProductSwitchButtonDirective } from '../product-switch-button.directive';\nimport { FD_PRODUCT_SWITCH_COMPONENT } from '../tokens';\n\n@Component({\n selector: 'fd-product-switch',\n templateUrl: './product-switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_PRODUCT_SWITCH_COMPONENT,\n useExisting: ProductSwitchComponent\n }\n ],\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n ButtonComponent,\n PopoverBodyComponent,\n FdTranslatePipe,\n NgTemplateOutlet\n ],\n host: {\n '[class.fd-popover-custom--disabled]': 'disabled()'\n }\n})\nexport class ProductSwitchComponent {\n /**\n * Configuration object for popover settings.\n * When provided, these settings will be merged with individual input properties.\n * Individual inputs take precedence over config object values.\n */\n readonly config = input<PopoverConfig>({});\n\n /** Placement of a popover. */\n readonly placement = input<Placement>('bottom-end');\n\n /** Whether the product switch is disabled. */\n readonly disabled = input(false);\n\n /** Whether the popover should close when the escape key is pressed. */\n readonly closeOnEscapeKey = input(true);\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n readonly closeOnOutsideClick = input(true);\n\n /** Whether the popover should have an arrow. */\n readonly noArrow = input(true);\n\n /** Whether to wrap content with fd-scrollbar directive. */\n readonly disableScrollbar = input(false);\n\n /** The trigger events that will open/close the popover. */\n readonly triggers = input<(string | TriggerConfig)[]>(['click']);\n\n /** Whether the popover should be focusTrapped. */\n readonly focusTrapped = input(false);\n\n /** Whether the popover should automatically move focus into the trapped region. */\n readonly focusAutoCapture = input(false);\n\n /** Two-way binding for open state. */\n readonly isOpen = model(false);\n\n /** Event emitted right before the popover is being opened. */\n readonly beforeOpen = output<void>();\n\n /** @hidden */\n protected readonly customProductSwitchButton = contentChild(ProductSwitchButtonDirective);\n}\n","<div class=\"fd-product-switch\">\n <fd-popover\n [placement]=\"placement()\"\n [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n [(isOpen)]=\"isOpen\"\n [disabled]=\"disabled()\"\n [triggers]=\"triggers()\"\n [focusTrapped]=\"focusTrapped()\"\n [focusAutoCapture]=\"focusAutoCapture()\"\n [noArrow]=\"noArrow()\"\n [disableScrollbar]=\"disableScrollbar()\"\n >\n <fd-popover-control>\n @if (!customProductSwitchButton()) {\n <button\n fd-button\n [attr.aria-label]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n [attr.title]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n class=\"fd-shellbar__button\"\n glyph=\"grid\"\n fdType=\"transparent\"\n ></button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n }\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ProductSwitchBodyComponent } from './product-switch-body/product-switch-body.component';\nimport { ProductSwitchComponent } from './product-switch/product-switch.component';\n\n/**\n * @deprecated\n * Use direct imports of `ProductSwitchComponent`, `ProductSwitchBodyComponent`\n */\n@NgModule({\n imports: [ProductSwitchComponent, ProductSwitchBodyComponent],\n exports: [ProductSwitchComponent, ProductSwitchBodyComponent]\n})\nexport class ProductSwitchModule {}\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-product-switch.mjs","sources":["../../../../libs/core/product-switch/product-switch-body/product-switch-body.component.ts","../../../../libs/core/product-switch/product-switch-body/product-switch-body.component.html","../../../../libs/core/product-switch/product-switch-button.directive.ts","../../../../libs/core/product-switch/tokens.ts","../../../../libs/core/product-switch/product-switch/product-switch.component.ts","../../../../libs/core/product-switch/product-switch/product-switch.component.html","../../../../libs/core/product-switch/product-switch.module.ts","../../../../libs/core/product-switch/fundamental-ngx-core-product-switch.ts"],"sourcesContent":["import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { FdDropEvent, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { DndItemDirective, DndListDirective } from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ProductSwitchItem } from './product-switch.item';\n\nconst containerWidthPxSmallMode = 588;\nconst containerWidthPx = 776;\n\n@Component({\n selector: 'fd-product-switch-body',\n templateUrl: './product-switch-body.component.html',\n styleUrls: ['./product-switch-body.component.scss', '../../../cdk/utils/drag-and-drop/drag-and-drop.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DndItemDirective, DndListDirective, IconComponent, AvatarComponent]\n})\nexport class ProductSwitchBodyComponent implements OnInit, OnDestroy {\n /** Defines if drag and drop functionality should be included in product switch*/\n @Input()\n dragAndDropEnabled = true;\n\n /** The product switch's product items. */\n @Input()\n products: ProductSwitchItem[];\n\n /** Defines if the product switcher should be displayed in list mode, no matter what is the size of window */\n @Input()\n forceListMode = false;\n\n /** Event thrown on products array change */\n @Output()\n readonly productsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n /** Event emitted on product click */\n @Output()\n readonly itemClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n protected readonly FD_DEFAULT_ICON_FONT_FAMILY = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** @hidden */\n private _listMode: boolean;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private _viewportRuler: ViewportRuler,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(\n this._viewportRuler.change().subscribe((event) => {\n const { innerWidth } = <Window>event.target;\n this._checkSize(innerWidth);\n })\n );\n\n const { width } = this._viewportRuler.getViewportSize();\n this._checkSize(width);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _itemClick(item: ProductSwitchItem, event: MouseEvent): void {\n this.products.forEach((product) => (product.selected = product === item));\n\n this.itemClicked.emit();\n if (item.callback) {\n item.callback(event);\n }\n }\n\n /** Method called on products change */\n _productSwitchItemsChangeHandle(dropEvent: FdDropEvent<ProductSwitchItem>): void {\n this.productsChange.emit(dropEvent.items);\n this.products = dropEvent.items;\n }\n\n /** @hidden */\n _keyDownHandle(event: KeyboardEvent): void {\n const target = <HTMLElement>event.target;\n\n if (!KeyUtil.isKeyCode(event, TAB)) {\n event.preventDefault();\n }\n\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n target.click();\n } else if (!this._isListMode()) {\n const i = Array.from(target.parentElement?.children ?? []).indexOf(target);\n this._handleNoListKeydown(event, target, i);\n } else if (this._isListMode() && KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n this._handleListArrowUpDown(event, target);\n }\n }\n\n /** @hidden */\n _isSmallMode(): boolean {\n return this.products?.length < 7;\n }\n\n /** @hidden */\n _isListMode(): boolean {\n return this._listMode || this.forceListMode;\n }\n\n /** @hidden */\n private _checkSize(width: number): void {\n if (this._isSmallMode()) {\n this._listMode = width < containerWidthPxSmallMode;\n } else {\n this._listMode = width < containerWidthPx;\n }\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _handleNoListKeydown(event: KeyboardEvent, target: HTMLElement, i: number): void {\n const previousElementSibling = <HTMLElement>target.previousElementSibling;\n const nextElementSibling = <HTMLElement>target.nextElementSibling;\n\n if (\n i === this.products.length - 1 &&\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) || (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._rtlService?.rtl()))\n ) {\n while (<HTMLElement>target.previousElementSibling) {\n target = <HTMLElement>target.previousElementSibling;\n }\n target.focus();\n }\n\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n this._rtlService?.rtl() ? nextElementSibling?.focus() : previousElementSibling?.focus();\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n this._rtlService?.rtl() ? previousElementSibling?.focus() : nextElementSibling?.focus();\n } else if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n if (this.products.length >= 7) {\n this._handleNoListMoreThanSeven(event, target, i);\n } else if (this.products.length < 7) {\n this._handleNoListLessThanSeven(event, target, i);\n }\n }\n }\n\n /** @hidden */\n private _handleNoListMoreThanSeven(event: KeyboardEvent, target: HTMLElement, i: number): void {\n const nextIndexByColumn = 4;\n const children = target.parentElement?.children;\n\n if (!children) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n (<HTMLElement>children[i + nextIndexByColumn])?.focus();\n }\n\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n (<HTMLElement>children[i - nextIndexByColumn])?.focus();\n }\n }\n\n /** @hidden */\n private _handleNoListLessThanSeven(event: KeyboardEvent, target: HTMLElement, i: number): void {\n const nextIndexByColumn = 3;\n const children = target.parentElement?.children;\n\n if (!children) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n (<HTMLElement>children[i + nextIndexByColumn])?.focus();\n }\n\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n (<HTMLElement>children[i - nextIndexByColumn])?.focus();\n }\n }\n\n /** @hidden */\n private _handleListArrowUpDown(event: KeyboardEvent, target: HTMLElement): void {\n const targetIndex = Array.from(target.parentElement?.children ?? []).indexOf(target);\n const previousElementSibling =\n targetIndex === 0\n ? <HTMLElement>target.parentElement?.children[this.products.length - 1]\n : <HTMLElement>target.previousElementSibling;\n const nextElementSibling =\n targetIndex === this.products.length - 1\n ? <HTMLElement>target.parentElement?.children[0]\n : <HTMLElement>target.nextElementSibling;\n\n if (this._isListMode() && KeyUtil.isKeyCode(event, DOWN_ARROW) && nextElementSibling) {\n nextElementSibling.focus();\n } else if (this._isListMode() && KeyUtil.isKeyCode(event, UP_ARROW) && previousElementSibling) {\n previousElementSibling.focus();\n }\n }\n}\n","<div\n class=\"fd-product-switch__body\"\n [class.fd-product-switch__body--col-3]=\"_isSmallMode() && !_isListMode()\"\n [class.fd-product-switch__body--mobile]=\"_isListMode()\"\n>\n <ul\n fd-dnd-list\n class=\"fd-product-switch__list\"\n [items]=\"products\"\n [gridMode]=\"!_isListMode()\"\n (itemDropped)=\"_productSwitchItemsChangeHandle($event)\"\n >\n @for (product of products; track product) {\n <li\n fd-dnd-item\n tabindex=\"0\"\n class=\"fd-product-switch__item\"\n [class.selected]=\"product.selected\"\n (keydown)=\"_keyDownHandle($event)\"\n (click)=\"_itemClick(product, $event)\"\n [draggable]=\"!product.disabledDragAndDrop && dragAndDropEnabled\"\n [stickInPlace]=\"!!product.stickToPosition\"\n >\n @if (product.avatar) {\n <fd-avatar\n size=\"s\"\n [glyph]=\"product.avatar.glyph ?? null\"\n [label]=\"product.avatar.label ?? null\"\n [circle]=\"!!product.avatar.circle\"\n [image]=\"product.avatar.image ?? null\"\n [contain]=\"!!product.avatar.contain\"\n [transparent]=\"!!product.avatar.transparent\"\n [placeholder]=\"!!product.avatar.placeholder\"\n [tile]=\"!!product.avatar.tile\"\n [colorAccent]=\"product.avatar.colorAccent\"\n [colorIndication]=\"product.avatar.colorIndication\"\n [border]=\"!!product.avatar.border\"\n [alterIcon]=\"product.avatar.alterIcon ?? null\"\n [backupImage]=\"product.avatar.backupImage ?? null\"\n [ariaLabel]=\"product.avatar.ariaLabel ?? null\"\n >\n </fd-avatar>\n } @else {\n <fd-icon\n [font]=\"product.font || FD_DEFAULT_ICON_FONT_FAMILY\"\n role=\"presentation\"\n class=\"fd-product-switch__icon\"\n [glyph]=\"product.icon\"\n ></fd-icon>\n }\n\n <div class=\"fd-product-switch__text\">\n <div class=\"fd-product-switch__title\">{{ product.title }}</div>\n @if (product.subtitle) {\n <div class=\"fd-product-switch__subtitle\">{{ product.subtitle }}</div>\n }\n </div>\n </li>\n }\n </ul>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdProductSwitchButton]',\n standalone: true\n})\nexport class ProductSwitchButtonDirective {\n /** @hidden */\n constructor(readonly templateRef: TemplateRef<any>) {}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_PRODUCT_SWITCH_COMPONENT = new InjectionToken('FdProductSwitchComponent');\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n input,\n model,\n output\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n PopoverBodyComponent,\n PopoverComponent,\n PopoverControlComponent,\n TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ProductSwitchButtonDirective } from '../product-switch-button.directive';\nimport { FD_PRODUCT_SWITCH_COMPONENT } from '../tokens';\n\n@Component({\n selector: 'fd-product-switch',\n templateUrl: './product-switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_PRODUCT_SWITCH_COMPONENT,\n useExisting: ProductSwitchComponent\n }\n ],\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n ButtonComponent,\n PopoverBodyComponent,\n FdTranslatePipe,\n NgTemplateOutlet\n ],\n host: {\n '[class.fd-popover-custom--disabled]': 'disabled()'\n }\n})\nexport class ProductSwitchComponent {\n /** Placement of the product switch dropdown. */\n readonly placement = input<Placement>('bottom-end');\n\n /** Whether the product switch is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the product switch should close when the escape key is pressed. */\n readonly closeOnEscapeKey = input(true, { transform: booleanAttribute });\n\n /** Whether the product switch should close when a click is made outside its boundaries. */\n readonly closeOnOutsideClick = input(true, { transform: booleanAttribute });\n\n /** Whether the product switch dropdown should have an arrow. */\n readonly noArrow = input(true, { transform: booleanAttribute });\n\n /** Whether to wrap content with fd-scrollbar directive. */\n readonly disableScrollbar = input(false, { transform: booleanAttribute });\n\n /** The trigger events that will open/close the product switch. */\n readonly triggers = input<(string | TriggerConfig)[]>(['click']);\n\n /** Whether the product switch should trap focus within its boundaries. */\n readonly focusTrapped = input(false, { transform: booleanAttribute });\n\n /** Whether the product switch should automatically move focus into the trapped region. */\n readonly focusAutoCapture = input(false, { transform: booleanAttribute });\n\n /** Two-way binding for product switch open state. */\n readonly isOpen = model(false);\n\n /** Event emitted right before the product switch is being opened. */\n readonly beforeOpen = output<void>();\n\n /** Event emitted when the product switch open state changes. */\n readonly isOpenChange = output<boolean>();\n\n /** @hidden */\n protected readonly customProductSwitchButton = contentChild(ProductSwitchButtonDirective);\n}\n","<div class=\"fd-product-switch\">\n <fd-popover\n [placement]=\"placement()\"\n [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n [(isOpen)]=\"isOpen\"\n [disabled]=\"disabled()\"\n [triggers]=\"triggers()\"\n [focusTrapped]=\"focusTrapped()\"\n [focusAutoCapture]=\"focusAutoCapture()\"\n [noArrow]=\"noArrow()\"\n [disableScrollbar]=\"disableScrollbar()\"\n (beforeOpen)=\"beforeOpen.emit()\"\n (isOpenChange)=\"isOpenChange.emit($event)\"\n >\n <fd-popover-control>\n @if (!customProductSwitchButton()) {\n <button\n fd-button\n [attr.aria-label]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n [attr.title]=\"'coreProductSwitch.ariaLabel' | fdTranslate\"\n class=\"fd-shellbar__button\"\n glyph=\"grid\"\n fdType=\"transparent\"\n ></button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n }\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ProductSwitchBodyComponent } from './product-switch-body/product-switch-body.component';\nimport { ProductSwitchComponent } from './product-switch/product-switch.component';\n\n/**\n * @deprecated\n * Use direct imports of `ProductSwitchComponent`, `ProductSwitchBodyComponent`\n */\n@NgModule({\n imports: [ProductSwitchComponent, ProductSwitchBodyComponent],\n exports: [ProductSwitchComponent, ProductSwitchBodyComponent]\n})\nexport class ProductSwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -233,7 +233,7 @@ class SelectKeyManagerService {
|
|
|
233
233
|
.withAllowedModifierKeys(['shiftKey']);
|
|
234
234
|
this._keyManager.tabOut.pipe(takeUntilDestroyed(this._component._destroy)).subscribe(() => {
|
|
235
235
|
// tab focus fix for mobile
|
|
236
|
-
if (!this.
|
|
236
|
+
if (!this._isMobile()) {
|
|
237
237
|
this._component.focus();
|
|
238
238
|
this._component.close(false, true);
|
|
239
239
|
}
|
|
@@ -318,13 +318,22 @@ class SelectKeyManagerService {
|
|
|
318
318
|
manager.activeItem._selectViaInteraction();
|
|
319
319
|
this._component.blur();
|
|
320
320
|
}
|
|
321
|
-
else if (!isTyping && KeyUtil.isKeyCode(event, [TAB])
|
|
322
|
-
|
|
321
|
+
else if (!isTyping && KeyUtil.isKeyCode(event, [TAB])) {
|
|
322
|
+
if (this._isMobile()) {
|
|
323
|
+
event.preventDefault();
|
|
324
|
+
}
|
|
323
325
|
}
|
|
324
326
|
else {
|
|
325
327
|
manager.onKeydown(event);
|
|
326
328
|
}
|
|
327
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Checks if the component is in mobile mode.
|
|
332
|
+
* @hidden
|
|
333
|
+
*/
|
|
334
|
+
_isMobile() {
|
|
335
|
+
return typeof this._component.mobile === 'function' ? this._component.mobile() : this._component.mobile;
|
|
336
|
+
}
|
|
328
337
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SelectKeyManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
329
338
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SelectKeyManagerService }); }
|
|
330
339
|
}
|