Skip to content

Chat Input ​

Avtomatik o'lchamini o'zgartiruvchi textarea, amallar paneli, yuborish tugmasi va ixtiyoriy biriktirish/emoji/ovoz amallari bilan Telegram uslubidagi suhbat pastki paneli.

Basic ​

Xabarni yozing va yuborish uchun Enter ni bosing (yangi qator uchun Shift+Enter). Amallar panelini ochish uchun qog'oz qisqichini bosing.

vue
<script setup>
import { ref } from 'vue'
const msg = ref('')
</script>

<VxChatInput v-model="msg" @send="handleSend" />

Actions Panel ​

Telegram uslubidagi amallar panelini ko'rsatish uchun qog'oz qisqichi belgisini bosing. Belgi faol bo'lganda 45 daraja aylanadi. Standart amallar: Photo, File, Location, Contact, Poll.

vue
<script setup>
function onAction(key, item) {
  console.log('Action:', key, item)
}
</script>

<VxChatInput @action="onAction" />

Custom Actions ​

O'zingizning amal elementlari massivingizni uzating.

vue
<VxChatInput
  :actions="[
    { key: 'camera', label: 'Camera', color: '#E91E63' },
    { key: 'gif', label: 'GIF', color: '#FF9800' },
    { key: 'sticker', label: 'Sticker', color: '#9C27B0' },
  ]"
  @action="onAction"
/>

Disable Actions Panel ​

Qog'oz qisqichi tugmasi panelni ochish o'rniga attach event ni chiqarishi uchun :actions="false" ni uzating.

vue
<VxChatInput :actions="false" @attach="openFilePicker" />

Variants ​

Uchta vizual uslub: default, outline va ghost.

Default
Outline
Ghost
vue
<VxChatInput variant="default" />
<VxChatInput variant="outline" />
<VxChatInput variant="ghost" />

Voice Button ​

show-voice bilan kiritish bo'sh bo'lganda mikrofon tugmasini ko'rsating. Matn kiritilganda mikrofon aylantirish animatsiyasi bilan yuborish tugmasiga aylanadi.

vue
<VxChatInput show-voice @voice="startRecording" />

Reply Preview ​

Kiritish ustida javob oldindan ko'rinishini ko'rsatish uchun reply-to obyektini uzating. Animatsiya bilan sirpanib chiqadi/kiradi.

AliceHey, did you finish the design?
vue
<script setup>
import { ref } from 'vue'

const replyTo = ref({ name: 'Alice', content: 'Hey, did you finish the design?' })
</script>

<VxChatInput
  :reply-to="replyTo"
  @cancel-reply="replyTo = null"
/>

Disabled ​

vue
<VxChatInput disabled />

Custom Actions (Slots) ​

Standart amal tugmalarini butunlay almashtirish uchun prepend va append slotlaridan foydalaning.

vue
<VxChatInput>
  <template #prepend>
    <button @click="openCamera">📷</button>
  </template>
  <template #append>
    <button @click="openGif">GIF</button>
  </template>
</VxChatInput>

API ​

Props ​

PropTypeDefaultDescription
model-valuestring''v-model matn qiymati
placeholderstring'Type a message...'Placeholder matni
variant'default' | 'outline' | 'ghost''default'Vizual uslub
disabledbooleanfalseKiritishni o'chirish
show-attachbooleantrueBiriktirish/amallar tugmasini ko'rsatish
show-emojibooleantrueEmoji tugmasini ko'rsatish
show-voicebooleanfalseOvoz/mikrofon tugmasini ko'rsatish (kiritish bo'sh bo'lganda)
max-rowsnumber5Avtomatik o'sishning maksimal qatorlari
reply-to{ name?: string; content?: string } | nullnullJavob oldindan ko'rinishi
actionsChatInputAction[] | falsedefault 5 itemsAmallar paneli elementlari. Panelni o'chirish uchun false ni uzating

Events ​

EventPayloadDescription
update:modelValuestringv-model yangilanishi
sendstringEnter yoki yuborish tugmasi bosilganda chiqariladi (kesilgan matn)
attach—Biriktirish tugmasi bosildi (faqat actions false bo'lganda)
emoji—Emoji tugmasi bosildi
voice—Ovoz tugmasi bosildi
cancel-reply—Javobni yopish tugmasi bosildi
actionkey, itemAmallar paneli elementi bosildi

Slots ​

SlotDescription
prependChap amal tugmalarini almashtiring (standart: biriktirish)
appendO'ng amal tugmalarini almashtiring (standart: emoji)

Exposed ​

MethodDescription
focus()Textarea ni dasturiy ravishda fokuslash

ChatInputAction ​

ts
interface ChatInputAction {
  key: string      // Noyob amal kaliti
  label: string    // Ko'rsatiladigan yorliq
  icon?: string    // Moslashtirilgan belgi (ixtiyoriy)
  color?: string   // Aylana fon rangi
}