39 lines
937 B
Vue
39 lines
937 B
Vue
<script setup lang="ts">
|
|
const props = defineProps<{
|
|
smallMode?: boolean
|
|
defaultClass?: string
|
|
class?: string
|
|
}>()
|
|
|
|
const defaultClass = props.defaultClass ?? 'm-2 flex gap-2 px-2'
|
|
const additionalClass = props.class ?? ''
|
|
const btnClass = props.smallMode ? '[&_button]:w-7 [&_button]:h-7 [&_button]:2xl:w-8 [&_button]:2xl:h-9 [&_button]:!p-0' : ''
|
|
|
|
type ClickType = 'cancel' | 'save'
|
|
|
|
const emit = defineEmits<{
|
|
(e: 'click', type: ClickType): void
|
|
}>()
|
|
|
|
function onClick(type: ClickType) {
|
|
emit('click', type)
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div :class="`${defaultClass} ${additionalClass} ${btnClass}`">
|
|
<div>
|
|
<Button variant="ghost" type="button" @click="onClick('cancel')">
|
|
<Icon name="i-lucide-x" />
|
|
Batal
|
|
</Button>
|
|
</div>
|
|
<div>
|
|
<Button type="button" @click="onClick('save')">
|
|
<Icon name="i-lucide-check" />
|
|
Simpan
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</template>
|