Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented: option to view full-size image on click by creating image modal (#283) #365

Closed
wants to merge 8 commits into from
62 changes: 62 additions & 0 deletions src/components/ImageModal.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<template>
<ion-page>
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-button @click="closeModal">
<ion-icon slot="icon-only" :icon="closeOutline" />
</ion-button>
<ion-title>{{ virtualProductName }}</ion-title>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content>
<img :src="imageUrl" />
</ion-content>
</ion-page>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { closeOutline } from "ionicons/icons";
import {
IonButton,
IonButtons,
IonContent,
IonHeader,
IonIcon,
IonPage,
IonTitle,
IonToolbar,
modalController
} from '@ionic/vue';
export default defineComponent({
name: 'ImageModal',
components: {
IonButton,
IonButtons,
IonContent,
IonHeader,
IonIcon,
IonPage,
IonTitle,
IonToolbar
},
props: {
imageUrl: String,
virtualProductName: String
},
methods: {
closeModal() {
modalController.dismiss({
dismissed: true
})
}
},
setup() {
return {
closeOutline
}
}
});
</script>
13 changes: 12 additions & 1 deletion src/views/Completed.vue
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
<div v-for="item in order.orderItems" :key="item.orderItemSeqId" class="order-item">
<div class="product-info">
<ion-item lines="none">
<ion-thumbnail slot="start">
<ion-thumbnail slot="start" @click="openImageModal(item)">
<ShopifyImg :src="getProduct(item.productId).mainImageUrl" size="small"/>
</ion-thumbnail>
<ion-label>
Expand Down Expand Up @@ -218,6 +218,7 @@ import logger from '@/logger';
import ShippingLabelErrorModal from '@/components/ShippingLabelErrorModal.vue';
import { Actions, hasPermission } from '@/authorization'
import OrderActionsPopover from '@/components/OrderActionsPopover.vue'
import ImageModal from '@/components/ImageModal.vue'

export default defineComponent({
name: 'Completed',
Expand Down Expand Up @@ -701,6 +702,16 @@ export default defineComponent({
});
return popover.present();
},
async openImageModal(item: any){
const imageModal = await modalController.create({
component: ImageModal,
componentProps: {
imageUrl: this.getProduct(item.productId).mainImageUrl,
virtualProductName: item.virtualProductName
},
});
return imageModal.present();
},
},
setup() {
const store = useStore();
Expand Down
13 changes: 12 additions & 1 deletion src/views/InProgress.vue
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
<div v-for="item in order.orderItems" :key="item.orderItemSeqId" class="order-item">
<div class="product-info">
<ion-item lines="none">
<ion-thumbnail slot="start">
<ion-thumbnail slot="start" @click="openImageModal(item)">
<ShopifyImg :src="getProduct(item.productId).mainImageUrl" size="small"/>
</ion-thumbnail>
<ion-label>
Expand Down Expand Up @@ -331,6 +331,7 @@ import ReportIssuePopover from '@/components/ReportIssuePopover.vue'
import ShipmentBoxPopover from '@/components/ShipmentBoxPopover.vue'
import QRCodeModal from '@/components/QRCodeModal.vue'
import { useAuthStore } from '@hotwax/dxp-components'
import ImageModal from '@/components/ImageModal.vue';

export default defineComponent({
name: 'InProgress',
Expand Down Expand Up @@ -1186,6 +1187,16 @@ export default defineComponent({
});
return qrCodeModal.present();
},
async openImageModal(item: any){
const imageModal = await modalController.create({
component: ImageModal,
componentProps: {
imageUrl: this.getProduct(item.productId).mainImageUrl,
virtualProductName: item.productName
},
});
return imageModal.present();
},
},
async mounted () {
this.store.dispatch('util/fetchRejectReasons')
Expand Down
15 changes: 13 additions & 2 deletions src/views/OpenOrders.vue
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
<div v-for="item in kitProduct" :key="item.orderItemSeqId" class="order-item">
<div class="product-info">
<ion-item lines="none">
<ion-thumbnail slot="start">
<ion-thumbnail slot="start" @click="openImageModal(item)">
<ShopifyImg :src="getProduct(item.productId).mainImageUrl" size="small"/>
</ion-thumbnail>
<ion-label>
Expand Down Expand Up @@ -183,6 +183,7 @@ import { translate } from '@hotwax/dxp-components';
import { UserService } from '@/services/UserService';
import { Actions, hasPermission } from '@/authorization'
import OrderActionsPopover from '@/components/OrderActionsPopover.vue'
import ImageModal from '@/components/ImageModal.vue';

export default defineComponent({
name: 'OpenOrders',
Expand Down Expand Up @@ -377,7 +378,17 @@ export default defineComponent({
},
fetchProductStock(productId: string) {
this.store.dispatch('stock/fetchStock', { productId })
}
},
async openImageModal(item: any){
const imageModal = await modalController.create({
component: ImageModal,
componentProps: {
imageUrl: this.getProduct(item.productId).mainImageUrl,
virtualProductName: item.virtualProductName
},
});
return imageModal.present();
},
},
async mounted () {
emitter.on('updateOrderQuery', this.updateOrderQuery)
Expand Down
17 changes: 14 additions & 3 deletions src/views/OrderDetail.vue
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<div v-for="item in order.orderItems" :key="item" class="order-item">
<div class="product-info">
<ion-item lines="none">
<ion-thumbnail slot="start">
<ion-thumbnail slot="start" @click="openImageModal(item)">
<ShopifyImg :src="getProduct(item.productId).mainImageUrl" size="small"/>
</ion-thumbnail>
<ion-label>
Expand Down Expand Up @@ -242,7 +242,7 @@
</ion-item>

<ion-item lines="none" v-for="item in shipGroup.items" :key="item">
<ion-thumbnail slot="start">
<ion-thumbnail slot="start" @click="openImageModal(item)">
<ShopifyImg :src="getProduct(item.productId).mainImageUrl" size="small"/>
</ion-thumbnail>
<ion-label>
Expand Down Expand Up @@ -330,6 +330,7 @@ import ShipmentBoxTypePopover from '@/components/ShipmentBoxTypePopover.vue'
import ShipmentBoxPopover from '@/components/ShipmentBoxPopover.vue'
import ReportIssuePopover from '@/components/ReportIssuePopover.vue'
import ShippingDetails from '@/views/ShippingDetails.vue';
import ImageModal from '@/components/ImageModal.vue';

export default defineComponent({
name: "OrderDetail",
Expand Down Expand Up @@ -1198,7 +1199,17 @@ export default defineComponent({
},
isTrackingRequiredForAnyShipmentPackage(order: any) {
return order.shipmentPackages?.some((shipmentPackage: any) => shipmentPackage.isTrackingRequired === 'Y')
}
},
async openImageModal(item: any){
const imageModal = await modalController.create({
component: ImageModal,
componentProps: {
imageUrl: this.getProduct(item.productId).mainImageUrl,
virtualProductName: item.virtualProductName
},
});
return imageModal.present();
},
},
setup() {
const store = useStore();
Expand Down