@webitel/ui-datalist 1.1.5 → 1.1.7

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 (220) hide show
  1. package/package.json +3 -10
  2. package/src/modules/_shared/createDatalistStore.ts +44 -44
  3. package/src/modules/card/composables/useCardAnyFieldEditedWatcher.ts +15 -15
  4. package/src/modules/card/composables/useCardComponent.ts +69 -67
  5. package/src/modules/card/composables/useCardIsNew.ts +5 -5
  6. package/src/modules/card/composables/useCardRouting.ts +22 -24
  7. package/src/modules/card/composables/useCardSaveAction.ts +15 -15
  8. package/src/modules/card/composables/useCardValidation.ts +22 -24
  9. package/src/modules/card/composables/useItemCardSaveText.ts +14 -14
  10. package/src/modules/card/stores/createCardStore.ts +174 -173
  11. package/src/modules/filter-presets/api/PresetQuery.ts +115 -92
  12. package/src/modules/filter-presets/components/_shared/input-fields/preset-description-field.vue +1 -1
  13. package/src/modules/filter-presets/components/_shared/preset-filters-preview.vue +8 -10
  14. package/src/modules/filter-presets/components/apply-preset/apply-preset-action.vue +119 -97
  15. package/src/modules/filter-presets/components/apply-preset/preset-preview.vue +66 -60
  16. package/src/modules/filter-presets/components/save-preset/overwrite-preset-popup.vue +8 -6
  17. package/src/modules/filter-presets/components/save-preset/save-preset-action.vue +93 -87
  18. package/src/modules/filter-presets/components/save-preset/save-preset-popup.vue +43 -38
  19. package/src/modules/filter-presets/stores/createFilterPresetsStore.ts +50 -45
  20. package/src/modules/filter-presets/stores/headers/headers.ts +20 -20
  21. package/src/modules/filters/classes/Filter.ts +42 -42
  22. package/src/modules/filters/classes/FiltersManager.ts +287 -246
  23. package/src/modules/filters/classes/__tests__/FiltersManager.spec.ts +64 -0
  24. package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-form-value-input.vue +6 -4
  25. package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue +57 -51
  26. package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-view.vue +14 -3
  27. package/src/modules/filters/components/config/static-view/static-filter-field.vue +16 -18
  28. package/src/modules/filters/components/dynamic-filter-add-action.vue +46 -14
  29. package/src/modules/filters/components/dynamic-filter-panel-wrapper.vue +6 -6
  30. package/src/modules/filters/components/preview/dynamic-filter-preview.vue +50 -48
  31. package/src/modules/filters/components/search-bar/dynamic-filter-search.vue +92 -80
  32. package/src/modules/filters/components/search-bar/types/DynamicFilterSearch.d.ts +1 -1
  33. package/src/modules/filters/components/table-filters-panel.vue +96 -82
  34. package/src/modules/filters/components/types/Filter.types.ts +14 -10
  35. package/src/modules/filters/composables/useFilterConfigsToolkit.ts +143 -136
  36. package/src/modules/filters/createTableFiltersStore.ts +109 -93
  37. package/src/modules/filters/index.ts +24 -23
  38. package/src/modules/filters/modules/filterConfig/classes/FilterConfig.ts +55 -55
  39. package/src/modules/filters/modules/filterConfig/classes/createFilterConfig.ts +19 -19
  40. package/src/modules/filters/modules/filterConfig/components/_custom/filterConfig.ts +84 -67
  41. package/src/modules/filters/modules/filterConfig/components/_custom/index.ts +3 -3
  42. package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-field.vue +24 -16
  43. package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-preview.vue +7 -7
  44. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-filter-value-field.vue +12 -9
  45. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-filter-value-preview.vue +3 -3
  46. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue +38 -31
  47. package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-preview.vue +14 -9
  48. package/src/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-field.vue +10 -8
  49. package/src/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-preview.vue +1 -1
  50. package/src/modules/filters/modules/filterConfig/components/_shared/lookup-filter-preview/lookup-filter-value-preview.vue +4 -4
  51. package/src/modules/filters/modules/filterConfig/components/agent/agent-filter-value-field.vue +22 -14
  52. package/src/modules/filters/modules/filterConfig/components/agent/agent-filter-value-preview.vue +1 -1
  53. package/src/modules/filters/modules/filterConfig/components/agent-status/agent-status-filter-value-field.vue +33 -20
  54. package/src/modules/filters/modules/filterConfig/components/agent-status/agent-status-filter-value-preview.vue +7 -8
  55. package/src/modules/filters/modules/filterConfig/components/amd-result/amd-result-filter-value-field.vue +21 -13
  56. package/src/modules/filters/modules/filterConfig/components/amd-result/amd-result-filter-value-preview.vue +1 -1
  57. package/src/modules/filters/modules/filterConfig/components/auditor/auditor-filter-value-field.vue +33 -19
  58. package/src/modules/filters/modules/filterConfig/components/auditor/auditor-filter-value-preview.vue +1 -1
  59. package/src/modules/filters/modules/filterConfig/components/auditor/index.ts +10 -9
  60. package/src/modules/filters/modules/filterConfig/components/call-direction/call-direction-filter-value-field.vue +21 -13
  61. package/src/modules/filters/modules/filterConfig/components/call-direction/call-direction-filter-value-preview.vue +1 -1
  62. package/src/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-field.vue +2 -2
  63. package/src/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-preview.vue +2 -2
  64. package/src/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-field.vue +2 -2
  65. package/src/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-preview.vue +2 -2
  66. package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue +36 -25
  67. package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue +15 -13
  68. package/src/modules/filters/modules/filterConfig/components/case-assignee/filterConfig.ts +24 -18
  69. package/src/modules/filters/modules/filterConfig/components/case-assignee/index.ts +3 -3
  70. package/src/modules/filters/modules/filterConfig/components/case-author/case-author-filter-value-field.vue +22 -14
  71. package/src/modules/filters/modules/filterConfig/components/case-author/case-author-filter-value-preview.vue +4 -4
  72. package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-field.vue +42 -34
  73. package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-preview.vue +1 -1
  74. package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/config.js +1 -1
  75. package/src/modules/filters/modules/filterConfig/components/case-impacted/case-impacted-filter-value-field.vue +22 -14
  76. package/src/modules/filters/modules/filterConfig/components/case-impacted/case-impacted-filter-value-preview.vue +1 -1
  77. package/src/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-field.vue +22 -14
  78. package/src/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-preview.vue +1 -1
  79. package/src/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-field.vue +2 -2
  80. package/src/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-preview.vue +2 -2
  81. package/src/modules/filters/modules/filterConfig/components/case-reporter/case-reporter-filter-value-field.vue +22 -14
  82. package/src/modules/filters/modules/filterConfig/components/case-reporter/case-reporter-filter-value-preview.vue +1 -1
  83. package/src/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-field.vue +2 -2
  84. package/src/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-preview.vue +2 -2
  85. package/src/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-preview.vue +4 -4
  86. package/src/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-field.vue +22 -14
  87. package/src/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-preview.vue +1 -1
  88. package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-field.vue +40 -32
  89. package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-preview.vue +1 -1
  90. package/src/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-field.vue +22 -14
  91. package/src/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-preview.vue +1 -1
  92. package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-field.vue +42 -34
  93. package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-preview.vue +1 -1
  94. package/src/modules/filters/modules/filterConfig/components/case-status/config.js +1 -1
  95. package/src/modules/filters/modules/filterConfig/components/contact/contact-filter-value-field.vue +22 -14
  96. package/src/modules/filters/modules/filterConfig/components/contact/contact-filter-value-preview.vue +1 -1
  97. package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-field.vue +57 -46
  98. package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue +15 -13
  99. package/src/modules/filters/modules/filterConfig/components/contact-group/index.ts +39 -27
  100. package/src/modules/filters/modules/filterConfig/components/contact-label/contact-label-filter-value-field.vue +33 -22
  101. package/src/modules/filters/modules/filterConfig/components/contact-label/contact-label-filter-value-preview.vue +4 -5
  102. package/src/modules/filters/modules/filterConfig/components/contact-label/index.ts +20 -15
  103. package/src/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-field.vue +24 -16
  104. package/src/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-preview.vue +4 -4
  105. package/src/modules/filters/modules/filterConfig/components/contact-owner/index.ts +10 -9
  106. package/src/modules/filters/modules/filterConfig/components/created-at-from/created-at-from-filter-value-field.vue +1 -1
  107. package/src/modules/filters/modules/filterConfig/components/created-at-from/created-at-from-filter-value-preview.vue +3 -3
  108. package/src/modules/filters/modules/filterConfig/components/created-at-to/created-at-to-filter-value-field.vue +1 -1
  109. package/src/modules/filters/modules/filterConfig/components/created-at-to/created-at-to-filter-value-preview.vue +3 -3
  110. package/src/modules/filters/modules/filterConfig/components/gateway/gateway-filter-value-field.vue +27 -15
  111. package/src/modules/filters/modules/filterConfig/components/gateway/gateway-filter-value-preview.vue +4 -4
  112. package/src/modules/filters/modules/filterConfig/components/grantee/grantee-filter-value-field.vue +22 -14
  113. package/src/modules/filters/modules/filterConfig/components/grantee/grantee-filter-value-preview.vue +4 -4
  114. package/src/modules/filters/modules/filterConfig/components/hangup-cause/hangup-cause-filter-value-field.vue +21 -13
  115. package/src/modules/filters/modules/filterConfig/components/hangup-cause/hangup-cause-filter-value-preview.vue +1 -1
  116. package/src/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-field.vue +21 -13
  117. package/src/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-preview.vue +1 -1
  118. package/src/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-field.vue +11 -7
  119. package/src/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-preview.vue +1 -1
  120. package/src/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-field.vue +11 -7
  121. package/src/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-preview.vue +1 -1
  122. package/src/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-field.vue +11 -7
  123. package/src/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-preview.vue +1 -1
  124. package/src/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue +19 -14
  125. package/src/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-preview.vue +1 -1
  126. package/src/modules/filters/modules/filterConfig/components/index.ts +261 -259
  127. package/src/modules/filters/modules/filterConfig/components/queue/index.ts +10 -9
  128. package/src/modules/filters/modules/filterConfig/components/queue/queue-filter-value-field.vue +33 -19
  129. package/src/modules/filters/modules/filterConfig/components/queue/queue-filter-value-preview.vue +1 -1
  130. package/src/modules/filters/modules/filterConfig/components/queue-period/queue-period-filter-value-field.vue +33 -20
  131. package/src/modules/filters/modules/filterConfig/components/queue-period/queue-period-filter-value-preview.vue +7 -8
  132. package/src/modules/filters/modules/filterConfig/components/queue-type/queue-type-filter-value-field.vue +33 -20
  133. package/src/modules/filters/modules/filterConfig/components/queue-type/queue-type-filter-value-preview.vue +7 -7
  134. package/src/modules/filters/modules/filterConfig/components/rated-by/rated-by-filter-value-field.vue +22 -14
  135. package/src/modules/filters/modules/filterConfig/components/rated-by/rated-by-filter-value-preview.vue +4 -4
  136. package/src/modules/filters/modules/filterConfig/components/rating/rating-from-to-filter-value-preview.vue +1 -1
  137. package/src/modules/filters/modules/filterConfig/components/region/index.ts +10 -9
  138. package/src/modules/filters/modules/filterConfig/components/region/region-filter-value-field.vue +33 -19
  139. package/src/modules/filters/modules/filterConfig/components/region/region-filter-value-preview.vue +1 -1
  140. package/src/modules/filters/modules/filterConfig/components/score/score-from-to-filter-value-preview.vue +1 -1
  141. package/src/modules/filters/modules/filterConfig/components/skill/index.ts +10 -9
  142. package/src/modules/filters/modules/filterConfig/components/skill/skill-filter-value-field.vue +33 -19
  143. package/src/modules/filters/modules/filterConfig/components/skill/skill-filter-value-preview.vue +1 -1
  144. package/src/modules/filters/modules/filterConfig/components/supervisor/index.ts +10 -9
  145. package/src/modules/filters/modules/filterConfig/components/supervisor/supervisor-filter-value-field.vue +33 -19
  146. package/src/modules/filters/modules/filterConfig/components/supervisor/supervisor-filter-value-preview.vue +1 -1
  147. package/src/modules/filters/modules/filterConfig/components/tag/tag-filter-value-field.vue +21 -13
  148. package/src/modules/filters/modules/filterConfig/components/tag/tag-filter-value-preview.vue +10 -10
  149. package/src/modules/filters/modules/filterConfig/components/talk-duration/TalkDurationFilter.d.ts +2 -2
  150. package/src/modules/filters/modules/filterConfig/components/talk-duration/talk-duration-filter-value-field.vue +3 -1
  151. package/src/modules/filters/modules/filterConfig/components/talk-duration/talk-duration-filter-value-preview.vue +1 -1
  152. package/src/modules/filters/modules/filterConfig/components/team/index.ts +10 -10
  153. package/src/modules/filters/modules/filterConfig/components/team/team-filter-value-field.vue +33 -19
  154. package/src/modules/filters/modules/filterConfig/components/team/team-filter-value-preview.vue +1 -1
  155. package/src/modules/filters/modules/filterConfig/components/total-duration/TotalDurationFilter.d.ts +2 -2
  156. package/src/modules/filters/modules/filterConfig/components/total-duration/total-duration-filter-value-field.vue +3 -1
  157. package/src/modules/filters/modules/filterConfig/components/total-duration/total-duration-filter-value-preview.vue +1 -1
  158. package/src/modules/filters/modules/filterConfig/components/user/user-filter-value-field.vue +22 -14
  159. package/src/modules/filters/modules/filterConfig/components/user/user-filter-value-preview.vue +4 -4
  160. package/src/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-field.vue +33 -20
  161. package/src/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-preview.vue +1 -2
  162. package/src/modules/filters/modules/filterConfig/components/variable/variable-filter-value-preview.vue +1 -1
  163. package/src/modules/filters/modules/filterConfig/composables/booleanFilterToolkit.ts +31 -23
  164. package/src/modules/filters/modules/filterConfig/composables/useAgentStatusOptions.ts +16 -15
  165. package/src/modules/filters/modules/filterConfig/composables/useFromToSecToPreviewTime.ts +26 -26
  166. package/src/modules/filters/modules/filterConfig/composables/useQueuePeriodOptions.ts +66 -36
  167. package/src/modules/filters/modules/filterConfig/composables/useQueueTypeOptions.ts +12 -13
  168. package/src/modules/filters/modules/filterConfig/enums/FilterOption.ts +51 -51
  169. package/src/modules/filters/modules/filterConfig/enums/options/AMDResultOptions.ts +29 -29
  170. package/src/modules/filters/modules/filterConfig/enums/options/BooleanFilterOptions.ts +8 -8
  171. package/src/modules/filters/modules/filterConfig/enums/options/CallDirectionFilterOptions.ts +20 -11
  172. package/src/modules/filters/modules/filterConfig/enums/options/CallHistoryTagFilterOptions.ts +5 -5
  173. package/src/modules/filters/modules/filterConfig/enums/options/HangupCauseFilterOptions.ts +257 -257
  174. package/src/modules/filters/modules/filterConfig/enums/options/UtilizationProgressOptions.ts +16 -16
  175. package/src/modules/filters/modules/filterConfig/types/DynamicFilterPreviewComponent.ts +3 -3
  176. package/src/modules/filters/scripts/utils.ts +13 -13
  177. package/src/modules/headers/createTableHeadersStore.ts +278 -251
  178. package/src/modules/pagination/createTablePaginationStore.ts +55 -52
  179. package/src/modules/persist/PersistedStorage.types.ts +33 -31
  180. package/src/modules/persist/useLocalStoragePersistedStorage.ts +24 -24
  181. package/src/modules/persist/usePersistedStorage.ts +117 -105
  182. package/src/modules/persist/useRoutePersistedStorage.ts +33 -31
  183. package/src/modules/scripts/utils.ts +13 -13
  184. package/src/modules/table/createTableStore.store.ts +352 -316
  185. package/src/modules/types/StoreProvider.ts +3 -3
  186. package/src/modules/types/createDatalistStore.types.ts +12 -9
  187. package/src/modules/types/tableStore.types.ts +44 -44
  188. package/types/modules/card/composables/useCardRouting.d.ts +1 -1
  189. package/types/modules/card/composables/useCardSaveAction.d.ts +1 -1
  190. package/types/modules/filter-presets/components/_shared/preset-filters-preview.vue.d.ts +1 -1
  191. package/types/modules/filter-presets/components/apply-preset/apply-preset-action.vue.d.ts +1 -1
  192. package/types/modules/filter-presets/components/apply-preset/preset-preview.vue.d.ts +1 -1
  193. package/types/modules/filter-presets/components/save-preset/save-preset-action.vue.d.ts +1 -1
  194. package/types/modules/filter-presets/components/save-preset/save-preset-popup.vue.d.ts +1 -1
  195. package/types/modules/filter-presets/stores/createFilterPresetsStore.d.ts +16 -4
  196. package/types/modules/filters/classes/FiltersManager.d.ts +4 -1
  197. package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form-value-input.vue.d.ts +1 -1
  198. package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue.d.ts +2 -2
  199. package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-view.vue.d.ts +7 -5
  200. package/types/modules/filters/components/dynamic-filter-add-action.vue.d.ts +4 -4
  201. package/types/modules/filters/components/table-filters-panel.vue.d.ts +4 -4
  202. package/types/modules/filters/components/types/Filter.types.d.ts +9 -3
  203. package/types/modules/filters/createTableFiltersStore.d.ts +8 -2
  204. package/types/modules/filters/modules/filterConfig/components/_custom/filterConfig.d.ts +2 -2
  205. package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue.d.ts +1 -1
  206. package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue.d.ts +1 -1
  207. package/types/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue.d.ts +1 -1
  208. package/types/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-field.vue.d.ts +1 -1
  209. package/types/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-field.vue.d.ts +1 -1
  210. package/types/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-field.vue.d.ts +1 -1
  211. package/types/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-field.vue.d.ts +1 -1
  212. package/types/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue.d.ts +2 -2
  213. package/types/modules/filters/modules/filterConfig/components/index.d.ts +14 -14
  214. package/types/modules/filters/modules/filterConfig/composables/booleanFilterToolkit.d.ts +1 -1
  215. package/types/modules/filters/modules/filterConfig/enums/options/AMDResultOptions.d.ts +1 -1
  216. package/types/modules/filters/modules/filterConfig/enums/options/CallDirectionFilterOptions.d.ts +4 -1
  217. package/types/modules/filters/modules/filterConfig/enums/options/CallHistoryTagFilterOptions.d.ts +1 -1
  218. package/types/modules/filters/modules/filterConfig/enums/options/HangupCauseFilterOptions.d.ts +1 -1
  219. package/types/modules/filters/scripts/utils.d.ts +1 -1
  220. package/types/modules/table/createTableStore.store.d.ts +16 -4
