/** @license Copyright (c) 2018 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ import { html } from '@polymer/lit-element'; import { PageViewElement } from './page-view-element.js'; import { connect } from 'pwa-helpers/connect-mixin.js'; // This element is connected to the Redux store. import { store } from '../store.js'; // These are the actions needed by this element. import { checkout } from '../actions/shop.js'; // We are lazy loading its reducer. import shop, { cartQuantitySelector } from '../reducers/shop.js'; store.addReducers({ shop }); // These are the elements needed by this element. import './shop-products.js'; import './shop-cart.js'; // These are the shared styles needed by this element. import { SharedStyles } from './shared-styles.js'; import { ButtonSharedStyles } from './button-shared-styles.js'; import { addToCartIcon } from './my-icons.js'; class MyView3 extends connect(store)(PageViewElement) { _render({_quantity, _error}) { return html` ${SharedStyles} ${ButtonSharedStyles}

Redux example: shopping cart

${addToCartIcon}
${_quantity}

This is a slightly more advanced Redux example, that simulates a shopping cart: getting the products, adding/removing items to the cart, and a checkout action, that can sometimes randomly fail (to simulate where you would add failure handling).

This view, as well as its 2 child elements, <shop-products> and <shop-cart> are connected to the Redux store.

Products


Your Cart

${_error}

`; } static get properties() { return { // This is the data from the store. _quantity: Number, _error: String }} // This is called every time something is updated in the store. _stateChanged(state) { this._quantity = cartQuantitySelector(state); this._error = state.shop.error; } } window.customElements.define('my-view3', MyView3);