@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
@@ -71,34 +71,36 @@
71
71
 
72
72
  <script lang="ts" setup>
73
73
  import {
74
- WtButton,
75
- WtEmpty,
76
- WtIconAction,
77
- WtPopup,
78
- WtSearchBar,
74
+ WtButton,
75
+ WtEmpty,
76
+ WtIconAction,
77
+ WtPopup,
78
+ WtSearchBar,
79
79
  } from '@webitel/ui-sdk/components';
80
80
  import { IconAction } from '@webitel/ui-sdk/enums';
81
81
  import { useTableEmpty } from '@webitel/ui-sdk/modules/TableComponentModule/composables/useTableEmpty';
82
82
  import { type Store, storeToRefs } from 'pinia';
83
- import {computed, inject, onMounted, ref, watch} from 'vue';
83
+ import { computed, inject, onMounted, ref, watch } from 'vue';
84
84
  import { useI18n } from 'vue-i18n';
85
85
  import { EnginePresetQuery } from 'webitel-sdk';
86
86
 
87
- import {AnyFilterConfig} from "../../../filters/modules/filterConfig/classes/FilterConfig";
87
+ import { AnyFilterConfig } from '../../../filters/modules/filterConfig/classes/FilterConfig';
88
88
  import PresetQueryAPI from '../../api/PresetQuery.ts';
89
89
  import PresetPreview from './preset-preview.vue';
90
90
 
91
91
  const props = defineProps<{
92
- /**
93
- * presets "section" namespace
94
- */
95
- namespace: string;
96
- presetsStore: () => Store;
97
- filterConfigs: AnyFilterConfig[];
92
+ /**
93
+ * presets "section" namespace
94
+ */
95
+ namespace: string;
96
+ presetsStore: () => Store;
97
+ filterConfigs: AnyFilterConfig[];
98
98
  }>();
99
99
 
100
100
  const emit = defineEmits<{
101
- apply: [string];
101
+ apply: [
102
+ string,
103
+ ];
102
104
  }>();
103
105
 
104
106
  const eventBus = inject('$eventBus');
@@ -109,128 +111,148 @@ const showPresetsList = ref(false);
109
111
 
110
112
  const presetsStore = props.presetsStore;
111
113
  const { dataList, error, isLoading, filtersManager, presetId } =
112
- storeToRefs(presetsStore);
114
+ storeToRefs(presetsStore);
113
115
 
114
- const { loadDataList, initialize, updateSize, deleteEls, setupPresetPersistence } = presetsStore;
116
+ const {
117
+ loadDataList,
118
+ initialize,
119
+ updateSize,
120
+ deleteEls,
121
+ setupPresetPersistence,
122
+ } = presetsStore;
115
123
 
116
124
  updateSize(1000);
117
125
  filtersManager.value.addFilter({
118
- name: 'presetNamespace',
119
- value: props.namespace,
126
+ name: 'presetNamespace',
127
+ value: props.namespace,
120
128
  });
121
129
 
122
130
  const lastSetSearchValue = ref<string | null>(null);
123
131
 
124
132
  const search = computed({
125
- get: () => {
126
- return filtersManager.value.getFilter('search')?.value || '';
127
- },
128
- set: (value) => {
129
- // Skip if this value was already set via handleSearchInput
130
- if (lastSetSearchValue.value === value) {
131
- lastSetSearchValue.value = null;
132
- return;
133
- }
134
- filtersManager.value.addFilter({ name: 'search', value });
135
- },
133
+ get: () => {
134
+ return filtersManager.value.getFilter('search')?.value || '';
135
+ },
136
+ set: (value) => {
137
+ // Skip if this value was already set via handleSearchInput
138
+ if (lastSetSearchValue.value === value) {
139
+ lastSetSearchValue.value = null;
140
+ return;
141
+ }
142
+ filtersManager.value.addFilter({
143
+ name: 'search',
144
+ value,
145
+ });
146
+ },
136
147
  });
137
148
 
