@spicainternational/ngx-sds-components 7.1.0-beta.9 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/esm2020/src/lib/app-switcher/app-switcher.component.mjs +48 -11
  2. package/esm2020/src/lib/app-switcher/app-switcher.module.mjs +8 -4
  3. package/esm2020/src/lib/date-picker/date-picker.component.mjs +52 -10
  4. package/esm2020/src/lib/date-picker/date-picker.module.mjs +7 -3
  5. package/esm2020/src/lib/date-pipes/date-pipes.module.mjs +5 -4
  6. package/esm2020/src/lib/date-pipes/date-time-formats.constants.mjs +156 -0
  7. package/esm2020/src/lib/date-pipes/date-time-range-format.pipe.mjs +44 -0
  8. package/esm2020/src/lib/date-pipes/public-api.mjs +3 -1
  9. package/esm2020/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.mjs +3 -3
  10. package/esm2020/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.mjs +3 -3
  11. package/esm2020/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.mjs +3 -3
  12. package/esm2020/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.mjs +6 -5
  13. package/esm2020/src/lib/navigation/product-home/product-home.component.mjs +1 -1
  14. package/esm2020/src/lib/timeline/components/timeline.component.mjs +22 -4
  15. package/esm2020/src/lib/timeline/models/timeline.model.mjs +1 -1
  16. package/esm2020/src/lib/timeline/services/timeline.service.mjs +8 -4
  17. package/esm2020/src/lib/timeline/types/timeline.types.mjs +1 -1
  18. package/fesm2015/spicainternational-ngx-sds-components-src-lib-app-switcher.mjs +57 -14
  19. package/fesm2015/spicainternational-ngx-sds-components-src-lib-app-switcher.mjs.map +1 -1
  20. package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +57 -11
  21. package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
  22. package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-pipes.mjs +196 -4
  23. package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-pipes.mjs.map +1 -1
  24. package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs +12 -11
  25. package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
  26. package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs +28 -6
  27. package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
  28. package/fesm2020/spicainternational-ngx-sds-components-src-lib-app-switcher.mjs +54 -14
  29. package/fesm2020/spicainternational-ngx-sds-components-src-lib-app-switcher.mjs.map +1 -1
  30. package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +57 -11
  31. package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
  32. package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-pipes.mjs +202 -4
  33. package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-pipes.mjs.map +1 -1
  34. package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs +12 -11
  35. package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
  36. package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs +28 -6
  37. package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/src/lib/app-switcher/app-switcher.component.d.ts +14 -4
  40. package/src/lib/app-switcher/app-switcher.module.d.ts +5 -4
  41. package/src/lib/date-picker/date-picker.component.d.ts +23 -1
  42. package/src/lib/date-picker/date-picker.module.d.ts +5 -4
  43. package/src/lib/date-pipes/date-pipes.module.d.ts +3 -2
  44. package/src/lib/date-pipes/date-time-formats.constants.d.ts +22 -0
  45. package/src/lib/date-pipes/date-time-range-format.pipe.d.ts +15 -0
  46. package/src/lib/date-pipes/public-api.d.ts +2 -0
  47. package/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.d.ts +1 -1
  48. package/src/lib/timeline/components/timeline.component.d.ts +16 -2
  49. package/src/lib/timeline/models/timeline.model.d.ts +2 -0
  50. package/src/lib/timeline/services/timeline.service.d.ts +2 -2
  51. package/src/lib/timeline/types/timeline.types.d.ts +1 -0
@@ -1,24 +1,43 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, ChangeDetectionStrategy, ViewChild, Input, Output, NgModule } from '@angular/core';
3
- import * as i1 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
5
- import * as i2 from 'devextreme-angular/ui/popover';
2
+ import { EventEmitter, Component, ChangeDetectionStrategy, Inject, ViewChild, Input, Output, NgModule } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import { DOCUMENT, CommonModule } from '@angular/common';
5
+ import * as i1 from '@angular/cdk/a11y';
6
+ import { A11yModule } from '@angular/cdk/a11y';
7
+ import { fromEvent, groupBy, mergeAll } from 'rxjs';
8
+ import * as i3 from 'devextreme-angular/ui/popover';
6
9
  import { DxPopoverModule } from 'devextreme-angular/ui/popover';
