From c33c0487cfbb0045eda1e8e1cafa9ad419020463 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Mon, 7 Aug 2023 00:55:13 +0800 Subject: [PATCH] add add/edit transaction category dialog --- src/components/desktop/ColorSelect.vue | 132 +++++++++ src/components/desktop/IconSelect.vue | 141 +++++++++ src/desktop-main.js | 6 + src/lib/ui.desktop.js | 19 +- src/views/desktop/categories/ListPage.vue | 37 ++- .../categories/list/dialogs/EditDialog.vue | 275 ++++++++++++++++++ src/views/desktop/transactions/ListPage.vue | 4 +- 7 files changed, 601 insertions(+), 13 deletions(-) create mode 100644 src/components/desktop/ColorSelect.vue create mode 100644 src/components/desktop/IconSelect.vue create mode 100644 src/views/desktop/categories/list/dialogs/EditDialog.vue diff --git a/src/components/desktop/ColorSelect.vue b/src/components/desktop/ColorSelect.vue new file mode 100644 index 00000000..d35ac6f9 --- /dev/null +++ b/src/components/desktop/ColorSelect.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/components/desktop/IconSelect.vue b/src/components/desktop/IconSelect.vue new file mode 100644 index 00000000..d9944413 --- /dev/null +++ b/src/components/desktop/IconSelect.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/desktop-main.js b/src/desktop-main.js index 83212db6..ad2ee30a 100644 --- a/src/desktop-main.js +++ b/src/desktop-main.js @@ -39,6 +39,7 @@ import { VSnackbar } from 'vuetify/components/VSnackbar'; import { VSwitch } from 'vuetify/components/VSwitch'; import { VTabs, VTab } from 'vuetify/components/VTabs'; import { VTable } from 'vuetify/components/VTable'; +import { VTextarea } from 'vuetify/components/VTextarea'; import { VTextField } from 'vuetify/components/VTextField'; import { VToolbar } from 'vuetify/components/VToolbar'; import { VTooltip } from 'vuetify/components/VTooltip'; @@ -82,6 +83,8 @@ import PinCodeInput from '@/components/common/PinCodeInput.vue'; import ItemIcon from '@/components/desktop/ItemIcon.vue'; import BtnVerticalGroup from '@/components/desktop/BtnVerticalGroup.vue'; import AmountInput from '@/components/desktop/AmountInput.vue'; +import ColorSelect from '@/components/desktop/ColorSelect.vue'; +import IconSelect from '@/components/desktop/IconSelect.vue'; import StepsBar from '@/components/desktop/StepsBar.vue'; import ConfirmDialog from '@/components/desktop/ConfirmDialog.vue'; import SnackBar from '@/components/desktop/SnackBar.vue'; @@ -162,6 +165,7 @@ const vuetify = createVuetify({ VTabs, VTab, VTable, + VTextarea, VTextField, VToolbar, VTooltip, @@ -392,6 +396,8 @@ app.component('PinCodeInput', PinCodeInput); app.component('ItemIcon', ItemIcon); app.component('BtnVerticalGroup', BtnVerticalGroup); app.component('AmountInput', AmountInput); +app.component('ColorSelect', ColorSelect); +app.component('IconSelect', IconSelect); app.component('StepsBar', StepsBar); app.component('ConfirmDialog', ConfirmDialog); app.component('SnackBar', SnackBar); diff --git a/src/lib/ui.desktop.js b/src/lib/ui.desktop.js index b9a868fa..306a707f 100644 --- a/src/lib/ui.desktop.js +++ b/src/lib/ui.desktop.js @@ -19,19 +19,24 @@ export function getCssValue(element, name) { return computedStyle.getPropertyValue(name); } -export function scrollToMenuListItem(listContentEl) { - if (!listContentEl) { +export function scrollToSelectedItem(parentEl, containerSelector, selectedItemSelector) { + if (!parentEl) { return; } - const lists = listContentEl.querySelectorAll('div.v-list'); + let container = parentEl; - if (!lists.length || !lists[0]) { - return; + if (containerSelector) { + const lists = parentEl.querySelectorAll(containerSelector); + + if (!lists.length || !lists[0]) { + return; + } + + container = lists[0]; } - const container = lists[0]; - const selectedItems = container.querySelectorAll('div.v-list-item.list-item-selected'); + const selectedItems = container.querySelectorAll(selectedItemSelector); if (!selectedItems.length || !selectedItems[0]) { return; diff --git a/src/views/desktop/categories/ListPage.vue b/src/views/desktop/categories/ListPage.vue index cf1d97d3..2d660863 100644 --- a/src/views/desktop/categories/ListPage.vue +++ b/src/views/desktop/categories/ListPage.vue @@ -170,7 +170,8 @@ - + @@ -178,7 +179,8 @@ diff --git a/src/views/desktop/transactions/ListPage.vue b/src/views/desktop/transactions/ListPage.vue index d5478af7..897646e9 100644 --- a/src/views/desktop/transactions/ListPage.vue +++ b/src/views/desktop/transactions/ListPage.vue @@ -351,7 +351,7 @@ import { categoryTypeToTransactionType, transactionTypeToCategoryType } from '@/lib/category.js'; -import { scrollToMenuListItem } from '@/lib/ui.desktop.js'; +import { scrollToSelectedItem } from '@/lib/ui.desktop.js'; import { mdiMagnify, @@ -816,7 +816,7 @@ export default { }, scrollMenuToSelectedItem(menu) { this.$nextTick(() => { - scrollToMenuListItem(menu.contentEl); + scrollToSelectedItem(menu.contentEl, 'div.v-list', 'div.v-list-item.list-item-selected'); }); }, getDisplayTime(transaction) {