@vc-shell/framework 1.0.289 → 1.0.291

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 (178) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/core/composables/index.ts +1 -0
  3. package/core/composables/useTheme/index.ts +60 -0
  4. package/core/directives/loading/styles.css +6 -1
  5. package/dist/core/composables/index.d.ts +1 -0
  6. package/dist/core/composables/index.d.ts.map +1 -1
  7. package/dist/core/composables/useTheme/index.d.ts +11 -0
  8. package/dist/core/composables/useTheme/index.d.ts.map +1 -0
  9. package/dist/framework.js +27889 -27362
  10. package/dist/index.css +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/locales/en.json +6 -0
  13. package/dist/shared/components/app-bar-button/app-bar-button.vue.d.ts +56 -0
  14. package/dist/shared/components/app-bar-button/app-bar-button.vue.d.ts.map +1 -0
  15. package/dist/shared/components/app-bar-button/index.d.ts +2 -0
  16. package/dist/shared/components/app-bar-button/index.d.ts.map +1 -0
  17. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
  18. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  19. package/dist/shared/components/index.d.ts +3 -0
  20. package/dist/shared/components/index.d.ts.map +1 -1
  21. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
  22. package/dist/shared/components/notification-dropdown/notification-dropdown.vue.d.ts.map +1 -1
  23. package/dist/shared/components/notification-template/notification-template.vue.d.ts.map +1 -1
  24. package/dist/shared/components/sidebar/index.d.ts +2 -0
  25. package/dist/shared/components/sidebar/index.d.ts.map +1 -0
  26. package/dist/shared/components/sidebar/sidebar.vue.d.ts +49 -0
  27. package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -0
  28. package/dist/shared/components/theme-selector/index.d.ts +2 -0
  29. package/dist/shared/components/theme-selector/index.d.ts.map +1 -0
  30. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts +3 -0
  31. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts.map +1 -0
  32. package/dist/shared/components/user-dropdown-button/index.d.ts +6 -0
  33. package/dist/shared/components/user-dropdown-button/index.d.ts.map +1 -1
  34. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +1 -0
  35. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  36. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  37. package/dist/shared/modules/dynamic/types/index.d.ts +3 -0
  38. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  39. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts +16 -3
  40. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts.map +1 -1
  41. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts +7 -7
  42. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts.map +1 -1
  43. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts +24 -3
  44. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  45. package/dist/shared/pages/InvitePage/components/invite/index.d.ts +24 -1
  46. package/dist/shared/pages/InvitePage/components/invite/index.d.ts.map +1 -1
  47. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts +24 -3
  48. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  49. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts +24 -1
  50. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts.map +1 -1
  51. package/dist/tailwind.config.d.ts +42 -15
  52. package/dist/tailwind.config.d.ts.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  55. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  56. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  57. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  58. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  59. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  60. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  61. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  62. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  63. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  64. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  65. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  66. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  67. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  68. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  69. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts +26 -0
  70. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts.map +1 -1
  71. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +26 -0
  72. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  73. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  74. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  75. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  76. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  77. package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
  78. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts +1 -0
  79. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
  80. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  81. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -1
  82. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +1 -0
  83. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  84. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  85. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +15 -0
  86. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
  87. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -0
  88. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  89. package/package.json +4 -4
  90. package/shared/components/app-bar-button/app-bar-button.vue +169 -0
  91. package/shared/components/app-bar-button/index.ts +1 -0
  92. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +138 -38
  93. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +10 -1
  94. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +55 -30
  95. package/shared/components/change-password/change-password.vue +7 -1
  96. package/shared/components/common/popup/vc-popup-error.vue +1 -1
  97. package/shared/components/common/popup/vc-popup-warning.vue +1 -1
  98. package/shared/components/index.ts +3 -0
  99. package/shared/components/language-selector/language-selector.vue +55 -39
  100. package/shared/components/notification-dropdown/_internal/notification/notification.vue +7 -1
  101. package/shared/components/notification-dropdown/notification-dropdown.vue +96 -83
  102. package/shared/components/notification-template/notification-template.vue +66 -22
  103. package/shared/components/notifications/styles/index.scss +1 -0
  104. package/shared/components/sidebar/index.ts +1 -0
  105. package/shared/components/sidebar/sidebar.vue +96 -0
  106. package/shared/components/theme-selector/index.ts +1 -0
  107. package/shared/components/theme-selector/theme-selector.vue +95 -0
  108. package/shared/components/user-dropdown-button/user-dropdown-button.vue +155 -86
  109. package/shared/modules/assets/components/assets-details/assets-details.vue +9 -2
  110. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +16 -6
  111. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +1 -1
  112. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -1
  113. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +6 -2
  114. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +16 -2
  115. package/shared/modules/dynamic/types/index.ts +3 -0
  116. package/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue +14 -9
  117. package/shared/pages/InvitePage/components/invite/Invite.vue +59 -15
  118. package/shared/pages/LoginPage/components/login/Login.vue +78 -22
  119. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +67 -15
  120. package/tailwind.config.ts +281 -15
  121. package/ui/components/atoms/vc-badge/vc-badge.vue +38 -23
  122. package/ui/components/atoms/vc-button/vc-button.vue +37 -34
  123. package/ui/components/atoms/vc-card/vc-card.vue +17 -11
  124. package/ui/components/atoms/vc-col/vc-col.vue +4 -6
  125. package/ui/components/atoms/vc-container/vc-container.vue +26 -8
  126. package/ui/components/atoms/vc-hint/vc-hint.vue +8 -2
  127. package/ui/components/atoms/vc-icon/vc-icon.vue +3 -3
  128. package/ui/components/atoms/vc-image/vc-image.vue +33 -9
  129. package/ui/components/atoms/vc-label/vc-label.vue +38 -9
  130. package/ui/components/atoms/vc-link/vc-link.vue +15 -8
  131. package/ui/components/atoms/vc-loading/vc-loading.vue +37 -8
  132. package/ui/components/atoms/vc-progress/vc-progress.vue +29 -21
  133. package/ui/components/atoms/vc-row/vc-row.vue +4 -2
  134. package/ui/components/atoms/vc-status/vc-status.vue +29 -20
  135. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +20 -3
  136. package/ui/components/atoms/vc-switch/vc-switch.vue +41 -17
  137. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +35 -9
  138. package/ui/components/atoms/vc-video/vc-video.vue +28 -6
  139. package/ui/components/atoms/vc-widget/vc-widget.vue +59 -28
  140. package/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue +29 -27
  141. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +34 -11
  142. package/ui/components/molecules/vc-checkbox/vc-checkbox.vue +43 -21
  143. package/ui/components/molecules/vc-editor/vc-editor.vue +70 -32
  144. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +32 -16
  145. package/ui/components/molecules/vc-field/vc-field.vue +36 -13
  146. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +75 -25
  147. package/ui/components/molecules/vc-input/vc-input.vue +279 -218
  148. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +24 -2
  149. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +102 -64
  150. package/ui/components/molecules/vc-notification/vc-notification.vue +40 -15
  151. package/ui/components/molecules/vc-pagination/vc-pagination.vue +19 -15
  152. package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +18 -23
  153. package/ui/components/molecules/vc-rating/vc-rating.vue +9 -5
  154. package/ui/components/molecules/vc-select/vc-select.vue +211 -65
  155. package/ui/components/molecules/vc-slider/vc-slider.vue +32 -13
  156. package/ui/components/molecules/vc-textarea/vc-textarea.vue +17 -12
  157. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +68 -14
  158. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +112 -122
  159. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +213 -96
  160. package/ui/components/organisms/vc-app/vc-app.vue +41 -15
  161. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +78 -30
  162. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +81 -59
  163. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +27 -13
  164. package/ui/components/organisms/vc-blade/vc-blade.vue +177 -46
  165. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +40 -11
  166. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +52 -18
  167. package/ui/components/organisms/vc-gallery/vc-gallery.vue +38 -6
  168. package/ui/components/organisms/vc-login-form/vc-login-form.vue +40 -14
  169. package/ui/components/organisms/vc-popup/vc-popup.vue +186 -44
  170. package/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue +25 -6
  171. package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +48 -12
  172. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +130 -60
  173. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +55 -7
  174. package/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue +17 -5
  175. package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +38 -6
  176. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +111 -62
  177. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +139 -46
  178. package/ui/components/organisms/vc-table/vc-table.vue +370 -128
