@spicainternational/ngx-sds-components 8.0.0 → 8.1.1

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 (49) hide show
  1. package/esm2022/public-api.mjs +2 -1
  2. package/esm2022/src/lib/avatar/avatar-group.component.mjs +2 -2
  3. package/esm2022/src/lib/avatar/avatar.component.mjs +20 -6
  4. package/esm2022/src/lib/color-picker/color-picker.component.mjs +3 -3
  5. package/esm2022/src/lib/date-picker/date-picker.component.mjs +3 -3
  6. package/esm2022/src/lib/drawer/drawer.component.mjs +2 -2
  7. package/esm2022/src/lib/expansion-panel/expansion-panel.component.mjs +3 -3
  8. package/esm2022/src/lib/modal/dialog/dialog.component.mjs +3 -3
  9. package/esm2022/src/lib/modal/modal.component.mjs +3 -3
  10. package/esm2022/src/lib/navigation/navigation-group/navigation-group.component.mjs +14 -4
  11. package/esm2022/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.mjs +1 -1
  12. package/esm2022/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.mjs +2 -2
  13. package/esm2022/src/lib/ripple/public-api.mjs +2 -0
  14. package/esm2022/src/lib/ripple/ripple.directive.mjs +103 -0
  15. package/esm2022/src/lib/ripple/spicainternational-ngx-sds-components-src-lib-ripple.mjs +5 -0
  16. package/esm2022/src/lib/segmented-control/segmented-control.component.mjs +56 -7
  17. package/esm2022/src/lib/side-bar/side-bar.component.mjs +2 -2
  18. package/fesm2022/spicainternational-ngx-sds-components-src-lib-avatar.mjs +20 -6
  19. package/fesm2022/spicainternational-ngx-sds-components-src-lib-avatar.mjs.map +1 -1
  20. package/fesm2022/spicainternational-ngx-sds-components-src-lib-color-picker.mjs +2 -2
  21. package/fesm2022/spicainternational-ngx-sds-components-src-lib-color-picker.mjs.map +1 -1
  22. package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +2 -2
  23. package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
  24. package/fesm2022/spicainternational-ngx-sds-components-src-lib-drawer.mjs +1 -1
  25. package/fesm2022/spicainternational-ngx-sds-components-src-lib-drawer.mjs.map +1 -1
  26. package/fesm2022/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs +2 -2
  27. package/fesm2022/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs.map +1 -1
  28. package/fesm2022/spicainternational-ngx-sds-components-src-lib-modal.mjs +4 -4
  29. package/fesm2022/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
  30. package/fesm2022/spicainternational-ngx-sds-components-src-lib-navigation.mjs +14 -4
  31. package/fesm2022/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
  32. package/fesm2022/spicainternational-ngx-sds-components-src-lib-ripple.mjs +110 -0
  33. package/fesm2022/spicainternational-ngx-sds-components-src-lib-ripple.mjs.map +1 -0
  34. package/fesm2022/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs +55 -6
  35. package/fesm2022/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs.map +1 -1
  36. package/fesm2022/spicainternational-ngx-sds-components-src-lib-side-bar.mjs +2 -2
  37. package/fesm2022/spicainternational-ngx-sds-components-src-lib-side-bar.mjs.map +1 -1
  38. package/fesm2022/spicainternational-ngx-sds-components.mjs +1 -0
  39. package/fesm2022/spicainternational-ngx-sds-components.mjs.map +1 -1
  40. package/package.json +13 -7
  41. package/public-api.d.ts +1 -0
  42. package/src/lib/avatar/avatar.component.d.ts +7 -4
  43. package/src/lib/modal/modal.component.d.ts +1 -1
  44. package/src/lib/navigation/navigation-group/navigation-group.component.d.ts +3 -2
  45. package/src/lib/ripple/index.d.ts +5 -0
  46. package/src/lib/ripple/public-api.d.ts +1 -0
  47. package/src/lib/ripple/ripple.directive.d.ts +21 -0
  48. package/src/lib/ripple/sds-ripple.css +20 -0
  49. package/src/lib/segmented-control/segmented-control.component.d.ts +10 -4
