From 31572e33dce4e4e148bfb6321b54d314ab979e25 Mon Sep 17 00:00:00 2001 From: Kelani Tolulope Date: Tue, 31 Jan 2023 10:11:22 +0100 Subject: [PATCH] Add navigation for previous and next page on the record page --- .../src/components/Common/RecordToolbar.vue | 256 ++++++++++-------- .../components/PageBlocks/RecordListBase.vue | 26 +- .../PageBlocks/RecordListConfigurator.vue | 5 + client/web/compose/src/store/index.js | 2 + client/web/compose/src/store/ui.js | 115 ++++++++ .../src/views/Admin/Modules/Records/View.vue | 43 +++ .../src/views/Public/Pages/Records/View.vue | 47 ++++ .../compose/types/page-block/record-list.ts | 3 + locale/en/corteza-webapp-compose/block.yaml | 1 + locale/en/corteza-webapp-compose/general.yaml | 5 +- 10 files changed, 395 insertions(+), 108 deletions(-) create mode 100644 client/web/compose/src/store/ui.js diff --git a/client/web/compose/src/components/Common/RecordToolbar.vue b/client/web/compose/src/components/Common/RecordToolbar.vue index 620405fc8..871b7d63f 100644 --- a/client/web/compose/src/components/Common/RecordToolbar.vue +++ b/client/web/compose/src/components/Common/RecordToolbar.vue @@ -5,11 +5,12 @@ class="bg-white p-3" > -
{{ showRecordModal ? $t('label.close') : labels.back || $t('label.back') }} -
+ -
- - - - - {{ labels.delete || $t('label.delete') }} - - - - - - - - {{ $t('label.restore') }} - - - - - {{ labels.clone || $t('label.clone') }} - - - - {{ labels.edit || $t('label.edit') }} - - - - {{ labels.new || $t('label.addNew') }} - - - - - - + - {{ labels.submit || $t('label.save') }} - - -
+ + + + + + + + + + + +
@@ -200,6 +238,12 @@ export default { type: Boolean, required: false, }, + + recordNavigation: { + type: Object, + required: false, + default: () => ({}), + }, }, computed: { diff --git a/client/web/compose/src/components/PageBlocks/RecordListBase.vue b/client/web/compose/src/components/PageBlocks/RecordListBase.vue index 6190100f9..b079edd70 100644 --- a/client/web/compose/src/components/PageBlocks/RecordListBase.vue +++ b/client/web/compose/src/components/PageBlocks/RecordListBase.vue @@ -622,7 +622,7 @@ diff --git a/client/web/compose/src/views/Public/Pages/Records/View.vue b/client/web/compose/src/views/Public/Pages/Records/View.vue index 8b85e3cdd..84a9f88f6 100644 --- a/client/web/compose/src/views/Public/Pages/Records/View.vue +++ b/client/web/compose/src/views/Public/Pages/Records/View.vue @@ -38,6 +38,7 @@ :processing-undelete="processingUndelete" :in-editing="inEditing" :show-record-modal="showRecordModal" + :record-navigation="recordNavigation" @add="handleAdd()" @clone="handleClone()" @edit="handleEdit()" @@ -45,11 +46,13 @@ @undelete="handleUndelete()" @back="handleBack()" @submit="handleFormSubmit('page.record')" + @update-navigation="handleRedirectToPrevOrNext" /> diff --git a/lib/js/src/compose/types/page-block/record-list.ts b/lib/js/src/compose/types/page-block/record-list.ts index d20ef56d6..aba870c1b 100644 --- a/lib/js/src/compose/types/page-block/record-list.ts +++ b/lib/js/src/compose/types/page-block/record-list.ts @@ -22,6 +22,7 @@ interface Options { hideRecordEditButton: boolean; hideRecordViewButton: boolean; hideRecordPermissionsButton: boolean; + enableRecordPageNavigation: boolean; allowExport: boolean; perPage: number; recordDisplayOption: string; @@ -72,6 +73,7 @@ const defaults: Readonly = Object.freeze({ hideRecordEditButton: false, hideRecordViewButton: true, hideRecordPermissionsButton: true, + enableRecordPageNavigation: true, allowExport: false, perPage: 20, recordDisplayOption: 'sameTab', @@ -146,6 +148,7 @@ export class PageBlockRecordList extends PageBlock { 'hideRecordEditButton', 'hideRecordViewButton', 'hideRecordPermissionsButton', + 'enableRecordPageNavigation', 'editable', 'draggable', 'linkToParent', diff --git a/locale/en/corteza-webapp-compose/block.yaml b/locale/en/corteza-webapp-compose/block.yaml index 02a1a62d9..9fdc99c8f 100644 --- a/locale/en/corteza-webapp-compose/block.yaml +++ b/locale/en/corteza-webapp-compose/block.yaml @@ -313,6 +313,7 @@ recordList: hideRecordPermissionsButton: Hide record permissions button hideRecordReminderButton: Hide record reminder button hideRecordViewButton: Hide view record button + enableRecordPageNavigation: Enable record page navigation import: dropzoneFileAdded: '{{name}} was uploaded and is ready for import ({{count}} record)' dropzoneFileAdded_plural: '{{name}} was uploaded and is ready for import ({{count}} records)' diff --git a/locale/en/corteza-webapp-compose/general.yaml b/locale/en/corteza-webapp-compose/general.yaml index 88d10145b..a0c060192 100644 --- a/locale/en/corteza-webapp-compose/general.yaml +++ b/locale/en/corteza-webapp-compose/general.yaml @@ -143,4 +143,7 @@ resourceList: prev: Previous showing: '{{from}} - {{to}} of {{count}} items' single: One item - single_plural: '{{count}} items' \ No newline at end of file + single_plural: '{{count}} items' +recordNavigation: + next: Next record + prev: Previous record