@@ -13,7 +13,7 @@
13
13
  <!-- Input label -->
14
14
  <VcLabel
15
15
  v-if="label"
16
- class="tw-mb-2"
16
+ class="vc-input__label"
17
17
  :required="required"
18
18
  :multilanguage="multilanguage"
19
19
  :current-language="currentLanguage"
@@ -26,202 +26,198 @@
26
26
  >
27
27
  </VcLabel>
28
28
 
29
- <div class="tw-flex tw-flex-nowrap tw-items-start">
30
- <div class="tw-relative tw-flex tw-flex-auto tw-text-left">
31
- <div
32
- v-if="$slots['prepend']"
33
- class="tw-flex tw-items-center tw-flex-nowrap tw-pr-3"
34
- >
35
- <slot
36
- name="prepend"
37
- :focus="focus"
38
- ></slot>
39
- </div>
40
- <div class="tw-flex tw-flex-col tw-flex-nowrap tw-flex-auto tw-relative">
29
+ <div class="vc-input__container">
30
+ <div
31
+ v-if="$slots['prepend']"
32
+ class="vc-input__prepend"
33
+ >
34
+ <slot
35
+ name="prepend"
36
+ :focus="focus"
37
+ ></slot>
38
+ </div>
39
+
40
+ <div
41
+ class="vc-input__field-wrapper"
42
+ :class="{
43
+ 'vc-input__field-wrapper--default': size === 'default',
44
+ 'vc-input__field-wrapper--small': size === 'small',
45
+ }"
46
+ >
47
+ <div class="vc-input__field-container">
41
48
  <div
