@indice/ng-components 0.2.166 → 0.2.167-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_styles.css +30 -1
- package/{esm2015/indice-ng-components.js → esm2020/indice-ng-components.mjs} +0 -0
- package/esm2020/lib/controls/advanced-search/advanced-search.component.mjs +112 -0
- package/esm2020/lib/controls/advanced-search/models.mjs +90 -0
- package/{esm2015/lib/controls/avatar-initials/avatar-initials.component.js → esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs} +5 -8
- package/esm2020/lib/controls/breadcrumb/breadcrumb-item.mjs +14 -0
- package/esm2020/lib/controls/breadcrumb/breadcrumb.component.mjs +26 -0
- package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
- package/esm2020/lib/controls/combobox/combobox.component.mjs +111 -0
- package/esm2020/lib/controls/date-picker/date-picker.component.mjs +292 -0
- package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +68 -0
- package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +39 -0
- package/esm2020/lib/controls/language-selection/language-selection.component.mjs +31 -0
- package/{esm2015/lib/controls/list-view/list-column.component.js → esm2020/lib/controls/list-view/list-column.component.mjs} +4 -4
- package/{esm2015/lib/controls/list-view/list-details-section.component.js → esm2020/lib/controls/list-view/list-details-section.component.mjs} +4 -4
- package/{esm2015/lib/controls/list-view/list-tile.component.js → esm2020/lib/controls/list-view/list-tile.component.mjs} +4 -4
- package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
- package/esm2020/lib/controls/list-view/list-view.component.mjs +206 -0
- package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +46 -0
- package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +79 -0
- package/esm2020/lib/controls/pager/pager.component.mjs +130 -0
- package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
- package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
- package/{esm2015/lib/controls/stepper/lib-step-info.directive.js → esm2020/lib/controls/stepper/lib-step-info.directive.mjs} +4 -4
- package/{esm2015/lib/controls/stepper/lib-step-label.directive.js → esm2020/lib/controls/stepper/lib-step-label.directive.mjs} +5 -5
- package/esm2020/lib/controls/stepper/lib-step.component.mjs +81 -0
- package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +108 -0
- package/{esm2015/lib/controls/stepper/types/step-selected-event.js → esm2020/lib/controls/stepper/types/step-selected-event.mjs} +0 -0
- package/{esm2015/lib/controls/stepper/types/stepper-type.js → esm2020/lib/controls/stepper/types/stepper-type.mjs} +0 -0
- package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +66 -0
- package/esm2020/lib/controls/tabs/lib-tab-label.directive.mjs +16 -0
- package/esm2020/lib/controls/tabs/lib-tab.component.mjs +64 -0
- package/esm2020/lib/controls/toaster/toaster-container.component.mjs +28 -0
- package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
- package/esm2020/lib/controls/toggle/toggle.component.mjs +64 -0
- package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +71 -0
- package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +4 -4
- package/{esm2015/lib/directives/dynamic-component-host.directive.js → esm2020/lib/directives/dynamic-component-host.directive.mjs} +4 -4
- package/esm2020/lib/helpers/base-list.component.mjs +226 -0
- package/{esm2015/lib/icons.js → esm2020/lib/icons.mjs} +0 -0
- package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -0
- package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +130 -0
- package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +101 -0
- package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +47 -0
- package/esm2020/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +45 -0
- package/esm2020/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +26 -0
- package/esm2020/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +20 -0
- package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
- package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +49 -0
- package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +98 -0
- package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
- package/esm2020/lib/ng-components.module.mjs +277 -0
- package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
- package/{esm2015/lib/pages/auth/auth-renew/auth-renew.component.js → esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs} +4 -4
- package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +28 -0
- package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
- package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
- package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
- package/{esm2015/lib/pipes/address.pipe.js → esm2020/lib/pipes/address.pipe.mjs} +4 -4
- package/{esm2015/lib/pipes/duration-format.pipe.js → esm2020/lib/pipes/duration-format.pipe.mjs} +4 -4
- package/esm2020/lib/services/breadcrumb.service.mjs +174 -0
- package/{esm2015/lib/services/component-loader/component-loader-options.class.js → esm2020/lib/services/component-loader/component-loader-options.class.mjs} +0 -0
- package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
- package/{esm2015/lib/services/component-loader/component-loader.factory.js → esm2020/lib/services/component-loader/component-loader.factory.mjs} +4 -4
- package/{esm2015/lib/services/component-loader/content-ref.class.js → esm2020/lib/services/component-loader/content-ref.class.mjs} +0 -0
- package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
- package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
- package/{esm2015/lib/services/modal-service/modal-options.class.js → esm2020/lib/services/modal-service/modal-options.class.mjs} +4 -4
- package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
- package/{esm2015/lib/services/modal-service/modal-styles.class.js → esm2020/lib/services/modal-service/modal-styles.class.mjs} +0 -0
- package/{esm2015/lib/services/modal-service/modal.class.js → esm2020/lib/services/modal-service/modal.class.mjs} +4 -4
- package/esm2020/lib/services/toaster.service.mjs +26 -0
- package/esm2020/lib/services/utilities.service.mjs +47 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/esm2020/lib/types.mjs +130 -0
- package/esm2020/public-api.mjs +67 -0
- package/fesm2015/indice-ng-components.mjs +4559 -0
- package/fesm2015/indice-ng-components.mjs.map +1 -0
- package/fesm2020/indice-ng-components.mjs +4473 -0
- package/fesm2020/indice-ng-components.mjs.map +1 -0
- package/{indice-ng-components.d.ts → index.d.ts} +0 -0
- package/lib/controls/advanced-search/advanced-search.component.d.ts +1 -1
- package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
- package/lib/controls/breadcrumb/breadcrumb-item.d.ts +7 -0
- package/lib/controls/breadcrumb/breadcrumb.component.d.ts +12 -0
- package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
- package/lib/controls/combobox/combobox.component.d.ts +7 -4
- package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
- package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +1 -1
- package/lib/controls/kpi-tile/kpi-tile.component.d.ts +1 -1
- package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
- package/lib/controls/list-view/list-column.component.d.ts +1 -1
- package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
- package/lib/controls/list-view/list-tile.component.d.ts +1 -1
- package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
- package/lib/controls/list-view/list-view.component.d.ts +1 -1
- package/lib/controls/nav-links-list/nav-links-list.component.d.ts +1 -1
- package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +1 -1
- package/lib/controls/pager/pager.component.d.ts +1 -1
- package/lib/controls/side-pane/side-pane.component.d.ts +1 -1
- package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
- package/lib/controls/stepper/lib-step-info.directive.d.ts +1 -1
- package/lib/controls/stepper/lib-step-label.directive.d.ts +1 -1
- package/lib/controls/stepper/lib-step.component.d.ts +1 -1
- package/lib/controls/stepper/lib-stepper.component.d.ts +1 -1
- package/lib/controls/tabs/lib-tab-group.component.d.ts +4 -4
- package/lib/controls/tabs/lib-tab-label.directive.d.ts +8 -0
- package/lib/controls/tabs/lib-tab.component.d.ts +8 -6
- package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
- package/lib/controls/toaster/toaster.component.d.ts +1 -1
- package/lib/controls/toggle/toggle.component.d.ts +1 -1
- package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
- package/lib/directives/click-outside.directive.d.ts +1 -1
- package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
- package/lib/helpers/base-list.component.d.ts +1 -1
- package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +1 -1
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
- package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +1 -1
- package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +1 -1
- package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +1 -1
- package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +2 -2
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +1 -1
- package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
- package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
- package/lib/ng-components.module.d.ts +55 -53
- package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
- package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
- package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
- package/lib/pages/http-status/error/error.component.d.ts +1 -1
- package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
- package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
- package/lib/pipes/address.pipe.d.ts +1 -1
- package/lib/pipes/duration-format.pipe.d.ts +1 -1
- package/lib/services/breadcrumb.service.d.ts +29 -0
- package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
- package/lib/services/modal-service/modal-container-component.d.ts +1 -1
- package/lib/services/toaster.service.d.ts +2 -2
- package/lib/services/utilities.service.d.ts +11 -0
- package/lib/types.d.ts +12 -10
- package/package.json +21 -8
- package/public-api.d.ts +4 -0
- package/bundles/indice-ng-components.umd.js +0 -5003
- package/bundles/indice-ng-components.umd.js.map +0 -1
- package/esm2015/lib/controls/advanced-search/advanced-search.component.js +0 -116
- package/esm2015/lib/controls/advanced-search/models.js +0 -91
- package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +0 -23
- package/esm2015/lib/controls/combobox/combobox.component.js +0 -100
- package/esm2015/lib/controls/date-picker/date-picker.component.js +0 -301
- package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +0 -72
- package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +0 -42
- package/esm2015/lib/controls/language-selection/language-selection.component.js +0 -35
- package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +0 -32
- package/esm2015/lib/controls/list-view/list-view.component.js +0 -209
- package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +0 -51
- package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +0 -82
- package/esm2015/lib/controls/pager/pager.component.js +0 -133
- package/esm2015/lib/controls/side-pane/side-pane.component.js +0 -76
- package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +0 -29
- package/esm2015/lib/controls/stepper/lib-step.component.js +0 -82
- package/esm2015/lib/controls/stepper/lib-stepper.component.js +0 -115
- package/esm2015/lib/controls/tabs/lib-tab-group.component.js +0 -67
- package/esm2015/lib/controls/tabs/lib-tab.component.js +0 -58
- package/esm2015/lib/controls/toaster/toaster-container.component.js +0 -31
- package/esm2015/lib/controls/toaster/toaster.component.js +0 -34
- package/esm2015/lib/controls/toggle/toggle.component.js +0 -68
- package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +0 -75
- package/esm2015/lib/helpers/base-list.component.js +0 -227
- package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +0 -22
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +0 -135
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +0 -106
- package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +0 -50
- package/esm2015/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.js +0 -48
- package/esm2015/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.js +0 -28
- package/esm2015/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.js +0 -24
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +0 -85
- package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +0 -53
- package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +0 -101
- package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +0 -110
- package/esm2015/lib/ng-components.module.js +0 -285
- package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +0 -34
- package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +0 -32
- package/esm2015/lib/pages/http-status/error/error.component.js +0 -20
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +0 -18
- package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +0 -17
- package/esm2015/lib/services/component-loader/component-loader.class.js +0 -192
- package/esm2015/lib/services/modal-service/modal-backdrop-component.js +0 -44
- package/esm2015/lib/services/modal-service/modal-container-component.js +0 -128
- package/esm2015/lib/services/modal-service/modal-service.js +0 -220
- package/esm2015/lib/services/toaster.service.js +0 -24
- package/esm2015/lib/types.js +0 -129
- package/esm2015/public-api.js +0 -63
- package/fesm2015/indice-ng-components.js +0 -4355
- package/fesm2015/indice-ng-components.js.map +0 -1
package/_styles.css
CHANGED
|
@@ -380,7 +380,7 @@
|
|
|
380
380
|
@apply sm:pl-64;
|
|
381
381
|
}
|
|
382
382
|
|
|
383
|
-
.sidebar-static-menu-
|
|
383
|
+
.sidebar-static-menu-sticky-header-container {
|
|
384
384
|
@apply sticky top-0 z-10 flex-shrink-0 flex h-16 bg-gray-900 shadow;
|
|
385
385
|
}
|
|
386
386
|
|
|
@@ -4259,6 +4259,35 @@
|
|
|
4259
4259
|
}
|
|
4260
4260
|
}
|
|
4261
4261
|
|
|
4262
|
+
@layer components {
|
|
4263
|
+
.combobox-wrapper {
|
|
4264
|
+
@apply relative mt-1;
|
|
4265
|
+
}
|
|
4266
|
+
|
|
4267
|
+
.combobox-input {
|
|
4268
|
+
@apply w-full rounded-md border border-gray-300 bg-white py-2 pl-3 pr-12 shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 sm:text-sm;
|
|
4269
|
+
}
|
|
4270
|
+
|
|
4271
|
+
.combobox-icons {
|
|
4272
|
+
@apply absolute inset-y-0 right-0 flex items-center rounded-r-md px-2 focus:outline-none;
|
|
4273
|
+
}
|
|
4274
|
+
|
|
4275
|
+
.combobox-results {
|
|
4276
|
+
@apply absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm;
|
|
4277
|
+
}
|
|
4278
|
+
|
|
4279
|
+
.combobox-default-item-template {
|
|
4280
|
+
@apply hover:bg-gray-100 relative cursor-pointer select-none py-2 pl-3 pr-3 block truncate;
|
|
4281
|
+
}
|
|
4282
|
+
|
|
4283
|
+
.combobox-selected-item-wrapper {
|
|
4284
|
+
@apply relative rounded-lg border border-gray-300 bg-white px-6 py-5 shadow-sm flex items-center space-x-3 hover:border-gray-400;
|
|
4285
|
+
}
|
|
4286
|
+
|
|
4287
|
+
.combobox-selected-item-remove-btn {
|
|
4288
|
+
@apply cursor-pointer bg-white rounded-md inline-flex text-gray-400 hover:text-gray-500;
|
|
4289
|
+
}
|
|
4290
|
+
}
|
|
4262
4291
|
|
|
4263
4292
|
.modal-active {
|
|
4264
4293
|
overflow: hidden;
|
|
File without changes
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FilterClause, QueryParameters, Operators } from './models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "../date-picker/date-picker.component";
|
|
7
|
+
import * as i4 from "../drop-down-menu/drop-down-menu.component";
|
|
8
|
+
export class AdvancedSearchComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.advancedSearchChanged = new EventEmitter();
|
|
11
|
+
this.searchOptions = [];
|
|
12
|
+
this.filters = [];
|
|
13
|
+
this.menuOptions = [];
|
|
14
|
+
this.menuOptionsDictionary = {};
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
this.searchOptions.forEach((searchOption) => {
|
|
18
|
+
this.menuOptions.push({
|
|
19
|
+
text: searchOption.name,
|
|
20
|
+
value: searchOption.field,
|
|
21
|
+
data: searchOption.dataType,
|
|
22
|
+
description: searchOption.placeholder,
|
|
23
|
+
icon: undefined
|
|
24
|
+
});
|
|
25
|
+
if (searchOption.dataType === 'array') {
|
|
26
|
+
let menuOpts = [];
|
|
27
|
+
searchOption.options?.forEach((selectInputOption) => {
|
|
28
|
+
menuOpts.push({
|
|
29
|
+
text: selectInputOption.label,
|
|
30
|
+
value: selectInputOption.value,
|
|
31
|
+
data: undefined,
|
|
32
|
+
description: selectInputOption.description,
|
|
33
|
+
icon: undefined
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
this.menuOptionsDictionary[searchOption.field] = menuOpts;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
selectedFieldChanged(field) {
|
|
41
|
+
this.selectedField = this.searchOptions.find((searchOption) => searchOption.field === field);
|
|
42
|
+
this.fieldValue = undefined;
|
|
43
|
+
}
|
|
44
|
+
selectedFieldValueChanged(fieldValue) {
|
|
45
|
+
this.fieldValue = fieldValue;
|
|
46
|
+
}
|
|
47
|
+
search() {
|
|
48
|
+
if (!this.selectedField || !this.selectedField.dataType) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// the filter is of type 'daterange'
|
|
52
|
+
if (this.selectedField.dataType === 'daterange') {
|
|
53
|
+
if (!this.selectedField.multiTerm) {
|
|
54
|
+
this.filters = this.filters.filter((f) => {
|
|
55
|
+
return f.member !== QueryParameters.FILTER_FROM && f.member !== QueryParameters.FILTER_TO;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (this.fieldValueDateFrom) {
|
|
59
|
+
const filterClauseFrom = new FilterClause(QueryParameters.FILTER_FROM, this.fieldValueDateFrom, Operators.GREATER_THAN_EQUAL.value, 'datetime', this.searchOptions);
|
|
60
|
+
this.filters.push(filterClauseFrom);
|
|
61
|
+
}
|
|
62
|
+
if (this.fieldValueDateTo) {
|
|
63
|
+
const filterClauseTo = new FilterClause(QueryParameters.FILTER_TO, this.fieldValueDateTo, Operators.LESS_THAN_EQUAL.value, 'datetime', this.searchOptions);
|
|
64
|
+
this.filters.push(filterClauseTo);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// the filter isn't of type 'daterange' (everything else)
|
|
68
|
+
else {
|
|
69
|
+
if (this.fieldValue === undefined) { // handle empty field value
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// create the filterClause
|
|
73
|
+
const filterClause = new FilterClause(this.selectedField.field, this.fieldValue, Operators.EQUALS.value, this.selectedField.dataType, this.searchOptions); // operator is always 'equals'...
|
|
74
|
+
if (!this.selectedField.multiTerm) { // multiTerm means that we can have multiple filter values of the SAME filter clause (eg "filter case types that are Phone OR Address")
|
|
75
|
+
this.filters = this.filters.filter((f) => {
|
|
76
|
+
return f.member !== this.selectedField.field;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
this.filters.push(filterClause);
|
|
80
|
+
this.fieldValue = undefined;
|
|
81
|
+
}
|
|
82
|
+
this.advancedSearchChanged.emit(this.filters);
|
|
83
|
+
}
|
|
84
|
+
removeFilter(index) {
|
|
85
|
+
if (this.filters && this.filters.length >= index) {
|
|
86
|
+
this.filters.splice(index, 1);
|
|
87
|
+
this.advancedSearchChanged.emit(this.filters);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
clear() {
|
|
91
|
+
this.fieldValueDateFrom = undefined;
|
|
92
|
+
this.fieldValueDateTo = undefined;
|
|
93
|
+
this.selectedField = undefined;
|
|
94
|
+
this.fieldValue = undefined;
|
|
95
|
+
this.filters = [];
|
|
96
|
+
this.advancedSearchChanged.emit(this.filters);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
AdvancedSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
100
|
+
AdvancedSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: AdvancedSearchComponent, selector: "lib-advanced-search", inputs: { searchOptions: ["search-options", "searchOptions"], filters: "filters" }, outputs: { advancedSearchChanged: "advancedSearchChanged" }, ngImport: i0, template: "<div class=\"advanced-search-container\">\r\n <div class=\"advanced-search-filter\">\r\n <!--SEARCH FIELDS-->\r\n <div class=\"advanced-search-filter-field-container\">\r\n <label class=\"advanced-search-filter-field-label\"\r\n for=\"selectedField\">\r\n \u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B1\u03BD\u03AC:\r\n </label>\r\n <lib-drop-down-menu [options]=\"menuOptions\"\r\n (selectedChanged)=\"selectedFieldChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n <!--SEARCH FIELDS INPUT-->\r\n <div *ngIf=\"selectedField\"\r\n class=\"advanced-search-filter-value-container\">\r\n <div *ngIf=\"selectedField.dataType === 'array'\">\r\n <label class=\"advanced-search-filter-value-label\"\r\n for=\"fieldValue\">\r\n \r\n </label>\r\n <lib-drop-down-menu [options]=\"menuOptionsDictionary[selectedField.field]\"\r\n [selected]=\"fieldValue\"\r\n (selectedChanged)=\"selectedFieldValueChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n <div *ngIf=\"selectedField.dataType === 'string'\">\r\n <label class=\"advanced-search-filter-value-label\"\r\n for=\"fieldValue\">\r\n \r\n </label>\r\n <input (keyup.enter)=\"search()\"\r\n [(ngModel)]=\"fieldValue\"\r\n name=\"fieldValue\"\r\n type=\"text\"\r\n placeholder=\"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7\"\r\n maxlength=\"300\"\r\n class=\"advanced-search-filter-value-input\">\r\n </div>\r\n <ng-container *ngIf=\"selectedField.dataType === 'daterange'\">\r\n <div>\r\n <span class=\"advanced-search-filter-value-input-daterange-from\">\r\n \u0391\u03C0\u03CC:\r\n </span>\r\n <lib-date-picker [maxDate]=\"fieldValueDateTo\"\r\n [(ngModel)]=\"fieldValueDateFrom\"\r\n [placeholder]=\"'01/01/2022'\"></lib-date-picker>\r\n </div>\r\n <div *ngIf=\"selectedField.dataType === 'daterange'\">\r\n <span class=\"advanced-search-filter-value-input-daterange-to\">\r\n \u0388\u03C9\u03C2:\r\n </span>\r\n <lib-date-picker [minDate]=\"fieldValueDateFrom\"\r\n [(ngModel)]=\"fieldValueDateTo\"\r\n [placeholder]=\"'01/01/2022'\"></lib-date-picker>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"selectedField\">\r\n <!--DO SEARCH-->\r\n <button type=\"button\"\r\n [ngClass]=\"{'opacity-50 cursor-not-allowed': fieldValue === undefined && fieldValueDateFrom === undefined && fieldValueDateTo === undefined}\"\r\n [disabled]=\"fieldValue === undefined && fieldValueDateFrom === undefined && fieldValueDateTo === undefined\"\r\n (click)=\"search()\">\r\n <i [class]=\"'ms-Icon ms-Icon--Search'\"></i>\r\n </button>\r\n <!--CLEAR-->\r\n <button type=\"button\"\r\n (click)=\"clear()\">\r\n <i [class]=\"'ms-Icon ms-Icon--Cancel'\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <!--FILTER CHIPS-->\r\n <!-- This example requires Tailwind CSS v2.0+ -->\r\n <ng-container *ngFor=\"let filter of filters; let i = index\">\r\n <span *ngIf=\"filter && filter.member\"\r\n class=\"advanced-search-chips\">\r\n {{ filter.uiName }} {{ filter.uiOperator }} '{{ filter.uiValue }}'\r\n <button (click)=\"removeFilter(i)\"\r\n type=\"button\"\r\n class=\"advanced-search-chips-remove-filter\">\r\n <span class=\"sr-only\">Remove large option</span>\r\n <svg class=\"h-2 w-2\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n viewBox=\"0 0 8 8\">\r\n <path stroke-linecap=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M1 1l6 6m0-6L1 7\" />\r\n </svg>\r\n </button>\r\n </span>\r\n </ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DatepickerComponent, selector: "lib-date-picker", inputs: ["readonly", "disabled", "inline", "display-format", "placeholder", "value", "minDate", "maxDate"], outputs: ["valueChange"] }, { kind: "component", type: i4.DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: ["options", "selected", "multiple", "placeholder"], outputs: ["selectedChange", "selectedChanged"] }] });
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: 'lib-advanced-search', template: "<div class=\"advanced-search-container\">\r\n <div class=\"advanced-search-filter\">\r\n <!--SEARCH FIELDS-->\r\n <div class=\"advanced-search-filter-field-container\">\r\n <label class=\"advanced-search-filter-field-label\"\r\n for=\"selectedField\">\r\n \u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B1\u03BD\u03AC:\r\n </label>\r\n <lib-drop-down-menu [options]=\"menuOptions\"\r\n (selectedChanged)=\"selectedFieldChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n <!--SEARCH FIELDS INPUT-->\r\n <div *ngIf=\"selectedField\"\r\n class=\"advanced-search-filter-value-container\">\r\n <div *ngIf=\"selectedField.dataType === 'array'\">\r\n <label class=\"advanced-search-filter-value-label\"\r\n for=\"fieldValue\">\r\n \r\n </label>\r\n <lib-drop-down-menu [options]=\"menuOptionsDictionary[selectedField.field]\"\r\n [selected]=\"fieldValue\"\r\n (selectedChanged)=\"selectedFieldValueChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n <div *ngIf=\"selectedField.dataType === 'string'\">\r\n <label class=\"advanced-search-filter-value-label\"\r\n for=\"fieldValue\">\r\n \r\n </label>\r\n <input (keyup.enter)=\"search()\"\r\n [(ngModel)]=\"fieldValue\"\r\n name=\"fieldValue\"\r\n type=\"text\"\r\n placeholder=\"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7\"\r\n maxlength=\"300\"\r\n class=\"advanced-search-filter-value-input\">\r\n </div>\r\n <ng-container *ngIf=\"selectedField.dataType === 'daterange'\">\r\n <div>\r\n <span class=\"advanced-search-filter-value-input-daterange-from\">\r\n \u0391\u03C0\u03CC:\r\n </span>\r\n <lib-date-picker [maxDate]=\"fieldValueDateTo\"\r\n [(ngModel)]=\"fieldValueDateFrom\"\r\n [placeholder]=\"'01/01/2022'\"></lib-date-picker>\r\n </div>\r\n <div *ngIf=\"selectedField.dataType === 'daterange'\">\r\n <span class=\"advanced-search-filter-value-input-daterange-to\">\r\n \u0388\u03C9\u03C2:\r\n </span>\r\n <lib-date-picker [minDate]=\"fieldValueDateFrom\"\r\n [(ngModel)]=\"fieldValueDateTo\"\r\n [placeholder]=\"'01/01/2022'\"></lib-date-picker>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"selectedField\">\r\n <!--DO SEARCH-->\r\n <button type=\"button\"\r\n [ngClass]=\"{'opacity-50 cursor-not-allowed': fieldValue === undefined && fieldValueDateFrom === undefined && fieldValueDateTo === undefined}\"\r\n [disabled]=\"fieldValue === undefined && fieldValueDateFrom === undefined && fieldValueDateTo === undefined\"\r\n (click)=\"search()\">\r\n <i [class]=\"'ms-Icon ms-Icon--Search'\"></i>\r\n </button>\r\n <!--CLEAR-->\r\n <button type=\"button\"\r\n (click)=\"clear()\">\r\n <i [class]=\"'ms-Icon ms-Icon--Cancel'\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <!--FILTER CHIPS-->\r\n <!-- This example requires Tailwind CSS v2.0+ -->\r\n <ng-container *ngFor=\"let filter of filters; let i = index\">\r\n <span *ngIf=\"filter && filter.member\"\r\n class=\"advanced-search-chips\">\r\n {{ filter.uiName }} {{ filter.uiOperator }} '{{ filter.uiValue }}'\r\n <button (click)=\"removeFilter(i)\"\r\n type=\"button\"\r\n class=\"advanced-search-chips-remove-filter\">\r\n <span class=\"sr-only\">Remove large option</span>\r\n <svg class=\"h-2 w-2\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n viewBox=\"0 0 8 8\">\r\n <path stroke-linecap=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M1 1l6 6m0-6L1 7\" />\r\n </svg>\r\n </button>\r\n </span>\r\n </ng-container>\r\n</div>" }]
|
|
104
|
+
}], ctorParameters: function () { return []; }, propDecorators: { advancedSearchChanged: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}], searchOptions: [{
|
|
107
|
+
type: Input,
|
|
108
|
+
args: ['search-options']
|
|
109
|
+
}], filters: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}] } });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9hZHZhbmNlZC1zZWFyY2gvYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9hZHZhbmNlZC1zZWFyY2gvYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFnQixZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBTWxGLE1BQU0sT0FBTyx1QkFBdUI7SUFXbEM7UUFWVSwwQkFBcUIsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDMUUsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25ELFlBQU8sR0FBbUIsRUFBRSxDQUFDO1FBQy9CLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUsvQiwwQkFBcUIsR0FBb0MsRUFBRSxDQUFDO0lBRW5ELENBQUM7SUFFVixRQUFRO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUN2QixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsUUFBUTtnQkFDM0IsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxJQUFJLEVBQUUsU0FBUzthQUNoQixD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QUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7b0hBdEdVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDRNQ1JwQywydUpBMkZNOzJGRG5GTyx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCOzBFQUlyQixxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ2tCLGFBQWE7c0JBQXJDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgU2VhcmNoT3B0aW9uLCBGaWx0ZXJDbGF1c2UsIFF1ZXJ5UGFyYW1ldGVycywgT3BlcmF0b3JzIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWR2YW5jZWQtc2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBhZHZhbmNlZFNlYXJjaENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGaWx0ZXJDbGF1c2VbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNsYXVzZVtdPigpO1xyXG4gIEBJbnB1dCgnc2VhcmNoLW9wdGlvbnMnKSBzZWFyY2hPcHRpb25zOiBTZWFyY2hPcHRpb25bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEZpbHRlckNsYXVzZVtdID0gW107XHJcbiAgcHVibGljIG1lbnVPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRGaWVsZD86IFNlYXJjaE9wdGlvbjtcclxuICBwdWJsaWMgZmllbGRWYWx1ZT86IHN0cmluZztcclxuICBwdWJsaWMgZmllbGRWYWx1ZURhdGVGcm9tOiBhbnk7XHJcbiAgcHVibGljIGZpZWxkVmFsdWVEYXRlVG86IGFueTtcclxuICBwdWJsaWMgbWVudU9wdGlvbnNEaWN0aW9uYXJ5OiB7IFtrZXk6IHN0cmluZ106IE1lbnVPcHRpb25bXSB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoT3B0aW9ucy5mb3JFYWNoKChzZWFyY2hPcHRpb24pID0+IHtcclxuICAgICAgdGhpcy5tZW51T3B0aW9ucy5wdXNoKHtcclxuICAgICAgICB0ZXh0OiBzZWFyY2hPcHRpb24ubmFtZSxcclxuICAgICAgICB2YWx1ZTogc2VhcmNoT3B0aW9uLmZpZWxkLFxyXG4gICAgICAgIGRhdGE6IHNlYXJjaE9wdGlvbi5kYXRhVHlwZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogc2VhcmNoT3B0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICAgIGljb246IHVuZGVmaW5lZFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHNlYXJjaE9wdGlvbi5kYXRhVHlwZSA9PT0gJ2FycmF5Jykge1xyXG4gICAgICAgIGxldCBtZW51T3B0czogTWVudU9wdGlvbltdID0gW107XHJcbiAgICAgICAgc2VhcmNoT3B0aW9uLm9wdGlvbnM/LmZvckVhY2goKHNlbGVjdElucHV0T3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICBtZW51T3B0cy5wdXNoKHtcclxuICAgICAgICAgICAgdGV4dDogc2VsZWN0SW5wdXRPcHRpb24ubGFiZWwsXHJcbiAgICAgICAgICAgIHZhbHVlOiBzZWxlY3RJbnB1dE9wdGlvbi52YWx1ZSxcclxuICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VsZWN0SW5wdXRPcHRpb24uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGljb246IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLm1lbnVPcHRpb25zRGljdGlvbmFyeVtzZWFyY2hPcHRpb24uZmllbGRdID0gbWVudU9wdHM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdGVkRmllbGRDaGFuZ2VkKGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2VhcmNoT3B0aW9ucy5maW5kKChzZWFyY2hPcHRpb24pID0+IHNlYXJjaE9wdGlvbi5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdGVkRmllbGRWYWx1ZUNoYW5nZWQoZmllbGRWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlYXJjaCgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpZWxkIHx8ICF0aGlzLnNlbGVjdGVkRmllbGQuZGF0YVR5cGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdGhlIGZpbHRlciBpcyBvZiB0eXBlICdkYXRlcmFuZ2UnXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLmRhdGFUeXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWVsZC5tdWx0aVRlcm0pIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKChmKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZi5tZW1iZXIgIT09IFF1ZXJ5UGFyYW1ldGVycy5GSUxURVJfRlJPTSAmJiBmLm1lbWJlciAhPT0gUXVlcnlQYXJhbWV0ZXJzLkZJTFRFUl9UTztcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZFZhbHVlRGF0ZUZyb20pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJDbGF1c2VGcm9tID0gbmV3IEZpbHRlckNsYXVzZShRdWVyeVBhcmFtZXRlcnMuRklMVEVSX0ZST00sIHRoaXMuZmllbGRWYWx1ZURhdGVGcm9tLCBPcGVyYXRvcnMuR1JFQVRFUl9USEFOX0VRVUFMLnZhbHVlIGFzIEZpbHRlckNsYXVzZS5PcCwgJ2RhdGV0aW1lJywgdGhpcy5zZWFyY2hPcHRpb25zKTtcclxuICAgICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXJDbGF1c2VGcm9tKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZURhdGVUbykge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlckNsYXVzZVRvID0gbmV3IEZpbHRlckNsYXVzZShRdWVyeVBhcmFtZXRlcnMuRklMVEVSX1RPLCB0aGlzLmZpZWxkVmFsdWVEYXRlVG8sIE9wZXJhdG9ycy5MRVNTX1RIQU5fRVFVQUwudmFsdWUgYXMgRmlsdGVyQ2xhdXNlLk9wLCAnZGF0ZXRpbWUnLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlckNsYXVzZVRvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdGhlIGZpbHRlciBpc24ndCBvZiB0eXBlICdkYXRlcmFuZ2UnIChldmVyeXRoaW5nIGVsc2UpXHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7IC8vIGhhbmRsZSBlbXB0eSBmaWVsZCB2YWx1ZVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyBjcmVhdGUgdGhlIGZpbHRlckNsYXVzZVxyXG4gICAgICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBuZXcgRmlsdGVyQ2xhdXNlKHRoaXMuc2VsZWN0ZWRGaWVsZC5maWVsZCwgdGhpcy5maWVsZFZhbHVlLCBPcGVyYXRvcnMuRVFVQUxTLnZhbHVlIGFzIEZpbHRlckNsYXVzZS5PcCwgdGhpcy5zZWxlY3RlZEZpZWxkLmRhdGFUeXBlLCB0aGlzLnNlYXJjaE9wdGlvbnMpOyAvLyBvcGVyYXRvciBpcyBhbHdheXMgJ2VxdWFscycuLi5cclxuXHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEZpZWxkLm11bHRpVGVybSkgeyAvLyBtdWx0aVRlcm0gbWVhbnMgdGhhdCB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBmaWx0ZXIgdmFsdWVzIG9mIHRoZSBTQU1FIGZpbHRlciBjbGF1c2UgKGVnIFwiZmlsdGVyIGNhc2UgdHlwZXMgdGhhdCBhcmUgUGhvbmUgT1IgQWRkcmVzc1wiKVxyXG4gICAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiBmLm1lbWJlciAhPT0gdGhpcy5zZWxlY3RlZEZpZWxkIS5maWVsZDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyQ2xhdXNlKTtcclxuICAgICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZHZhbmNlZFNlYXJjaENoYW5nZWQuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUZpbHRlcihpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPj0gaW5kZXgpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hDaGFuZ2VkLmVtaXQodGhpcy5maWx0ZXJzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcigpIHtcclxuICAgIHRoaXMuZmllbGRWYWx1ZURhdGVGcm9tID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5maWVsZFZhbHVlRGF0ZVRvID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5maWx0ZXJzID0gW107XHJcbiAgICB0aGlzLmFkdmFuY2VkU2VhcmNoQ2hhbmdlZC5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1maWx0ZXJcIj5cclxuICAgICAgICA8IS0tU0VBUkNIIEZJRUxEUy0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtZmlsdGVyLWZpZWxkLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtZmlsdGVyLWZpZWxkLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgIGZvcj1cInNlbGVjdGVkRmllbGRcIj5cclxuICAgICAgICAgICAgICAgIM6Rzr3Osc62zq7PhM63z4POtyDOsc69zqw6XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxsaWItZHJvcC1kb3duLW1lbnUgW29wdGlvbnNdPVwibWVudU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZWQpPVwic2VsZWN0ZWRGaWVsZENoYW5nZWQoJGV2ZW50KVwiPjwvbGliLWRyb3AtZG93bi1tZW51PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1TRUFSQ0ggRklFTERTIElOUFVULS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRmllbGRcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtZmlsdGVyLXZhbHVlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRGaWVsZC5kYXRhVHlwZSA9PT0gJ2FycmF5J1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci12YWx1ZS1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmllbGRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsaWItZHJvcC1kb3duLW1lbnUgW29wdGlvbnNdPVwibWVudU9wdGlvbnNEaWN0aW9uYXJ5W3NlbGVjdGVkRmllbGQuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImZpZWxkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2VkKT1cInNlbGVjdGVkRmllbGRWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiPjwvbGliLWRyb3AtZG93bi1tZW51PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRmllbGQuZGF0YVR5cGUgPT09ICdzdHJpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtZmlsdGVyLXZhbHVlLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmaWVsZFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IChrZXl1cC5lbnRlcik9XCJzZWFyY2goKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmllbGRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwizpHOvc6xzrbOrs+EzrfPg863XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIzMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci12YWx1ZS1pbnB1dFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkRmllbGQuZGF0YVR5cGUgPT09ICdkYXRlcmFuZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci12YWx1ZS1pbnB1dC1kYXRlcmFuZ2UtZnJvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDOkc+Az4w6XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItZGF0ZS1waWNrZXIgW21heERhdGVdPVwiZmllbGRWYWx1ZURhdGVUb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVEYXRlRnJvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJzAxLzAxLzIwMjInXCI+PC9saWItZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEZpZWxkLmRhdGFUeXBlID09PSAnZGF0ZXJhbmdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci12YWx1ZS1pbnB1dC1kYXRlcmFuZ2UtdG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgzojPic+COlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWRhdGUtcGlja2VyIFttaW5EYXRlXT1cImZpZWxkVmFsdWVEYXRlRnJvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVEYXRlVG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicwMS8wMS8yMDIyJ1wiPjwvbGliLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEZpZWxkXCI+XHJcbiAgICAgICAgICAgIDwhLS1ETyBTRUFSQ0gtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIGZpZWxkVmFsdWVEYXRlRnJvbSA9PT0gdW5kZWZpbmVkICYmIGZpZWxkVmFsdWVEYXRlVG8gPT09IHVuZGVmaW5lZH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZFZhbHVlID09PSB1bmRlZmluZWQgJiYgZmllbGRWYWx1ZURhdGVGcm9tID09PSB1bmRlZmluZWQgJiYgZmllbGRWYWx1ZURhdGVUbyA9PT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIj5cclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInbXMtSWNvbiBtcy1JY29uLS1TZWFyY2gnXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPCEtLUNMRUFSLS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIj5cclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInbXMtSWNvbiBtcy1JY29uLS1DYW5jZWwnXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLUZJTFRFUiBDSElQUy0tPlxyXG4gICAgPCEtLSBUaGlzIGV4YW1wbGUgcmVxdWlyZXMgVGFpbHdpbmQgQ1NTIHYyLjArIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlcnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlciAmJiBmaWx0ZXIubWVtYmVyXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1jaGlwc1wiPlxyXG4gICAgICAgICAgICB7eyBmaWx0ZXIudWlOYW1lIH19IHt7IGZpbHRlci51aU9wZXJhdG9yIH19ICd7eyBmaWx0ZXIudWlWYWx1ZSB9fSdcclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1jaGlwcy1yZW1vdmUtZmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5SZW1vdmUgbGFyZ2Ugb3B0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtMiB3LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgOCA4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEgMWw2IDZtMC02TDEgN1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { formatDate } from "@angular/common";
|
|
2
|
+
export var Operators;
|
|
3
|
+
(function (Operators) {
|
|
4
|
+
Operators.EQUALS = { label: '=', value: 'eq', description: 'Ίσο με' };
|
|
5
|
+
Operators.NOT_EQUALS = { label: '≠', value: 'neq', description: 'Διάφορο του' };
|
|
6
|
+
Operators.GREATER_THAN = { label: '>', value: 'gt', description: 'Μεγαλύτερο από' };
|
|
7
|
+
Operators.LESS_THAN = { label: '<', value: 'lt', description: 'Μικρότερο από' };
|
|
8
|
+
Operators.GREATER_THAN_EQUAL = { label: '≥', value: 'gte', description: 'Μεγαλύτερο ή ίσο με' };
|
|
9
|
+
Operators.LESS_THAN_EQUAL = { label: '≤', value: 'lte', description: 'Μικρότερο ή ίσο με' };
|
|
10
|
+
Operators.CONTAINS = { label: '∋', value: 'contains', description: 'Περιέχει' };
|
|
11
|
+
Operators.IN = { label: '1..n', value: 'in', description: 'Μέσα σε' };
|
|
12
|
+
})(Operators || (Operators = {}));
|
|
13
|
+
export var QueryParameters;
|
|
14
|
+
(function (QueryParameters) {
|
|
15
|
+
QueryParameters["VIEW"] = "view";
|
|
16
|
+
QueryParameters["PAGE_SIZE"] = "pagesize";
|
|
17
|
+
QueryParameters["PAGE"] = "page";
|
|
18
|
+
QueryParameters["SEARCH"] = "search";
|
|
19
|
+
QueryParameters["SORT_FIELD"] = "sort";
|
|
20
|
+
QueryParameters["SORT_DIRECTION"] = "dir";
|
|
21
|
+
QueryParameters["FILTER"] = "filter";
|
|
22
|
+
QueryParameters["FILTER_FROM"] = "from";
|
|
23
|
+
QueryParameters["FILTER_TO"] = "to";
|
|
24
|
+
})(QueryParameters || (QueryParameters = {}));
|
|
25
|
+
export class FilterClause {
|
|
26
|
+
constructor(member, value, operator, dataType, searchOptions) {
|
|
27
|
+
this.member = member;
|
|
28
|
+
this.value = value;
|
|
29
|
+
this.operator = operator || Operators.EQUALS.value;
|
|
30
|
+
this.dataType = dataType === undefined ? 'string' : dataType;
|
|
31
|
+
// uiName
|
|
32
|
+
if (this.dataType === 'datetime') { // special treatment for dates
|
|
33
|
+
this.uiName = this.member === QueryParameters.FILTER_FROM ? 'Από' : 'Έως';
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.uiName = this.member;
|
|
37
|
+
let fo = {};
|
|
38
|
+
if (searchOptions && searchOptions.length > 0) {
|
|
39
|
+
fo = searchOptions.find((f) => {
|
|
40
|
+
return f.field === this.member;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (fo) {
|
|
44
|
+
this.uiName = fo.name;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// uiOperator
|
|
48
|
+
this.uiOperator = this.dataType === 'datetime' ? '' : Operators.EQUALS.label; // that's fine (for now)...
|
|
49
|
+
// uiValue
|
|
50
|
+
this.uiValue = this.value;
|
|
51
|
+
if ((this.dataType === 'datetime')) {
|
|
52
|
+
this.uiValue = formatDate(new Date(this.value), 'dd/MM/yyyy', 'en-US');
|
|
53
|
+
}
|
|
54
|
+
let fo;
|
|
55
|
+
if (searchOptions && searchOptions.length > 0) {
|
|
56
|
+
fo = searchOptions.find((f) => {
|
|
57
|
+
return f.field === this.member;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (fo && fo.options) { // special treatment for arrays, if there is an options property then it is an array
|
|
61
|
+
this.dataType = 'array';
|
|
62
|
+
this.uiValue = fo.options.find((option) => {
|
|
63
|
+
return option.value === this.value;
|
|
64
|
+
})?.label;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
static parse(text) {
|
|
68
|
+
const pattern = /^\s*([A-Za-z_][A-Za-z0-9_\.]+)::(eq|neq|gt|lt|gte|lte|contains|in)::(\((string|integer|number|boolean|datetime)\))?(.+)\s*$/gi;
|
|
69
|
+
if (text != null) {
|
|
70
|
+
const matches = pattern.exec(text);
|
|
71
|
+
if (matches != null) {
|
|
72
|
+
const path = matches[1];
|
|
73
|
+
const op = matches[2];
|
|
74
|
+
const dt = matches[4];
|
|
75
|
+
const v = matches[5];
|
|
76
|
+
return new FilterClause(path, v, op, dt);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
toString() {
|
|
82
|
+
if (this.dataType !== 'string' && this.dataType !== 'array') {
|
|
83
|
+
return `${this.member}::${this.operator}::(${this.dataType})${this.value}`;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return `${this.member}::${this.operator}::${this.value}`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2FkdmFuY2VkLXNlYXJjaC9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE1BQU0sS0FBVyxTQUFTLENBU3pCO0FBVEQsV0FBaUIsU0FBUztJQUNYLGdCQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzVELG9CQUFVLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3RFLHNCQUFZLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDMUUsbUJBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDdEUsNEJBQWtCLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLENBQUM7SUFDdEYseUJBQWUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztJQUNsRixrQkFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxZQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUs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S0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuZXhwb3J0IG5hbWVzcGFjZSBPcGVyYXRvcnMge1xyXG4gIGV4cG9ydCBjb25zdCBFUVVBTFMgPSB7IGxhYmVsOiAnPScsIHZhbHVlOiAnZXEnLCBkZXNjcmlwdGlvbjogJ86Kz4POvyDOvM61JyB9O1xyXG4gIGV4cG9ydCBjb25zdCBOT1RfRVFVQUxTID0geyBsYWJlbDogJ+KJoCcsIHZhbHVlOiAnbmVxJywgZGVzY3JpcHRpb246ICfOlM65zqzPhs6/z4HOvyDPhM6/z4UnIH07XHJcbiAgZXhwb3J0IGNvbnN0IEdSRUFURVJfVEhBTiA9IHsgbGFiZWw6ICc+JywgdmFsdWU6ICdndCcsIGRlc2NyaXB0aW9uOiAnzpzOtc6zzrHOu8+Nz4TOtc+Bzr8gzrHPgM+MJyB9O1xyXG4gIGV4cG9ydCBjb25zdCBMRVNTX1RIQU4gPSB7IGxhYmVsOiAnPCcsIHZhbHVlOiAnbHQnLCBkZXNjcmlwdGlvbjogJ86czrnOus+Bz4zPhM61z4HOvyDOsc+Az4wnIH07XHJcbiAgZXhwb3J0IGNvbnN0IEdSRUFURVJfVEhBTl9FUVVBTCA9IHsgbGFiZWw6ICfiiaUnLCB2YWx1ZTogJ2d0ZScsIGRlc2NyaXB0aW9uOiAnzpzOtc6zzrHOu8+Nz4TOtc+Bzr8gzq4gzq/Pg86/IM68zrUnIH07XHJcbiAgZXhwb3J0IGNvbnN0IExFU1NfVEhBTl9FUVVBTCA9IHsgbGFiZWw6ICfiiaQnLCB2YWx1ZTogJ2x0ZScsIGRlc2NyaXB0aW9uOiAnzpzOuc66z4HPjM+EzrXPgc6/IM6uIM6vz4POvyDOvM61JyB9O1xyXG4gIGV4cG9ydCBjb25zdCBDT05UQUlOUyA9IHsgbGFiZWw6ICfiiIsnLCB2YWx1ZTogJ2NvbnRhaW5zJywgZGVzY3JpcHRpb246ICfOoM61z4HOuc6tz4fOtc65JyB9O1xyXG4gIGV4cG9ydCBjb25zdCBJTiA9IHsgbGFiZWw6ICcxLi5uJywgdmFsdWU6ICdpbicsIGRlc2NyaXB0aW9uOiAnzpzOrc+DzrEgz4POtScgfTtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUXVlcnlQYXJhbWV0ZXJzIHtcclxuICBWSUVXID0gJ3ZpZXcnLFxyXG4gIFBBR0VfU0laRSA9ICdwYWdlc2l6ZScsXHJcbiAgUEFHRSA9ICdwYWdlJyxcclxuICBTRUFSQ0ggPSAnc2VhcmNoJyxcclxuICBTT1JUX0ZJRUxEID0gJ3NvcnQnLFxyXG4gIFNPUlRfRElSRUNUSU9OID0gJ2RpcicsXHJcbiAgRklMVEVSID0gJ2ZpbHRlcicsXHJcbiAgRklMVEVSX0ZST00gPSAnZnJvbScsXHJcbiAgRklMVEVSX1RPID0gJ3RvJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaE9wdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgZGF0YVR5cGU6IEZpbHRlckNsYXVzZS5EdDtcclxuICBhcnJheT86IGJvb2xlYW47XHJcbiAgbXVsdGlUZXJtPzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogU2VsZWN0SW5wdXRPcHRpb25bXTtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJbnB1dE9wdGlvbiB7XHJcbiAgdmFsdWU6IGFueTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIEZpbHRlckNsYXVzZSB7XHJcbiAgZXhwb3J0IHR5cGUgT3AgPSAnZXEnIHwgJ25lcScgfCAnZ3QnIHwgJ2x0JyB8ICdndGUnIHwgJ2x0ZScgfCAnY29udGFpbnMnIHwgJ2luJztcclxuICBleHBvcnQgdHlwZSBEdCA9ICdzdHJpbmcnIHwgJ2ludGVnZXInIHwgJ251bWJlcicgfCAnYm9vbGVhbicgfCAnZGF0ZXRpbWUnIHwgJ2FycmF5JyB8ICdkYXRlcmFuZ2UnIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQ2xhdXNlIHtcclxuICAvLyBNZW1iZXIgcGF0aCB0byBjb21wYXJlXHJcbiAgcHVibGljIG1lbWJlcjogc3RyaW5nO1xyXG4gIC8vIFZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdFxyXG4gIHB1YmxpYyB2YWx1ZTogYW55O1xyXG4gIC8vIFRoZSBvcGVyYXRvciB0byBhcHBseSBiZXR3ZWVuIHRoZSBJbmRpY2UuVHlwZXMuRmlsdGVyQ2xhdXNlLk1lbWJlciBhbmQgSW5kaWNlLlR5cGVzLkZpbHRlckNsYXVzZS5WYWx1ZVxyXG4gIHB1YmxpYyBvcGVyYXRvcjogRmlsdGVyQ2xhdXNlLk9wO1xyXG4gIC8vIFRoZSBJbmRpY2UuVHlwZXMuSnNvbkRhdGFUeXBlIG9mIHRoZSBkYXRhIEluZGljZS5UeXBlcy5GaWx0ZXJDbGF1c2UuTWVtYmVyXHJcbiAgcHVibGljIGRhdGFUeXBlOiBGaWx0ZXJDbGF1c2UuRHQ7XHJcblxyXG4gIHB1YmxpYyB1aU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgdWlPcGVyYXRvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyB1aVZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZW1iZXI6IHN0cmluZywgdmFsdWU6IGFueSwgb3BlcmF0b3I/OiBGaWx0ZXJDbGF1c2UuT3AsIGRhdGFUeXBlPzogRmlsdGVyQ2xhdXNlLkR0LCBzZWFyY2hPcHRpb25zPzogU2VhcmNoT3B0aW9uW10pIHsgLy8geWVhcCwgd2UgZG8gbmVlZCBzZWFyY2hPcHRpb25zIGZvciB0aGUgdWkgdmlldyBtb2RlbFxyXG4gICAgdGhpcy5tZW1iZXIgPSBtZW1iZXI7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3IgfHwgT3BlcmF0b3JzLkVRVUFMUy52YWx1ZSBhcyBGaWx0ZXJDbGF1c2UuT3A7XHJcbiAgICB0aGlzLmRhdGFUeXBlID0gZGF0YVR5cGUgPT09IHVuZGVmaW5lZCA/ICdzdHJpbmcnIDogZGF0YVR5cGU7XHJcbiAgICAvLyB1aU5hbWVcclxuICAgIGlmICh0aGlzLmRhdGFUeXBlID09PSAnZGF0ZXRpbWUnKSB7IC8vIHNwZWNpYWwgdHJlYXRtZW50IGZvciBkYXRlc1xyXG4gICAgICB0aGlzLnVpTmFtZSA9IHRoaXMubWVtYmVyID09PSBRdWVyeVBhcmFtZXRlcnMuRklMVEVSX0ZST00gPyAnzpHPgM+MJyA6ICfOiM+Jz4InO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51aU5hbWUgPSB0aGlzLm1lbWJlcjtcclxuICAgICAgbGV0IGZvID0gPGFueT57fTtcclxuICAgICAgaWYgKHNlYXJjaE9wdGlvbnMgJiYgc2VhcmNoT3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm8gPSBzZWFyY2hPcHRpb25zLmZpbmQoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiBmLmZpZWxkID09PSB0aGlzLm1lbWJlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGZvKSB7XHJcbiAgICAgICAgdGhpcy51aU5hbWUgPSBmby5uYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB1aU9wZXJhdG9yXHJcbiAgICB0aGlzLnVpT3BlcmF0b3IgPSB0aGlzLmRhdGFUeXBlID09PSAnZGF0ZXRpbWUnID8gJycgOiBPcGVyYXRvcnMuRVFVQUxTLmxhYmVsOyAvLyB0aGF0J3MgZmluZSAoZm9yIG5vdykuLi5cclxuICAgIC8vIHVpVmFsdWVcclxuICAgIHRoaXMudWlWYWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICBpZiAoKHRoaXMuZGF0YVR5cGUgPT09ICdkYXRldGltZScpKSB7XHJcbiAgICAgIHRoaXMudWlWYWx1ZSA9IGZvcm1hdERhdGUobmV3IERhdGUodGhpcy52YWx1ZSksICdkZC9NTS95eXl5JywgJ2VuLVVTJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgZm86IFNlYXJjaE9wdGlvbiB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChzZWFyY2hPcHRpb25zICYmIHNlYXJjaE9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmbyA9IHNlYXJjaE9wdGlvbnMuZmluZCgoZikgPT4ge1xyXG4gICAgICAgIHJldHVybiBmLmZpZWxkID09PSB0aGlzLm1lbWJlcjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZm8gJiYgZm8ub3B0aW9ucykgeyAvLyBzcGVjaWFsIHRyZWF0bWVudCBmb3IgYXJyYXlzLCBpZiB0aGVyZSBpcyBhbiBvcHRpb25zIHByb3BlcnR5IHRoZW4gaXQgaXMgYW4gYXJyYXlcclxuICAgICAgdGhpcy5kYXRhVHlwZSA9ICdhcnJheSc7XHJcbiAgICAgIHRoaXMudWlWYWx1ZSA9IGZvIS5vcHRpb25zIS5maW5kKChvcHRpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlO1xyXG4gICAgICB9KT8ubGFiZWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHBhcnNlKHRleHQ6IHN0cmluZyk6IEZpbHRlckNsYXVzZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gL15cXHMqKFtBLVphLXpfXVtBLVphLXowLTlfXFwuXSspOjooZXF8bmVxfGd0fGx0fGd0ZXxsdGV8Y29udGFpbnN8aW4pOjooXFwoKHN0cmluZ3xpbnRlZ2VyfG51bWJlcnxib29sZWFufGRhdGV0aW1lKVxcKSk/KC4rKVxccyokL2dpO1xyXG4gICAgaWYgKHRleHQgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBtYXRjaGVzID0gcGF0dGVybi5leGVjKHRleHQpO1xyXG4gICAgICBpZiAobWF0Y2hlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IG1hdGNoZXNbMV07XHJcbiAgICAgICAgY29uc3Qgb3AgPSA8RmlsdGVyQ2xhdXNlLk9wPm1hdGNoZXNbMl07XHJcbiAgICAgICAgY29uc3QgZHQgPSA8RmlsdGVyQ2xhdXNlLkR0Pm1hdGNoZXNbNF07XHJcbiAgICAgICAgY29uc3QgdiA9IG1hdGNoZXNbNV07XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyQ2xhdXNlKHBhdGgsIHYsIG9wLCBkdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRhdGFUeXBlICE9PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGFUeXBlICE9PSAnYXJyYXknKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLm1lbWJlcn06OiR7dGhpcy5vcGVyYXRvcn06Oigke3RoaXMuZGF0YVR5cGV9KSR7dGhpcy52YWx1ZX1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMubWVtYmVyfTo6JHt0aGlzLm9wZXJhdG9yfTo6JHt0aGlzLnZhbHVlfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -35,17 +35,14 @@ export class AvatarInitialsComponent {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
AvatarInitialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
39
|
-
AvatarInitialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
+
AvatarInitialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AvatarInitialsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
AvatarInitialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: AvatarInitialsComponent, selector: "lib-avatar-initials", inputs: { name: "name", large: "large" }, ngImport: i0, template: "<div [ngClass]=\"large ? 'avatar-container-large': 'avatar-container'\">\r\n <span [ngClass]=\"large ? 'avatar-text-large': 'avatar-text'\">{{ initials }}</span>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AvatarInitialsComponent, decorators: [{
|
|
41
41
|
type: Component,
|
|
42
|
-
args: [{
|
|
43
|
-
selector: 'lib-avatar-initials',
|
|
44
|
-
templateUrl: './avatar-initials.component.html'
|
|
45
|
-
}]
|
|
42
|
+
args: [{ selector: 'lib-avatar-initials', template: "<div [ngClass]=\"large ? 'avatar-container-large': 'avatar-container'\">\r\n <span [ngClass]=\"large ? 'avatar-text-large': 'avatar-text'\">{{ initials }}</span>\r\n</div>\r\n" }]
|
|
46
43
|
}], ctorParameters: function () { return []; }, propDecorators: { name: [{
|
|
47
44
|
type: Input
|
|
48
45
|
}], large: [{
|
|
49
46
|
type: Input
|
|
50
47
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWluaXRpYWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9hdmF0YXItaW5pdGlhbHMvYXZhdGFyLWluaXRpYWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9hdmF0YXItaW5pdGlhbHMvYXZhdGFyLWluaXRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFNekQsTUFBTSxPQUFPLHVCQUF1QjtJQWNsQztRQVZPLFVBQUssR0FBRyxLQUFLLENBQUM7UUFHYixXQUFNLEdBQUc7WUFDZixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTLEVBQUUsT0FBTztTQUNuQixDQUFDO0lBRWMsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9FLHlGQUF5RjtRQUN6RixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7b0JBQy9CLFNBQVM7aUJBQ1Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDN0QsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUN6QixNQUFNO3FCQUNQO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUMxQjtJQUNILENBQUM7O29IQXZDVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixxR0NOcEMsb0xBR0E7MkZER2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQjswRUFLeEIsSUFBSTtzQkFEVixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXZhdGFyLWluaXRpYWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLWluaXRpYWxzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXZhdGFySW5pdGlhbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFyZ2UgPSBmYWxzZTtcclxuICBwdWJsaWMgaW5pdGlhbHM/OiBzdHJpbmc7XHJcbiAgcHVibGljIGNpcmNsZUNvbG9yITogc3RyaW5nO1xyXG4gIHByaXZhdGUgY29sb3JzID0gW1xyXG4gICAgJyNFQjcxODEnLCAvLyByZWRcclxuICAgICcjNDY4NTQ3JywgLy8gZ3JlZW5cclxuICAgICcjRkZENTU4JywgLy8geWVsbG93XHJcbiAgICAnIzM2NzBCMicsIC8vIGJsdWVcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlSW5pdGl0YWxzKCk7XHJcbiAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE1hdGguZmxvb3IodGhpcy5jb2xvcnMubGVuZ3RoKSk7XHJcbiAgICAvLyBhc3NpZ24gdGhpcyB0byBhIGNsYXNzIGlmIHlvdSB3YW50IHRvIHJhbmRvbWx5IGNoYW5nZSBiYWNrZ3JvdW5kIGNvbG9ycyBvZiB0aGUgY2lyY2xlLlxyXG4gICAgdGhpcy5jaXJjbGVDb2xvciA9IHRoaXMuY29sb3JzW3JhbmRvbUluZGV4XTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlSW5pdGl0YWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubmFtZSkge1xyXG4gICAgICBsZXQgaW5pdGlhbHMgPSAnJztcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5hbWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdChpKSA9PT0gJyAnKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubmFtZS5jaGFyQXQoaSkgPT09IHRoaXMubmFtZS5jaGFyQXQoaSkudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgaW5pdGlhbHMgKz0gdGhpcy5uYW1lLmNoYXJBdChpKTtcclxuICAgICAgICAgIGlmIChpbml0aWFscy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5pdGlhbHMgPSBpbml0aWFscztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBbbmdDbGFzc109XCJsYXJnZSA/ICdhdmF0YXItY29udGFpbmVyLWxhcmdlJzogJ2F2YXRhci1jb250YWluZXInXCI+XHJcbiAgICA8c3BhbiBbbmdDbGFzc109XCJsYXJnZSA/ICdhdmF0YXItdGV4dC1sYXJnZSc6ICdhdmF0YXItdGV4dCdcIj57eyBpbml0aWFscyB9fTwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class BreadcrumbItem {
|
|
2
|
+
constructor(title, url) {
|
|
3
|
+
this.title = title;
|
|
4
|
+
this.url = url;
|
|
5
|
+
this.level = 0;
|
|
6
|
+
}
|
|
7
|
+
get urlSegments() {
|
|
8
|
+
if (this.url) {
|
|
9
|
+
return this.url?.split('/').filter(x => x !== '');
|
|
10
|
+
}
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFlBQW1CLEtBQWMsRUFBUyxHQUFZO1FBQW5DLFVBQUssR0FBTCxLQUFLLENBQVM7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFTO1FBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFJRCxJQUFXLFdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQnJlYWRjcnVtYkl0ZW0ge1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHRpdGxlPzogc3RyaW5nLCBwdWJsaWMgdXJsPzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5sZXZlbCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxldmVsOiBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGdldCB1cmxTZWdtZW50cygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVybD8uc3BsaXQoJy8nKS5maWx0ZXIoeCA9PiB4ICE9PSAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { BreadcrumbItem } from './breadcrumb-item';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/breadcrumb.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/router";
|
|
7
|
+
export class BreadcrumbComponent {
|
|
8
|
+
constructor(_breadcrumbService) {
|
|
9
|
+
this._breadcrumbService = _breadcrumbService;
|
|
10
|
+
this.breadcrumb = [];
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this._breadcrumbService
|
|
14
|
+
.breadcrumb
|
|
15
|
+
.subscribe((breadcrumb) => {
|
|
16
|
+
this.breadcrumb = [...breadcrumb, new BreadcrumbItem('', '')];
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1.BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: BreadcrumbComponent, selector: "lib-breadcrumb", ngImport: i0, template: "<nav class=\"bg-white border-b border-gray-200 flex\"\r\n aria-label=\"Breadcrumb\">\r\n <ol role=\"list\"\r\n class=\"max-w-screen-xl w-full mx-auto px-4 flex space-x-4 sm:px-6 lg:px-8\">\r\n <li class=\"flex\"\r\n *ngFor=\"let item of breadcrumb; let i = index\">\r\n <div class=\"flex items-center\">\r\n <ng-container *ngTemplateOutlet=\"i === 0 ? homeTemplate : linkTemplate; context: { value: item }\"></ng-container>\r\n </div>\r\n </li>\r\n </ol>\r\n</nav>\r\n<ng-template let-value=\"value\"\r\n #homeTemplate>\r\n <a [routerLink]=\"value.urlSegments\"\r\n [title]=\"value.title\"\r\n class=\"text-gray-400 hover:text-gray-500\">\r\n <svg class=\"flex-shrink-0 h-5 w-5\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path d=\"M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z\" />\r\n </svg>\r\n <span class=\"sr-only\">{{ value.title }}</span>\r\n </a>\r\n</ng-template>\r\n<ng-template let-value=\"value\"\r\n #linkTemplate>\r\n <svg class=\"flex-shrink-0 w-6 h-full text-gray-200\"\r\n viewBox=\"0 0 24 44\"\r\n preserveAspectRatio=\"none\"\r\n fill=\"currentColor\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\">\r\n <path d=\"M.293 0l22 22-22 22h1.414l22-22-22-22H.293z\" />\r\n </svg>\r\n <a [routerLink]=\"value.urlSegments\"\r\n class=\"ml-4 text-sm font-medium text-gray-500 hover:text-gray-700\">\r\n {{ value.title }}\r\n </a>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }] });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'lib-breadcrumb', template: "<nav class=\"bg-white border-b border-gray-200 flex\"\r\n aria-label=\"Breadcrumb\">\r\n <ol role=\"list\"\r\n class=\"max-w-screen-xl w-full mx-auto px-4 flex space-x-4 sm:px-6 lg:px-8\">\r\n <li class=\"flex\"\r\n *ngFor=\"let item of breadcrumb; let i = index\">\r\n <div class=\"flex items-center\">\r\n <ng-container *ngTemplateOutlet=\"i === 0 ? homeTemplate : linkTemplate; context: { value: item }\"></ng-container>\r\n </div>\r\n </li>\r\n </ol>\r\n</nav>\r\n<ng-template let-value=\"value\"\r\n #homeTemplate>\r\n <a [routerLink]=\"value.urlSegments\"\r\n [title]=\"value.title\"\r\n class=\"text-gray-400 hover:text-gray-500\">\r\n <svg class=\"flex-shrink-0 h-5 w-5\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path d=\"M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z\" />\r\n </svg>\r\n <span class=\"sr-only\">{{ value.title }}</span>\r\n </a>\r\n</ng-template>\r\n<ng-template let-value=\"value\"\r\n #linkTemplate>\r\n <svg class=\"flex-shrink-0 w-6 h-full text-gray-200\"\r\n viewBox=\"0 0 24 44\"\r\n preserveAspectRatio=\"none\"\r\n fill=\"currentColor\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\">\r\n <path d=\"M.293 0l22 22-22 22h1.414l22-22-22-22H.293z\" />\r\n </svg>\r\n <a [routerLink]=\"value.urlSegments\"\r\n class=\"ml-4 text-sm font-medium text-gray-500 hover:text-gray-700\">\r\n {{ value.title }}\r\n </a>\r\n</ng-template>" }]
|
|
25
|
+
}], ctorParameters: function () { return [{ type: i1.BreadcrumbService }]; } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBTW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFDNUIsWUFDWSxrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQVcxQyxlQUFVLEdBQXFCLEVBQUUsQ0FBQztJQVZyQyxDQUFDO0lBRUUsUUFBUTtRQUNYLElBQUksQ0FBQyxrQkFBa0I7YUFDbEIsVUFBVTthQUNWLFNBQVMsQ0FBQyxDQUFDLFVBQTRCLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUUsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOztnSEFYUSxtQkFBbUI7b0dBQW5CLG1CQUFtQixzRENUaEMsNHVEQXlDYzsyRkRoQ0QsbUJBQW1CO2tCQUovQixTQUFTOytCQUNJLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JyZWFkY3J1bWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1icmVhZGNydW1iJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9icmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5icmVhZGNydW1iXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJJdGVtW10pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IFsuLi5icmVhZGNydW1iLCBuZXcgQnJlYWRjcnVtYkl0ZW0oJycsICcnKV07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbVtdID0gW107XHJcbn1cclxuIiwiPG5hdiBjbGFzcz1cImJnLXdoaXRlIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBmbGV4XCJcclxuICAgICBhcmlhLWxhYmVsPVwiQnJlYWRjcnVtYlwiPlxyXG4gIDxvbCByb2xlPVwibGlzdFwiXHJcbiAgICAgIGNsYXNzPVwibWF4LXctc2NyZWVuLXhsIHctZnVsbCBteC1hdXRvIHB4LTQgZmxleCBzcGFjZS14LTQgc206cHgtNiBsZzpweC04XCI+XHJcbiAgICA8bGkgY2xhc3M9XCJmbGV4XCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBicmVhZGNydW1iOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpID09PSAwID8gaG9tZVRlbXBsYXRlIDogbGlua1RlbXBsYXRlOyBjb250ZXh0OiB7IHZhbHVlOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2xpPlxyXG4gIDwvb2w+XHJcbjwvbmF2PlxyXG48bmctdGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgI2hvbWVUZW1wbGF0ZT5cclxuICA8YSBbcm91dGVyTGlua109XCJ2YWx1ZS51cmxTZWdtZW50c1wiXHJcbiAgICAgW3RpdGxlXT1cInZhbHVlLnRpdGxlXCJcclxuICAgICBjbGFzcz1cInRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1ncmF5LTUwMFwiPlxyXG4gICAgPHN2ZyBjbGFzcz1cImZsZXgtc2hyaW5rLTAgaC01IHctNVwiXHJcbiAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICA8cGF0aCBkPVwiTTEwLjcwNyAyLjI5M2ExIDEgMCAwMC0xLjQxNCAwbC03IDdhMSAxIDAgMDAxLjQxNCAxLjQxNEw0IDEwLjQxNFYxN2ExIDEgMCAwMDEgMWgyYTEgMSAwIDAwMS0xdi0yYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2MmExIDEgMCAwMDEgMWgyYTEgMSAwIDAwMS0xdi02LjU4NmwuMjkzLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0bC03LTd6XCIgLz5cclxuICAgIDwvc3ZnPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgdmFsdWUudGl0bGUgfX08L3NwYW4+XHJcbiAgPC9hPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgI2xpbmtUZW1wbGF0ZT5cclxuICA8c3ZnIGNsYXNzPVwiZmxleC1zaHJpbmstMCB3LTYgaC1mdWxsIHRleHQtZ3JheS0yMDBcIlxyXG4gICAgICAgdmlld0JveD1cIjAgMCAyNCA0NFwiXHJcbiAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXHJcbiAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8cGF0aCBkPVwiTS4yOTMgMGwyMiAyMi0yMiAyMmgxLjQxNGwyMi0yMi0yMi0yMkguMjkzelwiIC8+XHJcbiAgPC9zdmc+XHJcbiAgPGEgW3JvdXRlckxpbmtdPVwidmFsdWUudXJsU2VnbWVudHNcIlxyXG4gICAgIGNsYXNzPVwibWwtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMFwiPlxyXG4gICAge3sgdmFsdWUudGl0bGUgfX1cclxuICA8L2E+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class CollapsiblePanelComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.title = null;
|
|
7
|
+
this.visible = false;
|
|
8
|
+
}
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
CollapsiblePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: CollapsiblePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
CollapsiblePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: CollapsiblePanelComponent, selector: "lib-collapsible-panel", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"collapsible-panel-container\">\r\n <div class=\"collapsible-panel-container-shadow\">\r\n <div class=\"collapsible-panel-container-inner\">\r\n <button type=\"button\" class=\"collapsible-panel-button\" (click)=\"visible = !visible\">\r\n <div class=\"collapsible-panel-button-content-container\">\r\n <span>{{ title }} </span>\r\n <span class=\"ico-plus\"></span>\r\n </div>\r\n </button>\r\n <div class=\"collapsible-panel-content-container\" *ngIf=\"visible\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: CollapsiblePanelComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'lib-collapsible-panel', template: "<div class=\"collapsible-panel-container\">\r\n <div class=\"collapsible-panel-container-shadow\">\r\n <div class=\"collapsible-panel-container-inner\">\r\n <button type=\"button\" class=\"collapsible-panel-button\" (click)=\"visible = !visible\">\r\n <div class=\"collapsible-panel-button-content-container\">\r\n <span>{{ title }} </span>\r\n <span class=\"ico-plus\"></span>\r\n </div>\r\n </button>\r\n <div class=\"collapsible-panel-content-container\" *ngIf=\"visible\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
17
|
+
}], ctorParameters: function () { return []; }, propDecorators: { title: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}] } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NvbGxhcHNpYmxlLXBhbmVsL2NvbGxhcHNpYmxlLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb2xsYXBzaWJsZS1wYW5lbC9jb2xsYXBzaWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBTXpELE1BQU0sT0FBTyx5QkFBeUI7SUFJcEM7UUFIUyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBRVAsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7c0hBUFUseUJBQXlCOzBHQUF6Qix5QkFBeUIseUZDTnRDLDhtQkFlQTsyRkRUYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0UsdUJBQXVCOzBFQUl4QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvbGxhcHNpYmxlLXBhbmVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUtcGFuZWwuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZVBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHZpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sbGFwc2libGUtcGFuZWwtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlLXBhbmVsLWNvbnRhaW5lci1zaGFkb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZS1wYW5lbC1jb250YWluZXItaW5uZXJcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjb2xsYXBzaWJsZS1wYW5lbC1idXR0b25cIiAoY2xpY2spPVwidmlzaWJsZSA9ICF2aXNpYmxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlLXBhbmVsLWJ1dHRvbi1jb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgdGl0bGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY28tcGx1c1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZS1wYW5lbC1jb250ZW50LWNvbnRhaW5lclwiICpuZ0lmPVwidmlzaWJsZVwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|