@voicenter-team/voicenter-ui-plus 0.0.1

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 (237) hide show
  1. package/README.md +35 -0
  2. package/library/favicon.ico +0 -0
  3. package/library/fonts/VC-icon.eot +0 -0
  4. package/library/fonts/VC-icon.svg +268 -0
  5. package/library/fonts/VC-icon.ttf +0 -0
  6. package/library/fonts/VC-icon.woff +0 -0
  7. package/library/icon-vc.css +753 -0
  8. package/library/images/logo-icon.svg +6 -0
  9. package/library/images/not-found.png +0 -0
  10. package/library/images/perfil.jpg +0 -0
  11. package/library/sound/test-audio.mp3 +0 -0
  12. package/library/style.css +1 -0
  13. package/library/super.mjs +24050 -0
  14. package/library/super.mjs.map +1 -0
  15. package/library/super.umd.js +37 -0
  16. package/library/super.umd.js.map +1 -0
  17. package/library/types/src/components/VcButton/VcButton.types.d.ts +5 -0
  18. package/library/types/src/components/VcButton/VcButton.vue.d.ts +94 -0
  19. package/library/types/src/components/VcButton/VcButtonIcon.vue.d.ts +89 -0
  20. package/library/types/src/components/VcCard/VcCard.vue.d.ts +23 -0
  21. package/library/types/src/components/VcCheckbox/VcCheckbox.vue.d.ts +133 -0
  22. package/library/types/src/components/VcCheckbox/VcCheckboxGroupEl.vue.d.ts +2 -0
  23. package/library/types/src/components/VcCheckbox/group.mixin.d.ts +60 -0
  24. package/library/types/src/components/VcCheckboxGroup/VcCheckboxGroup.vue.d.ts +140 -0
  25. package/library/types/src/components/VcCollapse/VcCollapse.vue.d.ts +33 -0
  26. package/library/types/src/components/VcCollapse/VcCollapseItem.vue.d.ts +106 -0
  27. package/library/types/src/components/VcCollapse/VcCollapseTransition.vue.d.ts +14 -0
  28. package/library/types/src/components/VcColorPicker/ColorPicker/ColorPicker.vue.d.ts +67 -0
  29. package/library/types/src/components/VcColorPicker/ColorPicker/Hue.vue.d.ts +40 -0
  30. package/library/types/src/components/VcColorPicker/ColorPicker/Saturation.vue.d.ts +49 -0
  31. package/library/types/src/components/VcColorPicker/ColorPicker/composible.d.ts +23 -0
  32. package/library/types/src/components/VcColorPicker/VcColorPicker.types.d.ts +10 -0
  33. package/library/types/src/components/VcColorPicker/VcColorPicker.vue.d.ts +65 -0
  34. package/library/types/src/components/VcDatetimeRangePicker/VcDatetimeRangePicker.types.d.ts +27 -0
  35. package/library/types/src/components/VcDatetimeRangePicker/VcDatetimeRangePicker.vue.d.ts +360 -0
  36. package/library/types/src/components/VcDelimitedList/VcDelimitedList.types.d.ts +4 -0
  37. package/library/types/src/components/VcDelimitedList/VcDelimitedList.vue.d.ts +92 -0
  38. package/library/types/src/components/VcExtendedDatetimeRangePicker/ExtendedDatetimeRangePickerPart.vue.d.ts +208 -0
  39. package/library/types/src/components/VcExtendedDatetimeRangePicker/ExtendedDatetimeRangePickerRelative.vue.d.ts +96 -0
  40. package/library/types/src/components/VcExtendedDatetimeRangePicker/VcExtendedDatetimeRangePicker.types.d.ts +11 -0
  41. package/library/types/src/components/VcExtendedDatetimeRangePicker/VcExtendedDatetimeRangePicker.vue.d.ts +276 -0
  42. package/library/types/src/components/VcExtendedDatetimeRangePicker/VcExtendedDatetimeRangePickerQuickOptionsSelection.vue.d.ts +51 -0
  43. package/library/types/src/components/VcExtendedDatetimeRangePicker/enum.d.ts +6 -0
  44. package/library/types/src/components/VcFileUploader/VcFileUploader.types.d.ts +4 -0
  45. package/library/types/src/components/VcFileUploader/VcFileUploader.vue.d.ts +388 -0
  46. package/library/types/src/components/VcForm/UiComponents/VcInputLabel.vue.d.ts +204 -0
  47. package/library/types/src/components/VcForm/VcForm.vue.d.ts +348 -0
  48. package/library/types/src/components/VcForm/VcFormItem.vue.d.ts +69 -0
  49. package/library/types/src/components/VcHyperLink/VcHyperLink.types.d.ts +2 -0
  50. package/library/types/src/components/VcHyperLink/VcHyperLink.vue.d.ts +54 -0
  51. package/library/types/src/components/VcIconPicker/VcIconPicker.types.d.ts +15 -0
  52. package/library/types/src/components/VcIconPicker/VcIconPicker.vue.d.ts +105 -0
  53. package/library/types/src/components/VcIconPicker/iconPicker.mixin.d.ts +51 -0
  54. package/library/types/src/components/VcInput/VcInput.types.d.ts +2 -0
  55. package/library/types/src/components/VcInput/VcInput.vue.d.ts +202 -0
  56. package/library/types/src/components/VcInputNumber/VcInputNumber.vue.d.ts +256 -0
  57. package/library/types/src/components/VcLoading/Loaders/Circles.vue.d.ts +28 -0
  58. package/library/types/src/components/VcLoading/Loaders/LdsSpinner.vue.d.ts +29 -0
  59. package/library/types/src/components/VcLoading/Loaders/LoadIcon.vue.d.ts +36 -0
  60. package/library/types/src/components/VcLoading/Loaders/Stretch.vue.d.ts +28 -0
  61. package/library/types/src/components/VcLoading/VcLoading.types.d.ts +1 -0
  62. package/library/types/src/components/VcLoading/VcLoading.vue.d.ts +66 -0
  63. package/library/types/src/components/VcModal/VcModal.types.d.ts +4 -0
  64. package/library/types/src/components/VcModal/VcModal.vue.d.ts +210 -0
  65. package/library/types/src/components/VcPagination/VcPagination.types.d.ts +4 -0
  66. package/library/types/src/components/VcPagination/VcPagination.vue.d.ts +64 -0
  67. package/library/types/src/components/VcPagination/VcPaginationButton.vue.d.ts +34 -0
  68. package/library/types/src/components/VcPopover/VcPopover.types.d.ts +3 -0
  69. package/library/types/src/components/VcPopover/VcPopover.vue.d.ts +150 -0
  70. package/library/types/src/components/VcProgress/VcProgress.types.d.ts +16 -0
  71. package/library/types/src/components/VcProgress/VcProgress.vue.d.ts +147 -0
  72. package/library/types/src/components/VcProgress/progress.options.d.ts +13 -0
  73. package/library/types/src/components/VcRadio/VcRadio.vue.d.ts +88 -0
  74. package/library/types/src/components/VcRadioGroup/VcRadioGroup.vue.d.ts +96 -0
  75. package/library/types/src/components/VcRadioTabs/UiComponents/VcRadioTabsNav.vue.d.ts +41 -0
  76. package/library/types/src/components/VcRadioTabs/VcRadioTabs.vue.d.ts +78 -0
  77. package/library/types/src/components/VcSelect/VcSelect.options.d.ts +78 -0
  78. package/library/types/src/components/VcSelect/VcSelect.vue.d.ts +293 -0
  79. package/library/types/src/components/VcSkeletonLoader/Loaders/Card.vue.d.ts +18 -0
  80. package/library/types/src/components/VcSkeletonLoader/Loaders/Circle.vue.d.ts +28 -0
  81. package/library/types/src/components/VcSkeletonLoader/Loaders/Row.vue.d.ts +18 -0
  82. package/library/types/src/components/VcSkeletonLoader/Loaders/Square.vue.d.ts +28 -0
  83. package/library/types/src/components/VcSkeletonLoader/Loaders/Text.vue.d.ts +16 -0
  84. package/library/types/src/components/VcSkeletonLoader/VcSkeletonLoader.types.d.ts +1 -0
  85. package/library/types/src/components/VcSkeletonLoader/VcSkeletonLoader.vue.d.ts +81 -0
  86. package/library/types/src/components/VcSoundplayer/VcSoundPlayer.types.d.ts +2 -0
  87. package/library/types/src/components/VcSoundplayer/VcSoundPlayer.vue.d.ts +130 -0
  88. package/library/types/src/components/VcSplitButton/VcSplitButton.types.d.ts +8 -0
  89. package/library/types/src/components/VcSplitButton/VcSplitButton.vue.d.ts +68 -0
  90. package/library/types/src/components/VcSwitch/VcSwitch.types.d.ts +1 -0
  91. package/library/types/src/components/VcSwitch/VcSwitch.vue.d.ts +151 -0
  92. package/library/types/src/components/VcTable/VcTable.types.d.ts +45 -0
  93. package/library/types/src/components/VcTable/VcTable.vue.d.ts +334 -0
  94. package/library/types/src/components/VcTable/tableOptions.d.ts +6 -0
  95. package/library/types/src/components/VcTabs/VcTabNav.vue.d.ts +54 -0
  96. package/library/types/src/components/VcTabs/VcTabPane.vue.d.ts +92 -0
  97. package/library/types/src/components/VcTabs/VcTabs.types.d.ts +14 -0
  98. package/library/types/src/components/VcTabs/VcTabs.vue.d.ts +62 -0
  99. package/library/types/src/components/VcTag/VcTag.types.d.ts +1 -0
  100. package/library/types/src/components/VcTag/VcTag.vue.d.ts +99 -0
  101. package/library/types/src/components/VcTagInput/VcTagInput.vue.d.ts +290 -0
  102. package/library/types/src/components/VcTimeInput/VcTimeInput.vue.d.ts +269 -0
  103. package/library/types/src/components/VcTree/VcTree.types.d.ts +36 -0
  104. package/library/types/src/components/VcTree/VcTree.vue.d.ts +209 -0
  105. package/library/types/src/components/VcTree/VcTreeNode.vue.d.ts +104 -0
  106. package/library/types/src/components/VcTree/VcTreeSelect.vue.d.ts +305 -0
  107. package/library/types/src/components/VcVerticalTabs/UiComponents/VerticalTabNav.vue.d.ts +54 -0
  108. package/library/types/src/components/VcVerticalTabs/VcVerticalTabs.vue.d.ts +76 -0
  109. package/library/types/src/components/VcViewSwitcher/VcViewSwitcher.vue.d.ts +74 -0
  110. package/library/types/src/components/VcWizard/VcSummaryProgress.vue.d.ts +55 -0
  111. package/library/types/src/components/VcWizard/VcSummaryStep.vue.d.ts +70 -0
  112. package/library/types/src/components/VcWizard/VcWizard.types.d.ts +15 -0
  113. package/library/types/src/components/VcWizard/VcWizard.vue.d.ts +157 -0
  114. package/library/types/src/components/VcWizard/VcWizardNavigation.vue.d.ts +110 -0
  115. package/library/types/src/components/VcWizard/VcWizardSummary.vue.d.ts +47 -0
  116. package/library/types/src/components/VcWizard/VcWizardTransition.vue.d.ts +83 -0
  117. package/library/types/src/components/index.d.ts +43 -0
  118. package/library/types/src/directives/resize.d.ts +6 -0
  119. package/library/types/src/entry.d.ts +2 -0
  120. package/library/types/src/entry.esm.d.ts +4 -0
  121. package/library/types/src/env.d.ts +18 -0
  122. package/library/types/src/localization/Localization.types.d.ts +17 -0
  123. package/library/types/src/localization/index.d.ts +9 -0
  124. package/library/types/src/mixins/common/appendTo.mixin.d.ts +19 -0
  125. package/library/types/src/mixins/defaultComponent.mixin.d.ts +14 -0
  126. package/library/types/src/mixins/input/baseInput.mixin.d.ts +100 -0
  127. package/library/types/src/mixins/input/color.mixin.d.ts +33 -0
  128. package/library/types/src/mixins/input/error.mixin.d.ts +23 -0
  129. package/library/types/src/mixins/input/input.mixin.d.ts +146 -0
  130. package/library/types/src/mixins/input/label.mixin.d.ts +52 -0
  131. package/library/types/src/mixins/optionMethods.mixin.d.ts +38 -0
  132. package/library/types/src/mixins/table/tableProps.mixin.d.ts +108 -0
  133. package/library/types/src/theme/index.d.ts +1 -0
  134. package/library/types/src/theme/theme.types.d.ts +6 -0
  135. package/library/types/src/types/AppendToTarget.types.d.ts +1 -0
  136. package/library/types/src/types/Entry.types.d.ts +6 -0
  137. package/library/types/src/types/OptionAndConfig.types.d.ts +23 -0
  138. package/library/types/src/types/VueGeneric.types.d.ts +1 -0
  139. package/library/types/src/utils/DomHandler.d.ts +5 -0
  140. package/library/types/src/utils/UniqueComponentId.d.ts +1 -0
  141. package/library/types/src/utils/ZIndexUtils.d.ts +12 -0
  142. package/library/types/src/utils/helpers.d.ts +6 -0
  143. package/library/types/src/utils/isValidTime.d.ts +2 -0
  144. package/package.json +66 -0
  145. package/src/assets/element/index.scss +161 -0
  146. package/src/assets/sass/main/_icons.scss +36 -0
  147. package/src/assets/sass/main/_loading.scss +51 -0
  148. package/src/assets/sass/main/_mixins.scss +339 -0
  149. package/src/assets/sass/main/_typography.scss +29 -0
  150. package/src/assets/sass/main.scss +9 -0
  151. package/src/components/VcButton/VcButton.scss +190 -0
  152. package/src/components/VcButton/VcButton.vue +117 -0
  153. package/src/components/VcButton/VcButtonIcon.scss +100 -0
  154. package/src/components/VcButton/VcButtonIcon.vue +97 -0
  155. package/src/components/VcCard/VcCard.vue +53 -0
  156. package/src/components/VcCheckbox/VcCheckbox.scss +66 -0
  157. package/src/components/VcCheckbox/VcCheckbox.vue +99 -0
  158. package/src/components/VcCheckbox/VcCheckboxGroupEl.vue +18 -0
  159. package/src/components/VcCheckboxGroup/VcCheckboxGroup.vue +164 -0
  160. package/src/components/VcCollapse/VcCollapse.vue +70 -0
  161. package/src/components/VcCollapse/VcCollapseItem.vue +229 -0
  162. package/src/components/VcCollapse/VcCollapseTransition.vue +78 -0
  163. package/src/components/VcColorPicker/ColorPicker/ColorPicker.vue +192 -0
  164. package/src/components/VcColorPicker/ColorPicker/Hue.vue +130 -0
  165. package/src/components/VcColorPicker/ColorPicker/Saturation.vue +146 -0
  166. package/src/components/VcColorPicker/VcColorPicker.vue +140 -0
  167. package/src/components/VcDatetimeRangePicker/VcDatetimeRangePicker.vue +474 -0
  168. package/src/components/VcDelimitedList/VcDelimitedList.vue +223 -0
  169. package/src/components/VcExtendedDatetimeRangePicker/ExtendedDatetimeRangePickerPart.vue +166 -0
  170. package/src/components/VcExtendedDatetimeRangePicker/ExtendedDatetimeRangePickerRelative.vue +180 -0
  171. package/src/components/VcExtendedDatetimeRangePicker/VcExtendedDatetimeRangePicker.vue +178 -0
  172. package/src/components/VcExtendedDatetimeRangePicker/VcExtendedDatetimeRangePickerQuickOptionsSelection.vue +128 -0
  173. package/src/components/VcFileUploader/VcFileUploader.vue +324 -0
  174. package/src/components/VcForm/Styles/VcInputLabel.scss +24 -0
  175. package/src/components/VcForm/UiComponents/VcInputError.vue +31 -0
  176. package/src/components/VcForm/UiComponents/VcInputLabel.vue +67 -0
  177. package/src/components/VcForm/VcForm.vue +88 -0
  178. package/src/components/VcForm/VcFormItem.vue +115 -0
  179. package/src/components/VcHyperLink/VcHyperLink.vue +83 -0
  180. package/src/components/VcIconPicker/VcIconPicker.vue +142 -0
  181. package/src/components/VcInput/VcInput.vue +220 -0
  182. package/src/components/VcInputNumber/VcInputNumber.vue +128 -0
  183. package/src/components/VcLoading/Loaders/Circles.vue +100 -0
  184. package/src/components/VcLoading/Loaders/LdsSpinner.vue +52 -0
  185. package/src/components/VcLoading/Loaders/LoadIcon.vue +56 -0
  186. package/src/components/VcLoading/Loaders/Stretch.vue +82 -0
  187. package/src/components/VcLoading/VcLoading.vue +159 -0
  188. package/src/components/VcModal/VcModal.scss +227 -0
  189. package/src/components/VcModal/VcModal.vue +384 -0
  190. package/src/components/VcNotification/VcNotification.vue +302 -0
  191. package/src/components/VcNotification/VcNotificationMessage.vue +119 -0
  192. package/src/components/VcPagination/VcPagination.vue +175 -0
  193. package/src/components/VcPagination/VcPaginationButton.vue +37 -0
  194. package/src/components/VcPopover/VcPopover.vue +186 -0
  195. package/src/components/VcProgress/VcProgress.vue +235 -0
  196. package/src/components/VcRadio/VcRadio.scss +59 -0
  197. package/src/components/VcRadio/VcRadio.vue +89 -0
  198. package/src/components/VcRadioGroup/VcRadioGroup.vue +146 -0
  199. package/src/components/VcRadioTabs/UiComponents/VcRadioTabsNav.vue +128 -0
  200. package/src/components/VcRadioTabs/VcRadioTabs.vue +151 -0
  201. package/src/components/VcSelect/VcSelect.scss +135 -0
  202. package/src/components/VcSelect/VcSelect.vue +191 -0
  203. package/src/components/VcSkeletonLoader/Loaders/Card.vue +79 -0
  204. package/src/components/VcSkeletonLoader/Loaders/Circle.vue +45 -0
  205. package/src/components/VcSkeletonLoader/Loaders/Row.vue +36 -0
  206. package/src/components/VcSkeletonLoader/Loaders/Square.vue +44 -0
  207. package/src/components/VcSkeletonLoader/Loaders/Text.vue +42 -0
  208. package/src/components/VcSkeletonLoader/VcSkeletonLoader.vue +111 -0
  209. package/src/components/VcSoundplayer/VcSoundPlayer.vue +497 -0
  210. package/src/components/VcSplitButton/VcSplitButton.vue +338 -0
  211. package/src/components/VcSwitch/VcSwitch.vue +352 -0
  212. package/src/components/VcTable/VcTable.vue +869 -0
  213. package/src/components/VcTabs/VcTabNav.scss +120 -0
  214. package/src/components/VcTabs/VcTabNav.vue +203 -0
  215. package/src/components/VcTabs/VcTabPane.vue +128 -0
  216. package/src/components/VcTabs/VcTabs.vue +186 -0
  217. package/src/components/VcTag/VcTag.vue +186 -0
  218. package/src/components/VcTagInput/VcTagInput.vue +280 -0
  219. package/src/components/VcTagInput/VcTagInputStyle.scss +224 -0
  220. package/src/components/VcTimeInput/VcTimeInput.vue +441 -0
  221. package/src/components/VcTree/VcTree.vue +410 -0
  222. package/src/components/VcTree/VcTreeNode.vue +283 -0
  223. package/src/components/VcTree/VcTreeSelect.vue +472 -0
  224. package/src/components/VcVerticalTabs/UiComponents/VerticalTabNav.vue +99 -0
  225. package/src/components/VcVerticalTabs/VcVerticalTabs.vue +125 -0
  226. package/src/components/VcViewSwitcher/VcViewSwitcher.vue +137 -0
  227. package/src/components/VcWizard/VcSummaryProgress.vue +193 -0
  228. package/src/components/VcWizard/VcSummaryStep.vue +172 -0
  229. package/src/components/VcWizard/VcWizard.vue +292 -0
  230. package/src/components/VcWizard/VcWizardNavigation.vue +196 -0
  231. package/src/components/VcWizard/VcWizardSummary.vue +73 -0
  232. package/src/components/VcWizard/VcWizardTransition.vue +119 -0
  233. package/src/theme/index.ts +47 -0
  234. package/src/theme/tailwindConfig.js +143 -0
  235. package/src/theme/tailwindScheme.js +9 -0
  236. package/src/theme/theme.types.ts +6 -0
  237. package/src/theme/themes.json +130 -0
