@byuhbll/components 4.3.2 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/snackbar/snackbar.component.mjs +151 -0
- package/esm2022/lib/snackbar/snackbar.service.mjs +90 -0
- package/esm2022/lib/status-button/status-button.component.mjs +13 -3
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/byuhbll-components.mjs +249 -5
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/snackbar/snackbar.component.d.ts +67 -0
- package/lib/snackbar/snackbar.service.d.ts +20 -0
- package/lib/status-button/status-button.component.d.ts +15 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles/scss/_vars.scss +10 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, booleanAttribute, } from '@angular/core';
|
|
2
|
+
import { NgClass } from '@angular/common';
|
|
3
|
+
import { StatusButtonComponent, } from '../status-button/status-button.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const purposeToStatusMap = {
|
|
6
|
+
default: 'info',
|
|
7
|
+
info: 'info',
|
|
8
|
+
success: 'success',
|
|
9
|
+
error: 'error',
|
|
10
|
+
warning: 'warning',
|
|
11
|
+
};
|
|
12
|
+
export class SnackbarComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.purpose = 'default';
|
|
15
|
+
this.title = 'Snackbar Title';
|
|
16
|
+
this.description = 'Lorem ipsum';
|
|
17
|
+
this.fieldPlaceholder = 'Placeholder';
|
|
18
|
+
this.titleIcon = 'info';
|
|
19
|
+
this.showTitle = true;
|
|
20
|
+
this.showTitleIcon = true;
|
|
21
|
+
this.titleIconFilled = false;
|
|
22
|
+
this.showClose = true;
|
|
23
|
+
this.showProgressBar = true;
|
|
24
|
+
this.showField = true;
|
|
25
|
+
this.showButton = true;
|
|
26
|
+
this.autoDismiss = true;
|
|
27
|
+
this.visible = true;
|
|
28
|
+
this.progressMs = 5000;
|
|
29
|
+
this.y = 24;
|
|
30
|
+
this.closed = new EventEmitter();
|
|
31
|
+
this.visibleChange = new EventEmitter();
|
|
32
|
+
this.buttonClicked = new EventEmitter();
|
|
33
|
+
this.isOpen = false;
|
|
34
|
+
this.EXIT_MS = 300;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
if (this.visible) {
|
|
38
|
+
// enter on next tick
|
|
39
|
+
setTimeout(() => (this.isOpen = true), 0);
|
|
40
|
+
this.startDismissTimer();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ngOnChanges(changes) {
|
|
44
|
+
if ('visible' in changes) {
|
|
45
|
+
// when parent toggles visible
|
|
46
|
+
if (this.visible) {
|
|
47
|
+
// becoming visible -> open + (re)start timer
|
|
48
|
+
this.isOpen = false;
|
|
49
|
+
setTimeout(() => (this.isOpen = true), 0);
|
|
50
|
+
this.startDismissTimer();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// becoming hidden -> stop timers and ensure closed state
|
|
54
|
+
this.clearDismissTimer();
|
|
55
|
+
this.isOpen = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
ngOnDestroy() {
|
|
60
|
+
this.clearDismissTimer();
|
|
61
|
+
}
|
|
62
|
+
// used by the × button, done button, and auto-dismiss
|
|
63
|
+
close(emitButtonClicked = false) {
|
|
64
|
+
if (!this.isOpen && !this.visible)
|
|
65
|
+
return;
|
|
66
|
+
this.clearDismissTimer();
|
|
67
|
+
this.isOpen = false; // triggers exit transition
|
|
68
|
+
// after exit animation, hide + notify
|
|
69
|
+
window.setTimeout(() => {
|
|
70
|
+
if (this.visible) {
|
|
71
|
+
this.visible = false;
|
|
72
|
+
this.visibleChange.emit(false);
|
|
73
|
+
}
|
|
74
|
+
if (emitButtonClicked) {
|
|
75
|
+
this.buttonClicked.emit();
|
|
76
|
+
}
|
|
77
|
+
this.closed.emit();
|
|
78
|
+
}, this.EXIT_MS);
|
|
79
|
+
}
|
|
80
|
+
get status() {
|
|
81
|
+
return purposeToStatusMap[this.purpose];
|
|
82
|
+
}
|
|
83
|
+
startDismissTimer() {
|
|
84
|
+
if (!this.autoDismiss)
|
|
85
|
+
return;
|
|
86
|
+
this.clearDismissTimer();
|
|
87
|
+
this.dismissTimer = window.setTimeout(() => this.close(), this.progressMs);
|
|
88
|
+
}
|
|
89
|
+
clearDismissTimer() {
|
|
90
|
+
if (this.dismissTimer) {
|
|
91
|
+
clearTimeout(this.dismissTimer);
|
|
92
|
+
this.dismissTimer = undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SnackbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SnackbarComponent, isStandalone: true, selector: "lib-snackbar", inputs: { purpose: "purpose", title: "title", description: "description", fieldPlaceholder: "fieldPlaceholder", titleIcon: "titleIcon", showTitle: ["showTitle", "showTitle", booleanAttribute], showTitleIcon: ["showTitleIcon", "showTitleIcon", booleanAttribute], titleIconFilled: ["titleIconFilled", "titleIconFilled", booleanAttribute], showClose: ["showClose", "showClose", booleanAttribute], showProgressBar: ["showProgressBar", "showProgressBar", booleanAttribute], showField: ["showField", "showField", booleanAttribute], showButton: ["showButton", "showButton", booleanAttribute], autoDismiss: ["autoDismiss", "autoDismiss", booleanAttribute], visible: ["visible", "visible", booleanAttribute], progressMs: "progressMs", y: "y", statusButtonInputs: "statusButtonInputs" }, outputs: { closed: "closed", visibleChange: "visibleChange", buttonClicked: "buttonClicked" }, usesOnChanges: true, ngImport: i0, template: "@if (visible) {\n <section\n class=\"snackbar\"\n [ngClass]=\"{\n 'is-default': purpose === 'default',\n 'is-info': purpose === 'info',\n 'is-success': purpose === 'success',\n 'is-error': purpose === 'error',\n 'is-warning': purpose === 'warning',\n 'is-open': isOpen,\n }\"\n role=\"status\"\n aria-live=\"polite\"\n [style.--snackbar-progress-duration]=\"progressMs + 'ms'\"\n [style.top.px]=\"y\"\n >\n <div class=\"snackbar__left\">\n @if(showTitle) {\n <div class=\"snackbar__title-row\">\n <span \n [ngClass]=\"{\n 'snackbar__title-icon': true,\n 'has-icon': showTitle && showTitleIcon\n }\"\n aria-hidden=\"true\"\n >\n @if (showTitle && showTitleIcon) {\n <i [ngClass]=\"titleIconFilled ? 'material-icons' : 'material-icons-outlined'\"\n id=\"snackbar-title-icon\"\n aria-hidden=\"true\"\n >\n {{ titleIcon }}\n </i>\n }\n </span>\n @if (showTitle) {\n <h3 class=\"snackbar__title\">{{ title }}</h3>\n }\n </div>\n }\n <p class=\"snackbar__desc\">\n {{ description }}\n </p>\n @if (showField) {\n <input class=\"snackbar__input\" type=\"text\" [placeholder]=\"fieldPlaceholder\" />\n }\n @if (showButton) {\n <lib-status-button\n label={{statusButtonInputs?.label}}\n [status]=\"status\"\n leftIcon={{statusButtonInputs?.leftIcon}}\n rightIcon={{statusButtonInputs?.rightIcon}}\n [hideLeftIcon]=\"statusButtonInputs?.hideLeftIcon\"\n [hideRightIcon]=\"statusButtonInputs?.hideRightIcon\"\n [clearVariant]=\"statusButtonInputs?.clearVariant\"\n (click)=\"close(true)\"\n ></lib-status-button>\n\n }\n </div>\n <button \n type=\"button\"\n (click)=\"close()\"\n class=\"snackbar__close\"\n aria-label=\"Dismiss\"\n [style.visibility]=\"showClose ? 'visible' : 'hidden'\"\n >\n \u00D7\n </button>\n @if (showProgressBar) {\n <div class=\"snackbar__progress\">\n <div class=\"snackbar__progress-fill\"></div>\n </div>\n }\n </section>\n}\n", styles: [":root{--border-radius-md: 4px;--colors-border-primary: #d0d0d0;--colors-surface-primary: white;--colors-border-information: #457fa6;--colors-surface-information: #ecf2f6;--colors-border-success: #3ba35a;--colors-surface-success: #ebf6ee;--colors-border-warning: #d1c844;--colors-surface-warning: #faf9ec;--colors-border-error: #c73e3d;--colors-surface-error: #f9ecec}.snackbar{--snackbar-border-color: var(--colors-border-primary);--snackbar-bg: var(--colors-surface-primary);--snackbar-text: #141414;--snackbar-title-color: var(--snackbar-text);--snackbar-icon-bg: #e5edf8;--snackbar-accent: #0047ba;--snackbar-input-border: var(--snackbar-border-color);--snackbar-progress: var(--snackbar-accent);display:flex;width:26.25rem;padding:1.25rem 1rem;justify-content:space-between;align-items:flex-start;gap:.25rem;position:relative;border-radius:var(--border-radius-md, 4px);border:1px solid var(--snackbar-border-color);background:var(--snackbar-bg);box-shadow:1px 1px 4px #00000040;color:var(--snackbar-text)}.snackbar__left{display:grid;gap:.5rem;flex:1 1 auto}.snackbar__left>.snackbar__title-row~*{margin-left:var(--snackbar-right-gutter, 1.85rem)}.snackbar__title-row{display:flex;align-items:center;gap:.25rem}.snackbar__title{margin:0;font-weight:400;font-size:1.2rem;line-height:1.2;color:var(--snackbar-title-color)}.snackbar__title-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5em;height:1.5em}.snackbar__title-icon.has-icon{border-radius:50%;color:var(--snackbar-accent)}.snackbar__icon{font-weight:700;font-size:1rem;line-height:1}.snackbar__desc{margin:0;opacity:.9}.snackbar__input{width:100%;max-width:100%;box-sizing:border-box;padding:.5em;border-radius:4px;border:1px solid var(--snackbar-input-border);background:#fff;color:inherit}.snackbar__close{margin-left:.5em;border:0;background:transparent;color:inherit;opacity:.7;font-size:1.5rem;padding:.25rem;line-height:1;cursor:pointer}.snackbar__progress{position:absolute;left:0;right:0;bottom:-1px;height:4px;overflow:hidden;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.snackbar__progress-fill{height:100%;width:0%;background:var(--snackbar-progress);animation:fill var(--snackbar-progress-duration, 4s) linear forwards}@keyframes fill{to{width:100%}}.snackbar.is-default{--snackbar-border-color: var(--colors-border-primary, #d0d0d0);--snackbar-bg: var(--colors-surface-primary, white);--snackbar-text: #141414;--snackbar-title-color: #003995;--snackbar-icon-bg: #e5edf8;--snackbar-accent: #003995;--snackbar-input-border: #d0d0d0;--snackbar-progress: #003995}.snackbar.is-info{--snackbar-border-color: var(--colors-border-information, #457fa6);--snackbar-bg: var(--colors-surface-information, #ecf2f6);--snackbar-text: #24495c;--snackbar-title-color: #24495c;--snackbar-icon-bg: #a2bfd3;--snackbar-accent: #306a88;--snackbar-input-border: #a2bfd3;--snackbar-progress: #306a88}.snackbar.is-success{--snackbar-border-color: var(--colors-border-success, #3ba35a);--snackbar-bg: var(--colors-surface-success, #ebf6ee);--snackbar-text: #20522e;--snackbar-title-color: #20522e;--snackbar-icon-bg: #9dd1ac;--snackbar-accent: #2e7d3f;--snackbar-input-border: #9dd1ac;--snackbar-progress: #2e7d3f}.snackbar.is-warning{--snackbar-border-color: var(--colors-border-warning, #d1c844);--snackbar-bg: var(--colors-surface-warning, #faf9ec);--snackbar-text: #514a18;--snackbar-title-color: #514a18;--snackbar-icon-bg: #e8e3a1;--snackbar-accent: #7a6f13;--snackbar-input-border: #d1c844;--snackbar-progress: #7a6f13}.snackbar.is-error{--snackbar-border-color: var(--colors-border-error, #c73e3d);--snackbar-bg: var(--colors-surface-error, #f9ecec);--snackbar-text: #611a1a;--snackbar-title-color: #611a1a;--snackbar-icon-bg: #e39e9e;--snackbar-accent: #912525;--snackbar-input-border: #c73e3d;--snackbar-progress: #912525}.snackbar{position:fixed;top:24px;right:24px;z-index:1000;transform:translate(120%);transition:transform .6s ease}.snackbar.is-open{transform:translate(0)}lib-status-button{--status-button-padding: .25em .5em .25em 0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: StatusButtonComponent, selector: "lib-status-button", inputs: ["label", "status", "leftIcon", "rightIcon", "hideLeftIcon", "hideRightIcon", "clearVariant"] }] }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SnackbarComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'lib-snackbar', standalone: true, imports: [NgClass, StatusButtonComponent], template: "@if (visible) {\n <section\n class=\"snackbar\"\n [ngClass]=\"{\n 'is-default': purpose === 'default',\n 'is-info': purpose === 'info',\n 'is-success': purpose === 'success',\n 'is-error': purpose === 'error',\n 'is-warning': purpose === 'warning',\n 'is-open': isOpen,\n }\"\n role=\"status\"\n aria-live=\"polite\"\n [style.--snackbar-progress-duration]=\"progressMs + 'ms'\"\n [style.top.px]=\"y\"\n >\n <div class=\"snackbar__left\">\n @if(showTitle) {\n <div class=\"snackbar__title-row\">\n <span \n [ngClass]=\"{\n 'snackbar__title-icon': true,\n 'has-icon': showTitle && showTitleIcon\n }\"\n aria-hidden=\"true\"\n >\n @if (showTitle && showTitleIcon) {\n <i [ngClass]=\"titleIconFilled ? 'material-icons' : 'material-icons-outlined'\"\n id=\"snackbar-title-icon\"\n aria-hidden=\"true\"\n >\n {{ titleIcon }}\n </i>\n }\n </span>\n @if (showTitle) {\n <h3 class=\"snackbar__title\">{{ title }}</h3>\n }\n </div>\n }\n <p class=\"snackbar__desc\">\n {{ description }}\n </p>\n @if (showField) {\n <input class=\"snackbar__input\" type=\"text\" [placeholder]=\"fieldPlaceholder\" />\n }\n @if (showButton) {\n <lib-status-button\n label={{statusButtonInputs?.label}}\n [status]=\"status\"\n leftIcon={{statusButtonInputs?.leftIcon}}\n rightIcon={{statusButtonInputs?.rightIcon}}\n [hideLeftIcon]=\"statusButtonInputs?.hideLeftIcon\"\n [hideRightIcon]=\"statusButtonInputs?.hideRightIcon\"\n [clearVariant]=\"statusButtonInputs?.clearVariant\"\n (click)=\"close(true)\"\n ></lib-status-button>\n\n }\n </div>\n <button \n type=\"button\"\n (click)=\"close()\"\n class=\"snackbar__close\"\n aria-label=\"Dismiss\"\n [style.visibility]=\"showClose ? 'visible' : 'hidden'\"\n >\n \u00D7\n </button>\n @if (showProgressBar) {\n <div class=\"snackbar__progress\">\n <div class=\"snackbar__progress-fill\"></div>\n </div>\n }\n </section>\n}\n", styles: [":root{--border-radius-md: 4px;--colors-border-primary: #d0d0d0;--colors-surface-primary: white;--colors-border-information: #457fa6;--colors-surface-information: #ecf2f6;--colors-border-success: #3ba35a;--colors-surface-success: #ebf6ee;--colors-border-warning: #d1c844;--colors-surface-warning: #faf9ec;--colors-border-error: #c73e3d;--colors-surface-error: #f9ecec}.snackbar{--snackbar-border-color: var(--colors-border-primary);--snackbar-bg: var(--colors-surface-primary);--snackbar-text: #141414;--snackbar-title-color: var(--snackbar-text);--snackbar-icon-bg: #e5edf8;--snackbar-accent: #0047ba;--snackbar-input-border: var(--snackbar-border-color);--snackbar-progress: var(--snackbar-accent);display:flex;width:26.25rem;padding:1.25rem 1rem;justify-content:space-between;align-items:flex-start;gap:.25rem;position:relative;border-radius:var(--border-radius-md, 4px);border:1px solid var(--snackbar-border-color);background:var(--snackbar-bg);box-shadow:1px 1px 4px #00000040;color:var(--snackbar-text)}.snackbar__left{display:grid;gap:.5rem;flex:1 1 auto}.snackbar__left>.snackbar__title-row~*{margin-left:var(--snackbar-right-gutter, 1.85rem)}.snackbar__title-row{display:flex;align-items:center;gap:.25rem}.snackbar__title{margin:0;font-weight:400;font-size:1.2rem;line-height:1.2;color:var(--snackbar-title-color)}.snackbar__title-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5em;height:1.5em}.snackbar__title-icon.has-icon{border-radius:50%;color:var(--snackbar-accent)}.snackbar__icon{font-weight:700;font-size:1rem;line-height:1}.snackbar__desc{margin:0;opacity:.9}.snackbar__input{width:100%;max-width:100%;box-sizing:border-box;padding:.5em;border-radius:4px;border:1px solid var(--snackbar-input-border);background:#fff;color:inherit}.snackbar__close{margin-left:.5em;border:0;background:transparent;color:inherit;opacity:.7;font-size:1.5rem;padding:.25rem;line-height:1;cursor:pointer}.snackbar__progress{position:absolute;left:0;right:0;bottom:-1px;height:4px;overflow:hidden;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.snackbar__progress-fill{height:100%;width:0%;background:var(--snackbar-progress);animation:fill var(--snackbar-progress-duration, 4s) linear forwards}@keyframes fill{to{width:100%}}.snackbar.is-default{--snackbar-border-color: var(--colors-border-primary, #d0d0d0);--snackbar-bg: var(--colors-surface-primary, white);--snackbar-text: #141414;--snackbar-title-color: #003995;--snackbar-icon-bg: #e5edf8;--snackbar-accent: #003995;--snackbar-input-border: #d0d0d0;--snackbar-progress: #003995}.snackbar.is-info{--snackbar-border-color: var(--colors-border-information, #457fa6);--snackbar-bg: var(--colors-surface-information, #ecf2f6);--snackbar-text: #24495c;--snackbar-title-color: #24495c;--snackbar-icon-bg: #a2bfd3;--snackbar-accent: #306a88;--snackbar-input-border: #a2bfd3;--snackbar-progress: #306a88}.snackbar.is-success{--snackbar-border-color: var(--colors-border-success, #3ba35a);--snackbar-bg: var(--colors-surface-success, #ebf6ee);--snackbar-text: #20522e;--snackbar-title-color: #20522e;--snackbar-icon-bg: #9dd1ac;--snackbar-accent: #2e7d3f;--snackbar-input-border: #9dd1ac;--snackbar-progress: #2e7d3f}.snackbar.is-warning{--snackbar-border-color: var(--colors-border-warning, #d1c844);--snackbar-bg: var(--colors-surface-warning, #faf9ec);--snackbar-text: #514a18;--snackbar-title-color: #514a18;--snackbar-icon-bg: #e8e3a1;--snackbar-accent: #7a6f13;--snackbar-input-border: #d1c844;--snackbar-progress: #7a6f13}.snackbar.is-error{--snackbar-border-color: var(--colors-border-error, #c73e3d);--snackbar-bg: var(--colors-surface-error, #f9ecec);--snackbar-text: #611a1a;--snackbar-title-color: #611a1a;--snackbar-icon-bg: #e39e9e;--snackbar-accent: #912525;--snackbar-input-border: #c73e3d;--snackbar-progress: #912525}.snackbar{position:fixed;top:24px;right:24px;z-index:1000;transform:translate(120%);transition:transform .6s ease}.snackbar.is-open{transform:translate(0)}lib-status-button{--status-button-padding: .25em .5em .25em 0}\n"] }]
|
|
101
|
+
}], propDecorators: { purpose: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], title: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], description: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], fieldPlaceholder: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], titleIcon: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], showTitle: [{
|
|
112
|
+
type: Input,
|
|
113
|
+
args: [{ transform: booleanAttribute }]
|
|
114
|
+
}], showTitleIcon: [{
|
|
115
|
+
type: Input,
|
|
116
|
+
args: [{ transform: booleanAttribute }]
|
|
117
|
+
}], titleIconFilled: [{
|
|
118
|
+
type: Input,
|
|
119
|
+
args: [{ transform: booleanAttribute }]
|
|
120
|
+
}], showClose: [{
|
|
121
|
+
type: Input,
|
|
122
|
+
args: [{ transform: booleanAttribute }]
|
|
123
|
+
}], showProgressBar: [{
|
|
124
|
+
type: Input,
|
|
125
|
+
args: [{ transform: booleanAttribute }]
|
|
126
|
+
}], showField: [{
|
|
127
|
+
type: Input,
|
|
128
|
+
args: [{ transform: booleanAttribute }]
|
|
129
|
+
}], showButton: [{
|
|
130
|
+
type: Input,
|
|
131
|
+
args: [{ transform: booleanAttribute }]
|
|
132
|
+
}], autoDismiss: [{
|
|
133
|
+
type: Input,
|
|
134
|
+
args: [{ transform: booleanAttribute }]
|
|
135
|
+
}], visible: [{
|
|
136
|
+
type: Input,
|
|
137
|
+
args: [{ transform: booleanAttribute }]
|
|
138
|
+
}], progressMs: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], y: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], statusButtonInputs: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], closed: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}], visibleChange: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], buttonClicked: [{
|
|
149
|
+
type: Output
|
|
150
|
+
}] } });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zbmFja2Jhci9zbmFja2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUtOLGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNILHFCQUFxQixHQUd4QixNQUFNLDBDQUEwQyxDQUFDOztBQXlCbEQsTUFBTSxrQkFBa0IsR0FBb0M7SUFDeEQsT0FBTyxFQUFFLE1BQU07SUFDZixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsT0FBTyxFQUFFLFNBQVM7Q0FDckIsQ0FBQztBQVNGLE1BQU0sT0FBTyxpQkFBaUI7SUFQOUI7UUFRYSxZQUFPLEdBQW9CLFNBQVMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsZ0JBQWdCLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxhQUFhLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLGNBQVMsR0FBVyxNQUFNLENBQUM7UUFDSSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDOUMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixNQUFDLEdBQUcsRUFBRSxDQUFDO1FBR04sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzVDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVuRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR0UsWUFBTyxHQUFHLEdBQUcsQ0FBQztLQWlFbEM7SUEvREcsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YscUJBQXFCO1lBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7WUFDdkIsOEJBQThCO1lBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDSix5REFBeUQ7Z0JBQ3pELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxLQUFLLENBQUMsb0JBQTZCLEtBQUs7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQywyQkFBMkI7UUFFaEQsc0NBQXNDO1FBQ3RDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7OEdBMUZRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDhOQU1OLGdCQUFnQixxREFDaEIsZ0JBQWdCLDJEQUNoQixnQkFBZ0IseUNBQ2hCLGdCQUFnQiwyREFDaEIsZ0JBQWdCLHlDQUNoQixnQkFBZ0IsNENBQ2hCLGdCQUFnQiwrQ0FDaEIsZ0JBQWdCLG1DQUNoQixnQkFBZ0IsNk5DdEV4QyxpMkZBNEVBLDZnSUR4QmMsT0FBTyxvRkFBRSxxQkFBcUI7OzJGQUkvQixpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQzs4QkFLaEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNrQyxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGVBQWU7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxVQUFVO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsT0FBTztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxDQUFDO3NCQUFULEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgU3RhdHVzQnV0dG9uQ29tcG9uZW50LFxuICAgIFN0YXR1cyxcbiAgICBTdGF0dXNCdXR0b25JbnB1dHMsXG59IGZyb20gJy4uL3N0YXR1cy1idXR0b24vc3RhdHVzLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBTbmFja2JhclB1cnBvc2UgPSAnZGVmYXVsdCcgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNuYWNrYmFySW5wdXRzIHtcbiAgICBwdXJwb3NlPzogU25hY2tiYXJQdXJwb3NlO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHRpdGxlSWNvbj86IHN0cmluZztcbiAgICBmaWVsZFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIHNob3dUaXRsZT86IGJvb2xlYW47XG4gICAgc2hvd1RpdGxlSWNvbj86IGJvb2xlYW47XG4gICAgdGl0bGVJY29uRmlsbGVkPzogYm9vbGVhbjtcbiAgICBzaG93Q2xvc2U/OiBib29sZWFuO1xuICAgIHNob3dQcm9ncmVzc0Jhcj86IGJvb2xlYW47XG4gICAgc2hvd0ZpZWxkPzogYm9vbGVhbjtcbiAgICBzaG93QnV0dG9uPzogYm9vbGVhbjtcbiAgICBwcm9ncmVzc01zPzogbnVtYmVyO1xuICAgIGF1dG9EaXNtaXNzPzogYm9vbGVhbjtcbiAgICB5PzogbnVtYmVyO1xuICAgIHJpZ2h0PzogbnVtYmVyO1xuICAgIHpJbmRleD86IG51bWJlcjtcbiAgICBzdGF0dXNCdXR0b25JbnB1dHM/OiBTdGF0dXNCdXR0b25JbnB1dHM7XG59XG5cbmNvbnN0IHB1cnBvc2VUb1N0YXR1c01hcDogUmVjb3JkPFNuYWNrYmFyUHVycG9zZSwgU3RhdHVzPiA9IHtcbiAgICBkZWZhdWx0OiAnaW5mbycsXG4gICAgaW5mbzogJ2luZm8nLFxuICAgIHN1Y2Nlc3M6ICdzdWNjZXNzJyxcbiAgICBlcnJvcjogJ2Vycm9yJyxcbiAgICB3YXJuaW5nOiAnd2FybmluZycsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1zbmFja2JhcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgU3RhdHVzQnV0dG9uQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc25hY2tiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zbmFja2Jhci5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNuYWNrYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgcHVycG9zZTogU25hY2tiYXJQdXJwb3NlID0gJ2RlZmF1bHQnO1xuICAgIEBJbnB1dCgpIHRpdGxlID0gJ1NuYWNrYmFyIFRpdGxlJztcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICdMb3JlbSBpcHN1bSc7XG4gICAgQElucHV0KCkgZmllbGRQbGFjZWhvbGRlciA9ICdQbGFjZWhvbGRlcic7XG4gICAgQElucHV0KCkgdGl0bGVJY29uOiBzdHJpbmcgPSAnaW5mbyc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUaXRsZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUaXRsZUljb24gPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aXRsZUljb25GaWxsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0Nsb3NlID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd1Byb2dyZXNzQmFyID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0ZpZWxkID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0J1dHRvbiA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9EaXNtaXNzID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KCkgcHJvZ3Jlc3NNcyA9IDUwMDA7XG4gICAgQElucHV0KCkgeSA9IDI0O1xuICAgIEBJbnB1dCgpIHN0YXR1c0J1dHRvbklucHV0cz86IFN0YXR1c0J1dHRvbklucHV0cztcblxuICAgIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGlzbWlzc1RpbWVyPzogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgRVhJVF9NUyA9IDMwMDtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICAvLyBlbnRlciBvbiBuZXh0IHRpY2tcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuaXNPcGVuID0gdHJ1ZSksIDApO1xuICAgICAgICAgICAgdGhpcy5zdGFydERpc21pc3NUaW1lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ3Zpc2libGUnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIC8vIHdoZW4gcGFyZW50IHRvZ2dsZXMgdmlzaWJsZVxuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGJlY29taW5nIHZpc2libGUgLT4gb3BlbiArIChyZSlzdGFydCB0aW1lclxuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5pc09wZW4gPSB0cnVlKSwgMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERpc21pc3NUaW1lcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBiZWNvbWluZyBoaWRkZW4gLT4gc3RvcCB0aW1lcnMgYW5kIGVuc3VyZSBjbG9zZWQgc3RhdGVcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRGlzbWlzc1RpbWVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyRGlzbWlzc1RpbWVyKCk7XG4gICAgfVxuXG4gICAgLy8gdXNlZCBieSB0aGUgw5cgYnV0dG9uLCBkb25lIGJ1dHRvbiwgYW5kIGF1dG8tZGlzbWlzc1xuICAgIGNsb3NlKGVtaXRCdXR0b25DbGlja2VkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbiAmJiAhdGhpcy52aXNpYmxlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2xlYXJEaXNtaXNzVGltZXIoKTtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTsgLy8gdHJpZ2dlcnMgZXhpdCB0cmFuc2l0aW9uXG5cbiAgICAgICAgLy8gYWZ0ZXIgZXhpdCBhbmltYXRpb24sIGhpZGUgKyBub3RpZnlcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbWl0QnV0dG9uQ2xpY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICAgIH0sIHRoaXMuRVhJVF9NUyk7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXR1cygpOiBTdGF0dXMge1xuICAgICAgICByZXR1cm4gcHVycG9zZVRvU3RhdHVzTWFwW3RoaXMucHVycG9zZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydERpc21pc3NUaW1lcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9EaXNtaXNzKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2xlYXJEaXNtaXNzVGltZXIoKTtcbiAgICAgICAgdGhpcy5kaXNtaXNzVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsb3NlKCksIHRoaXMucHJvZ3Jlc3NNcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckRpc21pc3NUaW1lcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc1RpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kaXNtaXNzVGltZXIpO1xuICAgICAgICAgICAgdGhpcy5kaXNtaXNzVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKHZpc2libGUpIHtcbiAgICA8c2VjdGlvblxuICAgICAgICBjbGFzcz1cInNuYWNrYmFyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2lzLWRlZmF1bHQnOiBwdXJwb3NlID09PSAnZGVmYXVsdCcsXG4gICAgICAgICAgICAnaXMtaW5mbyc6IHB1cnBvc2UgPT09ICdpbmZvJyxcbiAgICAgICAgICAgICdpcy1zdWNjZXNzJzogcHVycG9zZSA9PT0gJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgJ2lzLWVycm9yJzogcHVycG9zZSA9PT0gJ2Vycm9yJyxcbiAgICAgICAgICAgICdpcy13YXJuaW5nJzogcHVycG9zZSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAgICAgJ2lzLW9wZW4nOiBpc09wZW4sXG4gICAgICAgIH1cIlxuICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgW3N0eWxlLi0tc25hY2tiYXItcHJvZ3Jlc3MtZHVyYXRpb25dPVwicHJvZ3Jlc3NNcyArICdtcydcIlxuICAgICAgICBbc3R5bGUudG9wLnB4XT1cInlcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNuYWNrYmFyX19sZWZ0XCI+XG4gICAgICAgICAgICBAaWYoc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYWNrYmFyX190aXRsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NuYWNrYmFyX190aXRsZS1pY29uJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzLWljb24nOiBzaG93VGl0bGUgJiYgc2hvd1RpdGxlSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dUaXRsZSAmJiBzaG93VGl0bGVJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwidGl0bGVJY29uRmlsbGVkID8gJ21hdGVyaWFsLWljb25zJyA6ICdtYXRlcmlhbC1pY29ucy1vdXRsaW5lZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNuYWNrYmFyLXRpdGxlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGl0bGVJY29uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzbmFja2Jhcl9fdGl0bGVcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic25hY2tiYXJfX2Rlc2NcIj5cbiAgICAgICAgICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgQGlmIChzaG93RmllbGQpIHtcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzbmFja2Jhcl9faW5wdXRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJmaWVsZFBsYWNlaG9sZGVyXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd0J1dHRvbikge1xuICAgICAgICAgICAgICAgIDxsaWItc3RhdHVzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17e3N0YXR1c0J1dHRvbklucHV0cz8ubGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgIGxlZnRJY29uPXt7c3RhdHVzQnV0dG9uSW5wdXRzPy5sZWZ0SWNvbn19XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0SWNvbj17e3N0YXR1c0J1dHRvbklucHV0cz8ucmlnaHRJY29ufX1cbiAgICAgICAgICAgICAgICAgICAgW2hpZGVMZWZ0SWNvbl09XCJzdGF0dXNCdXR0b25JbnB1dHM/LmhpZGVMZWZ0SWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlUmlnaHRJY29uXT1cInN0YXR1c0J1dHRvbklucHV0cz8uaGlkZVJpZ2h0SWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhclZhcmlhbnRdPVwic3RhdHVzQnV0dG9uSW5wdXRzPy5jbGVhclZhcmlhbnRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UodHJ1ZSlcIlxuICAgICAgICAgICAgICAgID48L2xpYi1zdGF0dXMtYnV0dG9uPlxuXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNuYWNrYmFyX19jbG9zZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJzaG93Q2xvc2UgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIMOXXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICBAaWYgKHNob3dQcm9ncmVzc0Jhcikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNuYWNrYmFyX19wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbmFja2Jhcl9fcHJvZ3Jlc3MtZmlsbFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG59XG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Injectable, createComponent } from '@angular/core';
|
|
2
|
+
import { SnackbarComponent } from './snackbar.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class SnackbarService {
|
|
5
|
+
constructor(appRef, env) {
|
|
6
|
+
this.appRef = appRef;
|
|
7
|
+
this.env = env;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* This open method is what consuming code will use to create a snackbar
|
|
11
|
+
* @param snackbarOptions interface
|
|
12
|
+
* @param anchor HTML Element, optional. The snackbar's entrance and exit animations will happen on this element's Y axis (px)
|
|
13
|
+
* @returns void.
|
|
14
|
+
*/
|
|
15
|
+
open(snackbarOptions = {}, anchor) {
|
|
16
|
+
const statusButtonInputs = {
|
|
17
|
+
label: 'Done',
|
|
18
|
+
hideLeftIcon: true,
|
|
19
|
+
clearVariant: true,
|
|
20
|
+
};
|
|
21
|
+
const compRef = createComponent(SnackbarComponent, {
|
|
22
|
+
environmentInjector: this.env,
|
|
23
|
+
});
|
|
24
|
+
const desiredY = anchor // could be clamped if above or below viewport
|
|
25
|
+
? anchor.getBoundingClientRect().top
|
|
26
|
+
: snackbarOptions.y ?? 24;
|
|
27
|
+
Object.assign(compRef.instance, {
|
|
28
|
+
purpose: 'warning',
|
|
29
|
+
title: 'Snackbar Title',
|
|
30
|
+
description: 'Lorem ipsum is the standard dummy text in the design industry',
|
|
31
|
+
titleIcon: 'info',
|
|
32
|
+
fieldPlaceholder: 'Placeholder',
|
|
33
|
+
showTitle: true,
|
|
34
|
+
showTitleIcon: true,
|
|
35
|
+
titleIconFilled: false,
|
|
36
|
+
showClose: true,
|
|
37
|
+
showProgressBar: true,
|
|
38
|
+
showField: true,
|
|
39
|
+
showButton: true,
|
|
40
|
+
progressMs: 5000,
|
|
41
|
+
autoDismiss: true,
|
|
42
|
+
y: desiredY,
|
|
43
|
+
right: 24,
|
|
44
|
+
zIndex: 10000,
|
|
45
|
+
visible: true,
|
|
46
|
+
statusButtonInputs,
|
|
47
|
+
...snackbarOptions,
|
|
48
|
+
});
|
|
49
|
+
this.appRef.attachView(compRef.hostView);
|
|
50
|
+
document.body.appendChild(compRef.location.nativeElement);
|
|
51
|
+
compRef.changeDetectorRef.detectChanges();
|
|
52
|
+
// Clamp Y after it’s in the DOM
|
|
53
|
+
const margin = 8;
|
|
54
|
+
const adjustY = () => {
|
|
55
|
+
const host = compRef.location.nativeElement.querySelector('section.snackbar') ??
|
|
56
|
+
compRef.location.nativeElement;
|
|
57
|
+
const h = host.offsetHeight || 0;
|
|
58
|
+
const maxTop = Math.max(margin, window.innerHeight - h - margin);
|
|
59
|
+
const clamped = Math.min(Math.max(desiredY, margin), maxTop);
|
|
60
|
+
if (compRef.instance.y !== clamped) {
|
|
61
|
+
compRef.instance.y = clamped;
|
|
62
|
+
compRef.changeDetectorRef.detectChanges();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
// Measure on next frame (styles applied)
|
|
66
|
+
const rafId = requestAnimationFrame(adjustY);
|
|
67
|
+
// re-clamp on resize (in case viewport changes while visible)
|
|
68
|
+
const onResize = () => adjustY();
|
|
69
|
+
window.addEventListener('resize', onResize);
|
|
70
|
+
// Cleanup when closed
|
|
71
|
+
const sub = compRef.instance.closed.subscribe(() => {
|
|
72
|
+
sub.unsubscribe();
|
|
73
|
+
cancelAnimationFrame(rafId);
|
|
74
|
+
window.removeEventListener('resize', onResize);
|
|
75
|
+
this.appRef.detachView(compRef.hostView);
|
|
76
|
+
compRef.destroy();
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
close: () => compRef.instance.close(),
|
|
80
|
+
buttonClicked: compRef.instance.buttonClicked,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SnackbarService, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
84
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SnackbarService, providedIn: 'root' }); }
|
|
85
|
+
}
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SnackbarService, decorators: [{
|
|
87
|
+
type: Injectable,
|
|
88
|
+
args: [{ providedIn: 'root' }]
|
|
89
|
+
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }] });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXVDLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7O0FBSXpFLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQ1ksTUFBc0IsRUFDdEIsR0FBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBcUI7SUFDakMsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLGtCQUFrQyxFQUFFLEVBQUUsTUFBb0I7UUFDM0QsTUFBTSxrQkFBa0IsR0FBdUI7WUFDM0MsS0FBSyxFQUFFLE1BQU07WUFDYixZQUFZLEVBQUUsSUFBSTtZQUNsQixZQUFZLEVBQUUsSUFBSTtTQUNyQixDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixFQUFFO1lBQy9DLG1CQUFtQixFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2hDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyw4Q0FBOEM7WUFDbEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUc7WUFDcEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUM1QixPQUFPLEVBQUUsU0FBUztZQUNsQixLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLFdBQVcsRUFBRSwrREFBK0Q7WUFDNUUsU0FBUyxFQUFFLE1BQU07WUFDakIsZ0JBQWdCLEVB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QUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQXBwbGljYXRpb25SZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU25hY2tiYXJDb21wb25lbnQsIFNuYWNrYmFySW5wdXRzIH0gZnJvbSAnLi9zbmFja2Jhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RhdHVzQnV0dG9uSW5wdXRzIH0gZnJvbSAnLi4vc3RhdHVzLWJ1dHRvbi9zdGF0dXMtYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU25hY2tiYXJTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIGVudjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG9wZW4gbWV0aG9kIGlzIHdoYXQgY29uc3VtaW5nIGNvZGUgd2lsbCB1c2UgdG8gY3JlYXRlIGEgc25hY2tiYXJcbiAgICAgKiBAcGFyYW0gc25hY2tiYXJPcHRpb25zIGludGVyZmFjZVxuICAgICAqIEBwYXJhbSBhbmNob3IgSFRNTCBFbGVtZW50LCBvcHRpb25hbC4gVGhlIHNuYWNrYmFyJ3MgZW50cmFuY2UgYW5kIGV4aXQgYW5pbWF0aW9ucyB3aWxsIGhhcHBlbiBvbiB0aGlzIGVsZW1lbnQncyBZIGF4aXMgKHB4KVxuICAgICAqIEByZXR1cm5zIHZvaWQuXG4gICAgICovXG4gICAgb3BlbihzbmFja2Jhck9wdGlvbnM6IFNuYWNrYmFySW5wdXRzID0ge30sIGFuY2hvcj86IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHN0YXR1c0J1dHRvbklucHV0czogU3RhdHVzQnV0dG9uSW5wdXRzID0ge1xuICAgICAgICAgICAgbGFiZWw6ICdEb25lJyxcbiAgICAgICAgICAgIGhpZGVMZWZ0SWNvbjogdHJ1ZSxcbiAgICAgICAgICAgIGNsZWFyVmFyaWFudDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IGNyZWF0ZUNvbXBvbmVudChTbmFja2JhckNvbXBvbmVudCwge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnYsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRlc2lyZWRZID0gYW5jaG9yIC8vIGNvdWxkIGJlIGNsYW1wZWQgaWYgYWJvdmUgb3IgYmVsb3cgdmlld3BvcnRcbiAgICAgICAgICAgID8gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcFxuICAgICAgICAgICAgOiBzbmFja2Jhck9wdGlvbnMueSA/PyAyNDtcblxuICAgICAgICBPYmplY3QuYXNzaWduKGNvbXBSZWYuaW5zdGFuY2UsIHtcbiAgICAgICAgICAgIHB1cnBvc2U6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOiAnU25hY2tiYXIgVGl0bGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdMb3JlbSBpcHN1bSBpcyB0aGUgc3RhbmRhcmQgZHVtbXkgdGV4dCBpbiB0aGUgZGVzaWduIGluZHVzdHJ5JyxcbiAgICAgICAgICAgIHRpdGxlSWNvbjogJ2luZm8nLFxuICAgICAgICAgICAgZmllbGRQbGFjZWhvbGRlcjogJ1BsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgIHNob3dUaXRsZTogdHJ1ZSxcbiAgICAgICAgICAgIHNob3dUaXRsZUljb246IHRydWUsXG4gICAgICAgICAgICB0aXRsZUljb25GaWxsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgc2hvd1Byb2dyZXNzQmFyOiB0cnVlLFxuICAgICAgICAgICAgc2hvd0ZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgc2hvd0J1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgIHByb2dyZXNzTXM6IDUwMDAsXG4gICAgICAgICAgICBhdXRvRGlzbWlzczogdHJ1ZSxcbiAgICAgICAgICAgIHk6IGRlc2lyZWRZLFxuICAgICAgICAgICAgcmlnaHQ6IDI0LFxuICAgICAgICAgICAgekluZGV4OiAxMDAwMCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgICAgICBzdGF0dXNCdXR0b25JbnB1dHMsXG4gICAgICAgICAgICAuLi5zbmFja2Jhck9wdGlvbnMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcFJlZi5ob3N0Vmlldyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29tcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29tcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgLy8gQ2xhbXAgWSBhZnRlciBpdOKAmXMgaW4gdGhlIERPTVxuICAgICAgICBjb25zdCBtYXJnaW4gPSA4O1xuICAgICAgICBjb25zdCBhZGp1c3RZID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaG9zdDogSFRNTEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgIChjb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJ3NlY3Rpb24uc25hY2tiYXInKSA/P1xuICAgICAgICAgICAgICAgIChjb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgICAgICBjb25zdCBoID0gaG9zdC5vZmZzZXRIZWlnaHQgfHwgMDtcbiAgICAgICAgICAgIGNvbnN0IG1heFRvcCA9IE1hdGgubWF4KG1hcmdpbiwgd2luZG93LmlubmVySGVpZ2h0IC0gaCAtIG1hcmdpbik7XG4gICAgICAgICAgICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oTWF0aC5tYXgoZGVzaXJlZFksIG1hcmdpbiksIG1heFRvcCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wUmVmLmluc3RhbmNlLnkgIT09IGNsYW1wZWQpIHtcbiAgICAgICAgICAgICAgICBjb21wUmVmLmluc3RhbmNlLnkgPSBjbGFtcGVkO1xuICAgICAgICAgICAgICAgIGNvbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIE1lYXN1cmUgb24gbmV4dCBmcmFtZSAoc3R5bGVzIGFwcGxpZWQpXG4gICAgICAgIGNvbnN0IHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFkanVzdFkpO1xuXG4gICAgICAgIC8vIHJlLWNsYW1wIG9uIHJlc2l6ZSAoaW4gY2FzZSB2aWV3cG9ydCBjaGFuZ2VzIHdoaWxlIHZpc2libGUpXG4gICAgICAgIGNvbnN0IG9uUmVzaXplID0gKCkgPT4gYWRqdXN0WSgpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUpO1xuXG4gICAgICAgIC8vIENsZWFudXAgd2hlbiBjbG9zZWRcbiAgICAgICAgY29uc3Qgc3ViID0gY29tcFJlZi5pbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICBjb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsb3NlOiAoKSA9PiBjb21wUmVmLmluc3RhbmNlLmNsb3NlKCksXG4gICAgICAgICAgICBidXR0b25DbGlja2VkOiBjb21wUmVmLmluc3RhbmNlLmJ1dHRvbkNsaWNrZWQsXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -17,6 +17,7 @@ export class StatusButtonComponent {
|
|
|
17
17
|
this._rightIcon = '';
|
|
18
18
|
this._hideLeftIcon = false;
|
|
19
19
|
this._hideRightIcon = false;
|
|
20
|
+
this._clearVariant = false;
|
|
20
21
|
}
|
|
21
22
|
set status(value) {
|
|
22
23
|
this._status = value || 'info';
|
|
@@ -52,6 +53,12 @@ export class StatusButtonComponent {
|
|
|
52
53
|
get hideRightIcon() {
|
|
53
54
|
return this._hideRightIcon;
|
|
54
55
|
}
|
|
56
|
+
set clearVariant(value) {
|
|
57
|
+
this._clearVariant = value;
|
|
58
|
+
}
|
|
59
|
+
get clearVariant() {
|
|
60
|
+
return this._clearVariant;
|
|
61
|
+
}
|
|
55
62
|
/** helper for default left icons */
|
|
56
63
|
getDefaultLeftIcon(status) {
|
|
57
64
|
switch (status) {
|
|
@@ -70,11 +77,11 @@ export class StatusButtonComponent {
|
|
|
70
77
|
}
|
|
71
78
|
}
|
|
72
79
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StatusButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.0", type: StatusButtonComponent, isStandalone: true, selector: "lib-status-button", inputs: { label: "label", status: "status", leftIcon: "leftIcon", rightIcon: "rightIcon", hideLeftIcon: ["hideLeftIcon", "hideLeftIcon", booleanAttribute], hideRightIcon: ["hideRightIcon", "hideRightIcon", booleanAttribute] }, ngImport: i0, template: "<button\n type=\"button\"\n [
|
|
80
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.0", type: StatusButtonComponent, isStandalone: true, selector: "lib-status-button", inputs: { label: "label", status: "status", leftIcon: "leftIcon", rightIcon: "rightIcon", hideLeftIcon: ["hideLeftIcon", "hideLeftIcon", booleanAttribute], hideRightIcon: ["hideRightIcon", "hideRightIcon", booleanAttribute], clearVariant: ["clearVariant", "clearVariant", booleanAttribute] }, ngImport: i0, template: "<button\n type=\"button\"\n [ngClass]=\"[\n status,\n clearVariant ? 'strokeless transparent-bg' : ''\n ]\"\n>\n <span *ngIf=\"leftIcon\" class=\"icon material-symbols-outlined\">{{ leftIcon }}</span>\n {{ label }}\n <span *ngIf=\"rightIcon\" class=\"icon material-symbols-outlined\">{{ rightIcon }}</span>\n</button>\n", styles: ["button{align-items:center;background-color:#ecf2f6;border:1px solid #457fa6;border-radius:4px;color:#3e7295;display:inline-flex;flex-shrink:0;font-size:1em;font-weight:400;gap:.5em;height:2.25em;justify-content:center;padding:var(--status-button-padding, .25em .5em)}button .icon{font-size:1.25em}button:focus{outline:2px solid #b967c7;outline-offset:2px}button:hover{background-color:#a2bfd3;color:#26485f;cursor:pointer}button.success{background-color:#ebf6ee;border:1px solid #3ba35a;color:#1d562e}button.success:hover{background-color:#9dd1ac;color:#1d562e}button.info{background-color:#ecf2f6;border:1px solid #457fa6;color:#3e7295}button.info:hover{background-color:#a2bfd3;color:#26485f}button.warning{background-color:#faf9ec;border:1px solid #d1c844;color:#635f04}button.warning:hover{background-color:#e8e3a1;color:#635f04}button.error{background-color:#f9ecec;border:1px solid #c73e3d;color:#702121}button.error:hover{background-color:#e39e9e;color:#702121}button.disabled{background-color:#e7e7e7;border:1px solid #8f8f8f;color:#767676}button.disabled:hover{background-color:#d0d0d0;color:#141414}button.strokeless{border:0px}button.transparent-bg{background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
74
81
|
}
|
|
75
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StatusButtonComponent, decorators: [{
|
|
76
83
|
type: Component,
|
|
77
|
-
args: [{ selector: 'lib-status-button', standalone: true, imports: [CommonModule, NgIf], template: "<button\n type=\"button\"\n [
|
|
84
|
+
args: [{ selector: 'lib-status-button', standalone: true, imports: [CommonModule, NgIf], template: "<button\n type=\"button\"\n [ngClass]=\"[\n status,\n clearVariant ? 'strokeless transparent-bg' : ''\n ]\"\n>\n <span *ngIf=\"leftIcon\" class=\"icon material-symbols-outlined\">{{ leftIcon }}</span>\n {{ label }}\n <span *ngIf=\"rightIcon\" class=\"icon material-symbols-outlined\">{{ rightIcon }}</span>\n</button>\n", styles: ["button{align-items:center;background-color:#ecf2f6;border:1px solid #457fa6;border-radius:4px;color:#3e7295;display:inline-flex;flex-shrink:0;font-size:1em;font-weight:400;gap:.5em;height:2.25em;justify-content:center;padding:var(--status-button-padding, .25em .5em)}button .icon{font-size:1.25em}button:focus{outline:2px solid #b967c7;outline-offset:2px}button:hover{background-color:#a2bfd3;color:#26485f;cursor:pointer}button.success{background-color:#ebf6ee;border:1px solid #3ba35a;color:#1d562e}button.success:hover{background-color:#9dd1ac;color:#1d562e}button.info{background-color:#ecf2f6;border:1px solid #457fa6;color:#3e7295}button.info:hover{background-color:#a2bfd3;color:#26485f}button.warning{background-color:#faf9ec;border:1px solid #d1c844;color:#635f04}button.warning:hover{background-color:#e8e3a1;color:#635f04}button.error{background-color:#f9ecec;border:1px solid #c73e3d;color:#702121}button.error:hover{background-color:#e39e9e;color:#702121}button.disabled{background-color:#e7e7e7;border:1px solid #8f8f8f;color:#767676}button.disabled:hover{background-color:#d0d0d0;color:#141414}button.strokeless{border:0px}button.transparent-bg{background:transparent}\n"] }]
|
|
78
85
|
}], propDecorators: { label: [{
|
|
79
86
|
type: Input,
|
|
80
87
|
args: [{ required: true }]
|
|
@@ -90,5 +97,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
90
97
|
}], hideRightIcon: [{
|
|
91
98
|
type: Input,
|
|
92
99
|
args: [{ transform: booleanAttribute }]
|
|
100
|
+
}], clearVariant: [{
|
|
101
|
+
type: Input,
|
|
102
|
+
args: [{ transform: booleanAttribute }]
|
|
93
103
|
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3RhdHVzLWJ1dHRvbi9zdGF0dXMtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zdGF0dXMtYnV0dG9uL3N0YXR1cy1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBYXJEOzs7Ozs7O0dBT0c7QUFRSCxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBUVksWUFBTyxHQUFXLE1BQU0sQ0FBQztRQUN6QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixrQkFBYSxHQUFHLEtBQUssQ0FBQztLQXVFakM7SUFuRUcsSUFDSSxNQUFNLENBQUMsS0FBNEQ7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLElBQUksTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksUUFBUTtRQUNSLElBQUksSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFDSSxTQUFTLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxlQUFlLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQ0ksWUFBWSxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFDSSxhQUFhLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUNJLFlBQVksQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELG9DQUFvQztJQUM1QixrQkFBa0IsQ0FBQyxNQUEyQjtRQUNsRCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2IsS0FBSyxTQUFTO2dCQUNWLE9BQU8sT0FBTyxDQUFDO1lBQ25CLEtBQUssTUFBTTtnQkFDUCxPQUFPLE1BQU0sQ0FBQztZQUNsQixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxPQUFPO2dCQUNSLE9BQU8sT0FBTyxDQUFDO1lBQ25CLEtBQUssVUFBVTtnQkFDWCxPQUFPLE9BQU8sQ0FBQztZQUNuQjtnQkFDSSxPQUFPLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQzs4R0E1RVEscUJBQXFCO2tHQUFyQixxQkFBcUIsOExBb0NWLGdCQUFnQixxREFRaEIsZ0JBQWdCLGtEQVFoQixnQkFBZ0IsNkJDakZ4QyxpV0FXQSwwdENEY2MsWUFBWTs7MkZBSWIscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNJLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDOzhCQVlGLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUdyQixNQUFNO3NCQURULEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFNBQVM7c0JBRFosS0FBSztnQkFVRixZQUFZO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBU2xDLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBU2xDLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5leHBvcnQgdHlwZSBTdGF0dXMgPSAnc3VjY2VzcycgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2Rpc2FibGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNCdXR0b25JbnB1dHMge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgc3RhdHVzPzogU3RhdHVzO1xuICAgIGxlZnRJY29uPzogc3RyaW5nO1xuICAgIHJpZ2h0SWNvbj86IHN0cmluZztcbiAgICBoaWRlTGVmdEljb24/OiBib29sZWFuO1xuICAgIGhpZGVSaWdodEljb24/OiBib29sZWFuO1xuICAgIGNsZWFyVmFyaWFudD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBidXR0b24gdGhhdCBpbmRpY2F0ZXMgc3RhdHVzIHdpdGggY29sb3IgYW5kIGljb24uXG4gKiBTdGF0dXMgY2FuIGJlIG9uZSBvZjogJ3N1Y2Nlc3MnLCAnaW5mbycsICd3YXJuaW5nJywgJ2Vycm9yJywgb3IgJ2Rpc2FibGVkJy5cbiAqIEVhY2ggc3RhdHVzIGhhcyBhIGRlZmF1bHQgbGVmdCBpY29uLCBidXQgYSBjdXN0b20gbGVmdCBpY29uIGNhbiBiZSBwcm92aWRlZC5cbiAqIEEgcmlnaHQgaWNvbiBjYW4gYWxzbyBiZSBwcm92aWRlZCwgZGVmYXVsdGluZyB0byAnY2hldnJvbl9yaWdodCcuXG4gKiBUaGUgbGVmdCBhbmQgcmlnaHQgaWNvbnMgY2FuIGJlIGhpZGRlbiB3aXRoIHRoZSBgaGlkZUxlZnRJY29uYCBhbmQgYGhpZGVSaWdodEljb25gIGJvb2xlYW4gaW5wdXRzLlxuICogQSBsYWJlbCBpbnB1dCBpcyByZXF1aXJlZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItc3RhdHVzLWJ1dHRvbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ0lmXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdHVzLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3N0YXR1cy1idXR0b24uY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0dXNCdXR0b25Db21wb25lbnQge1xuICAgIHByaXZhdGUgX3N0YXR1czogU3RhdHVzID0gJ2luZm8nO1xuICAgIHByaXZhdGUgX2xlZnRJY29uID0gJyc7XG4gICAgcHJpdmF0ZSBfcmlnaHRJY29uID0gJyc7XG4gICAgcHJpdmF0ZSBfaGlkZUxlZnRJY29uID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaGlkZVJpZ2h0SWNvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2NsZWFyVmFyaWFudCA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbGFiZWwhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0dXModmFsdWU6ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGlzYWJsZWQnKSB7XG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IHZhbHVlIHx8ICdpbmZvJztcbiAgICB9XG4gICAgZ2V0IHN0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBsZWZ0SWNvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2xlZnRJY29uID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBsZWZ0SWNvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuX2hpZGVMZWZ0SWNvbikgcmV0dXJuICcnO1xuICAgICAgICByZXR1cm4gdGhpcy5fbGVmdEljb24gfHwgdGhpcy5nZXREZWZhdWx0TGVmdEljb24odGhpcy5fc3RhdHVzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCByaWdodEljb24odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9yaWdodEljb24gPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHJpZ2h0SWNvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuX2hpZGVSaWdodEljb24pIHJldHVybiAnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JpZ2h0SWNvbiB8fCAnY2hldnJvbl9yaWdodCc7XG4gICAgfVxuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IGhpZGVMZWZ0SWNvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9oaWRlTGVmdEljb24gPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGhpZGVMZWZ0SWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVMZWZ0SWNvbjtcbiAgICB9XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgaGlkZVJpZ2h0SWNvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9oaWRlUmlnaHRJY29uID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBoaWRlUmlnaHRJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZVJpZ2h0SWNvbjtcbiAgICB9XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgY2xlYXJWYXJpYW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NsZWFyVmFyaWFudCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgY2xlYXJWYXJpYW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xlYXJWYXJpYW50O1xuICAgIH1cblxuICAgIC8qKiBoZWxwZXIgZm9yIGRlZmF1bHQgbGVmdCBpY29ucyAqL1xuICAgIHByaXZhdGUgZ2V0RGVmYXVsdExlZnRJY29uKHN0YXR1czogdHlwZW9mIHRoaXMuX3N0YXR1cyk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NoZWNrJztcbiAgICAgICAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW5mbyc7XG4gICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3dhcm5pbmcnO1xuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICAgICAgY2FzZSAnZGlzYWJsZWQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYmxvY2snO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGNsZWFyVmFyaWFudCA/ICdzdHJva2VsZXNzIHRyYW5zcGFyZW50LWJnJyA6ICcnXG4gICAgXVwiXG4+XG4gICAgPHNwYW4gKm5nSWY9XCJsZWZ0SWNvblwiIGNsYXNzPVwiaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3sgbGVmdEljb24gfX08L3NwYW4+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8c3BhbiAqbmdJZj1cInJpZ2h0SWNvblwiIGNsYXNzPVwiaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3sgcmlnaHRJY29uIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -11,7 +11,9 @@ export * from './lib/ss-search-bar/ss-search-bar.component';
|
|
|
11
11
|
export * from './lib/ss-search-bar/models/advanced-search.model';
|
|
12
12
|
export * from './lib/ss-search-bar/models/search-scope.model';
|
|
13
13
|
export * from './lib/ss-search-bar/models/search-config.model';
|
|
14
|
+
export * from './lib/snackbar/snackbar.service';
|
|
15
|
+
export * from './lib/snackbar/snackbar.component';
|
|
14
16
|
export { getUserStatusFromRoles } from './lib/contact-utils';
|
|
15
17
|
export { ADVANCED_SEARCH_QUALIFIER_MAP, ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, } from './lib/ss-search-bar/constants';
|
|
16
18
|
export * from './lib/status-button/status-button.component';
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6Qix1QkFBdUIsR0FDMUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb21wb25lbnRzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaGJsbC1oZWFkZXIvaGJsbC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2hibGwtaXRlbS10eXBlLWljb24ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oYmxsLWZvb3Rlci9oYmxsLWZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbXBlcnNvbmF0ZS1tb2RhbC9pbXBlcnNvbmF0ZS1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wZXJzb25hdGlvbi1iYW5uZXIvaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvc3Mtc2VhcmNoLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9tb2RlbHMvYWR2YW5jZWQtc2VhcmNoLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvbW9kZWxzL3NlYXJjaC1zY29wZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL21vZGVscy9zZWFyY2gtY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50JztcbmV4cG9ydCB7IGdldFVzZXJTdGF0dXNGcm9tUm9sZXMgfSBmcm9tICcuL2xpYi9jb250YWN0LXV0aWxzJztcbmV4cG9ydCB7XG4gICAgQURWQU5DRURfU0VBUkNIX1FVQUxJRklFUl9NQVAsXG4gICAgQURWQU5DRURfU0VBUkNIX0ZJRUxEX01BUCxcbiAgICBBRFZBTkNFRF9TRUFSQ0hfT1BUSU9OUyxcbn0gZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdHVzLWJ1dHRvbi9zdGF0dXMtYnV0dG9uLmNvbXBvbmVudCc7XG4iXX0=
|