@webitel/ui-datalist 1.1.5 → 1.1.6

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 (219) 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 +2 -2
  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 +9 -7
  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/dynamic-filter-add-action.vue.d.ts +2 -2
  200. package/types/modules/filters/components/table-filters-panel.vue.d.ts +4 -4
  201. package/types/modules/filters/components/types/Filter.types.d.ts +9 -3
  202. package/types/modules/filters/createTableFiltersStore.d.ts +8 -2
  203. package/types/modules/filters/modules/filterConfig/components/_custom/filterConfig.d.ts +2 -2
  204. package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue.d.ts +1 -1
  205. package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-preview.vue.d.ts +1 -1
  206. package/types/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-preview.vue.d.ts +1 -1
  207. package/types/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-field.vue.d.ts +1 -1
  208. package/types/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-field.vue.d.ts +1 -1
  209. package/types/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-field.vue.d.ts +1 -1
  210. package/types/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-field.vue.d.ts +1 -1
  211. package/types/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue.d.ts +2 -2
  212. package/types/modules/filters/modules/filterConfig/components/index.d.ts +14 -14
  213. package/types/modules/filters/modules/filterConfig/composables/booleanFilterToolkit.d.ts +1 -1
  214. package/types/modules/filters/modules/filterConfig/enums/options/AMDResultOptions.d.ts +1 -1
  215. package/types/modules/filters/modules/filterConfig/enums/options/CallDirectionFilterOptions.d.ts +4 -1
  216. package/types/modules/filters/modules/filterConfig/enums/options/CallHistoryTagFilterOptions.d.ts +1 -1
  217. package/types/modules/filters/modules/filterConfig/enums/options/HangupCauseFilterOptions.d.ts +1 -1
  218. package/types/modules/filters/scripts/utils.d.ts +1 -1
  219. package/types/modules/table/createTableStore.store.d.ts +16 -4
@@ -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
  };
@@ -4,72 +4,72 @@ import { MessageResolver } from 'vue-i18n';
4
4
  import { FilterName, FilterValue } from '../../../classes/Filter';
5
5
 
6
6
  export interface BaseFilterConfig {
7
- name: FilterName;
8
- valueInputComponent: Component;
9
- valuePreviewComponent: Component;
10
- label?: ReturnType<MessageResolver> | string;
11
- notDeletable?: boolean;
7
+ name: FilterName;
8
+ valueInputComponent: Component;
9
+ valuePreviewComponent: Component;
10
+ label?: ReturnType<MessageResolver> | string;
11
+ notDeletable?: boolean;
12
12
  }
13
13
 
14
14
  export type FilterConfigBaseParams = {
15
- name?: FilterName;
16
- valueInputComponent?: Component;
17
- valuePreviewComponent?: Component;
18
- notDeletable?: boolean;
19
- showFilterName: boolean;
15
+ name?: FilterName;
16
+ valueInputComponent?: Component;
17
+ valuePreviewComponent?: Component;
18
+ notDeletable?: boolean;
19
+ showFilterName: boolean;
20
20
  };
21
21
 
22
22
  export interface IWtSysTypeFilterConfig extends BaseFilterConfig {
23
- searchRecords: (
24
- params: FilterConfigSearchMethodParams,
25
- ) => Promise<{ items: unknown[]; next?: boolean }>;
23
+ searchRecords: (params: FilterConfigSearchMethodParams) => Promise<{
24
+ items: unknown[];
25
+ next?: boolean;
26
+ }>;
26
27
  }
27
28
 
28
29
  export type FilterConfigSearchMethodParams = [
29
- /**
30
- * @description
31
- * any request-related data
32
- */
33
- unknown,
34
- /**
35
- * @description
36
- * filter-related data
37
- */
38
- {
39
- filterName: FilterName;
40
- filterValue: FilterValue;
41
- filterConfig: BaseFilterConfig;
42
- },
30
+ /**
31
+ * @description
32
+ * any request-related data
33
+ */
34
+ unknown,
35
+ /**
36
+ * @description
37
+ * filter-related data
38
+ */
39
+ {
40
+ filterName: FilterName;
41
+ filterValue: FilterValue;
42
+ filterConfig: BaseFilterConfig;
43
+ },
43
44
  ];