@@ -0,0 +1,292 @@
1
+ <template>
2
+ <div
3
+ :class="{
4
+ 'full-width': !showSummary,
5
+ 'no-header': !showHeader
6
+ }"
7
+ :style="{
8
+ height: wizardHeight
9
+ }"
10
+ class="vc-wizard"
11
+ >
12
+ <div class="vc-wizard-steps">
13
+ <div class="vc-wizard-steps-content">
14
+ <div
15
+ v-show="showHeader"
16
+ class="steps-header"
17
+ >
18
+ <div class="px-5">
19
+ <slot
20
+ v-if="$slots['header-nav']"
21
+ name="header-nav"
22
+ />
23
+ <span
24
+ v-else
25
+ class="text-sm font-medium "
26
+ >
27
+ {{ $tVU.t('wizard.step.of', { current: activeIndex + 1, length: steps.length }) }}
28
+ </span>
29
+ </div>
30
+ <div class="px-5">
31
+ <slot name="header-info" />
32
+ </div>
33
+ </div>
34
+ <div class="steps-content">
35
+ <div class="vc-stepper__items relative">
36
+ <VcWizardTransition
37
+ :direction="direction"
38
+ >
39
+ <template
40
+ v-for="(step, index) in steps"
41
+ :key="`step-${index}`"
42
+ >
43
+ <div
44
+ v-show="index === activeIndex"
45
+ v-bind="step.attrs"
46
+ class="vc-stepper__content"
47
+ >
48
+ <slot
49
+ :name="step.step"
50
+ :step="step"
51
+ :index="index"
52
+ />
53
+ </div>
54
+ </template>
55
+ </VcWizardTransition>
56
+ </div>
57
+ </div>
58
+ <VcWizardNavigation
59
+ :show-prev-btn="!!activeIndex"
60
+ :show-next-btn="!isFinalStep"
61
+ :show-final-btn="isFinalStep"
62
+ :show-final-add-slot="isFinalAddSlot"
63
+ :loading="dataLoading"
64
+ :disabled-next-btn="!canNext"
65
+ @on-cancel="onCancel"
66
+ @on-prev="onPrev"
67
+ @on-next="onNext"
68
+ @on-final="onFinal"
69
+ >
70
+ <template
71
+ v-if="isFinalAddSlot"
72
+ #additional-actions
73
+ >
74
+ <slot name="final-actions" />
75
+ </template>
76
+ <template
77
+ v-if="$slots['extra-actions']"
78
+ #extra-actions
79
+ >
80
+ <slot name="extra-actions" />
81
+ </template>
82
+ <template
83
+ v-if="$slots.navigation"
84
+ #navigation
85
+ >
86
+ <slot name="navigation" />
87
+ </template>
88
+ </VcWizardNavigation>
89
+ </div>
90
+ </div>
91
+ <VcWizardSummary
92
+ v-if="showSummary"
93
+ :steps="steps"
94
+ :active-index="+activeStep"
95
+ :visited="maxVisited"
96
+ :content="summary"
97
+ @update-step="goToStep"
98
+ />
99
+ </div>
100
+ </template>
101
+
102
+ <script lang="ts">
103
+ import { defineComponent, PropType } from 'vue'
104
+ import Transition from './baseTransition'
105
+ import VcWizardSummary from '@/components/VcWizard/VcWizardSummary.vue'
106
+ import VcWizardTransition from '@/components/VcWizard/VcWizardTransition.vue'
107
+ import VcWizardNavigation from '@/components/VcWizard/VcWizardNavigation.vue'
108
+ import { VcWizardStepType, VcWizardSummaryType } from './VcWizard.types'
109
+ import { convertToUnit } from '@/utils/helpers'
110
+
111
+ export default defineComponent({
112
+ name: 'VcWizard',
113
+ components: { VcWizardNavigation, VcWizardTransition, VcWizardSummary },
114
+ mixins: [Transition],
115
+ props: {
116
+ activeStep: {
117
+ type: [Number, String],
118
+ default: 0
119
+ },
120
+ steps: {
121
+ type: Array as PropType<VcWizardStepType[]>,
122
+ default: () => []
123
+ },
124
+ showHeader: {
125
+ type: Boolean,
126
+ default: true
127
+ },
128
+ showSummary: {
129
+ type: Boolean,
130
+ default: true
131
+ },
132
+ dataLoading: {
133
+ type: Boolean,
134
+ default: false
135
+ },
136
+ summary: {
137
+ type: Object as PropType<VcWizardSummaryType>,
138
+ default: () => ({})
139
+ },
140
+ height: {
141
+ type: [String, Number],
142
+ default: '100%'
143
+ },
144
+ canNext: {
145
+ type: Boolean,
146
+ default: true
147
+ }
148
+ },
149
+ emits: ['update-step', 'cancel', 'final'],
150
+ data: () => ({
151
+ activeIndex: 0,
152
+ maxVisited: 0,
153
+ direction: 'right'
154
+ }),
155
+ computed: {
156
+ isFinalStep (): boolean {
157
+ return this.activeIndex >= this.steps?.length - 1
158
+ },
159
+ isStartStep (): boolean {
160
+ return this.activeIndex === 0
161
+ },
162
+ isFinalAddSlot (): boolean {
163
+ return !!(this.isFinalStep && this.$slots['final-actions'])
164
+ },
165
+ wizardHeight (): string | undefined {
166
+ return convertToUnit(this.height)
167
+ }
168
+ },
169
+ watch: {
170
+ activeIndex (newV, oldVal) {
171
+ if (newV > oldVal) {
172
+ this.direction = 'right'
173
+ } else {
174
+ this.direction = 'left'
175
+ }
176
+ this.setMaxVisitedStep(newV)
177
+ },
178
+ activeStep () {
179
+ this.setActiveIndex()
180
+ }
181
+ },
182
+ mounted () {
183
+ this.setActiveIndex()
184
+ },
185
+ methods: {
186
+ setMaxVisitedStep (val: number): void {
187
+ if (val >= 0 && val > this.maxVisited) {
188
+ this.maxVisited = val
189
+ }
190
+ },
191
+ onNext (): void {
192
+ if (!this.isFinalStep) {
193
+ this.goToStep(this.activeIndex + 1)
194
+ }
195
+ },
196
+ onPrev (): void {
197
+ if (this.activeIndex > 0) {
198
+ this.goToStep(this.activeIndex - 1)
199
+ }
200
+ },
201
+ goToStep (index: number): void {
202
+ this.$emit('update-step', index, {
203
+ isVisited: index <= this.maxVisited
204
+ })
205
+ },
206
+ onCancel (): void {
207
+ this.$emit('cancel')
208
+ },
209
+ onFinal (): void {
210
+ this.$emit('final')
211
+ },
212
+ setActiveIndex (): void {
213
+ if (!isNaN(Number(this.activeStep))) {
214
+ this.activeIndex = +this.activeStep
215
+ } else {
216
+ const index = this.steps.findIndex((i: VcWizardStepType) => i?.step === this.activeStep)
217
+ this.activeIndex = index >= 0 ? index : 0
218
+ }
219
+ }
220
+ }
221
+ })
222
+ </script>
223
+
224
+ <style lang="scss">
225
+ $summaryWidthXl: 425px;
226
+ $summaryWidthLg: 380px;
227
+ $stepsHeader: 60px;
228
+ $stepsNavigation: 80px;
229
+ $stepsHeightDiv: $stepsHeader + $stepsNavigation;
230
+
231
+ .vc-wizard {
232
+ --vc-wizard-summary-width: #{$summaryWidthXl};
233
+ --vc-wizard-header: #{$stepsHeader};
234
+ --vc-wizard-navigation: #{$stepsNavigation};
235
+ &.no-header {
236
+ --vc-wizard-header: 0px;
237
+ }
238
+ @apply
239
+ w-full
240
+ relative
241
+ shadow-card
242
+ rounded-md
243
+ flex
244
+ justify-between
245
+ overflow-hidden;
246
+
247
+ &-steps {
248
+ @apply h-full w-full overflow-hidden;
249
+ max-width: calc(100% - var(--vc-wizard-summary-width));
250
+ }
251
+ &.full-width {
252
+ .vc-wizard-steps {
253
+ max-width: 100%;
254
+ }
255
+ }
256
+
257
+ &-steps-content {
258
+ @apply w-full h-full relative flex flex-col overflow-hidden;
259
+
260
+ .steps-header {
261
+ @apply w-full hidden lg:flex justify-between items-center py-3 px-4 lg:px-8 xxl:px-15;
262
+ flex: 0 0 var(--vc-wizard-header);
263
+ }
264
+ .steps-content {
265
+ @apply bg-white overflow-hidden;
266
+ flex: 1 0 auto;
267
+ max-height: calc(100% - var(--vc-wizard-header) - var(--vc-wizard-navigation));
268
+ }
269
+
270
+ .vc-stepper__items {
271
+ @apply w-full h-full bg-white relative box-border flex;
272
+ .vc-stepper__content {
273
+ @apply top-0 p-6 w-full h-full overflow-y-auto;
274
+ flex: 1 0 auto;
275
+ }
276
+ }
277
+ }
278
+
279
+ @media only screen and (max-width: 1680px) {
280
+ --vc-wizard-summary-width: #{$summaryWidthLg}
281
+ }
282
+ @media only screen and (max-width: 1264px) {
283
+ --vc-wizard-summary-width: 100%;
284
+ --vc-wizard-header: 0px;
285
+ flex-direction: column;
286
+ &-steps {
287
+ max-width: 100%;
288
+ order: 2;
289
+ }
290
+ }
291
+ }
292
+ </style>
@@ -0,0 +1,196 @@
1
+ <template>
2
+ <div class="vc-wizard-navigation">
3
+ <slot name="navigation">
4
+ <div class="left-actions">
5
+ <VcButton
6
+ size="large"
7
+ color="secondary"
8
+ type="outline"
9
+ icon="vc-icon-cancel"
10
+ @click="onCancel"
11
+ >
12
+ {{ cancelButtonText }}
13
+ </VcButton>
14
+ </div>
15
+ <div
16
+ v-if="$slots['extra-actions']"
17
+ class="extra-actions"
18
+ >
19
+ <slot name="extra-actions" />
20
+ </div>
21
+ <div class="right-actions px-5">
22
+ <div class="default-actions">
23
+ <div class="action-item">
24
+ <VcButton
25
+ v-if="showPrevBtn"
26
+ type="borderless"
27
+ icon="vc-icon-back"
28
+ size="large"
29
+ @click="onPrev"
30
+ >
31
+ {{ backButtonText }}
32
+ </VcButton>
33
+ </div>
34
+ <div
35
+ v-if="showNextBtn"
36
+ class="action-item"
37
+ >
38
+ <VcButton
39
+ :loading="loading"
40
+ :disabled="disabledNextBtn"
41
+ size="large"
42
+ @click="onNext"
43
+ >
44
+ <span>
45
+ {{ nextButtonText }}
46
+ </span>
47
+ <i class="vc-icon-next icon-base" />
48
+ </VcButton>
49
+ </div>
50
+ <div
51
+ v-if="showFinalBtn"
52
+ class="action-item"
53
+ >
54
+ <VcButton
55
+ :loading="loading"
56
+ icon="vc-icon-Save"
57
+ size="large"
58
+ @click="onFinal"
59
+ >
60
+ {{ finalButtonText }}
61
+ </VcButton>
62
+ </div>
63
+ </div>
64
+ <div
65
+ v-if="showFinalAddSlot"
66
+ class="additional-actions"
67
+ >
68
+ <slot name="additional-actions" />
69
+ </div>
70
+ </div>
71
+ </slot>
72
+ </div>
73
+ </template>
74
+
75
+ <script lang="ts">
76
+ import { defineComponent } from 'vue'
77
+ import VcButton from '@/components/VcButton/VcButton.vue'
78
+
79
+ export default defineComponent({
80
+ name: 'VcWizardNavigation',
81
+ components: { VcButton },
82
+ props: {
83
+ cancelName: {
84
+ type: String,
85
+ default: ''
86
+ },
87
+ backName: {
88
+ type: String,
89
+ default: ''
90
+ },
91
+ nextName: {
92
+ type: String,
93
+ default: ''
94
+ },
95
+ finalName: {
96
+ type: String,
97
+ default: ''
98
+ },
99
+ showPrevBtn: {
100
+ type: Boolean,
101
+ default: false
102
+ },
103
+ showNextBtn: {
104
+ type: Boolean,
105
+ default: true
106
+ },
107
+ disabledNextBtn: {
108
+ type: Boolean,
109
+ default: false
110
+ },
111
+ showFinalBtn: {
112
+ type: Boolean,
113
+ default: true
114
+ },
115
+ showFinalAddSlot: {
116
+ type: Boolean,
117
+ default: true
118
+ },
119
+ loading: {
120
+ type: Boolean,
121
+ default: false
122
+ }
123
+ },
124
+ emits: ['on-cancel', 'on-prev', 'on-next', 'on-final'],
125
+ computed: {
126
+ cancelButtonText () {
127
+ return this.cancelName ? this.cancelName : this.$tVU.t('wizard.navigation.cancel')
128
+ },
129
+ backButtonText () {
130
+ return this.backName ? this.backName : this.$tVU.t('wizard.navigation.back')
131
+ },
132
+ nextButtonText () {
133
+ return this.nextName ? this.nextName : this.$tVU.t('wizard.navigation.next')
134
+ },
135
+ finalButtonText () {
136
+ return this.finalName ? this.finalName : this.$tVU.t('wizard.navigation.finish')
137
+ }
138
+ },
139
+ methods: {
140
+ onCancel (): void {
141
+ this.$emit('on-cancel')
142
+ },
143
+ onPrev (): void {
144
+ this.$emit('on-prev')
145
+ },
146
+ onNext (): void {
147
+ this.$emit('on-next')
148
+ },
149
+ onFinal (): void {
150
+ this.$emit('on-final')
151
+ }
152
+ }
153
+ })
154
+ </script>
155
+
156
+ <style lang="scss">
157
+ .vc-wizard-navigation {
158
+ @apply border-t-2 border-field-borders flex justify-between items-center py-3 px-4 lg:px-8 xl:px-15;
159
+ flex: 0 0 var(--vc-wizard-navigation);
160
+
161
+ .left-actions {
162
+ @apply px-5;
163
+ }
164
+ .extra-actions {
165
+ @apply flex-grow;
166
+ }
167
+ .right-actions {
168
+ @apply flex justify-start items-center;
169
+
170
+ .default-actions, .additional-actions {
171
+ @apply flex justify-start items-center;
172
+ }
173
+ .default-actions {
174
+ .action-item {
175
+ @apply py-0 px-1 xl:px-3;
176
+ }
177
+ .vc-icon-next {
178
+ @apply ml-2 rtl:mr-2 rtl:ml-0;
179
+ }
180
+ }
181
+ .additional-actions {
182
+ @apply py-0 px-3;
183
+ }
184
+ }
185
+ }
186
+
187
+ [dir='rtl'] {
188
+ .vc-wizard-navigation {
189
+ .action-item {
190
+ i {
191
+ transform: rotate(180deg);
192
+ }
193
+ }
194
+ }
195
+ }
196
+ </style>
@@ -0,0 +1,73 @@
1
+ <template>
2
+ <div class="vc-wizard-summary">
3
+ <div class="vc-wizard-summary-steps">
4
+ <template
5
+ v-for="(stepItem, index) in steps"
6
+ :key="`summary-${index}`"
7
+ >
8
+ <VcSummaryStep
9
+ :step-index="index"
10
+ :step="stepItem"
11
+ :steps-count="steps.length"
12
+ :visited="visited"
13
+ :active-index="activeIndex"
14
+ :content="content[stepItem.step] || []"
15
+ @click-step="onClickSummaryStep"
16
+ />
17
+ </template>
18
+ </div>
19
+ </div>
20
+ </template>
21
+
22
+ <script lang="ts">
23
+ import { defineComponent, PropType } from 'vue'
24
+ import VcSummaryStep from '@/components/VcWizard/VcSummaryStep.vue'
25
+ import { VcWizardStepType, VcWizardSummaryType } from './VcWizard.types'
26
+
27
+ export default defineComponent({
28
+ name: 'VcWizardSummary',
29
+ components: { VcSummaryStep },
30
+ props: {
31
+ steps: {
32
+ type: Array as PropType<VcWizardStepType[]>,
33
+ default: () => ([])
34
+ },
35
+ activeIndex: {
36
+ type: Number,
37
+ default: 0
38
+ },
39
+ visited: {
40
+ type: Number,
41
+ default: 0
42
+ },
43
+ content: {
44
+ type: Object as PropType<VcWizardSummaryType>,
45
+ default: () => ({})
46
+ }
47
+ },
48
+ emits: ['update-step'],
49
+ methods: {
50
+ onClickSummaryStep (data: number): void {
51
+ this.$emit('update-step', data)
52
+ }
53
+ }
54
+ })
55
+ </script>
56
+
57
+ <style lang="scss" scoped>
58
+ .vc-wizard-summary {
59
+ @apply bg-default-bg px-3 py-0 lg:px-5 lg:py-8 xl:px-10 xl:py-10;
60
+ width: var(--vc-wizard-summary-width);
61
+ &-steps {
62
+ @apply pb-5 lg:pb-0 lg:pl-12 xl:pl-8 w-full h-full relative flex flex-row lg:flex-col;
63
+ }
64
+ }
65
+
66
+ [dir='rtl'] {
67
+ .vc-wizard-summary {
68
+ &-steps {
69
+ @apply lg:pl-0 xl:pl-0 lg:pr-12 xl:pr-8;
70
+ }
71
+ }
72
+ }
73
+ </style>
@@ -0,0 +1,119 @@
1
+ <template>
2
+ <transition-group
3
+ v-bind="$attrs"
4
+ :enter-active-class="enterClass"
5
+ :leave-active-class="leaveClass"
6
+ move-class="slide-move"
7
+ v-on="hooks"
8
+ >
9
+ <slot />
10
+ </transition-group>
11
+ </template>
12
+
13
+ <script lang="ts">
14
+ import Transition from './baseTransition'
15
+ import { defineComponent } from 'vue'
16
+
17
+ export default defineComponent({
18
+ name: 'VcWizardTransition',
19
+ mixins: [Transition],
20
+ props: {
21
+ direction: {
22
+ type: String,
23
+ default: 'right'
24
+ },
25
+ mode: {
26
+ type: String,
27
+ default: 'out-in'
28
+ }
29
+ },
30
+ computed: {
31
+ enterClass (): string {
32
+ return this.direction === 'left' ? 'slideXRightIn' : 'slideXLeftIn'
33
+ },
34
+ leaveClass (): string {
35
+ return this.direction === 'left' ? 'slideXRightOut' : 'slideXLeftOut'
36
+ }
37
+ }
38
+ })
39
+ </script>
40
+
41
+ <style lang="scss">
42
+ .slideXLeftIn {
43
+ animation-name: slideXLeftIn;
44
+ }
45
+
46
+ .slideXLeftOut {
47
+ position: absolute !important;
48
+ top: 0;
49
+ left: 0;
50
+ width: 100%;
51
+ animation-name: slideXLeftOut;
52
+ }
53
+
54
+ .slideXRightIn {
55
+ animation-name: slideXRightIn;
56
+ }
57
+
58
+ .slideXRightOut {
59
+ position: absolute !important;
60
+ top: 0;
61
+ left: 0;
62
+ width: 100%;
63
+ animation-name: slideXRightOut;
64
+ }
65
+
66
+ @keyframes slideXRightOut {
67
+ from {
68
+ opacity: 1;
69
+ }
70
+ to {
71
+ opacity: 0;
72
+ transform: translateX(100%);
73
+ }
74
+ }
75
+
76
+ @keyframes slideXRightIn {
77
+ from {
78
+ opacity: 0;
79
+ transform: translateX(-100%);
80
+ }
81
+ to {
82
+ opacity: 1;
83
+ }
84
+ }
85
+
86
+ @keyframes slideXLeftOut {
87
+ from {
88
+ opacity: 1;
89
+ }
90
+ to {
91
+ opacity: 0;
92
+ transform: translateX(-100%);
93
+ }
94
+ }
95
+
96
+ @keyframes slideXLeftIn {
97
+ from {
98
+ opacity: 0;
99
+ transform: translateX(100%);
100
+ }
101
+ to {
102
+ opacity: 1;
103
+ }
104
+ }
105
+ [dir='rtl'] {
106
+ .slideXLeftIn {
107
+ animation-name: slideXRightIn;
108
+ }
109
+ .slideXRightIn {
110
+ animation-name: slideXLeftIn;
111
+ }
112
+ .slideXLeftOut {
113
+ animation-name: slideXRightOut;
114
+ }
115
+ .slideXRightOut {
116
+ animation-name: slideXLeftOut;
117
+ }
118
+ }
119
+ </style>