@@ -1,4 +1,4 @@
1
- import { computed, ComputedRef } from 'vue';
1
+ import { ComputedRef, computed } from 'vue';
2
2
  import { useI18n } from 'vue-i18n';
3
3
  import { WebitelProtoDataField } from 'webitel-sdk';
4
4
 
@@ -6,151 +6,158 @@ import { FilterName, IFilter } from '../classes/Filter';
6
6
  import { IFiltersManager } from '../classes/FiltersManager';
7
7
  import { createFilterConfig } from '../modules/filterConfig/classes/createFilterConfig';
8
8
  import {
9
- BaseFilterConfig,
10
- FilterConfig,
9
+ BaseFilterConfig,
10
+ FilterConfig,
11
11
  } from '../modules/filterConfig/classes/FilterConfig';
12
12
  import { createTypeExtensionFilterConfig } from '../modules/filterConfig/components/_custom';
13
13
  import { FilterOption } from '../modules/filterConfig/enums/FilterOption';
14
14
 
15
15
  export type FilterConfigToolkit = {
16
- filterConfigs: ComputedRef<BaseFilterConfig[]>;
17
- /**
18
- * @description
19
- * some filters may be stored in filtersManager,
20
- * but not included in this filters panel
21
- */
22
- filtersIncluded: ComputedRef<FilterName[]>;
23
- appliedFilters: ComputedRef<IFilter[]>;
24
- /**
25
- * @description
26
- * available filters to add, with appliedFilters excluded
27
- */
28
- unAppliedFiltersConfigs: ComputedRef<BaseFilterConfig[]>;
29
- appliedFilterToFilterConfigMappings: ComputedRef<
30
- Array<{
31
- filterConfig: BaseFilterConfig;
32
- filter: IFilter;
33
- }>
34
- >;
16
+ filterConfigs: ComputedRef<BaseFilterConfig[]>;
17
+ /**
18
+ * @description
19
+ * some filters may be stored in filtersManager,
20
+ * but not included in this filters panel
21
+ */
22
+ filtersIncluded: ComputedRef<FilterName[]>;
23
+ appliedFilters: ComputedRef<IFilter[]>;
24
+ /**
25
+ * @description
26
+ * available filters to add, with appliedFilters excluded
27
+ */
28
+ unAppliedFiltersConfigs: ComputedRef<BaseFilterConfig[]>;
29
+ appliedFilterToFilterConfigMappings: ComputedRef<
30
+ Array<{
31
+ filterConfig: BaseFilterConfig;
32
+ filter: IFilter;
33
+ }>
34
+ >;
35
35
  };
