@bitrix24/b24ui-nuxt 0.5.11 → 0.6.0

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 (199) hide show
  1. package/.nuxt/b24ui/input-menu.ts +2 -2
  2. package/.nuxt/b24ui/select-menu.ts +4 -4
  3. package/.nuxt/b24ui/select.ts +2 -2
  4. package/dist/meta.d.mts +5208 -5061
  5. package/dist/meta.mjs +5208 -5061
  6. package/dist/module.json +3 -3
  7. package/dist/module.mjs +2 -2
  8. package/dist/runtime/components/Advice.vue +27 -54
  9. package/dist/runtime/components/Advice.vue.d.ts +170 -0
  10. package/dist/runtime/components/Alert.vue +35 -96
  11. package/dist/runtime/components/Alert.vue.d.ts +464 -0
  12. package/dist/runtime/components/App.vue +24 -34
  13. package/dist/runtime/components/App.vue.d.ts +23 -0
  14. package/dist/runtime/components/Avatar.vue +43 -81
  15. package/dist/runtime/components/Avatar.vue.d.ts +281 -0
  16. package/dist/runtime/components/AvatarGroup.vue +40 -76
  17. package/dist/runtime/components/AvatarGroup.vue.d.ts +204 -0
  18. package/dist/runtime/components/Badge.vue +40 -83
  19. package/dist/runtime/components/Badge.vue.d.ts +517 -0
  20. package/dist/runtime/components/Button.vue +96 -155
  21. package/dist/runtime/components/Button.vue.d.ts +640 -0
  22. package/dist/runtime/components/ButtonGroup.vue +19 -51
  23. package/dist/runtime/components/ButtonGroup.vue.d.ts +116 -0
  24. package/dist/runtime/components/Calendar.vue +73 -152
  25. package/dist/runtime/components/Calendar.vue.d.ts +437 -0
  26. package/dist/runtime/components/Checkbox.vue +42 -73
  27. package/dist/runtime/components/Checkbox.vue.d.ts +354 -0
  28. package/dist/runtime/components/Chip.vue +26 -74
  29. package/dist/runtime/components/Chip.vue.d.ts +271 -0
  30. package/dist/runtime/components/Collapsible.vue +22 -41
  31. package/dist/runtime/components/Collapsible.vue.d.ts +118 -0
  32. package/dist/runtime/components/Container.vue +13 -27
  33. package/dist/runtime/components/Container.vue.d.ts +27 -0
  34. package/dist/runtime/components/Countdown.vue +153 -378
  35. package/dist/runtime/components/Countdown.vue.d.ts +356 -0
  36. package/dist/runtime/components/DescriptionList.vue +78 -149
  37. package/dist/runtime/components/DescriptionList.vue.d.ts +379 -0
  38. package/dist/runtime/components/DropdownMenu.vue +38 -139
  39. package/dist/runtime/components/DropdownMenu.vue.d.ts +533 -0
  40. package/dist/runtime/components/DropdownMenuContent.vue +68 -80
  41. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +228 -0
  42. package/dist/runtime/components/Form.vue +130 -217
  43. package/dist/runtime/components/Form.vue.d.ts +55 -0
  44. package/dist/runtime/components/FormField.vue +36 -80
  45. package/dist/runtime/components/FormField.vue.d.ts +282 -0
  46. package/dist/runtime/components/Input.vue +79 -179
  47. package/dist/runtime/components/Input.vue.d.ts +755 -0
  48. package/dist/runtime/components/InputMenu.vue +185 -381
  49. package/dist/runtime/components/InputMenu.vue.d.ts +1523 -0
  50. package/dist/runtime/components/InputNumber.vue +77 -175
  51. package/dist/runtime/components/InputNumber.vue.d.ts +658 -0
  52. package/dist/runtime/components/Kbd.vue +18 -45
  53. package/dist/runtime/components/Kbd.vue.d.ts +109 -0
  54. package/dist/runtime/components/Link.vue +92 -173
  55. package/dist/runtime/components/Link.vue.d.ts +129 -0
  56. package/dist/runtime/components/LinkBase.vue +33 -42
  57. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  58. package/dist/runtime/components/Modal.vue +48 -127
  59. package/dist/runtime/components/Modal.vue.d.ts +327 -0
  60. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  61. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  62. package/dist/runtime/components/Navbar.vue +15 -33
  63. package/dist/runtime/components/Navbar.vue.d.ts +101 -0
  64. package/dist/runtime/components/NavbarDivider.vue +15 -33
  65. package/dist/runtime/components/NavbarDivider.vue.d.ts +101 -0
  66. package/dist/runtime/components/NavbarSection.vue +15 -33
  67. package/dist/runtime/components/NavbarSection.vue.d.ts +101 -0
  68. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  69. package/dist/runtime/components/NavbarSpacer.vue.d.ts +101 -0
  70. package/dist/runtime/components/NavigationMenu.vue +74 -208
  71. package/dist/runtime/components/NavigationMenu.vue.d.ts +824 -0
  72. package/dist/runtime/components/OverlayProvider.vue +14 -18
  73. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  74. package/dist/runtime/components/Popover.vue +40 -81
  75. package/dist/runtime/components/Popover.vue.d.ts +147 -0
  76. package/dist/runtime/components/Progress.vue +70 -136
  77. package/dist/runtime/components/Progress.vue.d.ts +592 -0
  78. package/dist/runtime/components/RadioGroup.vue +59 -134
  79. package/dist/runtime/components/RadioGroup.vue.d.ts +723 -0
  80. package/dist/runtime/components/Range.vue +46 -85
  81. package/dist/runtime/components/Range.vue.d.ts +417 -0
  82. package/dist/runtime/components/Select.vue +110 -260
  83. package/dist/runtime/components/Select.vue.d.ts +1201 -0
  84. package/dist/runtime/components/SelectMenu.vue +161 -347
  85. package/dist/runtime/components/SelectMenu.vue.d.ts +1298 -0
  86. package/dist/runtime/components/Separator.vue +28 -71
  87. package/dist/runtime/components/Separator.vue.d.ts +400 -0
  88. package/dist/runtime/components/Sidebar.vue +15 -33
  89. package/dist/runtime/components/Sidebar.vue.d.ts +101 -0
  90. package/dist/runtime/components/SidebarBody.vue +17 -38
  91. package/dist/runtime/components/SidebarBody.vue.d.ts +90 -0
  92. package/dist/runtime/components/SidebarFooter.vue +15 -33
  93. package/dist/runtime/components/SidebarFooter.vue.d.ts +101 -0
  94. package/dist/runtime/components/SidebarHeader.vue +15 -33
  95. package/dist/runtime/components/SidebarHeader.vue.d.ts +101 -0
  96. package/dist/runtime/components/SidebarHeading.vue +15 -33
  97. package/dist/runtime/components/SidebarHeading.vue.d.ts +101 -0
  98. package/dist/runtime/components/SidebarLayout.vue +34 -70
  99. package/dist/runtime/components/SidebarLayout.vue.d.ts +222 -0
  100. package/dist/runtime/components/SidebarSection.vue +15 -33
  101. package/dist/runtime/components/SidebarSection.vue.d.ts +101 -0
  102. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  103. package/dist/runtime/components/SidebarSpacer.vue.d.ts +101 -0
  104. package/dist/runtime/components/Skeleton.vue +12 -22
  105. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  106. package/dist/runtime/components/Slideover.vue +50 -131
  107. package/dist/runtime/components/Slideover.vue.d.ts +360 -0
  108. package/dist/runtime/components/StackedLayout.vue +34 -73
  109. package/dist/runtime/components/StackedLayout.vue.d.ts +192 -0
  110. package/dist/runtime/components/Switch.vue +46 -95
  111. package/dist/runtime/components/Switch.vue.d.ts +587 -0
  112. package/dist/runtime/components/Tabs.vue +37 -105
  113. package/dist/runtime/components/Tabs.vue.d.ts +453 -0
  114. package/dist/runtime/components/Textarea.vue +92 -201
  115. package/dist/runtime/components/Textarea.vue.d.ts +601 -0
  116. package/dist/runtime/components/Toast.vue +47 -105
  117. package/dist/runtime/components/Toast.vue.d.ts +438 -0
  118. package/dist/runtime/components/Toaster.vue +70 -115
  119. package/dist/runtime/components/Toaster.vue.d.ts +219 -0
  120. package/dist/runtime/components/Tooltip.vue +36 -64
  121. package/dist/runtime/components/Tooltip.vue.d.ts +186 -0
  122. package/dist/runtime/components/content/TableWrapper.vue +24 -70
  123. package/dist/runtime/components/content/TableWrapper.vue.d.ts +237 -0
  124. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  125. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  126. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  127. package/dist/runtime/composables/useFormField.d.ts +2 -2
  128. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  129. package/dist/runtime/composables/useOverlay.js +14 -6
  130. package/dist/runtime/prose/A.vue +12 -23
  131. package/dist/runtime/prose/A.vue.d.ts +84 -0
  132. package/dist/runtime/prose/Blockquote.vue +12 -23
  133. package/dist/runtime/prose/Blockquote.vue.d.ts +84 -0
  134. package/dist/runtime/prose/Code.vue +14 -31
  135. package/dist/runtime/prose/Code.vue.d.ts +97 -0
  136. package/dist/runtime/prose/Em.vue +12 -23
  137. package/dist/runtime/prose/Em.vue.d.ts +84 -0
  138. package/dist/runtime/prose/H1.vue +12 -23
  139. package/dist/runtime/prose/H1.vue.d.ts +97 -0
  140. package/dist/runtime/prose/H2.vue +12 -23
  141. package/dist/runtime/prose/H2.vue.d.ts +123 -0
  142. package/dist/runtime/prose/H3.vue +12 -23
  143. package/dist/runtime/prose/H3.vue.d.ts +123 -0
  144. package/dist/runtime/prose/H4.vue +12 -23
  145. package/dist/runtime/prose/H4.vue.d.ts +123 -0
  146. package/dist/runtime/prose/H5.vue +12 -23
  147. package/dist/runtime/prose/H5.vue.d.ts +123 -0
  148. package/dist/runtime/prose/H6.vue +12 -23
  149. package/dist/runtime/prose/H6.vue.d.ts +123 -0
  150. package/dist/runtime/prose/Hr.vue +12 -19
  151. package/dist/runtime/prose/Hr.vue.d.ts +74 -0
  152. package/dist/runtime/prose/Img.vue +12 -23
  153. package/dist/runtime/prose/Img.vue.d.ts +77 -0
  154. package/dist/runtime/prose/Li.vue +12 -23
  155. package/dist/runtime/prose/Li.vue.d.ts +84 -0
  156. package/dist/runtime/prose/Ol.vue +12 -23
  157. package/dist/runtime/prose/Ol.vue.d.ts +84 -0
  158. package/dist/runtime/prose/P.vue +12 -23
  159. package/dist/runtime/prose/P.vue.d.ts +84 -0
  160. package/dist/runtime/prose/Pre.vue +16 -33
  161. package/dist/runtime/prose/Pre.vue.d.ts +117 -0
  162. package/dist/runtime/prose/Strong.vue +12 -23
  163. package/dist/runtime/prose/Strong.vue.d.ts +84 -0
  164. package/dist/runtime/prose/Table.vue +19 -54
  165. package/dist/runtime/prose/Table.vue.d.ts +144 -0
  166. package/dist/runtime/prose/Tbody.vue +12 -23
  167. package/dist/runtime/prose/Tbody.vue.d.ts +84 -0
  168. package/dist/runtime/prose/Td.vue +12 -23
  169. package/dist/runtime/prose/Td.vue.d.ts +84 -0
  170. package/dist/runtime/prose/Th.vue +12 -23
  171. package/dist/runtime/prose/Th.vue.d.ts +84 -0
  172. package/dist/runtime/prose/Thead.vue +12 -23
  173. package/dist/runtime/prose/Thead.vue.d.ts +84 -0
  174. package/dist/runtime/prose/Tr.vue +12 -23
  175. package/dist/runtime/prose/Tr.vue.d.ts +84 -0
  176. package/dist/runtime/prose/Ul.vue +12 -23
  177. package/dist/runtime/prose/Ul.vue.d.ts +84 -0
  178. package/dist/runtime/utils/link.d.ts +3 -3
  179. package/dist/runtime/vue/components/Link.vue +115 -202
  180. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  181. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.BA6Y2FnC.mjs} +6 -6
  182. package/dist/types.d.mts +3 -5
  183. package/dist/unplugin.mjs +1 -1
  184. package/dist/vite.mjs +1 -1
  185. package/package.json +14 -22
  186. package/dist/meta.cjs +0 -72112
  187. package/dist/meta.d.cts +0 -72110
  188. package/dist/meta.d.ts +0 -72110
  189. package/dist/module.cjs +0 -63
  190. package/dist/module.d.cts +0 -15
  191. package/dist/module.d.ts +0 -15
  192. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  193. package/dist/types.d.ts +0 -7
  194. package/dist/unplugin.cjs +0 -236
  195. package/dist/unplugin.d.cts +0 -33
  196. package/dist/unplugin.d.ts +0 -33
  197. package/dist/vite.cjs +0 -21
  198. package/dist/vite.d.cts +0 -14
  199. package/dist/vite.d.ts +0 -14