138
149
  const handleSearchInput = (value: string) => {
139
- // Update search immediately when cleared to bypass debounce
140
- if (!value) {
141
- lastSetSearchValue.value = value;
142
- filtersManager.value.addFilter({ name: 'search', value });
143
- }
150
+ // Update search immediately when cleared to bypass debounce
151
+ if (!value) {
152
+ lastSetSearchValue.value = value;
153
+ filtersManager.value.addFilter({
154
+ name: 'search',
155
+ value,
156
+ });
157
+ }
144
158
  };
145
159
 
146
160
  const {
147
- showEmpty,
148
- image: imageEmpty,
149
- text: textEmpty,
161
+ showEmpty,
162
+ image: imageEmpty,
163
+ text: textEmpty,
150
164
  } = useTableEmpty({
151
- dataList,
152
- isLoading,
153
- error,
154
- filters: computed(() => {
155
- return {
156
- search: search.value,
157
- };
158
- }),
165
+ dataList,
166
+ isLoading,
167
+ error,
168
+ filters: computed(() => {
169
+ return {
170
+ search: search.value,
171
+ };
172
+ }),
159
173
  });
160
174
 
161
175
  watch(
162
- showPresetsList,
163
- () => {
164
- initialize();
165
-
166
- watch(showPresetsList, (value) => {
167
- if (value) {
168
- search.value = '';
169
- /* search.value reset causes re-fetch as filter change, so
176
+ showPresetsList,
177
+ () => {
178
+ initialize();
179
+
180
+ watch(showPresetsList, (value) => {
181
+ if (value) {
182
+ search.value = '';
183
+ /* search.value reset causes re-fetch as filter change, so
170
184
  loadDataList() is commented.
171
185
  TODO: implement ability to set filters "silently" and refactor this code */
172
- // loadDataList();
173
- }
174
- });
175
- },
176
- { once: true },
186
+ // loadDataList();
187
+ }
188
+ });
189
+ },
190
+ {
191
+ once: true,
192
+ },
177
193
  );
178
194
 
179
195
  const selectedPreset = ref();
180
196
 
181
197
  const applySelectedPreset = () => {
182
- const filtersSnapshot =
183
- selectedPreset.value.preset['filtersManager.toString'];
184
- emit('apply', filtersSnapshot);
185
- presetId.value = selectedPreset.value.id
198
+ const filtersSnapshot =
199
+ selectedPreset.value.preset['filtersManager.toString'];
200
+ emit('apply', filtersSnapshot);
201
+ presetId.value = selectedPreset.value.id;
186
202
 
187
- selectedPreset.value = null;
188
- showPresetsList.value = false;
203
+ selectedPreset.value = null;
204
+ showPresetsList.value = false;
189
205
  };
190
206
 
191
207
  const updatePreset = async ({ preset, onSuccess, onFailure }) => {
192
- try {
193
- await PresetQueryAPI.update({
194
- item: { ...preset },
195
- id: preset.id,
196
- namespace: preset.preset?.namespace,
197
- });
198
- eventBus.$emit('notification', {
199
- type: 'success',
200
- text: t('systemNotifications.success.update', {
201
- entity: t('webitelUI.filters.presets.preset'),
202
- }),
203
- });
204
- onSuccess();
205
- return loadDataList();
206
- } catch (err) {
207
- onFailure(err);
208
- throw err;
209
- }
208
+ try {
209
+ await PresetQueryAPI.update({
210
+ item: {
211
+ ...preset,
212
+ },
213
+ id: preset.id,
214
+ namespace: preset.preset?.namespace,
215
+ });
216
+ eventBus.$emit('notification', {
217
+ type: 'success',
218
+ text: t('systemNotifications.success.update', {
219
+ entity: t('webitelUI.filters.presets.preset'),
220
+ }),
221
+ });
222
+ onSuccess();
223
+ return loadDataList();
224
+ } catch (err) {
225
+ onFailure(err);
226
+ throw err;
227
+ }
210
228
  };
211
229
 