36
36
 
37
37
  export type FilterConfigToolkitParams = {
38
- filterOptions: (FilterOption | BaseFilterConfig)[];
39
- filtersManager: IFiltersManager;
40
- filterableExtensionFields: WebitelProtoDataField[];
41
- staticMode?: boolean;
38
+ filterOptions: (FilterOption | BaseFilterConfig)[];
39
+ filtersManager: IFiltersManager;
40
+ filterableExtensionFields: WebitelProtoDataField[];
41
+ staticMode?: boolean;
42
42
  };
43
43
 
44
44
  export const useFilterConfigsToolkit = ({
45
- filterOptions,
46
- filtersManager,
47
- filterableExtensionFields = [], staticMode = false,
45
+ filterOptions,
46
+ filtersManager,
47
+ filterableExtensionFields = [],
48
+ staticMode = false,
48
49
  }: FilterConfigToolkitParams): FilterConfigToolkit => {
49
- const { t } = useI18n();
50
-
51
- const filterConfigs = computed(() => {
52
- return (
53
- filterOptions
54
- /**
55
- * make filterConfigs from standard filterOptions
56
- */
57
- .map((opt) => {
58
- if (opt instanceof FilterConfig) {
59
- return opt;
60
- }
61
-
62
- if (typeof opt === 'string') {
63
- return createFilterConfig({ name: opt });
64
- }
65
-
66
- return new FilterConfig({
67
- ...opt,
68
- name: opt.name,
69
- });
70
- })
71
- /**
72
- * localize
73
- */
74
- .map((filterConfig) => {
75
- if (!filterConfig.label) {
76
- filterConfig.label = t(`webitelUI.filters.${filterConfig.name}`);
77
- }
78
-
79
- return filterConfig;
80
- })
81
- /**
82
- * add filterConfigs for extension fields
83
- */
84
- .concat(
85
- filterableExtensionFields.map((field: WebitelProtoDataField) => {
86
- return createTypeExtensionFilterConfig(
87
- { name: field.id },
88
- { field },
89
- );
90
- }),
91
- )
92
- );
93
- });
94
-
95
- const filtersIncluded = computed(() => {
96
- return filterConfigs.value.map(({ name }) => name);
97
- });
98
-
99
- const appliedFilters = computed(() => {
100
- return filtersManager.getFiltersList({
101
- include: filtersIncluded.value,
102
- });
103
- });
104
-
105
- const unAppliedFiltersConfigs = computed(() => {
106
- return filterConfigs.value.filter(({ name }) => {
107
- return !filtersManager.hasFilter(name);
108
- });
109
- });
110
-
111
- const appliedFilterToFilterConfigMappings = computed(() => {
112
- const filterNameToFilterConfigMap = filterConfigs.value.reduce(
113
- (map, filterConfig) => {
114
- return {
115
- ...map,
116
- [filterConfig.name]: filterConfig,
117
- };
118
- },
119
- {},
120
- );
121
-
122
- return appliedFilters.value.map((filter) => {
123
- return {
124
- filter,
125
- filterConfig: filterNameToFilterConfigMap[filter.name],
126
- };
127
- });
128
- });
129
-
130
- const staticViewFilterToFilterConfigMappings = computed(() => {
131
- // Author @Lera24
132
- // [https://webitel.atlassian.net/browse/WTEL-6934]
133
- //
134
- // Static (computed staticViewFilterToFilterConfigMappings) filters
135
- // use all page filters passed in filterOptions for configuration, without values
136
- //
137
- // Dynamic (computed applyFilterToFilterConfigMappings) filters consist of a configuration
138
- // of filters for which a value has already been defined
139
-
140
- return filterConfigs.value.map((filterConfig) => {
141
- return {
142
- filter: filtersManager.getFilter(filterConfig.name),
143
- filterConfig,
144
- }
145
- });
146
- });
147
-
148
- return {
149
- filterConfigs,
150
- filtersIncluded,
151
- appliedFilters,
152
- appliedFilterToFilterConfigMappings,
153
- staticViewFilterToFilterConfigMappings,
154
- unAppliedFiltersConfigs,
155
- };
50
+ const { t } = useI18n();
51
+
52
+ const filterConfigs = computed(() => {
53
+ return (
54
+ filterOptions
55
+ /**
56
+ * make filterConfigs from standard filterOptions
57
+ */
58
+ .map((opt) => {
59
+ if (opt instanceof FilterConfig) {
60
+ return opt;
61
+ }
62
+
63
+ if (typeof opt === 'string') {
64
+ return createFilterConfig({
65
+ name: opt,
66
+ });
67
+ }
68
+
69
+ return new FilterConfig({
70
+ ...opt,
71
+ name: opt.name,
72
+ });
73
+ })
74
+ /**
75
+ * localize
76
+ */
77
+ .map((filterConfig) => {
78
+ if (!filterConfig.label) {
79
+ filterConfig.label = t(`webitelUI.filters.${filterConfig.name}`);
80
+ }
81
+
82
+ return filterConfig;
83
+ })
84
+ /**
85
+ * add filterConfigs for extension fields
86
+ */
87
+ .concat(
88
+ filterableExtensionFields.map((field: WebitelProtoDataField) => {
89
+ return createTypeExtensionFilterConfig(
90
+ {
91
+ name: field.id,
92
+ },
93
+ {
94
+ field,
95
+ },
96
+ );
97
+ }),
98
+ )
99
+ );
100
+ });
101
+
102
+ const filtersIncluded = computed(() => {
103
+ return filterConfigs.value.map(({ name }) => name);
104
+ });
105
+
106
+ const appliedFilters = computed(() => {
107
+ return filtersManager.getFiltersList({
108
+ include: filtersIncluded.value,
109
+ });
110
+ });
111
+
112
+ const unAppliedFiltersConfigs = computed(() => {
113
+ return filterConfigs.value.filter(({ name }) => {
114
+ return !filtersManager.hasFilter(name);
115
+ });
116
+ });
117
+
118
+ const appliedFilterToFilterConfigMappings = computed(() => {
119
+ const filterNameToFilterConfigMap = filterConfigs.value.reduce(
120
+ (map, filterConfig) => {
121
+ return {
122
+ ...map,
123
+ [filterConfig.name]: filterConfig,
124
+ };
125
+ },
126
+ {},
127
+ );
128
+
129
+ return appliedFilters.value.map((filter) => {
130
+ return {
131
+ filter,
132
+ filterConfig: filterNameToFilterConfigMap[filter.name],
133
+ };
134
+ });
135
+ });
136
+
137
+ const staticViewFilterToFilterConfigMappings = computed(() => {
138
+ // Author @Lera24
139
+ // [https://webitel.atlassian.net/browse/WTEL-6934]
140
+ //
141
+ // Static (computed staticViewFilterToFilterConfigMappings) filters
142
+ // use all page filters passed in filterOptions for configuration, without values
143
+ //
144
+ // Dynamic (computed applyFilterToFilterConfigMappings) filters consist of a configuration
145
+ // of filters for which a value has already been defined
146
+
147
+ return filterConfigs.value.map((filterConfig) => {
148
+ return {
149
+ filter: filtersManager.getFilter(filterConfig.name),
150
+ filterConfig,
151
+ };
152
+ });
153
+ });
154
+
155
+ return {
156
+ filterConfigs,
157
+ filtersIncluded,
158
+ appliedFilters,
159
+ appliedFilterToFilterConfigMappings,
160
+ staticViewFilterToFilterConfigMappings,
161
+ unAppliedFiltersConfigs,
162
+ };
156
163
  };
