@bitrix24/b24ui-nuxt 0.5.8 → 0.5.10

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 (197) hide show
  1. package/.nuxt/b24ui/navigation-menu.ts +0 -2
  2. package/.nuxt/b24ui/popover.ts +1 -1
  3. package/.nuxt/b24ui/textarea.ts +43 -0
  4. package/dist/meta.d.mts +5090 -4900
  5. package/dist/meta.mjs +5090 -4900
  6. package/dist/module.json +5 -5
  7. package/dist/module.mjs +11 -7
  8. package/dist/runtime/components/Advice.vue +47 -54
  9. package/dist/runtime/components/Advice.vue.d.ts +170 -0
  10. package/dist/runtime/components/Alert.vue +71 -96
  11. package/dist/runtime/components/Alert.vue.d.ts +464 -0
  12. package/dist/runtime/components/App.vue +37 -34
  13. package/dist/runtime/components/App.vue.d.ts +23 -0
  14. package/dist/runtime/components/Avatar.vue +69 -81
  15. package/dist/runtime/components/Avatar.vue.d.ts +281 -0
  16. package/dist/runtime/components/AvatarGroup.vue +53 -76
  17. package/dist/runtime/components/AvatarGroup.vue.d.ts +204 -0
  18. package/dist/runtime/components/Badge.vue +83 -83
  19. package/dist/runtime/components/Badge.vue.d.ts +517 -0
  20. package/dist/runtime/components/Button.vue +219 -149
  21. package/dist/runtime/components/Button.vue.d.ts +640 -0
  22. package/dist/runtime/components/ButtonGroup.vue +35 -51
  23. package/dist/runtime/components/ButtonGroup.vue.d.ts +116 -0
  24. package/dist/runtime/components/Calendar.vue +186 -152
  25. package/dist/runtime/components/Calendar.vue.d.ts +437 -0
  26. package/dist/runtime/components/Checkbox.vue +84 -73
  27. package/dist/runtime/components/Checkbox.vue.d.ts +354 -0
  28. package/dist/runtime/components/Chip.vue +59 -74
  29. package/dist/runtime/components/Chip.vue.d.ts +271 -0
  30. package/dist/runtime/components/Collapsible.vue +44 -41
  31. package/dist/runtime/components/Collapsible.vue.d.ts +118 -0
  32. package/dist/runtime/components/Container.vue +18 -27
  33. package/dist/runtime/components/Container.vue.d.ts +27 -0
  34. package/dist/runtime/components/Countdown.vue +198 -378
  35. package/dist/runtime/components/Countdown.vue.d.ts +356 -0
  36. package/dist/runtime/components/DescriptionList.vue +102 -149
  37. package/dist/runtime/components/DescriptionList.vue.d.ts +379 -0
  38. package/dist/runtime/components/DropdownMenu.vue +83 -139
  39. package/dist/runtime/components/DropdownMenu.vue.d.ts +533 -0
  40. package/dist/runtime/components/DropdownMenuContent.vue +137 -81
  41. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +228 -0
  42. package/dist/runtime/components/Form.vue +162 -216
  43. package/dist/runtime/components/Form.vue.d.ts +55 -0
  44. package/dist/runtime/components/FormField.vue +76 -80
  45. package/dist/runtime/components/FormField.vue.d.ts +282 -0
  46. package/dist/runtime/components/Input.vue +166 -185
  47. package/dist/runtime/components/Input.vue.d.ts +755 -0
  48. package/dist/runtime/components/InputMenu.vue +300 -381
  49. package/dist/runtime/components/InputMenu.vue.d.ts +1504 -0
  50. package/dist/runtime/components/InputNumber.vue +180 -177
  51. package/dist/runtime/components/InputNumber.vue.d.ts +658 -0
  52. package/dist/runtime/components/Kbd.vue +33 -45
  53. package/dist/runtime/components/Kbd.vue.d.ts +109 -0
  54. package/dist/runtime/components/Link.vue +179 -173
  55. package/dist/runtime/components/Link.vue.d.ts +129 -0
  56. package/dist/runtime/components/LinkBase.vue +64 -42
  57. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  58. package/dist/runtime/components/Modal.vue +105 -127
  59. package/dist/runtime/components/Modal.vue.d.ts +327 -0
  60. package/dist/runtime/components/ModalDialogClose.vue +4 -8
  61. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  62. package/dist/runtime/components/Navbar.vue +24 -33
  63. package/dist/runtime/components/Navbar.vue.d.ts +101 -0
  64. package/dist/runtime/components/NavbarDivider.vue +24 -33
  65. package/dist/runtime/components/NavbarDivider.vue.d.ts +101 -0
  66. package/dist/runtime/components/NavbarSection.vue +24 -33
  67. package/dist/runtime/components/NavbarSection.vue.d.ts +101 -0
  68. package/dist/runtime/components/NavbarSpacer.vue +24 -33
  69. package/dist/runtime/components/NavbarSpacer.vue.d.ts +101 -0
  70. package/dist/runtime/components/NavigationMenu.vue +152 -216
  71. package/dist/runtime/components/NavigationMenu.vue.d.ts +824 -0
  72. package/dist/runtime/components/OverlayProvider.vue +13 -17
  73. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  74. package/dist/runtime/components/Popover.vue +81 -81
  75. package/dist/runtime/components/Popover.vue.d.ts +147 -0
  76. package/dist/runtime/components/Progress.vue +109 -136
  77. package/dist/runtime/components/Progress.vue.d.ts +592 -0
  78. package/dist/runtime/components/RadioGroup.vue +120 -134
  79. package/dist/runtime/components/RadioGroup.vue.d.ts +723 -0
  80. package/dist/runtime/components/Range.vue +94 -85
  81. package/dist/runtime/components/Range.vue.d.ts +417 -0
  82. package/dist/runtime/components/Select.vue +212 -260
  83. package/dist/runtime/components/Select.vue.d.ts +1200 -0
  84. package/dist/runtime/components/SelectMenu.vue +272 -366
  85. package/dist/runtime/components/SelectMenu.vue.d.ts +1298 -0
  86. package/dist/runtime/components/Separator.vue +61 -71
  87. package/dist/runtime/components/Separator.vue.d.ts +400 -0
  88. package/dist/runtime/components/Sidebar.vue +24 -33
  89. package/dist/runtime/components/Sidebar.vue.d.ts +101 -0
  90. package/dist/runtime/components/SidebarBody.vue +30 -38
  91. package/dist/runtime/components/SidebarBody.vue.d.ts +90 -0
  92. package/dist/runtime/components/SidebarFooter.vue +24 -33
  93. package/dist/runtime/components/SidebarFooter.vue.d.ts +101 -0
  94. package/dist/runtime/components/SidebarHeader.vue +24 -33
  95. package/dist/runtime/components/SidebarHeader.vue.d.ts +101 -0
  96. package/dist/runtime/components/SidebarHeading.vue +24 -33
  97. package/dist/runtime/components/SidebarHeading.vue.d.ts +101 -0
  98. package/dist/runtime/components/SidebarLayout.vue +40 -70
  99. package/dist/runtime/components/SidebarLayout.vue.d.ts +222 -0
  100. package/dist/runtime/components/SidebarSection.vue +24 -33
  101. package/dist/runtime/components/SidebarSection.vue.d.ts +101 -0
  102. package/dist/runtime/components/SidebarSpacer.vue +24 -33
  103. package/dist/runtime/components/SidebarSpacer.vue.d.ts +101 -0
  104. package/dist/runtime/components/Skeleton.vue +17 -22
  105. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  106. package/dist/runtime/components/Slideover.vue +108 -131
  107. package/dist/runtime/components/Slideover.vue.d.ts +360 -0
  108. package/dist/runtime/components/StackedLayout.vue +40 -73
  109. package/dist/runtime/components/StackedLayout.vue.d.ts +192 -0
  110. package/dist/runtime/components/Switch.vue +100 -95
  111. package/dist/runtime/components/Switch.vue.d.ts +587 -0
  112. package/dist/runtime/components/Tabs.vue +83 -105
  113. package/dist/runtime/components/Tabs.vue.d.ts +453 -0
  114. package/dist/runtime/components/Textarea.vue +215 -203
  115. package/dist/runtime/components/Textarea.vue.d.ts +601 -0
  116. package/dist/runtime/components/Toast.vue +94 -105
  117. package/dist/runtime/components/Toast.vue.d.ts +438 -0
  118. package/dist/runtime/components/Toaster.vue +94 -111
  119. package/dist/runtime/components/Toaster.vue.d.ts +219 -0
  120. package/dist/runtime/components/Tooltip.vue +78 -64
  121. package/dist/runtime/components/Tooltip.vue.d.ts +186 -0
  122. package/dist/runtime/components/content/TableWrapper.vue +58 -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 +1 -1
  128. package/dist/runtime/prose/A.vue +18 -23
  129. package/dist/runtime/prose/A.vue.d.ts +84 -0
  130. package/dist/runtime/prose/Blockquote.vue +18 -23
  131. package/dist/runtime/prose/Blockquote.vue.d.ts +84 -0
  132. package/dist/runtime/prose/Code.vue +23 -31
  133. package/dist/runtime/prose/Code.vue.d.ts +97 -0
  134. package/dist/runtime/prose/Em.vue +18 -23
  135. package/dist/runtime/prose/Em.vue.d.ts +84 -0
  136. package/dist/runtime/prose/H1.vue +18 -23
  137. package/dist/runtime/prose/H1.vue.d.ts +97 -0
  138. package/dist/runtime/prose/H2.vue +18 -23
  139. package/dist/runtime/prose/H2.vue.d.ts +123 -0
  140. package/dist/runtime/prose/H3.vue +18 -23
  141. package/dist/runtime/prose/H3.vue.d.ts +123 -0
  142. package/dist/runtime/prose/H4.vue +18 -23
  143. package/dist/runtime/prose/H4.vue.d.ts +123 -0
  144. package/dist/runtime/prose/H5.vue +18 -23
  145. package/dist/runtime/prose/H5.vue.d.ts +123 -0
  146. package/dist/runtime/prose/H6.vue +18 -23
  147. package/dist/runtime/prose/H6.vue.d.ts +123 -0
  148. package/dist/runtime/prose/Hr.vue +18 -19
  149. package/dist/runtime/prose/Hr.vue.d.ts +74 -0
  150. package/dist/runtime/prose/Img.vue +18 -23
  151. package/dist/runtime/prose/Img.vue.d.ts +77 -0
  152. package/dist/runtime/prose/Li.vue +18 -23
  153. package/dist/runtime/prose/Li.vue.d.ts +84 -0
  154. package/dist/runtime/prose/Ol.vue +18 -23
  155. package/dist/runtime/prose/Ol.vue.d.ts +84 -0
  156. package/dist/runtime/prose/P.vue +18 -23
  157. package/dist/runtime/prose/P.vue.d.ts +84 -0
  158. package/dist/runtime/prose/Pre.vue +28 -33
  159. package/dist/runtime/prose/Pre.vue.d.ts +117 -0
  160. package/dist/runtime/prose/Strong.vue +18 -23
  161. package/dist/runtime/prose/Strong.vue.d.ts +84 -0
  162. package/dist/runtime/prose/Table.vue +44 -54
  163. package/dist/runtime/prose/Table.vue.d.ts +144 -0
  164. package/dist/runtime/prose/Tbody.vue +18 -23
  165. package/dist/runtime/prose/Tbody.vue.d.ts +84 -0
  166. package/dist/runtime/prose/Td.vue +18 -23
  167. package/dist/runtime/prose/Td.vue.d.ts +84 -0
  168. package/dist/runtime/prose/Th.vue +18 -23
  169. package/dist/runtime/prose/Th.vue.d.ts +84 -0
  170. package/dist/runtime/prose/Thead.vue +18 -23
  171. package/dist/runtime/prose/Thead.vue.d.ts +84 -0
  172. package/dist/runtime/prose/Tr.vue +18 -23
  173. package/dist/runtime/prose/Tr.vue.d.ts +84 -0
  174. package/dist/runtime/prose/Ul.vue +18 -23
  175. package/dist/runtime/prose/Ul.vue.d.ts +84 -0
  176. package/dist/runtime/vue/components/Link.vue +201 -202
  177. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  178. package/dist/runtime/vue/stubs.d.ts +2 -2
  179. package/dist/shared/{b24ui-nuxt.DBFS6LH7.mjs → b24ui-nuxt.CS9Lf0os.mjs} +54 -4
  180. package/dist/types.d.mts +3 -5
  181. package/dist/unplugin.mjs +1 -1
  182. package/dist/vite.mjs +1 -1
  183. package/package.json +62 -35
  184. package/dist/meta.cjs +0 -71922
  185. package/dist/meta.d.cts +0 -71920
  186. package/dist/meta.d.ts +0 -71920
  187. package/dist/module.cjs +0 -59
  188. package/dist/module.d.cts +0 -15
  189. package/dist/module.d.ts +0 -15
  190. package/dist/shared/b24ui-nuxt.B9fPD5yO.cjs +0 -7671
  191. package/dist/types.d.ts +0 -7
  192. package/dist/unplugin.cjs +0 -236
  193. package/dist/unplugin.d.cts +0 -33
  194. package/dist/unplugin.d.ts +0 -33
  195. package/dist/vite.cjs +0 -21
  196. package/dist/vite.d.cts +0 -14
  197. package/dist/vite.d.ts +0 -14
