pwc-choices live example

by starikcetin

HTML

<head>
       <script type="module" src="https://unpkg.com/@paraboly/pwc-choices@latest/dist/pwc-choices/pwc-choices.esm.js"></script>
     </head>

     <body>
       <form name="pwc-choices">
         <div class="select">
           <header>Text / Tags</header>
           <pwc-choices name="text" type="text" value="Superstar,Gazelle" placeholder="add shoe..."></pwc-choices>
         </div>
         <div class="select">
           <header>Select / Dropdown</header>
           <pwc-choices name="single" type="single" value="Superstar,Gazelle,Stan Smith,Campus"></pwc-choices>
         </div>
         <div class="select">
           <header>Multiselect</header>
           <pwc-choices name="multiple" type="multiple"></pwc-choices>
         </div>
         <div class="submit">
           <button type="submit" class="btn">submit</button>
         </div>
       </form>
       <div class="values-container">
         <p class="values-container__text"></p>
       </div>

       <header>Passing choices over HTML attibute</header>
       <pwc-choices type="multiple" choices='[
        {
          "value": "superstar",
          "label": "Superstar",
          "selected": false,
          "disabled": false
        },
        {
          "value": "foo",
          "label": "bar",
          "selected": false,
          "disabled": false
        }
      ]'></pwc-choices>
     </body>

CSS

* {
        box-sizing: border-box;
      }

      html {
        font-family: Arial, Helvetica, sans-serif;
        font-size: 14px;
        padding: 0.75rem;
      }

      html,
      body {
        width: 100%;
        margin: 0;
      }

      pwc-choices {
        position: relative;
        width: 100%;
        height: auto;
      }

      .select {
        padding: 1rem 0;
      }

      .submit {
        text-align: center;
      }

      .btn {
        background-color: #0d83ff;
        border: none;
        border-radius: 4px;
        color: #fff;
        font-size: 1rem;
        padding: 8px 12px;
        cursor: pointer;
      }

      .btn:hover {
        box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
      }

      .values-container {
        background-color: #f9f9f9;
        padding: 0.5rem;
        margin-top: 1rem;
      }

      .values-container .values-container__text {
        word-break: break-all;
        margin: 0;
      }

JavaScript

document.addEventListener("DOMContentLoaded", function() {
        var choices = [{
            value: "superstar",
            label: "Superstar",
            selected: false,
            disabled: false
          },
          {
            value: "adizero",
            label: "adizero",
            selected: false,
            disabled: false
          },
          {
            value: "stansmith",
            label: "Stan Smith",
            selected: true,
            disabled: false
          },
          {
            value: "gazelle",
            label: "Gazelle",
            selected: false,
            disabled: false
          },
          {
            value: "ultraboost",
            label: "ultraboost",
            selected: false,
            disabled: false
          },
          {
            value: "nmd",
            label: "NMD",
            selected: false,
            disabled: false
          },
          {
            value: "yeezy",
            label: "YEEZY",
            selected: false,
            disabled: false
          },
          {
            value: "campus",
            label: "Campus",
            selected: false,
            disabled: false
          },
          {
            value: "zx500",
            label: "ZX 500",
            selected: false,
            disabled: true
          },
          {
            value: "samba",
            label: "Samba",
            selected: false,
            disabled: false
          },
          {
            value: "predator",
            label: "Predator",
            selected: false,
            disabled: false
          },
          {
            value: "munchen",
            label: "Munchen",
            selected: false,
            disabled: false
          },
          {
            value: "zxflux",
            label: "ZX Flux",
            selected: false,
            disabled: false
          },
          {
            value: "eqt",
            label: "EQT",
            selected:...