@@ -5,113 +5,129 @@ import { PersistedStorageType } from '../persist/PersistedStorage.types';
5
5
  import { usePersistedStorage } from '../persist/usePersistedStorage';
6
6
  import { useTableStoreConfig } from '../types/tableStore.types';
7
7
  import {
8
- createFiltersManager,
9
- FiltersManagerConfig,
8
+ createFiltersManager,
9
+ FiltersManagerConfig,
10
10
  } from './classes/FiltersManager';
11
11
 
12
- export const tableFiltersStoreBody = (namespace, config?: {
13
- filtersManagerConfig: FiltersManagerConfig;
14
- }) => {
15
- const filtersManager = reactive(
16
- createFiltersManager(config?.filtersManagerConfig),
17
- );
12
+ export const tableFiltersStoreBody = (
13
+ namespace,
14
+ config?: {
15
+ filtersManagerConfig: FiltersManagerConfig;
16
+ },
17
+ ) => {
18
+ const filtersManager = reactive(
19
+ createFiltersManager(config?.filtersManagerConfig),
20
+ );
18
21
 
19
- /* for watchers in filter components */
20
- const isRestoring = ref(false);
22
+ /* for watchers in filter components */
23
+ const isRestoring = ref(false);
21
24
 
22
- const searchMode = ref('');
25
+ const searchMode = ref('');
23
26
 
24
- const updateSearchMode = (newSearch: string) => {
25
- searchMode.value = newSearch;
26
- };
27
+ const updateSearchMode = (newSearch: string) => {
28
+ searchMode.value = newSearch;
29
+ };
27
30
 
28
- /*
31
+ /*
29
32
  wrapping filtersManager methods to extend their functionality
30
33
  if it will be needed in future
31
34
  */
32
- const hasFilter = filtersManager.hasFilter.bind(filtersManager);
33
- const addFilter = filtersManager.addFilter.bind(filtersManager);
34
- const updateFilter = filtersManager.updateFilter.bind(filtersManager);
35
- const deleteFilter = filtersManager.deleteFilter.bind(filtersManager);
36
-
37
- const filtersList = computed(() => filtersManager.getFiltersList());
38
-
39
- const setupPersistence = () => {
40
- const { restore: restoreFilters } = usePersistedStorage({
41
- name: 'filters',
42
-
43
- value: computed(
44
- () => filtersManager,
45
- ) /* computed is used to provide value as ref(), not reactive() – as per usePersistedStorage interface */,
46
-
47
- storages: [PersistedStorageType.Route],
48
-
49
- /* use custom .toString() logic, provided by FiltersManager */
50
- onStore: async (save, { name }) => {
51
- const snapshotStr = filtersManager.toString();
52
- return save({ name, value: snapshotStr });
53
- },
54
-
55
- /* use custom .fromString() logic, provided by FiltersManager */
56
- onRestore: async (restore, name) => {
57
- isRestoring.value = true;
58
- const snapshotStr = await restore(name);
59
- /*
35
+ const hasFilter = filtersManager.hasFilter.bind(filtersManager);
36
+ const addFilter = filtersManager.addFilter.bind(filtersManager);
37
+ const updateFilter = filtersManager.updateFilter.bind(filtersManager);
38
+ const deleteFilter = filtersManager.deleteFilter.bind(filtersManager);
39
+
40
+ const filtersList = computed(() => filtersManager.getFiltersList());
41
+
42
+ const setupPersistence = () => {
43
+ const { restore: restoreFilters } = usePersistedStorage({
44
+ name: 'filters',
45
+
46
+ value: computed(
47
+ () => filtersManager,
48
+ ) /* computed is used to provide value as ref(), not reactive() – as per usePersistedStorage interface */,
49
+
50
+ storages: [
51
+ PersistedStorageType.Route,
52
+ ],
53
+
54
+ /* use custom .toString() logic, provided by FiltersManager */
55
+ onStore: async (save, { name }) => {
56
+ const snapshotStr = filtersManager.toString();
57
+ return save({
58
+ name,
59
+ value: snapshotStr,
60
+ });
61
+ },
62
+
63
+ /* use custom .fromString() logic, provided by FiltersManager */
64
+ onRestore: async (restore, name) => {
65
+ isRestoring.value = true;
66
+ const snapshotStr = await restore(name);
67
+ /*
60
68
  snapshot as string because we know that filtersManager.toString() returns string,
61
69
  not string[]
62
70
  */
63
- if (snapshotStr) filtersManager.fromString(snapshotStr as string);
64
-
65
- isRestoring.value = false;
66
- },
67
- });
68
-
69
- const { restore: restoreSearchMode } = usePersistedStorage({
70
- name: 'searchMode',
71
- value: searchMode,
72
- storages: [PersistedStorageType.LocalStorage],
73
- storagePath: namespace,
74
-
75
- onStore: async (save, { name }) => {
76
- return save({ name, value: searchMode.value });
77
- },
78
- onRestore: async (restore, name) => {
79
- const value = await restore(name);
80
- if (value) searchMode.value = value as string;
81
- },
82
- });
83
-
84
- return Promise.all([restoreFilters(), restoreSearchMode()]);
85
- };
86
-
87
- return {
88
- filtersManager,
89
- isRestoring,
90
- searchMode,
91
-
92
- filtersList,
93
-
94
- hasFilter,
95
- addFilter,
96
- updateFilter,
97
- deleteFilter,
98
-
99
- updateSearchMode,
100
-
101
- setupPersistence,
102
- };
71
+ if (snapshotStr) filtersManager.fromString(snapshotStr as string);
72
+
73
+ isRestoring.value = false;
74
+ },
75
+ });
76
+
77
+ const { restore: restoreSearchMode } = usePersistedStorage({
78
+ name: 'searchMode',
79
+ value: searchMode,
80
+ storages: [
81
+ PersistedStorageType.LocalStorage,
82
+ ],
83
+ storagePath: namespace,
84
+
85
+ onStore: async (save, { name }) => {
86
+ return save({
87
+ name,
88
+ value: searchMode.value,
89
+ });
90
+ },
91
+ onRestore: async (restore, name) => {
92
+ const value = await restore(name);
93
+ if (value) searchMode.value = value as string;
94
+ },
95
+ });
96
+
97
+ return Promise.all([
98
+ restoreFilters(),
99
+ restoreSearchMode(),
100
+ ]);
101
+ };
102
+
103
+ return {
104
+ filtersManager,
105
+ isRestoring,
106
+ searchMode,
107
+
108
+ filtersList,
109
+
110
+ hasFilter,
111
+ addFilter,
112
+ updateFilter,
113
+ deleteFilter,
114
+
115
+ updateSearchMode,
116
+
117
+ setupPersistence,
118
+ };
103
119
  };
