initial display mode of the date time sheet in mobile version depends on the click content (#28)
This commit is contained in:
@@ -70,6 +70,7 @@ import { createInlinePicker } from '@/lib/ui.mobile.js';
|
|||||||
export default {
|
export default {
|
||||||
props: [
|
props: [
|
||||||
'modelValue',
|
'modelValue',
|
||||||
|
'initMode',
|
||||||
'show'
|
'show'
|
||||||
],
|
],
|
||||||
emits: [
|
emits: [
|
||||||
@@ -93,7 +94,7 @@ export default {
|
|||||||
const datetime = getLocalDatetimeFromUnixTime(value);
|
const datetime = getLocalDatetimeFromUnixTime(value);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
mode: 'time',
|
mode: self.initMode || 'time',
|
||||||
yearRange: [
|
yearRange: [
|
||||||
2000,
|
2000,
|
||||||
getCurrentYear() + 1
|
getCurrentYear() + 1
|
||||||
@@ -136,7 +137,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
onSheetOpen() {
|
onSheetOpen() {
|
||||||
const self = this;
|
const self = this;
|
||||||
self.mode = 'time';
|
self.mode = self.initMode || 'time';
|
||||||
|
|
||||||
if (self.modelValue) {
|
if (self.modelValue) {
|
||||||
self.dateTime = getLocalDatetimeFromUnixTime(self.modelValue);
|
self.dateTime = getLocalDatetimeFromUnixTime(self.modelValue);
|
||||||
@@ -148,8 +149,10 @@ export default {
|
|||||||
self.timePickerHolder = createInlinePicker('#time-picker-container', '#time-picker-input',
|
self.timePickerHolder = createInlinePicker('#time-picker-container', '#time-picker-input',
|
||||||
self.getTimePickerColumns(), self.timeValues, {
|
self.getTimePickerColumns(), self.timeValues, {
|
||||||
change(picker, values) {
|
change(picker, values) {
|
||||||
self.timeValues = values;
|
if (self.mode === 'time') {
|
||||||
self.dateTime = getCombinedDateAndTimeValues(self.dateTime, self.timeValues, self.is24Hour, self.isMeridiemIndicatorFirst);
|
self.timeValues = values;
|
||||||
|
self.dateTime = getCombinedDateAndTimeValues(self.dateTime, self.timeValues, self.is24Hour, self.isMeridiemIndicatorFirst);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -230,15 +230,21 @@
|
|||||||
</f7-list-item>
|
</f7-list-item>
|
||||||
|
|
||||||
<f7-list-item
|
<f7-list-item
|
||||||
class="list-item-with-header-and-title"
|
class="transaction-edit-datetime list-item-with-header-and-title"
|
||||||
link="#" no-chevron
|
link="#" no-chevron
|
||||||
:class="{ 'readonly': mode === 'view' && transaction.utcOffset === currentTimezoneOffsetMinutes }"
|
:class="{ 'readonly': mode === 'view' && transaction.utcOffset === currentTimezoneOffsetMinutes }"
|
||||||
:header="$t('Transaction Time')"
|
|
||||||
:title="transactionDisplayTime"
|
|
||||||
@click="mode !== 'view' ? showTransactionDateTimeSheet = true : showTimeInDefaultTimezone = !showTimeInDefaultTimezone"
|
|
||||||
v-if="type === 'transaction'"
|
v-if="type === 'transaction'"
|
||||||
>
|
>
|
||||||
<date-time-selection-sheet v-model:show="showTransactionDateTimeSheet"
|
<template #header>
|
||||||
|
<div class="transaction-edit-datetime-header" @click="showDateTimeDialog('time')">{{ $t('Transaction Time') }}</div>
|
||||||
|
</template>
|
||||||
|
<template #title>
|
||||||
|
<div class="transaction-edit-datetime-title">
|
||||||
|
<div @click="showDateTimeDialog('date')">{{ transactionDisplayDate }}</div> <div class="transaction-edit-datetime-time" @click="showDateTimeDialog('time')">{{ transactionDisplayTime }}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<date-time-selection-sheet :init-mode="transactionDateTimeSheetMode"
|
||||||
|
v-model:show="showTransactionDateTimeSheet"
|
||||||
v-model="transaction.time">
|
v-model="transaction.time">
|
||||||
</date-time-selection-sheet>
|
</date-time-selection-sheet>
|
||||||
</f7-list-item>
|
</f7-list-item>
|
||||||
@@ -486,6 +492,7 @@ export default {
|
|||||||
uploadingPicture: false,
|
uploadingPicture: false,
|
||||||
removingPictureId: null,
|
removingPictureId: null,
|
||||||
isSupportGeoLocation: !!navigator.geolocation,
|
isSupportGeoLocation: !!navigator.geolocation,
|
||||||
|
transactionDateTimeSheetMode: 'time',
|
||||||
showTimeInDefaultTimezone: false,
|
showTimeInDefaultTimezone: false,
|
||||||
showGeoLocationActionSheet: false,
|
showGeoLocationActionSheet: false,
|
||||||
showMoreActionSheet: false,
|
showMoreActionSheet: false,
|
||||||
@@ -665,12 +672,19 @@ export default {
|
|||||||
return this.$t('None');
|
return this.$t('None');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
transactionDisplayTime() {
|
transactionDisplayDate() {
|
||||||
if (this.mode !== 'view' || !this.showTimeInDefaultTimezone) {
|
if (this.mode !== 'view' || !this.showTimeInDefaultTimezone) {
|
||||||
return this.$locale.formatUnixTimeToLongDateTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes()))
|
return this.$locale.formatUnixTimeToLongDate(this.userStore, getActualUnixTimeForStore(this.transaction.time, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return `${this.$locale.formatUnixTimeToLongDateTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, this.transaction.utcOffset, getBrowserTimezoneOffsetMinutes()))} (UTC${getTimezoneOffset(this.settingsStore.appSettings.timeZone)})`;
|
return this.$locale.formatUnixTimeToLongDate(this.userStore, getActualUnixTimeForStore(this.transaction.time, this.transaction.utcOffset, getBrowserTimezoneOffsetMinutes()));
|
||||||
|
},
|
||||||
|
transactionDisplayTime() {
|
||||||
|
if (this.mode !== 'view' || !this.showTimeInDefaultTimezone) {
|
||||||
|
return this.$locale.formatUnixTimeToLongTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${this.$locale.formatUnixTimeToLongTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, this.transaction.utcOffset, getBrowserTimezoneOffsetMinutes()))} (UTC${getTimezoneOffset(this.settingsStore.appSettings.timeZone)})`;
|
||||||
},
|
},
|
||||||
transactionDisplayScheduledFrequency() {
|
transactionDisplayScheduledFrequency() {
|
||||||
if (this.type !== 'template') {
|
if (this.type !== 'template') {
|
||||||
@@ -1222,6 +1236,14 @@ export default {
|
|||||||
this.transaction.destinationAmount = oldSourceAmount;
|
this.transaction.destinationAmount = oldSourceAmount;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
showDateTimeDialog(sheetMode) {
|
||||||
|
if (this.mode === 'view') {
|
||||||
|
this.showTimeInDefaultTimezone = !this.showTimeInDefaultTimezone;
|
||||||
|
} else {
|
||||||
|
this.transactionDateTimeSheetMode = sheetMode;
|
||||||
|
this.showTransactionDateTimeSheet = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
showOpenPictureDialog() {
|
showOpenPictureDialog() {
|
||||||
if (!this.canAddTransactionPicture || this.submitting) {
|
if (!this.canAddTransactionPicture || this.submitting) {
|
||||||
return;
|
return;
|
||||||
@@ -1355,6 +1377,26 @@ export default {
|
|||||||
padding-top: calc(var(--f7-typography-padding) / 2);
|
padding-top: calc(var(--f7-typography-padding) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.transaction-edit-datetime .item-title {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transaction-edit-datetime .item-title > .item-header > .transaction-edit-datetime-header {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transaction-edit-datetime .item-title > .transaction-edit-datetime-title {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transaction-edit-datetime .item-title > .transaction-edit-datetime-title > .transaction-edit-datetime-time {
|
||||||
|
flex-grow: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
.transaction-edit-timezone-name {
|
.transaction-edit-timezone-name {
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user