@@ -0,0 +1,282 @@
1
+ import type { VariantProps } from 'tailwind-variants';
2
+ declare const formField: import("tailwind-variants").TVReturnType<{
3
+ useDescription: {
4
+ true: {
5
+ wrapper: string;
6
+ };
7
+ false: {
8
+ wrapper: string;
9
+ };
10
+ };
11
+ size: {
12
+ xs: {
13
+ root: string;
14
+ errorIcon: string;
15
+ };
16
+ sm: {
17
+ root: string;
18
+ errorIcon: string;
19
+ };
20
+ md: {
21
+ root: string;
22
+ errorIcon: string;
23
+ };
24
+ lg: {
25
+ root: string;
26
+ };
27
+ };
28
+ required: {
29
+ true: {
30
+ label: string;
31
+ };
32
+ };
33
+ }, {
34
+ root: string;
35
+ wrapper: string;
36
+ labelWrapper: string;
37
+ label: string;
38
+ hint: string;
39
+ container: string;
40
+ description: string;
41
+ error: string;
42
+ errorIcon: string;
43
+ help: string;
44
+ }, undefined, {
45
+ useDescription: {
46
+ true: {
47
+ wrapper: string;
48
+ };
49
+ false: {
50
+ wrapper: string;
51
+ };
52
+ };
53
+ size: {
54
+ xs: {
55
+ root: string;
56
+ errorIcon: string;
57
+ };
58
+ sm: {
59
+ root: string;
60
+ errorIcon: string;
61
+ };
62
+ md: {
63
+ root: string;
64
+ errorIcon: string;
65
+ };
66
+ lg: {
67
+ root: string;
68
+ };
69
+ };
70
+ required: {
71
+ true: {
72
+ label: string;
73
+ };
74
+ };
75
+ }, {
76
+ root: string;
77
+ wrapper: string;
78
+ labelWrapper: string;
79
+ label: string;
80
+ hint: string;
81
+ container: string;
82
+ description: string;
83
+ error: string;
84
+ errorIcon: string;
85
+ help: string;
86
+ }, import("tailwind-variants").TVReturnType<{
87
+ useDescription: {
88
+ true: {
89
+ wrapper: string;
90
+ };
91
+ false: {
92
+ wrapper: string;
93
+ };
94
+ };
95
+ size: {
96
+ xs: {
97
+ root: string;
98
+ errorIcon: string;
99
+ };
100
+ sm: {
101
+ root: string;
102
+ errorIcon: string;
103
+ };
104
+ md: {
105
+ root: string;
106
+ errorIcon: string;
107
+ };
108
+ lg: {
109
+ root: string;
110
+ };
111
+ };
112
+ required: {
113
+ true: {
114
+ label: string;
115
+ };
116
+ };
117
+ }, {
118
+ root: string;
119
+ wrapper: string;
120
+ labelWrapper: string;
121
+ label: string;
122
+ hint: string;
123
+ container: string;
124
+ description: string;
125
+ error: string;
126
+ errorIcon: string;
127
+ help: string;
128
+ }, undefined, {
129
+ useDescription: {
130
+ true: {
131
+ wrapper: string;
132
+ };
133
+ false: {
134
+ wrapper: string;
135
+ };
136
+ };
137
+ size: {
138
+ xs: {
139
+ root: string;
140
+ errorIcon: string;
141
+ };
142
+ sm: {
143
+ root: string;
144
+ errorIcon: string;
145
+ };
146
+ md: {
147
+ root: string;
148
+ errorIcon: string;
149
+ };
150
+ lg: {
151
+ root: string;
152
+ };
153
+ };
154
+ required: {
155
+ true: {
156
+ label: string;
157
+ };
158
+ };
159
+ }, {
160
+ root: string;
161
+ wrapper: string;
162
+ labelWrapper: string;
163
+ label: string;
164
+ hint: string;
165
+ container: string;
166
+ description: string;
167
+ error: string;
168
+ errorIcon: string;
169
+ help: string;
170
+ }, import("tailwind-variants").TVReturnType<{
171
+ useDescription: {
172
+ true: {
173
+ wrapper: string;
174
+ };
175
+ false: {
176
+ wrapper: string;
177
+ };
178
+ };
179
+ size: {
180
+ xs: {
181
+ root: string;
182
+ errorIcon: string;
183
+ };
184
+ sm: {
185
+ root: string;
186
+ errorIcon: string;
187
+ };
188
+ md: {
189
+ root: string;
190
+ errorIcon: string;
191
+ };
192
+ lg: {
193
+ root: string;
194
+ };
195
+ };
196
+ required: {
197
+ true: {
198
+ label: string;
199
+ };
200
+ };
201
+ }, {
202
+ root: string;
203
+ wrapper: string;
204
+ labelWrapper: string;
205
+ label: string;
206
+ hint: string;
207
+ container: string;
208
+ description: string;
209
+ error: string;
210
+ errorIcon: string;
211
+ help: string;
212
+ }, undefined, unknown, unknown, undefined>>>;
213
+ type FormFieldVariants = VariantProps<typeof formField>;
214
+ export interface FormFieldProps {
215
+ /**
216
+ * The element or component this component should render as.
217
+ * @defaultValue 'div'
218
+ */
219
+ as?: any;
220
+ /** The name of the FormField. Also used to match form errors. */
221
+ name?: string;
222
+ /** A regular expression to match form error names. */
223
+ errorPattern?: RegExp;
224
+ label?: string;
225
+ description?: string;
226
+ help?: string;
227
+ error?: string | boolean;
228
+ hint?: string;
229
+ /**
230
+ * @defaultValue 'md'
231
+ */
232
+ size?: FormFieldVariants['size'];
233
+ /**
234
+ * @defaultValue false
235
+ */
236
+ required?: boolean;
237
+ /** If true, validation on input will be active immediately instead of waiting for a blur event. */
238
+ eagerValidation?: boolean;
239
+ /**
240
+ * Delay in milliseconds before validating the form on input events.
241
+ * @defaultValue `300`
242
+ */
243
+ validateOnInputDelay?: number;
244
+ class?: any;
245
+ b24ui?: Partial<typeof formField.slots>;
246
+ }
247
+ export interface FormFieldSlots {
248
+ label(props: {
249
+ label?: string;
250
+ }): any;
251
+ hint(props: {
252
+ hint?: string;
253
+ }): any;
254
+ description(props: {
255
+ description?: string;
256
+ }): any;
257
+ help(props: {
258
+ help?: string;
259
+ }): any;
260
+ error(props: {
261
+ error?: string | boolean;
262
+ }): any;
263
+ default(props: {
264
+ error?: string | boolean;
265
+ }): any;
266
+ }
267
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<FormFieldProps>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<FormFieldProps>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<FormFieldSlots> & FormFieldSlots>;
268
+ export default _default;
269
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
270
+ type __VLS_TypePropsToOption<T> = {
271
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
272
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
273
+ } : {
274
+ type: import('vue').PropType<T[K]>;
275
+ required: true;
276
+ };
277
+ };
278
+ type __VLS_WithTemplateSlots<T, S> = T & {
279
+ new (): {
280
+ $slots: S;
281
+ };
282
+ };
@@ -1,144 +1,60 @@
1
- <script lang="ts">
2
- import type { InputHTMLAttributes } from 'vue'
3
- import type { VariantProps } from 'tailwind-variants'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/b24ui/input'
7
- import type { UseComponentIconsProps } from '../composables/useComponentIcons'
8
- import { tv } from '../utils/tv'
9
- import type { AvatarProps } from '../types'
10
- import type { PartialString } from '../types/utils'
11
-
12
- const appConfigInput = _appConfig as AppConfig & { b24ui: { input: Partial<typeof theme> } }
13
-
14
- const input = tv({ extend: tv(theme), ...(appConfigInput.b24ui?.input || {}) })
15
-
16
- type InputVariants = VariantProps<typeof input>
17
-
18
- export interface InputProps extends UseComponentIconsProps {
19
- /**
20
- * The element or component this component should render as.
21
- * @defaultValue 'div'
22
- */
23
- as?: any
24
- id?: string
25
- name?: string
26
- /**
27
- * @defaultValue 'text'
28
- */
29
- type?: InputHTMLAttributes['type']
30
- /**
31
- * The placeholder text when the input is empty.
32
- */
33
- placeholder?: string
34
- /**
35
- * @defaultValue 'primary'
36
- */
37
- color?: InputVariants['color']
38
- /**
39
- * @defaultValue 'md'
40
- */
41
- size?: InputVariants['size']
42
- /**
43
- * Removes padding from input
44
- * @defaultValue false
45
- */
46
- noPadding?: boolean
47
- /**
48
- * Removes all borders (rings)
49
- * @defaultValue false
50
- */
51
- noBorder?: boolean
52
- /**
53
- * Removes all borders (rings) except the bottom one
54
- * @defaultValue false
55
- */
56
- underline?: boolean
57
- /**
58
- * Rounds the corners of the button
59
- * @defaultValue false
60
- */
61
- rounded?: boolean
62
- /**
63
- * @defaultValue false
64
- */
65
- required?: boolean
66
- /**
67
- * @defaultValue 'off'
68
- */
69
- autocomplete?: InputHTMLAttributes['autocomplete']
70
- /**
71
- * @defaultValue false
72
- */
73
- autofocus?: boolean
74
- /**
75
- * @defaultValue 0
76
- */
77
- autofocusDelay?: number
78
- /**
79
- * @defaultValue false
80
- */
81
- disabled?: boolean
82
- tag?: string
83
- /**
84
- * @defaultValue 'primary'
85
- */
86
- tagColor?: InputVariants['tagColor']
87
- /**
88
- * Highlight the ring color like a focus state
89
- * @defaultValue false
90
- */
91
- highlight?: boolean
92
- class?: any
93
- b24ui?: PartialString<typeof input.slots>
94
- }
95
-
96
- export interface InputEmits {
97
- (e: 'update:modelValue', payload: string | number): void
98
- (e: 'blur', event: FocusEvent): void
99
- (e: 'change', event: Event): void
100
- }
101
-
102
- export interface InputSlots {
103
- leading(props?: {}): any
104
- default(props?: {}): any
105
- trailing(props?: {}): any
106
- }
1
+ <script>
2
+ import _appConfig from "#build/app.config";
3
+ import theme from "#build/b24ui/input";
4
+ import { tv } from "../utils/tv";
5
+ const appConfigInput = _appConfig;
6
+ const input = tv({ extend: tv(theme), ...appConfigInput.b24ui?.input || {} });
107
7
  </script>
