@arsedizioni/ars-utils 18.1.74 → 18.1.76

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.
Files changed (113) hide show
  1. package/clipper.common/common/common.module.d.ts +1 -2
  2. package/clipper.common/common/definitions.d.ts +317 -0
  3. package/clipper.common/common/interceptors/auth.interceptor.d.ts +2 -5
  4. package/clipper.common/common/messages.d.ts +4 -0
  5. package/clipper.common/common/services/clipper.service.d.ts +12 -36
  6. package/clipper.ui/{ui/document/documents.d.ts → documents.d.ts} +2 -6
  7. package/clipper.ui/public_api.d.ts +6 -5
  8. package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts +30 -143
  9. package/clipper.ui/ui/clipper.scss +270 -106
  10. package/clipper.ui/ui/document/document.component.d.ts +64 -118
  11. package/clipper.ui/ui/document-index/document-index.component.d.ts +34 -0
  12. package/clipper.ui/ui/document-manager/document-manager.d.ts +126 -0
  13. package/clipper.ui/ui/document-menu/document-menu.component.d.ts +28 -0
  14. package/clipper.ui/ui/references/references.component.d.ts +39 -73
  15. package/clipper.ui/ui/search-calendar/search-calendar.component.d.ts +40 -0
  16. package/clipper.ui/ui/search-dialog/search-dialog.component.d.ts +37 -40
  17. package/clipper.ui/ui/search-facets/search-facets.component.d.ts +22 -70
  18. package/clipper.ui/ui/search-free-text-help/search-free-text-help.component.d.ts +0 -1
  19. package/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.d.ts +8 -12
  20. package/clipper.ui/ui/search-result-item/search-result-item.component.d.ts +6 -4
  21. package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts +147 -0
  22. package/esm2022/clipper.common/common/common.module.mjs +2 -3
  23. package/esm2022/clipper.common/common/definitions.mjs +1536 -0
  24. package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +15 -15
  25. package/esm2022/clipper.common/common/messages.mjs +6 -1
  26. package/esm2022/clipper.common/common/services/clipper.service.mjs +65 -65
  27. package/esm2022/clipper.ui/documents.mjs +51 -0
  28. package/esm2022/clipper.ui/public_api.mjs +7 -6
  29. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +320 -785
  30. package/esm2022/clipper.ui/ui/document/document.component.mjs +213 -320
  31. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +121 -0
  32. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +431 -0
  33. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +56 -0
  34. package/esm2022/clipper.ui/ui/references/references.component.mjs +244 -438
  35. package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +116 -0
  36. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +216 -205
  37. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +157 -209
  38. package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +7 -8
  39. package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +22 -23
  40. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +12 -10
  41. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +462 -0
  42. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +25 -28
  43. package/esm2022/support.common/common/definitions.mjs +21 -0
  44. package/esm2022/support.common/common/services/support.service.mjs +9 -7
  45. package/esm2022/support.common/public_api.mjs +2 -2
  46. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +3 -3
  47. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +4 -5
  48. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +3 -3
  49. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +3 -3
  50. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +3 -3
  51. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +3 -3
  52. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +3 -3
  53. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +3 -3
  54. package/esm2022/ui.application/public_api.mjs +4 -1
  55. package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +163 -0
  56. package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +47 -0
  57. package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +239 -0
  58. package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +23 -24
  59. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +3 -3
  60. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +3 -3
  61. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +3 -3
  62. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +3 -3
  63. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +3 -3
  64. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +3 -3
  65. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +3 -3
  66. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +3 -3
  67. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +3 -3
  68. package/esm2022/ui.application/ui/messages.mjs +3 -3
  69. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +1608 -1507
  70. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  71. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +2283 -2407
  72. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  73. package/fesm2022/arsedizioni-ars-utils-help.mjs +25 -28
  74. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  75. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +8 -6
  76. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  77. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +5 -6
  78. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  79. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +450 -47
  80. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  81. package/fesm2022/arsedizioni-ars-utils-ui.mjs +12 -12
  82. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  83. package/help/components/help-viewer/help-viewer.component.d.ts +6 -10
  84. package/package.json +13 -13
  85. package/styles/ui.scss +140 -0
  86. package/support.common/common/services/support.service.d.ts +2 -2
  87. package/support.common/public_api.d.ts +1 -1
  88. package/ui.application/public_api.d.ts +3 -0
  89. package/ui.application/ui/components/button-selector/button-selector.component.d.ts +49 -0
  90. package/ui.application/ui/components/button-toggle/button-toggle.component.d.ts +26 -0
  91. package/ui.application/ui/components/chips-selector/chips-selector.component.d.ts +70 -0
  92. package/ui.application/ui/components/file-preview/file-preview.component.d.ts +4 -8
  93. package/ui.application/ui/messages.d.ts +2 -2
  94. package/clipper.common/common/clipper.d.ts +0 -119
  95. package/clipper.common/common/search.d.ts +0 -49
  96. package/clipper.ui/ui/document/base/document-base.component.d.ts +0 -38
  97. package/clipper.ui/ui/document/document-index/document-index.component.d.ts +0 -38
  98. package/clipper.ui/ui/document/document-menu/document-menu.component.d.ts +0 -30
  99. package/clipper.ui/ui/last-15-days/last-15-days.component.d.ts +0 -41
  100. package/esm2022/clipper.common/common/clipper.mjs +0 -1371
  101. package/esm2022/clipper.common/common/search.mjs +0 -69
  102. package/esm2022/clipper.ui/ui/document/base/document-base.component.mjs +0 -194
  103. package/esm2022/clipper.ui/ui/document/document-index/document-index.component.mjs +0 -121
  104. package/esm2022/clipper.ui/ui/document/document-menu/document-menu.component.mjs +0 -88
  105. package/esm2022/clipper.ui/ui/document/documents.mjs +0 -49
  106. package/esm2022/clipper.ui/ui/last-15-days/last-15-days.component.mjs +0 -107
  107. package/esm2022/help/components/help-search-query-builder/help-search-query-builder.component.mjs +0 -114
  108. package/esm2022/support.common/common/support.mjs +0 -21
  109. package/esm2022/ui.oauth/ui/components/login/loginOAuth.component.mjs +0 -198
  110. package/help/components/help-search-query-builder/help-search-query-builder.component.d.ts +0 -29
  111. package/help/help.scss +0 -72
  112. package/ui.oauth/ui/components/login/loginOAuth.component.d.ts +0 -38
  113. /package/support.common/common/{support.d.ts → definitions.d.ts} +0 -0
