design-angular-kit 1.0.0-1 → 1.0.0-11
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 +183 -24
- package/assets/i18n/en.json +97 -0
- package/assets/i18n/it.json +97 -0
- package/esm2020/lib/abstracts/abstract-form.component.mjs +171 -0
- package/esm2020/lib/abstracts/abstract.component.mjs +45 -0
- package/esm2020/lib/components/components.module.mjs +256 -0
- package/esm2020/lib/components/core/accordion/accordion.component.mjs +31 -0
- package/esm2020/lib/components/core/alert/alert.component.mjs +69 -0
- package/esm2020/lib/components/core/badge/badge.directive.mjs +34 -0
- package/esm2020/lib/components/core/button/button.directive.mjs +80 -0
- package/esm2020/lib/components/core/callout/callout.component.mjs +84 -0
- package/esm2020/lib/components/core/card/card.component.mjs +58 -0
- package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +79 -0
- package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +15 -0
- package/esm2020/lib/components/core/chip/chip.component.mjs +89 -0
- package/esm2020/lib/components/core/collapse/collapse.component.mjs +101 -0
- package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
- package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
- package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +59 -0
- package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +130 -0
- package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +68 -0
- package/esm2020/lib/components/core/forward/forward.directive.mjs +51 -0
- package/esm2020/lib/components/core/link/link.component.mjs +40 -0
- package/esm2020/lib/components/core/list/list/list.component.mjs +13 -0
- package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +36 -0
- package/esm2020/lib/components/core/modal/modal.component.mjs +98 -0
- package/esm2020/lib/components/core/notifications/notifications.component.mjs +110 -0
- package/esm2020/lib/components/core/pagination/pagination.component.mjs +131 -0
- package/esm2020/lib/components/core/popover/popover.directive.mjs +179 -0
- package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
- package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +27 -0
- package/esm2020/lib/components/core/rating/rating.component.mjs +49 -0
- package/esm2020/lib/components/core/spinner/spinner.component.mjs +35 -0
- package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +127 -0
- package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +19 -0
- package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +59 -0
- package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +36 -0
- package/esm2020/lib/components/core/table/table.component.mjs +57 -0
- package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +143 -0
- package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +40 -0
- package/esm2020/lib/components/form/input/input.component.mjs +222 -0
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +112 -0
- package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +68 -0
- package/esm2020/lib/components/form/select/select.component.mjs +62 -0
- package/esm2020/lib/components/form/textarea/textarea.component.mjs +46 -0
- package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +139 -0
- package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +104 -0
- package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +69 -0
- package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +64 -0
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +56 -0
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +23 -0
- package/esm2020/lib/components/navigation/header/header.component.mjs +57 -0
- package/esm2020/lib/components/utils/icon/icon.component.mjs +54 -0
- package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +39 -0
- package/esm2020/lib/components/utils/not-found-page/not-found-page.component.mjs +13 -0
- package/esm2020/lib/design-angular-kit.module.mjs +45 -131
- package/esm2020/lib/interfaces/core.mjs +16 -0
- package/esm2020/lib/interfaces/form.mjs +2 -0
- package/esm2020/lib/interfaces/icon.mjs +2 -0
- package/esm2020/lib/interfaces/utils.mjs +2 -0
- package/esm2020/lib/pipes/mark-matching-text.pipe.mjs +36 -0
- package/esm2020/lib/services/notifications/notifications.service.mjs +120 -0
- package/esm2020/lib/utils/boolean-input.mjs +15 -0
- package/esm2020/lib/utils/file-utils.mjs +73 -0
- package/esm2020/lib/utils/regex.mjs +26 -0
- package/esm2020/lib/validators/it-validators.mjs +134 -0
- package/esm2020/public_api.mjs +67 -36
- package/fesm2015/design-angular-kit.mjs +3550 -2712
- package/fesm2015/design-angular-kit.mjs.map +1 -1
- package/fesm2020/design-angular-kit.mjs +3519 -2722
- package/fesm2020/design-angular-kit.mjs.map +1 -1
- package/lib/abstracts/abstract-form.component.d.ts +86 -0
- package/lib/abstracts/abstract.component.d.ts +30 -0
- package/lib/components/components.module.d.ts +60 -0
- package/lib/components/core/accordion/accordion.component.d.ts +12 -0
- package/lib/components/core/alert/alert.component.d.ts +39 -0
- package/lib/components/core/badge/badge.directive.d.ts +16 -0
- package/lib/components/core/button/button.directive.d.ts +36 -0
- package/lib/components/core/callout/callout.component.d.ts +47 -0
- package/lib/components/core/card/card.component.d.ts +41 -0
- package/lib/components/core/carousel/carousel/carousel.component.d.ts +50 -0
- package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +11 -0
- package/lib/components/core/chip/chip.component.d.ts +62 -0
- package/lib/components/core/collapse/collapse.component.d.ts +60 -0
- package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +12 -0
- package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +5 -0
- package/lib/components/core/dimmer/dimmer.component.d.ts +24 -0
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +81 -0
- package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +39 -0
- package/lib/components/core/forward/forward.directive.d.ts +14 -0
- package/lib/components/core/link/link.component.d.ts +31 -0
- package/lib/components/core/list/list/list.component.d.ts +10 -0
- package/lib/components/core/list/list-item/list-item.component.d.ts +24 -0
- package/lib/components/core/modal/modal.component.d.ts +59 -0
- package/lib/components/core/notifications/notifications.component.d.ts +44 -0
- package/lib/components/core/pagination/pagination.component.d.ts +92 -0
- package/lib/components/core/popover/popover.directive.d.ts +98 -0
- package/lib/components/core/progress-bar/progress-bar.component.d.ts +28 -0
- package/lib/components/core/progress-button/progress-button.component.d.ts +22 -0
- package/lib/components/core/rating/rating.component.d.ts +24 -0
- package/lib/components/core/spinner/spinner.component.d.ts +21 -0
- package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +104 -0
- package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +20 -0
- package/lib/components/core/tab/tab-container/tab-container.component.d.ts +30 -0
- package/lib/components/core/tab/tab-item/tab-item.component.d.ts +34 -0
- package/lib/components/core/table/table.component.d.ts +54 -0
- package/lib/components/core/tooltip/tooltip.directive.d.ts +81 -0
- package/lib/components/form/checkbox/checkbox.component.d.ts +30 -0
- package/lib/components/form/input/input.component.d.ts +96 -0
- package/lib/components/form/password-input/password-input.component.d.ts +55 -0
- package/lib/components/form/radio-button/radio-button.component.d.ts +29 -0
- package/lib/components/form/select/select.component.d.ts +30 -0
- package/lib/components/form/textarea/textarea.component.d.ts +24 -0
- package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +54 -0
- package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +59 -0
- package/lib/components/navigation/back-button/back-button.component.d.ts +47 -0
- package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +41 -0
- package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +32 -0
- package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +22 -0
- package/lib/components/navigation/header/header.component.d.ts +24 -0
- package/lib/components/utils/icon/icon.component.d.ts +40 -0
- package/lib/components/utils/language-switcher/language-switcher.component.d.ts +23 -0
- package/lib/components/utils/not-found-page/not-found-page.component.d.ts +5 -0
- package/lib/design-angular-kit.module.d.ts +7 -24
- package/lib/interfaces/core.d.ts +59 -0
- package/lib/interfaces/form.d.ts +67 -0
- package/lib/interfaces/icon.d.ts +3 -0
- package/lib/interfaces/utils.d.ts +10 -0
- package/lib/services/notifications/notifications.service.d.ts +63 -0
- package/lib/utils/boolean-input.d.ts +11 -0
- package/lib/utils/file-utils.d.ts +32 -0
- package/lib/utils/regex.d.ts +25 -0
- package/lib/validators/it-validators.d.ts +58 -0
- package/package.json +22 -13
- package/public_api.d.ts +59 -35
- package/esm2020/lib/badge/badge.directive.mjs +0 -83
- package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +0 -66
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +0 -89
- package/esm2020/lib/button/button.directive.mjs +0 -185
- package/esm2020/lib/button/button.module.mjs +0 -18
- package/esm2020/lib/checkbox/checkbox.component.mjs +0 -138
- package/esm2020/lib/collapse/collapse-group.component.mjs +0 -57
- package/esm2020/lib/collapse/collapse-item.component.mjs +0 -79
- package/esm2020/lib/collapse/collapse.config.mjs +0 -12
- package/esm2020/lib/collapse/collapse.directive.mjs +0 -55
- package/esm2020/lib/collapse/collapse.module.mjs +0 -22
- package/esm2020/lib/dropdown/dropdown-divider.component.mjs +0 -11
- package/esm2020/lib/dropdown/dropdown-item.component.mjs +0 -97
- package/esm2020/lib/dropdown/dropdown.component.mjs +0 -143
- package/esm2020/lib/dropdown/dropdown.config.mjs +0 -12
- package/esm2020/lib/dropdown/dropdown.directive.mjs +0 -156
- package/esm2020/lib/dropdown/dropdown.module.mjs +0 -25
- package/esm2020/lib/enums/icons.enum.mjs +0 -27
- package/esm2020/lib/form-input/form-input-password.utils.mjs +0 -154
- package/esm2020/lib/form-input/form-input.component.mjs +0 -495
- package/esm2020/lib/form-input/it-prefix.directive.mjs +0 -13
- package/esm2020/lib/form-input/it-suffix.directive.mjs +0 -13
- package/esm2020/lib/form-input/it-text-prefix.directive.mjs +0 -13
- package/esm2020/lib/form-input/it-text-suffix.directive.mjs +0 -13
- package/esm2020/lib/form-input/mark-matching-text.pipe.mjs +0 -36
- package/esm2020/lib/icon/icon.component.mjs +0 -87
- package/esm2020/lib/icon/icon.module.mjs +0 -18
- package/esm2020/lib/models/Alignment.mjs +0 -15
- package/esm2020/lib/models/ButtonSize.mjs +0 -15
- package/esm2020/lib/models/InputType.mjs +0 -44
- package/esm2020/lib/models/ThemeColor.mjs +0 -30
- package/esm2020/lib/popover/popover.config.mjs +0 -17
- package/esm2020/lib/popover/popover.directive.mjs +0 -33
- package/esm2020/lib/popover/popover.module.mjs +0 -19
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -98
- package/esm2020/lib/radio/radio.component.mjs +0 -287
- package/esm2020/lib/radio/unique-selection-dispatcher.mjs +0 -55
- package/esm2020/lib/tabs/tab-group.component.mjs +0 -177
- package/esm2020/lib/tabs/tab.component.mjs +0 -73
- package/esm2020/lib/tabs/tabs.module.mjs +0 -20
- package/esm2020/lib/toggle/toggle.component.mjs +0 -86
- package/esm2020/lib/tooltip/tooltip.config.mjs +0 -17
- package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -43
- package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
- package/esm2020/lib/util/focus-mouse.directive.mjs +0 -32
- package/esm2020/lib/util/util.mjs +0 -12
- package/esm2020/lib/util/utils.module.mjs +0 -16
- package/lib/badge/badge.directive.d.ts +0 -33
- package/lib/breadcrumb/breadcrumb-item.component.d.ts +0 -33
- package/lib/breadcrumb/breadcrumb.component.d.ts +0 -33
- package/lib/button/button.directive.d.ts +0 -72
- package/lib/button/button.module.d.ts +0 -8
- package/lib/checkbox/checkbox.component.d.ts +0 -61
- package/lib/collapse/collapse-group.component.d.ts +0 -16
- package/lib/collapse/collapse-item.component.d.ts +0 -46
- package/lib/collapse/collapse.config.d.ts +0 -6
- package/lib/collapse/collapse.directive.d.ts +0 -25
- package/lib/collapse/collapse.module.d.ts +0 -12
- package/lib/dropdown/dropdown-divider.component.d.ts +0 -5
- package/lib/dropdown/dropdown-item.component.d.ts +0 -56
- package/lib/dropdown/dropdown.component.d.ts +0 -65
- package/lib/dropdown/dropdown.config.d.ts +0 -6
- package/lib/dropdown/dropdown.directive.d.ts +0 -77
- package/lib/dropdown/dropdown.module.d.ts +0 -15
- package/lib/enums/icons.enum.d.ts +0 -23
- package/lib/form-input/form-input-password.utils.d.ts +0 -45
- package/lib/form-input/form-input.component.d.ts +0 -283
- package/lib/form-input/it-prefix.directive.d.ts +0 -5
- package/lib/form-input/it-suffix.directive.d.ts +0 -5
- package/lib/form-input/it-text-prefix.directive.d.ts +0 -5
- package/lib/form-input/it-text-suffix.directive.d.ts +0 -5
- package/lib/icon/icon.component.d.ts +0 -34
- package/lib/icon/icon.module.d.ts +0 -8
- package/lib/models/Alignment.d.ts +0 -12
- package/lib/models/ButtonSize.d.ts +0 -11
- package/lib/models/InputType.d.ts +0 -36
- package/lib/models/ThemeColor.d.ts +0 -21
- package/lib/popover/popover.config.d.ts +0 -11
- package/lib/popover/popover.directive.d.ts +0 -20
- package/lib/popover/popover.module.d.ts +0 -9
- package/lib/progress-bar/progress-bar.component.d.ts +0 -55
- package/lib/radio/radio.component.d.ts +0 -116
- package/lib/radio/unique-selection-dispatcher.d.ts +0 -36
- package/lib/tabs/tab-group.component.d.ts +0 -71
- package/lib/tabs/tab.component.d.ts +0 -44
- package/lib/tabs/tabs.module.d.ts +0 -10
- package/lib/toggle/toggle.component.d.ts +0 -46
- package/lib/tooltip/tooltip.config.d.ts +0 -11
- package/lib/tooltip/tooltip.directive.d.ts +0 -27
- package/lib/tooltip/tooltip.module.d.ts +0 -9
- package/lib/util/focus-mouse.directive.d.ts +0 -13
- package/lib/util/util.d.ts +0 -5
- package/lib/util/utils.module.d.ts +0 -7
- /package/lib/{form-input → pipes}/mark-matching-text.pipe.d.ts +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { NotificationType } from '../../../interfaces/core';
|
|
3
|
+
import { Notification as BSNotification } from 'bootstrap-italia';
|
|
4
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../services/notifications/notifications.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "../../utils/icon/icon.component";
|
|
9
|
+
import * as i4 from "@ngx-translate/core";
|
|
10
|
+
export class NotificationsComponent {
|
|
11
|
+
constructor(_changeDetectorRef, _notificationService) {
|
|
12
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
13
|
+
this._notificationService = _notificationService;
|
|
14
|
+
/**
|
|
15
|
+
* Default notifications duration (milliseconds)
|
|
16
|
+
* @default 8000
|
|
17
|
+
*/
|
|
18
|
+
this.duration = 8000;
|
|
19
|
+
/**
|
|
20
|
+
* Default notifications is dismissible
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
this.dismissible = true;
|
|
24
|
+
this.notificationCount = 0;
|
|
25
|
+
this.notifications = [];
|
|
26
|
+
this.subscription = this._notificationService.onNotification().subscribe(notification => {
|
|
27
|
+
if (!notification.duration) {
|
|
28
|
+
notification.duration = this.duration; // Add duration if not is set
|
|
29
|
+
}
|
|
30
|
+
if (!notification.position && this.position) {
|
|
31
|
+
notification.position = this.position; // Add position if not is set
|
|
32
|
+
}
|
|
33
|
+
if (notification.dismissible === undefined && isTrueBooleanInput(this.dismissible)) {
|
|
34
|
+
notification.dismissible = true; // Add dismissible if not is set
|
|
35
|
+
}
|
|
36
|
+
if (!notification.icon) {
|
|
37
|
+
notification.icon = this.getNotificationIcon(notification);
|
|
38
|
+
}
|
|
39
|
+
const newNotification = {
|
|
40
|
+
...notification,
|
|
41
|
+
id: `${notification.type}-${this.notificationCount++}-notification`
|
|
42
|
+
};
|
|
43
|
+
this.notifications.push(newNotification);
|
|
44
|
+
this._changeDetectorRef.detectChanges();
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
// Show the notification
|
|
47
|
+
new BSNotification(document.getElementById(newNotification.id), {
|
|
48
|
+
timeout: notification.duration
|
|
49
|
+
}).show();
|
|
50
|
+
// Clear notification after the duration
|
|
51
|
+
setTimeout(() => {
|
|
52
|
+
const index = this.notifications.findIndex(n => n.id === newNotification.id);
|
|
53
|
+
if (index > -1) {
|
|
54
|
+
this.notifications.splice(index, 1);
|
|
55
|
+
if (!this.notifications.length) {
|
|
56
|
+
this.notificationCount = 0;
|
|
57
|
+
}
|
|
58
|
+
this._changeDetectorRef.detectChanges();
|
|
59
|
+
}
|
|
60
|
+
}, notification.duration);
|
|
61
|
+
}, 200);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
ngOnDestroy() {
|
|
65
|
+
this.subscription.unsubscribe();
|
|
66
|
+
}
|
|
67
|
+
get NotificationType() {
|
|
68
|
+
return NotificationType;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Hide the notification
|
|
72
|
+
* @param id
|
|
73
|
+
*/
|
|
74
|
+
hideNotification(id) {
|
|
75
|
+
BSNotification.getInstance(document.getElementById(id))?.hide();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Retrieve the icon name by notification type
|
|
79
|
+
* @param notification the notification
|
|
80
|
+
* @protected
|
|
81
|
+
*/
|
|
82
|
+
getNotificationIcon(notification) {
|
|
83
|
+
switch (notification.type) {
|
|
84
|
+
case NotificationType.Success:
|
|
85
|
+
return 'check-circle';
|
|
86
|
+
case NotificationType.Error:
|
|
87
|
+
return 'close-circle';
|
|
88
|
+
case NotificationType.Warning:
|
|
89
|
+
return 'error';
|
|
90
|
+
case NotificationType.Info:
|
|
91
|
+
return 'info-circle';
|
|
92
|
+
case NotificationType.Standard:
|
|
93
|
+
default:
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
NotificationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NotificationsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
NotificationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: NotificationsComponent, selector: "it-notifications", inputs: { duration: "duration", position: "position", dismissible: "dismissible" }, ngImport: i0, template: "<div *ngFor=\"let notification of notifications\"\n [id]=\"notification.id\"\n class=\"notification {{notification.position}} {{notification.type}}\"\n [class.with-icon]=\"!!notification.icon\"\n [class.dismissable]=\"notification.dismissible\"\n role=\"alert\" [attr.aria-labelledby]=\"notification.id+'-title'\">\n\n <h2 [id]=\"notification.id+'-title'\" class=\"h5\">\n <it-icon *ngIf=\"!!notification.icon\" [name]=\"notification.icon\"></it-icon>\n <ng-container>{{notification.title}}</ng-container>\n </h2>\n <p *ngIf=\"notification.message\">{{notification.message}}</p>\n\n <button *ngIf=\"notification.dismissible\" type=\"button\" class=\"btn notification-close\"\n (click)=\"hideNotification(notification.id)\">\n <it-icon name=\"close\"></it-icon>\n <span class=\"visually-hidden\">{{'it.core.close-notification'|translate:{ title: notification.title } }}</span>\n </button>\n</div>\n", styles: [".notification{z-index:10000}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NotificationsComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: 'it-notifications', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngFor=\"let notification of notifications\"\n [id]=\"notification.id\"\n class=\"notification {{notification.position}} {{notification.type}}\"\n [class.with-icon]=\"!!notification.icon\"\n [class.dismissable]=\"notification.dismissible\"\n role=\"alert\" [attr.aria-labelledby]=\"notification.id+'-title'\">\n\n <h2 [id]=\"notification.id+'-title'\" class=\"h5\">\n <it-icon *ngIf=\"!!notification.icon\" [name]=\"notification.icon\"></it-icon>\n <ng-container>{{notification.title}}</ng-container>\n </h2>\n <p *ngIf=\"notification.message\">{{notification.message}}</p>\n\n <button *ngIf=\"notification.dismissible\" type=\"button\" class=\"btn notification-close\"\n (click)=\"hideNotification(notification.id)\">\n <it-icon name=\"close\"></it-icon>\n <span class=\"visually-hidden\">{{'it.core.close-notification'|translate:{ title: notification.title } }}</span>\n </button>\n</div>\n", styles: [".notification{z-index:10000}\n"] }]
|
|
103
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NotificationsService }]; }, propDecorators: { duration: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], position: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], dismissible: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0MsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxJQUFJLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBU2hGLE1BQU0sT0FBTyxzQkFBc0I7SUF1QmpDLFlBQ21CLGtCQUFxQyxFQUNyQyxvQkFBMEM7UUFEMUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdkI3RDs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsSUFBSSxDQUFDO1FBT2pDOzs7V0FHRztRQUNNLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUduQyxzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBeUMsRUFBRSxDQUFDO1FBTWpFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN0RixJQUFJ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QUFDLElBQUk7Z0JBQ3hCLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLEtBQUssZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQy9CO2dCQUNFLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7bUhBeEdVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDRJQ2RuQyxpN0JBbUJBOzJGRExhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTsySUFRdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uUG9zaXRpb24sIE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uIGFzIEJTTm90aWZpY2F0aW9uIH0gZnJvbSAnYm9vdHN0cmFwLWl0YWxpYSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGlzVHJ1ZUJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb2xlYW4taW5wdXQnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1ub3RpZmljYXRpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG5vdGlmaWNhdGlvbnMgZHVyYXRpb24gKG1pbGxpc2Vjb25kcylcbiAgICogQGRlZmF1bHQgODAwMFxuICAgKi9cbiAgQElucHV0KCkgZHVyYXRpb246IG51bWJlciA9IDgwMDA7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm90aWZpY2F0aW9ucyBwb3NpdGlvblxuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb24/OiBOb3RpZmljYXRpb25Qb3NpdGlvbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBub3RpZmljYXRpb25zIGlzIGRpc21pc3NpYmxlXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIGRpc21pc3NpYmxlPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG5vdGlmaWNhdGlvbkNvdW50OiBudW1iZXIgPSAwO1xuICBwcm90ZWN0ZWQgbm90aWZpY2F0aW9uczogQXJyYXk8Tm90aWZpY2F0aW9uICYgeyBpZDogc3RyaW5nIH0+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5vbk5vdGlmaWNhdGlvbigpLnN1YnNjcmliZShub3RpZmljYXRpb24gPT4ge1xuICAgICAgaWYgKCFub3RpZmljYXRpb24uZHVyYXRpb24pIHtcbiAgICAgICAgbm90aWZpY2F0aW9uLmR1cmF0aW9uID0gdGhpcy5kdXJhdGlvbjsgLy8gQWRkIGR1cmF0aW9uIGlmIG5vdCBpcyBzZXRcbiAgICAgIH1cbiAgICAgIGlmICghbm90aWZpY2F0aW9uLnBvc2l0aW9uICYmIHRoaXMucG9zaXRpb24pIHtcbiAgICAgICAgbm90aWZpY2F0aW9uLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjsgLy8gQWRkIHBvc2l0aW9uIGlmIG5vdCBpcyBzZXRcbiAgICAgIH1cbiAgICAgIGlmIChub3RpZmljYXRpb24uZGlzbWlzc2libGUgPT09IHVuZGVmaW5lZCAmJiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5kaXNtaXNzaWJsZSkpIHtcbiAgICAgICAgbm90aWZpY2F0aW9uLmRpc21pc3NpYmxlID0gdHJ1ZTsgLy8gQWRkIGRpc21pc3NpYmxlIGlmIG5vdCBpcyBzZXRcbiAgICAgIH1cbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmljb24pIHtcbiAgICAgICAgbm90aWZpY2F0aW9uLmljb24gPSB0aGlzLmdldE5vdGlmaWNhdGlvbkljb24obm90aWZpY2F0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Tm90aWZpY2F0aW9uID0ge1xuICAgICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICAgIGlkOiBgJHtub3RpZmljYXRpb24udHlwZX0tJHt0aGlzLm5vdGlmaWNhdGlvbkNvdW50Kyt9LW5vdGlmaWNhdGlvbmBcbiAgICAgIH07XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMucHVzaChuZXdOb3RpZmljYXRpb24pO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gU2hvdyB0aGUgbm90aWZpY2F0aW9uXG4gICAgICAgIG5ldyBCU05vdGlmaWNhdGlvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdOb3RpZmljYXRpb24uaWQpISwge1xuICAgICAgICAgIHRpbWVvdXQ6IG5vdGlmaWNhdGlvbi5kdXJhdGlvblxuICAgICAgICB9KS5zaG93KCk7XG5cbiAgICAgICAgLy8gQ2xlYXIgbm90aWZpY2F0aW9uIGFmdGVyIHRoZSBkdXJhdGlvblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kSW5kZXgobiA9PiBuLmlkID09PSBuZXdOb3RpZmljYXRpb24uaWQpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub3RpZmljYXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNvdW50ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG5vdGlmaWNhdGlvbi5kdXJhdGlvbik7XG4gICAgICB9LCAyMDApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgTm90aWZpY2F0aW9uVHlwZSgpOiB0eXBlb2YgTm90aWZpY2F0aW9uVHlwZSB7XG4gICAgcmV0dXJuIE5vdGlmaWNhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSB0aGUgbm90aWZpY2F0aW9uXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgcHJvdGVjdGVkIGhpZGVOb3RpZmljYXRpb24oaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIEJTTm90aWZpY2F0aW9uLmdldEluc3RhbmNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSEpPy5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGljb24gbmFtZSBieSBub3RpZmljYXRpb24gdHlwZVxuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uIHRoZSBub3RpZmljYXRpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJpdmF0ZSBnZXROb3RpZmljYXRpb25JY29uKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uKTogSWNvbk5hbWUgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5TdWNjZXNzOlxuICAgICAgICByZXR1cm4gJ2NoZWNrLWNpcmNsZSc7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRXJyb3I6XG4gICAgICAgIHJldHVybiAnY2xvc2UtY2lyY2xlJztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5XYXJuaW5nOlxuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4gJ2luZm8tY2lyY2xlJztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5TdGFuZGFyZDpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uc1wiXG4gICAgIFtpZF09XCJub3RpZmljYXRpb24uaWRcIlxuICAgICBjbGFzcz1cIm5vdGlmaWNhdGlvbiB7e25vdGlmaWNhdGlvbi5wb3NpdGlvbn19IHt7bm90aWZpY2F0aW9uLnR5cGV9fVwiXG4gICAgIFtjbGFzcy53aXRoLWljb25dPVwiISFub3RpZmljYXRpb24uaWNvblwiXG4gICAgIFtjbGFzcy5kaXNtaXNzYWJsZV09XCJub3RpZmljYXRpb24uZGlzbWlzc2libGVcIlxuICAgICByb2xlPVwiYWxlcnRcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibm90aWZpY2F0aW9uLmlkKyctdGl0bGUnXCI+XG5cbiAgPGgyIFtpZF09XCJub3RpZmljYXRpb24uaWQrJy10aXRsZSdcIiBjbGFzcz1cImg1XCI+XG4gICAgPGl0LWljb24gKm5nSWY9XCIhIW5vdGlmaWNhdGlvbi5pY29uXCIgW25hbWVdPVwibm90aWZpY2F0aW9uLmljb25cIj48L2l0LWljb24+XG4gICAgPG5nLWNvbnRhaW5lcj57e25vdGlmaWNhdGlvbi50aXRsZX19PC9uZy1jb250YWluZXI+XG4gIDwvaDI+XG4gIDxwICpuZ0lmPVwibm90aWZpY2F0aW9uLm1lc3NhZ2VcIj57e25vdGlmaWNhdGlvbi5tZXNzYWdlfX08L3A+XG5cbiAgPGJ1dHRvbiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5kaXNtaXNzaWJsZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBub3RpZmljYXRpb24tY2xvc2VcIlxuICAgICAgICAgIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZClcIj5cbiAgICA8aXQtaWNvbiBuYW1lPVwiY2xvc2VcIj48L2l0LWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydpdC5jb3JlLmNsb3NlLW5vdGlmaWNhdGlvbid8dHJhbnNsYXRlOnsgdGl0bGU6IG5vdGlmaWNhdGlvbi50aXRsZSB9IH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { FormControl } from '@angular/forms';
|
|
4
|
+
import { debounceTime, distinctUntilChanged, filter } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "../dropdown/dropdown/dropdown.component";
|
|
9
|
+
import * as i4 from "../dropdown/dropdown-item/dropdown-item.component";
|
|
10
|
+
import * as i5 from "../../form/input/input.component";
|
|
11
|
+
import * as i6 from "../../utils/icon/icon.component";
|
|
12
|
+
import * as i7 from "@ngx-translate/core";
|
|
13
|
+
export class PaginationComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
/**
|
|
16
|
+
* Number of pages closest to the current one to display
|
|
17
|
+
* @default 5
|
|
18
|
+
*/
|
|
19
|
+
this.visiblePages = 5;
|
|
20
|
+
/**
|
|
21
|
+
* Available Changer values
|
|
22
|
+
* @default [10, 25, 50, 100]
|
|
23
|
+
*/
|
|
24
|
+
this.changerValues = [10, 25, 50, 100];
|
|
25
|
+
/**
|
|
26
|
+
* Fired when page is changed. Emit the new index of page
|
|
27
|
+
*/
|
|
28
|
+
this.pageEvent = new EventEmitter();
|
|
29
|
+
/**
|
|
30
|
+
* Fired when changer is changed. Emit the new changer value
|
|
31
|
+
*/
|
|
32
|
+
this.changerEvent = new EventEmitter();
|
|
33
|
+
/**
|
|
34
|
+
* The pages
|
|
35
|
+
* @protected
|
|
36
|
+
*/
|
|
37
|
+
this.pages = [];
|
|
38
|
+
/**
|
|
39
|
+
* Jump to page input
|
|
40
|
+
* @protected
|
|
41
|
+
*/
|
|
42
|
+
this.jumpToPage = new FormControl(null);
|
|
43
|
+
this.jumpToPage.valueChanges.pipe(debounceTime(300), // Delay filter data after time span has passed without another source emission
|
|
44
|
+
distinctUntilChanged(), filter(value => !!value && this.jumpToPage.valid)).subscribe(value => {
|
|
45
|
+
this.pageEvent.emit(value - 1);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
get isSimpleMode() {
|
|
49
|
+
return isTrueBooleanInput(this.simpleMode);
|
|
50
|
+
}
|
|
51
|
+
get isTextLinks() {
|
|
52
|
+
return isTrueBooleanInput(this.textLinks);
|
|
53
|
+
}
|
|
54
|
+
get isShowJumpToPage() {
|
|
55
|
+
return isTrueBooleanInput(this.showJumpToPage);
|
|
56
|
+
}
|
|
57
|
+
ngOnChanges(changes) {
|
|
58
|
+
this.pages = this.calculatePages();
|
|
59
|
+
if (changes['currentPage']) {
|
|
60
|
+
this.jumpToPage.setValue(null, { emitEvent: false });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create array to generate pagination of `visiblePages` element
|
|
65
|
+
*/
|
|
66
|
+
calculatePages() {
|
|
67
|
+
if (this.isSimpleMode) {
|
|
68
|
+
return [this.currentPage];
|
|
69
|
+
}
|
|
70
|
+
const length = this.pageNumbers > this.visiblePages ? this.visiblePages : this.pageNumbers;
|
|
71
|
+
const halfVisiblePages = Math.floor(this.visiblePages / 2);
|
|
72
|
+
let start = (this.currentPage > halfVisiblePages && this.pageNumbers > this.visiblePages) ?
|
|
73
|
+
this.currentPage - halfVisiblePages + 1 : 1;
|
|
74
|
+
if (this.pageNumbers > this.visiblePages) {
|
|
75
|
+
if ((this.currentPage + 1) >= this.pageNumbers) {
|
|
76
|
+
start -= halfVisiblePages;
|
|
77
|
+
}
|
|
78
|
+
else if (this.currentPage >= (this.pageNumbers - halfVisiblePages)) {
|
|
79
|
+
start -= (this.pageNumbers - (this.currentPage + 1));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return Array.from({ length }, (_, i) => i + start);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* On click page change
|
|
86
|
+
* @param event click event
|
|
87
|
+
* @param newPage the new page of table
|
|
88
|
+
*/
|
|
89
|
+
pageChange(event, newPage) {
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
this.pageEvent.emit(newPage - 1); // emit new page index
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* On click changer
|
|
95
|
+
* @param event click event
|
|
96
|
+
* @param value the new changer value
|
|
97
|
+
*/
|
|
98
|
+
changerChange(event, value) {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
this.changerEvent.emit(value); // emit new changer value
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
+
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "it-pagination[currentPage][pageNumbers]", inputs: { currentPage: "currentPage", pageNumbers: "pageNumbers", visiblePages: "visiblePages", alignment: "alignment", simpleMode: "simpleMode", textLinks: "textLinks", currentChanger: "currentChanger", changerValues: "changerValues", showJumpToPage: "showJumpToPage" }, outputs: { pageEvent: "pageEvent", changerEvent: "changerEvent" }, usesOnChanges: true, ngImport: i0, template: "<nav class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment==='center'\"\n [class.justify-content-end]=\"alignment==='end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n\n <ul *ngIf=\"pages.length\" class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-left\" color=\"primary\"></it-icon>\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.previous-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.previous' | translate}}</ng-container>\n </a>\n </li>\n\n <ng-container *ngIf=\"isSimpleMode; else defaultView\">\n <li class=\"page-item\"><span class=\"page-link\" aria-current=\"page\">{{currentPage + 1}}</span></li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\"><span class=\"page-link\">{{pageNumbers}}</span></li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{'it.core.page-of-total'|translate : {page: (currentPage + 1), total: pageNumbers} }}\n </a>\n </li>\n </ng-container>\n <ng-template #defaultView>\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[0] >= 2\">\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n <li class=\"page-item\" *ngIf=\"pages[0] >= 3\">\n <span class=\"page-link\">...</span>\n </li>\n </ng-container>\n\n <li class=\"page-item\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" aria-current=\"page\" *ngIf=\"page === (currentPage + 1); else inactivePage\">\n <span class=\"d-inline-block d-sm-none\">{{'it.core.page'|translate}}</span> {{page}}\n </a>\n <ng-template #inactivePage>\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{page}}</a>\n </ng-template>\n </li>\n\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers\">\n <li class=\"page-item\" *ngIf=\"pages[pages.length - 1] < (pageNumbers - 1)\">\n <span class=\"page-link\">...</span>\n </li>\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{pageNumbers}}</a>\n </li>\n </ng-container>\n </ng-template>\n\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.next-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.next' | translate}}</ng-container>\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-right\" color=\"primary\"></it-icon>\n </a>\n </li>\n </ul>\n\n <it-dropdown *ngIf=\"currentChanger !== undefined\" id=\"pager-changer\">\n <span button>{{currentChanger}} / {{'it.core.page' | translate | lowercase}}</span>\n <ng-container list>\n <it-dropdown-item *ngFor=\"let value of changerValues\" href=\"#\" externalLink=\"true\"\n (click)=\"changerChange($event, value)\">\n {{value}} / {{'it.core.page' | translate | lowercase}}\n </it-dropdown-item>\n </ng-container>\n </it-dropdown>\n\n <it-input *ngIf=\"isShowJumpToPage\" id=\"jump-to-page\" type=\"number\" [min]=\"1\" [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\" [formControl]=\"jumpToPage\"></it-input>\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.DropdownComponent, selector: "it-dropdown", inputs: ["color", "direction", "fullWidth", "dark"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["itDropdown"] }, { kind: "component", type: i4.DropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "component", type: i5.InputComponent, selector: "it-input", inputs: ["type", "placeholder", "description", "readonly", "max", "min", "step", "currency", "percentage", "adaptive", "autocompleteData", "autocompleteDebounceTime"], outputs: ["onAutocompleteSelected"] }, { kind: "component", type: i6.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'it-pagination[currentPage][pageNumbers]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment==='center'\"\n [class.justify-content-end]=\"alignment==='end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n\n <ul *ngIf=\"pages.length\" class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-left\" color=\"primary\"></it-icon>\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.previous-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.previous' | translate}}</ng-container>\n </a>\n </li>\n\n <ng-container *ngIf=\"isSimpleMode; else defaultView\">\n <li class=\"page-item\"><span class=\"page-link\" aria-current=\"page\">{{currentPage + 1}}</span></li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\"><span class=\"page-link\">{{pageNumbers}}</span></li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{'it.core.page-of-total'|translate : {page: (currentPage + 1), total: pageNumbers} }}\n </a>\n </li>\n </ng-container>\n <ng-template #defaultView>\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[0] >= 2\">\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n <li class=\"page-item\" *ngIf=\"pages[0] >= 3\">\n <span class=\"page-link\">...</span>\n </li>\n </ng-container>\n\n <li class=\"page-item\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" aria-current=\"page\" *ngIf=\"page === (currentPage + 1); else inactivePage\">\n <span class=\"d-inline-block d-sm-none\">{{'it.core.page'|translate}}</span> {{page}}\n </a>\n <ng-template #inactivePage>\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{page}}</a>\n </ng-template>\n </li>\n\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers\">\n <li class=\"page-item\" *ngIf=\"pages[pages.length - 1] < (pageNumbers - 1)\">\n <span class=\"page-link\">...</span>\n </li>\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{pageNumbers}}</a>\n </li>\n </ng-container>\n </ng-template>\n\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.next-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.next' | translate}}</ng-container>\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-right\" color=\"primary\"></it-icon>\n </a>\n </li>\n </ul>\n\n <it-dropdown *ngIf=\"currentChanger !== undefined\" id=\"pager-changer\">\n <span button>{{currentChanger}} / {{'it.core.page' | translate | lowercase}}</span>\n <ng-container list>\n <it-dropdown-item *ngFor=\"let value of changerValues\" href=\"#\" externalLink=\"true\"\n (click)=\"changerChange($event, value)\">\n {{value}} / {{'it.core.page' | translate | lowercase}}\n </it-dropdown-item>\n </ng-container>\n </it-dropdown>\n\n <it-input *ngIf=\"isShowJumpToPage\" id=\"jump-to-page\" type=\"number\" [min]=\"1\" [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\" [formControl]=\"jumpToPage\"></it-input>\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n" }]
|
|
108
|
+
}], ctorParameters: function () { return []; }, propDecorators: { currentPage: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], pageNumbers: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], visiblePages: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], alignment: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], simpleMode: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], textLinks: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], currentChanger: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], changerValues: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], showJumpToPage: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], pageEvent: [{
|
|
127
|
+
type: Output
|
|
128
|
+
}], changerEvent: [{
|
|
129
|
+
type: Output
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxtQkFBbUI7SUEwRjlCO1FBOUVBOzs7V0FHRztRQUNNLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBNEJsQzs7O1dBR0c7UUFDTSxrQkFBYSxHQUFrQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBUTFEOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFakQ7O1dBRUc7UUFDTyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFcEQ7OztXQUdHO1FBQ08sVUFBSyxHQUFrQixFQUFFLENBQUM7UUFFcEM7OztXQUdHO1FBQ08sZUFBVSxHQUErQixJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxDQUFD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QyxDQUFDLHNCQUFzQjtJQUMxRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGFBQWEsQ0FBQyxLQUFZLEVBQUUsS0FBYTtRQUNqRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7SUFDMUQsQ0FBQzs7Z0hBdEpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHViQ2xCaEMsaS9IQW1GQTsyRkRqRWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLHlDQUF5QyxtQkFFbEMsdUJBQXVCLENBQUMsTUFBTTswRUFPdEMsV0FBVztzQkFBbkIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0ksU0FBUztzQkFBbEIsTUFBTTtnQkFLRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGlzVHJ1ZUJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb2xlYW4taW5wdXQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtcGFnaW5hdGlvbltjdXJyZW50UGFnZV1bcGFnZU51bWJlcnNdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICAvKipcbiAgICogSW5kZXggb2YgcGFnZSAoc3RhcnQgMClcbiAgICovXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXggbnVtYmVyIG9mIHBhZ2UgKGNvdW50ZXIpXG4gICAqL1xuICBASW5wdXQoKSBwYWdlTnVtYmVycyE6IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHBhZ2VzIGNsb3Nlc3QgdG8gdGhlIGN1cnJlbnQgb25lIHRvIGRpc3BsYXlcbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgQElucHV0KCkgdmlzaWJsZVBhZ2VzOiBudW1iZXIgPSA1O1xuXG4gIC8qKlxuICAgKiBQYWdpbmF0aW9uIGFsaWdubWVudCAoanVzdGlmeS1jb250ZW50KVxuICAgKi9cbiAgQElucHV0KCkgYWxpZ25tZW50PzogJ2NlbnRlcicgfCAnZW5kJztcblxuICAvKipcbiAgICogRW5hYmxlL0Rpc2FibGUgc2ltcGxlIG1vZGVcbiAgICogUGFnaW5hdGlvbiBpbiB0aGUgXCJTaW1wbGUgbW9kZVwiIHZlcnNpb24gaXMgb3B0aW1pemVkIGZvciBtb2JpbGUgZGV2aWNlcy5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCgpIHNpbXBsZU1vZGU/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIEVuYWJsZS9EaXNhYmxlIHRleHQgbGlua3NcbiAgICogQ2hldnJvbiBpY29ucyB1c2VkIGFzIG5hdmlnYXRpb24gbGlua3MgYXJlIHJlcGxhY2VkIGJ5IHRleHQgbGlua3Mgc3VjaCBhcyDigJxwcmV2aW91c+KAnSBhbmQg4oCcbmV4dOKAnS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCgpIHRleHRMaW5rcz86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogQ3VycmVudCB2YWx1ZSBvZiBDaGFuZ2VyXG4gICAqIElmIGlzIHNldCBzaG93IHRoZSBDaGFuZ2VyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCAtIGhpZGUgdGhlIENoYW5nZXJcbiAgICovXG4gIEBJbnB1dCgpIGN1cnJlbnRDaGFuZ2VyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmFpbGFibGUgQ2hhbmdlciB2YWx1ZXNcbiAgICogQGRlZmF1bHQgWzEwLCAyNSwgNTAsIDEwMF1cbiAgICovXG4gIEBJbnB1dCgpIGNoYW5nZXJWYWx1ZXM6IEFycmF5PG51bWJlcj4gPSBbMTAsIDI1LCA1MCwgMTAwXTtcblxuICAvKipcbiAgICogSGlkZS9TaG93IFwiSnVtcCB0byBwYWdlXCIgaW5wdXRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gaGlkZGVuXG4gICAqL1xuICBASW5wdXQoKSBzaG93SnVtcFRvUGFnZT86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiBwYWdlIGlzIGNoYW5nZWQuIEVtaXQgdGhlIG5ldyBpbmRleCBvZiBwYWdlXG4gICAqL1xuICBAT3V0cHV0KCkgcGFnZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gY2hhbmdlciBpcyBjaGFuZ2VkLiBFbWl0IHRoZSBuZXcgY2hhbmdlciB2YWx1ZVxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFnZXNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHBhZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG5cbiAgLyoqXG4gICAqIEp1bXAgdG8gcGFnZSBpbnB1dFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQganVtcFRvUGFnZTogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGlzU2ltcGxlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuc2ltcGxlTW9kZSk7XG4gIH1cblxuICBnZXQgaXNUZXh0TGlua3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnRleHRMaW5rcyk7XG4gIH1cblxuICBnZXQgaXNTaG93SnVtcFRvUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuc2hvd0p1bXBUb1BhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5qdW1wVG9QYWdlLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksIC8vIERlbGF5IGZpbHRlciBkYXRhIGFmdGVyIHRpbWUgc3BhbiBoYXMgcGFzc2VkIHdpdGhvdXQgYW5vdGhlciBzb3VyY2UgZW1pc3Npb25cbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSAmJiB0aGlzLmp1bXBUb1BhZ2UudmFsaWQpXG4gICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5wYWdlRXZlbnQuZW1pdCh2YWx1ZSEgLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VzID0gdGhpcy5jYWxjdWxhdGVQYWdlcygpO1xuICAgIGlmIChjaGFuZ2VzWydjdXJyZW50UGFnZSddKSB7XG4gICAgICB0aGlzLmp1bXBUb1BhZ2Uuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYXJyYXkgdG8gZ2VuZXJhdGUgcGFnaW5hdGlvbiBvZiBgdmlzaWJsZVBhZ2VzYCBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VzKCk6IEFycmF5PG51bWJlcj4ge1xuICAgIGlmICh0aGlzLmlzU2ltcGxlTW9kZSkge1xuICAgICAgcmV0dXJuIFt0aGlzLmN1cnJlbnRQYWdlXTtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLnBhZ2VOdW1iZXJzID4gdGhpcy52aXNpYmxlUGFnZXMgPyB0aGlzLnZpc2libGVQYWdlcyA6IHRoaXMucGFnZU51bWJlcnM7XG5cbiAgICBjb25zdCBoYWxmVmlzaWJsZVBhZ2VzID0gTWF0aC5mbG9vcih0aGlzLnZpc2libGVQYWdlcyAvIDIpO1xuICAgIGxldCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlID4gaGFsZlZpc2libGVQYWdlcyAmJiB0aGlzLnBhZ2VOdW1iZXJzID4gdGhpcy52aXNpYmxlUGFnZXMpID9cbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgLSBoYWxmVmlzaWJsZVBhZ2VzICsgMSA6IDE7XG5cbiAgICBpZiAodGhpcy5wYWdlTnVtYmVycyA+IHRoaXMudmlzaWJsZVBhZ2VzKSB7XG4gICAgICBpZiAoKHRoaXMuY3VycmVudFBhZ2UgKyAxKSA+PSB0aGlzLnBhZ2VOdW1iZXJzKSB7XG4gICAgICAgIHN0YXJ0IC09IGhhbGZWaXNpYmxlUGFnZXM7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgPj0gKHRoaXMucGFnZU51bWJlcnMgLSBoYWxmVmlzaWJsZVBhZ2VzKSkge1xuICAgICAgICBzdGFydCAtPSAodGhpcy5wYWdlTnVtYmVycyAtICh0aGlzLmN1cnJlbnRQYWdlICsgMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sIChfLCBpKSA9PiBpICsgc3RhcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIGNsaWNrIHBhZ2UgY2hhbmdlXG4gICAqIEBwYXJhbSBldmVudCBjbGljayBldmVudFxuICAgKiBAcGFyYW0gbmV3UGFnZSB0aGUgbmV3IHBhZ2Ugb2YgdGFibGVcbiAgICovXG4gIHByb3RlY3RlZCBwYWdlQ2hhbmdlKGV2ZW50OiBFdmVudCwgbmV3UGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnBhZ2VFdmVudC5lbWl0KG5ld1BhZ2UgLSAxKTsgLy8gZW1pdCBuZXcgcGFnZSBpbmRleFxuICB9XG5cbiAgLyoqXG4gICAqIE9uIGNsaWNrIGNoYW5nZXJcbiAgICogQHBhcmFtIGV2ZW50IGNsaWNrIGV2ZW50XG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IGNoYW5nZXIgdmFsdWVcbiAgICovXG4gIHByb3RlY3RlZCBjaGFuZ2VyQ2hhbmdlKGV2ZW50OiBFdmVudCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5jaGFuZ2VyRXZlbnQuZW1pdCh2YWx1ZSk7IC8vIGVtaXQgbmV3IGNoYW5nZXIgdmFsdWVcbiAgfVxuXG59XG4iLCI8bmF2IGNsYXNzPVwicGFnaW5hdGlvbi13cmFwcGVyXCJcbiAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1jZW50ZXJdPVwiYWxpZ25tZW50PT09J2NlbnRlcidcIlxuICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJhbGlnbm1lbnQ9PT0nZW5kJ1wiXG4gICAgIFtjbGFzcy5wYWdpbmF0aW9uLXRvdGFsXT1cInRvdGFsTnVtYmVyVGV4dC5oYXNDaGlsZE5vZGVzKClcIj5cblxuICA8dWwgKm5nSWY9XCJwYWdlcy5sZW5ndGhcIiBjbGFzcz1cInBhZ2luYXRpb25cIj5cbiAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPCAxXCI+XG4gICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIFtjbGFzcy50ZXh0XT1cImlzVGV4dExpbmtzXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwicGFnZUNoYW5nZSgkZXZlbnQsIGN1cnJlbnRQYWdlKVwiPlxuICAgICAgICA8aXQtaWNvbiAqbmdJZj1cIiFpc1RleHRMaW5rc1wiIG5hbWU9XCJjaGV2cm9uLWxlZnRcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAge3soaXNUZXh0TGlua3MgPyAnaXQuY29yZS5wYWdlJyA6ICdpdC5jb3JlLnByZXZpb3VzLXBhZ2UnKSB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGV4dExpbmtzXCI+e3snaXQuY29yZS5wcmV2aW91cycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaW1wbGVNb2RlOyBlbHNlIGRlZmF1bHRWaWV3XCI+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj48c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiIGFyaWEtY3VycmVudD1cInBhZ2VcIj57e2N1cnJlbnRQYWdlICsgMX19PC9zcGFuPjwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj48c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPi88L3NwYW4+PC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPjxzcGFuIGNsYXNzPVwicGFnZS1saW5rXCI+e3twYWdlTnVtYmVyc319PC9zcGFuPjwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW0gdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiBhcmlhLWN1cnJlbnQ9XCJwYWdlXCI+XG4gICAgICAgICAge3snaXQuY29yZS5wYWdlLW9mLXRvdGFsJ3x0cmFuc2xhdGUgOiB7cGFnZTogKGN1cnJlbnRQYWdlICsgMSksIHRvdGFsOiBwYWdlTnVtYmVyc30gfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRWaWV3PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VOdW1iZXJzID4gdmlzaWJsZVBhZ2VzICYmIHBhZ2VzWzBdID49IDJcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIChjbGljayk9XCJwYWdlQ2hhbmdlKCRldmVudCwgMSlcIj4xPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiAqbmdJZj1cInBhZ2VzWzBdID49IDNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiPlxuICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGFyaWEtY3VycmVudD1cInBhZ2VcIiAqbmdJZj1cInBhZ2UgPT09IChjdXJyZW50UGFnZSArIDEpOyBlbHNlIGluYWN0aXZlUGFnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgZC1zbS1ub25lXCI+e3snaXQuY29yZS5wYWdlJ3x0cmFuc2xhdGV9fTwvc3Bhbj4ge3twYWdlfX1cbiAgICAgICAgPC9hPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2luYWN0aXZlUGFnZT5cbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInBhZ2VDaGFuZ2UoJGV2ZW50LCBwYWdlKVwiPnt7cGFnZX19PC9hPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9saT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VOdW1iZXJzID4gdmlzaWJsZVBhZ2VzICYmIHBhZ2VzW3BhZ2VzLmxlbmd0aCAtIDFdIDwgcGFnZU51bWJlcnNcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgKm5nSWY9XCJwYWdlc1twYWdlcy5sZW5ndGggLSAxXSA8IChwYWdlTnVtYmVycyAtIDEpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmtcIj4uLi48L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwicGFnZUNoYW5nZSgkZXZlbnQsIHBhZ2VOdW1iZXJzKVwiPnt7cGFnZU51bWJlcnN9fTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPj0gcGFnZU51bWJlcnMgLSAxXCI+XG4gICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIFtjbGFzcy50ZXh0XT1cImlzVGV4dExpbmtzXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwicGFnZUNoYW5nZSgkZXZlbnQsIGN1cnJlbnRQYWdlICsgMilcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICB7eyhpc1RleHRMaW5rcyA/ICdpdC5jb3JlLnBhZ2UnIDogJ2l0LmNvcmUubmV4dC1wYWdlJykgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RleHRMaW5rc1wiPnt7J2l0LmNvcmUubmV4dCcgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8aXQtaWNvbiAqbmdJZj1cIiFpc1RleHRMaW5rc1wiIG5hbWU9XCJjaGV2cm9uLXJpZ2h0XCIgY29sb3I9XCJwcmltYXJ5XCI+PC9pdC1pY29uPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG5cbiAgPGl0LWRyb3Bkb3duICpuZ0lmPVwiY3VycmVudENoYW5nZXIgIT09IHVuZGVmaW5lZFwiIGlkPVwicGFnZXItY2hhbmdlclwiPlxuICAgIDxzcGFuIGJ1dHRvbj57e2N1cnJlbnRDaGFuZ2VyfX0gLyB7eydpdC5jb3JlLnBhZ2UnIHwgdHJhbnNsYXRlIHwgbG93ZXJjYXNlfX08L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciBsaXN0PlxuICAgICAgPGl0LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IHZhbHVlIG9mIGNoYW5nZXJWYWx1ZXNcIiBocmVmPVwiI1wiIGV4dGVybmFsTGluaz1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZXJDaGFuZ2UoJGV2ZW50LCB2YWx1ZSlcIj5cbiAgICAgICAge3t2YWx1ZX19IC8ge3snaXQuY29yZS5wYWdlJyB8IHRyYW5zbGF0ZSB8IGxvd2VyY2FzZX19XG4gICAgICA8L2l0LWRyb3Bkb3duLWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvaXQtZHJvcGRvd24+XG5cbiAgPGl0LWlucHV0ICpuZ0lmPVwiaXNTaG93SnVtcFRvUGFnZVwiIGlkPVwianVtcC10by1wYWdlXCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMVwiIFttYXhdPVwicGFnZU51bWJlcnNcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIignaXQuY29yZS5nby10bycgfCB0cmFuc2xhdGUpICsgJy4uLidcIiBbZm9ybUNvbnRyb2xdPVwianVtcFRvUGFnZVwiPjwvaXQtaW5wdXQ+XG5cbiAgPHAgW2NsYXNzLmQtbm9uZV09XCIhdG90YWxOdW1iZXJUZXh0Lmhhc0NoaWxkTm9kZXMoKVwiICN0b3RhbE51bWJlclRleHQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3A+XG48L25hdj5cbiJdfQ==
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { Popover } from 'bootstrap-italia';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PopoverDirective {
|
|
6
|
+
constructor(_elementRef) {
|
|
7
|
+
this._elementRef = _elementRef;
|
|
8
|
+
/**
|
|
9
|
+
* This event fires immediately when the show method is called.
|
|
10
|
+
*/
|
|
11
|
+
this.onShow = new EventEmitter();
|
|
12
|
+
/**
|
|
13
|
+
* This event is triggered when the tooltip has been made visible to the user (it will wait for the CSS transitions to complete).
|
|
14
|
+
*/
|
|
15
|
+
this.onShown = new EventEmitter();
|
|
16
|
+
/**
|
|
17
|
+
* This event fires immediately when the hide method is called.
|
|
18
|
+
*/
|
|
19
|
+
this.onHide = new EventEmitter();
|
|
20
|
+
/**
|
|
21
|
+
* This event is raised when the tooltip has finished being hidden from the user (it will wait for the CSS transitions to complete).
|
|
22
|
+
*/
|
|
23
|
+
this.onHidden = new EventEmitter();
|
|
24
|
+
/**
|
|
25
|
+
* This event fires after the show event when the tooltip template has been added to the DOM.
|
|
26
|
+
*/
|
|
27
|
+
this.onInserted = new EventEmitter();
|
|
28
|
+
this.element = this._elementRef.nativeElement;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Define the popover content
|
|
32
|
+
* @param content the popover content
|
|
33
|
+
*/
|
|
34
|
+
set content(content) {
|
|
35
|
+
this.element.setAttribute('data-bs-content', content);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Define the popover title
|
|
39
|
+
* @param title the popover title
|
|
40
|
+
*/
|
|
41
|
+
set title(title) {
|
|
42
|
+
if (title) {
|
|
43
|
+
this.element.setAttribute('title', title);
|
|
44
|
+
this.element.setAttribute('data-bs-original-title', title);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Define the popover placement
|
|
49
|
+
* @param placement
|
|
50
|
+
*/
|
|
51
|
+
set placement(placement) {
|
|
52
|
+
this.element.setAttribute('data-bs-placement', placement);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Appends the popover to a specific element.
|
|
56
|
+
* @param container
|
|
57
|
+
*/
|
|
58
|
+
set container(container) {
|
|
59
|
+
if (container) {
|
|
60
|
+
this.element.setAttribute('data-container', container);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Indicates whether the title contains html
|
|
65
|
+
* @param html true if contain html
|
|
66
|
+
*/
|
|
67
|
+
set html(html) {
|
|
68
|
+
this.element.setAttribute('data-bs-html', isTrueBooleanInput(html) ? 'true' : 'false');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* How popover is triggered
|
|
72
|
+
* - 'hover': To open the Popover on hover of the mouse over the element
|
|
73
|
+
* - 'focus': To ignore popovers on the user's next click of an element other than the toggle element.
|
|
74
|
+
* @param trigger
|
|
75
|
+
*/
|
|
76
|
+
set hover(trigger) {
|
|
77
|
+
if (trigger) {
|
|
78
|
+
this.element.setAttribute('data-bs-trigger', trigger);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
ngAfterViewInit() {
|
|
82
|
+
this.element.setAttribute('data-bs-toggle', 'popover');
|
|
83
|
+
this.popover = Popover.getOrCreateInstance(this.element);
|
|
84
|
+
this.element.addEventListener('show.bs.popover', event => this.onShow.emit(event));
|
|
85
|
+
this.element.addEventListener('shown.bs.popover', event => this.onShown.emit(event));
|
|
86
|
+
this.element.addEventListener('hide.bs.popover', event => this.onHide.emit(event));
|
|
87
|
+
this.element.addEventListener('hidden.bs.popover', event => this.onHidden.emit(event));
|
|
88
|
+
this.element.addEventListener('inserted.bs.popover', event => this.onInserted.emit(event));
|
|
89
|
+
}
|
|
90
|
+
ngOnDestroy() {
|
|
91
|
+
this.dispose();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Shows the popover of an item.
|
|
95
|
+
*/
|
|
96
|
+
show() {
|
|
97
|
+
this.popover?.show();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Hide the popover of an element.
|
|
101
|
+
*/
|
|
102
|
+
hide() {
|
|
103
|
+
this.popover?.hide();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Activate / Deactivate the popover of an element
|
|
107
|
+
*/
|
|
108
|
+
toggle() {
|
|
109
|
+
this.popover?.toggle();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Hides and destroys the popover of an element.
|
|
113
|
+
*/
|
|
114
|
+
dispose() {
|
|
115
|
+
this.popover?.dispose();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Gives the popover of an element a chance to be shown.
|
|
119
|
+
*/
|
|
120
|
+
enable() {
|
|
121
|
+
this.popover?.enable();
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Removes the ability to show the popover of an element.
|
|
125
|
+
*/
|
|
126
|
+
disable() {
|
|
127
|
+
this.popover?.disable();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Toggles the possibility that the popover of an element is shown or hidden.
|
|
131
|
+
*/
|
|
132
|
+
toggleEnabled() {
|
|
133
|
+
this.popover?.disable();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Updates the position of an element's popover.
|
|
137
|
+
*/
|
|
138
|
+
update() {
|
|
139
|
+
this.popover?.disable();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
PopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PopoverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
143
|
+
PopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: PopoverDirective, selector: "[itPopover]", inputs: { content: ["itPopover", "content"], title: ["popoverTitle", "title"], placement: ["popoverPlacement", "placement"], container: ["popoverContainer", "container"], html: ["popoverHtml", "html"], hover: ["popoverTrigger", "hover"] }, outputs: { onShow: "onShow", onShown: "onShown", onHide: "onHide", onHidden: "onHidden", onInserted: "onInserted" }, exportAs: ["itPopover"], ngImport: i0 });
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PopoverDirective, decorators: [{
|
|
145
|
+
type: Directive,
|
|
146
|
+
args: [{
|
|
147
|
+
selector: '[itPopover]',
|
|
148
|
+
exportAs: 'itPopover'
|
|
149
|
+
}]
|
|
150
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { content: [{
|
|
151
|
+
type: Input,
|
|
152
|
+
args: ['itPopover']
|
|
153
|
+
}], title: [{
|
|
154
|
+
type: Input,
|
|
155
|
+
args: ['popoverTitle']
|
|
156
|
+
}], placement: [{
|
|
157
|
+
type: Input,
|
|
158
|
+
args: ['popoverPlacement']
|
|
159
|
+
}], container: [{
|
|
160
|
+
type: Input,
|
|
161
|
+
args: ['popoverContainer']
|
|
162
|
+
}], html: [{
|
|
163
|
+
type: Input,
|
|
164
|
+
args: ['popoverHtml']
|
|
165
|
+
}], hover: [{
|
|
166
|
+
type: Input,
|
|
167
|
+
args: ['popoverTrigger']
|
|
168
|
+
}], onShow: [{
|
|
169
|
+
type: Output
|
|
170
|
+
}], onShown: [{
|
|
171
|
+
type: Output
|
|
172
|
+
}], onHide: [{
|
|
173
|
+
type: Output
|
|
174
|
+
}], onHidden: [{
|
|
175
|
+
type: Output
|
|
176
|
+
}], onInserted: [{
|
|
177
|
+
type: Output
|
|
178
|
+
}] } });
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU0zQyxNQUFNLE9BQU8sZ0JBQWdCO0lBd0YzQixZQUNtQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTdCMUM7O1dBRUc7UUFDTyxXQUFNLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0Q7O1dBRUc7UUFDTyxZQUFPLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUQ7O1dBRUc7UUFDTyxXQUFNLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0Q7O1dBRUc7UUFDTyxhQUFRLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0Q7O1dBRUc7UUFDTyxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUNoRCxDQUFDO0lBMUZEOzs7T0FHRztJQUNILElBQXdCLE9BQU8sQ0FBQyxPQUFlO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUEyQixLQUFLLENBQUMsS0FBeUI7UUFDeEQsSUFBSSxL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QUM7SUFFRDs7T0FFRztJQUNJLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs2R0FuS1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCO2lHQU95QixPQUFPO3NCQUE5QixLQUFLO3VCQUFDLFdBQVc7Z0JBUVMsS0FBSztzQkFBL0IsS0FBSzt1QkFBQyxjQUFjO2dCQVlVLFNBQVM7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQVFNLFNBQVM7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQVVDLElBQUk7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFVUyxLQUFLO3NCQUFqQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFTYixNQUFNO3NCQUFmLE1BQU07Z0JBS0csT0FBTztzQkFBaEIsTUFBTTtnQkFLRyxNQUFNO3NCQUFmLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFLRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudFBsYWNlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvY29yZSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGlzVHJ1ZUJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb2xlYW4taW5wdXQnO1xuaW1wb3J0IHsgUG9wb3ZlciB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaXRQb3BvdmVyXScsXG4gIGV4cG9ydEFzOiAnaXRQb3BvdmVyJ1xufSlcbmV4cG9ydCBjbGFzcyBQb3BvdmVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBwb3BvdmVyIGNvbnRlbnRcbiAgICogQHBhcmFtIGNvbnRlbnQgdGhlIHBvcG92ZXIgY29udGVudFxuICAgKi9cbiAgQElucHV0KCdpdFBvcG92ZXInKSBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWNvbnRlbnQnLCBjb250ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHBvcG92ZXIgdGl0bGVcbiAgICogQHBhcmFtIHRpdGxlIHRoZSBwb3BvdmVyIHRpdGxlXG4gICAqL1xuICBASW5wdXQoJ3BvcG92ZXJUaXRsZScpIHNldCB0aXRsZSh0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRpdGxlKTtcbiAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnLCB0aXRsZSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBwb3BvdmVyIHBsYWNlbWVudFxuICAgKiBAcGFyYW0gcGxhY2VtZW50XG4gICAqL1xuICBASW5wdXQoJ3BvcG92ZXJQbGFjZW1lbnQnKSBzZXQgcGxhY2VtZW50KHBsYWNlbWVudDogRWxlbWVudFBsYWNlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtcGxhY2VtZW50JywgcGxhY2VtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBwb3BvdmVyIHRvIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAgICogQHBhcmFtIGNvbnRhaW5lclxuICAgKi9cbiAgQElucHV0KCdwb3BvdmVyQ29udGFpbmVyJykgc2V0IGNvbnRhaW5lcihjb250YWluZXI6ICdib2R5JyB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtY29udGFpbmVyJywgY29udGFpbmVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRpdGxlIGNvbnRhaW5zIGh0bWxcbiAgICogQHBhcmFtIGh0bWwgdHJ1ZSBpZiBjb250YWluIGh0bWxcbiAgICovXG4gIEBJbnB1dCgncG9wb3Zlckh0bWwnKSBzZXQgaHRtbChodG1sOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWh0bWwnLCBpc1RydWVCb29sZWFuSW5wdXQoaHRtbCkgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgcG9wb3ZlciBpcyB0cmlnZ2VyZWRcbiAgICogLSAnaG92ZXInOiBUbyBvcGVuIHRoZSBQb3BvdmVyIG9uIGhvdmVyIG9mIHRoZSBtb3VzZSBvdmVyIHRoZSBlbGVtZW50XG4gICAqIC0gJ2ZvY3VzJzogVG8gaWdub3JlIHBvcG92ZXJzIG9uIHRoZSB1c2VyJ3MgbmV4dCBjbGljayBvZiBhbiBlbGVtZW50IG90aGVyIHRoYW4gdGhlIHRvZ2dsZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gdHJpZ2dlclxuICAgKi9cbiAgQElucHV0KCdwb3BvdmVyVHJpZ2dlcicpIHNldCBob3Zlcih0cmlnZ2VyOiAnY2xpY2snIHwgJ2hvdmVyJyB8ICdmb2N1cycgfCAnbWFudWFsJyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLXRyaWdnZXInLCB0cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBldmVudCBmaXJlcyBpbW1lZGlhdGVseSB3aGVuIHRoZSBzaG93IG1ldGhvZCBpcyBjYWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0b29sdGlwIGhhcyBiZWVuIG1hZGUgdmlzaWJsZSB0byB0aGUgdXNlciAoaXQgd2lsbCB3YWl0IGZvciB0aGUgQ1NTIHRyYW5zaXRpb25zIHRvIGNvbXBsZXRlKS5cbiAgICovXG4gIEBPdXRwdXQoKSBvblNob3duOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGZpcmVzIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGhpZGUgbWV0aG9kIGlzIGNhbGxlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgcmFpc2VkIHdoZW4gdGhlIHRvb2x0aXAgaGFzIGZpbmlzaGVkIGJlaW5nIGhpZGRlbiBmcm9tIHRoZSB1c2VyIChpdCB3aWxsIHdhaXQgZm9yIHRoZSBDU1MgdHJhbnNpdGlvbnMgdG8gY29tcGxldGUpLlxuICAgKi9cbiAgQE91dHB1dCgpIG9uSGlkZGVuOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGZpcmVzIGFmdGVyIHRoZSBzaG93IGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGVtcGxhdGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIERPTS5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkluc2VydGVkOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgcG9wb3Zlcj86IFBvcG92ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1icy10b2dnbGUnLCAncG9wb3ZlcicpO1xuICAgIHRoaXMucG9wb3ZlciA9IFBvcG92ZXIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Nob3cuYnMucG9wb3ZlcicsIGV2ZW50ID0+IHRoaXMub25TaG93LmVtaXQoZXZlbnQpKTtcbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2hvd24uYnMucG9wb3ZlcicsIGV2ZW50ID0+IHRoaXMub25TaG93bi5lbWl0KGV2ZW50KSk7XG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2hpZGUuYnMucG9wb3ZlcicsIGV2ZW50ID0+IHRoaXMub25IaWRlLmVtaXQoZXZlbnQpKTtcbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaGlkZGVuLmJzLnBvcG92ZXInLCBldmVudCA9PiB0aGlzLm9uSGlkZGVuLmVtaXQoZXZlbnQpKTtcbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5zZXJ0ZWQuYnMucG9wb3ZlcicsIGV2ZW50ID0+IHRoaXMub25JbnNlcnRlZC5lbWl0KGV2ZW50KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcG9wb3ZlciBvZiBhbiBpdGVtLlxuICAgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyPy5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSB0aGUgcG9wb3ZlciBvZiBhbiBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyPy5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgLyBEZWFjdGl2YXRlIHRoZSBwb3BvdmVyIG9mIGFuIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyPy50b2dnbGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyBhbmQgZGVzdHJveXMgdGhlIHBvcG92ZXIgb2YgYW4gZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVzIHRoZSBwb3BvdmVyIG9mIGFuIGVsZW1lbnQgYSBjaGFuY2UgdG8gYmUgc2hvd24uXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8uZW5hYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYWJpbGl0eSB0byBzaG93IHRoZSBwb3BvdmVyIG9mIGFuIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXI/LmRpc2FibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwb3BvdmVyIG9mIGFuIGVsZW1lbnQgaXMgc2hvd24gb3IgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZUVuYWJsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyPy5kaXNhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCdzIHBvcG92ZXIuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8uZGlzYWJsZSgpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@ngx-translate/core";
|
|
6
|
+
export class ProgressBarComponent {
|
|
7
|
+
/**
|
|
8
|
+
* Return the background color
|
|
9
|
+
*/
|
|
10
|
+
get bgColor() {
|
|
11
|
+
if (!this.color) {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
return ` bg-${this.color}`;
|
|
15
|
+
}
|
|
16
|
+
get isIndeterminate() {
|
|
17
|
+
return isTrueBooleanInput(this.indeterminate);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
ProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
ProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ProgressBarComponent, selector: "it-progress-bar[value]", inputs: { value: "value", showLabel: "showLabel", indeterminate: "indeterminate", color: "color" }, ngImport: i0, template: "<div class=\"progress-bar-wrapper\">\n <div *ngIf=\"showLabel\" class=\"progress-bar-label\">\n <span class=\"visually-hidden\">{{'it.core.progress'|translate}} </span>{{value}}%\n </div>\n <div class=\"progress\"\n [class.progress-color]=\"!!color\"\n [class.progress-indeterminate]=\"isIndeterminate\">\n\n <div *ngIf=\"isIndeterminate; else determinate\" class=\"progress-bar{{bgColor}}\" role=\"progressbar\"></div>\n <ng-template #determinate>\n <div class=\"progress-bar{{bgColor}}\" role=\"progressbar\" [style.width.%]=\"value\"\n [attr.aria-valuenow]=\"value\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'it-progress-bar[value]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"progress-bar-wrapper\">\n <div *ngIf=\"showLabel\" class=\"progress-bar-label\">\n <span class=\"visually-hidden\">{{'it.core.progress'|translate}} </span>{{value}}%\n </div>\n <div class=\"progress\"\n [class.progress-color]=\"!!color\"\n [class.progress-indeterminate]=\"isIndeterminate\">\n\n <div *ngIf=\"isIndeterminate; else determinate\" class=\"progress-bar{{bgColor}}\" role=\"progressbar\"></div>\n <ng-template #determinate>\n <div class=\"progress-bar{{bgColor}}\" role=\"progressbar\" [style.width.%]=\"value\"\n [attr.aria-valuenow]=\"value\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n </ng-template>\n </div>\n</div>\n" }]
|
|
25
|
+
}], propDecorators: { value: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], showLabel: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], indeterminate: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], color: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQU9oRixNQUFNLE9BQU8sb0JBQW9CO0lBc0IvQjs7T0FFRztJQUNILElBQUksT0FBTztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU8sT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDOztpSEFuQ1Usb0JBQW9CO3FHQUFwQixvQkFBb0Isa0tDVGpDLDJyQkFlQTsyRkROYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU90QyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0JhckNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LXByb2dyZXNzLWJhclt2YWx1ZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCYXJDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvZ3Jlc3MgYmFyIHZhbHVlIFswLCAxMDBdXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgcHJvZ3Jlc3MgbGFiZWxcbiAgICovXG4gIEBJbnB1dCgpIHNob3dMYWJlbD86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogU2hvdyB0aGUgcHJvZ3Jlc3MgYXMgaW5kZXRlcm1pbmF0ZVxuICAgKi9cbiAgQElucHV0KCkgaW5kZXRlcm1pbmF0ZT86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogVGhlIHByb2dyZXNzIGJhciBjb2xvclxuICAgKi9cbiAgQElucHV0KCkgY29sb3I/OiBQcm9ncmVzc0JhckNvbG9yO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICovXG4gIGdldCBiZ0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAgYmctJHt0aGlzLmNvbG9yfWA7XG4gIH1cblxuICBnZXQgaXNJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5pbmRldGVybWluYXRlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci13cmFwcGVyXCI+XG4gIDxkaXYgKm5nSWY9XCJzaG93TGFiZWxcIiBjbGFzcz1cInByb2dyZXNzLWJhci1sYWJlbFwiPlxuICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snaXQuY29yZS5wcm9ncmVzcyd8dHJhbnNsYXRlfX0gPC9zcGFuPnt7dmFsdWV9fSVcbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiXG4gICAgICAgW2NsYXNzLnByb2dyZXNzLWNvbG9yXT1cIiEhY29sb3JcIlxuICAgICAgIFtjbGFzcy5wcm9ncmVzcy1pbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVwiPlxuXG4gICAgPGRpdiAqbmdJZj1cImlzSW5kZXRlcm1pbmF0ZTsgZWxzZSBkZXRlcm1pbmF0ZVwiIGNsYXNzPVwicHJvZ3Jlc3MtYmFye3tiZ0NvbG9yfX1cIiByb2xlPVwicHJvZ3Jlc3NiYXJcIj48L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2RldGVybWluYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhcnt7YmdDb2xvcn19XCIgcm9sZT1cInByb2dyZXNzYmFyXCIgW3N0eWxlLndpZHRoLiVdPVwidmFsdWVcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCIgYXJpYS12YWx1ZW1pbj1cIjBcIiBhcmlhLXZhbHVlbWF4PVwiMTAwXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../progress-bar/progress-bar.component";
|
|
6
|
+
export class ProgressButtonComponent {
|
|
7
|
+
get isProgress() {
|
|
8
|
+
return typeof this.progress === 'number' || isTrueBooleanInput(this.progress);
|
|
9
|
+
}
|
|
10
|
+
get progressValue() {
|
|
11
|
+
return typeof this.progress === 'number' ? this.progress : 0;
|
|
12
|
+
}
|
|
13
|
+
get isIndeterminate() {
|
|
14
|
+
return typeof this.progress !== 'number' && isTrueBooleanInput(this.progress);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
ProgressButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ProgressButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
ProgressButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ProgressButtonComponent, selector: "button[itButton][progress]", inputs: { progress: "progress", progressColor: "progressColor" }, ngImport: i0, template: "<ng-content></ng-content>\n\n<it-progress-bar *ngIf=\"isProgress\"\n [value]=\"progressValue\"\n [indeterminate]=\"isIndeterminate\"\n [color]=\"progressColor\"></it-progress-bar>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ProgressBarComponent, selector: "it-progress-bar[value]", inputs: ["value", "showLabel", "indeterminate", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ProgressButtonComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ selector: 'button[itButton][progress]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n\n<it-progress-bar *ngIf=\"isProgress\"\n [value]=\"progressValue\"\n [indeterminate]=\"isIndeterminate\"\n [color]=\"progressColor\"></it-progress-bar>\n" }]
|
|
22
|
+
}], propDecorators: { progress: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], progressColor: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}] } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1idXR0b24vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1idXR0b24vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQVFoRixNQUFNLE9BQU8sdUJBQXVCO0lBZ0JsQyxJQUFJLFVBQVU7UUFDWixPQUFPLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEYsQ0FBQzs7b0hBMUJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLG9JQ1RwQyx1T0FNQTsyRkRHYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUVyQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29sb3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdidXR0b25baXRCdXR0b25dW3Byb2dyZXNzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmVzcy1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0J1dHRvbkNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIEJlaGF2aW9yIG9mIHRoZSBwcm9ncmVzcyBiYXJcbiAgICogLSA8Yj50cnVlPC9iPjogU2hvdyBpbmRldGVybWluYXRlIHByb2dyZXNzIGJhclxuICAgKiAtIDxiPmZhbHNlPC9iPiBvciA8Yj51bmRlZmluZWQ8L2I+OiBIaWRlIHByb2dyZXNzIGJhclxuICAgKiAtIDxiPm51bWJlcjwvYj4gWzAsIDEwMF06IEFzc2lnbiBhIHNwZWNpZmljIHZhbHVlIHRvIHRoZSBwcm9ncmVzcyBiYXJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBwcm9ncmVzcz86IG51bWJlciB8IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogVGhlIHByb2dyZXNzIGJhciBjb2xvclxuICAgKi9cbiAgQElucHV0KCkgcHJvZ3Jlc3NDb2xvcj86IFByb2dyZXNzQmFyQ29sb3I7XG5cbiAgZ2V0IGlzUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnByb2dyZXNzID09PSAnbnVtYmVyJyB8fCBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5wcm9ncmVzcyk7XG4gIH1cblxuICBnZXQgcHJvZ3Jlc3NWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wcm9ncmVzcyA9PT0gJ251bWJlcicgPyB0aGlzLnByb2dyZXNzIDogMDtcbiAgfVxuXG4gIGdldCBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnByb2dyZXNzICE9PSAnbnVtYmVyJyAmJiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5wcm9ncmVzcyk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48aXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNQcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9ncmVzc1ZhbHVlXCJcbiAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInByb2dyZXNzQ29sb3JcIj48L2l0LXByb2dyZXNzLWJhcj5cbiJdfQ==
|