42
- class="vc-input__field-wrapper"
43
- :class="{
44
- 'tw-h-[var(--input-height)]': size === 'default',
45
- 'tw-h-[var(--input-height-small)]': size === 'small',
46
- }"
49
+ v-if="$slots['prepend-inner']"
50
+ class="vc-input__prepend-inner"
47
51
  >
48
- <div class="tw-flex tw-flex-nowrap tw-flex-auto tw-h-full">
49
- <div
50
- v-if="$slots['prepend-inner']"
51
- class="tw-flex tw-items-center tw-flex-nowrap tw-pr-3"
52
- >
53
- <slot
54
- name="prepend-inner"
55
- :focus="focus"
56
- ></slot>
57
- </div>
58
- <div class="vc-input__field">
59
- <div
60
- v-if="prefix"
61
- class="tw-flex tw-items-center tw-flex-wrap tw-pr-3 tw-pointer-events-none"
62
- >
63
- {{ prefix }}
64
- </div>
65
- <slot
66
- name="control"
67
- :editable="disabled"
68
- :focused="autofocus"
69
- :model-value="handleValue"
70
- :emit-value="emitValue"
52
+ <slot
53
+ name="prepend-inner"
54
+ :focus="focus"
55
+ ></slot>
56
+ </div>
57
+
58
+ <div class="vc-input__field">
59
+ <div
60
+ v-if="prefix"
61
+ class="vc-input__prefix"
62
+ >
63
+ {{ prefix }}
64
+ </div>
65
+
66
+ <slot
67
+ name="control"
68
+ :editable="disabled"
69
+ :focused="autofocus"
70
+ :model-value="handleValue"
71
+ :emit-value="emitValue"
72
+ :placeholder="placeholder"
73
+ >
74
+ <template v-if="type === 'datetime-local' || type === 'date'">
75
+ <VueDatePicker
76
+ v-model="handleValue"
77
+ :placeholder="
78
+ placeholder ||
79
+ (type === 'datetime-local'
80
+ ? $t('COMPONENTS.MOLECULES.VC_INPUT.DATE_TIME_PLACEHOLDER')
81
+ : $t('COMPONENTS.MOLECULES.VC_INPUT.DATE_PLACEHOLDER'))
82
+ "
83
+ :disabled="disabled"
84
+ :name="name"
85
+ :maxlength="maxlength"
86
+ :autofocus="autofocus"
87
+ :max-date="maxDate"
88
+ time-picker-inline
89
+ :enable-time-picker="type === 'datetime-local'"
90
+ :format="formatDateWithLocale"
91
+ :locale="locale"
92
+ :start-time="{ hours: 0, minutes: 0 }"
93
+ :clearable="false"
94
+ :config="{ closeOnAutoApply: false }"
95
+ auto-apply
96
+ :teleport-center="$isMobile.value"
97
+ :is24="isBrowserLocale24h"
98
+ v-bind="datePickerOptions"
99
+ :teleport="$isDesktop.value ? 'body' : undefined"
100
+ class="vc-input__input"
101
+ @keydown="onKeyDown"
102
+ @blur="handleBlur"
103
+ />
104
+ </template>
105
+ <template v-else>
106
+ <input
107
+ ref="inputRef"
108
+ v-model="handleValue"
71
109
  :placeholder="placeholder"
