import 'bootstrap.css';
import '@mescius/wijmo.styles/wijmo.css';
import './styles.css';
//
import * as input from '@mescius/wijmo.input';
import { getCountries } from './data';
//
document.readyState === 'complete' ? init() : window.onload = init;
//
function init() {
//
// combo as a regular HTML input element (no itemsSource)
let theComboNoSrc = new input.ComboBox('#theComboNoSrc', {
textChanged: (sender) => {
setText('theComboText', sender.text);
}
});
//
// default combo
let theCombo = new input.ComboBox('#theCombo', {
textChanged: (sender) => {
setText('theComboValue', sender.selectedValue);
},
itemsSource: getCountries()
});
//
// customizable combo
let theComboCustom = new input.ComboBox('#theComboCustom', {
isRequired: false,
isEditable: true,
placeholder: 'No Country Selected',
textChanged: (sender) => {
setText('theComboCustomValue', sender.text);
},
itemsSource: getCountries()
});
//
// handle checkboxes
document.querySelector('#isRequired').addEventListener('click', e => {
theComboCustom.isRequired = e.target.checked;
});
document.querySelector('#isEditable').addEventListener('click', e => {
theComboCustom.isEditable = e.target.checked;
});
//
// show text in an element on the page
function setText(id, value) {
document.getElementById(id).textContent = value;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>MESCIUS Wijmo ComboBox with Strings</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- SystemJS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.21.5/system.src.js" integrity="sha512-skZbMyvYdNoZfLmiGn5ii6KmklM82rYX2uWctBhzaXPxJgiv4XBwJnFGr5k8s+6tE1pcR1nuTKghozJHyzMcoA==" crossorigin="anonymous"></script>
<script src="systemjs.config.js"></script>
<script>
System.import('./src/app');
</script>
</head>
<body>
<div class="container-fluid">
<p>
The <b>text</b> property gets or sets the user's input:
</p>
<div class="form-group">
<label for="theComboNoSrc">Any string:</label>
<div id="theComboNoSrc"></div>
</div>
<p>
You have typed this: <b id="theComboText"></b>.
</p>
<h4>
Choosing from Lists
</h4>
<p>
If you want to provide a list of strings for users to choose from, set the <b>itemsSource</b> property to an
array containing those items and users will be able to select one of them:
</p>
<div class="form-group">
<label for="theCombo">Select a Country:</label>
<div id="theCombo"></div>
</div>
<p>
You have selected this country: <b id="theComboValue"></b>.
</p>
<h4>
Simple Customizations
</h4>
<p>
By default, the ComboBox will force users to select one of the items on the list. Users will not be able to
leave the combo empty or to enter values that are not on the list.
</p>
<p>
You can change these behaviors by setting the <b>isRequired</b> and <b>isEditable</b> properties:</p>
<p>
<label>
<input id="isRequired" type="checkbox">
isRequired
</label>
</p>
<p>
<label>
<input id="isEditable" type="checkbox" checked="checked">
isEditable
</label>
</p>
<div class="form-group">
<label for="theComboCustom">Select a Country:</label>
<div id="theComboCustom"></div>
</div>
<p>
You have selected this country: <b id="theComboCustomValue"></b>.
</p>
</div>
</body>
</html>
export function getCountries() {
return ['Austria', 'Australia', 'Belgium', 'Brazil', 'Canada',
'Chile', 'Denmark', 'Estonia', 'France', 'Germany',
'Hungary', 'Italy', 'Israel', 'Japan', 'Korea',
'Mexico', 'Norway', 'Oman', 'Poland', 'Qatar',
'Russia', 'Sweden', 'Scotland', 'Turkey', 'United Kingdom',
'United States', 'Vietnam', 'Yemen', 'Zambia'];
}
h4 {
margin-top: 24px;
}
body {
margin-bottom: 24px;
}
label {
margin-right: 3px;
}
(function (global) {
System.config({
transpiler: 'plugin-babel',
babelOptions: {
es2015: true
},
meta: {
'*.css': { loader: 'css' }
},
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
'jszip': 'npm:jszip/dist/jszip.js',
'@mescius/wijmo': 'npm:@mescius/wijmo/index.js',
'@mescius/wijmo.input': 'npm:@mescius/wijmo.input/index.js',
'@mescius/wijmo.styles': 'npm:@mescius/wijmo.styles',
'@mescius/wijmo.cultures': 'npm:@mescius/wijmo.cultures',
'@mescius/wijmo.chart': 'npm:@mescius/wijmo.chart/index.js',
'@mescius/wijmo.chart.analytics': 'npm:@mescius/wijmo.chart.analytics/index.js',
'@mescius/wijmo.chart.animation': 'npm:@mescius/wijmo.chart.animation/index.js',
'@mescius/wijmo.chart.annotation': 'npm:@mescius/wijmo.chart.annotation/index.js',
'@mescius/wijmo.chart.finance': 'npm:@mescius/wijmo.chart.finance/index.js',
'@mescius/wijmo.chart.finance.analytics': 'npm:@mescius/wijmo.chart.finance.analytics/index.js',
'@mescius/wijmo.chart.hierarchical': 'npm:@mescius/wijmo.chart.hierarchical/index.js',
'@mescius/wijmo.chart.interaction': 'npm:@mescius/wijmo.chart.interaction/index.js',
'@mescius/wijmo.chart.radar': 'npm:@mescius/wijmo.chart.radar/index.js',
'@mescius/wijmo.chart.render': 'npm:@mescius/wijmo.chart.render/index.js',
'@mescius/wijmo.chart.webgl': 'npm:@mescius/wijmo.chart.webgl/index.js',
'@mescius/wijmo.chart.map': 'npm:@mescius/wijmo.chart.map/index.js',
'@mescius/wijmo.gauge': 'npm:@mescius/wijmo.gauge/index.js',
'@mescius/wijmo.grid': 'npm:@mescius/wijmo.grid/index.js',
'@mescius/wijmo.grid.detail': 'npm:@mescius/wijmo.grid.detail/index.js',
'@mescius/wijmo.grid.filter': 'npm:@mescius/wijmo.grid.filter/index.js',
'@mescius/wijmo.grid.search': 'npm:@mescius/wijmo.grid.search/index.js',
'@mescius/wijmo.grid.style': 'npm:@mescius/wijmo.grid.style/index.js',
'@mescius/wijmo.grid.grouppanel': 'npm:@mescius/wijmo.grid.grouppanel/index.js',
'@mescius/wijmo.grid.multirow': 'npm:@mescius/wijmo.grid.multirow/index.js',
'@mescius/wijmo.grid.transposed': 'npm:@mescius/wijmo.grid.transposed/index.js',
'@mescius/wijmo.grid.transposedmultirow': 'npm:@mescius/wijmo.grid.transposedmultirow/index.js',
'@mescius/wijmo.grid.pdf': 'npm:@mescius/wijmo.grid.pdf/index.js',
'@mescius/wijmo.grid.sheet': 'npm:@mescius/wijmo.grid.sheet/index.js',
'@mescius/wijmo.grid.xlsx': 'npm:@mescius/wijmo.grid.xlsx/index.js',
'@mescius/wijmo.grid.selector': 'npm:@mescius/wijmo.grid.selector/index.js',
'@mescius/wijmo.grid.cellmaker': 'npm:@mescius/wijmo.grid.cellmaker/index.js',
'@mescius/wijmo.nav': 'npm:@mescius/wijmo.nav/index.js',
'@mescius/wijmo.odata': 'npm:@mescius/wijmo.odata/index.js',
'@mescius/wijmo.olap': 'npm:@mescius/wijmo.olap/index.js',
'@mescius/wijmo.rest': 'npm:@mescius/wijmo.rest/index.js',
'@mescius/wijmo.pdf': 'npm:@mescius/wijmo.pdf/index.js',
'@mescius/wijmo.pdf.security': 'npm:@mescius/wijmo.pdf.security/index.js',
'@mescius/wijmo.viewer': 'npm:@mescius/wijmo.viewer/index.js',
'@mescius/wijmo.xlsx': 'npm:@mescius/wijmo.xlsx/index.js',
'@mescius/wijmo.undo': 'npm:@mescius/wijmo.undo/index.js',
'@mescius/wijmo.interop.grid': 'npm:@mescius/wijmo.interop.grid/index.js',
'@mescius/wijmo.touch': 'npm:@mescius/wijmo.touch/index.js',
'@mescius/wijmo.cloud': 'npm:@mescius/wijmo.cloud/index.js',
'@mescius/wijmo.barcode': 'npm:@mescius/wijmo.barcode/index.js',
'@mescius/wijmo.barcode.common': 'npm:@mescius/wijmo.barcode.common/index.js',
'@mescius/wijmo.barcode.composite': 'npm:@mescius/wijmo.barcode.composite/index.js',
'@mescius/wijmo.barcode.specialized': 'npm:@mescius/wijmo.barcode.specialized/index.js',
'jszip': 'npm:jszip/dist/jszip.js',
'bootstrap.css': 'npm:bootstrap/dist/css/bootstrap.min.css',
'css': 'npm:systemjs-plugin-css/css.js',
'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js',
'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
src: {
defaultExtension: 'js'
},
"node_modules": {
defaultExtension: 'js'
},
}
});
})(this);