7
- import * as i3 from 'devextreme-angular/ui/scroll-view';
10
+ import * as i4 from 'devextreme-angular/ui/scroll-view';
8
11
  import { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';
9
12
 
10
13
  class SdsAppSwitcherComponent {
11
- constructor() {
14
+ constructor(_document) {
15
+ this._document = _document;
12
16
  this.switchText = '';
13
17
  this.discoverText = '';
18
+ /**
19
+ * @description
20
+ * Aria label appended to native button element. Defaults to 'Switch between apps'
21
+ */
22
+ this.ariaLabel = 'Switch between apps';
14
23
  this.productClick = new EventEmitter();
15
24
  this.elementUUID = 'sds-as-' + crypto.randomUUID();
16
25
  this.showDropdown = false;
26
+ this._subscriptions = [];
17
27
  this.showSkeleton = true;
18
28
  this.activatedProducts = new Array();
19
29
  this.discoverProducts = new Array();
20
30
  }
21
- ngOnInit() { }
31
+ ngOnInit() {
32
+ const keyboardEventsSubscription = fromEvent(this._document, 'keydown')
33
+ .pipe(groupBy((e) => e.code), mergeAll())
34
+ .subscribe((keyboardEvent) => {
35
+ if (keyboardEvent.code === 'Escape') {
36
+ this.onCloseDropdownPressed();
37
+ }
38
+ });
39
+ this._subscriptions.push(keyboardEventsSubscription);
40
+ }
22
41
  ngOnChanges(changes) {
23
42
  var _a;
24
43
  if (changes['userProductCodes'] || changes['tenantProducts'] || changes['productCode']) {
@@ -44,19 +63,38 @@ class SdsAppSwitcherComponent {
44
63
  (_a = this.popover) === null || _a === void 0 ? void 0 : _a.instance.repaint();
45
64
  }
46
65
  }
66
+ ngOnDestroy() {
67
+ }
47
68
  emitProductClick(product) {
48
69
  this.productClick.emit(product);
49
70
  }
71
+ onCloseDropdownPressed() {
72
+ var _a;
73
+ if (this.showDropdown) {
74
+ this.showDropdown = false;
75
+ (_a = this.popover) === null || _a === void 0 ? void 0 : _a.instance.hide();
76
+ }
77
+ }
50
78
  onDropdownClicked() {
51
79
  this.showDropdown = !this.showDropdown;
52
80
  }
81
+ onProductKeyReleased(event, product) {
82
+ if (event.key === 'Enter') {
83
+ this.productClick.emit(product);
84
+ }
85
+ }
53
86
  }
54
- SdsAppSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- SdsAppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsAppSwitcherComponent, selector: "sds-app-switcher", inputs: { productCode: "productCode", userProductCodes: "userProductCodes", tenantProducts: "tenantProducts", switchText: "switchText", discoverText: "discoverText" }, outputs: { productClick: "productClick" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #productTemplate let-product=\"product\">\r\n <div class=\"product-logo\">\r\n <img [src]=\"product.logoUri\" alt=\"{{ product.Name }}\">\r\n </div>\r\n <div class=\"product-title d-flex align-items-center\">\r\n {{product.name}}\r\n </div>\r\n <div class=\"product-description\">\r\n {{product.description}}\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n [id]=\"elementUUID\"\r\n class=\"btn-group app-switcher\">\r\n <button \r\n type=\"button\" \r\n class=\"btn btn-link rounded p-0 text-dark switcher-button d-flex align-items-center justify-content-center\"\r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"onDropdownClicked()\">\r\n \r\n <svg width=\"0.86rem\" height=\"0.86rem\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Row 1 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0\" fill=\"black\" />\r\n \r\n <!-- Row 2 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.33rem\" fill=\"black\" />\r\n \r\n <!-- Row 3 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.66rem\" fill=\"black\" />\r\n </svg>\r\n \r\n </button>\r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n target=\"#{{elementUUID}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-app-switcher-popover' }\"\r\n >\r\n <dx-scroll-view \r\n showScrollbar=\"always\">\r\n \r\n <div class=\"app-switcher-menu\">\r\n <ng-container *ngIf=\"showSkeleton\">\r\n <div class=\"header skeleton skeleton-height-1 w-50 \"></div>\r\n <div class=\"product mt-2 skeleton skeleton-height-2\"></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && activatedProducts.length > 0\">\r\n <h6 class=\"header\">{{ switchText }}</h6>\r\n <div *ngFor=\"let activatedProduct of activatedProducts\" \r\n class=\"product\"\r\n (click)=\"emitProductClick(activatedProduct)\">\r\n <ng-container \r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: activatedProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && discoverProducts.length > 0\">\r\n <h6 class=\"header\">{{ discoverText }}</h6>\r\n\r\n <div *ngFor=\"let discoverProduct of discoverProducts\" \r\n class=\"product\"\r\n (click)=\"emitProductClick(discoverProduct)\">\r\n <ng-container \r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: discoverProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </dx-scroll-view>\r\n</dx-popover>\r\n\r\n ", styles: [".switcher-button{width:1.5rem!important;height:1.5rem!important;border:none!important;border-radius:0!important}.switcher-button rect{fill:var(--bs-dark)}::ng-deep .sds-app-switcher-popover .dx-popup-content{padding:.5rem;font-size:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i3.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
87
+ SdsAppSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
88
+ SdsAppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsAppSwitcherComponent, selector: "sds-app-switcher", inputs: { productCode: "productCode", userProductCodes: "userProductCodes", tenantProducts: "tenantProducts", switchText: "switchText", discoverText: "discoverText", ariaLabel: "ariaLabel" }, outputs: { productClick: "productClick" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #productTemplate let-product=\"product\">\r\n <div class=\"product-logo\">\r\n <img [src]=\"product.logoUri\" alt=\"{{ product.Name }}\">\r\n </div>\r\n <div class=\"product-title d-flex align-items-center\">\r\n {{product.name}}\r\n </div>\r\n <div class=\"product-description\">\r\n {{product.description}}\r\n </div>\r\n</ng-template>\r\n\r\n<div\r\n sdsKeyboardShortcut\r\n [id]=\"elementUUID\"\r\n class=\"btn-group app-switcher\"\r\n >\r\n <button\r\n type=\"button\"\r\n tabindex=\"0\"\r\n class=\"btn btn-link rounded p-0 text-dark switcher-button d-flex align-items-center justify-content-center\"\r\n [attr.aria-controls]=\"elementUUID + '_dropdown'\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n (click)=\"onDropdownClicked()\">\r\n\r\n <svg width=\"0.86rem\" height=\"0.86rem\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Row 1 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0\" fill=\"black\" />\r\n\r\n <!-- Row 2 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.33rem\" fill=\"black\" />\r\n\r\n <!-- Row 3 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.66rem\" fill=\"black\" />\r\n </svg>\r\n\r\n </button>\r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n [id]=\"elementUUID + '_dropdown'\"\r\n target=\"#{{elementUUID}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-app-switcher-popover' }\"\r\n >\r\n <dx-scroll-view\r\n showScrollbar=\"always\">\r\n\r\n <div cdkTrapFocus class=\"app-switcher-menu\">\r\n\r\n <ng-container *ngIf=\"showSkeleton\">\r\n <div class=\"header skeleton skeleton-height-1 w-50 \"></div>\r\n <div class=\"product mt-2 skeleton skeleton-height-2\"></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && activatedProducts.length > 0\">\r\n <h6 class=\"header\">{{ switchText }}</h6>\r\n <div *ngFor=\"let activatedProduct of activatedProducts\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n class=\"product\"\r\n (click)=\"emitProductClick(activatedProduct)\"\r\n (keydown)=\"onProductKeyReleased($event, activatedProduct)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: activatedProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && discoverProducts.length > 0\">\r\n <h6 class=\"header\">{{ discoverText }}</h6>\r\n\r\n <div *ngFor=\"let discoverProduct of discoverProducts\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n class=\"product\"\r\n (click)=\"emitProductClick(discoverProduct)\"\r\n (keydown)=\"onProductKeyReleased($event, discoverProduct)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: discoverProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </dx-scroll-view>\r\n</dx-popover>\r\n\r\n", styles: [".switcher-button{width:1.5rem!important;height:1.5rem!important;border:none!important;border-radius:0!important}.switcher-button rect{fill:var(--bs-dark)}::ng-deep .sds-app-switcher-popover .dx-popup-content{padding:.5rem;font-size:1rem}div.product:focus{background-color:var(--bs-gray-200);border-color:var(--bs-gray-200);color:var(--bs-gray-900)}\n"], dependencies: [{ kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i4.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherComponent, decorators: [{
57
90
  type: Component,
58
- args: [{ selector: 'sds-app-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #productTemplate let-product=\"product\">\r\n <div class=\"product-logo\">\r\n <img [src]=\"product.logoUri\" alt=\"{{ product.Name }}\">\r\n </div>\r\n <div class=\"product-title d-flex align-items-center\">\r\n {{product.name}}\r\n </div>\r\n <div class=\"product-description\">\r\n {{product.description}}\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n [id]=\"elementUUID\"\r\n class=\"btn-group app-switcher\">\r\n <button \r\n type=\"button\" \r\n class=\"btn btn-link rounded p-0 text-dark switcher-button d-flex align-items-center justify-content-center\"\r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"onDropdownClicked()\">\r\n \r\n <svg width=\"0.86rem\" height=\"0.86rem\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Row 1 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0\" fill=\"black\" />\r\n \r\n <!-- Row 2 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.33rem\" fill=\"black\" />\r\n \r\n <!-- Row 3 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.66rem\" fill=\"black\" />\r\n </svg>\r\n \r\n </button>\r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n target=\"#{{elementUUID}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-app-switcher-popover' }\"\r\n >\r\n <dx-scroll-view \r\n showScrollbar=\"always\">\r\n \r\n <div class=\"app-switcher-menu\">\r\n <ng-container *ngIf=\"showSkeleton\">\r\n <div class=\"header skeleton skeleton-height-1 w-50 \"></div>\r\n <div class=\"product mt-2 skeleton skeleton-height-2\"></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && activatedProducts.length > 0\">\r\n <h6 class=\"header\">{{ switchText }}</h6>\r\n <div *ngFor=\"let activatedProduct of activatedProducts\" \r\n class=\"product\"\r\n (click)=\"emitProductClick(activatedProduct)\">\r\n <ng-container \r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: activatedProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && discoverProducts.length > 0\">\r\n <h6 class=\"header\">{{ discoverText }}</h6>\r\n\r\n <div *ngFor=\"let discoverProduct of discoverProducts\" \r\n class=\"product\"\r\n (click)=\"emitProductClick(discoverProduct)\">\r\n <ng-container \r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: discoverProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </dx-scroll-view>\r\n</dx-popover>\r\n\r\n ", styles: [".switcher-button{width:1.5rem!important;height:1.5rem!important;border:none!important;border-radius:0!important}.switcher-button rect{fill:var(--bs-dark)}::ng-deep .sds-app-switcher-popover .dx-popup-content{padding:.5rem;font-size:1rem}\n"] }]
59
- }], ctorParameters: function () { return []; }, propDecorators: { popover: [{
91
+ args: [{ selector: 'sds-app-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #productTemplate let-product=\"product\">\r\n <div class=\"product-logo\">\r\n <img [src]=\"product.logoUri\" alt=\"{{ product.Name }}\">\r\n </div>\r\n <div class=\"product-title d-flex align-items-center\">\r\n {{product.name}}\r\n </div>\r\n <div class=\"product-description\">\r\n {{product.description}}\r\n </div>\r\n</ng-template>\r\n\r\n<div\r\n sdsKeyboardShortcut\r\n [id]=\"elementUUID\"\r\n class=\"btn-group app-switcher\"\r\n >\r\n <button\r\n type=\"button\"\r\n tabindex=\"0\"\r\n class=\"btn btn-link rounded p-0 text-dark switcher-button d-flex align-items-center justify-content-center\"\r\n [attr.aria-controls]=\"elementUUID + '_dropdown'\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n (click)=\"onDropdownClicked()\">\r\n\r\n <svg width=\"0.86rem\" height=\"0.86rem\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Row 1 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0\" fill=\"black\" />\r\n\r\n <!-- Row 2 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.33rem\" fill=\"black\" />\r\n\r\n <!-- Row 3 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.66rem\" fill=\"black\" />\r\n </svg>\r\n\r\n </button>\r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n [id]=\"elementUUID + '_dropdown'\"\r\n target=\"#{{elementUUID}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-app-switcher-popover' }\"\r\n >\r\n <dx-scroll-view\r\n showScrollbar=\"always\">\r\n\r\n <div cdkTrapFocus class=\"app-switcher-menu\">\r\n\r\n <ng-container *ngIf=\"showSkeleton\">\r\n <div class=\"header skeleton skeleton-height-1 w-50 \"></div>\r\n <div class=\"product mt-2 skeleton skeleton-height-2\"></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && activatedProducts.length > 0\">\r\n <h6 class=\"header\">{{ switchText }}</h6>\r\n <div *ngFor=\"let activatedProduct of activatedProducts\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n class=\"product\"\r\n (click)=\"emitProductClick(activatedProduct)\"\r\n (keydown)=\"onProductKeyReleased($event, activatedProduct)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: activatedProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && discoverProducts.length > 0\">\r\n <h6 class=\"header\">{{ discoverText }}</h6>\r\n\r\n <div *ngFor=\"let discoverProduct of discoverProducts\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n class=\"product\"\r\n (click)=\"emitProductClick(discoverProduct)\"\r\n (keydown)=\"onProductKeyReleased($event, discoverProduct)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: discoverProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </dx-scroll-view>\r\n</dx-popover>\r\n\r\n", styles: [".switcher-button{width:1.5rem!important;height:1.5rem!important;border:none!important;border-radius:0!important}.switcher-button rect{fill:var(--bs-dark)}::ng-deep .sds-app-switcher-popover .dx-popup-content{padding:.5rem;font-size:1rem}div.product:focus{background-color:var(--bs-gray-200);border-color:var(--bs-gray-200);color:var(--bs-gray-900)}\n"] }]
92
+ }], ctorParameters: function () {
93
+ return [{ type: Document, decorators: [{
94
+ type: Inject,
95
+ args: [DOCUMENT]
96
+ }] }];
97
+ }, propDecorators: { popover: [{
60
98
  type: ViewChild,
61
99
  args: ['popover', { static: false }]
62
100
  }], productCode: [{
@@ -69,6 +107,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
69
107
  type: Input
70
108
  }], discoverText: [{
71
109
  type: Input
110
+ }], ariaLabel: [{
111
+ type: Input
72
112
  }], productClick: [{
73
113
  type: Output
74
114
  }] } });
