@webitel/ui-sdk 3.2.124 → 3.2.126

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 (214) hide show
  1. package/dist/ui-sdk.common.js +735 -729
  2. package/dist/ui-sdk.common.js.map +1 -1
  3. package/dist/ui-sdk.css +1 -1
  4. package/dist/ui-sdk.umd.js +737 -731
  5. package/dist/ui-sdk.umd.js.map +1 -1
  6. package/dist/ui-sdk.umd.min.js +1 -1
  7. package/dist/ui-sdk.umd.min.js.map +1 -1
  8. package/package.json +2 -1
  9. package/src/components/index.js +56 -59
  10. package/src/components/on-demand/wt-cc-agent-status-timers/__tests__/wt-cc-agent-status-timers.spec.js +25 -0
  11. package/src/components/on-demand/wt-cc-agent-status-timers/wt-cc-agent-status-timers.vue +56 -0
  12. package/src/components/{organisms/wt-app-header → wt-app-header}/__tests__/WtAppNavigator.spec.js +1 -1
  13. package/src/{css/components/organisms → components}/wt-app-header/_variables.scss +1 -1
  14. package/src/components/wt-app-header/wt-app-header.vue +26 -0
  15. package/src/components/{organisms/wt-app-header → wt-app-header}/wt-app-navigator.vue +9 -9
  16. package/src/{css/components/atoms → components}/wt-avatar/_variables.scss +1 -1
  17. package/src/components/{atoms/wt-avatar → wt-avatar}/wt-avatar.vue +4 -2
  18. package/src/components/{atoms/wt-badge → wt-badge}/wt-badge.vue +17 -13
  19. package/src/{css/components/atoms → components}/wt-button/_variables.scss +0 -1
  20. package/src/components/{atoms/wt-button → wt-button}/wt-button.vue +2 -0
  21. package/src/{css/components/molecules → components}/wt-button-select/_variables.scss +1 -1
  22. package/src/components/{molecules/wt-button-select → wt-button-select}/wt-button-select.vue +2 -0
  23. package/src/components/{molecules/wt-checkbox → wt-checkbox}/__tests__/WtCheckbox.spec.js +1 -1
  24. package/src/components/wt-checkbox/wt-checkbox.vue +182 -0
  25. package/src/components/wt-chip/wt-chip.vue +24 -0
  26. package/src/components/{atoms/wt-context-menu → wt-context-menu}/wt-context-menu.vue +2 -0
  27. package/src/components/{molecules/wt-datepicker → wt-datepicker}/__tests__/WtDatepicker.spec.js +1 -1
  28. package/src/components/{molecules/wt-datepicker → wt-datepicker}/wt-datepicker.vue +2 -0
  29. package/src/components/wt-divider/wt-divider.vue +27 -0
  30. package/src/components/{molecules/wt-dummy → wt-dummy}/wt-dummy.vue +1 -1
  31. package/src/components/{organisms/wt-error-page → wt-error-page}/wt-error-page.vue +2 -2
  32. package/src/components/{organisms/wt-headline → wt-headline}/wt-headline.vue +2 -0
  33. package/src/components/{organisms/wt-headline-nav → wt-headline-nav}/wt-headline-nav.vue +2 -0
  34. package/src/components/{atoms/wt-icon → wt-icon}/wt-icon.vue +17 -1
  35. package/src/components/{molecules/wt-icon-btn → wt-icon-btn}/__tests__/WtIconBtn.spec.js +1 -1
  36. package/src/components/{molecules/wt-icon-btn → wt-icon-btn}/wt-icon-btn.vue +1 -1
  37. package/src/components/{atoms/wt-indicator → wt-indicator}/wt-indicator.vue +2 -0
  38. package/src/components/{molecules/wt-input → wt-input}/wt-input.vue +3 -1
  39. package/src/components/wt-input-info/wt-input-info.vue +37 -0
  40. package/src/components/{molecules/wt-label → wt-label}/wt-label.vue +2 -0
  41. package/src/components/{molecules/wt-load-bar → wt-load-bar}/wt-load-bar.vue +2 -0
  42. package/src/components/{atoms/wt-loader → wt-loader}/wt-loader.vue +19 -17
  43. package/src/components/{organisms/wt-navigation-bar → wt-navigation-bar}/wt-navigation-bar.vue +15 -13
  44. package/src/components/{molecules/wt-notification → wt-notification}/__tests__/WtNotification.spec.js +1 -1
  45. package/src/components/wt-notification/wt-notification.vue +83 -0
  46. package/src/components/{organisms/wt-notifications-bar → wt-notifications-bar}/__tests__/WtNotificationsBar.spec.js +2 -2
  47. package/src/components/{organisms/wt-notifications-bar → wt-notifications-bar}/wt-notifications-bar.vue +2 -0
  48. package/src/components/{organisms/wt-page-header → wt-page-header}/wt-page-header.vue +1 -0
  49. package/src/components/{organisms/wt-page-wrapper → wt-page-wrapper}/wt-page-wrapper.vue +2 -0
  50. package/src/components/{organisms/wt-pagination → wt-pagination}/wt-pagination.vue +3 -1
  51. package/src/components/{organisms/wt-player → wt-player}/wt-player.vue +9 -4
  52. package/src/components/{molecules/wt-popup → wt-popup}/wt-popup.vue +2 -0
  53. package/src/components/{molecules/wt-progress-bar → wt-progress-bar}/wt-progress-bar.vue +9 -2
  54. package/src/components/{molecules/wt-radio → wt-radio}/__tests__/WtRadio.spec.js +1 -1
  55. package/src/components/wt-radio/wt-radio.vue +177 -0
  56. package/src/components/{atoms/wt-rounded-action → wt-rounded-action}/wt-rounded-action.vue +2 -0
  57. package/src/components/{molecules/wt-search-bar → wt-search-bar}/wt-search-bar.vue +3 -1
  58. package/src/{css/components/molecules → components}/wt-select/_multiselect.scss +1 -1
  59. package/src/components/{molecules/wt-select → wt-select}/mixins/multiselectMixin.js +3 -3
  60. package/src/components/{molecules/wt-select → wt-select}/wt-select.vue +2 -1
  61. package/src/components/{molecules/wt-slider → wt-slider}/wt-slider.vue +2 -0
  62. package/src/components/{organisms/wt-status-select → wt-status-select}/__tests__/WtStatusSelect.spec.js +1 -1
  63. package/src/components/{organisms/wt-status-select → wt-status-select}/_internals/StatusOptions.lookup.js +1 -1
  64. package/src/components/{organisms/wt-status-select → wt-status-select}/wt-status-select.vue +4 -2
  65. package/src/components/wt-switcher/wt-switcher.vue +185 -0
  66. package/src/components/{organisms/wt-table → wt-table}/__tests__/WtTable.spec.js +1 -1
  67. package/src/components/{organisms/wt-table → wt-table}/wt-table.vue +2 -0
  68. package/src/components/{organisms/wt-table-actions → wt-table-actions}/wt-table-actions.vue +2 -0
  69. package/src/components/{molecules/wt-tabs → wt-tabs}/wt-tabs.vue +2 -0
  70. package/src/components/{molecules/wt-tags-input → wt-tags-input}/wt-tags-input.vue +2 -1
  71. package/src/components/wt-textarea/wt-textarea.vue +217 -0
  72. package/src/components/{molecules/wt-time-input → wt-time-input}/wt-time-input.vue +1 -1
  73. package/src/components/{molecules/wt-timepicker → wt-timepicker}/wt-timepicker.vue +4 -2
  74. package/src/components/wt-tooltip/_variables.scss +11 -0
  75. package/src/components/{atoms/wt-tooltip → wt-tooltip}/wt-tooltip.vue +2 -0
  76. package/src/composables/useRepresentableAgentPauseCause/__tests__/useRepresentableAgentPauseCause.spec.js +78 -0
  77. package/src/composables/useRepresentableAgentPauseCause/useRepresentableAgentPauseCause.js +36 -0
  78. package/src/css/main.scss +0 -2
  79. package/src/locale/en/en.js +7 -0
  80. package/src/locale/ru/ru.js +7 -0
  81. package/src/locale/ua/ua.js +7 -0
  82. package/src/modules/AuditForm/components/audit-form-question-read-wrapper.vue +1 -1
  83. package/src/modules/AuditForm/components/audit-form-question-write-wrapper.vue +5 -5
  84. package/src/modules/AuditForm/components/audit-form.vue +1 -1
  85. package/src/modules/AuditForm/components/questions/options/audit-form-question-options-write-row.vue +3 -3
  86. package/src/modules/AuditForm/components/questions/options/audit-form-question-options.vue +2 -2
  87. package/src/modules/AuditForm/components/questions/score/audit-form-question-score.vue +2 -2
  88. package/src/components/atoms/wt-chip/wt-chip.vue +0 -23
  89. package/src/components/atoms/wt-divider/wt-divider.vue +0 -25
  90. package/src/components/atoms/wt-input-info/wt-input-info.vue +0 -35
  91. package/src/components/molecules/wt-checkbox/wt-checkbox.vue +0 -180
  92. package/src/components/molecules/wt-notification/wt-notification.vue +0 -75
  93. package/src/components/molecules/wt-radio/wt-radio.vue +0 -174
  94. package/src/components/molecules/wt-switcher/wt-switcher.vue +0 -182
  95. package/src/components/molecules/wt-textarea/wt-textarea.vue +0 -215
  96. package/src/components/organisms/wt-app-header/wt-app-header.vue +0 -24
  97. package/src/css/components/_components.scss +0 -45
  98. package/src/css/components/atoms/wt-tooltip/_variables.scss +0 -29
  99. package/src/css/components/molecules/wt-icon-btn/_variables.scss +0 -3
  100. package/src/css/components/organisms/wt-icon-action/_variables.scss +0 -0
  101. package/src/locale/.DS_Store +0 -0
  102. /package/src/components/{organisms/wt-app-header → wt-app-header}/__tests__/WtAppHeader.spec.js +0 -0
  103. /package/src/components/{organisms/wt-app-header → wt-app-header}/__tests__/WtHeaderActions.spec.js +0 -0
  104. /package/src/components/{organisms/wt-app-header → wt-app-header}/wt-header-actions.vue +0 -0
  105. /package/src/components/{atoms/wt-avatar → wt-avatar}/__tests__/wt-avatar.spec.js +0 -0
  106. /package/src/components/{atoms/wt-badge → wt-badge}/__tests__/wt-badge.spec.js +0 -0
  107. /package/src/{css/components/atoms → components}/wt-badge/_variables.scss +0 -0
  108. /package/src/components/{atoms/wt-button → wt-button}/__tests__/WtButton.spec.js +0 -0
  109. /package/src/components/{molecules/wt-button-select → wt-button-select}/__tests__/WtButtonSelect.spec.js +0 -0
  110. /package/src/{css/components/molecules → components}/wt-checkbox/_variables.scss +0 -0
  111. /package/src/components/{atoms/wt-chip → wt-chip}/__tests__/WtChip.spec.js +0 -0
  112. /package/src/{css/components/atoms → components}/wt-chip/_variables.scss +0 -0
  113. /package/src/{css/components/atoms → components}/wt-chip/wt-chip.scss +0 -0
  114. /package/src/components/{atoms/wt-context-menu → wt-context-menu}/__tests__/WtContextMenu.spec.js +0 -0
  115. /package/src/{css/components/atoms → components}/wt-context-menu/_variables.scss +0 -0
  116. /package/src/components/{molecules/wt-copy-action → wt-copy-action}/__tests__/WtCopyAction.spec.js +0 -0
  117. /package/src/components/{molecules/wt-copy-action → wt-copy-action}/wt-copy-action.vue +0 -0
  118. /package/src/{css/components/molecules → components}/wt-datepicker/_variables.scss +0 -0
  119. /package/src/components/{atoms/wt-divider → wt-divider}/__tests__/WtDivider.spec.js +0 -0
  120. /package/src/{css/components/atoms → components}/wt-divider/_variables.scss +0 -0
  121. /package/src/components/{molecules/wt-dummy → wt-dummy}/__tests__/WtDummy.spec.js +0 -0
  122. /package/src/components/{organisms/wt-error-page → wt-error-page}/__tests__/wt-error-page.spec.js +0 -0
  123. /package/src/components/{organisms/wt-expansion-panel → wt-expansion-panel}/__tests__/WtExpansionPanel.spec.js +0 -0
  124. /package/src/components/{organisms/wt-expansion-panel → wt-expansion-panel}/wt-expansion-panel.vue +0 -0
  125. /package/src/components/{organisms/wt-filters-panel-wrapper → wt-filters-panel-wrapper}/__tests__/WtFiltersPanelWrapper.spec.js +0 -0
  126. /package/src/components/{organisms/wt-filters-panel-wrapper → wt-filters-panel-wrapper}/wt-filters-panel-wrapper.vue +0 -0
  127. /package/src/components/{organisms/wt-headline → wt-headline}/__tests__/WtHeadline.spec.js +0 -0
  128. /package/src/{css/components/organisms → components}/wt-headline/_variables.scss +0 -0
  129. /package/src/components/{organisms/wt-headline-nav → wt-headline-nav}/__tests__/wt-headline-nav.spec.js +0 -0
  130. /package/src/{css/components/organisms → components}/wt-headline-nav/_variables.scss +0 -0
  131. /package/src/components/{molecules/wt-hint → wt-hint}/__tests__/WtHint.spec.js +0 -0
  132. /package/src/components/{molecules/wt-hint → wt-hint}/wt-hint.vue +0 -0
  133. /package/src/components/{atoms/wt-icon → wt-icon}/__tests__/WtIcon.spec.js +0 -0
  134. /package/src/{css/components/atoms → components}/wt-icon/_variables.scss +0 -0
  135. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/__tests__/WtIconAction.spec.js +0 -0
  136. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/__tests__/WtAddIconAction.spec.js +0 -0
  137. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/__tests__/WtDeleteIconAction.spec.js +0 -0
  138. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/__tests__/WtDownloadIconAction.spec.js +0 -0
  139. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/__tests__/WtEditIconAction.spec.js +0 -0
  140. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/__tests__/WtHistoryIconAction.spec.js +0 -0
  141. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/__tests__/WtRefreshIconAction.spec.js +0 -0
  142. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/wt-add-icon-action.vue +0 -0
  143. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/wt-delete-icon-action.vue +0 -0
  144. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/wt-download-icon-action.vue +0 -0
  145. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/wt-edit-icon-action.vue +0 -0
  146. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/wt-history-icon-action.vue +0 -0
  147. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/_internals/wt-refresh-icon-action.vue +0 -0
  148. /package/src/components/{atoms/wt-icon-action → wt-icon-action}/wt-icon-action.vue +0 -0
  149. /package/src/components/{atoms/wt-indicator → wt-indicator}/__tests__/WtIndicator.spec.js +0 -0
  150. /package/src/{css/components/atoms → components}/wt-indicator/_variables.scss +0 -0
  151. /package/src/components/{molecules/wt-input → wt-input}/__tests__/WtInput.spec.js +0 -0
  152. /package/src/{css/components/molecules → components}/wt-input/_variables.scss +0 -0
  153. /package/src/components/{atoms/wt-input-info → wt-input-info}/__tests__/WtInputInfo.spec.js +0 -0
  154. /package/src/{css/components/atoms → components}/wt-input-info/_variables.scss +0 -0
  155. /package/src/components/{molecules/wt-item-link → wt-item-link}/__tests__/WtItemLink.spec.js +0 -0
  156. /package/src/components/{molecules/wt-item-link → wt-item-link}/wt-item-link.vue +0 -0
  157. /package/src/components/{molecules/wt-label → wt-label}/__tests__/WtLabel.spec.js +0 -0
  158. /package/src/{css/components/atoms → components}/wt-label/_variables.scss +0 -0
  159. /package/src/components/{molecules/wt-label → wt-label}/mixins/labelUsageMixin.js +0 -0
  160. /package/src/components/{molecules/wt-load-bar → wt-load-bar}/__tests__/WtLoadBar.spec.js +0 -0
  161. /package/src/{css/components/molecules → components}/wt-load-bar/_variables.scss +0 -0
  162. /package/src/components/{atoms/wt-loader → wt-loader}/__tests__/WtLoader.spec.js +0 -0
  163. /package/src/components/{atoms/wt-loader → wt-loader}/_internals/wt-loader--md.vue +0 -0
  164. /package/src/components/{atoms/wt-loader → wt-loader}/_internals/wt-loader--sm.vue +0 -0
  165. /package/src/{css/components/atoms → components}/wt-loader/_variables.scss +0 -0
  166. /package/src/components/{organisms/wt-navigation-bar → wt-navigation-bar}/__tests__/WtNavigationBar.spec.js +0 -0
  167. /package/src/{css/components/organisms → components}/wt-navigation-bar/_variables.scss +0 -0
  168. /package/src/{css/components/molecules → components}/wt-notification/_variables.scss +0 -0
  169. /package/src/{css/components/organisms → components}/wt-notifications-bar/_variables.scss +0 -0
  170. /package/src/components/{organisms/wt-page-header → wt-page-header}/__tests__/wt-page-header.spec.js +0 -0
  171. /package/src/components/{organisms/wt-page-wrapper → wt-page-wrapper}/__tests__/WtPageWrapper.spec.js +0 -0
  172. /package/src/{css/components/organisms → components}/wt-page-wrapper/_variables.scss +0 -0
  173. /package/src/components/{organisms/wt-pagination → wt-pagination}/__tests__/WtPagination.spec.js +0 -0
  174. /package/src/{css/components/organisms → components}/wt-pagination/_variables.scss +0 -0
  175. /package/src/components/{organisms/wt-player → wt-player}/__tests__/WtPlayer.spec.js +0 -0
  176. /package/src/{css/components/organisms → components}/wt-player/_variables.scss +0 -0
  177. /package/src/components/{molecules/wt-popup → wt-popup}/__tests__/WtPopup.spec.js +0 -0
  178. /package/src/{css/components/molecules → components}/wt-popup/_variables.scss +0 -0
  179. /package/src/components/{molecules/wt-progress-bar → wt-progress-bar}/__tests__/WtProgressBar.spec.js +0 -0
  180. /package/src/{css/components/molecules → components}/wt-progress-bar/_variables.scss +0 -0
  181. /package/src/{css/components/molecules → components}/wt-radio/_variables.scss +0 -0
  182. /package/src/components/{atoms/wt-rounded-action → wt-rounded-action}/__tests__/WtRoundedAction.spec.js +0 -0
  183. /package/src/{css/components/atoms → components}/wt-rounded-action/_variables.scss +0 -0
  184. /package/src/components/{molecules/wt-search-bar → wt-search-bar}/__tests__/WtSearchBar.spec.js +0 -0
  185. /package/src/{css/components/molecules → components}/wt-search-bar/_variables.scss +0 -0
  186. /package/src/components/{molecules/wt-select → wt-select}/__tests__/WtSelect.spec.js +0 -0
  187. /package/src/{css/components/molecules → components}/wt-select/_variables.scss +0 -0
  188. /package/src/components/{molecules/wt-select → wt-select}/mixins/__tests__/multiselectMixin.spec.js +0 -0
  189. /package/src/components/{molecules/wt-slider → wt-slider}/__tests__/WtSlider.spec.js +0 -0
  190. /package/src/{css/components/molecules → components}/wt-slider/_variables.scss +0 -0
  191. /package/src/{css/components/organisms → components}/wt-status-select/_variables.scss +0 -0
  192. /package/src/components/{organisms/wt-stepper → wt-stepper}/__tests__/WtStepper.spec.vue.js +0 -0
  193. /package/src/components/{organisms/wt-stepper → wt-stepper}/wt-stepper.vue +0 -0
  194. /package/src/components/{molecules/wt-switcher → wt-switcher}/__tests__/WtSwitcher.spec.js +0 -0
  195. /package/src/{css/components/molecules → components}/wt-switcher/_variables.scss +0 -0
  196. /package/src/components/{organisms/wt-table → wt-table}/_internals/getSortOrder.js +0 -0
  197. /package/src/{css/components/organisms → components}/wt-table/_variables.scss +0 -0
  198. /package/src/components/{organisms/wt-table-actions → wt-table-actions}/__tests__/WtTableActions.spec.js +0 -0
  199. /package/src/{css/components/organisms → components}/wt-table-actions/_variables.scss +0 -0
  200. /package/src/components/{organisms/wt-table-column-select → wt-table-column-select}/__tests__/WtTableColumnSelect.spec.js +0 -0
  201. /package/src/components/{organisms/wt-table-column-select → wt-table-column-select}/wt-table-column-select.vue +0 -0
  202. /package/src/components/{molecules/wt-tabs → wt-tabs}/__tests__/WtTabs.spec.js +0 -0
  203. /package/src/{css/components/molecules → components}/wt-tabs/_variables.scss +0 -0
  204. /package/src/components/{molecules/wt-tags-input → wt-tags-input}/__tests__/WtTagsInput.spec.js +0 -0
  205. /package/src/{css/components/molecules → components}/wt-tags-input/_variables.scss +0 -0
  206. /package/src/components/{molecules/wt-textarea → wt-textarea}/__tests__/WtTextarea.spec.js +0 -0
  207. /package/src/{css/components/molecules → components}/wt-textarea/_variables.scss +0 -0
  208. /package/src/components/{molecules/wt-time-input → wt-time-input}/__tests__/WtTimeInput.spec.js +0 -0
  209. /package/src/components/{molecules/wt-timepicker → wt-timepicker}/__tests__/WtTimepicker.spec.js +0 -0
  210. /package/src/{css/components/molecules → components}/wt-timepicker/_variables.scss +0 -0
  211. /package/src/components/{atoms/wt-tooltip → wt-tooltip}/__tests__/WtTooltip.spec.js +0 -0
  212. /package/src/components/{atoms/wt-tooltip → wt-tooltip}/_internals/useTooltipTriggerSubscriptions.js +0 -0
  213. /package/src/components/{atoms/wt-tooltip → wt-tooltip}/_internals/wt-tooltip-floating.vue +0 -0
  214. /package/src/{scripts/validators → validators}/domainValidator.js +0 -0
