enrecipes/app/components/modal/ActionDialog.vue

116 lines
3.5 KiB
Vue
Raw Normal View History

2020-10-21 17:54:45 +00:00
<template>
<Page>
2021-01-13 05:02:48 +00:00
<GridLayout columns="*" :rows="`auto, auto, ${stretch? '*':'auto'}, auto`" class="dialogContainer" :class="appTheme">
2021-01-23 17:20:15 +00:00
<Label row="0" class="er dialogIcon" backgroundColor="#858585" :color="iconColor" :text="icon[helpIcon]" />
2021-01-13 05:02:48 +00:00
<Label row="1" class="dialogTitle orkm" :text="`${title}` | L" />
<ScrollView row="2" width="100%">
<StackLayout>
2021-01-23 17:20:15 +00:00
<MDButton v-for="(item, index) in newList" :key="index" class="actionItem" :class="{'orkm':title==='srt' && sortType=== item}" :color="title==='srt' && sortType=== item ? '#ff5200':''" variant="text" :rippleColor="rippleColor"
:text="`${localized(item)}${title==='srt' && sortType=== item ? '*':''}`" @loaded="centerLabel" @tap="tapAction(item)" @longPress="removeItem(index)" />
</StackLayout>
</ScrollView>
2021-01-13 05:02:48 +00:00
<GridLayout row="3" rows="auto" columns="auto, *, auto" class="actionsContainer">
<MDButton :rippleColor="rippleColor" variant="text" v-if="action" col="0" class="action orkm pull-left" :text="`${action}` | L" @tap="$modal.close(action)" />
2021-01-13 05:02:48 +00:00
<MDButton :rippleColor="rippleColor" variant="text" col="2" class="action orkm pull-right" :text="'cBtn' | L" @tap="$modal.close(false)" />
</GridLayout>
2020-12-29 10:35:19 +00:00
</GridLayout>
</Page>
2020-10-21 17:54:45 +00:00
</template>
<script>
import {
2021-01-23 17:20:15 +00:00
Application,
Color
} from "@nativescript/core"
2020-12-29 10:35:19 +00:00
import * as Toast from "nativescript-toast"
import {
localize
}
from "@nativescript/localize"
import {
mapState,
mapActions
}
from "vuex"
import ConfirmDialog from "./ConfirmDialog.vue"
2020-10-21 17:54:45 +00:00
export default {
2021-01-13 05:02:48 +00:00
props: [ "title", "list", "stretch", "action", "helpIcon" ],
2020-12-29 10:35:19 +00:00
data() {
return {
newList: this.list,
}
},
computed: {
2021-01-13 05:02:48 +00:00
...mapState( [ "sortType", 'icon' ] ),
appTheme() {
return Application.systemAppearance()
},
2021-01-13 05:02:48 +00:00
isLightMode() {
return this.appTheme == "light"
},
2020-11-10 18:28:48 +00:00
rippleColor() {
2021-01-23 17:20:15 +00:00
return "rgba(133,133,133,0.2)"
2020-11-10 18:28:48 +00:00
},
2021-01-13 05:02:48 +00:00
iconColor() {
2021-01-23 17:20:15 +00:00
return this.isLightMode ? "#f0f0f0" : "#1A1A1A"
2020-11-10 18:28:48 +00:00
},
2020-10-22 18:36:50 +00:00
},
2020-10-21 17:54:45 +00:00
methods: {
2020-12-29 10:35:19 +00:00
...mapActions( [ "removeListItemAction" ] ),
localized( item ) {
2021-01-13 05:02:48 +00:00
if ( this.title !== 'lang' )
2020-12-29 10:35:19 +00:00
return localize( item )
else
return item
},
tapAction( item ) {
this.$modal.close( item )
2020-10-21 17:54:45 +00:00
},
2021-01-23 17:20:15 +00:00
centerLabel( args ) {
args.object.android.setGravity( 16 )
2020-11-10 18:28:48 +00:00
},
2020-12-29 10:35:19 +00:00
deletionConfirmation( type, description ) {
return this.$showModal( ConfirmDialog, {
props: {
2021-01-13 05:02:48 +00:00
title: 'conf',
2020-12-29 10:35:19 +00:00
description,
2021-01-13 05:02:48 +00:00
cancelButtonText: "cBtn",
okButtonText: "rBtn",
2021-01-23 17:20:15 +00:00
helpIcon: 'err',
2021-01-13 05:02:48 +00:00
bgColor: '#c92a2a',
2020-12-29 10:35:19 +00:00
},
} )
},
removeItem( index ) {
let item = this.newList[ index ]
let vm = this
2021-01-13 05:02:48 +00:00
function removeListItem( type, listName, desc ) {
vm.deletionConfirmation( type, `${localize(desc)} "${localize(item)}"\n\n${localize('rmLIInfo')}` ).then( action => {
if ( action != null && action )
2020-12-29 10:35:19 +00:00
vm.removeListItemAction( {
item,
listName
} )
} )
}
switch ( this.title ) {
2021-01-13 05:02:48 +00:00
case "cui":
removeListItem( 'cuisine', "cuisines", "rmCuiInfo" )
2020-12-29 10:35:19 +00:00
break;
2021-01-13 05:02:48 +00:00
case "cat":
removeListItem( "category", "categories", "rmCatInfo" )
2020-12-29 10:35:19 +00:00
break;
2021-01-13 05:02:48 +00:00
case "yieldU":
removeListItem( "yield unit", "yieldUnits", "rmYUInfo" )
2020-12-29 10:35:19 +00:00
break;
2021-01-13 05:02:48 +00:00
case "Unit":
removeListItem( "unit", "units", "rmUInfo" )
2020-12-29 10:35:19 +00:00
break;
default:
}
}
2020-10-21 17:54:45 +00:00
},
}
</script>