@@ -76,10 +116,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
76
116
  class SdsAppSwitcherModule {
77
117
  }
78
118
  SdsAppSwitcherModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
79
- SdsAppSwitcherModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherModule, declarations: [SdsAppSwitcherComponent], imports: [CommonModule,
119
+ SdsAppSwitcherModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherModule, declarations: [SdsAppSwitcherComponent], imports: [A11yModule,
120
+ CommonModule,
80
121
  DxPopoverModule,
81
122
  DxScrollViewModule], exports: [SdsAppSwitcherComponent] });
82
- SdsAppSwitcherModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherModule, imports: [CommonModule,
123
+ SdsAppSwitcherModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherModule, imports: [A11yModule,
124
+ CommonModule,
83
125
  DxPopoverModule,
84
126
  DxScrollViewModule] });
85
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAppSwitcherModule, decorators: [{
@@ -89,9 +131,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
89
131
  SdsAppSwitcherComponent
90
132
  ],
91
133
  imports: [
134
+ A11yModule,
92
135
  CommonModule,
93
136
  DxPopoverModule,
94
- DxScrollViewModule
137
+ DxScrollViewModule,
95
138
  ],
96
139
  exports: [
97
140
  SdsAppSwitcherComponent
@@ -1 +1 @@
1
- {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-app-switcher.mjs","sources":["../../../projects/ngx-sds-components/src/lib/app-switcher/app-switcher.component.ts","../../../projects/ngx-sds-components/src/lib/app-switcher/app-switcher.component.html","../../../projects/ngx-sds-components/src/lib/app-switcher/app-switcher.module.ts","../../../projects/ngx-sds-components/src/lib/app-switcher/spicainternational-ngx-sds-components-src-lib-app-switcher.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { DxPopoverComponent } from 'devextreme-angular';\r\n\r\nimport { ProductModel } from './app-switcher.model';\r\n\r\n@Component({\r\n selector: 'sds-app-switcher',\r\n templateUrl: './app-switcher.component.html',\r\n styleUrls: ['./app-switcher.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdsAppSwitcherComponent implements OnInit, OnChanges {\r\n @ViewChild('popover', {static: false}) private popover?: DxPopoverComponent;\r\n \r\n @Input() public productCode: Number | undefined;\r\n @Input() public userProductCodes: Number[] | undefined;\r\n @Input() public tenantProducts: ProductModel[] | undefined;\r\n\r\n @Input() public switchText: string = '';\r\n @Input() public discoverText: string = '';\r\n\r\n @Output() public productClick: EventEmitter<ProductModel> = new EventEmitter();\r\n\r\n\r\n public activatedProducts: ProductModel[];\r\n public discoverProducts: ProductModel[];\r\n \r\n public showSkeleton: boolean;\r\n\r\n public elementUUID = 'sds-as-' + crypto.randomUUID();\r\n public showDropdown = false;\r\n \r\n constructor() {\r\n this.showSkeleton = true;\r\n this.activatedProducts = new Array<ProductModel>();\r\n this.discoverProducts = new Array<ProductModel>(); \r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['userProductCodes'] || changes['tenantProducts'] || changes['productCode']) {\r\n if (this.userProductCodes !== undefined && this.tenantProducts !== undefined && this.productCode !== undefined) {\r\n this.activatedProducts = [];\r\n this.discoverProducts = [];\r\n\r\n this.tenantProducts.forEach(product => {\r\n if ((this.userProductCodes as Number[]).includes(product.code)) {\r\n // exclude current product from the list\r\n if (product.code != this.productCode) {\r\n this.activatedProducts.push(product);\r\n }\r\n } else {\r\n this.discoverProducts.push(product);\r\n }\r\n });\r\n this.showSkeleton = false;\r\n } else {\r\n this.showSkeleton = true;\r\n }\r\n this.popover?.instance.repaint();\r\n }\r\n }\r\n\r\n public emitProductClick(product: ProductModel): void {\r\n this.productClick.emit(product);\r\n }\r\n\r\n public onDropdownClicked(){\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n}\r\n","<ng-template #productTemplate let-product=\"product\">\r\n <div class=\"product-logo\">\r\n <img [src]=\"product.logoUri\" alt=\"{{ product.Name }}\">\r\n </div>\r\n <div class=\"product-title d-flex align-items-center\">\r\n {{product.name}}\r\n </div>\r\n <div class=\"product-description\">\r\n {{product.description}}\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n [id]=\"elementUUID\"\r\n class=\"btn-group app-switcher\">\r\n <button \r\n type=\"button\" \r\n class=\"btn btn-link rounded p-0 text-dark switcher-button d-flex align-items-center justify-content-center\"\r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"onDropdownClicked()\">\r\n \r\n <svg width=\"0.86rem\" height=\"0.86rem\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Row 1 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0\" fill=\"black\" />\r\n \r\n <!-- Row 2 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.33rem\" fill=\"black\" />\r\n \r\n <!-- Row 3 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.66rem\" fill=\"black\" />\r\n </svg>\r\n \r\n </button>\r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n target=\"#{{elementUUID}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-app-switcher-popover' }\"\r\n >\r\n <dx-scroll-view \r\n showScrollbar=\"always\">\r\n \r\n <div class=\"app-switcher-menu\">\r\n <ng-container *ngIf=\"showSkeleton\">\r\n <div class=\"header skeleton skeleton-height-1 w-50 \"></div>\r\n <div class=\"product mt-2 skeleton skeleton-height-2\"></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && activatedProducts.length > 0\">\r\n <h6 class=\"header\">{{ switchText }}</h6>\r\n <div *ngFor=\"let activatedProduct of activatedProducts\" \r\n class=\"product\"\r\n (click)=\"emitProductClick(activatedProduct)\">\r\n <ng-container \r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: activatedProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && discoverProducts.length > 0\">\r\n <h6 class=\"header\">{{ discoverText }}</h6>\r\n\r\n <div *ngFor=\"let discoverProduct of discoverProducts\" \r\n class=\"product\"\r\n (click)=\"emitProductClick(discoverProduct)\">\r\n <ng-container \r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: discoverProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </dx-scroll-view>\r\n</dx-popover>\r\n\r\n ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsAppSwitcherComponent } from './app-switcher.component';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\nimport { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsAppSwitcherComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n DxPopoverModule,\r\n DxScrollViewModule\r\n ],\r\n exports: [\r\n SdsAppSwitcherComponent\r\n ]\r\n})\r\nexport class SdsAppSwitcherModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-app-switcher.mjs","sources":["../../../projects/ngx-sds-components/src/lib/app-switcher/app-switcher.component.ts","../../../projects/ngx-sds-components/src/lib/app-switcher/app-switcher.component.html","../../../projects/ngx-sds-components/src/lib/app-switcher/app-switcher.module.ts","../../../projects/ngx-sds-components/src/lib/app-switcher/spicainternational-ngx-sds-components-src-lib-app-switcher.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { DxPopoverComponent } from 'devextreme-angular';\r\n\r\nimport { ProductModel } from './app-switcher.model';\r\nimport { fromEvent, groupBy, mergeAll, Subscription } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-app-switcher',\r\n templateUrl: './app-switcher.component.html',\r\n styleUrls: ['./app-switcher.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdsAppSwitcherComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild('popover', {static: false}) private popover?: DxPopoverComponent;\r\n\r\n @Input() public productCode: Number | undefined;\r\n @Input() public userProductCodes: Number[] | undefined;\r\n @Input() public tenantProducts: ProductModel[] | undefined;\r\n @Input() public switchText: string = '';\r\n @Input() public discoverText: string = '';\r\n\r\n /**\r\n * @description\r\n * Aria label appended to native button element. Defaults to 'Switch between apps'\r\n */\r\n @Input() public ariaLabel: string = 'Switch between apps'\r\n\r\n @Output() public productClick: EventEmitter<ProductModel> = new EventEmitter();\r\n\r\n\r\n public activatedProducts: ProductModel[];\r\n public discoverProducts: ProductModel[];\r\n\r\n public showSkeleton: boolean;\r\n\r\n public elementUUID = 'sds-as-' + crypto.randomUUID();\r\n public showDropdown = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(@Inject(DOCUMENT) private readonly _document: Document) {\r\n this.showSkeleton = true;\r\n this.activatedProducts = new Array<ProductModel>();\r\n this.discoverProducts = new Array<ProductModel>();\r\n }\r\n\r\n ngOnInit(): void {\r\n const keyboardEventsSubscription = fromEvent<KeyboardEvent>(\r\n this._document,\r\n 'keydown'\r\n )\r\n .pipe(\r\n groupBy((e: KeyboardEvent) => e.code),\r\n mergeAll()\r\n )\r\n .subscribe((keyboardEvent:KeyboardEvent) => {\r\n if (keyboardEvent.code === 'Escape') {\r\n this.onCloseDropdownPressed();\r\n }\r\n\r\n });\r\n\r\n this._subscriptions.push(keyboardEventsSubscription);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['userProductCodes'] || changes['tenantProducts'] || changes['productCode']) {\r\n if (this.userProductCodes !== undefined && this.tenantProducts !== undefined && this.productCode !== undefined) {\r\n this.activatedProducts = [];\r\n this.discoverProducts = [];\r\n\r\n this.tenantProducts.forEach(product => {\r\n if ((this.userProductCodes as Number[]).includes(product.code)) {\r\n // exclude current product from the list\r\n if (product.code != this.productCode) {\r\n this.activatedProducts.push(product);\r\n }\r\n } else {\r\n this.discoverProducts.push(product);\r\n }\r\n });\r\n this.showSkeleton = false;\r\n } else {\r\n this.showSkeleton = true;\r\n }\r\n this.popover?.instance.repaint();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n public emitProductClick(product: ProductModel): void {\r\n this.productClick.emit(product);\r\n }\r\n\r\n public onCloseDropdownPressed(): void {\r\n if (this.showDropdown) {\r\n this.showDropdown = false;\r\n this.popover?.instance.hide();\r\n }\r\n }\r\n\r\n public onDropdownClicked(){\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n public onProductKeyReleased(event: KeyboardEvent, product: ProductModel) {\r\n if (event.key === 'Enter') {\r\n this.productClick.emit(product)\r\n }\r\n }\r\n\r\n}\r\n","<ng-template #productTemplate let-product=\"product\">\r\n <div class=\"product-logo\">\r\n <img [src]=\"product.logoUri\" alt=\"{{ product.Name }}\">\r\n </div>\r\n <div class=\"product-title d-flex align-items-center\">\r\n {{product.name}}\r\n </div>\r\n <div class=\"product-description\">\r\n {{product.description}}\r\n </div>\r\n</ng-template>\r\n\r\n<div\r\n sdsKeyboardShortcut\r\n [id]=\"elementUUID\"\r\n class=\"btn-group app-switcher\"\r\n >\r\n <button\r\n type=\"button\"\r\n tabindex=\"0\"\r\n class=\"btn btn-link rounded p-0 text-dark switcher-button d-flex align-items-center justify-content-center\"\r\n [attr.aria-controls]=\"elementUUID + '_dropdown'\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n (click)=\"onDropdownClicked()\">\r\n\r\n <svg width=\"0.86rem\" height=\"0.86rem\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Row 1 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0\" fill=\"black\" />\r\n\r\n <!-- Row 2 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.33rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.33rem\" fill=\"black\" />\r\n\r\n <!-- Row 3 -->\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.33rem\" y=\"0.66rem\" fill=\"black\" />\r\n <rect width=\"0.2rem\" height=\"0.2rem\" x=\"0.66rem\" y=\"0.66rem\" fill=\"black\" />\r\n </svg>\r\n\r\n </button>\r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n [id]=\"elementUUID + '_dropdown'\"\r\n target=\"#{{elementUUID}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-app-switcher-popover' }\"\r\n >\r\n <dx-scroll-view\r\n showScrollbar=\"always\">\r\n\r\n <div cdkTrapFocus class=\"app-switcher-menu\">\r\n\r\n <ng-container *ngIf=\"showSkeleton\">\r\n <div class=\"header skeleton skeleton-height-1 w-50 \"></div>\r\n <div class=\"product mt-2 skeleton skeleton-height-2\"></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && activatedProducts.length > 0\">\r\n <h6 class=\"header\">{{ switchText }}</h6>\r\n <div *ngFor=\"let activatedProduct of activatedProducts\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n class=\"product\"\r\n (click)=\"emitProductClick(activatedProduct)\"\r\n (keydown)=\"onProductKeyReleased($event, activatedProduct)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: activatedProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!showSkeleton && discoverProducts.length > 0\">\r\n <h6 class=\"header\">{{ discoverText }}</h6>\r\n\r\n <div *ngFor=\"let discoverProduct of discoverProducts\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n class=\"product\"\r\n (click)=\"emitProductClick(discoverProduct)\"\r\n (keydown)=\"onProductKeyReleased($event, discoverProduct)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"productTemplate\"\r\n [ngTemplateOutletContext]=\"{ product: discoverProduct }\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </dx-scroll-view>\r\n</dx-popover>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {A11yModule} from '@angular/cdk/a11y';\r\nimport { SdsAppSwitcherComponent } from './app-switcher.component';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\nimport { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsAppSwitcherComponent\r\n ],\r\n imports: [\r\n A11yModule,\r\n CommonModule,\r\n DxPopoverModule,\r\n DxScrollViewModule,\r\n ],\r\n exports: [\r\n SdsAppSwitcherComponent\r\n ]\r\n})\r\nexport class SdsAppSwitcherModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}