108
8
 
109
- <script setup lang="ts">
110
- import { ref, computed, onMounted } from 'vue'
111
- import { Primitive } from 'reka-ui'
112
- import { useButtonGroup } from '../composables/useButtonGroup'
113
- import { useComponentIcons } from '../composables/useComponentIcons'
114
- import { useFormField } from '../composables/useFormField'
115
- import { looseToNumber } from '../utils'
116
- import B24Avatar from './Avatar.vue'
117
-
118
- defineOptions({ inheritAttrs: false })
119
-
120
- const props = withDefaults(defineProps<InputProps>(), {
121
- type: 'text',
122
- autocomplete: 'off',
123
- autofocusDelay: 0
124
- })
125
- const emits = defineEmits<InputEmits>()
126
- const slots = defineSlots<InputSlots>()
127
-
128
- const [modelValue, modelModifiers] = defineModel<string | number | null>()
129
-
130
- const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, emitFormFocus, ariaAttrs } = useFormField<InputProps>(props, { deferInputValidation: true })
131
- const { orientation, size: buttonGroupSize } = useButtonGroup<InputProps>(props)
132
- const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
133
-
134
- const inputSize = computed(() => buttonGroupSize.value || formGroupSize.value)
135
-
9
+ <script setup>
10
+ import { ref, computed, onMounted } from "vue";
11
+ import { Primitive } from "reka-ui";
12
+ import { useButtonGroup } from "../composables/useButtonGroup";
13
+ import { useComponentIcons } from "../composables/useComponentIcons";
14
+ import { useFormField } from "../composables/useFormField";
15
+ import { looseToNumber } from "../utils";
16
+ import B24Avatar from "./Avatar.vue";
17
+ defineOptions({ inheritAttrs: false });
18
+ const props = defineProps({
19
+ as: { type: null, required: false },
20
+ id: { type: String, required: false },
21
+ name: { type: String, required: false },
22
+ type: { type: null, required: false, default: "text" },
23
+ placeholder: { type: String, required: false },
24
+ color: { type: null, required: false },
25
+ size: { type: null, required: false },
26
+ noPadding: { type: Boolean, required: false },
27
+ noBorder: { type: Boolean, required: false },
28
+ underline: { type: Boolean, required: false },
29
+ rounded: { type: Boolean, required: false },
30
+ required: { type: Boolean, required: false },
31
+ autocomplete: { type: null, required: false, default: "off" },
32
+ autofocus: { type: Boolean, required: false },
33
+ autofocusDelay: { type: Number, required: false, default: 0 },
34
+ disabled: { type: Boolean, required: false },
35
+ tag: { type: String, required: false },
36
+ tagColor: { type: null, required: false },
37
+ highlight: { type: Boolean, required: false },
38
+ class: { type: null, required: false },
39
+ b24ui: { type: null, required: false },
40
+ icon: { type: [Function, Object], required: false },
41
+ avatar: { type: Object, required: false },
42
+ loading: { type: Boolean, required: false },
43
+ trailing: { type: Boolean, required: false },
44
+ trailingIcon: { type: [Function, Object], required: false }
45
+ });
46
+ const emits = defineEmits(["update:modelValue", "blur", "change"]);
47
+ const slots = defineSlots();
48
+ const [modelValue, modelModifiers] = defineModel({ type: [String, Number, null] });
49
+ const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, emitFormFocus, ariaAttrs } = useFormField(props, { deferInputValidation: true });
50
+ const { orientation, size: buttonGroupSize } = useButtonGroup(props);
51
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
52
+ const inputSize = computed(() => buttonGroupSize.value || formGroupSize.value);
136
53
  const isTag = computed(() => {
137
- return props.tag
138
- })
139
-
54
+ return props.tag;
55
+ });
140
56
  const b24ui = computed(() => input({
141
- type: props.type as InputVariants['type'],
57
+ type: props.type,
142
58
  color: color.value,
143
59
  size: inputSize?.value,
144
60
  loading: props.loading,
@@ -151,70 +67,54 @@ const b24ui = computed(() => input({
151
67
  leading: Boolean(isLeading.value || !!props.avatar || !!slots.leading),
152
68
  trailing: Boolean(isTrailing.value || !!slots.trailing),
153
69
  buttonGroup: orientation.value
154
- }))
155
-
156
- const inputRef = ref<HTMLInputElement | null>(null)
157
-
158
- // Custom function to handle the v-model properties
159
- function updateInput(value: string | null) {
70
+ }));
71
+ const inputRef = ref(null);
72
+ function updateInput(value) {
160
73
  if (modelModifiers.trim) {
161
- value = value?.trim() ?? null
74
+ value = value?.trim() ?? null;
162
75
  }
163
-
164
- if (modelModifiers.number || props.type === 'number') {
165
- value = looseToNumber(value)
76
+ if (modelModifiers.number || props.type === "number") {
77
+ value = looseToNumber(value);
166
78
  }
167
-
168
79
  if (modelModifiers.nullify) {
169
- value ||= null
80
+ value ||= null;
170
81
  }
171
-
172
- modelValue.value = value
173
- emitFormInput()
82
+ modelValue.value = value;
83
+ emitFormInput();
174
84
  }
175
-
176
- function onInput(event: Event) {
85
+ function onInput(event) {
177
86
  if (!modelModifiers.lazy) {
178
- updateInput((event.target as HTMLInputElement).value)
87
+ updateInput(event.target.value);
179
88
  }
180
89
  }
181
-
182
- function onChange(event: Event) {
183
- const value = (event.target as HTMLInputElement).value
184
-
90
+ function onChange(event) {
91
+ const value = event.target.value;
185
92
  if (modelModifiers.lazy) {
186
- updateInput(value)
93
+ updateInput(value);
187
94
  }
188
-
189
- // Update trimmed input so that it has same behavior as native input https://github.com/vuejs/core/blob/5ea8a8a4fab4e19a71e123e4d27d051f5e927172/packages/runtime-dom/src/directives/vModel.ts#L63
190
95
  if (modelModifiers.trim) {
191
- (event.target as HTMLInputElement).value = value.trim()
96
+ event.target.value = value.trim();
192
97
  }
193
-
194
- emitFormChange()
195
- emits('change', event)
98
+ emitFormChange();
99
+ emits("change", event);
196
100
  }
197
-
198
- function onBlur(event: FocusEvent) {
199
- emitFormBlur()
200
- emits('blur', event)
101
+ function onBlur(event) {
102
+ emitFormBlur();
103
+ emits("blur", event);
201
104
  }
202
-
203
105
  function autoFocus() {
204
106
  if (props.autofocus) {
205
- inputRef.value?.focus()
107
+ inputRef.value?.focus();
206
108
  }
207
109
  }
208
-
209
110
  onMounted(() => {
210
111
  setTimeout(() => {
211
- autoFocus()
212
- }, props.autofocusDelay)
213
- })
214
-
112
+ autoFocus();
113
+ }, props.autofocusDelay);
114
+ });
215
115
  defineExpose({
216
116
  inputRef
217
- })
117
+ });
218
118
  </script>
219
119
 
220
120
  <template>
@@ -252,7 +152,7 @@ defineExpose({
252
152
  />
253
153
  <B24Avatar
254
154
  v-else-if="!!avatar"
255
- :size="((props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()) as AvatarProps['size'])"
155
+ :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
256
156
  v-bind="avatar"
257
157
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
258
158
  />