212
230
  const deletePreset = async (preset: EnginePresetQuery) => {
213
- await deleteEls([preset]);
214
- eventBus.$emit('notification', {
215
- type: 'success',
216
- text: t('systemNotifications.success.delete', {
217
- entity: t('webitelUI.filters.presets.preset'),
218
- }),
219
- });
231
+ await deleteEls([
232
+ preset,
233
+ ]);
234
+ eventBus.$emit('notification', {
235
+ type: 'success',
236
+ text: t('systemNotifications.success.delete', {
237
+ entity: t('webitelUI.filters.presets.preset'),
238
+ }),
239
+ });
220
240
  };
221
241
 
222
242
  const restorePresetById = async (id: number | null) => {
223
- if (!id) return;
224
- const presetData = await PresetQueryAPI.get({ id });
225
- const filters = presetData?.preset?.['filtersManager.toString'];
243
+ if (!id) return;
244
+ const presetData = await PresetQueryAPI.get({
245
+ id,
246
+ });
247
+ const filters = presetData?.preset?.['filtersManager.toString'];
226
248
 
227
- if (filters) emit('apply', filters);
228
- }
249
+ if (filters) emit('apply', filters);
250
+ };
229
251
 
230
252
  onMounted(async () => {
231
- await setupPresetPersistence();
232
- await restorePresetById(presetId.value)
233
- })
253
+ await setupPresetPersistence();
254
+ await restorePresetById(presetId.value);
255
+ });
234
256
  </script>
235
257
 
236
258
  <style lang="scss" scoped>
@@ -81,50 +81,54 @@
81
81
  import { useVuelidate } from '@vuelidate/core';
82
82
  import { required } from '@vuelidate/validators';
83
83
  import {
84
- WtExpansionPanel,
85
- WtIconAction,
86
- WtRadio,
84
+ WtExpansionPanel,
85
+ WtIconAction,
86
+ WtRadio,
87
87
  } from '@webitel/ui-sdk/components';
88
88
  import { AxiosError } from 'axios';
89
89
  import { computed, ref } from 'vue';
90
90
  import { EnginePresetQuery } from 'webitel-sdk';
91
91
 
92
92
  import { createFiltersManager } from '../../../filters';
93
- import {AnyFilterConfig} from "../../../filters/modules/filterConfig/classes/FilterConfig";
93
+ import { AnyFilterConfig } from '../../../filters/modules/filterConfig/classes/FilterConfig';
94
94
  import PresetDescriptionField from '../_shared/input-fields/preset-description-field.vue';
95
95
  import PresetNameField from '../_shared/input-fields/preset-name-field.vue';
96
96
  import PresetFiltersPreview from '../_shared/preset-filters-preview.vue';
97
97
 
98
98
  type Props = {
99
- preset: EnginePresetQuery;
100
- isSelected: boolean;
101
- collapsed: boolean;
102
- filterConfigs: AnyFilterConfig[];
99
+ preset: EnginePresetQuery;
100
+ isSelected: boolean;
101
+ collapsed: boolean;
102
+ filterConfigs: AnyFilterConfig[];
103
103
  };
104
104
 
105
105
  const props = defineProps<Props>();
106
106
 
107
107
  const emit = defineEmits<{
108
- 'preset:select': [EnginePresetQuery];
109
- 'preset:update': [
110
- {
111
- preset: EnginePresetQuery;
112
- onSuccess: () => void;
113
- onFailure: (err: AxiosError) => void;
114
- },
115
- ];
116
- 'preset:delete': [EnginePresetQuery];
108
+ 'preset:select': [
109
+ EnginePresetQuery,
110
+ ];
111
+ 'preset:update': [
112
+ {
113
+ preset: EnginePresetQuery;
114
+ onSuccess: () => void;
115
+ onFailure: (err: AxiosError) => void;
116
+ },
117
+ ];
118
+ 'preset:delete': [
119
+ EnginePresetQuery,
120
+ ];
117
121
  }>();
118
122
 
119
123
  const filtersManager = computed(() => {
120
- const filtersManager = createFiltersManager();
124
+ const filtersManager = createFiltersManager();
121
125
 
122
- const snapshot = props.preset?.preset?.['filtersManager.toString'];
123
- if (snapshot) {
124
- filtersManager.fromString(snapshot);
125
- }
126
+ const snapshot = props.preset?.preset?.['filtersManager.toString'];
127
+ if (snapshot) {
128
+ filtersManager.fromString(snapshot);
129
+ }
126
130
 
127
- return filtersManager;
131
+ return filtersManager;
128
132
  });
