design-angular-kit 1.0.0-16 → 1.0.0-18
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 +31 -6
- package/assets/i18n/en.json +4 -1
- package/assets/i18n/it.json +4 -1
- package/esm2022/lib/abstracts/abstract-form.component.mjs +186 -0
- package/esm2022/lib/abstracts/abstract.component.mjs +45 -0
- package/esm2022/lib/components/components.module.mjs +188 -0
- package/esm2022/lib/components/core/accordion/accordion.component.mjs +38 -0
- package/esm2022/lib/components/core/alert/alert.component.mjs +74 -0
- package/esm2022/lib/components/core/badge/badge.directive.mjs +38 -0
- package/esm2022/lib/components/core/button/button.directive.mjs +85 -0
- package/esm2022/lib/components/core/callout/callout.component.mjs +57 -0
- package/esm2022/lib/components/core/card/card.component.mjs +64 -0
- package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +89 -0
- package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
- package/esm2022/lib/components/core/carousel/carousel.module.mjs +23 -0
- package/esm2022/lib/components/core/chip/chip.component.mjs +96 -0
- package/esm2022/lib/components/core/collapse/collapse.component.mjs +101 -0
- package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
- package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
- package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +59 -0
- package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +27 -0
- package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +143 -0
- package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +68 -0
- package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +18 -0
- package/esm2022/lib/components/core/forward/forward.directive.mjs +53 -0
- package/esm2022/lib/components/core/link/link.component.mjs +46 -0
- package/esm2022/lib/components/core/list/list/list.component.mjs +17 -0
- package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +40 -0
- package/esm2022/lib/components/core/list/list.module.mjs +23 -0
- package/esm2022/lib/components/core/modal/modal.component.mjs +164 -0
- package/esm2022/lib/components/core/notifications/notifications.component.mjs +111 -0
- package/esm2022/lib/components/core/pagination/pagination.component.mjs +133 -0
- package/esm2022/lib/components/core/popover/popover.directive.mjs +175 -0
- package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +35 -0
- package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +27 -0
- package/esm2022/lib/components/core/spinner/spinner.component.mjs +36 -0
- package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +138 -0
- package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +19 -0
- package/esm2022/lib/components/core/steppers/steppers.module.mjs +23 -0
- package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +60 -0
- package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +36 -0
- package/esm2022/lib/components/core/tab/tab.module.mjs +23 -0
- package/esm2022/lib/components/core/table/table.component.mjs +57 -0
- package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +142 -0
- package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +49 -0
- package/esm2022/lib/components/form/form.module.mjs +55 -0
- package/esm2022/lib/components/form/input/input.component.mjs +239 -0
- package/esm2022/lib/components/form/password-input/password-input.component.mjs +155 -0
- package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +69 -0
- package/esm2022/lib/components/form/range/range.component.mjs +64 -0
- package/esm2022/lib/components/form/rating/rating.component.mjs +51 -0
- package/esm2022/lib/components/form/select/select.component.mjs +70 -0
- package/esm2022/lib/components/form/textarea/textarea.component.mjs +47 -0
- package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +140 -0
- package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +112 -0
- package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +71 -0
- package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +64 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +57 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +23 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +18 -0
- package/esm2022/lib/components/navigation/header/header.component.mjs +58 -0
- package/esm2022/lib/components/utils/error-page/error-page.component.mjs +81 -0
- package/esm2022/lib/components/utils/icon/icon.component.mjs +55 -0
- package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +41 -0
- package/esm2022/lib/design-angular-kit.module.mjs +68 -0
- package/{esm2020 → esm2022}/lib/interfaces/form.mjs +1 -1
- package/esm2022/lib/interfaces/icon.mjs +165 -0
- package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +37 -0
- package/esm2022/lib/services/notification/notification.service.mjs +120 -0
- package/esm2022/lib/utils/file-utils.mjs +73 -0
- package/esm2022/lib/utils/regex.mjs +31 -0
- package/esm2022/lib/validators/it-validators.mjs +153 -0
- package/esm2022/public_api.mjs +85 -0
- package/fesm2022/design-angular-kit.mjs +4615 -0
- package/fesm2022/design-angular-kit.mjs.map +1 -0
- package/lib/abstracts/abstract-form.component.d.ts +4 -4
- package/lib/abstracts/abstract.component.d.ts +3 -3
- package/lib/components/components.module.d.ts +32 -52
- package/lib/components/core/accordion/accordion.component.d.ts +6 -5
- package/lib/components/core/alert/alert.component.d.ts +5 -5
- package/lib/components/core/badge/badge.directive.d.ts +5 -5
- package/lib/components/core/button/button.directive.d.ts +11 -11
- package/lib/components/core/callout/callout.component.d.ts +7 -7
- package/lib/components/core/card/card.component.d.ts +8 -8
- package/lib/components/core/carousel/carousel/carousel.component.d.ts +10 -10
- package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +4 -4
- package/lib/components/core/carousel/carousel.module.d.ts +8 -0
- package/lib/components/core/chip/chip.component.d.ts +6 -3
- package/lib/components/core/collapse/collapse.component.d.ts +8 -8
- package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +3 -3
- package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +3 -3
- package/lib/components/core/dimmer/dimmer.component.d.ts +4 -4
- package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +14 -9
- package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +8 -8
- package/lib/components/core/dropdown/dropdown.module.d.ts +8 -0
- package/lib/components/core/forward/forward.directive.d.ts +3 -3
- package/lib/components/core/link/link.component.d.ts +9 -8
- package/lib/components/core/list/list/list.component.d.ts +4 -4
- package/lib/components/core/list/list-item/list-item.component.d.ts +9 -9
- package/lib/components/core/list/list.module.d.ts +8 -0
- package/lib/components/core/modal/modal.component.d.ts +11 -11
- package/lib/components/core/notifications/notifications.component.d.ts +6 -6
- package/lib/components/core/pagination/pagination.component.d.ts +8 -8
- package/lib/components/core/popover/popover.directive.d.ts +3 -3
- package/lib/components/core/progress-bar/progress-bar.component.d.ts +6 -6
- package/lib/components/core/progress-button/progress-button.component.d.ts +5 -5
- package/lib/components/core/spinner/spinner.component.d.ts +5 -5
- package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +37 -13
- package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +5 -5
- package/lib/components/core/steppers/steppers.module.d.ts +8 -0
- package/lib/components/core/tab/tab-container/tab-container.component.d.ts +9 -9
- package/lib/components/core/tab/tab-item/tab-item.component.d.ts +8 -8
- package/lib/components/core/tab/tab.module.d.ts +8 -0
- package/lib/components/core/table/table.component.d.ts +12 -12
- package/lib/components/core/tooltip/tooltip.directive.d.ts +3 -3
- package/lib/components/form/checkbox/checkbox.component.d.ts +12 -10
- package/lib/components/form/form.module.d.ts +16 -0
- package/lib/components/form/input/input.component.d.ts +18 -13
- package/lib/components/form/password-input/password-input.component.d.ts +11 -6
- package/lib/components/form/radio-button/radio-button.component.d.ts +6 -6
- package/lib/components/form/range/range.component.d.ts +42 -0
- package/lib/components/form/rating/rating.component.d.ts +24 -0
- package/lib/components/form/select/select.component.d.ts +11 -6
- package/lib/components/form/textarea/textarea.component.d.ts +5 -5
- package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +4 -4
- package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +6 -6
- package/lib/components/navigation/back-button/back-button.component.d.ts +3 -3
- package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +7 -7
- package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +6 -6
- package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +6 -6
- package/lib/components/navigation/breadcrumbs/breadcrumbs.module.d.ts +8 -0
- package/lib/components/navigation/header/header.component.d.ts +6 -6
- package/lib/components/utils/error-page/error-page.component.d.ts +6 -6
- package/lib/components/utils/icon/icon.component.d.ts +7 -7
- package/lib/components/utils/language-switcher/language-switcher.component.d.ts +4 -4
- package/lib/design-angular-kit.module.d.ts +3 -4
- package/lib/interfaces/core.d.ts +16 -16
- package/lib/interfaces/form.d.ts +3 -3
- package/lib/interfaces/icon.d.ts +4 -4
- package/lib/pipes/mark-matching-text.pipe.d.ts +4 -4
- package/lib/services/{notifications/notifications.service.d.ts → notification/notification.service.d.ts} +3 -3
- package/lib/utils/boolean-input.d.ts +1 -1
- package/lib/utils/regex.d.ts +5 -0
- package/lib/validators/it-validators.d.ts +4 -0
- package/package.json +13 -19
- package/public_api.d.ts +13 -4
- package/esm2020/lib/abstracts/abstract-form.component.mjs +0 -188
- package/esm2020/lib/abstracts/abstract.component.mjs +0 -45
- package/esm2020/lib/components/components.module.mjs +0 -256
- package/esm2020/lib/components/core/accordion/accordion.component.mjs +0 -35
- package/esm2020/lib/components/core/alert/alert.component.mjs +0 -73
- package/esm2020/lib/components/core/badge/badge.directive.mjs +0 -37
- package/esm2020/lib/components/core/button/button.directive.mjs +0 -84
- package/esm2020/lib/components/core/callout/callout.component.mjs +0 -57
- package/esm2020/lib/components/core/card/card.component.mjs +0 -64
- package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +0 -89
- package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -19
- package/esm2020/lib/components/core/chip/chip.component.mjs +0 -89
- package/esm2020/lib/components/core/collapse/collapse.component.mjs +0 -101
- package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +0 -24
- package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +0 -11
- package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +0 -59
- package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +0 -130
- package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +0 -68
- package/esm2020/lib/components/core/forward/forward.directive.mjs +0 -52
- package/esm2020/lib/components/core/link/link.component.mjs +0 -40
- package/esm2020/lib/components/core/list/list/list.component.mjs +0 -17
- package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +0 -41
- package/esm2020/lib/components/core/modal/modal.component.mjs +0 -163
- package/esm2020/lib/components/core/notifications/notifications.component.mjs +0 -110
- package/esm2020/lib/components/core/pagination/pagination.component.mjs +0 -131
- package/esm2020/lib/components/core/popover/popover.directive.mjs +0 -174
- package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +0 -34
- package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +0 -27
- package/esm2020/lib/components/core/rating/rating.component.mjs +0 -49
- package/esm2020/lib/components/core/spinner/spinner.component.mjs +0 -35
- package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -127
- package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -19
- package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +0 -59
- package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +0 -36
- package/esm2020/lib/components/core/table/table.component.mjs +0 -57
- package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +0 -141
- package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +0 -40
- package/esm2020/lib/components/form/input/input.component.mjs +0 -232
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +0 -152
- package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +0 -68
- package/esm2020/lib/components/form/select/select.component.mjs +0 -62
- package/esm2020/lib/components/form/textarea/textarea.component.mjs +0 -46
- package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +0 -139
- package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +0 -104
- package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +0 -69
- package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +0 -64
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -56
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -23
- package/esm2020/lib/components/navigation/header/header.component.mjs +0 -57
- package/esm2020/lib/components/utils/error-page/error-page.component.mjs +0 -79
- package/esm2020/lib/components/utils/icon/icon.component.mjs +0 -55
- package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -39
- package/esm2020/lib/design-angular-kit.module.mjs +0 -68
- package/esm2020/lib/interfaces/icon.mjs +0 -162
- package/esm2020/lib/pipes/mark-matching-text.pipe.mjs +0 -36
- package/esm2020/lib/services/notifications/notifications.service.mjs +0 -120
- package/esm2020/lib/utils/file-utils.mjs +0 -73
- package/esm2020/lib/utils/regex.mjs +0 -26
- package/esm2020/lib/validators/it-validators.mjs +0 -147
- package/esm2020/public_api.mjs +0 -74
- package/fesm2015/design-angular-kit.mjs +0 -4422
- package/fesm2015/design-angular-kit.mjs.map +0 -1
- package/fesm2020/design-angular-kit.mjs +0 -4354
- package/fesm2020/design-angular-kit.mjs.map +0 -1
- package/lib/components/core/rating/rating.component.d.ts +0 -24
- /package/{esm2020 → esm2022}/design-angular-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/design-angular-kit-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/core.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/design-angular-kit-init.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/boolean-input.mjs +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
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 { NgForOf, NgIf } from '@angular/common';
|
|
6
|
+
import { ItIconComponent } from '../../utils/icon/icon.component';
|
|
7
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../../services/notification/notification.service";
|
|
10
|
+
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
export class ItNotificationsComponent {
|
|
12
|
+
constructor(_changeDetectorRef, _notificationService) {
|
|
13
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
14
|
+
this._notificationService = _notificationService;
|
|
15
|
+
/**
|
|
16
|
+
* Default notifications duration (milliseconds)
|
|
17
|
+
* @default 8000
|
|
18
|
+
*/
|
|
19
|
+
this.duration = 8000;
|
|
20
|
+
/**
|
|
21
|
+
* Default notifications is dismissible
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
this.dismissible = true;
|
|
25
|
+
this.notificationCount = 0;
|
|
26
|
+
this.notifications = [];
|
|
27
|
+
this.subscription = this._notificationService.onNotification().subscribe(notification => {
|
|
28
|
+
if (!notification.duration) {
|
|
29
|
+
notification.duration = this.duration; // Add duration if not is set
|
|
30
|
+
}
|
|
31
|
+
if (!notification.position && this.position) {
|
|
32
|
+
notification.position = this.position; // Add position if not is set
|
|
33
|
+
}
|
|
34
|
+
if (notification.dismissible === undefined && isTrueBooleanInput(this.dismissible)) {
|
|
35
|
+
notification.dismissible = true; // Add dismissible if not is set
|
|
36
|
+
}
|
|
37
|
+
if (!notification.icon) {
|
|
38
|
+
notification.icon = this.getNotificationIcon(notification);
|
|
39
|
+
}
|
|
40
|
+
const newNotification = {
|
|
41
|
+
...notification,
|
|
42
|
+
id: `${notification.type}-${this.notificationCount++}-notification`
|
|
43
|
+
};
|
|
44
|
+
this.notifications.push(newNotification);
|
|
45
|
+
this._changeDetectorRef.detectChanges();
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
// Show the notification
|
|
48
|
+
new BSNotification(document.getElementById(newNotification.id), {
|
|
49
|
+
timeout: notification.duration
|
|
50
|
+
}).show();
|
|
51
|
+
// Clear notification after the duration
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
const index = this.notifications.findIndex(n => n.id === newNotification.id);
|
|
54
|
+
if (index > -1) {
|
|
55
|
+
this.notifications.splice(index, 1);
|
|
56
|
+
if (!this.notifications.length) {
|
|
57
|
+
this.notificationCount = 0;
|
|
58
|
+
}
|
|
59
|
+
this._changeDetectorRef.detectChanges();
|
|
60
|
+
}
|
|
61
|
+
}, notification.duration);
|
|
62
|
+
}, 200);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.subscription.unsubscribe();
|
|
67
|
+
}
|
|
68
|
+
get NotificationType() {
|
|
69
|
+
return NotificationType;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Hide the notification
|
|
73
|
+
* @param id
|
|
74
|
+
*/
|
|
75
|
+
hideNotification(id) {
|
|
76
|
+
BSNotification.getInstance(document.getElementById(id))?.hide();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Retrieve the icon name by notification type
|
|
80
|
+
* @param notification the notification
|
|
81
|
+
* @protected
|
|
82
|
+
*/
|
|
83
|
+
getNotificationIcon(notification) {
|
|
84
|
+
switch (notification.type) {
|
|
85
|
+
case NotificationType.Success:
|
|
86
|
+
return 'check-circle';
|
|
87
|
+
case NotificationType.Error:
|
|
88
|
+
return 'close-circle';
|
|
89
|
+
case NotificationType.Warning:
|
|
90
|
+
return 'error';
|
|
91
|
+
case NotificationType.Info:
|
|
92
|
+
return 'info-circle';
|
|
93
|
+
case NotificationType.Standard:
|
|
94
|
+
default:
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItNotificationsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ItNotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItNotificationsComponent, isStandalone: true, 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: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItNotificationsComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ standalone: true, selector: 'it-notifications', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgForOf, NgIf, ItIconComponent, TranslateModule], 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"] }]
|
|
104
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ItNotificationService }]; }, propDecorators: { duration: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], position: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], dismissible: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}] } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0MsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxJQUFJLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVdEQsTUFBTSxPQUFPLHdCQUF3QjtJQXVCbkMsWUFDbUIsa0JBQXFDLEVBQ3JDLG9CQUEyQztRQUQzQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBdUI7UUF2QjlEOzs7V0FHRztRQUNNLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFPakM7OztXQUdHO1FBQ00sZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBR25DLHNCQUFpQixHQUFX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M0IsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUN6QixPQUFPLGNBQWMsQ0FBQztZQUN4QixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsT0FBTyxhQUFhLENBQUM7WUFDdkIsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDL0I7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDSCxDQUFDOzhHQXhHVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixnS0NuQnJDLCs2QkFtQkEsd0ZERlksT0FBTyxtSEFBRSxJQUFJLDZGQUFFLGVBQWUsa0hBQUUsZUFBZTs7MkZBRTlDLHdCQUF3QjtrQkFScEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUM7NElBUWpELFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uUG9zaXRpb24sIE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uIGFzIEJTTm90aWZpY2F0aW9uIH0gZnJvbSAnYm9vdHN0cmFwLWl0YWxpYSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGlzVHJ1ZUJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb2xlYW4taW5wdXQnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHsgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1ub3RpZmljYXRpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdGb3JPZiwgTmdJZiwgSXRJY29uQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEl0Tm90aWZpY2F0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm90aWZpY2F0aW9ucyBkdXJhdGlvbiAobWlsbGlzZWNvbmRzKVxuICAgKiBAZGVmYXVsdCA4MDAwXG4gICAqL1xuICBASW5wdXQoKSBkdXJhdGlvbjogbnVtYmVyID0gODAwMDtcblxuICAvKipcbiAgICogRGVmYXVsdCBub3RpZmljYXRpb25zIHBvc2l0aW9uXG4gICAqL1xuICBASW5wdXQoKSBwb3NpdGlvbjogTm90aWZpY2F0aW9uUG9zaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm90aWZpY2F0aW9ucyBpcyBkaXNtaXNzaWJsZVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSBkaXNtaXNzaWJsZT86IEJvb2xlYW5JbnB1dCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25Db3VudDogbnVtYmVyID0gMDtcbiAgcHJvdGVjdGVkIG5vdGlmaWNhdGlvbnM6IEFycmF5PE5vdGlmaWNhdGlvbiAmIHsgaWQ6IHN0cmluZyB9PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ub3RpZmljYXRpb25TZXJ2aWNlOiBJdE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm9uTm90aWZpY2F0aW9uKCkuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbiA9PiB7XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbi5kdXJhdGlvbikge1xuICAgICAgICBub3RpZmljYXRpb24uZHVyYXRpb24gPSB0aGlzLmR1cmF0aW9uOyAvLyBBZGQgZHVyYXRpb24gaWYgbm90IGlzIHNldFxuICAgICAgfVxuICAgICAgaWYgKCFub3RpZmljYXRpb24ucG9zaXRpb24gJiYgdGhpcy5wb3NpdGlvbikge1xuICAgICAgICBub3RpZmljYXRpb24ucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uOyAvLyBBZGQgcG9zaXRpb24gaWYgbm90IGlzIHNldFxuICAgICAgfVxuICAgICAgaWYgKG5vdGlmaWNhdGlvbi5kaXNtaXNzaWJsZSA9PT0gdW5kZWZpbmVkICYmIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLmRpc21pc3NpYmxlKSkge1xuICAgICAgICBub3RpZmljYXRpb24uZGlzbWlzc2libGUgPSB0cnVlOyAvLyBBZGQgZGlzbWlzc2libGUgaWYgbm90IGlzIHNldFxuICAgICAgfVxuICAgICAgaWYgKCFub3RpZmljYXRpb24uaWNvbikge1xuICAgICAgICBub3RpZmljYXRpb24uaWNvbiA9IHRoaXMuZ2V0Tm90aWZpY2F0aW9uSWNvbihub3RpZmljYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdOb3RpZmljYXRpb24gPSB7XG4gICAgICAgIC4uLm5vdGlmaWNhdGlvbixcbiAgICAgICAgaWQ6IGAke25vdGlmaWNhdGlvbi50eXBlfS0ke3RoaXMubm90aWZpY2F0aW9uQ291bnQrK30tbm90aWZpY2F0aW9uYFxuICAgICAgfTtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5wdXNoKG5ld05vdGlmaWNhdGlvbik7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBTaG93IHRoZSBub3RpZmljYXRpb25cbiAgICAgICAgbmV3IEJTTm90aWZpY2F0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld05vdGlmaWNhdGlvbi5pZCkhLCB7XG4gICAgICAgICAgdGltZW91dDogbm90aWZpY2F0aW9uLmR1cmF0aW9uXG4gICAgICAgIH0pLnNob3coKTtcblxuICAgICAgICAvLyBDbGVhciBub3RpZmljYXRpb24gYWZ0ZXIgdGhlIGR1cmF0aW9uXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmRJbmRleChuID0+IG4uaWQgPT09IG5ld05vdGlmaWNhdGlvbi5pZCk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vdGlmaWNhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ291bnQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgbm90aWZpY2F0aW9uLmR1cmF0aW9uKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBOb3RpZmljYXRpb25UeXBlKCk6IHR5cGVvZiBOb3RpZmljYXRpb25UeXBlIHtcbiAgICByZXR1cm4gTm90aWZpY2F0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIHRoZSBub3RpZmljYXRpb25cbiAgICogQHBhcmFtIGlkXG4gICAqL1xuICBwcm90ZWN0ZWQgaGlkZU5vdGlmaWNhdGlvbihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgQlNOb3RpZmljYXRpb24uZ2V0SW5zdGFuY2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpISk/LmhpZGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgaWNvbiBuYW1lIGJ5IG5vdGlmaWNhdGlvbiB0eXBlXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb24gdGhlIG5vdGlmaWNhdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcml2YXRlIGdldE5vdGlmaWNhdGlvbkljb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb24udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLlN1Y2Nlc3M6XG4gICAgICAgIHJldHVybiAnY2hlY2stY2lyY2xlJztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdjbG9zZS1jaXJjbGUnO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLldhcm5pbmc6XG4gICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkluZm86XG4gICAgICAgIHJldHVybiAnaW5mby1jaXJjbGUnO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLlN0YW5kYXJkOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zXCJcbiAgICAgW2lkXT1cIm5vdGlmaWNhdGlvbi5pZFwiXG4gICAgIGNsYXNzPVwibm90aWZpY2F0aW9uIHt7bm90aWZpY2F0aW9uLnBvc2l0aW9ufX0ge3tub3RpZmljYXRpb24udHlwZX19XCJcbiAgICAgW2NsYXNzLndpdGgtaWNvbl09XCIhIW5vdGlmaWNhdGlvbi5pY29uXCJcbiAgICAgW2NsYXNzLmRpc21pc3NhYmxlXT1cIm5vdGlmaWNhdGlvbi5kaXNtaXNzaWJsZVwiXG4gICAgIHJvbGU9XCJhbGVydFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJub3RpZmljYXRpb24uaWQrJy10aXRsZSdcIj5cblxuICA8aDIgW2lkXT1cIm5vdGlmaWNhdGlvbi5pZCsnLXRpdGxlJ1wiIGNsYXNzPVwiaDVcIj5cbiAgICA8aXQtaWNvbiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5pY29uXCIgW25hbWVdPVwibm90aWZpY2F0aW9uLmljb25cIj48L2l0LWljb24+XG4gICAgPG5nLWNvbnRhaW5lcj57e25vdGlmaWNhdGlvbi50aXRsZX19PC9uZy1jb250YWluZXI+XG4gIDwvaDI+XG4gIDxwICpuZ0lmPVwibm90aWZpY2F0aW9uLm1lc3NhZ2VcIj57e25vdGlmaWNhdGlvbi5tZXNzYWdlfX08L3A+XG5cbiAgPGJ1dHRvbiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5kaXNtaXNzaWJsZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBub3RpZmljYXRpb24tY2xvc2VcIlxuICAgICAgICAgIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZClcIj5cbiAgICA8aXQtaWNvbiBuYW1lPVwiY2xvc2VcIj48L2l0LWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydpdC5jb3JlLmNsb3NlLW5vdGlmaWNhdGlvbid8dHJhbnNsYXRlOnsgdGl0bGU6IG5vdGlmaWNhdGlvbi50aXRsZSB9IH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { debounceTime, distinctUntilChanged, filter } from 'rxjs';
|
|
5
|
+
import { LowerCasePipe, NgForOf, NgIf } from '@angular/common';
|
|
6
|
+
import { ItIconComponent } from '../../utils/icon/icon.component';
|
|
7
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
8
|
+
import { ItDropdownModule } from '../dropdown/dropdown.module';
|
|
9
|
+
import { ItInputComponent } from '../../form/input/input.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@ngx-translate/core";
|
|
12
|
+
import * as i2 from "../dropdown/dropdown/dropdown.component";
|
|
13
|
+
import * as i3 from "../dropdown/dropdown-item/dropdown-item.component";
|
|
14
|
+
import * as i4 from "@angular/forms";
|
|
15
|
+
export class ItPaginationComponent {
|
|
16
|
+
get isSimpleMode() {
|
|
17
|
+
return isTrueBooleanInput(this.simpleMode);
|
|
18
|
+
}
|
|
19
|
+
get isTextLinks() {
|
|
20
|
+
return isTrueBooleanInput(this.textLinks);
|
|
21
|
+
}
|
|
22
|
+
get isShowJumpToPage() {
|
|
23
|
+
return isTrueBooleanInput(this.showJumpToPage);
|
|
24
|
+
}
|
|
25
|
+
constructor() {
|
|
26
|
+
/**
|
|
27
|
+
* Number of pages closest to the current one to display
|
|
28
|
+
* @default 5
|
|
29
|
+
*/
|
|
30
|
+
this.visiblePages = 5;
|
|
31
|
+
/**
|
|
32
|
+
* Available Changer values
|
|
33
|
+
* @default [10, 25, 50, 100]
|
|
34
|
+
*/
|
|
35
|
+
this.changerValues = [10, 25, 50, 100];
|
|
36
|
+
/**
|
|
37
|
+
* Fired when page is changed. Emit the new index of page
|
|
38
|
+
*/
|
|
39
|
+
this.pageEvent = new EventEmitter();
|
|
40
|
+
/**
|
|
41
|
+
* Fired when changer is changed. Emit the new changer value
|
|
42
|
+
*/
|
|
43
|
+
this.changerEvent = new EventEmitter();
|
|
44
|
+
/**
|
|
45
|
+
* The pages
|
|
46
|
+
* @protected
|
|
47
|
+
*/
|
|
48
|
+
this.pages = [];
|
|
49
|
+
/**
|
|
50
|
+
* Jump to page input
|
|
51
|
+
* @protected
|
|
52
|
+
*/
|
|
53
|
+
this.jumpToPage = new FormControl(null);
|
|
54
|
+
this.jumpToPage.valueChanges.pipe(debounceTime(300), // Delay filter data after time span has passed without another source emission
|
|
55
|
+
distinctUntilChanged(), filter(value => !!value && this.jumpToPage.valid)).subscribe(value => {
|
|
56
|
+
this.pageEvent.emit(value - 1);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
this.pages = this.calculatePages();
|
|
61
|
+
if (changes['currentPage']) {
|
|
62
|
+
this.jumpToPage.setValue(null, { emitEvent: false });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create array to generate pagination of `visiblePages` element
|
|
67
|
+
*/
|
|
68
|
+
calculatePages() {
|
|
69
|
+
if (this.isSimpleMode) {
|
|
70
|
+
return [this.currentPage];
|
|
71
|
+
}
|
|
72
|
+
const length = this.pageNumbers > this.visiblePages ? this.visiblePages : this.pageNumbers;
|
|
73
|
+
const halfVisiblePages = Math.floor(this.visiblePages / 2);
|
|
74
|
+
let start = (this.currentPage > halfVisiblePages && this.pageNumbers > this.visiblePages) ?
|
|
75
|
+
this.currentPage - halfVisiblePages + 1 : 1;
|
|
76
|
+
if (this.pageNumbers > this.visiblePages) {
|
|
77
|
+
if ((this.currentPage + 1) >= this.pageNumbers) {
|
|
78
|
+
start -= halfVisiblePages;
|
|
79
|
+
}
|
|
80
|
+
else if (this.currentPage >= (this.pageNumbers - halfVisiblePages)) {
|
|
81
|
+
start -= (this.pageNumbers - (this.currentPage + 1));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return Array.from({ length }, (_, i) => i + start);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* On click page change
|
|
88
|
+
* @param event click event
|
|
89
|
+
* @param newPage the new page of table
|
|
90
|
+
*/
|
|
91
|
+
pageChange(event, newPage) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
this.pageEvent.emit(newPage - 1); // emit new page index
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* On click changer
|
|
97
|
+
* @param event click event
|
|
98
|
+
* @param value the new changer value
|
|
99
|
+
*/
|
|
100
|
+
changerChange(event, value) {
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
this.changerEvent.emit(value); // emit new changer value
|
|
103
|
+
}
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItPaginationComponent, isStandalone: true, 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\">\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\" 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "ngmodule", type: ItDropdownModule }, { kind: "component", type: i2.ItDropdownComponent, selector: "it-dropdown", inputs: ["mode", "color", "direction", "fullWidth", "dark"], outputs: ["showEvent", "shownEvent", "hideEvent", "hiddenEvent"], exportAs: ["itDropdown"] }, { kind: "component", type: i3.ItDropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "component", type: ItInputComponent, selector: "it-input", inputs: ["type", "placeholder", "description", "readonly", "maxDate", "minDate", "max", "min", "step", "currency", "percentage", "adaptive", "autocomplete", "autocompleteData", "autocompleteDebounceTime"], outputs: ["autocompleteSelectedEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
106
|
+
}
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItPaginationComponent, decorators: [{
|
|
108
|
+
type: Component,
|
|
109
|
+
args: [{ standalone: true, selector: 'it-pagination[currentPage][pageNumbers]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, NgForOf, ItIconComponent, TranslateModule, LowerCasePipe, ItDropdownModule, ItInputComponent, ReactiveFormsModule], 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\">\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\" 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" }]
|
|
110
|
+
}], ctorParameters: function () { return []; }, propDecorators: { currentPage: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], pageNumbers: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], visiblePages: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], alignment: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], simpleMode: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], textLinks: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], currentChanger: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], changerValues: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], showJumpToPage: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], pageEvent: [{
|
|
129
|
+
type: Output
|
|
130
|
+
}], changerEvent: [{
|
|
131
|
+
type: Output
|
|
132
|
+
}] } });
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFTcEUsTUFBTSxPQUFPLHFCQUFxQjtJQThFaEMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFD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QWE7c0JBQXJCLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFLSSxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG93ZXJDYXNlUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSXREcm9wZG93bk1vZHVsZSB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLm1vZHVsZSc7XG5pbXBvcnQgeyBJdElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1wYWdpbmF0aW9uW2N1cnJlbnRQYWdlXVtwYWdlTnVtYmVyc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3JPZiwgSXRJY29uQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIExvd2VyQ2FzZVBpcGUsIEl0RHJvcGRvd25Nb2R1bGUsIEl0SW5wdXRDb21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEl0UGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIHBhZ2UgKHN0YXJ0IDApXG4gICAqL1xuICBASW5wdXQoKSBjdXJyZW50UGFnZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4IG51bWJlciBvZiBwYWdlIChjb3VudGVyKVxuICAgKi9cbiAgQElucHV0KCkgcGFnZU51bWJlcnMhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBwYWdlcyBjbG9zZXN0IHRvIHRoZSBjdXJyZW50IG9uZSB0byBkaXNwbGF5XG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIEBJbnB1dCgpIHZpc2libGVQYWdlczogbnVtYmVyID0gNTtcblxuICAvKipcbiAgICogUGFnaW5hdGlvbiBhbGlnbm1lbnQgKGp1c3RpZnktY29udGVudClcbiAgICovXG4gIEBJbnB1dCgpIGFsaWdubWVudDogJ2NlbnRlcicgfCAnZW5kJyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRW5hYmxlL0Rpc2FibGUgc2ltcGxlIG1vZGVcbiAgICogUGFnaW5hdGlvbiBpbiB0aGUgXCJTaW1wbGUgbW9kZVwiIHZlcnNpb24gaXMgb3B0aW1pemVkIGZvciBtb2JpbGUgZGV2aWNlcy5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCgpIHNpbXBsZU1vZGU6IEJvb2xlYW5JbnB1dCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRW5hYmxlL0Rpc2FibGUgdGV4dCBsaW5rc1xuICAgKiBDaGV2cm9uIGljb25zIHVzZWQgYXMgbmF2aWdhdGlvbiBsaW5rcyBhcmUgcmVwbGFjZWQgYnkgdGV4dCBsaW5rcyBzdWNoIGFzIOKAnHByZXZpb3Vz4oCdIGFuZCDigJxuZXh04oCdLlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBkaXNhYmxlZFxuICAgKi9cbiAgQElucHV0KCkgdGV4dExpbmtzOiBCb29sZWFuSW5wdXQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgdmFsdWUgb2YgQ2hhbmdlclxuICAgKiBJZiBpcyBzZXQgc2hvdyB0aGUgQ2hhbmdlclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBoaWRlIHRoZSBDaGFuZ2VyXG4gICAqL1xuICBASW5wdXQoKSBjdXJyZW50Q2hhbmdlcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBdmFpbGFibGUgQ2hhbmdlciB2YWx1ZXNcbiAgICogQGRlZmF1bHQgWzEwLCAyNSwgNTAsIDEwMF1cbiAgICovXG4gIEBJbnB1dCgpIGNoYW5nZXJWYWx1ZXM6IEFycmF5PG51bWJlcj4gPSBbMTAsIDI1LCA1MCwgMTAwXTtcblxuICAvKipcbiAgICogSGlkZS9TaG93IFwiSnVtcCB0byBwYWdlXCIgaW5wdXRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gaGlkZGVuXG4gICAqL1xuICBASW5wdXQoKSBzaG93SnVtcFRvUGFnZTogQm9vbGVhbklucHV0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHBhZ2UgaXMgY2hhbmdlZC4gRW1pdCB0aGUgbmV3IGluZGV4IG9mIHBhZ2VcbiAgICovXG4gIEBPdXRwdXQoKSBwYWdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiBjaGFuZ2VyIGlzIGNoYW5nZWQuIEVtaXQgdGhlIG5ldyBjaGFuZ2VyIHZhbHVlXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBwYWdlc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFnZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuICAvKipcbiAgICogSnVtcCB0byBwYWdlIGlucHV0XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBqdW1wVG9QYWdlOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBnZXQgaXNTaW1wbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zaW1wbGVNb2RlKTtcbiAgfVxuXG4gIGdldCBpc1RleHRMaW5rcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMudGV4dExpbmtzKTtcbiAgfVxuXG4gIGdldCBpc1Nob3dKdW1wVG9QYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zaG93SnVtcFRvUGFnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmp1bXBUb1BhZ2UudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSwgLy8gRGVsYXkgZmlsdGVyIGRhdGEgYWZ0ZXIgdGltZSBzcGFuIGhhcyBwYXNzZWQgd2l0aG91dCBhbm90aGVyIHNvdXJjZSBlbWlzc2lvblxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlICYmIHRoaXMuanVtcFRvUGFnZS52YWxpZClcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnBhZ2VFdmVudC5lbWl0KHZhbHVlISAtIDEpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVBhZ2VzKCk7XG4gICAgaWYgKGNoYW5nZXNbJ2N1cnJlbnRQYWdlJ10pIHtcbiAgICAgIHRoaXMuanVtcFRvUGFnZS5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhcnJheSB0byBnZW5lcmF0ZSBwYWdpbmF0aW9uIG9mIGB2aXNpYmxlUGFnZXNgIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUGFnZXMoKTogQXJyYXk8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuaXNTaW1wbGVNb2RlKSB7XG4gICAgICByZXR1cm4gW3RoaXMuY3VycmVudFBhZ2VdO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucGFnZU51bWJlcnMgPiB0aGlzLnZpc2libGVQYWdlcyA/IHRoaXMudmlzaWJsZVBhZ2VzIDogdGhpcy5wYWdlTnVtYmVycztcblxuICAgIGNvbnN0IGhhbGZWaXNpYmxlUGFnZXMgPSBNYXRoLmZsb29yKHRoaXMudmlzaWJsZVBhZ2VzIC8gMik7XG4gICAgbGV0IHN0YXJ0ID0gKHRoaXMuY3VycmVudFBhZ2UgPiBoYWxmVmlzaWJsZVBhZ2VzICYmIHRoaXMucGFnZU51bWJlcnMgPiB0aGlzLnZpc2libGVQYWdlcykgP1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSAtIGhhbGZWaXNpYmxlUGFnZXMgKyAxIDogMTtcblxuICAgIGlmICh0aGlzLnBhZ2VOdW1iZXJzID4gdGhpcy52aXNpYmxlUGFnZXMpIHtcbiAgICAgIGlmICgodGhpcy5jdXJyZW50UGFnZSArIDEpID49IHRoaXMucGFnZU51bWJlcnMpIHtcbiAgICAgICAgc3RhcnQgLT0gaGFsZlZpc2libGVQYWdlcztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA+PSAodGhpcy5wYWdlTnVtYmVycyAtIGhhbGZWaXNpYmxlUGFnZXMpKSB7XG4gICAgICAgIHN0YXJ0IC09ICh0aGlzLnBhZ2VOdW1iZXJzIC0gKHRoaXMuY3VycmVudFBhZ2UgKyAxKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSwgKF8sIGkpID0+IGkgKyBzdGFydCk7XG4gIH1cblxuICAvKipcbiAgICogT24gY2xpY2sgcGFnZSBjaGFuZ2VcbiAgICogQHBhcmFtIGV2ZW50IGNsaWNrIGV2ZW50XG4gICAqIEBwYXJhbSBuZXdQYWdlIHRoZSBuZXcgcGFnZSBvZiB0YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhZ2VDaGFuZ2UoZXZlbnQ6IEV2ZW50LCBuZXdQYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucGFnZUV2ZW50LmVtaXQobmV3UGFnZSAtIDEpOyAvLyBlbWl0IG5ldyBwYWdlIGluZGV4XG4gIH1cblxuICAvKipcbiAgICogT24gY2xpY2sgY2hhbmdlclxuICAgKiBAcGFyYW0gZXZlbnQgY2xpY2sgZXZlbnRcbiAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgY2hhbmdlciB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNoYW5nZXJDaGFuZ2UoZXZlbnQ6IEV2ZW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmNoYW5nZXJFdmVudC5lbWl0KHZhbHVlKTsgLy8gZW1pdCBuZXcgY2hhbmdlciB2YWx1ZVxuICB9XG5cbn1cbiIsIjxuYXYgY2xhc3M9XCJwYWdpbmF0aW9uLXdyYXBwZXJcIlxuICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWNlbnRlcl09XCJhbGlnbm1lbnQ9PT0nY2VudGVyJ1wiXG4gICAgIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtZW5kXT1cImFsaWdubWVudD09PSdlbmQnXCJcbiAgICAgW2NsYXNzLnBhZ2luYXRpb24tdG90YWxdPVwidG90YWxOdW1iZXJUZXh0Lmhhc0NoaWxkTm9kZXMoKVwiPlxuXG4gIDx1bCAqbmdJZj1cInBhZ2VzLmxlbmd0aFwiIGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA8IDFcIj5cbiAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgW2NsYXNzLnRleHRdPVwiaXNUZXh0TGlua3NcIiBocmVmPVwiI1wiIChjbGljayk9XCJwYWdlQ2hhbmdlKCRldmVudCwgY3VycmVudFBhZ2UpXCI+XG4gICAgICAgIDxpdC1pY29uICpuZ0lmPVwiIWlzVGV4dExpbmtzXCIgbmFtZT1cImNoZXZyb24tbGVmdFwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaXQtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICB7eyhpc1RleHRMaW5rcyA/ICdpdC5jb3JlLnBhZ2UnIDogJ2l0LmNvcmUucHJldmlvdXMtcGFnZScpIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZXh0TGlua3NcIj57eydpdC5jb3JlLnByZXZpb3VzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICA8L2E+XG4gICAgPC9saT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NpbXBsZU1vZGU7IGVsc2UgZGVmYXVsdFZpZXdcIj5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPjxzcGFuIGNsYXNzPVwicGFnZS1saW5rXCIgYXJpYS1jdXJyZW50PVwicGFnZVwiPnt7Y3VycmVudFBhZ2UgKyAxfX08L3NwYW4+PC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPjxzcGFuIGNsYXNzPVwicGFnZS1saW5rXCI+Lzwvc3Bhbj48L2xpPlxuICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCI+PHNwYW4gY2xhc3M9XCJwYWdlLWxpbmtcIj57e3BhZ2VOdW1iZXJzfX08L3NwYW4+PC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbSB2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIGFyaWEtY3VycmVudD1cInBhZ2VcIj5cbiAgICAgICAgICB7eydpdC5jb3JlLnBhZ2Utb2YtdG90YWwnfHRyYW5zbGF0ZSA6IHtwYWdlOiAoY3VycmVudFBhZ2UgKyAxKSwgdG90YWw6IHBhZ2VOdW1iZXJzfSB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFZpZXc+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU51bWJlcnMgPiB2aXNpYmxlUGFnZXMgJiYgcGFnZXNbMF0gPj0gMlwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInBhZ2VDaGFuZ2UoJGV2ZW50LCAxKVwiPjE8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0lmPVwicGFnZXNbMF0gPj0gM1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1saW5rXCI+Li4uPC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCI+XG4gICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgYXJpYS1jdXJyZW50PVwicGFnZVwiICpuZ0lmPVwicGFnZSA9PT0gKGN1cnJlbnRQYWdlICsgMSk7IGVsc2UgaW5hY3RpdmVQYWdlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWlubGluZS1ibG9jayBkLXNtLW5vbmVcIj57eydpdC5jb3JlLnBhZ2UnfHRyYW5zbGF0ZX19PC9zcGFuPiB7e3BhZ2V9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaW5hY3RpdmVQYWdlPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwicGFnZUNoYW5nZSgkZXZlbnQsIHBhZ2UpXCI+e3twYWdlfX08L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU51bWJlcnMgPiB2aXNpYmxlUGFnZXMgJiYgcGFnZXNbcGFnZXMubGVuZ3RoIC0gMV0gPCBwYWdlTnVtYmVyc1wiPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiAqbmdJZj1cInBhZ2VzW3BhZ2VzLmxlbmd0aCAtIDFdIDwgKHBhZ2VOdW1iZXJzIC0gMSlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIChjbGljayk9XCJwYWdlQ2hhbmdlKCRldmVudCwgcGFnZU51bWJlcnMpXCI+e3twYWdlTnVtYmVyc319PC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA+PSBwYWdlTnVtYmVycyAtIDFcIj5cbiAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgW2NsYXNzLnRleHRdPVwiaXNUZXh0TGlua3NcIiBocmVmPVwiI1wiIChjbGljayk9XCJwYWdlQ2hhbmdlKCRldmVudCwgY3VycmVudFBhZ2UgKyAyKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgIHt7KGlzVGV4dExpbmtzID8gJ2l0LmNvcmUucGFnZScgOiAnaXQuY29yZS5uZXh0LXBhZ2UnKSB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGV4dExpbmtzXCI+e3snaXQuY29yZS5uZXh0JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpdC1pY29uICpuZ0lmPVwiIWlzVGV4dExpbmtzXCIgbmFtZT1cImNoZXZyb24tcmlnaHRcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICA8L2E+XG4gICAgPC9saT5cbiAgPC91bD5cblxuICA8aXQtZHJvcGRvd24gKm5nSWY9XCJjdXJyZW50Q2hhbmdlciAhPT0gdW5kZWZpbmVkXCI+XG4gICAgPHNwYW4gYnV0dG9uPnt7Y3VycmVudENoYW5nZXJ9fSAvIHt7J2l0LmNvcmUucGFnZScgfCB0cmFuc2xhdGUgfCBsb3dlcmNhc2V9fTwvc3Bhbj5cbiAgICA8bmctY29udGFpbmVyIGxpc3Q+XG4gICAgICA8aXQtZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgY2hhbmdlclZhbHVlc1wiIGhyZWY9XCIjXCIgZXh0ZXJuYWxMaW5rPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlckNoYW5nZSgkZXZlbnQsIHZhbHVlKVwiPlxuICAgICAgICB7e3ZhbHVlfX0gLyB7eydpdC5jb3JlLnBhZ2UnIHwgdHJhbnNsYXRlIHwgbG93ZXJjYXNlfX1cbiAgICAgIDwvaXQtZHJvcGRvd24taXRlbT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9pdC1kcm9wZG93bj5cblxuICA8aXQtaW5wdXQgKm5nSWY9XCJpc1Nob3dKdW1wVG9QYWdlXCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMVwiIFttYXhdPVwicGFnZU51bWJlcnNcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIignaXQuY29yZS5nby10bycgfCB0cmFuc2xhdGUpICsgJy4uLidcIiBbZm9ybUNvbnRyb2xdPVwianVtcFRvUGFnZVwiPjwvaXQtaW5wdXQ+XG5cbiAgPHAgW2NsYXNzLmQtbm9uZV09XCIhdG90YWxOdW1iZXJUZXh0Lmhhc0NoaWxkTm9kZXMoKVwiICN0b3RhbE51bWJlclRleHQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3A+XG48L25hdj5cbiJdfQ==
|
|
@@ -0,0 +1,175 @@
|
|
|
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 ItPopoverDirective {
|
|
6
|
+
/**
|
|
7
|
+
* Define the popover content
|
|
8
|
+
* @param content the popover content
|
|
9
|
+
*/
|
|
10
|
+
set content(content) {
|
|
11
|
+
this.element.setAttribute('data-bs-content', content);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Define the popover title
|
|
15
|
+
* @param title the popover title
|
|
16
|
+
*/
|
|
17
|
+
set popoverTitle(title) {
|
|
18
|
+
if (title) {
|
|
19
|
+
this.element.setAttribute('title', title);
|
|
20
|
+
this.element.setAttribute('data-bs-original-title', title);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Define the popover placement
|
|
25
|
+
* @param placement
|
|
26
|
+
*/
|
|
27
|
+
set popoverPlacement(placement) {
|
|
28
|
+
this.element.setAttribute('data-bs-placement', placement);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Appends the popover to a specific element.
|
|
32
|
+
* @param container
|
|
33
|
+
*/
|
|
34
|
+
set popoverContainer(container) {
|
|
35
|
+
if (container) {
|
|
36
|
+
this.element.setAttribute('data-container', container);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Indicates whether the title contains html
|
|
41
|
+
* @param html true if contain html
|
|
42
|
+
*/
|
|
43
|
+
set popoverHtml(html) {
|
|
44
|
+
this.element.setAttribute('data-bs-html', isTrueBooleanInput(html) ? 'true' : 'false');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* How popover is triggered
|
|
48
|
+
* - 'hover': To open the Popover on hover of the mouse over the element
|
|
49
|
+
* - 'focus': To ignore popovers on the user's next click of an element other than the toggle element.
|
|
50
|
+
* @param trigger
|
|
51
|
+
*/
|
|
52
|
+
set popoverTrigger(trigger) {
|
|
53
|
+
if (trigger) {
|
|
54
|
+
this.element.setAttribute('data-bs-trigger', trigger);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
constructor(_elementRef) {
|
|
58
|
+
this._elementRef = _elementRef;
|
|
59
|
+
/**
|
|
60
|
+
* This event fires immediately when the show method is called.
|
|
61
|
+
*/
|
|
62
|
+
this.showEvent = new EventEmitter();
|
|
63
|
+
/**
|
|
64
|
+
* This event is triggered when the tooltip has been made visible to the user (it will wait for the CSS transitions to complete).
|
|
65
|
+
*/
|
|
66
|
+
this.shownEvent = new EventEmitter();
|
|
67
|
+
/**
|
|
68
|
+
* This event fires immediately when the hide method is called.
|
|
69
|
+
*/
|
|
70
|
+
this.hideEvent = new EventEmitter();
|
|
71
|
+
/**
|
|
72
|
+
* This event is raised when the tooltip has finished being hidden from the user (it will wait for the CSS transitions to complete).
|
|
73
|
+
*/
|
|
74
|
+
this.hiddenEvent = new EventEmitter();
|
|
75
|
+
/**
|
|
76
|
+
* This event fires after the show event when the tooltip template has been added to the DOM.
|
|
77
|
+
*/
|
|
78
|
+
this.insertedEvent = new EventEmitter();
|
|
79
|
+
this.element = this._elementRef.nativeElement;
|
|
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.showEvent.emit(event));
|
|
85
|
+
this.element.addEventListener('shown.bs.popover', event => this.shownEvent.emit(event));
|
|
86
|
+
this.element.addEventListener('hide.bs.popover', event => this.hideEvent.emit(event));
|
|
87
|
+
this.element.addEventListener('hidden.bs.popover', event => this.hiddenEvent.emit(event));
|
|
88
|
+
this.element.addEventListener('inserted.bs.popover', event => this.insertedEvent.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
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItPopoverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
142
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.3", type: ItPopoverDirective, isStandalone: true, selector: "[itPopover]", inputs: { content: ["itPopover", "content"], popoverTitle: "popoverTitle", popoverPlacement: "popoverPlacement", popoverContainer: "popoverContainer", popoverHtml: "popoverHtml", popoverTrigger: "popoverTrigger" }, outputs: { showEvent: "showEvent", shownEvent: "shownEvent", hideEvent: "hideEvent", hiddenEvent: "hiddenEvent", insertedEvent: "insertedEvent" }, exportAs: ["itPopover"], ngImport: i0 }); }
|
|
143
|
+
}
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItPopoverDirective, decorators: [{
|
|
145
|
+
type: Directive,
|
|
146
|
+
args: [{
|
|
147
|
+
standalone: true,
|
|
148
|
+
selector: '[itPopover]',
|
|
149
|
+
exportAs: 'itPopover'
|
|
150
|
+
}]
|
|
151
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { content: [{
|
|
152
|
+
type: Input,
|
|
153
|
+
args: ['itPopover']
|
|
154
|
+
}], popoverTitle: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], popoverPlacement: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], popoverContainer: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}], popoverHtml: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], popoverTrigger: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], showEvent: [{
|
|
165
|
+
type: Output
|
|
166
|
+
}], shownEvent: [{
|
|
167
|
+
type: Output
|
|
168
|
+
}], hideEvent: [{
|
|
169
|
+
type: Output
|
|
170
|
+
}], hiddenEvent: [{
|
|
171
|
+
type: Output
|
|
172
|
+
}], insertedEvent: [{
|
|
173
|
+
type: Output
|
|
174
|
+
}] } });
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU8zQyxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCOzs7T0FHRztJQUNILElBQXdCLE9BQU8sQ0FBQyxPQUFlO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFhLFlBQVksQ0FBQyxLQUF5QjtRQUNqRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUFhLGdCQUFnQixDQUFDLFNBQTJCO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFhLGdCQUFnQixDQUFDLFNBQXNDO1FBQ2xFLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENB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QztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7OEdBbktVLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUw5QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCO2lHQU95QixPQUFPO3NCQUE5QixLQUFLO3VCQUFDLFdBQVc7Z0JBUUwsWUFBWTtzQkFBeEIsS0FBSztnQkFZTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBUU8sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQVVPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBVU8sY0FBYztzQkFBMUIsS0FBSztnQkFTSSxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbGVtZW50UGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnYm9vdHN0cmFwLWl0YWxpYSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tpdFBvcG92ZXJdJyxcbiAgZXhwb3J0QXM6ICdpdFBvcG92ZXInXG59KVxuZXhwb3J0IGNsYXNzIEl0UG9wb3ZlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgcG9wb3ZlciBjb250ZW50XG4gICAqIEBwYXJhbSBjb250ZW50IHRoZSBwb3BvdmVyIGNvbnRlbnRcbiAgICovXG4gIEBJbnB1dCgnaXRQb3BvdmVyJykgc2V0IGNvbnRlbnQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1icy1jb250ZW50JywgY29udGVudCk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBwb3BvdmVyIHRpdGxlXG4gICAqIEBwYXJhbSB0aXRsZSB0aGUgcG9wb3ZlciB0aXRsZVxuICAgKi9cbiAgQElucHV0KCkgc2V0IHBvcG92ZXJUaXRsZSh0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRpdGxlKTtcbiAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnLCB0aXRsZSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBwb3BvdmVyIHBsYWNlbWVudFxuICAgKiBAcGFyYW0gcGxhY2VtZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgcG9wb3ZlclBsYWNlbWVudChwbGFjZW1lbnQ6IEVsZW1lbnRQbGFjZW1lbnQpIHtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLXBsYWNlbWVudCcsIHBsYWNlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyB0aGUgcG9wb3ZlciB0byBhIHNwZWNpZmljIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBjb250YWluZXJcbiAgICovXG4gIEBJbnB1dCgpIHNldCBwb3BvdmVyQ29udGFpbmVyKGNvbnRhaW5lcjogJ2JvZHknIHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1jb250YWluZXInLCBjb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdGl0bGUgY29udGFpbnMgaHRtbFxuICAgKiBAcGFyYW0gaHRtbCB0cnVlIGlmIGNvbnRhaW4gaHRtbFxuICAgKi9cbiAgQElucHV0KCkgc2V0IHBvcG92ZXJIdG1sKGh0bWw6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtaHRtbCcsIGlzVHJ1ZUJvb2xlYW5JbnB1dChodG1sKSA/ICd0cnVlJyA6ICdmYWxzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvdyBwb3BvdmVyIGlzIHRyaWdnZXJlZFxuICAgKiAtICdob3Zlcic6IFRvIG9wZW4gdGhlIFBvcG92ZXIgb24gaG92ZXIgb2YgdGhlIG1vdXNlIG92ZXIgdGhlIGVsZW1lbnRcbiAgICogLSAnZm9jdXMnOiBUbyBpZ25vcmUgcG9wb3ZlcnMgb24gdGhlIHVzZXIncyBuZXh0IGNsaWNrIG9mIGFuIGVsZW1lbnQgb3RoZXIgdGhhbiB0aGUgdG9nZ2xlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB0cmlnZ2VyXG4gICAqL1xuICBASW5wdXQoKSBzZXQgcG9wb3ZlclRyaWdnZXIodHJpZ2dlcjogJ2NsaWNrJyB8ICdob3ZlcicgfCAnZm9jdXMnIHwgJ21hbnVhbCcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodHJpZ2dlcikge1xuICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1icy10cmlnZ2VyJywgdHJpZ2dlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZmlyZXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgc2hvdyBtZXRob2QgaXMgY2FsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3dFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdG9vbHRpcCBoYXMgYmVlbiBtYWRlIHZpc2libGUgdG8gdGhlIHVzZXIgKGl0IHdpbGwgd2FpdCBmb3IgdGhlIENTUyB0cmFuc2l0aW9ucyB0byBjb21wbGV0ZSkuXG4gICAqL1xuICBAT3V0cHV0KCkgc2hvd25FdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBmaXJlcyBpbW1lZGlhdGVseSB3aGVuIHRoZSBoaWRlIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgaGlkZUV2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIHJhaXNlZCB3aGVuIHRoZSB0b29sdGlwIGhhcyBmaW5pc2hlZCBiZWluZyBoaWRkZW4gZnJvbSB0aGUgdXNlciAoaXQgd2lsbCB3YWl0IGZvciB0aGUgQ1NTIHRyYW5zaXRpb25zIHRvIGNvbXBsZXRlKS5cbiAgICovXG4gIEBPdXRwdXQoKSBoaWRkZW5FdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBmaXJlcyBhZnRlciB0aGUgc2hvdyBldmVudCB3aGVuIHRoZSB0b29sdGlwIHRlbXBsYXRlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBET00uXG4gICAqL1xuICBAT3V0cHV0KCkgaW5zZXJ0ZWRFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIHBvcG92ZXI/OiBQb3BvdmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtdG9nZ2xlJywgJ3BvcG92ZXInKTtcbiAgICB0aGlzLnBvcG92ZXIgPSBQb3BvdmVyLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcy5lbGVtZW50KTtcblxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzaG93LmJzLnBvcG92ZXInLCBldmVudCA9PiB0aGlzLnNob3dFdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Nob3duLmJzLnBvcG92ZXInLCBldmVudCA9PiB0aGlzLnNob3duRXZlbnQuZW1pdChldmVudCkpO1xuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdoaWRlLmJzLnBvcG92ZXInLCBldmVudCA9PiB0aGlzLmhpZGVFdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2hpZGRlbi5icy5wb3BvdmVyJywgZXZlbnQgPT4gdGhpcy5oaWRkZW5FdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2luc2VydGVkLmJzLnBvcG92ZXInLCBldmVudCA9PiB0aGlzLmluc2VydGVkRXZlbnQuZW1pdChldmVudCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgdGhlIHBvcG92ZXIgb2YgYW4gaXRlbS5cbiAgICovXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8uc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgdGhlIHBvcG92ZXIgb2YgYW4gZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8uaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIC8gRGVhY3RpdmF0ZSB0aGUgcG9wb3ZlciBvZiBhbiBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8udG9nZ2xlKCk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgYW5kIGRlc3Ryb3lzIHRoZSBwb3BvdmVyIG9mIGFuIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXI/LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlcyB0aGUgcG9wb3ZlciBvZiBhbiBlbGVtZW50IGEgY2hhbmNlIHRvIGJlIHNob3duLlxuICAgKi9cbiAgcHVibGljIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXI/LmVuYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGFiaWxpdHkgdG8gc2hvdyB0aGUgcG9wb3ZlciBvZiBhbiBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyPy5kaXNhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcG9wb3ZlciBvZiBhbiBlbGVtZW50IGlzIHNob3duIG9yIGhpZGRlbi5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVFbmFibGVkKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlcj8uZGlzYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQncyBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXI/LmRpc2FibGUoKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { NgIf } from '@angular/common';
|
|
4
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngx-translate/core";
|
|
7
|
+
export class ItProgressBarComponent {
|
|
8
|
+
/**
|
|
9
|
+
* Return the background color
|
|
10
|
+
*/
|
|
11
|
+
get bgColor() {
|
|
12
|
+
if (!this.color) {
|
|
13
|
+
return '';
|
|
14
|
+
}
|
|
15
|
+
return ` bg-${this.color}`;
|
|
16
|
+
}
|
|
17
|
+
get isIndeterminate() {
|
|
18
|
+
return isTrueBooleanInput(this.indeterminate);
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItProgressBarComponent, isStandalone: true, 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItProgressBarComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{ standalone: true, selector: 'it-progress-bar[value]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, TranslateModule], 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" }]
|
|
26
|
+
}], propDecorators: { value: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], showLabel: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], indeterminate: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], color: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFTdEQsTUFBTSxPQUFPLHNCQUFzQjtJQXNCakM7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0FuQ1Usc0JBQXNCO2tHQUF0QixzQkFBc0Isc0xDYm5DLDJyQkFlQSw0Q0RKWSxJQUFJLDRGQUFFLGVBQWU7OzJGQUVwQixzQkFBc0I7a0JBUGxDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLHdCQUF3QixtQkFFakIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUM7OEJBT3ZCLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29sb3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2l0LXByb2dyZXNzLWJhclt2YWx1ZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0lmLCBUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEl0UHJvZ3Jlc3NCYXJDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvZ3Jlc3MgYmFyIHZhbHVlIFswLCAxMDBdXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgcHJvZ3Jlc3MgbGFiZWxcbiAgICovXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogQm9vbGVhbklucHV0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBwcm9ncmVzcyBhcyBpbmRldGVybWluYXRlXG4gICAqL1xuICBASW5wdXQoKSBpbmRldGVybWluYXRlOiBCb29sZWFuSW5wdXQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyBiYXIgY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yOiBQcm9ncmVzc0JhckNvbG9yIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICovXG4gIGdldCBiZ0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAgYmctJHt0aGlzLmNvbG9yfWA7XG4gIH1cblxuICBnZXQgaXNJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5pbmRldGVybWluYXRlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci13cmFwcGVyXCI+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 { ItProgressBarComponent } from '../progress-bar/progress-bar.component';
|
|
4
|
+
import { NgIf } from '@angular/common';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ItProgressButtonComponent {
|
|
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
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItProgressButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItProgressButtonComponent, isStandalone: true, 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ItProgressBarComponent, selector: "it-progress-bar[value]", inputs: ["value", "showLabel", "indeterminate", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItProgressButtonComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ standalone: true, selector: 'button[itButton][progress]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, ItProgressBarComponent], 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1idXR0b24vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1idXR0b24vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVXZDLE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLElBQUksVUFBVTtRQUNaLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDOzhHQTFCVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix3SkNkdEMsdU9BTUEsNENETVksSUFBSSw2RkFBRSxzQkFBc0I7OzJGQUUzQix5QkFBeUI7a0JBUnJDLFNBQVM7aUNBQ0ksSUFBSSxZQUVOLDRCQUE0QixtQkFFckIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQzs4QkFXOUIsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBQcm9ncmVzc0JhckNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9jb3JlJztcbmltcG9ydCB7IEl0UHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYnV0dG9uW2l0QnV0dG9uXVtwcm9ncmVzc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0lmLCBJdFByb2dyZXNzQmFyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJdFByb2dyZXNzQnV0dG9uQ29tcG9uZW50IHtcblxuICAvKipcbiAgICogQmVoYXZpb3Igb2YgdGhlIHByb2dyZXNzIGJhclxuICAgKiAtIDxiPnRydWU8L2I+OiBTaG93IGluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgYmFyXG4gICAqIC0gPGI+ZmFsc2U8L2I+IG9yIDxiPnVuZGVmaW5lZDwvYj46IEhpZGUgcHJvZ3Jlc3MgYmFyXG4gICAqIC0gPGI+bnVtYmVyPC9iPiBbMCwgMTAwXTogQXNzaWduIGEgc3BlY2lmaWMgdmFsdWUgdG8gdGhlIHByb2dyZXNzIGJhclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzOiBudW1iZXIgfCBCb29sZWFuSW5wdXQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyBiYXIgY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzQ29sb3I6IFByb2dyZXNzQmFyQ29sb3IgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IGlzUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnByb2dyZXNzID09PSAnbnVtYmVyJyB8fCBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5wcm9ncmVzcyk7XG4gIH1cblxuICBnZXQgcHJvZ3Jlc3NWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wcm9ncmVzcyA9PT0gJ251bWJlcicgPyB0aGlzLnByb2dyZXNzIDogMDtcbiAgfVxuXG4gIGdldCBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnByb2dyZXNzICE9PSAnbnVtYmVyJyAmJiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5wcm9ncmVzcyk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48aXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNQcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9ncmVzc1ZhbHVlXCJcbiAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInByb2dyZXNzQ29sb3JcIj48L2l0LXByb2dyZXNzLWJhcj5cbiJdfQ==
|