44
45
 
45
46
  export type AnyFilterConfig = IWtSysTypeFilterConfig | BaseFilterConfig;
46
47
 
47
48
  export class FilterConfig implements BaseFilterConfig {
48
- name: FilterName;
49
- valueInputComponent: Component;
50
- valuePreviewComponent: Component;
51
- label?: ReturnType<MessageResolver> | string;
52
- staticView?: boolean;
53
- notDeletable: boolean;
54
- showFilterName: boolean;
49
+ name: FilterName;
50
+ valueInputComponent: Component;
51
+ valuePreviewComponent: Component;
52
+ label?: ReturnType<MessageResolver> | string;
53
+ staticView?: boolean;
54
+ notDeletable: boolean;
55
+ showFilterName: boolean;
55
56
 
56
- constructor({
57
- name,
58
- valueInputComponent,
59
- valuePreviewComponent,
60
- notDeletable,
61
- showFilterName,
62
- staticView,
63
- }: FilterConfigBaseParams = {}) {
64
-
65
- if (name) this.name = name;
66
- if (valueInputComponent) this.valueInputComponent = valueInputComponent;
67
- if (valuePreviewComponent)
68
- this.valuePreviewComponent = valuePreviewComponent;
69
- this.notDeletable = !!notDeletable;
70
- if (staticView) this.staticView = staticView;
71
- if(showFilterName) this.showFilterName = showFilterName;
72
- }
57
+ constructor({
58
+ name,
59
+ valueInputComponent,
60
+ valuePreviewComponent,
61
+ notDeletable,
62
+ showFilterName,
63
+ staticView,
64
+ }: FilterConfigBaseParams = {}) {
65
+ if (name) this.name = name;
66
+ if (valueInputComponent) this.valueInputComponent = valueInputComponent;
67
+ if (valuePreviewComponent)
68
+ this.valuePreviewComponent = valuePreviewComponent;
69
+ this.notDeletable = !!notDeletable;
70
+ if (staticView) this.staticView = staticView;
71
+ if (showFilterName) this.showFilterName = showFilterName;
72
+ }
73
73
  }
74
74
 
75
75
  /**
@@ -80,9 +80,9 @@ export class FilterConfig implements BaseFilterConfig {
80
80
  * classes in future
81
81
  */
82
82
  export abstract class WtSysTypeFilterConfig
83
- extends FilterConfig
84
- implements IWtSysTypeFilterConfig
83
+ extends FilterConfig
84
+ implements IWtSysTypeFilterConfig
85
85
  {
86
- abstract name;
87
- abstract searchRecords;
86
+ abstract name;
87
+ abstract searchRecords;
88
88
  }
@@ -1,30 +1,30 @@
1
1
  import {
2
- FilterOptionToFilterConfigCreatorMap,
3
- FilterOptionToPreviewComponentMap,
4
- FilterOptionToValueComponentMap,
2
+ FilterOptionToFilterConfigCreatorMap,
3
+ FilterOptionToPreviewComponentMap,
4
+ FilterOptionToValueComponentMap,
5
5
  } from '../components';
6
6
  import {
7
- BaseFilterConfig,
8
- FilterConfig,
9
- FilterConfigBaseParams,
7
+ BaseFilterConfig,
8
+ FilterConfig,
9
+ FilterConfigBaseParams,
10
10
  } from './FilterConfig';
11
11
 
