diff --git a/pkg/core/calendar.go b/pkg/core/calendar.go index 4bd5f988..4aba05e2 100644 --- a/pkg/core/calendar.go +++ b/pkg/core/calendar.go @@ -9,6 +9,7 @@ type CalendarDisplayType byte const ( CALENDAR_DISPLAY_TYPE_DEFAULT CalendarDisplayType = 0 CALENDAR_DISPLAY_TYPE_GREGORAIN CalendarDisplayType = 1 + CALENDAR_DISPLAY_TYPE_BUDDHIST CalendarDisplayType = 2 CALENDAR_DISPLAY_TYPE_INVALID CalendarDisplayType = 255 ) @@ -19,6 +20,8 @@ func (f CalendarDisplayType) String() string { return "Default" case CALENDAR_DISPLAY_TYPE_GREGORAIN: return "Gregorian" + case CALENDAR_DISPLAY_TYPE_BUDDHIST: + return "Buddhist" case CALENDAR_DISPLAY_TYPE_INVALID: return "Invalid" default: diff --git a/pkg/models/user.go b/pkg/models/user.go index b84b4c30..cb4a2465 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -199,7 +199,7 @@ type UserProfileUpdateRequest struct { DefaultCurrency string `json:"defaultCurrency" binding:"omitempty,len=3,validCurrency"` FirstDayOfWeek *core.WeekDay `json:"firstDayOfWeek" binding:"omitempty,min=0,max=6"` FiscalYearStart *core.FiscalYearStart `json:"fiscalYearStart" binding:"omitempty,validFiscalYearStart"` - CalendarDisplayType *core.CalendarDisplayType `json:"calendarDisplayType" binding:"omitempty,min=0,max=1"` + CalendarDisplayType *core.CalendarDisplayType `json:"calendarDisplayType" binding:"omitempty,min=0,max=2"` DateDisplayType *core.DateDisplayType `json:"dateDisplayType" binding:"omitempty,min=0,max=2"` LongDateFormat *core.LongDateFormat `json:"longDateFormat" binding:"omitempty,min=0,max=3"` ShortDateFormat *core.ShortDateFormat `json:"shortDateFormat" binding:"omitempty,min=0,max=3"` diff --git a/pkg/services/users.go b/pkg/services/users.go index a4147ff5..07ab1593 100644 --- a/pkg/services/users.go +++ b/pkg/services/users.go @@ -293,8 +293,8 @@ func (s *UserService) UpdateUser(c core.Context, user *models.User, modifyUserLa updateCols = append(updateCols, "fiscal_year_start") } - if core.CALENDAR_DISPLAY_TYPE_DEFAULT <= user.CalendarDisplayType && user.CalendarDisplayType <= core.CALENDAR_DISPLAY_TYPE_GREGORAIN { - updateCols = append(updateCols, "calendar_type") + if core.CALENDAR_DISPLAY_TYPE_DEFAULT <= user.CalendarDisplayType && user.CalendarDisplayType <= core.CALENDAR_DISPLAY_TYPE_BUDDHIST { + updateCols = append(updateCols, "calendar_display_type") } if core.DATE_DISPLAY_TYPE_DEFAULT <= user.DateDisplayType && user.DateDisplayType <= core.DATE_DISPLAY_TYPE_BUDDHIST { diff --git a/src/components/base/DateRangeSelectionBase.ts b/src/components/base/DateRangeSelectionBase.ts index cf4affca..aaea3236 100644 --- a/src/components/base/DateRangeSelectionBase.ts +++ b/src/components/base/DateRangeSelectionBase.ts @@ -1,10 +1,9 @@ import { ref, computed } from 'vue'; import { type TimeRangeAndDateType, type PresetDateRange, type UnixTimeRange, type WeekDayValue, DateRange } from '@/core/datetime.ts'; -import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts'; + import { getCurrentUnixTime, - getAllowedYearRange, getLocalDatetimeFromUnixTime, getUnixTimeFromLocalDatetime, getTodayFirstUnixTime, @@ -46,21 +45,16 @@ function getDateRangeFromProps(props: CommonDateRangeSelectionProps): { minDate: } export function useDateRangeSelectionBase(props: CommonDateRangeSelectionProps) { - const { tt, getAllMinWeekdayNames, formatUnixTimeToLongDateTime, isLongDateMonthAfterYear, isLongTime24HourFormat } = useI18n(); + const { tt, formatUnixTimeToLongDateTime } = useI18n(); const userStore = useUserStore(); const { minDate, maxDate } = getDateRangeFromProps(props); - const yearRange = ref(getAllowedYearRange()); - const dateRange = ref([ getLocalDatetimeFromUnixTime(getDummyUnixTimeForLocalUsage(minDate, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes())), getLocalDatetimeFromUnixTime(getDummyUnixTimeForLocalUsage(maxDate, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes())) ]); const firstDayOfWeek = computed(() => userStore.currentUserFirstDayOfWeek); - const dayNames = computed(() => arrangeArrayWithNewStartIndex(getAllMinWeekdayNames(), firstDayOfWeek.value)); - const isYearFirst = computed(() => isLongDateMonthAfterYear()); - const is24Hour = computed(() => isLongTime24HourFormat()); const beginDateTime = computed(() => { const actualBeginUnixTime = getActualUnixTimeForStore(getUnixTimeFromLocalDatetime(dateRange.value[0]), getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes()); return formatUnixTimeToLongDateTime(actualBeginUnixTime); @@ -123,12 +117,8 @@ export function useDateRangeSelectionBase(props: CommonDateRangeSelectionProps) return { // states - yearRange, dateRange, // computed states - dayNames, - isYearFirst, - is24Hour, beginDateTime, endDateTime, presetRanges, diff --git a/src/components/base/DateTimeSelectionBase.ts b/src/components/base/DateTimeSelectionBase.ts index c17d868e..9ce10dc7 100644 --- a/src/components/base/DateTimeSelectionBase.ts +++ b/src/components/base/DateTimeSelectionBase.ts @@ -2,12 +2,7 @@ import { ref, computed } from 'vue'; import { useI18n } from '@/locales/helpers.ts'; -import { useUserStore } from '@/stores/user.ts'; - import { type NameValue } from '@/core/base.ts'; -import { type WeekDayValue } from '@/core/datetime.ts'; -import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts'; -import { getAllowedYearRange } from '@/lib/datetime.ts'; export interface TimePickerValue { value: string; @@ -16,9 +11,7 @@ export interface TimePickerValue { export function useDateTimeSelectionBase() { const { - getAllMinWeekdayNames, getAllMeridiemIndicators, - isLongDateMonthAfterYear, isLongTime24HourFormat, isLongTimeMeridiemIndicatorFirst, isLongTimeHourTwoDigits, @@ -26,22 +19,14 @@ export function useDateTimeSelectionBase() { isLongTimeSecondTwoDigits } = useI18n(); - const userStore = useUserStore(); - const is24Hour = ref(isLongTime24HourFormat()); const isHourTwoDigits = ref(isLongTimeHourTwoDigits()); const isMinuteTwoDigits = ref(isLongTimeMinuteTwoDigits()); const isSecondTwoDigits = ref(isLongTimeSecondTwoDigits()); const isMeridiemIndicatorFirst = ref(isLongTimeMeridiemIndicatorFirst() || false); - const yearRange = ref(getAllowedYearRange()); - const meridiemItems = computed(() => getAllMeridiemIndicators()); - const firstDayOfWeek = computed(() => userStore.currentUserFirstDayOfWeek); - const dayNames = computed(() => arrangeArrayWithNewStartIndex(getAllMinWeekdayNames(), firstDayOfWeek.value)); - const isYearFirst = computed(() => isLongDateMonthAfterYear()); - function getDisplayTimeValue(value: number, forceTwoDigits: boolean): string { if (forceTwoDigits && value < 10) { return `0${value}`; @@ -96,12 +81,8 @@ export function useDateTimeSelectionBase() { isMinuteTwoDigits, isSecondTwoDigits, isMeridiemIndicatorFirst, - yearRange, // computed meridiemItems, - firstDayOfWeek, - dayNames, - isYearFirst, // functions getDisplayTimeValue, generateAllHours, diff --git a/src/components/base/FiscalYearStartSelectionBase.ts b/src/components/base/FiscalYearStartSelectionBase.ts index 3d1cc2f3..33528a3a 100644 --- a/src/components/base/FiscalYearStartSelectionBase.ts +++ b/src/components/base/FiscalYearStartSelectionBase.ts @@ -2,11 +2,9 @@ import { ref, computed } from 'vue'; import { useI18n } from '@/locales/helpers.ts'; -import { useUserStore } from '@/stores/user.ts'; - -import { type WeekDayValue } from '@/core/datetime.ts'; +import type { MonthDay } from '@/core/datetime.ts'; import { FiscalYearStart } from '@/core/fiscalyear.ts'; -import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts'; + import { getLocalDatetimeFromUnixTime, getThisYearFirstUnixTime, @@ -39,12 +37,7 @@ function getFiscalYearStartFromProps(props: CommonFiscalYearStartSelectionProps) } export function useFiscalYearStartSelectionBase(props: CommonFiscalYearStartSelectionProps) { - const { - getAllMinWeekdayNames, - formatGregorianCalendarMonthDashDayToLongMonthDay - } = useI18n(); - - const userStore = useUserStore(); + const { formatGregorianCalendarMonthDashDayToLongMonthDay } = useI18n(); const disabledDates = (date: Date) => { // Disable February 29 (leap day) @@ -53,18 +46,15 @@ export function useFiscalYearStartSelectionBase(props: CommonFiscalYearStartSele const selectedFiscalYearStart = ref(getFiscalYearStartFromProps(props)); - const selectedFiscalYearStartValue = computed({ + const selectedFiscalYearStartValue = computed({ get: () => { const fiscalYearStart = FiscalYearStart.valueOf(selectedFiscalYearStart.value); + const monthDay: MonthDay = fiscalYearStart?.toMonthDay() ?? FiscalYearStart.Default.toMonthDay(); - if (fiscalYearStart) { - return fiscalYearStart.toMonthDashDayString(); - } else { - return FiscalYearStart.Default.toMonthDashDayString(); - } + return new Date(new Date().getFullYear(), monthDay.month - 1, monthDay.day); }, - set: (value: string) => { - const fiscalYearStart = FiscalYearStart.parse(value); + set: (value: Date) => { + const fiscalYearStart = FiscalYearStart.of(value.getMonth() + 1, value.getDate()); if (fiscalYearStart) { selectedFiscalYearStart.value = fiscalYearStart.value; @@ -87,9 +77,6 @@ export function useFiscalYearStartSelectionBase(props: CommonFiscalYearStartSele const allowedMinDate = computed(() => getLocalDatetimeFromUnixTime(getThisYearFirstUnixTime())); const allowedMaxDate = computed(() => getLocalDatetimeFromUnixTime(getThisYearLastUnixTime())); - const firstDayOfWeek = computed(() => userStore.currentUserFirstDayOfWeek); - const dayNames = computed(() => arrangeArrayWithNewStartIndex(getAllMinWeekdayNames(), firstDayOfWeek.value)); - return { // constants disabledDates, @@ -99,8 +86,6 @@ export function useFiscalYearStartSelectionBase(props: CommonFiscalYearStartSele selectedFiscalYearStartValue, displayFiscalYearStartDate, allowedMinDate, - allowedMaxDate, - firstDayOfWeek, - dayNames + allowedMaxDate }; } diff --git a/src/components/base/MonthRangeSelectionBase.ts b/src/components/base/MonthRangeSelectionBase.ts index aa62add9..c7e3f887 100644 --- a/src/components/base/MonthRangeSelectionBase.ts +++ b/src/components/base/MonthRangeSelectionBase.ts @@ -7,7 +7,6 @@ import { getYear0BasedMonthObjectFromString, getYearMonthStringFromYear0BasedMonthObject, getCurrentUnixTime, - getAllowedYearRange, getThisYearFirstUnixTime, getYearMonthFirstUnixTime, getYearMonthLastUnixTime @@ -15,11 +14,6 @@ import { import { useI18n } from '@/locales/helpers.ts'; -export interface MonthSelectionValue { - year: number; - month: number; // 0-based month (0 = January, 11 = December) -} - export interface CommonMonthRangeSelectionProps { minTime?: TextualYearMonth; maxTime?: TextualYearMonth; @@ -28,7 +22,7 @@ export interface CommonMonthRangeSelectionProps { show: boolean; } -function getMonthRangeFromProps(props: CommonMonthRangeSelectionProps): { minDate: MonthSelectionValue; maxDate: MonthSelectionValue } { +function getMonthRangeFromProps(props: CommonMonthRangeSelectionProps): { minDate: Year0BasedMonth; maxDate: Year0BasedMonth } { let minDate: Year0BasedMonth = getYear0BasedMonthObjectFromUnixTime(getThisYearFirstUnixTime()); let maxDate: Year0BasedMonth = getYear0BasedMonthObjectFromUnixTime(getCurrentUnixTime()); @@ -49,67 +43,34 @@ function getMonthRangeFromProps(props: CommonMonthRangeSelectionProps): { minDat } return { - minDate: { - year: minDate.year, - month: minDate.month0base - }, - maxDate: { - year: maxDate.year, - month: maxDate.month0base - } + minDate: minDate, + maxDate: maxDate }; } export function useMonthRangeSelectionBase(props: CommonMonthRangeSelectionProps) { - const { formatUnixTimeToLongYearMonth, isLongDateMonthAfterYear } = useI18n(); + const { formatUnixTimeToLongYearMonth } = useI18n(); const { minDate, maxDate } = getMonthRangeFromProps(props); - const yearRange = ref(getAllowedYearRange()); - const dateRange = ref([ + const dateRange = ref([ minDate, maxDate ]); - const isYearFirst = computed(() => isLongDateMonthAfterYear()); - const beginDateTime = computed(() => formatUnixTimeToLongYearMonth(getYearMonthFirstUnixTime({ - year: dateRange.value[0].year, - month0base: dateRange.value[0].month - }))); - const endDateTime = computed(() => formatUnixTimeToLongYearMonth(getYearMonthLastUnixTime({ - year: dateRange.value[1].year, - month0base: dateRange.value[1].month - }))); - - function getMonthSelectionValue(yearMonth: TextualYearMonth): MonthSelectionValue | null { - const yearMonthObj = getYear0BasedMonthObjectFromString(yearMonth); - - if (!yearMonthObj) { - return null; - } - - return { - year: yearMonthObj.year, - month: yearMonthObj.month0base - }; - } + const beginDateTime = computed(() => formatUnixTimeToLongYearMonth(getYearMonthFirstUnixTime(dateRange.value[0]))); + const endDateTime = computed(() => formatUnixTimeToLongYearMonth(getYearMonthLastUnixTime(dateRange.value[1]))); function getFinalMonthRange(): { minYearMonth: TextualYearMonth | '', maxYearMonth: TextualYearMonth | '' } | null { if (!dateRange.value[0] || !dateRange.value[1]) { return null; } - if (dateRange.value[0].year <= 0 || dateRange.value[0].month < 0 || dateRange.value[1].year <= 0 || dateRange.value[1].month < 0) { + if (dateRange.value[0].year <= 0 || dateRange.value[0].month0base < 0 || dateRange.value[1].year <= 0 || dateRange.value[1].month0base < 0) { throw new Error('Date is too early'); } - const minYearMonth = getYearMonthStringFromYear0BasedMonthObject({ - year: dateRange.value[0].year, - month0base: dateRange.value[0].month - }); - const maxYearMonth = getYearMonthStringFromYear0BasedMonthObject({ - year: dateRange.value[1].year, - month0base: dateRange.value[1].month - }); + const minYearMonth = getYearMonthStringFromYear0BasedMonthObject(dateRange.value[0]); + const maxYearMonth = getYearMonthStringFromYear0BasedMonthObject(dateRange.value[1]); return { minYearMonth, @@ -119,14 +80,11 @@ export function useMonthRangeSelectionBase(props: CommonMonthRangeSelectionProps return { // states - yearRange, dateRange, // computed states - isYearFirst, beginDateTime, endDateTime, // functions - getMonthSelectionValue, getFinalMonthRange }; } diff --git a/src/components/base/MonthSelectionBase.ts b/src/components/base/MonthSelectionBase.ts deleted file mode 100644 index a81a697b..00000000 --- a/src/components/base/MonthSelectionBase.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { ref, computed } from 'vue'; - -import type { Year0BasedMonth } from '@/core/datetime.ts'; - -import { - getYear0BasedMonthObjectFromUnixTime, - getAllowedYearRange, - getThisMonthFirstUnixTime -} from '@/lib/datetime.ts'; - -import { useI18n } from '@/locales/helpers.ts'; - -export interface MonthSelectionValue { - year: number; - month: number; // 0-based month (0 = January, 11 = December) -} - -export interface CommonMonthSelectionProps { - modelValue?: Year0BasedMonth; - title?: string; - hint?: string; - show: boolean; -} - -function getYearMonthValueFromProps(props: CommonMonthSelectionProps): MonthSelectionValue { - let value: Year0BasedMonth = getYear0BasedMonthObjectFromUnixTime(getThisMonthFirstUnixTime()); - - if (props.modelValue) { - value = props.modelValue; - } - - return { - year: value.year, - month: value.month0base - }; -} - -export function useMonthSelectionBase(props: CommonMonthSelectionProps) { - const { isLongDateMonthAfterYear } = useI18n(); - - const yearRange = ref(getAllowedYearRange()); - const monthValue = ref(getYearMonthValueFromProps(props)); - - const isYearFirst = computed(() => isLongDateMonthAfterYear()); - - function getMonthSelectionValue(yearMonth: Year0BasedMonth): MonthSelectionValue | null { - if (!yearMonth) { - return null; - } - - return { - year: yearMonth.year, - month: yearMonth.month0base - }; - } - - function getYear0BasedMonth(): Year0BasedMonth | null { - if (!monthValue.value) { - return null; - } - - if (monthValue.value.year <= 0 || monthValue.value.month < 0) { - throw new Error('Date is too early'); - } - - return { - year: monthValue.value.year, - month0base: monthValue.value.month - }; - } - - return { - // states - yearRange, - monthValue, - // computed states - isYearFirst, - // functions - getMonthSelectionValue, - getYear0BasedMonth - }; -} diff --git a/src/components/common/DateTimePicker.vue b/src/components/common/DateTimePicker.vue new file mode 100644 index 00000000..6797d98a --- /dev/null +++ b/src/components/common/DateTimePicker.vue @@ -0,0 +1,133 @@ + + + diff --git a/src/components/common/MonthPicker.vue b/src/components/common/MonthPicker.vue new file mode 100644 index 00000000..ed75b9b9 --- /dev/null +++ b/src/components/common/MonthPicker.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/components/common/TransactionCalendar.vue b/src/components/common/TransactionCalendar.vue new file mode 100644 index 00000000..bcac249d --- /dev/null +++ b/src/components/common/TransactionCalendar.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/components/desktop/DateRangeSelectionDialog.vue b/src/components/desktop/DateRangeSelectionDialog.vue index cdf7720f..1d492bbf 100644 --- a/src/components/desktop/DateRangeSelectionDialog.vue +++ b/src/components/desktop/DateRangeSelectionDialog.vue @@ -18,29 +18,12 @@ - - - - - + +
@@ -59,9 +42,6 @@ import { useTheme } from 'vuetify'; import { useI18n } from '@/locales/helpers.ts'; import { type CommonDateRangeSelectionProps, useDateRangeSelectionBase } from '@/components/base/DateRangeSelectionBase.ts'; -import { useUserStore } from '@/stores/user.ts'; - -import { type WeekDayValue } from '@/core/datetime.ts'; import { ThemeType } from '@/core/theme.ts'; import { @@ -84,13 +64,10 @@ const emit = defineEmits<{ const theme = useTheme(); -const { tt, getMonthShortName } = useI18n(); -const { yearRange, dateRange, dayNames, isYearFirst, is24Hour, beginDateTime, endDateTime, presetRanges, getFinalDateRange } = useDateRangeSelectionBase(props); - -const userStore = useUserStore(); +const { tt } = useI18n(); +const { dateRange, beginDateTime, endDateTime, presetRanges, getFinalDateRange } = useDateRangeSelectionBase(props); const isDarkMode = computed(() => theme.global.name.value === ThemeType.Dark); -const firstDayOfWeek = computed(() => userStore.currentUserFirstDayOfWeek); const showState = computed({ get: () => props.show || false, set: (value) => emit('update:show', value) diff --git a/src/components/desktop/DateSelect.vue b/src/components/desktop/DateSelect.vue index 2b4466c7..aada2374 100644 --- a/src/components/desktop/DateSelect.vue +++ b/src/components/desktop/DateSelect.vue @@ -6,48 +6,35 @@ :clearable="modelValue ? clearable : false" :label="label" :menu-props="{ contentClass: 'date-select-menu' }" - v-model="dateTime" + v-model="displayTime" > diff --git a/src/components/desktop/DateTimeSelect.vue b/src/components/desktop/DateTimeSelect.vue index a3b0fc3f..3273b758 100644 --- a/src/components/desktop/DateTimeSelect.vue +++ b/src/components/desktop/DateTimeSelect.vue @@ -12,28 +12,11 @@ @@ -43,8 +30,6 @@ import { computed, watch } from 'vue'; import { useTheme } from 'vuetify'; -import { useI18n } from '@/locales/helpers.ts'; - import { type CommonFiscalYearStartSelectionProps, type CommonFiscalYearStartSelectionEmits, @@ -56,8 +41,6 @@ import { ThemeType } from '@/core/theme.ts'; const props = defineProps(); const emit = defineEmits(); -const { getMonthShortName } = useI18n(); - const theme = useTheme(); const isDarkMode = computed(() => theme.global.name.value === ThemeType.Dark); @@ -69,8 +52,6 @@ const { displayFiscalYearStartDate, allowedMinDate, allowedMaxDate, - firstDayOfWeek, - dayNames } = useFiscalYearStartSelectionBase(props); watch(() => props.modelValue, (newValue) => { diff --git a/src/components/desktop/MonthRangeSelectionDialog.vue b/src/components/desktop/MonthRangeSelectionDialog.vue index 4f27086d..3f41be9e 100644 --- a/src/components/desktop/MonthRangeSelectionDialog.vue +++ b/src/components/desktop/MonthRangeSelectionDialog.vue @@ -20,36 +20,10 @@ - - - - + - - - - + @@ -73,6 +47,8 @@ import { type CommonMonthRangeSelectionProps, useMonthRangeSelectionBase } from import { ThemeType } from '@/core/theme.ts'; import { type TextualYearMonth } from '@/core/datetime.ts'; +import { getYear0BasedMonthObjectFromString } from '@/lib/datetime.ts'; + interface DesktopMonthRangeSelectionProps extends CommonMonthRangeSelectionProps { persistent?: boolean; } @@ -86,8 +62,8 @@ const emit = defineEmits<{ const theme = useTheme(); -const { tt, getMonthShortName } = useI18n(); -const { yearRange, dateRange, isYearFirst, beginDateTime, endDateTime, getMonthSelectionValue, getFinalMonthRange } = useMonthRangeSelectionBase(props); +const { tt } = useI18n(); +const { dateRange, beginDateTime, endDateTime, getFinalMonthRange } = useMonthRangeSelectionBase(props); const isDarkMode = computed(() => theme.global.name.value === ThemeType.Dark); const showState = computed({ @@ -117,7 +93,7 @@ function cancel(): void { watch(() => props.minTime, (newValue) => { if (newValue) { - const yearMonth = getMonthSelectionValue(newValue); + const yearMonth = getYear0BasedMonthObjectFromString(newValue); if (yearMonth) { dateRange.value[0] = yearMonth; @@ -127,7 +103,7 @@ watch(() => props.minTime, (newValue) => { watch(() => props.maxTime, (newValue) => { if (newValue) { - const yearMonth = getMonthSelectionValue(newValue); + const yearMonth = getYear0BasedMonthObjectFromString(newValue); if (yearMonth) { dateRange.value[1] = yearMonth; diff --git a/src/components/desktop/MonthSelectionDialog.vue b/src/components/desktop/MonthSelectionDialog.vue index 298fa889..c5e7c458 100644 --- a/src/components/desktop/MonthSelectionDialog.vue +++ b/src/components/desktop/MonthSelectionDialog.vue @@ -15,20 +15,7 @@ - - - - + @@ -43,20 +30,24 @@ diff --git a/src/components/mobile/DateRangeSelectionSheet.vue b/src/components/mobile/DateRangeSelectionSheet.vue index 2323039c..7cbbe23a 100644 --- a/src/components/mobile/DateRangeSelectionSheet.vue +++ b/src/components/mobile/DateRangeSelectionSheet.vue @@ -14,31 +14,13 @@ {{ endDateTime }}

- - - - - + +