@@ -1,198 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalService } from '@azure/msal-angular';
3
- import { BrowserCacheLocation, EventType, InteractionType, PublicClientApplication } from '@azure/msal-browser';
4
- import { Subject, filter, takeUntil } from 'rxjs';
5
- import { MatButtonModule } from '@angular/material/button';
6
- import { EnvironmentService } from '@arsedizioni/ars-utils/core';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@azure/msal-angular";
9
- import * as i2 from "@angular/material/button";
10
- export function MSALInstanceFactory(environment) {
11
- return new PublicClientApplication({
12
- auth: {
13
- clientId: "6b2c080f-6ab0-4511-a9df-0bce69db5833",
14
- authority: "https://login.microsoftonline.com/common",
15
- redirectUri: environment.appUri, // This is your redir
16
- },
17
- cache: {
18
- cacheLocation: BrowserCacheLocation.LocalStorage
19
- }
20
- });
21
- }
22
- export function MSALInterceptorConfigFactory(environment) {
23
- return {
24
- interactionType: InteractionType.Popup,
25
- protectedResourceMap: new Map([
26
- [environment.appServiceUri + '/login', ["api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope"]],
27
- ["https://graph.microsoft.com/v2.0/me", ["user.read"]],
28
- ])
29
- };
30
- }
31
- export function MSALGuardConfigFactory() {
32
- return {
33
- interactionType: InteractionType.Popup,
34
- authRequest: {
35
- scopes: ["user.read"]
36
- }
37
- };
38
- }
39
- export class LoginOAuthComponent {
40
- constructor($broadcastMSAL, $loginMSAL, ngZone) {
41
- this.$broadcastMSAL = $broadcastMSAL;
42
- this.$loginMSAL = $loginMSAL;
43
- this.ngZone = ngZone;
44
- this.__d$ = new Subject();
45
- this.success = new EventEmitter();
46
- this.appName = null;
47
- this.autoInitialize = false;
48
- this.OAUTHReady = false;
49
- this.OAUTHMicrosoftReady = false;
50
- this.OAUTHGoogleReady = false;
51
- }
52
- ngOnInit() {
53
- if (this.autoInitialize) {
54
- this.initialize();
55
- }
56
- this.$broadcastMSAL.msalSubject$
57
- .pipe(filter((msg) => msg.eventType === EventType.ACQUIRE_TOKEN_SUCCESS), takeUntil(this.__d$))
58
- .subscribe((r) => {
59
- if (r) {
60
- this.success.emit({ type: 1, token: r.payload.accessToken });
61
- }
62
- });
63
- }
64
- ngOnDestroy() {
65
- this.__d$.next();
66
- this.__d$.complete();
67
- }
68
- /**
69
- * Initialize open authentication
70
- */
71
- initialize() {
72
- if (this.OAUTHReady) {
73
- return; // Already done
74
- }
75
- this.OAUTHReady = true;
76
- // Load MS stack
77
- this.$loginMSAL.initialize()
78
- .pipe(takeUntil(this.__d$))
79
- .subscribe(() => {
80
- this.OAUTHMicrosoftReady = true;
81
- });
82
- // Load google maps script after view init
83
- const DSLScript = document.createElement('script');
84
- DSLScript.src = 'https://accounts.google.com/gsi/client';
85
- DSLScript.type = 'text/javascript';
86
- document.body.appendChild(DSLScript);
87
- document.body.removeChild(DSLScript);
88
- // @ts-ignore
89
- window.onGoogleLibraryLoad = () => {
90
- // initialize google account
91
- // @ts-ignore
92
- google.accounts.id.initialize({
93
- client_id: '71204983077-ag31h3bgt2udcbfr9nn84r9rni2k3snp.apps.googleusercontent.com',
94
- cancel_on_tap_outside: true,
95
- auto_select: false,
96
- callback: (r) => {
97
- this.ngZone.run(() => {
98
- this.success.emit({ type: 2, token: r.credential });
99
- });
100
- }
101
- });
102
- googleButtonWrapper = createFakeGoogleWrapper();
103
- this.OAUTHGoogleReady = true;
104
- };
105
- }
106
- /**
107
- * Perform login using MSAL
108
- */
109
- loginMSAL() {
110
- this.$loginMSAL.loginPopup()
111
- .subscribe({
112
- next: (r) => {
113
- this.$loginMSAL.instance.setActiveAccount(r.account);
114
- this.$loginMSAL.acquireTokenSilent({
115
- scopes: [
116
- "api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope"
117
- ],
118
- account: r.account
119
- });
120
- }
121
- });
122
- }
123
- /**
124
- * Perform login using Google
125
- */
126
- loginGoogle() {
127
- // Use wrapper click to prevent Illegal invocation exception
128
- googleButtonWrapper.click();
129
- }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LoginOAuthComponent, deps: [{ token: i1.MsalBroadcastService }, { token: i1.MsalService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: LoginOAuthComponent, isStandalone: true, selector: "login-oauth", inputs: { appName: "appName", autoInitialize: "autoInitialize" }, outputs: { success: "success" }, providers: [{
132
- provide: MSAL_INSTANCE,
133
- deps: [EnvironmentService],
134
- useFactory: MSALInstanceFactory
135
- },
136
- {
137
- provide: MSAL_GUARD_CONFIG,
138
- useFactory: MSALGuardConfigFactory
139
- },
140
- {
141
- provide: MSAL_INTERCEPTOR_CONFIG,
142
- deps: [EnvironmentService],
143
- useFactory: MSALInterceptorConfigFactory
144
- },
145
- MsalService,
146
- MsalBroadcastService], ngImport: i0, template: "<div class=\"login-oauth\">\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{appName}} e dei servizi ad esso connessi.</p>\r\n </div>\r\n <div class=\"button\">\r\n <button mat-flat-button color=\"primary\" (click)=\"loginMSAL()\" [attr.aria-label]=\"'Effettua accesso'\"\r\n [disabled]=\"!OAUTHMicrosoftReady\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n <div class=\"button\">\r\n <button mat-flat-button color=\"primary\" (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n [attr.aria-label]=\"'Effettua accesso'\" [disabled]=\"!OAUTHGoogleReady\">\r\n Accedi con Google</button>\r\n </div>\r\n</div>", styles: [".login-oauth{text-align:center}.login-oauth .button{padding:10px 0;width:100%}.login-oauth .message{padding-bottom:10px;font-size:small}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LoginOAuthComponent, decorators: [{
149
- type: Component,
150
- args: [{ selector: 'login-oauth', standalone: true, providers: [{
151
- provide: MSAL_INSTANCE,
152
- deps: [EnvironmentService],
153
- useFactory: MSALInstanceFactory
154
- },
155
- {
156
- provide: MSAL_GUARD_CONFIG,
157
- useFactory: MSALGuardConfigFactory
158
- },
159
- {
160
- provide: MSAL_INTERCEPTOR_CONFIG,
161
- deps: [EnvironmentService],
162
- useFactory: MSALInterceptorConfigFactory
163
- },
164
- MsalService,
165
- MsalBroadcastService], imports: [
166
- MatButtonModule
167
- ], template: "<div class=\"login-oauth\">\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{appName}} e dei servizi ad esso connessi.</p>\r\n </div>\r\n <div class=\"button\">\r\n <button mat-flat-button color=\"primary\" (click)=\"loginMSAL()\" [attr.aria-label]=\"'Effettua accesso'\"\r\n [disabled]=\"!OAUTHMicrosoftReady\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n <div class=\"button\">\r\n <button mat-flat-button color=\"primary\" (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n [attr.aria-label]=\"'Effettua accesso'\" [disabled]=\"!OAUTHGoogleReady\">\r\n Accedi con Google</button>\r\n </div>\r\n</div>", styles: [".login-oauth{text-align:center}.login-oauth .button{padding:10px 0;width:100%}.login-oauth .message{padding-bottom:10px;font-size:small}\n"] }]
168
- }], ctorParameters: () => [{ type: i1.MsalBroadcastService }, { type: i1.MsalService }, { type: i0.NgZone }], propDecorators: { success: [{
169
- type: Output
170
- }], appName: [{
171
- type: Input
172
- }], autoInitialize: [{
173
- type: Input
174
- }] } });
175
- const createFakeGoogleWrapper = () => {
176
- const googleLoginWrapper = document.createElement("div");
177
- // Or you can simple hide it in CSS rule for custom-google-button
178
- googleLoginWrapper.style.display = "none";
179
- googleLoginWrapper.classList.add("custom-google-button");
180
- // Add the wrapper to body
181
- document.body.appendChild(googleLoginWrapper);
182
- // Use GSI javascript api to render the button inside our wrapper
183
- // You can ignore the properties because this button will not appear
184
- // @ts-ignore
185
- window.google.accounts.id.renderButton(googleLoginWrapper, {
186
- type: "icon",
187
- width: "200",
188
- });
189
- const googleLoginWrapperButton = googleLoginWrapper.querySelector("div[role=button]");
190
- return {
191
- click: () => {
192
- // @ts-ignore
193
- googleLoginWrapperButton.click();
194
- },
195
- };
196
- };
197
- var googleButtonWrapper = null;
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW5PQXV0aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkub2F1dGgvdWkvY29tcG9uZW50cy9sb2dpbi9sb2dpbk9BdXRoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5vYXV0aC91aS9jb21wb25lbnRzL2xvZ2luL2xvZ2luT0F1dGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE2QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBd0QsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekwsT0FBTyxFQUF3QixvQkFBb0IsRUFBZ0IsU0FBUyxFQUE0QixlQUFlLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5SyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRWpFLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxXQUErQjtJQUNqRSxPQUFPLElBQUksdUJBQXVCLENBQUM7UUFDakMsSUFBSSxFQUFFO1lBQ0osUUFBUSxFQUFFLHNDQUFzQztZQUNoRCxTQUFTLEVBQUUsMENBQTBDO1lBQ3JELFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLHFCQUFxQjtTQUN2RDtRQUNELEtBQUssRUFBRTtZQUNMLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxZQUFZ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LEdBQUcsR0FBRyxFQUFFO0lBQ25DLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxpRUFBaUU7SUFDakUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDMUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXpELDBCQUEwQjtJQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRTlDLGlFQUFpRTtJQUNqRSxvRUFBb0U7SUFDcEUsYUFBYTtJQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUU7UUFDekQsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQztJQUVILE1BQU0sd0JBQXdCLEdBQzVCLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXZELE9BQU87UUFDTCxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ1YsYUFBYTtZQUNiLHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsSUFBSSxtQkFBbUIsR0FBUSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNU0FMX0dVQVJEX0NPTkZJRywgTVNBTF9JTlNUQU5DRSwgTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcsIE1zYWxCcm9hZGNhc3RTZXJ2aWNlLCBNc2FsR3VhcmRDb25maWd1cmF0aW9uLCBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uLCBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlc3VsdCwgQnJvd3NlckNhY2hlTG9jYXRpb24sIEV2ZW50TWVzc2FnZSwgRXZlbnRUeXBlLCBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sIEludGVyYWN0aW9uVHlwZSwgUHVibGljQ2xpZW50QXBwbGljYXRpb24gfSBmcm9tICdAYXp1cmUvbXNhbC1icm93c2VyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTG9naW5PQXV0aFJlc3VsdCB9IGZyb20gJy4uLy4uL2RlZmluaXRpb25zJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNU0FMSW5zdGFuY2VGYWN0b3J5KGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2UpOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24ge1xyXG4gIHJldHVybiBuZXcgUHVibGljQ2xpZW50QXBwbGljYXRpb24oe1xyXG4gICAgYXV0aDoge1xyXG4gICAgICBjbGllbnRJZDogXCI2YjJjMDgwZi02YWIwLTQ1MTEtYTlkZi0wYmNlNjlkYjU4MzNcIixcclxuICAgICAgYXV0aG9yaXR5OiBcImh0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS9jb21tb25cIixcclxuICAgICAgcmVkaXJlY3RVcmk6IGVudmlyb25tZW50LmFwcFVyaSwgLy8gVGhpcyBpcyB5b3VyIHJlZGlyXHJcbiAgICB9LFxyXG4gICAgY2FjaGU6IHtcclxuICAgICAgY2FjaGVMb2NhdGlvbjogQnJvd3NlckNhY2hlTG9jYXRpb24uTG9jYWxTdG9yYWdlXHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNU0FMSW50ZXJjZXB0b3JDb25maWdGYWN0b3J5KGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2UpOiBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uIHtcclxuICBcclxuICByZXR1cm4ge1xyXG4gICAgaW50ZXJhY3Rpb25UeXBlOiBJbnRlcmFjdGlvblR5cGUuUG9wdXAsXHJcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZU1hcDogbmV3IE1hcChbXHJcbiAgICAgIFtlbnZpcm9ubWVudC5hcHBTZXJ2aWNlVXJpICsgJy9sb2dpbicsIFtcImFwaTovLzZiMmMwODBmLTZhYjAtNDUxMS1hOWRmLTBiY2U2OWRiNTgzMy9Bbmd1bGFyU1BBQXV0aFNjb3BlXCJdXSxcclxuICAgICAgW1wiaHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tL3YyLjAvbWVcIiwgW1widXNlci5yZWFkXCJdXSxcclxuICAgIF0pXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1TQUxHdWFyZENvbmZpZ0ZhY3RvcnkoKTogTXNhbEd1YXJkQ29uZmlndXJhdGlvbiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlBvcHVwLFxyXG4gICAgYXV0aFJlcXVlc3Q6IHtcclxuICAgICAgc2NvcGVzOiBbXCJ1c2VyLnJlYWRcIl1cclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xvZ2luLW9hdXRoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW5PQXV0aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW5PQXV0aC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTVNBTF9JTlNUQU5DRSxcclxuICAgIGRlcHM6W0Vudmlyb25tZW50U2VydmljZV0sXHJcbiAgICB1c2VGYWN0b3J5OiBNU0FMSW5zdGFuY2VGYWN0b3J5XHJcbiAgfSxcclxuICB7XHJcbiAgICBwcm92aWRlOiBNU0FMX0dVQVJEX0NPTkZJRyxcclxuICAgIHVzZUZhY3Rvcnk6IE1TQUxHdWFyZENvbmZpZ0ZhY3RvcnlcclxuICB9LFxyXG4gIHtcclxuICAgIHByb3ZpZGU6IE1TQUxfSU5URVJDRVBUT1JfQ09ORklHLFxyXG4gICAgZGVwczpbRW52aXJvbm1lbnRTZXJ2aWNlXSxcclxuICAgIHVzZUZhY3Rvcnk6IE1TQUxJbnRlcmNlcHRvckNvbmZpZ0ZhY3RvcnlcclxuICB9LFxyXG4gICAgTXNhbFNlcnZpY2UsXHJcbiAgICBNc2FsQnJvYWRjYXN0U2VydmljZV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0QnV0dG9uTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5PQXV0aENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9fZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8TG9naW5PQXV0aFJlc3VsdD4oKTtcclxuXHJcbiAgQElucHV0KCkgYXBwTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgYXV0b0luaXRpYWxpemU6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XHJcblxyXG5cclxuICBPQVVUSFJlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgT0FVVEhNaWNyb3NvZnRSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIE9BVVRIR29vZ2xlUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSAkYnJvYWRjYXN0TVNBTDogTXNhbEJyb2FkY2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlICRsb2dpbk1TQUw6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5hdXRvSW5pdGlhbGl6ZSkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRicm9hZGNhc3RNU0FMLm1zYWxTdWJqZWN0JFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoKG1zZzogRXZlbnRNZXNzYWdlKSA9PiBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuQUNRVUlSRV9UT0tFTl9TVUNDRVNTKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fX2QkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4geyAgICAgICAgXHJcbiAgICAgICAgaWYgKHIpIHtcclxuICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHsgdHlwZTogMSwgdG9rZW46IHIucGF5bG9hZC5hY2Nlc3NUb2tlbiB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fX2QkLm5leHQoKTtcclxuICAgIHRoaXMuX19kJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBvcGVuIGF1dGhlbnRpY2F0aW9uICAgXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZSgpIHtcclxuICAgIGlmICh0aGlzLk9BVVRIUmVhZHkpIHtcclxuICAgICAgcmV0dXJuOyAvLyBBbHJlYWR5IGRvbmVcclxuICAgIH1cclxuICAgIHRoaXMuT0FVVEhSZWFkeSA9IHRydWU7XHJcblxyXG4gICAgLy8gTG9hZCBNUyBzdGFja1xyXG4gICAgdGhpcy4kbG9naW5NU0FMLmluaXRpYWxpemUoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fX2QkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5PQVVUSE1pY3Jvc29mdFJlYWR5ID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gTG9hZCBnb29nbGUgbWFwcyBzY3JpcHQgYWZ0ZXIgdmlldyBpbml0XHJcbiAgICBjb25zdCBEU0xTY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgIERTTFNjcmlwdC5zcmMgPSAnaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL2dzaS9jbGllbnQnO1xyXG4gICAgRFNMU2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoRFNMU2NyaXB0KTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoRFNMU2NyaXB0KTtcclxuXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB3aW5kb3cub25Hb29nbGVMaWJyYXJ5TG9hZCA9ICgpID0+IHtcclxuICAgICAgLy8gaW5pdGlhbGl6ZSBnb29nbGUgYWNjb3VudFxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGdvb2dsZS5hY2NvdW50cy5pZC5pbml0aWFsaXplKHtcclxuICAgICAgICBjbGllbnRfaWQ6ICc3MTIwNDk4MzA3Ny1hZzMxaDNiZ3QydWRjYmZyOW5uODRyOXJuaTJrM3NucC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbScsXHJcbiAgICAgICAgY2FuY2VsX29uX3RhcF9vdXRzaWRlOiB0cnVlLFxyXG4gICAgICAgIGF1dG9fc2VsZWN0OiBmYWxzZSxcclxuICAgICAgICBjYWxsYmFjazogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQoeyB0eXBlOiAyLCB0b2tlbjogci5jcmVkZW50aWFsIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGdvb2dsZUJ1dHRvbldyYXBwZXIgPSBjcmVhdGVGYWtlR29vZ2xlV3JhcHBlcigpO1xyXG5cclxuICAgICAgdGhpcy5PQVVUSEdvb2dsZVJlYWR5ID0gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBQZXJmb3JtIGxvZ2luIHVzaW5nIE1TQUxcclxuICAqL1xyXG4gIGxvZ2luTVNBTCgpIHtcclxuICAgIHRoaXMuJGxvZ2luTVNBTC5sb2dpblBvcHVwKClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHI6IEF1dGhlbnRpY2F0aW9uUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLiRsb2dpbk1TQUwuaW5zdGFuY2Uuc2V0QWN0aXZlQWNjb3VudChyLmFjY291bnQpO1xyXG4gICAgICAgICAgdGhpcy4kbG9naW5NU0FMLmFjcXVpcmVUb2tlblNpbGVudCh7XHJcbiAgICAgICAgICAgIHNjb3BlczogW1xyXG4gICAgICAgICAgICAgIFwiYXBpOi8vNmIyYzA4MGYtNmFiMC00NTExLWE5ZGYtMGJjZTY5ZGI1ODMzL0FuZ3VsYXJTUEFBdXRoU2NvcGVcIlxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBhY2NvdW50OiByLmFjY291bnRcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4qIFBlcmZvcm0gbG9naW4gdXNpbmcgR29vZ2xlXHJcbiovXHJcbiAgbG9naW5Hb29nbGUoKSB7XHJcbiAgICAvLyBVc2Ugd3JhcHBlciBjbGljayB0byBwcmV2ZW50IElsbGVnYWwgaW52b2NhdGlvbiBleGNlcHRpb25cclxuICAgIGdvb2dsZUJ1dHRvbldyYXBwZXIuY2xpY2soKTtcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IGNyZWF0ZUZha2VHb29nbGVXcmFwcGVyID0gKCkgPT4ge1xyXG4gIGNvbnN0IGdvb2dsZUxvZ2luV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgLy8gT3IgeW91IGNhbiBzaW1wbGUgaGlkZSBpdCBpbiBDU1MgcnVsZSBmb3IgY3VzdG9tLWdvb2dsZS1idXR0b25cclxuICBnb29nbGVMb2dpbldyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIGdvb2dsZUxvZ2luV3JhcHBlci5jbGFzc0xpc3QuYWRkKFwiY3VzdG9tLWdvb2dsZS1idXR0b25cIik7XHJcblxyXG4gIC8vIEFkZCB0aGUgd3JhcHBlciB0byBib2R5XHJcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChnb29nbGVMb2dpbldyYXBwZXIpO1xyXG5cclxuICAvLyBVc2UgR1NJIGphdmFzY3JpcHQgYXBpIHRvIHJlbmRlciB0aGUgYnV0dG9uIGluc2lkZSBvdXIgd3JhcHBlclxyXG4gIC8vIFlvdSBjYW4gaWdub3JlIHRoZSBwcm9wZXJ0aWVzIGJlY2F1c2UgdGhpcyBidXR0b24gd2lsbCBub3QgYXBwZWFyXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHdpbmRvdy5nb29nbGUuYWNjb3VudHMuaWQucmVuZGVyQnV0dG9uKGdvb2dsZUxvZ2luV3JhcHBlciwge1xyXG4gICAgdHlwZTogXCJpY29uXCIsXHJcbiAgICB3aWR0aDogXCIyMDBcIixcclxuICB9KTtcclxuXHJcbiAgY29uc3QgZ29vZ2xlTG9naW5XcmFwcGVyQnV0dG9uID1cclxuICAgIGdvb2dsZUxvZ2luV3JhcHBlci5xdWVyeVNlbGVjdG9yKFwiZGl2W3JvbGU9YnV0dG9uXVwiKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGNsaWNrOiAoKSA9PiB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgZ29vZ2xlTG9naW5XcmFwcGVyQnV0dG9uLmNsaWNrKCk7XHJcbiAgICB9LFxyXG4gIH07XHJcbn07XHJcbnZhciBnb29nbGVCdXR0b25XcmFwcGVyOiBhbnkgPSBudWxsO1xyXG5cclxuIiwiPGRpdiBjbGFzcz1cImxvZ2luLW9hdXRoXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5cclxuICAgIDxwPlF1ZXN0YSBzZXppb25lIGNvbnNlbnRlIGRpIGFjY2VkZXJlIGFsIHNlcnZpemlvIHV0aWxpenphbmRvIHVuIHByb3ZpZGVyIE9BdXRoMi48L3A+XHJcbiAgICA8cD5MYSBlbWFpbCB1dGlsaXp6YXRhIGRldmUgZXNzZXJlIGNvbGxlZ2F0YSBhZCB1biB1dGVudGUgdmFsaWRvIGRpIHt7YXBwTmFtZX19IGUgZGVpIHNlcnZpemkgYWQgZXNzbyBjb25uZXNzaS48L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImJ1dHRvblwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImxvZ2luTVNBTCgpXCIgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0VmZmV0dHVhIGFjY2Vzc28nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiFPQVVUSE1pY3Jvc29mdFJlYWR5XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgQWNjZWRpIGNvbiBNaWNyb3NvZnQ8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYnV0dG9uXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwibG9naW5Hb29nbGUoKVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRWZmZXR0dWEgYWNjZXNzbydcIiBbZGlzYWJsZWRdPVwiIU9BVVRIR29vZ2xlUmVhZHlcIj5cclxuICAgICAgQWNjZWRpIGNvbiBHb29nbGU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,29 +0,0 @@
1
- import { OnInit, EventEmitter } from '@angular/core';
2
- import { MatDialog } from '@angular/material/dialog';
3
- import { DialogService } from '@arsedizioni/ars-utils/ui';
4
- import * as i0 from "@angular/core";
5
- export interface HelpQueryParams {
6
- query: string;
7
- }
8
- export declare class HelpSearchQueryBuilderComponent implements OnInit {
9
- private $dialog;
10
- dialog: MatDialog;
11
- done: EventEmitter<HelpQueryParams>;
12
- queryAnd: string;
13
- queryOr: string;
14
- queryNot: string;
15
- queryPhrase: string;
16
- queryStart: string;
17
- constructor($dialog: DialogService, dialog: MatDialog);
18
- ngOnInit(): void;
19
- /**
20
- * Clear
21
- */
22
- clear(): void;
23
- /**
24
- * Submit search
25
- */
26
- ok(): void;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<HelpSearchQueryBuilderComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<HelpSearchQueryBuilderComponent, "ng-component", never, {}, { "done": "done"; }, never, never, true, never>;
29
- }
package/help/help.scss DELETED
@@ -1,72 +0,0 @@
1
-
2
- @import '../styles/ui.scss';
3
-
4
- a.help-link,
5
- .help-link > a {
6
- text-decoration: none;
7
- color: #2A91E0;
8
-
9
- }
10
-
11
- .help-title-2,
12
- .help-title-1 {
13
- font-weight: 600 !important;
14
- }
15
-
16
- /*
17
- * Free text search highlighted item
18
- */
19
- .help-word-hit {
20
- font-size: inherit;
21
- background-color: yellow;
22
- border: 1px solid silver;
23
- padding: 0 4px;
24
- }
25
-
26
- .help-hint {
27
- margin: 10px;
28
- padding:5px 20px;
29
- background-color: lightgoldenrodyellow;
30
- border-radius: 12px;
31
- }
32
-
33
- .help-summary {
34
- margin: 10px;
35
- padding:5px 20px;
36
- background-color: lavender;
37
- border-radius: 12px;
38
- }
39
-
40
- .help-img {
41
- display: flex;
42
- align-items: center;
43
- justify-content: center;
44
- margin: 10px;
45
- }
46
-
47
- .help-img-200,
48
- .help-img-300,
49
- .help-img-400,
50
- .help-img-500,
51
- .help-img-500,
52
- .help-img-700,
53
- .help-img-800 {
54
- width:100%
55
- }
56
-
57
- .help-img-200 { max-width: 200px; }
58
- .help-img-300 { max-width: 300px; }
59
- .help-img-400 { max-width: 400px; }
60
- .help-img-500 { max-width: 500px; }
61
- .help-img-600 { max-width: 600px; }
62
- .help-img-700 { max-width: 700px; }
63
- .help-img-800 { max-width: 800px; }
64
-
65
-
66
- .help-filter-box {
67
- background-color: #f9fbe7;
68
- border-radius: 12px;
69
- padding: 6px;
70
- display: inline-block;
71
- margin:0 0 8px 10px
72
- }
@@ -1,38 +0,0 @@
1
- import { EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
2
- import { MsalBroadcastService, MsalGuardConfiguration, MsalInterceptorConfiguration, MsalService } from '@azure/msal-angular';
3
- import { IPublicClientApplication } from '@azure/msal-browser';
4
- import { LoginOAuthResult } from '../../definitions';
5
- import { EnvironmentService } from '@arsedizioni/ars-utils/core';
6
- import * as i0 from "@angular/core";
7
- export declare function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication;
8
- export declare function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration;
9
- export declare function MSALGuardConfigFactory(): MsalGuardConfiguration;
10
- export declare class LoginOAuthComponent implements OnInit, OnDestroy {
11
- private $broadcastMSAL;
12
- private $loginMSAL;
13
- private ngZone;
14
- private __d$;
15
- success: EventEmitter<LoginOAuthResult>;
16
- appName: string | null;
17
- autoInitialize: boolean | null;
18
- OAUTHReady: boolean;
19
- OAUTHMicrosoftReady: boolean;
20
- OAUTHGoogleReady: boolean;
21
- constructor($broadcastMSAL: MsalBroadcastService, $loginMSAL: MsalService, ngZone: NgZone);
22
- ngOnInit(): void;
23
- ngOnDestroy(): void;
24
- /**
25
- * Initialize open authentication
26
- */
27
- initialize(): void;
28
- /**
29
- * Perform login using MSAL
30
- */
31
- loginMSAL(): void;
32
- /**
33
- * Perform login using Google
34
- */
35
- loginGoogle(): void;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<LoginOAuthComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<LoginOAuthComponent, "login-oauth", never, { "appName": { "alias": "appName"; "required": false; }; "autoInitialize": { "alias": "autoInitialize"; "required": false; }; }, { "success": "success"; }, never, never, true, never>;
38
- }