/** @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 { LitElement, html } from '@polymer/lit-element'; 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 { createComment } from '../actions/firebaseFirestore'; // Import button styles import { ButtonSharedStyles } from './button-shared-styles.js'; class ForumElement extends connect(store)(LitElement) { _render(props) { return html` ${ButtonSharedStyles}

${props.day ? props.day.toDate().toLocaleDateString("en-US"): ""}${props.author}

${props.subject}

${props.content}

`; } static get properties() { return { signedIn: Boolean, author: String, subject: String, content: String, day: Date, postId: String, comments: Array, showComments: Boolean, postComment: Boolean }}; _stateChanged(state) { this.signedIn = state.firebaseAuth.signedIn; } _firstRendered() { this.updateComments(); } constructor() { super(); this.signedIn = false; this.author = ""; this.content = ""; this.postId = ""; this.comments = []; this.showComments = false; this.postComment = false; } submitComment() { var commentContent = this.shadowRoot.getElementById('comment-content-field'); if( commentContent && commentContent.value.trim().length > 0) { if(confirm('Are you sure you want to submit this comment on ' + this.author + "'s post about " + this.subject + '?')) { store.dispatch(createComment(this.postId, commentContent.value.replace('\n','
'))); commentContent.value = ""; } } else { alert('Please fill out comment subject and content fields.'); } } updateComments() { var commentArea = this.shadowRoot.getElementById('comment-area'); commentArea.innerHTML = ""; for(var i = this.comments.length-1; i >= 0; i--) { var commentElement = document.createElement('div'); commentElement.classList.add('comment'); var titleGrid = document.createElement('div'); titleGrid.classList.add('title-grid'); var dateElement = document.createElement('span'); dateElement.classList.add('comment-date'); dateElement.innerHTML = this.comments[i].date.toDate().toLocaleDateString("en-US"); var authorElement = document.createElement('span'); authorElement.classList.add('comment-author'); authorElement.innerHTML = this.comments[i].user; titleGrid.appendChild(dateElement); titleGrid.appendChild(authorElement); var contentElement = document.createElement('p'); contentElement.innerHTML = this.comments[i].content; commentElement.appendChild(titleGrid); commentElement.appendChild(contentElement); commentArea.appendChild(commentElement); } } } window.customElements.define('forum-element', ForumElement);