72
- >
73
- <template v-if="type === 'datetime-local' || type === 'date'">
74
- <VueDatePicker
75
- v-model="handleValue"
76
- :placeholder="
77
- placeholder || type === 'datetime-local'
78
- ? $t('COMPONENTS.MOLECULES.VC_INPUT.DATE_TIME_PLACEHOLDER')
79
- : $t('COMPONENTS.MOLECULES.VC_INPUT.DATE_PLACEHOLDER')
80
- "
81
- :disabled="disabled"
82
- :name="name"
83
- :maxlength="maxlength"
84
- :autofocus="autofocus"
85
- :max-date="maxDate"
86
- time-picker-inline
87
- :enable-time-picker="type === 'datetime-local'"
88
- :format="formatDateWithLocale"
89
- :locale="locale"
90
- :start-time="{
91
- hours: 0,
92
- minutes: 0,
93
- }"
94
- :clearable="false"
95
- :config="{
96
- closeOnAutoApply: false,
97
- }"
98
- auto-apply
99
- :teleport-center="$isMobile.value"
100
- :is24="isBrowserLocale24h"
101
- v-bind="datePickerOptions"
102
- :teleport="$isDesktop.value ? 'body' : undefined"
103
- class="vc-input__input"
104
- @keydown="onKeyDown"
105
- @blur="handleBlur"
106
- ></VueDatePicker>
107
- </template>
108
- <template v-else>
109
- <input
110
- ref="inputRef"
111
- v-model="handleValue"
112
- :placeholder="placeholder"
113
- :type="internalTypeComputed"
114
- :disabled="disabled"
115
- :name="name"
116
- :maxlength="maxlength"
117
- :autofocus="autofocus"
118
- :max="maxDate"
119
- class="vc-input__input"
120
- @keydown="onKeyDown"
121
- @blur="handleBlur"
122
- />
123
- </template>
124
- </slot>
125
- <div
126
- v-if="suffix"
127
- class="tw-flex tw-items-center tw-flex-wrap tw-pl-3 tw-pointer-events-none"
128
- >
129
- {{ suffix }}
130
- </div>
131
- <div
132
- v-if="clearable && mutatedModel && !disabled && type !== 'password'"
133
- class="vc-input__clear"
134
- @click="onReset"
135
- >
136
- <VcIcon
137
- size="s"
138
- icon="fas fa-times"
139
- ></VcIcon>
140
- </div>
141
-
142
- <div
143
- v-if="type === 'password' && internalType === 'password'"
144
- class="vc-input__showhide"
145
- @click="internalType = 'text'"
146
- >
147
- <VcIcon
148
- size="s"
149
- icon="fas fa-eye-slash"
150
- ></VcIcon>
151
- </div>
152
-
153
- <div
154
- v-if="type === 'password' && internalType === 'text'"
155
- class="vc-input__showhide"
156
- @click="internalType = 'password'"
157
- >
158
- <VcIcon
159
- size="s"
160
- icon="fas fa-eye"
161
- ></VcIcon>
162
- </div>
163
- </div>
164
-
165
- <div
166
- v-if="$slots['append-inner']"
167
- class="tw-flex tw-items-center tw-flex-nowrap tw-pl-3"
168
- >
169
- <slot
170
- name="append-inner"
171
- :focus="focus"
172
- ></slot>
173
- </div>
174
- <div
175
- v-if="loading"
176
- class="tw-flex tw-items-center tw-flex-nowrap tw-pl-3"
177
- >
178
- <VcIcon
179
- icon="fas fa-spinner tw-animate-spin"
180
- class="tw-text-[var(--input-clear-color)]"
181
- size="m"
182
- ></VcIcon>
183
- </div>
110
+ :type="internalTypeComputed"
111
+ :disabled="disabled"
112
+ :name="name"
113
+ :maxlength="maxlength"
114
+ :autofocus="autofocus"
115
+ :max="maxDate"
116
+ class="vc-input__input"
117
+ @keydown="onKeyDown"
118
+ @blur="handleBlur"
119
+ />
120
+ </template>
121
+ </slot>
122
+
123
+ <div
124
+ v-if="suffix"
125
+ class="vc-input__suffix"
126
+ >
127
+ {{ suffix }}
184
128
  </div>