@@ -1,240 +1,226 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/b24ui/textarea'
6
- import { tv } from '../utils/tv'
7
- import type { PartialString } from '../types/utils'
8
-
9
- const appConfigTextarea = _appConfig as AppConfig & { b24ui: { textarea: Partial<typeof theme> } }
10
-
11
- const textarea = tv({ extend: tv(theme), ...(appConfigTextarea.b24ui?.textarea || {}) })
12
-
13
- type TextareaVariants = VariantProps<typeof textarea>
14
-
15
- export interface TextareaProps {
16
- /**
17
- * The element or component this component should render as.
18
- * @defaultValue 'div'
19
- */
20
- as?: any
21
- id?: string
22
- name?: string
23
- /**
24
- * The placeholder text when the textarea is empty
25
- */
26
- placeholder?: string
27
- /**
28
- * @defaultValue 'primary'
29
- */
30
- color?: TextareaVariants['color']
31
- /**
32
- * Removes padding from input
33
- * @defaultValue false
34
- */
35
- noPadding?: boolean
36
- /**
37
- * Removes all borders (rings)
38
- * @defaultValue false
39
- */
40
- noBorder?: boolean
41
- /**
42
- * Removes all borders (rings) except the bottom one
43
- * @defaultValue false
44
- */
45
- underline?: boolean
46
- /**
47
- * Rounds the corners of the button
48
- * @defaultValue false
49
- */
50
- rounded?: boolean
51
- /**
52
- * @defaultValue false
53
- */
54
- required?: boolean
55
- /**
56
- * @defaultValue false
57
- */
58
- autofocus?: boolean
59
- /**
60
- * @defaultValue 0
61
- */
62
- autofocusDelay?: number
63
- /**
64
- * @defaultValue false
65
- */
66
- disabled?: boolean
67
- /**
68
- * @defaultValue 3
69
- */
70
- rows?: number
71
- /**
72
- * @defaultValue 5
73
- */
74
- maxrows?: number
75
- /**
76
- * @defaultValue false
77
- */
78
- autoresize?: boolean
79
- tag?: string
80
- /**
81
- * @defaultValue 'primary'
82
- */
83
- tagColor?: TextareaVariants['tagColor']
84
- /**
85
- * Highlight the ring color like a focus state
86
- * @defaultValue false
87
- */
88
- highlight?: boolean
89
- class?: any
90
- b24ui?: PartialString<typeof textarea.slots>
91
- }
92
-
93
- export interface TextareaEmits {
94
- (e: 'update:modelValue', payload: string | number): void
95
- (e: 'blur', event: FocusEvent): void
96
- (e: 'change', event: Event): void
97
- }
98
-
99
- export interface TextareaSlots {
100
- default(props?: {}): any
101
- }
1
+ <script>
2
+ import _appConfig from "#build/app.config";
3
+ import theme from "#build/b24ui/textarea";
4
+ import { tv } from "../utils/tv";
5
+ const appConfigTextarea = _appConfig;
6
+ const textarea = tv({ extend: tv(theme), ...appConfigTextarea.b24ui?.textarea || {} });
102
7
  </script>