12
12
  export const createFilterConfig = (
13
- params: BaseFilterConfigParams &
14
- Required<BaseFilterConfig, 'name'> &
15
- Record<string, unknown>,
13
+ params: BaseFilterConfigParams &
14
+ Required<BaseFilterConfig, 'name'> &
15
+ Record<string, unknown>,
16
16
  ): BaseFilterConfig => {
17
- const { name } = params;
17
+ const { name } = params;
18
18
 
19
- const filterConfigClass = FilterOptionToFilterConfigCreatorMap[name];
19
+ const filterConfigClass = FilterOptionToFilterConfigCreatorMap[name];
20
20
 
21
- if (filterConfigClass) {
22
- return filterConfigClass(params);
23
- }
21
+ if (filterConfigClass) {
22
+ return filterConfigClass(params);
23
+ }
24
24
 
25
- return new FilterConfig({
26
- valueInputComponent: FilterOptionToValueComponentMap[name],
27
- valuePreviewComponent: FilterOptionToPreviewComponentMap[name],
28
- ...params,
29
- });
25
+ return new FilterConfig({
26
+ valueInputComponent: FilterOptionToValueComponentMap[name],
27
+ valuePreviewComponent: FilterOptionToPreviewComponentMap[name],
28
+ ...params,
29
+ });
30
30
  };
@@ -6,94 +6,111 @@ import { WebitelProtoDataField } from 'webitel-sdk';
6
6
  import { FilterConfig } from '../../classes/FilterConfig';
7
7
  import { CustomFilterOption } from '../../enums/FilterOption';
8
8
  import {
9
- BaseFilterConfig,
10
- FilterConfigBaseParams,
11
- IWtSysTypeFilterConfig,
9
+ BaseFilterConfig,
10
+ FilterConfigBaseParams,
11
+ IWtSysTypeFilterConfig,
12
12
  } from '../../types/FilterConfig';
13
13
  import TypeExtensionFilterValueField from './type-extension-filter-value-field.vue';
14
14
  import TypeExtensionFilterValuePreview from './type-extension-filter-value-preview.vue';
15
15
 
16
16
  export interface ITypeExtensionFilterConfig extends BaseFilterConfig {
17
- readonly field: WebitelProtoDataField;
17
+ readonly field: WebitelProtoDataField;
18
18
  }
19
19
 
20
20
  class TypeExtensionFilterConfig
21
- extends FilterConfig
22
- implements ITypeExtensionFilterConfig
21
+ extends FilterConfig
22
+ implements ITypeExtensionFilterConfig
23
23
  {
24
- readonly field: WebitelProtoDataField;
24
+ readonly field: WebitelProtoDataField;
25
25
 
26
- constructor(
27
- { name }: FilterConfigBaseParams,
28
- { field }: { field: WebitelProtoDataField },
29
- ) {
30
- super({
31
- name,
32
- valueInputComponent: TypeExtensionFilterValueField,
33
- valuePreviewComponent: TypeExtensionFilterValuePreview,
34
- });
26
+ constructor(
27
+ { name }: FilterConfigBaseParams,
28
+ {
29
+ field,
30
+ }: {
31
+ field: WebitelProtoDataField;
32
+ },
33
+ ) {
34
+ super({
35
+ name,
36
+ valueInputComponent: TypeExtensionFilterValueField,
37
+ valuePreviewComponent: TypeExtensionFilterValuePreview,
38
+ });
35
39
 
36
- this.label = field.name;
37
- this.field = field;
38
- }
40
+ this.label = field.name;
41
+ this.field = field;
42
+ }
39
43
  }
40
44
 
41
45
  class TypeExtensionWtSysTypeFieldFilterConfig
