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"...