@recursyve/nice-data-filter-kit 15.3.4 → 16.1.0

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 (171) hide show
  1. package/{esm2020 → esm2022}/lib/components/base-list/base-list.component.mjs +8 -8
  2. package/{esm2020 → esm2022}/lib/components/base-list/base-list.module.mjs +40 -40
  3. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-buttons.directive.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-cards.directive.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-custom-content.directive.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-directives.module.mjs +19 -19
  7. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-empty-search-result-state.directive.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-empty-state.directive.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-filters.directive.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-table.directive.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/components/base-list/directives/base-list-title.directive.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/components/base-list/providers/base-filter.service.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/components/base-list/providers/base-list-saved-report.service.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/components/base-list/store/base-list.query.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/components/base-list/store/base-list.service.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/components/base-list/store/base-list.store.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/components/multi-state-list/multi-state-list.component.mjs +8 -8
  18. package/{esm2020 → esm2022}/lib/components/multi-state-list/multi-state-list.module.mjs +40 -40
  19. package/{esm2020 → esm2022}/lib/components/multi-state-list/store/multi-state-list.query.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/components/multi-state-list/store/multi-state-list.service.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/components/multi-state-list/store/multi-state-list.store.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/advanced-filters-trigger.directive.mjs +4 -4
  23. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.mjs +119 -0
  24. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.mjs +148 -0
  25. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/providers/async-typeahead.provider.mjs +4 -4
  28. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.component.mjs +40 -0
  29. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/rule/components/filter.component.mjs +4 -4
  30. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.component.mjs +28 -0
  31. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.component.mjs +33 -0
  32. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.mjs +30 -0
  33. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.mjs +60 -0
  34. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.mjs +31 -0
  35. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.mjs +72 -0
  36. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.mjs +80 -0
  37. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/common/data.directive.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.component.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/export-buttons/export.directive.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/search/search.component.mjs +5 -5
  43. package/{esm2020 → esm2022}/lib/components/nice-filter-view/directives/mat-paginator.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/components/nice-filter-view/directives/mat-sort.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/components/nice-filter-view/directives/mat-tables.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/components/nice-filter-view/directives/query-params.directive.mjs +4 -4
  47. package/{esm2020 → esm2022}/lib/components/nice-filter-view/nice-base-filter-view.component.mjs +4 -4
  48. package/{esm2020 → esm2022}/lib/components/nice-filter-view/nice-filter-view.component.mjs +8 -8
  49. package/{esm2020 → esm2022}/lib/components/nice-filter-view/nice-filter-view.module.mjs +40 -40
  50. package/{esm2020 → esm2022}/lib/components/nice-filter-view/nice-nested-filter-view.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/components/nice-filter-view/pipes/filter-group-icon.pipe.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/components/nice-filter-view/store/nice-filter-view.query.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/components/nice-filter-view/store/nice-filter-view.service.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/components/nice-filter-view/store/nice-filter-view.store.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/components/query-builder/filter-selection/filter-selection.component.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/components/query-builder/pipes/filter-group-icon.pipe.mjs +4 -4
  57. package/{esm2020 → esm2022}/lib/components/query-builder/query-builder-trigger.directive.mjs +4 -4
  58. package/esm2022/lib/components/query-builder/query-builder.component.mjs +100 -0
  59. package/{esm2020 → esm2022}/lib/components/query-builder/query-builder.module.mjs +45 -45
  60. package/esm2022/lib/components/query-builder/rule/components/date/date-filter.component.mjs +40 -0
  61. package/{esm2020 → esm2022}/lib/components/query-builder/rule/components/filter.component.mjs +4 -4
  62. package/esm2022/lib/components/query-builder/rule/components/number/number-filter.component.mjs +28 -0
  63. package/esm2022/lib/components/query-builder/rule/components/radio/radio-filter.component.mjs +30 -0
  64. package/esm2022/lib/components/query-builder/rule/components/select/select-filter.component.mjs +87 -0
  65. package/esm2022/lib/components/query-builder/rule/components/text/text-filter.component.mjs +31 -0
  66. package/{esm2020 → esm2022}/lib/components/query-builder/rule/rule.component.mjs +4 -4
  67. package/esm2022/lib/components/query-builder/utils/qb-filter.utils.mjs +90 -0
  68. package/{esm2020 → esm2022}/lib/directive/selectable-list/providers/preload-selected-entities.provider.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/directive/selectable-list/providers/selectable-list-content.service.mjs +4 -4
  70. package/{esm2020 → esm2022}/lib/directive/selectable-list/selectable-list-checkbox.directive.mjs +4 -4
  71. package/{esm2020 → esm2022}/lib/directive/selectable-list/selectable-list-select-all.directive.mjs +4 -4
  72. package/{esm2020 → esm2022}/lib/directive/selectable-list/selectable-list-state.directive.mjs +4 -4
  73. package/{esm2020 → esm2022}/lib/directive/selectable-list/selectable-list.directive.mjs +4 -4
  74. package/{esm2020 → esm2022}/lib/directive/selectable-list/selectable-list.module.mjs +5 -5
  75. package/{esm2020 → esm2022}/lib/directive/selectable-list/store/selectable-list.service.mjs +4 -4
  76. package/esm2022/lib/models/filter.model.mjs +10 -0
  77. package/{esm2020 → esm2022}/lib/utils/date.adapter.mjs +4 -4
  78. package/{fesm2020 → fesm2022}/recursyve-nice-data-filter-kit.mjs +601 -573
  79. package/fesm2022/recursyve-nice-data-filter-kit.mjs.map +1 -0
  80. package/lib/components/base-list/base-list.component.d.ts +1 -1
  81. package/lib/components/base-list/directives/base-list-buttons.directive.d.ts +1 -1
  82. package/lib/components/base-list/directives/base-list-table.directive.d.ts +1 -1
  83. package/lib/components/multi-state-list/multi-state-list.component.d.ts +1 -1
  84. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters-trigger.directive.d.ts +1 -1
  85. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.d.ts +23 -22
  86. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.component.d.ts +8 -0
  87. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.d.ts +1 -1
  88. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.d.ts +1 -1
  89. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.d.ts +1 -1
  90. package/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.d.ts +1 -1
  91. package/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.d.ts +1 -1
  92. package/lib/components/nice-filter-view/components/export-buttons/export.directive.d.ts +1 -1
  93. package/lib/components/nice-filter-view/components/search/search.component.d.ts +1 -1
  94. package/lib/components/nice-filter-view/nice-filter-view.component.d.ts +1 -1
  95. package/lib/components/query-builder/filter-selection/filter-selection.component.d.ts +1 -1
  96. package/lib/components/query-builder/query-builder-trigger.directive.d.ts +1 -1
  97. package/lib/components/query-builder/query-builder.component.d.ts +1 -1
  98. package/lib/components/query-builder/rule/components/radio/radio-filter.component.d.ts +1 -1
  99. package/lib/components/query-builder/rule/components/select/select-filter.component.d.ts +1 -1
  100. package/lib/components/query-builder/rule/components/text/text-filter.component.d.ts +1 -1
  101. package/lib/components/query-builder/rule/rule.component.d.ts +1 -1
  102. package/lib/directive/selectable-list/selectable-list-checkbox.directive.d.ts +1 -1
  103. package/lib/directive/selectable-list/selectable-list-select-all.directive.d.ts +1 -1
  104. package/lib/directive/selectable-list/selectable-list.directive.d.ts +1 -1
  105. package/lib/models/filter.model.d.ts +4 -1
  106. package/package.json +13 -19
  107. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.mjs +0 -119
  108. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.mjs +0 -145
  109. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.component.mjs +0 -40
  110. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.component.mjs +0 -28
  111. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.mjs +0 -30
  112. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.mjs +0 -60
  113. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.mjs +0 -31
  114. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.mjs +0 -71
  115. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.mjs +0 -79
  116. package/esm2020/lib/components/query-builder/query-builder.component.mjs +0 -100
  117. package/esm2020/lib/components/query-builder/rule/components/date/date-filter.component.mjs +0 -40
  118. package/esm2020/lib/components/query-builder/rule/components/number/number-filter.component.mjs +0 -28
  119. package/esm2020/lib/components/query-builder/rule/components/radio/radio-filter.component.mjs +0 -30
  120. package/esm2020/lib/components/query-builder/rule/components/select/select-filter.component.mjs +0 -87
  121. package/esm2020/lib/components/query-builder/rule/components/text/text-filter.component.mjs +0 -31
  122. package/esm2020/lib/components/query-builder/utils/qb-filter.utils.mjs +0 -89
  123. package/esm2020/lib/models/filter.model.mjs +0 -9
  124. package/fesm2015/recursyve-nice-data-filter-kit.mjs +0 -5586
  125. package/fesm2015/recursyve-nice-data-filter-kit.mjs.map +0 -1
  126. package/fesm2020/recursyve-nice-data-filter-kit.mjs.map +0 -1
  127. /package/{esm2020 → esm2022}/lib/api/dto/saved-reports.dto.mjs +0 -0
  128. /package/{esm2020 → esm2022}/lib/api/filter.api.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/api/models/saved-reports.model.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/api/public-api.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/api/saved-report.api.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/components/base-list/base-list.constant.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/components/base-list/models/columns.model.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/components/base-list/models/export.model.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/components/base-list/models/icons.model.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/components/base-list/models/layout.model.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/components/base-list/public-api.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/components/multi-state-list/models/list-states.model.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/components/multi-state-list/multi-state-list.constant.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/components/multi-state-list/providers/multi-state-filter.service.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/components/multi-state-list/public-api.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.constant.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.form.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/models/icons.model.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/components/advanced-filters/public-api.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/models/order-options.model.mjs +0 -0
  147. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/nice-filter-view.constant.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/components/nice-filter-view/public-api.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/components/query-builder/models/icons.model.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/components/query-builder/providers/filter-group.service.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/components/query-builder/public-api.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/components/query-builder/query-builder.constant.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/components/query-builder/query-builder.form.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/directive/public-api.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/directive/selectable-list/model/load-all-entities-options.model.mjs +0 -0
  157. /package/{esm2020 → esm2022}/lib/directive/selectable-list/model/selectable-list-options.model.mjs +0 -0
  158. /package/{esm2020 → esm2022}/lib/directive/selectable-list/public-api.mjs +0 -0
  159. /package/{esm2020 → esm2022}/lib/directive/selectable-list/selectable-list.constant.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/directive/selectable-list/store/selectable-list-state.query.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/directive/selectable-list/store/selectable-list-state.service.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/directive/selectable-list/store/selectable-list.state.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/models/public-api.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/models/query.model.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/utils/filter.utils.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/utils/order.utils.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/utils/public-api.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/utils/query-params.utils.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/utils/string.utils.mjs +0 -0
  170. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  171. /package/{esm2020 → esm2022}/recursyve-nice-data-filter-kit.mjs +0 -0
