@ascentgl/ads-ui 0.0.6 → 0.0.8

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 (169) hide show
  1. package/esm2022/index.mjs +5 -7
  2. package/esm2022/lib/components/badge/numeric-badge.component.mjs +1 -1
  3. package/esm2022/lib/components/card/card.component.mjs +2 -2
  4. package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +8 -4
  5. package/esm2022/lib/components/expansion-panel/expansion-panel.module.mjs +5 -3
  6. package/esm2022/lib/components/form-fields/search-fields/search-dropdown/search-dropdown.component.mjs +3 -3
  7. package/esm2022/lib/components/form-fields/search-fields/search-input/search-input.component.mjs +3 -3
  8. package/esm2022/lib/components/logo/primary-logo/primary-logo.component.mjs +4 -3
  9. package/esm2022/lib/components/nav-bar/nav-item/index.mjs +2 -0
  10. package/esm2022/lib/components/nav-bar/nav-item/nav-item.component.mjs +27 -0
  11. package/esm2022/lib/components/nav-bar/nav-item/nav-item.module.mjs +20 -0
  12. package/esm2022/lib/components/nav-bar/nav-item/nav-item.types.mjs +2 -0
  13. package/esm2022/lib/components/nav-bar/nav-item/public-api.mjs +3 -0
  14. package/esm2022/lib/components/nav-bar/nav-menu/index.mjs +2 -0
  15. package/esm2022/lib/components/nav-bar/nav-menu/nav-menu.component.mjs +29 -0
  16. package/esm2022/lib/components/nav-bar/nav-menu/nav-menu.module.mjs +40 -0
  17. package/esm2022/lib/components/nav-bar/nav-menu/nav-menu.types.mjs +2 -0
  18. package/esm2022/lib/components/nav-bar/nav-menu/public-api.mjs +3 -0
  19. package/esm2022/lib/components/nav-bar/side-nav-bar/index.mjs +2 -0
  20. package/esm2022/lib/components/nav-bar/side-nav-bar/public-api.mjs +3 -0
  21. package/esm2022/lib/components/nav-bar/side-nav-bar/side-nav-bar.component.mjs +82 -0
  22. package/esm2022/lib/components/nav-bar/side-nav-bar/side-nav-bar.module.mjs +46 -0
  23. package/esm2022/lib/components/steppers/numeric-stepper/components/numeric-step.component.mjs +22 -0
  24. package/esm2022/lib/components/steppers/numeric-stepper/index.mjs +2 -0
  25. package/esm2022/lib/components/steppers/numeric-stepper/numeric-stepper.component.mjs +19 -0
  26. package/esm2022/lib/components/steppers/numeric-stepper/numeric-stepper.module.mjs +21 -0
  27. package/esm2022/lib/components/steppers/numeric-stepper/public-api.mjs +3 -0
  28. package/esm2022/src/lib/components/card/card.component.mjs +2 -2
  29. package/esm2022/src/lib/components/logo/primary-logo/primary-logo.component.mjs +4 -3
  30. package/fesm2022/ascentgl-ads-ui-src-lib-components-card.mjs +2 -2
  31. package/fesm2022/ascentgl-ads-ui-src-lib-components-card.mjs.map +1 -1
  32. package/fesm2022/ascentgl-ads-ui-src-lib-components-logo-primary-logo.mjs +3 -2
  33. package/fesm2022/ascentgl-ads-ui-src-lib-components-logo-primary-logo.mjs.map +1 -1
  34. package/fesm2022/ascentgl-ads-ui.mjs +259 -989
  35. package/fesm2022/ascentgl-ads-ui.mjs.map +1 -1
  36. package/index.d.ts +4 -6
  37. package/lib/components/badge/numeric-badge.component.d.ts +1 -1
  38. package/lib/components/expansion-panel/expansion-panel.component.d.ts +7 -1
  39. package/lib/components/expansion-panel/expansion-panel.module.d.ts +1 -1
  40. package/lib/components/nav-bar/nav-item/nav-item.component.d.ts +18 -0
  41. package/lib/components/nav-bar/nav-item/nav-item.module.d.ts +10 -0
  42. package/lib/components/nav-bar/nav-item/nav-item.types.d.ts +7 -0
  43. package/lib/components/nav-bar/nav-item/public-api.d.ts +2 -0
  44. package/lib/components/{nav-menu → nav-bar/nav-menu}/nav-menu.component.d.ts +1 -3
  45. package/lib/components/{nav-menu → nav-bar/nav-menu}/nav-menu.module.d.ts +3 -4
  46. package/lib/components/{nav-menu → nav-bar/nav-menu}/nav-menu.types.d.ts +1 -1
  47. package/lib/components/nav-bar/side-nav-bar/public-api.d.ts +2 -0
  48. package/lib/components/nav-bar/side-nav-bar/side-nav-bar.component.d.ts +42 -0
  49. package/lib/components/nav-bar/side-nav-bar/side-nav-bar.module.d.ts +13 -0
  50. package/lib/components/steppers/numeric-stepper/components/numeric-step.component.d.ts +10 -0
  51. package/lib/components/steppers/numeric-stepper/numeric-stepper.component.d.ts +16 -0
  52. package/lib/components/steppers/numeric-stepper/numeric-stepper.module.d.ts +11 -0
  53. package/lib/components/steppers/numeric-stepper/public-api.d.ts +2 -0
  54. package/package.json +23 -47
  55. package/esm2022/lib/components/nav-menu/index.mjs +0 -2
  56. package/esm2022/lib/components/nav-menu/nav-menu.component.mjs +0 -32
  57. package/esm2022/lib/components/nav-menu/nav-menu.module.mjs +0 -22
  58. package/esm2022/lib/components/nav-menu/nav-menu.types.mjs +0 -2
  59. package/esm2022/lib/components/nav-menu/public-api.mjs +0 -3
  60. package/esm2022/lib/components/progress-stepper/index.mjs +0 -2
  61. package/esm2022/lib/components/progress-stepper/progress-step.types.mjs +0 -2
  62. package/esm2022/lib/components/progress-stepper/progress-stepper.component.mjs +0 -106
  63. package/esm2022/lib/components/progress-stepper/progress-stepper.module.mjs +0 -27
  64. package/esm2022/lib/components/progress-stepper/public-api.mjs +0 -4
  65. package/esm2022/lib/components/stepper-condensed/condensed-helpers.mjs +0 -97
  66. package/esm2022/lib/components/stepper-condensed/condensed-step.type.mjs +0 -12
  67. package/esm2022/lib/components/stepper-condensed/index.mjs +0 -2
  68. package/esm2022/lib/components/stepper-condensed/public-api.mjs +0 -5
  69. package/esm2022/lib/components/stepper-condensed/stepper-condensed.component.mjs +0 -149
  70. package/esm2022/lib/components/stepper-condensed/stepper-condensed.module.mjs +0 -28
  71. package/esm2022/lib/components/timeline-stepper/index.mjs +0 -2
  72. package/esm2022/lib/components/timeline-stepper/public-api.mjs +0 -5
  73. package/esm2022/lib/components/timeline-stepper/timeline-helpers.mjs +0 -97
  74. package/esm2022/lib/components/timeline-stepper/timeline-step.type.mjs +0 -12
  75. package/esm2022/lib/components/timeline-stepper/timeline-stepper.component.mjs +0 -148
  76. package/esm2022/lib/components/timeline-stepper/timeline-stepper.module.mjs +0 -28
  77. package/esm2022/lib/components/vertical-stepper/index.mjs +0 -2
  78. package/esm2022/lib/components/vertical-stepper/public-api.mjs +0 -5
  79. package/esm2022/lib/components/vertical-stepper/vertical-helpers.mjs +0 -98
  80. package/esm2022/lib/components/vertical-stepper/vertical-step.type.mjs +0 -12
  81. package/esm2022/lib/components/vertical-stepper/vertical-stepper.component.mjs +0 -125
  82. package/esm2022/lib/components/vertical-stepper/vertical-stepper.module.mjs +0 -28
  83. package/esm2022/lib/components/wizard-stepper/index.mjs +0 -2
  84. package/esm2022/lib/components/wizard-stepper/public-api.mjs +0 -4
  85. package/esm2022/lib/components/wizard-stepper/wizard-stepper.component.mjs +0 -28
  86. package/esm2022/lib/components/wizard-stepper/wizard-stepper.module.mjs +0 -20
  87. package/esm2022/lib/components/wizard-stepper/wizard-stepper.types.mjs +0 -2
  88. package/esm2022/src/lib/components/progress-stepper/ascentgl-ads-ui-src-lib-components-progress-stepper.mjs +0 -5
  89. package/esm2022/src/lib/components/progress-stepper/progress-step.types.mjs +0 -2
  90. package/esm2022/src/lib/components/progress-stepper/progress-stepper.component.mjs +0 -106
  91. package/esm2022/src/lib/components/progress-stepper/progress-stepper.module.mjs +0 -27
  92. package/esm2022/src/lib/components/progress-stepper/public-api.mjs +0 -4
  93. package/esm2022/src/lib/components/timeline-stepper/ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs +0 -5
  94. package/esm2022/src/lib/components/timeline-stepper/public-api.mjs +0 -5
  95. package/esm2022/src/lib/components/timeline-stepper/timeline-helpers.mjs +0 -97
  96. package/esm2022/src/lib/components/timeline-stepper/timeline-step.type.mjs +0 -12
  97. package/esm2022/src/lib/components/timeline-stepper/timeline-stepper.component.mjs +0 -148
  98. package/esm2022/src/lib/components/timeline-stepper/timeline-stepper.module.mjs +0 -28
  99. package/esm2022/src/lib/components/vertical-stepper/ascentgl-ads-ui-src-lib-components-vertical-stepper.mjs +0 -5
  100. package/esm2022/src/lib/components/vertical-stepper/public-api.mjs +0 -5
  101. package/esm2022/src/lib/components/vertical-stepper/vertical-helpers.mjs +0 -98
  102. package/esm2022/src/lib/components/vertical-stepper/vertical-step.type.mjs +0 -12
  103. package/esm2022/src/lib/components/vertical-stepper/vertical-stepper.component.mjs +0 -125
  104. package/esm2022/src/lib/components/vertical-stepper/vertical-stepper.module.mjs +0 -28
  105. package/esm2022/src/lib/components/wizard-stepper/ascentgl-ads-ui-src-lib-components-wizard-stepper.mjs +0 -5
  106. package/esm2022/src/lib/components/wizard-stepper/public-api.mjs +0 -4
  107. package/esm2022/src/lib/components/wizard-stepper/wizard-stepper.component.mjs +0 -28
  108. package/esm2022/src/lib/components/wizard-stepper/wizard-stepper.module.mjs +0 -20
  109. package/esm2022/src/lib/components/wizard-stepper/wizard-stepper.types.mjs +0 -2
  110. package/fesm2022/ascentgl-ads-ui-src-lib-components-progress-stepper.mjs +0 -136
  111. package/fesm2022/ascentgl-ads-ui-src-lib-components-progress-stepper.mjs.map +0 -1
  112. package/fesm2022/ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs +0 -286
  113. package/fesm2022/ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs.map +0 -1
  114. package/fesm2022/ascentgl-ads-ui-src-lib-components-vertical-stepper.mjs +0 -264
  115. package/fesm2022/ascentgl-ads-ui-src-lib-components-vertical-stepper.mjs.map +0 -1
  116. package/fesm2022/ascentgl-ads-ui-src-lib-components-wizard-stepper.mjs +0 -51
  117. package/fesm2022/ascentgl-ads-ui-src-lib-components-wizard-stepper.mjs.map +0 -1
  118. package/lib/components/progress-stepper/progress-step.types.d.ts +0 -5
  119. package/lib/components/progress-stepper/progress-stepper.component.d.ts +0 -42
  120. package/lib/components/progress-stepper/progress-stepper.module.d.ts +0 -10
  121. package/lib/components/progress-stepper/public-api.d.ts +0 -3
  122. package/lib/components/stepper-condensed/condensed-helpers.d.ts +0 -24
  123. package/lib/components/stepper-condensed/condensed-step.type.d.ts +0 -43
  124. package/lib/components/stepper-condensed/public-api.d.ts +0 -4
  125. package/lib/components/stepper-condensed/stepper-condensed.component.d.ts +0 -61
  126. package/lib/components/stepper-condensed/stepper-condensed.module.d.ts +0 -11
  127. package/lib/components/timeline-stepper/public-api.d.ts +0 -4
  128. package/lib/components/timeline-stepper/timeline-helpers.d.ts +0 -24
  129. package/lib/components/timeline-stepper/timeline-step.type.d.ts +0 -43
  130. package/lib/components/timeline-stepper/timeline-stepper.component.d.ts +0 -61
  131. package/lib/components/timeline-stepper/timeline-stepper.module.d.ts +0 -11
  132. package/lib/components/vertical-stepper/index.d.ts +0 -1
  133. package/lib/components/vertical-stepper/public-api.d.ts +0 -4
  134. package/lib/components/vertical-stepper/vertical-helpers.d.ts +0 -24
  135. package/lib/components/vertical-stepper/vertical-step.type.d.ts +0 -45
  136. package/lib/components/vertical-stepper/vertical-stepper.component.d.ts +0 -58
  137. package/lib/components/vertical-stepper/vertical-stepper.module.d.ts +0 -11
  138. package/lib/components/wizard-stepper/index.d.ts +0 -1
  139. package/lib/components/wizard-stepper/public-api.d.ts +0 -3
  140. package/lib/components/wizard-stepper/wizard-stepper.component.d.ts +0 -12
  141. package/lib/components/wizard-stepper/wizard-stepper.module.d.ts +0 -10
  142. package/lib/components/wizard-stepper/wizard-stepper.types.d.ts +0 -4
  143. package/src/lib/components/progress-stepper/index.d.ts +0 -5
  144. package/src/lib/components/progress-stepper/progress-step.types.d.ts +0 -5
  145. package/src/lib/components/progress-stepper/progress-stepper.component.d.ts +0 -42
  146. package/src/lib/components/progress-stepper/progress-stepper.module.d.ts +0 -10
  147. package/src/lib/components/progress-stepper/public-api.d.ts +0 -3
  148. package/src/lib/components/timeline-stepper/index.d.ts +0 -5
  149. package/src/lib/components/timeline-stepper/public-api.d.ts +0 -4
  150. package/src/lib/components/timeline-stepper/timeline-helpers.d.ts +0 -24
  151. package/src/lib/components/timeline-stepper/timeline-step.type.d.ts +0 -43
  152. package/src/lib/components/timeline-stepper/timeline-stepper.component.d.ts +0 -61
  153. package/src/lib/components/timeline-stepper/timeline-stepper.module.d.ts +0 -11
  154. package/src/lib/components/vertical-stepper/index.d.ts +0 -5
  155. package/src/lib/components/vertical-stepper/public-api.d.ts +0 -4
  156. package/src/lib/components/vertical-stepper/vertical-helpers.d.ts +0 -24
  157. package/src/lib/components/vertical-stepper/vertical-step.type.d.ts +0 -45
  158. package/src/lib/components/vertical-stepper/vertical-stepper.component.d.ts +0 -58
  159. package/src/lib/components/vertical-stepper/vertical-stepper.module.d.ts +0 -11
  160. package/src/lib/components/wizard-stepper/index.d.ts +0 -5
  161. package/src/lib/components/wizard-stepper/public-api.d.ts +0 -3
  162. package/src/lib/components/wizard-stepper/wizard-stepper.component.d.ts +0 -12
  163. package/src/lib/components/wizard-stepper/wizard-stepper.module.d.ts +0 -10
  164. package/src/lib/components/wizard-stepper/wizard-stepper.types.d.ts +0 -4
  165. /package/lib/components/{nav-menu → nav-bar/nav-item}/index.d.ts +0 -0
  166. /package/lib/components/{progress-stepper → nav-bar/nav-menu}/index.d.ts +0 -0
  167. /package/lib/components/{nav-menu → nav-bar/nav-menu}/public-api.d.ts +0 -0
  168. /package/lib/components/{stepper-condensed → nav-bar/side-nav-bar}/index.d.ts +0 -0
  169. /package/lib/components/{timeline-stepper → steppers/numeric-stepper}/index.d.ts +0 -0
