diff options
Diffstat (limited to 'src/main/resources')
| -rw-r--r-- | src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js | 91 | 
1 files changed, 43 insertions, 48 deletions
| diff --git a/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js b/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js index 9894dee..012a314 100644 --- a/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js +++ b/src/main/resources/META-INF/resources/bookmarks/MlkBookmarkSubmissionForm.js @@ -1,13 +1,50 @@ -import {html, render} from "../../web_modules/lit-html.js";  import ProgressSpinner from "../web_modules/elix/define/ProgressSpinner.js"; +const template = document.createElement('template'); +template.innerHTML = ` +  <link rel="stylesheet" type="text/css" href="/cms2/base.css" /> +  <link rel="stylesheet" type="text/css" href="/bookmarks/MlkBookmarkSubmissionForm.css" /> + +  <form class="pure-form" method="post" action="/bookmarks"> +    <fieldset> +      <legend>New Bookmark</legend> + +      <label for="uri-input">URI:</label> +      <input name="uri" id="uri-input" type="text" placeholder="URI" required /> +      <elix-progress-spinner id="uri-spinner" hidden></elix-progress-spinner> + +      <label for="title-input">Title:</label> +      <input name="title" id="title-input" type="text" placeholder="Title" required /> + +      <label for="description-input">Description:</label> +      <textarea name="description" id="description-input" placeholder="Description"></textarea> + +      <label for="visibility-input">Visibility:</label> +      <select id="visibility-input" name="visibility" required> +        <option value="public" selected>Public</option> +        <option value="semiprivate">Semiprivate</option> +        <option value="private">Private</option> +      </select> + +      <div class="controls"> +        <button type="submit" class="pure-button pure-button-primary">Submit Bookmark</button> +      </div> +    </fieldset> +  </form>`; +  export class MlkBookmarkSubmissionForm extends HTMLElement {    constructor() {      super();      this.onUriBlur = this.onUriBlur.bind(this); -    this.attachShadow({mode: "open"}); +    let shadow = this.attachShadow({mode: "open"}); +    this.shadowRoot.appendChild(template.content.cloneNode(true)); + +    this.descriptionInput = shadow.getElementById('description-input'); +    this.titleInput = shadow.getElementById('title-input'); +    this.uriInput = shadow.getElementById('uri-input'); +    this.uriSpinner = shadow.getElementById('uri-spinner');    }    static get observedAttributes() { @@ -15,13 +52,10 @@ export class MlkBookmarkSubmissionForm extends HTMLElement {    }    connectedCallback () { -    this.render(); - -    let shadow = this.shadowRoot; -    this.descriptionInput = shadow.getElementById('description-input'); -    this.titleInput = shadow.getElementById('title-input'); -    this.uriInput = shadow.getElementById('uri-input'); -    this.uriSpinner = shadow.getElementById('uri-spinner'); +    this.uriInput.addEventListener('blur', this.onUriBlur); +    this.uriInput.value = this.uri || ""; +    this.titleInput.value = this.title || ""; +    this.descriptionInput.innerText = this.description || "";    }    attributeChangedCallback(name, oldValue, newValue) { @@ -72,45 +106,6 @@ export class MlkBookmarkSubmissionForm extends HTMLElement {      let pageInfo = await r.json();      this.titleInput.value = pageInfo.title;    } - -  render() { -    const template = html` -      <link rel="stylesheet" type="text/css" href="/cms2/base.css" /> -      <link rel="stylesheet" type="text/css" href="/bookmarks/MlkBookmarkSubmissionForm.css" /> - -      <form class="pure-form" method="post" action="/bookmarks"> -        <fieldset> -          <legend>New Bookmark</legend> - -          <label for="uri-input">URI:</label> -          <input name="uri" id="uri-input" type="text" placeholder="URI" required -                 value=${this.uri || ""} -                 @blur=${this.onUriBlur} /> -          <elix-progress-spinner id="uri-spinner" hidden></elix-progress-spinner> - -          <label for="title-input">Title:</label> -          <input name="title" id="title-input" type="text" placeholder="Title" required -                 value="${this.title || ""}" /> - -          <label for="description-input">Description:</label> -          <textarea name="description" id="description-input" placeholder="Description" -              >${this.description || ""}</textarea> - -          <label for="visibility-input">Visibility:</label> -          <select id="visibility-input" name="visibility" required> -            <option value="public" selected>Public</option> -            <option value="semiprivate">Semiprivate</option> -            <option value="private">Private</option> -          </select> - -          <div class="controls"> -            <button type="submit" class="pure-button pure-button-primary">Submit Bookmark</button> -          </div> -        </fieldset> -      </form>`; - -    render(template, this.shadowRoot); -  }  }  customElements.define("mlk-bookmark-submission-form", MlkBookmarkSubmissionForm); | 
