diff --git a/frontend/src/components/Icon.vue b/frontend/src/components/Icon.vue new file mode 100644 index 00000000..8516b2f8 --- /dev/null +++ b/frontend/src/components/Icon.vue @@ -0,0 +1,21 @@ + + + {{ icon }} + + + + + diff --git a/frontend/src/components/Icons/GroupByIcon.vue b/frontend/src/components/Icons/GroupByIcon.vue new file mode 100644 index 00000000..e1b03a15 --- /dev/null +++ b/frontend/src/components/Icons/GroupByIcon.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/frontend/src/components/Icons/KanbanIcon.vue b/frontend/src/components/Icons/KanbanIcon.vue index bb12b401..fc4c965f 100644 --- a/frontend/src/components/Icons/KanbanIcon.vue +++ b/frontend/src/components/Icons/KanbanIcon.vue @@ -1,18 +1,16 @@ - - - + diff --git a/frontend/src/components/Icons/ListIcon.vue b/frontend/src/components/Icons/ListIcon.vue new file mode 100644 index 00000000..f194dcc4 --- /dev/null +++ b/frontend/src/components/Icons/ListIcon.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/frontend/src/components/LayoutHeader.vue b/frontend/src/components/LayoutHeader.vue index c72d9084..14183680 100644 --- a/frontend/src/components/LayoutHeader.vue +++ b/frontend/src/components/LayoutHeader.vue @@ -1,7 +1,7 @@ - + diff --git a/frontend/src/components/ListViews/ContactsListView.vue b/frontend/src/components/ListViews/ContactsListView.vue index 26fbc18a..bfa5e695 100644 --- a/frontend/src/components/ListViews/ContactsListView.vue +++ b/frontend/src/components/ListViews/ContactsListView.vue @@ -7,6 +7,7 @@ getRowRoute: (row) => ({ name: 'Contact', params: { contactId: row.name }, + query: { view: route.query.view, viewType: route.params.viewType }, }), selectable: options.selectable, showTooltip: options.showTooltip, @@ -174,6 +175,7 @@ import { } from 'frappe-ui' import { sessionStore } from '@/stores/session' import { ref, computed, watch } from 'vue' +import { useRoute } from 'vue-router' const props = defineProps({ rows: { @@ -205,6 +207,8 @@ const emit = defineEmits([ 'likeDoc', ]) +const route = useRoute() + const pageLengthCount = defineModel() const list = defineModel('list') @@ -230,7 +234,7 @@ const listBulkActionsRef = ref(null) defineExpose({ customListActions: computed( - () => listBulkActionsRef.value?.customListActions + () => listBulkActionsRef.value?.customListActions, ), }) diff --git a/frontend/src/components/ListViews/DealsListView.vue b/frontend/src/components/ListViews/DealsListView.vue index dc0c4fc8..0dbe0934 100644 --- a/frontend/src/components/ListViews/DealsListView.vue +++ b/frontend/src/components/ListViews/DealsListView.vue @@ -4,14 +4,21 @@ :columns="columns" :rows="rows" :options="{ - getRowRoute: (row) => ({ name: 'Deal', params: { dealId: row.name } }), + getRowRoute: (row) => ({ + name: 'Deal', + params: { dealId: row.name }, + query: { view: route.query.view, viewType: route.params.viewType }, + }), selectable: options.selectable, showTooltip: options.showTooltip, resizeColumn: options.resizeColumn, }" row-key="name" > - + listBulkActionsRef.value?.customListActions + () => listBulkActionsRef.value?.customListActions, ), }) diff --git a/frontend/src/components/ListViews/LeadsListView.vue b/frontend/src/components/ListViews/LeadsListView.vue index 254d6e21..a0e37232 100644 --- a/frontend/src/components/ListViews/LeadsListView.vue +++ b/frontend/src/components/ListViews/LeadsListView.vue @@ -4,14 +4,21 @@ :columns="columns" :rows="rows" :options="{ - getRowRoute: (row) => ({ name: 'Lead', params: { leadId: row.name } }), + getRowRoute: (row) => ({ + name: 'Lead', + params: { leadId: row.name }, + query: { view: route.query.view, viewType: route.params.viewType }, + }), selectable: options.selectable, showTooltip: options.showTooltip, resizeColumn: options.resizeColumn, }" row-key="name" > - + listBulkActionsRef.value?.customListActions + () => listBulkActionsRef.value?.customListActions, ), }) diff --git a/frontend/src/components/ListViews/OrganizationsListView.vue b/frontend/src/components/ListViews/OrganizationsListView.vue index 7011fc65..6099ba8d 100644 --- a/frontend/src/components/ListViews/OrganizationsListView.vue +++ b/frontend/src/components/ListViews/OrganizationsListView.vue @@ -6,6 +6,7 @@ getRowRoute: (row) => ({ name: 'Organization', params: { organizationId: row.name }, + query: { view: route.query.view, viewType: route.params.viewType }, }), selectable: options.selectable, showTooltip: options.showTooltip, @@ -156,6 +157,7 @@ import { } from 'frappe-ui' import { sessionStore } from '@/stores/session' import { ref, computed, watch } from 'vue' +import { useRoute } from 'vue-router' const props = defineProps({ rows: { @@ -187,6 +189,8 @@ const emit = defineEmits([ 'likeDoc', ]) +const route = useRoute() + const pageLengthCount = defineModel() const list = defineModel('list') diff --git a/frontend/src/components/Modals/ViewModal.vue b/frontend/src/components/Modals/ViewModal.vue index 3ef9d1e4..ebeec92d 100644 --- a/frontend/src/components/Modals/ViewModal.vue +++ b/frontend/src/components/Modals/ViewModal.vue @@ -108,9 +108,9 @@ watch(show, (value) => { duplicateMode.value = false nextTick(() => { _view.value = { ...view.value } - if (_view.value.name) { + if (_view.value.mode === 'edit') { editMode.value = true - } else if (_view.value.label) { + } else if (_view.value.mode === 'duplicate') { duplicateMode.value = true } }) diff --git a/frontend/src/components/ViewBreadcrumbs.vue b/frontend/src/components/ViewBreadcrumbs.vue new file mode 100644 index 00000000..43a33285 --- /dev/null +++ b/frontend/src/components/ViewBreadcrumbs.vue @@ -0,0 +1,97 @@ + + + + {{ __(routeName) }} + + / + + + + + + + + + + + + + + + + + + {{ item.label }} + + + + + + + + + + + + + + + + diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue index b0f4c06c..eac26611 100644 --- a/frontend/src/components/ViewControls.vue +++ b/frontend/src/components/ViewControls.vue @@ -3,43 +3,6 @@ v-if="isMobileView" class="flex flex-col justify-between gap-2 sm:px-5 px-3 py-4" > - - - - - - - - {{ currentView.icon }} - - - - - - - - - - - - - - - - - - - - - - @@ -59,6 +22,11 @@ + + + + + - - - - - - {{ currentView.icon }} - - - - - - - - - - - - - - - - { viewUpdated = false reloadView() + list.reload() }, }" /> @@ -268,8 +208,9 @@