diff --git a/README.md b/README.md index be71878..fb71e0b 100644 --- a/README.md +++ b/README.md @@ -178,12 +178,18 @@ example for crudActionsAfter slot: canUpdate: {required: false, type: Boolean, default: true}, ``` ``` +canUpdateResourceKey: {required: false, type: String, default: ''}, +``` +``` canAdd: {required: false, type: Boolean, default: true}, ``` ``` canDelete: {required: false, type: Boolean, default: true}, ``` ``` +canDeleteResourceKey: {required: false, type: String, default: ''}, +``` +``` canSearch: {required: false, type: Boolean, default: false}, ``` ``` diff --git a/src/VuetifyResource.vue b/src/VuetifyResource.vue index be9d211..5c5d670 100644 --- a/src/VuetifyResource.vue +++ b/src/VuetifyResource.vue @@ -83,7 +83,7 @@ fab slot="activator" small - v-if="canUpdate === true && selected.length === 1" + v-if="canUpdateResources(selected) && selected.length === 1" v-on:click="openUpdateHandler()" > $vuetify.icons.edit @@ -113,7 +113,7 @@ fab slot="activator" small - v-if="canDelete === true && selected.length >= 1" + v-if="canDeleteResources(selected) && selected.length >= 1" v-on:click="showDeleteConfirmation()" > $vuetify.icons.delete @@ -166,7 +166,7 @@ > - + {{ lang('update') }} - + { + if (resource[this.canDeleteResourceKey] === false) { + canDelete = false; + return; + } + }); + } + return canDelete; + }, + + canUpdateResources(selected) { + let canUpdate = this.canUpdate; + if (this.canUpdateResourceKey !== '') { + selected.forEach((resource) => { + if (resource[this.canUpdateResourceKey] === false) { + canUpdate = false; + return; + } + }); + } + return canUpdate; + }, }, };