103
8
 
104
- <script setup lang="ts">
105
- import { ref, computed, onMounted, nextTick, watch } from 'vue'
106
- import { Primitive } from 'reka-ui'
107
- import { useFormField } from '../composables/useFormField'
108
- import { looseToNumber } from '../utils'
109
-
110
- defineOptions({ inheritAttrs: false })
111
-
112
- const props = withDefaults(defineProps<TextareaProps>(), {
113
- rows: 3,
114
- maxrows: 5,
115
- autofocusDelay: 0
116
- })
117
- defineSlots<TextareaSlots>()
118
- const emits = defineEmits<TextareaEmits>()
119
-
120
- const [modelValue, modelModifiers] = defineModel<string | number | null>()
121
-
122
- const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, color, id, name, highlight, disabled, ariaAttrs } = useFormField<TextareaProps>(props, { deferInputValidation: true })
123
-
9
+ <script setup>
10
+ import { ref, computed, onMounted, nextTick, watch } from "vue";
11
+ import { useComponentIcons } from "../composables/useComponentIcons";
12
+ import { useFormField } from "../composables/useFormField";
13
+ import { looseToNumber } from "../utils";
14
+ defineOptions({ inheritAttrs: false });
15
+ const props = defineProps({
16
+ as: {
17
+ type: null,
18
+ required: false
19
+ },
20
+ id: {
21
+ type: String,
22
+ required: false
23
+ },
24
+ name: {
25
+ type: String,
26
+ required: false
27
+ },
28
+ placeholder: {
29
+ type: String,
30
+ required: false
31
+ },
32
+ color: {
33
+ type: null,
34
+ required: false
35
+ },
36
+ noPadding: {
37
+ type: Boolean,
38
+ required: false
39
+ },
40
+ noBorder: {
41
+ type: Boolean,
42
+ required: false
43
+ },
44
+ underline: {
45
+ type: Boolean,
46
+ required: false
47
+ },
48
+ rounded: {
49
+ type: Boolean,
50
+ required: false
51
+ },
52
+ required: {
53
+ type: Boolean,
54
+ required: false
55
+ },
56
+ autofocus: {
57
+ type: Boolean,
58
+ required: false
59
+ },
60
+ autofocusDelay: {
61
+ type: Number,
62
+ required: false,
63
+ default: 0
64
+ },
65
+ autoresize: {
66
+ type: Boolean,
67
+ required: false
68
+ },
69
+ autoresizeDelay: {
70
+ type: Number,
71
+ required: false,
72
+ default: 0
73
+ },
74
+ disabled: {
75
+ type: Boolean,
76
+ required: false
77
+ },
78
+ rows: {
79
+ type: Number,
80
+ required: false,
81
+ default: 3
82
+ },
83
+ maxrows: {
84
+ type: Number,
85
+ required: false,
86
+ default: 5
87
+ },
88
+ tag: {
89
+ type: String,
90
+ required: false
91
+ },
92
+ tagColor: {
93
+ type: null,
94
+ required: false
95
+ },
96
+ highlight: {
97
+ type: Boolean,
98
+ required: false
99
+ },
100
+ class: {
101
+ type: null,
102
+ required: false
103
+ },
104
+ b24ui: {
105
+ type: null,
106
+ required: false
107
+ },
108
+ icon: {
109
+ type: [Function, Object],
110
+ required: false
111
+ },
112
+ avatar: {
113
+ type: Object,
114
+ required: false
115
+ },
116
+ loading: {
117
+ type: Boolean,
118
+ required: false
119
+ },
120
+ trailing: {
121
+ type: Boolean,
122
+ required: false
123
+ },
124
+ trailingIcon: {
125
+ type: [Function, Object],
126
+ required: false
127
+ }
128
+ });
129
+ const slots = defineSlots();
130
+ const emits = defineEmits(["update:modelValue", "blur", "change"]);
131
+ const [modelValue, modelModifiers] = defineModel({
132
+ "type": [String, Number, null]
133
+ });
134
+ const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props, { deferInputValidation: true });
135
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
124
136
  const isTag = computed(() => {
125
- return props.tag
126
- })
127
-
137
+ return props.tag;
138
+ });
128
139
  const b24ui = computed(() => textarea({
129
140
  color: color.value,
141
+ loading: props.loading,
130
142
  highlight: highlight.value,
143
+ autoresize: Boolean(props.autoresize),
131
144
  tagColor: props.tagColor,
132
145
  rounded: Boolean(props.rounded),
133
146
  noPadding: Boolean(props.noPadding),
134
147
  noBorder: Boolean(props.noBorder),
135
- underline: Boolean(props.underline)
136
- }))
137
-
138
- const textareaRef = ref<HTMLTextAreaElement | null>(null)
139
-
140
- function autoFocus() {
141
- if (props.autofocus) {
142
- textareaRef.value?.focus()
143
- }
144
- }
145
-
146
- // Custom function to handle the v-model properties
147
- function updateInput(value: string | null) {
148
+ underline: Boolean(props.underline),
149
+ leading: Boolean(isLeading.value || !!props.avatar || !!slots.leading),
150
+ trailing: Boolean(isTrailing.value || !!slots.trailing)
151
+ }));
152
+ const textareaRef = ref(null);
153
+ function updateInput(value) {
148
154
  if (modelModifiers.trim) {
149
- value = value?.trim() ?? null
155
+ value = value?.trim() ?? null;
150
156
  }
151
-
152
157
  if (modelModifiers.number) {
153
- value = looseToNumber(value)
158
+ value = looseToNumber(value);
154
159
  }
155
-
156
160
  if (modelModifiers.nullify) {
157
- value ||= null
161
+ value ||= null;
158
162
  }
159
-
160
- modelValue.value = value
161
- emitFormInput()
163
+ modelValue.value = value;
164
+ emitFormInput();
162
165
  }
