@indice/ng-components 0.2.167-beta.3 → 0.2.167-beta.34

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 (199) hide show
  1. package/_styles.css +102 -35
  2. package/{esm2015/indice-ng-components.js → esm2020/indice-ng-components.mjs} +0 -0
  3. package/esm2020/lib/controls/advanced-search/advanced-search.component.mjs +118 -0
  4. package/esm2020/lib/controls/advanced-search/models.mjs +90 -0
  5. package/{esm2015/lib/controls/avatar-initials/avatar-initials.component.js → esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs} +5 -8
  6. package/esm2020/lib/controls/breadcrumb/breadcrumb-item.mjs +14 -0
  7. package/esm2020/lib/controls/breadcrumb/breadcrumb.component.mjs +26 -0
  8. package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
  9. package/esm2020/lib/controls/combobox/combobox.component.mjs +117 -0
  10. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +292 -0
  11. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +72 -0
  12. package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +43 -0
  13. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +31 -0
  14. package/{esm2015/lib/controls/list-view/list-column.component.js → esm2020/lib/controls/list-view/list-column.component.mjs} +4 -4
  15. package/{esm2015/lib/controls/list-view/list-details-section.component.js → esm2020/lib/controls/list-view/list-details-section.component.mjs} +4 -4
  16. package/{esm2015/lib/controls/list-view/list-tile.component.js → esm2020/lib/controls/list-view/list-tile.component.mjs} +4 -4
  17. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
  18. package/esm2020/lib/controls/list-view/list-view.component.mjs +206 -0
  19. package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +54 -0
  20. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +79 -0
  21. package/esm2020/lib/controls/pager/pager.component.mjs +130 -0
  22. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
  23. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
  24. package/{esm2015/lib/controls/stepper/lib-step-info.directive.js → esm2020/lib/controls/stepper/lib-step-info.directive.mjs} +4 -4
  25. package/{esm2015/lib/controls/stepper/lib-step-label.directive.js → esm2020/lib/controls/stepper/lib-step-label.directive.mjs} +5 -5
  26. package/esm2020/lib/controls/stepper/lib-step.component.mjs +81 -0
  27. package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +108 -0
  28. package/{esm2015/lib/controls/stepper/types/step-selected-event.js → esm2020/lib/controls/stepper/types/step-selected-event.mjs} +0 -0
  29. package/{esm2015/lib/controls/stepper/types/stepper-type.js → esm2020/lib/controls/stepper/types/stepper-type.mjs} +0 -0
  30. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +66 -0
  31. package/esm2020/lib/controls/tabs/lib-tab-label.directive.mjs +16 -0
  32. package/esm2020/lib/controls/tabs/lib-tab.component.mjs +64 -0
  33. package/esm2020/lib/controls/toaster/toaster-container.component.mjs +28 -0
  34. package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
  35. package/esm2020/lib/controls/toggle/toggle.component.mjs +64 -0
  36. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +71 -0
  37. package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +4 -4
  38. package/{esm2015/lib/directives/dynamic-component-host.directive.js → esm2020/lib/directives/dynamic-component-host.directive.mjs} +4 -4
  39. package/esm2020/lib/helpers/base-list.component.mjs +226 -0
  40. package/esm2020/lib/icons.mjs +36 -0
  41. package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -0
  42. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +130 -0
  43. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +101 -0
  44. package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +54 -0
  45. package/esm2020/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +45 -0
  46. package/esm2020/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +28 -0
  47. package/esm2020/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +20 -0
  48. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
  49. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +58 -0
  50. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +98 -0
  51. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
  52. package/esm2020/lib/ng-components.module.mjs +278 -0
  53. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
  54. package/{esm2015/lib/pages/auth/auth-renew/auth-renew.component.js → esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs} +4 -4
  55. package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +28 -0
  56. package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
  57. package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
  58. package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
  59. package/{esm2015/lib/pipes/address.pipe.js → esm2020/lib/pipes/address.pipe.mjs} +4 -4
  60. package/{esm2015/lib/pipes/duration-format.pipe.js → esm2020/lib/pipes/duration-format.pipe.mjs} +4 -4
  61. package/esm2020/lib/services/breadcrumb.service.mjs +174 -0
  62. package/{esm2015/lib/services/component-loader/component-loader-options.class.js → esm2020/lib/services/component-loader/component-loader-options.class.mjs} +0 -0
  63. package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
  64. package/{esm2015/lib/services/component-loader/component-loader.factory.js → esm2020/lib/services/component-loader/component-loader.factory.mjs} +4 -4
  65. package/{esm2015/lib/services/component-loader/content-ref.class.js → esm2020/lib/services/component-loader/content-ref.class.mjs} +0 -0
  66. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
  67. package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
  68. package/{esm2015/lib/services/modal-service/modal-options.class.js → esm2020/lib/services/modal-service/modal-options.class.mjs} +4 -4
  69. package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
  70. package/{esm2015/lib/services/modal-service/modal-styles.class.js → esm2020/lib/services/modal-service/modal-styles.class.mjs} +0 -0
  71. package/{esm2015/lib/services/modal-service/modal.class.js → esm2020/lib/services/modal-service/modal.class.mjs} +4 -4
  72. package/esm2020/lib/services/toaster.service.mjs +26 -0
  73. package/esm2020/lib/services/user-settings.service.mjs +35 -0
  74. package/esm2020/lib/services/utilities.service.mjs +47 -0
  75. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  76. package/esm2020/lib/types.mjs +131 -0
  77. package/esm2020/public-api.mjs +68 -0
  78. package/fesm2015/indice-ng-components.mjs +4640 -0
  79. package/fesm2015/indice-ng-components.mjs.map +1 -0
  80. package/fesm2020/indice-ng-components.mjs +4554 -0
  81. package/fesm2020/indice-ng-components.mjs.map +1 -0
  82. package/{indice-ng-components.d.ts → index.d.ts} +0 -0
  83. package/lib/controls/advanced-search/advanced-search.component.d.ts +1 -1
  84. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
  85. package/lib/controls/breadcrumb/breadcrumb-item.d.ts +7 -0
  86. package/lib/controls/breadcrumb/breadcrumb.component.d.ts +12 -0
  87. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
  88. package/lib/controls/combobox/combobox.component.d.ts +10 -5
  89. package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
  90. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +2 -1
  91. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +2 -1
  92. package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
  93. package/lib/controls/list-view/list-column.component.d.ts +1 -1
  94. package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
  95. package/lib/controls/list-view/list-tile.component.d.ts +1 -1
  96. package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
  97. package/lib/controls/list-view/list-view.component.d.ts +1 -1
  98. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +3 -1
  99. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +1 -1
  100. package/lib/controls/pager/pager.component.d.ts +1 -1
  101. package/lib/controls/side-pane/side-pane.component.d.ts +1 -2
  102. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
  103. package/lib/controls/stepper/lib-step-info.directive.d.ts +1 -1
  104. package/lib/controls/stepper/lib-step-label.directive.d.ts +1 -1
  105. package/lib/controls/stepper/lib-step.component.d.ts +1 -1
  106. package/lib/controls/stepper/lib-stepper.component.d.ts +1 -1
  107. package/lib/controls/tabs/lib-tab-group.component.d.ts +4 -4
  108. package/lib/controls/tabs/lib-tab-label.directive.d.ts +8 -0
  109. package/lib/controls/tabs/lib-tab.component.d.ts +8 -6
  110. package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
  111. package/lib/controls/toaster/toaster.component.d.ts +1 -1
  112. package/lib/controls/toggle/toggle.component.d.ts +1 -1
  113. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
  114. package/lib/directives/click-outside.directive.d.ts +1 -1
  115. package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
  116. package/lib/helpers/base-list.component.d.ts +1 -1
  117. package/lib/icons.d.ts +2 -0
  118. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
  119. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +1 -1
  120. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
  121. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +5 -3
  122. package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +1 -1
  123. package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +4 -2
  124. package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +2 -2
  125. package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
  126. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +5 -2
  127. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
  128. package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
  129. package/lib/ng-components.module.d.ts +55 -54
  130. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
  131. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
  132. package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
  133. package/lib/pages/http-status/error/error.component.d.ts +1 -1
  134. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
  135. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
  136. package/lib/pipes/address.pipe.d.ts +1 -1
  137. package/lib/pipes/duration-format.pipe.d.ts +1 -1
  138. package/lib/services/breadcrumb.service.d.ts +29 -0
  139. package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
  140. package/lib/services/modal-service/modal-container-component.d.ts +1 -1
  141. package/lib/services/toaster.service.d.ts +2 -2
  142. package/lib/services/user-settings.service.d.ts +13 -0
  143. package/lib/services/utilities.service.d.ts +11 -0
  144. package/lib/types.d.ts +13 -10
  145. package/package.json +21 -8
  146. package/public-api.d.ts +5 -0
  147. package/bundles/indice-ng-components.umd.js +0 -5035
  148. package/bundles/indice-ng-components.umd.js.map +0 -1
  149. package/esm2015/lib/controls/advanced-search/advanced-search.component.js +0 -116
  150. package/esm2015/lib/controls/advanced-search/models.js +0 -91
  151. package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +0 -23
  152. package/esm2015/lib/controls/combobox/combobox.component.js +0 -100
  153. package/esm2015/lib/controls/date-picker/date-picker.component.js +0 -301
  154. package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +0 -72
  155. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +0 -42
  156. package/esm2015/lib/controls/language-selection/language-selection.component.js +0 -35
  157. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +0 -32
  158. package/esm2015/lib/controls/list-view/list-view.component.js +0 -209
  159. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +0 -51
  160. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +0 -84
  161. package/esm2015/lib/controls/pager/pager.component.js +0 -133
  162. package/esm2015/lib/controls/side-pane/side-pane.component.js +0 -104
  163. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +0 -29
  164. package/esm2015/lib/controls/stepper/lib-step.component.js +0 -82
  165. package/esm2015/lib/controls/stepper/lib-stepper.component.js +0 -115
  166. package/esm2015/lib/controls/tabs/lib-tab-group.component.js +0 -67
  167. package/esm2015/lib/controls/tabs/lib-tab.component.js +0 -58
  168. package/esm2015/lib/controls/toaster/toaster-container.component.js +0 -31
  169. package/esm2015/lib/controls/toaster/toaster.component.js +0 -34
  170. package/esm2015/lib/controls/toggle/toggle.component.js +0 -68
  171. package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +0 -75
  172. package/esm2015/lib/helpers/base-list.component.js +0 -227
  173. package/esm2015/lib/icons.js +0 -34
  174. package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +0 -22
  175. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +0 -135
  176. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +0 -106
  177. package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +0 -50
  178. package/esm2015/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.js +0 -48
  179. package/esm2015/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.js +0 -28
  180. package/esm2015/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.js +0 -24
  181. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +0 -85
  182. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +0 -53
  183. package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +0 -101
  184. package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +0 -110
  185. package/esm2015/lib/ng-components.module.js +0 -289
  186. package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +0 -34
  187. package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +0 -32
  188. package/esm2015/lib/pages/http-status/error/error.component.js +0 -20
  189. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +0 -18
  190. package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +0 -17
  191. package/esm2015/lib/services/component-loader/component-loader.class.js +0 -192
  192. package/esm2015/lib/services/modal-service/modal-backdrop-component.js +0 -44
  193. package/esm2015/lib/services/modal-service/modal-container-component.js +0 -128
  194. package/esm2015/lib/services/modal-service/modal-service.js +0 -220
  195. package/esm2015/lib/services/toaster.service.js +0 -24
  196. package/esm2015/lib/types.js +0 -129
  197. package/esm2015/public-api.js +0 -63
  198. package/fesm2015/indice-ng-components.js +0 -4389
  199. package/fesm2015/indice-ng-components.js.map +0 -1
