@indice/ng-components 0.2.32 → 0.2.33
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 +4 -4
- package/_styles.css +3457 -3457
- package/bundles/indice-ng-components.umd.js +3204 -3198
- package/bundles/indice-ng-components.umd.js.map +1 -1
- package/esm2015/indice-ng-components.js +6 -6
- package/esm2015/lib/controls/avatar-initials/avatar-initials.component.js +47 -47
- package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +20 -20
- package/esm2015/lib/controls/date-picker/date-picker.component.js +217 -217
- package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +62 -62
- package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +32 -32
- package/esm2015/lib/controls/list-view/list-column.component.js +19 -19
- package/esm2015/lib/controls/list-view/list-details-section.component.js +14 -14
- package/esm2015/lib/controls/list-view/list-tile.component.js +14 -14
- package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +25 -25
- package/esm2015/lib/controls/list-view/list-view.component.js +133 -133
- package/esm2015/lib/controls/pager/pager.component.js +114 -114
- package/esm2015/lib/controls/side-pane/side-pane.component.js +71 -71
- package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +25 -25
- package/esm2015/lib/controls/toaster/toaster-container.component.js +28 -28
- package/esm2015/lib/controls/toaster/toaster.component.js +29 -29
- package/esm2015/lib/controls/toggle/toggle.component.js +56 -56
- package/esm2015/lib/directives/click-outside.directive.js +181 -181
- package/esm2015/lib/directives/dynamic-component-host.directive.js +17 -17
- package/esm2015/lib/helpers/base-list.component.js +182 -182
- package/esm2015/lib/icons.js +30 -30
- package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +17 -17
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +98 -98
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +92 -92
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +72 -72
- package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +47 -47
- package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +73 -73
- package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +87 -87
- package/esm2015/lib/ng-components.module.js +133 -133
- package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +74 -74
- package/esm2015/lib/pages/auth/auth-renew/auth-renew.component.js +25 -25
- package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +26 -26
- package/esm2015/lib/pages/http-status/error/error.component.js +15 -15
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +14 -14
- package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +22 -22
- package/esm2015/lib/pipes/address.pipe.js +17 -17
- package/esm2015/lib/pipes/duration-format.pipe.js +60 -60
- package/esm2015/lib/services/component-loader/component-loader-options.class.js +8 -8
- package/esm2015/lib/services/component-loader/component-loader.class.js +192 -192
- package/esm2015/lib/services/component-loader/component-loader.factory.js +35 -35
- package/esm2015/lib/services/component-loader/content-ref.class.js +13 -13
- package/esm2015/lib/services/modal-service/modal-backdrop-component.js +44 -44
- package/esm2015/lib/services/modal-service/modal-container-component.js +117 -117
- package/esm2015/lib/services/modal-service/modal-options.class.js +31 -31
- package/esm2015/lib/services/modal-service/modal-service.js +214 -214
- package/esm2015/lib/services/modal-service/modal-styles.class.js +11 -11
- package/esm2015/lib/services/modal-service/modal.class.js +24 -24
- package/esm2015/lib/services/toaster.service.js +23 -23
- package/esm2015/lib/tokens.js +4 -4
- package/esm2015/lib/types.js +104 -104
- package/esm2015/public-api.js +53 -53
- package/fesm2015/indice-ng-components.js +2758 -2758
- package/fesm2015/indice-ng-components.js.map +1 -1
- package/indice-ng-components.d.ts +6 -6
- package/indice-ng-components.metadata.json +1 -1
- package/lib/controls/avatar-initials/avatar-initials.component.d.ts +11 -11
- package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +7 -7
- package/lib/controls/date-picker/date-picker.component.d.ts +43 -43
- package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +22 -22
- package/lib/controls/kpi-tile/kpi-tile.component.d.ts +10 -10
- package/lib/controls/list-view/list-column.component.d.ts +6 -6
- package/lib/controls/list-view/list-details-section.component.d.ts +4 -4
- package/lib/controls/list-view/list-tile.component.d.ts +4 -4
- package/lib/controls/list-view/list-view-empty-state.component.d.ts +8 -8
- package/lib/controls/list-view/list-view.component.d.ts +50 -50
- package/lib/controls/pager/pager.component.d.ts +32 -32
- package/lib/controls/side-pane/side-pane.component.d.ts +15 -15
- package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +8 -8
- package/lib/controls/toaster/toaster-container.component.d.ts +10 -10
- package/lib/controls/toaster/toaster.component.d.ts +12 -12
- package/lib/controls/toggle/toggle.component.d.ts +16 -16
- package/lib/directives/click-outside.directive.d.ts +37 -37
- package/lib/directives/dynamic-component-host.directive.d.ts +6 -6
- package/lib/helpers/base-list.component.d.ts +39 -39
- package/lib/icons.d.ts +28 -28
- package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +5 -5
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +33 -33
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +23 -23
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +21 -21
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +22 -22
- package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +24 -24
- package/lib/layouts/views/view-layout/view-layout.component.d.ts +27 -27
- package/lib/ng-components.module.d.ts +7 -7
- package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +11 -11
- package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +9 -9
- package/lib/pages/auth/logged-out/logged-out.component.d.ts +9 -9
- package/lib/pages/http-status/error/error.component.d.ts +5 -5
- package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +5 -5
- package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +8 -8
- package/lib/pipes/address.pipe.d.ts +5 -5
- package/lib/pipes/duration-format.pipe.d.ts +5 -5
- package/lib/services/component-loader/component-loader-options.class.d.ts +30 -30
- package/lib/services/component-loader/component-loader.class.d.ts +92 -92
- package/lib/services/component-loader/component-loader.factory.d.ts +21 -21
- package/lib/services/component-loader/content-ref.class.d.ts +12 -12
- package/lib/services/modal-service/modal-backdrop-component.d.ts +17 -17
- package/lib/services/modal-service/modal-container-component.d.ts +30 -30
- package/lib/services/modal-service/modal-options.class.d.ts +77 -77
- package/lib/services/modal-service/modal-service.d.ts +55 -55
- package/lib/services/modal-service/modal-styles.class.d.ts +10 -10
- package/lib/services/modal-service/modal.class.d.ts +40 -40
- package/lib/services/toaster.service.d.ts +8 -8
- package/lib/tokens.d.ts +4 -4
- package/lib/types.d.ts +124 -124
- package/modal.css +157 -157
- package/package.json +1 -1
- package/public-api.d.ts +41 -41
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { fromEvent } from 'rxjs';
|
|
4
|
-
import { map, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
-
export class FormLayoutComponent {
|
|
6
|
-
constructor(router$) {
|
|
7
|
-
this.router$ = router$;
|
|
8
|
-
this.title = null;
|
|
9
|
-
// tslint:disable-next-line:no-input-rename
|
|
10
|
-
this.searchPlaceholder = 'αναζήτηση';
|
|
11
|
-
this.actions = null;
|
|
12
|
-
// tslint:disable-next-line:no-input-rename
|
|
13
|
-
this.subTitle = null;
|
|
14
|
-
// tslint:disable-next-line:no-output-on-prefix
|
|
15
|
-
this.onAction = new EventEmitter();
|
|
16
|
-
// tslint:disable-next-line:no-output-on-prefix
|
|
17
|
-
this.onSearch = new EventEmitter();
|
|
18
|
-
this.onComplete = new EventEmitter();
|
|
19
|
-
}
|
|
20
|
-
ngOnInit() {
|
|
21
|
-
}
|
|
22
|
-
onSidePaneDeactivated($event) {
|
|
23
|
-
this.onComplete.emit(true);
|
|
24
|
-
}
|
|
25
|
-
emitActionClick(action) {
|
|
26
|
-
this.onAction.emit(action);
|
|
27
|
-
}
|
|
28
|
-
searchActionClick(action, text) {
|
|
29
|
-
this.onSearch.emit(text);
|
|
30
|
-
}
|
|
31
|
-
searchActionType(text) {
|
|
32
|
-
var _a;
|
|
33
|
-
fromEvent((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement, 'keyup').pipe(map((event) => {
|
|
34
|
-
return event.target.value; // Get input value.
|
|
35
|
-
}), filter(inputValue => inputValue.length >= 3 || inputValue.length === 0),
|
|
36
|
-
// If character length greater than minimumSearchCharacters setting.
|
|
37
|
-
debounceTime(1000), // Time in milliseconds between key events.
|
|
38
|
-
distinctUntilChanged() // If previous query is different from current.
|
|
39
|
-
).subscribe(_ => {
|
|
40
|
-
var _a;
|
|
41
|
-
this.onSearch.emit((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement.value);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
routerLinkActionClick(action, relative = false) {
|
|
45
|
-
if (action.outlet) {
|
|
46
|
-
this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.router$.navigate([action.link]);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
FormLayoutComponent.decorators = [
|
|
54
|
-
{ type: Component, args: [{
|
|
55
|
-
selector: 'lib-form-layout',
|
|
56
|
-
template: "<div class=\"form-layout-container\">\n <div class=\"form-header\">\n <div class=\"form-header-inner\">\n <h3 class=\"form-title\">\n {{ title }}\n </h3>\n <p class=\"form-subtitle\">\n {{ subTitle }}\n </p>\n </div>\n <div class=\"form-header-actions\">\n <ng-container *ngFor=\"let action of actions\"\n [ngSwitch]=\"action.type\">\n <ng-container *ngSwitchCase=\"'search'\">\n <label for=\"search\"\n class=\"sr-only\">Search</label>\n <div class=\"search-container\">\n <div class=\"pointer-events-none absolute inset-y-0 left-0 pl-3 flex items-center\">\n <!--<svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\" clip-rule=\"evenodd\" />\n </svg>-->\n </div>\n <input id=\"search\"\n #search\n class=\"form-search-input\"\n [placeholder]=\"searchPlaceholder\"\n type=\"search\"\n name=\"search\"\n (input)=\"searchActionType(search.value)\">\n </div>\n <button type=\"button\"\n href=\"#\"\n class=\"btn-form-view-header-search\"\n [title]=\"action.tooltip\"\n (click)=\"searchActionClick(action, search.value)\">\n <i [class]=\"action.icon\"></i>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'router-link'\">\n <button type=\"button\"\n href=\"#\"\n class=\"ml-1 btn-form-view-header\"\n [title]=\"action.tooltip\"\n (click)=\"routerLinkActionClick(action)\">\n <i [class]=\"action.icon\"></i>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button type=\"button\"\n class=\"ml-1 btn-form-view-header\"\n [title]=\"action.tooltip\"\n (click)=\"emitActionClick(action)\">\n <i [class]=\"action.icon\"></i>\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"form-content-container\">\n <div class=\"form-content-container-inner\">\n <ng-content></ng-content>\n </div>\n </div>\n <lib-side-pane #formPane (onComplete)=\"onSidePaneDeactivated($event)\">\n <router-outlet name=\"formRightPane\"\n (activate)=\"formPane.onSidePaneActivated($event)\"\n (deactivate)=\"formPane.onSidePaneDeactivated($event)\"></router-outlet>\n </lib-side-pane>\n</div>\n"
|
|
57
|
-
},] }
|
|
58
|
-
];
|
|
59
|
-
FormLayoutComponent.ctorParameters = () => [
|
|
60
|
-
{ type: Router }
|
|
61
|
-
];
|
|
62
|
-
FormLayoutComponent.propDecorators = {
|
|
63
|
-
searchInput$: [{ type: ViewChild, args: ['search',] }],
|
|
64
|
-
title: [{ type: Input }],
|
|
65
|
-
searchPlaceholder: [{ type: Input, args: ['search-placeholder',] }],
|
|
66
|
-
actions: [{ type: Input }],
|
|
67
|
-
subTitle: [{ type: Input, args: ['sub-title',] }],
|
|
68
|
-
onAction: [{ type: Output }],
|
|
69
|
-
onSearch: [{ type: Output }],
|
|
70
|
-
onComplete: [{ type: Output }]
|
|
71
|
-
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { fromEvent } from 'rxjs';
|
|
4
|
+
import { map, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
+
export class FormLayoutComponent {
|
|
6
|
+
constructor(router$) {
|
|
7
|
+
this.router$ = router$;
|
|
8
|
+
this.title = null;
|
|
9
|
+
// tslint:disable-next-line:no-input-rename
|
|
10
|
+
this.searchPlaceholder = 'αναζήτηση';
|
|
11
|
+
this.actions = null;
|
|
12
|
+
// tslint:disable-next-line:no-input-rename
|
|
13
|
+
this.subTitle = null;
|
|
14
|
+
// tslint:disable-next-line:no-output-on-prefix
|
|
15
|
+
this.onAction = new EventEmitter();
|
|
16
|
+
// tslint:disable-next-line:no-output-on-prefix
|
|
17
|
+
this.onSearch = new EventEmitter();
|
|
18
|
+
this.onComplete = new EventEmitter();
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
}
|
|
22
|
+
onSidePaneDeactivated($event) {
|
|
23
|
+
this.onComplete.emit(true);
|
|
24
|
+
}
|
|
25
|
+
emitActionClick(action) {
|
|
26
|
+
this.onAction.emit(action);
|
|
27
|
+
}
|
|
28
|
+
searchActionClick(action, text) {
|
|
29
|
+
this.onSearch.emit(text);
|
|
30
|
+
}
|
|
31
|
+
searchActionType(text) {
|
|
32
|
+
var _a;
|
|
33
|
+
fromEvent((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement, 'keyup').pipe(map((event) => {
|
|
34
|
+
return event.target.value; // Get input value.
|
|
35
|
+
}), filter(inputValue => inputValue.length >= 3 || inputValue.length === 0),
|
|
36
|
+
// If character length greater than minimumSearchCharacters setting.
|
|
37
|
+
debounceTime(1000), // Time in milliseconds between key events.
|
|
38
|
+
distinctUntilChanged() // If previous query is different from current.
|
|
39
|
+
).subscribe(_ => {
|
|
40
|
+
var _a;
|
|
41
|
+
this.onSearch.emit((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement.value);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
routerLinkActionClick(action, relative = false) {
|
|
45
|
+
if (action.outlet) {
|
|
46
|
+
this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.router$.navigate([action.link]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
FormLayoutComponent.decorators = [
|
|
54
|
+
{ type: Component, args: [{
|
|
55
|
+
selector: 'lib-form-layout',
|
|
56
|
+
template: "<div class=\"form-layout-container\">\r\n <div class=\"form-header\">\r\n <div class=\"form-header-inner\">\r\n <h3 class=\"form-title\">\r\n {{ title }}\r\n </h3>\r\n <p class=\"form-subtitle\">\r\n {{ subTitle }}\r\n </p>\r\n </div>\r\n <div class=\"form-header-actions\">\r\n <ng-container *ngFor=\"let action of actions\"\r\n [ngSwitch]=\"action.type\">\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <label for=\"search\"\r\n class=\"sr-only\">Search</label>\r\n <div class=\"search-container\">\r\n <div class=\"pointer-events-none absolute inset-y-0 left-0 pl-3 flex items-center\">\r\n <!--<svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\" clip-rule=\"evenodd\" />\r\n </svg>-->\r\n </div>\r\n <input id=\"search\"\r\n #search\r\n class=\"form-search-input\"\r\n [placeholder]=\"searchPlaceholder\"\r\n type=\"search\"\r\n name=\"search\"\r\n (input)=\"searchActionType(search.value)\">\r\n </div>\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"btn-form-view-header-search\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"searchActionClick(action, search.value)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'router-link'\">\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"routerLinkActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button type=\"button\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"emitActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"form-content-container\">\r\n <div class=\"form-content-container-inner\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <lib-side-pane #formPane (onComplete)=\"onSidePaneDeactivated($event)\">\r\n <router-outlet name=\"formRightPane\"\r\n (activate)=\"formPane.onSidePaneActivated($event)\"\r\n (deactivate)=\"formPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n</div>\r\n"
|
|
57
|
+
},] }
|
|
58
|
+
];
|
|
59
|
+
FormLayoutComponent.ctorParameters = () => [
|
|
60
|
+
{ type: Router }
|
|
61
|
+
];
|
|
62
|
+
FormLayoutComponent.propDecorators = {
|
|
63
|
+
searchInput$: [{ type: ViewChild, args: ['search',] }],
|
|
64
|
+
title: [{ type: Input }],
|
|
65
|
+
searchPlaceholder: [{ type: Input, args: ['search-placeholder',] }],
|
|
66
|
+
actions: [{ type: Input }],
|
|
67
|
+
subTitle: [{ type: Input, args: ['sub-title',] }],
|
|
68
|
+
onAction: [{ type: Output }],
|
|
69
|
+
onSearch: [{ type: Output }],
|
|
70
|
+
onComplete: [{ type: Output }]
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvdmlld3MvZm9ybS1sYXlvdXQvZm9ybS1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2pGLE1BQU0sT0FBTyxtQkFBbUI7SUFlOUIsWUFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFaMUIsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFDckMsMkNBQTJDO1FBQ2Qsc0JBQWlCLEdBQWtCLFdBQVcsQ0FBQTtRQUNsRSxZQUFPLEdBQXdCLElBQUksQ0FBQztRQUM3QywyQ0FBMkM7UUFDdkIsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDbkQsK0NBQStDO1FBQ3JDLGFBQVEsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUM5RSwrQ0FBK0M7UUFDckMsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVELGVBQVUsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVuQyxDQUFDO0lBRXhDLFFBQVE7SUFDUixDQUFDO0lBRU0scUJBQXFCLENBQUMsTUFBVztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQWtCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFrQixFQUFFLElBQVk7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVk7O1FBQzNCLFNBQVMsQ0FBQyxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUI7UUFDaEQsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDdkUsb0VBQW9FO1FBQ3BFLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSwyQ0FBMkM7UUFDL0Qsb0JBQW9CLEVBQUUsQ0FBQywrQ0FBK0M7U0FDdkUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7O1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0scUJBQXFCLENBQUMsTUFBOEIsRUFBRSxXQUFvQixLQUFLO1FBQ3BGLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDMUU7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUF4REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLCtnR0FBMkM7YUFDNUM7OztZQVJRLE1BQU07OzsyQkFXWixTQUFTLFNBQUMsUUFBUTtvQkFDbEIsS0FBSztnQ0FFTCxLQUFLLFNBQUMsb0JBQW9CO3NCQUMxQixLQUFLO3VCQUVMLEtBQUssU0FBQyxXQUFXO3VCQUVqQixNQUFNO3VCQUVOLE1BQU07eUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBmaWx0ZXIsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJvdXRlclZpZXdBY3Rpb24sIFZpZXdBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWxheW91dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tbGF5b3V0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaCcpIHByaXZhdGUgc2VhcmNoSW5wdXQkPzogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnc2VhcmNoLXBsYWNlaG9sZGVyJykgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyB8IG51bGwgPSAnzrHOvc6xzrbOrs+EzrfPg863J1xyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IFZpZXdBY3Rpb25bXSB8IG51bGwgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3N1Yi10aXRsZScpIHN1YlRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tb3V0cHV0LW9uLXByZWZpeFxyXG4gIEBPdXRwdXQoKSBvbkFjdGlvbjogRXZlbnRFbWl0dGVyPFZpZXdBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxWaWV3QWN0aW9uPigpO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtb24tcHJlZml4XHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyJDogUm91dGVyKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TaWRlUGFuZURlYWN0aXZhdGVkKCRldmVudDogYW55KTogdm9pZCAge1xyXG4gICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdEFjdGlvbkNsaWNrKGFjdGlvbjogVmlld0FjdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vbkFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hBY3Rpb25DbGljayhhY3Rpb246IFZpZXdBY3Rpb24sIHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vblNlYXJjaC5lbWl0KHRleHQpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQWN0aW9uVHlwZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGZyb21FdmVudCh0aGlzLnNlYXJjaElucHV0JD8ubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcclxuICAgICAgbWFwKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50LnRhcmdldC52YWx1ZTsgLy8gR2V0IGlucHV0IHZhbHVlLlxyXG4gICAgICB9KSxcclxuICAgICAgZmlsdGVyKGlucHV0VmFsdWUgPT4gaW5wdXRWYWx1ZS5sZW5ndGggPj0gMyB8fCBpbnB1dFZhbHVlLmxlbmd0aCA9PT0gMCksXHJcbiAgICAgIC8vIElmIGNoYXJhY3RlciBsZW5ndGggZ3JlYXRlciB0aGFuIG1pbmltdW1TZWFyY2hDaGFyYWN0ZXJzIHNldHRpbmcuXHJcbiAgICAgIGRlYm91bmNlVGltZSgxMDAwKSwgLy8gVGltZSBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiBrZXkgZXZlbnRzLlxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpIC8vIElmIHByZXZpb3VzIHF1ZXJ5IGlzIGRpZmZlcmVudCBmcm9tIGN1cnJlbnQuXHJcbiAgICApLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KHRoaXMuc2VhcmNoSW5wdXQkPy5uYXRpdmVFbGVtZW50LnZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJvdXRlckxpbmtBY3Rpb25DbGljayhhY3Rpb246IFJvdXRlclZpZXdBY3Rpb24gfCBhbnksIHJlbGF0aXZlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmIChhY3Rpb24ub3V0bGV0KSB7XHJcbiAgICAgIHRoaXMucm91dGVyJC5uYXZpZ2F0ZShbJycsIHsgb3V0bGV0czogeyBmb3JtUmlnaHRQYW5lOiBhY3Rpb24ubGluayB9IH1dKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyJC5uYXZpZ2F0ZShbYWN0aW9uLmxpbmtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { Location } from '@angular/common';
|
|
3
|
-
export class ModelViewLayoutComponent {
|
|
4
|
-
constructor(location) {
|
|
5
|
-
this.location = location;
|
|
6
|
-
this.showRightPaneSM = false;
|
|
7
|
-
this.title = 'no title';
|
|
8
|
-
// tslint:disable-next-line:no-input-rename
|
|
9
|
-
this.primary = null;
|
|
10
|
-
// tslint:disable-next-line:no-input-rename
|
|
11
|
-
this.secondary = null;
|
|
12
|
-
// tslint:disable-next-line:no-input-rename
|
|
13
|
-
this.metaItems = [
|
|
14
|
-
// { key: 'test', icon: Icons.Badges, text: 'βρέθηκαν 200 αποτελέσματα' }
|
|
15
|
-
];
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
}
|
|
19
|
-
onSidePaneActivated($event) {
|
|
20
|
-
//console.log('onSidePaneActivated', $event);
|
|
21
|
-
this.showRightPaneSM = true;
|
|
22
|
-
}
|
|
23
|
-
onSidePaneDeactivated($event) {
|
|
24
|
-
//console.log('onSidePaneActivated', $event);
|
|
25
|
-
this.showRightPaneSM = false;
|
|
26
|
-
}
|
|
27
|
-
closeSidePane() {
|
|
28
|
-
this.location.back();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
ModelViewLayoutComponent.decorators = [
|
|
32
|
-
{ type: Component, args: [{
|
|
33
|
-
// tslint:disable-next-line:component-selector
|
|
34
|
-
selector: 'lib-model-view-layout',
|
|
35
|
-
template: "<lib-view-layout [title]=\"title\" [meta-items]=\"metaItems\">\n <main class=\"model-view-container\">\n <div class=\"model-view-container-inner\">\n <aside class=\"model-view-aside\">\n <section aria-labelledby=\"menu\" class=\"details-view-aside-header-section\">\n <div class=\"model-view-aside-header-container\">\n <div class=\"model-view-aside-header-container-inner\">\n <ng-content></ng-content>\n </div>\n <!-- menu items -->\n <div class=\"model-view-menu-container\">\n <nav class=\"model-view-menu-nav\">\n <div class=\"model-view-menu-item\">\n <ng-container *ngFor=\"let section of primary\">\n <a href=\"#\"\n [routerLinkActive]=\"['view-nav-link-active']\"\n [routerLink]=\"section.link\"\n class=\"view-nav-link\">\n {{section.text}}\n </a>\n </ng-container>\n </div>\n <div class=\"model-view-menu-item-far\">\n <ng-container *ngFor=\"let section of secondary\">\n <a href=\"#\"\n [routerLinkActive]=\"['view-nav-link-active']\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [routerLink]=\"section.link\"\n class=\"view-nav-link\">\n {{section.text}}\n </a>\n </ng-container>\n </div>\n </nav>\n </div>\n </div>\n </section>\n </aside>\n <div class=\"model-view-details-container\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </main>\n"
|
|
36
|
-
},] }
|
|
37
|
-
];
|
|
38
|
-
ModelViewLayoutComponent.ctorParameters = () => [
|
|
39
|
-
{ type: Location }
|
|
40
|
-
];
|
|
41
|
-
ModelViewLayoutComponent.propDecorators = {
|
|
42
|
-
title: [{ type: Input }],
|
|
43
|
-
primary: [{ type: Input, args: ['primary-links',] }],
|
|
44
|
-
secondary: [{ type: Input, args: ['secondary-links',] }],
|
|
45
|
-
metaItems: [{ type: Input, args: ['meta-items',] }]
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Location } from '@angular/common';
|
|
3
|
+
export class ModelViewLayoutComponent {
|
|
4
|
+
constructor(location) {
|
|
5
|
+
this.location = location;
|
|
6
|
+
this.showRightPaneSM = false;
|
|
7
|
+
this.title = 'no title';
|
|
8
|
+
// tslint:disable-next-line:no-input-rename
|
|
9
|
+
this.primary = null;
|
|
10
|
+
// tslint:disable-next-line:no-input-rename
|
|
11
|
+
this.secondary = null;
|
|
12
|
+
// tslint:disable-next-line:no-input-rename
|
|
13
|
+
this.metaItems = [
|
|
14
|
+
// { key: 'test', icon: Icons.Badges, text: 'βρέθηκαν 200 αποτελέσματα' }
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
}
|
|
19
|
+
onSidePaneActivated($event) {
|
|
20
|
+
//console.log('onSidePaneActivated', $event);
|
|
21
|
+
this.showRightPaneSM = true;
|
|
22
|
+
}
|
|
23
|
+
onSidePaneDeactivated($event) {
|
|
24
|
+
//console.log('onSidePaneActivated', $event);
|
|
25
|
+
this.showRightPaneSM = false;
|
|
26
|
+
}
|
|
27
|
+
closeSidePane() {
|
|
28
|
+
this.location.back();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ModelViewLayoutComponent.decorators = [
|
|
32
|
+
{ type: Component, args: [{
|
|
33
|
+
// tslint:disable-next-line:component-selector
|
|
34
|
+
selector: 'lib-model-view-layout',
|
|
35
|
+
template: "<lib-view-layout [title]=\"title\" [meta-items]=\"metaItems\">\r\n <main class=\"model-view-container\">\r\n <div class=\"model-view-container-inner\">\r\n <aside class=\"model-view-aside\">\r\n <section aria-labelledby=\"menu\" class=\"details-view-aside-header-section\">\r\n <div class=\"model-view-aside-header-container\">\r\n <div class=\"model-view-aside-header-container-inner\">\r\n <ng-content></ng-content>\r\n </div>\r\n <!-- menu items -->\r\n <div class=\"model-view-menu-container\">\r\n <nav class=\"model-view-menu-nav\">\r\n <div class=\"model-view-menu-item\">\r\n <ng-container *ngFor=\"let section of primary\">\r\n <a href=\"#\"\r\n [routerLinkActive]=\"['view-nav-link-active']\"\r\n [routerLink]=\"section.link\"\r\n class=\"view-nav-link\">\r\n {{section.text}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n <div class=\"model-view-menu-item-far\">\r\n <ng-container *ngFor=\"let section of secondary\">\r\n <a href=\"#\"\r\n [routerLinkActive]=\"['view-nav-link-active']\"\r\n [routerLinkActiveOptions]=\"{ exact: true }\"\r\n [routerLink]=\"section.link\"\r\n class=\"view-nav-link\">\r\n {{section.text}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </nav>\r\n </div>\r\n </div>\r\n </section>\r\n </aside>\r\n <div class=\"model-view-details-container\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n </main>\r\n"
|
|
36
|
+
},] }
|
|
37
|
+
];
|
|
38
|
+
ModelViewLayoutComponent.ctorParameters = () => [
|
|
39
|
+
{ type: Location }
|
|
40
|
+
];
|
|
41
|
+
ModelViewLayoutComponent.propDecorators = {
|
|
42
|
+
title: [{ type: Input }],
|
|
43
|
+
primary: [{ type: Input, args: ['primary-links',] }],
|
|
44
|
+
secondary: [{ type: Input, args: ['secondary-links',] }],
|
|
45
|
+
metaItems: [{ type: Input, args: ['meta-items',] }]
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdmlldy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvdmlld3MvbW9kZWwtdmlldy1sYXlvdXQvbW9kZWwtdmlldy1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVEzQyxNQUFNLE9BQU8sd0JBQXdCO0lBV25DLFlBQXFCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFWaEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDdEIsVUFBSyxHQUFHLFVBQVUsQ0FBQztRQUM1QiwyQ0FBMkM7UUFDbkIsWUFBTyxHQUE0QyxJQUFJLENBQUM7UUFDaEYsMkNBQTJDO1FBQ2pCLGNBQVMsR0FBNEMsSUFBSSxDQUFDO1FBQ3BGLDJDQUEyQztRQUN0QixjQUFTLEdBQTRCO1FBQ3hELHlFQUF5RTtTQUMxRSxDQUFDO0lBQ3lDLENBQUM7SUFFNUMsUUFBUTtJQUNSLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxNQUFXO1FBQ3BDLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRU0scUJBQXFCLENBQUMsTUFBVztRQUN0Qyw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7WUFqQ0YsU0FBUyxTQUFDO2dCQUNULDhDQUE4QztnQkFDOUMsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsdTREQUFpRDthQUNsRDs7O1lBUFEsUUFBUTs7O29CQVVkLEtBQUs7c0JBRUwsS0FBSyxTQUFDLGVBQWU7d0JBRXJCLEtBQUssU0FBQyxpQkFBaUI7d0JBRXZCLEtBQUssU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSGVhZGVyTWV0YUl0ZW0gfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdsaWItbW9kZWwtdmlldy1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC12aWV3LWxheW91dC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGVsVmlld0xheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHNob3dSaWdodFBhbmVTTSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRpdGxlID0gJ25vIHRpdGxlJztcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdwcmltYXJ5LWxpbmtzJykgcHJpbWFyeTogeyB0ZXh0OiBzdHJpbmcsIGxpbms6IHN0cmluZyB9W10gfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzZWNvbmRhcnktbGlua3MnKSBzZWNvbmRhcnk6IHsgdGV4dDogc3RyaW5nLCBsaW5rOiBzdHJpbmcgfVtdIHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnbWV0YS1pdGVtcycpIG1ldGFJdGVtczogSGVhZGVyTWV0YUl0ZW1bXSB8IG51bGwgPSBbXHJcbiAgICAvLyB7IGtleTogJ3Rlc3QnLCBpY29uOiBJY29ucy5CYWRnZXMsIHRleHQ6ICfOss+Bzq3OuM63zrrOsc69IDIwMCDOsc+Azr/PhM61zrvOrc+DzrzOsc+EzrEnIH1cclxuICBdO1xyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2lkZVBhbmVBY3RpdmF0ZWQoJGV2ZW50OiBhbnkpOiB2b2lkICB7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdvblNpZGVQYW5lQWN0aXZhdGVkJywgJGV2ZW50KTtcclxuICAgIHRoaXMuc2hvd1JpZ2h0UGFuZVNNID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNpZGVQYW5lRGVhY3RpdmF0ZWQoJGV2ZW50OiBhbnkpOiB2b2lkICB7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdvblNpZGVQYW5lQWN0aXZhdGVkJywgJGV2ZW50KTtcclxuICAgIHRoaXMuc2hvd1JpZ2h0UGFuZVNNID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VTaWRlUGFuZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
import { Router } from '@angular/router';
|
|
2
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
-
import { Location } from '@angular/common';
|
|
4
|
-
export class SideViewLayoutComponent {
|
|
5
|
-
constructor(location, router) {
|
|
6
|
-
this.location = location;
|
|
7
|
-
this.router = router;
|
|
8
|
-
this.title = 'Πληροφορίες';
|
|
9
|
-
this.showActions = true;
|
|
10
|
-
this.disabled = false;
|
|
11
|
-
// tslint:disable-next-line:no-input-rename
|
|
12
|
-
this.okLabel = 'Αποθήκευση';
|
|
13
|
-
// tslint:disable-next-line:no-input-rename
|
|
14
|
-
this.okShow = true;
|
|
15
|
-
// tslint:disable-next-line:no-input-rename
|
|
16
|
-
this.closeOnOk = true;
|
|
17
|
-
// tslint:disable-next-line:no-input-rename
|
|
18
|
-
this.cancelLabel = 'Ακύρωση';
|
|
19
|
-
// tslint:disable-next-line:no-input-rename
|
|
20
|
-
this.cancelShow = true;
|
|
21
|
-
// @Output() close = new EventEmitter<any>();
|
|
22
|
-
this.cancel = new EventEmitter();
|
|
23
|
-
this.ok = new EventEmitter();
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
}
|
|
27
|
-
closeSidePane() {
|
|
28
|
-
if (this.returnPath) {
|
|
29
|
-
this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => this.router.navigateByUrl(this.returnPath || '/'));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.location.back();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
emitClose() {
|
|
36
|
-
this.cancel.emit(false);
|
|
37
|
-
this.closeSidePane();
|
|
38
|
-
}
|
|
39
|
-
emitCancel() {
|
|
40
|
-
this.cancel.emit(false);
|
|
41
|
-
this.closeSidePane();
|
|
42
|
-
}
|
|
43
|
-
emitOK() {
|
|
44
|
-
this.ok.emit(true);
|
|
45
|
-
if (this.closeOnOk) {
|
|
46
|
-
this.closeSidePane();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
SideViewLayoutComponent.decorators = [
|
|
51
|
-
{ type: Component, args: [{
|
|
52
|
-
selector: 'lib-side-view-layout',
|
|
53
|
-
template: "<div class=\"side-view-layout-size-box\">\n <div class=\"side-view-layout-container\">\n <div class=\"side-view-layout-container-inner\">\n <div class=\"side-view-layout-header-margins\">\n <div class=\"side-view-layout-header-container\">\n <h2 class=\"side-view-layout-header-title\" id=\"slide-over-title\">\n {{title}}\n </h2>\n <div class=\"side-view-layout-close-button-container\">\n <button (click)=\"emitClose()\" class=\"side-view-layout-close-button\">\n <span class=\"sr-only\">Close panel</span>\n <!-- Heroicon name: outline/x -->\n <svg class=\"side-view-layout-close-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n <div class=\"side-view-layout-content-container\">\n <!-- Replace with your content -->\n <ng-content></ng-content>\n <!-- /End replace -->\n </div>\n </div>\n <div *ngIf=\"showActions\" class=\"side-view-layout-actions-container\">\n <button *ngIf=\"cancelShow\" (click)=\"emitCancel()\" type=\"button\" class=\"side-view-layout-action-button\">\n {{cancelLabel}}\n </button>\n <button *ngIf=\"okShow\" (click)=\"emitOK()\" class=\"side-view-layout-action-button-default\" [disabled]=\"disabled\">\n {{okLabel}}\n </button>\n </div>\n </div>\n</div>\n\n"
|
|
54
|
-
},] }
|
|
55
|
-
];
|
|
56
|
-
SideViewLayoutComponent.ctorParameters = () => [
|
|
57
|
-
{ type: Location },
|
|
58
|
-
{ type: Router }
|
|
59
|
-
];
|
|
60
|
-
SideViewLayoutComponent.propDecorators = {
|
|
61
|
-
title: [{ type: Input }],
|
|
62
|
-
showActions: [{ type: Input }],
|
|
63
|
-
disabled: [{ type: Input }],
|
|
64
|
-
returnPath: [{ type: Input, args: ['return-path',] }],
|
|
65
|
-
okLabel: [{ type: Input, args: ['ok-label',] }],
|
|
66
|
-
okShow: [{ type: Input, args: ['ok-show',] }],
|
|
67
|
-
closeOnOk: [{ type: Input, args: ['ok-close-dialog',] }],
|
|
68
|
-
cancelLabel: [{ type: Input, args: ['cancel-label',] }],
|
|
69
|
-
cancelShow: [{ type: Input, args: ['cancel-show',] }],
|
|
70
|
-
cancel: [{ type: Output }],
|
|
71
|
-
ok: [{ type: Output }]
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
+
import { Location } from '@angular/common';
|
|
4
|
+
export class SideViewLayoutComponent {
|
|
5
|
+
constructor(location, router) {
|
|
6
|
+
this.location = location;
|
|
7
|
+
this.router = router;
|
|
8
|
+
this.title = 'Πληροφορίες';
|
|
9
|
+
this.showActions = true;
|
|
10
|
+
this.disabled = false;
|
|
11
|
+
// tslint:disable-next-line:no-input-rename
|
|
12
|
+
this.okLabel = 'Αποθήκευση';
|
|
13
|
+
// tslint:disable-next-line:no-input-rename
|
|
14
|
+
this.okShow = true;
|
|
15
|
+
// tslint:disable-next-line:no-input-rename
|
|
16
|
+
this.closeOnOk = true;
|
|
17
|
+
// tslint:disable-next-line:no-input-rename
|
|
18
|
+
this.cancelLabel = 'Ακύρωση';
|
|
19
|
+
// tslint:disable-next-line:no-input-rename
|
|
20
|
+
this.cancelShow = true;
|
|
21
|
+
// @Output() close = new EventEmitter<any>();
|
|
22
|
+
this.cancel = new EventEmitter();
|
|
23
|
+
this.ok = new EventEmitter();
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
}
|
|
27
|
+
closeSidePane() {
|
|
28
|
+
if (this.returnPath) {
|
|
29
|
+
this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => this.router.navigateByUrl(this.returnPath || '/'));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.location.back();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
emitClose() {
|
|
36
|
+
this.cancel.emit(false);
|
|
37
|
+
this.closeSidePane();
|
|
38
|
+
}
|
|
39
|
+
emitCancel() {
|
|
40
|
+
this.cancel.emit(false);
|
|
41
|
+
this.closeSidePane();
|
|
42
|
+
}
|
|
43
|
+
emitOK() {
|
|
44
|
+
this.ok.emit(true);
|
|
45
|
+
if (this.closeOnOk) {
|
|
46
|
+
this.closeSidePane();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
SideViewLayoutComponent.decorators = [
|
|
51
|
+
{ type: Component, args: [{
|
|
52
|
+
selector: 'lib-side-view-layout',
|
|
53
|
+
template: "<div class=\"side-view-layout-size-box\">\r\n <div class=\"side-view-layout-container\">\r\n <div class=\"side-view-layout-container-inner\">\r\n <div class=\"side-view-layout-header-margins\">\r\n <div class=\"side-view-layout-header-container\">\r\n <h2 class=\"side-view-layout-header-title\" id=\"slide-over-title\">\r\n {{title}}\r\n </h2>\r\n <div class=\"side-view-layout-close-button-container\">\r\n <button (click)=\"emitClose()\" class=\"side-view-layout-close-button\">\r\n <span class=\"sr-only\">Close panel</span>\r\n <!-- Heroicon name: outline/x -->\r\n <svg class=\"side-view-layout-close-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"side-view-layout-content-container\">\r\n <!-- Replace with your content -->\r\n <ng-content></ng-content>\r\n <!-- /End replace -->\r\n </div>\r\n </div>\r\n <div *ngIf=\"showActions\" class=\"side-view-layout-actions-container\">\r\n <button *ngIf=\"cancelShow\" (click)=\"emitCancel()\" type=\"button\" class=\"side-view-layout-action-button\">\r\n {{cancelLabel}}\r\n </button>\r\n <button *ngIf=\"okShow\" (click)=\"emitOK()\" class=\"side-view-layout-action-button-default\" [disabled]=\"disabled\">\r\n {{okLabel}}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
|
|
54
|
+
},] }
|
|
55
|
+
];
|
|
56
|
+
SideViewLayoutComponent.ctorParameters = () => [
|
|
57
|
+
{ type: Location },
|
|
58
|
+
{ type: Router }
|
|
59
|
+
];
|
|
60
|
+
SideViewLayoutComponent.propDecorators = {
|
|
61
|
+
title: [{ type: Input }],
|
|
62
|
+
showActions: [{ type: Input }],
|
|
63
|
+
disabled: [{ type: Input }],
|
|
64
|
+
returnPath: [{ type: Input, args: ['return-path',] }],
|
|
65
|
+
okLabel: [{ type: Input, args: ['ok-label',] }],
|
|
66
|
+
okShow: [{ type: Input, args: ['ok-show',] }],
|
|
67
|
+
closeOnOk: [{ type: Input, args: ['ok-close-dialog',] }],
|
|
68
|
+
cancelLabel: [{ type: Input, args: ['cancel-label',] }],
|
|
69
|
+
cancelShow: [{ type: Input, args: ['cancel-show',] }],
|
|
70
|
+
cancel: [{ type: Output }],
|
|
71
|
+
ok: [{ type: Output }]
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS12aWV3LWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvbGF5b3V0cy92aWV3cy9zaWRlLXZpZXctbGF5b3V0L3NpZGUtdmlldy1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0zQyxNQUFNLE9BQU8sdUJBQXVCO0lBb0JsQyxZQUFvQixRQUFrQixFQUFVLE1BQWM7UUFBMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQnJELFVBQUssR0FBa0IsYUFBYSxDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHMUIsMkNBQTJDO1FBQ3hCLFlBQU8sR0FBRyxZQUFZLENBQUM7UUFDMUMsMkNBQTJDO1FBQ3pCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDaEMsMkNBQTJDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDM0MsMkNBQTJDO1FBQ3BCLGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQy9DLDJDQUEyQztRQUNyQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLDZDQUE2QztRQUNuQyxXQUFNLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsT0FBRSxHQUEyQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRVEsQ0FBQztJQUVuRSxRQUFRO0lBQ1IsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFDLGtCQUFrQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxSDthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7OztZQXBERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsdXREQUFnRDthQUNqRDs7O1lBTFEsUUFBUTtZQUZSLE1BQU07OztvQkFTWixLQUFLOzBCQUNMLEtBQUs7dUJBQ0wsS0FBSzt5QkFFTCxLQUFLLFNBQUMsYUFBYTtzQkFFbkIsS0FBSyxTQUFDLFVBQVU7cUJBRWhCLEtBQUssU0FBQyxTQUFTO3dCQUVmLEtBQUssU0FBQyxpQkFBaUI7MEJBRXZCLEtBQUssU0FBQyxjQUFjO3lCQUVwQixLQUFLLFNBQUMsYUFBYTtxQkFFbkIsTUFBTTtpQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zaWRlLXZpZXctbGF5b3V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZS12aWV3LWxheW91dC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVWaWV3TGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nIHwgbnVsbCA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CJztcclxuICBASW5wdXQoKSBzaG93QWN0aW9ucyA9IHRydWU7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdyZXR1cm4tcGF0aCcpIHJldHVyblBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdvay1sYWJlbCcpIG9rTGFiZWwgPSAnzpHPgM6/zrjOrs66zrXPhc+DzrcnO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ29rLXNob3cnKSBva1Nob3cgPSB0cnVlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ29rLWNsb3NlLWRpYWxvZycpIGNsb3NlT25PayA9IHRydWU7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnY2FuY2VsLWxhYmVsJykgY2FuY2VsTGFiZWwgPSAnzpHOus+Nz4HPic+DzrcnO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ2NhbmNlbC1zaG93JykgY2FuY2VsU2hvdyA9IHRydWU7XHJcbiAgLy8gQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNhbmNlbDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvazogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ICA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZVNpZGVQYW5lKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmV0dXJuUGF0aCkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZX0pLnRoZW4oKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJldHVyblBhdGggfHwgJy8nKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0Q2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMuY2xvc2VTaWRlUGFuZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRDYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMuY2xvc2VTaWRlUGFuZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRPSygpOiB2b2lkIHtcclxuICAgIHRoaXMub2suZW1pdCh0cnVlKTtcclxuICAgIGlmKHRoaXMuY2xvc2VPbk9rKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VTaWRlUGFuZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|