@webitel/ui-datalist 1.1.4 → 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 +5 -12
  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
@@ -69,14 +69,14 @@
69
69
  <script lang="ts" setup>
70
70
  import { WtIconAction } from '@webitel/ui-sdk/components';
71
71
  import { Store } from 'pinia';
72
- import {computed} from 'vue';
73
- import {WebitelProtoDataField} from "webitel-sdk";
72
+ import { computed } from 'vue';
73
+ import { WebitelProtoDataField } from 'webitel-sdk';
74
74
 
75
75
  import { ApplyPresetAction, SavePresetAction } from '../../filter-presets';
76
- import {FilterData, IFilter} from "../classes/Filter";
77
- import {IFiltersManager} from "../classes/FiltersManager";
78
- import {useFilterConfigsToolkit} from "../composables/useFilterConfigsToolkit";
79
- import {AnyFilterConfig} from "../modules/filterConfig/classes/FilterConfig";
76
+ import { FilterData, IFilter } from '../classes/Filter';
77
+ import { IFiltersManager } from '../classes/FiltersManager';
78
+ import { useFilterConfigsToolkit } from '../composables/useFilterConfigsToolkit';
79
+ import { AnyFilterConfig } from '../modules/filterConfig/classes/FilterConfig';
80
80
  import { FilterOption } from '../modules/filterConfig/enums/FilterOption';
81
81
  import StaticFilterField from './config/static-view/static-filter-field.vue';
82
82
  import DynamicFilterAddAction from './dynamic-filter-add-action.vue';
@@ -84,55 +84,55 @@ import DynamicFilterPanelWrapper from './dynamic-filter-panel-wrapper.vue';
84
84
  import DynamicFilterPreview from './preview/dynamic-filter-preview.vue';
85
85
 
86
86
  type Props = {
87
- /**
88
- * @description
89
- * available filter options to set
90
- */
91
- filterOptions: (FilterOption | AnyFilterConfig)[];
92
- /**
93
- * @description
94
- * create local filters manager from snapshot
95
- * inside save-preset.vue
96
- */
97
- filtersManager: IFiltersManager;
98
- /**
99
- * @author @dlohvinov
100
- *
101
- * @implements
102
- * [WTEL-6702](https://webitel.atlassian.net/browse/WTEL-6702)
103
- *
104
- * @description
105
- * Decided to pass fields as a prop instead of converting them to
106
- * Props.filterOptions, because this functionality can be expanded to many
107
- * filter panels
108
- */
109
- filterableExtensionFields?: WebitelProtoDataField[];
110
- /**
111
- * @description
112
- * QueryPreset "section" field
113
- */
114
- presetNamespace?: string;
115
- /**
116
- * @author @dlohvinov
117
- *
118
- * @description
119
- * table store for operating with presets as dataList.
120
- * Seems to me like a bad idea, because apply-preset should not store
121
- * any data in a specific store – component state should be enough.
122
- * However as for now, there's no composable implementing this logic,
123
- * so store is used instead.
124
- *
125
- * TODO: https://github.com/webitel/webitel-ui-sdk/pull/551
126
- */
127
- usePresetsStore?: Store;
128
-
129
- /**
130
- * @author @Lera24
131
- * @description
132
- * Static view filter rendering mode. With it, filters are drawn immediately when the form is opened
133
- * [https://webitel.atlassian.net/browse/WTEL-6934]
134
- */
135
- staticMode?: boolean;
87
+ /**
88
+ * @description
89
+ * available filter options to set
90
+ */
91
+ filterOptions: (FilterOption | AnyFilterConfig)[];
92
+ /**
93
+ * @description
94
+ * create local filters manager from snapshot
95
+ * inside save-preset.vue
96
+ */
97
+ filtersManager: IFiltersManager;
98
+ /**
99
+ * @author @dlohvinov
100
+ *
101
+ * @implements
102
+ * [WTEL-6702](https://webitel.atlassian.net/browse/WTEL-6702)
103
+ *
104
+ * @description
105
+ * Decided to pass fields as a prop instead of converting them to
106
+ * Props.filterOptions, because this functionality can be expanded to many
107
+ * filter panels
108
+ */
109
+ filterableExtensionFields?: WebitelProtoDataField[];
110
+ /**
111
+ * @description
112
+ * QueryPreset "section" field
113
+ */
114
+ presetNamespace?: string;
115
+ /**
116
+ * @author @dlohvinov
117
+ *
118
+ * @description
119
+ * table store for operating with presets as dataList.
120
+ * Seems to me like a bad idea, because apply-preset should not store
121
+ * any data in a specific store – component state should be enough.
122
+ * However as for now, there's no composable implementing this logic,
123
+ * so store is used instead.
124
+ *
125
+ * TODO: https://github.com/webitel/webitel-ui-sdk/pull/551
126
+ */
127
+ usePresetsStore?: Store;
128
+
129
+ /**
130
+ * @author @Lera24
131
+ * @description
132
+ * Static view filter rendering mode. With it, filters are drawn immediately when the form is opened
133
+ * [https://webitel.atlassian.net/browse/WTEL-6934]
134
+ */
135
+ staticMode?: boolean;
136
136
  };