129
133
 
130
134
  const editMode = ref(false);
@@ -137,64 +141,66 @@ const editing = ref(false);
137
141
  const nameAlreadyExistsError = ref(false);
138
142
 
139
143
  const editDraft = ref({
140
- name: '',
141
- description: '',
144
+ name: '',
145
+ description: '',
142
146
  });
143
147
 
144
148
  const fillDraft = () => {
145
- editDraft.value = {
146
- name: props.preset.name,
147
- description: props.preset.description,
148
- };
149
+ editDraft.value = {
150
+ name: props.preset.name,
151
+ description: props.preset.description,
152
+ };
149
153
  };
150
154
 
151
155
  fillDraft();
152
156
 
153
157
  const v$ = useVuelidate(
154
- computed(() => {
155
- return {
156
- name: {
157
- required,
158
- nameAlreadyInUse: () => !nameAlreadyExistsError.value,
159
- },
160
- };
161
- }),
162
- editDraft,
163
- { $autoDirty: true },
158
+ computed(() => {
159
+ return {
160
+ name: {
161
+ required,
162
+ nameAlreadyInUse: () => !nameAlreadyExistsError.value,
163
+ },
164
+ };
165
+ }),
166
+ editDraft,
167
+ {
168
+ $autoDirty: true,
169
+ },
164
170
  );
165
171
  v$.value.$touch();
166
172
 
167
173
  const startEdit = ({ open: openExpansion }) => {
168
- openExpansion();
169
- editMode.value = true;
174
+ openExpansion();
175
+ editMode.value = true;
170
176
  };
171
177
 
172
178
  const clearEdit = () => {
173
- editMode.value = false;
179
+ editMode.value = false;
174
180
  };
175
181
 
176
182
  const submitEdit = () => {
177
- const preset: EnginePresetQuery = {
178
- ...props.preset,
179
- ...editDraft.value,
180
- };
181
- const onFailure = (err: AxiosError) => {
182
- if (err.status === 409) {
183
- nameAlreadyExistsError.value = true;
184
- }
185
- editing.value = false;
186
- };
187
-
188
- emit('preset:update', {
189
- preset,
190
- onSuccess: clearEdit,
191
- onFailure,
192
- });
183
+ const preset: EnginePresetQuery = {
184
+ ...props.preset,
185
+ ...editDraft.value,
186
+ };
187
+ const onFailure = (err: AxiosError) => {
188
+ if (err.status === 409) {
189
+ nameAlreadyExistsError.value = true;
190
+ }
191
+ editing.value = false;
192
+ };
193
+
194
+ emit('preset:update', {
195
+ preset,
196
+ onSuccess: clearEdit,
197
+ onFailure,
198
+ });
193
199
  };
194
200
 
195
201
  const updatePresetName = () => {
196
- nameAlreadyExistsError.value = false;
197
- editing.value = true;
202
+ nameAlreadyExistsError.value = false;
203
+ editing.value = true;
198
204
  };
199
205
  </script>
200
206
 
@@ -41,9 +41,11 @@ import { useI18n } from 'vue-i18n';
41
41
  import { SubmitConfig } from './save-preset-popup.vue';
42
42
 
43
43
  const emit = defineEmits<{
44
- confirm: [SubmitConfig];
45
- cancel: [];
46
- close: [];
44
+ confirm: [
45
+ SubmitConfig,
46
+ ];
47
+ cancel: [];
48
+ close: [];
47
49
  }>();
48
50
 
49
51
  const { t } = useI18n();
@@ -51,9 +53,9 @@ const { t } = useI18n();
51
53
  const isSaving = ref(false);
52
54
 
53
55
  const confirm = () => {
54
- emit('confirm', {
55
- onCompleted: () => (isSaving.value = false),
56
- });
56
+ emit('confirm', {
57
+ onCompleted: () => (isSaving.value = false),
58
+ });
57
59
  };
58
60
  </script>
59
61