@webitel/ui-sdk 24.10.3 → 24.10.5

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 (202) hide show
  1. package/dist/ui-sdk.css +1 -1
  2. package/dist/ui-sdk.js +111 -114
  3. package/dist/ui-sdk.umd.cjs +8 -8
  4. package/package.json +6 -4
  5. package/src/api/axios/generateInstance.js +1 -4
  6. package/src/api/clients/agents/agents.js +31 -78
  7. package/src/api/clients/buckets/buckets.js +17 -57
  8. package/src/api/clients/calendars/calendars.js +18 -71
  9. package/src/api/clients/chatGateways/chatGateways.js +23 -61
  10. package/src/api/clients/chatGateways/defaults/webChatGateway.js +6 -8
  11. package/src/api/clients/chatGateways/enums/WebchatAlternativeChannel.enum.js +3 -3
  12. package/src/api/clients/communications/communications.js +20 -62
  13. package/src/api/clients/configurations/configurations.js +18 -3
  14. package/src/api/clients/flows/flow.js +17 -60
  15. package/src/api/clients/gateways/gateways.js +20 -59
  16. package/src/api/clients/index.js +1 -1
  17. package/src/api/clients/lists/blacklists.js +18 -60
  18. package/src/api/clients/media/media.js +13 -43
  19. package/src/api/clients/queues/defaults/processing.js +10 -6
  20. package/src/api/clients/queues/queues.js +21 -69
  21. package/src/api/clients/roles/roles.js +15 -33
  22. package/src/api/clients/users/__tests__/users.spec.js +43 -26
  23. package/src/api/clients/users/users.js +21 -56
  24. package/src/api/crm/contactChatMessagesHistory.js +8 -23
  25. package/src/api/crm/contacts.js +235 -0
  26. package/src/api/crm/enums/ContactsSearchMode.js +9 -0
  27. package/src/api/crm/index.js +2 -3
  28. package/src/api/defaults/getDefaultGetParams/getDefaultGetParams.js +1 -4
  29. package/src/api/defaults/getDefaultInstance/getDefaultInstance.js +10 -11
  30. package/src/api/defaults/getDefaultOpenAPIConfig/getDefaultOpenAPIConfig.js +6 -5
  31. package/src/api/defaults/index.js +2 -4
  32. package/src/api/history/index.js +1 -3
  33. package/src/api/history/transcript/callTranscript.js +10 -30
  34. package/src/api/interceptors/request/updateToken.interceptor.js +1 -2
  35. package/src/api/transformers/merge/merge.transformer.js +4 -1
  36. package/src/api/transformers/mergeEach/mergeEach.transformer.js +4 -4
  37. package/src/api/transformers/notify/notify.transformer.js +9 -6
  38. package/src/api/transformers/starToSearch/starToSearch.transformer.js +8 -6
  39. package/src/components/index.js +3 -6
  40. package/src/components/on-demand/wt-cc-agent-status-timers/__tests__/wt-cc-agent-status-timers.spec.js +2 -4
  41. package/src/components/transitions/wt-expand-transition.vue +2 -3
  42. package/src/components/wt-app-header/__tests__/WtAppNavigator.spec.js +1 -2
  43. package/src/components/wt-app-header/__tests__/WtHeaderActions.spec.js +1 -2
  44. package/src/components/wt-app-header/wt-app-navigator.vue +15 -9
  45. package/src/components/wt-avatar/wt-avatar.vue +8 -3
  46. package/src/components/wt-button/wt-button.vue +0 -1
  47. package/src/components/wt-button-select/__tests__/WtButtonSelect.spec.js +4 -5
  48. package/src/components/wt-button-select/wt-button-select.vue +0 -1
  49. package/src/components/wt-context-menu/wt-context-menu.vue +32 -35
  50. package/src/components/wt-dummy/wt-dummy.vue +2 -5
  51. package/src/components/wt-expansion-panel/wt-expansion-panel.vue +10 -7
  52. package/src/components/wt-filters-panel-wrapper/__tests__/WtFiltersPanelWrapper.spec.js +4 -8
  53. package/src/components/wt-icon/wt-icon.vue +0 -1
  54. package/src/components/wt-indicator/__tests__/WtIndicator.spec.js +3 -2
  55. package/src/components/wt-indicator/wt-indicator.vue +10 -1
  56. package/src/components/wt-input/wt-input.vue +7 -10
  57. package/src/components/wt-item-link/wt-item-link.vue +7 -4
  58. package/src/components/wt-navigation-bar/__tests__/WtNavigationBar.spec.js +7 -15
  59. package/src/components/wt-navigation-bar/wt-navigation-bar.vue +7 -7
  60. package/src/components/wt-notification/wt-notification.vue +1 -2
  61. package/src/components/wt-notifications-bar/__tests__/WtNotificationsBar.spec.js +6 -3
  62. package/src/components/wt-notifications-bar/wt-notifications-bar.vue +4 -1
  63. package/src/components/wt-page-wrapper/__tests__/WtPageWrapper.spec.js +1 -2
  64. package/src/components/wt-pagination/wt-pagination.vue +1 -3
  65. package/src/components/wt-player/scripts/__tests__/createPlyrURL.spec.js +4 -8
  66. package/src/components/wt-player/wt-player.vue +13 -4
  67. package/src/components/wt-popup/wt-popup.vue +2 -1
  68. package/src/components/wt-search-bar/wt-search-bar.vue +1 -1
  69. package/src/components/wt-select/mixins/multiselectMixin.js +2 -5
  70. package/src/components/wt-select/wt-select.vue +12 -11
  71. package/src/components/wt-slider/wt-slider.vue +4 -2
  72. package/src/components/wt-status-select/wt-status-select.vue +10 -6
  73. package/src/components/wt-stepper/wt-stepper.vue +6 -4
  74. package/src/components/wt-switcher/wt-switcher.vue +1 -3
  75. package/src/components/wt-table/__tests__/WtTable.spec.js +2 -5
  76. package/src/components/wt-table/wt-table.vue +18 -16
  77. package/src/components/wt-table-column-select/wt-table-column-select.vue +9 -8
  78. package/src/components/wt-tabs/wt-tabs.vue +1 -3
  79. package/src/components/wt-tags-input/mixin/taggableMixin.js +7 -7
  80. package/src/components/wt-textarea/__tests__/WtTextarea.spec.js +2 -4
  81. package/src/components/wt-textarea/wt-textarea.vue +3 -2
  82. package/src/components/wt-timepicker/wt-timepicker.vue +1 -3
  83. package/src/components/wt-tooltip/_internals/useTooltipTriggerSubscriptions.js +1 -3
  84. package/src/components/wt-tooltip/_internals/wt-tooltip-floating.vue +8 -12
  85. package/src/components/wt-tooltip/wt-tooltip.vue +13 -13
  86. package/src/composables/useCachedInterval/__tests__/useCachedInterval.spec.js +6 -4
  87. package/src/composables/useCachedInterval/useCachedInterval.js +3 -8
  88. package/src/composables/useRepresentableAgentPauseCause/__tests__/useRepresentableAgentPauseCause.spec.js +11 -33
  89. package/src/composables/useRepresentableAgentPauseCause/useRepresentableAgentPauseCause.js +11 -9
  90. package/src/enums/WebitelApplications/AdminSections.enum.js +28 -28
  91. package/src/enums/WebitelApplications/CrmSections.enum.js +1 -1
  92. package/src/locale/en/en.js +12 -15
  93. package/src/locale/es/es.js +4 -8
  94. package/src/locale/kz/kz.js +5 -7
  95. package/src/locale/ru/ru.js +7 -11
  96. package/src/locale/ua/ua.js +13 -17
  97. package/src/mixins/dataFilterMixins/__tests__/enumFilterMixin.spec.js +1 -2
  98. package/src/mixins/dataFilterMixins/__tests__/sortFilterMixin.spec.js +4 -2
  99. package/src/mixins/dataFilterMixins/__tests__/urlControllerMixin.spec.js +4 -1
  100. package/src/mixins/dataFilterMixins/_urlControllerMixin/_urlControllerMixin.js +1 -1
  101. package/src/mixins/dataFilterMixins/apiFilterMixin.js +1 -2
  102. package/src/mixins/dataFilterMixins/baseFilterMixin/baseFilterMixin.js +1 -2
  103. package/src/mixins/dataFilterMixins/enumFilterMixin.js +5 -6
  104. package/src/mixins/dataFilterMixins/paginationFilterMixin.js +1 -2
  105. package/src/mixins/dataFilterMixins/sortFilterMixin.js +1 -4
  106. package/src/mixins/validationMixin/__tests__/validationMixin.spec.js +1 -2
  107. package/src/mixins/validationMixin/useValidation.js +25 -19
  108. package/src/mixins/validationMixin/validationMixin.js +22 -10
  109. package/src/modules/AgentStatusSelect/api/pause-cause.js +3 -11
  110. package/src/modules/AgentStatusSelect/components/__tests__/wt-cc-agent-status-select.spec.js +16 -18
  111. package/src/modules/AgentStatusSelect/components/__tests__/wt-cc-pause-cause-popup.spec.js +1 -2
  112. package/src/modules/AgentStatusSelect/components/_internals/wt-cc-pause-cause-popup.vue +12 -12
  113. package/src/modules/AgentStatusSelect/components/_internals/wt-cc-status-select-error-popup.vue +0 -1
  114. package/src/modules/AgentStatusSelect/components/wt-cc-agent-status-select.vue +20 -7
  115. package/src/modules/Appearance/components/__tests__/wt-dark-mode-switcher.spec.js +2 -4
  116. package/src/modules/Appearance/components/wt-dark-mode-switcher.vue +0 -1
  117. package/src/modules/AuditForm/components/__tests__/audit-form-question-read-wrapper.spec.js +1 -2
  118. package/src/modules/AuditForm/components/__tests__/audit-form-question-write-wrapper.spec.js +15 -25
  119. package/src/modules/AuditForm/components/__tests__/audit-form.spec.js +11 -20
  120. package/src/modules/AuditForm/components/audit-form-question-read-wrapper.vue +1 -4
  121. package/src/modules/AuditForm/components/audit-form-question-write-wrapper.vue +4 -7
  122. package/src/modules/AuditForm/components/audit-form-question.vue +18 -17
  123. package/src/modules/AuditForm/components/audit-form.vue +12 -14
  124. package/src/modules/AuditForm/components/questions/options/__tests__/audit-form-question-options-write-row.spec.js +1 -2
  125. package/src/modules/AuditForm/components/questions/options/__tests__/audit-form-question-options.spec.js +1 -3
  126. package/src/modules/AuditForm/components/questions/options/audit-form-question-options-write-row.vue +11 -15
  127. package/src/modules/AuditForm/components/questions/options/audit-form-question-options.vue +1 -4
  128. package/src/modules/AuditForm/components/questions/score/audit-form-question-score.vue +16 -20
  129. package/src/modules/AuditForm/schemas/AuditFormQuestionOptionsSchema.js +1 -3
  130. package/src/modules/CSVExport/CSVExport.js +3 -7
  131. package/src/modules/CSVExport/XLSExport.js +6 -7
  132. package/src/modules/CSVExport/__tests__/CSVExport.spec.js +1 -2
  133. package/src/modules/CSVExport/mixins/exportCSVMixin.js +2 -5
  134. package/src/modules/CSVExport/mixins/exportXLSMixin.js +2 -4
  135. package/src/modules/CardStoreModule/store/CardStoreModule.js +2 -6
  136. package/src/modules/DeleteConfirmationPopup/__tests__/delete-confirmation-popup.spec.js +13 -10
  137. package/src/modules/DeleteConfirmationPopup/components/delete-confirmation-popup.vue +5 -14
  138. package/src/modules/FilesExport/FilesExport.js +4 -3
  139. package/src/modules/FilesExport/__tests__/FilesExport.spec.js +12 -12
  140. package/src/modules/FilesExport/mixins/exportFilesMixin.js +6 -7
  141. package/src/modules/FilesExport/scripts/generateMediaURL.js +1 -2
  142. package/src/modules/Filters/classes/BaseFilterSchema.js +21 -25
  143. package/src/modules/Filters/components/filter-pagination.vue +7 -3
  144. package/src/modules/Filters/components/filter-search.vue +21 -12
  145. package/src/modules/Filters/components/filter-table-fields.vue +1 -3
  146. package/src/modules/Filters/scripts/getters/index.js +1 -5
  147. package/src/modules/Filters/scripts/getters/queryGetter.js +2 -3
  148. package/src/modules/Filters/scripts/restores/index.js +1 -4
  149. package/src/modules/Filters/scripts/setters/index.js +1 -5
  150. package/src/modules/Filters/scripts/setters/querySetter.js +24 -22
  151. package/src/modules/Filters/scripts/utils/changeRouteQuery.js +16 -15
  152. package/src/modules/Filters/store/FiltersStoreModule.js +51 -45
  153. package/src/modules/Filters/store/__tests__/FiltersStoreModule.spec.js +51 -45
  154. package/src/modules/Notifications/store/NotificationsStoreModule.js +41 -38
  155. package/src/modules/Notifications/store/__tests__/NotificationsStoreModule.actions.spec.js +6 -6
  156. package/src/modules/QueryFilters/api/defaults.js +2 -3
  157. package/src/modules/QueryFilters/classes/ApiFilterSchema.js +1 -4
  158. package/src/modules/QueryFilters/classes/EnumFilterSchema.js +1 -4
  159. package/src/modules/QueryFilters/components/__tests__/filter-datetime.spec.js +1 -2
  160. package/src/modules/QueryFilters/components/__tests__/filter-from-to.spec.js +2 -4
  161. package/src/modules/QueryFilters/components/__tests__/filter-search.spec.js +2 -4
  162. package/src/modules/QueryFilters/components/filter-table-fields.vue +1 -5
  163. package/src/modules/QueryFilters/mixins/__tests__/apiFilterMixin.spec.js +4 -3
  164. package/src/modules/QueryFilters/mixins/__tests__/enumFilterMixin.spec.js +2 -4
  165. package/src/modules/QueryFilters/mixins/__tests__/sortFilterMixin.spec.js +4 -2
  166. package/src/modules/QueryFilters/mixins/__tests__/urlControllerMixin.spec.js +4 -1
  167. package/src/modules/QueryFilters/mixins/_urlControllerMixin/_urlControllerMixin.js +1 -1
  168. package/src/modules/QueryFilters/mixins/apiFilterMixin.js +1 -1
  169. package/src/modules/QueryFilters/mixins/baseFilterMixin/baseFilterMixin.js +4 -2
  170. package/src/modules/QueryFilters/mixins/enumFilterMixin.js +9 -11
  171. package/src/modules/QueryFilters/mixins/paginationFilterMixin.js +2 -4
  172. package/src/modules/QueryFilters/mixins/sortFilterMixin.js +2 -5
  173. package/src/modules/QueryFilters/store/QueryFiltersStoreModule.js +13 -17
  174. package/src/modules/QueryFilters/store/__tests__/QueryFiltersStoreModule.spec.js +15 -16
  175. package/src/modules/TableStoreModule/store/TableStoreModule.js +14 -33
  176. package/src/modules/TableStoreModule/store/__tests__/TableStoreModule.spec.js +69 -83
  177. package/src/modules/Userinfo/api/userinfo.js +6 -19
  178. package/src/modules/Userinfo/classes/ApplicationsAccess.js +5 -12
  179. package/src/modules/Userinfo/store/UserinfoStoreModule.js +38 -41
  180. package/src/plugins/breakpoint/breakpoint.plugin.js +11 -16
  181. package/src/scripts/__tests__/caseConverters.spec.js +1 -4
  182. package/src/scripts/__tests__/debounce.spec.js +3 -1
  183. package/src/scripts/__tests__/prettifyFileSize.spec.js +2 -2
  184. package/src/scripts/__tests__/preventHiddenPageCallsDecorator.spec.js +7 -4
  185. package/src/scripts/__tests__/updateObject.spec.js +3 -5
  186. package/src/scripts/caseConverters.js +22 -38
  187. package/src/scripts/debounce.js +1 -5
  188. package/src/scripts/editProxy.js +8 -7
  189. package/src/scripts/prettifyFileSize.js +1 -1
  190. package/src/scripts/preventHiddenPageCallsDecorator.js +3 -6
  191. package/src/store/BaseStoreModules/ApiStoreModule.js +7 -33
  192. package/src/store/BaseStoreModules/BaseStoreModule.js +14 -23
  193. package/src/store/BaseStoreModules/__tests__/BaseStoreModule.spec.js +7 -28
  194. package/src/store/helpers/getNamespacedState.js +2 -4
  195. package/src/store/new/modules/apiStoreModule/apiStoreModule.js +7 -27
  196. package/src/store/new/modules/cardStoreModule/cardStoreModule.js +0 -1
  197. package/src/store/new/modules/tableStoreModule/__tests__/tableStoreModule.spec.js +64 -77
  198. package/src/store/new/modules/tableStoreModule/tableStoreModule.js +12 -29
  199. package/src/tests/mocks/axiosMock.js +25 -19
  200. package/src/validators/decimalValidator.js +5 -4
  201. package/src/validators/websocketValidator/__tests__/websocketValidator.spec.js +1 -2
  202. package/src/validators/websocketValidator/websocketValidator.js +1 -1
