mirror of
https://github.com/Choices-js/Choices.git
synced 2024-05-20 14:36:34 +02:00
361 lines
17 KiB
HTML
361 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
|
|
<title>Choices</title>
|
|
<meta name=description itemprop=description content="A lightweight, configurable select box/text input plugin. Similar to Select2 and Selectize but without the jQuery dependency.">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="assets/images/apple-touch-icon.png">
|
|
<link rel="icon" type="image/png" href="assets/images/favicon-32x32.png" sizes="32x32">
|
|
<link rel="icon" type="image/png" href="assets/images/favicon-16x16.png" sizes="16x16">
|
|
<link rel="manifest" href="assets/images/manifest.json">
|
|
<link rel="mask-icon" href="assets/images/safari-pinned-tab.svg" color="#00bcd4">
|
|
<link rel="shortcut icon" href="assets/images/favicon.ico">
|
|
<meta name="msapplication-config" content="/assets/images/browserconfig.xml">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
<!-- Ignore these -->
|
|
<link rel="stylesheet" href="assets/styles/css/base.min.css?version=1.1.6">
|
|
<!-- End ignore these -->
|
|
|
|
<!-- Optional includes -->
|
|
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=es5,fetch,Element.prototype.classList,requestAnimationFrame,Node.insertBefore,Node.firstChild"></script>
|
|
<!-- End optional includes -->
|
|
|
|
<!-- Choices includes -->
|
|
<link rel="stylesheet" href="assets/styles/css/choices.min.css?version=1.1.6">
|
|
<script src="assets/scripts/dist/choices.min.js?version=1.1.6"></script>
|
|
<!-- End Choices includes -->
|
|
|
|
<!--[if lt IE 9]>
|
|
<style>
|
|
.hidden-ie { display: none; }
|
|
.visible-ie { display: block; }
|
|
</style>
|
|
<![endif]-->
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="section">
|
|
<img src="assets/images/logo.svg" alt="Choices.js logo" class="logo hidden-ie">
|
|
<h1 class="visible-ie">Choices.js</h1>
|
|
<p>Choices.js is a lightweight, configurable select box/text input plugin. Similar to Select2 and Selectize but without the jQuery dependency.</p>
|
|
<p>For all config options, visit the <a href="https://github.com/jshjohnson/Choices">GitHub repo</a>.</p>
|
|
<hr>
|
|
<h2>Text inputs</h2>
|
|
<label for="choices-1">Limited to 5 values with remove button</label>
|
|
<input class="form-control" id="choices-1" type="text" value="preset-1,preset-2" placeholder="Enter something">
|
|
|
|
<label for="choices-2">Unique values only, no pasting</label>
|
|
<input class="form-control" id="choices-2" type="text" value="preset-1, preset-2" placeholder="This is a placeholder" class="custom class">
|
|
|
|
<label for="choices-3">Email addresses only</label>
|
|
<input class="form-control" id="choices-3" type="text" placeholder="This is a placeholder">
|
|
|
|
<label for="choices-4">Disabled</label>
|
|
<input class="form-control" id="choices-4" type="text" value="josh@joshuajohnson.co.uk, joe@bloggs.co.uk" placeholder="This is a placeholder">
|
|
|
|
<label for="choices-5">Prepends and appends a value to each items return value</label>
|
|
<input class="form-control" id="choices-5" type="text" value="preset-1, preset-2" placeholder="This is a placeholder">
|
|
|
|
<label for="choices-6">Preset values passed through options</label>
|
|
<input class="form-control" id="choices-6" type="text" value="olivia@benson.com" placeholder="This is a placeholder">
|
|
|
|
<hr>
|
|
|
|
<h2>Multiple select input</h2>
|
|
<label for="choices-7">Default</label>
|
|
<select class="form-control" data-choice name="choices-7" id="choices-7" placeholder="This is a placeholder" multiple>
|
|
<option value="Dropdown item 1">Dropdown item 1</option>
|
|
<option value="Dropdown item 2">Dropdown item 2</option>
|
|
<option value="Dropdown item 3" selected>Dropdown item 3</option>
|
|
<option value="Dropdown item 4" disabled>Dropdown item 4</option>
|
|
</select>
|
|
|
|
<label for="choices-9">Option groups</label>
|
|
<select class="form-control" data-choice name="choices-9" id="choices-9" placeholder="This is a placeholder" multiple>
|
|
<optgroup label="UK">
|
|
<option value="London">London</option>
|
|
<option value="Manchester">Manchester</option>
|
|
<option value="Liverpool">Liverpool</option>
|
|
</optgroup>
|
|
<optgroup label="FR">
|
|
<option value="Paris">Paris</option>
|
|
<option value="Lyon">Lyon</option>
|
|
<option value="Marseille">Marseille</option>
|
|
</optgroup>
|
|
<optgroup label="DE" disabled>
|
|
<option value="Hamburg">Hamburg</option>
|
|
<option value="Munich">Munich</option>
|
|
<option value="Berlin">Berlin</option>
|
|
</optgroup>
|
|
<optgroup label="US">
|
|
<option value="New York">New York</option>
|
|
<option value="Washington" disabled>Washington</option>
|
|
<option value="Michigan">Michigan</option>
|
|
</optgroup>
|
|
<optgroup label="SP">
|
|
<option value="Madrid">Madrid</option>
|
|
<option value="Barcelona">Barcelona</option>
|
|
<option value="Malaga">Malaga</option>
|
|
</optgroup>
|
|
<optgroup label="CA">
|
|
<option value="Montreal">Montreal</option>
|
|
<option value="Toronto">Toronto</option>
|
|
<option value="Vancouver">Vancouver</option>
|
|
</optgroup>
|
|
</select>
|
|
|
|
<label for="choices-10">Options from remote source (Fetch API) & limited to 5</label>
|
|
<select class="form-control" name="choices-10" id="choices-10" multiple></select>
|
|
|
|
<hr>
|
|
|
|
<h2>Single select input</h2>
|
|
<label for="choices-11">Default</label>
|
|
<select class="form-control" data-choice name="choices-11" id="choices-11" placeholder="This is a placeholder">
|
|
<option value="Dropdown item 1">Dropdown item 1</option>
|
|
<option value="Dropdown item 2">Dropdown item 2</option>
|
|
<option value="Dropdown item 3">Dropdown item 3</option>
|
|
</select>
|
|
|
|
<label for="choices-12">Options from remote source (Fetch API)</label>
|
|
<select class="form-control" name="choices-12" id="choices-12" placeholder="Pick an Arctic Monkeys record"></select>
|
|
|
|
<label for="choices-14">Options from remote source (XHR) & remove button</label>
|
|
<select class="form-control" name="choices-14" id="choices-14" placeholder="Pick a Smiths record"></select>
|
|
|
|
<label for="choices-13">Option groups</label>
|
|
<select class="form-control" data-choice name="choices-13" id="choices-13" placeholder="This is a placeholder">
|
|
<optgroup label="UK">
|
|
<option value="London">London</option>
|
|
<option value="Manchester">Manchester</option>
|
|
<option value="Liverpool">Liverpool</option>
|
|
</optgroup>
|
|
<optgroup label="FR">
|
|
<option value="Paris">Paris</option>
|
|
<option value="Lyon">Lyon</option>
|
|
<option value="Marseille">Marseille</option>
|
|
</optgroup>
|
|
<optgroup label="DE" disabled>
|
|
<option value="Hamburg">Hamburg</option>
|
|
<option value="Munich">Munich</option>
|
|
<option value="Berlin">Berlin</option>
|
|
</optgroup>
|
|
<optgroup label="US">
|
|
<option value="New York">New York</option>
|
|
<option value="Washington" disabled>Washington</option>
|
|
<option value="Michigan">Michigan</option>
|
|
</optgroup>
|
|
<optgroup label="SP">
|
|
<option value="Madrid">Madrid</option>
|
|
<option value="Barcelona">Barcelona</option>
|
|
<option value="Malaga">Malaga</option>
|
|
</optgroup>
|
|
<optgroup label="CA">
|
|
<option value="Montreal">Montreal</option>
|
|
<option value="Toronto">Toronto</option>
|
|
<option value="Vancouver">Vancouver</option>
|
|
</optgroup>
|
|
</select>
|
|
|
|
<label for="choices-15">Options added via config with no search</label>
|
|
<select class="form-control" name="choices-15" id="choices-15">
|
|
<option value="0">Zero</option>
|
|
</select>
|
|
|
|
<label for="choices-16">Option and option groups added via config</label>
|
|
<select class="form-control" name="choices-16" id="choices-16" placeholder="This is a placeholder"></select>
|
|
|
|
<label for="choices-17">Option selected via config</label>
|
|
<select class="form-control" name="choices-17" id="choices-17" placeholder="This is a placeholder"></select>
|
|
|
|
<p>Below is an example of how you could have two select inputs depend on eachother. 'Boroughs' will only be enabled if the value of 'States' is 'New York'</p>
|
|
<label for="cities">States</label>
|
|
<select class="form-control" name="cities" id="cities" placeholder="Choose a state">
|
|
<option value="Texas">Texas</option>
|
|
<option value="Chicago">Chicago</option>
|
|
<option value="New York">New York</option>
|
|
<option value="Washington">Washington</option>
|
|
<option value="Michigan">Michigan</option>
|
|
</select>
|
|
|
|
<label for="boroughs">Boroughs</label>
|
|
<select class="form-control" name="boroughs" id="boroughs" placeholder="Choose a borough">
|
|
<option value="The Bronx">The Bronx</option>
|
|
<option value="Brooklyn">Brooklyn</option>
|
|
<option value="Manhatten">Manhatten</option>
|
|
<option value="Queens">Queens</option>
|
|
<option value="Staten Island">Staten Island</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var example1 = new Choices(document.getElementById('choices-1'), {
|
|
delimiter: ',',
|
|
editItems: true,
|
|
maxItemCount: 5,
|
|
removeItemButton: true,
|
|
callbackOnHighlightItem: function(id, value, passedInput) {
|
|
console.log(value);
|
|
},
|
|
callbackOnUnhighlightItem: function(id, value, passedInput) {
|
|
console.log(value);
|
|
},
|
|
});
|
|
|
|
var example2 = new Choices('#choices-2', {
|
|
paste: false,
|
|
duplicateItems: false,
|
|
editItems: true,
|
|
});
|
|
|
|
var example3 = new Choices('#choices-3', {
|
|
editItems: true,
|
|
regexFilter: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
});
|
|
|
|
var example4 = new Choices('#choices-4', {
|
|
addItems: false,
|
|
removeItems: false,
|
|
}).disable();
|
|
|
|
var example5 = new Choices('#choices-5', {
|
|
prependValue: 'item-',
|
|
appendValue: '-' + Date.now(),
|
|
}).removeActiveItems();
|
|
|
|
var example7 = new Choices('#choices-6', {
|
|
items: ['josh@joshuajohnson.co.uk', { value: 'joe@bloggs.co.uk', label: 'Joe Bloggs' } ],
|
|
});
|
|
|
|
var example9 = new Choices('#choices-10', {
|
|
placeholder: true,
|
|
placeholderValue: 'Pick an Strokes record',
|
|
maxItemCount: 5,
|
|
callbackOnChange: function(value, passedInput) { console.log(value) }
|
|
}).ajax(function(callback) {
|
|
fetch('https://api.discogs.com/artists/55980/releases?token=QBRmstCkwXEvCjTclCpumbtNwvVkEzGAdELXyRyW')
|
|
.then(function(response) {
|
|
response.json().then(function(data) {
|
|
callback(data.releases, 'title', 'title');
|
|
});
|
|
})
|
|
.catch(function(error) {
|
|
console.log(error);
|
|
});
|
|
});
|
|
|
|
var example10 = new Choices('#choices-12', {
|
|
placeholder: true,
|
|
placeholderValue: 'Pick an Arctic Monkeys record'
|
|
}).ajax(function(callback) {
|
|
fetch('https://api.discogs.com/artists/391170/releases?token=QBRmstCkwXEvCjTclCpumbtNwvVkEzGAdELXyRyW')
|
|
.then(function(response) {
|
|
response.json().then(function(data) {
|
|
callback(data.releases, 'title', 'title');
|
|
example10.setValueByChoice('Fake Tales Of San Francisco');
|
|
});
|
|
})
|
|
.catch(function(error) {
|
|
console.log(error);
|
|
});
|
|
});
|
|
|
|
var example11 = new Choices('#choices-14', {
|
|
removeItemButton: true,
|
|
}).ajax(function(callback) {
|
|
var request = new XMLHttpRequest();
|
|
request.open('get', 'https://api.discogs.com/artists/83080/releases?token=QBRmstCkwXEvCjTclCpumbtNwvVkEzGAdELXyRyW', true);
|
|
request.onreadystatechange = function() {
|
|
var status;
|
|
var data;
|
|
if (request.readyState == 4) {
|
|
status = request.status;
|
|
if (status == 200) {
|
|
data = JSON.parse(request.responseText);
|
|
callback(data.releases, 'title', 'title');
|
|
example11.setValueByChoice('How Soon Is Now?');
|
|
} else {
|
|
console.error(status);
|
|
}
|
|
}
|
|
}
|
|
request.send();
|
|
});
|
|
|
|
var example12 = new Choices('[data-choice]', {
|
|
placeholderValue: 'This is a placeholder set in the config',
|
|
removeButton: true,
|
|
});
|
|
|
|
var example13 = new Choices('#choices-15', {
|
|
search: false,
|
|
removeItemButton: true,
|
|
choices: [
|
|
{value: 'One', label: 'Label One'},
|
|
{value: 'Two', label: 'Label Two', disabled: true},
|
|
{value: 'Three', label: 'Label Three'},
|
|
],
|
|
}).setChoices([
|
|
{value: 'Four', label: 'Label Four', disabled: true},
|
|
{value: 'Five', label: 'Label Five'},
|
|
{value: 'Six', label: 'Label Six', selected: true},
|
|
], 'value', 'label');
|
|
|
|
var example14 = new Choices('#choices-16', {
|
|
placeholder: true,
|
|
}).setChoices([{
|
|
label: 'Group one',
|
|
id: 1,
|
|
disabled: false,
|
|
choices: [
|
|
{value: 'Child One', label: 'Child One', selected: true},
|
|
{value: 'Child Two', label: 'Child Two', disabled: true},
|
|
{value: 'Child Three', label: 'Child Three'},
|
|
]
|
|
},
|
|
{
|
|
label: 'Group two',
|
|
id: 2,
|
|
disabled: false,
|
|
choices: [
|
|
{value: 'Child Four', label: 'Child Four', disabled: true},
|
|
{value: 'Child Five', label: 'Child Five'},
|
|
{value: 'Child Six', label: 'Child Six'},
|
|
]
|
|
}], 'value', 'label');
|
|
|
|
var example15 = new Choices('#choices-17', {
|
|
choices: [
|
|
{value: 'One', label: 'Label One'},
|
|
{value: 'Two', label: 'Label Two', disabled: true},
|
|
{value: 'Three', label: 'Label Three'},
|
|
],
|
|
}).setValueByChoice('Two');
|
|
|
|
var cities = new Choices(document.getElementById('cities'), {
|
|
callbackOnChange: function(value) {
|
|
if(value === 'New York') {
|
|
boroughs.enable();
|
|
} else {
|
|
boroughs.disable();
|
|
}
|
|
}
|
|
});
|
|
|
|
var boroughs = new Choices(document.getElementById('boroughs')).disable();
|
|
});
|
|
</script>
|
|
|
|
<!-- Google Analytics - Ignore me -->
|
|
<script>
|
|
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
|
ga('create', 'UA-31575166-1', 'auto');
|
|
ga('send', 'pageview');
|
|
</script>
|
|
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
|
<!-- End Google Analytics -->
|
|
</body>
|
|
</html> |