@macallumharvey/first-test-wet 1.0.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/WetButton.d.ts +9 -0
- package/dist/WetModal.d.ts +6 -0
- package/dist/first-test-wet.cjs.development.js +26 -0
- package/dist/first-test-wet.cjs.development.js.map +1 -1
- package/dist/first-test-wet.cjs.production.min.js +1 -1
- package/dist/first-test-wet.cjs.production.min.js.map +1 -1
- package/dist/first-test-wet.esm.js +26 -1
- package/dist/first-test-wet.esm.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/WetButton.tsx +19 -0
- package/src/WetModal.tsx +26 -0
- package/src/index.tsx +2 -2
- package/src/theme-wet-boew/assets/favicon-mobile.png +0 -0
- package/src/theme-wet-boew/assets/favicon.ico +0 -0
- package/src/theme-wet-boew/assets/logo.png +0 -0
- package/src/theme-wet-boew/assets/logo.svg +14 -0
- package/src/theme-wet-boew/css/ie8-theme.css +17370 -0
- package/src/theme-wet-boew/css/ie8-theme.min.css +193 -0
- package/src/theme-wet-boew/css/ie8-wet-boew.css +12 -0
- package/src/theme-wet-boew/css/ie8-wet-boew.min.css +7 -0
- package/src/theme-wet-boew/css/theme.css +11357 -0
- package/src/theme-wet-boew/css/theme.min.css +6 -0
- package/src/theme-wet-boew/css/wet-boew.css +12 -0
- package/src/theme-wet-boew/css/wet-boew.min.css +6 -0
- package/src/theme-wet-boew/payload.json +66 -0
- package/src/wet-boew/assets/cloud-popup-relative.png +0 -0
- package/src/wet-boew/assets/fd-slider-sprite.png +0 -0
- package/src/wet-boew/assets/loading.png +0 -0
- package/src/wet-boew/assets/mediacontrols.html +32 -0
- package/src/wet-boew/assets/sprites_share.png +0 -0
- package/src/wet-boew/assets/zoom-minus-mini.png +0 -0
- package/src/wet-boew/assets/zoom-plus-mini.png +0 -0
- package/src/wet-boew/assets/zoom-world-mini.png +0 -0
- package/src/wet-boew/css/noscript.css +112 -0
- package/src/wet-boew/css/noscript.min.css +6 -0
- package/src/wet-boew/css/polyfills/datalist.css +32 -0
- package/src/wet-boew/css/polyfills/datalist.min.css +1 -0
- package/src/wet-boew/css/polyfills/datepicker.css +47 -0
- package/src/wet-boew/css/polyfills/datepicker.min.css +1 -0
- package/src/wet-boew/css/polyfills/details.css +28 -0
- package/src/wet-boew/css/polyfills/details.min.css +1 -0
- package/src/wet-boew/css/polyfills/mathml.css +16 -0
- package/src/wet-boew/css/polyfills/mathml.min.css +1 -0
- package/src/wet-boew/css/polyfills/meter.css +24 -0
- package/src/wet-boew/css/polyfills/meter.min.css +1 -0
- package/src/wet-boew/css/polyfills/progress.css +8 -0
- package/src/wet-boew/css/polyfills/progress.min.css +1 -0
- package/src/wet-boew/css/polyfills/slider.css +229 -0
- package/src/wet-boew/css/polyfills/slider.min.css +1 -0
- package/src/wet-boew/fonts/glyphicons-halflings-regular.eot +0 -0
- package/src/wet-boew/fonts/glyphicons-halflings-regular.svg +288 -0
- package/src/wet-boew/fonts/glyphicons-halflings-regular.ttf +0 -0
- package/src/wet-boew/fonts/glyphicons-halflings-regular.woff +0 -0
- package/src/wet-boew/fonts/glyphicons-halflings-regular.woff2 +0 -0
- package/src/wet-boew/js/MathJax/mml-chtml.js +1 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
- package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- package/src/wet-boew/js/deps/additional-methods.js +1512 -0
- package/src/wet-boew/js/deps/additional-methods.min.js +9 -0
- package/src/wet-boew/js/deps/geomap-lib.js +3758 -0
- package/src/wet-boew/js/deps/geomap-lib.min.js +1 -0
- package/src/wet-boew/js/deps/jquery.dataTables.js +15345 -0
- package/src/wet-boew/js/deps/jquery.dataTables.min.js +4 -0
- package/src/wet-boew/js/deps/jquery.flot.canvas.js +345 -0
- package/src/wet-boew/js/deps/jquery.flot.canvas.min.js +1 -0
- package/src/wet-boew/js/deps/jquery.flot.js +3168 -0
- package/src/wet-boew/js/deps/jquery.flot.min.js +1 -0
- package/src/wet-boew/js/deps/jquery.flot.orderBars.js +282 -0
- package/src/wet-boew/js/deps/jquery.flot.orderBars.min.js +1 -0
- package/src/wet-boew/js/deps/jquery.flot.pie.js +820 -0
- package/src/wet-boew/js/deps/jquery.flot.pie.min.js +1 -0
- package/src/wet-boew/js/deps/jquery.magnific-popup.js +2061 -0
- package/src/wet-boew/js/deps/jquery.magnific-popup.min.js +4 -0
- package/src/wet-boew/js/deps/jquery.validate.js +1661 -0
- package/src/wet-boew/js/deps/jquery.validate.min.js +9 -0
- package/src/wet-boew/js/deps/json-patch.js +315 -0
- package/src/wet-boew/js/deps/json-patch.min.js +1 -0
- package/src/wet-boew/js/deps/jsonpointer.js +349 -0
- package/src/wet-boew/js/deps/jsonpointer.min.js +1 -0
- package/src/wet-boew/js/deps/lang-apollo.js +53 -0
- package/src/wet-boew/js/deps/lang-apollo.min.js +1 -0
- package/src/wet-boew/js/deps/lang-basic.js +49 -0
- package/src/wet-boew/js/deps/lang-basic.min.js +1 -0
- package/src/wet-boew/js/deps/lang-clj.js +64 -0
- package/src/wet-boew/js/deps/lang-clj.min.js +1 -0
- package/src/wet-boew/js/deps/lang-css.js +160 -0
- package/src/wet-boew/js/deps/lang-css.min.js +1 -0
- package/src/wet-boew/js/deps/lang-dart.js +92 -0
- package/src/wet-boew/js/deps/lang-dart.min.js +1 -0
- package/src/wet-boew/js/deps/lang-erlang.js +94 -0
- package/src/wet-boew/js/deps/lang-erlang.min.js +1 -0
- package/src/wet-boew/js/deps/lang-go.js +59 -0
- package/src/wet-boew/js/deps/lang-go.min.js +1 -0
- package/src/wet-boew/js/deps/lang-hs.js +102 -0
- package/src/wet-boew/js/deps/lang-hs.min.js +1 -0
- package/src/wet-boew/js/deps/lang-lasso.js +67 -0
- package/src/wet-boew/js/deps/lang-lasso.min.js +1 -0
- package/src/wet-boew/js/deps/lang-lisp.js +95 -0
- package/src/wet-boew/js/deps/lang-lisp.min.js +1 -0
- package/src/wet-boew/js/deps/lang-llvm.js +63 -0
- package/src/wet-boew/js/deps/lang-llvm.min.js +1 -0
- package/src/wet-boew/js/deps/lang-logtalk.js +50 -0
- package/src/wet-boew/js/deps/lang-logtalk.min.js +1 -0
- package/src/wet-boew/js/deps/lang-lua.js +60 -0
- package/src/wet-boew/js/deps/lang-lua.min.js +1 -0
- package/src/wet-boew/js/deps/lang-matlab.js +183 -0
- package/src/wet-boew/js/deps/lang-matlab.min.js +1 -0
- package/src/wet-boew/js/deps/lang-ml.js +57 -0
- package/src/wet-boew/js/deps/lang-ml.min.js +1 -0
- package/src/wet-boew/js/deps/lang-mumps.js +140 -0
- package/src/wet-boew/js/deps/lang-mumps.min.js +1 -0
- package/src/wet-boew/js/deps/lang-n.js +67 -0
- package/src/wet-boew/js/deps/lang-n.min.js +1 -0
- package/src/wet-boew/js/deps/lang-pascal.js +49 -0
- package/src/wet-boew/js/deps/lang-pascal.min.js +1 -0
- package/src/wet-boew/js/deps/lang-proto.js +37 -0
- package/src/wet-boew/js/deps/lang-proto.min.js +1 -0
- package/src/wet-boew/js/deps/lang-r.js +59 -0
- package/src/wet-boew/js/deps/lang-r.min.js +1 -0
- package/src/wet-boew/js/deps/lang-rd.js +50 -0
- package/src/wet-boew/js/deps/lang-rd.min.js +1 -0
- package/src/wet-boew/js/deps/lang-rust.js +81 -0
- package/src/wet-boew/js/deps/lang-rust.min.js +1 -0
- package/src/wet-boew/js/deps/lang-scala.js +56 -0
- package/src/wet-boew/js/deps/lang-scala.min.js +1 -0
- package/src/wet-boew/js/deps/lang-sql.js +59 -0
- package/src/wet-boew/js/deps/lang-sql.min.js +1 -0
- package/src/wet-boew/js/deps/lang-swift.js +60 -0
- package/src/wet-boew/js/deps/lang-swift.min.js +1 -0
- package/src/wet-boew/js/deps/lang-tcl.js +63 -0
- package/src/wet-boew/js/deps/lang-tcl.min.js +1 -0
- package/src/wet-boew/js/deps/lang-tex.js +49 -0
- package/src/wet-boew/js/deps/lang-tex.min.js +1 -0
- package/src/wet-boew/js/deps/lang-vb.js +67 -0
- package/src/wet-boew/js/deps/lang-vb.min.js +1 -0
- package/src/wet-boew/js/deps/lang-vhdl.js +51 -0
- package/src/wet-boew/js/deps/lang-vhdl.min.js +1 -0
- package/src/wet-boew/js/deps/lang-wiki.js +55 -0
- package/src/wet-boew/js/deps/lang-wiki.min.js +1 -0
- package/src/wet-boew/js/deps/lang-xq.js +71 -0
- package/src/wet-boew/js/deps/lang-xq.min.js +1 -0
- package/src/wet-boew/js/deps/lang-yaml.js +45 -0
- package/src/wet-boew/js/deps/lang-yaml.min.js +1 -0
- package/src/wet-boew/js/deps/ol.js +1008 -0
- package/src/wet-boew/js/deps/ol.min.js +1 -0
- package/src/wet-boew/js/deps/prettify.js +1742 -0
- package/src/wet-boew/js/deps/prettify.min.js +1 -0
- package/src/wet-boew/js/deps/proj4.js +3 -0
- package/src/wet-boew/js/deps/proj4.min.js +1 -0
- package/src/wet-boew/js/deps/run_prettify.js +1998 -0
- package/src/wet-boew/js/deps/run_prettify.min.js +1 -0
- package/src/wet-boew/js/deps/tableparser.js +2216 -0
- package/src/wet-boew/js/deps/tableparser.min.js +1 -0
- package/src/wet-boew/js/deps/unorm.js +452 -0
- package/src/wet-boew/js/deps/unorm.min.js +1 -0
- package/src/wet-boew/js/i18n/af.js +246 -0
- package/src/wet-boew/js/i18n/af.min.js +7 -0
- package/src/wet-boew/js/i18n/ar.js +285 -0
- package/src/wet-boew/js/i18n/ar.min.js +7 -0
- package/src/wet-boew/js/i18n/bg.js +285 -0
- package/src/wet-boew/js/i18n/bg.min.js +7 -0
- package/src/wet-boew/js/i18n/cs.js +286 -0
- package/src/wet-boew/js/i18n/cs.min.js +7 -0
- package/src/wet-boew/js/i18n/de.js +355 -0
- package/src/wet-boew/js/i18n/de.min.js +7 -0
- package/src/wet-boew/js/i18n/el.js +285 -0
- package/src/wet-boew/js/i18n/el.min.js +7 -0
- package/src/wet-boew/js/i18n/en.js +246 -0
- package/src/wet-boew/js/i18n/en.min.js +7 -0
- package/src/wet-boew/js/i18n/es.js +288 -0
- package/src/wet-boew/js/i18n/es.min.js +7 -0
- package/src/wet-boew/js/i18n/et.js +283 -0
- package/src/wet-boew/js/i18n/et.min.js +7 -0
- package/src/wet-boew/js/i18n/fr.js +314 -0
- package/src/wet-boew/js/i18n/fr.min.js +7 -0
- package/src/wet-boew/js/i18n/hi.js +246 -0
- package/src/wet-boew/js/i18n/hi.min.js +7 -0
- package/src/wet-boew/js/i18n/hu.js +285 -0
- package/src/wet-boew/js/i18n/hu.min.js +7 -0
- package/src/wet-boew/js/i18n/hy.js +246 -0
- package/src/wet-boew/js/i18n/hy.min.js +7 -0
- package/src/wet-boew/js/i18n/id.js +284 -0
- package/src/wet-boew/js/i18n/id.min.js +7 -0
- package/src/wet-boew/js/i18n/is.js +283 -0
- package/src/wet-boew/js/i18n/is.min.js +7 -0
- package/src/wet-boew/js/i18n/it.js +312 -0
- package/src/wet-boew/js/i18n/it.min.js +7 -0
- package/src/wet-boew/js/i18n/iu.js +246 -0
- package/src/wet-boew/js/i18n/iu.min.js +7 -0
- package/src/wet-boew/js/i18n/ja.js +286 -0
- package/src/wet-boew/js/i18n/ja.min.js +7 -0
- package/src/wet-boew/js/i18n/ko.js +285 -0
- package/src/wet-boew/js/i18n/ko.min.js +7 -0
- package/src/wet-boew/js/i18n/lt.js +285 -0
- package/src/wet-boew/js/i18n/lt.min.js +7 -0
- package/src/wet-boew/js/i18n/lv.js +285 -0
- package/src/wet-boew/js/i18n/lv.min.js +7 -0
- package/src/wet-boew/js/i18n/nl.js +319 -0
- package/src/wet-boew/js/i18n/nl.min.js +7 -0
- package/src/wet-boew/js/i18n/pl.js +288 -0
- package/src/wet-boew/js/i18n/pl.min.js +7 -0
- package/src/wet-boew/js/i18n/pt-BR.js +246 -0
- package/src/wet-boew/js/i18n/pt-BR.min.js +7 -0
- package/src/wet-boew/js/i18n/pt.js +271 -0
- package/src/wet-boew/js/i18n/pt.min.js +7 -0
- package/src/wet-boew/js/i18n/ru.js +285 -0
- package/src/wet-boew/js/i18n/ru.min.js +7 -0
- package/src/wet-boew/js/i18n/sk.js +283 -0
- package/src/wet-boew/js/i18n/sk.min.js +7 -0
- package/src/wet-boew/js/i18n/sq.js +246 -0
- package/src/wet-boew/js/i18n/sq.min.js +7 -0
- package/src/wet-boew/js/i18n/th.js +285 -0
- package/src/wet-boew/js/i18n/th.min.js +7 -0
- package/src/wet-boew/js/i18n/tr.js +287 -0
- package/src/wet-boew/js/i18n/tr.min.js +7 -0
- package/src/wet-boew/js/i18n/uk.js +285 -0
- package/src/wet-boew/js/i18n/uk.min.js +7 -0
- package/src/wet-boew/js/i18n/vi.js +285 -0
- package/src/wet-boew/js/i18n/vi.min.js +7 -0
- package/src/wet-boew/js/i18n/zh-Hans.js +246 -0
- package/src/wet-boew/js/i18n/zh-Hans.min.js +7 -0
- package/src/wet-boew/js/i18n/zh.js +286 -0
- package/src/wet-boew/js/i18n/zh.min.js +7 -0
- package/src/wet-boew/js/ie8-wet-boew.js +3992 -0
- package/src/wet-boew/js/ie8-wet-boew.min.js +7 -0
- package/src/wet-boew/js/ie8-wet-boew2.js +15294 -0
- package/src/wet-boew/js/ie8-wet-boew2.min.js +7 -0
- package/src/wet-boew/js/jquery/2.2.4/jquery.js +9814 -0
- package/src/wet-boew/js/jquery/2.2.4/jquery.min.js +4 -0
- package/src/wet-boew/js/jquery/2.2.4/jquery.min.map +1 -0
- package/src/wet-boew/js/polyfills/datalist.js +423 -0
- package/src/wet-boew/js/polyfills/datalist.min.js +8 -0
- package/src/wet-boew/js/polyfills/datalist.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/datalist_dynamic.js +50 -0
- package/src/wet-boew/js/polyfills/datalist_dynamic.min.js +8 -0
- package/src/wet-boew/js/polyfills/datalist_dynamic.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/datepicker.js +338 -0
- package/src/wet-boew/js/polyfills/datepicker.min.js +8 -0
- package/src/wet-boew/js/polyfills/datepicker.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/details.js +126 -0
- package/src/wet-boew/js/polyfills/details.min.js +8 -0
- package/src/wet-boew/js/polyfills/details.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/jawsariafixes.js +47 -0
- package/src/wet-boew/js/polyfills/jawsariafixes.min.js +16 -0
- package/src/wet-boew/js/polyfills/jawsariafixes.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/meter.js +140 -0
- package/src/wet-boew/js/polyfills/meter.min.js +8 -0
- package/src/wet-boew/js/polyfills/meter.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/mobile.js +783 -0
- package/src/wet-boew/js/polyfills/mobile.min.js +8 -0
- package/src/wet-boew/js/polyfills/mobile.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/progress.js +107 -0
- package/src/wet-boew/js/polyfills/progress.min.js +8 -0
- package/src/wet-boew/js/polyfills/progress.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/slider.js +1343 -0
- package/src/wet-boew/js/polyfills/slider.min.js +9 -0
- package/src/wet-boew/js/polyfills/slider.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/slider_wrapper.js +73 -0
- package/src/wet-boew/js/polyfills/slider_wrapper.min.js +8 -0
- package/src/wet-boew/js/polyfills/slider_wrapper.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/svg.js +29 -0
- package/src/wet-boew/js/polyfills/svg.min.js +8 -0
- package/src/wet-boew/js/polyfills/svg.min.js.map +1 -0
- package/src/wet-boew/js/polyfills/test.js +603 -0
- package/src/wet-boew/js/polyfills/test.min.js +8 -0
- package/src/wet-boew/js/polyfills/test.min.js.map +1 -0
- package/src/wet-boew/js/wet-boew.js +17714 -0
- package/src/wet-boew/js/wet-boew.min.js +9 -0
- package/src/wet-boew/js/wet-boew.min.js.map +1 -0
- package/src/wet-boew/payload.json +1722 -0
@@ -0,0 +1,603 @@
|
|
1
|
+
/**
|
2
|
+
* @title Date Picker Unit Tests
|
3
|
+
* @overview Test the date picker behaviour
|
4
|
+
* @license wet-boew.github.io/wet-boew/License-en.html / wet-boew.github.io/wet-boew/Licence-fr.html
|
5
|
+
* @author @LaurentGoderre
|
6
|
+
*/
|
7
|
+
( function( $, wb ) {
|
8
|
+
|
9
|
+
var runTest = Modernizr.inputtypes.date ? describe.skip : describe;
|
10
|
+
|
11
|
+
runTest( "Input type=\"date\" polyfill (date picker)", function() {
|
12
|
+
var sandbox = sinon.sandbox.create(),
|
13
|
+
selector = "input[type=date]",
|
14
|
+
$document = wb.doc,
|
15
|
+
$body = $document.find( "body" ),
|
16
|
+
calendarSelector = "#wb-picker",
|
17
|
+
$formGroup, $calendar, $elm, spy, callback,
|
18
|
+
beforeFactory = function( elm, label ) {
|
19
|
+
elm = elm || "<input type=\"date\" id=\"appointment\"/>";
|
20
|
+
label = label || "<label for=\"appointment\">Appointment Date</label>";
|
21
|
+
return function( done ) {
|
22
|
+
|
23
|
+
// Spy on jQuery's trigger method to see how it's called during the plugin's initialization
|
24
|
+
spy = sandbox.spy( $.prototype, "trigger" );
|
25
|
+
|
26
|
+
if ( !callback ) {
|
27
|
+
callback = done;
|
28
|
+
}
|
29
|
+
|
30
|
+
$formGroup = $(
|
31
|
+
"<div>" + label + "</div>"
|
32
|
+
)
|
33
|
+
.prependTo( $body );
|
34
|
+
|
35
|
+
$elm = $( elm )
|
36
|
+
.appendTo( $formGroup );
|
37
|
+
|
38
|
+
$elm.trigger( "wb-init.wb-date" );
|
39
|
+
};
|
40
|
+
},
|
41
|
+
defaultAfter = function() {
|
42
|
+
|
43
|
+
// Restore the original behaviour of trigger once the tests are finished
|
44
|
+
sandbox.restore();
|
45
|
+
|
46
|
+
// Remove test data from the page
|
47
|
+
$formGroup.remove();
|
48
|
+
|
49
|
+
callback = null;
|
50
|
+
};
|
51
|
+
|
52
|
+
before( function() {
|
53
|
+
$document.on( "wb-init.wb-date", selector, function() {
|
54
|
+
$calendar = $( calendarSelector );
|
55
|
+
if ( callback ) {
|
56
|
+
callback();
|
57
|
+
}
|
58
|
+
} );
|
59
|
+
} );
|
60
|
+
|
61
|
+
describe( "initialization", function() {
|
62
|
+
before( beforeFactory() );
|
63
|
+
after( defaultAfter );
|
64
|
+
|
65
|
+
it( "should have marked the element as initialized", function() {
|
66
|
+
expect( $elm.hasClass( "wb-date-inited" ) ).to.equal( true );
|
67
|
+
} );
|
68
|
+
|
69
|
+
it( "should have created the date picker toggle button", function() {
|
70
|
+
var $toggle = $elm.next().find( "a" );
|
71
|
+
expect( $toggle.attr( "class" ) ).to.contain( "picker-toggle" );
|
72
|
+
expect( $toggle.attr( "id" ) ).to.equal( "appointment-picker-toggle" );
|
73
|
+
} );
|
74
|
+
|
75
|
+
it( "should have created an instance of the calendar plugin", function() {
|
76
|
+
expect( $calendar.length ).to.equal( 1 );
|
77
|
+
expect( $calendar.find( ".wb-clndr" ).length ).to.equal( 1 );
|
78
|
+
} );
|
79
|
+
|
80
|
+
it( "should have created a close icon", function() {
|
81
|
+
expect( $calendar.find( ".picker-close" ).length ).to.equal( 1 );
|
82
|
+
} );
|
83
|
+
|
84
|
+
it( "should have hidden the calendar", function() {
|
85
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
86
|
+
expect( $calendar.attr( "aria-hidden" ) ).to.equal( "true" );
|
87
|
+
} );
|
88
|
+
|
89
|
+
it( "should have added links to the calendar", function() {
|
90
|
+
var lastDay = new Date();
|
91
|
+
lastDay.setMonth( lastDay.getMonth() + 1, 0 );
|
92
|
+
expect( $calendar.find( ".cal-days a" ).length ).to.equal( lastDay.getDate() );
|
93
|
+
} );
|
94
|
+
|
95
|
+
it( "should have stored a state object in the field element", function() {
|
96
|
+
var field = $elm.get( 0 ),
|
97
|
+
state = field.state,
|
98
|
+
today = new Date();
|
99
|
+
|
100
|
+
expect( typeof state ).to.equal( "object" );
|
101
|
+
expect( state.labelText ).to.equal( "Appointment Date" );
|
102
|
+
expect( state.field ).to.equal( field );
|
103
|
+
expect( state.$field.get( 0 ) ).to.equal( $elm.get( 0 ) );
|
104
|
+
expect( state.minDate.toString() ).to.equal( new Date( 1800, 0, 1 ).toString() );
|
105
|
+
expect( state.maxDate.toString() ).to.equal( new Date( 2100, 0, 1 ).toString() );
|
106
|
+
expect( state.year ).to.equal( today.getFullYear() );
|
107
|
+
expect( state.month ).to.equal( today.getMonth() );
|
108
|
+
expect( typeof state.daysCallback ).to.equal( "function" );
|
109
|
+
} );
|
110
|
+
} );
|
111
|
+
|
112
|
+
describe( "with a date format and error in the label", function() {
|
113
|
+
var label = "<label for=\"appointment\">" +
|
114
|
+
"<span class=\"field-name\">Appointment Date</span>" +
|
115
|
+
"<span class=\"datepicker-format\"> (<abbr title=\"Four digits year, dash, two digits month, dash, two digits day\">YYYY-MM-DD</abbr>)</span>" +
|
116
|
+
"<strong class=\"error\" id=\"appointment-error\">" +
|
117
|
+
"<span class=\"label label-danger\">" +
|
118
|
+
"<span class=\"prefix\">Error 1: </span>Please enter a valid date" +
|
119
|
+
"</span>" +
|
120
|
+
"</strong>" +
|
121
|
+
"</label>";
|
122
|
+
|
123
|
+
before( beforeFactory( null, label ) );
|
124
|
+
after( defaultAfter );
|
125
|
+
|
126
|
+
it( "should have stored only the field name in the label", function() {
|
127
|
+
var state = $elm.get( 0 ).state;
|
128
|
+
expect( state.labelText ).to.equal( "Appointment Date" );
|
129
|
+
} );
|
130
|
+
} );
|
131
|
+
|
132
|
+
describe( "with a populated date", function() {
|
133
|
+
before( beforeFactory( "<input type=\"date\" id=\"appointment\" value=\"2014-08-07\"/>" ) );
|
134
|
+
after( defaultAfter );
|
135
|
+
|
136
|
+
it( "should have stored the date in the state object", function() {
|
137
|
+
var state = $elm.get( 0 ).state;
|
138
|
+
expect( state.date.toString() ).to.equal( new Date( 2014, 7, 7 ).toString() );
|
139
|
+
} );
|
140
|
+
} );
|
141
|
+
|
142
|
+
describe( "toggle button", function() {
|
143
|
+
var hiddenAltText = "Pick a date from a calendar for field: Appointment Date";
|
144
|
+
|
145
|
+
before( beforeFactory() );
|
146
|
+
after( defaultAfter );
|
147
|
+
|
148
|
+
it( "should have added alternative text indentifying the parent control", function() {
|
149
|
+
var $toggle = $elm.next().find( "a" );
|
150
|
+
expect( $toggle.text() ).to.equal( hiddenAltText );
|
151
|
+
expect( $toggle.attr( "title" ) ).to.equal( hiddenAltText );
|
152
|
+
} );
|
153
|
+
|
154
|
+
describe( "click while calendar is closed", function() {
|
155
|
+
before( function() {
|
156
|
+
$elm.next().find( "a" ).click();
|
157
|
+
} );
|
158
|
+
|
159
|
+
after( function() {
|
160
|
+
$elm.next().find( "a" ).click();
|
161
|
+
} );
|
162
|
+
|
163
|
+
it( "should have opened the calendar", function() {
|
164
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( true );
|
165
|
+
expect( $calendar.css( "display" ) ).to.equal( "block" );
|
166
|
+
} );
|
167
|
+
|
168
|
+
it( "should have updated the alternative text on open", function() {
|
169
|
+
var $toggle = $elm.next().find( "a" );
|
170
|
+
var altText = "Hide calendar (escape key)";
|
171
|
+
expect( $toggle.text() ).to.equal( altText );
|
172
|
+
expect( $toggle.attr( "title" ) ).to.equal( altText );
|
173
|
+
} );
|
174
|
+
} );
|
175
|
+
|
176
|
+
describe( "click while calendar is opened", function() {
|
177
|
+
before( function() {
|
178
|
+
$elm.next().find( "a" ).click().click();
|
179
|
+
} );
|
180
|
+
|
181
|
+
it( "should have closed the calendar on a second click", function() {
|
182
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( false );
|
183
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
184
|
+
} );
|
185
|
+
|
186
|
+
it( "should have updated the alternative text on close", function() {
|
187
|
+
var $toggle = $elm.next().find( "a" );
|
188
|
+
expect( $toggle.text() ).to.equal( hiddenAltText );
|
189
|
+
expect( $toggle.attr( "title" ) ).to.equal( hiddenAltText );
|
190
|
+
} );
|
191
|
+
} );
|
192
|
+
} );
|
193
|
+
|
194
|
+
describe( "toggle button for disabled date field", function() {
|
195
|
+
before( function( done ) {
|
196
|
+
callback = function() {
|
197
|
+
$elm.next().find( "a" ).click();
|
198
|
+
done();
|
199
|
+
};
|
200
|
+
beforeFactory( "<input type=\"date\" readonly id=\"appointment\"/>" )();
|
201
|
+
} );
|
202
|
+
after( function() {
|
203
|
+
|
204
|
+
//Avoids breaking subsequent tests if the test fails.
|
205
|
+
$elm.next().find( "a" ).click();
|
206
|
+
|
207
|
+
defaultAfter();
|
208
|
+
} );
|
209
|
+
|
210
|
+
it( "should not have opend the calendar on click", function() {
|
211
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( false );
|
212
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
213
|
+
} );
|
214
|
+
} );
|
215
|
+
|
216
|
+
describe( "toggle button for read-only date field", function() {
|
217
|
+
before( function( done ) {
|
218
|
+
callback = function() {
|
219
|
+
$elm.next().find( "a" ).click();
|
220
|
+
done();
|
221
|
+
};
|
222
|
+
beforeFactory( "<input type=\"date\" readonly id=\"appointment\"/>" )();
|
223
|
+
} );
|
224
|
+
after( function() {
|
225
|
+
|
226
|
+
//Avoids breaking subsequent tests if the test fails.
|
227
|
+
$elm.next().find( "a" ).click();
|
228
|
+
|
229
|
+
defaultAfter();
|
230
|
+
} );
|
231
|
+
|
232
|
+
it( "should not have opend the calendar on click", function() {
|
233
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( false );
|
234
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
235
|
+
} );
|
236
|
+
} );
|
237
|
+
|
238
|
+
describe( "close button", function() {
|
239
|
+
before( function( done ) {
|
240
|
+
callback = function() {
|
241
|
+
$elm.next().find( "a" ).click();
|
242
|
+
$( ".picker-close" ).click();
|
243
|
+
done();
|
244
|
+
};
|
245
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\"/>" )();
|
246
|
+
} );
|
247
|
+
after( defaultAfter );
|
248
|
+
|
249
|
+
it( "should have closed the calendar on click", function() {
|
250
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( false );
|
251
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
252
|
+
} );
|
253
|
+
} );
|
254
|
+
|
255
|
+
describe( "keyboard shortcut", function() {
|
256
|
+
before( function( done ) {
|
257
|
+
callback = function() {
|
258
|
+
$elm.next().find( "a" ).click();
|
259
|
+
$calendar.trigger( {
|
260
|
+
type: "keydown",
|
261
|
+
which: 27
|
262
|
+
} );
|
263
|
+
done();
|
264
|
+
};
|
265
|
+
beforeFactory()();
|
266
|
+
} );
|
267
|
+
after( defaultAfter );
|
268
|
+
|
269
|
+
it( "should have close the calendar on pressing the escape key", function() {
|
270
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( false );
|
271
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
272
|
+
} );
|
273
|
+
} );
|
274
|
+
|
275
|
+
describe( "opening the calendar", function() {
|
276
|
+
before( function( done ) {
|
277
|
+
callback = function() {
|
278
|
+
$elm.next().find( "a" ).click();
|
279
|
+
done();
|
280
|
+
};
|
281
|
+
beforeFactory( "<input type=\"date\" id=\"test\" min=\"2014-03-04\" max=\"2014-03-18\"/>", "<label for=\"test\">Test Date</label>" )();
|
282
|
+
} );
|
283
|
+
after( function() {
|
284
|
+
$elm.next().find( "a" ).click();
|
285
|
+
defaultAfter();
|
286
|
+
} );
|
287
|
+
|
288
|
+
it( "should have update the calendar settings object with the field state object", function() {
|
289
|
+
var state = $elm.get( 0 ).state,
|
290
|
+
calSettings = $calendar.get( 0 ).firstChild.lib,
|
291
|
+
key;
|
292
|
+
|
293
|
+
for ( key in state ) {
|
294
|
+
expect( calSettings[ key ] ).to.equal( state[ key ] );
|
295
|
+
}
|
296
|
+
} );
|
297
|
+
|
298
|
+
it( "should have updated the aria-hidden attribute", function() {
|
299
|
+
expect( $calendar.attr( "aria-hidden" ) ).to.equal( "false" );
|
300
|
+
} );
|
301
|
+
|
302
|
+
it( "should have updated the aria-controls to the date field", function() {
|
303
|
+
expect( $calendar.attr( "aria-controls" ) ).to.equal( "test" );
|
304
|
+
} );
|
305
|
+
|
306
|
+
it( "should have updated the aria-labelled-by to the toggle button", function() {
|
307
|
+
expect( $calendar.attr( "aria-labelledby" ) ).to.equal( "test-picker-toggle" );
|
308
|
+
} );
|
309
|
+
|
310
|
+
it( "should have positioned the date picker immediately under the control", function() {
|
311
|
+
var calendarPosition = $calendar.offset(),
|
312
|
+
fieldPosition = $elm.offset();
|
313
|
+
|
314
|
+
expect( Math.floor( calendarPosition.left ) ).to.equal( Math.floor( fieldPosition.left ) );
|
315
|
+
expect( Math.floor( calendarPosition.top ) ).to.equal( Math.floor( fieldPosition.top + $elm.outerHeight() ) );
|
316
|
+
} );
|
317
|
+
} );
|
318
|
+
|
319
|
+
describe( "opening the calendar when the field has no date and the current date is inside the date range", function() {
|
320
|
+
var today = new Date();
|
321
|
+
|
322
|
+
before( function( done ) {
|
323
|
+
var minDate = new Date(),
|
324
|
+
maxDate = new Date();
|
325
|
+
|
326
|
+
minDate.setMonth( -1 );
|
327
|
+
maxDate.setMonth( 1 );
|
328
|
+
|
329
|
+
callback = function() {
|
330
|
+
$elm.next().find( "a" ).click();
|
331
|
+
done();
|
332
|
+
};
|
333
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\"" +
|
334
|
+
" min=\"" + minDate.toISOString().split( "T" )[ 0 ] +
|
335
|
+
" max=\"" + maxDate.toISOString().split( "T" )[ 0 ] +
|
336
|
+
" \"/>"
|
337
|
+
)();
|
338
|
+
} );
|
339
|
+
after( function() {
|
340
|
+
$elm.next().find( "a" ).click();
|
341
|
+
defaultAfter();
|
342
|
+
} );
|
343
|
+
|
344
|
+
it( "should have set the month and year to the current month and year", function() {
|
345
|
+
var settings = $calendar.get( 0 ).firstChild.lib;
|
346
|
+
expect( settings.year ).to.equal( today.getFullYear() );
|
347
|
+
expect( settings.month ).to.equal( today.getMonth() );
|
348
|
+
} );
|
349
|
+
} );
|
350
|
+
|
351
|
+
describe( "opening the calendar when the field has no date and the current date is outside the date range", function() {
|
352
|
+
var maxDate = new Date();
|
353
|
+
|
354
|
+
before( function( done ) {
|
355
|
+
var minDate = new Date();
|
356
|
+
|
357
|
+
minDate.setMonth( -2 );
|
358
|
+
maxDate.setMonth( -1 );
|
359
|
+
|
360
|
+
callback = function() {
|
361
|
+
$elm.next().find( "a" ).click();
|
362
|
+
done();
|
363
|
+
};
|
364
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" " +
|
365
|
+
"min=\"" + minDate.toISOString().split( "T" )[ 0 ] + "\" " +
|
366
|
+
"max=\"" + maxDate.toISOString().split( "T" )[ 0 ] + "\" />"
|
367
|
+
)();
|
368
|
+
} );
|
369
|
+
after( function() {
|
370
|
+
$elm.next().find( "a" ).click();
|
371
|
+
defaultAfter();
|
372
|
+
} );
|
373
|
+
|
374
|
+
it( "should have set the month and year to the maximum data's month and year", function() {
|
375
|
+
var settings = $calendar.get( 0 ).firstChild.lib;
|
376
|
+
expect( settings.year ).to.equal( maxDate.getFullYear() );
|
377
|
+
expect( settings.month ).to.equal( maxDate.getMonth() );
|
378
|
+
} );
|
379
|
+
} );
|
380
|
+
|
381
|
+
describe( "opening the calendar when the associated field has a date that is inside the date range", function() {
|
382
|
+
before( function( done ) {
|
383
|
+
callback = function() {
|
384
|
+
$elm.next().find( "a" ).click();
|
385
|
+
done();
|
386
|
+
};
|
387
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" min=\"2014-03-18\" max=\"2015-03-18\" value=\"2014-08-07\"/>" )();
|
388
|
+
} );
|
389
|
+
after( function() {
|
390
|
+
$elm.next().find( "a" ).click();
|
391
|
+
defaultAfter();
|
392
|
+
} );
|
393
|
+
it( "should have set the calendar to the same month as the field's date", function() {
|
394
|
+
var settings = $calendar.get( 0 ).firstChild.lib;
|
395
|
+
expect( settings.year ).to.equal( 2014 );
|
396
|
+
expect( settings.month ).to.equal( 7 );
|
397
|
+
} );
|
398
|
+
|
399
|
+
it( "should have highlighted the selected date", function() {
|
400
|
+
expect( $calendar.find( ".cal-index-7 > a" ).attr( "aria-selected" ) ).to.equal( "true" );
|
401
|
+
} );
|
402
|
+
} );
|
403
|
+
|
404
|
+
describe( "closing the calendar", function() {
|
405
|
+
before( function( done ) {
|
406
|
+
callback = function() {
|
407
|
+
$elm.next().find( "a" ).click().click();
|
408
|
+
done();
|
409
|
+
};
|
410
|
+
beforeFactory()();
|
411
|
+
} );
|
412
|
+
after( defaultAfter );
|
413
|
+
|
414
|
+
it( "should have updated the aria-hidden attribute", function() {
|
415
|
+
expect( $calendar.attr( "aria-hidden" ) ).to.equal( "true" );
|
416
|
+
} );
|
417
|
+
} );
|
418
|
+
|
419
|
+
describe( "minimum date", function() {
|
420
|
+
before( function( done ) {
|
421
|
+
callback = function() {
|
422
|
+
$elm.next().find( "a" ).click();
|
423
|
+
$( ".cal-year" ).val( 2014 ).trigger( "change" );
|
424
|
+
$( ".cal-month" ).val( 2 ).trigger( "change" );
|
425
|
+
done();
|
426
|
+
};
|
427
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" min=\"2014-03-18\"/>" )();
|
428
|
+
} );
|
429
|
+
after( function() {
|
430
|
+
$elm.next().find( "a" ).click();
|
431
|
+
defaultAfter();
|
432
|
+
} );
|
433
|
+
|
434
|
+
it( "should have been added to the state object", function() {
|
435
|
+
expect( $elm.get( 0 ).state.minDate.toString() ).to.equal( new Date( 2014, 2, 18 ).toString() );
|
436
|
+
} );
|
437
|
+
|
438
|
+
it( "should have been passed the minimum to the calendar plugin", function() {
|
439
|
+
expect( $calendar.get( 0 ).firstChild.lib.minDate.toString() ).to.equal( new Date( 2014, 2, 18 ).toString() );
|
440
|
+
} );
|
441
|
+
|
442
|
+
it( "should have prevented the creation of links before the minimum date", function() {
|
443
|
+
expect( $calendar.find( ".cal-days a" ).length ).to.equal( 14 );
|
444
|
+
} );
|
445
|
+
} );
|
446
|
+
|
447
|
+
describe( "maximum date", function() {
|
448
|
+
before( function( done ) {
|
449
|
+
callback = function() {
|
450
|
+
$elm.next().find( "a" ).click();
|
451
|
+
$( ".cal-year" ).val( 2014 ).trigger( "change" );
|
452
|
+
$( ".cal-month" ).val( 2 ).trigger( "change" );
|
453
|
+
done();
|
454
|
+
};
|
455
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" max=\"2014-03-18\"/>" )();
|
456
|
+
} );
|
457
|
+
after( function() {
|
458
|
+
$elm.next().find( "a" ).click();
|
459
|
+
defaultAfter();
|
460
|
+
} );
|
461
|
+
|
462
|
+
it( "should have been added to the state object", function() {
|
463
|
+
expect( $elm.get( 0 ).state.maxDate.toString() ).to.equal( new Date( 2014, 2, 18 ).toString() );
|
464
|
+
} );
|
465
|
+
|
466
|
+
it( "should have been passed the minimum to the calendar plugin", function() {
|
467
|
+
expect( $calendar.get( 0 ).firstChild.lib.maxDate.toString() ).to.equal( new Date( 2014, 2, 18 ).toString() );
|
468
|
+
} );
|
469
|
+
|
470
|
+
it( "should have prevented the creation of links past the maximum date", function() {
|
471
|
+
expect( $calendar.find( ".cal-days a" ).length ).to.equal( 18 );
|
472
|
+
} );
|
473
|
+
} );
|
474
|
+
|
475
|
+
describe( "minimum and maximum dates in same month", function() {
|
476
|
+
before( function( done ) {
|
477
|
+
callback = function() {
|
478
|
+
$elm.next().find( "a" ).click();
|
479
|
+
done();
|
480
|
+
};
|
481
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" min=\"2014-03-04\" max=\"2014-03-18\"/>" )();
|
482
|
+
} );
|
483
|
+
after( function() {
|
484
|
+
$elm.next().find( "a" ).click();
|
485
|
+
defaultAfter();
|
486
|
+
} );
|
487
|
+
|
488
|
+
it( "should have been passed the minimum and maximum to the calendar plugin", function() {
|
489
|
+
var settings = $calendar.get( 0 ).firstChild.lib;
|
490
|
+
expect( settings.minDate.toString() ).to.equal( new Date( 2014, 2, 4 ).toString() );
|
491
|
+
expect( settings.maxDate.toString() ).to.equal( new Date( 2014, 2, 18 ).toString() );
|
492
|
+
} );
|
493
|
+
|
494
|
+
it( "should have prevented the creation of links before the minimum date and past the maximum date", function() {
|
495
|
+
expect( $( calendarSelector ).find( ".cal-days a" ).length ).to.equal( 15 );
|
496
|
+
} );
|
497
|
+
} );
|
498
|
+
|
499
|
+
describe( "selecting a date", function() {
|
500
|
+
before( function( done ) {
|
501
|
+
callback = function() {
|
502
|
+
$elm.next().find( "a" ).click();
|
503
|
+
$calendar.find( ".cal-days a" ).eq( 5 ).click();
|
504
|
+
done();
|
505
|
+
};
|
506
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" min=\"2014-03-01\" max=\"2014-03-31\"/>" )();
|
507
|
+
} );
|
508
|
+
after( defaultAfter );
|
509
|
+
|
510
|
+
it( "should have populated the from field with the selected date", function() {
|
511
|
+
expect( $elm.val() ).to.equal( "2014-03-06" );
|
512
|
+
} );
|
513
|
+
|
514
|
+
it( "should have triggered the change event on the form field", function() {
|
515
|
+
expect( spy.calledWith( "change" ) ).to.equal( true );
|
516
|
+
expect( spy.calledOn( $elm ) ).to.equal( true );
|
517
|
+
} );
|
518
|
+
|
519
|
+
it( "should have closed the calendar", function() {
|
520
|
+
expect( $calendar.hasClass( "open" ) ).to.equal( false );
|
521
|
+
expect( $calendar.css( "display" ) ).to.equal( "none" );
|
522
|
+
} );
|
523
|
+
} );
|
524
|
+
|
525
|
+
describe( "selecting a date for a disabled field", function() {
|
526
|
+
before( function( done ) {
|
527
|
+
callback = function() {
|
528
|
+
$elm.next().find( "a" ).click();
|
529
|
+
$elm.attr( "disabled", "true" );
|
530
|
+
$calendar.find( ".cal-days a" ).eq( 5 ).click();
|
531
|
+
done();
|
532
|
+
};
|
533
|
+
beforeFactory()();
|
534
|
+
} );
|
535
|
+
after( function() {
|
536
|
+
$elm.next().find( "a" ).click();
|
537
|
+
defaultAfter();
|
538
|
+
} );
|
539
|
+
|
540
|
+
it( "should not have populated the form field", function() {
|
541
|
+
expect( $elm.val() ).to.equal( "" );
|
542
|
+
} );
|
543
|
+
|
544
|
+
it( "should not have triggered the change event on the form field", function() {
|
545
|
+
expect( spy.calledWith( "change" ) ).to.equal( false );
|
546
|
+
} );
|
547
|
+
} );
|
548
|
+
|
549
|
+
describe( "selecting a date for a read-only field", function() {
|
550
|
+
before( function( done ) {
|
551
|
+
callback = function() {
|
552
|
+
$elm.next().find( "a" ).click();
|
553
|
+
$elm.attr( "readonly", "true" );
|
554
|
+
$calendar.find( ".cal-days a" ).eq( 5 ).click();
|
555
|
+
done();
|
556
|
+
};
|
557
|
+
beforeFactory()();
|
558
|
+
} );
|
559
|
+
after( function() {
|
560
|
+
$elm.next().find( "a" ).click();
|
561
|
+
defaultAfter();
|
562
|
+
} );
|
563
|
+
|
564
|
+
it( "should not have populated the form field", function() {
|
565
|
+
expect( $elm.val() ).to.equal( "" );
|
566
|
+
} );
|
567
|
+
|
568
|
+
it( "should not have triggered the change event on the form field", function() {
|
569
|
+
expect( spy.calledWith( "change" ) ).to.equal( false );
|
570
|
+
} );
|
571
|
+
} );
|
572
|
+
|
573
|
+
describe( "updating the min and max date of the field after the creation of the element", function() {
|
574
|
+
before( function( done ) {
|
575
|
+
callback = function() {
|
576
|
+
$elm.next().find( "a" ).click().click();
|
577
|
+
$elm.attr( "min", "2014-03-12" );
|
578
|
+
$elm.attr( "max", "2014-03-17" );
|
579
|
+
$elm.next().find( "a" ).click();
|
580
|
+
done();
|
581
|
+
};
|
582
|
+
beforeFactory( "<input type=\"date\" id=\"appointment\" min=\"2014-03-08\" max=\"2014-03-22\"/>" )();
|
583
|
+
} );
|
584
|
+
after( function() {
|
585
|
+
$elm.next().find( "a" ).click();
|
586
|
+
defaultAfter();
|
587
|
+
} );
|
588
|
+
|
589
|
+
it( "should have update the field's state", function() {
|
590
|
+
var field = $elm.get( 0 ),
|
591
|
+
state = field.state;
|
592
|
+
|
593
|
+
expect( state.minDate.toString() ).to.equal( new Date( 2014, 2, 12 ).toString() );
|
594
|
+
expect( state.maxDate.toString() ).to.equal( new Date( 2014, 2, 17 ).toString() );
|
595
|
+
} );
|
596
|
+
|
597
|
+
it( "should have update the min and max date of the date picker", function() {
|
598
|
+
expect( $( calendarSelector ).find( ".cal-days a" ).length ).to.equal( 6 );
|
599
|
+
} );
|
600
|
+
} );
|
601
|
+
} );
|
602
|
+
|
603
|
+
}( jQuery, wb ) );
|
@@ -0,0 +1,8 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Experience Toolkit (WET) / Boîte à outils de l'expérience Web (BOEW)
|
3
|
+
* wet-boew.github.io/wet-boew/License-en.html / wet-boew.github.io/wet-boew/Licence-fr.html
|
4
|
+
* v4.0.53 - 2022-09-29
|
5
|
+
*
|
6
|
+
*/
|
7
|
+
!function(f,s){(Modernizr.inputtypes.date?describe.skip:describe)('Input type="date" polyfill (date picker)',function(){function a(t,n){return t=t||'<input type="date" id="appointment"/>',n=n||'<label for="appointment">Appointment Date</label>',function(e){l=r.spy(f.prototype,"trigger"),d=d||e,i=f("<div>"+n+"</div>").prependTo(u),(c=f(t).appendTo(i)).trigger("wb-init.wb-date")}}function e(){r.restore(),i.remove(),d=null}var i,o,c,l,d,r=sinon.sandbox.create(),t=s.doc,u=t.find("body"),n="#wb-picker";before(function(){t.on("wb-init.wb-date","input[type=date]",function(){o=f(n),d&&d()})}),describe("initialization",function(){before(a()),after(e),it("should have marked the element as initialized",function(){expect(c.hasClass("wb-date-inited")).to.equal(!0)}),it("should have created the date picker toggle button",function(){var e=c.next().find("a");expect(e.attr("class")).to.contain("picker-toggle"),expect(e.attr("id")).to.equal("appointment-picker-toggle")}),it("should have created an instance of the calendar plugin",function(){expect(o.length).to.equal(1),expect(o.find(".wb-clndr").length).to.equal(1)}),it("should have created a close icon",function(){expect(o.find(".picker-close").length).to.equal(1)}),it("should have hidden the calendar",function(){expect(o.css("display")).to.equal("none"),expect(o.attr("aria-hidden")).to.equal("true")}),it("should have added links to the calendar",function(){var e=new Date;e.setMonth(e.getMonth()+1,0),expect(o.find(".cal-days a").length).to.equal(e.getDate())}),it("should have stored a state object in the field element",function(){var e=c.get(0),t=e.state,n=new Date;expect(typeof t).to.equal("object"),expect(t.labelText).to.equal("Appointment Date"),expect(t.field).to.equal(e),expect(t.$field.get(0)).to.equal(c.get(0)),expect(t.minDate.toString()).to.equal(new Date(1800,0,1).toString()),expect(t.maxDate.toString()).to.equal(new Date(2100,0,1).toString()),expect(t.year).to.equal(n.getFullYear()),expect(t.month).to.equal(n.getMonth()),expect(typeof t.daysCallback).to.equal("function")})}),describe("with a date format and error in the label",function(){before(a(null,'<label for="appointment"><span class="field-name">Appointment Date</span><span class="datepicker-format"> (<abbr title="Four digits year, dash, two digits month, dash, two digits day">YYYY-MM-DD</abbr>)</span><strong class="error" id="appointment-error"><span class="label label-danger"><span class="prefix">Error 1: </span>Please enter a valid date</span></strong></label>')),after(e),it("should have stored only the field name in the label",function(){var e=c.get(0).state;expect(e.labelText).to.equal("Appointment Date")})}),describe("with a populated date",function(){before(a('<input type="date" id="appointment" value="2014-08-07"/>')),after(e),it("should have stored the date in the state object",function(){var e=c.get(0).state;expect(e.date.toString()).to.equal(new Date(2014,7,7).toString())})}),describe("toggle button",function(){var t="Pick a date from a calendar for field: Appointment Date";before(a()),after(e),it("should have added alternative text indentifying the parent control",function(){var e=c.next().find("a");expect(e.text()).to.equal(t),expect(e.attr("title")).to.equal(t)}),describe("click while calendar is closed",function(){before(function(){c.next().find("a").click()}),after(function(){c.next().find("a").click()}),it("should have opened the calendar",function(){expect(o.hasClass("open")).to.equal(!0),expect(o.css("display")).to.equal("block")}),it("should have updated the alternative text on open",function(){var e=c.next().find("a"),t="Hide calendar (escape key)";expect(e.text()).to.equal(t),expect(e.attr("title")).to.equal(t)})}),describe("click while calendar is opened",function(){before(function(){c.next().find("a").click().click()}),it("should have closed the calendar on a second click",function(){expect(o.hasClass("open")).to.equal(!1),expect(o.css("display")).to.equal("none")}),it("should have updated the alternative text on close",function(){var e=c.next().find("a");expect(e.text()).to.equal(t),expect(e.attr("title")).to.equal(t)})})}),describe("toggle button for disabled date field",function(){before(function(e){d=function(){c.next().find("a").click(),e()},a('<input type="date" readonly id="appointment"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should not have opend the calendar on click",function(){expect(o.hasClass("open")).to.equal(!1),expect(o.css("display")).to.equal("none")})}),describe("toggle button for read-only date field",function(){before(function(e){d=function(){c.next().find("a").click(),e()},a('<input type="date" readonly id="appointment"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should not have opend the calendar on click",function(){expect(o.hasClass("open")).to.equal(!1),expect(o.css("display")).to.equal("none")})}),describe("close button",function(){before(function(e){d=function(){c.next().find("a").click(),f(".picker-close").click(),e()},a('<input type="date" id="appointment"/>')()}),after(e),it("should have closed the calendar on click",function(){expect(o.hasClass("open")).to.equal(!1),expect(o.css("display")).to.equal("none")})}),describe("keyboard shortcut",function(){before(function(e){d=function(){c.next().find("a").click(),o.trigger({type:"keydown",which:27}),e()},a()()}),after(e),it("should have close the calendar on pressing the escape key",function(){expect(o.hasClass("open")).to.equal(!1),expect(o.css("display")).to.equal("none")})}),describe("opening the calendar",function(){before(function(e){d=function(){c.next().find("a").click(),e()},a('<input type="date" id="test" min="2014-03-04" max="2014-03-18"/>','<label for="test">Test Date</label>')()}),after(function(){c.next().find("a").click(),e()}),it("should have update the calendar settings object with the field state object",function(){var e,t=c.get(0).state,n=o.get(0).firstChild.lib;for(e in t)expect(n[e]).to.equal(t[e])}),it("should have updated the aria-hidden attribute",function(){expect(o.attr("aria-hidden")).to.equal("false")}),it("should have updated the aria-controls to the date field",function(){expect(o.attr("aria-controls")).to.equal("test")}),it("should have updated the aria-labelled-by to the toggle button",function(){expect(o.attr("aria-labelledby")).to.equal("test-picker-toggle")}),it("should have positioned the date picker immediately under the control",function(){var e=o.offset(),t=c.offset();expect(Math.floor(e.left)).to.equal(Math.floor(t.left)),expect(Math.floor(e.top)).to.equal(Math.floor(t.top+c.outerHeight()))})}),describe("opening the calendar when the field has no date and the current date is inside the date range",function(){var t=new Date;before(function(e){var t=new Date,n=new Date;t.setMonth(-1),n.setMonth(1),d=function(){c.next().find("a").click(),e()},a('<input type="date" id="appointment" min="'+t.toISOString().split("T")[0]+' max="'+n.toISOString().split("T")[0]+' "/>')()}),after(function(){c.next().find("a").click(),e()}),it("should have set the month and year to the current month and year",function(){var e=o.get(0).firstChild.lib;expect(e.year).to.equal(t.getFullYear()),expect(e.month).to.equal(t.getMonth())})}),describe("opening the calendar when the field has no date and the current date is outside the date range",function(){var n=new Date;before(function(e){var t=new Date;t.setMonth(-2),n.setMonth(-1),d=function(){c.next().find("a").click(),e()},a('<input type="date" id="appointment" min="'+t.toISOString().split("T")[0]+'" max="'+n.toISOString().split("T")[0]+'" />')()}),after(function(){c.next().find("a").click(),e()}),it("should have set the month and year to the maximum data's month and year",function(){var e=o.get(0).firstChild.lib;expect(e.year).to.equal(n.getFullYear()),expect(e.month).to.equal(n.getMonth())})}),describe("opening the calendar when the associated field has a date that is inside the date range",function(){before(function(e){d=function(){c.next().find("a").click(),e()},a('<input type="date" id="appointment" min="2014-03-18" max="2015-03-18" value="2014-08-07"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should have set the calendar to the same month as the field's date",function(){var e=o.get(0).firstChild.lib;expect(e.year).to.equal(2014),expect(e.month).to.equal(7)}),it("should have highlighted the selected date",function(){expect(o.find(".cal-index-7 > a").attr("aria-selected")).to.equal("true")})}),describe("closing the calendar",function(){before(function(e){d=function(){c.next().find("a").click().click(),e()},a()()}),after(e),it("should have updated the aria-hidden attribute",function(){expect(o.attr("aria-hidden")).to.equal("true")})}),describe("minimum date",function(){before(function(e){d=function(){c.next().find("a").click(),f(".cal-year").val(2014).trigger("change"),f(".cal-month").val(2).trigger("change"),e()},a('<input type="date" id="appointment" min="2014-03-18"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should have been added to the state object",function(){expect(c.get(0).state.minDate.toString()).to.equal(new Date(2014,2,18).toString())}),it("should have been passed the minimum to the calendar plugin",function(){expect(o.get(0).firstChild.lib.minDate.toString()).to.equal(new Date(2014,2,18).toString())}),it("should have prevented the creation of links before the minimum date",function(){expect(o.find(".cal-days a").length).to.equal(14)})}),describe("maximum date",function(){before(function(e){d=function(){c.next().find("a").click(),f(".cal-year").val(2014).trigger("change"),f(".cal-month").val(2).trigger("change"),e()},a('<input type="date" id="appointment" max="2014-03-18"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should have been added to the state object",function(){expect(c.get(0).state.maxDate.toString()).to.equal(new Date(2014,2,18).toString())}),it("should have been passed the minimum to the calendar plugin",function(){expect(o.get(0).firstChild.lib.maxDate.toString()).to.equal(new Date(2014,2,18).toString())}),it("should have prevented the creation of links past the maximum date",function(){expect(o.find(".cal-days a").length).to.equal(18)})}),describe("minimum and maximum dates in same month",function(){before(function(e){d=function(){c.next().find("a").click(),e()},a('<input type="date" id="appointment" min="2014-03-04" max="2014-03-18"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should have been passed the minimum and maximum to the calendar plugin",function(){var e=o.get(0).firstChild.lib;expect(e.minDate.toString()).to.equal(new Date(2014,2,4).toString()),expect(e.maxDate.toString()).to.equal(new Date(2014,2,18).toString())}),it("should have prevented the creation of links before the minimum date and past the maximum date",function(){expect(f(n).find(".cal-days a").length).to.equal(15)})}),describe("selecting a date",function(){before(function(e){d=function(){c.next().find("a").click(),o.find(".cal-days a").eq(5).click(),e()},a('<input type="date" id="appointment" min="2014-03-01" max="2014-03-31"/>')()}),after(e),it("should have populated the from field with the selected date",function(){expect(c.val()).to.equal("2014-03-06")}),it("should have triggered the change event on the form field",function(){expect(l.calledWith("change")).to.equal(!0),expect(l.calledOn(c)).to.equal(!0)}),it("should have closed the calendar",function(){expect(o.hasClass("open")).to.equal(!1),expect(o.css("display")).to.equal("none")})}),describe("selecting a date for a disabled field",function(){before(function(e){d=function(){c.next().find("a").click(),c.attr("disabled","true"),o.find(".cal-days a").eq(5).click(),e()},a()()}),after(function(){c.next().find("a").click(),e()}),it("should not have populated the form field",function(){expect(c.val()).to.equal("")}),it("should not have triggered the change event on the form field",function(){expect(l.calledWith("change")).to.equal(!1)})}),describe("selecting a date for a read-only field",function(){before(function(e){d=function(){c.next().find("a").click(),c.attr("readonly","true"),o.find(".cal-days a").eq(5).click(),e()},a()()}),after(function(){c.next().find("a").click(),e()}),it("should not have populated the form field",function(){expect(c.val()).to.equal("")}),it("should not have triggered the change event on the form field",function(){expect(l.calledWith("change")).to.equal(!1)})}),describe("updating the min and max date of the field after the creation of the element",function(){before(function(e){d=function(){c.next().find("a").click().click(),c.attr("min","2014-03-12"),c.attr("max","2014-03-17"),c.next().find("a").click(),e()},a('<input type="date" id="appointment" min="2014-03-08" max="2014-03-22"/>')()}),after(function(){c.next().find("a").click(),e()}),it("should have update the field's state",function(){var e=c.get(0).state;expect(e.minDate.toString()).to.equal(new Date(2014,2,12).toString()),expect(e.maxDate.toString()).to.equal(new Date(2014,2,17).toString())}),it("should have update the min and max date of the date picker",function(){expect(f(n).find(".cal-days a").length).to.equal(6)})})})}(jQuery,wb);
|
8
|
+
//# sourceMappingURL=test.min.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"test.min.js","sources":["test.js"],"names":["$","wb","Modernizr","inputtypes","date","describe","skip","beforeFactory","elm","label","done","spy","sandbox","prototype","callback","$formGroup","prependTo","$body","$elm","appendTo","trigger","defaultAfter","restore","remove","$calendar","sinon","create","$document","doc","find","calendarSelector","before","on","after","it","expect","hasClass","to","equal","$toggle","next","attr","contain","length","css","lastDay","Date","setMonth","getMonth","getDate","field","get","state","today","labelText","$field","minDate","toString","maxDate","year","getFullYear","month","daysCallback","hiddenAltText","text","click","altText","type","which","key","calSettings","firstChild","lib","calendarPosition","offset","fieldPosition","Math","floor","left","top","outerHeight","toISOString","split","settings","val","eq","calledWith","calledOn","jQuery"],"mappings":"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"}
|