104
120
 
105
121
  export const createTableFiltersStore = <Entity>(
106
- namespace: string,
107
- config: useTableStoreConfig<Entity> & {
108
- filtersManagerConfig?: FiltersManagerConfig;
109
- },
122
+ namespace: string,
123
+ config: useTableStoreConfig<Entity> & {
124
+ filtersManagerConfig?: FiltersManagerConfig;
125
+ },
110
126
  ) => {
111
- const id = `${namespace}/filters`;
112
- return createDatalistStore({
113
- storeBody: () => tableFiltersStoreBody(namespace, config),
114
- config,
115
- namespace: id,
116
- });
127
+ const id = `${namespace}/filters`;
128
+ return createDatalistStore({
129
+ storeBody: () => tableFiltersStoreBody(namespace, config),
130
+ config,
131
+ namespace: id,
132
+ });
117
133
  };
@@ -1,37 +1,38 @@
1
1
  import {
2
- Filter,
3
- FilterInitParams,
4
- FilterInstanceConfig,
5
- FilterLabel,
6
- FilterName,
7
- FilterValue,
8
- IFilter,
2
+ Filter,
3
+ FilterInitParams,
4
+ FilterInstanceConfig,
5
+ FilterLabel,
6
+ FilterName,
7
+ FilterValue,
8
+ IFilter,
9
9
  } from './classes/Filter';