163
-
164
- function onInput(event: Event) {
165
- autoResize()
166
-
166
+ function onInput(event) {
167
+ autoResize();
167
168
  if (!modelModifiers.lazy) {
168
- updateInput((event.target as HTMLInputElement).value)
169
+ updateInput(event.target.value);
169
170
  }
170
171
  }
171
-
172
- function onChange(event: Event) {
173
- const value = (event.target as HTMLInputElement).value
174
-
172
+ function onChange(event) {
173
+ const value = event.target.value;
175
174
  if (modelModifiers.lazy) {
176
- updateInput(value)
175
+ updateInput(value);
177
176
  }
178
-
179
- // Update trimmed textarea so that it has same behavior as native textarea https://github.com/vuejs/core/blob/5ea8a8a4fab4e19a71e123e4d27d051f5e927172/packages/runtime-dom/src/directives/vModel.ts#L63
180
177
  if (modelModifiers.trim) {
181
- (event.target as HTMLInputElement).value = value.trim()
178
+ event.target.value = value.trim();
182
179
  }
183
-
184
- emitFormChange()
185
- emits('change', event)
180
+ emitFormChange();
181
+ emits("change", event);
186
182
  }
187
-
188
- function onBlur(event: FocusEvent) {
189
- emitFormBlur()
190
- emits('blur', event)
183
+ function onBlur(event) {
184
+ emitFormBlur();
185
+ emits("blur", event);
186
+ }
187
+ function autoFocus() {
188
+ if (props.autofocus) {
189
+ textareaRef.value?.focus();
190
+ }
191
191
  }
192
-
193
- onMounted(() => {
194
- setTimeout(() => {
195
- autoFocus()
196
- }, props.autofocusDelay)
197
- })
198
-
199
192
  function autoResize() {
200
- if (props.autoresize) {
201
- if (!textareaRef.value) {
202
- return
203
- }
204
-
205
- textareaRef.value.rows = props.rows
206
- const overflow = textareaRef.value.style.overflow
207
- textareaRef.value.style.overflow = 'hidden'
208
-
209
- const styles = window.getComputedStyle(textareaRef.value)
210
- const paddingTop = Number.parseInt(styles.paddingTop)
211
- const paddingBottom = Number.parseInt(styles.paddingBottom)
212
- const padding = paddingTop + paddingBottom
213
- const lineHeight = Number.parseInt(styles.lineHeight)
214
- const { scrollHeight } = textareaRef.value
215
- const newRows = (scrollHeight - padding) / lineHeight
216
-
193
+ if (props.autoresize && textareaRef.value) {
194
+ textareaRef.value.rows = props.rows;
195
+ const overflow = textareaRef.value.style.overflow;
196
+ textareaRef.value.style.overflow = "hidden";
197
+ const styles = window.getComputedStyle(textareaRef.value);
198
+ const paddingTop = Number.parseInt(styles.paddingTop);
199
+ const paddingBottom = Number.parseInt(styles.paddingBottom);
200
+ const padding = paddingTop + paddingBottom;
201
+ const lineHeight = Number.parseInt(styles.lineHeight);
202
+ const { scrollHeight } = textareaRef.value;
203
+ const newRows = (scrollHeight - padding) / lineHeight;
217
204
  if (newRows > props.rows) {
218
- textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows
205
+ textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows;
219
206
  }
220
-
221
- textareaRef.value.style.overflow = overflow
207
+ textareaRef.value.style.overflow = overflow;
222
208
  }
223
209
  }
224
-
225
210
  watch(modelValue, () => {
226
- nextTick(autoResize)
227
- })
228
-
229
- defineExpose({
230
- textareaRef
231
- })
232
-
211
+ nextTick(autoResize);
212
+ });
233
213
  onMounted(() => {
234
214
  setTimeout(() => {
235
- autoResize()
236
- }, 100)
237
- })
215
+ autoFocus();
216
+ }, props.autofocusDelay);
217
+ setTimeout(() => {
218
+ autoResize();
219
+ }, props.autoresizeDelay);
220
+ });
221
+ defineExpose({
222
+ textareaRef
223
+ });
238
224
  </script>
239
225
 
240
226
  <template>
@@ -261,5 +247,31 @@ onMounted(() => {
261
247
  />
262
248
 
263
249
  <slot />
250
+
251
+ <span v-if="isLeading || !!avatar || !!slots.leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
252
+ <slot name="leading">
253
+ <Component
254
+ :is="leadingIconName"
255
+ v-if="isLeading && leadingIconName"
256
+ :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
257
+ />
258
+ <B24Avatar
259
+ v-else-if="!!avatar"
260
+ :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
261
+ v-bind="avatar"
262
+ :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
263
+ />
264
+ </slot>
265
+ </span>
266
+
267
+ <span v-if="isTrailing || !!slots.trailing" :class="b24ui.trailing({ class: props.b24ui?.trailing })">
268
+ <slot name="trailing">
269
+ <Component
270
+ :is="trailingIconName"
271
+ v-if="trailingIconName"
272
+ :class="b24ui.trailingIcon({ class: props.b24ui?.trailingIcon })"
273
+ />
274
+ </slot>
275
+ </span>
264
276
  </Primitive>
265
277
  </template>