@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.
Files changed (292) hide show
  1. package/dist/WetButton.d.ts +9 -0
  2. package/dist/WetModal.d.ts +6 -0
  3. package/dist/first-test-wet.cjs.development.js +26 -0
  4. package/dist/first-test-wet.cjs.development.js.map +1 -1
  5. package/dist/first-test-wet.cjs.production.min.js +1 -1
  6. package/dist/first-test-wet.cjs.production.min.js.map +1 -1
  7. package/dist/first-test-wet.esm.js +26 -1
  8. package/dist/first-test-wet.esm.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/package.json +1 -1
  11. package/src/WetButton.tsx +19 -0
  12. package/src/WetModal.tsx +26 -0
  13. package/src/index.tsx +2 -2
  14. package/src/theme-wet-boew/assets/favicon-mobile.png +0 -0
  15. package/src/theme-wet-boew/assets/favicon.ico +0 -0
  16. package/src/theme-wet-boew/assets/logo.png +0 -0
  17. package/src/theme-wet-boew/assets/logo.svg +14 -0
  18. package/src/theme-wet-boew/css/ie8-theme.css +17370 -0
  19. package/src/theme-wet-boew/css/ie8-theme.min.css +193 -0
  20. package/src/theme-wet-boew/css/ie8-wet-boew.css +12 -0
  21. package/src/theme-wet-boew/css/ie8-wet-boew.min.css +7 -0
  22. package/src/theme-wet-boew/css/theme.css +11357 -0
  23. package/src/theme-wet-boew/css/theme.min.css +6 -0
  24. package/src/theme-wet-boew/css/wet-boew.css +12 -0
  25. package/src/theme-wet-boew/css/wet-boew.min.css +6 -0
  26. package/src/theme-wet-boew/payload.json +66 -0
  27. package/src/wet-boew/assets/cloud-popup-relative.png +0 -0
  28. package/src/wet-boew/assets/fd-slider-sprite.png +0 -0
  29. package/src/wet-boew/assets/loading.png +0 -0
  30. package/src/wet-boew/assets/mediacontrols.html +32 -0
  31. package/src/wet-boew/assets/sprites_share.png +0 -0
  32. package/src/wet-boew/assets/zoom-minus-mini.png +0 -0
  33. package/src/wet-boew/assets/zoom-plus-mini.png +0 -0
  34. package/src/wet-boew/assets/zoom-world-mini.png +0 -0
  35. package/src/wet-boew/css/noscript.css +112 -0
  36. package/src/wet-boew/css/noscript.min.css +6 -0
  37. package/src/wet-boew/css/polyfills/datalist.css +32 -0
  38. package/src/wet-boew/css/polyfills/datalist.min.css +1 -0
  39. package/src/wet-boew/css/polyfills/datepicker.css +47 -0
  40. package/src/wet-boew/css/polyfills/datepicker.min.css +1 -0
  41. package/src/wet-boew/css/polyfills/details.css +28 -0
  42. package/src/wet-boew/css/polyfills/details.min.css +1 -0
  43. package/src/wet-boew/css/polyfills/mathml.css +16 -0
  44. package/src/wet-boew/css/polyfills/mathml.min.css +1 -0
  45. package/src/wet-boew/css/polyfills/meter.css +24 -0
  46. package/src/wet-boew/css/polyfills/meter.min.css +1 -0
  47. package/src/wet-boew/css/polyfills/progress.css +8 -0
  48. package/src/wet-boew/css/polyfills/progress.min.css +1 -0
  49. package/src/wet-boew/css/polyfills/slider.css +229 -0
  50. package/src/wet-boew/css/polyfills/slider.min.css +1 -0
  51. package/src/wet-boew/fonts/glyphicons-halflings-regular.eot +0 -0
  52. package/src/wet-boew/fonts/glyphicons-halflings-regular.svg +288 -0
  53. package/src/wet-boew/fonts/glyphicons-halflings-regular.ttf +0 -0
  54. package/src/wet-boew/fonts/glyphicons-halflings-regular.woff +0 -0
  55. package/src/wet-boew/fonts/glyphicons-halflings-regular.woff2 +0 -0
  56. package/src/wet-boew/js/MathJax/mml-chtml.js +1 -0
  57. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  58. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  59. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  60. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  61. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  62. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  63. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  64. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  65. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  66. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  67. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  68. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  69. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  70. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  71. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  72. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  73. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  74. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  75. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  76. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  77. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  78. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  79. package/src/wet-boew/js/MathJax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  80. package/src/wet-boew/js/deps/additional-methods.js +1512 -0
  81. package/src/wet-boew/js/deps/additional-methods.min.js +9 -0
  82. package/src/wet-boew/js/deps/geomap-lib.js +3758 -0
  83. package/src/wet-boew/js/deps/geomap-lib.min.js +1 -0
  84. package/src/wet-boew/js/deps/jquery.dataTables.js +15345 -0
  85. package/src/wet-boew/js/deps/jquery.dataTables.min.js +4 -0
  86. package/src/wet-boew/js/deps/jquery.flot.canvas.js +345 -0
  87. package/src/wet-boew/js/deps/jquery.flot.canvas.min.js +1 -0
  88. package/src/wet-boew/js/deps/jquery.flot.js +3168 -0
  89. package/src/wet-boew/js/deps/jquery.flot.min.js +1 -0
  90. package/src/wet-boew/js/deps/jquery.flot.orderBars.js +282 -0
  91. package/src/wet-boew/js/deps/jquery.flot.orderBars.min.js +1 -0
  92. package/src/wet-boew/js/deps/jquery.flot.pie.js +820 -0
  93. package/src/wet-boew/js/deps/jquery.flot.pie.min.js +1 -0
  94. package/src/wet-boew/js/deps/jquery.magnific-popup.js +2061 -0
  95. package/src/wet-boew/js/deps/jquery.magnific-popup.min.js +4 -0
  96. package/src/wet-boew/js/deps/jquery.validate.js +1661 -0
  97. package/src/wet-boew/js/deps/jquery.validate.min.js +9 -0
  98. package/src/wet-boew/js/deps/json-patch.js +315 -0
  99. package/src/wet-boew/js/deps/json-patch.min.js +1 -0
  100. package/src/wet-boew/js/deps/jsonpointer.js +349 -0
  101. package/src/wet-boew/js/deps/jsonpointer.min.js +1 -0
  102. package/src/wet-boew/js/deps/lang-apollo.js +53 -0
  103. package/src/wet-boew/js/deps/lang-apollo.min.js +1 -0
  104. package/src/wet-boew/js/deps/lang-basic.js +49 -0
  105. package/src/wet-boew/js/deps/lang-basic.min.js +1 -0
  106. package/src/wet-boew/js/deps/lang-clj.js +64 -0
  107. package/src/wet-boew/js/deps/lang-clj.min.js +1 -0
  108. package/src/wet-boew/js/deps/lang-css.js +160 -0
  109. package/src/wet-boew/js/deps/lang-css.min.js +1 -0
  110. package/src/wet-boew/js/deps/lang-dart.js +92 -0
  111. package/src/wet-boew/js/deps/lang-dart.min.js +1 -0
  112. package/src/wet-boew/js/deps/lang-erlang.js +94 -0
  113. package/src/wet-boew/js/deps/lang-erlang.min.js +1 -0
  114. package/src/wet-boew/js/deps/lang-go.js +59 -0
  115. package/src/wet-boew/js/deps/lang-go.min.js +1 -0
  116. package/src/wet-boew/js/deps/lang-hs.js +102 -0
  117. package/src/wet-boew/js/deps/lang-hs.min.js +1 -0
  118. package/src/wet-boew/js/deps/lang-lasso.js +67 -0
  119. package/src/wet-boew/js/deps/lang-lasso.min.js +1 -0
  120. package/src/wet-boew/js/deps/lang-lisp.js +95 -0
  121. package/src/wet-boew/js/deps/lang-lisp.min.js +1 -0
  122. package/src/wet-boew/js/deps/lang-llvm.js +63 -0
  123. package/src/wet-boew/js/deps/lang-llvm.min.js +1 -0
  124. package/src/wet-boew/js/deps/lang-logtalk.js +50 -0
  125. package/src/wet-boew/js/deps/lang-logtalk.min.js +1 -0
  126. package/src/wet-boew/js/deps/lang-lua.js +60 -0
  127. package/src/wet-boew/js/deps/lang-lua.min.js +1 -0
  128. package/src/wet-boew/js/deps/lang-matlab.js +183 -0
  129. package/src/wet-boew/js/deps/lang-matlab.min.js +1 -0
  130. package/src/wet-boew/js/deps/lang-ml.js +57 -0
  131. package/src/wet-boew/js/deps/lang-ml.min.js +1 -0
  132. package/src/wet-boew/js/deps/lang-mumps.js +140 -0
  133. package/src/wet-boew/js/deps/lang-mumps.min.js +1 -0
  134. package/src/wet-boew/js/deps/lang-n.js +67 -0
  135. package/src/wet-boew/js/deps/lang-n.min.js +1 -0
  136. package/src/wet-boew/js/deps/lang-pascal.js +49 -0
  137. package/src/wet-boew/js/deps/lang-pascal.min.js +1 -0
  138. package/src/wet-boew/js/deps/lang-proto.js +37 -0
  139. package/src/wet-boew/js/deps/lang-proto.min.js +1 -0
  140. package/src/wet-boew/js/deps/lang-r.js +59 -0
  141. package/src/wet-boew/js/deps/lang-r.min.js +1 -0
  142. package/src/wet-boew/js/deps/lang-rd.js +50 -0
  143. package/src/wet-boew/js/deps/lang-rd.min.js +1 -0
  144. package/src/wet-boew/js/deps/lang-rust.js +81 -0
  145. package/src/wet-boew/js/deps/lang-rust.min.js +1 -0
  146. package/src/wet-boew/js/deps/lang-scala.js +56 -0
  147. package/src/wet-boew/js/deps/lang-scala.min.js +1 -0
  148. package/src/wet-boew/js/deps/lang-sql.js +59 -0
  149. package/src/wet-boew/js/deps/lang-sql.min.js +1 -0
  150. package/src/wet-boew/js/deps/lang-swift.js +60 -0
  151. package/src/wet-boew/js/deps/lang-swift.min.js +1 -0
  152. package/src/wet-boew/js/deps/lang-tcl.js +63 -0
  153. package/src/wet-boew/js/deps/lang-tcl.min.js +1 -0
  154. package/src/wet-boew/js/deps/lang-tex.js +49 -0
  155. package/src/wet-boew/js/deps/lang-tex.min.js +1 -0
  156. package/src/wet-boew/js/deps/lang-vb.js +67 -0
  157. package/src/wet-boew/js/deps/lang-vb.min.js +1 -0
  158. package/src/wet-boew/js/deps/lang-vhdl.js +51 -0
  159. package/src/wet-boew/js/deps/lang-vhdl.min.js +1 -0
  160. package/src/wet-boew/js/deps/lang-wiki.js +55 -0
  161. package/src/wet-boew/js/deps/lang-wiki.min.js +1 -0
  162. package/src/wet-boew/js/deps/lang-xq.js +71 -0
  163. package/src/wet-boew/js/deps/lang-xq.min.js +1 -0
  164. package/src/wet-boew/js/deps/lang-yaml.js +45 -0
  165. package/src/wet-boew/js/deps/lang-yaml.min.js +1 -0
  166. package/src/wet-boew/js/deps/ol.js +1008 -0
  167. package/src/wet-boew/js/deps/ol.min.js +1 -0
  168. package/src/wet-boew/js/deps/prettify.js +1742 -0
  169. package/src/wet-boew/js/deps/prettify.min.js +1 -0
  170. package/src/wet-boew/js/deps/proj4.js +3 -0
  171. package/src/wet-boew/js/deps/proj4.min.js +1 -0
  172. package/src/wet-boew/js/deps/run_prettify.js +1998 -0
  173. package/src/wet-boew/js/deps/run_prettify.min.js +1 -0
  174. package/src/wet-boew/js/deps/tableparser.js +2216 -0
  175. package/src/wet-boew/js/deps/tableparser.min.js +1 -0
  176. package/src/wet-boew/js/deps/unorm.js +452 -0
  177. package/src/wet-boew/js/deps/unorm.min.js +1 -0
  178. package/src/wet-boew/js/i18n/af.js +246 -0
  179. package/src/wet-boew/js/i18n/af.min.js +7 -0
  180. package/src/wet-boew/js/i18n/ar.js +285 -0
  181. package/src/wet-boew/js/i18n/ar.min.js +7 -0
  182. package/src/wet-boew/js/i18n/bg.js +285 -0
  183. package/src/wet-boew/js/i18n/bg.min.js +7 -0
  184. package/src/wet-boew/js/i18n/cs.js +286 -0
  185. package/src/wet-boew/js/i18n/cs.min.js +7 -0
  186. package/src/wet-boew/js/i18n/de.js +355 -0
  187. package/src/wet-boew/js/i18n/de.min.js +7 -0
  188. package/src/wet-boew/js/i18n/el.js +285 -0
  189. package/src/wet-boew/js/i18n/el.min.js +7 -0
  190. package/src/wet-boew/js/i18n/en.js +246 -0
  191. package/src/wet-boew/js/i18n/en.min.js +7 -0
  192. package/src/wet-boew/js/i18n/es.js +288 -0
  193. package/src/wet-boew/js/i18n/es.min.js +7 -0
  194. package/src/wet-boew/js/i18n/et.js +283 -0
  195. package/src/wet-boew/js/i18n/et.min.js +7 -0
  196. package/src/wet-boew/js/i18n/fr.js +314 -0
  197. package/src/wet-boew/js/i18n/fr.min.js +7 -0
  198. package/src/wet-boew/js/i18n/hi.js +246 -0
  199. package/src/wet-boew/js/i18n/hi.min.js +7 -0
  200. package/src/wet-boew/js/i18n/hu.js +285 -0
  201. package/src/wet-boew/js/i18n/hu.min.js +7 -0
  202. package/src/wet-boew/js/i18n/hy.js +246 -0
  203. package/src/wet-boew/js/i18n/hy.min.js +7 -0
  204. package/src/wet-boew/js/i18n/id.js +284 -0
  205. package/src/wet-boew/js/i18n/id.min.js +7 -0
  206. package/src/wet-boew/js/i18n/is.js +283 -0
  207. package/src/wet-boew/js/i18n/is.min.js +7 -0
  208. package/src/wet-boew/js/i18n/it.js +312 -0
  209. package/src/wet-boew/js/i18n/it.min.js +7 -0
  210. package/src/wet-boew/js/i18n/iu.js +246 -0
  211. package/src/wet-boew/js/i18n/iu.min.js +7 -0
  212. package/src/wet-boew/js/i18n/ja.js +286 -0
  213. package/src/wet-boew/js/i18n/ja.min.js +7 -0
  214. package/src/wet-boew/js/i18n/ko.js +285 -0
  215. package/src/wet-boew/js/i18n/ko.min.js +7 -0
  216. package/src/wet-boew/js/i18n/lt.js +285 -0
  217. package/src/wet-boew/js/i18n/lt.min.js +7 -0
  218. package/src/wet-boew/js/i18n/lv.js +285 -0
  219. package/src/wet-boew/js/i18n/lv.min.js +7 -0
  220. package/src/wet-boew/js/i18n/nl.js +319 -0
  221. package/src/wet-boew/js/i18n/nl.min.js +7 -0
  222. package/src/wet-boew/js/i18n/pl.js +288 -0
  223. package/src/wet-boew/js/i18n/pl.min.js +7 -0
  224. package/src/wet-boew/js/i18n/pt-BR.js +246 -0
  225. package/src/wet-boew/js/i18n/pt-BR.min.js +7 -0
  226. package/src/wet-boew/js/i18n/pt.js +271 -0
  227. package/src/wet-boew/js/i18n/pt.min.js +7 -0
  228. package/src/wet-boew/js/i18n/ru.js +285 -0
  229. package/src/wet-boew/js/i18n/ru.min.js +7 -0
  230. package/src/wet-boew/js/i18n/sk.js +283 -0
  231. package/src/wet-boew/js/i18n/sk.min.js +7 -0
  232. package/src/wet-boew/js/i18n/sq.js +246 -0
  233. package/src/wet-boew/js/i18n/sq.min.js +7 -0
  234. package/src/wet-boew/js/i18n/th.js +285 -0
  235. package/src/wet-boew/js/i18n/th.min.js +7 -0
  236. package/src/wet-boew/js/i18n/tr.js +287 -0
  237. package/src/wet-boew/js/i18n/tr.min.js +7 -0
  238. package/src/wet-boew/js/i18n/uk.js +285 -0
  239. package/src/wet-boew/js/i18n/uk.min.js +7 -0
  240. package/src/wet-boew/js/i18n/vi.js +285 -0
  241. package/src/wet-boew/js/i18n/vi.min.js +7 -0
  242. package/src/wet-boew/js/i18n/zh-Hans.js +246 -0
  243. package/src/wet-boew/js/i18n/zh-Hans.min.js +7 -0
  244. package/src/wet-boew/js/i18n/zh.js +286 -0
  245. package/src/wet-boew/js/i18n/zh.min.js +7 -0
  246. package/src/wet-boew/js/ie8-wet-boew.js +3992 -0
  247. package/src/wet-boew/js/ie8-wet-boew.min.js +7 -0
  248. package/src/wet-boew/js/ie8-wet-boew2.js +15294 -0
  249. package/src/wet-boew/js/ie8-wet-boew2.min.js +7 -0
  250. package/src/wet-boew/js/jquery/2.2.4/jquery.js +9814 -0
  251. package/src/wet-boew/js/jquery/2.2.4/jquery.min.js +4 -0
  252. package/src/wet-boew/js/jquery/2.2.4/jquery.min.map +1 -0
  253. package/src/wet-boew/js/polyfills/datalist.js +423 -0
  254. package/src/wet-boew/js/polyfills/datalist.min.js +8 -0
  255. package/src/wet-boew/js/polyfills/datalist.min.js.map +1 -0
  256. package/src/wet-boew/js/polyfills/datalist_dynamic.js +50 -0
  257. package/src/wet-boew/js/polyfills/datalist_dynamic.min.js +8 -0
  258. package/src/wet-boew/js/polyfills/datalist_dynamic.min.js.map +1 -0
  259. package/src/wet-boew/js/polyfills/datepicker.js +338 -0
  260. package/src/wet-boew/js/polyfills/datepicker.min.js +8 -0
  261. package/src/wet-boew/js/polyfills/datepicker.min.js.map +1 -0
  262. package/src/wet-boew/js/polyfills/details.js +126 -0
  263. package/src/wet-boew/js/polyfills/details.min.js +8 -0
  264. package/src/wet-boew/js/polyfills/details.min.js.map +1 -0
  265. package/src/wet-boew/js/polyfills/jawsariafixes.js +47 -0
  266. package/src/wet-boew/js/polyfills/jawsariafixes.min.js +16 -0
  267. package/src/wet-boew/js/polyfills/jawsariafixes.min.js.map +1 -0
  268. package/src/wet-boew/js/polyfills/meter.js +140 -0
  269. package/src/wet-boew/js/polyfills/meter.min.js +8 -0
  270. package/src/wet-boew/js/polyfills/meter.min.js.map +1 -0
  271. package/src/wet-boew/js/polyfills/mobile.js +783 -0
  272. package/src/wet-boew/js/polyfills/mobile.min.js +8 -0
  273. package/src/wet-boew/js/polyfills/mobile.min.js.map +1 -0
  274. package/src/wet-boew/js/polyfills/progress.js +107 -0
  275. package/src/wet-boew/js/polyfills/progress.min.js +8 -0
  276. package/src/wet-boew/js/polyfills/progress.min.js.map +1 -0
  277. package/src/wet-boew/js/polyfills/slider.js +1343 -0
  278. package/src/wet-boew/js/polyfills/slider.min.js +9 -0
  279. package/src/wet-boew/js/polyfills/slider.min.js.map +1 -0
  280. package/src/wet-boew/js/polyfills/slider_wrapper.js +73 -0
  281. package/src/wet-boew/js/polyfills/slider_wrapper.min.js +8 -0
  282. package/src/wet-boew/js/polyfills/slider_wrapper.min.js.map +1 -0
  283. package/src/wet-boew/js/polyfills/svg.js +29 -0
  284. package/src/wet-boew/js/polyfills/svg.min.js +8 -0
  285. package/src/wet-boew/js/polyfills/svg.min.js.map +1 -0
  286. package/src/wet-boew/js/polyfills/test.js +603 -0
  287. package/src/wet-boew/js/polyfills/test.min.js +8 -0
  288. package/src/wet-boew/js/polyfills/test.min.js.map +1 -0
  289. package/src/wet-boew/js/wet-boew.js +17714 -0
  290. package/src/wet-boew/js/wet-boew.min.js +9 -0
  291. package/src/wet-boew/js/wet-boew.min.js.map +1 -0
  292. 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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"}