Product.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template lang="pug">
  2. .pos-step
  3. .products-selector
  4. searcher(:items='products' :keys="['name', 'displayName']")
  5. card-grid(:items='products' :loading='loadingProducts' canAdd @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')
  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 { 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: mapGetters([
  22. 'products',
  23. 'loadingProducts',
  24. 'showingProductForm',
  25. 'cartItems'
  26. ]),
  27. methods: mapActions([
  28. SELECT_PRODUCT,
  29. SHOW_PRODUCT_FORM,
  30. HIDE_PRODUCT_FORM,
  31. SUBMIT_PRODUCT,
  32. CHANGE_CART_TOTAL,
  33. ADD_TO_CART,
  34. DECREASE_FROM_CART,
  35. REMOVE_FROM_CART
  36. ])
  37. }
  38. </script>
  39. <style lang="sass">
  40. .pos-step
  41. .products-selector
  42. width: calc(100% - 300px)
  43. height: 100%
  44. padding-right: 5px
  45. display: inline-block
  46. </style>