@volverjs/ui-vue 0.0.10-beta.2 → 0.0.10-beta.21

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 (258) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +98 -3
  3. package/auto-imports.d.ts +6 -2
  4. package/bin/icons.cjs +1 -1
  5. package/bin/icons.js +23 -16
  6. package/dist/Volver.d.ts +1 -1
  7. package/dist/components/VvAccordion/VvAccordion.es.js +70 -14
  8. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  9. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +13 -6
  10. package/dist/components/VvAccordion/index.d.ts +4 -1
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +117 -38
  12. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  13. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +15 -8
  14. package/dist/components/VvAccordionGroup/index.d.ts +4 -1
  15. package/dist/components/VvAction/VvAction.es.js +58 -13
  16. package/dist/components/VvAction/VvAction.umd.js +1 -1
  17. package/dist/components/VvAction/VvAction.vue.d.ts +59 -12
  18. package/dist/components/VvAction/index.d.ts +25 -4
  19. package/dist/components/VvAlert/VvAlert.es.js +195 -152
  20. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  21. package/dist/components/VvAlert/VvAlert.vue.d.ts +18 -8
  22. package/dist/components/VvAlert/index.d.ts +9 -5
  23. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +240 -174
  24. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  25. package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +13 -6
  26. package/dist/components/VvAlertGroup/index.d.ts +6 -2
  27. package/dist/components/VvAvatar/VvAvatar.es.js +54 -9
  28. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
  29. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +12 -4
  30. package/dist/components/VvAvatar/index.d.ts +4 -1
  31. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +111 -36
  32. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  33. package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +10 -3
  34. package/dist/components/VvAvatarGroup/index.d.ts +4 -1
  35. package/dist/components/VvBadge/VvBadge.es.js +73 -17
  36. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  37. package/dist/components/VvBadge/VvBadge.vue.d.ts +12 -4
  38. package/dist/components/VvBadge/index.d.ts +4 -1
  39. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +259 -49
  40. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  41. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +27 -7
  42. package/dist/components/VvBreadcrumb/index.d.ts +6 -10
  43. package/dist/components/VvButton/VvButton.es.js +187 -141
  44. package/dist/components/VvButton/VvButton.umd.js +1 -1
  45. package/dist/components/VvButton/VvButton.vue.d.ts +101 -27
  46. package/dist/components/VvButton/index.d.ts +41 -14
  47. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +69 -16
  48. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  49. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +23 -10
  50. package/dist/components/VvButtonGroup/index.d.ts +8 -2
  51. package/dist/components/VvCard/VvCard.es.js +84 -25
  52. package/dist/components/VvCard/VvCard.umd.js +1 -1
  53. package/dist/components/VvCard/VvCard.vue.d.ts +12 -4
  54. package/dist/components/VvCard/index.d.ts +4 -1
  55. package/dist/components/VvCheckbox/VvCheckbox.es.js +91 -22
  56. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  57. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +104 -32
  58. package/dist/components/VvCheckbox/index.d.ts +45 -12
  59. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +180 -67
  60. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  61. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +100 -29
  62. package/dist/components/VvCheckboxGroup/index.d.ts +45 -12
  63. package/dist/components/VvCombobox/VvCombobox.es.js +758 -531
  64. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  65. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +181 -108
  66. package/dist/components/VvCombobox/index.d.ts +53 -22
  67. package/dist/components/VvDialog/VvDialog.es.js +136 -141
  68. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  69. package/dist/components/VvDialog/VvDialog.vue.d.ts +4 -4
  70. package/dist/components/VvDropdown/VvDropdown.es.js +121 -55
  71. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  72. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +101 -75
  73. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +72 -11
  74. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +1 -1
  75. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +12 -4
  76. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +26 -7
  77. package/dist/components/VvDropdown/index.d.ts +16 -11
  78. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +82 -22
  79. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  80. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +13 -7
  81. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +56 -8
  82. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
  83. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +76 -17
  84. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  85. package/dist/components/VvIcon/VvIcon.es.js +23 -96
  86. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  87. package/dist/components/VvIcon/VvIcon.vue.d.ts +23 -66
  88. package/dist/components/VvIcon/index.d.ts +33 -48
  89. package/dist/components/VvInputFile/VvInputFile.es.js +1734 -0
  90. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
  91. package/dist/components/VvInputFile/VvInputFile.vue.d.ts +313 -0
  92. package/dist/components/VvInputFile/index.d.ts +179 -0
  93. package/dist/components/VvInputText/VvInputClearAction.d.ts +7 -5
  94. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +10 -8
  95. package/dist/components/VvInputText/VvInputStepAction.d.ts +1 -1
  96. package/dist/components/VvInputText/VvInputText.es.js +331 -293
  97. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  98. package/dist/components/VvInputText/VvInputText.vue.d.ts +162 -55
  99. package/dist/components/VvInputText/index.d.ts +71 -29
  100. package/dist/components/VvNav/VvNav.es.js +151 -73
  101. package/dist/components/VvNav/VvNav.umd.js +1 -1
  102. package/dist/components/VvNav/VvNav.vue.d.ts +41 -14
  103. package/dist/components/VvNav/VvNavItem.vue.d.ts +9 -0
  104. package/dist/components/VvNav/VvNavSeparator.vue.d.ts +2 -0
  105. package/dist/components/VvNav/index.d.ts +5 -13
  106. package/dist/components/VvNavItem/VvNavItem.es.js +436 -0
  107. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -0
  108. package/dist/components/VvNavSeparator/VvNavSeparator.es.js +24 -0
  109. package/dist/components/VvNavSeparator/VvNavSeparator.umd.js +1 -0
  110. package/dist/components/VvProgress/VvProgress.es.js +65 -14
  111. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  112. package/dist/components/VvProgress/VvProgress.vue.d.ts +10 -3
  113. package/dist/components/VvProgress/index.d.ts +4 -1
  114. package/dist/components/VvRadio/VvRadio.es.js +89 -21
  115. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  116. package/dist/components/VvRadio/VvRadio.vue.d.ts +102 -30
  117. package/dist/components/VvRadio/index.d.ts +44 -11
  118. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +180 -66
  119. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  120. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +100 -29
  121. package/dist/components/VvRadioGroup/index.d.ts +45 -12
  122. package/dist/components/VvSelect/VvSelect.es.js +248 -226
  123. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  124. package/dist/components/VvSelect/VvSelect.vue.d.ts +112 -39
  125. package/dist/components/VvSelect/index.d.ts +48 -14
  126. package/dist/components/VvTab/VvTab.es.js +256 -110
  127. package/dist/components/VvTab/VvTab.umd.js +1 -1
  128. package/dist/components/VvTab/VvTab.vue.d.ts +50 -13
  129. package/dist/components/VvTab/index.d.ts +13 -4
  130. package/dist/components/VvTextarea/VvTextarea.es.js +229 -212
  131. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  132. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +155 -48
  133. package/dist/components/VvTextarea/index.d.ts +68 -19
  134. package/dist/components/VvTooltip/VvTooltip.es.js +72 -17
  135. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  136. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +10 -3
  137. package/dist/components/VvTooltip/index.d.ts +4 -1
  138. package/dist/components/common/HintSlot.d.ts +1 -1
  139. package/dist/components/index.d.ts +10 -0
  140. package/dist/components/index.es.js +2902 -1329
  141. package/dist/components/index.umd.js +1 -1
  142. package/dist/composables/alert/useAlert.d.ts +37 -4
  143. package/dist/composables/dropdown/useProvideDropdown.d.ts +1 -1
  144. package/dist/composables/index.d.ts +1 -0
  145. package/dist/composables/index.es.js +88 -1
  146. package/dist/composables/index.umd.js +1 -1
  147. package/dist/composables/useBlurhash.d.ts +7 -0
  148. package/dist/composables/useComponentIcon.d.ts +9 -8
  149. package/dist/composables/useVolver.d.ts +1 -1
  150. package/dist/directives/index.d.ts +3 -5
  151. package/dist/directives/index.es.js +92 -31
  152. package/dist/directives/index.umd.js +1 -1
  153. package/dist/directives/v-tooltip.es.js +90 -26
  154. package/dist/directives/v-tooltip.umd.js +1 -1
  155. package/dist/icons.es.js +210 -210
  156. package/dist/icons.umd.js +1 -1
  157. package/dist/index.d.ts +3 -1
  158. package/dist/index.es.js +81 -16
  159. package/dist/index.umd.js +1 -1
  160. package/dist/props/index.d.ts +287 -73
  161. package/dist/resolvers/unplugin.d.ts +6 -1
  162. package/dist/resolvers/unplugin.es.js +78 -10
  163. package/dist/resolvers/unplugin.umd.js +1 -1
  164. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +72 -84
  165. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +623 -461
  166. package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
  167. package/dist/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
  168. package/dist/stories/Combobox/Combobox.settings.d.ts +8 -0
  169. package/dist/stories/Icon/Icon.settings.d.ts +1 -0
  170. package/dist/stories/InputFile/InputFile.settings.d.ts +56 -0
  171. package/dist/stories/InputFile/InputFile.stories.d.ts +12 -0
  172. package/dist/stories/InputFile/InputFileDropArea.stories.d.ts +9 -0
  173. package/dist/stories/InputFile/InputFileIconPosition.stories.d.ts +8 -0
  174. package/dist/stories/InputFile/InputFileSlots.stories.d.ts +7 -0
  175. package/dist/stories/Tab/Tab.settings.d.ts +4 -37
  176. package/dist/types/alert.d.ts +13 -0
  177. package/dist/types/blurhash.d.ts +12 -0
  178. package/dist/types/floating-ui.d.ts +6 -0
  179. package/dist/types/generic.d.ts +4 -0
  180. package/dist/types/group.d.ts +37 -0
  181. package/dist/types/index.d.ts +7 -0
  182. package/dist/types/input-file.d.ts +16 -0
  183. package/dist/types/nav.d.ts +18 -0
  184. package/dist/utils/ObjectUtilities.d.ts +0 -1
  185. package/dist/workers/blurhash.d.ts +1 -0
  186. package/package.json +97 -80
  187. package/src/Volver.ts +31 -20
  188. package/src/assets/icons/detailed.json +1 -1
  189. package/src/assets/icons/normal.json +1 -1
  190. package/src/assets/icons/simple.json +1 -1
  191. package/src/components/VvAccordion/VvAccordion.vue +2 -2
  192. package/src/components/VvAction/VvAction.vue +5 -2
  193. package/src/components/VvAlert/index.ts +1 -3
  194. package/src/components/VvAlertGroup/index.ts +2 -1
  195. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +20 -19
  196. package/src/components/VvBreadcrumb/index.ts +2 -8
  197. package/src/components/VvButton/VvButton.vue +6 -6
  198. package/src/components/VvButton/index.ts +2 -4
  199. package/src/components/VvCombobox/VvCombobox.vue +24 -16
  200. package/src/components/VvCombobox/index.ts +4 -0
  201. package/src/components/VvIcon/VvIcon.vue +2 -2
  202. package/src/components/VvIcon/index.ts +35 -48
  203. package/src/components/VvInputFile/VvInputFile.vue +365 -0
  204. package/src/components/VvInputFile/index.ts +116 -0
  205. package/src/components/VvInputText/VvInputClearAction.ts +10 -6
  206. package/src/components/VvInputText/VvInputPasswordAction.ts +13 -9
  207. package/src/components/VvInputText/VvInputText.vue +17 -18
  208. package/src/components/VvInputText/index.ts +7 -15
  209. package/src/components/VvNav/VvNav.vue +30 -50
  210. package/src/components/VvNav/VvNavItem.vue +18 -0
  211. package/src/components/VvNav/VvNavSeparator.vue +11 -0
  212. package/src/components/VvNav/index.ts +2 -15
  213. package/src/components/VvSelect/VvSelect.vue +5 -8
  214. package/src/components/VvTab/VvTab.vue +63 -35
  215. package/src/components/VvTab/index.ts +10 -4
  216. package/src/components/VvTextarea/VvTextarea.vue +6 -9
  217. package/src/components/index.ts +10 -0
  218. package/src/composables/index.ts +1 -0
  219. package/src/composables/useBlurhash.ts +76 -0
  220. package/src/composables/useComponentIcon.ts +15 -14
  221. package/src/composables/useUniqueId.ts +2 -2
  222. package/src/directives/index.ts +3 -6
  223. package/src/directives/v-tooltip.ts +19 -10
  224. package/src/index.ts +3 -1
  225. package/src/props/index.ts +115 -27
  226. package/src/resolvers/unplugin.ts +24 -14
  227. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +2 -2
  228. package/src/stories/Blurhash/BlurhashComposable.stories.ts +195 -0
  229. package/src/stories/Combobox/Combobox.settings.ts +8 -0
  230. package/src/stories/Icon/Icon.settings.ts +3 -3
  231. package/src/stories/InputFile/InputFile.settings.ts +36 -0
  232. package/src/stories/InputFile/InputFile.stories.ts +89 -0
  233. package/src/stories/InputFile/InputFileDropArea.stories.ts +56 -0
  234. package/src/stories/InputFile/InputFileIconPosition.stories.ts +43 -0
  235. package/src/stories/InputFile/InputFileSlots.stories.ts +33 -0
  236. package/src/stories/Nav/Nav.settings.ts +3 -4
  237. package/src/stories/Nav/Nav.test.ts +4 -15
  238. package/src/stories/Tab/Tab.settings.ts +9 -9
  239. package/src/stories/Tab/Tab.stories.ts +2 -2
  240. package/src/stories/Tab/Tab.test.ts +6 -14
  241. package/src/stories/argTypes.ts +1 -1
  242. package/src/types/blurhash.ts +21 -0
  243. package/src/types/generic.ts +6 -0
  244. package/src/types/index.ts +7 -0
  245. package/src/types/input-file.ts +18 -0
  246. package/src/types/nav.ts +20 -0
  247. package/src/utils/ObjectUtilities.ts +0 -11
  248. package/src/workers/blurhash.ts +9 -0
  249. package/dist/components/VvNav/VvNavItemTitle.vue.d.ts +0 -6
  250. package/dist/components/VvNav/VvNavSeparator.d.ts +0 -2
  251. package/dist/components/VvNavItemTitle/VvNavItemTitle.es.js +0 -19
  252. package/dist/components/VvNavItemTitle/VvNavItemTitle.umd.js +0 -1
  253. package/src/components/VvNav/VvNavItemTitle.vue +0 -11
  254. package/src/components/VvNav/VvNavSeparator.ts +0 -8
  255. package/src/types/generic.d.ts +0 -6
  256. /package/src/types/{alert.d.ts → alert.ts} +0 -0
  257. /package/src/types/{floating-ui.d.ts → floating-ui.ts} +0 -0
  258. /package/src/types/{group.d.ts → group.ts} +0 -0
