ボタンコンポーネントです。様々なカラーバリエーションを提供します。
<template>
<kvc-button @click="handleClick">
クリック
</kvc-button>
</template>
<script setup>
const handleClick = () => {
console.log('Button clicked')
}
</script>
| プロパティ | 型 | デフォルト | 説明 |
|---|
| color | 'normal' | 'success' | 'save' | 'error' | 'normal' | ボタンのカラー |
| type | 'button' | 'submit' | 'reset' | 'button' | ボタンのタイプ |
| disabled | boolean | false | 無効化状態 |
| イベント名 | ペイロード | 説明 |
|---|
| click | MouseEvent | ボタンがクリックされたときに発火 |
| スロット名 | 説明 |
|---|
| default | ボタンのテキストを配置するデフォルトスロット |
- normal: 通常のボタン(グレー系)
- success: 成功・完了を示すボタン(グリーン系)
- save: 保存アクションを示すボタン(ブルー系)
- error: エラー・削除を示すボタン(レッド系)
<template>
<kvc-button @click="handleClick">
クリックしてください
</kvc-button>
</template>
<script setup>
const handleClick = () => {
alert('ボタンがクリックされました')
}
</script>
<template>
<kvc-row>
<kvc-button color="normal" @click="handleNormal">
通常
</kvc-button>
<kvc-button color="success" @click="handleSuccess">
成功
</kvc-button>
<kvc-button color="save" @click="handleSave">
保存
</kvc-button>
<kvc-button color="error" @click="handleError">
削除
</kvc-button>
</kvc-row>
</template>
<script setup>
const handleNormal = () => console.log('Normal')
const handleSuccess = () => console.log('Success')
const handleSave = () => console.log('Save')
const handleError = () => console.log('Error')
</script>
<template>
<kvc-wrap tag="form" @submit="handleSubmit">
<kvc-field label="ユーザー名">
<kvc-text-input v-model="username" />
</kvc-field>
<kvc-field label="パスワード">
<kvc-text-input v-model="password" type="password" />
</kvc-field>
<kvc-button color="save" type="submit">
ログイン
</kvc-button>
</kvc-wrap>
</template>
<script setup>
import { ref } from 'vue'
const username = ref('')
const password = ref('')
const handleSubmit = (event) => {
event.preventDefault()
console.log('Login:', { username: username.value, password: password.value })
}
</script>
<template>
<kvc-wrap>
<kvc-field label="名前">
<kvc-text-input v-model="name" />
</kvc-field>
<kvc-row>
<kvc-button
color="save"
:disabled="!name"
@click="handleSave"
>
保存
</kvc-button>
<kvc-button @click="handleCancel">
キャンセル
</kvc-button>
</kvc-row>
</kvc-wrap>
</template>
<script setup>
import { ref } from 'vue'
const name = ref('')
const handleSave = () => {
console.log('Saved:', name.value)
}
const handleCancel = () => {
console.log('Cancelled')
}
</script>
<template>
<kvc-row>
<kvc-button color="error" @click="handleDelete">
削除
</kvc-button>
</kvc-row>
</template>
<script setup>
const handleDelete = () => {
if (confirm('本当に削除しますか?')) {
console.log('Deleted')
}
}
</script>
<template>
<kvc-row>
<kvc-button
color="save"
:disabled="loading"
@click="handleSave"
>
{{ loading ? '保存中...' : '保存' }}
</kvc-button>
</kvc-row>
</template>
<script setup>
import { ref } from 'vue'
const loading = ref(false)
const handleSave = async () => {
loading.value = true
try {
await new Promise(resolve => setTimeout(resolve, 2000))
console.log('Saved')
} finally {
loading.value = false
}
}
</script>
<template>
<kvc-row>
<kvc-button color="save" @click="handleSave">
<Icon icon="mdi:content-save" />
保存
</kvc-button>
<kvc-button color="error" @click="handleDelete">
<Icon icon="mdi:delete" />
削除
</kvc-button>
<kvc-button @click="handleRefresh">
<Icon icon="mdi:refresh" />
更新
</kvc-button>
</kvc-row>
</template>
<script setup>
import { Icon } from '@iconify/vue'
const handleSave = () => console.log('Save')
const handleDelete = () => console.log('Delete')
const handleRefresh = () => console.log('Refresh')
</script>
<template>
<kvc-wrap>
<kvc-field label="記事タイトル">
<kvc-text-input v-model="title" />
</kvc-field>
<kvc-field label="内容">
<kvc-textarea v-model="content" :rows="10" />
</kvc-field>
<kvc-row>
<kvc-button color="save" @click="handleSave">
保存
</kvc-button>
<kvc-button color="success" @click="handlePublish">
公開
</kvc-button>
<kvc-button @click="handlePreview">
プレビュー
</kvc-button>
<kvc-button @click="handleDraft">
下書きに戻す
</kvc-button>
<kvc-button color="error" @click="handleDelete">
削除
</kvc-button>
</kvc-row>
</kvc-wrap>
</template>
<script setup>
import { ref } from 'vue'
const title = ref('')
const content = ref('')
const handleSave = () => console.log('Save')
const handlePublish = () => console.log('Publish')
const handlePreview = () => console.log('Preview')
const handleDraft = () => console.log('Draft')
const handleDelete = () => {
if (confirm('本当に削除しますか?')) {
console.log('Delete')
}
}
</script>
import type { KvcButtonProps } from '@zygapp/kintone-vue3-component'
const props: KvcButtonProps = {
color: 'save',
type: 'button',
disabled: false
}
カスタムスタイルを適用する場合:
<template>
<kvc-button class="custom-button" @click="handleClick">
カスタムボタン
</kvc-button>
</template>
<style scoped>
.custom-button {
min-width: 200px;
font-size: 18px;
}
</style>