enrecipes/app/components/modal/ListPicker.vue

112 lines
2.9 KiB
Vue
Raw Normal View History

2020-11-02 11:36:53 +00:00
<template>
2021-03-10 15:59:50 +00:00
<Page @loaded="onPageLoad" backgroundColor="transparent">
2021-02-28 15:10:26 +00:00
<StackLayout class="dialogContainer" :class="appTheme">
2021-03-21 17:02:04 +00:00
<StackLayout class="dialogHeader" orientation="horizontal">
<Label class="er dialogIcon" :text="icon.time" />
2021-03-23 06:16:25 +00:00
<Label class="dialogTitle " :text="`${title}` | L" />
2021-03-21 17:02:04 +00:00
</StackLayout>
2021-02-28 15:10:26 +00:00
<StackLayout
class="dialogListPicker"
orientation="horizontal"
horizontalAlignment="center"
>
<ListPicker
ref="hrPicker"
:items="hrsList"
:selectedIndex="hrIndex"
@selectedIndexChange="setHrs"
></ListPicker>
<ListPicker
ref="minPicker"
:items="minsList"
:selectedIndex="minIndex"
@selectedIndexChange="setMins"
></ListPicker>
</StackLayout>
<GridLayout rows="auto" columns="*, auto, auto" class="actionsContainer">
<MDButton
variant="text"
col="1"
2021-03-23 06:16:25 +00:00
class="action tb"
2021-02-28 15:10:26 +00:00
:text="'cBtn' | L"
@tap="$modal.close(false)"
/>
<MDButton
variant="text"
col="2"
2021-03-23 06:16:25 +00:00
class="action tb"
2021-02-28 15:10:26 +00:00
:text="`${action}` | L"
@tap="$modal.close(selectedTime)"
/>
</GridLayout>
2020-11-02 11:36:53 +00:00
</StackLayout>
2021-02-28 15:10:26 +00:00
</Page>
2020-11-02 11:36:53 +00:00
</template>
<script>
2021-02-28 15:10:26 +00:00
import { Application } from "@nativescript/core";
import { mapState } from "vuex";
import { localize } from "@nativescript/localize";
2020-11-02 11:36:53 +00:00
export default {
2021-02-28 15:10:26 +00:00
props: ["title", "selectedHr", "selectedMin", "action"],
2020-11-02 11:36:53 +00:00
data() {
return {
hrs: [],
mins: [],
2020-11-02 11:36:53 +00:00
selectedHrs: "00",
selectedMins: "00",
2021-02-28 15:10:26 +00:00
};
2020-11-02 11:36:53 +00:00
},
computed: {
2021-02-28 15:10:26 +00:00
...mapState(["icon"]),
hrsList() {
2021-02-28 15:10:26 +00:00
let h = [...Array(24).keys()];
this.hrs = h;
return h.map((e) => `${e} ${localize("hr")}`);
},
minsList() {
2021-02-28 15:10:26 +00:00
let m = [
...new Set([
...Array(11).keys(),
...Array.from(Array(12), (_, x) => x * 5),
]),
];
this.mins = m;
return m.map((e) => `${e} ${localize("min")}`);
},
2020-11-02 11:36:53 +00:00
hrIndex() {
2021-02-28 15:10:26 +00:00
return this.hrs.indexOf(parseInt(this.selectedHr));
2020-11-02 11:36:53 +00:00
},
minIndex() {
2021-02-28 15:10:26 +00:00
return this.mins.indexOf(parseInt(this.selectedMin));
2020-11-02 11:36:53 +00:00
},
2020-11-10 18:28:48 +00:00
appTheme() {
2021-02-28 15:10:26 +00:00
return Application.systemAppearance();
2020-11-02 11:36:53 +00:00
},
selectedTime() {
2021-02-28 15:10:26 +00:00
return this.selectedHrs + ":" + this.selectedMins;
2020-11-02 11:36:53 +00:00
},
},
methods: {
2021-03-10 15:59:50 +00:00
onPageLoad(args) {
args.object._dialogFragment
.getDialog()
.getWindow()
.setBackgroundDrawable(
new android.graphics.drawable.ColorDrawable(
android.graphics.Color.TRANSPARENT
)
);
},
2021-02-28 15:10:26 +00:00
setHrs(args) {
let hr = "0" + this.hrs[args.object.selectedIndex];
this.selectedHrs = hr.slice(-2);
2020-11-02 11:36:53 +00:00
},
2021-02-28 15:10:26 +00:00
setMins(args) {
let min = "0" + this.mins[args.object.selectedIndex];
this.selectedMins = min.slice(-2);
2020-11-02 11:36:53 +00:00
},
},
2021-02-28 15:10:26 +00:00
};
2020-11-02 11:36:53 +00:00
</script>