@@ -1,28 +0,0 @@
1
- import { Component, EventEmitter, Output } from '@angular/core';
2
- import { CdkStepper } from '@angular/cdk/stepper';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@ascentgl/ads-icons";
6
- export class AdsWizardStepperComponent extends CdkStepper {
7
- constructor() {
8
- super(...arguments);
9
- /** Event emitted when a step is clicked */
10
- this.stepClick = new EventEmitter();
11
- }
12
- /** @ignore */
13
- onStepClick(previouslySelectedIndex, selectedIndex) {
14
- this.stepClick.emit({
15
- previouslySelectedIndex,
16
- selectedIndex,
17
- });
18
- }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsWizardStepperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: AdsWizardStepperComponent, selector: "ads-wizard-stepper", outputs: { stepClick: "stepClick" }, providers: [{ provide: CdkStepper, useExisting: AdsWizardStepperComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"stepper\">\n <ng-container *ngFor=\"let step of steps; let first = first; let last = last; let index = index\">\n <div class=\"step\" [ngClass]=\"{ complete: step.completed, error: step.hasError, current: selectedIndex === index }\">\n <div *ngIf=\"!first\" class=\"line before\"></div>\n <div class=\"step-icon\" (click)=\"onStepClick(selectedIndex, index)\">\n <ads-icon *ngIf=\"step.completed && !step.hasError\" name=\"check\" color=\"#fff\" size=\"sm\"></ads-icon>\n <ads-icon *ngIf=\"step.hasError\" name=\"exclamation\" color=\"#fff\" size=\"sm\"></ads-icon>\n <span *ngIf=\"!step.completed && !step.hasError\" class=\"step-count\">{{ index + 1 }}</span>\n </div>\n <div *ngIf=\"!last\" class=\"line after\"></div>\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </div>\n </ng-container>\n</div>\n<div [ngTemplateOutlet]=\"selected ? selected.content : null\"></div>\n", styles: [".wizard{display:flex;flex-direction:column;max-width:100%}.stepper{display:flex}.step{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;padding:8px 0}.step-icon{display:flex;align-items:center;justify-content:center;width:45px;height:45px;color:var(--color-white);font-size:24px;font-weight:500;border-radius:50%;background-color:var(--color-medium-50);margin-bottom:8px}.step.current .step-icon{background-color:var(--color-primary)}.step.complete .step-icon{background-color:var(--color-success)}.step.error .step-icon{background-color:var(--color-alert)}.step-icon:hover{cursor:pointer;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.line{position:absolute;border-top:2px solid var(--color-medium-50)}.line.before{left:0;width:calc(50% - 22.5px);top:30.5px}.line.after{right:0;width:calc(50% - 22.5px);top:30.5px}.step.complete .line.after{border-top-color:var(--color-success)}.step.complete+.step .line.before{border-top-color:var(--color-success)}.step.complete.error .line.after{border-top-color:var(--color-error)}.step.complete.error+.step .line.before{border-top-color:var(--color-error)}.title{color:var(--color-dark);font-size:13px;font-weight:500;text-align:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }] }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsWizardStepperComponent, decorators: [{
23
- type: Component,
24
- args: [{ selector: 'ads-wizard-stepper', providers: [{ provide: CdkStepper, useExisting: AdsWizardStepperComponent }], template: "<div class=\"stepper\">\n <ng-container *ngFor=\"let step of steps; let first = first; let last = last; let index = index\">\n <div class=\"step\" [ngClass]=\"{ complete: step.completed, error: step.hasError, current: selectedIndex === index }\">\n <div *ngIf=\"!first\" class=\"line before\"></div>\n <div class=\"step-icon\" (click)=\"onStepClick(selectedIndex, index)\">\n <ads-icon *ngIf=\"step.completed && !step.hasError\" name=\"check\" color=\"#fff\" size=\"sm\"></ads-icon>\n <ads-icon *ngIf=\"step.hasError\" name=\"exclamation\" color=\"#fff\" size=\"sm\"></ads-icon>\n <span *ngIf=\"!step.completed && !step.hasError\" class=\"step-count\">{{ index + 1 }}</span>\n </div>\n <div *ngIf=\"!last\" class=\"line after\"></div>\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </div>\n </ng-container>\n</div>\n<div [ngTemplateOutlet]=\"selected ? selected.content : null\"></div>\n", styles: [".wizard{display:flex;flex-direction:column;max-width:100%}.stepper{display:flex}.step{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;padding:8px 0}.step-icon{display:flex;align-items:center;justify-content:center;width:45px;height:45px;color:var(--color-white);font-size:24px;font-weight:500;border-radius:50%;background-color:var(--color-medium-50);margin-bottom:8px}.step.current .step-icon{background-color:var(--color-primary)}.step.complete .step-icon{background-color:var(--color-success)}.step.error .step-icon{background-color:var(--color-alert)}.step-icon:hover{cursor:pointer;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.line{position:absolute;border-top:2px solid var(--color-medium-50)}.line.before{left:0;width:calc(50% - 22.5px);top:30.5px}.line.after{right:0;width:calc(50% - 22.5px);top:30.5px}.step.complete .line.after{border-top-color:var(--color-success)}.step.complete+.step .line.before{border-top-color:var(--color-success)}.step.complete.error .line.after{border-top-color:var(--color-error)}.step.complete.error+.step .line.before{border-top-color:var(--color-error)}.title{color:var(--color-dark);font-size:13px;font-weight:500;text-align:center}\n"] }]
25
- }], propDecorators: { stepClick: [{
26
- type: Output
27
- }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZHMtdWkvc3JjL2xpYi9jb21wb25lbnRzL3dpemFyZC1zdGVwcGVyL3dpemFyZC1zdGVwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRzLXVpL3NyYy9saWIvY29tcG9uZW50cy93aXphcmQtc3RlcHBlci93aXphcmQtc3RlcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBU2xELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUFVO0lBTnpEOztRQU9FLDJDQUEyQztRQUNqQyxjQUFTLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7S0FTeEU7SUFQQyxjQUFjO0lBQ1AsV0FBVyxDQUFDLHVCQUErQixFQUFFLGFBQXFCO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLHVCQUF1QjtZQUN2QixhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FWVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixrRkFGekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLENBQUMsaURDUjlFLGk5QkFlQTs7MkZETGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLDJCQUEyQixFQUFFLENBQUM7OEJBSWxFLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgU3RlcENsaWNrRXZlbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwcGVyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWRzLXdpemFyZC1zdGVwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpemFyZC1zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2l6YXJkLXN0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDZGtTdGVwcGVyLCB1c2VFeGlzdGluZzogQWRzV2l6YXJkU3RlcHBlckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQWRzV2l6YXJkU3RlcHBlckNvbXBvbmVudCBleHRlbmRzIENka1N0ZXBwZXIge1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGEgc3RlcCBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBzdGVwQ2xpY2s6IEV2ZW50RW1pdHRlcjxTdGVwQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG9uU3RlcENsaWNrKHByZXZpb3VzbHlTZWxlY3RlZEluZGV4OiBudW1iZXIsIHNlbGVjdGVkSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3RlcENsaWNrLmVtaXQoe1xuICAgICAgcHJldmlvdXNseVNlbGVjdGVkSW5kZXgsXG4gICAgICBzZWxlY3RlZEluZGV4LFxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RlcHBlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzOyBsZXQgZmlyc3QgPSBmaXJzdDsgbGV0IGxhc3QgPSBsYXN0OyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdGVwXCIgW25nQ2xhc3NdPVwieyBjb21wbGV0ZTogc3RlcC5jb21wbGV0ZWQsIGVycm9yOiBzdGVwLmhhc0Vycm9yLCBjdXJyZW50OiBzZWxlY3RlZEluZGV4ID09PSBpbmRleCB9XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWZpcnN0XCIgY2xhc3M9XCJsaW5lIGJlZm9yZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtaWNvblwiIChjbGljayk9XCJvblN0ZXBDbGljayhzZWxlY3RlZEluZGV4LCBpbmRleClcIj5cbiAgICAgICAgPGFkcy1pY29uICpuZ0lmPVwic3RlcC5jb21wbGV0ZWQgJiYgIXN0ZXAuaGFzRXJyb3JcIiBuYW1lPVwiY2hlY2tcIiBjb2xvcj1cIiNmZmZcIiBzaXplPVwic21cIj48L2Fkcy1pY29uPlxuICAgICAgICA8YWRzLWljb24gKm5nSWY9XCJzdGVwLmhhc0Vycm9yXCIgbmFtZT1cImV4Y2xhbWF0aW9uXCIgY29sb3I9XCIjZmZmXCIgc2l6ZT1cInNtXCI+PC9hZHMtaWNvbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RlcC5jb21wbGV0ZWQgJiYgIXN0ZXAuaGFzRXJyb3JcIiBjbGFzcz1cInN0ZXAtY291bnRcIj57eyBpbmRleCArIDEgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwibGluZSBhZnRlclwiPjwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdiBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZCA/IHNlbGVjdGVkLmNvbnRlbnQgOiBudWxsXCI+PC9kaXY+XG4iXX0=
@@ -1,20 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { AdsWizardStepperComponent } from './wizard-stepper.component';
4
- import { AdsIconModule } from '@ascentgl/ads-icons';
5
- import { CdkStepperModule } from '@angular/cdk/stepper';
6
- import * as i0 from "@angular/core";
7
- export class AdsWizardStepperModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsWizardStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: AdsWizardStepperModule, declarations: [AdsWizardStepperComponent], imports: [CommonModule, AdsIconModule, CdkStepperModule], exports: [AdsWizardStepperComponent] }); }
10
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsWizardStepperModule, imports: [CommonModule, AdsIconModule, CdkStepperModule] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsWizardStepperModule, decorators: [{
13
- type: NgModule,
14
- args: [{
15
- declarations: [AdsWizardStepperComponent],
16
- imports: [CommonModule, AdsIconModule, CdkStepperModule],
17
- exports: [AdsWizardStepperComponent],
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXBwZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZHMtdWkvc3JjL2xpYi9jb21wb25lbnRzL3dpemFyZC1zdGVwcGVyL3dpemFyZC1zdGVwcGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBT3hELE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCLGlCQUpsQix5QkFBeUIsYUFDOUIsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsYUFDN0MseUJBQXlCOytHQUV4QixzQkFBc0IsWUFIdkIsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0I7OzJGQUc1QyxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3hELE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWRzV2l6YXJkU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLXN0ZXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFkc0ljb25Nb2R1bGUgfSBmcm9tICdAYXNjZW50Z2wvYWRzLWljb25zJztcbmltcG9ydCB7IENka1N0ZXBwZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0Fkc1dpemFyZFN0ZXBwZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBZHNJY29uTW9kdWxlLCBDZGtTdGVwcGVyTW9kdWxlXSxcbiAgZXhwb3J0czogW0Fkc1dpemFyZFN0ZXBwZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBZHNXaXphcmRTdGVwcGVyTW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXBwZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Fkcy11aS9zcmMvbGliL2NvbXBvbmVudHMvd2l6YXJkLXN0ZXBwZXIvd2l6YXJkLXN0ZXBwZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFN0ZXBDbGlja0V2ZW50ID0ge1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHByZXZpb3VzbHlTZWxlY3RlZEluZGV4OiBudW1iZXI7XG59O1xuIl19
@@ -1,136 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, ViewChild, ViewChildren, Input, NgModule } from '@angular/core';
3
- import * as i1 from '@ascentgl/ads-icons';
4
- import { AdsIconModule } from '@ascentgl/ads-icons';
5
- import { adsIconCheckCircle } from '@ascentgl/ads-icons/icons';
6
- import * as i2 from '@angular/common';
7
- import { CommonModule } from '@angular/common';
8
- import * as i3 from '@ascentgl/ads-utils';
9
- import { AdsGestureModule, ADS_GESTURE_DEFAULT_OPTIONS, AdsGestureDirection } from '@ascentgl/ads-utils';
10
-
11
- class AdsProgressStepperComponent {
12
- constructor(renderer, registry, window) {
13
- this.renderer = renderer;
14
- this.registry = registry;
15
- this.window = window;
16
- /** Whether the viewport is mobile */
17
- this.isMobile = false;
18
- /** Padding of parent container */
19
- this.containerPadding = 24;
20
- /** @ignore */
21
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
- this.styles = {};
23
- /** @ignore */
24
- this.focusedIndex = 0;
25
- this.registry.register(adsIconCheckCircle);
26
- }
27
- /** @ignore */
28
- ngAfterViewInit() {
29
- if (this.isMobile) {
30
- this.focusedIndex = this.getLastCompletedStepIndex(this.steps);
31
- this.centerCurrentStep(this.focusedIndex);
32
- }
33
- }
34
- /** @ignore */
35
- ngOnChanges(changes) {
36
- if (changes?.isMobile && !changes.isMobile.firstChange) {
37
- this.focusedIndex = this.getLastCompletedStepIndex(this.steps);
38
- this.centerCurrentStep(this.focusedIndex);
39
- }
40
- if (changes?.steps && changes.steps?.currentValue && !changes.steps?.firstChange) {
41
- if (this.isMobile) {
42
- this.focusedIndex = this.getLastCompletedStepIndex(this.steps);
43
- this.centerCurrentStep(this.focusedIndex);
44
- }
45
- }
46
- }
47
- /** @ignore */
48
- ngOnInit() {
49
- this.styles = {
50
- step: {
51
- 'grid-template-columns': `repeat(${this.steps.length}, minmax(150px, 1fr))`,
52
- },
53
- };
54
- }
55
- /** @ignore */
56
- onSwipeLeft() {
57
- if (this.focusedIndex === this.steps.length - this.calculateStepsPerViewport() || !this.isMobile) {
58
- return;
59
- }
60
- this.focusedIndex++;
61
- this.centerCurrentStep(this.focusedIndex);
62
- }
63
- /** @ignore */
64
- onSwipeRight() {
65
- if (this.focusedIndex === 0 || !this.isMobile) {
66
- return;
67
- }
68
- this.focusedIndex--;
69
- this.centerCurrentStep(this.focusedIndex);
70
- }
71
- /** @ignore */
72
- centerCurrentStep(focusedIndex) {
73
- if (focusedIndex === 0) {
74
- this.renderer.setStyle(this.stepper.nativeElement, 'margin-left', '0px');
75
- return;
76
- }
77
- const stepWidth = this.stepElements.first.nativeElement.getBoundingClientRect().width;
78
- const offset = focusedIndex * stepWidth;
79
- this.renderer.setStyle(this.stepper.nativeElement, 'margin-left', `-${offset}px`);
80
- }
81
- /** @ignore */
82
- getLastCompletedStepIndex(steps) {
83
- return steps.map((step) => step.completed).lastIndexOf(true);
84
- }
85
- /** @ignore */
86
- calculateStepsPerViewport() {
87
- const stepWidth = this.stepElements.first.nativeElement.getBoundingClientRect().width;
88
- return Math.floor((this.window.innerWidth - this.containerPadding) / stepWidth);
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsProgressStepperComponent, deps: [{ token: i0.Renderer2 }, { token: i1.AdsIconRegistry }, { token: Window }], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: AdsProgressStepperComponent, selector: "ads-progress-stepper", inputs: { isMobile: "isMobile", containerPadding: "containerPadding", steps: "steps" }, viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true }, { propertyName: "stepElements", predicate: ["stepElements"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #stepper\n adsGesture\n class=\"progress-stepper\"\n [ngStyle]=\"styles?.step\"\n [draggable]=\"false\"\n (gestureleft)=\"onSwipeLeft()\"\n (gestureright)=\"onSwipeRight()\"\n>\n <div\n #stepElements\n class=\"progress-stepper-step\"\n [draggable]=\"false\"\n *ngFor=\"let step of steps; let index = index; let first = first; let last = last\"\n >\n <div class=\"progress-bar\" [class.first]=\"first\" [class.last]=\"last\">\n <div\n class=\"progress-bar-highlight\"\n [class.completed]=\"step.completed\"\n [class.roundedLeft]=\"first || (!steps[index - 1].completed && step.completed)\"\n [class.roundedRight]=\"\n last || (!steps[index + 1].completed && step.completed) || (first && !steps[index + 1].completed)\n \"\n ></div>\n </div>\n <div class=\"progress-step-info\" [class.first]=\"first\" [class.last]=\"last\">\n <div class=\"progress-step-info-container\">\n <div class=\"title\">\n <div class=\"title-text\">{{ step.title }}</div>\n <div class=\"title-completed-icon\" *ngIf=\"step.completed\">\n <ads-icon name=\"check_circle\" size=\"xxs\" color=\"#5756B3\"></ads-icon>\n </div>\n </div>\n <div *ngIf=\"step?.date\" class=\"date\">{{ step?.date }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{box-sizing:border-box}.progress-stepper{display:grid;max-width:100%;-webkit-user-select:none;user-select:none;transition:margin .3s ease-in-out}.progress-stepper-step{display:flex;flex-direction:column;flex:1}.progress-step-info{display:flex;flex-direction:column;align-items:center;padding:8px}.progress-step-info.first{align-items:flex-start}.progress-step-info.last{align-items:flex-end}.progress-stepper-step:last-of-type .title,.progress-stepper-step:last-of-type .date{text-align:right}.title{color:var(--color-medium);font-size:13px;font-weight:500;display:flex;height:24px;align-items:center}.title-text{margin-right:6px;line-height:24px;white-space:nowrap}.title-completed-icon{line-height:24px;display:flex;align-items:center}.date{color:var(--color-black);font-size:12px;line-height:14px;white-space:nowrap}.progress-bar{width:100%;background-color:var(--color-medium-50);height:12px}.progress-bar.first,.progress-bar.first .progress-bar-highlight{border-top-left-radius:12px;border-bottom-left-radius:12px}.progress-bar.last,.progress-bar.last .progress-bar-highlight{border-top-right-radius:12px;border-bottom-right-radius:12px}.progress-bar-highlight{height:12px;width:100%}.progress-bar-highlight.completed{background-color:var(--color-green)}.progress-bar-highlight.roundedLeft{border-top-left-radius:12px;border-bottom-left-radius:12px}.progress-bar-highlight.roundedRight{border-top-right-radius:12px;border-bottom-right-radius:12px}\n"], dependencies: [{ 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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }, { kind: "directive", type: i3.AdsGestureDirective, selector: "[adsGesture]", outputs: ["gesturedown", "gestureleft", "gestureright", "gestureup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsProgressStepperComponent, decorators: [{
94
- type: Component,
95
- args: [{ selector: 'ads-progress-stepper', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #stepper\n adsGesture\n class=\"progress-stepper\"\n [ngStyle]=\"styles?.step\"\n [draggable]=\"false\"\n (gestureleft)=\"onSwipeLeft()\"\n (gestureright)=\"onSwipeRight()\"\n>\n <div\n #stepElements\n class=\"progress-stepper-step\"\n [draggable]=\"false\"\n *ngFor=\"let step of steps; let index = index; let first = first; let last = last\"\n >\n <div class=\"progress-bar\" [class.first]=\"first\" [class.last]=\"last\">\n <div\n class=\"progress-bar-highlight\"\n [class.completed]=\"step.completed\"\n [class.roundedLeft]=\"first || (!steps[index - 1].completed && step.completed)\"\n [class.roundedRight]=\"\n last || (!steps[index + 1].completed && step.completed) || (first && !steps[index + 1].completed)\n \"\n ></div>\n </div>\n <div class=\"progress-step-info\" [class.first]=\"first\" [class.last]=\"last\">\n <div class=\"progress-step-info-container\">\n <div class=\"title\">\n <div class=\"title-text\">{{ step.title }}</div>\n <div class=\"title-completed-icon\" *ngIf=\"step.completed\">\n <ads-icon name=\"check_circle\" size=\"xxs\" color=\"#5756B3\"></ads-icon>\n </div>\n </div>\n <div *ngIf=\"step?.date\" class=\"date\">{{ step?.date }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{box-sizing:border-box}.progress-stepper{display:grid;max-width:100%;-webkit-user-select:none;user-select:none;transition:margin .3s ease-in-out}.progress-stepper-step{display:flex;flex-direction:column;flex:1}.progress-step-info{display:flex;flex-direction:column;align-items:center;padding:8px}.progress-step-info.first{align-items:flex-start}.progress-step-info.last{align-items:flex-end}.progress-stepper-step:last-of-type .title,.progress-stepper-step:last-of-type .date{text-align:right}.title{color:var(--color-medium);font-size:13px;font-weight:500;display:flex;height:24px;align-items:center}.title-text{margin-right:6px;line-height:24px;white-space:nowrap}.title-completed-icon{line-height:24px;display:flex;align-items:center}.date{color:var(--color-black);font-size:12px;line-height:14px;white-space:nowrap}.progress-bar{width:100%;background-color:var(--color-medium-50);height:12px}.progress-bar.first,.progress-bar.first .progress-bar-highlight{border-top-left-radius:12px;border-bottom-left-radius:12px}.progress-bar.last,.progress-bar.last .progress-bar-highlight{border-top-right-radius:12px;border-bottom-right-radius:12px}.progress-bar-highlight{height:12px;width:100%}.progress-bar-highlight.completed{background-color:var(--color-green)}.progress-bar-highlight.roundedLeft{border-top-left-radius:12px;border-bottom-left-radius:12px}.progress-bar-highlight.roundedRight{border-top-right-radius:12px;border-bottom-right-radius:12px}\n"] }]
96
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.AdsIconRegistry }, { type: Window }], propDecorators: { stepper: [{
97
- type: ViewChild,
98
- args: ['stepper']
99
- }], stepElements: [{
100
- type: ViewChildren,
101
- args: ['stepElements']
102
- }], isMobile: [{
103
- type: Input
104
- }], containerPadding: [{
105
- type: Input
106
- }], steps: [{
107
- type: Input
108
- }] } });
109
-
110
- class AdsProgressStepperModule {
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsProgressStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
112
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: AdsProgressStepperModule, declarations: [AdsProgressStepperComponent], imports: [CommonModule, AdsIconModule, AdsGestureModule], exports: [AdsProgressStepperComponent] }); }
113
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsProgressStepperModule, providers: [
114
- { provide: ADS_GESTURE_DEFAULT_OPTIONS, useValue: { direction: AdsGestureDirection.DIRECTION_HORIZONTAL } },
115
- { provide: Window, useValue: window },
116
- ], imports: [CommonModule, AdsIconModule, AdsGestureModule] }); }
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsProgressStepperModule, decorators: [{
119
- type: NgModule,
120
- args: [{
121
- declarations: [AdsProgressStepperComponent],
122
- imports: [CommonModule, AdsIconModule, AdsGestureModule],
123
- exports: [AdsProgressStepperComponent],
124
- providers: [
125
- { provide: ADS_GESTURE_DEFAULT_OPTIONS, useValue: { direction: AdsGestureDirection.DIRECTION_HORIZONTAL } },
126
- { provide: Window, useValue: window },
127
- ],
128
- }]
129
- }] });
130
-
131
- /**
132
- * Generated bundle index. Do not edit.
133
- */
134
-
135
- export { AdsProgressStepperComponent, AdsProgressStepperModule };
136
- //# sourceMappingURL=ascentgl-ads-ui-src-lib-components-progress-stepper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ascentgl-ads-ui-src-lib-components-progress-stepper.mjs","sources":["../../../../libs/ads-ui/src/lib/components/progress-stepper/progress-stepper.component.ts","../../../../libs/ads-ui/src/lib/components/progress-stepper/progress-stepper.component.html","../../../../libs/ads-ui/src/lib/components/progress-stepper/progress-stepper.module.ts","../../../../libs/ads-ui/src/lib/components/progress-stepper/ascentgl-ads-ui-src-lib-components-progress-stepper.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n Input,\n OnInit,\n ViewChildren,\n QueryList,\n ElementRef,\n AfterViewInit,\n Renderer2,\n ViewChild,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { AdsIconRegistry } from '@ascentgl/ads-icons';\nimport { adsIconCheckCircle } from '@ascentgl/ads-icons/icons';\nimport { ProgressStep } from './progress-step.types';\n\n@Component({\n selector: 'ads-progress-stepper',\n templateUrl: './progress-stepper.component.html',\n styleUrls: ['./progress-stepper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdsProgressStepperComponent implements AfterViewInit, OnChanges, OnInit {\n constructor(\n private renderer: Renderer2,\n private registry: AdsIconRegistry,\n private window: Window,\n ) {\n this.registry.register(adsIconCheckCircle);\n }\n\n /** @ignore */\n @ViewChild('stepper') stepper!: ElementRef;\n\n /** @ignore */\n @ViewChildren('stepElements') stepElements!: QueryList<ElementRef>;\n\n /** Whether the viewport is mobile */\n @Input() isMobile = false;\n\n /** Padding of parent container */\n @Input() containerPadding = 24;\n\n /** Steps to display */\n @Input() steps!: ProgressStep[];\n\n /** @ignore */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public styles: any = {};\n\n /** @ignore */\n private focusedIndex = 0;\n\n /** @ignore */\n ngAfterViewInit() {\n if (this.isMobile) {\n this.focusedIndex = this.getLastCompletedStepIndex(this.steps);\n this.centerCurrentStep(this.focusedIndex);\n }\n }\n\n /** @ignore */\n ngOnChanges(changes: SimpleChanges) {\n if (changes?.isMobile && !changes.isMobile.firstChange) {\n this.focusedIndex = this.getLastCompletedStepIndex(this.steps);\n this.centerCurrentStep(this.focusedIndex);\n }\n\n if (changes?.steps && changes.steps?.currentValue && !changes.steps?.firstChange) {\n if (this.isMobile) {\n this.focusedIndex = this.getLastCompletedStepIndex(this.steps);\n this.centerCurrentStep(this.focusedIndex);\n }\n }\n }\n\n /** @ignore */\n ngOnInit() {\n this.styles = {\n step: {\n 'grid-template-columns': `repeat(${this.steps.length}, minmax(150px, 1fr))`,\n },\n };\n }\n\n /** @ignore */\n public onSwipeLeft(): void {\n if (this.focusedIndex === this.steps.length - this.calculateStepsPerViewport() || !this.isMobile) {\n return;\n }\n\n this.focusedIndex++;\n this.centerCurrentStep(this.focusedIndex);\n }\n\n /** @ignore */\n public onSwipeRight(): void {\n if (this.focusedIndex === 0 || !this.isMobile) {\n return;\n }\n\n this.focusedIndex--;\n this.centerCurrentStep(this.focusedIndex);\n }\n\n /** @ignore */\n private centerCurrentStep(focusedIndex: number): void {\n if (focusedIndex === 0) {\n this.renderer.setStyle(this.stepper.nativeElement, 'margin-left', '0px');\n return;\n }\n\n const stepWidth = this.stepElements.first.nativeElement.getBoundingClientRect().width;\n const offset = focusedIndex * stepWidth;\n this.renderer.setStyle(this.stepper.nativeElement, 'margin-left', `-${offset}px`);\n }\n\n /** @ignore */\n private getLastCompletedStepIndex(steps: ProgressStep[]): number {\n return steps.map((step) => step.completed).lastIndexOf(true);\n }\n\n /** @ignore */\n private calculateStepsPerViewport(): number {\n const stepWidth = this.stepElements.first.nativeElement.getBoundingClientRect().width;\n return Math.floor((this.window.innerWidth - this.containerPadding) / stepWidth);\n }\n}\n","<div\n #stepper\n adsGesture\n class=\"progress-stepper\"\n [ngStyle]=\"styles?.step\"\n [draggable]=\"false\"\n (gestureleft)=\"onSwipeLeft()\"\n (gestureright)=\"onSwipeRight()\"\n>\n <div\n #stepElements\n class=\"progress-stepper-step\"\n [draggable]=\"false\"\n *ngFor=\"let step of steps; let index = index; let first = first; let last = last\"\n >\n <div class=\"progress-bar\" [class.first]=\"first\" [class.last]=\"last\">\n <div\n class=\"progress-bar-highlight\"\n [class.completed]=\"step.completed\"\n [class.roundedLeft]=\"first || (!steps[index - 1].completed && step.completed)\"\n [class.roundedRight]=\"\n last || (!steps[index + 1].completed && step.completed) || (first && !steps[index + 1].completed)\n \"\n ></div>\n </div>\n <div class=\"progress-step-info\" [class.first]=\"first\" [class.last]=\"last\">\n <div class=\"progress-step-info-container\">\n <div class=\"title\">\n <div class=\"title-text\">{{ step.title }}</div>\n <div class=\"title-completed-icon\" *ngIf=\"step.completed\">\n <ads-icon name=\"check_circle\" size=\"xxs\" color=\"#5756B3\"></ads-icon>\n </div>\n </div>\n <div *ngIf=\"step?.date\" class=\"date\">{{ step?.date }}</div>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AdsProgressStepperComponent } from './progress-stepper.component';\nimport { AdsIconModule } from '@ascentgl/ads-icons';\nimport { AdsGestureDirection, AdsGestureModule, ADS_GESTURE_DEFAULT_OPTIONS } from '@ascentgl/ads-utils';\n\n@NgModule({\n declarations: [AdsProgressStepperComponent],\n imports: [CommonModule, AdsIconModule, AdsGestureModule],\n exports: [AdsProgressStepperComponent],\n providers: [\n { provide: ADS_GESTURE_DEFAULT_OPTIONS, useValue: { direction: AdsGestureDirection.DIRECTION_HORIZONTAL } },\n { provide: Window, useValue: window },\n ],\n})\nexport class AdsProgressStepperModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,286 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, Input, ViewChildren, NgModule } from '@angular/core';
3
- import * as i1 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
5
- import * as i2 from '@angular/material/tooltip';
6
- import { MatTooltipModule } from '@angular/material/tooltip';
7
- import * as i3 from '@ascentgl/ads-icons';
8
- import { AdsIconModule } from '@ascentgl/ads-icons';
9
- import * as i4 from '@ascentgl/ads-utils';
10
- import { AdsGestureModule, ADS_GESTURE_DEFAULT_OPTIONS, AdsGestureDirection } from '@ascentgl/ads-utils';
11
-
12
- var TimelineStepStatus;
13
- (function (TimelineStepStatus) {
14
- TimelineStepStatus["Completed"] = "completed";
15
- TimelineStepStatus["Current"] = "current";
16
- TimelineStepStatus["Future"] = "future";
17
- TimelineStepStatus["Skipped"] = "skipped";
18
- TimelineStepStatus["Rejected"] = "rejected";
19
- TimelineStepStatus["Alert"] = "alert";
20
- TimelineStepStatus["Disabled"] = "disabled";
21
- TimelineStepStatus["DisabledRejected"] = "disabled-rejected";
22
- })(TimelineStepStatus || (TimelineStepStatus = {}));
23
-
24
- /**
25
- * Sets a steps status based on multiple criteria
26
- * @param currentStep TimelineStep
27
- * @param index number
28
- * @param steps TimelineStep[]
29
- * @returns TimelineStep
30
- */
31
- function setStepStatus(currentStep, index, steps) {
32
- // if step already has a status use it
33
- if (currentStep.status) {
34
- return currentStep;
35
- }
36
- // if step is not the first, and previous step is rejected or disabled/rejected all other steps after it
37
- // should be disabled/rejected
38
- if ((index > 0 && getPreviousStepStatus(index, steps) === TimelineStepStatus.Rejected) ||
39
- getPreviousStepStatus(index, steps) === TimelineStepStatus.DisabledRejected) {
40
- currentStep.status = TimelineStepStatus.DisabledRejected;
41
- // if step has a date, that step has been completed
42
- }
43
- else if (currentStep.date) {
44
- currentStep.status = TimelineStepStatus.Completed;
45
- // if step is not the first, and previous step has a date or if step is the first and the next step does
46
- // not have a date then step is current
47
- }
48
- else if ((index > 0 && steps[index - 1]?.date) ||
49
- (index === 0 && !steps[index + 1]?.date) ||
50
- getPreviousStepStatus(index, steps) === TimelineStepStatus.Skipped) {
51
- currentStep.status = TimelineStepStatus.Current;
52
- // step is a future step
53
- }
54
- else {
55
- currentStep.status = TimelineStepStatus.Future;
56
- }
57
- return currentStep;
58
- }
59
- /**
60
- * Takes a step and sets its itcon based on the steps status.
61
- * Status must be set prior to running this function.
62
- * @param currentStep TimelineStep
63
- * @returns TimelineStep
64
- */
65
- function setStepIcon(currentStep) {
66
- switch (currentStep.status) {
67
- case TimelineStepStatus.Completed:
68
- currentStep.icon = 'check';
69
- break;
70
- case TimelineStepStatus.Skipped:
71
- currentStep.icon = 'stepper_circle';
72
- break;
73
- case TimelineStepStatus.Disabled:
74
- currentStep.icon = 'minus';
75
- break;
76
- case TimelineStepStatus.Alert:
77
- currentStep.icon = 'exclamation';
78
- break;
79
- case TimelineStepStatus.Rejected:
80
- case TimelineStepStatus.DisabledRejected:
81
- currentStep.icon = 'cross';
82
- break;
83
- default:
84
- break;
85
- }
86
- return currentStep;
87
- }
88
- /**
89
- * Returns the status of the previous step
90
- * @param index number
91
- * @param steps TimelineStep
92
- * @returns TimelineStepStatus
93
- */
94
- function getPreviousStepStatus(index, steps) {
95
- return steps[index - 1] && steps[index - 1].status;
96
- }
97
- function getTimelineStepperSampleData() {
98
- return [
99
- { title: 'Order Placed', icon: 'check', date: new Date('05/09/2021') },
100
- {
101
- title: 'Acknowledged',
102
- icon: 'file_complete',
103
- date: new Date('05/10/2021'),
104
- },
105
- {
106
- title: 'In Production',
107
- icon: 'assembly_production_conveyer',
108
- subtitle: 'test',
109
- status: TimelineStepStatus.Skipped,
110
- },
111
- { title: 'Booked', icon: 'calendar_star' },
112
- { title: 'Documents', icon: 'file_multi' },
113
- { title: 'In Transit', icon: 'truck_fast' },
114
- { title: 'Delivered', icon: 'box_check' },
115
- ]
116
- .map(setStepStatus)
117
- .map(setStepIcon);
118
- }
119
-
120
- class AdsTimelineStepperComponent {
121
- constructor(element, renderer, window) {
122
- this.element = element;
123
- this.renderer = renderer;
124
- this.window = window;
125
- /**
126
- * The steps to display
127
- */
128
- this.steps = [];
129
- /**
130
- * The size of the icons
131
- */
132
- this.iconSize = 'sm';
133
- /**
134
- * Whether the viewport is mobile
135
- */
136
- this.isMobile = false;
137
- /** @ignore */
138
- this.stepStatus = TimelineStepStatus;
139
- /** @ignore */
140
- this.iconMap = {
141
- sm: { size: 24, padding: 16 },
142
- md: { size: 32, padding: 24 },
143
- lg: { size: 48, padding: 32 },
144
- };
145
- /** @ignore */
146
- this.shouldScroll = false;
147
- }
148
- /** @ignore */
149
- ngOnChanges(changes) {
150
- if (changes.iconSize && !changes.iconSize.firstChange) {
151
- this.setCircleSize();
152
- }
153
- if (changes.isMobile && !changes.isMobile.firstChange) {
154
- this.resetStepperScrollState();
155
- this.setStepperScrollState();
156
- }
157
- }
158
- /** @ignore */
159
- ngOnInit() {
160
- this.focusedStepIndex = this.steps.findIndex((step) => step.status === this.stepStatus.Current);
161
- this.setCircleSize();
162
- }
163
- /** @ignore */
164
- onSwipeLeft() {
165
- // Ignore swipe if last step already focused
166
- if (this.isLastStep(this.focusedStepIndex)) {
167
- return;
168
- }
169
- this.focusedStepIndex = ++this.focusedStepIndex;
170
- if (this.shouldScroll) {
171
- this.centerFocusedStep();
172
- }
173
- }
174
- /** @ignore */
175
- onSwipeRight() {
176
- // Ignore swipe if first step already focused
177
- if (this.isFirstStep(this.focusedStepIndex)) {
178
- return;
179
- }
180
- this.focusedStepIndex = --this.focusedStepIndex;
181
- if (this.shouldScroll) {
182
- this.centerFocusedStep();
183
- }
184
- }
185
- /** @ignore */
186
- centerFocusedStep() {
187
- const halfOfViewport = this.window.innerWidth / 2;
188
- const middleOfFocusedStep = this.focusedStepIndex * this.stepWidth + this.stepWidth / 2;
189
- this.renderer.setStyle(this.element.nativeElement, 'margin-left', `${halfOfViewport - middleOfFocusedStep}px`);
190
- }
191
- /** @ignore */
192
- isFirstStep(index) {
193
- return index === 0;
194
- }
195
- /** @ignore */
196
- isLastStep(index) {
197
- return index === this.steps.length - 1;
198
- }
199
- /** @ignore */
200
- resetStepperScrollState() {
201
- this.shouldScroll = false;
202
- this.renderer.setStyle(this.element.nativeElement, 'margin-left', '0');
203
- }
204
- /** @ignore */
205
- setCircleSize() {
206
- const { size, padding } = this.iconMap[this.iconSize];
207
- const circleSize = size + padding;
208
- this.style = {
209
- circle: {
210
- width: `${circleSize}px`,
211
- height: `${circleSize}px`,
212
- 'border-radius': `${circleSize / 2}px`,
213
- },
214
- lineBefore: {
215
- width: `calc(50% - ${circleSize / 2 - 4}px)`,
216
- top: `${circleSize / 2}px`,
217
- },
218
- lineAfter: {
219
- width: `calc(50% - ${circleSize / 2 - 6}px)`,
220
- top: `${circleSize / 2}px`,
221
- },
222
- skipped: {
223
- width: `${circleSize - 4}px`,
224
- height: `${circleSize - 4}px`,
225
- 'border-radius': `${circleSize / 2}px`,
226
- },
227
- };
228
- }
229
- /** @ignore */
230
- setStepperScrollState() {
231
- this.stepWidth = this.stepElements.first.nativeElement.getBoundingClientRect().width;
232
- if (Math.floor(this.steps.length * this.stepWidth) > this.window.innerWidth) {
233
- this.stepElements.forEach((step) => this.renderer.setStyle(step.nativeElement, 'flex', '0 0 0'));
234
- this.shouldScroll = true;
235
- this.centerFocusedStep();
236
- }
237
- else {
238
- this.stepElements.forEach((step) => this.renderer.setStyle(step.nativeElement, 'flex', '1'));
239
- }
240
- }
241
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsTimelineStepperComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: Window }], target: i0.ɵɵFactoryTarget.Component }); }
242
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: AdsTimelineStepperComponent, selector: "ads-timeline-stepper", inputs: { id: "id", steps: "steps", iconSize: "iconSize", isMobile: "isMobile" }, viewQueries: [{ propertyName: "stepElements", predicate: ["stepElements"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"timeline-stepper\" [class.mobile]=\"isMobile\" [id]=\"id\">\n <ng-container *ngFor=\"let step of steps; let first = first; let last = last; let index = index\">\n <div\n #stepElements\n adsGesture\n class=\"step\"\n [class.focused]=\"index === focusedStepIndex\"\n (gestureleft)=\"onSwipeLeft()\"\n (gestureright)=\"onSwipeRight()\"\n >\n <div *ngIf=\"!first\" class=\"line before\" [ngClass]=\"step.status\" [ngStyle]=\"style.lineBefore\"></div>\n <div class=\"step-icon-wrapper\">\n <div\n class=\"step-icon\"\n [ngClass]=\"step.status\"\n [ngStyle]=\"step.status === stepStatus.Skipped ? style.skipped : style.circle\"\n [matTooltip]=\"step.title\"\n [matTooltipDisabled]=\"false\"\n >\n <ads-icon [name]=\"step.icon\" [size]=\"iconSize\" color=\"white\"></ads-icon>\n </div>\n </div>\n <div *ngIf=\"!last\" class=\"line after\" [ngClass]=\"steps[index + 1].status\" [ngStyle]=\"style.lineAfter\"></div>\n <span class=\"title\">{{ step.title }}</span>\n <span class=\"subtitle\">\n <ng-container *ngIf=\"step?.date; else subtitle\">{{ step.date | date: 'shortDate' }}</ng-container>\n <ng-template #subtitle>{{ step?.subtitle }}</ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:block;flex:1;transition:margin .5s}.timeline-stepper{display:flex}.step{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:flex-start}.timeline-stepper.mobile .step{min-width:100px}.step-icon{z-index:1;display:flex;align-items:center;justify-content:center}.title{margin-top:4px;font-weight:500;line-height:18.75px;text-align:center}.subtitle{color:var(--color-medium);font-size:12px;line-height:14.06px}.timeline-stepper.mobile .step.focused .step-icon{transform:scale(1.25);transition:transform .5s}.timeline-stepper.mobile .step.focused .title{margin-top:8px}.step-icon-wrapper{display:flex;width:100%;align-items:flex-start;justify-content:center}.step-icon.completed{background-color:var(--color-primary)}.step-icon.current{background-color:var(--color-secondary)}.step-icon.future{background-color:var(--color-medium-50)}.step-icon.disabled,.step-icon.disabled-rejected{background-color:var(--color-light)}.step-icon.alert{background-color:var(--color-alert)}.step-icon.rejected{background-color:var(--color-error-hover)}.step-icon.skipped{width:36px;height:36px;border:2px solid var(--color-primary);background-color:var(--color-white)}.timeline-stepper.mobile .step:not(.focused) .title,.timeline-stepper.mobile .step:not(.focused) .subtitle{display:none}::ng-deep .step-icon .ads-icon{display:flex!important;align-items:center;justify-content:center}::ng-deep .step-icon.skipped .ads-icon{color:var(--color-primary)!important}.line{position:absolute;border-top:2px solid var(--color-medium-50)}.line.before{left:0}.line.after{right:0}.line.completed{border-top-color:var(--color-success)}.line.skipped{border-top-color:var(--color-primary)}.line.current,.line.rejected{border-top-style:dashed;border-top-color:var(--color-primary)}.line.current.before,.line.rejected.before{left:-4px;width:calc(50% - 16px)}.line.future{border-top-color:var(--color-medium-50)}.line.disabled,.line.disabled-rejected{border-top-color:var(--color-light)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }, { kind: "directive", type: i4.AdsGestureDirective, selector: "[adsGesture]", outputs: ["gesturedown", "gestureleft", "gestureright", "gestureup"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
243
- }
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsTimelineStepperComponent, decorators: [{
245
- type: Component,
246
- args: [{ selector: 'ads-timeline-stepper', template: "<div class=\"timeline-stepper\" [class.mobile]=\"isMobile\" [id]=\"id\">\n <ng-container *ngFor=\"let step of steps; let first = first; let last = last; let index = index\">\n <div\n #stepElements\n adsGesture\n class=\"step\"\n [class.focused]=\"index === focusedStepIndex\"\n (gestureleft)=\"onSwipeLeft()\"\n (gestureright)=\"onSwipeRight()\"\n >\n <div *ngIf=\"!first\" class=\"line before\" [ngClass]=\"step.status\" [ngStyle]=\"style.lineBefore\"></div>\n <div class=\"step-icon-wrapper\">\n <div\n class=\"step-icon\"\n [ngClass]=\"step.status\"\n [ngStyle]=\"step.status === stepStatus.Skipped ? style.skipped : style.circle\"\n [matTooltip]=\"step.title\"\n [matTooltipDisabled]=\"false\"\n >\n <ads-icon [name]=\"step.icon\" [size]=\"iconSize\" color=\"white\"></ads-icon>\n </div>\n </div>\n <div *ngIf=\"!last\" class=\"line after\" [ngClass]=\"steps[index + 1].status\" [ngStyle]=\"style.lineAfter\"></div>\n <span class=\"title\">{{ step.title }}</span>\n <span class=\"subtitle\">\n <ng-container *ngIf=\"step?.date; else subtitle\">{{ step.date | date: 'shortDate' }}</ng-container>\n <ng-template #subtitle>{{ step?.subtitle }}</ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:block;flex:1;transition:margin .5s}.timeline-stepper{display:flex}.step{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:flex-start}.timeline-stepper.mobile .step{min-width:100px}.step-icon{z-index:1;display:flex;align-items:center;justify-content:center}.title{margin-top:4px;font-weight:500;line-height:18.75px;text-align:center}.subtitle{color:var(--color-medium);font-size:12px;line-height:14.06px}.timeline-stepper.mobile .step.focused .step-icon{transform:scale(1.25);transition:transform .5s}.timeline-stepper.mobile .step.focused .title{margin-top:8px}.step-icon-wrapper{display:flex;width:100%;align-items:flex-start;justify-content:center}.step-icon.completed{background-color:var(--color-primary)}.step-icon.current{background-color:var(--color-secondary)}.step-icon.future{background-color:var(--color-medium-50)}.step-icon.disabled,.step-icon.disabled-rejected{background-color:var(--color-light)}.step-icon.alert{background-color:var(--color-alert)}.step-icon.rejected{background-color:var(--color-error-hover)}.step-icon.skipped{width:36px;height:36px;border:2px solid var(--color-primary);background-color:var(--color-white)}.timeline-stepper.mobile .step:not(.focused) .title,.timeline-stepper.mobile .step:not(.focused) .subtitle{display:none}::ng-deep .step-icon .ads-icon{display:flex!important;align-items:center;justify-content:center}::ng-deep .step-icon.skipped .ads-icon{color:var(--color-primary)!important}.line{position:absolute;border-top:2px solid var(--color-medium-50)}.line.before{left:0}.line.after{right:0}.line.completed{border-top-color:var(--color-success)}.line.skipped{border-top-color:var(--color-primary)}.line.current,.line.rejected{border-top-style:dashed;border-top-color:var(--color-primary)}.line.current.before,.line.rejected.before{left:-4px;width:calc(50% - 16px)}.line.future{border-top-color:var(--color-medium-50)}.line.disabled,.line.disabled-rejected{border-top-color:var(--color-light)}\n"] }]
247
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: Window }], propDecorators: { id: [{
248
- type: Input
249
- }], steps: [{
250
- type: Input
251
- }], iconSize: [{
252
- type: Input
253
- }], isMobile: [{
254
- type: Input
255
- }], stepElements: [{
256
- type: ViewChildren,
257
- args: ['stepElements']
258
- }] } });
259
-
260
- class AdsTimelineStepperModule {
261
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsTimelineStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
262
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: AdsTimelineStepperModule, declarations: [AdsTimelineStepperComponent], imports: [CommonModule, MatTooltipModule, AdsIconModule, AdsGestureModule], exports: [AdsTimelineStepperComponent] }); }
263
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsTimelineStepperModule, providers: [
264
- { provide: Window, useValue: window },
265
- { provide: ADS_GESTURE_DEFAULT_OPTIONS, useValue: { direction: AdsGestureDirection.DIRECTION_HORIZONTAL } },
266
- ], imports: [CommonModule, MatTooltipModule, AdsIconModule, AdsGestureModule] }); }
267
- }
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsTimelineStepperModule, decorators: [{
269
- type: NgModule,
270
- args: [{
271
- imports: [CommonModule, MatTooltipModule, AdsIconModule, AdsGestureModule],
272
- exports: [AdsTimelineStepperComponent],
273
- declarations: [AdsTimelineStepperComponent],
274
- providers: [
275
- { provide: Window, useValue: window },
276
- { provide: ADS_GESTURE_DEFAULT_OPTIONS, useValue: { direction: AdsGestureDirection.DIRECTION_HORIZONTAL } },
277
- ],
278
- }]
279
- }] });
280
-
281
- /**
282
- * Generated bundle index. Do not edit.
283
- */
284
-
285
- export { AdsTimelineStepperComponent, AdsTimelineStepperModule, TimelineStepStatus, getPreviousStepStatus, getTimelineStepperSampleData, setStepIcon, setStepStatus };
286
- //# sourceMappingURL=ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs","sources":["../../../../libs/ads-ui/src/lib/components/timeline-stepper/timeline-step.type.ts","../../../../libs/ads-ui/src/lib/components/timeline-stepper/timeline-helpers.ts","../../../../libs/ads-ui/src/lib/components/timeline-stepper/timeline-stepper.component.ts","../../../../libs/ads-ui/src/lib/components/timeline-stepper/timeline-stepper.component.html","../../../../libs/ads-ui/src/lib/components/timeline-stepper/timeline-stepper.module.ts","../../../../libs/ads-ui/src/lib/components/timeline-stepper/ascentgl-ads-ui-src-lib-components-timeline-stepper.ts"],"sourcesContent":["import { adsIcon } from '@ascentgl/ads-icons/icons';\n\nexport type TimelineStepBase = {\n title: string;\n subtitle?: string;\n date?: Date;\n icon?: adsIcon;\n status?: TimelineStepStatus;\n};\n\nexport type TimelineStepWithStatus = TimelineStepBase & { status: TimelineStepStatus };\n\nexport type TimelineStep = {\n title: string;\n subtitle?: string;\n date?: Date;\n icon: adsIcon;\n status: TimelineStepStatus;\n};\n\nexport type TimelineStyle = {\n circle: CircleStyle;\n lineBefore: LineStyle;\n lineAfter: LineStyle;\n skipped: CircleStyle;\n};\n\nexport type CircleStyle = {\n width: string;\n height: string;\n 'border-radius': string;\n};\n\nexport type LineStyle = {\n width: string;\n top: string;\n};\n\nexport enum TimelineStepStatus {\n Completed = 'completed',\n Current = 'current',\n Future = 'future',\n Skipped = 'skipped',\n Rejected = 'rejected',\n Alert = 'alert',\n Disabled = 'disabled',\n DisabledRejected = 'disabled-rejected',\n}\n","import { TimelineStep, TimelineStepStatus, TimelineStepBase, TimelineStepWithStatus } from './timeline-step.type';\nimport { adsIcon } from '@ascentgl/ads-icons/icons';\n\n/**\n * Sets a steps status based on multiple criteria\n * @param currentStep TimelineStep\n * @param index number\n * @param steps TimelineStep[]\n * @returns TimelineStep\n */\nexport function setStepStatus(\n currentStep: TimelineStepBase,\n index: number,\n steps: TimelineStepBase[],\n): TimelineStepWithStatus {\n // if step already has a status use it\n if (currentStep.status) {\n return currentStep as TimelineStep;\n }\n\n // if step is not the first, and previous step is rejected or disabled/rejected all other steps after it\n // should be disabled/rejected\n if (\n (index > 0 && getPreviousStepStatus(index, steps) === TimelineStepStatus.Rejected) ||\n getPreviousStepStatus(index, steps) === TimelineStepStatus.DisabledRejected\n ) {\n currentStep.status = TimelineStepStatus.DisabledRejected;\n // if step has a date, that step has been completed\n } else if (currentStep.date) {\n currentStep.status = TimelineStepStatus.Completed;\n // if step is not the first, and previous step has a date or if step is the first and the next step does\n // not have a date then step is current\n } else if (\n (index > 0 && steps[index - 1]?.date) ||\n (index === 0 && !steps[index + 1]?.date) ||\n getPreviousStepStatus(index, steps) === TimelineStepStatus.Skipped\n ) {\n currentStep.status = TimelineStepStatus.Current;\n // step is a future step\n } else {\n currentStep.status = TimelineStepStatus.Future;\n }\n\n return currentStep as TimelineStep;\n}\n\n/**\n * Takes a step and sets its itcon based on the steps status.\n * Status must be set prior to running this function.\n * @param currentStep TimelineStep\n * @returns TimelineStep\n */\nexport function setStepIcon(currentStep: TimelineStepWithStatus): TimelineStep {\n switch (currentStep.status) {\n case TimelineStepStatus.Completed:\n currentStep.icon = 'check';\n break;\n case TimelineStepStatus.Skipped:\n currentStep.icon = 'stepper_circle';\n break;\n case TimelineStepStatus.Disabled:\n currentStep.icon = 'minus';\n break;\n case TimelineStepStatus.Alert:\n currentStep.icon = 'exclamation';\n break;\n case TimelineStepStatus.Rejected:\n case TimelineStepStatus.DisabledRejected:\n currentStep.icon = 'cross';\n break;\n default:\n break;\n }\n\n return currentStep as TimelineStep;\n}\n\n/**\n * Returns the status of the previous step\n * @param index number\n * @param steps TimelineStep\n * @returns TimelineStepStatus\n */\nexport function getPreviousStepStatus(index: number, steps: TimelineStepBase[]): TimelineStepStatus | undefined {\n return steps[index - 1] && steps[index - 1].status;\n}\n\nexport function getTimelineStepperSampleData(): TimelineStep[] {\n return [\n { title: 'Order Placed', icon: <adsIcon>'check', date: new Date('05/09/2021') },\n {\n title: 'Acknowledged',\n icon: <adsIcon>'file_complete',\n date: new Date('05/10/2021'),\n },\n {\n title: 'In Production',\n icon: <adsIcon>'assembly_production_conveyer',\n subtitle: 'test',\n status: TimelineStepStatus.Skipped,\n },\n { title: 'Booked', icon: <adsIcon>'calendar_star' },\n { title: 'Documents', icon: <adsIcon>'file_multi' },\n { title: 'In Transit', icon: <adsIcon>'truck_fast' },\n { title: 'Delivered', icon: <adsIcon>'box_check' },\n ]\n .map(setStepStatus)\n .map(setStepIcon);\n}\n","import { ViewChildren } from '@angular/core';\nimport { Component, ElementRef, Input, OnChanges, OnInit, QueryList, Renderer2, SimpleChanges } from '@angular/core';\nimport { TimelineStep, TimelineStepStatus, TimelineStyle } from './timeline-step.type';\n\n@Component({\n selector: 'ads-timeline-stepper',\n styleUrls: ['./timeline-stepper.component.scss'],\n templateUrl: './timeline-stepper.component.html',\n})\nexport class AdsTimelineStepperComponent implements OnInit, OnChanges {\n constructor(\n private element: ElementRef,\n private renderer: Renderer2,\n private window: Window,\n ) {}\n\n /**\n * The unique ID for the timeline stepper\n */\n @Input() id!: string;\n\n /**\n * The steps to display\n */\n @Input() public steps: TimelineStep[] = [];\n\n /**\n * The size of the icons\n */\n @Input() public iconSize: 'sm' | 'md' | 'lg' = 'sm';\n\n /**\n * Whether the viewport is mobile\n */\n @Input() isMobile = false;\n\n /** @ignore */\n @ViewChildren('stepElements') stepElements!: QueryList<ElementRef>;\n\n /** @ignore */\n public focusedStepIndex!: number;\n\n /** @ignore */\n public stepStatus = TimelineStepStatus;\n\n /** @ignore */\n public style!: TimelineStyle;\n\n /** @ignore */\n private iconMap = {\n sm: { size: 24, padding: 16 },\n md: { size: 32, padding: 24 },\n lg: { size: 48, padding: 32 },\n };\n\n /** @ignore */\n private shouldScroll = false;\n\n /** @ignore */\n private stepWidth!: number;\n\n /** @ignore */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.iconSize && !changes.iconSize.firstChange) {\n this.setCircleSize();\n }\n\n if (changes.isMobile && !changes.isMobile.firstChange) {\n this.resetStepperScrollState();\n this.setStepperScrollState();\n }\n }\n\n /** @ignore */\n ngOnInit(): void {\n this.focusedStepIndex = this.steps.findIndex((step: TimelineStep) => step.status === this.stepStatus.Current);\n this.setCircleSize();\n }\n\n /** @ignore */\n public onSwipeLeft() {\n // Ignore swipe if last step already focused\n if (this.isLastStep(this.focusedStepIndex)) {\n return;\n }\n\n this.focusedStepIndex = ++this.focusedStepIndex;\n\n if (this.shouldScroll) {\n this.centerFocusedStep();\n }\n }\n\n /** @ignore */\n public onSwipeRight() {\n // Ignore swipe if first step already focused\n if (this.isFirstStep(this.focusedStepIndex)) {\n return;\n }\n\n this.focusedStepIndex = --this.focusedStepIndex;\n\n if (this.shouldScroll) {\n this.centerFocusedStep();\n }\n }\n\n /** @ignore */\n private centerFocusedStep(): void {\n const halfOfViewport = this.window.innerWidth / 2;\n const middleOfFocusedStep = this.focusedStepIndex * this.stepWidth + this.stepWidth / 2;\n this.renderer.setStyle(this.element.nativeElement, 'margin-left', `${halfOfViewport - middleOfFocusedStep}px`);\n }\n\n /** @ignore */\n private isFirstStep(index: number): boolean {\n return index === 0;\n }\n\n /** @ignore */\n private isLastStep(index: number): boolean {\n return index === this.steps.length - 1;\n }\n\n /** @ignore */\n private resetStepperScrollState() {\n this.shouldScroll = false;\n this.renderer.setStyle(this.element.nativeElement, 'margin-left', '0');\n }\n\n /** @ignore */\n private setCircleSize(): void {\n const { size, padding } = this.iconMap[this.iconSize];\n const circleSize = size + padding;\n\n this.style = {\n circle: {\n width: `${circleSize}px`,\n height: `${circleSize}px`,\n 'border-radius': `${circleSize / 2}px`,\n },\n lineBefore: {\n width: `calc(50% - ${circleSize / 2 - 4}px)`,\n top: `${circleSize / 2}px`,\n },\n lineAfter: {\n width: `calc(50% - ${circleSize / 2 - 6}px)`,\n top: `${circleSize / 2}px`,\n },\n skipped: {\n width: `${circleSize - 4}px`,\n height: `${circleSize - 4}px`,\n 'border-radius': `${circleSize / 2}px`,\n },\n };\n }\n\n /** @ignore */\n private setStepperScrollState() {\n this.stepWidth = this.stepElements.first.nativeElement.getBoundingClientRect().width;\n\n if (Math.floor(this.steps.length * this.stepWidth) > this.window.innerWidth) {\n this.stepElements.forEach((step) => this.renderer.setStyle(step.nativeElement, 'flex', '0 0 0'));\n this.shouldScroll = true;\n this.centerFocusedStep();\n } else {\n this.stepElements.forEach((step) => this.renderer.setStyle(step.nativeElement, 'flex', '1'));\n }\n }\n}\n","<div class=\"timeline-stepper\" [class.mobile]=\"isMobile\" [id]=\"id\">\n <ng-container *ngFor=\"let step of steps; let first = first; let last = last; let index = index\">\n <div\n #stepElements\n adsGesture\n class=\"step\"\n [class.focused]=\"index === focusedStepIndex\"\n (gestureleft)=\"onSwipeLeft()\"\n (gestureright)=\"onSwipeRight()\"\n >\n <div *ngIf=\"!first\" class=\"line before\" [ngClass]=\"step.status\" [ngStyle]=\"style.lineBefore\"></div>\n <div class=\"step-icon-wrapper\">\n <div\n class=\"step-icon\"\n [ngClass]=\"step.status\"\n [ngStyle]=\"step.status === stepStatus.Skipped ? style.skipped : style.circle\"\n [matTooltip]=\"step.title\"\n [matTooltipDisabled]=\"false\"\n >\n <ads-icon [name]=\"step.icon\" [size]=\"iconSize\" color=\"white\"></ads-icon>\n </div>\n </div>\n <div *ngIf=\"!last\" class=\"line after\" [ngClass]=\"steps[index + 1].status\" [ngStyle]=\"style.lineAfter\"></div>\n <span class=\"title\">{{ step.title }}</span>\n <span class=\"subtitle\">\n <ng-container *ngIf=\"step?.date; else subtitle\">{{ step.date | date: 'shortDate' }}</ng-container>\n <ng-template #subtitle>{{ step?.subtitle }}</ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { AdsIconModule } from '@ascentgl/ads-icons';\nimport { AdsTimelineStepperComponent } from './timeline-stepper.component';\nimport { AdsGestureDirection, AdsGestureModule, ADS_GESTURE_DEFAULT_OPTIONS } from '@ascentgl/ads-utils';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, AdsIconModule, AdsGestureModule],\n exports: [AdsTimelineStepperComponent],\n declarations: [AdsTimelineStepperComponent],\n providers: [\n { provide: Window, useValue: window },\n { provide: ADS_GESTURE_DEFAULT_OPTIONS, useValue: { direction: AdsGestureDirection.DIRECTION_HORIZONTAL } },\n ],\n})\nexport class AdsTimelineStepperModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}