42
- extends TypeExtensionFilterConfig
43
- implements IWtSysTypeFilterConfig
46
+ extends TypeExtensionFilterConfig
47
+ implements IWtSysTypeFilterConfig
44
48
  {
45
- async searchRecords(
46
- { id: filterValue, ...rest },
47
- // {
48
- // filterValue,
49
- // }: {
50
- // filterValue: unknown;
51
- // },
52
- ): Promise<{ items: unknown[]; next?: boolean }> {
53
- const { items, ...restResponse } = await sysTypes.getLookup({
54
- ...rest,
55
- ...this.field.lookup,
56
- id: filterValue,
57
- });
49
+ async searchRecords(
50
+ { id: filterValue, ...rest },
51
+ // {
52
+ // filterValue,
53
+ // }: {
54
+ // filterValue: unknown;
55
+ // },
56
+ ): Promise<{
57
+ items: unknown[];
58
+ next?: boolean;
59
+ }> {
60
+ const { items, ...restResponse } = await sysTypes.getLookup({
61
+ ...rest,
62
+ ...this.field.lookup,
63
+ id: filterValue,
64
+ });
58
65
 
59
- /**
60
- * @author @dlohvinov
61
- *
62
- * [WTEL-6787](https://webitel.atlassian.net/browse/WTEL-6787)
63
- *
64
- * name from display is get here instead of wt-select props because it's
65
- * much simplier than configuring wt-select, but still this code is still
66
- * isolated enough.
67
- *
68
- * for instance, contacts:
69
- * display=name.common_name
70
- * objects=[{ name: { common_name: 'str' } }]
71
- */
72
- return {
73
- items: items.map((item) => ({
74
- ...item,
75
- name: get(item, this.field.lookup.display),
76
- })),
77
- ...restResponse,
78
- };
79
- }
66
+ /**
67
+ * @author @dlohvinov
68
+ *
69
+ * [WTEL-6787](https://webitel.atlassian.net/browse/WTEL-6787)
70
+ *
71
+ * name from display is get here instead of wt-select props because it's
72
+ * much simplier than configuring wt-select, but still this code is still
73
+ * isolated enough.
74
+ *
75
+ * for instance, contacts:
76
+ * display=name.common_name
77
+ * objects=[{ name: { common_name: 'str' } }]
78
+ */
79
+ return {
80
+ items: items.map((item) => ({
81
+ ...item,
82
+ name: get(item, this.field.lookup.display),
83
+ })),
84
+ ...restResponse,
85
+ };
86
+ }
80
87
  }
81
88
 
82
89
  export type {
83
- TypeExtensionFilterConfig,
84
- TypeExtensionWtSysTypeFieldFilterConfig,
90
+ TypeExtensionFilterConfig,
91
+ TypeExtensionWtSysTypeFieldFilterConfig,
85
92
  };
86
93
 
87
94
  export const createTypeExtensionFilterConfig = (
88
- name: CustomFilterOption,
89
- { field }: { field: WebitelProtoDataField },
95
+ name: CustomFilterOption,
96
+ {
97
+ field,
98
+ }: {
99
+ field: WebitelProtoDataField;
100
+ },
90
101
  ) => {
91
- switch (field.kind) {
92
- case WtTypeExtensionFieldKind.Select:
93
- return new TypeExtensionWtSysTypeFieldFilterConfig(name, { field });
94
- case WtTypeExtensionFieldKind.Multiselect:
95
- return new TypeExtensionWtSysTypeFieldFilterConfig(name, { field });
96
- default:
97
- return new TypeExtensionFilterConfig(name, { field });
98
- }
102
+ switch (field.kind) {
103
+ case WtTypeExtensionFieldKind.Select:
104
+ return new TypeExtensionWtSysTypeFieldFilterConfig(name, {
105
+ field,
106
+ });
107
+ case WtTypeExtensionFieldKind.Multiselect:
108
+ return new TypeExtensionWtSysTypeFieldFilterConfig(name, {
109
+ field,
110
+ });
111
+ default:
112
+ return new TypeExtensionFilterConfig(name, {
113
+ field,
114
+ });
115
+ }
99
116
  };
@@ -3,9 +3,9 @@ import TypeExtensionFilterValueField from './type-extension-filter-value-field.v
3
3
  import TypeExtensionFilterValuePreview from './type-extension-filter-value-preview.vue';
4
4
 
5
5
  export {
6
- createTypeExtensionFilterConfig,
7
- TypeExtensionFilterValueField,
8
- TypeExtensionFilterValuePreview,
6
+ createTypeExtensionFilterConfig,
7
+ TypeExtensionFilterValueField,
8
+ TypeExtensionFilterValuePreview,
9
9
  };
10
10
 
11
11
  export type * from './filterConfig';