10
10
  import {
11
- createFiltersManager,
12
- FiltersManagerConfig,
13
- IFiltersManager,
11
+ createFiltersManager,
12
+ FiltersManagerConfig,
13
+ IFiltersManager,
14
14
  } from './classes/FiltersManager';
15
15
  import DynamicFilterSearchComponent from './components/search-bar/dynamic-filter-search.vue';
16
16
  import TableFiltersPanelComponent from './components/table-filters-panel.vue';
17
17
  import { FilterOption } from './modules/filterConfig/enums/FilterOption';
18
+
18
19
  export * from './modules/filterConfig';
19
20
 
20
21
  export {
21
- createFiltersManager,
22
- DynamicFilterSearchComponent,
23
- Filter,
24
- FilterOption,
25
- TableFiltersPanelComponent,
22
+ createFiltersManager,
23
+ DynamicFilterSearchComponent,
24
+ Filter,
25
+ FilterOption,
26
+ TableFiltersPanelComponent,
26
27
  };
27
28
 
28
29
  export type {
29
- FilterInitParams,
30
- FilterInstanceConfig,
31
- FilterLabel,
32
- FilterName,
33
- FiltersManagerConfig,
34
- FilterValue,
35
- IFilter,
36
- IFiltersManager,
30
+ FilterInitParams,
31
+ FilterInstanceConfig,
32
+ FilterLabel,
33
+ FilterName,
34
+ FiltersManagerConfig,
35
+ FilterValue,
36
+ IFilter,
37
+ IFiltersManager,
37
38
  };