design-angular-kit 1.0.0-9 → 1.0.0-prerelease.2
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 +212 -64
- package/assets/i18n/en.json +81 -12
- package/assets/i18n/it.json +80 -11
- package/esm2022/lib/abstracts/abstract-form.component.mjs +187 -0
- package/esm2022/lib/abstracts/abstract.component.mjs +45 -0
- package/esm2022/lib/components/core/accordion/accordion.component.mjs +39 -0
- package/esm2022/lib/components/core/alert/alert.component.mjs +71 -0
- package/esm2022/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.mjs +43 -0
- package/esm2022/lib/components/core/avatar/avatar-group/avatar-group.component.mjs +38 -0
- package/esm2022/lib/components/core/avatar/avatar.directive.mjs +78 -0
- package/esm2022/lib/components/core/avatar/avatar.module.mjs +33 -0
- package/esm2022/lib/components/core/badge/badge.directive.mjs +39 -0
- package/esm2022/lib/components/core/button/button.directive.mjs +86 -0
- package/esm2022/lib/components/core/callout/callout.component.mjs +57 -0
- package/esm2022/lib/components/core/card/card.component.mjs +59 -0
- package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +84 -0
- package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
- package/esm2022/lib/components/core/carousel/carousel.module.mjs +18 -0
- package/esm2022/lib/components/core/chip/chip.component.mjs +136 -0
- package/esm2022/lib/components/core/collapse/collapse.component.mjs +104 -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 +55 -0
- package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +19 -0
- package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +144 -0
- package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +61 -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 +42 -0
- package/esm2022/lib/components/core/list/list/list.component.mjs +22 -0
- package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +51 -0
- package/esm2022/lib/components/core/list/list.module.mjs +18 -0
- package/esm2022/lib/components/core/modal/modal.component.mjs +194 -0
- package/esm2022/lib/components/core/notifications/notifications.component.mjs +111 -0
- package/esm2022/lib/components/core/pagination/pagination.component.mjs +130 -0
- package/esm2022/lib/components/core/popover/popover.directive.mjs +176 -0
- package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
- package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +25 -0
- package/esm2022/lib/components/core/spinner/spinner.component.mjs +30 -0
- package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +116 -0
- package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +20 -0
- package/esm2022/lib/components/core/steppers/steppers.module.mjs +18 -0
- package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +63 -0
- package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +39 -0
- package/esm2022/lib/components/core/tab/tab.module.mjs +18 -0
- package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +134 -0
- package/esm2022/lib/components/core/table/sort/sort.directive.mjs +123 -0
- package/esm2022/lib/components/core/table/table.component.mjs +45 -0
- package/esm2022/lib/components/core/table/table.module.mjs +19 -0
- package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +143 -0
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +106 -0
- package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +48 -0
- package/esm2022/lib/components/form/form.module.mjs +59 -0
- package/esm2022/lib/components/form/input/input.component.mjs +187 -0
- package/esm2022/lib/components/form/password-input/password-input.component.mjs +149 -0
- package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +60 -0
- package/esm2022/lib/components/form/range/range.component.mjs +64 -0
- package/esm2022/lib/components/form/rating/rating.component.mjs +50 -0
- package/esm2022/lib/components/form/select/select.component.mjs +70 -0
- package/esm2022/lib/components/form/textarea/textarea.component.mjs +55 -0
- package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +142 -0
- package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +107 -0
- package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +67 -0
- package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +58 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +51 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +21 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +18 -0
- package/esm2022/lib/components/navigation/header/header.component.mjs +87 -0
- package/esm2022/lib/components/navigation/megamenu/megamenu.component.mjs +27 -0
- package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +40 -0
- package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +11 -0
- package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +18 -0
- package/esm2022/lib/components/utils/error-page/error-page.component.mjs +74 -0
- package/esm2022/lib/components/utils/icon/icon.component.mjs +58 -0
- package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +50 -0
- package/esm2022/lib/design-angular-kit.module.mjs +213 -0
- package/esm2022/lib/enums/colors.enums.mjs +12 -0
- package/esm2022/lib/enums/sizes.enum.mjs +9 -0
- package/esm2022/lib/interfaces/core.mjs +16 -0
- package/esm2022/lib/interfaces/design-angular-kit-config.mjs +7 -0
- package/esm2022/lib/interfaces/form.mjs +2 -0
- package/esm2022/lib/interfaces/icon.mjs +165 -0
- package/esm2022/lib/interfaces/sortable-table.mjs +6 -0
- package/esm2022/lib/pipes/date-ago.pipe.mjs +56 -0
- package/esm2022/lib/pipes/duration.pipe.mjs +110 -0
- package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +48 -0
- package/esm2022/lib/provide-design-angular-kit.mjs +61 -0
- package/esm2022/lib/services/notification/notification.service.mjs +120 -0
- package/esm2022/lib/utils/coercion.mjs +18 -0
- package/esm2022/lib/utils/date-utils.mjs +160 -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 +99 -0
- package/fesm2022/design-angular-kit.mjs +5556 -0
- package/fesm2022/design-angular-kit.mjs.map +1 -0
- package/lib/abstracts/{abstract-form-component.d.ts → abstract-form.component.d.ts} +12 -14
- package/lib/abstracts/abstract.component.d.ts +18 -8
- package/lib/components/core/accordion/accordion.component.d.ts +11 -5
- package/lib/components/core/alert/alert.component.d.ts +15 -10
- package/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.d.ts +29 -0
- package/lib/components/core/avatar/avatar-group/avatar-group.component.d.ts +13 -0
- package/lib/components/core/avatar/avatar.directive.d.ts +33 -0
- package/lib/components/core/avatar/avatar.module.d.ts +9 -0
- package/lib/components/core/badge/badge.directive.d.ts +14 -7
- package/lib/components/core/button/button.directive.d.ts +25 -15
- package/lib/components/core/callout/callout.component.d.ts +18 -20
- package/lib/components/core/card/card.component.d.ts +46 -18
- package/lib/components/core/carousel/carousel/carousel.component.d.ts +34 -15
- package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +8 -3
- package/lib/components/core/carousel/carousel.module.d.ts +8 -0
- package/lib/components/core/chip/chip.component.d.ts +29 -15
- package/lib/components/core/collapse/collapse.component.d.ts +22 -15
- 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 +6 -6
- package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +30 -17
- package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +15 -12
- 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 +14 -10
- package/lib/components/core/list/list/list.component.d.ts +20 -6
- package/lib/components/core/list/list-item/list-item.component.d.ts +23 -9
- package/lib/components/core/list/list.module.d.ts +8 -0
- package/lib/components/core/modal/modal.component.d.ts +89 -13
- package/lib/components/core/notifications/notifications.component.d.ts +9 -8
- package/lib/components/core/pagination/pagination.component.d.ts +71 -10
- package/lib/components/core/popover/popover.directive.d.ts +15 -14
- package/lib/components/core/progress-bar/progress-bar.component.d.ts +11 -8
- package/lib/components/core/progress-button/progress-button.component.d.ts +5 -6
- package/lib/components/core/spinner/spinner.component.d.ts +13 -10
- package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +55 -27
- package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +5 -4
- package/lib/components/core/steppers/steppers.module.d.ts +8 -0
- package/lib/components/core/tab/tab-container/tab-container.component.d.ts +15 -12
- package/lib/components/core/tab/tab-item/tab-item.component.d.ts +14 -10
- package/lib/components/core/tab/tab.module.d.ts +8 -0
- package/lib/components/core/table/sort/sort-header/sort-header.component.d.ts +72 -0
- package/lib/components/core/table/sort/sort.directive.d.ts +53 -0
- package/lib/components/core/table/table.component.d.ts +26 -20
- package/lib/components/core/table/table.module.d.ts +9 -0
- package/lib/components/core/tooltip/tooltip.directive.d.ts +12 -11
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +55 -0
- package/lib/components/form/checkbox/checkbox.component.d.ts +23 -12
- package/lib/components/form/form.module.d.ts +17 -0
- package/lib/components/form/input/input.component.d.ts +42 -43
- package/lib/components/form/password-input/password-input.component.d.ts +35 -10
- package/lib/components/form/radio-button/radio-button.component.d.ts +20 -11
- 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 +12 -6
- package/lib/components/form/textarea/textarea.component.d.ts +15 -5
- package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +18 -12
- package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +14 -11
- package/lib/components/navigation/back-button/back-button.component.d.ts +8 -8
- package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +15 -16
- package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +12 -14
- package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +9 -8
- package/lib/components/navigation/breadcrumbs/breadcrumbs.module.d.ts +8 -0
- package/lib/components/navigation/header/header.component.d.ts +28 -25
- package/lib/components/navigation/megamenu/megamenu.component.d.ts +22 -0
- package/lib/components/navigation/navbar/navbar/navbar.component.d.ts +16 -0
- package/lib/components/navigation/navbar/navbar-item/navbar-item.component.d.ts +5 -0
- package/lib/components/navigation/navbar/navbar.module.d.ts +8 -0
- package/lib/components/utils/error-page/error-page.component.d.ts +44 -0
- package/lib/components/utils/icon/icon.component.d.ts +25 -17
- package/lib/components/utils/language-switcher/language-switcher.component.d.ts +9 -5
- package/lib/design-angular-kit.module.d.ts +44 -7
- package/lib/enums/colors.enums.d.ts +10 -0
- package/lib/enums/sizes.enum.d.ts +7 -0
- package/lib/interfaces/core.d.ts +16 -15
- package/lib/interfaces/design-angular-kit-config.d.ts +30 -0
- package/lib/interfaces/form.d.ts +9 -9
- package/lib/interfaces/icon.d.ts +4 -3
- package/lib/interfaces/sortable-table.d.ts +33 -0
- package/lib/pipes/date-ago.pipe.d.ts +17 -0
- package/lib/pipes/duration.pipe.d.ts +35 -0
- package/lib/pipes/mark-matching-text.pipe.d.ts +15 -7
- package/lib/provide-design-angular-kit.d.ts +7 -0
- package/lib/services/{notifications/notifications.service.d.ts → notification/notification.service.d.ts} +3 -3
- package/lib/utils/coercion.d.ts +14 -0
- package/lib/utils/date-utils.d.ts +78 -0
- package/lib/utils/file-utils.d.ts +1 -1
- package/lib/utils/regex.d.ts +5 -0
- package/lib/validators/it-validators.d.ts +9 -2
- package/package.json +17 -22
- package/public_api.d.ts +31 -4
- package/esm2020/lib/abstracts/abstract-form-component.mjs +0 -174
- package/esm2020/lib/abstracts/abstract.component.mjs +0 -27
- package/esm2020/lib/components/core/accordion/accordion.component.mjs +0 -31
- package/esm2020/lib/components/core/alert/alert.component.mjs +0 -69
- package/esm2020/lib/components/core/badge/badge.directive.mjs +0 -34
- package/esm2020/lib/components/core/button/button.directive.mjs +0 -80
- package/esm2020/lib/components/core/callout/callout.component.mjs +0 -84
- package/esm2020/lib/components/core/card/card.component.mjs +0 -58
- package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +0 -66
- package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -14
- 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 -51
- package/esm2020/lib/components/core/link/link.component.mjs +0 -40
- package/esm2020/lib/components/core/list/list/list.component.mjs +0 -13
- package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +0 -36
- package/esm2020/lib/components/core/modal/modal.component.mjs +0 -98
- package/esm2020/lib/components/core/notifications/notifications.component.mjs +0 -110
- package/esm2020/lib/components/core/pagination/pagination.component.mjs +0 -51
- package/esm2020/lib/components/core/popover/popover.directive.mjs +0 -179
- 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/spinner/spinner.component.mjs +0 -35
- package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -119
- package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -18
- 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 -143
- package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +0 -40
- package/esm2020/lib/components/form/input/input.component.mjs +0 -222
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +0 -112
- package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +0 -53
- 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 -137
- 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 -74
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -45
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -23
- package/esm2020/lib/components/navigation/header/header.component.mjs +0 -63
- package/esm2020/lib/components/utils/icon/icon.component.mjs +0 -54
- package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -39
- package/esm2020/lib/components/utils/not-found-page/not-found-page.component.mjs +0 -13
- package/esm2020/lib/design-angular-kit.module.mjs +0 -56
- package/esm2020/lib/interfaces/core.mjs +0 -16
- package/esm2020/lib/interfaces/form.mjs +0 -2
- package/esm2020/lib/interfaces/icon.mjs +0 -2
- package/esm2020/lib/modules/components.module.mjs +0 -257
- 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/boolean-input.mjs +0 -15
- 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 -134
- package/esm2020/public_api.mjs +0 -70
- package/fesm2015/design-angular-kit.mjs +0 -3850
- package/fesm2015/design-angular-kit.mjs.map +0 -1
- package/fesm2020/design-angular-kit.mjs +0 -3797
- package/fesm2020/design-angular-kit.mjs.map +0 -1
- package/lib/components/utils/not-found-page/not-found-page.component.d.ts +0 -5
- package/lib/modules/components.module.d.ts +0 -61
- package/lib/utils/boolean-input.d.ts +0 -11
- /package/{esm2020 → esm2022}/design-angular-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/utils.mjs +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Inject, Input, Optional, Output, booleanAttribute, HostBinding } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { IT_SORT_DEFAULT_OPTIONS } from "../../../../interfaces/sortable-table";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ItSortDirective {
|
|
6
|
+
/** The sort direction of the currently active ItSortable. */
|
|
7
|
+
get direction() {
|
|
8
|
+
return this._direction;
|
|
9
|
+
}
|
|
10
|
+
set direction(direction) {
|
|
11
|
+
this._direction = direction;
|
|
12
|
+
}
|
|
13
|
+
constructor(_defaultOptions) {
|
|
14
|
+
this._defaultOptions = _defaultOptions;
|
|
15
|
+
/**
|
|
16
|
+
* The direction to set when an MatSortable is initially sorted.
|
|
17
|
+
* May be overridden by the MatSortable's sort start.
|
|
18
|
+
*/
|
|
19
|
+
this.start = 'asc';
|
|
20
|
+
/** Whether the sortable is disabled. */
|
|
21
|
+
this.sortDisabled = false;
|
|
22
|
+
/** Event emitted when the user changes either the active sort or sort direction. */
|
|
23
|
+
this.sortChange = new EventEmitter();
|
|
24
|
+
this.sortDirectiveClass = 'it-sort';
|
|
25
|
+
/** Collection of all registered sortables that this directive manages. */
|
|
26
|
+
this.sortables = new Map();
|
|
27
|
+
/** Used to notify any child components listening to state changes. */
|
|
28
|
+
this._stateChanges = new Subject();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register function to be used by the contained ItSortables. Adds the ItSortable to the
|
|
32
|
+
* collection of ItSortables.
|
|
33
|
+
*/
|
|
34
|
+
register(sortable) {
|
|
35
|
+
this.sortables.set(sortable.id, sortable);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Unregister function to be used by the contained ItSortables. Removes the ItSortable from the
|
|
39
|
+
* collection of contained ItSortables.
|
|
40
|
+
*/
|
|
41
|
+
deregister(sortable) {
|
|
42
|
+
this.sortables.delete(sortable.id);
|
|
43
|
+
}
|
|
44
|
+
/** Sets the active sort id and determines the new sort direction. */
|
|
45
|
+
sort(sortable) {
|
|
46
|
+
if (this.active != sortable.id) {
|
|
47
|
+
this.active = sortable.id;
|
|
48
|
+
this.direction = sortable.start ? sortable.start : this.start;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.direction = this.getNextSortDirection(sortable);
|
|
52
|
+
}
|
|
53
|
+
this.sortChange.emit({ active: this.active, direction: this.direction });
|
|
54
|
+
}
|
|
55
|
+
/** Returns the next sort direction of the active sortable, checking for potential overrides. */
|
|
56
|
+
getNextSortDirection(sortable) {
|
|
57
|
+
if (!sortable) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
// Get the sort direction cycle with the potential sortable overrides.
|
|
61
|
+
const disableClear = sortable?.disableSortClear ?? this.disableSortClear ?? !!this._defaultOptions?.disableClear;
|
|
62
|
+
let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);
|
|
63
|
+
// Get and return the next direction in the cycle
|
|
64
|
+
let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;
|
|
65
|
+
if (nextDirectionIndex >= sortDirectionCycle.length) {
|
|
66
|
+
nextDirectionIndex = 0;
|
|
67
|
+
}
|
|
68
|
+
return sortDirectionCycle[nextDirectionIndex];
|
|
69
|
+
}
|
|
70
|
+
ngOnChanges() {
|
|
71
|
+
this._stateChanges.next();
|
|
72
|
+
}
|
|
73
|
+
ngOnDestroy() {
|
|
74
|
+
this._stateChanges.complete();
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSortDirective, deps: [{ token: IT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
77
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.2", type: ItSortDirective, isStandalone: true, selector: "[itSort]", inputs: { active: ["itSortActive", "active"], start: ["itSortStart", "start"], direction: ["itSortDirection", "direction"], disableSortClear: ["disableSortClear", "disableSortClear", booleanAttribute], sortDisabled: ["sortDisabled", "sortDisabled", booleanAttribute] }, outputs: { sortChange: "sortChange" }, host: { properties: { "class": "this.sortDirectiveClass" } }, exportAs: ["itSort"], usesOnChanges: true, ngImport: i0 }); }
|
|
78
|
+
}
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSortDirective, decorators: [{
|
|
80
|
+
type: Directive,
|
|
81
|
+
args: [{
|
|
82
|
+
standalone: true,
|
|
83
|
+
selector: '[itSort]',
|
|
84
|
+
exportAs: 'itSort'
|
|
85
|
+
}]
|
|
86
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
87
|
+
type: Optional
|
|
88
|
+
}, {
|
|
89
|
+
type: Inject,
|
|
90
|
+
args: [IT_SORT_DEFAULT_OPTIONS]
|
|
91
|
+
}] }], propDecorators: { active: [{
|
|
92
|
+
type: Input,
|
|
93
|
+
args: ['itSortActive']
|
|
94
|
+
}], start: [{
|
|
95
|
+
type: Input,
|
|
96
|
+
args: ['itSortStart']
|
|
97
|
+
}], direction: [{
|
|
98
|
+
type: Input,
|
|
99
|
+
args: ['itSortDirection']
|
|
100
|
+
}], disableSortClear: [{
|
|
101
|
+
type: Input,
|
|
102
|
+
args: [{ transform: booleanAttribute }]
|
|
103
|
+
}], sortDisabled: [{
|
|
104
|
+
type: Input,
|
|
105
|
+
args: [{ transform: booleanAttribute }]
|
|
106
|
+
}], sortChange: [{
|
|
107
|
+
type: Output
|
|
108
|
+
}], sortDirectiveClass: [{
|
|
109
|
+
type: HostBinding,
|
|
110
|
+
args: ['class']
|
|
111
|
+
}] } });
|
|
112
|
+
/** Returns the sort direction cycle to use given the provided parameters of order and clear. */
|
|
113
|
+
function getSortDirectionCycle(start, disableClear) {
|
|
114
|
+
let sortOrder = ['asc', 'desc'];
|
|
115
|
+
if (start == 'desc') {
|
|
116
|
+
sortOrder.reverse();
|
|
117
|
+
}
|
|
118
|
+
if (!disableClear) {
|
|
119
|
+
sortOrder.push(undefined);
|
|
120
|
+
}
|
|
121
|
+
return sortOrder;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFibGUvc29ydC9zb3J0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFDTCx1QkFBdUIsRUFLeEIsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGVBQWU7SUFXMUIsNkRBQTZEO0lBQzdELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsU0FBd0I7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQTJCRCxZQUdVLGVBQXNDO1FBQXRDLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtRQTNDaEQ7OztZQUdJO1FBQ2tCLFVBQUssR0FBa0IsS0FBSyxDQUFDO1FBb0JuRCx3Q0FBd0M7UUFFeEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsb0ZBQW9GO1FBQ2pFLGVBQVUsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUczRSx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFFL0MsMEVBQTBFO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUVwRCxzRUFBc0U7UUFDN0Qsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTzdDLENBQUM7SUFFRDs7O1NBR0s7SUFDTCxRQUFR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T0FBTzs7QUEwRXRCLGdHQUFnRztBQUNoRyxTQUFTLHFCQUFxQixDQUFDLEtBQW9CLEVBQUUsWUFBcUI7SUFDeEUsSUFBSSxTQUFTLEdBQXlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgSVRfU09SVF9ERUZBVUxUX09QVElPTlMsXG4gIEl0U29ydGFibGUsXG4gIEl0U29ydERlZmF1bHRPcHRpb25zLFxuICBJdFNvcnRFdmVudCxcbiAgU29ydERpcmVjdGlvblxufSBmcm9tIFwiLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9zb3J0YWJsZS10YWJsZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbaXRTb3J0XScsXG4gIGV4cG9ydEFzOiAnaXRTb3J0J1xufSlcbmV4cG9ydCBjbGFzcyBJdFNvcnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgLyoqIFRoZSBpZCBvZiB0aGUgbW9zdCByZWNlbnRseSBzb3J0ZWQgSXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KCdpdFNvcnRBY3RpdmUnKSBhY3RpdmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgKiBUaGUgZGlyZWN0aW9uIHRvIHNldCB3aGVuIGFuIE1hdFNvcnRhYmxlIGlzIGluaXRpYWxseSBzb3J0ZWQuXG4gICAgKiBNYXkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgTWF0U29ydGFibGUncyBzb3J0IHN0YXJ0LlxuICAgICovXG4gIEBJbnB1dCgnaXRTb3J0U3RhcnQnKSBzdGFydDogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xuXG4gIC8qKiBUaGUgc29ydCBkaXJlY3Rpb24gb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgSXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KCdpdFNvcnREaXJlY3Rpb24nKVxuICBnZXQgZGlyZWN0aW9uKCk6IFNvcnREaXJlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9kaXJlY3Rpb247XG4gIH1cbiAgc2V0IGRpcmVjdGlvbihkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24pIHtcbiAgICB0aGlzLl9kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gIH1cbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHVzZXIgZnJvbSBjbGVhcmluZyB0aGUgc29ydCBieSBmaW5pc2hpbmcgdGhlIHNvcnQgZGlyZWN0aW9uIGN5Y2xlLlxuICAgKiBNYXkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgSXRTb3J0YWJsZSdzIGRpc2FibGUgY2xlYXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pXG4gIGRpc2FibGVTb3J0Q2xlYXI/OiBib29sZWFuO1xuXG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNvcnRhYmxlIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pXG4gIHNvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyBlaXRoZXIgdGhlIGFjdGl2ZSBzb3J0IG9yIHNvcnQgZGlyZWN0aW9uLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc29ydENoYW5nZTogRXZlbnRFbWl0dGVyPEl0U29ydEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SXRTb3J0RXZlbnQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyByZWFkb25seSBzb3J0RGlyZWN0aXZlQ2xhc3MgPSAnaXQtc29ydCc7XG5cbiAgLyoqIENvbGxlY3Rpb24gb2YgYWxsIHJlZ2lzdGVyZWQgc29ydGFibGVzIHRoYXQgdGhpcyBkaXJlY3RpdmUgbWFuYWdlcy4gKi9cbiAgcHJvdGVjdGVkIHNvcnRhYmxlcyA9IG5ldyBNYXA8c3RyaW5nLCBJdFNvcnRhYmxlPigpO1xuXG4gIC8qKiBVc2VkIHRvIG5vdGlmeSBhbnkgY2hpbGQgY29tcG9uZW50cyBsaXN0ZW5pbmcgdG8gc3RhdGUgY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgX3N0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KElUX1NPUlRfREVGQVVMVF9PUFRJT05TKVxuICAgIHByaXZhdGUgX2RlZmF1bHRPcHRpb25zPzogSXRTb3J0RGVmYXVsdE9wdGlvbnMsXG4gICkge1xuICB9XG5cbiAgLyoqXG4gICAgICogUmVnaXN0ZXIgZnVuY3Rpb24gdG8gYmUgdXNlZCBieSB0aGUgY29udGFpbmVkIEl0U29ydGFibGVzLiBBZGRzIHRoZSBJdFNvcnRhYmxlIHRvIHRoZVxuICAgICAqIGNvbGxlY3Rpb24gb2YgSXRTb3J0YWJsZXMuXG4gICAgICovXG4gIHJlZ2lzdGVyKHNvcnRhYmxlOiBJdFNvcnRhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0YWJsZXMuc2V0KHNvcnRhYmxlLmlkLCBzb3J0YWJsZSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlciBmdW5jdGlvbiB0byBiZSB1c2VkIGJ5IHRoZSBjb250YWluZWQgSXRTb3J0YWJsZXMuIFJlbW92ZXMgdGhlIEl0U29ydGFibGUgZnJvbSB0aGVcbiAgICogY29sbGVjdGlvbiBvZiBjb250YWluZWQgSXRTb3J0YWJsZXMuXG4gICAqL1xuICBkZXJlZ2lzdGVyKHNvcnRhYmxlOiBJdFNvcnRhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0YWJsZXMuZGVsZXRlKHNvcnRhYmxlLmlkKTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBhY3RpdmUgc29ydCBpZCBhbmQgZGV0ZXJtaW5lcyB0aGUgbmV3IHNvcnQgZGlyZWN0aW9uLiAqL1xuICBzb3J0KHNvcnRhYmxlOiBJdFNvcnRhYmxlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlICE9IHNvcnRhYmxlLmlkKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHNvcnRhYmxlLmlkO1xuICAgICAgdGhpcy5kaXJlY3Rpb24gPSBzb3J0YWJsZS5zdGFydCA/IHNvcnRhYmxlLnN0YXJ0IDogdGhpcy5zdGFydDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXJlY3Rpb24gPSB0aGlzLmdldE5leHRTb3J0RGlyZWN0aW9uKHNvcnRhYmxlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7YWN0aXZlOiB0aGlzLmFjdGl2ZSwgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbn0pO1xuICB9XG5cblxuICAvKiogUmV0dXJucyB0aGUgbmV4dCBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgYWN0aXZlIHNvcnRhYmxlLCBjaGVja2luZyBmb3IgcG90ZW50aWFsIG92ZXJyaWRlcy4gKi9cbiAgZ2V0TmV4dFNvcnREaXJlY3Rpb24oc29ydGFibGU6IEl0U29ydGFibGUpOiBTb3J0RGlyZWN0aW9uIHtcbiAgICBpZiAoIXNvcnRhYmxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgc29ydCBkaXJlY3Rpb24gY3ljbGUgd2l0aCB0aGUgcG90ZW50aWFsIHNvcnRhYmxlIG92ZXJyaWRlcy5cbiAgICBjb25zdCBkaXNhYmxlQ2xlYXIgPVxuICAgICAgc29ydGFibGU/LmRpc2FibGVTb3J0Q2xlYXIgPz8gdGhpcy5kaXNhYmxlU29ydENsZWFyID8/ICEhdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmRpc2FibGVDbGVhcjtcbiAgICBsZXQgc29ydERpcmVjdGlvbkN5Y2xlID0gZ2V0U29ydERpcmVjdGlvbkN5Y2xlKHNvcnRhYmxlLnN0YXJ0IHx8IHRoaXMuc3RhcnQsIGRpc2FibGVDbGVhcik7XG5cbiAgICAvLyBHZXQgYW5kIHJldHVybiB0aGUgbmV4dCBkaXJlY3Rpb24gaW4gdGhlIGN5Y2xlXG4gICAgbGV0IG5leHREaXJlY3Rpb25JbmRleCA9IHNvcnREaXJlY3Rpb25DeWNsZS5pbmRleE9mKHRoaXMuZGlyZWN0aW9uKSArIDE7XG4gICAgaWYgKG5leHREaXJlY3Rpb25JbmRleCA+PSBzb3J0RGlyZWN0aW9uQ3ljbGUubGVuZ3RoKSB7XG4gICAgICBuZXh0RGlyZWN0aW9uSW5kZXggPSAwO1xuICAgIH1cbiAgICByZXR1cm4gc29ydERpcmVjdGlvbkN5Y2xlW25leHREaXJlY3Rpb25JbmRleF07XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuXG4vKiogUmV0dXJucyB0aGUgc29ydCBkaXJlY3Rpb24gY3ljbGUgdG8gdXNlIGdpdmVuIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzIG9mIG9yZGVyIGFuZCBjbGVhci4gKi9cbmZ1bmN0aW9uIGdldFNvcnREaXJlY3Rpb25DeWNsZShzdGFydDogU29ydERpcmVjdGlvbiwgZGlzYWJsZUNsZWFyOiBib29sZWFuKTogQXJyYXk8U29ydERpcmVjdGlvbnx1bmRlZmluZWQ+IHtcbiAgbGV0IHNvcnRPcmRlcjogQXJyYXk8U29ydERpcmVjdGlvbj4gPSBbJ2FzYycsICdkZXNjJ107XG4gIGlmIChzdGFydCA9PSAnZGVzYycpIHtcbiAgICBzb3J0T3JkZXIucmV2ZXJzZSgpO1xuICB9XG4gIGlmICghZGlzYWJsZUNsZWFyKSB7XG4gICAgc29ydE9yZGVyLnB1c2godW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJldHVybiBzb3J0T3JkZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { inputToBoolean } from '../../../utils/coercion';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ItTableComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* Responsive tables allow you to scroll tables horizontally with ease.
|
|
8
|
+
* @default responsive
|
|
9
|
+
*/
|
|
10
|
+
this.responsive = 'responsive';
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.2", type: ItTableComponent, isStandalone: true, selector: "it-table", inputs: { color: "color", headColor: "headColor", alignment: "alignment", striped: ["striped", "striped", inputToBoolean], hover: ["hover", "hover", inputToBoolean], bordered: ["bordered", "bordered", inputToBoolean], borderless: ["borderless", "borderless", inputToBoolean], compact: ["compact", "compact", inputToBoolean], captionTop: ["captionTop", "captionTop", inputToBoolean], responsive: "responsive" }, ngImport: i0, template: "<div [class]=\"responsive ? 'table-' + responsive : undefined\">\n <table class=\"table{{color ? ' table-' + color : '' }}{{alignment ? ' ' + alignment : '' }}\"\n [class.table-striped]=\"striped\"\n [class.table-hover]=\"hover\"\n [class.table-bordered]=\"bordered\"\n [class.table-borderless]=\"borderless\"\n [class.table-sm]=\"compact\"\n [class.caption-top]=\"captionTop\">\n <caption>\n <ng-content select=\"[caption]\"></ng-content>\n </caption>\n <thead [class]=\"headColor ? 'table-' + headColor : undefined\">\n <ng-content select=\"[thead]\"></ng-content>\n </thead>\n <tbody>\n <ng-content select=\"[tbody]\"></ng-content>\n </tbody>\n <tfoot>\n <ng-content select=\"[tfoot]\"></ng-content>\n </tfoot>\n </table>\n</div>\n", styles: ["caption:empty{display:none}caption:empty~thead{border-top:none!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTableComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ standalone: true, selector: 'it-table', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<div [class]=\"responsive ? 'table-' + responsive : undefined\">\n <table class=\"table{{color ? ' table-' + color : '' }}{{alignment ? ' ' + alignment : '' }}\"\n [class.table-striped]=\"striped\"\n [class.table-hover]=\"hover\"\n [class.table-bordered]=\"bordered\"\n [class.table-borderless]=\"borderless\"\n [class.table-sm]=\"compact\"\n [class.caption-top]=\"captionTop\">\n <caption>\n <ng-content select=\"[caption]\"></ng-content>\n </caption>\n <thead [class]=\"headColor ? 'table-' + headColor : undefined\">\n <ng-content select=\"[thead]\"></ng-content>\n </thead>\n <tbody>\n <ng-content select=\"[tbody]\"></ng-content>\n </tbody>\n <tfoot>\n <ng-content select=\"[tfoot]\"></ng-content>\n </tfoot>\n </table>\n</div>\n", styles: ["caption:empty{display:none}caption:empty~thead{border-top:none!important}\n"] }]
|
|
18
|
+
}], propDecorators: { color: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], headColor: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], alignment: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], striped: [{
|
|
25
|
+
type: Input,
|
|
26
|
+
args: [{ transform: inputToBoolean }]
|
|
27
|
+
}], hover: [{
|
|
28
|
+
type: Input,
|
|
29
|
+
args: [{ transform: inputToBoolean }]
|
|
30
|
+
}], bordered: [{
|
|
31
|
+
type: Input,
|
|
32
|
+
args: [{ transform: inputToBoolean }]
|
|
33
|
+
}], borderless: [{
|
|
34
|
+
type: Input,
|
|
35
|
+
args: [{ transform: inputToBoolean }]
|
|
36
|
+
}], compact: [{
|
|
37
|
+
type: Input,
|
|
38
|
+
args: [{ transform: inputToBoolean }]
|
|
39
|
+
}], captionTop: [{
|
|
40
|
+
type: Input,
|
|
41
|
+
args: [{ transform: inputToBoolean }]
|
|
42
|
+
}], responsive: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBVXpELE1BQU0sT0FBTyxnQkFBZ0I7SUFSN0I7UUE2REU7OztXQUdHO1FBQ00sZUFBVSxHQUFvQixZQUFZLENBQUM7S0FFckQ7OEdBM0RZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHNKQXFCUCxjQUFjLDZCQU1kLGNBQWMsc0NBTWQsY0FBYyw0Q0FNZCxjQUFjLG1DQU1kLGNBQWMsNENBTWQsY0FBYyx1REMvRHBDLHd6QkFzQkE7OzJGRFZhLGdCQUFnQjtrQkFSNUIsU0FBUztpQ0FDSSxJQUFJLFlBQ04sVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLEVBQUU7OEJBT0YsS0FBSztzQkFBYixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFNZ0MsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsS0FBSztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsVUFBVTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsVUFBVTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTTNCLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVDb2xvciwgVGFibGVIZWFkQ29sb3IsIFRhYmxlUmVzcG9uc2l2ZSwgVmVydGljYWxBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgaW5wdXRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2l0LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEl0VGFibGVDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUYWJsZSBjb2xvclxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6IFRhYmxlQ29sb3IgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEhlYWQgdGFibGUgY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIGhlYWRDb2xvcjogVGFibGVIZWFkQ29sb3IgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFVzZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgY2xhc3NlcyB0byByZWFsaWduIHdoZXJlIG5lZWRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGFsaWdubWVudDogVmVydGljYWxBbGlnbm1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFVzZSAudGFibGUtc3RyaXBlZCB0byBhZGQgemVicmEgc3RyaXBlcyB0byBlYWNoIHRhYmxlIHJvdyBjb250YWluZWQgaW4gPHRib2R5Pi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgc3RyaXBlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCAudGFibGUtaG92ZXIgdG8gZW5hYmxlIGhvdmVyIHN0YXRlIG9uIHRhYmxlIHJvd3MgY29udGFpbmVkIGluIDx0Ym9keT4uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGhvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIC50YWJsZS1ib3JkZXJlZCB0byBoYXZlIGJvcmRlcnMgb24gYWxsIHNpZGVzIG9mIHRoZSB0YWJsZSBhbmQgb24gYWxsIGNlbGxzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBib3JkZXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgLnRhYmxlLWJvcmRlcmxlc3MgY2xhc3MgZm9yIGEgYm9yZGVybGVzcyB0YWJsZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgYm9yZGVybGVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCAudGFibGUtc20gdG8gbWFrZSB0YWJsZXMgbW9yZSBjb21wYWN0IGJ5IGhhbHZpbmcgdGhlIGNlbGwgcGFkZGluZy5cbiAgICogQGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBjb21wYWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG8gcmVuZGVyIHRoZSA8Y2FwdGlvbj4gb24gdG9wIG9mIHRoZSB0YWJsZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBjYXB0aW9uVG9wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVzcG9uc2l2ZSB0YWJsZXMgYWxsb3cgeW91IHRvIHNjcm9sbCB0YWJsZXMgaG9yaXpvbnRhbGx5IHdpdGggZWFzZS5cbiAgICogQGRlZmF1bHQgcmVzcG9uc2l2ZVxuICAgKi9cbiAgQElucHV0KCkgcmVzcG9uc2l2ZTogVGFibGVSZXNwb25zaXZlID0gJ3Jlc3BvbnNpdmUnO1xuXG59XG4iLCI8ZGl2IFtjbGFzc109XCJyZXNwb25zaXZlID8gJ3RhYmxlLScgKyByZXNwb25zaXZlIDogdW5kZWZpbmVkXCI+XG4gIDx0YWJsZSBjbGFzcz1cInRhYmxle3tjb2xvciA/ICcgdGFibGUtJyArIGNvbG9yIDogJycgfX17e2FsaWdubWVudCA/ICcgJyArIGFsaWdubWVudCA6ICcnIH19XCJcbiAgICAgICAgIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIlxuICAgICAgICAgW2NsYXNzLnRhYmxlLWhvdmVyXT1cImhvdmVyXCJcbiAgICAgICAgIFtjbGFzcy50YWJsZS1ib3JkZXJlZF09XCJib3JkZXJlZFwiXG4gICAgICAgICBbY2xhc3MudGFibGUtYm9yZGVybGVzc109XCJib3JkZXJsZXNzXCJcbiAgICAgICAgIFtjbGFzcy50YWJsZS1zbV09XCJjb21wYWN0XCJcbiAgICAgICAgIFtjbGFzcy5jYXB0aW9uLXRvcF09XCJjYXB0aW9uVG9wXCI+XG4gICAgPGNhcHRpb24+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2FwdGlvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9jYXB0aW9uPlxuICAgIDx0aGVhZCBbY2xhc3NdPVwiaGVhZENvbG9yID8gJ3RhYmxlLScgKyBoZWFkQ29sb3IgOiB1bmRlZmluZWRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGhlYWRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0Ym9keV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC90Ym9keT5cbiAgICA8dGZvb3Q+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rmb290XVwiPjwvbmctY29udGVudD5cbiAgICA8L3Rmb290PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { ItTableComponent } from './table.component';
|
|
3
|
+
import { ItSortDirective } from './sort/sort.directive';
|
|
4
|
+
import { ItSortHeaderComponent } from './sort/sort-header/sort-header.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
const tableComponents = [ItTableComponent, ItSortDirective, ItSortHeaderComponent];
|
|
7
|
+
export class ItTableModule {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: ItTableModule, imports: [ItTableComponent, ItSortDirective, ItSortHeaderComponent], exports: [ItTableComponent, ItSortDirective, ItSortHeaderComponent] }); }
|
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTableModule }); }
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTableModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
imports: tableComponents,
|
|
16
|
+
exports: tableComponents,
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFakYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQU1uRixNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsWUFORCxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUscUJBQXFCLGFBQXhELGdCQUFnQixFQUFFLGVBQWUsRUFBRSxxQkFBcUI7K0dBTXBFLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLE9BQU8sRUFBRSxlQUFlO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRTb3J0RGlyZWN0aXZlIH0gZnJvbSAnLi9zb3J0L3NvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0U29ydEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc29ydC9zb3J0LWhlYWRlci9zb3J0LWhlYWRlci5jb21wb25lbnQnO1xuXG5jb25zdCB0YWJsZUNvbXBvbmVudHMgPSBbSXRUYWJsZUNvbXBvbmVudCwgSXRTb3J0RGlyZWN0aXZlLCBJdFNvcnRIZWFkZXJDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiB0YWJsZUNvbXBvbmVudHMsXG4gIGV4cG9ydHM6IHRhYmxlQ29tcG9uZW50cyxcbn0pXG5leHBvcnQgY2xhc3MgSXRUYWJsZU1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Tooltip } from 'bootstrap-italia';
|
|
3
|
+
import { inputToBoolean } from '../../../utils/coercion';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ItTooltipDirective {
|
|
6
|
+
/**
|
|
7
|
+
* Define the tooltip title
|
|
8
|
+
* @param title the tooltip title
|
|
9
|
+
*/
|
|
10
|
+
set title(title) {
|
|
11
|
+
if (title) {
|
|
12
|
+
// this.element.setAttribute("title", title);
|
|
13
|
+
this.element.setAttribute('data-bs-original-title', title);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Define the tooltip placement
|
|
18
|
+
* @param placement
|
|
19
|
+
*/
|
|
20
|
+
set tooltipPlacement(placement) {
|
|
21
|
+
this.element.setAttribute('data-bs-placement', placement);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Indicates whether the title contains html
|
|
25
|
+
* @param html true if contain html
|
|
26
|
+
*/
|
|
27
|
+
set tooltipHtml(html) {
|
|
28
|
+
this.element.setAttribute('data-bs-html', html ? 'true' : 'false');
|
|
29
|
+
}
|
|
30
|
+
constructor(_elementRef) {
|
|
31
|
+
this._elementRef = _elementRef;
|
|
32
|
+
/**
|
|
33
|
+
* This event fires immediately when the show method is called.
|
|
34
|
+
*/
|
|
35
|
+
this.showEvent = new EventEmitter();
|
|
36
|
+
/**
|
|
37
|
+
* This event is triggered when the tooltip has been made visible to the user (it will wait for the CSS transitions to complete).
|
|
38
|
+
*/
|
|
39
|
+
this.shownEvent = new EventEmitter();
|
|
40
|
+
/**
|
|
41
|
+
* This event fires immediately when the hide method is called.
|
|
42
|
+
*/
|
|
43
|
+
this.hideEvent = new EventEmitter();
|
|
44
|
+
/**
|
|
45
|
+
* This event is raised when the tooltip has finished being hidden from the user (it will wait for the CSS transitions to complete).
|
|
46
|
+
*/
|
|
47
|
+
this.hiddenEvent = new EventEmitter();
|
|
48
|
+
/**
|
|
49
|
+
* This event fires after the show event when the tooltip template has been added to the DOM.
|
|
50
|
+
*/
|
|
51
|
+
this.insertedEvent = new EventEmitter();
|
|
52
|
+
this.element = this._elementRef.nativeElement;
|
|
53
|
+
}
|
|
54
|
+
ngAfterViewInit() {
|
|
55
|
+
this.element.setAttribute('data-bs-toggle', 'tooltip');
|
|
56
|
+
this.tooltip = Tooltip.getOrCreateInstance(this.element);
|
|
57
|
+
this.element.addEventListener('show.bs.tooltip', event => this.showEvent.emit(event));
|
|
58
|
+
this.element.addEventListener('shown.bs.tooltip', event => this.shownEvent.emit(event));
|
|
59
|
+
this.element.addEventListener('hide.bs.tooltip', event => this.hideEvent.emit(event));
|
|
60
|
+
this.element.addEventListener('hidden.bs.tooltip', event => this.hiddenEvent.emit(event));
|
|
61
|
+
this.element.addEventListener('inserted.bs.tooltip', event => this.insertedEvent.emit(event));
|
|
62
|
+
}
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
this.dispose();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Shows the tooltip of an item.
|
|
68
|
+
*/
|
|
69
|
+
show() {
|
|
70
|
+
this.tooltip?.show();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Hide the tooltip of an element.
|
|
74
|
+
*/
|
|
75
|
+
hide() {
|
|
76
|
+
this.tooltip?.hide();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Activate / Deactivate the tooltip of an element
|
|
80
|
+
*/
|
|
81
|
+
toggle() {
|
|
82
|
+
this.tooltip?.toggle();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Hides and destroys the tooltip of an element.
|
|
86
|
+
*/
|
|
87
|
+
dispose() {
|
|
88
|
+
this.tooltip?.dispose();
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Gives the tooltip of an element a chance to be shown.
|
|
92
|
+
*/
|
|
93
|
+
enable() {
|
|
94
|
+
this.tooltip?.enable();
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Removes the ability to show the tooltip of an element.
|
|
98
|
+
*/
|
|
99
|
+
disable() {
|
|
100
|
+
this.tooltip?.disable();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Toggles the possibility that the tooltip of an element is shown or hidden.
|
|
104
|
+
*/
|
|
105
|
+
toggleEnabled() {
|
|
106
|
+
this.tooltip?.disable();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Updates the position of an element's tooltip.
|
|
110
|
+
*/
|
|
111
|
+
update() {
|
|
112
|
+
this.tooltip?.disable();
|
|
113
|
+
}
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTooltipDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
115
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.2", type: ItTooltipDirective, isStandalone: true, selector: "[itTooltip]", inputs: { title: ["itTooltip", "title"], tooltipPlacement: "tooltipPlacement", tooltipHtml: ["tooltipHtml", "tooltipHtml", inputToBoolean] }, outputs: { showEvent: "showEvent", shownEvent: "shownEvent", hideEvent: "hideEvent", hiddenEvent: "hiddenEvent", insertedEvent: "insertedEvent" }, exportAs: ["itTooltip"], ngImport: i0 }); }
|
|
116
|
+
}
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTooltipDirective, decorators: [{
|
|
118
|
+
type: Directive,
|
|
119
|
+
args: [{
|
|
120
|
+
standalone: true,
|
|
121
|
+
selector: '[itTooltip]',
|
|
122
|
+
exportAs: 'itTooltip'
|
|
123
|
+
}]
|
|
124
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { title: [{
|
|
125
|
+
type: Input,
|
|
126
|
+
args: ['itTooltip']
|
|
127
|
+
}], tooltipPlacement: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], tooltipHtml: [{
|
|
130
|
+
type: Input,
|
|
131
|
+
args: [{ transform: inputToBoolean }]
|
|
132
|
+
}], showEvent: [{
|
|
133
|
+
type: Output
|
|
134
|
+
}], shownEvent: [{
|
|
135
|
+
type: Output
|
|
136
|
+
}], hideEvent: [{
|
|
137
|
+
type: Output
|
|
138
|
+
}], hiddenEvent: [{
|
|
139
|
+
type: Output
|
|
140
|
+
}], insertedEvent: [{
|
|
141
|
+
type: Output
|
|
142
|
+
}] } });
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU96RCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCOzs7T0FHRztJQUNILElBQXdCLEtBQUssQ0FBQyxLQUF5QjtRQUNyRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYSxnQkFBZ0IsQ0FBQyxTQUEyQjtRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBMEMsV0FBVyxDQUFDLElBQWE7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBOEJELFlBQ21CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBN0IxQzs7V0FFRztRQUNPLGNBQVMsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztR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SztzQkFBNUIsS0FBSzt1QkFBQyxXQUFXO2dCQVdMLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFRb0MsV0FBVztzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTzFCLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVsZW1lbnRQbGFjZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgaW5wdXRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb2VyY2lvbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tpdFRvb2x0aXBdJyxcbiAgZXhwb3J0QXM6ICdpdFRvb2x0aXAnXG59KVxuZXhwb3J0IGNsYXNzIEl0VG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgdG9vbHRpcCB0aXRsZVxuICAgKiBAcGFyYW0gdGl0bGUgdGhlIHRvb2x0aXAgdGl0bGVcbiAgICovXG4gIEBJbnB1dCgnaXRUb29sdGlwJykgc2V0IHRpdGxlKHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIC8vIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCB0aXRsZSk7XG4gICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHRvb2x0aXAgcGxhY2VtZW50XG4gICAqIEBwYXJhbSBwbGFjZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB0b29sdGlwUGxhY2VtZW50KHBsYWNlbWVudDogRWxlbWVudFBsYWNlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtcGxhY2VtZW50JywgcGxhY2VtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdGl0bGUgY29udGFpbnMgaHRtbFxuICAgKiBAcGFyYW0gaHRtbCB0cnVlIGlmIGNvbnRhaW4gaHRtbFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzZXQgdG9vbHRpcEh0bWwoaHRtbDogYm9vbGVhbikge1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtaHRtbCcsIGh0bWwgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGZpcmVzIGltbWVkaWF0ZWx5IHdoZW4gdGhlIHNob3cgbWV0aG9kIGlzIGNhbGxlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzaG93RXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHRvb2x0aXAgaGFzIGJlZW4gbWFkZSB2aXNpYmxlIHRvIHRoZSB1c2VyIChpdCB3aWxsIHdhaXQgZm9yIHRoZSBDU1MgdHJhbnNpdGlvbnMgdG8gY29tcGxldGUpLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3duRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZmlyZXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgaGlkZSBtZXRob2QgaXMgY2FsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGhpZGVFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyByYWlzZWQgd2hlbiB0aGUgdG9vbHRpcCBoYXMgZmluaXNoZWQgYmVpbmcgaGlkZGVuIGZyb20gdGhlIHVzZXIgKGl0IHdpbGwgd2FpdCBmb3IgdGhlIENTUyB0cmFuc2l0aW9ucyB0byBjb21wbGV0ZSkuXG4gICAqL1xuICBAT3V0cHV0KCkgaGlkZGVuRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXIgdGhlIHNob3cgZXZlbnQgd2hlbiB0aGUgdG9vbHRpcCB0ZW1wbGF0ZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgRE9NLlxuICAgKi9cbiAgQE91dHB1dCgpIGluc2VydGVkRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSB0b29sdGlwPzogVG9vbHRpcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLXRvZ2dsZScsICd0b29sdGlwJyk7XG4gICAgdGhpcy50b29sdGlwID0gVG9vbHRpcC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMuZWxlbWVudCk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2hvdy5icy50b29sdGlwJywgZXZlbnQgPT4gdGhpcy5zaG93RXZlbnQuZW1pdChldmVudCkpO1xuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzaG93bi5icy50b29sdGlwJywgZXZlbnQgPT4gdGhpcy5zaG93bkV2ZW50LmVtaXQoZXZlbnQpKTtcbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaGlkZS5icy50b29sdGlwJywgZXZlbnQgPT4gdGhpcy5oaWRlRXZlbnQuZW1pdChldmVudCkpO1xuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdoaWRkZW4uYnMudG9vbHRpcCcsIGV2ZW50ID0+IHRoaXMuaGlkZGVuRXZlbnQuZW1pdChldmVudCkpO1xuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnNlcnRlZC5icy50b29sdGlwJywgZXZlbnQgPT4gdGhpcy5pbnNlcnRlZEV2ZW50LmVtaXQoZXZlbnQpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSB0b29sdGlwIG9mIGFuIGl0ZW0uXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXA/LnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIHRoZSB0b29sdGlwIG9mIGFuIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXA/LmhpZGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSAvIERlYWN0aXZhdGUgdGhlIHRvb2x0aXAgb2YgYW4gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXA/LnRvZ2dsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIGFuZCBkZXN0cm95cyB0aGUgdG9vbHRpcCBvZiBhbiBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwPy5kaXNwb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZXMgdGhlIHRvb2x0aXAgb2YgYW4gZWxlbWVudCBhIGNoYW5jZSB0byBiZSBzaG93bi5cbiAgICovXG4gIHB1YmxpYyBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwPy5lbmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBhYmlsaXR5IHRvIHNob3cgdGhlIHRvb2x0aXAgb2YgYW4gZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcD8uZGlzYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIHRvb2x0aXAgb2YgYW4gZWxlbWVudCBpcyBzaG93biBvciBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlRW5hYmxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXA/LmRpc2FibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50J3MgdG9vbHRpcC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwPy5kaXNhYmxlKCk7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { debounceTime, distinctUntilChanged, map, Observable, of, switchMap } from 'rxjs';
|
|
3
|
+
import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
4
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { ItIconComponent } from '../../utils/icon/icon.component';
|
|
6
|
+
import { ItMarkMatchingTextPipe } from '../../../pipes/mark-matching-text.pipe';
|
|
7
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
8
|
+
import { inputToBoolean } from '../../../utils/coercion';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
export class ItAutocompleteComponent extends ItAbstractFormComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* Time span [ms] has passed without another source emission, to delay data filtering.
|
|
16
|
+
* Useful when the user is typing multiple letters
|
|
17
|
+
* @default 300 [ms]
|
|
18
|
+
*/
|
|
19
|
+
this.debounceTime = 300;
|
|
20
|
+
/**
|
|
21
|
+
* The input placeholder
|
|
22
|
+
*/
|
|
23
|
+
this.placeholder = '';
|
|
24
|
+
/**
|
|
25
|
+
* Show the label
|
|
26
|
+
*/
|
|
27
|
+
this.forceShowLabel = true;
|
|
28
|
+
/**
|
|
29
|
+
* Fired when the Autocomplete Item has been selected
|
|
30
|
+
*/
|
|
31
|
+
this.autocompleteSelectedEvent = new EventEmitter();
|
|
32
|
+
this.showAutocompletion = false;
|
|
33
|
+
/** Observable da cui vengono emessi i risultati dell'auto completamento */
|
|
34
|
+
this.autocompleteResults$ = new Observable();
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
super.ngOnInit();
|
|
38
|
+
this.autocompleteResults$ = this.getAutocompleteResults$();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create the autocomplete list
|
|
42
|
+
*/
|
|
43
|
+
getAutocompleteResults$() {
|
|
44
|
+
return this.control.valueChanges.pipe(debounceTime(this.debounceTime), // Delay filter data after time span has passed without another source emission, useful when the user is typing multiple letters
|
|
45
|
+
distinctUntilChanged(), // Only if searchValue is distinct in comparison to the last value
|
|
46
|
+
switchMap(searchedValue => {
|
|
47
|
+
if (!this.autocompleteData) {
|
|
48
|
+
return of({
|
|
49
|
+
searchedValue,
|
|
50
|
+
relatedEntries: [],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const autoCompleteData$ = Array.isArray(this.autocompleteData) ? of(this.autocompleteData) : this.autocompleteData(searchedValue);
|
|
54
|
+
return autoCompleteData$.pipe(map(autocompleteData => {
|
|
55
|
+
if (!searchedValue || typeof searchedValue === 'number') {
|
|
56
|
+
return { searchedValue, relatedEntries: [] };
|
|
57
|
+
}
|
|
58
|
+
const lowercaseValue = searchedValue.toLowerCase();
|
|
59
|
+
const relatedEntries = autocompleteData.filter(item => item.value?.toLowerCase().includes(lowercaseValue));
|
|
60
|
+
return { searchedValue, relatedEntries };
|
|
61
|
+
}));
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
onEntryClick(entry, event) {
|
|
65
|
+
// Se non è stato definito un link associato all'elemento dell'autocomplete, probabilmente il desiderata
|
|
66
|
+
// non è effettuare la navigazione al default '#', pertanto in tal caso meglio annullare la navigazione.
|
|
67
|
+
if (!entry.link) {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
}
|
|
70
|
+
this.autocompleteSelectedEvent.next(entry);
|
|
71
|
+
this.control.setValue(entry.value);
|
|
72
|
+
this.showAutocompletion = false;
|
|
73
|
+
}
|
|
74
|
+
autocompleteItemTrackByValueFn(index, item) {
|
|
75
|
+
return item.value;
|
|
76
|
+
}
|
|
77
|
+
onKeyDown() {
|
|
78
|
+
this.showAutocompletion = true;
|
|
79
|
+
}
|
|
80
|
+
get isActiveLabel() {
|
|
81
|
+
const value = this.control.value;
|
|
82
|
+
return this.forceShowLabel && (!!value || !!this.placeholder);
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItAutocompleteComponent, isStandalone: true, selector: "it-autocomplete", inputs: { autocompleteData: "autocompleteData", big: ["big", "big", inputToBoolean], debounceTime: "debounceTime", placeholder: "placeholder", forceShowLabel: ["forceShowLabel", "forceShowLabel", inputToBoolean] }, outputs: { autocompleteSelectedEvent: "autocompleteSelectedEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [class.autocomplete-wrapper-big]=\"big\">\n @if (label) {\n <label [for]=\"id\" [class.visually-hidden]=\"!isActiveLabel\" [class.active]=\"isActiveLabel\">\n {{ label }}\n </label>\n }\n\n <input\n [id]=\"id\"\n type=\"search\"\n class=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n (blur)=\"markAsTouched()\"\n (keydown)=\"onKeyDown()\" />\n\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n <it-icon name=\"search\" size=\"sm\"></it-icon>\n </span>\n\n @if (autocompleteResults$ | async; as autocomplete) {\n <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n @for (entry of autocomplete.relatedEntries; track autocompleteItemTrackByValueFn($index, entry)) {\n <li>\n <a [href]=\"entry.link\" (click)=\"onEntryClick(entry, $event)\">\n @if (entry.avatarSrcPath) {\n <div class=\"avatar size-sm\">\n <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\" />\n </div>\n }\n @if (entry.icon) {\n <it-icon [name]=\"entry.icon\" size=\"sm\"></it-icon>\n }\n <span class=\"autocomplete-list-text\">\n <span [innerHTML]=\"entry.value | itMarkMatchingText: autocomplete.searchedValue\"></span>\n @if (entry.label) {\n <em>{{ entry.label }}</em>\n }\n </span>\n </a>\n </li>\n }\n </ul>\n }\n\n @if (isInvalid) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n </div>\n }\n</div>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }, { kind: "pipe", type: ItMarkMatchingTextPipe, name: "itMarkMatchingText" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItAutocompleteComponent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ standalone: true, selector: 'it-autocomplete', imports: [AsyncPipe, ItIconComponent, ItMarkMatchingTextPipe, NgTemplateOutlet, ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\" [class.autocomplete-wrapper-big]=\"big\">\n @if (label) {\n <label [for]=\"id\" [class.visually-hidden]=\"!isActiveLabel\" [class.active]=\"isActiveLabel\">\n {{ label }}\n </label>\n }\n\n <input\n [id]=\"id\"\n type=\"search\"\n class=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n (blur)=\"markAsTouched()\"\n (keydown)=\"onKeyDown()\" />\n\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n <it-icon name=\"search\" size=\"sm\"></it-icon>\n </span>\n\n @if (autocompleteResults$ | async; as autocomplete) {\n <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n @for (entry of autocomplete.relatedEntries; track autocompleteItemTrackByValueFn($index, entry)) {\n <li>\n <a [href]=\"entry.link\" (click)=\"onEntryClick(entry, $event)\">\n @if (entry.avatarSrcPath) {\n <div class=\"avatar size-sm\">\n <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\" />\n </div>\n }\n @if (entry.icon) {\n <it-icon [name]=\"entry.icon\" size=\"sm\"></it-icon>\n }\n <span class=\"autocomplete-list-text\">\n <span [innerHTML]=\"entry.value | itMarkMatchingText: autocomplete.searchedValue\"></span>\n @if (entry.label) {\n <em>{{ entry.label }}</em>\n }\n </span>\n </a>\n </li>\n }\n </ul>\n }\n\n @if (isInvalid) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n </div>\n }\n</div>\n" }]
|
|
90
|
+
}], propDecorators: { autocompleteData: [{
|
|
91
|
+
type: Input,
|
|
92
|
+
args: [{ required: true }]
|
|
93
|
+
}], big: [{
|
|
94
|
+
type: Input,
|
|
95
|
+
args: [{ transform: inputToBoolean }]
|
|
96
|
+
}], debounceTime: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], placeholder: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], forceShowLabel: [{
|
|
101
|
+
type: Input,
|
|
102
|
+
args: [{ transform: inputToBoolean }]
|
|
103
|
+
}], autocompleteSelectedEvent: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}] } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVN6RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQWtEO0lBUC9GOztRQW9CRTs7OztXQUlHO1FBQ00saUJBQVksR0FBRyxHQUFHLENBQUM7UUFFNUI7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLEVBQUUsQ0FB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QUFDO0lBQ2hFLENBQUM7OEdBMUdVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHVIQVdkLGNBQWMsa0hBaUJkLGNBQWMseUhDN0NwQyw0OERBMERBLHVDRDVDWSxTQUFTLDhDQUFFLGVBQWUsc0hBQUUsc0JBQXNCLDBEQUFvQixtQkFBbUI7OzJGQUd4Rix1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGlCQUFpQixXQUVsQixDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsbUJBQ25GLHVCQUF1QixDQUFDLE1BQU07OEJBUXBCLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBS2EsR0FBRztzQkFBeEMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTzNCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLZ0MsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBSzFCLHlCQUF5QjtzQkFBbEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdE1hcmtNYXRjaGluZ1RleHRQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvbWFyay1tYXRjaGluZy10ZXh0LnBpcGUnO1xuaW1wb3J0IHsgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlSXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZm9ybSc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIEl0SWNvbkNvbXBvbmVudCwgSXRNYXJrTWF0Y2hpbmdUZXh0UGlwZSwgTmdUZW1wbGF0ZU91dGxldCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJdEF1dG9jb21wbGV0ZUNvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgbGlzdCBvZiBzZWFyY2hhYmxlIGVsZW1lbnRzIG9uIHdoaWNoIHRvIGJhc2UgdGhlIGlucHV0IGF1dG9jb21wbGV0ZSBzeXN0ZW1cbiAgICogSWYgeW91IG5lZWQgdG8gcmV0cmlldmUgaXRlbXMgdmlhIEFQSSwgY2FuIHBhc3MgYSBmdW5jdGlvbiBvZiBPYnNlcnZhYmxlXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgYXV0b2NvbXBsZXRlRGF0YSE6IEFycmF5PEF1dG9jb21wbGV0ZUl0ZW0+IHwgKChzZWFyY2g/OiBzdHJpbmcgfCBudWxsKSA9PiBPYnNlcnZhYmxlPEFycmF5PEF1dG9jb21wbGV0ZUl0ZW0+Pik7XG5cbiAgLyoqXG4gICAqIFRvIGdldCBhIGxhcmdlIHZlcnNpb24gb2YgQXV0b2NvbXBsZXRlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGJpZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpbWUgc3BhbiBbbXNdIGhhcyBwYXNzZWQgd2l0aG91dCBhbm90aGVyIHNvdXJjZSBlbWlzc2lvbiwgdG8gZGVsYXkgZGF0YSBmaWx0ZXJpbmcuXG4gICAqIFVzZWZ1bCB3aGVuIHRoZSB1c2VyIGlzIHR5cGluZyBtdWx0aXBsZSBsZXR0ZXJzXG4gICAqIEBkZWZhdWx0IDMwMCBbbXNdXG4gICAqL1xuICBASW5wdXQoKSBkZWJvdW5jZVRpbWUgPSAzMDA7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwbGFjZWhvbGRlclxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcblxuICAvKipcbiAgICogU2hvdyB0aGUgbGFiZWxcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZm9yY2VTaG93TGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBBdXRvY29tcGxldGUgSXRlbSBoYXMgYmVlbiBzZWxlY3RlZFxuICAgKi9cbiAgQE91dHB1dCgpIGF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQ6IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcm90ZWN0ZWQgc2hvd0F1dG9jb21wbGV0aW9uID0gZmFsc2U7XG5cbiAgLyoqIE9ic2VydmFibGUgZGEgY3VpIHZlbmdvbm8gZW1lc3NpIGkgcmlzdWx0YXRpIGRlbGwnYXV0byBjb21wbGV0YW1lbnRvICovXG4gIHByb3RlY3RlZCBhdXRvY29tcGxldGVSZXN1bHRzJDogT2JzZXJ2YWJsZTx7XG4gICAgc2VhcmNoZWRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgICByZWxhdGVkRW50cmllczogQXJyYXk8QXV0b2NvbXBsZXRlSXRlbT47XG4gIH0+ID0gbmV3IE9ic2VydmFibGUoKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0cyQgPSB0aGlzLmdldEF1dG9jb21wbGV0ZVJlc3VsdHMkKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBhdXRvY29tcGxldGUgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRvY29tcGxldGVSZXN1bHRzJCgpOiBPYnNlcnZhYmxlPHtcbiAgICBzZWFyY2hlZFZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHJlbGF0ZWRFbnRyaWVzOiBBcnJheTxBdXRvY29tcGxldGVJdGVtPjtcbiAgfT4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLCAvLyBEZWxheSBmaWx0ZXIgZGF0YSBhZnRlciB0aW1lIHNwYW4gaGFzIHBhc3NlZCB3aXRob3V0IGFub3RoZXIgc291cmNlIGVtaXNzaW9uLCB1c2VmdWwgd2hlbiB0aGUgdXNlciBpcyB0eXBpbmcgbXVsdGlwbGUgbGV0dGVyc1xuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgLy8gT25seSBpZiBzZWFyY2hWYWx1ZSBpcyBkaXN0aW5jdCBpbiBjb21wYXJpc29uIHRvIHRoZSBsYXN0IHZhbHVlXG4gICAgICBzd2l0Y2hNYXAoc2VhcmNoZWRWYWx1ZSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5hdXRvY29tcGxldGVEYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgIHNlYXJjaGVkVmFsdWUsXG4gICAgICAgICAgICByZWxhdGVkRW50cmllczogPEFycmF5PEF1dG9jb21wbGV0ZUl0ZW0+PltdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b0NvbXBsZXRlRGF0YSQgPSBBcnJheS5pc0FycmF5KHRoaXMuYXV0b2NvbXBsZXRlRGF0YSkgPyBvZih0aGlzLmF1dG9jb21wbGV0ZURhdGEpIDogdGhpcy5hdXRvY29tcGxldGVEYXRhKHNlYXJjaGVkVmFsdWUpO1xuICAgICAgICByZXR1cm4gYXV0b0NvbXBsZXRlRGF0YSQucGlwZShcbiAgICAgICAgICBtYXAoYXV0b2NvbXBsZXRlRGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoIXNlYXJjaGVkVmFsdWUgfHwgdHlwZW9mIHNlYXJjaGVkVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHNlYXJjaGVkVmFsdWUsIHJlbGF0ZWRFbnRyaWVzOiBbXSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VWYWx1ZSA9IHNlYXJjaGVkVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRFbnRyaWVzID0gYXV0b2NvbXBsZXRlRGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLnZhbHVlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVZhbHVlKSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IHNlYXJjaGVkVmFsdWUsIHJlbGF0ZWRFbnRyaWVzIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkVudHJ5Q2xpY2soZW50cnk6IEF1dG9jb21wbGV0ZUl0ZW0sIGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFNlIG5vbiDDqCBzdGF0byBkZWZpbml0byB1biBsaW5rIGFzc29jaWF0byBhbGwnZWxlbWVudG8gZGVsbCdhdXRvY29tcGxldGUsIHByb2JhYmlsbWVudGUgaWwgZGVzaWRlcmF0YVxuICAgIC8vIG5vbiDDqCBlZmZldHR1YXJlIGxhIG5hdmlnYXppb25lIGFsIGRlZmF1bHQgJyMnLCBwZXJ0YW50byBpbiB0YWwgY2FzbyBtZWdsaW8gYW5udWxsYXJlIGxhIG5hdmlnYXppb25lLlxuICAgIGlmICghZW50cnkubGluaykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQubmV4dChlbnRyeSk7XG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGVudHJ5LnZhbHVlKTtcbiAgICB0aGlzLnNob3dBdXRvY29tcGxldGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF1dG9jb21wbGV0ZUl0ZW1UcmFja0J5VmFsdWVGbihpbmRleDogbnVtYmVyLCBpdGVtOiBBdXRvY29tcGxldGVJdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlEb3duKCkge1xuICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNBY3RpdmVMYWJlbCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5mb3JjZVNob3dMYWJlbCAmJiAoISF2YWx1ZSB8fCAhIXRoaXMucGxhY2Vob2xkZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtjbGFzcy5hdXRvY29tcGxldGUtd3JhcHBlci1iaWddPVwiYmlnXCI+XG4gIEBpZiAobGFiZWwpIHtcbiAgICA8bGFiZWwgW2Zvcl09XCJpZFwiIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiIWlzQWN0aXZlTGFiZWxcIiBbY2xhc3MuYWN0aXZlXT1cImlzQWN0aXZlTGFiZWxcIj5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgfVxuXG4gIDxpbnB1dFxuICAgIFtpZF09XCJpZFwiXG4gICAgdHlwZT1cInNlYXJjaFwiXG4gICAgY2xhc3M9XCJhdXRvY29tcGxldGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImlzSW52YWxpZFwiXG4gICAgW2NsYXNzLmlzLXZhbGlkXT1cImlzVmFsaWRcIlxuICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXG4gICAgKGtleWRvd24pPVwib25LZXlEb3duKClcIiAvPlxuXG4gIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8aXQtaWNvbiBuYW1lPVwic2VhcmNoXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICA8L3NwYW4+XG5cbiAgQGlmIChhdXRvY29tcGxldGVSZXN1bHRzJCB8IGFzeW5jOyBhcyBhdXRvY29tcGxldGUpIHtcbiAgICA8dWwgY2xhc3M9XCJhdXRvY29tcGxldGUtbGlzdFwiIFtjbGFzcy5hdXRvY29tcGxldGUtbGlzdC1zaG93XT1cImF1dG9jb21wbGV0ZS5yZWxhdGVkRW50cmllcz8ubGVuZ3RoICYmIHNob3dBdXRvY29tcGxldGlvblwiPlxuICAgICAgQGZvciAoZW50cnkgb2YgYXV0b2NvbXBsZXRlLnJlbGF0ZWRFbnRyaWVzOyB0cmFjayBhdXRvY29tcGxldGVJdGVtVHJhY2tCeVZhbHVlRm4oJGluZGV4LCBlbnRyeSkpIHtcbiAgICAgICAgPGxpPlxuICAgICAgICAgIDxhIFtocmVmXT1cImVudHJ5LmxpbmtcIiAoY2xpY2spPVwib25FbnRyeUNsaWNrKGVudHJ5LCAkZXZlbnQpXCI+XG4gICAgICAgICAgICBAaWYgKGVudHJ5LmF2YXRhclNyY1BhdGgpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhciBzaXplLXNtXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVudHJ5LmF2YXRhclNyY1BhdGhcIiBbYWx0XT1cImVudHJ5LmF2YXRhckFsdFRleHRcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZW50cnkuaWNvbikge1xuICAgICAgICAgICAgICA8aXQtaWNvbiBbbmFtZV09XCJlbnRyeS5pY29uXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtbGlzdC10ZXh0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZW50cnkudmFsdWUgfCBpdE1hcmtNYXRjaGluZ1RleHQ6IGF1dG9jb21wbGV0ZS5zZWFyY2hlZFZhbHVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKGVudHJ5LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgPGVtPnt7IGVudHJ5LmxhYmVsIH19PC9lbT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICB9XG5cbiAgQGlmIChpc0ludmFsaWQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mZWVkYmFjayBqdXN0LXZhbGlkYXRlLWVycm9yLWxhYmVsXCIgW2lkXT1cImlkICsgJy1lcnJvcidcIj5cbiAgICAgIDxkaXYgI2N1c3RvbUVycm9yPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXJyb3JdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKCFjdXN0b21FcnJvci5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAge3sgaW52YWxpZE1lc3NhZ2UgfCBhc3luYyB9fVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
3
|
+
import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
4
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { inputToBoolean } from '../../../utils/coercion';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
export class ItCheckboxComponent extends ItAbstractFormComponent {
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
super.ngOnInit();
|
|
11
|
+
this.markAsChecked();
|
|
12
|
+
}
|
|
13
|
+
ngOnChanges(changes) {
|
|
14
|
+
if (changes['checked']) {
|
|
15
|
+
this.markAsChecked();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
markAsChecked() {
|
|
19
|
+
if (this.control.value || this.checked === undefined) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const value = this.checked;
|
|
23
|
+
this.writeValue(value);
|
|
24
|
+
return this.onChange(value);
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItCheckboxComponent, isStandalone: true, selector: "it-checkbox", inputs: { toggle: ["toggle", "toggle", inputToBoolean], inline: ["inline", "inline", inputToBoolean], group: ["group", "group", inputToBoolean], checked: ["checked", "checked", inputToBoolean], indeterminate: ["indeterminate", "indeterminate", inputToBoolean] }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"form-check\" [class.form-check-group]=\"group\" [class.form-check-inline]=\"inline\">\n @if (toggle) {\n <div class=\"toggles\">\n <label [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n <input\n [id]=\"id\"\n type=\"checkbox\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <span class=\"lever\"></span>\n </label>\n </div>\n } @else {\n <input\n [id]=\"id\"\n type=\"checkbox\"\n class=\"form-check-input\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [class.semi-checked]=\"indeterminate\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <label class=\"form-check-label\" [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n </label>\n }\n\n @if (group) {\n <small [id]=\"id + '-help'\" class=\"form-text\">\n <ng-content></ng-content>\n </small>\n }\n\n @if (isInvalid && group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n </div>\n\n @if (isInvalid && !group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n</ng-container>\n\n<ng-template #error>\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n</ng-template>\n\n<ng-template #htmlLabel>\n <div #customLabel>\n <ng-content select=\"[label]\"></ng-content>\n </div>\n @if (!customLabel.hasChildNodes()) {\n {{ label }}\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItCheckboxComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ standalone: true, selector: 'it-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, ReactiveFormsModule, AsyncPipe], template: "<ng-container>\n <div class=\"form-check\" [class.form-check-group]=\"group\" [class.form-check-inline]=\"inline\">\n @if (toggle) {\n <div class=\"toggles\">\n <label [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n <input\n [id]=\"id\"\n type=\"checkbox\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <span class=\"lever\"></span>\n </label>\n </div>\n } @else {\n <input\n [id]=\"id\"\n type=\"checkbox\"\n class=\"form-check-input\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [class.semi-checked]=\"indeterminate\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <label class=\"form-check-label\" [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n </label>\n }\n\n @if (group) {\n <small [id]=\"id + '-help'\" class=\"form-text\">\n <ng-content></ng-content>\n </small>\n }\n\n @if (isInvalid && group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n </div>\n\n @if (isInvalid && !group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n</ng-container>\n\n<ng-template #error>\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n</ng-template>\n\n<ng-template #htmlLabel>\n <div #customLabel>\n <ng-content select=\"[label]\"></ng-content>\n </div>\n @if (!customLabel.hasChildNodes()) {\n {{ label }}\n }\n</ng-template>\n" }]
|
|
32
|
+
}], propDecorators: { toggle: [{
|
|
33
|
+
type: Input,
|
|
34
|
+
args: [{ transform: inputToBoolean }]
|
|
35
|
+
}], inline: [{
|
|
36
|
+
type: Input,
|
|
37
|
+
args: [{ transform: inputToBoolean }]
|
|
38
|
+
}], group: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: [{ transform: inputToBoolean }]
|
|
41
|
+
}], checked: [{
|
|
42
|
+
type: Input,
|
|
43
|
+
args: [{ transform: inputToBoolean }]
|
|
44
|
+
}], indeterminate: [{
|
|
45
|
+
type: Input,
|
|
46
|
+
args: [{ transform: inputToBoolean }]
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBU3pELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBbUQ7SUErQmpGLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUSxXQUFXLENBQUMsT0FBc0I7UUFDekMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FsRFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsc0ZBS1YsY0FBYyxnQ0FNZCxjQUFjLDZCQU1kLGNBQWMsbUNBTWQsY0FBYyxxREFNZCxjQUFjLHlFQzFDcEMsa2dFQW9FQSw0Q0R6RFksZ0JBQWdCLG1KQUFFLG1CQUFtQixzZUFBRSxTQUFTOzsyRkFFL0MsbUJBQW1CO2tCQVAvQixTQUFTO2lDQUNJLElBQUksWUFDTixhQUFhLG1CQUVOLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUM7OEJBT3JCLE1BQU07c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLE1BQU07c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLEtBQUs7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLE9BQU87c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLGFBQWE7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQXN5bmNQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50PGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIElmIHNob3cgY2hlY2tib3ggYXMgdG9nZ2xlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHRvZ2dsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHNob3cgY2hlY2tib3ggaW5saW5lXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGlubGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGlzIGNoZWNrYm94IGdyb3VwXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGdyb3VwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgY2hlY2tib3ggaXMgY2hlY2tlZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBjaGVja2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMubWFya0FzQ2hlY2tlZCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkJ10pIHtcbiAgICAgIHRoaXMubWFya0FzQ2hlY2tlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzQ2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlIHx8IHRoaXMuY2hlY2tlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNoZWNrZWQ7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgW2NsYXNzLmZvcm0tY2hlY2stZ3JvdXBdPVwiZ3JvdXBcIiBbY2xhc3MuZm9ybS1jaGVjay1pbmxpbmVdPVwiaW5saW5lXCI+XG4gICAgQGlmICh0b2dnbGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGVzXCI+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImh0bWxMYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkICsgJy1oZWxwJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxldmVyXCI+PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgICAgICAgW2NsYXNzLmlzLXZhbGlkXT1cImlzVmFsaWRcIlxuICAgICAgICBbY2xhc3Muc2VtaS1jaGVja2VkXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWhlbHAnXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIC8+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJpZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaHRtbExhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xhYmVsPlxuICAgIH1cblxuICAgIEBpZiAoZ3JvdXApIHtcbiAgICAgIDxzbWFsbCBbaWRdPVwiaWQgKyAnLWhlbHAnXCIgY2xhc3M9XCJmb3JtLXRleHRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zbWFsbD5cbiAgICB9XG5cbiAgICBAaWYgKGlzSW52YWxpZCAmJiBncm91cCkge1xuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmVlZGJhY2sganVzdC12YWxpZGF0ZS1lcnJvci1sYWJlbFwiIFtpZF09XCJpZCArICctZXJyb3InXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGlzSW52YWxpZCAmJiAhZ3JvdXApIHtcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mZWVkYmFjayBqdXN0LXZhbGlkYXRlLWVycm9yLWxhYmVsXCIgW2lkXT1cImlkICsgJy1lcnJvcidcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvclwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICB9XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNlcnJvcj5cbiAgPGRpdiAjY3VzdG9tRXJyb3I+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Vycm9yXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIEBpZiAoIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgIHt7IGludmFsaWRNZXNzYWdlIHwgYXN5bmMgfX1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+XG4gIDxkaXYgI2N1c3RvbUxhYmVsPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsYWJlbF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICBAaWYgKCFjdXN0b21MYWJlbC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICB7eyBsYWJlbCB9fVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
|