parsley/app/javascript/components/TaskItemEdit.vue

71 lines
1.4 KiB
Vue
Raw Normal View History

2018-09-05 17:49:21 -05:00
<template>
2018-09-13 14:51:41 -05:00
<div class="columns task-item-edit">
2018-09-05 17:49:21 -05:00
2018-09-13 14:51:41 -05:00
<div class="field column">
2018-09-05 17:49:21 -05:00
<label class="label is-small">Name</label>
<div class="control">
<input class="input is-small" type="text" placeholder="Name" v-model="taskItem.name" @keydown="inputKeydown" ref="nameInput">
</div>
</div>
2018-09-13 14:51:41 -05:00
<div class="field column">
2018-09-05 17:49:21 -05:00
<label class="label is-small">Quantity</label>
<div class="control">
<input class="input is-small" type="text" placeholder="Qty" v-model="taskItem.quantity" @keydown="inputKeydown">
</div>
</div>
2018-09-13 14:51:41 -05:00
<div class="field column">
2018-09-05 17:49:21 -05:00
<div class="control">
2018-09-06 18:16:13 -05:00
<button class="button is-primary" @click="save">Add</button>
2018-09-05 17:49:21 -05:00
</div>
</div>
</div>
</template>
2024-10-02 14:34:50 -05:00
<script setup>
import { onMounted, useTemplateRef } from "vue";
const emit = defineEmits(["save"]);
const props = defineProps({
taskItem: {
required: true,
type: Object
}
});
const nameElement = useTemplateRef("nameInput");
onMounted(() => focus());
function inputKeydown(evt) {
switch (evt.key) {
case "Enter":
evt.preventDefault();
save();
2018-09-05 17:49:21 -05:00
}
}
2024-10-02 14:34:50 -05:00
function save() {
emit("save", props.taskItem);
}
function focus() {
nameElement.value.focus();
}
defineExpose({
focus
});
2018-09-05 17:49:21 -05:00
</script>
<style lang="scss" scoped>
2018-09-13 14:51:41 -05:00
.task-item-edit {
}
2018-09-05 17:49:21 -05:00
</style>