package/_styles.css CHANGED
@@ -278,13 +278,9 @@
278
278
  .shell-sidebar-component-container {
279
279
  @apply flex w-full flex-col h-full min-h-0 bg-gray-800;
280
280
  }
281
-
282
- .shell-sidebar-component-container-inner {
283
- @apply flex items-center h-16 flex-shrink-0 px-4 bg-gray-900;
284
- }
285
-
281
+
286
282
  .shell-sidebar-component-links-container {
287
- @apply pt-4 px-2;
283
+ @apply pt-4;
288
284
  }
289
285
 
290
286
  }
@@ -331,9 +327,13 @@
331
327
  @apply absolute top-0 right-0 -mr-12 pt-2;
332
328
  }
333
329
 
330
+
331
+
334
332
  .sidebar-off-canvas-toggle-button {
335
333
  @apply ml-1 flex items-center justify-center h-10 w-10 rounded-full focus:outline-none;
336
334
  }
335
+
336
+
337
337
 
338
338
  .sidebar-off-canvas-app-logo-container {
339
339
  @apply flex-shrink-0 flex items-center px-4;
@@ -343,6 +343,7 @@
343
343
  @apply flex-shrink-0 w-14;
344
344
  }
345
345
 
346
+ /* in mobile view the static menu container is always hidden - off-canvas container is visible */
346
347
  .sidebar-static-menu-outer-container {
347
348
  @apply hidden md:flex;
348
349
  }
