@kusena/wui-single 18.0.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/README.md +24 -0
- package/esm2022/kusena-wui-single.mjs +5 -0
- package/esm2022/lib/components/app/app.component.mjs +63 -0
- package/esm2022/lib/components/app-bar/app-bar.component.mjs +16 -0
- package/esm2022/lib/components/avatar/avatar.component.mjs +35 -0
- package/esm2022/lib/components/dialog/dialog.component.mjs +54 -0
- package/esm2022/lib/components/drawer/drawer-item.component.mjs +41 -0
- package/esm2022/lib/components/drawer/drawer.component.mjs +82 -0
- package/esm2022/lib/components/drawer/drawer.directive.mjs +22 -0
- package/esm2022/lib/components/form-field/wui-form-field.component.mjs +63 -0
- package/esm2022/lib/components/form-field/wui-input.directive.mjs +68 -0
- package/esm2022/lib/components/icon/icon.component.mjs +22 -0
- package/esm2022/lib/components/list/list.component.mjs +31 -0
- package/esm2022/lib/components/loading/loading.component.mjs +60 -0
- package/esm2022/lib/components/loading-dialog/loading-dialog.component.mjs +24 -0
- package/esm2022/lib/components/menu/menu.component.mjs +134 -0
- package/esm2022/lib/components/modal/modal-host.component.mjs +21 -0
- package/esm2022/lib/components/modal/modal-overlay.mjs +63 -0
- package/esm2022/lib/components/modal/modal.component.mjs +38 -0
- package/esm2022/lib/components/nav/nav.component.mjs +85 -0
- package/esm2022/lib/components/page/page-host.component.mjs +21 -0
- package/esm2022/lib/components/page/page-overlay.service.mjs +63 -0
- package/esm2022/lib/components/page/page.component.mjs +23 -0
- package/esm2022/lib/components/snackbar/snackbar.component.mjs +65 -0
- package/esm2022/lib/components/toggle/toggle.component.mjs +79 -0
- package/esm2022/lib/directives/menu.directive.mjs +79 -0
- package/esm2022/lib/directives/nav.directive.mjs +78 -0
- package/esm2022/lib/directives/num-input.directive.mjs +105 -0
- package/esm2022/lib/directives/page-header.directive.mjs +48 -0
- package/esm2022/lib/directives/ripple.directive.mjs +87 -0
- package/esm2022/lib/directives/scroll-end.directive.mjs +27 -0
- package/esm2022/lib/directives/sortable.directive.mjs +99 -0
- package/esm2022/lib/index.mjs +39 -0
- package/esm2022/lib/services/message.service.mjs +22 -0
- package/esm2022/lib/services/modal.service.mjs +26 -0
- package/esm2022/lib/services/nav.service.mjs +55 -0
- package/esm2022/lib/services/page.service.mjs +38 -0
- package/esm2022/lib/services/router.service.mjs +42 -0
- package/esm2022/lib/services/wui.service.mjs +43 -0
- package/esm2022/lib/wui-single.component.mjs +19 -0
- package/esm2022/lib/wui.providers.mjs +20 -0
- package/esm2022/public-api.mjs +5 -0
- package/fesm2022/kusena-wui-single.mjs +1841 -0
- package/fesm2022/kusena-wui-single.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/app/app.component.d.ts +16 -0
- package/lib/components/app-bar/app-bar.component.d.ts +5 -0
- package/lib/components/avatar/avatar.component.d.ts +10 -0
- package/lib/components/dialog/dialog.component.d.ts +9 -0
- package/lib/components/drawer/drawer-item.component.d.ts +8 -0
- package/lib/components/drawer/drawer.component.d.ts +21 -0
- package/lib/components/drawer/drawer.directive.d.ts +7 -0
- package/lib/components/form-field/wui-form-field.component.d.ts +13 -0
- package/lib/components/form-field/wui-input.directive.d.ts +17 -0
- package/lib/components/icon/icon.component.d.ts +7 -0
- package/lib/components/list/list.component.d.ts +9 -0
- package/lib/components/loading/loading.component.d.ts +9 -0
- package/lib/components/loading-dialog/loading-dialog.component.d.ts +8 -0
- package/lib/components/menu/menu.component.d.ts +27 -0
- package/lib/components/modal/modal-host.component.d.ts +10 -0
- package/lib/components/modal/modal-overlay.d.ts +25 -0
- package/lib/components/modal/modal.component.d.ts +11 -0
- package/lib/components/nav/nav.component.d.ts +17 -0
- package/lib/components/page/page-host.component.d.ts +10 -0
- package/lib/components/page/page-overlay.service.d.ts +25 -0
- package/lib/components/page/page.component.d.ts +5 -0
- package/lib/components/snackbar/snackbar.component.d.ts +18 -0
- package/lib/components/toggle/toggle.component.d.ts +21 -0
- package/lib/directives/menu.directive.d.ts +17 -0
- package/lib/directives/nav.directive.d.ts +30 -0
- package/lib/directives/num-input.directive.d.ts +27 -0
- package/lib/directives/page-header.directive.d.ts +13 -0
- package/lib/directives/ripple.directive.d.ts +16 -0
- package/lib/directives/scroll-end.directive.d.ts +9 -0
- package/lib/directives/sortable.directive.d.ts +19 -0
- package/lib/index.d.ts +33 -0
- package/lib/services/message.service.d.ts +9 -0
- package/lib/services/modal.service.d.ts +13 -0
- package/lib/services/nav.service.d.ts +14 -0
- package/lib/services/page.service.d.ts +16 -0
- package/lib/services/router.service.d.ts +16 -0
- package/lib/services/wui.service.d.ts +16 -0
- package/lib/wui-single.component.d.ts +5 -0
- package/lib/wui.providers.d.ts +2 -0
- package/package.json +25 -0
- package/public-api.d.ts +1 -0
- package/scss/screen/appbar.scss +71 -0
- package/scss/screen/avatar.scss +17 -0
- package/scss/screen/backdrop.scss +15 -0
- package/scss/screen/box.scss +67 -0
- package/scss/screen/breadcrumb.scss +34 -0
- package/scss/screen/buttons.scss +177 -0
- package/scss/screen/core.scss +103 -0
- package/scss/screen/drawer.scss +273 -0
- package/scss/screen/formfields.scss +288 -0
- package/scss/screen/icon.scss +33 -0
- package/scss/screen/list.scss +90 -0
- package/scss/screen/loading.scss +169 -0
- package/scss/screen/menu.scss +120 -0
- package/scss/screen/modal.scss +238 -0
- package/scss/screen/normalize.scss +340 -0
- package/scss/screen/page.scss +115 -0
- package/scss/screen/pagination.scss +46 -0
- package/scss/screen/ripple.scss +18 -0
- package/scss/screen/scrollbar.scss +108 -0
- package/scss/screen/searchbox.scss +40 -0
- package/scss/screen/selection.scss +190 -0
- package/scss/screen/snackbar.scss +25 -0
- package/scss/screen/sortable.scss +10 -0
- package/scss/screen/table.scss +199 -0
- package/scss/screen/tabs.scss +71 -0
- package/scss/screen/toogle.scss +79 -0
- package/scss/screen/tooltip.scss +16 -0
- package/scss/screen/utils.scss +140 -0
- package/scss/variables/colors.scss +180 -0
- package/scss/variables/defaults.scss +0 -0
- package/scss/wui.scss +2 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Component, HostBinding } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/message.service";
|
|
6
|
+
export class SnackbarComponent {
|
|
7
|
+
messageService;
|
|
8
|
+
actionItems = [];
|
|
9
|
+
label = '';
|
|
10
|
+
show = false;
|
|
11
|
+
autocloseTimeoutId;
|
|
12
|
+
unsub = new Subject();
|
|
13
|
+
constructor(messageService) {
|
|
14
|
+
this.messageService = messageService;
|
|
15
|
+
}
|
|
16
|
+
open(label, autoclose = true, actionItems = []) {
|
|
17
|
+
this.label = label;
|
|
18
|
+
this.actionItems = actionItems;
|
|
19
|
+
clearTimeout(this.autocloseTimeoutId);
|
|
20
|
+
if (this.show) {
|
|
21
|
+
this.close();
|
|
22
|
+
setTimeout(() => this.show = true, 150);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.show = true;
|
|
26
|
+
}
|
|
27
|
+
if (autoclose) {
|
|
28
|
+
this.autocloseTimeoutId = setTimeout(() => this.close(), 3000);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
close() {
|
|
32
|
+
this.show = false;
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
this.messageService.get('wui:snackbar')
|
|
36
|
+
.pipe(takeUntil(this.unsub))
|
|
37
|
+
.subscribe(data => {
|
|
38
|
+
if (data.label === 'close') {
|
|
39
|
+
this.close();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.open(data.label, data.autoclose ?? true, data.actionItems);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
ngOnDestroy() {
|
|
47
|
+
this.unsub.next();
|
|
48
|
+
this.unsub.complete();
|
|
49
|
+
clearTimeout(this.autocloseTimeoutId);
|
|
50
|
+
}
|
|
51
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SnackbarComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SnackbarComponent, isStandalone: true, selector: "wui-snackbar", host: { properties: { "class.show": "this.show" } }, ngImport: i0, template: `{{ label }}`, isInline: true });
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SnackbarComponent, decorators: [{
|
|
55
|
+
type: Component,
|
|
56
|
+
args: [{
|
|
57
|
+
selector: 'wui-snackbar',
|
|
58
|
+
standalone: true,
|
|
59
|
+
template: `{{ label }}`
|
|
60
|
+
}]
|
|
61
|
+
}], ctorParameters: () => [{ type: i1.MessageService }], propDecorators: { show: [{
|
|
62
|
+
type: HostBinding,
|
|
63
|
+
args: ['class.show']
|
|
64
|
+
}] } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3VpLXNpbmdsZS9zcmMvbGliL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLGlCQUFpQjtJQVNSO0lBUHBCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNnQixJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRWhDLGtCQUFrQixDQUFNO0lBQ2YsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFN0MsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RCxJQUFJLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsY0FBcUIsRUFBRTtRQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO2FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dHQWpEVSxpQkFBaUI7NEZBQWpCLGlCQUFpQiw2SEFGbEIsYUFBYTs7NEZBRVosaUJBQWlCO2tCQUw3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO21GQUs0QixJQUFJO3NCQUE5QixXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3dWktc25hY2tiYXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGU6IGB7eyBsYWJlbCB9fWBcclxufSlcclxuZXhwb3J0IGNsYXNzIFNuYWNrYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBhY3Rpb25JdGVtczogYW55W10gPSBbXTtcclxuICBsYWJlbCA9ICcnO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2hvdycpIHNob3cgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBhdXRvY2xvc2VUaW1lb3V0SWQ6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHVuc3ViID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHt9XHJcblxyXG4gIG9wZW4obGFiZWw6IHN0cmluZywgYXV0b2Nsb3NlID0gdHJ1ZSwgYWN0aW9uSXRlbXM6IGFueVtdID0gW10pIHtcclxuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcclxuICAgIHRoaXMuYWN0aW9uSXRlbXMgPSBhY3Rpb25JdGVtcztcclxuXHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvY2xvc2VUaW1lb3V0SWQpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3cpIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvdyA9IHRydWUsIDE1MCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdXRvY2xvc2UpIHtcclxuICAgICAgdGhpcy5hdXRvY2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgMzAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldCgnd3VpOnNuYWNrYmFyJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWIpKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxhYmVsID09PSAnY2xvc2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3BlbihkYXRhLmxhYmVsLCBkYXRhLmF1dG9jbG9zZSA/PyB0cnVlLCBkYXRhLmFjdGlvbkl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3ViLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWIuY29tcGxldGUoKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9jbG9zZVRpbWVvdXRJZCk7XHJcbiAgfVxyXG59Il19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Component, effect, model, output, input, signal } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ToggleComponent {
|
|
5
|
+
// Input signals
|
|
6
|
+
tabindex = input(0);
|
|
7
|
+
// Output signals
|
|
8
|
+
change = output();
|
|
9
|
+
// State signals
|
|
10
|
+
checked = model(false);
|
|
11
|
+
disabled = signal(false);
|
|
12
|
+
isTouched = signal(false);
|
|
13
|
+
// ControlValueAccessor callbacks
|
|
14
|
+
onChange = () => { };
|
|
15
|
+
onTouched = () => { };
|
|
16
|
+
constructor() {
|
|
17
|
+
// Auto-update form control value
|
|
18
|
+
effect(() => {
|
|
19
|
+
this.onChange(this.checked());
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
onKeyDown(e) {
|
|
23
|
+
if (e.key === ' ') {
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
this.toggle();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
toggle() {
|
|
29
|
+
if (!this.disabled()) {
|
|
30
|
+
this.markAsTouched();
|
|
31
|
+
this.checked.update(value => !value);
|
|
32
|
+
this.change.emit(this.checked());
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// ControlValueAccessor implementation
|
|
36
|
+
writeValue(value) {
|
|
37
|
+
this.checked.set(!!value);
|
|
38
|
+
}
|
|
39
|
+
registerOnChange(fn) {
|
|
40
|
+
this.onChange = fn;
|
|
41
|
+
}
|
|
42
|
+
registerOnTouched(fn) {
|
|
43
|
+
this.onTouched = fn;
|
|
44
|
+
}
|
|
45
|
+
setDisabledState(isDisabled) {
|
|
46
|
+
this.disabled.set(isDisabled);
|
|
47
|
+
}
|
|
48
|
+
markAsTouched() {
|
|
49
|
+
if (!this.isTouched()) {
|
|
50
|
+
this.onTouched();
|
|
51
|
+
this.isTouched.set(true);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ToggleComponent, isStandalone: true, selector: "wui-toggle", inputs: { tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change", checked: "checkedChange" }, host: { listeners: { "click": "toggle()", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "tabindex()", "class.wui-toggle-checked": "checked()", "attr.disabled": "disabled() ? \"\" : null" } }, providers: [
|
|
56
|
+
{
|
|
57
|
+
provide: NG_VALUE_ACCESSOR,
|
|
58
|
+
multi: true,
|
|
59
|
+
useExisting: ToggleComponent
|
|
60
|
+
}
|
|
61
|
+
], ngImport: i0, template: "<div class=\"wui-toggle-switch-outer\">\n <div class=\"wui-toggle-switch-track\">\n <div class=\"wui-toggle-switch\"></div>\n </div>\n</div>\n<div><ng-content class=\"wui-toggle-label\"></ng-content></div>", styles: [""] });
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
64
|
+
type: Component,
|
|
65
|
+
args: [{ selector: 'wui-toggle', standalone: true, providers: [
|
|
66
|
+
{
|
|
67
|
+
provide: NG_VALUE_ACCESSOR,
|
|
68
|
+
multi: true,
|
|
69
|
+
useExisting: ToggleComponent
|
|
70
|
+
}
|
|
71
|
+
], host: {
|
|
72
|
+
'[attr.tabindex]': 'tabindex()',
|
|
73
|
+
'[class.wui-toggle-checked]': 'checked()',
|
|
74
|
+
'[attr.disabled]': 'disabled() ? "" : null',
|
|
75
|
+
'(click)': 'toggle()',
|
|
76
|
+
'(keydown)': 'onKeyDown($event)'
|
|
77
|
+
}, template: "<div class=\"wui-toggle-switch-outer\">\n <div class=\"wui-toggle-switch-track\">\n <div class=\"wui-toggle-switch\"></div>\n </div>\n</div>\n<div><ng-content class=\"wui-toggle-label\"></ng-content></div>" }]
|
|
78
|
+
}], ctorParameters: () => [] });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9jb21wb25lbnRzL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3VpLXNpbmdsZS9zcmMvbGliL2NvbXBvbmVudHMvdG9nZ2xlL3RvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXNCekUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsZ0JBQWdCO0lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFcEIsaUJBQWlCO0lBQ2pCLE1BQU0sR0FBRyxNQUFNLEVBQVcsQ0FBQztJQUUzQixnQkFBZ0I7SUFDaEIsT0FBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbEMsaUNBQWlDO0lBQ3pCLFFBQVEsR0FBNkIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFekM7UUFDRSxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQWdCO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBNEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7d0dBNURVLGVBQWU7NEZBQWYsZUFBZSxnbEJBZmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsZUFBZTthQUM3QjtTQUNGLDBCQ2RILG9OQUs2RDs7NEZEa0JoRCxlQUFlO2tCQXBCM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1gsSUFBSSxhQUdKO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsaUJBQWlCO3lCQUM3QjtxQkFDRixRQUNLO3dCQUNKLGlCQUFpQixFQUFFLFlBQVk7d0JBQy9CLDRCQUE0QixFQUFFLFdBQVc7d0JBQ3pDLGlCQUFpQixFQUFFLHdCQUF3Qjt3QkFDM0MsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIG1vZGVsLCBvdXRwdXQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3VpLXRvZ2dsZScsXG4gIHN0YW5kYWxvbmU6dHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b2dnbGUuY29tcG9uZW50LnNjc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFRvZ2dsZUNvbXBvbmVudFxuICAgIH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiaW5kZXgoKScsXG4gICAgJ1tjbGFzcy53dWktdG9nZ2xlLWNoZWNrZWRdJzogJ2NoZWNrZWQoKScsXG4gICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gXCJcIiA6IG51bGwnLFxuICAgICcoY2xpY2spJzogJ3RvZ2dsZSgpJyxcbiAgICAnKGtleWRvd24pJzogJ29uS2V5RG93bigkZXZlbnQpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLy8gSW5wdXQgc2lnbmFsc1xuICB0YWJpbmRleCA9IGlucHV0KDApO1xuICBcbiAgLy8gT3V0cHV0IHNpZ25hbHNcbiAgY2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIFxuICAvLyBTdGF0ZSBzaWduYWxzXG4gIGNoZWNrZWQgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIGRpc2FibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBpc1RvdWNoZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNhbGxiYWNrc1xuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXVwZGF0ZSBmb3JtIGNvbnRyb2wgdmFsdWVcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNoZWNrZWQoKSk7XG4gICAgfSk7XG4gIH1cblxuICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChlLmtleSA9PT0gJyAnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLmNoZWNrZWQudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCgpKTtcbiAgICB9XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkLnNldCghIXZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1RvdWNoZWQoKSkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuaXNUb3VjaGVkLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwid3VpLXRvZ2dsZS1zd2l0Y2gtb3V0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cInd1aS10b2dnbGUtc3dpdGNoLXRyYWNrXCI+XG4gICAgPGRpdiBjbGFzcz1cInd1aS10b2dnbGUtc3dpdGNoXCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2PjxuZy1jb250ZW50IGNsYXNzPVwid3VpLXRvZ2dsZS1sYWJlbFwiPjwvbmctY29udGVudD48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CdkMenu, CdkMenuItem, CdkMenuTrigger, MENU_TRIGGER, PARENT_OR_NEW_MENU_STACK_PROVIDER } from "@angular/cdk/menu";
|
|
2
|
+
import { Directive, HostListener, Input } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ContextMenuDirective extends CdkMenu {
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextMenuDirective, isStandalone: true, selector: "[wuiContextMenu]", usesInheritance: true, ngImport: i0 });
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuDirective, decorators: [{
|
|
9
|
+
type: Directive,
|
|
10
|
+
args: [{
|
|
11
|
+
selector: '[wuiContextMenu]',
|
|
12
|
+
standalone: true
|
|
13
|
+
}]
|
|
14
|
+
}] });
|
|
15
|
+
export class ContextMenuItemDirective extends CdkMenuItem {
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuItemDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
17
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextMenuItemDirective, isStandalone: true, selector: "[wuiContextMenuItem]", usesInheritance: true, ngImport: i0 });
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuItemDirective, decorators: [{
|
|
20
|
+
type: Directive,
|
|
21
|
+
args: [{
|
|
22
|
+
selector: '[wuiContextMenuItem]',
|
|
23
|
+
standalone: true
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
export class ContextMenuTriggerDirective extends CdkMenuTrigger {
|
|
27
|
+
menuPosBehavior = 'default'; // or 'edge'
|
|
28
|
+
handleDocumentEvent(event) {
|
|
29
|
+
if (this.isOpen())
|
|
30
|
+
this.close();
|
|
31
|
+
}
|
|
32
|
+
open() {
|
|
33
|
+
if (this.menuPosBehavior === 'default') {
|
|
34
|
+
this.menuPosition = [
|
|
35
|
+
{ overlayY: 'top', overlayX: 'start', originY: 'top', originX: 'start' },
|
|
36
|
+
{ overlayY: 'top', overlayX: 'end', originY: 'top', originX: 'end' },
|
|
37
|
+
{ overlayY: 'bottom', overlayX: 'start', originY: 'bottom', originX: 'start' },
|
|
38
|
+
{ overlayY: 'bottom', overlayX: 'end', originY: 'bottom', originX: 'start' }
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
super.open();
|
|
42
|
+
}
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuTriggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextMenuTriggerDirective, isStandalone: true, selector: "[wuiContextMenuTrigger]", inputs: { menuTemplateRef: ["wuiContextMenuTrigger", "menuTemplateRef"], menuPosition: ["wuiContextMenuPosition", "menuPosition"], menuData: ["wuiContextMenuTriggerData", "menuData"], menuPosBehavior: ["wuiContextMenuPosBehavior", "menuPosBehavior"] }, host: { listeners: { "document:touchmove": "handleDocumentEvent($event)", "document:mousewheel": "handleDocumentEvent($event)" } }, providers: [
|
|
45
|
+
{ provide: MENU_TRIGGER, useExisting: ContextMenuTriggerDirective },
|
|
46
|
+
PARENT_OR_NEW_MENU_STACK_PROVIDER,
|
|
47
|
+
], exportAs: ["wuiContextMenuTrigger"], usesInheritance: true, ngImport: i0 });
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuTriggerDirective, decorators: [{
|
|
50
|
+
type: Directive,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: '[wuiContextMenuTrigger]',
|
|
53
|
+
exportAs: 'wuiContextMenuTrigger',
|
|
54
|
+
standalone: true,
|
|
55
|
+
inputs: [
|
|
56
|
+
{ name: 'menuTemplateRef', alias: 'wuiContextMenuTrigger' },
|
|
57
|
+
{ name: 'menuPosition', alias: 'wuiContextMenuPosition' },
|
|
58
|
+
{ name: 'menuData', alias: 'wuiContextMenuTriggerData' }
|
|
59
|
+
],
|
|
60
|
+
providers: [
|
|
61
|
+
{ provide: MENU_TRIGGER, useExisting: ContextMenuTriggerDirective },
|
|
62
|
+
PARENT_OR_NEW_MENU_STACK_PROVIDER,
|
|
63
|
+
],
|
|
64
|
+
host: {
|
|
65
|
+
'(document:touchmove)': 'handleDocumentEvent($event)',
|
|
66
|
+
'(document:mousewheel)': 'handleDocumentEvent($event)'
|
|
67
|
+
}
|
|
68
|
+
}]
|
|
69
|
+
}], propDecorators: { menuPosBehavior: [{
|
|
70
|
+
type: Input,
|
|
71
|
+
args: ['wuiContextMenuPosBehavior']
|
|
72
|
+
}], handleDocumentEvent: [{
|
|
73
|
+
type: HostListener,
|
|
74
|
+
args: ['document:touchmove', ['$event']]
|
|
75
|
+
}, {
|
|
76
|
+
type: HostListener,
|
|
77
|
+
args: ['document:mousewheel', ['$event']]
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93dWktc2luZ2xlL3NyYy9saWIvZGlyZWN0aXZlcy9tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsT0FBTzt3R0FBcEMsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOztBQU9ELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUFXO3dHQUE1Qyx3QkFBd0I7NEZBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBcUJELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxjQUFjO0lBQ3pCLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxZQUFZO0lBSTdFLG1CQUFtQixDQUFDLEtBQVk7UUFDOUIsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFUSxJQUFJO1FBQ1gsSUFBRyxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQztnQkFDdEUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO2dCQUNsRSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUM7Z0JBQzVFLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQzthQUMzRSxDQUFDO1FBQ0osQ0FBQztRQUNELEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7d0dBbkJVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHVjQVQzQjtZQUNULEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUM7WUFDakUsaUNBQWlDO1NBQ2xDOzs0RkFNVSwyQkFBMkI7a0JBbEJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixNQUFNLEVBQUU7d0JBQ04sRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFDO3dCQUN6RCxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFDO3dCQUN2RCxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFDO3FCQUN2RDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsNkJBQTZCLEVBQUM7d0JBQ2pFLGlDQUFpQztxQkFDbEM7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLHNCQUFzQixFQUFFLDZCQUE2Qjt3QkFDckQsdUJBQXVCLEVBQUUsNkJBQTZCO3FCQUN2RDtpQkFDRjs4QkFFcUMsZUFBZTtzQkFBbEQsS0FBSzt1QkFBQywyQkFBMkI7Z0JBSWxDLG1CQUFtQjtzQkFGbEIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzdDLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtNZW51LCBDZGtNZW51SXRlbSwgQ2RrTWVudVRyaWdnZXIsIE1FTlVfVFJJR0dFUiwgUEFSRU5UX09SX05FV19NRU5VX1NUQUNLX1BST1ZJREVSIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9tZW51XCI7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbd3VpQ29udGV4dE1lbnVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudURpcmVjdGl2ZSBleHRlbmRzIENka01lbnUgeyB9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3dWlDb250ZXh0TWVudUl0ZW1dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudUl0ZW1EaXJlY3RpdmUgZXh0ZW5kcyBDZGtNZW51SXRlbSB7IH1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3d1aUNvbnRleHRNZW51VHJpZ2dlcl0nLFxuICBleHBvcnRBczogJ3d1aUNvbnRleHRNZW51VHJpZ2dlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGlucHV0czogW1xuICAgIHtuYW1lOiAnbWVudVRlbXBsYXRlUmVmJywgYWxpYXM6ICd3dWlDb250ZXh0TWVudVRyaWdnZXInfSxcbiAgICB7bmFtZTogJ21lbnVQb3NpdGlvbicsIGFsaWFzOiAnd3VpQ29udGV4dE1lbnVQb3NpdGlvbid9LFxuICAgIHtuYW1lOiAnbWVudURhdGEnLCBhbGlhczogJ3d1aUNvbnRleHRNZW51VHJpZ2dlckRhdGEnfVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogTUVOVV9UUklHR0VSLCB1c2VFeGlzdGluZzogQ29udGV4dE1lbnVUcmlnZ2VyRGlyZWN0aXZlfSxcbiAgICBQQVJFTlRfT1JfTkVXX01FTlVfU1RBQ0tfUFJPVklERVIsXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnKGRvY3VtZW50OnRvdWNobW92ZSknOiAnaGFuZGxlRG9jdW1lbnRFdmVudCgkZXZlbnQpJyxcbiAgICAnKGRvY3VtZW50Om1vdXNld2hlZWwpJzogJ2hhbmRsZURvY3VtZW50RXZlbnQoJGV2ZW50KSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudVRyaWdnZXJEaXJlY3RpdmUgZXh0ZW5kcyBDZGtNZW51VHJpZ2dlciB7XG4gIEBJbnB1dCgnd3VpQ29udGV4dE1lbnVQb3NCZWhhdmlvcicpIG1lbnVQb3NCZWhhdmlvciA9ICdkZWZhdWx0JzsgLy8gb3IgJ2VkZ2UnXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2htb3ZlJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V3aGVlbCcsIFsnJGV2ZW50J10pIFxuICBoYW5kbGVEb2N1bWVudEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGlmKHRoaXMuaXNPcGVuKCkpIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9wZW4oKSB7XG4gICAgaWYodGhpcy5tZW51UG9zQmVoYXZpb3IgPT09ICdkZWZhdWx0Jykge1xuICAgICAgdGhpcy5tZW51UG9zaXRpb24gPSBbXG4gICAgICAgIHtvdmVybGF5WTogJ3RvcCcsIG92ZXJsYXlYOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3JpZ2luWDogJ3N0YXJ0J30sXG4gICAgICAgIHtvdmVybGF5WTogJ3RvcCcsIG92ZXJsYXlYOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcsIG9yaWdpblg6ICdlbmQnfSxcbiAgICAgICAge292ZXJsYXlZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvcmlnaW5YOiAnc3RhcnQnfSxcbiAgICAgICAge292ZXJsYXlZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3JpZ2luWDogJ3N0YXJ0J31cbiAgICAgIF07XG4gICAgfVxuICAgIHN1cGVyLm9wZW4oKTtcbiAgfVxufSJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Directive, input, output, inject } from '@angular/core';
|
|
2
|
+
import { NavService } from '../services/nav.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/nav.service";
|
|
5
|
+
export class NavRootDirective {
|
|
6
|
+
navService = inject(NavService);
|
|
7
|
+
name = input.required({ alias: 'wuiNavRoot' });
|
|
8
|
+
params = input({}, { alias: 'wuiNavParams' });
|
|
9
|
+
navigated = output();
|
|
10
|
+
navigateToRoot() {
|
|
11
|
+
this.navService.setRoot(this.name());
|
|
12
|
+
this.navigated.emit();
|
|
13
|
+
}
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
15
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NavRootDirective, isStandalone: true, selector: "[wuiNavRoot]", inputs: { name: { classPropertyName: "name", publicName: "wuiNavRoot", isSignal: true, isRequired: true, transformFunction: null }, params: { classPropertyName: "params", publicName: "wuiNavParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigated: "navigated" }, host: { listeners: { "click": "navigateToRoot()" } }, ngImport: i0 });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavRootDirective, decorators: [{
|
|
18
|
+
type: Directive,
|
|
19
|
+
args: [{
|
|
20
|
+
selector: '[wuiNavRoot]',
|
|
21
|
+
standalone: true,
|
|
22
|
+
host: {
|
|
23
|
+
'(click)': 'navigateToRoot()'
|
|
24
|
+
}
|
|
25
|
+
}]
|
|
26
|
+
}] });
|
|
27
|
+
export class NavPushDirective {
|
|
28
|
+
navService;
|
|
29
|
+
name = input.required({ alias: 'wuiNavPush' });
|
|
30
|
+
params = input({}, { alias: 'wuiNavParams' });
|
|
31
|
+
navigated = output();
|
|
32
|
+
constructor(navService) {
|
|
33
|
+
this.navService = navService;
|
|
34
|
+
}
|
|
35
|
+
navigatePush() {
|
|
36
|
+
this.navService.push(this.name());
|
|
37
|
+
this.navigated.emit();
|
|
38
|
+
}
|
|
39
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPushDirective, deps: [{ token: i1.NavService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
40
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NavPushDirective, isStandalone: true, selector: "[wuiNavPush]", inputs: { name: { classPropertyName: "name", publicName: "wuiNavPush", isSignal: true, isRequired: true, transformFunction: null }, params: { classPropertyName: "params", publicName: "wuiNavParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigated: "navigated" }, host: { listeners: { "click": "navigatePush()" } }, ngImport: i0 });
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPushDirective, decorators: [{
|
|
43
|
+
type: Directive,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: '[wuiNavPush]',
|
|
46
|
+
standalone: true,
|
|
47
|
+
host: {
|
|
48
|
+
'(click)': 'navigatePush()'
|
|
49
|
+
}
|
|
50
|
+
}]
|
|
51
|
+
}], ctorParameters: () => [{ type: i1.NavService }] });
|
|
52
|
+
export class NavPopDirective {
|
|
53
|
+
navService;
|
|
54
|
+
// Optional pop params
|
|
55
|
+
params = input(null, { alias: 'wuiNavParams' });
|
|
56
|
+
// Navigation event output
|
|
57
|
+
navigated = output();
|
|
58
|
+
constructor(navService) {
|
|
59
|
+
this.navService = navService;
|
|
60
|
+
}
|
|
61
|
+
navigatePop() {
|
|
62
|
+
this.navService.pop(this.params());
|
|
63
|
+
this.navigated.emit();
|
|
64
|
+
}
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPopDirective, deps: [{ token: i1.NavService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
66
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NavPopDirective, isStandalone: true, selector: "[wuiNavPop]", inputs: { params: { classPropertyName: "params", publicName: "wuiNavParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigated: "navigated" }, host: { listeners: { "click": "navigatePop()" } }, ngImport: i0 });
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPopDirective, decorators: [{
|
|
69
|
+
type: Directive,
|
|
70
|
+
args: [{
|
|
71
|
+
selector: '[wuiNavPop]',
|
|
72
|
+
standalone: true,
|
|
73
|
+
host: {
|
|
74
|
+
'(click)': 'navigatePop()'
|
|
75
|
+
}
|
|
76
|
+
}]
|
|
77
|
+
}], ctorParameters: () => [{ type: i1.NavService }] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9kaXJlY3RpdmVzL25hdi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTckQsTUFBTSxPQUFPLGdCQUFnQjtJQUVuQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFFdkQsTUFBTSxHQUFHLEtBQUssQ0FBMEIsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFFdkUsU0FBUyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRTNCLGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7d0dBYlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGtCQUFrQjtxQkFDOUI7aUJBQ0Y7O0FBd0JELE1BQU0sT0FBTyxnQkFBZ0I7SUFPUDtJQU5wQixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRXZELE1BQU0sR0FBRyxLQUFLLENBQTBCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBRXZFLFNBQVMsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUUzQixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUU5QyxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO3dHQVpVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQVA1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzVCO2lCQUNGOztBQXVCRCxNQUFNLE9BQU8sZUFBZTtJQU9OO0lBTnBCLHNCQUFzQjtJQUN0QixNQUFNLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBRXpELDBCQUEwQjtJQUMxQixTQUFTLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFM0IsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFOUMsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzt3R0FaVSxlQUFlOzRGQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBUDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGVBQWU7cUJBQzNCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgRXZlbnRFbWl0dGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25hdi5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3d1aU5hdlJvb3RdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2xpY2spJzogJ25hdmlnYXRlVG9Sb290KCknXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2Um9vdERpcmVjdGl2ZSB7XHJcblxyXG4gIHByaXZhdGUgbmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHJcbiAgbmFtZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oeyBhbGlhczogJ3d1aU5hdlJvb3QnIH0pO1xyXG4gIFxyXG4gIHBhcmFtcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSwgeyBhbGlhczogJ3d1aU5hdlBhcmFtcycgfSk7XHJcblxyXG4gIG5hdmlnYXRlZCA9IG91dHB1dDx2b2lkPigpO1xyXG5cclxuICBuYXZpZ2F0ZVRvUm9vdCgpIHtcclxuICAgIHRoaXMubmF2U2VydmljZS5zZXRSb290KHRoaXMubmFtZSgpKTtcclxuICAgIHRoaXMubmF2aWdhdGVkLmVtaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3d1aU5hdlB1c2hdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2xpY2spJzogJ25hdmlnYXRlUHVzaCgpJ1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdlB1c2hEaXJlY3RpdmUge1xyXG4gIG5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KHsgYWxpYXM6ICd3dWlOYXZQdXNoJyB9KTtcclxuICBcclxuICBwYXJhbXMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30sIHsgYWxpYXM6ICd3dWlOYXZQYXJhbXMnIH0pO1xyXG5cclxuICBuYXZpZ2F0ZWQgPSBvdXRwdXQ8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZTZXJ2aWNlOiBOYXZTZXJ2aWNlKSB7fVxyXG5cclxuICBuYXZpZ2F0ZVB1c2goKSB7XHJcbiAgICB0aGlzLm5hdlNlcnZpY2UucHVzaCh0aGlzLm5hbWUoKSk7XHJcbiAgICB0aGlzLm5hdmlnYXRlZC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t3dWlOYXZQb3BdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2xpY2spJzogJ25hdmlnYXRlUG9wKCknXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2UG9wRGlyZWN0aXZlIHtcclxuICAvLyBPcHRpb25hbCBwb3AgcGFyYW1zXHJcbiAgcGFyYW1zID0gaW5wdXQ8dW5rbm93bj4obnVsbCwgeyBhbGlhczogJ3d1aU5hdlBhcmFtcycgfSk7XHJcblxyXG4gIC8vIE5hdmlnYXRpb24gZXZlbnQgb3V0cHV0XHJcbiAgbmF2aWdhdGVkID0gb3V0cHV0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmF2U2VydmljZTogTmF2U2VydmljZSkge31cclxuXHJcbiAgbmF2aWdhdGVQb3AoKSB7XHJcbiAgICB0aGlzLm5hdlNlcnZpY2UucG9wKHRoaXMucGFyYW1zKCkpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZWQuZW1pdCgpO1xyXG4gIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { DecimalPipe } from '@angular/common';
|
|
2
|
+
import { Directive, ElementRef, computed, effect, inject, input, model } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NumInputDirective {
|
|
6
|
+
decimalPipe = inject(DecimalPipe);
|
|
7
|
+
elementRef = inject((ElementRef));
|
|
8
|
+
// Input signals
|
|
9
|
+
format = input('1.0-2');
|
|
10
|
+
value = model(null);
|
|
11
|
+
// Computed signals
|
|
12
|
+
isNegative = computed(() => this.value()?.includes('-') ?? false);
|
|
13
|
+
isDecimal = computed(() => this.value()?.includes('.') ?? false);
|
|
14
|
+
numberPart = computed(() => {
|
|
15
|
+
const regex = this.isNegative() ? /-(.*)/ : /(.*)/;
|
|
16
|
+
const match = this.value()?.match(regex);
|
|
17
|
+
return this.parseNumber(match?.[1] ?? null);
|
|
18
|
+
});
|
|
19
|
+
decimalPart = computed(() => {
|
|
20
|
+
if (!this.isDecimal())
|
|
21
|
+
return null;
|
|
22
|
+
const match = this.value()?.match(/\.(.*)/);
|
|
23
|
+
return match?.[1] ?? null;
|
|
24
|
+
});
|
|
25
|
+
numericValue = computed(() => {
|
|
26
|
+
const numStr = [this.numberPart(), this.decimalPart()].filter(Boolean).join('.');
|
|
27
|
+
const num = parseFloat(numStr);
|
|
28
|
+
return this.isNegative() ? -num : num;
|
|
29
|
+
});
|
|
30
|
+
formattedValue = computed(() => {
|
|
31
|
+
const prefix = this.isNegative() ? '-' : '';
|
|
32
|
+
const number = this.numberPart() ?
|
|
33
|
+
this.decimalPipe.transform(this.numberPart(), this.format()) : '';
|
|
34
|
+
const decimal = this.isDecimal() ? `.${this.decimalPart()}` : '';
|
|
35
|
+
return `${prefix}${number}${decimal}`;
|
|
36
|
+
});
|
|
37
|
+
// Filter functions (unchanged from previous version)
|
|
38
|
+
allowNumbers(event) { }
|
|
39
|
+
allowFunctional(event) { }
|
|
40
|
+
allowDecimals(event) { }
|
|
41
|
+
allowNegative(event) { }
|
|
42
|
+
constructor() {
|
|
43
|
+
effect(() => {
|
|
44
|
+
this.elementRef.nativeElement.value = this.formattedValue();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
handleKeyDown(event) {
|
|
48
|
+
const allowed = [
|
|
49
|
+
this.allowNumbers(event),
|
|
50
|
+
this.allowFunctional(event),
|
|
51
|
+
this.allowDecimals(event),
|
|
52
|
+
this.allowNegative(event)
|
|
53
|
+
].some(Boolean);
|
|
54
|
+
if (!allowed) {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
this.value.set(this.elementRef.nativeElement.value);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
handleFocusOut() {
|
|
63
|
+
this.value.set(this.elementRef.nativeElement.value);
|
|
64
|
+
}
|
|
65
|
+
parseNumber(str) {
|
|
66
|
+
if (!str)
|
|
67
|
+
return null;
|
|
68
|
+
const num = parseFloat(str.replace(/[^\d.]/g, ''));
|
|
69
|
+
return isNaN(num) ? null : num;
|
|
70
|
+
}
|
|
71
|
+
// ControlValueAccessor implementation
|
|
72
|
+
writeValue(obj) {
|
|
73
|
+
this.value.set(obj?.toString() ?? null);
|
|
74
|
+
}
|
|
75
|
+
registerOnChange(fn) {
|
|
76
|
+
effect(() => {
|
|
77
|
+
fn(this.numericValue());
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
registerOnTouched(fn) { }
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
82
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NumInputDirective, isStandalone: true, selector: "[wuiNumInput]", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown": "handleKeyDown($event)", "focusout": "handleFocusOut($event)" }, properties: { "attr.inputmode": "\"decimal\"" } }, providers: [{
|
|
83
|
+
provide: NG_VALUE_ACCESSOR,
|
|
84
|
+
useExisting: NumInputDirective,
|
|
85
|
+
multi: true
|
|
86
|
+
}], ngImport: i0 });
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumInputDirective, decorators: [{
|
|
89
|
+
type: Directive,
|
|
90
|
+
args: [{
|
|
91
|
+
selector: '[wuiNumInput]',
|
|
92
|
+
standalone: true,
|
|
93
|
+
providers: [{
|
|
94
|
+
provide: NG_VALUE_ACCESSOR,
|
|
95
|
+
useExisting: NumInputDirective,
|
|
96
|
+
multi: true
|
|
97
|
+
}],
|
|
98
|
+
host: {
|
|
99
|
+
'(keydown)': 'handleKeyDown($event)',
|
|
100
|
+
'(focusout)': 'handleFocusOut($event)',
|
|
101
|
+
'[attr.inputmode]': '"decimal"'
|
|
102
|
+
}
|
|
103
|
+
}]
|
|
104
|
+
}], ctorParameters: () => [] });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9kaXJlY3RpdmVzL251bS1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWdCekUsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUE0QixDQUFBLENBQUMsQ0FBQztJQUUxRCxnQkFBZ0I7SUFDaEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixLQUFLLEdBQUcsS0FBSyxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUVuQyxtQkFBbUI7SUFDbkIsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUVqRSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8s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b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztvQkFDRixJQUFJLEVBQUU7d0JBQ0osV0FBVyxFQUFFLHVCQUF1Qjt3QkFDcEMsWUFBWSxFQUFFLHdCQUF3Qjt3QkFDdEMsa0JBQWtCLEVBQUUsV0FBVztxQkFDaEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3dWlOdW1JbnB1dF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IE51bUlucHV0RGlyZWN0aXZlLFxuICAgIG11bHRpOiB0cnVlXG4gIH1dLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlEb3duKCRldmVudCknLFxuICAgICcoZm9jdXNvdXQpJzogJ2hhbmRsZUZvY3VzT3V0KCRldmVudCknLFxuICAgICdbYXR0ci5pbnB1dG1vZGVdJzogJ1wiZGVjaW1hbFwiJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE51bUlucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIGRlY2ltYWxQaXBlID0gaW5qZWN0KERlY2ltYWxQaXBlKTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pO1xuXG4gIC8vIElucHV0IHNpZ25hbHNcbiAgZm9ybWF0ID0gaW5wdXQoJzEuMC0yJyk7XG4gIHZhbHVlID0gbW9kZWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFsc1xuICBpc05lZ2F0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpPy5pbmNsdWRlcygnLScpID8/IGZhbHNlKTtcbiAgaXNEZWNpbWFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpPy5pbmNsdWRlcygnLicpID8/IGZhbHNlKTtcblxuICBudW1iZXJQYXJ0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5pc05lZ2F0aXZlKCkgPyAvLSguKikvIDogLyguKikvO1xuICAgIGNvbnN0IG1hdGNoID0gdGhpcy52YWx1ZSgpPy5tYXRjaChyZWdleCk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VOdW1iZXIobWF0Y2g/LlsxXSA/PyBudWxsKTtcbiAgfSk7XG5cbiAgZGVjaW1hbFBhcnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzRGVjaW1hbCgpKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBtYXRjaCA9IHRoaXMudmFsdWUoKT8ubWF0Y2goL1xcLiguKikvKTtcbiAgICByZXR1cm4gbWF0Y2g/LlsxXSA/PyBudWxsO1xuICB9KTtcblxuICBudW1lcmljVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbnVtU3RyID0gW3RoaXMubnVtYmVyUGFydCgpLCB0aGlzLmRlY2ltYWxQYXJ0KCldLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChudW1TdHIpO1xuICAgIHJldHVybiB0aGlzLmlzTmVnYXRpdmUoKSA/IC1udW0gOiBudW07XG4gIH0pO1xuXG4gIGZvcm1hdHRlZFZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuaXNOZWdhdGl2ZSgpID8gJy0nIDogJyc7XG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5udW1iZXJQYXJ0KCkgPyBcbiAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHRoaXMubnVtYmVyUGFydCgpLCB0aGlzLmZvcm1hdCgpKSA6ICcnO1xuICAgIGNvbnN0IGRlY2ltYWwgPSB0aGlzLmlzRGVjaW1hbCgpID8gYC4ke3RoaXMuZGVjaW1hbFBhcnQoKX1gIDogJyc7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke251bWJlcn0ke2RlY2ltYWx9YDtcbiAgfSk7XG5cbiAgLy8gRmlsdGVyIGZ1bmN0aW9ucyAodW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbilcbiAgcHJpdmF0ZSBhbGxvd051bWJlcnMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHsgLyogLi4uICovIH1cbiAgcHJpdmF0ZSBhbGxvd0Z1bmN0aW9uYWwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHsgLyogLi4uICovIH1cbiAgcHJpdmF0ZSBhbGxvd0RlY2ltYWxzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7IC8qIC4uLiAqLyB9XG4gIHByaXZhdGUgYWxsb3dOZWdhdGl2ZShldmVudDogS2V5Ym9hcmRFdmVudCkgeyAvKiAuLi4gKi8gfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBhbGxvd2VkID0gW1xuICAgICAgdGhpcy5hbGxvd051bWJlcnMoZXZlbnQpLFxuICAgICAgdGhpcy5hbGxvd0Z1bmN0aW9uYWwoZXZlbnQpLFxuICAgICAgdGhpcy5hbGxvd0RlY2ltYWxzKGV2ZW50KSxcbiAgICAgIHRoaXMuYWxsb3dOZWdhdGl2ZShldmVudClcbiAgICBdLnNvbWUoQm9vbGVhbik7XG5cbiAgICBpZiAoIWFsbG93ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVGb2N1c091dCgpIHtcbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTnVtYmVyKHN0cjogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghc3RyKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9bXlxcZC5dL2csICcnKSk7XG4gICAgcmV0dXJuIGlzTmFOKG51bSkgPyBudWxsIDogbnVtO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZShvYmo6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldChvYmo/LnRvU3RyaW5nKCkgPz8gbnVsbCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IG51bWJlciB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgZm4odGhpcy5udW1lcmljVmFsdWUoKSk7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge31cbn0iXX0=
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PageHeaderDirective {
|
|
4
|
+
el;
|
|
5
|
+
contentEl;
|
|
6
|
+
wuiTitle;
|
|
7
|
+
constructor(el) {
|
|
8
|
+
this.el = el;
|
|
9
|
+
}
|
|
10
|
+
getClosest(elem, selector) {
|
|
11
|
+
for (; elem && elem !== document; elem = elem.parentNode) {
|
|
12
|
+
if (elem.matches(selector))
|
|
13
|
+
return elem;
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
;
|
|
18
|
+
onScroll(e) {
|
|
19
|
+
if (e.target.scrollTop > Math.round((e.target.offsetHeight / 2) / 2)) {
|
|
20
|
+
this.wuiTitle.classList.add('show');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.wuiTitle.classList.remove('show');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.contentEl = this.getClosest(this.el.nativeElement, 'div.content');
|
|
28
|
+
this.el.nativeElement.style.height = Math.round(this.contentEl.offsetHeight / 2) + "px";
|
|
29
|
+
if (this.wuiTitle !== undefined) {
|
|
30
|
+
this.contentEl.addEventListener('scroll', (e) => {
|
|
31
|
+
this.onScroll(e);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
36
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageHeaderDirective, isStandalone: true, selector: "[wuiPageHeader]", inputs: { wuiTitle: "wuiTitle" }, ngImport: i0 });
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderDirective, decorators: [{
|
|
39
|
+
type: Directive,
|
|
40
|
+
args: [{
|
|
41
|
+
selector: '[wuiPageHeader]',
|
|
42
|
+
standalone: true
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { wuiTitle: [{
|
|
45
|
+
type: Input,
|
|
46
|
+
args: ['wuiTitle']
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3VpLXNpbmdsZS9zcmMvbGliL2RpcmVjdGl2ZXMvcGFnZS1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQU03RCxNQUFNLE9BQU8sbUJBQW1CO0lBTXBCO0lBSlYsU0FBUyxDQUFNO0lBQ0ksUUFBUSxDQUFNO0lBRWpDLFlBQ1UsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFDcEIsQ0FBQztJQUVMLFVBQVUsQ0FBQyxJQUFTLEVBQUUsUUFBYTtRQUNqQyxPQUFRLElBQUksSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFHLENBQUM7WUFDM0QsSUFBSyxJQUFJLENBQUMsT0FBTyxDQUFFLFFBQVEsQ0FBRTtnQkFBRyxPQUFPLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUEsQ0FBQztJQUVGLFFBQVEsQ0FBQyxDQUFNO1FBQ2IsSUFBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFJLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEYsSUFBRyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0FoQ1UsbUJBQW1COzRGQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQUlvQixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3dWlQYWdlSGVhZGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUhlYWRlckRpcmVjdGl2ZSB7XG5cbiAgY29udGVudEVsOiBhbnk7XG4gIEBJbnB1dCgnd3VpVGl0bGUnKSB3dWlUaXRsZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICBnZXRDbG9zZXN0KGVsZW06IGFueSwgc2VsZWN0b3I6IGFueSkge1xuICAgIGZvciAoIDsgZWxlbSAmJiBlbGVtICE9PSBkb2N1bWVudDsgZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSApIHtcbiAgICAgIGlmICggZWxlbS5tYXRjaGVzKCBzZWxlY3RvciApICkgcmV0dXJuIGVsZW07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIG9uU2Nyb2xsKGU6IGFueSkge1xuICAgIGlmKGUudGFyZ2V0LnNjcm9sbFRvcCA+IE1hdGgucm91bmQoKGUudGFyZ2V0Lm9mZnNldEhlaWdodCAvIDIpIC8gMikpIHtcbiAgICAgIHRoaXMud3VpVGl0bGUuY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy53dWlUaXRsZS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250ZW50RWwgPSB0aGlzLmdldENsb3Nlc3QodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGl2LmNvbnRlbnQnKTtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gTWF0aC5yb3VuZCh0aGlzLmNvbnRlbnRFbC5vZmZzZXRIZWlnaHQgLyAyKSArIFwicHhcIjtcbiAgICBpZih0aGlzLnd1aVRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29udGVudEVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vblNjcm9sbChlKTtcbiAgICAgIH0pOyBcbiAgICB9XG4gIH1cblxufSJdfQ==
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class RippleDirective {
|
|
4
|
+
el;
|
|
5
|
+
rippleEl;
|
|
6
|
+
interval;
|
|
7
|
+
theme = 'light';
|
|
8
|
+
constructor(el) {
|
|
9
|
+
this.el = el;
|
|
10
|
+
}
|
|
11
|
+
onMouseDown(e) {
|
|
12
|
+
this.start(e.clientX, e.clientY);
|
|
13
|
+
}
|
|
14
|
+
onTouchStart(e) {
|
|
15
|
+
this.start(e.touches[0].clientX, e.touches[0].clientY);
|
|
16
|
+
}
|
|
17
|
+
start(x, y) {
|
|
18
|
+
if (!this.rippleEl) {
|
|
19
|
+
this.rippleEl = document.createElement('div');
|
|
20
|
+
this.rippleEl.classList.add('wuiRipple__obj');
|
|
21
|
+
this.rippleEl.classList.add('wuiRipple__' + this.theme);
|
|
22
|
+
this.el.nativeElement.appendChild(this.rippleEl);
|
|
23
|
+
}
|
|
24
|
+
this.rippleEl.style.cssText = "";
|
|
25
|
+
if (this.interval) {
|
|
26
|
+
clearInterval(this.interval);
|
|
27
|
+
}
|
|
28
|
+
var elRect = this.el.nativeElement.getBoundingClientRect();
|
|
29
|
+
let top = (y - elRect.y);
|
|
30
|
+
let left = (x - elRect.x);
|
|
31
|
+
this.rippleEl.style.top = top + 'px';
|
|
32
|
+
this.rippleEl.style.left = left + 'px';
|
|
33
|
+
let matrix = (this.el.nativeElement.offsetWidth > this.el.nativeElement.offsetHeight ? 'width' : 'height');
|
|
34
|
+
let size = 0;
|
|
35
|
+
let durMatrix = 0;
|
|
36
|
+
if (matrix == 'width') {
|
|
37
|
+
size = ((this.el.nativeElement.offsetWidth - left) > left ? ((this.el.nativeElement.offsetWidth - left) * 2) :
|
|
38
|
+
(left * 2));
|
|
39
|
+
durMatrix = document.body.clientWidth;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
size = ((this.el.nativeElement.offsetHeight - top) > top ? ((this.el.nativeElement.offsetHeight - top) * 2) :
|
|
43
|
+
(top * 2));
|
|
44
|
+
durMatrix = document.body.clientHeight;
|
|
45
|
+
}
|
|
46
|
+
this.animate(size, 200 + (200 * (size / durMatrix)));
|
|
47
|
+
}
|
|
48
|
+
animate(size, duration) {
|
|
49
|
+
let pos = 0;
|
|
50
|
+
this.interval = setInterval(() => {
|
|
51
|
+
let vsize = this.rippleEl.offsetHeight + (size / (duration / 10));
|
|
52
|
+
this.rippleEl.style.width = vsize + 'px';
|
|
53
|
+
this.rippleEl.style.height = vsize + 'px';
|
|
54
|
+
this.rippleEl.style.opacity = ((duration - pos) / duration);
|
|
55
|
+
if (pos < duration) {
|
|
56
|
+
pos += 10;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.rippleEl.style.cssText = "";
|
|
60
|
+
clearInterval(this.interval);
|
|
61
|
+
}
|
|
62
|
+
}, 10);
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
this.el.nativeElement.style.position = 'relative';
|
|
66
|
+
this.el.nativeElement.style.overflow = 'hidden';
|
|
67
|
+
}
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RippleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RippleDirective, isStandalone: true, selector: "[wuiRipple]", inputs: { theme: ["rippleTheme", "theme"] }, host: { listeners: { "mousedown": "onMouseDown($event)", "touchstart": "onTouchStart($event)" } }, ngImport: i0 });
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RippleDirective, decorators: [{
|
|
72
|
+
type: Directive,
|
|
73
|
+
args: [{
|
|
74
|
+
selector: '[wuiRipple]',
|
|
75
|
+
standalone: true
|
|
76
|
+
}]
|
|
77
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { theme: [{
|
|
78
|
+
type: Input,
|
|
79
|
+
args: ['rippleTheme']
|
|
80
|
+
}], onMouseDown: [{
|
|
81
|
+
type: HostListener,
|
|
82
|
+
args: ['mousedown', ['$event']]
|
|
83
|
+
}], onTouchStart: [{
|
|
84
|
+
type: HostListener,
|
|
85
|
+
args: ['touchstart', ['$event']]
|
|
86
|
+
}] } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNbkYsTUFBTSxPQUFPLGVBQWU7SUFPaEI7SUFMVixRQUFRLENBQU07SUFDZCxRQUFRLENBQU07SUFDUSxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBRXRDLFlBQ1UsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFDcEIsQ0FBQztJQUVrQyxXQUFXLENBQUMsQ0FBTTtRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFdUMsWUFBWSxDQUFDLENBQU07UUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDeEIsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzNELElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNHLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFHLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2IsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBUyxFQUFFLFFBQWE7UUFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDNUQsSUFBRyxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDakMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNsRCxDQUFDO3dHQXBFVSxlQUFlOzRGQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrRUFLdUIsS0FBSztzQkFBMUIsS0FBSzt1QkFBQyxhQUFhO2dCQU1tQixXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t3dWlSaXBwbGVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaXBwbGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICByaXBwbGVFbDogYW55O1xyXG4gIGludGVydmFsOiBhbnk7XHJcbiAgQElucHV0KCdyaXBwbGVUaGVtZScpIHRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgb25Nb3VzZURvd24oZTogYW55KSB7XHJcbiAgICB0aGlzLnN0YXJ0KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKSBvblRvdWNoU3RhcnQoZTogYW55KSB7XHJcbiAgICB0aGlzLnN0YXJ0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XHJcbiAgfVxyXG5cclxuICBzdGFydCh4OiBudW1iZXIsIHk6IG51bWJlcikge1xyXG4gICAgaWYoIXRoaXMucmlwcGxlRWwpIHtcclxuICAgICAgdGhpcy5yaXBwbGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB0aGlzLnJpcHBsZUVsLmNsYXNzTGlzdC5hZGQoJ3d1aVJpcHBsZV9fb2JqJyk7XHJcbiAgICAgIHRoaXMucmlwcGxlRWwuY2xhc3NMaXN0LmFkZCgnd3VpUmlwcGxlX18nICsgdGhpcy50aGVtZSk7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJpcHBsZUVsKTtcclxuICAgIH1cclxuICAgIHRoaXMucmlwcGxlRWwuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XHJcbiAgICBpZih0aGlzLmludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICB9XHJcbiAgICB2YXIgZWxSZWN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgbGV0IHRvcCA9ICh5IC0gZWxSZWN0LnkpO1xyXG4gICAgbGV0IGxlZnQgPSAoeCAtIGVsUmVjdC54KTtcclxuICAgIHRoaXMucmlwcGxlRWwuc3R5bGUudG9wID0gdG9wICsgJ3B4JztcclxuICAgIHRoaXMucmlwcGxlRWwuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xyXG4gICAgbGV0IG1hdHJpeCA9ICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8gJ3dpZHRoJyA6ICdoZWlnaHQnKTtcclxuICAgIGxldCBzaXplID0gMDtcclxuICAgIGxldCBkdXJNYXRyaXggPSAwO1xyXG4gICAgaWYobWF0cml4ID09ICd3aWR0aCcpIHtcclxuICAgICAgc2l6ZSA9ICgodGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gbGVmdCkgPiBsZWZ0ID8gKCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBsZWZ0KSAqIDIpIDogXHJcbiAgICAgICAgKGxlZnQgKiAyKSk7XHJcbiAgICAgIGR1ck1hdHJpeCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzaXplID0gKCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gdG9wKSA+IHRvcCA/ICgodGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIHRvcCkgKiAyKSA6IFxyXG4gICAgICAgICh0b3AgKiAyKSk7XHJcbiAgICAgIGR1ck1hdHJpeCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5hbmltYXRlKHNpemUsIDIwMCArICgyMDAgKiAoc2l6ZSAvIGR1ck1hdHJpeCkpKTtcclxuICB9XHJcblxyXG4gIGFuaW1hdGUoc2l6ZTogYW55LCBkdXJhdGlvbjogYW55KSB7XHJcbiAgICBsZXQgcG9zID0gMDtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGxldCB2c2l6ZSA9IHRoaXMucmlwcGxlRWwub2Zmc2V0SGVpZ2h0ICsgKHNpemUgLyAoZHVyYXRpb24gLyAxMCkpO1xyXG4gICAgICB0aGlzLnJpcHBsZUVsLnN0eWxlLndpZHRoID0gdnNpemUgKyAncHgnO1xyXG4gICAgICB0aGlzLnJpcHBsZUVsLnN0eWxlLmhlaWdodCA9IHZzaXplICsgJ3B4JztcclxuICAgICAgdGhpcy5yaXBwbGVFbC5zdHlsZS5vcGFjaXR5ID0gKChkdXJhdGlvbiAtIHBvcykgLyBkdXJhdGlvbik7XHJcbiAgICAgIGlmKHBvcyA8IGR1cmF0aW9uKSB7XHJcbiAgICAgICAgcG9zICs9IDEwO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnJpcHBsZUVsLnN0eWxlLmNzc1RleHQgPSBcIlwiO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcclxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|