Product.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template lang="pug">
  2. .pos-step
  3. .products-selector
  4. searcher(:items='products' :keys="['name', 'displayName']" @onSearch='filterProducts')
  5. card-grid(:items='visibleProducts' :loading='loadingProducts' @onAdd='showProductForm' @onSelect='selectProduct')
  6. product-modal(:show='showingProductForm' @onAccept='submitProduct' @onCancel='hideProductForm')
  7. cart(:items='cartItems' @onTotalComputed='changeCartTotal' @onIncrementQty='addToCart' @onDecrementQty='decreaseFromCart' @onDeleteItem='removeFromCart' :options='selectedCurrency')
  8. </template>
  9. <script>
  10. import { mapGetters, mapActions } from 'vuex'
  11. import { Searcher, CardGrid, Cart } from '@@/common'
  12. import ProductModal from '@@/modals/ProductModal'
  13. import { FILTER_PRODUCTS, SELECT_PRODUCT, SHOW_PRODUCT_FORM, HIDE_PRODUCT_FORM, SUBMIT_PRODUCT, CHANGE_CART_TOTAL, ADD_TO_CART, DECREASE_FROM_CART, REMOVE_FROM_CART } from '@/constants/actionTypes'
  14. export default {
  15. components: {
  16. Searcher,
  17. CardGrid,
  18. Cart,
  19. ProductModal
  20. },
  21. computed: {
  22. ...mapGetters([
  23. 'products',
  24. 'visibleProducts',
  25. 'loadingProducts',
  26. 'showingProductForm',
  27. 'cartItems',
  28. 'selectedCurrency'
  29. ])
  30. },
  31. methods: mapActions([
  32. FILTER_PRODUCTS,
  33. SELECT_PRODUCT,
  34. SHOW_PRODUCT_FORM,
  35. HIDE_PRODUCT_FORM,
  36. SUBMIT_PRODUCT,
  37. CHANGE_CART_TOTAL,
  38. ADD_TO_CART,
  39. DECREASE_FROM_CART,
  40. REMOVE_FROM_CART
  41. ])
  42. }
  43. </script>
  44. <style lang="sass">
  45. .pos-step
  46. .products-selector
  47. width: calc(100% - 300px)
  48. height: 100%
  49. padding-right: 5px
  50. display: inline-block
  51. </style>