@shortfuse/materialdesignweb 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/.browserslistrc +2 -1
  2. package/.eslintrc.json +188 -30
  3. package/.stylelintrc.json +643 -2
  4. package/.vscode/launch.json +20 -5
  5. package/.vscode/settings.json +3 -0
  6. package/CHANGELOG.md +36 -0
  7. package/README.md +82 -2
  8. package/adapters/datatable/column.js +176 -0
  9. package/adapters/datatable/index.js +253 -437
  10. package/adapters/dom/index.js +586 -0
  11. package/adapters/list/index.js +36 -113
  12. package/adapters/search/index.js +153 -180
  13. package/components/appbar/_spec.scss +165 -0
  14. package/components/appbar/_theme.scss +0 -0
  15. package/components/appbar/index.scss +2 -0
  16. package/components/banner/_spec.scss +83 -0
  17. package/components/banner/_theme.scss +0 -0
  18. package/components/banner/index.scss +2 -0
  19. package/components/bottomnav/README.md +4 -4
  20. package/components/bottomnav/_spec.scss +149 -0
  21. package/components/bottomnav/_theme.scss +0 -0
  22. package/components/bottomnav/index.js +100 -120
  23. package/components/bottomnav/index.scss +2 -0
  24. package/components/bottomnav/item.js +88 -0
  25. package/components/button/README.md +16 -22
  26. package/components/button/_spec.scss +162 -0
  27. package/components/button/_theme.scss +42 -0
  28. package/components/button/index.eta +32 -0
  29. package/components/button/index.js +37 -48
  30. package/components/button/index.pug +18 -0
  31. package/components/button/index.scss +2 -0
  32. package/components/card/_spec.scss +241 -0
  33. package/components/card/_theme.scss +0 -0
  34. package/components/card/index.scss +2 -0
  35. package/components/chip/_spec.scss +111 -0
  36. package/components/chip/_theme.scss +105 -0
  37. package/components/chip/index.js +23 -0
  38. package/components/chip/index.scss +2 -0
  39. package/components/chip/item.js +20 -0
  40. package/components/datatable/_spec.scss +225 -0
  41. package/components/datatable/_theme.scss +128 -0
  42. package/components/datatable/cell.js +44 -0
  43. package/components/datatable/columnheader.js +46 -0
  44. package/components/datatable/index.js +339 -443
  45. package/components/datatable/index.scss +2 -0
  46. package/components/datatable/row.js +48 -0
  47. package/components/datatable/rowheader.js +18 -0
  48. package/components/dialog/_spec.scss +203 -0
  49. package/components/dialog/_theme.scss +7 -0
  50. package/components/dialog/index.js +512 -437
  51. package/components/dialog/index.scss +2 -0
  52. package/components/divider/_spec.scss +11 -0
  53. package/components/divider/_theme.scss +0 -0
  54. package/components/divider/index.scss +2 -0
  55. package/components/elevation/_spec.scss +9 -0
  56. package/components/elevation/_theme.scss +0 -0
  57. package/components/elevation/index.scss +2 -0
  58. package/components/fab/{style.scss → _spec.scss} +104 -79
  59. package/components/fab/_theme.scss +0 -0
  60. package/components/fab/index.js +85 -79
  61. package/components/fab/index.scss +2 -0
  62. package/components/grid/_spec.scss +169 -0
  63. package/components/grid/_theme.scss +0 -0
  64. package/components/grid/index.scss +2 -0
  65. package/components/layout/_mixins.scss +11 -0
  66. package/components/layout/_spec.scss +916 -0
  67. package/components/layout/_theme.scss +19 -0
  68. package/components/layout/index.js +454 -0
  69. package/components/layout/index.scss +2 -0
  70. package/components/list/_spec.scss +363 -0
  71. package/components/list/_theme.scss +102 -0
  72. package/components/list/content.js +106 -0
  73. package/components/list/index.js +234 -79
  74. package/components/list/index.scss +2 -0
  75. package/components/list/item.js +167 -0
  76. package/components/list/secondary.js +45 -0
  77. package/components/menu/_spec.scss +329 -0
  78. package/components/menu/_theme.scss +0 -0
  79. package/components/menu/index.js +636 -651
  80. package/components/menu/index.scss +2 -0
  81. package/components/menu/item.js +231 -0
  82. package/components/progress/_spec.scss +156 -0
  83. package/components/progress/_theme.scss +0 -0
  84. package/components/progress/index.js +29 -13
  85. package/components/progress/index.scss +2 -0
  86. package/components/selection/_spec.scss +376 -0
  87. package/components/selection/_theme.scss +134 -0
  88. package/components/selection/index.eta +60 -0
  89. package/components/selection/index.js +70 -0
  90. package/components/selection/index.pug +30 -0
  91. package/components/selection/index.scss +2 -0
  92. package/components/selection/input.js +54 -0
  93. package/components/selection/radiogroup.js +40 -0
  94. package/components/slider/{style.scss → _spec.scss} +31 -34
  95. package/components/slider/_theme.scss +0 -0
  96. package/components/slider/index.scss +2 -0
  97. package/components/snackbar/_spec.scss +150 -0
  98. package/components/snackbar/_theme.scss +0 -0
  99. package/components/snackbar/index.js +293 -206
  100. package/components/snackbar/index.scss +2 -0
  101. package/components/tab/_spec.scss +220 -0
  102. package/components/tab/_theme.scss +0 -0
  103. package/components/tab/content.js +210 -0
  104. package/components/tab/index.js +229 -213
  105. package/components/tab/index.scss +2 -0
  106. package/components/tab/item.js +88 -0
  107. package/components/tab/list.js +196 -0
  108. package/components/tab/panel.js +54 -0
  109. package/components/textfield/README.md +4 -4
  110. package/components/textfield/_spec.scss +763 -0
  111. package/components/textfield/_theme.scss +264 -0
  112. package/components/textfield/index.eta +74 -0
  113. package/components/textfield/index.js +132 -138
  114. package/components/textfield/index.pug +30 -0
  115. package/components/textfield/index.scss +2 -0
  116. package/components/tooltip/_spec.scss +185 -0
  117. package/components/tooltip/_theme.scss +0 -0
  118. package/components/tooltip/index.scss +2 -0
  119. package/components/type/_spec.scss +227 -0
  120. package/components/type/_theme.scss +0 -0
  121. package/components/type/index.scss +2 -0
  122. package/core/_breakpoint.scss +189 -0
  123. package/core/_elevation.scss +78 -0
  124. package/core/_length.scss +8 -0
  125. package/core/_motion.scss +31 -0
  126. package/core/_platform.scss +12 -0
  127. package/core/_type.scss +128 -0
  128. package/core/aria/attributes.js +141 -0
  129. package/core/aria/button.js +49 -0
  130. package/core/aria/keyboard.js +92 -0
  131. package/core/aria/rovingtabindex.js +175 -0
  132. package/core/aria/tab.js +59 -0
  133. package/core/document/index.js +39 -0
  134. package/core/dom.js +180 -0
  135. package/core/overlay/_spec.scss +28 -0
  136. package/core/overlay/_theme.scss +147 -0
  137. package/core/overlay/index.js +95 -0
  138. package/core/overlay/index.scss +2 -0
  139. package/core/ripple/_spec.scss +196 -0
  140. package/core/ripple/_theme.scss +20 -0
  141. package/core/ripple/index.js +286 -0
  142. package/core/ripple/index.scss +2 -0
  143. package/core/theme/_aliases.scss +15 -0
  144. package/core/theme/_config.scss +8 -0
  145. package/core/theme/_functions.scss +22 -0
  146. package/{components/theming/palettes.scss → core/theme/_palettes.scss} +173 -151
  147. package/core/theme/_spec.scss +0 -0
  148. package/core/theme/_theme.scss +268 -0
  149. package/core/theme/index.js +50 -0
  150. package/core/theme/index.scss +4 -0
  151. package/core/throttler.js +42 -0
  152. package/core/transition/index.js +465 -0
  153. package/docs/_flex.scss +28 -0
  154. package/docs/_menuoptions.js +183 -0
  155. package/docs/_partials/_androidnavbar.eta +5 -0
  156. package/docs/_partials/_androidstatusbar.eta +13 -0
  157. package/docs/_partials/_appbar.eta +27 -0
  158. package/docs/_partials/_buttontest.eta +31 -0
  159. package/docs/_partials/_header.eta +146 -0
  160. package/docs/_partials/_navlistitem.eta +16 -0
  161. package/docs/_partials/_target.eta +1 -0
  162. package/docs/_sample-utils.js +88 -0
  163. package/docs/{src/storage.js → _storage.js} +0 -0
  164. package/docs/docs.scss +331 -0
  165. package/docs/framework.scss +26 -0
  166. package/docs/index.eta +12 -0
  167. package/docs/index.js +7 -0
  168. package/docs/pages/appbar.eta +108 -0
  169. package/docs/pages/appbar.js +0 -0
  170. package/docs/pages/bottomnav.eta +188 -0
  171. package/docs/pages/bottomnav.js +118 -0
  172. package/docs/pages/button.eta +124 -0
  173. package/docs/pages/button.js +224 -0
  174. package/docs/pages/card.eta +90 -0
  175. package/docs/pages/card.js +175 -0
  176. package/docs/pages/chip.eta +122 -0
  177. package/docs/pages/chip.js +80 -0
  178. package/docs/pages/color.eta +143 -0
  179. package/docs/pages/color.js +261 -0
  180. package/docs/pages/datatable.eta +323 -0
  181. package/docs/pages/datatable.js +160 -0
  182. package/docs/pages/dialog.eta +184 -0
  183. package/docs/{src/components → pages}/dialog.js +35 -48
  184. package/docs/pages/dom.eta +26 -0
  185. package/docs/pages/dom.js +140 -0
  186. package/docs/pages/elevation.eta +35 -0
  187. package/docs/pages/elevation.js +0 -0
  188. package/docs/pages/fab.eta +99 -0
  189. package/docs/{src/components → pages}/fab.js +6 -13
  190. package/docs/pages/grid.eta +135 -0
  191. package/docs/pages/grid.js +128 -0
  192. package/docs/pages/layout.eta +8 -0
  193. package/docs/pages/layout.js +0 -0
  194. package/docs/pages/list.eta +465 -0
  195. package/docs/pages/list.js +8 -0
  196. package/docs/pages/menu.eta +274 -0
  197. package/docs/{src/components → pages}/menu.js +26 -42
  198. package/docs/pages/overlay.eta +69 -0
  199. package/docs/pages/overlay.js +3 -0
  200. package/docs/pages/progress.eta +23 -0
  201. package/docs/{src/components → pages}/progress.js +2 -4
  202. package/docs/pages/ripple.eta +27 -0
  203. package/docs/pages/ripple.js +3 -0
  204. package/docs/pages/search.eta +242 -0
  205. package/docs/pages/search.js +226 -0
  206. package/docs/pages/selection.eta +107 -0
  207. package/docs/pages/selection.js +12 -0
  208. package/docs/pages/slider.eta +23 -0
  209. package/docs/pages/slider.js +0 -0
  210. package/docs/pages/snackbar.eta +83 -0
  211. package/docs/{src/components → pages}/snackbar.js +31 -36
  212. package/docs/pages/tab.eta +407 -0
  213. package/docs/pages/tab.js +152 -0
  214. package/docs/pages/textfield.eta +487 -0
  215. package/docs/{src/components → pages}/textfield.js +41 -45
  216. package/docs/pages/tooltip.eta +92 -0
  217. package/docs/pages/tooltip.js +0 -0
  218. package/docs/pages/transition.eta +117 -0
  219. package/docs/pages/transition.js +52 -0
  220. package/docs/pages/type.eta +31 -0
  221. package/docs/pages/type.js +0 -0
  222. package/docs/postrender.js +41 -0
  223. package/docs/prerender.js +16 -0
  224. package/docs/pwa/_dialogs.eta +143 -0
  225. package/docs/pwa/_menus.eta +16 -0
  226. package/docs/pwa/pwa-prerender.js +3 -0
  227. package/docs/pwa/pwa.eta +478 -0
  228. package/docs/pwa/pwa.js +298 -0
  229. package/docs/pwa/pwa.scss +31 -0
  230. package/docs/themes/theme-colored.scss +15 -0
  231. package/docs/themes/theme-default.scss +3 -0
  232. package/index.scss +27 -0
  233. package/jsconfig.json +8 -2
  234. package/package.json +54 -27
  235. package/scripts/deploy-docs.sh +9 -0
  236. package/templates/index.eta +2 -0
  237. package/templates/index.pug +3 -0
  238. package/tsconfig.json +16 -0
  239. package/utils/function.js +3 -0
  240. package/webpack.config.js +224 -68
  241. package/_index.scss +0 -4
  242. package/components/all-components.scss +0 -21
  243. package/components/bottomnav/style.scss +0 -190
  244. package/components/bottomnav/theming.scss +0 -76
  245. package/components/button/style.scss +0 -315
  246. package/components/button/theming.scss +0 -134
  247. package/components/card/style.scss +0 -175
  248. package/components/card/theming.scss +0 -43
  249. package/components/common/dom.js +0 -51
  250. package/components/common/functions.scss +0 -174
  251. package/components/common/mixins.scss +0 -122
  252. package/components/common/motion.scss +0 -36
  253. package/components/common/type.scss +0 -104
  254. package/components/common/variables.scss +0 -46
  255. package/components/datatable/style.scss +0 -257
  256. package/components/datatable/theming.scss +0 -119
  257. package/components/dialog/style.scss +0 -159
  258. package/components/dialog/theming.scss +0 -29
  259. package/components/divider/style.scss +0 -7
  260. package/components/divider/theming.scss +0 -20
  261. package/components/elevation/style.scss +0 -32
  262. package/components/layout/style.scss +0 -223
  263. package/components/list/style.scss +0 -358
  264. package/components/list/theming.scss +0 -83
  265. package/components/menu/style.scss +0 -280
  266. package/components/menu/theming.scss +0 -80
  267. package/components/navdrawer/index.js +0 -200
  268. package/components/navdrawer/style.scss +0 -595
  269. package/components/navdrawer/theming.scss +0 -62
  270. package/components/progress/style.scss +0 -136
  271. package/components/ripple/index.js +0 -63
  272. package/components/ripple/ripple.scss +0 -122
  273. package/components/selection/style.scss +0 -320
  274. package/components/selection/theming.scss +0 -98
  275. package/components/snackbar/style.scss +0 -212
  276. package/components/switch/style.scss +0 -3
  277. package/components/tab/style.scss +0 -275
  278. package/components/tab/theming.scss +0 -34
  279. package/components/template/theming.scss +0 -31
  280. package/components/textfield/style.scss +0 -795
  281. package/components/textfield/theming.scss +0 -256
  282. package/components/theming/globals.scss +0 -25
  283. package/components/theming/theming.scss +0 -559
  284. package/components/toolbar/style.scss +0 -190
  285. package/components/toolbar/theming.scss +0 -32
  286. package/components/tooltip/style.scss +0 -135
  287. package/components/type/style.scss +0 -167
  288. package/components/type/theming.scss +0 -25
  289. package/docs/bottomnav.html +0 -1
  290. package/docs/bottomnav.min.js +0 -2
  291. package/docs/bottomnav.min.js.map +0 -1
  292. package/docs/button.html +0 -1
  293. package/docs/button.min.js +0 -2
  294. package/docs/button.min.js.map +0 -1
  295. package/docs/card.html +0 -1
  296. package/docs/card.min.js +0 -2
  297. package/docs/card.min.js.map +0 -1
  298. package/docs/components.min.css +0 -1
  299. package/docs/components.min.js +0 -2
  300. package/docs/components.min.js.map +0 -1
  301. package/docs/datatable.html +0 -1
  302. package/docs/datatable.min.js +0 -2
  303. package/docs/datatable.min.js.map +0 -1
  304. package/docs/dialog.html +0 -1
  305. package/docs/dialog.min.js +0 -2
  306. package/docs/dialog.min.js.map +0 -1
  307. package/docs/docs.min.css +0 -1
  308. package/docs/docs.min.js +0 -2
  309. package/docs/docs.min.js.map +0 -1
  310. package/docs/elevation.html +0 -1
  311. package/docs/elevation.min.js +0 -2
  312. package/docs/elevation.min.js.map +0 -1
  313. package/docs/fab.html +0 -1
  314. package/docs/fab.min.js +0 -2
  315. package/docs/fab.min.js.map +0 -1
  316. package/docs/index.html +0 -1
  317. package/docs/index.min.js +0 -2
  318. package/docs/index.min.js.map +0 -1
  319. package/docs/layout.html +0 -1
  320. package/docs/layout.min.js +0 -2
  321. package/docs/layout.min.js.map +0 -1
  322. package/docs/list.html +0 -1
  323. package/docs/list.min.js +0 -2
  324. package/docs/list.min.js.map +0 -1
  325. package/docs/menu.html +0 -1
  326. package/docs/menu.min.js +0 -2
  327. package/docs/menu.min.js.map +0 -1
  328. package/docs/navdrawer.html +0 -1
  329. package/docs/navdrawer.min.js +0 -2
  330. package/docs/navdrawer.min.js.map +0 -1
  331. package/docs/prerender.min.js +0 -2
  332. package/docs/prerender.min.js.map +0 -1
  333. package/docs/progress.html +0 -1
  334. package/docs/progress.min.js +0 -2
  335. package/docs/progress.min.js.map +0 -1
  336. package/docs/search.html +0 -1
  337. package/docs/search.min.js +0 -2
  338. package/docs/search.min.js.map +0 -1
  339. package/docs/selection.html +0 -1
  340. package/docs/selection.min.js +0 -2
  341. package/docs/selection.min.js.map +0 -1
  342. package/docs/slider.html +0 -1
  343. package/docs/slider.min.js +0 -2
  344. package/docs/slider.min.js.map +0 -1
  345. package/docs/snackbar.html +0 -1
  346. package/docs/snackbar.min.js +0 -2
  347. package/docs/snackbar.min.js.map +0 -1
  348. package/docs/src/components/bottomnav.js +0 -16
  349. package/docs/src/components/bottomnav.pug +0 -112
  350. package/docs/src/components/button.js +0 -156
  351. package/docs/src/components/button.pug +0 -194
  352. package/docs/src/components/card.js +0 -136
  353. package/docs/src/components/card.pug +0 -133
  354. package/docs/src/components/datatable.js +0 -183
  355. package/docs/src/components/datatable.pug +0 -324
  356. package/docs/src/components/dialog.pug +0 -138
  357. package/docs/src/components/elevation.js +0 -3
  358. package/docs/src/components/elevation.pug +0 -17
  359. package/docs/src/components/fab.pug +0 -84
  360. package/docs/src/components/layout.js +0 -116
  361. package/docs/src/components/layout.pug +0 -104
  362. package/docs/src/components/list.js +0 -15
  363. package/docs/src/components/list.pug +0 -293
  364. package/docs/src/components/menu.pug +0 -292
  365. package/docs/src/components/navdrawer.js +0 -112
  366. package/docs/src/components/navdrawer.pug +0 -113
  367. package/docs/src/components/progress.pug +0 -17
  368. package/docs/src/components/search.js +0 -206
  369. package/docs/src/components/search.pug +0 -149
  370. package/docs/src/components/selection.js +0 -6
  371. package/docs/src/components/selection.pug +0 -116
  372. package/docs/src/components/slider.js +0 -3
  373. package/docs/src/components/slider.pug +0 -19
  374. package/docs/src/components/snackbar.pug +0 -145
  375. package/docs/src/components/tab.js +0 -137
  376. package/docs/src/components/tab.pug +0 -329
  377. package/docs/src/components/textfield.pug +0 -416
  378. package/docs/src/components/toolbar.js +0 -6
  379. package/docs/src/components/toolbar.pug +0 -86
  380. package/docs/src/components/tooltip.js +0 -6
  381. package/docs/src/components/tooltip.pug +0 -76
  382. package/docs/src/components/type.js +0 -6
  383. package/docs/src/components/type.pug +0 -34
  384. package/docs/src/components.scss +0 -1
  385. package/docs/src/docs.scss +0 -284
  386. package/docs/src/index.js +0 -3
  387. package/docs/src/index.pug +0 -6
  388. package/docs/src/menuoptions.js +0 -136
  389. package/docs/src/mixins.pug +0 -139
  390. package/docs/src/prerender.js +0 -26
  391. package/docs/src/sample-utils.js +0 -108
  392. package/docs/src/targetHandler.js +0 -50
  393. package/docs/src/theming.ie11.scss +0 -18
  394. package/docs/src/theming.scss +0 -18
  395. package/docs/tab.html +0 -1
  396. package/docs/tab.min.js +0 -2
  397. package/docs/tab.min.js.map +0 -1
  398. package/docs/textfield.html +0 -2
  399. package/docs/textfield.min.js +0 -2
  400. package/docs/textfield.min.js.map +0 -1
  401. package/docs/theming.ie11.min.css +0 -1
  402. package/docs/theming.ie11.min.js +0 -2
  403. package/docs/theming.ie11.min.js.map +0 -1
  404. package/docs/theming.min.css +0 -1
  405. package/docs/theming.min.js +0 -2
  406. package/docs/theming.min.js.map +0 -1
  407. package/docs/toolbar.html +0 -1
  408. package/docs/toolbar.min.js +0 -2
  409. package/docs/toolbar.min.js.map +0 -1
  410. package/docs/tooltip.html +0 -1
  411. package/docs/tooltip.min.js +0 -2
  412. package/docs/tooltip.min.js.map +0 -1
  413. package/docs/type.html +0 -1
  414. package/docs/type.min.js +0 -2
  415. package/docs/type.min.js.map +0 -1
  416. package/index.js +0 -16