@@ -0,0 +1,217 @@
1
+ <template>
2
+ <div
3
+ class="wt-textarea"
4
+ :class="{
5
+ 'wt-textarea--disabled': disabled,
6
+ 'wt-textarea--invalid': invalid,
7
+ }"
8
+ >
9
+ <wt-label
10
+ :for="name"
11
+ :disabled="disabled"
12
+ :invalid="invalid"
13
+ v-bind="labelProps"
14
+ >
15
+ <!-- @slot Custom input label -->
16
+ <slot name="label" v-bind="{ label }">{{ requiredLabel }}</slot>
17
+ </wt-label>
18
+ <div class="wt-textarea__wrapper">
19
+ <textarea
20
+ :id="name"
21
+ ref="wt-textarea"
22
+ class="wt-textarea__textarea"
23
+ :value="value"
24
+ :placeholder="placeholder || label"
25
+ :disabled="disabled"
26
+ v-on="listeners"
27
+ ></textarea>
28
+ <div class="wt-textarea__after-wrapper" ref="after-wrapper">
29
+ <slot name="after-input"></slot>
30
+ <wt-icon-btn
31
+ class="wt-textarea__reset-icon-btn"
32
+ :class="{ 'hidden': !value }"
33
+ icon="close--filled"
34
+ size="sm"
35
+ :disabled="disabled"
36
+ @click="$emit('input', '')"
37
+ ></wt-icon-btn>
38
+ </div>
39
+ </div>
40
+ <wt-input-info
41
+ v-if="isValidation"
42
+ :invalid="invalid"
43
+ >{{ validationText }}
44
+ </wt-input-info>
45
+ </div>
46
+ </template>
47
+
48
+ <script>
49
+ import validationMixin from '../../mixins/validationMixin/validationMixin';
50
+
51
+ export default {
52
+ name: 'wt-textarea',
53
+ mixins: [validationMixin],
54
+ props: {
55
+ /**
56
+ * Current textarea value (`v-model`)
57
+ */
58
+ value: {
59
+ type: String,
60
+ default: '',
61
+ },
62
+ /**
63
+ * textarea label
64
+ */
65
+ label: {
66
+ type: String,
67
+ default: '',
68
+ },
69
+ /**
70
+ * textarea placeholder
71
+ */
72
+ placeholder: {
73
+ type: String,
74
+ },
75
+ /**
76
+ * Native textarea disabled attribute
77
+ */
78
+ disabled: {
79
+ type: Boolean,
80
+ default: false,
81
+ description: 'Native textarea disabled attribute',
82
+ },
83
+ /**
84
+ * textarea name
85
+ */
86
+ name: {
87
+ type: String,
88
+ default: '',
89
+ },
90
+ chatMode: {
91
+ type: Boolean,
92
+ default: false,
93
+ },
94
+ labelProps: {
95
+ type: Object,
96
+ description: 'Object with props, passed down to wt-label as props',
97
+ },
98
+ },
99
+ emits: ['input', 'enter'],
100
+ computed: {
101
+ listeners() {
102
+ return {
103
+ ...this.$listeners,
104
+ input: (event) => this.$emit('input', event.target.value),
105
+ keypress: (event) => this.handleKeypress(event),
106
+ };
107
+ },
108
+
109
+ requiredLabel() {
110
+ return this.required ? `${this.label}*` : this.label;
111
+ },
112
+ },
113
+
114
+ methods: {
115
+ handleKeypress(event) {
116
+ if (!this.chatMode) return;
117
+ if (event.key === 'Enter' && !event.shiftKey) {
118
+ this.$emit('enter');
119
+ event.preventDefault();
120
+ }
121
+ },
122
+
123
+ updateInputPaddings() {
124
+ // cant test this thing cause vue test utils doesnt render elements width :/
125
+ const afterWrapperWidth = this.$refs['after-wrapper'].offsetWidth;
126
+ const inputEl = this.$refs['wt-textarea'];
127
+ const defaultInputPadding = getComputedStyle(document.documentElement)
128
+ .getPropertyValue('--textarea-padding');
129
+ inputEl.style.paddingRight = `calc(${defaultInputPadding} * 2 + ${afterWrapperWidth}px)`;
130
+ },
131
+ },
132
+ mounted() {
133
+ this.updateInputPaddings();
134
+ },
135
+ };
136
+ </script>
137
+
138
+ <style lang="scss" scoped>
139
+ @import './variables.scss';
140
+
141
+ .wt-textarea {
142
+ cursor: text;
143
+
144
+ &--disabled {
145
+ pointer-events: none;
146
+ }
147
+ }
148
+
149
+ .wt-textarea__wrapper {
150
+ position: relative;
151
+ }
152
+
153
+ .wt-label {
154
+ .wt-textarea:hover &,
155
+ .wt-textarea:focus-within & {
156
+ color: var(--form-label--hover-color);
157
+ }
158
+
159
+ .wt-textarea--invalid:hover &,
160
+ .wt-textarea--invalid:focus-within & {
161
+ color: var(--label--invalid-color);
162
+ }
163
+ }
164
+
165
+ .wt-textarea__textarea {
166
+ @extend %typo-body-1;
167
+ @extend %wt-scrollbar;
168
+ @include wt-placeholder;
169
+
170
+ display: block;
171
+ width: 100%;
172
+ min-height: var(--textarea-min-height);
173
+ box-sizing: border-box;
174
+ padding: var(--textarea-padding);
175
+ color: var(--form-input-color);
176
+ border: var(--input-border);
177
+ border-color: var(--form-border-color);
178
+ border-radius: var(--border-radius);
179
+ transition: var(--transition);
180
+ resize: none;
181
+
182
+ &:focus {
183
+ @include wt-placeholder('focus');
184
+
185
+ border-color: var(--form-border--hover-color);
186
+ }
187
+
188
+ .wt-textarea--disabled & {
189
+ @include wt-placeholder('disabled');
190
+
191
+ background: var(--form-border--disabled-color);
192
+ border-color: var(--form-border--disabled-color);
193
+ }
194
+
195
+ .wt-textarea--invalid &,
196
+ .wt-textarea--invalid:hover & {
197
+ border-color: var(--false-color);
198
+ outline: none; // prevent outline overlapping false color
199
+ }
200
+ }
201
+
202
+ /* make icons black */
203
+ .wt-textarea:hover ::v-deep .wt-icon-btn:not(.wt-textarea__reset-icon-btn) .wt-icon__icon,
204
+ .wt-textarea:focus-within ::v-deep .wt-icon-btn:not(.wt-textarea__reset-icon-btn) .wt-icon__icon {
205
+ fill: var(--icon-color--hover);
206
+ }
207
+
208
+ .wt-textarea__after-wrapper {
209
+ display: flex;
210
+ gap: var(--input-after-wrapper-gap);
211
+ align-items: center;
212
+ position: absolute;
213
+ top: var(--input-icon-margin);
214
+ right: var(--input-icon-margin);
215
+ pointer-events: auto; // override --disabled p-events none
216
+ }
217
+ </style>
@@ -39,7 +39,7 @@
39
39
  </template>