185
- </div>
186
129
 
187
- <Transition
188
- name="slide-up"
189
- mode="out-in"
190
- >
191
- <div v-if="error">
192
- <slot name="error">
193
- <VcHint
194
- v-if="errorMessage"
195
- class="vc-input__error"
196
- >
197
- {{ errorMessage }}
198
- </VcHint>
199
- </slot>
130
+ <div
131
+ v-if="clearable && mutatedModel && !disabled && type !== 'password'"
132
+ class="vc-input__clear"
133
+ @click="onReset"
134
+ >
135
+ <VcIcon
136
+ size="s"
137
+ icon="fas fa-times"
138
+ ></VcIcon>
200
139
  </div>
201
- <div v-else>
202
- <slot name="hint">
203
- <VcHint
204
- v-if="hint"
205
- class="vc-input__desc"
206
- >
207
- {{ hint }}
208
- </VcHint>
209
- </slot>
140
+
141
+ <div
142
+ v-if="type === 'password' && internalType === 'password'"
143
+ class="vc-input__showhide"
144
+ @click="internalType = 'text'"
145
+ >
146
+ <VcIcon
147
+ size="s"
148
+ icon="fas fa-eye-slash"
149
+ ></VcIcon>
210
150
  </div>
211
- </Transition>
212
- </div>
213
151
 
214
- <div
215
- v-if="$slots['append']"
216
- class="tw-flex tw-items-center tw-flex-nowrap tw-pl-3"
217
- >
218
- <slot
219
- name="append"
220
- :focus="focus"
221
- ></slot>
152
+ <div
153
+ v-if="type === 'password' && internalType === 'text'"
154
+ class="vc-input__showhide"
155
+ @click="internalType = 'password'"
156
+ >
157
+ <VcIcon
158
+ size="s"
159
+ icon="fas fa-eye"
160
+ ></VcIcon>
161
+ </div>
162
+ </div>
163
+
164
+ <div
165
+ v-if="$slots['append-inner']"
166
+ class="vc-input__append-inner"
167
+ >
168
+ <slot
169
+ name="append-inner"
170
+ :focus="focus"
171
+ ></slot>
172
+ </div>
173
+
174
+ <div
175
+ v-if="loading"
176
+ class="vc-input__loading"
177
+ >
178
+ <VcIcon
179
+ icon="fas fa-circle-notch"
180
+ class="vc-input__loading-icon"
181
+ size="m"
182
+ ></VcIcon>
183
+ </div>
222
184
  </div>