@@ -105,5 +105,5 @@ export declare class NiceBaseListComponent<Filter extends NiceFilterService<any>
105
105
  setColumns(columns: TableColumns[]): void;
106
106
  addColumns(columns: TableColumns[], prepend?: boolean): void;
107
107
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceBaseListComponent<any>, [{ optional: true; }, null, null, null, null, null, null, null, null, null, null]>;
108
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceBaseListComponent<any>, "nice-base-list", never, { "mode": "mode"; "layout": "layout"; "layoutContent": "layoutContent"; "autoChangeLayout": "autoChangeLayout"; "baseRoute": "baseRoute"; "routeFn": "routeFn"; "navigateFn": "navigateFn"; "autoLoad": "autoLoad"; "pageTitle": "pageTitle"; "canExport": "canExport"; "disableRouting": "disableRouting"; "customExport": "customExport"; "queryParams": "queryParams"; "configQueryParams": "configQueryParams"; }, { "newPage": "newPage"; }, ["title", "table", "cards", "customContent", "filters", "emptyState", "emptySearchResultState", "buttons"], never, false, never>;
108
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceBaseListComponent<any>, "nice-base-list", never, { "mode": { "alias": "mode"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "layoutContent": { "alias": "layoutContent"; "required": false; }; "autoChangeLayout": { "alias": "autoChangeLayout"; "required": false; }; "baseRoute": { "alias": "baseRoute"; "required": false; }; "routeFn": { "alias": "routeFn"; "required": false; }; "navigateFn": { "alias": "navigateFn"; "required": false; }; "autoLoad": { "alias": "autoLoad"; "required": false; }; "pageTitle": { "alias": "pageTitle"; "required": false; }; "canExport": { "alias": "canExport"; "required": false; }; "disableRouting": { "alias": "disableRouting"; "required": false; }; "customExport": { "alias": "customExport"; "required": false; }; "queryParams": { "alias": "queryParams"; "required": false; }; "configQueryParams": { "alias": "configQueryParams"; "required": false; }; }, { "newPage": "newPage"; }, ["title", "table", "cards", "customContent", "filters", "emptyState", "emptySearchResultState", "buttons"], never, false, never>;
109
109
  }
@@ -5,5 +5,5 @@ export declare class NiceBaseListButtonsDirective {
5
5
  position: "prefix" | "suffix" | "search";
6
6
  constructor(template: TemplateRef<any>);
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceBaseListButtonsDirective, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<NiceBaseListButtonsDirective, "[niceListButton]", never, { "position": "position"; }, {}, never, never, false, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceBaseListButtonsDirective, "[niceListButton]", never, { "position": { "alias": "position"; "required": false; }; }, {}, never, never, false, never>;
9
9
  }
@@ -5,5 +5,5 @@ export declare class NiceBaseListTableDirective {
5
5
  stickyHeader: boolean;
6
6
  constructor(template: TemplateRef<any>);
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceBaseListTableDirective, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<NiceBaseListTableDirective, "[niceListTable]", never, { "stickyHeader": "stickyHeader"; }, {}, never, never, false, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceBaseListTableDirective, "[niceListTable]", never, { "stickyHeader": { "alias": "stickyHeader"; "required": false; }; }, {}, never, never, false, never>;
9
9
  }
@@ -14,5 +14,5 @@ export declare class NiceMultiStateListComponent extends NiceBaseListComponent {
14
14
  constructor(enableQueryBuilder: boolean, icons: NiceBaseIconOptions, listLayout: BaseListLayout, exportsSetting: ExportSettings, query: NiceMultiStateListQuery, activatedRoute: ActivatedRoute, bottomSheet: MatBottomSheet, router: Router, mediaWatcher: NiceMediaWatcherService, multiStateListService: NiceMultiStateListService);
15
15
  private switchState;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceMultiStateListComponent, [{ optional: true; }, null, null, null, null, null, null, null, null, null]>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceMultiStateListComponent, "nice-multi-state-list", never, { "state": "state"; }, {}, never, never, false, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceMultiStateListComponent, "nice-multi-state-list", never, { "state": { "alias": "state"; "required": false; }; }, {}, never, never, false, never>;
18
18
  }
