New vipps-pill component opens vipps when clicked.
This commit is contained in:
		
							
								
								
									
										81
									
								
								frontend/ui/VippsPill.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								frontend/ui/VippsPill.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | |||||||
|  | <template> | ||||||
|  |   <div aria-label="button" role="button" @click="openVipps" tabindex="0"> | ||||||
|  |     <img src="public/assets/images/vipps-pay_with_vipps_pill.png" /> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | export default { | ||||||
|  |   props: { | ||||||
|  |     amount: { | ||||||
|  |       type: Number, | ||||||
|  |       default: 1 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       phone: __PHONE__, | ||||||
|  |       name: __NAME__, | ||||||
|  |       price: __PRICE__, | ||||||
|  |       message: __MESSAGE__ | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   computed: { | ||||||
|  |     isMobile: function() { | ||||||
|  |       return this.isMobileFunction(); | ||||||
|  |     }, | ||||||
|  |     priceToPay: function() { | ||||||
|  |       return this.amount * (this.price * 100); | ||||||
|  |     }, | ||||||
|  |     vippsUrlBasedOnUserAgent: function() { | ||||||
|  |       if (navigator.userAgent.includes("iPhone")) { | ||||||
|  |         return ( | ||||||
|  |           "https://qr.vipps.no/28/2/01/031/47" + | ||||||
|  |           this.phone.replace(/ /g, "") + | ||||||
|  |           "?v=1&m=" + | ||||||
|  |           this.message + | ||||||
|  |           "&a=" + | ||||||
|  |           this.priceToPay | ||||||
|  |         ); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       return ( | ||||||
|  |         "https://qr.vipps.no/28/2/01/031/47" + | ||||||
|  |         this.phone.replace(/ /g, "") + | ||||||
|  |         "?v=1&m=" + | ||||||
|  |         this.message | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     openVipps() { | ||||||
|  |       if (!this.isMobileFunction()) { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       window.location.assign(this.vippsUrlBasedOnUserAgent); | ||||||
|  |     }, | ||||||
|  |     isMobileFunction() { | ||||||
|  |       if ( | ||||||
|  |         navigator.userAgent.match(/Android/i) || | ||||||
|  |         navigator.userAgent.match(/webOS/i) || | ||||||
|  |         navigator.userAgent.match(/iPhone/i) || | ||||||
|  |         navigator.userAgent.match(/iPad/i) || | ||||||
|  |         navigator.userAgent.match(/iPod/i) || | ||||||
|  |         navigator.userAgent.match(/BlackBerry/i) || | ||||||
|  |         navigator.userAgent.match(/Windows Phone/i) | ||||||
|  |       ) { | ||||||
|  |         return true; | ||||||
|  |       } else { | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | img { | ||||||
|  |   cursor: pointer; | ||||||
|  |   width: 100%; | ||||||
|  | } | ||||||
|  | </style> | ||||||
							
								
								
									
										
											BIN
										
									
								
								public/assets/images/vipps-pay_with_vipps_pill.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/assets/images/vipps-pay_with_vipps_pill.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.6 KiB | 
		Reference in New Issue
	
	Block a user