Jiny pristup k vytvareni letu, polofunkcni editace letu
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
<script setup>
|
||||
import {computed, onMounted, ref, watch} from "vue";
|
||||
import {parseDate} from "src/composables/datetimeUtils";
|
||||
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: Date,
|
||||
type: [String, Date]
|
||||
},
|
||||
dateMask: {
|
||||
type: String, Boolean,
|
||||
type: [String, Boolean],
|
||||
required: false,
|
||||
default: "YYYY-MM-DD"
|
||||
},
|
||||
timeMask: {
|
||||
type: String, Boolean,
|
||||
type: [String, Boolean],
|
||||
required: false,
|
||||
default: "HH:mm"
|
||||
}
|
||||
@@ -19,35 +20,49 @@ const props = defineProps({
|
||||
|
||||
let dateModel = ref("");
|
||||
let timeModel = ref("");
|
||||
|
||||
onMounted(() => {
|
||||
let date = "";
|
||||
let time = "";
|
||||
let emitDefaultValue = false;
|
||||
|
||||
if (props.modelValue) {
|
||||
let modelVal = props.modelValue;
|
||||
if (typeof modelVal === 'string') {
|
||||
modelVal = parseDate(props.modelValue);
|
||||
emitDefaultValue = true;
|
||||
}
|
||||
|
||||
date = props.dateMask.replace("YYYY", props.modelValue.getFullYear())
|
||||
.replace("MM", ('0' + props.modelValue.getMonth()).slice(-2))
|
||||
.replace("DD", ('0' + props.modelValue.getDate()).slice(-2));
|
||||
date = props.dateMask
|
||||
.replace("YYYY", modelVal.getFullYear().toString())
|
||||
.replace("MM", ('0' + modelVal.getMonth()).slice(-2))
|
||||
.replace("DD", ('0' + modelVal.getDate()).slice(-2));
|
||||
|
||||
time = props.timeMask.replace("HH", ('0' + props.modelValue.getHours()).slice(-2))
|
||||
.replace("mm", ('0' + props.modelValue.getMinutes()).slice(-2))
|
||||
}
|
||||
time = props.timeMask
|
||||
.replace("HH", ('0' + modelVal.getHours()).slice(-2))
|
||||
.replace("mm", ('0' + modelVal.getMinutes()).slice(-2))
|
||||
.replace("ss", ('0' + modelVal.getSeconds()).slice(-2))
|
||||
|
||||
if (time === '') {
|
||||
time = "00:00";
|
||||
// if (time === '') {
|
||||
// time = "00:00";
|
||||
// }
|
||||
}
|
||||
|
||||
dateModel.value = date;
|
||||
timeModel.value = time;
|
||||
|
||||
if (emitDefaultValue) {
|
||||
emitModelUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
const model = computed(() => dateModel.value + " " + timeModel.value);
|
||||
|
||||
const model = computed(() => dateModel.value + " " + timeModel.value);
|
||||
const emit = defineEmits(['update:modelValue']);
|
||||
const emitModelUpdate = () => {
|
||||
const now = new Date();
|
||||
const val = new Date(model.value);
|
||||
val.setHours(val.getHours() + now.getTimezoneOffset());
|
||||
const val = parseDate(model.value);
|
||||
// val.setHours(val.getHours() + now.getTimezoneOffset());
|
||||
emit("update:modelValue", val);
|
||||
}
|
||||
watch([dateModel, timeModel], emitModelUpdate)
|
||||
|
||||
Reference in New Issue
Block a user