@@ -14,9 +14,7 @@ export default {
14
14
  return this.XLSExport ? this.XLSExport.downloadProgress.count : 0;
15
15
  },
16
16
  selectedIds() {
17
- return this.dataList
18
- .filter((item) => item._isSelected)
19
- .map((item) => item.id);
17
+ return this.dataList.filter((item) => item._isSelected).map((item) => item.id);
20
18
  },
21
19
  isAnySelected() {
22
20
  return !!this.selectedIds.length;
@@ -30,7 +28,7 @@ export default {
30
28
  async exportXLS(exportParams) {
31
29
  const routeQuery = this.$route?.query;
32
30
  const params = {
33
- ...exportParams || routeQuery,
31
+ ...(exportParams || routeQuery),
34
32
  size: 5000,
35
33
  };
36
34
  if (this.isAnySelected) params.id = this.selectedIds;
@@ -1,7 +1,6 @@
1
1
  import deepCopy from 'deep-copy';
2
2
  import set from 'lodash/set.js';
3
- import BaseStoreModule
4
- from '../../../store/BaseStoreModules/BaseStoreModule.js';
3
+ import BaseStoreModule from '../../../store/BaseStoreModules/BaseStoreModule.js';
5
4
 
6
5
  export default class CardStoreModule extends BaseStoreModule {
7
6
  state = {
@@ -69,10 +68,7 @@ export default class CardStoreModule extends BaseStoreModule {
69
68
  },
70
69
  };
71
70
 
72
- getModule({
73
- state = {},
74
- ...rest
75
- } = {}) {
71
+ getModule({ state = {}, ...rest } = {}) {
76
72
  this.state = {
77
73
  ...this.state,
78
74
  ...state,
@@ -1,8 +1,7 @@
1
1
  import { mount, shallowMount } from '@vue/test-utils';
2
2
  import { ref } from 'vue';
3
3
  import { useValidation } from '../../../mixins/validationMixin/useValidation.js';
4
- import DeleteConfirmationPopup
5
- from '../components/delete-confirmation-popup.vue';
4
+ import DeleteConfirmationPopup from '../components/delete-confirmation-popup.vue';
6
5
 
7
6
  vi.mock('../../../mixins/validationMixin/useValidation.js');
8
7
 
@@ -31,8 +30,9 @@ describe('DeleteConfirmationPopup', () => {
31
30
  callback,
32
31
  },
33
32
  });
34
- const button = wrapper.findAllComponents({ name: 'wt-button' })
35
- .find((btn) => btn.text().includes('Yes'));
33
+ const button = wrapper
34
+ .findAllComponents({ name: 'wt-button' })
35
+ .find((btn) => btn.text().includes('Yes'));
36
36
  expect(button.text()).toContain('Yes');
37
37
  await button.trigger('click');
38
38
  await wrapper.vm.$nextTick();
@@ -47,8 +47,9 @@ describe('DeleteConfirmationPopup', () => {
47
47
  callback: vi.fn(),
48
48
  },
49
49
  });
50
- expect(wrapper.find('.delete-confirmation-popup__content').text())
51
- .toContain(deleteCount.toString());
50
+ expect(wrapper.find('.delete-confirmation-popup__content').text()).toContain(
51
+ deleteCount.toString(),
52
+ );
52
53
  });
53
54
 
54
55
  it('yes button emitted close', async () => {
@@ -58,8 +59,9 @@ describe('DeleteConfirmationPopup', () => {
58
59
  callback: vi.fn(),
59
60
  },
60
61
  });
61
- const button = wrapper.findAllComponents({ name: 'wt-button' })
62
- .find((btn) => btn.text().includes('Yes'));
62
+ const button = wrapper
63
+ .findAllComponents({ name: 'wt-button' })
64
+ .find((btn) => btn.text().includes('Yes'));
63
65
  await button.vm.$emit('close');
64
66
  await wrapper.vm.$nextTick();
65
67
  expect(button.emitted('close')).toBeTruthy();
@@ -72,8 +74,9 @@ describe('DeleteConfirmationPopup', () => {
72
74
  callback: vi.fn(),
73
75
  },
74
76
  });
75
- const button = wrapper.findAllComponents({ name: 'wt-button' })
76
- .find((btn) => btn.text().includes('No'));
77
+ const button = wrapper
78
+ .findAllComponents({ name: 'wt-button' })
79
+ .find((btn) => btn.text().includes('No'));
77
80
  await button.vm.$emit('close');
78
81
  await wrapper.vm.$nextTick();
79
82
  expect(button.emitted('close')).toBeTruthy();
@@ -52,9 +52,7 @@ const props = defineProps({
52
52
  },
53
53
  });
54
54
 
55
- const emit = defineEmits([
56
- 'close',
57
- ]);
55
+ const emit = defineEmits(['close']);
58
56
 
59
57
  const attrs = useAttrs();
60
58
 
@@ -64,18 +62,11 @@ const isDeleting = ref(false);
64
62
 
65
63
  const deleteMessage = computed(() => {
66
64
  if (props.deleteCount === 0) {
67
- return t(
68
- 'webitelUI.deleteConfirmationPopup.askingAlert',
69
- 2,
70
- null,
71
- { count: t('webitelUI.deleteConfirmationPopup.deleteAll') },
72
- );
65
+ return t('webitelUI.deleteConfirmationPopup.askingAlert', 2, null, {
66
+ count: t('webitelUI.deleteConfirmationPopup.deleteAll'),
67
+ });
73
68
  }
74
- return t(
75
- 'webitelUI.deleteConfirmationPopup.askingAlert',
76
- { count: props.deleteCount },
77
- null,
78
- );
69
+ return t('webitelUI.deleteConfirmationPopup.askingAlert', { count: props.deleteCount }, null);
79
70
  });
80
71
 
81
72
  function close() {
@@ -25,14 +25,15 @@ export default class FilesExport {
25
25
 
26
26
  _fetchFileBinary(fileId) {
27
27
  const url = this.filesURL(fileId);
28
- return new Promise((resolve, reject) => (
28
+ return new Promise((resolve, reject) =>
29
29
  jszipUtils.getBinaryContent(url, (err, data) => {
30
30
  if (err) {
31
31
  reject(err);
32
32
  } else {
33
33
  resolve(data);
34
34
  }
35
- })));
35
+ }),
36
+ );
36
37
  }
37
38
 
38
39
  resetProgress() {
@@ -96,7 +97,7 @@ export default class FilesExport {
96
97
  try {
97
98
  this.isLoading = true;
98
99
  const zip = new JSZip();
99
- if (files && files.length) await this._addFilesToZip(files, zip);
100
+ if (files?.length) await this._addFilesToZip(files, zip);
100
101
  else {
101
102
  await this._fetchAndZip(zip, reqParams);
102
103
  }
@@ -11,9 +11,7 @@ vi.mock('file-saver-es', () => ({
11
11
  saveAs: vi.fn(),
12
12
  }));
13
13
 
14
- const dataList = [
15
- { files: [{ name: 'jest', id: '1', mimeType: 'mime/type' }] },
16
- ];
14
+ const dataList = [{ files: [{ name: 'jest', id: '1', mimeType: 'mime/type' }] }];
17
15
  const selectedDataList = [
18
16
  {
19
17
  _isSelected: true,
@@ -26,14 +24,10 @@ const selectedDataList = [
26
24
  ];
27
25
 
28
26
  describe('File Export', () => {
29
- jszipUtils.getBinaryContent.mockImplementation((
30
- url,
31
- callback,
32
- ) => callback(null, {}));
27
+ jszipUtils.getBinaryContent.mockImplementation((url, callback) => callback(null, {}));
33
28
  let wrapper;
34
29
  const Component = {
35
- render() {
36
- },
30
+ render() {},
37
31
  mixins: [FilesExportMixin],
38
32
  created() {
39
33
  this.initFilesExport({
@@ -60,10 +54,16 @@ describe('File Export', () => {
60
54
 
61
55
  it('mixin correctly computes selectedFiles()', () => {
62
56
  wrapper = shallowMount(Component, {
63
- computed: { selectedItems() { return selectedDataList; } },
57
+ computed: {
58
+ selectedItems() {
59
+ return selectedDataList;
60
+ },
61
+ },
64
62
  });
65
- expect(wrapper.vm.getSelectedFiles())
66
- .toEqual([...selectedDataList[0].files, ...selectedDataList[1].files]);
63
+ expect(wrapper.vm.getSelectedFiles()).toEqual([
64
+ ...selectedDataList[0].files,
65
+ ...selectedDataList[1].files,
66
+ ]);
67
67
  });
68
68
 
69
69
  it('mixin catches export error and resets isFilesLoading on export error', async () => {
@@ -15,9 +15,7 @@ export default {
15
15
  },
16
16
 
17
17
  filesZippingProgress() {
18
- return this.FilesExport
19
- ? Math.floor(this.FilesExport.zippingProgress.percent)
20
- : 0;
18
+ return this.FilesExport ? Math.floor(this.FilesExport.zippingProgress.percent) : 0;
21
19
  },
22
20
  },
23
21
 
@@ -29,10 +27,11 @@ export default {
29
27
  getSelectedFiles() {
30
28
  let files = null;
31
29
  if (this.selectedItems?.length) {
32
- files = this.selectedItems.reduce((filesAccumulator, next) => (
33
- next.files
34
- ? [...filesAccumulator, ...next.files]
35
- : filesAccumulator), []);
30
+ files = this.selectedItems.reduce(
31
+ (filesAccumulator, next) =>
32
+ next.files ? [...filesAccumulator, ...next.files] : filesAccumulator,
33
+ [],
34
+ );
36
35
  }
37
36
  return files;
38
37
  },
@@ -1,7 +1,6 @@
1
1
  const generateMediaURL = (id) => {
2
2
  const token = localStorage.getItem('access-token');
3
- const BASE_URL = process?.env?.VUE_APP_API_URL ||
4
- import.meta.env.VITE_API_URL;
3
+ const BASE_URL = process?.env?.VUE_APP_API_URL || import.meta.env.VITE_API_URL;
5
4
  return `${BASE_URL}/storage/recordings/${id}/stream?access_token=${token}`;
6
5
  };
7
6
 
@@ -1,14 +1,6 @@
1
- import {
2
- localStorageGetter,
3
- queryGetter,
4
- valueGetter,
5
- } from '../scripts/getters/index.js';
1
+ import { localStorageGetter, queryGetter, valueGetter } from '../scripts/getters/index.js';
6
2
  import { localStorageRestore, queryRestore } from '../scripts/restores/index.js';
7
- import {
8
- localStorageSetter,
9
- querySetter,
10
- valueSetter,
11
- } from '../scripts/setters/index.js';
3
+ import { localStorageSetter, querySetter, valueSetter } from '../scripts/setters/index.js';
12
4
 
13
5
  const convertGetterArray = (context) => (getters) => {
14
6
  const availableGetters = ['value', 'query', 'localStorage'];
@@ -80,23 +72,27 @@ const convertRestoreArray = (context) => (restores) => {
80
72
 
81
73
  export default class BaseFilterSchema {
82
74
  constructor({
83
- name,
84
- value = '',
85
- defaultValue = '',
86
- get = ['value', 'query'],
87
- set = ['value', 'query'],
88
- restore = ['query'],
89
- multiple = false,
90
- ...rest
91
- } = {}) {
75
+ name,
76
+ value = '',
77
+ defaultValue = '',
78
+ get = ['value', 'query'],
79
+ set = ['value', 'query'],
80
+ restore = ['query'],
81
+ multiple = false,
82
+ ...rest
83
+ } = {}) {
92
84
  if (!name) throw new Error('Filter name is required');
93
85
 
94
- Object.assign(this, {
95
- name,
96
- value,
97
- defaultValue,
98
- multiple,
99
- }, rest);
86
+ Object.assign(
87
+ this,
88
+ {
89
+ name,
90
+ value,
91
+ defaultValue,
92
+ multiple,
93
+ },
94
+ rest,
95
+ );
100
96
 
101
97
  this.setupGetters(get);
102
98
  this.setupSetters(set);
@@ -49,9 +49,13 @@ function setSize(value) {
49
49
  return setFilter({ value, name: sizeFilterName });
50
50
  }
51
51
 
52
- watch(size, () => {
53
- localSize.value = size.value;
54
- }, { immediate: true });
52
+ watch(
53
+ size,
54
+ () => {
55
+ localSize.value = size.value;
56
+ },
57
+ { immediate: true },
58
+ );
55
59
  </script>
56
60
 
57
61
  <style lang="scss" scoped>
@@ -49,21 +49,27 @@ function setValue(payload) {
49
49
 
50
50
  const filterName = ref(props.multisearch ? props.searchModeOpts[0].value : props.name);
51
51
 
52
- const currentSearchMode = computed(
53
- () => props.searchModeOpts.find(({ value }) => value === filterName.value),
52
+ const currentSearchMode = computed(() =>
53
+ props.searchModeOpts.find(({ value }) => value === filterName.value),
54
54
  );
55
55
 
56
56
  const filterValue = computed(() => getValue(filterName.value));
57
57
 
58
58
  const localValue = ref(filterValue.value);
59
59
 
60
- const v$ = props.multisearch && useVuelidate(computed(() => {
61
- return {
62
- localValue: {
63
- ...currentSearchMode.value.v || {},
64
- },
65
- };
66
- }), { localValue }, { $autoDirty: true });
60
+ const v$ =
61
+ props.multisearch &&
62
+ useVuelidate(
63
+ computed(() => {
64
+ return {
65
+ localValue: {
66
+ ...(currentSearchMode.value.v || {}),
67
+ },
68
+ };
69
+ }),
70
+ { localValue },
71
+ { $autoDirty: true },
72
+ );
67
73
 
68
74
  v$.value.$touch();
69
75
 
@@ -86,9 +92,12 @@ subscribe({
86
92
  callback: restoreSearchMode,
87
93
  });
88
94
 
89
- watch(() => filterValue.value, () => {
90
- localValue.value = filterValue.value;
91
- });
95
+ watch(
96
+ () => filterValue.value,
97
+ () => {
98
+ localValue.value = filterValue.value;
99
+ },
100
+ );
92
101
  </script>
93
102
 
94
103
  <style lang="scss" scoped>
@@ -24,9 +24,7 @@ const props = defineProps({
24
24
  },
25
25
  });
26
26
 
27
- const emit = defineEmits([
28
- 'change',
29
- ]);
27
+ const emit = defineEmits(['change']);
30
28
 
31
29
  const filterQuery = 'fields';
32
30
 
@@ -2,8 +2,4 @@ import localStorageGetter from './localStorageGetter.js';
2
2
  import queryGetter from './queryGetter.js';
3
3
  import valueGetter from './valueGetter.js';
4
4
 
5
- export {
6
- localStorageGetter,
7
- queryGetter,
8
- valueGetter,
9
- };
5
+ export { localStorageGetter, queryGetter, valueGetter };
@@ -2,12 +2,11 @@
2
2
  const queryGetter = (context) => (router) => () => {
3
3
  if (!router) throw new Error('Router is required for queryGetter!');
4
4
 
5
- const query = router.currentRoute.value?.query || router.currentRoute.query ||
6
- {};
5
+ const query = router.currentRoute.value?.query || router.currentRoute.query || {};
7
6
 
8
7
  const value = query[context.name];
9
8
 
10
- if(value && context?.multiple && !Array.isArray(value)) {
9
+ if (value && context?.multiple && !Array.isArray(value)) {
11
10
  return [value];
12
11
  }
13
12
 
@@ -1,7 +1,4 @@
1
1
  import localStorageRestore from './localStorageRestore.js';
2
2
  import queryRestore from './queryRestore.js';
3
3
 
4
- export {
5
- localStorageRestore,
6
- queryRestore,
7
- };
4
+ export { localStorageRestore, queryRestore };
@@ -2,8 +2,4 @@ import localStorageSetter from './localStorageSetter.js';
2
2
  import querySetter from './querySetter.js';
3
3
  import valueSetter from './valueSetter.js';
4
4
 
5
- export {
6
- localStorageSetter,
7
- querySetter,
8
- valueSetter,
9
- };
5
+ export { localStorageSetter, querySetter, valueSetter };
@@ -1,7 +1,6 @@
1
1
  import changeRouteQuery from '../utils/changeRouteQuery.js';
2
2
 
3
- const isObject = (value) => typeof value === 'object' &&
4
- !Array.isArray(value) && value !== null;
3
+ const isObject = (value) => typeof value === 'object' && !Array.isArray(value) && value !== null;
5
4
 
6
5
  const handlePrimitive = ({ value }) => value;
7
6
 
@@ -17,25 +16,28 @@ const handleArray = ({ value, storedProp }) => {
17
16
  }
18
17
  };
19
18
 
20
- const querySetter = (context) => (router) => async (rawValue = context.value) => {
21
- const { name: filterQuery, storedProp } = context;
22
-
23
- let value = '';
24
-
25
- if (Array.isArray(rawValue)) {
26
- value = handleArray({ value: rawValue, storedProp });
27
- } else if (isObject(rawValue)) {
28
- value = handleObject({ value: rawValue, storedProp });
29
- } else {
30
- value = handlePrimitive({ value: rawValue });
31
- }
32
-
33
- await changeRouteQuery(router)({
34
- filterQuery,
35
- value,
36
- });
37
-
38
- return context;
39
- };
19
+ const querySetter =
20
+ (context) =>
21
+ (router) =>
22
+ async (rawValue = context.value) => {
23
+ const { name: filterQuery, storedProp } = context;
24
+
25
+ let value = '';
26
+
27
+ if (Array.isArray(rawValue)) {
28
+ value = handleArray({ value: rawValue, storedProp });
29
+ } else if (isObject(rawValue)) {
30
+ value = handleObject({ value: rawValue, storedProp });
31
+ } else {
32
+ value = handlePrimitive({ value: rawValue });
33
+ }
34
+
35
+ await changeRouteQuery(router)({
36
+ filterQuery,
37
+ value,
38
+ });
39
+
40
+ return context;
41
+ };
40
42
 
41
43
  export default querySetter;
@@ -1,23 +1,24 @@
1
1
  import deepEqual from 'deep-equal';
2
2
 
3
- const changeRouteQuery = (router) => ({ filterQuery, value }) => {
4
- const name = router.currentRoute?.value?.name || router.currentRoute?.name;
5
- const query = router.currentRoute?.value?.query ||
6
- router.currentRoute?.query || {};
3
+ const changeRouteQuery =
4
+ (router) =>
5
+ ({ filterQuery, value }) => {
6
+ const name = router.currentRoute?.value?.name || router.currentRoute?.name;
7
+ const query = router.currentRoute?.value?.query || router.currentRoute?.query || {};
7
8
 
8
- if (deepEqual(query[filterQuery], value)) return;
9
+ if (deepEqual(query[filterQuery], value)) return;
9
10
 
10
- const newQuery = {
11
- ...query,
12
- [filterQuery]: value,
13
- };
11
+ const newQuery = {
12
+ ...query,
13
+ [filterQuery]: value,
14
+ };
14
15
 
15
- console.info('newQuery', newQuery);
16
+ console.info('newQuery', newQuery);
16
17
 
17
- return router.replace({
18
- name,
19
- query: newQuery,
20
- });
21
- };
18
+ return router.replace({
19
+ name,
20
+ query: newQuery,
21
+ });
22
+ };
22
23
 
23
24
  export default changeRouteQuery;