40
40
 
41
41
  <script>
42
- import validationMixin from '../../../mixins/validationMixin/validationMixin';
42
+ import validationMixin from '../../mixins/validationMixin/validationMixin';
43
43
 
44
44
  export default {
45
45
  name: 'wt-time-input',
@@ -48,12 +48,12 @@
48
48
  </template>
49
49
 
50
50
  <script>
51
- import validationMixin from '../../../mixins/validationMixin/validationMixin';
51
+ import validationMixin from '../../mixins/validationMixin/validationMixin';
52
52
 
53
53
  const SEC_IN_HOUR = 60 * 60;
54
54
  const SEC_IN_MIN = 60;
55
55
 
56
- export default {
56
+ export default {
57
57
  name: 'wt-timepicker',
58
58
  mixins: [validationMixin],
59
59
  props: {
@@ -143,6 +143,8 @@ export default {
143
143
  </script>
144
144
 
145
145
  <style lang="scss" scoped>
146
+ @import './variables.scss';
147
+
146
148
  .wt-timepicker {
147
149
  display: flex;
148
150
  flex-direction: column;
@@ -0,0 +1,11 @@
1
+
2
+ :root {
3
+ --tooltip-padding: var(--spacing-2xs) var(--spacing-xs);
4
+
5
+ --tooltip-light-text-color: var(--text-primary-color);
6
+ --tooltip-light-bg-color: var(--main-color);
7
+ --tooltip-dark-text-color: var(--text-contrast-color);
8
+ --tooltip-dark-bg-color: var(--contrast-color);
9
+
10
+ --tooltip-elevation: var(--elevation-10);
11
+ }
@@ -117,6 +117,8 @@ onMounted(() => {
117
117
  </script>
118
118
 
119
119
  <style lang="scss" scoped>
120
+ @import './variables.scss';
121
+
120
122
  .wt-tooltip {
121
123
  display: inline-block;
122
124
  height: fit-content;
@@ -0,0 +1,78 @@
1
+ import {
2
+ useRepresentableAgentPauseCause,
3
+ } from '../useRepresentableAgentPauseCause';
4
+
5
+ let pauseCauses = [];
6
+
7
+ describe('useRepresentableAgentPauseCause', () => {
8
+ beforeEach(() => {
9
+ pauseCauses = [{ durationMin: 10, limitMin: 12 }];
10
+ });
11
+
12
+ it('correctly computes duration', () => {
13
+ const {
14
+ representablePauseCause,
15
+ } = useRepresentableAgentPauseCause(pauseCauses);
16
+ expect(representablePauseCause.value[0].duration).toBe('00:10');
17
+ });
18
+ it('isOverflow with limit = 0 returns false', () => {
19
+ const pauseCauses = [{ durationMin: 10, limitMin: 0 }];
20
+ const {
21
+ representablePauseCause,
22
+ } = useRepresentableAgentPauseCause(pauseCauses);
23
+ expect(representablePauseCause.value[0].isOverflow).toBe(false);
24
+ });
25
+ it('isOverflow with duration < limit returns false', () => {
26
+ const pauseCauses = [{ durationMin: 10, limitMin: 15 }];
27
+ const {
28
+ representablePauseCause,
29
+ } = useRepresentableAgentPauseCause(pauseCauses);
30
+ expect(representablePauseCause.value[0].isOverflow).toBe(false);
31
+ });
32
+ it('isOverflow with duration > limit returns true', () => {
33
+ const pauseCauses = [{ durationMin: 15, limitMin: 10 }];
34
+ const {
35
+ representablePauseCause,
36
+ } = useRepresentableAgentPauseCause(pauseCauses);
37
+ expect(representablePauseCause.value[0].isOverflow).toBe(true);
38
+ });
39
+
40
+ it('isOverflow with duration = limit returns false', () => {
41
+ const pauseCauses = [{ durationMin: 10, limitMin: 10 }];
42
+ const {
43
+ representablePauseCause,
44
+ } = useRepresentableAgentPauseCause(pauseCauses);
45
+ expect(representablePauseCause.value[0].isOverflow).toBe(false);
46
+ });
47
+
48
+ it('correctly computes progressColor', () => {
49
+ const {
50
+ representablePauseCause,
51
+ } = useRepresentableAgentPauseCause(pauseCauses);
52
+ expect(representablePauseCause.value[0].progressColor).toBe('primary');
53
+ });
54
+
55
+ it('correctly computes progressColor with duration > limit', () => {
56
+ const pauseCauses = [{ durationMin: 15, limitMin: 10 }];
57
+ const {
58
+ representablePauseCause,
59
+ } = useRepresentableAgentPauseCause(pauseCauses);
60
+ expect(representablePauseCause.value[0].progressColor).toBe('danger');
61
+ });
62
+
63
+ it('correctly computes progressColor with duration < limit', () => {
64
+ const pauseCauses = [{ durationMin: 10, limitMin: 15 }];
65
+ const {
66
+ representablePauseCause,
67
+ } = useRepresentableAgentPauseCause(pauseCauses);
68
+ expect(representablePauseCause.value[0].progressColor).toBe('success');
69
+ });
70
+
71
+ it('correctly computes progressColor with duration = limit', () => {
72
+ const pauseCauses = [{ durationMin: 10, limitMin: 10 }];
73
+ const {
74
+ representablePauseCause,
75
+ } = useRepresentableAgentPauseCause(pauseCauses);
76
+ expect(representablePauseCause.value[0].progressColor).toBe('primary');
77
+ });
78
+ });
@@ -0,0 +1,36 @@
1
+ import { computed } from 'vue';
2
+ import convertDuration from '../../scripts/convertDuration';
3
+
4
+ const prettifyPauseCauseDuration = (min) => {
5
+ const SEC_IN_MIN = 60;
6
+ const secDuration = convertDuration(min * SEC_IN_MIN);
7
+ return secDuration.slice(0, -3);
8
+ };
9
+
10
+ const isDurationOverflow = ({ durationMin, limitMin }) => {
11
+ return (durationMin > limitMin) && limitMin !== 0;
12
+ };
13
+
14
+ const duration = ({ durationMin, limitMin }) => {
15
+ return isDurationOverflow({ durationMin, limitMin })
16
+ ? `-${prettifyPauseCauseDuration(durationMin - limitMin)}`
17
+ : prettifyPauseCauseDuration(durationMin);
18
+ };
19
+
20
+ const pauseCauseProgressColor = ({ durationMin, limitMin }) => {
21
+ if (isDurationOverflow({ durationMin, limitMin })) return 'danger';
22
+ if (durationMin <= (limitMin * 0.75)) return 'success';
23
+ return 'primary';
24
+ };
25
+
26
+ // eslint-disable-next-line import/prefer-default-export
27
+ export const useRepresentableAgentPauseCause = (pauseCauses) => {
28
+ const representablePauseCause = computed(() => pauseCauses.map((pauseCause) => ({
29
+ ...pauseCause,
30
+ duration: duration(pauseCause),
31
+ progressColor: pauseCauseProgressColor(pauseCause),
32
+ isOverflow: isDurationOverflow(pauseCause),
33
+ })));
34
+
35
+ return { representablePauseCause };
36
+ };
package/src/css/main.scss CHANGED
@@ -1,6 +1,4 @@
1
1
  @import 'styleguide/styleguide';
2
-
3
- @import 'components/components';
4
2
  @import 'styleguide/display-helpers/display-helpers';
5
3
 
6
4
 
@@ -340,5 +340,12 @@ export default {
340
340
  dummy: {
341
341
  text: 'There are no records yet',
342
342
  },
343
+ agentStatusSelect: {
344
+ pauseCausePopup: {
345
+ title: 'Select a pause cause',
346
+ min: 'Min',
347
+ unlimited: 'Unlimited',
348
+ },
349
+ },
343
350
  },
344
351
  };
@@ -338,5 +338,12 @@ export default {
338
338
  dummy: {
339
339
  text: 'Записи в разделе еще не созданы',
340
340
  },
341
+ agentStatusSelect: {
342
+ pauseCausePopup: {
343
+ title: 'Выберите причину паузы',
344
+ min: 'Мин',
345
+ unlimited: 'Безлимит',
346
+ },
347
+ },
341
348
  },
342
349
  };
@@ -338,5 +338,12 @@ export default {
338
338
  dummy: {
339
339
  text: 'Записи у розділі ще не створені',
340
340
  },
341
+ agentStatusSelect: {
342
+ pauseCausePopup: {
343
+ title: 'Виберіть причину паузи',
344
+ min: 'Хв',
345
+ unlimited: 'Безліміт',
346
+ },
347
+ },
341
348
  },
342
349
  };
@@ -40,7 +40,7 @@ import { EngineAuditQuestionType } from 'webitel-sdk';
40
40
  import isEmpty from '../../../scripts/isEmpty';
41
41
  import AuditFormQuestionOptions from './questions/options/audit-form-question-options.vue';
42
42
  import AuditFormQuestionScore from './questions/score/audit-form-question-score.vue';
43
- import WtIcon from '../../../components/atoms/wt-icon/wt-icon.vue';
43
+ import WtIcon from '../../../components/wt-icon/wt-icon.vue';
44
44
 
45
45
  const props = defineProps({
46
46
  question: {
@@ -63,11 +63,11 @@ import set from 'lodash/set';
63
63
  import cloneDeep from 'lodash/cloneDeep';
64
64
  import { computed } from 'vue';
65
65
  import { EngineAuditQuestionType } from 'webitel-sdk';
66
- import WtTooltip from '../../../components/atoms/wt-tooltip/wt-tooltip.vue';
67
- import WtSwitcher from '../../../components/molecules/wt-switcher/wt-switcher.vue';
68
- import WtIconBtn from '../../../components/molecules/wt-icon-btn/wt-icon-btn.vue';
69
- import WtInput from '../../../components/molecules/wt-input/wt-input.vue';
70
- import WtSelect from '../../../components/molecules/wt-select/wt-select.vue';
66
+ import WtTooltip from '../../../components/wt-tooltip/wt-tooltip.vue';
67
+ import WtSwitcher from '../../../components/wt-switcher/wt-switcher.vue';
68
+ import WtIconBtn from '../../../components/wt-icon-btn/wt-icon-btn.vue';
69
+ import WtInput from '../../../components/wt-input/wt-input.vue';
70
+ import WtSelect from '../../../components/wt-select/wt-select.vue';
71
71
 
72
72
  import AuditFormQuestionOptions from './questions/options/audit-form-question-options.vue';
73
73
  import AuditFormQuestionScore from './questions/score/audit-form-question-score.vue';
@@ -39,7 +39,7 @@ import {
39
39
  import { useVuelidate } from '@vuelidate/core';
40
40
  import { useDestroyableSortable } from '../../../composables/useDestroyableSortable/useDestroyableSortable';
41
41
  import AuditFormQuestion from './audit-form-question.vue';
42
- import WtButton from '../../../components/atoms/wt-button/wt-button.vue';
42
+ import WtButton from '../../../components/wt-button/wt-button.vue';
43
43
  import { generateQuestionSchema } from '../schemas/AuditFormQuestionSchema';
44
44
 
45
45
  const props = defineProps({
@@ -31,9 +31,9 @@
31
31
  import { useVuelidate } from '@vuelidate/core';
32
32
  import { required, minValue, maxValue } from '@vuelidate/validators';
33
33
  import { computed, onMounted, toRefs } from 'vue';
34
- import WtTooltip from '../../../../../components/atoms/wt-tooltip/wt-tooltip.vue';
35
- import WtIconBtn from '../../../../../components/molecules/wt-icon-btn/wt-icon-btn.vue';
36
- import WtInput from '../../../../../components/molecules/wt-input/wt-input.vue';
34
+ import WtTooltip from '../../../../../components/wt-tooltip/wt-tooltip.vue';
35
+ import WtIconBtn from '../../../../../components/wt-icon-btn/wt-icon-btn.vue';
36
+ import WtInput from '../../../../../components/wt-input/wt-input.vue';
37
37
 
38
38
  const props = defineProps({
39
39
  option: {
@@ -37,8 +37,8 @@
37
37
 
38
38
  <script setup>
39
39
  import OptionsWriteRow from './audit-form-question-options-write-row.vue';
40
- import WtButton from '../../../../../components/atoms/wt-button/wt-button.vue';
41
- import WtRadio from '../../../../../components/molecules/wt-radio/wt-radio.vue';
40
+ import WtButton from '../../../../../components/wt-button/wt-button.vue';
41
+ import WtRadio from '../../../../../components/wt-radio/wt-radio.vue';
42
42
  import updateObject from '../../../../../scripts/updateObject';
43
43
  import { generateOption } from '../../../schemas/AuditFormQuestionOptionsSchema';
44
44
 
@@ -47,8 +47,8 @@ import { maxValue, minValue, required } from '@vuelidate/validators';
47
47
  import { computed, onMounted, toRefs } from 'vue';
48
48
  import isEmpty from '../../../../../scripts/isEmpty';
49
49
  import updateObject from '../../../../../scripts/updateObject';
50
- import WtRadio from '../../../../../components/molecules/wt-radio/wt-radio.vue';
51
- import WtInput from '../../../../../components/molecules/wt-input/wt-input.vue';
50
+ import WtRadio from '../../../../../components/wt-radio/wt-radio.vue';
51
+ import WtInput from '../../../../../components/wt-input/wt-input.vue';
52
52
 
53
53
  const props = defineProps({
54
54
  question: {
@@ -1,23 +0,0 @@
1
- <template>
2
- <span class="wt-chip" :class="`wt-chip--${color}-color`">
3
- <slot></slot>
4
- </span>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- name: 'wt-chip',
10
- props: {
11
- color: {
12
- type: String,
13
- default: 'main',
14
- options: ['main', 'outline', 'accent', 'secondary', 'secondary-50', 'success', 'danger', 'transfer'],
15
- notes: '"main" and "outline" are chip-specific colors',
16
- },
17
- },
18
- };
19
- </script>
20
-
21
- <style lang="scss" scoped>
22
- @import '../../../css/components/atoms/wt-chip/wt-chip';
23
- </style>
@@ -1,25 +0,0 @@
1
- <template>
2
- <hr class="wt-divider">
3
- </template>
4
-
5
- <script>
6
- export default {
7
- name: 'wt-divider',
8
- };
9
- </script>
10
-
11
- <style lang="scss" scoped>
12
- .wt-divider {
13
- display: block;
14
- box-sizing: border-box;
15
- width: 100%;
16
- max-width: 100%;
17
- height: 0;
18
- max-height: 0;
19
- padding: 0;
20
- margin: 0;
21
- border: var(--divider-border);
22
- border-color: var(--divider-border-color);
23
- border-top-width: thin;
24
- }
25
- </style>
@@ -1,35 +0,0 @@
1
- <template>
2
- <div
3
- class="wt-input-info"
4
- :class="{
5
- 'wt-input-info--invalid': invalid,
6
- }"
7
- >
8
- <slot></slot>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- export default {
14
- name: 'wt-input-info',
15
- props: {
16
- invalid: {
17
- type: Boolean,
18
- default: false,
19
- },
20
- },
21
- };
22
- </script>
23
-
24
- <style lang="scss" scoped>
25
- .wt-input-info {
26
- @extend %typo-caption;
27
- margin-top: var(--input-info-margin);
28
- color: var(--input-info-color);
29
- min-height: var(--input-info-min-height);
30
-
31
- &--invalid {
32
- color: var(--input-info--invalid-color);
33
- }
34
- }
35
- </style>