vanillajs-datepicker
Version:
A vanilla JavaScript remake of bootstrap-datepicker for Bulma and other CSS frameworks
137 lines (126 loc) • 5.55 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Mocha Tests</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="../../node_modules/mocha/mocha.css" />
<style type="text/css">
html * {
box-sizing: border-box;
}
</style>
<link rel="stylesheet" href="../../dist/css/datepicker.css" />
</head>
<body>
<div id="mocha"></div>
<div id="test-container"></div>
<script src="../../node_modules/mocha/mocha.js"></script>
<script src="../../node_modules/unexpected/unexpected.js"></script>
<script src="../../node_modules/sinon/pkg/sinon.js"></script>
<script src="../../node_modules/simulant/dist/simulant.umd.js"></script>
<script class="mocha-init">
mocha.setup('bdd');
mocha.checkLeaks();
//
// mocha.bail();
window.testContainer = document.getElementById('test-container');
</script>
<script src="./_utils/date.js"></script>
<script src="./_utils/dom.js"></script>
<script class="setup">
// patch simulant's bug that the default value of keyboad events'
// modifier key properties are not set (They should be false)
const keyboardEventTypes = ['keydown', 'keypress', 'keyup'];
const modifierKeyDefaults = {
ctrlKey: false,
altKey: false,
shiftKey: false,
metaKey: false,
};
const fireOrinial = simulant.fire;
simulant.fire = function fire(node, type, originalParams) {
const params = keyboardEventTypes.indexOf(type) === -1
? originalParams
: Object.assign({}, modifierKeyDefaults, originalParams);
return fireOrinial.call(simulant, node, type, params)
};
/* eslint-disable no-undef, no-unused-vars */
var expect = weknowhow.expect;
var dateValue = dateUtils.dateValue;
var parseHTML = domUtils.parseHTML;
var isVisible = domUtils.isVisible;
var lastItemOf = arr => arr[arr.length - 1];
var createDP = (el, options) => {
const dp = new Datepicker(el, options);
return {dp, picker: dp.picker.element};
};
var createDRP = (el, options) => {
const drp = new DateRangePicker(el, options);
const [picker0, picker1] = drp.datepickers.map(dp => dp.picker.element);
return {drp, picker0, picker1};
};
var getParts = (picker, selectors) => selectors.map(sel => picker.querySelector(sel));
var getViewSwitch = picker => picker.querySelector('.view-switch');
var getCells = picker => Array.from(picker.querySelectorAll('.datepicker-cell'));
var getCellIndices = (cells, criteria) => cells.reduce((indices, cell, idx) => {
if (typeof criteria === 'function' ? criteria(cell) : cell.matches(criteria)) {
indices.push(idx);
}
return indices;
}, []);
var mapIndices = arr => arr.map((item, index) => index);
var cellInfo = (cells, criteria) => cells.reduce((res, cell, idx) => {
if (cell.matches(criteria)) {
res.push([idx, cell.textContent]);
}
return res;
}, []);
// create <test-wrapper> custom element
class TestWrapper extends HTMLElement {
constructor() {
super();
const shadowRoot = this.attachShadow({mode: 'open'});
const styleLink = document.createElement('link');
styleLink.setAttribute('rel', 'stylesheet');
styleLink.setAttribute('href', '../../dist/css/datepicker.css');
const styleElem = document.createElement('style');
styleElem.textContent = ':host { display: block }';
shadowRoot.append(styleLink, styleElem, document.createElement('slot'));
}
}
customElements.define('test-wrapper', TestWrapper);
</script>
<script src="../../dist/js/datepicker-full.js"></script>
<script src="../../dist/js/locales/fr.js"></script>
<script src="../../dist/js/locales/zh-CN.js"></script>
<script src="./Datepicker/Datepicker-object.js"></script>
<script src="./Datepicker/api-methods.js"></script>
<script src="./mouse-operation.js"></script>
<script src="./keyboard-operation/keyboard-operation.js"></script>
<script src="./keyboard-operation/arrow-left.js"></script>
<script src="./keyboard-operation/arrow-right.js"></script>
<script src="./keyboard-operation/arrow-up.js"></script>
<script src="./keyboard-operation/arrow-down.js"></script>
<script src="./keyboard-operation/edit-mode.js"></script>
<script src="./events.js"></script>
<script src="./options/options.js"></script>
<script src="./options/week-numbers.js"></script>
<script src="./options/date-restrictions.js"></script>
<script src="./options/format.js"></script>
<script src="./options/multidate.js"></script>
<script src="./options/pick-level+view.js"></script>
<script src="./options/buttons.js"></script>
<script src="./options/orientation.js"></script>
<script src="./options/before-show.js"></script>
<script src="./options/shortcut-keys.js"></script>
<script src="./inline-mode.js"></script>
<script src="./DateRangePicker/DateRangePicker.js"></script>
<script src="./DateRangePicker/api-methods.js"></script>
<script src="./DateRangePicker/date-selection.js"></script>
<script src="./DateRangePicker/options.js"></script>
<script class="mocha-exec">
mocha.run();
</script>
</body>
</html>