223
185
  </div>
186
+
187
+ <div
188
+ v-if="$slots['append']"
189
+ class="vc-input__append"
190
+ >
191
+ <slot
192
+ name="append"
193
+ :focus="focus"
194
+ ></slot>
195
+ </div>
224
196
  </div>
197
+
198
+ <Transition
199
+ name="slide-up"
200
+ mode="out-in"
201
+ >
202
+ <div v-if="error">
203
+ <slot name="error">
204
+ <VcHint
205
+ v-if="errorMessage"
206
+ class="vc-input__error"
207
+ >{{ errorMessage }}</VcHint
208
+ >
209
+ </slot>
210
+ </div>
211
+ <div v-else>
212
+ <slot name="hint">
213
+ <VcHint
214
+ v-if="hint"
215
+ class="vc-input__desc"
216
+ >{{ hint }}</VcHint
217
+ >
218
+ </slot>
219
+ </div>
220
+ </Transition>
225
221
  </div>
226
222
  </template>
227
223
  <!-- eslint-disable @typescript-eslint/no-explicit-any -->
@@ -556,42 +552,98 @@ function focus() {
556
552
  --input-height: 38px;
557
553
  --input-height-small: 30px;
558
554
  --input-border-radius: 3px;
559
- --input-border-color: #d3dbe9;
560
- --input-border-color-error: #f14e4e;
561
- --input-background-color: #ffffff;
562
- --input-placeholder-color: #a5a5a5;
563
- --input-clear-color: #43b0e6;
564
- --input-clear-color-hover: #319ed4;
565
- --dp-input-padding: 10px 0px 10px 10px;
566
- --dp-input-icon-padding: 25px;
567
- --dp-font-size: 13px;
568
- --dp-font-family: "Roboto", sans-serif;
555
+ --input-border-color: var(--secondary-200);
556
+ --input-border-color-error: var(--base-error-color, var(--danger-500));
557
+ --input-background-color: var(--additional-50);
558
+ --input-placeholder-color: var(--neutrals-400);
559
+ --input-clear-color: var(--primary-500);
560
+ --input-clear-color-hover: var(--primary-600);
561
+ --input-disabled-text-color: var(--neutrals-400);
562
+ --input-disabled-bg-color: var(--neutrals-50);
563
+ --input-text-color: var(--base-text-color, var(--neutrals-950));
569
564
  }
570
565
 