@@ -23,5 +23,5 @@ export declare class AdvancedFiltersTriggerDirective {
23
23
  private close;
24
24
  private updateFilterSelectionComponent;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<AdvancedFiltersTriggerDirective, never>;
26
- static ɵdir: i0.ɵɵDirectiveDeclaration<AdvancedFiltersTriggerDirective, "[niceAdvancedFiltersTrigger]", ["niceAdvancedFiltersTrigger"], { "position": "position"; }, { "advancedFilterSelected": "advancedFilterSelected"; }, never, never, false, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AdvancedFiltersTriggerDirective, "[niceAdvancedFiltersTrigger]", ["niceAdvancedFiltersTrigger"], { "position": { "alias": "position"; "required": false; }; }, { "advancedFilterSelected": "advancedFilterSelected"; }, never, never, false, never>;
27
27
  }
@@ -8,27 +8,28 @@ import * as i3 from "./filter-selection/filter-selection.component";
8
8
  import * as i4 from "./rule/rule.component";
9
9
  import * as i5 from "./rule/components/date/date-filter.component";
10
10
  import * as i6 from "./rule/components/number/number-filter.component";
11
- import * as i7 from "./rule/components/radio/radio-filter.component";
12
- import * as i8 from "./rule/components/select/select-filter.component";
13
- import * as i9 from "./rule/components/text/text-filter.component";
14
- import * as i10 from "./advanced-filters-trigger.directive";
15
- import * as i11 from "../../pipes/filter-group-icon.pipe";
16
- import * as i12 from "@angular/common";
17
- import * as i13 from "@angular/forms";
18
- import * as i14 from "@angular/material/radio";
19
- import * as i15 from "@angular/material/card";
20
- import * as i16 from "@angular/material/list";
21
- import * as i17 from "@recursyve/nice-ui-kit.v2";
22
- import * as i18 from "@angular/material/icon";
23
- import * as i19 from "@angular/material/core";
24
- import * as i20 from "@angular/material/button";
25
- import * as i21 from "@angular/material/form-field";
26
- import * as i22 from "@angular/material/select";
27
- import * as i23 from "@angular/material/input";
28
- import * as i24 from "@angular/material/button-toggle";
29
- import * as i25 from "@ngx-translate/core";
30
- import * as i26 from "@angular/material/datepicker";
31
- import * as i27 from "ngx-mask";
11
+ import * as i7 from "./rule/components/options/options-filter.component";
12
+ import * as i8 from "./rule/components/radio/radio-filter.component";
13
+ import * as i9 from "./rule/components/select/select-filter.component";
14
+ import * as i10 from "./rule/components/text/text-filter.component";
15
+ import * as i11 from "./advanced-filters-trigger.directive";
16
+ import * as i12 from "../../pipes/filter-group-icon.pipe";
17
+ import * as i13 from "@angular/common";
18
+ import * as i14 from "@angular/forms";
19
+ import * as i15 from "@angular/material/radio";
20
+ import * as i16 from "@angular/material/card";
21
+ import * as i17 from "@angular/material/list";
22
+ import * as i18 from "@recursyve/nice-ui-kit.v2";
23
+ import * as i19 from "@angular/material/icon";
24
+ import * as i20 from "@angular/material/core";
25
+ import * as i21 from "@angular/material/button";
26
+ import * as i22 from "@angular/material/form-field";
27
+ import * as i23 from "@angular/material/select";
28
+ import * as i24 from "@angular/material/input";
29
+ import * as i25 from "@angular/material/button-toggle";
30
+ import * as i26 from "@ngx-translate/core";
31
+ import * as i27 from "@angular/material/datepicker";
32
+ import * as i28 from "ngx-mask";
32
33
  export interface NiceAdvancedFiltersOptions {
33
34
  icons?: NiceAdvancedFilterIconOptions;
34
35
  filterGroupService?: Type<NiceFilterGroupService<any>>;
@@ -36,6 +37,6 @@ export interface NiceAdvancedFiltersOptions {
36
37
  export declare class NiceAdvancedFiltersModule {
37
38
  static forRoot(options?: NiceAdvancedFiltersOptions): ModuleWithProviders<NiceAdvancedFiltersModule>;
38
39
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceAdvancedFiltersModule, never>;
39
- static ɵmod: i0.ɵɵNgModuleDeclaration<NiceAdvancedFiltersModule, [typeof i1.NiceAdvancedFiltersComponent, typeof i2.NiceAdvancedFiltersButtonComponent, typeof i3.NiceAdvancedFilterSelectionComponent, typeof i4.NiceAdvancedRuleComponent, typeof i5.NiceAdvancedDateFilterComponent, typeof i6.NiceAdvancedNumberFilterComponent, typeof i7.NiceAdvancedRadioFilterComponent, typeof i8.NiceAdvancedSelectFilterComponent, typeof i9.NiceAdvancedTextFilterComponent, typeof i10.AdvancedFiltersTriggerDirective, typeof i11.NiceFilterGroupIconPipe], [typeof i12.CommonModule, typeof i13.ReactiveFormsModule, typeof i14.MatRadioModule, typeof i15.MatCardModule, typeof i16.MatListModule, typeof i17.NiceLoadingSpinnerModule, typeof i18.MatIconModule, typeof i19.MatRippleModule, typeof i20.MatButtonModule, typeof i21.MatFormFieldModule, typeof i19.MatOptionModule, typeof i22.MatSelectModule, typeof i13.FormsModule, typeof i23.MatInputModule, typeof i24.MatButtonToggleModule, typeof i25.TranslateModule, typeof i26.MatDatepickerModule, typeof i17.NiceTypeaheadModule, typeof i17.NiceAsyncTypeaheadModule, typeof i27.NgxMaskDirective], [typeof i1.NiceAdvancedFiltersComponent, typeof i2.NiceAdvancedFiltersButtonComponent, typeof i10.AdvancedFiltersTriggerDirective]>;
40
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NiceAdvancedFiltersModule, [typeof i1.NiceAdvancedFiltersComponent, typeof i2.NiceAdvancedFiltersButtonComponent, typeof i3.NiceAdvancedFilterSelectionComponent, typeof i4.NiceAdvancedRuleComponent, typeof i5.NiceAdvancedDateFilterComponent, typeof i6.NiceAdvancedNumberFilterComponent, typeof i7.NiceAdvancedOptionsFilterComponent, typeof i8.NiceAdvancedRadioFilterComponent, typeof i9.NiceAdvancedSelectFilterComponent, typeof i10.NiceAdvancedTextFilterComponent, typeof i11.AdvancedFiltersTriggerDirective, typeof i12.NiceFilterGroupIconPipe], [typeof i13.CommonModule, typeof i14.ReactiveFormsModule, typeof i15.MatRadioModule, typeof i16.MatCardModule, typeof i17.MatListModule, typeof i18.NiceLoadingSpinnerModule, typeof i19.MatIconModule, typeof i20.MatRippleModule, typeof i21.MatButtonModule, typeof i22.MatFormFieldModule, typeof i20.MatOptionModule, typeof i23.MatSelectModule, typeof i14.FormsModule, typeof i24.MatInputModule, typeof i25.MatButtonToggleModule, typeof i26.TranslateModule, typeof i27.MatDatepickerModule, typeof i18.NiceTypeaheadModule, typeof i18.NiceAsyncTypeaheadModule, typeof i28.NgxMaskDirective], [typeof i1.NiceAdvancedFiltersComponent, typeof i2.NiceAdvancedFiltersButtonComponent, typeof i11.AdvancedFiltersTriggerDirective]>;
40
41
  static ɵinj: i0.ɵɵInjectorDeclaration<NiceAdvancedFiltersModule>;
41
42
  }
@@ -0,0 +1,8 @@
1
+ import { FilterConfigurationModel } from "../../../../../../../models/filter.model";
2
+ import { FilterComponent } from "../filter.component";
3
+ import * as i0 from "@angular/core";
4
+ export declare class NiceAdvancedOptionsFilterComponent extends FilterComponent<string> {
5
+ filterConfig: FilterConfigurationModel;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceAdvancedOptionsFilterComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedOptionsFilterComponent, "nice-advanced-options-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
8
+ }
@@ -4,5 +4,5 @@ import * as i0 from "@angular/core";
4
4
  export declare class NiceAdvancedRadioFilterComponent extends FilterComponent<string> {
5
5
  filterConfig: FilterConfigurationModel;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceAdvancedRadioFilterComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedRadioFilterComponent, "nice-advanced-radio-filter", never, { "filterConfig": "filterConfig"; }, {}, never, never, false, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedRadioFilterComponent, "nice-advanced-radio-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
8
8
  }
@@ -14,5 +14,5 @@ export declare class NiceAdvancedSelectFilterComponent extends FilterComponent<u
14
14
  onValueChange(value: unknown): void;
15
15
  writeValue(value: unknown): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceAdvancedSelectFilterComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedSelectFilterComponent, "nice-advanced-select-filter", never, { "filterConfig": "filterConfig"; }, {}, never, never, false, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedSelectFilterComponent, "nice-advanced-select-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
18
18
  }
@@ -4,5 +4,5 @@ import * as i0 from "@angular/core";
4
4
  export declare class NiceAdvancedTextFilterComponent extends FilterComponent<string> {
5
5
  filterConfig: FilterConfigurationModel;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceAdvancedTextFilterComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedTextFilterComponent, "nice-advanced-text-filter", never, { "filterConfig": "filterConfig"; }, {}, never, never, false, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedTextFilterComponent, "nice-advanced-text-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
8
8
  }
@@ -22,5 +22,5 @@ export declare class NiceAdvancedRuleComponent implements OnInit {
22
22
  addValue(index: number): void;
23
23
  removeValue(i: number): void;
24
24
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceAdvancedRuleComponent, [{ optional: true; }, null]>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedRuleComponent, "nice-advanced-rule", never, { "filterConfigs": "filterConfigs"; }, { "remove": "remove"; }, never, never, false, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceAdvancedRuleComponent, "nice-advanced-rule", never, { "filterConfigs": { "alias": "filterConfigs"; "required": false; }; }, { "remove": "remove"; }, never, never, false, never>;
26
26
  }
@@ -25,5 +25,5 @@ export declare class NiceFilterExportButtonsComponent {
25
25
  clickPrint(): void;
26
26
  clickPdf(ids?: number[]): void;
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceFilterExportButtonsComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceFilterExportButtonsComponent, "nice-filter-export-buttons, div[nice-filter-export-buttons]", never, { "customExport": "customExport"; "downloadFileName": "downloadFileName"; "canPrint": "canPrint"; }, {}, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceFilterExportButtonsComponent, "nice-filter-export-buttons, div[nice-filter-export-buttons]", never, { "customExport": { "alias": "customExport"; "required": false; }; "downloadFileName": { "alias": "downloadFileName"; "required": false; }; "canPrint": { "alias": "canPrint"; "required": false; }; }, {}, never, never, false, never>;
29
29
  }
@@ -7,5 +7,5 @@ export declare class NiceFilterExportDirective {
7
7
  constructor(service: NiceFilterViewService);
8
8
  onClick(): void;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceFilterExportDirective, never>;
10
- static ɵdir: i0.ɵɵDirectiveDeclaration<NiceFilterExportDirective, "[niceFilterExport]", never, { "type": "type"; "downloadFileName": "downloadFileName"; }, {}, never, never, false, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceFilterExportDirective, "[niceFilterExport]", never, { "type": { "alias": "type"; "required": false; }; "downloadFileName": { "alias": "downloadFileName"; "required": false; }; }, {}, never, never, false, never>;
11
11
  }
@@ -16,5 +16,5 @@ export declare class NiceFilterSearchComponent implements OnInit, OnDestroy {
16
16
  ngOnDestroy(): void;
17
17
  onUpdateSearch(search: string): void;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceFilterSearchComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceFilterSearchComponent, "nice-filter-search", never, { "appearance": "appearance"; }, {}, never, ["[niceFilterSearchButtons]"], false, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceFilterSearchComponent, "nice-filter-search", never, { "appearance": { "alias": "appearance"; "required": false; }; }, {}, never, ["[niceFilterSearchButtons]"], false, never>;
20
20
  }
@@ -8,5 +8,5 @@ export declare class NiceFilterViewComponent implements OnChanges {
8
8
  constructor(service: NiceFilterViewService);
9
9
  ngOnChanges(changes: SimpleChanges): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceFilterViewComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceFilterViewComponent, "nice-filter-view", never, { "queryParams": "queryParams"; }, {}, never, ["*"], false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceFilterViewComponent, "nice-filter-view", never, { "queryParams": { "alias": "queryParams"; "required": false; }; }, {}, never, ["*"], false, never>;
12
12
  }
@@ -8,5 +8,5 @@ export declare class FilterSelectionComponent {
8
8
  get filterGroups(): [FilterGroupConfiguration, FilterConfigurationModel[]][];
9
9
  selectFilter(filterConfigurationModel: FilterConfigurationModel): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterSelectionComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectionComponent, "nice-filter-selection", never, { "filterConfigs": "filterConfigs"; "loading": "loading"; }, { "filterSelected": "filterSelected"; }, never, never, false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectionComponent, "nice-filter-selection", never, { "filterConfigs": { "alias": "filterConfigs"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "filterSelected": "filterSelected"; }, never, never, false, never>;
12
12
  }
@@ -21,5 +21,5 @@ export declare class QueryBuilderTriggerDirective {
21
21
  private updateFilterSelectionComponent;
22
22
  private isMobile;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<QueryBuilderTriggerDirective, never>;
24
- static ɵdir: i0.ɵɵDirectiveDeclaration<QueryBuilderTriggerDirective, "[niceQueryBuilderTrigger]", never, { "queryBuilderFilters": "queryBuilderFilters"; "queryBuilderFiltersLoading": "queryBuilderFiltersLoading"; }, { "queryBuilderFilterSelected": "queryBuilderFilterSelected"; }, never, never, false, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<QueryBuilderTriggerDirective, "[niceQueryBuilderTrigger]", never, { "queryBuilderFilters": { "alias": "queryBuilderFilters"; "required": false; }; "queryBuilderFiltersLoading": { "alias": "queryBuilderFiltersLoading"; "required": false; }; }, { "queryBuilderFilterSelected": "queryBuilderFilterSelected"; }, never, never, false, never>;
25
25
  }
@@ -29,5 +29,5 @@ export declare class NiceQueryBuilderComponent implements ControlValueAccessor {
29
29
  onClickSaveReport(): void;
30
30
  onClickUpdateReport(): void;
31
31
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceQueryBuilderComponent, [{ optional: true; }, null]>;
32
- static ɵcmp: i0.ɵɵComponentDeclaration<NiceQueryBuilderComponent, "nice-query-builder", never, { "filterConfigs": "filterConfigs"; "currentSavedReport": "currentSavedReport"; "loading": "loading"; }, { "close": "close"; "createReport": "createReport"; "updateReport": "updateReport"; }, never, never, false, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceQueryBuilderComponent, "nice-query-builder", never, { "filterConfigs": { "alias": "filterConfigs"; "required": false; }; "currentSavedReport": { "alias": "currentSavedReport"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "close": "close"; "createReport": "createReport"; "updateReport": "updateReport"; }, never, never, false, never>;
33
33
  }
@@ -4,5 +4,5 @@ import * as i0 from "@angular/core";
4
4
  export declare class RadioFilterComponent extends FilterComponent<string> {
5
5
  filterConfig: FilterConfigurationModel;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<RadioFilterComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<RadioFilterComponent, "nice-radio-filter", never, { "filterConfig": "filterConfig"; }, {}, never, never, false, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioFilterComponent, "nice-radio-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
8
8
  }
@@ -18,5 +18,5 @@ export declare class SelectFilterComponent extends FilterComponent<unknown> impl
18
18
  ngOnDestroy(): void;
19
19
  writeValue(value: unknown): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectFilterComponent, [{ optional: true; }]>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectFilterComponent, "nice-select-filter", never, { "filterConfig": "filterConfig"; }, {}, never, never, false, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectFilterComponent, "nice-select-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
22
22
  }
@@ -4,5 +4,5 @@ import * as i0 from "@angular/core";
4
4
  export declare class TextFilterComponent extends FilterComponent<string> {
5
5
  filterConfig: FilterConfigurationModel;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TextFilterComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<TextFilterComponent, "nice-text-filter", never, { "filterConfig": "filterConfig"; }, {}, never, never, false, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextFilterComponent, "nice-text-filter", never, { "filterConfig": { "alias": "filterConfig"; "required": false; }; }, {}, never, never, false, never>;
8
8
  }
@@ -25,5 +25,5 @@ export declare class RuleComponent implements OnInit {
25
25
  onUpdateFilterOperator(operator: string): void;
26
26
  onClickDelete(index: number): void;
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<RuleComponent, [{ optional: true; }, null]>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<RuleComponent, "nice-rule", never, { "filterConfigs": "filterConfigs"; }, { "remove": "remove"; }, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<RuleComponent, "nice-rule", never, { "filterConfigs": { "alias": "filterConfigs"; "required": false; }; }, { "remove": "remove"; }, never, never, false, never>;
29
29
  }
@@ -22,5 +22,5 @@ export declare class NiceSelectableListCheckboxDirective implements OnInit, OnDe
22
22
  private handleSelectPage;
23
23
  private updateCheckboxState;
24
24
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListCheckboxDirective, never>;
25
- static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListCheckboxDirective, "mat-checkbox[niceSelectableListCheckbox]", never, { "selectableEntity": "selectableEntity"; "selectPage": "selectPage"; }, {}, never, never, false, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListCheckboxDirective, "mat-checkbox[niceSelectableListCheckbox]", never, { "selectableEntity": { "alias": "selectableEntity"; "required": false; }; "selectPage": { "alias": "selectPage"; "required": false; }; }, {}, never, never, false, never>;
26
26
  }
@@ -14,5 +14,5 @@ export declare class NiceSelectableListSelectAllDirective implements OnInit {
14
14
  ngOnInit(): void;
15
15
  onClick(): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListSelectAllDirective, [{ optional: true; }, null, null]>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListSelectAllDirective, "button[niceSelectableListSelectAll]", never, { "action": "action"; }, {}, never, never, false, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListSelectAllDirective, "button[niceSelectableListSelectAll]", never, { "action": { "alias": "action"; "required": false; }; }, {}, never, never, false, never>;
18
18
  }
@@ -23,5 +23,5 @@ export declare class NiceSelectableListDirective implements OnInit, OnDestroy, O
23
23
  ngAfterContentInit(): void;
24
24
  private listenOnStateChanges;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListDirective, never>;
26
- static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListDirective, "[niceSelectableList]", never, { "state": "state"; "options": "options"; }, {}, ["checkboxes"], never, false, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListDirective, "[niceSelectableList]", never, { "state": { "alias": "state"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, ["checkboxes"], never, false, never>;
27
27
  }
@@ -43,8 +43,10 @@ export declare enum FilterType {
43
43
  Number = "number",
44
44
  Date = "date",
45
45
  Select = "select",
46
- Radio = "radio"
46
+ Radio = "radio",
47
+ Options = "options"
47
48
  }
49
+ export type OptionsFilterSelectionMode = "radio" | "select";
48
50
  export interface RadioFilterOptionConfiguration {
49
51
  key: string;
50
52
  name: string;
@@ -63,6 +65,7 @@ export interface FilterBaseConfigurationModel {
63
65
  group?: FilterGroupConfiguration;
64
66
  values?: unknown[];
65
67
  lazyLoading?: boolean;
68
+ selectionMode?: OptionsFilterSelectionMode;
66
69
  options?: RadioFilterOptionConfiguration[];
67
70
  mask?: string;
68
71
  }
package/package.json CHANGED
@@ -1,39 +1,33 @@
1
1
  {
2
2
  "name": "@recursyve/nice-data-filter-kit",
3
- "version": "15.3.4",
3
+ "version": "16.1.0",
4
4
  "exports": {
5
5
  ".": {
6
6
  "sass": "./_index.scss",
7
7
  "types": "./index.d.ts",
8
- "esm2020": "./esm2020/recursyve-nice-data-filter-kit.mjs",
9
- "es2020": "./fesm2020/recursyve-nice-data-filter-kit.mjs",
10
- "es2015": "./fesm2015/recursyve-nice-data-filter-kit.mjs",
11
- "node": "./fesm2015/recursyve-nice-data-filter-kit.mjs",
12
- "default": "./fesm2020/recursyve-nice-data-filter-kit.mjs"
8
+ "esm2022": "./esm2022/recursyve-nice-data-filter-kit.mjs",
9
+ "esm": "./esm2022/recursyve-nice-data-filter-kit.mjs",
10
+ "default": "./fesm2022/recursyve-nice-data-filter-kit.mjs"
13
11
  },
14
12
  "./package.json": {
15
13
  "default": "./package.json"
16
14
  }
17
15
  },
18
16
  "peerDependencies": {
19
- "@angular/cdk": "^15.0.0",
20
- "@angular/common": "^15.0.0",
21
- "@angular/core": "^15.0.0",
22
- "@angular/forms": "^15.0.0",
23
- "@angular/material": "^15.0.0",
17
+ "@angular/cdk": "^16.0.0",
18
+ "@angular/common": "^16.0.0",
19
+ "@angular/core": "^16.0.0",
20
+ "@angular/forms": "^16.0.0",
21
+ "@angular/material": "^16.0.0",
24
22
  "@datorama/akita": "^8.0.1",
25
- "@ngx-translate/core": "^14.0.0",
26
- "@recursyve/nice-ui-kit.v2": ">= 15.0.0-beta.117",
27
- "@recursyve/ngx-form-generator": ">= 15.0.0-beta.37"
23
+ "@ngx-translate/core": "^15.0.0",
24
+ "@recursyve/nice-ui-kit.v2": ">= 16.0.0-beta.132",
25
+ "@recursyve/ngx-form-generator": ">= 16.0.0-beta.47"
28
26
  },
29
27
  "dependencies": {
30
28
  "tslib": "^2.0.0"
31
29
  },
32
- "module": "fesm2015/recursyve-nice-data-filter-kit.mjs",
33
- "es2020": "fesm2020/recursyve-nice-data-filter-kit.mjs",
34
- "esm2020": "esm2020/recursyve-nice-data-filter-kit.mjs",
35
- "fesm2020": "fesm2020/recursyve-nice-data-filter-kit.mjs",
36
- "fesm2015": "fesm2015/recursyve-nice-data-filter-kit.mjs",
30
+ "module": "fesm2022/recursyve-nice-data-filter-kit.mjs",
37
31
  "typings": "index.d.ts",
38
32
  "sideEffects": false
39
33
  }
@@ -1,119 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Optional, ViewEncapsulation } from "@angular/core";
2
- import { GeneratedFormGroup, NgxFormGeneratorProvider } from "@recursyve/ngx-form-generator";
3
- import { NICE_ASYNC_TYPEAHEAD_PROVIDER } from "@recursyve/nice-ui-kit.v2";
4
- import { startWith } from "rxjs";
5
- import { NiceFilterViewQuery } from "../../store/nice-filter-view.query";
6
- import { NiceFilterViewService } from "../../store/nice-filter-view.service";
7
- import { ADVANCED_FILTER_ICONS } from "./advanced-filters.constant";
8
- import { AdvancedFiltersForm, FilterForm } from "./advanced-filters.form";
9
- import { AdvancedFiltersAsyncTypeaheadProvider } from "./providers/async-typeahead.provider";
10
- import { AdvancedFiltersUtils } from "./utils/advanced-filters.utils";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@recursyve/ngx-form-generator";
13
- import * as i2 from "../../store/nice-filter-view.query";
14
- import * as i3 from "../../store/nice-filter-view.service";
15
- import * as i4 from "@angular/common";
16
- import * as i5 from "@angular/forms";
17
- import * as i6 from "@angular/material/radio";
18
- import * as i7 from "@angular/material/icon";
19
- import * as i8 from "@angular/material/button";
20
- import * as i9 from "./rule/rule.component";
21
- import * as i10 from "./advanced-filters-trigger.directive";
22
- import * as i11 from "@ngx-translate/core";
23
- export class NiceAdvancedFiltersComponent {
24
- constructor(icons, formGroup, query, service, changeDetectorRef) {
25
- this.icons = icons;
26
- this.formGroup = formGroup;
27
- this.query = query;
28
- this.service = service;
29
- this.changeDetectorRef = changeDetectorRef;
30
- this.config$ = this.query.selectFilterConfig();
31
- this.rulesFormArray = this.formGroup.get("rules");
32
- this.rules$ = this.rulesFormArray.valueChanges.pipe(startWith(this.rulesFormArray.value));
33
- }
34
- ngOnInit() {
35
- const { filterParameters, subStates } = this.query.getValue();
36
- if (filterParameters.rules?.length) {
37
- this.formGroup.patchValue(new AdvancedFiltersForm(filterParameters.rules[0]));
38
- }
39
- if (subStates.selectedFilter) {
40
- this.onClickAddRule(subStates.selectedFilter);
41
- return;
42
- }
43
- }
44
- ngOnDestroy() {
45
- this.removeEmptyRules({ reload: false });
46
- }
47
- onClickAddRule(filterConfigurationModel) {
48
- this.rulesFormArray.push(new FilterForm(AdvancedFiltersUtils.createRule(filterConfigurationModel)));
49
- this.changeDetectorRef.markForCheck();
50
- }
51
- onClickDeleteRule(index) {
52
- this.rulesFormArray.removeAt(index);
53
- if (!this.rulesFormArray.length) {
54
- this.service.setRules([]);
55
- this.service.filter();
56
- this.onClose();
57
- }
58
- }
59
- onClose() {
60
- this.removeEmptyRules();
61
- this.service.updateSubState("showAdvancedFilters", false);
62
- }
63
- onRefresh() {
64
- this.service.setRules(this.formGroup.getRawValue().transform());
65
- this.service.resetResult(true);
66
- this.service.filter();
67
- }
68
- removeEmptyRules({ reload } = { reload: true }) {
69
- if (this.rulesFormArray.length !== 1) {
70
- return;
71
- }
72
- const values = this.rulesFormArray.get([0, "values"]).getRawValue();
73
- if (values.length !== 1) {
74
- return;
75
- }
76
- const value = values[0];
77
- if (value.value || value.value === false || value.secondValue || value.secondValue === true) {
78
- return;
79
- }
80
- this.rulesFormArray.removeAt(0);
81
- const { filterParameters } = this.query.getValue();
82
- if (!filterParameters.rules.length || !filterParameters.rules[0].rules.length) {
83
- return;
84
- }
85
- this.service.setRules([]);
86
- if (!reload) {
87
- return;
88
- }
89
- if (filterParameters.rules[0].rules[0].value) {
90
- this.service.filter();
91
- }
92
- }
93
- }
94
- NiceAdvancedFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAdvancedFiltersComponent, deps: [{ token: ADVANCED_FILTER_ICONS, optional: true }, { token: i1.GeneratedFormGroup }, { token: i2.NiceFilterViewQuery }, { token: i3.NiceFilterViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
95
- NiceAdvancedFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NiceAdvancedFiltersComponent, selector: "nice-advanced-filters", providers: [
96
- NgxFormGeneratorProvider.forFeature([AdvancedFiltersForm]),
97
- {
98
- provide: NICE_ASYNC_TYPEAHEAD_PROVIDER,
99
- useClass: AdvancedFiltersAsyncTypeaheadProvider,
100
- multi: true
101
- }
102
- ], ngImport: i0, template: "<div class=\"flex flex-col gap-4\" [formGroup]=\"formGroup\">\n <div class=\"advanced-filter-title\">{{ \"components.nice_advanced_filters.title\" | translate }}</div>\n\n <div class=\"flex flex-row gap-12\">\n <div class=\"advanced-filter-condition\">{{ \"components.nice_advanced_filters.conditions.should_match\" | translate }}</div>\n\n <mat-radio-group formControlName=\"condition\">\n <mat-radio-button value=\"and\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.every\" | translate }}</span></mat-radio-button>\n <mat-radio-button value=\"or\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.some\" | translate }}</span></mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div class=\"flex flex-col gap-4\" formArrayName=\"rules\" *ngFor=\"let _ of rulesFormArray.controls; let i = index\">\n <nice-advanced-rule [filterConfigs]=\"config$ | async\" [formGroupName]=\"i\" (remove)=\"onClickDeleteRule(i)\"></nice-advanced-rule>\n </div>\n\n <div>\n <button class=\"add-condition\" mat-stroked-button color=\"accent\" niceAdvancedFiltersTrigger position=\"topRight\" (advancedFilterSelected)=\"onClickAddRule($event)\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.add_condition\" | translate }}</div>\n </div>\n </button>\n </div>\n\n <div class=\"flex gap-6 justify-end pt-4\">\n <button class=\"close-button\" mat-button color=\"accent\" (click)=\"onClose()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.close\" | translate }}</div>\n </div>\n </button>\n\n <button class=\"refresh-button\" mat-flat-button color=\"accent\" (click)=\"onRefresh()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.refresh.svgIcon\">{{ icons.refresh.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.refresh\" | translate }}</div>\n </div>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i6.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.NiceAdvancedRuleComponent, selector: "nice-advanced-rule", inputs: ["filterConfigs"], outputs: ["remove"] }, { kind: "directive", type: i10.AdvancedFiltersTriggerDirective, selector: "[niceAdvancedFiltersTrigger]", inputs: ["position"], outputs: ["advancedFilterSelected"], exportAs: ["niceAdvancedFiltersTrigger"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAdvancedFiltersComponent, decorators: [{
104
- type: Component,
105
- args: [{ selector: "nice-advanced-filters", encapsulation: ViewEncapsulation.None, providers: [
106
- NgxFormGeneratorProvider.forFeature([AdvancedFiltersForm]),
107
- {
108
- provide: NICE_ASYNC_TYPEAHEAD_PROVIDER,
109
- useClass: AdvancedFiltersAsyncTypeaheadProvider,
110
- multi: true
111
- }
112
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-4\" [formGroup]=\"formGroup\">\n <div class=\"advanced-filter-title\">{{ \"components.nice_advanced_filters.title\" | translate }}</div>\n\n <div class=\"flex flex-row gap-12\">\n <div class=\"advanced-filter-condition\">{{ \"components.nice_advanced_filters.conditions.should_match\" | translate }}</div>\n\n <mat-radio-group formControlName=\"condition\">\n <mat-radio-button value=\"and\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.every\" | translate }}</span></mat-radio-button>\n <mat-radio-button value=\"or\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.some\" | translate }}</span></mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div class=\"flex flex-col gap-4\" formArrayName=\"rules\" *ngFor=\"let _ of rulesFormArray.controls; let i = index\">\n <nice-advanced-rule [filterConfigs]=\"config$ | async\" [formGroupName]=\"i\" (remove)=\"onClickDeleteRule(i)\"></nice-advanced-rule>\n </div>\n\n <div>\n <button class=\"add-condition\" mat-stroked-button color=\"accent\" niceAdvancedFiltersTrigger position=\"topRight\" (advancedFilterSelected)=\"onClickAddRule($event)\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.add_condition\" | translate }}</div>\n </div>\n </button>\n </div>\n\n <div class=\"flex gap-6 justify-end pt-4\">\n <button class=\"close-button\" mat-button color=\"accent\" (click)=\"onClose()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.close\" | translate }}</div>\n </div>\n </button>\n\n <button class=\"refresh-button\" mat-flat-button color=\"accent\" (click)=\"onRefresh()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.refresh.svgIcon\">{{ icons.refresh.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.refresh\" | translate }}</div>\n </div>\n </button>\n </div>\n</div>\n" }]
113
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
114
- type: Optional
115
- }, {
116
- type: Inject,
117
- args: [ADVANCED_FILTER_ICONS]
118
- }] }, { type: i1.GeneratedFormGroup }, { type: i2.NiceFilterViewQuery }, { type: i3.NiceFilterViewService }, { type: i0.ChangeDetectorRef }]; } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmljZS1maWx0ZXItdmlldy9jb21wb25lbnRzL2FkdmFuY2VkLWZpbHRlcnMvYWR2YW5jZWQtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmljZS1maWx0ZXItdmlldy9jb21wb25lbnRzL2FkdmFuY2VkLWZpbHRlcnMvYWR2YW5jZWQtZmlsdGVycy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBR04sUUFBUSxFQUNSLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXNCLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBRTVGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxv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VSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRDtZQUNJLE9BQU8sRUFBRSw2QkFBNkI7WUFDdEMsUUFBUSxFQUFFLHFDQUFxQztZQUMvQyxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osMEJDbENMLHMxRUE0Q0E7MkZEUGEsNEJBQTRCO2tCQWR4QyxTQUFTOytCQUNJLHVCQUF1QixpQkFFbEIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDUCx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUMxRDs0QkFDSSxPQUFPLEVBQUUsNkJBQTZCOzRCQUN0QyxRQUFRLEVBQUUscUNBQXFDOzRCQUMvQyxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBUzFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEdlbmVyYXRlZEZvcm1BcnJheSwgR2VuZXJhdGVkRm9ybUdyb3VwLCBOZ3hGb3JtR2VuZXJhdG9yUHJvdmlkZXIgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uZ3gtZm9ybS1nZW5lcmF0b3JcIjtcbmltcG9ydCB7IE5JQ0VfQVNZTkNfVFlQRUFIRUFEX1BST1ZJREVSIH0gZnJvbSBcIkByZWN1cnN5dmUvbmljZS11aS1raXQudjJcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUXVlcnlSdWxlTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL3F1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBOaWNlRmlsdGVyVmlld1F1ZXJ5IH0gZnJvbSBcIi4uLy4uL3N0b3JlL25pY2UtZmlsdGVyLXZpZXcucXVlcnlcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJWaWV3U2VydmljZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9uaWNlLWZpbHRlci12aWV3LnNlcnZpY2VcIjtcbmltcG9ydCB7IEFEVkFOQ0VEX0ZJTFRFUl9JQ09OUyB9IGZyb20gXCIuL2FkdmFuY2VkLWZpbHRlcnMuY29uc3RhbnRcIjtcbmltcG9ydCB7IEFkdmFuY2VkRmlsdGVyc0Zvcm0sIEZpbHRlckZvcm0sIEZpbHRlckZvcm1WYWx1ZXMgfSBmcm9tIFwiLi9hZHZhbmNlZC1maWx0ZXJzLmZvcm1cIjtcbmltcG9ydCB7IE5pY2VBZHZhbmNlZEZpbHRlckljb25PcHRpb25zIH0gZnJvbSBcIi4vbW9kZWxzL2ljb25zLm1vZGVsXCI7XG5pbXBvcnQgeyBBZHZhbmNlZEZpbHRlcnNBc3luY1R5cGVhaGVhZFByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJzL2FzeW5jLXR5cGVhaGVhZC5wcm92aWRlclwiO1xuaW1wb3J0IHsgQWR2YW5jZWRGaWx0ZXJzVXRpbHMgfSBmcm9tIFwiLi91dGlscy9hZHZhbmNlZC1maWx0ZXJzLnV0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtYWR2YW5jZWQtZmlsdGVyc1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcImFkdmFuY2VkLWZpbHRlcnMudGVtcGxhdGUuaHRtbFwiLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE5neEZvcm1HZW5lcmF0b3JQcm92aWRlci5mb3JGZWF0dXJlKFtBZHZhbmNlZEZpbHRlcnNGb3JtXSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5JQ0VfQVNZTkNfVFlQRUFIRUFEX1BST1ZJREVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEFkdmFuY2VkRmlsdGVyc0FzeW5jVHlwZWFoZWFkUHJvdmlkZXIsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQWR2YW5jZWRGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBjb25maWckID0gdGhpcy5xdWVyeS5zZWxlY3RGaWx0ZXJDb25maWcoKTtcblxuICAgIHB1YmxpYyBydWxlcyQ6IE9ic2VydmFibGU8RmlsdGVyRm9ybVtdPjtcbiAgICBwdWJsaWMgcnVsZXNGb3JtQXJyYXk6IEdlbmVyYXRlZEZvcm1BcnJheTxGaWx0ZXJGb3JtPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFEVkFOQ0VEX0ZJTFRFUl9JQ09OUylcbiAgICAgICAgcHVibGljIGljb25zOiBOaWNlQWR2YW5jZWRGaWx0ZXJJY29uT3B0aW9ucyxcbiAgICAgICAgcHVibGljIGZvcm1Hcm91cDogR2VuZXJhdGVkRm9ybUdyb3VwPEFkdmFuY2VkRmlsdGVyc0Zvcm0+LFxuICAgICAgICBwcml2YXRlIHF1ZXJ5OiBOaWNlRmlsdGVyVmlld1F1ZXJ5LFxuICAgICAgICBwcml2YXRlIHNlcnZpY2U6IE5pY2VGaWx0ZXJWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgdGhpcy5ydWxlc0Zvcm1BcnJheSA9IHRoaXMuZm9ybUdyb3VwLmdldChcInJ1bGVzXCIpIGFzIEdlbmVyYXRlZEZvcm1BcnJheTxGaWx0ZXJGb3JtPjtcbiAgICAgICAgdGhpcy5ydWxlcyQgPSB0aGlzLnJ1bGVzRm9ybUFycmF5LnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLnJ1bGVzRm9ybUFycmF5LnZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMsIHN1YlN0YXRlcyB9ID0gdGhpcy5xdWVyeS5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbWV0ZXJzLnJ1bGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUobmV3IEFkdmFuY2VkRmlsdGVyc0Zvcm0oZmlsdGVyUGFyYW1ldGVycy5ydWxlc1swXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YlN0YXRlcy5zZWxlY3RlZEZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrQWRkUnVsZShzdWJTdGF0ZXMuc2VsZWN0ZWRGaWx0ZXIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZUVtcHR5UnVsZXMoeyByZWxvYWQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrQWRkUnVsZShmaWx0ZXJDb25maWd1cmF0aW9uTW9kZWw6IEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJ1bGVzRm9ybUFycmF5LnB1c2gobmV3IEZpbHRlckZvcm0oQWR2YW5jZWRGaWx0ZXJzVXRpbHMuY3JlYXRlUnVsZShmaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwpKSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tEZWxldGVSdWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ydWxlc0Zvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICAgIGlmICghdGhpcy5ydWxlc0Zvcm1BcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRSdWxlcyhbXSk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZmlsdGVyKCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZUVtcHR5UnVsZXMoKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZVN1YlN0YXRlKFwic2hvd0FkdmFuY2VkRmlsdGVyc1wiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVmcmVzaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldFJ1bGVzKHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkudHJhbnNmb3JtKCkpO1xuICAgICAgICB0aGlzLnNlcnZpY2UucmVzZXRSZXN1bHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2VydmljZS5maWx0ZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRW1wdHlSdWxlcyh7IHJlbG9hZCB9OiB7IHJlbG9hZDogYm9vbGVhbiB9ID0geyByZWxvYWQ6IHRydWUgfSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ydWxlc0Zvcm1BcnJheS5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMucnVsZXNGb3JtQXJyYXkuZ2V0KFswLCBcInZhbHVlc1wiXSkuZ2V0UmF3VmFsdWUoKSBhcyBGaWx0ZXJGb3JtVmFsdWVzW107XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1swXTtcbiAgICAgICAgaWYgKHZhbHVlLnZhbHVlIHx8IHZhbHVlLnZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZS5zZWNvbmRWYWx1ZSB8fCB2YWx1ZS5zZWNvbmRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ydWxlc0Zvcm1BcnJheS5yZW1vdmVBdCgwKTtcblxuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMucXVlcnkuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFmaWx0ZXJQYXJhbWV0ZXJzLnJ1bGVzLmxlbmd0aCB8fCAhZmlsdGVyUGFyYW1ldGVycy5ydWxlc1swXS5ydWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VydmljZS5zZXRSdWxlcyhbXSk7XG4gICAgICAgIGlmICghcmVsb2FkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGZpbHRlclBhcmFtZXRlcnMucnVsZXNbMF0ucnVsZXNbMF0gYXMgUXVlcnlSdWxlTW9kZWwpLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkdmFuY2VkLWZpbHRlci10aXRsZVwiPnt7IFwiY29tcG9uZW50cy5uaWNlX2FkdmFuY2VkX2ZpbHRlcnMudGl0bGVcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZHZhbmNlZC1maWx0ZXItY29uZGl0aW9uXCI+e3sgXCJjb21wb25lbnRzLm5pY2VfYWR2YW5jZWRfZmlsdGVycy5jb25kaXRpb25zLnNob3VsZF9tYXRjaFwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XG5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25cIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwiYW5kXCI+PHNwYW4gY2xhc3M9XCJtbC00IG1yLThcIj57eyBcImNvbXBvbmVudHMubmljZV9hZHZhbmNlZF9maWx0ZXJzLmNvbmRpdGlvbnMuZXZlcnlcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj48L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cIm9yXCI+PHNwYW4gY2xhc3M9XCJtbC00IG1yLThcIj57eyBcImNvbXBvbmVudHMubmljZV9hZHZhbmNlZF9maWx0ZXJzLmNvbmRpdGlvbnMuc29tZVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPjwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiIGZvcm1BcnJheU5hbWU9XCJydWxlc1wiICpuZ0Zvcj1cImxldCBfIG9mIHJ1bGVzRm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuaWNlLWFkdmFuY2VkLXJ1bGUgW2ZpbHRlckNvbmZpZ3NdPVwiY29uZmlnJCB8IGFzeW5jXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiIChyZW1vdmUpPVwib25DbGlja0RlbGV0ZVJ1bGUoaSlcIj48L25pY2UtYWR2YW5jZWQtcnVsZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhZGQtY29uZGl0aW9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgbmljZUFkdmFuY2VkRmlsdGVyc1RyaWdnZXIgcG9zaXRpb249XCJ0b3BSaWdodFwiIChhZHZhbmNlZEZpbHRlclNlbGVjdGVkKT1cIm9uQ2xpY2tBZGRSdWxlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJpY29ucy5hZGQuc3ZnSWNvblwiPnt7IGljb25zLmFkZC5tYXRJY29uIH19PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgICAgIDxkaXY+e3sgXCJjb21wb25lbnRzLm5pY2VfYWR2YW5jZWRfZmlsdGVycy5hZGRfY29uZGl0aW9uXCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02IGp1c3RpZnktZW5kIHB0LTRcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiaWNvbnMuY2xvc2Uuc3ZnSWNvblwiPnt7IGljb25zLmNsb3NlLm1hdEljb24gfX08L21hdC1pY29uPlxuXG4gICAgICAgICAgICAgICAgPGRpdj57eyBcImNvbXBvbmVudHMubmljZV9hZHZhbmNlZF9maWx0ZXJzLmNsb3NlXCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVmcmVzaC1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwib25SZWZyZXNoKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJpY29ucy5yZWZyZXNoLnN2Z0ljb25cIj57eyBpY29ucy5yZWZyZXNoLm1hdEljb24gfX08L21hdC1pY29uPlxuXG4gICAgICAgICAgICAgICAgPGRpdj57eyBcImNvbXBvbmVudHMubmljZV9hZHZhbmNlZF9maWx0ZXJzLnJlZnJlc2hcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=