@@ -1,11 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { EventEmitter, Output, Input, ViewChild, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { FaIconComponent } from '@fortawesome/angular-fontawesome';
4
4
  import { NgClass, NgFor, NgIf } from '@angular/common';
5
5
 
6
6
  class SdsSegmentedControlComponent {
7
- constructor() {
7
+ constructor(cdr) {
8
+ this.cdr = cdr;
8
9
  this.segmentPadding = 'loose';
10
+ this.enableAnimation = true;
9
11
  this.itemChange = new EventEmitter();
10
12
  this.valueChange = new EventEmitter();
11
13
  this.valueExpr = 'value';
@@ -14,16 +16,58 @@ class SdsSegmentedControlComponent {
14
16
  this.style = 'default';
15
17
  }
16
18
  ngOnInit() { }
19
+ ngAfterViewInit() {
20
+ if (this.enableAnimation) {
21
+ this.updateClipPath();
22
+ }
23
+ }
24
+ ngOnChanges(changes) {
25
+ if ((changes['value'] || changes['enableClipPathAnimation']) && this.enableAnimation) {
26
+ // Use a longer timeout to ensure the DOM is updated
27
+ setTimeout(() => this.updateClipPath(), 50);
28
+ }
29
+ }
17
30
  selectItem(item, event) {
18
31
  event.stopPropagation();
19
32
  if (!this.disabled) {
20
33
  this.value = item[this.valueExpr];
21
34
  this.valueChange.emit(this.value);
22
35
  this.itemChange.emit(item);
36
+ if (this.enableAnimation) {
37
+ this.cdr.detectChanges();
38
+ this.updateClipPath();
39
+ }
23
40
  }
24
41
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsSegmentedControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsSegmentedControlComponent, isStandalone: true, selector: "sds-segmented-control", inputs: { items: "items", value: "value", valueExpr: "valueExpr", displayExpr: "displayExpr", iconExpr: "iconExpr", tooltipExpr: "tooltipExpr", idExpr: "idExpr", disabled: "disabled", style: "style", segmentPadding: "segmentPadding" }, outputs: { itemChange: "itemChange", valueChange: "valueChange" }, ngImport: i0, template: "<div \r\n class=\"sds-segmented-control-container\" \r\n [ngClass]=\"{\r\n 'disabled': disabled,\r\n 'sds-segmented-control-primary': style == 'primary',\r\n 'sds-segmented-control-inverted': style == 'inverted'\r\n }\"\r\n >\r\n <div *ngFor=\"let item of items let last = last;\" \r\n class=\"segment\" \r\n id=\"{{idExpr ? item[idExpr]: ''}}\"\r\n [class.selected]=\"item[valueExpr] == value\"\r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [title]=\"tooltipExpr && item[tooltipExpr] ? item[tooltipExpr] : ''\"\r\n (click)=\"selectItem(item, $event)\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n\r\n <!-- <i *ngIf=\"item.icon\" class=\"{{item.icon}} me-2\"></i> -->\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [".sds-segmented-control-container .segment.tight-padding{padding-left:.5rem;padding-right:.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ updateClipPath() {
43
+ setTimeout(() => {
44
+ const container = this.clipPathContainerRef?.nativeElement;
45
+ if (!container)
46
+ return;
47
+ const activeSegment = container.parentElement?.querySelector(`.segment.selected:not(.segment-overlay)`);
48
+ if (activeSegment && container.parentElement) {
49
+ const parentElement = container.parentElement;
50
+ const computedStyle = window.getComputedStyle(parentElement);
51
+ const paddingLeft = parseFloat(computedStyle.paddingLeft);
52
+ const offsetLeft = activeSegment.offsetLeft - paddingLeft;
53
+ const offsetWidth = activeSegment.offsetWidth;
54
+ const overlayWidth = container.offsetWidth;
55
+ // Only update if we have valid dimensions
56
+ if (offsetWidth === 0 || overlayWidth === 0) {
57
+ // Retry after a short delay if elements aren't rendered yet
58
+ setTimeout(() => this.updateClipPath(), 100);
59
+ return;
60
+ }
61
+ const clipLeft = offsetLeft;
62
+ const clipRight = offsetLeft + offsetWidth;
63
+ const clipLeftPercent = ((clipLeft / overlayWidth) * 100).toFixed(2);
64
+ const clipRightPercent = (100 - (clipRight / overlayWidth) * 100).toFixed(2);
65
+ container.style.clipPath = `inset(0 ${clipRightPercent}% 0 ${clipLeftPercent}% round 4px)`;
66
+ }
67
+ }, 0);
68
+ }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsSegmentedControlComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsSegmentedControlComponent, isStandalone: true, selector: "sds-segmented-control", inputs: { items: "items", value: "value", valueExpr: "valueExpr", displayExpr: "displayExpr", iconExpr: "iconExpr", tooltipExpr: "tooltipExpr", idExpr: "idExpr", disabled: "disabled", style: "style", segmentPadding: "segmentPadding", enableAnimation: "enableAnimation" }, outputs: { itemChange: "itemChange", valueChange: "valueChange" }, viewQueries: [{ propertyName: "clipPathContainerRef", first: true, predicate: ["clipPathContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div \r\n class=\"sds-segmented-control-container\" \r\n [ngClass]=\"{\r\n 'disabled': disabled,\r\n 'sds-segmented-control-primary': style == 'primary',\r\n 'sds-segmented-control-inverted': style == 'inverted',\r\n 'clip-path-enabled': enableAnimation\r\n }\">\r\n \r\n <div *ngFor=\"let item of items; let last = last;\" \r\n class=\"segment\" \r\n id=\"{{idExpr ? item[idExpr]: ''}}\"\r\n [class.selected]=\"item[valueExpr] == value\"\r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [title]=\"tooltipExpr && item[tooltipExpr] ? item[tooltipExpr] : ''\"\r\n (click)=\"selectItem(item, $event)\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"enableAnimation\" \r\n class=\"sds-clip-path-overlay\" \r\n #clipPathContainer \r\n aria-hidden=\"true\">\r\n <div *ngFor=\"let item of items; let last = last;\" \r\n class=\"segment segment-overlay\" \r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [tabIndex]=\"-1\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".sds-segmented-control-container .segment.tight-padding{padding-left:.5rem;padding-right:.5rem}.sds-segmented-control-container{display:inline-block;padding:max(.125rem,2px);border-style:solid;border-width:1px;border-radius:6px;border-color:#ced4da;background-color:#fff;font-size:.9rem;position:relative;white-space:nowrap}.sds-segmented-control-container .disabled{pointer-events:none;opacity:.5;background:#ced4da}.sds-segmented-control-container .segment{display:inline-block;border-radius:4px;color:#343434;cursor:pointer;color:#000;font-weight:500;margin-left:auto;margin-right:auto;padding:.25rem 1rem;-webkit-user-select:none;user-select:none}.sds-segmented-control-container .segment.selected{background-color:var(--bs-gray-300)}.sds-segmented-control-container .segment.selected .separator{border-color:transparent}.sds-segmented-control-container .segment:hover:not(.selected){background-color:transparent}.sds-segmented-control-container.disabled{pointer-events:none;opacity:.5;cursor:default}.sds-segmented-control-container.sds-segmented-control-primary .segment.selected{background-color:var(--bs-primary);color:#fff}.sds-segmented-control-container.sds-segmented-control-inverted{background-color:#ced4da;border-color:#ced4da;border-width:0}.sds-segmented-control-container.sds-segmented-control-inverted .segment.selected{background-color:#fff;color:#000}.sds-segmented-control-container.clip-path-enabled .segment.selected{background-color:initial;color:initial}.sds-segmented-control-container .sds-clip-path-overlay{position:absolute;top:max(.125rem,2px);left:max(.125rem,2px);right:max(.125rem,2px);bottom:max(.125rem,2px);display:flex;z-index:1;overflow:hidden;transition:clip-path .25s ease;pointer-events:none;border-radius:4px;background-color:var(--bs-gray-300)}.sds-segmented-control-container .sds-clip-path-overlay .segment-overlay{color:#000;font-weight:500;background:transparent}.sds-segmented-control-container .sds-clip-path-overlay .segment-overlay:hover{background:transparent}.sds-segmented-control-container.sds-segmented-control-primary .sds-clip-path-overlay{background-color:var(--bs-primary)}.sds-segmented-control-container.sds-segmented-control-primary .sds-clip-path-overlay .segment-overlay{color:#fff}.sds-segmented-control-container.sds-segmented-control-inverted .sds-clip-path-overlay{background-color:#fff}.sds-segmented-control-container.sds-segmented-control-inverted .sds-clip-path-overlay .segment-overlay{color:#000}.sds-segmented-control-light .sds-segmented-control-container{background-color:#ced4da;border-color:#ced4da;border-width:0}.sds-segmented-control-light .sds-segmented-control-container .segment.selected{background-color:#fff;color:#000}.sds-segmented-control-light .sds-segmented-control-container .sds-clip-path-overlay{background-color:#fff}.sds-segmented-control-light .sds-segmented-control-container .sds-clip-path-overlay .segment-overlay{color:#000}.sds-segmented-control-primary .sds-segmented-control-container .segment.selected{background-color:var(--bs-primary);color:#fff}.sds-segmented-control-primary .sds-segmented-control-container .sds-clip-path-overlay{background-color:var(--bs-primary)}.sds-segmented-control-primary .sds-segmented-control-container .sds-clip-path-overlay .segment-overlay{color:#fff}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
71
  }
28
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsSegmentedControlComponent, decorators: [{
29
73
  type: Component,
@@ -32,8 +76,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
32
76
  NgFor,
33
77
  NgIf,
34
78
  FaIconComponent,
35
- ], template: "<div \r\n class=\"sds-segmented-control-container\" \r\n [ngClass]=\"{\r\n 'disabled': disabled,\r\n 'sds-segmented-control-primary': style == 'primary',\r\n 'sds-segmented-control-inverted': style == 'inverted'\r\n }\"\r\n >\r\n <div *ngFor=\"let item of items let last = last;\" \r\n class=\"segment\" \r\n id=\"{{idExpr ? item[idExpr]: ''}}\"\r\n [class.selected]=\"item[valueExpr] == value\"\r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [title]=\"tooltipExpr && item[tooltipExpr] ? item[tooltipExpr] : ''\"\r\n (click)=\"selectItem(item, $event)\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n\r\n <!-- <i *ngIf=\"item.icon\" class=\"{{item.icon}} me-2\"></i> -->\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [".sds-segmented-control-container .segment.tight-padding{padding-left:.5rem;padding-right:.5rem}\n"] }]
36
- }], ctorParameters: () => [], propDecorators: { items: [{
79
+ ], template: "<div \r\n class=\"sds-segmented-control-container\" \r\n [ngClass]=\"{\r\n 'disabled': disabled,\r\n 'sds-segmented-control-primary': style == 'primary',\r\n 'sds-segmented-control-inverted': style == 'inverted',\r\n 'clip-path-enabled': enableAnimation\r\n }\">\r\n \r\n <div *ngFor=\"let item of items; let last = last;\" \r\n class=\"segment\" \r\n id=\"{{idExpr ? item[idExpr]: ''}}\"\r\n [class.selected]=\"item[valueExpr] == value\"\r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [title]=\"tooltipExpr && item[tooltipExpr] ? item[tooltipExpr] : ''\"\r\n (click)=\"selectItem(item, $event)\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"enableAnimation\" \r\n class=\"sds-clip-path-overlay\" \r\n #clipPathContainer \r\n aria-hidden=\"true\">\r\n <div *ngFor=\"let item of items; let last = last;\" \r\n class=\"segment segment-overlay\" \r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [tabIndex]=\"-1\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".sds-segmented-control-container .segment.tight-padding{padding-left:.5rem;padding-right:.5rem}.sds-segmented-control-container{display:inline-block;padding:max(.125rem,2px);border-style:solid;border-width:1px;border-radius:6px;border-color:#ced4da;background-color:#fff;font-size:.9rem;position:relative;white-space:nowrap}.sds-segmented-control-container .disabled{pointer-events:none;opacity:.5;background:#ced4da}.sds-segmented-control-container .segment{display:inline-block;border-radius:4px;color:#343434;cursor:pointer;color:#000;font-weight:500;margin-left:auto;margin-right:auto;padding:.25rem 1rem;-webkit-user-select:none;user-select:none}.sds-segmented-control-container .segment.selected{background-color:var(--bs-gray-300)}.sds-segmented-control-container .segment.selected .separator{border-color:transparent}.sds-segmented-control-container .segment:hover:not(.selected){background-color:transparent}.sds-segmented-control-container.disabled{pointer-events:none;opacity:.5;cursor:default}.sds-segmented-control-container.sds-segmented-control-primary .segment.selected{background-color:var(--bs-primary);color:#fff}.sds-segmented-control-container.sds-segmented-control-inverted{background-color:#ced4da;border-color:#ced4da;border-width:0}.sds-segmented-control-container.sds-segmented-control-inverted .segment.selected{background-color:#fff;color:#000}.sds-segmented-control-container.clip-path-enabled .segment.selected{background-color:initial;color:initial}.sds-segmented-control-container .sds-clip-path-overlay{position:absolute;top:max(.125rem,2px);left:max(.125rem,2px);right:max(.125rem,2px);bottom:max(.125rem,2px);display:flex;z-index:1;overflow:hidden;transition:clip-path .25s ease;pointer-events:none;border-radius:4px;background-color:var(--bs-gray-300)}.sds-segmented-control-container .sds-clip-path-overlay .segment-overlay{color:#000;font-weight:500;background:transparent}.sds-segmented-control-container .sds-clip-path-overlay .segment-overlay:hover{background:transparent}.sds-segmented-control-container.sds-segmented-control-primary .sds-clip-path-overlay{background-color:var(--bs-primary)}.sds-segmented-control-container.sds-segmented-control-primary .sds-clip-path-overlay .segment-overlay{color:#fff}.sds-segmented-control-container.sds-segmented-control-inverted .sds-clip-path-overlay{background-color:#fff}.sds-segmented-control-container.sds-segmented-control-inverted .sds-clip-path-overlay .segment-overlay{color:#000}.sds-segmented-control-light .sds-segmented-control-container{background-color:#ced4da;border-color:#ced4da;border-width:0}.sds-segmented-control-light .sds-segmented-control-container .segment.selected{background-color:#fff;color:#000}.sds-segmented-control-light .sds-segmented-control-container .sds-clip-path-overlay{background-color:#fff}.sds-segmented-control-light .sds-segmented-control-container .sds-clip-path-overlay .segment-overlay{color:#000}.sds-segmented-control-primary .sds-segmented-control-container .segment.selected{background-color:var(--bs-primary);color:#fff}.sds-segmented-control-primary .sds-segmented-control-container .sds-clip-path-overlay{background-color:var(--bs-primary)}.sds-segmented-control-primary .sds-segmented-control-container .sds-clip-path-overlay .segment-overlay{color:#fff}\n"] }]
80
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { clipPathContainerRef: [{
81
+ type: ViewChild,
82
+ args: ['clipPathContainer']
83
+ }], items: [{
37
84
  type: Input
38
85
  }], value: [{
39
86
  type: Input
@@ -53,6 +100,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
53
100
  type: Input
54
101
  }], segmentPadding: [{
55
102
  type: Input
103
+ }], enableAnimation: [{
104
+ type: Input
56
105
  }], itemChange: [{
57
106
  type: Output
58
107
  }], valueChange: [{
@@ -1 +1 @@
1
- {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-segmented-control.mjs","sources":["../../../projects/ngx-sds-components/src/lib/segmented-control/segmented-control.component.ts","../../../projects/ngx-sds-components/src/lib/segmented-control/segmented-control.component.html","../../../projects/ngx-sds-components/src/lib/segmented-control/spicainternational-ngx-sds-components-src-lib-segmented-control.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgClass, NgFor, NgIf } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-segmented-control',\r\n templateUrl: './segmented-control.component.html',\r\n styleUrls: ['./segmented-control.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgFor,\r\n NgIf,\r\n FaIconComponent,\r\n ],\r\n})\r\nexport class SdsSegmentedControlComponent implements OnInit {\r\n @Input() items: any[] | undefined;\r\n @Input() value: any;\r\n @Input() valueExpr;\r\n @Input() displayExpr: string | undefined;\r\n @Input() iconExpr: string | undefined;\r\n @Input() tooltipExpr: string | undefined;\r\n @Input() idExpr: string | undefined;\r\n @Input() disabled: boolean;\r\n\r\n @Input() style: 'default' | 'primary' | 'inverted';\r\n @Input() segmentPadding: 'tight' | 'loose' = 'loose';\r\n\r\n @Output() itemChange: EventEmitter<any> = new EventEmitter();\r\n @Output() valueChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n this.valueExpr = 'value';\r\n this.displayExpr = 'text';\r\n this.disabled = false;\r\n this.style = 'default';\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n public selectItem(item: any, event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n this.value = item[this.valueExpr];\r\n this.valueChange.emit(this.value);\r\n this.itemChange.emit(item);\r\n }\r\n }\r\n}\r\n","<div \r\n class=\"sds-segmented-control-container\" \r\n [ngClass]=\"{\r\n 'disabled': disabled,\r\n 'sds-segmented-control-primary': style == 'primary',\r\n 'sds-segmented-control-inverted': style == 'inverted'\r\n }\"\r\n >\r\n <div *ngFor=\"let item of items let last = last;\" \r\n class=\"segment\" \r\n id=\"{{idExpr ? item[idExpr]: ''}}\"\r\n [class.selected]=\"item[valueExpr] == value\"\r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [title]=\"tooltipExpr && item[tooltipExpr] ? item[tooltipExpr] : ''\"\r\n (click)=\"selectItem(item, $event)\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n\r\n <!-- <i *ngIf=\"item.icon\" class=\"{{item.icon}} me-2\"></i> -->\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n</div>","/**\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-segmented-control.mjs","sources":["../../../projects/ngx-sds-components/src/lib/segmented-control/segmented-control.component.ts","../../../projects/ngx-sds-components/src/lib/segmented-control/segmented-control.component.html","../../../projects/ngx-sds-components/src/lib/segmented-control/spicainternational-ngx-sds-components-src-lib-segmented-control.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgClass, NgFor, NgIf } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-segmented-control',\r\n templateUrl: './segmented-control.component.html',\r\n styleUrls: ['./segmented-control.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgFor,\r\n NgIf,\r\n FaIconComponent,\r\n ],\r\n})\r\nexport class SdsSegmentedControlComponent implements OnInit, AfterViewInit, OnChanges {\r\n @ViewChild('clipPathContainer') clipPathContainerRef!: ElementRef<HTMLDivElement>;\r\n\r\n @Input() items: any[] | undefined;\r\n @Input() value: any;\r\n @Input() valueExpr;\r\n @Input() displayExpr: string | undefined;\r\n @Input() iconExpr: string | undefined;\r\n @Input() tooltipExpr: string | undefined;\r\n @Input() idExpr: string | undefined;\r\n @Input() disabled: boolean;\r\n @Input() style: 'default' | 'primary' | 'inverted';\r\n @Input() segmentPadding: 'tight' | 'loose' = 'loose';\r\n @Input() enableAnimation: boolean = true;\r\n\r\n @Output() itemChange: EventEmitter<any> = new EventEmitter();\r\n @Output() valueChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n this.valueExpr = 'value';\r\n this.displayExpr = 'text';\r\n this.disabled = false;\r\n this.style = 'default';\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {\r\n if (this.enableAnimation) {\r\n this.updateClipPath();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ((changes['value'] || changes['enableClipPathAnimation']) && this.enableAnimation) {\r\n // Use a longer timeout to ensure the DOM is updated\r\n setTimeout(() => this.updateClipPath(), 50);\r\n }\r\n }\r\n\r\n public selectItem(item: any, event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n this.value = item[this.valueExpr];\r\n this.valueChange.emit(this.value);\r\n this.itemChange.emit(item);\r\n\r\n if (this.enableAnimation) {\r\n this.cdr.detectChanges(); \r\n this.updateClipPath();\r\n }\r\n }\r\n }\r\n\r\n private updateClipPath() {\r\n setTimeout(() => {\r\n const container = this.clipPathContainerRef?.nativeElement;\r\n if (!container) return;\r\n\r\n const activeSegment = container.parentElement?.querySelector(\r\n `.segment.selected:not(.segment-overlay)`\r\n ) as HTMLElement;\r\n\r\n if (activeSegment && container.parentElement) {\r\n const parentElement = container.parentElement;\r\n \r\n const computedStyle = window.getComputedStyle(parentElement);\r\n const paddingLeft = parseFloat(computedStyle.paddingLeft);\r\n \r\n const offsetLeft = activeSegment.offsetLeft - paddingLeft;\r\n const offsetWidth = activeSegment.offsetWidth;\r\n const overlayWidth = container.offsetWidth;\r\n\r\n // Only update if we have valid dimensions\r\n if (offsetWidth === 0 || overlayWidth === 0) {\r\n // Retry after a short delay if elements aren't rendered yet\r\n setTimeout(() => this.updateClipPath(), 100);\r\n return;\r\n }\r\n\r\n const clipLeft = offsetLeft;\r\n const clipRight = offsetLeft + offsetWidth;\r\n \r\n const clipLeftPercent = ((clipLeft / overlayWidth) * 100).toFixed(2);\r\n const clipRightPercent = (100 - (clipRight / overlayWidth) * 100).toFixed(2);\r\n \r\n container.style.clipPath = `inset(0 ${clipRightPercent}% 0 ${clipLeftPercent}% round 4px)`;\r\n }\r\n }, 0);\r\n }\r\n}","<div \r\n class=\"sds-segmented-control-container\" \r\n [ngClass]=\"{\r\n 'disabled': disabled,\r\n 'sds-segmented-control-primary': style == 'primary',\r\n 'sds-segmented-control-inverted': style == 'inverted',\r\n 'clip-path-enabled': enableAnimation\r\n }\">\r\n \r\n <div *ngFor=\"let item of items; let last = last;\" \r\n class=\"segment\" \r\n id=\"{{idExpr ? item[idExpr]: ''}}\"\r\n [class.selected]=\"item[valueExpr] == value\"\r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [title]=\"tooltipExpr && item[tooltipExpr] ? item[tooltipExpr] : ''\"\r\n (click)=\"selectItem(item, $event)\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"enableAnimation\" \r\n class=\"sds-clip-path-overlay\" \r\n #clipPathContainer \r\n aria-hidden=\"true\">\r\n <div *ngFor=\"let item of items; let last = last;\" \r\n class=\"segment segment-overlay\" \r\n [class.tight-padding]=\"segmentPadding == 'tight'\"\r\n [tabIndex]=\"-1\">\r\n\r\n <div class=\"sds-flex-row-center gap-2\">\r\n <fa-icon *ngIf=\"iconExpr && item[iconExpr]\" [icon]=\"item[iconExpr]\" [fixedWidth]=\"true\"></fa-icon>\r\n <span *ngIf=\"displayExpr\">{{item[displayExpr]}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -27,11 +27,11 @@ class SdsSideBarComponent {
27
27
  this.isCollapsed.set(!this.isCollapsed());
28
28
  }
29
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsSideBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SdsSideBarComponent, isStandalone: true, selector: "sds-side-bar", inputs: { widthRem: { classPropertyName: "widthRem", publicName: "widthRem", isSignal: false, isRequired: false, transformFunction: null }, product: { classPropertyName: "product", publicName: "product", isSignal: false, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<div \r\n class=\"sds-side-bar-container\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\" \r\n [class.disable-transition]=\"!isCollapsed()\"\r\n >\r\n\r\n <aside\r\n class=\"sds-side-bar h-100 border-end\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n [class]=\"(product ? 'product-' + product : null)\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\"\r\n >\r\n <div class=\"d-flex flex-column flex-grow-0 h-100 w-100x\" \r\n style=\"transition: none\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n >\r\n <ng-content></ng-content> \r\n </div>\r\n </aside>\r\n</div>", styles: [".sds-side-bar{transition:.2s ease-in-out;overflow-x:hidden;z-index:10;position:relative}.sds-side-bar.disable-transition{transition:none}:host{display:block}\n"] }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SdsSideBarComponent, isStandalone: true, selector: "sds-side-bar", inputs: { widthRem: { classPropertyName: "widthRem", publicName: "widthRem", isSignal: false, isRequired: false, transformFunction: null }, product: { classPropertyName: "product", publicName: "product", isSignal: false, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<div \r\n class=\"sds-side-bar-container\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\" \r\n [class.disable-transition]=\"!isCollapsed()\"\r\n >\r\n\r\n <aside\r\n class=\"sds-side-bar h-100 border-end\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n [class]=\"(product ? 'product-' + product : null)\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\"\r\n >\r\n <div class=\"d-flex flex-column flex-grow-0 h-100 w-100x\" \r\n style=\"transition: none\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n >\r\n <ng-content></ng-content> \r\n </div>\r\n </aside>\r\n</div>", styles: [".sds-side-bar{transition:.2s ease-out;overflow-x:hidden;z-index:10;position:relative}.sds-side-bar.disable-transition{transition:none}:host{display:block}\n"] }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsSideBarComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ selector: 'sds-side-bar', standalone: true, imports: [NgIf, NgStyle, FaIconComponent], template: "<div \r\n class=\"sds-side-bar-container\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\" \r\n [class.disable-transition]=\"!isCollapsed()\"\r\n >\r\n\r\n <aside\r\n class=\"sds-side-bar h-100 border-end\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n [class]=\"(product ? 'product-' + product : null)\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\"\r\n >\r\n <div class=\"d-flex flex-column flex-grow-0 h-100 w-100x\" \r\n style=\"transition: none\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n >\r\n <ng-content></ng-content> \r\n </div>\r\n </aside>\r\n</div>", styles: [".sds-side-bar{transition:.2s ease-in-out;overflow-x:hidden;z-index:10;position:relative}.sds-side-bar.disable-transition{transition:none}:host{display:block}\n"] }]
34
+ args: [{ selector: 'sds-side-bar', standalone: true, imports: [NgIf, NgStyle, FaIconComponent], template: "<div \r\n class=\"sds-side-bar-container\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\" \r\n [class.disable-transition]=\"!isCollapsed()\"\r\n >\r\n\r\n <aside\r\n class=\"sds-side-bar h-100 border-end\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n [class]=\"(product ? 'product-' + product : null)\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\"\r\n >\r\n <div class=\"d-flex flex-column flex-grow-0 h-100 w-100x\" \r\n style=\"transition: none\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n >\r\n <ng-content></ng-content> \r\n </div>\r\n </aside>\r\n</div>", styles: [".sds-side-bar{transition:.2s ease-out;overflow-x:hidden;z-index:10;position:relative}.sds-side-bar.disable-transition{transition:none}:host{display:block}\n"] }]
35
35
  }], ctorParameters: () => [], propDecorators: { widthRem: [{
36
36
  type: Input
37
37
  }], product: [{
@@ -1 +1 @@
1
- {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-side-bar.mjs","sources":["../../../projects/ngx-sds-components/src/lib/side-bar/side-bar.component.ts","../../../projects/ngx-sds-components/src/lib/side-bar/side-bar.component.html","../../../projects/ngx-sds-components/src/lib/side-bar/spicainternational-ngx-sds-components-src-lib-side-bar.ts"],"sourcesContent":["import { Component, inject, input, Input, model, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgIf, NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-side-bar',\r\n templateUrl: './side-bar.component.html',\r\n styleUrls: ['./side-bar.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, NgStyle, FaIconComponent],\r\n})\r\nexport class SdsSideBarComponent {\r\n\r\n /**\r\n * Define the width of the side bar in rem.\r\n *\r\n * @type {number}\r\n * @memberof SdsSideBarComponent\r\n */\r\n @Input() public widthRem: number = 16;\r\n\r\n /**\r\n * Product name defines the color scheme of the side bar.\r\n * Default is 'all-hours'.\r\n * Options: 'all-hours', 'door-cloud', 'my-hours', 'time-and-space'\r\n *\r\n * @type {string}\r\n * @memberof SdsSideBarComponent\r\n */\r\n @Input() product: 'all-hours' | 'door-cloud' | 'my-hours' | 'time-and-space' = 'all-hours';\r\n\r\n isCollapsed = model<boolean>(false)\r\n\r\n constructor() {}\r\n\r\n public toggleSideBar(state?: boolean) {\r\n this.isCollapsed.set(!this.isCollapsed());\r\n } \r\n}\r\n","<div \r\n class=\"sds-side-bar-container\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\" \r\n [class.disable-transition]=\"!isCollapsed()\"\r\n >\r\n\r\n <aside\r\n class=\"sds-side-bar h-100 border-end\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n [class]=\"(product ? 'product-' + product : null)\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\"\r\n >\r\n <div class=\"d-flex flex-column flex-grow-0 h-100 w-100x\" \r\n style=\"transition: none\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n >\r\n <ng-content></ng-content> \r\n </div>\r\n </aside>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,mBAAmB,CAAA;AAsB5B,IAAA,WAAA,GAAA;AApBA;;;;;AAKG;QACa,IAAQ,CAAA,QAAA,GAAW,EAAE;AAErC;;;;;;;AAOG;QACM,IAAO,CAAA,OAAA,GAA+D,WAAW;AAE1F,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;;AAI5B,IAAA,aAAa,CAAC,KAAe,EAAA;QAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;+GAzBpC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,8gBCXhC,wtBAmBM,EAAA,MAAA,EAAA,CAAA,iKAAA,CAAA,EAAA,CAAA,CAAA;;4FDRO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACI,cAAc,EAAA,UAAA,EAGZ,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,wtBAAA,EAAA,MAAA,EAAA,CAAA,iKAAA,CAAA,EAAA;wDAUzB,QAAQ,EAAA,CAAA;sBAAvB;gBAUQ,OAAO,EAAA,CAAA;sBAAf;;;AE7BL;;AAEG;;;;"}
1
+ {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-side-bar.mjs","sources":["../../../projects/ngx-sds-components/src/lib/side-bar/side-bar.component.ts","../../../projects/ngx-sds-components/src/lib/side-bar/side-bar.component.html","../../../projects/ngx-sds-components/src/lib/side-bar/spicainternational-ngx-sds-components-src-lib-side-bar.ts"],"sourcesContent":["import { Component, inject, input, Input, model, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgIf, NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-side-bar',\r\n templateUrl: './side-bar.component.html',\r\n styleUrls: ['./side-bar.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, NgStyle, FaIconComponent],\r\n})\r\nexport class SdsSideBarComponent {\r\n\r\n /**\r\n * Define the width of the side bar in rem.\r\n *\r\n * @type {number}\r\n * @memberof SdsSideBarComponent\r\n */\r\n @Input() public widthRem: number = 16;\r\n\r\n /**\r\n * Product name defines the color scheme of the side bar.\r\n * Default is 'all-hours'.\r\n * Options: 'all-hours', 'door-cloud', 'my-hours', 'time-and-space'\r\n *\r\n * @type {string}\r\n * @memberof SdsSideBarComponent\r\n */\r\n @Input() product: 'all-hours' | 'door-cloud' | 'my-hours' | 'time-and-space' = 'all-hours';\r\n\r\n isCollapsed = model<boolean>(false)\r\n\r\n constructor() {}\r\n\r\n public toggleSideBar(state?: boolean) {\r\n this.isCollapsed.set(!this.isCollapsed());\r\n } \r\n}\r\n","<div \r\n class=\"sds-side-bar-container\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\" \r\n [class.disable-transition]=\"!isCollapsed()\"\r\n >\r\n\r\n <aside\r\n class=\"sds-side-bar h-100 border-end\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n [class]=\"(product ? 'product-' + product : null)\"\r\n [class.sds-side-bar-open]=\"!isCollapsed()\"\r\n >\r\n <div class=\"d-flex flex-column flex-grow-0 h-100 w-100x\" \r\n style=\"transition: none\"\r\n [style.width.rem]=\"!isCollapsed() ? widthRem : 3.5\"\r\n >\r\n <ng-content></ng-content> \r\n </div>\r\n </aside>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,mBAAmB,CAAA;AAsB5B,IAAA,WAAA,GAAA;AApBA;;;;;AAKG;QACa,IAAQ,CAAA,QAAA,GAAW,EAAE;AAErC;;;;;;;AAOG;QACM,IAAO,CAAA,OAAA,GAA+D,WAAW;AAE1F,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;;AAI5B,IAAA,aAAa,CAAC,KAAe,EAAA;QAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;+GAzBpC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,8gBCXhC,wtBAmBM,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA,CAAA,CAAA;;4FDRO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACI,cAAc,EAAA,UAAA,EAGZ,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,wtBAAA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA;wDAUzB,QAAQ,EAAA,CAAA;sBAAvB;gBAUQ,OAAO,EAAA,CAAA;sBAAf;;;AE7BL;;AAEG;;;;"}
@@ -20,6 +20,7 @@ export * from '@spicainternational/ngx-sds-components/src/lib/navigation';
20
20
  export * from '@spicainternational/ngx-sds-components/src/lib/number-box';
21
21
  export * from '@spicainternational/ngx-sds-components/src/lib/page-header';
22
22
  export * from '@spicainternational/ngx-sds-components/src/lib/pane';
23
+ export * from '@spicainternational/ngx-sds-components/src/lib/ripple';
23
24
  export * from '@spicainternational/ngx-sds-components/src/lib/quick-info';
24
25
  export * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';
25
26
  export * from '@spicainternational/ngx-sds-components/src/lib/side-bar';
@@ -1 +1 @@
1
- {"version":3,"file":"spicainternational-ngx-sds-components.mjs","sources":["../../../projects/ngx-sds-components/src/public-api.ts","../../../projects/ngx-sds-components/src/spicainternational-ngx-sds-components.ts"],"sourcesContent":["/*\r\n * Public API Surface of ngx-sds-components\r\n */\r\n\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/avatar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/badge';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/callout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/color-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/ellipsis';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/expansion-panel';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-pipes';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/drawer';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-pipe';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/highlight-text';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/intersection';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/keyboard-shortcut';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/layout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/message';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/modal';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/navigation';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/number-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/page-header';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/pane';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/quick-info';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/side-bar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/static-value';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timeline';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timer';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/tooltip';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/table-actions';\r\n\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/utils';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
1
+ {"version":3,"file":"spicainternational-ngx-sds-components.mjs","sources":["../../../projects/ngx-sds-components/src/public-api.ts","../../../projects/ngx-sds-components/src/spicainternational-ngx-sds-components.ts"],"sourcesContent":["/*\r\n * Public API Surface of ngx-sds-components\r\n */\r\n\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/avatar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/badge';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/callout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/color-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/ellipsis';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/expansion-panel';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-pipes';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/drawer';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-pipe';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/highlight-text';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/intersection';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/keyboard-shortcut';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/layout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/message';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/modal';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/navigation';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/number-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/page-header';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/pane';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/ripple';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/quick-info';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/side-bar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/static-value';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timeline';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timer';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/tooltip';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/table-actions';\r\n\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/utils';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spicainternational/ngx-sds-components",
3
- "version": "8.0.0",
3
+ "version": "8.1.1",
4
4
  "license": "MIT",
5
5
  "description": "Spica design system angular components.",
6
6
  "type": "module",
@@ -48,18 +48,18 @@
48
48
  "esm": "./esm2022/src/lib/avatar/spicainternational-ngx-sds-components-src-lib-avatar.mjs",
49
49
  "default": "./fesm2022/spicainternational-ngx-sds-components-src-lib-avatar.mjs"
50
50
  },
51
- "./src/lib/callout": {
52
- "types": "./src/lib/callout/index.d.ts",
53
- "esm2022": "./esm2022/src/lib/callout/spicainternational-ngx-sds-components-src-lib-callout.mjs",
54
- "esm": "./esm2022/src/lib/callout/spicainternational-ngx-sds-components-src-lib-callout.mjs",
55
- "default": "./fesm2022/spicainternational-ngx-sds-components-src-lib-callout.mjs"
56
- },
57
51
  "./src/lib/badge": {
58
52
  "types": "./src/lib/badge/index.d.ts",
59
53
  "esm2022": "./esm2022/src/lib/badge/spicainternational-ngx-sds-components-src-lib-badge.mjs",
60
54
  "esm": "./esm2022/src/lib/badge/spicainternational-ngx-sds-components-src-lib-badge.mjs",
61
55
  "default": "./fesm2022/spicainternational-ngx-sds-components-src-lib-badge.mjs"
62
56
  },
57
+ "./src/lib/callout": {
58
+ "types": "./src/lib/callout/index.d.ts",
59
+ "esm2022": "./esm2022/src/lib/callout/spicainternational-ngx-sds-components-src-lib-callout.mjs",
60
+ "esm": "./esm2022/src/lib/callout/spicainternational-ngx-sds-components-src-lib-callout.mjs",
61
+ "default": "./fesm2022/spicainternational-ngx-sds-components-src-lib-callout.mjs"
62
+ },
63
63
  "./src/lib/color-picker": {
64
64
  "types": "./src/lib/color-picker/index.d.ts",
65
65
  "esm2022": "./esm2022/src/lib/color-picker/spicainternational-ngx-sds-components-src-lib-color-picker.mjs",
@@ -174,6 +174,12 @@
174
174
  "esm": "./esm2022/src/lib/quick-info/spicainternational-ngx-sds-components-src-lib-quick-info.mjs",
175
175
  "default": "./fesm2022/spicainternational-ngx-sds-components-src-lib-quick-info.mjs"
176
176
  },
177
+ "./src/lib/ripple": {
178
+ "types": "./src/lib/ripple/index.d.ts",
179
+ "esm2022": "./esm2022/src/lib/ripple/spicainternational-ngx-sds-components-src-lib-ripple.mjs",
180
+ "esm": "./esm2022/src/lib/ripple/spicainternational-ngx-sds-components-src-lib-ripple.mjs",
181
+ "default": "./fesm2022/spicainternational-ngx-sds-components-src-lib-ripple.mjs"
182
+ },
177
183
  "./src/lib/segmented-control": {
178
184
  "types": "./src/lib/segmented-control/index.d.ts",
179
185
  "esm2022": "./esm2022/src/lib/segmented-control/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs",
package/public-api.d.ts CHANGED
@@ -20,6 +20,7 @@ export * from '@spicainternational/ngx-sds-components/src/lib/navigation';
20
20
  export * from '@spicainternational/ngx-sds-components/src/lib/number-box';
21
21
  export * from '@spicainternational/ngx-sds-components/src/lib/page-header';
22
22
  export * from '@spicainternational/ngx-sds-components/src/lib/pane';
23
+ export * from '@spicainternational/ngx-sds-components/src/lib/ripple';
23
24
  export * from '@spicainternational/ngx-sds-components/src/lib/quick-info';
24
25
  export * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';
25
26
  export * from '@spicainternational/ngx-sds-components/src/lib/side-bar';
@@ -7,10 +7,10 @@ import * as i0 from "@angular/core";
7
7
  * @property {boolean} showHint - show hint with text
8
8
  * @property {string} initialsText - override internal extraction of initials and set avatar text directly
9
9
  *
10
- * @property {string} pictureUri - uri of picture to show on avatar
10
+ * @property {string} pictureUri - uri of picture to show on avatar (supports http/https URLs and base64 data URIs)
11
11
  * @property {string} pictureImageAlt - alt text for image, for accessibility
12
- * @property {string} pictureLoading - loading strategy for image, lazy or eager
13
- * @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images
12
+ * @property {string} pictureLoading - loading strategy for image, lazy or eager (only applies to URLs, not base64)
13
+ * @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images (only applies to URLs, not base64)
14
14
  *
15
15
  * @property {string} badgeVisible - show badge on avatar
16
16
  * @property {string} badgePosition - position of badge
@@ -25,6 +25,7 @@ export declare class SdsAvatarComponent implements AfterViewInit, OnChanges {
25
25
  showHint: boolean;
26
26
  borderStyle: 'solid' | 'dashed' | 'dotted' | 'none';
27
27
  borderColor?: string;
28
+ borderWidth?: string;
28
29
  initialsText?: string;
29
30
  cursor?: string;
30
31
  size: number;
@@ -40,14 +41,16 @@ export declare class SdsAvatarComponent implements AfterViewInit, OnChanges {
40
41
  showPicture: boolean;
41
42
  colorClass: string;
42
43
  imageSizeInPixels: number;
44
+ isBase64Image: boolean;
43
45
  constructor();
44
46
  ngAfterViewInit(): void;
45
47
  ngOnChanges(changes: SimpleChanges): void;
46
48
  private setShowPicture;
49
+ private checkIfBase64;
47
50
  private setColorClass;
48
51
  private setLabel;
49
52
  private calculatePixelSize;
50
53
  private getColorIndex;
51
54
  static ɵfac: i0.ɵɵFactoryDeclaration<SdsAvatarComponent, never>;
52
- static ɵcmp: i0.ɵɵComponentDeclaration<SdsAvatarComponent, "sds-avatar", never, { "text": { "alias": "text"; "required": false; }; "colorKey": { "alias": "colorKey"; "required": false; }; "pictureUri": { "alias": "pictureUri"; "required": false; }; "showHint": { "alias": "showHint"; "required": false; }; "borderStyle": { "alias": "borderStyle"; "required": false; }; "borderColor": { "alias": "borderColor"; "required": false; }; "initialsText": { "alias": "initialsText"; "required": false; }; "cursor": { "alias": "cursor"; "required": false; }; "size": { "alias": "size"; "required": false; }; "pictureImageAlt": { "alias": "pictureImageAlt"; "required": false; }; "pictureLoading": { "alias": "pictureLoading"; "required": false; }; "picturePriority": { "alias": "picturePriority"; "required": false; }; "badgeVisible": { "alias": "badgeVisible"; "required": false; }; "badgePosition": { "alias": "badgePosition"; "required": false; }; "badgeBackgroundColor": { "alias": "badgeBackgroundColor"; "required": false; }; "badgeTextColor": { "alias": "badgeTextColor"; "required": false; }; "badgeHint": { "alias": "badgeHint"; "required": false; }; }, {}, never, never, true, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdsAvatarComponent, "sds-avatar", never, { "text": { "alias": "text"; "required": false; }; "colorKey": { "alias": "colorKey"; "required": false; }; "pictureUri": { "alias": "pictureUri"; "required": false; }; "showHint": { "alias": "showHint"; "required": false; }; "borderStyle": { "alias": "borderStyle"; "required": false; }; "borderColor": { "alias": "borderColor"; "required": false; }; "borderWidth": { "alias": "borderWidth"; "required": false; }; "initialsText": { "alias": "initialsText"; "required": false; }; "cursor": { "alias": "cursor"; "required": false; }; "size": { "alias": "size"; "required": false; }; "pictureImageAlt": { "alias": "pictureImageAlt"; "required": false; }; "pictureLoading": { "alias": "pictureLoading"; "required": false; }; "picturePriority": { "alias": "picturePriority"; "required": false; }; "badgeVisible": { "alias": "badgeVisible"; "required": false; }; "badgePosition": { "alias": "badgePosition"; "required": false; }; "badgeBackgroundColor": { "alias": "badgeBackgroundColor"; "required": false; }; "badgeTextColor": { "alias": "badgeTextColor"; "required": false; }; "badgeHint": { "alias": "badgeHint"; "required": false; }; }, {}, never, never, true, never>;
53
56
  }
@@ -16,7 +16,7 @@ export declare class SdsModalComponent implements OnInit, OnChanges {
16
16
  closeOnEscape: boolean;
17
17
  downSizing: 'discrete' | 'continuous';
18
18
  /**
19
- * Allow the modal to be draggable by the user. Default is false.
19
+ * Allow the modal to be draggable by the user. Default is true.
20
20
  *
21
21
  * @memberof SdsModalComponent
22
22
  */
@@ -1,9 +1,9 @@
1
- import { OnDestroy, OnInit, QueryList } from '@angular/core';
1
+ import { OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { SdsNavigationRouteLinkComponent } from '../navigation-route-link/navigation-route-link.component';
4
4
  import { CollapsibleNavigationEntity } from '../models/navigation-models';
5
5
  import * as i0 from "@angular/core";
6
- export declare class SdsNavigationGroupComponent implements OnInit, OnDestroy, CollapsibleNavigationEntity {
6
+ export declare class SdsNavigationGroupComponent implements OnInit, OnDestroy, CollapsibleNavigationEntity, OnChanges {
7
7
  private _router;
8
8
  /**
9
9
  * List of paths allowed/expected within this module.
@@ -37,6 +37,7 @@ export declare class SdsNavigationGroupComponent implements OnInit, OnDestroy, C
37
37
  constructor(_router: Router);
38
38
  isCollapsed: import("@angular/core").ModelSignal<boolean>;
39
39
  ngOnInit(): void;
40
+ ngOnChanges(changes: SimpleChanges): void;
40
41
  ngOnDestroy(): void;
41
42
  onHiding(e: any): void;
42
43
  static ɵfac: i0.ɵɵFactoryDeclaration<SdsNavigationGroupComponent, never>;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@spicainternational/ngx-sds-components/src/lib/ripple" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export * from './ripple.directive';
@@ -0,0 +1,21 @@
1
+ import { ElementRef, OnDestroy, Renderer2 } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdsRippleDirective implements OnDestroy {
4
+ private el;
5
+ private renderer;
6
+ sdsRippleColor: string;
7
+ sdsRippleDuration: number;
8
+ sdsRippleMaxConcurrent: number;
9
+ addContainer: boolean;
10
+ position: string;
11
+ overflow: string;
12
+ private activeRipples;
13
+ private touchTimeout;
14
+ constructor(el: ElementRef, renderer: Renderer2);
15
+ onTouchStart(event: TouchEvent): void;
16
+ onMouseDown(event: MouseEvent): void;
17
+ private createRipple;
18
+ ngOnDestroy(): void;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdsRippleDirective, never>;
20
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SdsRippleDirective, "[sdsRipple]", never, { "sdsRippleColor": { "alias": "sdsRippleColor"; "required": false; }; "sdsRippleDuration": { "alias": "sdsRippleDuration"; "required": false; }; "sdsRippleMaxConcurrent": { "alias": "sdsRippleMaxConcurrent"; "required": false; }; }, {}, never, never, true, never>;
21
+ }
@@ -0,0 +1,20 @@
1
+ .sds-ripple-container {
2
+ position: relative;
3
+ overflow: hidden;
4
+ }
5
+
6
+ .sds-ripple {
7
+ position: absolute;
8
+ border-radius: 50%;
9
+ pointer-events: none;
10
+ animation: sds-ripple-animation ease-out;
11
+ /* animation: sds-ripple-animation 0.6s ease-out; */
12
+ transform: scale(0);
13
+ }
14
+
15
+ @keyframes sds-ripple-animation {
16
+ to {
17
+ transform: scale(4);
18
+ opacity: 0;
19
+ }
20
+ }
@@ -1,6 +1,8 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class SdsSegmentedControlComponent implements OnInit {
3
+ export declare class SdsSegmentedControlComponent implements OnInit, AfterViewInit, OnChanges {
4
+ private cdr;
5
+ clipPathContainerRef: ElementRef<HTMLDivElement>;
4
6
  items: any[] | undefined;
5
7
  value: any;
6
8
  valueExpr: string;
@@ -11,11 +13,15 @@ export declare class SdsSegmentedControlComponent implements OnInit {
11
13
  disabled: boolean;
12
14
  style: 'default' | 'primary' | 'inverted';
13
15
  segmentPadding: 'tight' | 'loose';
16
+ enableAnimation: boolean;
14
17
  itemChange: EventEmitter<any>;
15
18
  valueChange: EventEmitter<any>;
16
- constructor();
19
+ constructor(cdr: ChangeDetectorRef);
17
20
  ngOnInit(): void;
21
+ ngAfterViewInit(): void;
22
+ ngOnChanges(changes: SimpleChanges): void;
18
23
  selectItem(item: any, event: MouseEvent): void;
24
+ private updateClipPath;
19
25
  static ɵfac: i0.ɵɵFactoryDeclaration<SdsSegmentedControlComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<SdsSegmentedControlComponent, "sds-segmented-control", never, { "items": { "alias": "items"; "required": false; }; "value": { "alias": "value"; "required": false; }; "valueExpr": { "alias": "valueExpr"; "required": false; }; "displayExpr": { "alias": "displayExpr"; "required": false; }; "iconExpr": { "alias": "iconExpr"; "required": false; }; "tooltipExpr": { "alias": "tooltipExpr"; "required": false; }; "idExpr": { "alias": "idExpr"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "style": { "alias": "style"; "required": false; }; "segmentPadding": { "alias": "segmentPadding"; "required": false; }; }, { "itemChange": "itemChange"; "valueChange": "valueChange"; }, never, never, true, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdsSegmentedControlComponent, "sds-segmented-control", never, { "items": { "alias": "items"; "required": false; }; "value": { "alias": "value"; "required": false; }; "valueExpr": { "alias": "valueExpr"; "required": false; }; "displayExpr": { "alias": "displayExpr"; "required": false; }; "iconExpr": { "alias": "iconExpr"; "required": false; }; "tooltipExpr": { "alias": "tooltipExpr"; "required": false; }; "idExpr": { "alias": "idExpr"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "style": { "alias": "style"; "required": false; }; "segmentPadding": { "alias": "segmentPadding"; "required": false; }; "enableAnimation": { "alias": "enableAnimation"; "required": false; }; }, { "itemChange": "itemChange"; "valueChange": "valueChange"; }, never, never, true, never>;
21
27
  }