571
566
  .vc-input {
572
567
  @apply tw-overflow-hidden;
573
568
 
574
- &_date,
575
- &_datetime-local {
576
- .vc-app_mobile & {
577
- @apply tw-max-w-full;
578
- }
569
+ &__label {
570
+ @apply tw-mb-2;
571
+ }
572
+
573
+ &__container {
574
+ @apply tw-flex tw-flex-nowrap tw-items-start;
575
+ }
576
+
577
+ &__prepend,
578
+ &__append {
579
+ @apply tw-flex tw-items-center tw-flex-nowrap tw-pr-3 tw-pl-3;
579
580
  }
580
581
 
581
582
  &__field-wrapper {
582
583
  @apply tw-px-3 tw-relative tw-flex tw-flex-nowrap tw-w-full tw-outline-none tw-min-w-0 tw-box-border tw-grow tw-border tw-border-solid tw-border-[color:var(--input-border-color)] tw-rounded-[var(--input-border-radius)] tw-bg-[color:var(--input-background-color)];
584
+
585
+ &--default {
586
+ @apply tw-h-[var(--input-height)];
587
+ }
588
+
589
+ &--small {
590
+ @apply tw-h-[var(--input-height-small)];
591
+ }
583
592
  }
584
593
 
585
- &_error &__field-wrapper {
586
- @apply tw-border tw-border-solid tw-border-[color:var(--input-border-color-error)];
594
+ &__field-container {
595
+ @apply tw-flex tw-flex-nowrap tw-flex-auto tw-h-full;
587
596
  }
588
597
 
589
- &__error {
590
- @apply tw-mt-1 [--hint-color:var(--input-border-color-error)];
598
+ &__prepend-inner,
599
+ &__append-inner {
600
+ @apply tw-flex tw-items-center tw-flex-nowrap;
591
601
  }
592
602
 
593
- &__desc {
594
- @apply tw-text-[color:var(--input-placeholder-color)] tw-mt-1 tw-break-words tw-p-0;
603
+ &__append-inner {
604
+ @apply tw-pl-3;
605
+ }
606
+
607
+ &__prepend-inner {
608
+ @apply tw-pr-3;
609
+ }
610
+
611
+ &__field {
612
+ @apply tw-flex tw-flex-row tw-flex-auto tw-w-full tw-min-w-0;
613
+ }
614
+
615
+ &__prefix,
616
+ &__suffix {
617
+ @apply tw-flex tw-items-center tw-flex-wrap tw-pointer-events-none;
618
+ }
619
+
620
+ &__prefix {
621
+ @apply tw-pr-3;
622
+ }
623
+
624
+ &__suffix {
625
+ @apply tw-pl-3;
626
+ }
627
+
628
+ &__clear,
629
+ &__showhide {
630
+ @apply tw-cursor-pointer tw-pl-3;
631
+ }
632
+
633
+ &__clear {
634
+ @apply tw-text-[color:var(--input-clear-color)] hover:tw-text-[color:var(--input-clear-color-hover)] tw-flex tw-items-center;
635
+ }
636
+
637
+ &__showhide {
638
+ @apply tw-text-[color:var(--input-placeholder-color)] hover:tw-text-[color:var(--input-clear-color-hover)] tw-flex tw-items-center;
639
+ }
640
+
641
+ &__loading {
642
+ @apply tw-flex tw-items-center tw-flex-nowrap tw-pl-3;
643
+ }
644
+
645
+ &__loading-icon {
646
+ @apply tw-animate-spin tw-text-[color:var(--input-clear-color)];
595
647
  }
596
648
 
597
649
  &__input {
@@ -610,22 +662,22 @@ function focus() {
610
662
  &__field {
611
663
  @apply tw-w-auto tw-min-w-0 tw-max-w-full tw-relative tw-flex tw-flex-row tw-flex-auto tw-flex-nowrap [height:inherit];
612
664
  input {
613
- @apply tw-border-none tw-outline-none tw-h-full tw-min-w-0 tw-w-full tw-box-border tw-grow;
665
+ @apply tw-border-none tw-outline-none tw-h-full tw-min-w-0 tw-w-full tw-box-border tw-grow tw-text-sm tw-text-[color:var(--input-text-color)];
614
666
 
615
667
  &::-webkit-input-placeholder {
616
- @apply tw-text-[color:var(--input-placeholder-color)];
668
+ @apply tw-text-[color:var(--input-placeholder-color)] tw-text-sm;
617
669
  }
618
670
 
619
671
  &::-moz-placeholder {
620
- @apply tw-text-[color:var(--input-placeholder-color)];
672
+ @apply tw-text-[color:var(--input-placeholder-color)] tw-text-sm;
621
673
  }
622
674
 
623
675
  &::-ms-placeholder {
624
- @apply tw-text-[color:var(--input-placeholder-color)];
676
+ @apply tw-text-[color:var(--input-placeholder-color)] tw-text-sm;
625
677
  }
626
678
 
627
679
  &::placeholder {
628
- @apply tw-text-[color:var(--input-placeholder-color)];
680
+ @apply tw-text-[color:var(--input-placeholder-color)] tw-text-sm;
629
681
  }
630
682
 
631
683
  &::-ms-reveal,
@@ -635,17 +687,21 @@ function focus() {
635
687
  }
636
688
  }
637
689
 
638
- &__clear {
639
- @apply tw-cursor-pointer tw-text-[color:var(--input-clear-color)] hover:tw-text-[color:var(--input-clear-color-hover)] tw-flex tw-items-center tw-pl-3;
690
+ &__error {
691
+ @apply tw-mt-1 [--hint-color:var(--input-border-color-error)];
640
692
  }
641
693
 
642
- &__showhide {
643
- @apply tw-cursor-pointer tw-text-[color:var(--input-placeholder-color)] hover:tw-text-[color:var(--input-clear-color-hover)] tw-pl-3 tw-flex tw-items-center;
694
+ &__desc {
695
+ @apply tw-text-[color:var(--input-placeholder-color)] tw-text-sm tw-mt-1;
696
+ }
697
+
698
+ &_error &__field-wrapper {
699
+ @apply tw-border tw-border-solid tw-border-[color:var(--input-border-color-error)];
644
700
  }
645
701
 
646
702
  &_disabled &__field-wrapper,
647
703
  &_disabled &__field {
648
- @apply tw-bg-[#fafafa] tw-text-[#424242];
704
+ @apply tw-bg-[color:var(--input-disabled-bg-color)] tw-text-[color:var(--input-disabled-text-color)];
649
705
  }
650
706
 
651
707
  .slide-up-enter-active,
@@ -684,8 +740,13 @@ function focus() {
684
740
  }
685
741
  }
686
742
 
743
+ input.dp__input {
744
+ background-color: var(--input-background-color);
745
+ height: auto;
746
+ }
747
+
687
748
  input.dp__input::placeholder {
688
- color: #818181 !important;
749
+ color: var(--input-placeholder-color) !important;
689
750
  }
690
751
 
691
752
  .dp--tp-wrap {
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <VcSelect
3
+ class="vc-input-currency"
3
4
  :options="options"
4
5
  :option-label="optionLabel"
5
6
  :option-value="optionValue"
@@ -27,7 +28,7 @@
27
28
  :error="error"
28
29
  :error-message="errorMessage"
29
30
  :maxlength="maxlength"
30
- class="tw-w-full"
31
+ class="vc-input-currency__input"
31
32
  type="number"
32
33
  @update:model-value="updateModel"
33
34
  @blur="handleBlur"
@@ -39,7 +40,7 @@
39
40
  >
40
41
  <template v-if="options && options.length">
41
42
  <button
42
- class="tw-text-[#43b0e6] tw-not-italic tw-font-medium tw-text-[13px] tw-leading-[20px] tw-cursor-pointer"
43
+ class="vc-input-currency__toggle-button"
43
44
  @click.stop.prevent="toggleHandler"
44
45
  >
45
46
  {{ unref(option) }}
@@ -57,6 +58,7 @@
57
58
  type="text"
58
59
  :disabled="disabled"
59
60
  :placeholder="holder"
61
+ class="vc-input-currency__control"
60
62
  @blur="handleBlur"
61
63
  @keydown="handleKeyDown"
62
64
  @paste="handlePaste"
@@ -301,3 +303,23 @@ function handlePaste(e: ClipboardEvent) {
301
303
  }
302
304
  }
303
305
  </script>
306
+
307
+ <style lang="scss">
308
+ :root {
309
+ --input-curr-toggle-color: var(--primary-500);
310
+ }
311
+
312
+ .vc-input-currency {
313
+ &__input {
314
+ @apply tw-w-full;
315
+ }
316
+
317
+ &__toggle-button {
318
+ @apply tw-text-[color:var(--input-curr-toggle-color)] tw-not-italic tw-font-medium tw-text-sm tw-cursor-pointer;
319
+ }
320
+
321
+ &__control {
322
+ @apply tw-border tw-border-solid tw-px-2 tw-py-1 tw-text-sm tw-outline-none;
323
+ }
324
+ }
325
+ </style>