@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.
- package/esm2022/index.mjs +5 -7
- package/esm2022/lib/components/badge/numeric-badge.component.mjs +1 -1
- package/esm2022/lib/components/card/card.component.mjs +2 -2
- package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +8 -4
- package/esm2022/lib/components/expansion-panel/expansion-panel.module.mjs +5 -3
- package/esm2022/lib/components/form-fields/search-fields/search-dropdown/search-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/form-fields/search-fields/search-input/search-input.component.mjs +3 -3
- package/esm2022/lib/components/logo/primary-logo/primary-logo.component.mjs +4 -3
- package/esm2022/lib/components/nav-bar/nav-item/index.mjs +2 -0
- package/esm2022/lib/components/nav-bar/nav-item/nav-item.component.mjs +27 -0
- package/esm2022/lib/components/nav-bar/nav-item/nav-item.module.mjs +20 -0
- package/esm2022/lib/components/nav-bar/nav-item/nav-item.types.mjs +2 -0
- package/esm2022/lib/components/nav-bar/nav-item/public-api.mjs +3 -0
- package/esm2022/lib/components/nav-bar/nav-menu/index.mjs +2 -0
- package/esm2022/lib/components/nav-bar/nav-menu/nav-menu.component.mjs +29 -0
- package/esm2022/lib/components/nav-bar/nav-menu/nav-menu.module.mjs +40 -0
- package/esm2022/lib/components/nav-bar/nav-menu/nav-menu.types.mjs +2 -0
- package/esm2022/lib/components/nav-bar/nav-menu/public-api.mjs +3 -0
- package/esm2022/lib/components/nav-bar/side-nav-bar/index.mjs +2 -0
- package/esm2022/lib/components/nav-bar/side-nav-bar/public-api.mjs +3 -0
- package/esm2022/lib/components/nav-bar/side-nav-bar/side-nav-bar.component.mjs +82 -0
- package/esm2022/lib/components/nav-bar/side-nav-bar/side-nav-bar.module.mjs +46 -0
- package/esm2022/lib/components/steppers/numeric-stepper/components/numeric-step.component.mjs +22 -0
- package/esm2022/lib/components/steppers/numeric-stepper/index.mjs +2 -0
- package/esm2022/lib/components/steppers/numeric-stepper/numeric-stepper.component.mjs +19 -0
- package/esm2022/lib/components/steppers/numeric-stepper/numeric-stepper.module.mjs +21 -0
- package/esm2022/lib/components/steppers/numeric-stepper/public-api.mjs +3 -0
- package/esm2022/src/lib/components/card/card.component.mjs +2 -2
- package/esm2022/src/lib/components/logo/primary-logo/primary-logo.component.mjs +4 -3
- package/fesm2022/ascentgl-ads-ui-src-lib-components-card.mjs +2 -2
- package/fesm2022/ascentgl-ads-ui-src-lib-components-card.mjs.map +1 -1
- package/fesm2022/ascentgl-ads-ui-src-lib-components-logo-primary-logo.mjs +3 -2
- package/fesm2022/ascentgl-ads-ui-src-lib-components-logo-primary-logo.mjs.map +1 -1
- package/fesm2022/ascentgl-ads-ui.mjs +259 -989
- package/fesm2022/ascentgl-ads-ui.mjs.map +1 -1
- package/index.d.ts +4 -6
- package/lib/components/badge/numeric-badge.component.d.ts +1 -1
- package/lib/components/expansion-panel/expansion-panel.component.d.ts +7 -1
- package/lib/components/expansion-panel/expansion-panel.module.d.ts +1 -1
- package/lib/components/nav-bar/nav-item/nav-item.component.d.ts +18 -0
- package/lib/components/nav-bar/nav-item/nav-item.module.d.ts +10 -0
- package/lib/components/nav-bar/nav-item/nav-item.types.d.ts +7 -0
- package/lib/components/nav-bar/nav-item/public-api.d.ts +2 -0
- package/lib/components/{nav-menu → nav-bar/nav-menu}/nav-menu.component.d.ts +1 -3
- package/lib/components/{nav-menu → nav-bar/nav-menu}/nav-menu.module.d.ts +3 -4
- package/lib/components/{nav-menu → nav-bar/nav-menu}/nav-menu.types.d.ts +1 -1
- package/lib/components/nav-bar/side-nav-bar/public-api.d.ts +2 -0
- package/lib/components/nav-bar/side-nav-bar/side-nav-bar.component.d.ts +42 -0
- package/lib/components/nav-bar/side-nav-bar/side-nav-bar.module.d.ts +13 -0
- package/lib/components/steppers/numeric-stepper/components/numeric-step.component.d.ts +10 -0
- package/lib/components/steppers/numeric-stepper/numeric-stepper.component.d.ts +16 -0
- package/lib/components/steppers/numeric-stepper/numeric-stepper.module.d.ts +11 -0
- package/lib/components/steppers/numeric-stepper/public-api.d.ts +2 -0
- package/package.json +23 -47
- package/esm2022/lib/components/nav-menu/index.mjs +0 -2
- package/esm2022/lib/components/nav-menu/nav-menu.component.mjs +0 -32
- package/esm2022/lib/components/nav-menu/nav-menu.module.mjs +0 -22
- package/esm2022/lib/components/nav-menu/nav-menu.types.mjs +0 -2
- package/esm2022/lib/components/nav-menu/public-api.mjs +0 -3
- package/esm2022/lib/components/progress-stepper/index.mjs +0 -2
- package/esm2022/lib/components/progress-stepper/progress-step.types.mjs +0 -2
- package/esm2022/lib/components/progress-stepper/progress-stepper.component.mjs +0 -106
- package/esm2022/lib/components/progress-stepper/progress-stepper.module.mjs +0 -27
- package/esm2022/lib/components/progress-stepper/public-api.mjs +0 -4
- package/esm2022/lib/components/stepper-condensed/condensed-helpers.mjs +0 -97
- package/esm2022/lib/components/stepper-condensed/condensed-step.type.mjs +0 -12
- package/esm2022/lib/components/stepper-condensed/index.mjs +0 -2
- package/esm2022/lib/components/stepper-condensed/public-api.mjs +0 -5
- package/esm2022/lib/components/stepper-condensed/stepper-condensed.component.mjs +0 -149
- package/esm2022/lib/components/stepper-condensed/stepper-condensed.module.mjs +0 -28
- package/esm2022/lib/components/timeline-stepper/index.mjs +0 -2
- package/esm2022/lib/components/timeline-stepper/public-api.mjs +0 -5
- package/esm2022/lib/components/timeline-stepper/timeline-helpers.mjs +0 -97
- package/esm2022/lib/components/timeline-stepper/timeline-step.type.mjs +0 -12
- package/esm2022/lib/components/timeline-stepper/timeline-stepper.component.mjs +0 -148
- package/esm2022/lib/components/timeline-stepper/timeline-stepper.module.mjs +0 -28
- package/esm2022/lib/components/vertical-stepper/index.mjs +0 -2
- package/esm2022/lib/components/vertical-stepper/public-api.mjs +0 -5
- package/esm2022/lib/components/vertical-stepper/vertical-helpers.mjs +0 -98
- package/esm2022/lib/components/vertical-stepper/vertical-step.type.mjs +0 -12
- package/esm2022/lib/components/vertical-stepper/vertical-stepper.component.mjs +0 -125
- package/esm2022/lib/components/vertical-stepper/vertical-stepper.module.mjs +0 -28
- package/esm2022/lib/components/wizard-stepper/index.mjs +0 -2
- package/esm2022/lib/components/wizard-stepper/public-api.mjs +0 -4
- package/esm2022/lib/components/wizard-stepper/wizard-stepper.component.mjs +0 -28
- package/esm2022/lib/components/wizard-stepper/wizard-stepper.module.mjs +0 -20
- package/esm2022/lib/components/wizard-stepper/wizard-stepper.types.mjs +0 -2
- package/esm2022/src/lib/components/progress-stepper/ascentgl-ads-ui-src-lib-components-progress-stepper.mjs +0 -5
- package/esm2022/src/lib/components/progress-stepper/progress-step.types.mjs +0 -2
- package/esm2022/src/lib/components/progress-stepper/progress-stepper.component.mjs +0 -106
- package/esm2022/src/lib/components/progress-stepper/progress-stepper.module.mjs +0 -27
- package/esm2022/src/lib/components/progress-stepper/public-api.mjs +0 -4
- package/esm2022/src/lib/components/timeline-stepper/ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs +0 -5
- package/esm2022/src/lib/components/timeline-stepper/public-api.mjs +0 -5
- package/esm2022/src/lib/components/timeline-stepper/timeline-helpers.mjs +0 -97
- package/esm2022/src/lib/components/timeline-stepper/timeline-step.type.mjs +0 -12
- package/esm2022/src/lib/components/timeline-stepper/timeline-stepper.component.mjs +0 -148
- package/esm2022/src/lib/components/timeline-stepper/timeline-stepper.module.mjs +0 -28
- package/esm2022/src/lib/components/vertical-stepper/ascentgl-ads-ui-src-lib-components-vertical-stepper.mjs +0 -5
- package/esm2022/src/lib/components/vertical-stepper/public-api.mjs +0 -5
- package/esm2022/src/lib/components/vertical-stepper/vertical-helpers.mjs +0 -98
- package/esm2022/src/lib/components/vertical-stepper/vertical-step.type.mjs +0 -12
- package/esm2022/src/lib/components/vertical-stepper/vertical-stepper.component.mjs +0 -125
- package/esm2022/src/lib/components/vertical-stepper/vertical-stepper.module.mjs +0 -28
- package/esm2022/src/lib/components/wizard-stepper/ascentgl-ads-ui-src-lib-components-wizard-stepper.mjs +0 -5
- package/esm2022/src/lib/components/wizard-stepper/public-api.mjs +0 -4
- package/esm2022/src/lib/components/wizard-stepper/wizard-stepper.component.mjs +0 -28
- package/esm2022/src/lib/components/wizard-stepper/wizard-stepper.module.mjs +0 -20
- package/esm2022/src/lib/components/wizard-stepper/wizard-stepper.types.mjs +0 -2
- package/fesm2022/ascentgl-ads-ui-src-lib-components-progress-stepper.mjs +0 -136
- package/fesm2022/ascentgl-ads-ui-src-lib-components-progress-stepper.mjs.map +0 -1
- package/fesm2022/ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs +0 -286
- package/fesm2022/ascentgl-ads-ui-src-lib-components-timeline-stepper.mjs.map +0 -1
- package/fesm2022/ascentgl-ads-ui-src-lib-components-vertical-stepper.mjs +0 -264
- package/fesm2022/ascentgl-ads-ui-src-lib-components-vertical-stepper.mjs.map +0 -1
- package/fesm2022/ascentgl-ads-ui-src-lib-components-wizard-stepper.mjs +0 -51
- package/fesm2022/ascentgl-ads-ui-src-lib-components-wizard-stepper.mjs.map +0 -1
- package/lib/components/progress-stepper/progress-step.types.d.ts +0 -5
- package/lib/components/progress-stepper/progress-stepper.component.d.ts +0 -42
- package/lib/components/progress-stepper/progress-stepper.module.d.ts +0 -10
- package/lib/components/progress-stepper/public-api.d.ts +0 -3
- package/lib/components/stepper-condensed/condensed-helpers.d.ts +0 -24
- package/lib/components/stepper-condensed/condensed-step.type.d.ts +0 -43
- package/lib/components/stepper-condensed/public-api.d.ts +0 -4
- package/lib/components/stepper-condensed/stepper-condensed.component.d.ts +0 -61
- package/lib/components/stepper-condensed/stepper-condensed.module.d.ts +0 -11
- package/lib/components/timeline-stepper/public-api.d.ts +0 -4
- package/lib/components/timeline-stepper/timeline-helpers.d.ts +0 -24
- package/lib/components/timeline-stepper/timeline-step.type.d.ts +0 -43
- package/lib/components/timeline-stepper/timeline-stepper.component.d.ts +0 -61
- package/lib/components/timeline-stepper/timeline-stepper.module.d.ts +0 -11
- package/lib/components/vertical-stepper/index.d.ts +0 -1
- package/lib/components/vertical-stepper/public-api.d.ts +0 -4
- package/lib/components/vertical-stepper/vertical-helpers.d.ts +0 -24
- package/lib/components/vertical-stepper/vertical-step.type.d.ts +0 -45
- package/lib/components/vertical-stepper/vertical-stepper.component.d.ts +0 -58
- package/lib/components/vertical-stepper/vertical-stepper.module.d.ts +0 -11
- package/lib/components/wizard-stepper/index.d.ts +0 -1
- package/lib/components/wizard-stepper/public-api.d.ts +0 -3
- package/lib/components/wizard-stepper/wizard-stepper.component.d.ts +0 -12
- package/lib/components/wizard-stepper/wizard-stepper.module.d.ts +0 -10
- package/lib/components/wizard-stepper/wizard-stepper.types.d.ts +0 -4
- package/src/lib/components/progress-stepper/index.d.ts +0 -5
- package/src/lib/components/progress-stepper/progress-step.types.d.ts +0 -5
- package/src/lib/components/progress-stepper/progress-stepper.component.d.ts +0 -42
- package/src/lib/components/progress-stepper/progress-stepper.module.d.ts +0 -10
- package/src/lib/components/progress-stepper/public-api.d.ts +0 -3
- package/src/lib/components/timeline-stepper/index.d.ts +0 -5
- package/src/lib/components/timeline-stepper/public-api.d.ts +0 -4
- package/src/lib/components/timeline-stepper/timeline-helpers.d.ts +0 -24
- package/src/lib/components/timeline-stepper/timeline-step.type.d.ts +0 -43
- package/src/lib/components/timeline-stepper/timeline-stepper.component.d.ts +0 -61
- package/src/lib/components/timeline-stepper/timeline-stepper.module.d.ts +0 -11
- package/src/lib/components/vertical-stepper/index.d.ts +0 -5
- package/src/lib/components/vertical-stepper/public-api.d.ts +0 -4
- package/src/lib/components/vertical-stepper/vertical-helpers.d.ts +0 -24
- package/src/lib/components/vertical-stepper/vertical-step.type.d.ts +0 -45
- package/src/lib/components/vertical-stepper/vertical-stepper.component.d.ts +0 -58
- package/src/lib/components/vertical-stepper/vertical-stepper.module.d.ts +0 -11
- package/src/lib/components/wizard-stepper/index.d.ts +0 -5
- package/src/lib/components/wizard-stepper/public-api.d.ts +0 -3
- package/src/lib/components/wizard-stepper/wizard-stepper.component.d.ts +0 -12
- package/src/lib/components/wizard-stepper/wizard-stepper.module.d.ts +0 -10
- package/src/lib/components/wizard-stepper/wizard-stepper.types.d.ts +0 -4
- /package/lib/components/{nav-menu → nav-bar/nav-item}/index.d.ts +0 -0
- /package/lib/components/{progress-stepper → nav-bar/nav-menu}/index.d.ts +0 -0
- /package/lib/components/{nav-menu → nav-bar/nav-menu}/public-api.d.ts +0 -0
- /package/lib/components/{stepper-condensed → nav-bar/side-nav-bar}/index.d.ts +0 -0
- /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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"}
|