@@ -1,12 +1,13 @@
1
1
  import type { PropType } from 'vue'
2
- import type { Option } from '../types/generic'
2
+ import type { Option } from '@/types/generic'
3
+ import type { NavItem } from '@/types/nav'
3
4
  import type {
4
5
  AutoPlacementOptions,
5
6
  FlipOptions,
6
7
  OffsetOptions,
7
8
  ShiftOptions,
8
9
  SizeOptions,
9
- } from '../types/floating-ui'
10
+ } from '@/types/floating-ui'
10
11
  import {
11
12
  Placement,
12
13
  Strategy,
@@ -14,7 +15,9 @@ import {
14
15
  Side,
15
16
  AnchorTarget,
16
17
  ButtonType,
17
- } from '../constants'
18
+ ActionTag,
19
+ } from '@/constants'
20
+ import type { VvIconProps } from '@/components/VvIcon'
18
21
 
19
22
  export const LinkProps = {
20
23
  /**
@@ -33,6 +36,7 @@ export const LinkProps = {
33
36
  */
34
37
  target: {
35
38
  type: String as PropType<`${AnchorTarget}`>,
39
+ default: undefined,
36
40
  validator: (value: AnchorTarget) =>
37
41
  Object.values(AnchorTarget).includes(value),
38
42
  },
@@ -49,29 +53,35 @@ export const ValidProps = {
49
53
  /**
50
54
  * Valid status
51
55
  */
52
- valid: Boolean,
56
+ valid: { type: Boolean, default: false },
53
57
  /**
54
58
  * Valid label
55
59
  */
56
- validLabel: [String, Array],
60
+ validLabel: { type: [String, Array], default: undefined },
57
61
  }
58
62
 
59
63
  export const InvalidProps = {
60
64
  /**
61
65
  * Invalid status
62
66
  */
63
- invalid: Boolean,
67
+ invalid: {
68
+ type: Boolean,
69
+ default: false,
70
+ },
64
71
  /**
65
72
  * Invalid label
66
73
  */
67
- invalidLabel: [String, Array],
74
+ invalidLabel: { type: [String, Array], default: undefined },
68
75
  }
69
76
 
70
77
  export const LoadingProps = {
71
78
  /**
72
79
  * Loading status
73
80
  */
74
- loading: Boolean,
81
+ loading: {
82
+ type: Boolean,
83
+ default: false,
84
+ },
75
85
  /**
76
86
  * Loading label
77
87
  */
@@ -85,49 +95,80 @@ export const DisabledProps = {
85
95
  /**
86
96
  * Whether the form control is disabled
87
97
  */
88
- disabled: Boolean,
98
+ disabled: {
99
+ type: Boolean,
100
+ default: false,
101
+ },
89
102
  }
90
103
 
91
104
  export const SelectedProps = {
92
105
  /**
93
106
  * Whether the item is selected
94
107
  */
95
- selected: Boolean,
108
+ selected: {
109
+ type: Boolean,
110
+ default: false,
111
+ },
96
112
  }
97
113
 
98
114
  export const ActiveProps = {
99
115
  /**
100
116
  * Whether the item is active
101
117
  */
102
- active: Boolean,
118
+ active: {
119
+ type: Boolean,
120
+ default: false,
121
+ },
122
+ }
123
+
124
+ export const CurrentProps = {
125
+ /**
126
+ * Whether the item is current
127
+ */
128
+ current: {
129
+ type: Boolean,
130
+ default: false,
131
+ },
103
132
  }
104
133
 
105
134
  export const PressedProps = {
106
135
  /**
107
136
  * Whether the item is pressed
108
137
  */
109
- pressed: Boolean,
138
+ pressed: {
139
+ type: Boolean,
140
+ default: false,
141
+ },
110
142
  }
111
143
 
112
144
  export const LabelProps = {
113
145
  /**
114
146
  * The item label
115
147
  */
116
- label: [String, Number],
148
+ label: {
149
+ type: [String, Number],
150
+ default: undefined,
151
+ },
117
152
  }
118
153
 
119
154
  export const ReadonlyProps = {
120
155
  /**
121
156
  * The value is not editable
122
157
  */
123
- readonly: Boolean,
158
+ readonly: {
159
+ type: Boolean,
160
+ default: false,
161
+ },
124
162
  }
125
163
 
126
164
  export const ModifiersProps = {
127
165
  /**
128
166
  * Component BEM modifiers
129
167
  */
130
- modifiers: [String, Array] as PropType<string | string[]>,
168
+ modifiers: {
169
+ type: [String, Array] as PropType<string | string[]>,
170
+ default: undefined,
171
+ },
131
172
  }
132
173
 
133
174
  export const HintProps = {
@@ -172,7 +213,10 @@ export const DebounceProps = {
172
213
  /**
173
214
  * Milliseconds to wait before emitting the input event
174
215
  */
175
- debounce: [Number, String],
216
+ debounce: {
217
+ type: [Number, String],
218
+ default: undefined,
219
+ },
176
220
  }
177
221
 
178
222
  export const IconProps = {
@@ -180,7 +224,10 @@ export const IconProps = {
180
224
  * VvIcon name or props
181
225
  * @see VVIcon
182
226
  */
183
- icon: { type: [String, Object] },
227
+ icon: {
228
+ type: [String, Object] as PropType<string | VvIconProps>,
229
+ default: undefined,
230
+ },
184
231
  /**
185
232
  * VvIcon position
186
233
  */
@@ -204,7 +251,10 @@ export const FloatingLabelProps = {
204
251
  /**
205
252
  * If true the label will be floating
206
253
  */
207
- floating: Boolean,
254
+ floating: {
255
+ type: Boolean,
256
+ default: false,
257
+ },
208
258
  }
209
259
 
210
260
  export const UnselectableProps = {
@@ -246,6 +296,7 @@ export const DropdownProps = {
246
296
  */
247
297
  transitionName: {
248
298
  type: String,
299
+ default: undefined,
249
300
  },
250
301
  /**
251
302
  * Offset of the dropdown from the trigger
@@ -316,6 +367,7 @@ export const DropdownProps = {
316
367
  */
317
368
  triggerWidth: {
318
369
  type: Boolean,
370
+ default: false,
319
371
  },
320
372
  }
321
373
 
@@ -334,7 +386,10 @@ export const AutofocusProps = {
334
386
  * Global attribute autofocus
335
387
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus
336
388
  */
337
- autofocus: Boolean,
389
+ autofocus: {
390
+ type: Boolean,
391
+ default: false,
392
+ },
338
393
  }
339
394
 
340
395
  export const AutocompleteProps = {
@@ -368,28 +423,34 @@ export const InputTextareaProps = {
368
423
  * Available for input types: text, search, url, tel, email, password
369
424
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#minlength
370
425
  */
371
- minlength: [String, Number],
426
+ minlength: { type: [String, Number], default: undefined },
372
427
  /**
373
428
  * Input / Textarea maxlength
374
429
  * Maximum length (number of characters) of value
375
430
  * Available for input types: text, search, url, tel, email, password
376
431
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#maxlength
377
432
  */
378
- maxlength: [String, Number],
433
+ maxlength: { type: [String, Number], default: undefined },
379
434
  /**
380
435
  * Input / Textarea placeholder
381
436
  * Text that appears in the form control when it has no value set
382
437
  * Available for input types: text, search, url, tel, email, password, number
383
438
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#placeholder
384
439
  */
385
- placeholder: String,
440
+ placeholder: {
441
+ type: String,
442
+ default: undefined,
443
+ },
386
444
  /**
387
445
  * Input / Textarea required
388
446
  * A value is required or must be check for the form to be submittable
389
447
  * Available for all input types except color
390
448
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#required
391
449
  */
392
- required: Boolean,
450
+ required: {
451
+ type: Boolean,
452
+ default: false,
453
+ },
393
454
  }
394
455
 
395
456
  export const CheckboxRadioProps = {
@@ -407,11 +468,17 @@ export const CheckboxRadioProps = {
407
468
  * Input value
408
469
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value
409
470
  */
410
- value: [String, Number, Boolean],
471
+ value: {
472
+ type: [String, Number, Boolean],
473
+ default: undefined,
474
+ },
411
475
  /**
412
476
  * Input value
413
477
  */
414
- modelValue: [Object, Number, Boolean, String],
478
+ modelValue: {
479
+ type: [Object, Number, Boolean, String],
480
+ default: undefined,
481
+ },
415
482
  }
416
483
 
417
484
  export const CheckboxRadioGroupProps = {
@@ -427,7 +494,10 @@ export const CheckboxRadioGroupProps = {
427
494
  /**
428
495
  * Input value
429
496
  */
430
- modelValue: [String, Array, Boolean, Number, Symbol],
497
+ modelValue: {
498
+ type: [String, Array, Boolean, Number, Symbol],
499
+ default: undefined,
500
+ },
431
501
  /**
432
502
  * Input name
433
503
  */
@@ -435,7 +505,10 @@ export const CheckboxRadioGroupProps = {
435
505
  /**
436
506
  * If true, the group will be displayed in a vertical column
437
507
  */
438
- vertical: Boolean,
508
+ vertical: {
509
+ type: Boolean,
510
+ default: false,
511
+ },
439
512
  }
440
513
 
441
514
  export const ActionProps = {
@@ -443,6 +516,7 @@ export const ActionProps = {
443
516
  ...LabelProps,
444
517
  ...PressedProps,
445
518
  ...ActiveProps,
519
+ ...CurrentProps,
446
520
  ...LinkProps,
447
521
  /**
448
522
  * Button type
@@ -460,4 +534,18 @@ export const ActionProps = {
460
534
  type: String,
461
535
  default: undefined,
462
536
  },
537
+ /**
538
+ * Default tag for the action
539
+ */
540
+ defaultTag: {
541
+ type: String,
542
+ default: ActionTag.button,
543
+ },
544
+ }
545
+
546
+ export const NavProps = {
547
+ items: {
548
+ type: Array as PropType<NavItem[]>,
549
+ default: () => [],
550
+ },
463
551
  }
@@ -2,17 +2,7 @@ import type {
2
2
  ComponentResolver,
3
3
  SideEffectsInfo,
4
4
  } from 'unplugin-vue-components/types'
5
-
6
- function kebabCase(str: string, options?: { condense: boolean }) {
7
- if (typeof str !== 'string') throw new TypeError('expected a string')
8
- return str
9
- .trim()
10
- .replace(/([a-z])([A-Z])/g, '$1-$2')
11
- .replace(/\W/g, (m) => (/[À-ž]/.test(m) ? m : '-'))
12
- .replace(/^-+|-+$/g, '')
13
- .replace(/-{2,}/g, (m) => (options?.condense ? '-' : m))
14
- .toLowerCase()
15
- }
5
+ import { kebabCase } from 'change-case'
16
6
 
17
7
  type ImportStyle = boolean | 'css' | 'scss'
18
8
 
@@ -38,11 +28,16 @@ export interface VolverResolverOptions {
38
28
  * @default undefined
39
29
  */
40
30
  ignore?: string[]
31
+ /**
32
+ * cherry pick components from named exports
33
+ * @default undefined
34
+ */
35
+ cherryPick?: boolean
41
36
  }
42
37
 
43
38
  const STYLE_EXCLUDE = ['vv-icon', 'vv-action']
44
39
  const VOLVER_PREFIX = 'vv'
45
- const DIRECTIVES = ['v-tooltip']
40
+ const DIRECTIVES = ['v-tooltip', 'v-contextmenu']
46
41
 
47
42
  export const getStyleNames = function (kebabName: string) {
48
43
  if (STYLE_EXCLUDE.includes(kebabName)) {
@@ -113,6 +108,7 @@ export function VolverResolver({
113
108
  importStyle,
114
109
  directives,
115
110
  ignore,
111
+ cherryPick,
116
112
  }: VolverResolverOptions = {}): ComponentResolver[] {
117
113
  return [
118
114
  {
@@ -134,9 +130,16 @@ export function VolverResolver({
134
130
  }
135
131
 
136
132
  // import component
133
+ if (cherryPick) {
134
+ return {
135
+ from: `@volverjs/ui-vue/${kebabName}`,
136
+ sideEffects: getSideEffects(kebabName, importStyle),
137
+ }
138
+ }
137
139
  return {
138
- from: `@volverjs/ui-vue/${kebabName}`,
140
+ from: '@volverjs/ui-vue/components',
139
141
  sideEffects: getSideEffects(kebabName, importStyle),
142
+ name,
140
143
  }
141
144
  },
142
145
  },
@@ -159,9 +162,16 @@ export function VolverResolver({
159
162
  }
160
163
 
161
164
  // import directive
165
+ if (cherryPick) {
166
+ return {
167
+ from: `@volverjs/ui-vue/${kebabName}`,
168
+ sideEffects: getSideEffects(kebabName, importStyle),
169
+ }
170
+ }
162
171
  return {
163
- from: `@volverjs/ui-vue/${kebabName}`,
172
+ from: '@volverjs/ui-vue/directives',
164
173
  sideEffects: getSideEffects(kebabName, importStyle),
174
+ name: `v${name}`,
165
175
  }
166
176
  },
167
177
  },
@@ -6,7 +6,7 @@ import { Default as DefaultStory, type Story } from './AlertGroup.stories'
6
6
  import { useAlert } from '@/composables/alert/useAlert'
7
7
 
8
8
  const meta: Meta<typeof VvAlertGroup> = {
9
- title: 'Components/AlertGroup/UseComposable',
9
+ title: 'Composables/useAlert',
10
10
  component: VvAlertGroup,
11
11
  args: defaultArgs,
12
12
  argTypes,
@@ -15,7 +15,7 @@ const meta: Meta<typeof VvAlertGroup> = {
15
15
 
16
16
  export default meta
17
17
 
18
- export const UseComposable: Story = {
18
+ export const Default: Story = {
19
19
  ...DefaultStory,
20
20
  parameters: {
21
21
  docs: {
@@ -0,0 +1,195 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import { ref } from 'vue'
3
+ import VvInputFile from '@/components/VvInputFile/VvInputFile.vue'
4
+ import { useBlurhash } from '@/composables/useBlurhash'
5
+
6
+ const meta: Meta = {
7
+ title: 'Composables/useBlurhash',
8
+ tags: ['autodocs'],
9
+ }
10
+
11
+ export default meta
12
+
13
+ export const Default: StoryObj = {
14
+ render: (args) => ({
15
+ components: { VvInputFile },
16
+ setup() {
17
+ const isLoading = ref(false)
18
+ const { encode, decode, loadImage } = useBlurhash()
19
+ const file = ref({})
20
+ const canvas = ref()
21
+ const isImgLoaded = ref(false)
22
+ const blurhash = ref('')
23
+ const imageUrl = ref('')
24
+ const image = ref()
25
+
26
+ return {
27
+ args,
28
+ isLoading,
29
+ canvas,
30
+ encode,
31
+ decode,
32
+ file,
33
+ blurhash,
34
+ isImgLoaded,
35
+ loadImage,
36
+ image,
37
+ imageUrl,
38
+ }
39
+ },
40
+ watch: {
41
+ file: {
42
+ immediate: true,
43
+ async handler(newValue) {
44
+ if (newValue?.size) {
45
+ this.imageUrl = URL.createObjectURL(newValue)
46
+ this.image = await this.loadImage(this.imageUrl)
47
+ this.blurhash = await this.encode(newValue)
48
+ } else {
49
+ this.image = null
50
+ this.imageUrl = ''
51
+ this.blurhash = ''
52
+ }
53
+ },
54
+ },
55
+ blurhash: {
56
+ async handler(newValue) {
57
+ if (this.image) {
58
+ const blurhashDecoded = await this.decode(
59
+ newValue,
60
+ this.image.width,
61
+ this.image.height,
62
+ )
63
+
64
+ if (this.canvas) {
65
+ this.canvas.width = this.image.width
66
+ this.canvas.height = this.image.height
67
+ const ctx = this.canvas.getContext('2d')
68
+ const imageData = ctx.createImageData(
69
+ this.canvas.width,
70
+ this.canvas.height,
71
+ )
72
+ imageData.data.set(blurhashDecoded)
73
+ ctx.putImageData(imageData, 0, 0)
74
+ }
75
+ }
76
+ },
77
+ },
78
+ },
79
+ template: /* html */ `
80
+ <div class="w-full grid gap-md grid-cols-3 h-150" :class="{ 'vv-skeleton': isLoading }">
81
+ <div class="w-150 h-150 col-span-1">
82
+ <div class="text-20 font-semibold mb-md">Upload image</div>
83
+ <vv-input-file v-model="file" name="input-file" modifiers="drop-area square hidden" accept=".gif,.jpg,.jpeg,.png,image/gif,image/jpeg,image/png" />
84
+ </div>
85
+ <div v-show="blurhash" class="h-150 col-span-2">
86
+ <picture class="flex gap-md justify-center">
87
+ <div>
88
+ <div class="text-20 font-semibold mb-md">Blurhash</div>
89
+ <canvas
90
+ ref="canvas"
91
+ class="w-150 h-150 block object-cover" />
92
+ </div>
93
+ <div>
94
+ <div class="text-20 font-semibold mb-md">Image</div>
95
+ <img
96
+ v-if="image"
97
+ class="w-150 h-150 block object-cover"
98
+ :class="{ 'vv-skeleton__item': isLoading }"
99
+ :src="imageUrl"
100
+ alt="image"
101
+ :width="image.width"
102
+ :height="image.height" />
103
+ </div>
104
+ </picture>
105
+ </div>
106
+ </div>
107
+ `,
108
+ }),
109
+
110
+ parameters: {
111
+ docs: {
112
+ source: {
113
+ type: 'code',
114
+ language: 'html',
115
+ code: /* html */ `
116
+ <div class="w-full grid gap-md grid-cols-3 h-150" :class="{ 'vv-skeleton': isLoading }">
117
+ <div class="w-150 h-150 col-span-1">
118
+ <div class="text-20 font-semibold mb-md">Upload image</div>
119
+ <vv-input-file v-model="file" name="input-file" modifiers="drop-area square hidden" accept=".gif,.jpg,.jpeg,.png,image/gif,image/jpeg,image/png" />
120
+ </div>
121
+ <div v-show="blurhash" class="h-150 col-span-2">
122
+ <picture class="flex gap-md justify-center">
123
+ <div>
124
+ <div class="text-20 font-semibold mb-md">Blurhash</div>
125
+ <canvas
126
+ ref="canvas"
127
+ class="w-150 h-150 block object-cover" />
128
+ </div>
129
+ <div>
130
+ <div class="text-20 font-semibold mb-md">Image</div>
131
+ <img
132
+ v-if="image"
133
+ class="w-150 h-150 block object-cover"
134
+ :class="{ 'vv-skeleton__item': isLoading }"
135
+ :src="imageUrl"
136
+ alt="image"
137
+ :width="image.width"
138
+ :height="image.height" />
139
+ </div>
140
+ </picture>
141
+ </div>
142
+ </div>
143
+
144
+ <script setup lang='ts'>
145
+ import { useBlurhash } from '@volverjs/ui-vue/composables'
146
+
147
+ const { encode, decode, loadImage } = useBlurhash()
148
+
149
+ const isLoading = ref(false)
150
+ const file = ref({})
151
+ const canvas = ref()
152
+ const isImgLoaded = ref(false)
153
+ const blurhash = ref('')
154
+ const imageUrl = ref('')
155
+ const image = ref()
156
+
157
+ watch(file, async (newValue) => {
158
+ if (newValue?.size) {
159
+ this.imageUrl = URL.createObjectURL(newValue)
160
+ this.image = await this.loadImage(this.imageUrl)
161
+ this.blurhash = await this.encode(newValue)
162
+ } else {
163
+ this.image = null
164
+ this.imageUrl = ''
165
+ this.blurhash = ''
166
+ }
167
+ }, { immediate: true })
168
+
169
+ watch(blurhash, async (newValue) => {
170
+ if (this.image) {
171
+ const blurhashDecoded = await this.decode(
172
+ newValue,
173
+ this.image.width,
174
+ this.image.height,
175
+ )
176
+
177
+ if (this.canvas) {
178
+ this.canvas.width = this.image.width
179
+ this.canvas.height = this.image.height
180
+ const ctx = this.canvas.getContext('2d')
181
+ const imageData = ctx.createImageData(
182
+ this.canvas.width,
183
+ this.canvas.height,
184
+ )
185
+ imageData.data.set(blurhashDecoded)
186
+ ctx.putImageData(imageData, 0, 0)
187
+ }
188
+ }
189
+ })
190
+ </script>
191
+ `,
192
+ },
193
+ },
194
+ },
195
+ }
@@ -392,4 +392,12 @@ export const argTypes = {
392
392
  },
393
393
  },
394
394
  },
395
+ 'update:search': {
396
+ table: {
397
+ category: 'Events',
398
+ type: {
399
+ summary: 'string',
400
+ },
401
+ },
402
+ },
395
403
  }
@@ -1,11 +1,11 @@
1
- import { VvIconProps } from '@/components/VvIcon'
1
+ import { VvIconPropsDefaults } from '@/components/VvIcon'
2
2
  import normal from '@/assets/icons/normal.json'
3
3
  import { ModifiersArgTypes } from '@/stories/argTypes'
4
4
 
5
5
  export const defaultArgs = {
6
- ...propsToObject(VvIconProps),
6
+ ...VvIconPropsDefaults,
7
7
  name: 'add-circle',
8
- width: 48
8
+ width: 48,
9
9
  }
10
10
 
11
11
  export const argTypes = {
@@ -0,0 +1,36 @@
1
+ import { HintArgTypes, ModifiersArgTypes } from '@/stories/argTypes'
2
+ import { VvInputFileProps } from '@/components/VvInputFile'
3
+
4
+ export const defaultArgs = {
5
+ ...propsToObject(VvInputFileProps),
6
+ name: 'vv-input-file',
7
+ label: 'Upload file',
8
+ }
9
+
10
+ export const argTypes = {
11
+ ...HintArgTypes,
12
+ modifiers: {
13
+ ...ModifiersArgTypes.modifiers,
14
+ options: ['hidden', 'square', 'circle'],
15
+ },
16
+ 'drop-area': {
17
+ description: 'Drop area slot',
18
+ control: {
19
+ type: 'text',
20
+ },
21
+ table: {
22
+ category: 'Slots',
23
+ type: {
24
+ summary: 'html',
25
+ },
26
+ },
27
+ },
28
+ 'update:model-value': {
29
+ table: {
30
+ category: 'Events',
31
+ type: {
32
+ summary: 'File | File[]',
33
+ },
34
+ },
35
+ },
36
+ }