Framework7 Smartselect + virtual + disabled

by Maiki Nahara

HTML

<script src="https://unpkg.com/[email protected]/js/framework7.bundle.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/css/framework7.bundle.min.css">
<div id="app">
  <div class="panel panel-left panel-cover theme-dark">
    <div class="page"></div>
  </div>
  <div class="panel panel-right panel-reveal theme-dark">
    <div class="page"></div>
  </div>
  <div class="view view-main ios-edges">
    <div class="page" data-name="home">
      <div class="navbar">
        <div class="navbar-inner">
          <div class="left">
            <a href="#" class="link panel-open" data-panel="left">Left Panel</a>
          </div>
          <div class="title sliding">My App</div>
          <div class="right">
            <a href="#" class="link panel-open" data-panel="right">Right Panel</a>
          </div>
        </div>
      </div>
      <!-- Toolbar-->
      <div class="toolbar toolbar-bottom">
        <div class="toolbar-inner">
          <a href="#" class="link">Left Link</a>
          <a href="#" class="link">Right Link</a>
        </div>
      </div>
      <div class="page">
        <div class="navbar">
          <div class="navbar-inner sliding">
            <div class="left">
              <a href="#" class="link back">
                <i class="icon icon-back"></i>
                <span class="if-not-md">Back</span>
              </a>
            </div>
            <div class="title">Swipeable Tabs</div>
          </div>
        </div>
        <div class="toolbar tabbar toolbar-bottom">
          <div class="toolbar-inner">
            <a href="#tab-1" class="tab-link tab-link-active">Tab 1</a>
            <a href="#tab-2" class="tab-link">Tab 2</a>
            <a href="#tab-3" class="tab-link">Tab 3</a>
          </div>
        </div>
        <div class='page-content'>
          <div class='list'>
            <ul>
              <li>
                <a href="/cal-page/" class="item-link item-content">
                  <div...

JavaScript

var names = []

for (var i = 0; i < 600; i++) {
  names.push('Name-' + i)
}

var app = new Framework7({
  root: '#app',
  theme: 'auto',
  routes: [{
    path: '/cal-page/',
    component: {
      template: `
        <div class="page">
          <div class="navbar">
            <div class="navbar-inner">
              <div class="title">{{title}}</div>
            </div>
          </div>
          <div class="page-content">
            <div class="list">
              <ul>
                <!-- Smart select item -->
                <li>
                  <!-- Additional "smart-select" class -->
                  <a href="#" class="item-link smart-select test-smart-select">
                    <select name="names" multiple maxlength="3">
                    {{#each names}}
                    	<option value="{{this}}">{{this}}</option>
                    {{/each}}
                    </select>
                    <div class="item-content">
                      <div class="item-inner">
                        <div class="item-title">Select</div>
                      </div>
                    </div>
                  </a>
                </li>
              </ul>
            </div>
        </div>
      `,
      data: function() {
        return {
          title: 'SS Page',
          names: names,
          ssNames: null
        }
      },
      methods: {
      },
      on: {
        pageInit: function(e, page) {
          let vm = page.app
					this.ssNames = vm.smartSelect.create({
						el: '.test-smart-select',
            openIn: 'popup',
            virtualList: true,
      			virtualListHeight: 44,
            renderItem: (item, index) => {
						  let disabled = this.ssNames.getValue().length === parseInt(this.ssNames.maxLength)
              item.disabled = disabled
              return `
                <li class="${disabled ? 'disabled' : ''}">
                  <label class="item-checkbox item-content">
                    <input type="checkbox"...