137
137
 
138
138
  const props = defineProps<Props>();
@@ -147,29 +147,37 @@ const props = defineProps<Props>();
147
147
  * 2. filtersManager shouldn't be passed here, it seems to me like an anti-pattern
148
148
  */
149
149
  const emit = defineEmits<{
150
- 'filter:add': [FilterData];
151
- 'filter:update': [FilterData];
152
- 'filter:delete': [IFilter];
153
- 'filter:reset-all': [];
154
- /**
155
- * string == filtersManager.toString() snapshot
156
- */
157
- 'preset:apply': [string];
158
- hide: [];
150
+ 'filter:add': [
151
+ FilterData,
152
+ ];
153
+ 'filter:update': [
154
+ FilterData,
155
+ ];
156
+ 'filter:delete': [
157
+ IFilter,
158
+ ];
159
+ 'filter:reset-all': [];
160
+ /**
161
+ * string == filtersManager.toString() snapshot
162
+ */
163
+ 'preset:apply': [
164
+ string,
165
+ ];
166
+ hide: [];
159
167
  }>();
160
168
 
161
169
  const {
162
- filterConfigs,
163
- staticViewFilterToFilterConfigMappings,
164
- filtersIncluded,
165
- appliedFilters,
166
- appliedFilterToFilterConfigMappings,
167
- unAppliedFiltersConfigs,
170
+ filterConfigs,
171
+ staticViewFilterToFilterConfigMappings,
172
+ filtersIncluded,
173
+ appliedFilters,
174
+ appliedFilterToFilterConfigMappings,
175
+ unAppliedFiltersConfigs,
168
176
  } = useFilterConfigsToolkit({
169
- filterOptions: props.filterOptions,
170
- filtersManager: props.filtersManager,
171
- filterableExtensionFields: props.filterableExtensionFields,
172
- staticMode: props.staticMode,
177
+ filterOptions: props.filterOptions,
178
+ filtersManager: props.filtersManager,
179
+ filterableExtensionFields: props.filterableExtensionFields,
180
+ staticMode: props.staticMode,
173
181
  });
174
182
 
175
183
  const enablePresets = computed(() => !!props.presetNamespace);
@@ -179,19 +187,25 @@ https://webitel.atlassian.net/browse/WTEL-7014
179
187
  Clear filters button should be active only if filters are defined in the table-filter-panel. Excluding the search filter
180
188
  **/
181
189
 
182
- const listSelectedFilters = computed(()=> {
183
- const filterOptionsKeys = props.filterOptions.map(filter => typeof filter === 'string' ? filter : filter.name);
184
- return new Map([...props.filtersManager.filters].filter(([key]) => filterOptionsKeys.includes(key)));
190
+ const listSelectedFilters = computed(() => {
191
+ const filterOptionsKeys = props.filterOptions.map((filter) =>
192
+ typeof filter === 'string' ? filter : filter.name,
193
+ );
194
+ return new Map(
195
+ [
196
+ ...props.filtersManager.filters,
197
+ ].filter(([key]) => filterOptionsKeys.includes(key)),
198
+ );
185
199
  });
186
200
 
187
201
  const presetStore = props.usePresetsStore ? props.usePresetsStore() : null;
188
202
 
189
203
  const handleResetFilters = () => {
190
- emit('filter:reset-all')
191
- if (presetStore) {
192
- presetStore.resetPreset()
193
- }
194
- }
204
+ emit('filter:reset-all');
205
+ if (presetStore) {
206
+ presetStore.resetPreset();
207
+ }
208
+ };
195
209
  </script>
196
210
 
197
211
  <style>
@@ -2,25 +2,29 @@ import { FilterData, FilterInitParams, IFilter } from '../../classes/Filter';
2
2
  import { AnyFilterConfig } from '../../modules/filterConfig';
3
3
 
4
4
  export interface FilterEmits {
5
- 'update:filter': [FilterData];
6
- 'delete:filter': [IFilter];
5
+ 'update:filter': [
6
+ FilterData,
7
+ ];
8
+ 'delete:filter': [
9
+ IFilter,
10
+ ];
7
11
  }
8
12
 
9
13
  export interface StaticFilterEmits extends FilterEmits {
10
- 'add:filter': [FilterInitParams];
14
+ 'add:filter': [
15
+ FilterInitParams,
16
+ ];
11
17
  }
12
18
 
13
- export interface DynamicFilterEmits extends FilterEmits {
14
- }
19
+ export interface DynamicFilterEmits extends FilterEmits {}
15
20
 
16
21
  export interface FilterProps {
17
- filter: IFilter;
18
- filterConfig: AnyFilterConfig;
22
+ filter: IFilter;
23
+ filterConfig: AnyFilterConfig;
19
24
  }
20
25
 
21
- export interface StaticFilterProps extends FilterProps {
22
- }
26
+ export interface StaticFilterProps extends FilterProps {}
23
27
 
24
28
  export interface DynamicFilterProps extends FilterProps {
25
- readonly?: boolean;
29
+ readonly?: boolean;
26
30
  }
@@ -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
  };