@@ -356,15 +357,15 @@
356
357
  }
357
358
 
358
359
  .sidebar-static-menu-container-not-active {
359
- @apply hidden;
360
+ @apply flex w-20;
360
361
  }
361
362
 
362
363
  .sidebar-static-menu-container-inner {
363
- @apply flex-1 flex flex-col min-h-0 bg-gray-800 shadow-lg;
364
+ @apply flex-1 flex items-center flex-col min-h-0 bg-gray-800 shadow-lg;
364
365
  }
365
366
 
366
367
  .sidebar-static-menu-app-logo-container {
367
- @apply flex items-center h-16 flex-shrink-0 px-4 bg-gray-900;
368
+ @apply flex items-center h-16 flex-shrink-0;
368
369
  }
369
370
 
370
371
  .sidebar-static-menu-header-app-logo-container {
@@ -373,25 +374,31 @@
373
374
 
374
375
  /* !!!! malakai onoma !!!! */
375
376
  .sidebar-static-menu-wrapper {
376
- @apply flex flex-col;
377
+ @apply flex flex-col md:pl-20;
377
378
  }
378
379
 
379
- .sidebar-static-menu-wrapper-active {
380
- @apply sm:pl-64;
380
+ .sidebar-static-menu-wrapper-expanded {
381
+ @apply md:pl-64;
381
382
  }
382
383
 
383
- .sidebar-static-menu-toggle-button-container {
384
- @apply sticky top-0 z-10 flex-shrink-0 flex h-16 bg-gray-900 shadow;
384
+ .sidebar-static-menu-sticky-header-container {
385
+ @apply sticky top-0 z-10 flex-shrink-0 flex h-16 bg-gray-900 shadow-2xl;
385
386
  }
386
387
 
387
388
  .sidebar-static-menu-toggle-button {
388
- @apply px-4 text-white bg-gray-800 focus:outline-none;
389
+ @apply px-4 text-white focus:outline-none;
390
+ }
391
+
392
+ .sidebar-static-menu-toggle-button-md {
393
+ @apply px-4 text-white focus:outline-none md:hidden;
389
394
  }
390
395
 
391
396
  .sidebar-static-menu-header-container {
392
397
  @apply flex-1 px-4 flex justify-between;
393
398
  }
394
399
 
400
+ /* fix names */
401
+
395
402
  .sidebar-static-menu-header-near-container {
396
403
  @apply flex-1 flex;
397
404
  }
@@ -608,12 +615,12 @@
608
615
 
609
616
 
610
617
  .btn-view-header {
611
- @apply text-base focus:outline-none inline-flex items-center justify-center w-10 h-10 text-white transition-colors duration-150 rounded-md hover:shadow-sm hover:bg-gray-900;
618
+ @apply text-base focus:outline-none inline-flex items-center justify-center w-8 h-8 text-white transition-colors duration-150 rounded-md hover:shadow-sm hover:bg-gray-800;
612
619
  }
613
620
 
614
621
 
615
622
  .sidebar .btn-view-header {
616
- @apply text-base focus:outline-none inline-flex items-center justify-center w-10 h-10 text-gray-900 transition-colors duration-150 rounded-md hover:shadow-sm hover:bg-gray-900 hover:text-white;
623
+ @apply text-base focus:outline-none inline-flex items-center justify-center w-8 h-8 text-gray-900 transition-colors duration-150 rounded-md hover:shadow-sm hover:bg-gray-800 hover:text-white;
617
624
  }
618
625
 
619
626
  .btn-form-view-header {
@@ -708,11 +715,11 @@
708
715
  }
709
716
 
710
717
  .dropdown-selected-text {
711
- @apply block truncate;
718
+ @apply truncate inline-flex items-center;
712
719
  }
713
720
 
714
721
  .dropdown-button-icon {
715
- @apply absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none;
722
+ @apply absolute inset-y-0 right-0 flex items-center pointer-events-none;
716
723
  }
717
724
 
718
725
  .dropdown-arrow {
@@ -732,11 +739,11 @@
732
739
  }
733
740
 
734
741
  .dropdown-li-text {
735
- @apply font-normal block truncate;
742
+ @apply font-normal truncate inline-flex items-center ;
736
743
  }
737
744
 
738
745
  .dropdown-li-selected-text {
739
- @apply font-semibold block truncate;
746
+ @apply font-semibold truncate inline-flex items-center ;
740
747
  }
741
748
 
742
749
  .dropdown-li-selected-indicator-container {
@@ -3318,7 +3325,7 @@
3318
3325
  }
3319
3326
 
3320
3327
  .model-view-aside {
3321
- @apply py-6 px-2 sm:px-6 lg:py-0 lg:px-0 lg:col-span-4 md:col-span-3;
3328
+ @apply py-6 px-2 sm:px-6 lg:py-0 lg:px-0 md:col-span-3;
3322
3329
  }
3323
3330
 
3324
3331
  .model-view-aside-header-section {
@@ -3377,7 +3384,11 @@
3377
3384
  }
3378
3385
 
3379
3386
  .sidebar .nav-link-list-container-inner {
3380
- @apply flex-1 px-2 py-4 space-y-1;
3387
+ @apply flex-1 px-2 py-4 space-y-2;
3388
+ }
3389
+
3390
+ .sidebar .nav-link-list-container-inner .icons-only {
3391
+ @apply flex-1 px-2 py-4 space-y-4;
3381
3392
  }
3382
3393
 
3383
3394
  .nav-link-active {
@@ -3388,6 +3399,14 @@
3388
3399
  @apply cursor-default bg-gray-900 text-white flex items-center px-2 py-2 text-sm font-medium rounded-md;
3389
3400
  }
3390
3401
 
3402
+ .sidebar .nav-link-active-b {
3403
+ @apply cursor-default bg-gray-900 border-b border-blue-400 text-white flex items-center px-2 py-2 text-sm font-medium rounded-md;
3404
+ }
3405
+
3406
+ .sidebar .nav-link-active-l {
3407
+ @apply cursor-default bg-gray-900 border-l border-blue-400 text-white flex items-center px-2 py-2 text-sm font-medium rounded-md;
3408
+ }
3409
+
3391
3410
  .nav-link-profile-active {
3392
3411
  @apply cursor-default block px-4 py-2 text-xs text-blue-300 shadow-sm whitespace-nowrap overflow-ellipsis overflow-hidden;
3393
3412
  }
@@ -3404,6 +3423,9 @@
3404
3423
  @apply cursor-default bg-gray-50 border-gray-600 text-gray-900 border-l-4 py-2 px-3 flex items-center text-sm whitespace-nowrap overflow-ellipsis overflow-hidden;
3405
3424
  }
3406
3425
 
3426
+ .min-nav-link-text-width {
3427
+ width: 220px;
3428
+ }
3407
3429
  }
3408
3430
 
3409
3431
  @layer components {
@@ -3459,7 +3481,7 @@
3459
3481
  }
3460
3482
 
3461
3483
  .pager-pages-container {
3462
- @apply relative z-30 inline-flex rounded-sm;
3484
+ @apply relative inline-flex rounded-sm;
3463
3485
  }
3464
3486
 
3465
3487
  .pager-button {
@@ -3554,7 +3576,7 @@
3554
3576
  }
3555
3577
 
3556
3578
  .shell-content-container {
3557
- @apply mx-auto -mt-28;
3579
+ @apply mx-auto -mt-24;
3558
3580
  }
3559
3581
 
3560
3582
  .sidebar .shell-content-container {
@@ -3567,11 +3589,11 @@
3567
3589
  }
3568
3590
 
3569
3591
  .sidebar .shell-content-container-inner {
3570
- @apply max-w-full px-4 min-h-screen;
3592
+ @apply max-w-full px-4 pb-2 min-h-screen;
3571
3593
  }
3572
3594
 
3573
3595
  .shell-content-container-inner {
3574
- @apply max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 min-h-screen;
3596
+ @apply max-w-7xl mx-auto px-4 pb-2 sm:px-6 lg:px-8 min-h-screen;
3575
3597
  }
3576
3598
 
3577
3599
  .shell-content-container-inner-fluid {
@@ -4187,7 +4209,7 @@
4187
4209
  @layer components {
4188
4210
 
4189
4211
  .view-container {
4190
- @apply mt-8 sm:mt-5 flex flex-col;
4212
+ @apply mt-4 sm:mt-5 flex flex-col;
4191
4213
  }
4192
4214
 
4193
4215
  .view-container-fluid {
@@ -4195,17 +4217,25 @@
4195
4217
  }
4196
4218
 
4197
4219
  .view-layout-paddings {
4198
- @apply pt-6 pb-4 sm:py-6;
4220
+ @apply py-4 sm:py-6;
4221
+ }
4222
+
4223
+ .sidebar .view-layout-paddings {
4224
+ @apply py-2 sm:py-4;
4199
4225
  }
4200
4226
 
4201
4227
  .view-layout-title-container {
4202
- @apply flex text-white flex-row justify-start ;
4228
+ @apply flex text-white flex-col md:flex-row justify-start;
4203
4229
  }
4204
4230
 
4205
4231
  .view-layout-title-container-inner {
4206
4232
  @apply flex-1 min-w-0;
4207
4233
  }
4208
4234
 
4235
+ .view-layout-title-container-far {
4236
+ @apply flex items-center justify-start sm:justify-end;
4237
+ }
4238
+
4209
4239
  .title-icon {
4210
4240
  @apply text-2xl md:text-xl text-white font-thin mr-1;
4211
4241
  }
@@ -4231,15 +4261,15 @@
4231
4261
  }
4232
4262
 
4233
4263
  .meta-container {
4234
- @apply ml-1 mt-2 flex flex-row sm:flex-row sm:flex-wrap space-x-2 sm:space-x-4;
4264
+ @apply mt-1 ml-1 hidden h-0 w-0 md:w-full md:flex md:flex-wrap opacity-75;
4235
4265
  }
4236
-
4266
+
4237
4267
  .sidebar .meta-container {
4238
4268
  @apply text-gray-900;
4239
4269
  }
4240
4270
 
4241
4271
  .meta-item-container {
4242
- @apply flex items-center;
4272
+ @apply flex items-center mr-2;
4243
4273
  }
4244
4274
 
4245
4275
  .meta-icon {
@@ -4251,14 +4281,51 @@
4251
4281
  }
4252
4282
 
4253
4283
  .search-container {
4254
- @apply relative text-gray-400 focus-within:text-gray-600 ml-2 hover:shadow-sm hover:bg-gray-900;
4284
+ @apply relative inline-flex items-center bg-white text-gray-400 focus-within:text-gray-600 hover:shadow-sm border border-gray-200;
4255
4285
  }
4256
4286
 
4287
+ /* .search-input {
4288
+ @apply pl-10 pr-20 w-60 bg-gray-50 rounded-sm text-sm text-gray-900 border-gray-400 placeholder-gray-500 outline-none focus:shadow focus:outline-none z-0;
4289
+ } */
4290
+
4257
4291
  .search-input {
4258
- @apply block w-60 bg-gray-50 rounded-sm text-sm text-gray-900 placeholder-gray-500 outline-none;
4292
+ @apply w-60 rounded-sm text-sm text-gray-900 pt-2 pl-2 pb-2 placeholder-gray-500 outline-none border-0 focus:outline-none focus:ring-0;
4293
+ }
4294
+
4295
+ .search-button {
4296
+ @apply mr-1 text-xs focus:outline-none inline-flex items-center justify-center w-6 h-6 text-gray-800 hover:text-gray-900;
4259
4297
  }
4260
4298
  }
4261
4299
 
4300
+ @layer components {
4301
+ .combobox-wrapper {
4302
+ @apply relative mt-1;
4303
+ }
4304
+
4305
+ .combobox-input {
4306
+ @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;
4307
+ }
4308
+
4309
+ .combobox-icons {
4310
+ @apply absolute inset-y-0 right-0 flex items-center rounded-r-md px-2 focus:outline-none;
4311
+ }
4312
+
4313
+ .combobox-results {
4314
+ @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;
4315
+ }
4316
+
4317
+ .combobox-default-item-template {
4318
+ @apply hover:bg-gray-100 relative cursor-pointer select-none py-2 pl-3 pr-3 block truncate;
4319
+ }
4320
+
4321
+ .combobox-selected-item-wrapper {
4322
+ @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;
4323
+ }
4324
+
4325
+ .combobox-selected-item-remove-btn {
4326
+ @apply cursor-pointer bg-white rounded-md inline-flex text-gray-400 hover:text-gray-500;
4327
+ }
4328
+ }
4262
4329
 
4263
4330
  .modal-active {
4264
4331
  overflow: hidden;
@@ -0,0 +1,118 @@
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
+ else { // selectedField is multiTerm: just checking if we already have the newly selected filterClause in filters
80
+ const isDuplicate = this.filters.some(f => f.toString() === filterClause.toString());
81
+ if (isDuplicate) {
82
+ return;
83
+ }
84
+ }
85
+ this.filters.push(filterClause);
86
+ this.fieldValue = undefined;
87
+ }
88
+ this.advancedSearchChanged.emit(this.filters);
89
+ }
90
+ removeFilter(index) {
91
+ if (this.filters && this.filters.length >= index) {
92
+ this.filters.splice(index, 1);
93
+ this.advancedSearchChanged.emit(this.filters);
94
+ }
95
+ }
96
+ clear() {
97
+ this.fieldValueDateFrom = undefined;
98
+ this.fieldValueDateTo = undefined;
99
+ this.selectedField = undefined;
100
+ this.fieldValue = undefined;
101
+ this.filters = [];
102
+ this.advancedSearchChanged.emit(this.filters);
103
+ }
104
+ }
105
+ AdvancedSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
106
+ 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 &nbsp;\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 &nbsp;\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", "show-icons"], outputs: ["selectedChange", "selectedChanged"] }] });
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
108
+ type: Component,
109
+ 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 &nbsp;\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 &nbsp;\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>" }]
110
+ }], ctorParameters: function () { return []; }, propDecorators: { advancedSearchChanged: [{
111
+ type: Output
112
+ }], searchOptions: [{
113
+ type: Input,
114
+ args: ['search-options']
115
+ }], filters: [{
116
+ type: Input
117
+ }] } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9hZHZhbmNlZC1zZWFyY2gvYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9hZHZhbmNlZC1zZWFyY2gvYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFnQixZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBTWxGLE1BQU0sT0FBTyx1QkFBdUI7SUFXbEM7UUFWVSwwQkFBcUIsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDMUUsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25ELFlBQU8sR0FBbUIsRUFBRSxDQUFDO1FBQy9CLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUsvQiwwQkFBcUIsR0FBb0MsRUFBRSxDQUFDO0lBRW5ELENBQUM7SUFFVixRQUFRO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUN2QixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsUUFBUTtnQkFDM0IsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxJQUFJLEVBQUUsU0FBUzthQUNoQixD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QUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7b0hBM0dVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDRNQ1JwQywydUpBMkZNOzJGRG5GTyx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCOzBFQUlyQixxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ2tCLGFBQWE7c0JBQXJDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgU2VhcmNoT3B0aW9uLCBGaWx0ZXJDbGF1c2UsIFF1ZXJ5UGFyYW1ldGVycywgT3BlcmF0b3JzIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWR2YW5jZWQtc2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtc2VhcmNoLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBhZHZhbmNlZFNlYXJjaENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGaWx0ZXJDbGF1c2VbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNsYXVzZVtdPigpO1xyXG4gIEBJbnB1dCgnc2VhcmNoLW9wdGlvbnMnKSBzZWFyY2hPcHRpb25zOiBTZWFyY2hPcHRpb25bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEZpbHRlckNsYXVzZVtdID0gW107XHJcbiAgcHVibGljIG1lbnVPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRGaWVsZD86IFNlYXJjaE9wdGlvbjtcclxuICBwdWJsaWMgZmllbGRWYWx1ZT86IHN0cmluZztcclxuICBwdWJsaWMgZmllbGRWYWx1ZURhdGVGcm9tOiBhbnk7XHJcbiAgcHVibGljIGZpZWxkVmFsdWVEYXRlVG86IGFueTtcclxuICBwdWJsaWMgbWVudU9wdGlvbnNEaWN0aW9uYXJ5OiB7IFtrZXk6IHN0cmluZ106IE1lbnVPcHRpb25bXSB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoT3B0aW9ucy5mb3JFYWNoKChzZWFyY2hPcHRpb24pID0+IHtcclxuICAgICAgdGhpcy5tZW51T3B0aW9ucy5wdXNoKHtcclxuICAgICAgICB0ZXh0OiBzZWFyY2hPcHRpb24ubmFtZSxcclxuICAgICAgICB2YWx1ZTogc2VhcmNoT3B0aW9uLmZpZWxkLFxyXG4gICAgICAgIGRhdGE6IHNlYXJjaE9wdGlvbi5kYXRhVHlwZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogc2VhcmNoT3B0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICAgIGljb246IHVuZGVmaW5lZFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHNlYXJjaE9wdGlvbi5kYXRhVHlwZSA9PT0gJ2FycmF5Jykge1xyXG4gICAgICAgIGxldCBtZW51T3B0czogTWVudU9wdGlvbltdID0gW107XHJcbiAgICAgICAgc2VhcmNoT3B0aW9uLm9wdGlvbnM/LmZvckVhY2goKHNlbGVjdElucHV0T3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICBtZW51T3B0cy5wdXNoKHtcclxuICAgICAgICAgICAgdGV4dDogc2VsZWN0SW5wdXRPcHRpb24ubGFiZWwsXHJcbiAgICAgICAgICAgIHZhbHVlOiBzZWxlY3RJbnB1dE9wdGlvbi52YWx1ZSxcclxuICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VsZWN0SW5wdXRPcHRpb24uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGljb246IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLm1lbnVPcHRpb25zRGljdGlvbmFyeVtzZWFyY2hPcHRpb24uZmllbGRdID0gbWVudU9wdHM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdGVkRmllbGRDaGFuZ2VkKGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2VhcmNoT3B0aW9ucy5maW5kKChzZWFyY2hPcHRpb24pID0+IHNlYXJjaE9wdGlvbi5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdGVkRmllbGRWYWx1ZUNoYW5nZWQoZmllbGRWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlYXJjaCgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpZWxkIHx8ICF0aGlzLnNlbGVjdGVkRmllbGQuZGF0YVR5cGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdGhlIGZpbHRlciBpcyBvZiB0eXBlICdkYXRlcmFuZ2UnXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLmRhdGFUeXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWVsZC5tdWx0aVRlcm0pIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKChmKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZi5tZW1iZXIgIT09IFF1ZXJ5UGFyYW1ldGVycy5GSUxURVJfRlJPTSAmJiBmLm1lbWJlciAhPT0gUXVlcnlQYXJhbWV0ZXJzLkZJTFRFUl9UTztcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZFZhbHVlRGF0ZUZyb20pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJDbGF1c2VGcm9tID0gbmV3IEZpbHRlckNsYXVzZShRdWVyeVBhcmFtZXRlcnMuRklMVEVSX0ZST00sIHRoaXMuZmllbGRWYWx1ZURhdGVGcm9tLCBPcGVyYXRvcnMuR1JFQVRFUl9USEFOX0VRVUFMLnZhbHVlIGFzIEZpbHRlckNsYXVzZS5PcCwgJ2RhdGV0aW1lJywgdGhpcy5zZWFyY2hPcHRpb25zKTtcclxuICAgICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXJDbGF1c2VGcm9tKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZURhdGVUbykge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlckNsYXVzZVRvID0gbmV3IEZpbHRlckNsYXVzZShRdWVyeVBhcmFtZXRlcnMuRklMVEVSX1RPLCB0aGlzLmZpZWxkVmFsdWVEYXRlVG8sIE9wZXJhdG9ycy5MRVNTX1RIQU5fRVFVQUwudmFsdWUgYXMgRmlsdGVyQ2xhdXNlLk9wLCAnZGF0ZXRpbWUnLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlckNsYXVzZVRvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdGhlIGZpbHRlciBpc24ndCBvZiB0eXBlICdkYXRlcmFuZ2UnIChldmVyeXRoaW5nIGVsc2UpXHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7IC8vIGhhbmRsZSBlbXB0eSBmaWVsZCB2YWx1ZVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyBjcmVhdGUgdGhlIGZpbHRlckNsYXVzZVxyXG4gICAgICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBuZXcgRmlsdGVyQ2xhdXNlKHRoaXMuc2VsZWN0ZWRGaWVsZC5maWVsZCwgdGhpcy5maWVsZFZhbHVlLCBPcGVyYXRvcnMuRVFVQUxTLnZhbHVlIGFzIEZpbHRlckNsYXVzZS5PcCwgdGhpcy5zZWxlY3RlZEZpZWxkLmRhdGFUeXBlLCB0aGlzLnNlYXJjaE9wdGlvbnMpOyAvLyBvcGVyYXRvciBpcyBhbHdheXMgJ2VxdWFscycuLi5cclxuXHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEZpZWxkLm11bHRpVGVybSkgeyAvLyBtdWx0aVRlcm0gbWVhbnMgdGhhdCB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBmaWx0ZXIgdmFsdWVzIG9mIHRoZSBTQU1FIGZpbHRlciBjbGF1c2UgKGVnIFwiZmlsdGVyIGNhc2UgdHlwZXMgdGhhdCBhcmUgUGhvbmUgT1IgQWRkcmVzc1wiKVxyXG4gICAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiBmLm1lbWJlciAhPT0gdGhpcy5zZWxlY3RlZEZpZWxkIS5maWVsZDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHsgLy8gc2VsZWN0ZWRGaWVsZCBpcyBtdWx0aVRlcm06IGp1c3QgY2hlY2tpbmcgaWYgd2UgYWxyZWFkeSBoYXZlIHRoZSBuZXdseSBzZWxlY3RlZCBmaWx0ZXJDbGF1c2UgaW4gZmlsdGVyc1xyXG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gdGhpcy5maWx0ZXJzLnNvbWUoZiA9PiBmLnRvU3RyaW5nKCkgPT09IGZpbHRlckNsYXVzZS50b1N0cmluZygpKTtcclxuICAgICAgICBpZiAoaXNEdXBsaWNhdGUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlckNsYXVzZSk7XHJcbiAgICAgIHRoaXMuZmllbGRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hDaGFuZ2VkLmVtaXQodGhpcy5maWx0ZXJzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVycyAmJiB0aGlzLmZpbHRlcnMubGVuZ3RoID49IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmFkdmFuY2VkU2VhcmNoQ2hhbmdlZC5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXIoKSB7XHJcbiAgICB0aGlzLmZpZWxkVmFsdWVEYXRlRnJvbSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZmllbGRWYWx1ZURhdGVUbyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZmllbGRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgdGhpcy5hZHZhbmNlZFNlYXJjaENoYW5nZWQuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtZmlsdGVyXCI+XHJcbiAgICAgICAgPCEtLVNFQVJDSCBGSUVMRFMtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci1maWVsZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci1maWVsZC1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICBmb3I9XCJzZWxlY3RlZEZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICDOkc69zrHOts6uz4TOt8+DzrcgzrHOvc6sOlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8bGliLWRyb3AtZG93bi1tZW51IFtvcHRpb25zXT1cIm1lbnVPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2VkKT1cInNlbGVjdGVkRmllbGRDaGFuZ2VkKCRldmVudClcIj48L2xpYi1kcm9wLWRvd24tbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tU0VBUkNIIEZJRUxEUyBJTlBVVC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEZpZWxkXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci12YWx1ZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRmllbGQuZGF0YVR5cGUgPT09ICdhcnJheSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1maWx0ZXItdmFsdWUtbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZpZWxkVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bGliLWRyb3AtZG93bi1tZW51IFtvcHRpb25zXT1cIm1lbnVPcHRpb25zRGljdGlvbmFyeVtzZWxlY3RlZEZpZWxkLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJmaWVsZFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlZCk9XCJzZWxlY3RlZEZpZWxkVmFsdWVDaGFuZ2VkKCRldmVudClcIj48L2xpYi1kcm9wLWRvd24tbWVudT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEZpZWxkLmRhdGFUeXBlID09PSAnc3RyaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWR2YW5jZWQtc2VhcmNoLWZpbHRlci12YWx1ZS1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmllbGRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpZWxkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIs6Rzr3Osc62zq7PhM63z4POt1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1maWx0ZXItdmFsdWUtaW5wdXRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEZpZWxkLmRhdGFUeXBlID09PSAnZGF0ZXJhbmdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1maWx0ZXItdmFsdWUtaW5wdXQtZGF0ZXJhbmdlLWZyb21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgzpHPgM+MOlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWRhdGUtcGlja2VyIFttYXhEYXRlXT1cImZpZWxkVmFsdWVEYXRlVG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlRGF0ZUZyb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicwMS8wMS8yMDIyJ1wiPjwvbGliLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRGaWVsZC5kYXRhVHlwZSA9PT0gJ2RhdGVyYW5nZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmFuY2VkLXNlYXJjaC1maWx0ZXItdmFsdWUtaW5wdXQtZGF0ZXJhbmdlLXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIM6Iz4nPgjpcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpYi1kYXRlLXBpY2tlciBbbWluRGF0ZV09XCJmaWVsZFZhbHVlRGF0ZUZyb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlRGF0ZVRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInMDEvMDEvMjAyMidcIj48L2xpYi1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGaWVsZFwiPlxyXG4gICAgICAgICAgICA8IS0tRE8gU0VBUkNILS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCc6IGZpZWxkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBmaWVsZFZhbHVlRGF0ZUZyb20gPT09IHVuZGVmaW5lZCAmJiBmaWVsZFZhbHVlRGF0ZVRvID09PSB1bmRlZmluZWR9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIGZpZWxkVmFsdWVEYXRlRnJvbSA9PT0gdW5kZWZpbmVkICYmIGZpZWxkVmFsdWVEYXRlVG8gPT09IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ21zLUljb24gbXMtSWNvbi0tU2VhcmNoJ1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS1DTEVBUi0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ21zLUljb24gbXMtSWNvbi0tQ2FuY2VsJ1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1GSUxURVIgQ0hJUFMtLT5cclxuICAgIDwhLS0gVGhpcyBleGFtcGxlIHJlcXVpcmVzIFRhaWx3aW5kIENTUyB2Mi4wKyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXIgJiYgZmlsdGVyLm1lbWJlclwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtY2hpcHNcIj5cclxuICAgICAgICAgICAge3sgZmlsdGVyLnVpTmFtZSB9fSB7eyBmaWx0ZXIudWlPcGVyYXRvciB9fSAne3sgZmlsdGVyLnVpVmFsdWUgfX0nXHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZHZhbmNlZC1zZWFyY2gtY2hpcHMtcmVtb3ZlLWZpbHRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+UmVtb3ZlIGxhcmdlIG9wdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTIgdy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDggOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xIDFsNiA2bTAtNkwxIDdcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
@@ -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=