@@ -0,0 +1,184 @@
1
+ <% var T = '../../templates/index.eta' %>
2
+ <% layout('../_partials/_header.eta', {page: 'dialog'}) %>
3
+ <div class="mdw-grid" mdw-margin-top mdw-margin-bottom mdw-stretch>
4
+ <div class="mdw-grid__item" mdw-colspan="100%">
5
+ <h5 class="mdw-type" mdw-baseline-next="36">Dialogs inform users about a specific task and may contain critical information, require decisions, or involve multiple tasks.</h5>
6
+ <p class="mdw-type">Dialogs contain text and UI controls. They retain focus until dismissed or a required action has been taken. Use dialogs sparingly because they are interruptive.</p>
7
+ </div>
8
+ <div class="mdw-grid__item" mdw-colspan="4">
9
+ <div class="mdw-grid__content">
10
+ <div class="component-sample">
11
+ <div class="component-sample__container">
12
+ <%~ includeFile(T, {button: { href: "#sample-dialog", text:'Open' }}) %>
13
+ <div class="mdw-dialog" id="sample-dialog">
14
+ <a class="mdw-dialog__close" href="#"></a>
15
+ <div class="mdw-dialog__popup mdw-theme" mdw-surface="card">
16
+ <div class="mdw-dialog__title">Sample title</div>
17
+ <div class="mdw-dialog__body mdw-theme" mdw-ink="medium">Sample body text</div>
18
+ <div class="mdw-dialog__button-area">
19
+ <%~ includeFile(T, { button: { href:'#', ink:'secondary', text:'Agree' }}) %>
20
+ <%~ includeFile(T, { button: { href:'#', ink:'secondary', text:'Disagree' }}) %>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <div class="mdw-grid__item" mdw-colspan="8">
29
+ <div class="mdw-type" mdw-style="subtitle">Javascript</div>
30
+ <div class="docs-option-list">
31
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'javascript', type:'radio', value:'required', text:'Required' }}) %>
32
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'javascript', type:'radio', value:'optional', checked:true, text:'Optional' }}) %>
33
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'javascript', type:'radio', value:'none', text:'None' }}) %>
34
+ </div>
35
+ <div class="mdw-type" mdw-style="subtitle">Options</div>
36
+ <div class="docs-option-list">
37
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'stacked-buttons', text:'Stacked Buttons' }}) %>
38
+ </div>
39
+ <div class="mdw-type" mdw-style="subtitle">Width Units</div>
40
+ <div class="docs-option-list">
41
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'width', type:'radio', value:'auto', checked:true, text:'Auto' }}) %>
42
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'width', type:'radio', value:'3', text:'3' }}) %>
43
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'width', type:'radio', value:'4', text:'4' }}) %>
44
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'width', type:'radio', value:'5', text:'5' }}) %>
45
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'width', type:'radio', value:'6', text:'6' }}) %>
46
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'width', type:'radio', value:'7', text:'7' }}) %>
47
+ </div>
48
+ </div>
49
+ <div class="mdw-grid__item" mdw-colspan="100%" style="max-height:0;"></div>
50
+ <div class="mdw-grid__item" mdw-colspan="100%">
51
+ <h6 class="mdw-type">HTML Code</h6>
52
+ <div class="mdw-card mdw-theme component-code component-html" mdw-surface="card" mdw-border-ink></div>
53
+ </div>
54
+ <div class="mdw-grid__item" mdw-colspan="100%">
55
+ <h6 class="mdw-type">Javascript Code</h6>
56
+ <div class="mdw-card mdw-theme component-code component-js" mdw-surface="card" mdw-border-ink></div>
57
+ </div>
58
+ <div class="mdw-grid__item" mdw-colspan="100%">
59
+ <h6 class="mdw-type">Samples</h6>
60
+ </div>
61
+ <div class="mdw-grid__item display-flex" mdw-colspan="4" flex-justify-content="center">
62
+ <div class="render">
63
+ <div class="display-flex flex-1" flex-column style="position:relative;">
64
+ <%~ includeFile('../_partials/_androidstatusbar.eta', { surface: 'primary 700', dark: true }) %>
65
+ <div class="mdw-appbar mdw-theme" mdw-surface="primary 500" mdw-dark>
66
+ <div class="mdw-appbar__start">
67
+ <div class="mdw-tooltip__wrapper">
68
+ <%~ includeFile(T, {button: { icon:true, class:"mdw-tooltip__target material-icons", text:'menu' }}) %>
69
+ <div class="mdw-tooltip mdw-theme" mdw-surface="background 700" mdw-dark>Menu</div>
70
+ </div>
71
+ </div>
72
+ <div class="mdw-appbar__end">
73
+ <div class="mdw-tooltip__wrapper">
74
+ <%~ includeFile(T, {button: { icon:true, class:"mdw-tooltip__target material-icons", text:'more_vert' }}) %>
75
+ <div class="mdw-tooltip mdw-theme" mdw-surface="background 700" mdw-dark>Options</div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ <div class="content" style="padding:16px 8px;">
80
+ <h6 class="mdw-type">Javascript</h6>
81
+ <div class="display-flex js" style="padding:16px 0;">
82
+ <%~ includeFile(T, { button: { surface:'primary 500', dark:true, raised:true, text:'Chained' }}) %>
83
+ <%~ includeFile(T, { button: { surface:'primary 500', dark:true, raised:true, text:'Input Autofocus' }}) %>
84
+ </div>
85
+ <h6 class="mdw-type">CSS-Only</h6>
86
+ <div class="display-flex js" style="padding:16px 0;">
87
+ <%~ includeFile(T, { button: { surface:'primary 500', dark:true, raised:true, attributes: {href:"#confirmdialog-titled"}, id:'titled-button', text: 'Titled' }}) %>
88
+ <%~ includeFile(T, { button: { surface:'primary 500', dark:true, raised:true, attributes: {href:"#confirmdialog-text"}, id:'text-button', text: 'Text' }}) %>
89
+ <%~ includeFile(T, { button: { surface:'primary 500', dark:true, raised:true, attributes: {href:"#dialog-scrolling"}, id:'scrolling-button', text: 'Scrolling' }}) %>
90
+ </div>
91
+ </div>
92
+ <div class="mdw-dialog" id="confirmdialog-titled">
93
+ <a class="mdw-dialog__close" href="#titled-button"></a>
94
+ <div class="mdw-dialog__popup mdw-theme" mdw-surface="card">
95
+ <div class="mdw-dialog__title">Use Google's location service?</div>
96
+ <div class="mdw-dialog__body mdw-theme" mdw-ink="medium">Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.</div>
97
+ <div class="mdw-dialog__button-area">
98
+ <%~ includeFile(T, { button: { ink:'secondary', attributes: {href:"#titled-button"}, text:'Agree' }}) %>
99
+ <%~ includeFile(T, { button: { ink:'secondary', attributes: {href:"#titled-button"}, text:'Disagree' }}) %>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ <div class="mdw-dialog" id="dialog-scrolling">
104
+ <a class="mdw-dialog__close" href="#scrolling-button"></a>
105
+ <div class="mdw-dialog__popup mdw-theme" mdw-surface="card">
106
+ <div class="mdw-dialog__header">
107
+ <div class="mdw-dialog__title">Dialog header</div>
108
+ </div>
109
+ <div class="mdw-divider mdw-theme" mdw-border-ink="divider"></div>
110
+ <div class="mdw-dialog__scrolling">
111
+ <ul class="mdw-list">
112
+ <li class="mdw-list__item">
113
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 1</a>
114
+ </li>
115
+ <li class="mdw-list__item">
116
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 2</a>
117
+ </li>
118
+ <li class="mdw-list__item">
119
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 3</a>
120
+ </li>
121
+ <li class="mdw-list__item">
122
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 4</a>
123
+ </li>
124
+ <li class="mdw-list__item">
125
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 5</a>
126
+ </li>
127
+ <li class="mdw-list__item">
128
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 6</a>
129
+ </li>
130
+ <li class="mdw-list__item">
131
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 7</a>
132
+ </li>
133
+ <li class="mdw-list__item">
134
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 8</a>
135
+ </li>
136
+ <li class="mdw-list__item">
137
+ <a class="mdw-list__content mdw-overlay mdw-ripple mdw-theme" href="#scrolling-button" mdw-ink="default">Item 9</a>
138
+ </li>
139
+ </ul>
140
+ </div>
141
+ <div class="mdw-divider mdw-theme" mdw-border-ink="divider"></div>
142
+ <div class="mdw-dialog__button-area">
143
+ <%~ includeFile(T, { button: { ink:'secondary', attributes: { href:"#scrolling-button" }, text:'Agree' }}) %>
144
+ <%~ includeFile(T, { button: { ink:'secondary', attributes: { href:"#scrolling-button" }, text:'Disagree' }}) %>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ <div class="mdw-dialog" id="confirmdialog-text">
149
+ <a class="mdw-dialog__close" href="#text-button"></a>
150
+ <div class="mdw-dialog__popup mdw-theme" mdw-surface="card">
151
+ <div class="mdw-dialog__body mdw-theme" mdw-ink="medium">Discard draft?</div>
152
+ <div class="mdw-dialog__button-area">
153
+ <%~ includeFile(T, { button: { ink:'secondary', attributes: { href:"#text-button" }, text:'Discard' }}) %>
154
+ <%~ includeFile(T, { button: { ink:'secondary', attributes: { href:"#text-button" }, text:'Cancel' }}) %>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ <div class="mdw-dialog" id="dialog-textfield" mdw-width-units="5">
159
+ <form class="mdw-dialog__popup mdw-theme" mdw-surface="card">
160
+ <div class="mdw-dialog__header">
161
+ <div class="mdw-dialog__title">Dialog Title</div>
162
+ </div>
163
+ <label class="mdw-textfield mdw-theme" mdw-ink="secondary" style="padding:0 24px;">
164
+ <div class="mdw-textfield__signifier material-icons">security</div>
165
+ <input class="mdw-textfield__input" placeholder=" " name="input" mdw-autofocus/>
166
+ <div class="mdw-textfield__border">
167
+ <div class="mdw-textfield__outline-gap">
168
+ <div class="mdw-textfield__label">Text Field Label</div>
169
+ </div>
170
+ </div>
171
+ <div class="mdw-textfield__error-text">This field is required</div>
172
+ </label>
173
+ <div class="mdw-dialog__button-area">
174
+ <button class="mdw-button mdw-theme" mdw-ink="secondary" tabindex="0" type="submit">Change</button>
175
+ <button class="mdw-button mdw-theme" mdw-ink="secondary" tabindex="0" type="button">Cancel</button>
176
+ </div>
177
+ </form>
178
+ </div>
179
+ </div>
180
+ <%~ includeFile('../_partials/_androidnavbar.eta') %>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ <script src="dialog.min.js"></script>
@@ -1,7 +1,6 @@
1
- import { Dialog } from '../../../components/dialog/index';
2
- import { setupMenuOptions } from '../menuoptions';
3
- import { changeElementTagName, convertElementToCode, attachEventListener } from '../sample-utils';
4
-
1
+ import * as Button from '../../components/button/index.js';
2
+ import * as Dialog from '../../components/dialog/index.js';
3
+ import { convertElementToCode } from '../_sample-utils.js';
5
4
 
6
5
  /** @type {HTMLElement} */
7
6
  let sampleComponent;
@@ -16,26 +15,23 @@ function onSampleButtonClick(event) {
16
15
 
17
16
  /** @return {void} */
18
17
  function updateSampleCode() {
19
- const jsRequired = document.querySelector('input[name="javascript"][value="required"]').checked;
20
- const jsOptional = document.querySelector('input[name="javascript"][value="optional"]').checked;
18
+ const jsRequired = /** @type {HTMLInputElement} */ (document.querySelector('input[name="javascript"][value="required"]')).checked;
19
+ const jsOptional = /** @type {HTMLInputElement} */ (document.querySelector('input[name="javascript"][value="optional"]')).checked;
21
20
  const useJS = jsRequired || jsOptional;
22
21
 
23
22
  // Strip JS related elements and attributes
24
23
  Dialog.detach(sampleComponent);
25
- let button = document.querySelector('.component-sample .mdw-button');
24
+ const button = document.querySelector('.component-sample .mdw-button');
26
25
  let closer = document.querySelector('.component-sample .mdw-dialog__close');
27
26
  const dialogButtons = sampleComponent.querySelectorAll('.mdw-dialog__button-area .mdw-button');
27
+ Button.detach(button);
28
28
  button.removeEventListener('click', onSampleButtonClick);
29
29
  const tabIndexElements = sampleComponent.querySelectorAll('[tabindex]');
30
- for (let i = 0; i < tabIndexElements.length; i += 1) {
31
- tabIndexElements.item(i).removeAttribute('tabindex');
32
- }
30
+ for (const el of tabIndexElements) el.removeAttribute('tabindex');
33
31
 
34
- if (closer) {
35
- if (jsRequired || (closer instanceof HTMLAnchorElement === false)) {
36
- closer.parentElement.removeChild(closer);
37
- closer = null;
38
- }
32
+ if (closer && (jsRequired || !(closer instanceof HTMLAnchorElement))) {
33
+ closer.remove();
34
+ closer = null;
39
35
  }
40
36
 
41
37
  if (useJS) {
@@ -47,31 +43,13 @@ function updateSampleCode() {
47
43
  if (jsRequired) {
48
44
  sampleComponent.removeAttribute('id');
49
45
  button.removeAttribute('href');
50
- if (button instanceof HTMLAnchorElement) {
51
- button = changeElementTagName(button, 'button');
52
- }
53
46
  dialogButtons[0].removeAttribute('href');
54
- if (dialogButtons[0] instanceof HTMLAnchorElement) {
55
- changeElementTagName(dialogButtons[0], 'button');
56
- }
57
47
  dialogButtons[1].removeAttribute('href');
58
- if (dialogButtons[1] instanceof HTMLAnchorElement) {
59
- changeElementTagName(dialogButtons[1], 'button');
60
- }
61
48
  } else {
62
- sampleComponent.setAttribute('id', 'sample-dialog');
49
+ sampleComponent.id = 'sample-dialog';
63
50
  button.setAttribute('href', '#sample-dialog');
64
- if (button instanceof HTMLButtonElement) {
65
- button = changeElementTagName(button, 'a');
66
- }
67
51
  dialogButtons[0].setAttribute('href', '#');
68
- if (dialogButtons[0] instanceof HTMLButtonElement) {
69
- changeElementTagName(dialogButtons[0], 'a');
70
- }
71
52
  dialogButtons[1].setAttribute('href', '#');
72
- if (dialogButtons[1] instanceof HTMLButtonElement) {
73
- changeElementTagName(dialogButtons[1], 'a');
74
- }
75
53
  if (!closer) {
76
54
  closer = document.createElement('a');
77
55
  closer.classList.add('mdw-dialog__close');
@@ -80,7 +58,6 @@ function updateSampleCode() {
80
58
  }
81
59
  }
82
60
 
83
-
84
61
  const htmlCodeElement = document.getElementsByClassName('component-html')[0];
85
62
  const sampleContainer = document.querySelector('.component-sample__container');
86
63
  const htmlCodeBlocks = [];
@@ -97,6 +74,7 @@ function updateSampleCode() {
97
74
  // Reattach JS if requested
98
75
  if (useJS) {
99
76
  Dialog.attach(sampleComponent);
77
+ Button.attach(button);
100
78
  button.addEventListener('click', onSampleButtonClick);
101
79
  }
102
80
 
@@ -113,9 +91,8 @@ function updateSampleCode() {
113
91
  * @return {void}
114
92
  */
115
93
  function onOptionChange(event) {
116
- const { name, value, checked } = event.target;
117
- let mdwPosition = sampleComponent.getAttribute('mdw-position') || '';
118
- const buttonArea = sampleComponent.getElementsByClassName('mdw-dialog__button-area')[0]
94
+ const { name, value, checked } = /** @type {HTMLInputElement} */ (event.target);
95
+ const buttonArea = sampleComponent.getElementsByClassName('mdw-dialog__button-area')[0];
119
96
  switch (name) {
120
97
  case 'stacked-buttons':
121
98
  if (checked) {
@@ -142,16 +119,15 @@ function onOptionChange(event) {
142
119
  /** @return {void} */
143
120
  function setupComponentOptions() {
144
121
  sampleComponent = document.querySelector('.component-sample .mdw-dialog');
145
- attachEventListener(
146
- document.querySelectorAll('input[name]'),
147
- 'change',
148
- onOptionChange
149
- );
122
+ for (const el of document.querySelectorAll('input[name]')) {
123
+ el.addEventListener('change', onOptionChange);
124
+ }
150
125
  }
151
126
 
152
127
  /** @return {void} */
153
- function initializeSampleComponents() {
128
+ function setupJSSample1() {
154
129
  const button = document.querySelector('.js .mdw-button');
130
+ Button.attach(button);
155
131
  const confirmDialogElement = Dialog.create({
156
132
  title: 'Feedback',
157
133
  body: 'Are you enjoying this demo?',
@@ -178,10 +154,21 @@ function initializeSampleComponents() {
178
154
  });
179
155
  }
180
156
 
157
+ /** @return {void} */
158
+ function setupJSSample2() {
159
+ const button = document.querySelectorAll('.js .mdw-button')[1];
160
+ Button.attach(button);
161
+ button.addEventListener('click', (event) => {
162
+ Dialog.show(document.getElementById('dialog-textfield'), event);
163
+ });
164
+ }
165
+
166
+ /** @return {void} */
167
+ function initializeSampleComponents() {
168
+ setupJSSample1();
169
+ setupJSSample2();
170
+ }
171
+
181
172
  initializeSampleComponents();
182
173
  setupComponentOptions();
183
174
  updateSampleCode();
184
-
185
-
186
- setupMenuOptions();
187
-
@@ -0,0 +1,26 @@
1
+ <% var T = '../../templates/index.eta' %>
2
+ <% layout('../_partials/_header.eta', {page: 'dom'}) %>
3
+ <div class="mdw-grid" mdw-margin-top mdw-margin-bottom mdw-stretch>
4
+ <div class="mdw-grid__item" mdw-colspan="6">
5
+ <div class="mdw-grid__content component-sample">
6
+ <div class="display-flex" style="flex:1;height:400px;max-height:400px;overflow-y:auto;">
7
+ <ul class="mdw-list mdw-theme" style="flex:1;width:100%;" mdw-surface="primary alt"></ul>
8
+ </div>
9
+ </div>
10
+ </div>
11
+ <div class="mdw-grid__item" mdw-colspan="100%">
12
+ <div class="mdw-type" mdw-style="subtitle">Optimizations</div>
13
+ <div class="docs-option-list">
14
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'fastMeasure', checked:true, text:'Fast Measure' }}) %>
15
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'block', checked:true, text:'Block-level' }}) %>
16
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'deferRender', checked:true, text:'Defer Render' }}) %>
17
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'equalSize', checked:false, text:'Equal Size' }}) %>
18
+ </div>
19
+ <div class="mdw-type" mdw-style="subtitle">Test Options</div>
20
+ <%~ includeFile(T, { button: { text:'Reset' }}) %>
21
+ <%~ includeFile(T, { button: { text:'Remove #10' }}) %>
22
+ <%~ includeFile(T, { button: { text:'Increment #50' }}) %>
23
+ <%~ includeFile(T, { button: { text:'Resize #80' }}) %>
24
+ </div>
25
+ </div>
26
+ <script src="dom.min.js"></script>
@@ -0,0 +1,140 @@
1
+ import DomAdapter from '../../adapters/dom/index.js';
2
+ import * as ListContent from '../../components/list/content.js';
3
+ import * as ListItem from '../../components/list/item.js';
4
+
5
+ class CustomDataSourceItem {
6
+ /** @param {number} i */
7
+ constructor(i) {
8
+ this.itemnumber = i;
9
+ this.clickCount = 0;
10
+ this.expanded = false;
11
+ }
12
+ }
13
+
14
+ /** @type {CustomDataSourceItem[]} */
15
+ const datasource = [];
16
+
17
+ /** @type {HTMLElement} */
18
+ let sampleComponent;
19
+
20
+ /** @type {DomAdapter<CustomDataSourceItem, HTMLLIElement>} */
21
+ let domAdapter;
22
+
23
+ /** @return {void} */
24
+ function resetDatasource() {
25
+ datasource.splice(0, datasource.length);
26
+ for (let i = 0; i < 500; i += 1) {
27
+ datasource.push(new CustomDataSourceItem(i));
28
+ }
29
+ }
30
+ /**
31
+ * @param {Event} event
32
+ * @return {void}
33
+ */
34
+ function onOptionChange(event) {
35
+ const { name, checked } = /** @type {HTMLInputElement} */ (event.target);
36
+ // @ts-ignore: Optimization
37
+ domAdapter.recycle[name] = checked;
38
+ domAdapter.refresh();
39
+ }
40
+ /** @return {void} */
41
+ function setupComponentOptions() {
42
+ for (const el of document.querySelectorAll('input[name]')) {
43
+ el.addEventListener('change', onOptionChange);
44
+ }
45
+ sampleComponent = document.querySelector('.component-sample .mdw-list');
46
+ resetDatasource();
47
+ domAdapter = new DomAdapter({
48
+ element: sampleComponent,
49
+ datasource,
50
+ recycle: {
51
+ scroller: sampleComponent.parentElement,
52
+ fastMeasure: true,
53
+ block: true,
54
+ deferRender: true,
55
+ equalSize: false,
56
+ },
57
+ render(child, data, index) {
58
+ const textLines = child.getElementsByClassName('mdw-list__text-line');
59
+ textLines[0].textContent = `Item ${data.itemnumber}`;
60
+ textLines[1].textContent = `Click count: #${data.clickCount}`;
61
+ if (data.expanded) {
62
+ child.style.setProperty('height', '128px');
63
+ child.style.setProperty('background-color', 'red');
64
+ } else {
65
+ child.style.setProperty('height', '64px');
66
+ child.style.removeProperty('background-color');
67
+ }
68
+ child.firstElementChild.setAttribute('aria-posinset', index.toString(10));
69
+ },
70
+ create(data) {
71
+ // Create placeholder UI
72
+ const listItem = document.createElement('li');
73
+ if (!domAdapter.recycle.block) {
74
+ listItem.style.setProperty('display', 'inline-flex');
75
+ listItem.style.setProperty('width', '33.333%');
76
+ }
77
+ if (domAdapter.recycle.deferRender) {
78
+ listItem.style.setProperty('min-height', '64px');
79
+ if (data.expanded) {
80
+ listItem.style.setProperty('height', '128px');
81
+ }
82
+ }
83
+ listItem.className = 'mdw-list__item';
84
+ listItem.innerHTML = `
85
+ <a class="mdw-list__content">
86
+ <div class="mdw-list__text">
87
+ <div class="mdw-list__text-line">Item ${data.itemnumber}</div>
88
+ <div class="mdw-list__text-line mdw-theme" mdw-ink="medium">Waiting for idle...</div>
89
+ </div>
90
+ </a>
91
+ `;
92
+ ListItem.attach(listItem);
93
+ return listItem;
94
+ },
95
+ });
96
+ domAdapter.refresh();
97
+ const buttons = document.querySelectorAll('.mdw-layout__content-page .mdw-button');
98
+ buttons[0].addEventListener('click', () => {
99
+ buttons[1].removeAttribute('aria-disabled');
100
+ resetDatasource();
101
+ domAdapter.refresh();
102
+ });
103
+ buttons[1].addEventListener('click', () => {
104
+ if (buttons[1].getAttribute('aria-disabled') === 'true') {
105
+ return;
106
+ }
107
+ const item = datasource[10];
108
+ domAdapter.removeItem(item);
109
+ datasource.splice(10, 1);
110
+
111
+ // Alternatively, we can remove from datasource first and call invalidateAll()
112
+
113
+ domAdapter.drawViewport();
114
+ buttons[1].setAttribute('aria-disabled', 'true');
115
+ });
116
+ buttons[2].addEventListener('click', () => {
117
+ const item = datasource.find((d) => d.itemnumber === 50);
118
+ item.clickCount += 1;
119
+ // Element will not change size, therefore avoid possible invalidation
120
+ // (When element is refreshed and not in DOM, adapter may assume sized change)
121
+ domAdapter.refreshItem(item, { invalidate: false });
122
+ domAdapter.drawViewport();
123
+ });
124
+ buttons[3].addEventListener('click', () => {
125
+ const item = datasource.find((d) => d.itemnumber === 80);
126
+ item.expanded = !item.expanded;
127
+ // Force invalidation from height change
128
+ domAdapter.refreshItem(item, { invalidate: true });
129
+ domAdapter.drawViewport();
130
+ });
131
+ sampleComponent.addEventListener(ListContent.ACTIVATE_EVENT, (event) => {
132
+ const listContent = /** @type {HTMLElement} */ (event.target);
133
+ const listItem = /** @type {HTMLLIElement} */ (listContent.parentElement);
134
+ const dataItem = domAdapter.elementDataMap.get(listItem);
135
+ dataItem.clickCount += 1;
136
+ domAdapter.refreshItem(dataItem);
137
+ });
138
+ }
139
+
140
+ setupComponentOptions();
@@ -0,0 +1,35 @@
1
+ <% var T = '../../templates/index.eta' %>
2
+ <% layout('../_partials/_header.eta', {page: 'elevation'}) %>
3
+ <div class="docs-grid mdw-grid" mdw-margin-top mdw-margin-bottom mdw-columns="4" mdw-margin-4col="40" mdw-gutter-4col="40">
4
+ <div class="mdw-grid__item">
5
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="1">1dp</div>
6
+ </div>
7
+ <div class="mdw-grid__item">
8
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="2">2dp</div>
9
+ </div>
10
+ <div class="mdw-grid__item">
11
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="3">3dp</div>
12
+ </div>
13
+ <div class="mdw-grid__item">
14
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="4">4dp</div>
15
+ </div>
16
+ <div class="mdw-grid__item">
17
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="6">6dp</div>
18
+ </div>
19
+ <div class="mdw-grid__item">
20
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="8">8dp</div>
21
+ </div>
22
+ <div class="mdw-grid__item">
23
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="9">9dp</div>
24
+ </div>
25
+ <div class="mdw-grid__item">
26
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="12">12dp</div>
27
+ </div>
28
+ <div class="mdw-grid__item">
29
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="16">16dp</div>
30
+ </div>
31
+ <div class="mdw-grid__item">
32
+ <div class="docs-elevation__item mdw-elevation mdw-overlay" mdw-overlay-off="hover" mdw-elevation="24">24dp</div>
33
+ </div>
34
+ </div>
35
+ <script src="elevation.min.js"></script>
File without changes
@@ -0,0 +1,99 @@
1
+ <% var T = '../../templates/index.eta' %>
2
+ <% layout('../_partials/_header.eta', {page: 'fab'}) %>
3
+ <div class="comparison js">
4
+ <div class="render">
5
+ <div class="display-flex flex-1" flex-column style="position:relative;">
6
+ <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'primary 700', dark:true }) %>
7
+ <%~ includeFile('../_partials/_appbar.eta', { surface: 'primary 500', dark: true, start: ['menu'], end: ['search'], body: 'JS' }) %>
8
+ <div class="content" style="padding:16px 8px;">
9
+ <div class="mdw-type" mdw-style="subtitle">Hover</div>
10
+ <div class="docs-option-list">
11
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'hover', text:'Open on Hover' }}) %>
12
+ </div>
13
+ <div class="mdw-type" mdw-style="subtitle">Type</div>
14
+ <div class="docs-option-list">
15
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'type', type:'radio', value:'regular', text:'Regular (Default)', checked:true }}) %>
16
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'type', type:'radio', value:'mini', text:'Mini' }}) %>
17
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'type', type:'radio', value:'extended', text:'Extended' }}) %>
18
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'type', type:'radio', value:'extended-hover', text:'Extended on Hover' }}) %>
19
+ </div>
20
+ <div class="mdw-grid docs-render-overlay" mdw-margin-bottom mdw-columns="4">
21
+ <div class="mdw-grid__item">
22
+ <div class="mdw-grid__content">
23
+ <div class="mdw-fab">
24
+ <%~ includeFile(T, { button: { surface: 'secondary 500', dark:true, class:"mdw-fab__button", body: /* html */ `
25
+ <div class="mdw-fab__icon">
26
+ <div class="mdw-fab__hidden-icon material-icons">add</div>
27
+ <div class="mdw-fab__shown-icon material-icons">clear</div>
28
+ </div>
29
+ <div class="mdw-fab__text">Add</div>
30
+ `}}) %>
31
+ <div class="mdw-fab__speed-dial">
32
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
33
+ <div class="mdw-fab__icon material-icons">filter_1</div>
34
+ `}}) %>
35
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
36
+ <div class="mdw-fab__icon material-icons">filter_2</div>
37
+ `}}) %>
38
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
39
+ <div class="mdw-fab__icon material-icons">filter_3</div>
40
+ `}}) %>
41
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
42
+ <div class="mdw-fab__icon material-icons">filter_4</div>
43
+ `}}) %>
44
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
45
+ <div class="mdw-fab__icon material-icons">filter_5</div>
46
+ `}}) %>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ <%~ includeFile('../_partials/_androidnavbar.eta') %>
55
+ </div>
56
+ </div>
57
+ <div class="comparison">
58
+ <div class="render">
59
+ <div class="display-flex flex-1" flex-column style="position:relative;">
60
+ <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'primary 700', dark:true }) %>
61
+ <%~ includeFile('../_partials/_appbar.eta', { surface:'primary 500', dark:true, start: ['menu'], end: ['search'], body:'CSS Only' }) %>
62
+ <div class="content" style="padding:16px 8px;">
63
+ <div class="mdw-grid docs-render-overlay" mdw-margin-bottom>
64
+ <div class="mdw-grid__item">
65
+ <div class="mdw-fab" id="my-fab">
66
+ <a class="mdw-fab__close" href="#my-fab-button"></a>
67
+ <%~ includeFile(T, { button: { surface: 'secondary 500', dark:true, id:'my-fab-button', href:'#my-fab', class:"mdw-fab__button", body: /* html */ `
68
+ <div class="mdw-fab__icon">
69
+ <div class="mdw-fab__hidden-icon material-icons">add</div>
70
+ <div class="mdw-fab__shown-icon material-icons">clear</div>
71
+ </div>
72
+ <div class="mdw-fab__text">Add</div>
73
+ `}}) %>
74
+ <div class="mdw-fab__speed-dial">
75
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
76
+ <div class="mdw-fab__icon material-icons">filter_1</div>
77
+ `}}) %>
78
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
79
+ <div class="mdw-fab__icon material-icons">filter_2</div>
80
+ `}}) %>
81
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
82
+ <div class="mdw-fab__icon material-icons">filter_3</div>
83
+ `}}) %>
84
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
85
+ <div class="mdw-fab__icon material-icons">filter_4</div>
86
+ `}}) %>
87
+ <%~ includeFile(T, { button: { class:'mdw-fab__button', attributes: {'mdw-mini': true},body: /* html */ `
88
+ <div class="mdw-fab__icon material-icons">filter_5</div>
89
+ `}}) %>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ <%~ includeFile('../_partials/_androidnavbar.eta') %>
97
+ </div>
98
+ </div>
99
+ <script src="fab.min.js"></script>