@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.
- package/.browserslistrc +2 -1
- package/.eslintrc.json +188 -30
- package/.stylelintrc.json +643 -2
- package/.vscode/launch.json +20 -5
- package/.vscode/settings.json +3 -0
- package/CHANGELOG.md +36 -0
- package/README.md +82 -2
- package/adapters/datatable/column.js +176 -0
- package/adapters/datatable/index.js +253 -437
- package/adapters/dom/index.js +586 -0
- package/adapters/list/index.js +36 -113
- package/adapters/search/index.js +153 -180
- package/components/appbar/_spec.scss +165 -0
- package/components/appbar/_theme.scss +0 -0
- package/components/appbar/index.scss +2 -0
- package/components/banner/_spec.scss +83 -0
- package/components/banner/_theme.scss +0 -0
- package/components/banner/index.scss +2 -0
- package/components/bottomnav/README.md +4 -4
- package/components/bottomnav/_spec.scss +149 -0
- package/components/bottomnav/_theme.scss +0 -0
- package/components/bottomnav/index.js +100 -120
- package/components/bottomnav/index.scss +2 -0
- package/components/bottomnav/item.js +88 -0
- package/components/button/README.md +16 -22
- package/components/button/_spec.scss +162 -0
- package/components/button/_theme.scss +42 -0
- package/components/button/index.eta +32 -0
- package/components/button/index.js +37 -48
- package/components/button/index.pug +18 -0
- package/components/button/index.scss +2 -0
- package/components/card/_spec.scss +241 -0
- package/components/card/_theme.scss +0 -0
- package/components/card/index.scss +2 -0
- package/components/chip/_spec.scss +111 -0
- package/components/chip/_theme.scss +105 -0
- package/components/chip/index.js +23 -0
- package/components/chip/index.scss +2 -0
- package/components/chip/item.js +20 -0
- package/components/datatable/_spec.scss +225 -0
- package/components/datatable/_theme.scss +128 -0
- package/components/datatable/cell.js +44 -0
- package/components/datatable/columnheader.js +46 -0
- package/components/datatable/index.js +339 -443
- package/components/datatable/index.scss +2 -0
- package/components/datatable/row.js +48 -0
- package/components/datatable/rowheader.js +18 -0
- package/components/dialog/_spec.scss +203 -0
- package/components/dialog/_theme.scss +7 -0
- package/components/dialog/index.js +512 -437
- package/components/dialog/index.scss +2 -0
- package/components/divider/_spec.scss +11 -0
- package/components/divider/_theme.scss +0 -0
- package/components/divider/index.scss +2 -0
- package/components/elevation/_spec.scss +9 -0
- package/components/elevation/_theme.scss +0 -0
- package/components/elevation/index.scss +2 -0
- package/components/fab/{style.scss → _spec.scss} +104 -79
- package/components/fab/_theme.scss +0 -0
- package/components/fab/index.js +85 -79
- package/components/fab/index.scss +2 -0
- package/components/grid/_spec.scss +169 -0
- package/components/grid/_theme.scss +0 -0
- package/components/grid/index.scss +2 -0
- package/components/layout/_mixins.scss +11 -0
- package/components/layout/_spec.scss +916 -0
- package/components/layout/_theme.scss +19 -0
- package/components/layout/index.js +454 -0
- package/components/layout/index.scss +2 -0
- package/components/list/_spec.scss +363 -0
- package/components/list/_theme.scss +102 -0
- package/components/list/content.js +106 -0
- package/components/list/index.js +234 -79
- package/components/list/index.scss +2 -0
- package/components/list/item.js +167 -0
- package/components/list/secondary.js +45 -0
- package/components/menu/_spec.scss +329 -0
- package/components/menu/_theme.scss +0 -0
- package/components/menu/index.js +636 -651
- package/components/menu/index.scss +2 -0
- package/components/menu/item.js +231 -0
- package/components/progress/_spec.scss +156 -0
- package/components/progress/_theme.scss +0 -0
- package/components/progress/index.js +29 -13
- package/components/progress/index.scss +2 -0
- package/components/selection/_spec.scss +376 -0
- package/components/selection/_theme.scss +134 -0
- package/components/selection/index.eta +60 -0
- package/components/selection/index.js +70 -0
- package/components/selection/index.pug +30 -0
- package/components/selection/index.scss +2 -0
- package/components/selection/input.js +54 -0
- package/components/selection/radiogroup.js +40 -0
- package/components/slider/{style.scss → _spec.scss} +31 -34
- package/components/slider/_theme.scss +0 -0
- package/components/slider/index.scss +2 -0
- package/components/snackbar/_spec.scss +150 -0
- package/components/snackbar/_theme.scss +0 -0
- package/components/snackbar/index.js +293 -206
- package/components/snackbar/index.scss +2 -0
- package/components/tab/_spec.scss +220 -0
- package/components/tab/_theme.scss +0 -0
- package/components/tab/content.js +210 -0
- package/components/tab/index.js +229 -213
- package/components/tab/index.scss +2 -0
- package/components/tab/item.js +88 -0
- package/components/tab/list.js +196 -0
- package/components/tab/panel.js +54 -0
- package/components/textfield/README.md +4 -4
- package/components/textfield/_spec.scss +763 -0
- package/components/textfield/_theme.scss +264 -0
- package/components/textfield/index.eta +74 -0
- package/components/textfield/index.js +132 -138
- package/components/textfield/index.pug +30 -0
- package/components/textfield/index.scss +2 -0
- package/components/tooltip/_spec.scss +185 -0
- package/components/tooltip/_theme.scss +0 -0
- package/components/tooltip/index.scss +2 -0
- package/components/type/_spec.scss +227 -0
- package/components/type/_theme.scss +0 -0
- package/components/type/index.scss +2 -0
- package/core/_breakpoint.scss +189 -0
- package/core/_elevation.scss +78 -0
- package/core/_length.scss +8 -0
- package/core/_motion.scss +31 -0
- package/core/_platform.scss +12 -0
- package/core/_type.scss +128 -0
- package/core/aria/attributes.js +141 -0
- package/core/aria/button.js +49 -0
- package/core/aria/keyboard.js +92 -0
- package/core/aria/rovingtabindex.js +175 -0
- package/core/aria/tab.js +59 -0
- package/core/document/index.js +39 -0
- package/core/dom.js +180 -0
- package/core/overlay/_spec.scss +28 -0
- package/core/overlay/_theme.scss +147 -0
- package/core/overlay/index.js +95 -0
- package/core/overlay/index.scss +2 -0
- package/core/ripple/_spec.scss +196 -0
- package/core/ripple/_theme.scss +20 -0
- package/core/ripple/index.js +286 -0
- package/core/ripple/index.scss +2 -0
- package/core/theme/_aliases.scss +15 -0
- package/core/theme/_config.scss +8 -0
- package/core/theme/_functions.scss +22 -0
- package/{components/theming/palettes.scss → core/theme/_palettes.scss} +173 -151
- package/core/theme/_spec.scss +0 -0
- package/core/theme/_theme.scss +268 -0
- package/core/theme/index.js +50 -0
- package/core/theme/index.scss +4 -0
- package/core/throttler.js +42 -0
- package/core/transition/index.js +465 -0
- package/docs/_flex.scss +28 -0
- package/docs/_menuoptions.js +183 -0
- package/docs/_partials/_androidnavbar.eta +5 -0
- package/docs/_partials/_androidstatusbar.eta +13 -0
- package/docs/_partials/_appbar.eta +27 -0
- package/docs/_partials/_buttontest.eta +31 -0
- package/docs/_partials/_header.eta +146 -0
- package/docs/_partials/_navlistitem.eta +16 -0
- package/docs/_partials/_target.eta +1 -0
- package/docs/_sample-utils.js +88 -0
- package/docs/{src/storage.js → _storage.js} +0 -0
- package/docs/docs.scss +331 -0
- package/docs/framework.scss +26 -0
- package/docs/index.eta +12 -0
- package/docs/index.js +7 -0
- package/docs/pages/appbar.eta +108 -0
- package/docs/pages/appbar.js +0 -0
- package/docs/pages/bottomnav.eta +188 -0
- package/docs/pages/bottomnav.js +118 -0
- package/docs/pages/button.eta +124 -0
- package/docs/pages/button.js +224 -0
- package/docs/pages/card.eta +90 -0
- package/docs/pages/card.js +175 -0
- package/docs/pages/chip.eta +122 -0
- package/docs/pages/chip.js +80 -0
- package/docs/pages/color.eta +143 -0
- package/docs/pages/color.js +261 -0
- package/docs/pages/datatable.eta +323 -0
- package/docs/pages/datatable.js +160 -0
- package/docs/pages/dialog.eta +184 -0
- package/docs/{src/components → pages}/dialog.js +35 -48
- package/docs/pages/dom.eta +26 -0
- package/docs/pages/dom.js +140 -0
- package/docs/pages/elevation.eta +35 -0
- package/docs/pages/elevation.js +0 -0
- package/docs/pages/fab.eta +99 -0
- package/docs/{src/components → pages}/fab.js +6 -13
- package/docs/pages/grid.eta +135 -0
- package/docs/pages/grid.js +128 -0
- package/docs/pages/layout.eta +8 -0
- package/docs/pages/layout.js +0 -0
- package/docs/pages/list.eta +465 -0
- package/docs/pages/list.js +8 -0
- package/docs/pages/menu.eta +274 -0
- package/docs/{src/components → pages}/menu.js +26 -42
- package/docs/pages/overlay.eta +69 -0
- package/docs/pages/overlay.js +3 -0
- package/docs/pages/progress.eta +23 -0
- package/docs/{src/components → pages}/progress.js +2 -4
- package/docs/pages/ripple.eta +27 -0
- package/docs/pages/ripple.js +3 -0
- package/docs/pages/search.eta +242 -0
- package/docs/pages/search.js +226 -0
- package/docs/pages/selection.eta +107 -0
- package/docs/pages/selection.js +12 -0
- package/docs/pages/slider.eta +23 -0
- package/docs/pages/slider.js +0 -0
- package/docs/pages/snackbar.eta +83 -0
- package/docs/{src/components → pages}/snackbar.js +31 -36
- package/docs/pages/tab.eta +407 -0
- package/docs/pages/tab.js +152 -0
- package/docs/pages/textfield.eta +487 -0
- package/docs/{src/components → pages}/textfield.js +41 -45
- package/docs/pages/tooltip.eta +92 -0
- package/docs/pages/tooltip.js +0 -0
- package/docs/pages/transition.eta +117 -0
- package/docs/pages/transition.js +52 -0
- package/docs/pages/type.eta +31 -0
- package/docs/pages/type.js +0 -0
- package/docs/postrender.js +41 -0
- package/docs/prerender.js +16 -0
- package/docs/pwa/_dialogs.eta +143 -0
- package/docs/pwa/_menus.eta +16 -0
- package/docs/pwa/pwa-prerender.js +3 -0
- package/docs/pwa/pwa.eta +478 -0
- package/docs/pwa/pwa.js +298 -0
- package/docs/pwa/pwa.scss +31 -0
- package/docs/themes/theme-colored.scss +15 -0
- package/docs/themes/theme-default.scss +3 -0
- package/index.scss +27 -0
- package/jsconfig.json +8 -2
- package/package.json +54 -27
- package/scripts/deploy-docs.sh +9 -0
- package/templates/index.eta +2 -0
- package/templates/index.pug +3 -0
- package/tsconfig.json +16 -0
- package/utils/function.js +3 -0
- package/webpack.config.js +224 -68
- package/_index.scss +0 -4
- package/components/all-components.scss +0 -21
- package/components/bottomnav/style.scss +0 -190
- package/components/bottomnav/theming.scss +0 -76
- package/components/button/style.scss +0 -315
- package/components/button/theming.scss +0 -134
- package/components/card/style.scss +0 -175
- package/components/card/theming.scss +0 -43
- package/components/common/dom.js +0 -51
- package/components/common/functions.scss +0 -174
- package/components/common/mixins.scss +0 -122
- package/components/common/motion.scss +0 -36
- package/components/common/type.scss +0 -104
- package/components/common/variables.scss +0 -46
- package/components/datatable/style.scss +0 -257
- package/components/datatable/theming.scss +0 -119
- package/components/dialog/style.scss +0 -159
- package/components/dialog/theming.scss +0 -29
- package/components/divider/style.scss +0 -7
- package/components/divider/theming.scss +0 -20
- package/components/elevation/style.scss +0 -32
- package/components/layout/style.scss +0 -223
- package/components/list/style.scss +0 -358
- package/components/list/theming.scss +0 -83
- package/components/menu/style.scss +0 -280
- package/components/menu/theming.scss +0 -80
- package/components/navdrawer/index.js +0 -200
- package/components/navdrawer/style.scss +0 -595
- package/components/navdrawer/theming.scss +0 -62
- package/components/progress/style.scss +0 -136
- package/components/ripple/index.js +0 -63
- package/components/ripple/ripple.scss +0 -122
- package/components/selection/style.scss +0 -320
- package/components/selection/theming.scss +0 -98
- package/components/snackbar/style.scss +0 -212
- package/components/switch/style.scss +0 -3
- package/components/tab/style.scss +0 -275
- package/components/tab/theming.scss +0 -34
- package/components/template/theming.scss +0 -31
- package/components/textfield/style.scss +0 -795
- package/components/textfield/theming.scss +0 -256
- package/components/theming/globals.scss +0 -25
- package/components/theming/theming.scss +0 -559
- package/components/toolbar/style.scss +0 -190
- package/components/toolbar/theming.scss +0 -32
- package/components/tooltip/style.scss +0 -135
- package/components/type/style.scss +0 -167
- package/components/type/theming.scss +0 -25
- package/docs/bottomnav.html +0 -1
- package/docs/bottomnav.min.js +0 -2
- package/docs/bottomnav.min.js.map +0 -1
- package/docs/button.html +0 -1
- package/docs/button.min.js +0 -2
- package/docs/button.min.js.map +0 -1
- package/docs/card.html +0 -1
- package/docs/card.min.js +0 -2
- package/docs/card.min.js.map +0 -1
- package/docs/components.min.css +0 -1
- package/docs/components.min.js +0 -2
- package/docs/components.min.js.map +0 -1
- package/docs/datatable.html +0 -1
- package/docs/datatable.min.js +0 -2
- package/docs/datatable.min.js.map +0 -1
- package/docs/dialog.html +0 -1
- package/docs/dialog.min.js +0 -2
- package/docs/dialog.min.js.map +0 -1
- package/docs/docs.min.css +0 -1
- package/docs/docs.min.js +0 -2
- package/docs/docs.min.js.map +0 -1
- package/docs/elevation.html +0 -1
- package/docs/elevation.min.js +0 -2
- package/docs/elevation.min.js.map +0 -1
- package/docs/fab.html +0 -1
- package/docs/fab.min.js +0 -2
- package/docs/fab.min.js.map +0 -1
- package/docs/index.html +0 -1
- package/docs/index.min.js +0 -2
- package/docs/index.min.js.map +0 -1
- package/docs/layout.html +0 -1
- package/docs/layout.min.js +0 -2
- package/docs/layout.min.js.map +0 -1
- package/docs/list.html +0 -1
- package/docs/list.min.js +0 -2
- package/docs/list.min.js.map +0 -1
- package/docs/menu.html +0 -1
- package/docs/menu.min.js +0 -2
- package/docs/menu.min.js.map +0 -1
- package/docs/navdrawer.html +0 -1
- package/docs/navdrawer.min.js +0 -2
- package/docs/navdrawer.min.js.map +0 -1
- package/docs/prerender.min.js +0 -2
- package/docs/prerender.min.js.map +0 -1
- package/docs/progress.html +0 -1
- package/docs/progress.min.js +0 -2
- package/docs/progress.min.js.map +0 -1
- package/docs/search.html +0 -1
- package/docs/search.min.js +0 -2
- package/docs/search.min.js.map +0 -1
- package/docs/selection.html +0 -1
- package/docs/selection.min.js +0 -2
- package/docs/selection.min.js.map +0 -1
- package/docs/slider.html +0 -1
- package/docs/slider.min.js +0 -2
- package/docs/slider.min.js.map +0 -1
- package/docs/snackbar.html +0 -1
- package/docs/snackbar.min.js +0 -2
- package/docs/snackbar.min.js.map +0 -1
- package/docs/src/components/bottomnav.js +0 -16
- package/docs/src/components/bottomnav.pug +0 -112
- package/docs/src/components/button.js +0 -156
- package/docs/src/components/button.pug +0 -194
- package/docs/src/components/card.js +0 -136
- package/docs/src/components/card.pug +0 -133
- package/docs/src/components/datatable.js +0 -183
- package/docs/src/components/datatable.pug +0 -324
- package/docs/src/components/dialog.pug +0 -138
- package/docs/src/components/elevation.js +0 -3
- package/docs/src/components/elevation.pug +0 -17
- package/docs/src/components/fab.pug +0 -84
- package/docs/src/components/layout.js +0 -116
- package/docs/src/components/layout.pug +0 -104
- package/docs/src/components/list.js +0 -15
- package/docs/src/components/list.pug +0 -293
- package/docs/src/components/menu.pug +0 -292
- package/docs/src/components/navdrawer.js +0 -112
- package/docs/src/components/navdrawer.pug +0 -113
- package/docs/src/components/progress.pug +0 -17
- package/docs/src/components/search.js +0 -206
- package/docs/src/components/search.pug +0 -149
- package/docs/src/components/selection.js +0 -6
- package/docs/src/components/selection.pug +0 -116
- package/docs/src/components/slider.js +0 -3
- package/docs/src/components/slider.pug +0 -19
- package/docs/src/components/snackbar.pug +0 -145
- package/docs/src/components/tab.js +0 -137
- package/docs/src/components/tab.pug +0 -329
- package/docs/src/components/textfield.pug +0 -416
- package/docs/src/components/toolbar.js +0 -6
- package/docs/src/components/toolbar.pug +0 -86
- package/docs/src/components/tooltip.js +0 -6
- package/docs/src/components/tooltip.pug +0 -76
- package/docs/src/components/type.js +0 -6
- package/docs/src/components/type.pug +0 -34
- package/docs/src/components.scss +0 -1
- package/docs/src/docs.scss +0 -284
- package/docs/src/index.js +0 -3
- package/docs/src/index.pug +0 -6
- package/docs/src/menuoptions.js +0 -136
- package/docs/src/mixins.pug +0 -139
- package/docs/src/prerender.js +0 -26
- package/docs/src/sample-utils.js +0 -108
- package/docs/src/targetHandler.js +0 -50
- package/docs/src/theming.ie11.scss +0 -18
- package/docs/src/theming.scss +0 -18
- package/docs/tab.html +0 -1
- package/docs/tab.min.js +0 -2
- package/docs/tab.min.js.map +0 -1
- package/docs/textfield.html +0 -2
- package/docs/textfield.min.js +0 -2
- package/docs/textfield.min.js.map +0 -1
- package/docs/theming.ie11.min.css +0 -1
- package/docs/theming.ie11.min.js +0 -2
- package/docs/theming.ie11.min.js.map +0 -1
- package/docs/theming.min.css +0 -1
- package/docs/theming.min.js +0 -2
- package/docs/theming.min.js.map +0 -1
- package/docs/toolbar.html +0 -1
- package/docs/toolbar.min.js +0 -2
- package/docs/toolbar.min.js.map +0 -1
- package/docs/tooltip.html +0 -1
- package/docs/tooltip.min.js +0 -2
- package/docs/tooltip.min.js.map +0 -1
- package/docs/type.html +0 -1
- package/docs/type.min.js +0 -2
- package/docs/type.min.js.map +0 -1
- package/index.js +0 -16
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./docs/src/storage.js","webpack:///./components/common/dom.js","webpack:///./docs/src/menuoptions.js","webpack:///./components/ripple/index.js","webpack:///./docs/src/components/datatable.pug","webpack:///./components/button/index.js","webpack:///./components/menu/index.js","webpack:///./components/datatable/index.js","webpack:///./adapters/datatable/index.js","webpack:///./docs/src/components/datatable.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","default","object","property","prototype","hasOwnProperty","p","s","0","e","getStorageItem","window","localStorage","getItem","setStorageItem","setItem","removeStorageItem","removeItem","__webpack_exports__","getChildElementByClass","element","className","child","getElementsByClassName","parentElement","findElementParentByClassName","includeSelf","el","classList","contains","isRtl","document","documentElement","hasAttribute","getAttribute","toLowerCase","dispatchDomEvent","type","event","createEvent","initEvent","dispatchEvent","nextTick","requestAnimationFrame","cb","setTimeout","2","setRTLMode","setDarkMode","setFontSize","setupMenuOptions","_storage__WEBPACK_IMPORTED_MODULE_0__","darkAttribute","lightAttribute","button","setAttribute","removeAttribute","style","setProperty","removeProperty","buttons","getElementById","buttonRTLMode","buttonDarkMode","largeFontMode","addEventListener","getPropertyValue","Ripple","ripple","createElement","add","firstChild","insertBefore","appendChild","rippleInner","onClick","currentTarget","pointerType","detail","concat","offsetX","offsetY","removeChild","removeEventListener","5","a","length","configurable","writable","Button","attach","HTMLButtonElement","HTMLInputElement","onKeyDown","detach","buttonElement","stopPropagation","preventDefault","newEvent","MenuItem","onMouseMove","previousFocus","activeElement","focus","OPEN_MENUS","Menu","menuElement","menuCloser","onMenuCloserClick","closer","menu","HTMLAnchorElement","hide","state","lastOpenMenu","previousState","keys","every","this","selectNextMenuItem","click","popupElement","menuItems","item","backwards","foundTarget","candidate","firstFocusableItem","lastFocusableElement","target","focusable","alignTarget","top","left","transformOrigin","useAlignTarget","margin","mdwPosition","mdwDirection","alignTop","indexOf","alignBottom","alignVCenter","alignStart","alignEnd","alignLeft","alignRight","alignHCenter","openUp","openDown","openNormal","openReverse","openVCenter","openHCenter","openLtr","openRtl","isPageRTL","offsetTop","offsetBottom","clientHeight","offsetLeft","offsetRight","clientWidth","pageX","pageY","rect","getBoundingClientRect","x","y","popupElementHeight","canOpenDownwardsFromBottom","innerHeight","canOpenDownwardsFromTop","canOpenUpwardsFromTop","canOpenUpwardsFromBottom","canOpenRightwardsFromLeft","innerWidth","canOpenRightwardsFromRight","canOpenLeftwardsFromRight","canOpenLeftwardsFromLeft","canOpenFromCenter","candidates","map","index","filter","candidateNumber","number","menuItem","changed","updateMenuPosition","newState","hash","Math","random","toString","substr","history","pushState","replaceState","title","onPopState","menuStack","MenuStack","_classCallCheck","push","refreshMenuItems","stackIndex","some","stack","splice","back","78","DataTable","headerRow","getHeaderRow","tbody","getTableBody","cellFocusable","rowFocusable","onHeaderRowClick","onTableBodyKeyDown","onTableBodyClick","firstRow","foundTabbableRow","firstCell","foundTabbableCell","rows","row","j","cells","cell","mdwDataTable","HTMLTableCellElement","otherTabIndexes","querySelectorAll","otherTabIndexItem","findParentCell","currentRow","hasSelection","checked","checkboxes","HTMLTableElement","cellIndex","mdwTable","ascending","thItems","getElementsByTagName","th","deleteRow","sort","b","aCell","bCell","aText","textContent","bText","dataset","parseFloat","localeCompare","reverse","fragment","createDocumentFragment","forEach","currentSelection","isRow","HTMLTableRowElement","sectionRowIndex","newIndex","newRow","ctrlKey","newRowIndex","newCellIndex","newCell","isRtlEnabled","isLeft","isRight","tableElement","table","footer","thead","getTable","TypeError","u","DataTableAdapterColumn","options","datatable_classCallCheck","innerHTML","sortable","sortIcon","customSortIcon","hasChildNodes","tooltip","wrapper","node","createTextNode","primaryColumn","rowSelector","checkboxLabel","input","icon","renderer","defaultCheckboxRenderer","defaultCellRenderer","formatter","stringValue","foundTextNode","childNodes","nodeType","Node","TEXT_NODE","nodeValue","DataTableAdapter","_this","datatable","datasource","sorter","onValueChangeRequested","onValueChanged","onElementClickListener","handleClickInteraction","onElementScrollListener","onElementScroll","tabindexRow","tabindexRowData","getDataForTableRow","columns","page","pageLimit","debounceTimeMs","throttleTimeMs","useLazyRendering","filteredDatasource","forceRefresh","arguments","performLazyRender","throttledRenderPending","scheduleThrottledRender","_this2","performThrottledRender","_this3","debounceTimeout","clearTimeout","currentCell","getTableCell","tagName","setCheckOnAllRows","setHasSelection","getTableRow","selectedRows","getSelectedRows","updateSortIcons","updateSortColumn","tableHeaderCell","refresh","tableColumn","direction","valueA","valueB","sortedTableHeaderCell","tableHeaders","otherTableHeader","columnIndex","column","selectorColumn","getDatasource","buildScrollListener","destroyScrollListener","min","total","max","paginationDetailsElement","previousPageButton","nextPageButton","_this4","getFooter","disabled","display","needsDraw","optionsElement","rowsPerPageText","limits","limitsElement","select","limit","option","dropdownIcon","parseInt","updateRowCount","updatePaginator","refreshRows","paginationControls","scrollingElement","rowRect","scrollingRect","rowTop","rowBottom","height","viewportBottom","visibleRows","len","firstRowIndex","Infinity","lastRowIndex","lastChild","minRowCount","screen","foundFirstVisibleRow","startIndex","endIndex","isRowVisible","_this5","getLazyRenderRows","refreshRow","clearNonvisibleRows","refreshFilter","slice","_this6","rowLength","rowsToDisplay","offset","rowDifference","newRows","getTableRowForData","data","datasourceIndex","minIndex","rowIndex","refreshCell","missingColumn","missingCell","insertCell","formattedValue","search","rowLen","dynamicTableAdapter","components","count","text","substring","text2","check1","increment","floor","addColumn","setUseLazyRendering","setPagination","filterButton","optionsButton","menus","filterMenu","optionsMenu","show","filterMenuItems","noFilterMenuItem","mdFilterMenuItem","randomDivBy9MenuItem","checkedFilterMenuItem","setMenuChecked","checkedIndex","setFilter","throttleMenuItem","paginateMenuItem"],"mappings":"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","file":"datatable.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n","/**\n * @param {string} key\n * @return {string}\n */\nexport function getStorageItem(key) {\n if (!window.localStorage) {\n return null;\n }\n return localStorage.getItem(key);\n}\n\n/**\n * @param {string} key\n * @param {string} value\n * @return {void}\n */\nexport function setStorageItem(key, value) {\n if (!window.localStorage) {\n return;\n }\n localStorage.setItem(key, value);\n}\n\n/**\n * @param {string} key\n * @return {void}\n */\nexport function removeStorageItem(key) {\n if (!window.localStorage) {\n return;\n }\n localStorage.removeItem(key);\n}\n","/**\n * @param {Element} element\n * @param {string} className\n * @return {Element}\n */\nexport function getChildElementByClass(element, className) {\n const child = element.getElementsByClassName(className)[0];\n if (child && child.parentElement !== element) {\n return null;\n }\n return child;\n}\n\n/**\n * @param {Element} element\n * @param {string} className\n * @param {boolean=} [includeSelf=true]\n * @return {Element}\n */\nexport function findElementParentByClassName(element, className, includeSelf) {\n /** @type {Element} */\n let el;\n if (includeSelf === false) {\n el = element.parentElement;\n } else {\n el = element;\n }\n while (el != null && !el.classList.contains(className)) {\n el = el.parentElement;\n }\n return el;\n}\n\n/** @return {boolean} */\nexport function isRtl() {\n return document.documentElement.hasAttribute('dir')\n && document.documentElement.getAttribute('dir').toLowerCase() === 'rtl';\n}\n\n/**\n * @param {Element} element\n * @param {string} type\n * @return {boolean}\n */\nexport function dispatchDomEvent(element, type) {\n const event = document.createEvent('Event');\n event.initEvent(type, true, true);\n return element.dispatchEvent(event);\n}\n\nexport const nextTick = window.requestAnimationFrame || (cb => setTimeout(cb, 17));\n","import { setStorageItem, removeStorageItem, getStorageItem } from './storage';\n\nconst darkAttribute = 'black dark';\nconst lightAttribute = 'white light';\n\n/**\n * @param {boolean} value\n * @param {Element=} button\n * @return {void}\n */\nexport function setRTLMode(value, button) {\n if (value) {\n document.documentElement.setAttribute('dir', 'rtl');\n if (button) {\n button.removeAttribute('mdw-inactive');\n }\n // element.setAttribute('mdw-active', '');\n // Poor visibility even though spec says 70% opacity\n setStorageItem('rtlmode', 'true');\n } else {\n document.documentElement.removeAttribute('dir');\n if (button) {\n button.setAttribute('mdw-inactive', '');\n }\n // element.removeAttribute('mdw-active');\n removeStorageItem('rtlmode');\n }\n}\n\n/**\n * @param {boolean} value\n * @param {Element=} button\n * @return {void}\n */\nexport function setDarkMode(value, button) {\n if (value) {\n document.documentElement.setAttribute('mdw-theme-fill', darkAttribute);\n if (button) {\n button.removeAttribute('mdw-inactive');\n }\n // element.setAttribute('mdw-active', '');\n // Poor visibility even though spec says 70% opacity\n } else {\n document.documentElement.setAttribute('mdw-theme-fill', lightAttribute);\n if (button) {\n button.setAttribute('mdw-inactive', '');\n }\n // element.removeAttribute('mdw-active');\n }\n setStorageItem('darkmode', value ? 'true' : 'false');\n}\n\n/**\n * @param {string} value\n * @param {Element=} button\n * @return {void}\n */\nexport function setFontSize(value, button) {\n if (value) {\n document.documentElement.style.setProperty('font-size', value);\n if (button) {\n button.removeAttribute('mdw-inactive');\n }\n // element.setAttribute('mdw-active', '');\n // Poor visibility even though spec says 70% opacity\n setStorageItem('fontsize', value);\n } else {\n document.documentElement.style.removeProperty('font-size');\n if (button) {\n button.setAttribute('mdw-inactive', '');\n }\n // element.removeAttribute('mdw-active');\n removeStorageItem('fontsize');\n }\n}\n\n/**\n * @param {Element} element\n * @return {void}\n */\nfunction setupRTLMode(element) {\n if (getStorageItem('rtlmode') === 'true') {\n setRTLMode(true, element);\n }\n element.addEventListener('click', () => {\n if (document.documentElement.getAttribute('dir') === 'rtl') {\n setRTLMode(false, element);\n } else {\n setRTLMode(true, element);\n }\n });\n}\n\n/**\n * @param {Element} element\n * @return {void}\n */\nfunction setupDarkMode(element) {\n if (getStorageItem('darkmode') === 'true') {\n setDarkMode(true, element);\n }\n element.addEventListener('click', () => {\n if (document.documentElement.getAttribute('mdw-theme-fill') === darkAttribute) {\n setDarkMode(false, element);\n } else {\n setDarkMode(true, element);\n }\n });\n}\n\n/**\n * @param {Element} element\n * @return {void}\n */\nfunction setupLargeFontMode(element) {\n const fontsize = getStorageItem('fontsize');\n setFontSize(fontsize, element);\n element.addEventListener('click', () => {\n if (document.documentElement.style.getPropertyValue('font-size')) {\n setFontSize(null, element);\n } else {\n setFontSize('125%', element);\n }\n });\n}\n\n/** @return {void} */\nexport function setupMenuOptions() {\n const buttons = document.getElementById('docs-menu-buttons').getElementsByClassName('mdw-button');\n const buttonRTLMode = buttons[0];\n const buttonDarkMode = buttons[1];\n const largeFontMode = buttons[2];\n setupRTLMode(buttonRTLMode);\n setupDarkMode(buttonDarkMode);\n setupLargeFontMode(largeFontMode);\n}\n","import { getChildElementByClass } from '../common/dom';\n\nclass Ripple {\n /**\n * @param {Element} element\n * @return {void}\n */\n static attach(element) {\n let ripple = getChildElementByClass(element, 'mdw-ripple');\n if (!ripple) {\n ripple = document.createElement('div');\n ripple.classList.add('mdw-ripple');\n if (element.firstChild) {\n element.insertBefore(ripple, element.firstChild);\n } else {\n element.appendChild(ripple);\n }\n }\n\n let rippleInner = getChildElementByClass(ripple, 'mdw-ripple__inner');\n if (!rippleInner) {\n rippleInner = document.createElement('div');\n rippleInner.classList.add('mdw-ripple__inner');\n ripple.appendChild(rippleInner);\n }\n element.setAttribute('mdw-ripple', '');\n ripple.addEventListener('click', Ripple.onClick);\n }\n\n /**\n * @param {PointerEvent|MouseEvent} event\n * @return {void}\n */\n static onClick(event) {\n /** @type {HTMLElement} */\n const el = event.currentTarget;\n const rippleInner = getChildElementByClass(el, 'mdw-ripple__inner');\n if (!rippleInner) {\n return;\n }\n if (!event.pointerType && !event.detail) {\n // Ripple from center\n rippleInner.style.removeProperty('left');\n rippleInner.style.removeProperty('top');\n return;\n }\n rippleInner.style.setProperty('left', `${event.offsetX}px`);\n rippleInner.style.setProperty('top', `${event.offsetY}px`);\n }\n\n static detach(element) {\n const ripple = getChildElementByClass(element, 'mdw-ripple');\n if (ripple) {\n element.removeChild(ripple);\n }\n element.removeAttribute('mdw-ripple');\n element.removeEventListener('click', Ripple.onClick);\n }\n}\n\nexport {\n Ripple,\n};\n","module.exports = __webpack_public_path__ + \"datatable.html\";","\n// https://www.w3.org/TR/wai-aria-practices/#button\n\nimport { Ripple } from '../ripple/index';\n\nclass Button {\n /**\n * @param {Element} element\n * @return {void}\n */\n static attach(element) {\n element.setAttribute('mdw-js', '');\n if (!element.hasAttribute('mdw-icon')) {\n Ripple.attach(element);\n }\n if (element instanceof HTMLButtonElement === false\n && element instanceof HTMLInputElement === false) {\n element.addEventListener('keydown', Button.onKeyDown);\n }\n }\n\n /**\n * @param {Element} element\n * @return {void}\n */\n static detach(element) {\n element.removeEventListener('keydown', Button.onKeyDown);\n element.removeAttribute('mdw-js');\n Ripple.detach(element);\n }\n\n /**\n * @param {KeyboardEvent} event\n * @return {void}\n */\n static onKeyDown(event) {\n if (event.key !== 'Enter' && event.key !== 'Spacebar' && event.key !== ' ') {\n return;\n }\n const buttonElement = event.currentTarget;\n if (!buttonElement) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newEvent = document.createEvent('Event');\n newEvent.initEvent('click', true, true);\n buttonElement.dispatchEvent(newEvent);\n }\n}\n\nexport {\n Button,\n};\n","import { Ripple } from '../ripple/index';\nimport { dispatchDomEvent, isRtl } from '../common/dom';\n\n// https://www.w3.org/TR/wai-aria-practices/#menu\n\nclass MenuItem {\n /**\n * @param {Element} element\n * @return {void}\n */\n static attach(element) {\n element.setAttribute('mdw-js', '');\n Ripple.attach(element);\n // If mouseover is used, an item can still lose focus via keyboard navigation.\n // An extra event listener would need to be created to catch blur but the cursor\n // would still remain over the element, thus needing another mousemove event.\n // Prioritization is given to less event listeners rather than operations per second.\n element.addEventListener('mousemove', MenuItem.onMouseMove);\n element.addEventListener('click', MenuItem.onClick);\n }\n\n /**\n * @param {MouseEvent|KeyboardEvent|PointerEvent} event\n * @return {void}\n */\n static onClick(event) {\n const el = event.currentTarget;\n dispatchDomEvent(el, 'mdw:itemactivated');\n }\n\n static onMouseMove(event) {\n const el = event.currentTarget;\n if (!el) {\n return;\n }\n const previousFocus = document.activeElement;\n if (previousFocus === el) {\n // Already focused\n return;\n }\n el.focus();\n if (document.activeElement !== el) {\n if (previousFocus && document.activeElement !== previousFocus) {\n previousFocus.focus();\n }\n }\n }\n\n /**\n * @param {Element} element\n * @return {void}\n */\n static detach(element) {\n element.removeEventListener('click', MenuItem.onClick);\n element.removeEventListener('mousemove', MenuItem.onMouseMove);\n element.removeAttribute('mdw-js');\n Ripple.detach(element);\n }\n}\n\nclass MenuStack {\n /**\n * @param {Element} element\n * @param {Element} previousFocus\n * @param {Object=} state\n * @param {Object=} previousState\n */\n constructor(element, previousFocus, state, previousState) {\n this.element = element;\n this.previousFocus = previousFocus;\n this.state = state;\n this.previousState = previousState;\n }\n}\n\n/** @type {MenuStack[]} */\nconst OPEN_MENUS = [];\nclass Menu {\n /**\n * @param {Element} menuElement\n * @return {void}\n */\n static attach(menuElement) {\n menuElement.setAttribute('mdw-js', '');\n let menuCloser = menuElement.getElementsByClassName('mdw-menu__close')[0];\n if (!menuCloser) {\n menuCloser = document.createElement('div');\n menuCloser.classList.add('mdw-menu__close');\n if (menuElement.firstChild) {\n menuElement.insertBefore(menuCloser, menuElement.firstChild);\n } else {\n menuElement.appendChild(menuCloser);\n }\n }\n menuCloser.addEventListener('click', Menu.onMenuCloserClick);\n menuElement.addEventListener('keydown', Menu.onKeyDown);\n }\n\n static onMenuCloserClick(event) {\n const closer = event.currentTarget;\n if (!closer) {\n return;\n }\n const menu = closer.parentElement;\n if (!menu) {\n return;\n }\n if (closer instanceof HTMLAnchorElement) {\n event.preventDefault();\n }\n Menu.hide(menu);\n }\n\n /**\n * @param {PopStateEvent} event\n * @return {void}\n */\n static onPopState(event) {\n if (!event.state) {\n return;\n }\n const lastOpenMenu = OPEN_MENUS[OPEN_MENUS.length - 1];\n if (!lastOpenMenu || !lastOpenMenu.previousState) {\n return;\n }\n if ((lastOpenMenu.previousState === event.state) || Object.keys(event.state)\n .every(key => event.state[key] === lastOpenMenu.previousState[key])) {\n Menu.hide(lastOpenMenu.element);\n }\n }\n\n static onKeyDown(event) {\n const menuElement = event.currentTarget;\n if (!menuElement || menuElement.hasAttribute('mdw-hide') || !menuElement.hasAttribute('mdw-show')) {\n return;\n }\n if (event.key === 'Tab') {\n this.previousFocus = null;\n Menu.hide(menuElement);\n return;\n }\n if (event.key === 'Escape' || event.key === 'Esc') {\n event.stopPropagation();\n event.preventDefault();\n Menu.hide(menuElement);\n return;\n }\n if (event.key === 'ArrowUp' || (event.key === 'Up')) {\n event.stopPropagation();\n event.preventDefault();\n Menu.selectNextMenuItem(menuElement, true);\n return;\n }\n if (event.key === 'ArrowDown' || (event.key === 'Down')) {\n event.stopPropagation();\n event.preventDefault();\n Menu.selectNextMenuItem(menuElement, false);\n }\n if (!document.activeElement) {\n return;\n }\n if (document.activeElement === menuElement) {\n return;\n }\n if (document.activeElement.hasAttribute('disabled')) {\n return;\n }\n if (event.key === 'Spacebar' || (event.key === ' ')) {\n event.stopPropagation();\n event.preventDefault();\n /**\n * if (document.activeElement.hasAttribute('mdw-checked')) {\n * document.activeElement.removeAttribute('mdw-checked');\n * } else {\n * document.activeElement.setAttribute('mdw-checked', '');\n * }\n */\n return;\n }\n if (event.key === 'Enter') {\n event.stopPropagation();\n event.preventDefault();\n document.activeElement.click();\n }\n }\n\n static detach(menuElement) {\n Menu.hide(menuElement);\n const menuCloser = menuElement.getElementsByClassName('mdw-menu__close')[0];\n if (menuCloser) {\n menuCloser.removeEventListener('click', Menu.onMenuCloserClick);\n }\n menuElement.addEventListener('keydown', Menu.onKeyDown);\n menuElement.removeAttribute('mdw-js');\n menuElement.removeAttribute('mdw-show');\n menuElement.removeAttribute('mdw-hide');\n const popupElement = menuElement.getElementsByClassName('mdw-menu__popup')[0];\n if (popupElement) {\n popupElement.style.removeProperty('top');\n popupElement.style.removeProperty('left');\n popupElement.style.removeProperty('right');\n popupElement.style.removeProperty('bottom');\n popupElement.style.removeProperty('margin');\n popupElement.style.removeProperty('transform-origin');\n popupElement.style.removeProperty('position');\n if (popupElement.hasAttribute('style') && !popupElement.getAttribute('style')) {\n popupElement.removeAttribute('style');\n }\n }\n const menuItems = menuElement.getElementsByClassName('mdw-menu__item');\n for (let i = 0; i < menuItems.length; i += 1) {\n MenuItem.detach(menuItems.item(i));\n }\n }\n\n static selectNextMenuItem(menu, backwards) {\n const menuItems = menu.getElementsByClassName('mdw-menu__item');\n let foundTarget = false;\n let candidate = null;\n let firstFocusableItem = null;\n let lastFocusableElement = null;\n const target = document.activeElement;\n\n // Hidden elements cannot be focused\n // Disabled elements cannot be focused on IE11\n // Skip elements that fail to receive focus\n for (let i = 0; i < menuItems.length; i += 1) {\n const el = menuItems.item(i);\n el.focus();\n const focusable = (document.activeElement === el);\n if (focusable) {\n if (!firstFocusableItem) {\n firstFocusableItem = el;\n }\n lastFocusableElement = el;\n }\n if (el === target) {\n foundTarget = true;\n if (backwards && candidate) {\n break;\n }\n } else if (backwards) {\n if (focusable) {\n candidate = el;\n }\n } else if (foundTarget) {\n if (focusable) {\n candidate = el;\n break;\n }\n }\n }\n if (!candidate) {\n if (backwards) {\n candidate = lastFocusableElement;\n } else {\n candidate = firstFocusableItem;\n }\n }\n if (candidate && document.activeElement !== candidate) {\n candidate.focus();\n }\n }\n\n /**\n * @param {Element} menuElement\n * @param {Element} popupElement\n * @param {MouseEvent=} event\n * @param {boolean=} [alignTarget=true]\n * @return {void}\n */\n static updateMenuPosition(menuElement, popupElement, event, alignTarget) {\n let top = 'auto';\n let left = 'auto';\n let transformOrigin = '';\n const useAlignTarget = (alignTarget !== false);\n const margin = useAlignTarget ? '0' : '';\n const mdwPosition = menuElement.getAttribute('mdw-position') || '';\n const mdwDirection = menuElement.getAttribute('mdw-direction') || '';\n let alignTop = mdwPosition.indexOf('top') !== -1;\n let alignBottom = mdwPosition.indexOf('bottom') !== -1;\n let alignVCenter = mdwPosition.indexOf('vcenter') !== -1;\n\n const alignStart = mdwPosition.indexOf('start') !== -1;\n const alignEnd = mdwPosition.indexOf('end') !== -1;\n let alignLeft = mdwPosition.indexOf('left') !== -1;\n let alignRight = mdwPosition.indexOf('right') !== -1;\n let alignHCenter = mdwPosition.indexOf('hcenter') !== -1;\n\n let openUp = mdwDirection.indexOf('up') !== -1;\n let openDown = mdwDirection.indexOf('down') !== -1;\n const openNormal = mdwDirection.indexOf('normal') !== -1;\n const openReverse = mdwDirection.indexOf('reverse') !== -1;\n let openVCenter = mdwDirection.indexOf('vcenter') !== -1;\n let openHCenter = mdwDirection.indexOf('hcenter') !== -1;\n let openLtr = mdwDirection.indexOf('ltr') !== -1;\n let openRtl = mdwDirection.indexOf('rtl') !== -1;\n\n const target = event.currentTarget || event.target;\n\n let isPageRTL = null;\n if (alignStart || alignEnd || openNormal || openReverse) {\n // Using page-direction based values\n isPageRTL = isRtl();\n if (alignStart || alignEnd) {\n if (alignStart) {\n if (isPageRTL) {\n alignRight = true;\n } else {\n alignLeft = true;\n }\n } else if (isPageRTL) {\n alignLeft = true;\n } else {\n alignRight = true;\n }\n }\n if (openNormal || openReverse) {\n if (openNormal) {\n if (isPageRTL) {\n openRtl = true;\n } else {\n openLtr = true;\n }\n } else if (isPageRTL) {\n openLtr = true;\n } else {\n openRtl = true;\n }\n }\n }\n const offsetTop = (useAlignTarget ? -event.offsetY : 0);\n const offsetBottom = (useAlignTarget ? target.clientHeight - event.offsetY : 0);\n const offsetLeft = (useAlignTarget ? -event.offsetX : 0);\n const offsetRight = (useAlignTarget ? target.clientWidth - event.offsetX : 0);\n let { pageX, pageY } = event;\n if (!pageX && !pageY) {\n const rect = target.getBoundingClientRect();\n pageX = rect.x;\n pageY = rect.y;\n }\n\n /* Automatic Positioning\n *\n * 9 Positions\n * 3 7 4\n * ┌─────────┐\n * │ │\n * 5 │ 9 │ 6\n * │ │\n * └─────────┘\n * 1 8 2\n *\n * 1: Bottom Left\n * 2: Bottom Right\n * 3: Top Left\n * 4: Top Right\n * 5: VCenter Left\n * 6: VCenter Right\n * 7: HCenter Top\n * 8: HCenter Bottom\n * 9: VCenter HCenter\n *\n * 9 Directions:\n * a - Down LTR\n * b - Down RTL\n * c - Up LTR\n * d - Up RTL\n * e - LTR\n * f - RTL\n * g - Down\n * h - Up\n * i - Center\n *\n *\n * 16 total combos\n * 1a 1b 1c 1d └↘ └↙ └↗ └↖\n * 2a 2b 2c 2d ┘↘ ┘↙ ┘↗ ┘↖\n * 3a 3b 3c 3d ┌↘ ┌↙ ┌↗ ┌↖\n * 4a 4b 4c 4d ┐↘ ┐↙ ┐↗ ┐↖\n *\n * Avoid using opposite angle\n *\n * 1a XX 1c 1d └↘ ██ └↗ └↖\n * XX 2b 2c 2d ██ ┘↙ ┘↗ ┘↖\n * 1a 3b 3c XX ┌↘ ┌↙ ┌↗ ██\n * 4a 4b XX 4d ┐↘ ┐↙ ██ ┐↖\n *\n *\n * Preference Order:\n * - Flow from corner 1a 2b 3c 4d └↘ ┘↙ ┌↗ ┐↖\n * - Open adjacent to target 4a 3b 2c 1d ┐↘ ┌↙ ┘↗ └↖\n * - Overlay target 3a 4b 1c 2d ┌↘ ┐↙ └↗ ┘↖\n * - Open from horizontal side 5e 6f │→ │←\n * - Open from center 9i █·\n */\n\n popupElement.style.setProperty('max-height', 'none');\n const popupElementHeight = popupElement.clientHeight;\n const canOpenDownwardsFromBottom = !alignTop && !alignVCenter\n && !openUp && !openVCenter\n && popupElementHeight + (pageY + offsetBottom) <= window.innerHeight;\n const canOpenDownwardsFromTop = !alignBottom && !alignVCenter\n && !openUp && !openVCenter\n && popupElementHeight + (pageY + offsetTop) <= window.innerHeight;\n const canOpenUpwardsFromTop = !alignBottom && !alignVCenter && !openDown\n && !openVCenter\n && pageY + offsetTop >= popupElementHeight;\n const canOpenUpwardsFromBottom = !alignTop && !alignVCenter && !openDown\n && !openVCenter\n && pageY + offsetBottom >= popupElementHeight;\n const canOpenRightwardsFromLeft = !alignRight && !alignHCenter\n && !openRtl && !openHCenter\n && popupElement.clientWidth + (pageX + offsetLeft) <= window.innerWidth;\n const canOpenRightwardsFromRight = !alignLeft && !alignHCenter\n && !openRtl && !openHCenter\n && popupElement.clientWidth + (pageX + offsetRight) <= window.innerWidth;\n const canOpenLeftwardsFromRight = !alignLeft && !alignHCenter\n && !openLtr && !openHCenter\n && pageX + offsetRight >= popupElement.clientWidth;\n const canOpenLeftwardsFromLeft = !alignRight && !alignHCenter\n && !openLtr && !openHCenter\n && pageX + offsetLeft >= popupElement.clientWidth;\n const canOpenFromCenter = !alignLeft && !alignRight && !alignTop && !alignBottom\n && !openUp && !openDown\n && ((pageX + offsetLeft) / 2) >= (popupElement.clientWidth / 2)\n && (popupElement.clientWidth / 2) + ((pageX + offsetLeft) / 2) <= window.innerWidth;\n popupElement.style.removeProperty('max-height');\n const candidates = [\n canOpenDownwardsFromBottom && canOpenRightwardsFromLeft, // 1a └↘\n canOpenDownwardsFromBottom && canOpenLeftwardsFromRight, // 2b ┘↙\n canOpenUpwardsFromTop && canOpenRightwardsFromLeft, // 3c ┌↗\n canOpenUpwardsFromTop && canOpenLeftwardsFromLeft, // 4d ┐↖\n canOpenDownwardsFromTop && canOpenRightwardsFromRight, // 4a ┐↘\n canOpenDownwardsFromTop && canOpenLeftwardsFromLeft, // 3b ┌↙\n canOpenUpwardsFromBottom && canOpenRightwardsFromRight, // 2c ┘↗\n canOpenUpwardsFromBottom && canOpenLeftwardsFromLeft, // 1d └↖\n canOpenDownwardsFromTop && canOpenRightwardsFromLeft, // 3a ┌↘\n canOpenDownwardsFromTop && canOpenLeftwardsFromRight, // 4b ┐↙\n canOpenUpwardsFromBottom && canOpenRightwardsFromLeft, // 1c └↗\n canOpenUpwardsFromBottom && canOpenRightwardsFromRight, // 2d ┘↖\n canOpenRightwardsFromLeft, // 5e │→\n canOpenLeftwardsFromRight, // 6f │←\n canOpenFromCenter, // 9i █·\n ].map((value, index) => {\n if (value) {\n return index + 1;\n }\n return 0;\n }).filter(value => value !== 0);\n if (candidates.length) {\n let candidateNumber;\n if (isPageRTL === null) {\n isPageRTL = isRtl();\n }\n if (isPageRTL) {\n candidateNumber = [2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 15]\n .filter(number => candidates.indexOf(number) !== -1)[0];\n } else {\n candidateNumber = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]\n .filter(number => candidates.indexOf(number) !== -1)[0];\n }\n if (candidateNumber == null) {\n candidateNumber = isPageRTL ? 2 : 1;\n }\n switch (candidateNumber) {\n // Position\n default:\n case 1:\n case 8:\n case 11:\n alignBottom = true; alignLeft = true;\n break;\n case 2:\n case 7:\n case 12:\n alignBottom = true; alignRight = true;\n break;\n case 3:\n case 6:\n case 9:\n alignTop = true; alignLeft = true;\n break;\n case 4:\n case 5:\n case 10:\n alignTop = true; alignRight = true;\n break;\n case 13:\n alignVCenter = true; alignLeft = true;\n break;\n case 14:\n alignVCenter = true; alignRight = true;\n break;\n case 15:\n alignVCenter = true; alignHCenter = true;\n }\n switch (candidateNumber) {\n // Direction\n default:\n case 1:\n case 5:\n case 9:\n openDown = true; openLtr = true;\n break;\n case 2:\n case 6:\n case 10:\n openDown = true; openRtl = true;\n break;\n case 3:\n case 7:\n case 11:\n openUp = true; openLtr = true;\n break;\n case 4:\n case 8:\n case 12:\n openUp = true; openRtl = true;\n break;\n case 13:\n openLtr = true; openVCenter = true;\n break;\n case 14:\n openRtl = true; openVCenter = true;\n break;\n case 15:\n openHCenter = true; openVCenter = true;\n break;\n }\n }\n\n if (openLtr) {\n if (alignRight) {\n left = `${pageX + offsetRight}px`;\n } else if (alignHCenter) {\n left = `${pageX + ((offsetLeft + offsetRight) / 2)}px`;\n } else {\n left = `${pageX + offsetLeft}px`;\n }\n transformOrigin = 'left';\n } else if (openHCenter) {\n if (alignLeft) {\n left = `${(pageX + offsetLeft) - (popupElement.clientWidth / 2)}px`;\n } else if (alignRight) {\n left = `${(pageX + offsetRight) - (popupElement.clientWidth / 2)}px`;\n } else {\n left = `${(pageX + ((offsetLeft + offsetRight) / 2)) - (popupElement.clientWidth / 2)}px`;\n }\n transformOrigin = 'center';\n } else {\n if (alignLeft) {\n left = `${(pageX + offsetLeft) - popupElement.clientWidth}px`;\n } else if (alignHCenter) {\n left = `${(pageX + ((offsetLeft + offsetRight) / 2)) - popupElement.clientWidth}px`;\n } else {\n left = `${(pageX + offsetRight) - popupElement.clientWidth}px`;\n }\n transformOrigin = 'right';\n }\n\n if (openUp) {\n if (alignBottom) {\n top = `${(pageY + offsetBottom) - popupElement.clientHeight}px`;\n } else if (alignVCenter) {\n top = `${(pageY + ((offsetTop + offsetBottom) / 2)) - popupElement.clientHeight}px`;\n } else {\n top = `${(pageY + offsetTop) - popupElement.clientHeight}px`;\n }\n transformOrigin += ' bottom';\n } else if (openVCenter) {\n if (alignBottom) {\n top = `${(pageY + offsetBottom) - (popupElement.clientHeight / 2)}px`;\n } else if (alignTop) {\n top = `${(pageY + offsetTop) - (popupElement.clientHeight / 2)}px`;\n } else {\n top = `${(pageY + ((offsetTop + offsetBottom) / 2)) - (popupElement.clientHeight / 2)}px`;\n }\n transformOrigin += ' center';\n } else {\n if (alignTop) {\n top = `${pageY + offsetTop}px`;\n } else if (alignVCenter) {\n top = `${pageY + ((offsetTop + offsetBottom) / 2)}px`;\n } else {\n top = `${pageY + offsetBottom}px`;\n }\n transformOrigin += ' top';\n }\n\n popupElement.style.setProperty('top', top);\n popupElement.style.setProperty('left', left);\n popupElement.style.setProperty('right', 'auto');\n popupElement.style.setProperty('bottom', 'auto');\n popupElement.style.setProperty('margin', margin);\n popupElement.style.setProperty('transform-origin', transformOrigin);\n popupElement.style.setProperty('position', 'fixed');\n }\n\n /**\n * @param {Element} menuElement\n * @return {void}\n */\n static refreshMenuItems(menuElement) {\n const menuItems = menuElement.getElementsByClassName('mdw-menu__item');\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems.item(i);\n menuItem.setAttribute('tabindex', '-1');\n MenuItem.attach(menuItem);\n }\n const popupElement = menuElement.getElementsByClassName('mdw-menu__popup')[0];\n popupElement.setAttribute('tabindex', '-1');\n }\n\n /**\n * @param {Element} menuElement\n * @param {MouseEvent=} event\n * @param {boolean=} [alignTarget=true]\n * @return {boolean} handled\n */\n static show(menuElement, event, alignTarget) {\n if (event && event.currentTarget instanceof HTMLAnchorElement) {\n // Prevent anchor link\n event.preventDefault();\n }\n const popupElement = menuElement.getElementsByClassName('mdw-menu__popup')[0];\n let changed = false;\n if (event) {\n Menu.updateMenuPosition(menuElement, popupElement, event, alignTarget);\n } else {\n popupElement.style.removeProperty('top');\n popupElement.style.removeProperty('left');\n popupElement.style.removeProperty('right');\n popupElement.style.removeProperty('bottom');\n popupElement.style.removeProperty('margin');\n popupElement.style.removeProperty('transform-origin');\n popupElement.style.removeProperty('position');\n if (popupElement.hasAttribute('style') && !popupElement.getAttribute('style')) {\n popupElement.removeAttribute('style');\n }\n }\n if (menuElement.hasAttribute('mdw-hide')) {\n menuElement.removeAttribute('mdw-hide');\n changed = true;\n }\n if (!menuElement.hasAttribute('mdw-show')) {\n menuElement.setAttribute('mdw-show', '');\n changed = true;\n }\n if (changed) {\n Menu.attach(menuElement);\n const previousFocus = document.activeElement;\n const newState = { hash: Math.random().toString(36).substr(2, 16) };\n let previousState = null;\n if (window.history && window.history.pushState) {\n if (!window.history.state) {\n // Create new previous state\n window.history.replaceState({\n hash: Math.random().toString(36).substr(2, 16),\n }, document.title);\n }\n previousState = window.history.state;\n window.history.pushState(newState, document.title);\n window.addEventListener('popstate', Menu.onPopState);\n }\n const menuStack = new MenuStack(menuElement, previousFocus, newState, previousState);\n OPEN_MENUS.push(menuStack);\n Menu.refreshMenuItems(menuElement);\n if (event && !event.pointerType && !event.detail) {\n // Triggered with keyboard event\n Menu.selectNextMenuItem(menuElement);\n } else {\n popupElement.focus();\n }\n }\n return changed;\n }\n\n /**\n * @param {Element} menuElement\n * @return {boolean} handled\n */\n static hide(menuElement) {\n if (!menuElement.hasAttribute('mdw-hide')) {\n menuElement.setAttribute('mdw-hide', '');\n let stackIndex = -1;\n OPEN_MENUS.some((stack, index) => {\n if (stack.element === menuElement) {\n stackIndex = index;\n return true;\n }\n return false;\n });\n if (stackIndex !== -1) {\n const menuStack = OPEN_MENUS[stackIndex];\n if (menuStack.previousFocus) {\n menuStack.previousFocus.focus();\n }\n OPEN_MENUS.splice(stackIndex, 1);\n if (menuStack.state && window.history && window.history.state) {\n // IE11 returns a cloned state object, not the original\n if (menuStack.state.hash === window.history.state.hash) {\n window.history.back();\n }\n }\n }\n if (!OPEN_MENUS.length) {\n window.removeEventListener('popstate', Menu.onPopState);\n }\n dispatchDomEvent(menuElement, 'mdw:dismiss');\n return true;\n }\n return false;\n }\n}\n\nexport {\n Menu,\n MenuItem,\n};\n","import { isRtl, findElementParentByClassName } from '../common/dom';\n\n// https://www.w3.org/TR/wai-aria-practices/#grid\n\n// eslint-disable-next-line import/prefer-default-export\nexport class DataTable {\n /**\n * @param {Element} element\n * @return {void}\n */\n static attach(element) {\n if (!element.hasAttribute('role')) {\n element.setAttribute('role', 'grid');\n }\n element.setAttribute('mdw-js', '');\n const headerRow = DataTable.getHeaderRow(element);\n const tbody = DataTable.getTableBody(element);\n const cellFocusable = element.hasAttribute('mdw-cell-focusable');\n const rowFocusable = element.hasAttribute('mdw-row-focusable');\n\n headerRow.addEventListener('click', DataTable.onHeaderRowClick);\n tbody.addEventListener('keydown', DataTable.onTableBodyKeyDown);\n tbody.addEventListener('click', DataTable.onTableBodyClick);\n let firstRow = null;\n let foundTabbableRow = false;\n let firstCell = null;\n let foundTabbableCell = false;\n for (let i = 0; i < tbody.rows.length; i += 1) {\n const row = tbody.rows.item(i);\n if (rowFocusable) {\n if (!firstRow) {\n firstRow = row;\n }\n if (!foundTabbableRow && row.getAttribute('tabindex') === '0') {\n foundTabbableRow = true;\n } else {\n row.setAttribute('tabindex', '-1');\n }\n } else {\n row.removeAttribute('tabindex');\n }\n for (let j = 0; j < row.cells.length; j += 1) {\n const cell = row.cells.item(j);\n if (cellFocusable && !rowFocusable) {\n if (!firstCell) {\n firstCell = cell;\n }\n if (!foundTabbableCell && cell.getAttribute('tabindex') === '0') {\n foundTabbableCell = true;\n } else {\n cell.setAttribute('tabindex', '-1');\n }\n } else {\n cell.removeAttribute('tabindex');\n }\n }\n }\n if (rowFocusable && !foundTabbableRow && firstRow) {\n firstRow.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(firstRow, 'mdw:tabindexchanged');\n } else if (cellFocusable && !foundTabbableCell && firstCell) {\n firstCell.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(firstCell, 'mdw:tabindexchanged');\n }\n }\n\n static onTableBodyClick(event) {\n const tbody = event.currentTarget;\n const mdwDataTable = findElementParentByClassName(tbody, 'mdw-datatable');\n const { target } = event;\n if (target instanceof HTMLTableCellElement) {\n const cellFocusable = mdwDataTable.hasAttribute('mdw-cell-focusable');\n const rowFocusable = mdwDataTable.hasAttribute('mdw-row-focusable');\n if (cellFocusable) {\n const otherTabIndexes = tbody.querySelectorAll('[tabindex=\"0\"]');\n for (let i = 0; i < otherTabIndexes.length; i += 1) {\n const otherTabIndexItem = otherTabIndexes.item(i);\n if (otherTabIndexItem !== target) {\n otherTabIndexItem.setAttribute('tabindex', '-1');\n }\n }\n if (target.getAttribute('tabindex') !== '0') {\n target.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(target, 'mdw:tabindexchanged');\n }\n } else if (rowFocusable) {\n const otherTabIndexes = tbody.querySelectorAll('[tabindex=\"0\"]');\n for (let i = 0; i < otherTabIndexes.length; i += 1) {\n const otherTabIndexItem = otherTabIndexes.item(i);\n if (otherTabIndexItem !== target.parentElement) {\n otherTabIndexItem.setAttribute('tabindex', '-1');\n }\n }\n if (target.parentElement.getAttribute('tabindex') !== '0') {\n target.parentElement.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(target.parentElement, 'mdw:tabindexchanged');\n }\n }\n return;\n }\n if (target instanceof HTMLInputElement && target.getAttribute('type') === 'checkbox') {\n if (mdwDataTable.hasAttribute('mdw-adapter')) {\n return;\n }\n // Checkbox clicked\n const cell = DataTable.findParentCell(target);\n if (!cell.hasAttribute('mdw-selector')) {\n return;\n }\n event.stopPropagation();\n const currentRow = cell.parentElement;\n let hasSelection = false;\n if (target.checked) {\n currentRow.setAttribute('mdw-selected', '');\n hasSelection = true;\n } else {\n currentRow.removeAttribute('mdw-selected');\n /** @type {NodeListOf<HTMLInputElement>} */\n const checkboxes = (mdwDataTable.querySelectorAll('td[mdw-selector] input[type=checkbox]'));\n for (let i = 0; i < checkboxes.length; i += 1) {\n if (checkboxes.item(i).checked) {\n hasSelection = true;\n break;\n }\n }\n }\n if (hasSelection) {\n mdwDataTable.setAttribute('mdw-has-selection', '');\n } else {\n mdwDataTable.removeAttribute('mdw-has-selection');\n }\n }\n }\n\n /**\n * @param {Element} element\n * @return {HTMLTableCellElement}\n */\n static findParentCell(element) {\n let el = element;\n while (el != null) {\n if (el instanceof HTMLTableElement) {\n return null;\n }\n if (el instanceof HTMLTableCellElement) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n }\n\n static onHeaderRowClick(event) {\n const cell = DataTable.findParentCell(event.target);\n if (!cell) {\n return;\n }\n if (cell.cellIndex === -1) {\n return;\n }\n if (!cell.hasAttribute('mdw-sortable')) {\n return;\n }\n const mdwTable = findElementParentByClassName(event.currentTarget, 'mdw-datatable');\n if (!mdwTable) {\n return;\n }\n if (mdwTable.hasAttribute('mdw-adapter')) {\n return;\n }\n let ascending = true;\n if (cell.hasAttribute('mdw-sorted') && !cell.getAttribute('mdw-sorted')) {\n ascending = false;\n }\n if (ascending) {\n cell.setAttribute('mdw-sorted', '');\n } else {\n cell.setAttribute('mdw-sorted', 'desc');\n }\n const thItems = cell.parentElement.getElementsByTagName('th');\n for (let i = 0; i < thItems.length; i += 1) {\n const th = thItems[i];\n if (th !== cell) {\n th.removeAttribute('mdw-sorted');\n }\n }\n\n /** @type {HTMLTableSectionElement} */\n const tbody = DataTable.getTableBody(mdwTable);\n const rows = [];\n for (let i = tbody.rows.length - 1; i >= 0; i -= 1) {\n rows.push(tbody.rows.item(i));\n tbody.deleteRow(i);\n }\n rows.sort((a, b) => {\n const aCell = a.cells.item(cell.cellIndex);\n const bCell = b.cells.item(cell.cellIndex);\n const aText = aCell.textContent;\n const bText = bCell.textContent;\n if (aCell.dataset.type === 'number') {\n return parseFloat(bText) - parseFloat(aText);\n }\n return bText.localeCompare(aText);\n });\n if (ascending) {\n rows.reverse();\n }\n const fragment = document.createDocumentFragment();\n rows.forEach((row) => {\n fragment.appendChild(row);\n });\n tbody.appendChild(fragment);\n event.stopPropagation();\n }\n\n /**\n * @param {Element} element\n * @param {string} type\n * @return {void}\n */\n static dispatchEvent(element, type) {\n const event = document.createEvent('Event');\n event.initEvent(type, true, true);\n element.dispatchEvent(event);\n }\n\n static onTableBodyKeyDown(event) {\n const currentSelection = document.activeElement;\n let cellIndex = 0;\n /** @type {HTMLTableRowElement} */\n let row = null;\n let isRow = false;\n if (currentSelection instanceof HTMLTableCellElement) {\n ({ cellIndex } = currentSelection);\n /** @type {HTMLTableRowElement} */\n row = (currentSelection.parentElement);\n } else if (currentSelection instanceof HTMLTableRowElement) {\n isRow = true;\n row = currentSelection;\n }\n if (!row) {\n return;\n }\n /** @type {HTMLTableSectionElement} */\n const tbody = event.currentTarget;\n if (event.key === 'ArrowUp' || (event.key === 'Up')) {\n if (row.sectionRowIndex === 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newIndex = row.sectionRowIndex - 1;\n const newRow = tbody.rows.item(newIndex);\n currentSelection.setAttribute('tabindex', '-1');\n if (isRow) {\n newRow.focus();\n newRow.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow, 'mdw:tabindexchanged');\n } else {\n newRow.cells.item(cellIndex).focus();\n newRow.cells.item(cellIndex).setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow.cells.item(cellIndex), 'mdw:tabindexchanged');\n }\n return;\n }\n if (event.key === 'ArrowDown' || (event.key === 'Down')) {\n const newIndex = row.sectionRowIndex + 1;\n if (newIndex >= tbody.rows.length) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newRow = tbody.rows.item(newIndex);\n currentSelection.setAttribute('tabindex', '-1');\n if (isRow) {\n newRow.focus();\n newRow.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow, 'mdw:tabindexchanged');\n } else {\n newRow.cells.item(cellIndex).focus();\n newRow.cells.item(cellIndex).setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow.cells.item(cellIndex), 'mdw:tabindexchanged');\n }\n return;\n }\n if (event.ctrlKey && event.key === 'Home') {\n if (row.sectionRowIndex === 0 && cellIndex === 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newRow = tbody.rows.item(0);\n currentSelection.setAttribute('tabindex', '-1');\n if (isRow) {\n newRow.focus();\n newRow.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow, 'mdw:tabindexchanged');\n } else {\n newRow.cells.item(0).focus();\n newRow.cells.item(0).setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow.cells.item(0), 'mdw:tabindexchanged');\n }\n return;\n }\n if (event.ctrlKey && event.key === 'End') {\n const newRowIndex = tbody.rows.length - 1;\n let newCellIndex = 0;\n if (!isRow) {\n newCellIndex = row.cells.length - 1;\n }\n if (row.sectionRowIndex === newRowIndex && cellIndex === newCellIndex) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newRow = tbody.rows.item(newRowIndex);\n currentSelection.setAttribute('tabindex', '-1');\n if (isRow) {\n newRow.focus();\n newRow.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow, 'mdw:tabindexchanged');\n } else {\n newRow.cells.item(newCellIndex).focus();\n newRow.cells.item(newCellIndex).setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newRow.cells.item(newCellIndex), 'mdw:tabindexchanged');\n }\n return;\n }\n if (event.key === 'Home') {\n if (isRow) {\n return;\n }\n if (cellIndex === 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newIndex = 0;\n const newCell = row.cells.item(newIndex);\n currentSelection.setAttribute('tabindex', '-1');\n newCell.focus();\n newCell.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newCell, 'mdw:tabindexchanged');\n return;\n }\n if (event.key === 'End') {\n if (isRow) {\n return;\n }\n const newIndex = row.cells.length - 1;\n if (newIndex === cellIndex) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newCell = row.cells.item(newIndex);\n currentSelection.setAttribute('tabindex', '-1');\n newCell.focus();\n newCell.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newCell, 'mdw:tabindexchanged');\n return;\n }\n const isRtlEnabled = isRtl();\n let isLeft = false;\n let isRight = false;\n if (event.key === 'ArrowLeft' || (event.key === 'Left')) {\n if (isRtlEnabled) {\n isRight = true;\n } else {\n isLeft = true;\n }\n }\n if (event.key === 'ArrowRight' || (event.key === 'Right')) {\n if (isRtlEnabled) {\n isLeft = true;\n } else {\n isRight = true;\n }\n }\n if (isLeft) {\n if (isRow) {\n return;\n }\n if (cellIndex === 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newIndex = cellIndex - 1;\n const newCell = row.cells.item(newIndex);\n currentSelection.setAttribute('tabindex', '-1');\n newCell.focus();\n newCell.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newCell, 'mdw:tabindexchanged');\n return;\n }\n if (isRight) {\n if (isRow) {\n return;\n }\n const newIndex = cellIndex + 1;\n if (newIndex >= row.cells.length) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const newCell = row.cells.item(newIndex);\n currentSelection.setAttribute('tabindex', '-1');\n newCell.focus();\n newCell.setAttribute('tabindex', '0');\n DataTable.dispatchEvent(newCell, 'mdw:tabindexchanged');\n }\n }\n\n static detach(element) {\n element.removeAttribute('mdw-js');\n const headerRow = DataTable.getHeaderRow(element);\n const tbody = DataTable.getTableBody(element);\n headerRow.removeEventListener('click', DataTable.onHeaderRowClick);\n tbody.removeEventListener('keydown', DataTable.onTableBodyKeyDown);\n tbody.removeEventListener('click', DataTable.onTableBodyClick);\n }\n\n\n /**\n * @param {Element} tableElement\n * @return {HTMLTableElement}\n */\n static getTable(tableElement) {\n if (tableElement instanceof HTMLTableElement) {\n return tableElement;\n }\n let table = tableElement.getElementsByTagName('table')[0];\n if (!table) {\n table = document.createElement('table');\n const footer = tableElement.getElementsByClassName('mdw-datatable__footer')[0];\n if (footer) {\n tableElement.insertBefore(table, footer);\n } else {\n tableElement.appendChild(table);\n }\n }\n return table;\n }\n\n /**\n * @param {Element} tableElement\n * @return {HTMLTableRowElement}\n */\n static getHeaderRow(tableElement) {\n let thead = tableElement.getElementsByTagName('thead')[0];\n if (!thead) {\n const table = DataTable.getTable(tableElement);\n thead = document.createElement('thead');\n table.appendChild(thead);\n }\n let headerRow = thead.getElementsByTagName('tr')[0];\n if (!headerRow) {\n headerRow = document.createElement('tr');\n thead.appendChild(headerRow);\n }\n return headerRow;\n }\n\n /**\n * @param {Element} tableElement\n * @return {HTMLTableSectionElement}\n */\n static getTableBody(tableElement) {\n let tbody = tableElement.getElementsByTagName('tbody')[0];\n if (!tbody) {\n const table = DataTable.getTable(tableElement);\n tbody = document.createElement('tbody');\n table.appendChild(tbody);\n }\n return tbody;\n }\n}\n","import { Button } from '../../components/button/index';\nimport { DataTable } from '../../components/datatable/index';\n\n/** @return {HTMLLabelElement} */\nfunction constructTableCheckbox() {\n const checkboxLabel = document.createElement('label');\n checkboxLabel.classList.add('mdw-selection');\n const input = document.createElement('input');\n input.classList.add('mdw-selection__input');\n input.setAttribute('type', 'checkbox');\n const icon = document.createElement('div');\n icon.classList.add('mdw-selection__icon');\n checkboxLabel.appendChild(input);\n checkboxLabel.appendChild(icon);\n return checkboxLabel;\n}\n\n/**\n * @callback DataTableAdapterColumnFormatter<T>\n * @param {any} value\n * @param {T=} object\n * @return {any}\n * @template T\n */\n\n/**\n * @callback DataTableAdapterColumnRenderer<T>\n * @param {HTMLTableCellElement} cell,\n * @param {any} value\n * @param {T} data\n * @return {void}\n * @template T\n */\n\n/**\n * Callback fired when value change is requested\n * Return truthy value to cancel updating object\n * @callback DataTableAdapterOnValueChangeRequestedCallback<T>\n * @param {T} object\n * @param {string} key\n * @param {any} value\n * @return {boolean} cancel\n * @template T\n */\n\n/**\n * Callback fired when value is changed\n * @callback DataTableAdapterOnValueChangedCallback<T>\n * @param {T} object\n * @param {string} key\n * @param {any} value\n * @return {void}\n * @template T\n */\n\n/**\n * @callback DataTableAdapterFilter<T>\n * @param {T} element\n * @param {number=} index\n * @param {T[]=} array\n * @return {any}\n * @template T\n */\n\n/**\n * @callback DataTableAdapterSorter<T>\n * @param {T} a\n * @param {T} b\n * @return {number}\n * @template T\n */\n\n/**\n * Constructor options for DataTableAdapterColumn\n * @typedef DataTableAdapterColumnOptions<T>\n * @property {string} key\n * @property {(string|DocumentFragment)=} name\n * @property {string=} type\n * @property {boolean=} rowSelector\n * @property {string=} tooltip\n * @property {boolean=} sortable\n * @property {boolean=} primaryColumn\n * @property {HTMLElement=} customSortIcon\n * @property {string=} innerHTML\n * @property {DocumentFragment=} fragment\n * @property {DataTableAdapterColumnRenderer<T>=} renderer\n * @property {DataTableAdapterColumnFormatter<T>=} formatter\n * @template T\n */\n\n/**\n * @template T\n */\nclass DataTableAdapterColumn {\n /** @param {DataTableAdapterColumnOptions<T>} options */\n constructor(options) {\n this.element = document.createElement('th');\n if (options.innerHTML != null) {\n this.element.innerHTML = options.innerHTML;\n } else if (options.fragment) {\n this.element.appendChild(options.fragment);\n }\n this.key = options.key;\n this.element.dataset.key = options.key;\n\n if (options.sortable) {\n this.element.setAttribute('mdw-sortable', '');\n let sortIcon = options.customSortIcon;\n if (!sortIcon) {\n sortIcon = document.createElement('div');\n sortIcon.classList.add('mdw-datatable__sort-icon', 'material-icons');\n sortIcon.textContent = 'arrow_downward';\n }\n if (this.element.hasChildNodes()) {\n this.element.insertBefore(this.element.firstChild, options.customSortIcon);\n } else {\n this.element.appendChild(sortIcon);\n }\n }\n if (options.tooltip) {\n const wrapper = document.createElement('span');\n wrapper.classList.add('mdw-tooltip__wrapper');\n const target = document.createElement('span');\n target.classList.add('mdw-tooltip__target');\n if (!options.name) {\n target.textContent = '';\n } else if (typeof options.name === 'string') {\n target.textContent = options.name;\n } else {\n target.appendChild(options.name);\n }\n const tooltip = document.createElement('div');\n tooltip.classList.add('mdw-tooltip');\n tooltip.textContent = options.tooltip;\n wrapper.appendChild(target);\n wrapper.appendChild(tooltip);\n this.element.appendChild(wrapper);\n } else if (options.name) {\n let node;\n if (typeof options.name === 'string') {\n node = document.createTextNode(options.name);\n } else {\n node = options.name;\n }\n this.element.appendChild(node);\n }\n\n this.primaryColumn = options.primaryColumn;\n if (options.primaryColumn) {\n this.element.setAttribute('mdw-primary-column', '');\n }\n\n this.rowSelector = options.rowSelector;\n\n if (this.rowSelector) {\n this.element.setAttribute('mdw-selector', '');\n }\n if (options.type) {\n this.element.dataset.type = options.type;\n this.type = options.type;\n }\n if (this.rowSelector && this.type === 'checkbox') {\n const checkboxLabel = constructTableCheckbox();\n this.element.appendChild(checkboxLabel);\n }\n\n if (options.renderer) {\n this.renderer = options.renderer;\n } else if (options.type === 'checkbox') {\n this.renderer = DataTableAdapterColumn.defaultCheckboxRenderer;\n } else {\n this.renderer = DataTableAdapterColumn.defaultCellRenderer;\n }\n this.formatter = options.formatter || (value => value);\n }\n\n /**\n * @param {HTMLTableCellElement} cell\n * @param {any} value\n * @return {void}\n */\n static defaultCheckboxRenderer(cell, value) {\n let input = cell.getElementsByTagName('input')[0];\n const checked = !!value;\n if (!input) {\n const checkboxLabel = document.createElement('label');\n checkboxLabel.classList.add('mdw-selection');\n input = document.createElement('input');\n input.classList.add('mdw-selection__input');\n input.setAttribute('type', 'checkbox');\n input.checked = checked;\n const icon = document.createElement('div');\n icon.classList.add('mdw-selection__icon');\n checkboxLabel.appendChild(input);\n checkboxLabel.appendChild(icon);\n cell.appendChild(checkboxLabel);\n }\n if (input.checked !== checked) {\n input.checked = checked;\n }\n }\n\n /**\n * @param {HTMLTableCellElement} cell\n * @param {any} value\n * @return {void}\n */\n static defaultCellRenderer(cell, value) {\n let stringValue;\n if (value == null) {\n stringValue = '';\n } else {\n stringValue = value.toString();\n }\n const len = cell.childNodes.length;\n let foundTextNode = false;\n for (let i = len - 1; i >= 0; i -= 1) {\n const node = cell.childNodes.item(i);\n if (!foundTextNode && node.nodeType === Node.TEXT_NODE) {\n if (node.nodeValue !== stringValue) {\n node.nodeValue = stringValue;\n }\n foundTextNode = true;\n } else {\n cell.removeChild(node);\n }\n }\n if (!foundTextNode) {\n const node = document.createTextNode(stringValue);\n cell.appendChild(node);\n }\n }\n}\n\n/**\n * @template T\n */\nclass DataTableAdapter {\n /**\n * @param {Object} options\n * @param {HTMLElement} options.datatable\n * @param {T[]} options.datasource Object array\n * @param {DataTableAdapterFilter<T>=} options.filter\n * @param {DataTableAdapterOnValueChangeRequestedCallback<T>=} options.onValueChangeRequested\n * @param {DataTableAdapterOnValueChangedCallback<T>=} options.onValueChanged\n * @param {DataTableAdapterSorter<T>=} options.sorter\n */\n constructor(options) {\n this.element = options.datatable;\n this.datasource = options.datasource;\n this.filter = options.filter;\n this.sorter = options.sorter;\n this.onValueChangeRequested = options.onValueChangeRequested || (() => false);\n this.onValueChanged = options.onValueChanged || (() => {});\n\n this.onElementClickListener = (event) => {\n this.handleClickInteraction(event);\n };\n // Use one click event listener to reduce overhead and allow dynamic content\n this.element.addEventListener('click', this.onElementClickListener);\n\n this.onElementScrollListener = () => {\n this.onElementScroll();\n };\n\n /** @type {HTMLTableRowElement} */\n this.tabindexRow = null;\n /** @type {Object} */\n this.tabindexRowData = null;\n this.element.addEventListener('mdw:tabindexchanged', (event) => {\n if (this.element.hasAttribute('mdw-row-focusable')) {\n this.tabindexRow = /** @type {HTMLTableRowElement} */ (event.target);\n this.tabindexRowData = this.getDataForTableRow(this.tabindexRow);\n }\n });\n DataTable.attach(this.element);\n this.element.setAttribute('mdw-adapter', '');\n /** @type {DataTableAdapterColumn<T>[]} */\n this.columns = [];\n this.page = 0;\n this.pageLimit = 0;\n this.debounceTimeMs = 0;\n this.throttleTimeMs = 0;\n this.useLazyRendering = false;\n }\n\n detach() {\n this.element.removeAttribute('mdw-adapter');\n this.element = null;\n this.datasource = null;\n this.filteredDatasource = null;\n }\n\n /**\n * @param {boolean=} [forceRefresh=false]\n * @return {void}\n */\n performThrottledRender(forceRefresh = false) {\n this.performLazyRender(forceRefresh);\n if (this.throttledRenderPending) {\n this.throttledRenderPending = false;\n this.scheduleThrottledRender();\n }\n }\n\n /**\n * @param {boolean=} [forceRefresh=false]\n * @return {void}\n */\n scheduleThrottledRender(forceRefresh = false) {\n if (this.throttleTimeMs < 17) {\n window.requestAnimationFrame(() => this.performThrottledRender(forceRefresh));\n } else {\n setTimeout(() => this.performThrottledRender(forceRefresh), this.throttleTimeMs);\n }\n }\n\n onElementScroll() {\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n if (this.throttledRenderPending) {\n // Will perform in the future\n return;\n }\n if (this.debounceTimeMs) {\n this.debounceTimeout = setTimeout(() => {\n this.scheduleThrottledRender();\n this.throttledRenderPending = true;\n }, this.debounceTimeMs);\n } else {\n this.scheduleThrottledRender();\n this.throttledRenderPending = true;\n }\n }\n\n buildScrollListener() {\n this.element.addEventListener('scroll', this.onElementScrollListener);\n }\n\n destroyScrollListener() {\n this.element.removeEventListener('scroll', this.onElementScrollListener);\n }\n\n /**\n * @param {PointerEvent|MouseEvent} event\n * @return {void}\n */\n handleClickInteraction(event) {\n const { target } = event;\n if (target instanceof HTMLInputElement) {\n if (target.hasAttribute('type') && target.getAttribute('type') === 'checkbox') {\n event.stopPropagation();\n const currentCell = this.getTableCell(target);\n if (currentCell.tagName.toLowerCase() === 'th') {\n this.setCheckOnAllRows(target.checked, currentCell.cellIndex);\n this.setHasSelection(target.checked);\n return;\n }\n const currentRow = this.getTableRow(target);\n const object = this.getDataForTableRow(currentRow);\n if (this.onValueChangeRequested(object, currentCell.dataset.key, target.checked)) {\n event.preventDefault();\n return;\n }\n object[currentCell.dataset.key] = target.checked;\n this.onValueChanged(object, currentCell.dataset.key, target.checked);\n if (currentCell.hasAttribute('mdw-selector')) {\n if (target.checked) {\n currentRow.setAttribute('mdw-selected', '');\n this.setHasSelection(true);\n } else {\n currentRow.removeAttribute('mdw-selected');\n const selectedRows = this.getSelectedRows();\n this.setHasSelection(selectedRows.length !== 0);\n }\n }\n }\n return;\n }\n const currentCell = this.getTableCell(/** @type {HTMLElement} */ (target));\n if (currentCell) {\n if (currentCell.tagName.toLowerCase() === 'th' && currentCell.hasAttribute('mdw-sortable')) {\n event.stopPropagation();\n let ascending = true;\n if (currentCell.hasAttribute('mdw-sorted') && !currentCell.getAttribute('mdw-sorted')) {\n ascending = false;\n }\n this.updateSortIcons(currentCell, ascending);\n if (this.updateSortColumn) {\n this.updateSortColumn(currentCell, ascending);\n }\n }\n }\n }\n\n /**\n * Overridable sorting method\n * @param {HTMLTableHeaderCellElement=} tableHeaderCell null if none\n * @param {boolean} [ascending=false]\n * @return {void}\n */\n updateSortColumn(tableHeaderCell, ascending) {\n if (!tableHeaderCell) {\n this.sorter = null;\n this.refresh();\n return;\n }\n if (tableHeaderCell.cellIndex === -1) {\n // Header not attached to row!\n return;\n }\n const index = tableHeaderCell.cellIndex;\n const tableColumn = this.columns[index];\n const direction = ascending ? 1 : -1;\n this.sorter = ((a, b) => {\n const valueA = a[tableColumn.key];\n const valueB = b[tableColumn.key];\n if (valueA == null) {\n if (valueB == null) {\n return 0;\n }\n return -1 * direction;\n }\n if (valueB == null) {\n return direction;\n }\n if (tableColumn.type === 'number') {\n return (parseFloat(valueA) - parseFloat(valueB)) * direction;\n }\n if (tableColumn.type === 'checkbox') {\n return ((valueA ? 1 : 0) - (valueB ? 1 : 0)) * direction;\n }\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB) * direction;\n }\n if (valueA == valueB) {\n return 0;\n }\n return (valueA - valueB) * direction;\n });\n this.refresh();\n }\n\n /**\n * @param {HTMLTableHeaderCellElement=} sortedTableHeaderCell null if none\n * @param {boolean=} [ascending=false]\n * @return {void}\n */\n updateSortIcons(sortedTableHeaderCell, ascending) {\n if (sortedTableHeaderCell) {\n if (ascending) {\n sortedTableHeaderCell.setAttribute('mdw-sorted', '');\n } else {\n sortedTableHeaderCell.setAttribute('mdw-sorted', 'desc');\n }\n }\n const tableHeaders = this.element.querySelectorAll('th');\n for (let i = 0; i < tableHeaders.length; i += 1) {\n const otherTableHeader = tableHeaders.item(i);\n if (otherTableHeader !== sortedTableHeaderCell) {\n otherTableHeader.removeAttribute('mdw-sorted');\n }\n }\n }\n\n /**\n * @param {boolean} value\n * @param {number} columnIndex\n * @return {void}\n */\n setCheckOnAllRows(value, columnIndex) {\n const column = this.columns[columnIndex];\n this.datasource.forEach((object) => {\n object[column.key] = value; // eslint-disable-line no-param-reassign\n });\n this.refresh();\n }\n\n /**\n * @param {HTMLElement} element\n * @return {HTMLTableRowElement}\n */\n getTableRow(element) {\n if (element === this.element) {\n return null;\n }\n if (element instanceof HTMLTableRowElement) {\n return element;\n }\n if (!element.parentElement) {\n return null;\n }\n return this.getTableRow(element.parentElement);\n }\n\n /**\n * @param {HTMLElement} element\n * @return {HTMLTableCellElement}\n */\n getTableCell(element) {\n if (element === this.element) {\n return null;\n }\n if (element instanceof HTMLTableCellElement) {\n return element;\n }\n if (!element.parentElement) {\n return null;\n }\n return this.getTableCell(element.parentElement);\n }\n\n /** @return {T[]} */\n getSelectedRows() {\n const selectorColumn = this.columns.filter(column => column.rowSelector)[0];\n if (!selectorColumn) {\n return [];\n }\n return this.getDatasource().filter(row => row[selectorColumn.key]);\n }\n\n /**\n * @param {boolean} value\n * @return {void}\n */\n setHasSelection(value) {\n if (value) {\n this.element.setAttribute('mdw-has-selection', '');\n return;\n }\n this.element.removeAttribute('mdw-has-selection');\n }\n\n /**\n * @param {T[]} datasource Object array\n * @return {void}\n */\n setDatasource(datasource) {\n this.datasource = datasource;\n }\n\n /**\n * Toggle lazy rending for datasources\n * @param {boolean} value\n * @return {void}\n */\n setUseLazyRendering(value) {\n this.useLazyRendering = value;\n if (value) {\n this.buildScrollListener();\n } else {\n this.destroyScrollListener();\n }\n }\n\n /**\n * @param {Object} options Text or options\n * @param {string} options.key\n * @param {(string|DocumentFragment)=} options.name\n * @param {boolean=} options.rowSelector\n * @param {string=} options.type\n * @param {boolean=} options.checkbox\n * @param {string=} options.tooltip\n * @param {boolean=} options.sortable\n * @param {boolean=} options.primaryColumn\n * @param {HTMLElement=} options.customSortIcon\n * @param {string=} options.innerHTML\n * @param {DocumentFragment=} options.fragment\n * @param {DataTableAdapterColumnRenderer<T>=} options.renderer\n * @param {DataTableAdapterColumnFormatter<T>=} options.formatter\n * @return {DataTableAdapterColumn<T>}\n */\n addColumn(options) {\n const tableColumn = new DataTableAdapterColumn(options);\n const headerRow = this.getHeaderRow();\n headerRow.appendChild(tableColumn.element);\n this.columns.push(tableColumn);\n return tableColumn;\n }\n\n updatePaginator() {\n if (!this.pageLimit) {\n return;\n }\n const min = this.page * this.pageLimit;\n const total = this.getDatasource().length;\n let max = this.pageLimit + min;\n if (max > total) {\n max = total;\n }\n this.paginationDetailsElement.textContent = `${min + 1}-${max} of ${total}`;\n if (min === 0) {\n this.previousPageButton.setAttribute('disabled', '');\n } else {\n this.previousPageButton.removeAttribute('disabled');\n }\n if (max === total) {\n this.nextPageButton.setAttribute('disabled', '');\n } else {\n this.nextPageButton.removeAttribute('disabled');\n }\n }\n\n /**\n * @param {Object} options\n * @param {boolean=} [options.disabled=false]\n * @param {number=} [options.limit=10]\n * @param {number[]=} [options.limits=[10,25,50,100]]\n * @return {void}\n */\n setPagination(options = {}) {\n const footer = this.getFooter(!options.disabled);\n if (options.disabled) {\n this.pageLimit = 0;\n this.page = 0;\n if (footer) {\n footer.style.display = 'none';\n }\n this.needsDraw = true;\n return;\n }\n footer.style.display = '';\n let optionsElement = footer.getElementsByClassName('mdw-datatable__footer-options')[0];\n if (!optionsElement) {\n optionsElement = document.createElement('div');\n optionsElement.classList.add('mdw-datatable__footer-options');\n const rowsPerPageText = document.createElement('span');\n rowsPerPageText.textContent = 'Rows per page';\n const limits = options.limits || [10, 25, 50, 100];\n const limitsElement = document.createElement('label');\n limitsElement.classList.add('mdw-textfield');\n limitsElement.setAttribute('mdw-solo', '');\n const select = document.createElement('select');\n select.classList.add('mdw-textfield__input');\n limits.forEach((limit) => {\n const option = document.createElement('option');\n option.value = limit.toString();\n option.textContent = limit.toString();\n select.appendChild(option);\n });\n select.setAttribute('value', (options.limit && options.limit.toString()) || '10');\n const dropdownIcon = document.createElement('div');\n dropdownIcon.classList.add('mdw-textfield__icon');\n dropdownIcon.setAttribute('mdw-dropdown', '');\n limitsElement.appendChild(select);\n limitsElement.appendChild(dropdownIcon);\n optionsElement.appendChild(rowsPerPageText);\n optionsElement.appendChild(limitsElement);\n footer.appendChild(optionsElement);\n select.addEventListener('input', () => {\n this.pageLimit = parseInt(select.value, 10);\n this.updateRowCount(false);\n this.updatePaginator();\n this.refreshRows();\n });\n }\n if (!this.paginationDetailsElement) {\n this.paginationDetailsElement = footer.getElementsByClassName('mdw-datatable__footer-details')[0];\n }\n if (!this.paginationDetailsElement) {\n this.paginationDetailsElement = document.createElement('div');\n this.paginationDetailsElement.classList.add('mdw-datatable__footer-details');\n footer.appendChild(this.paginationDetailsElement);\n }\n if (!this.paginationControls) {\n this.paginationControls = footer.getElementsByClassName('mdw-datatable__footer-controls')[0];\n }\n if (!this.paginationControls) {\n this.paginationControls = document.createElement('div');\n this.paginationControls.classList.add('mdw-datatable__footer-controls');\n footer.appendChild(this.paginationControls);\n }\n if (!this.previousPageButton || !this.nextPageButton) {\n const buttons = this.paginationControls.getElementsByClassName('mdw-button');\n if (buttons.length !== 2) {\n this.previousPageButton = document.createElement('button');\n this.previousPageButton.classList.add('mdw-button', 'material-icons');\n this.previousPageButton.setAttribute('mdw-icon', '');\n this.previousPageButton.textContent = 'chevron_left';\n this.paginationControls.appendChild(this.previousPageButton);\n Button.attach(this.previousPageButton);\n\n this.nextPageButton = document.createElement('button');\n this.nextPageButton.classList.add('mdw-button', 'material-icons');\n this.nextPageButton.setAttribute('mdw-icon', '');\n this.nextPageButton.textContent = 'chevron_right';\n this.paginationControls.appendChild(this.nextPageButton);\n Button.attach(this.nextPageButton);\n } else {\n this.previousPageButton = buttons[0];\n this.nextPageButton = buttons[1];\n }\n this.previousPageButton.addEventListener('click', () => {\n if (this.previousPageButton.hasAttribute('disabled')) {\n return;\n }\n this.page -= 1;\n this.updateRowCount(false);\n this.updatePaginator();\n this.refreshRows();\n });\n this.nextPageButton.addEventListener('click', () => {\n if (this.nextPageButton.hasAttribute('disabled')) {\n return;\n }\n this.page += 1;\n this.updateRowCount(false);\n this.updatePaginator();\n this.refreshRows();\n });\n }\n this.pageLimit = options.limit || 10;\n this.updateRowCount(false);\n this.updatePaginator();\n this.refreshRows();\n }\n\n /**\n * @param {boolean} create\n * @return {HTMLElement}\n */\n getFooter(create) {\n /** @type {HTMLElement} */\n let footer = (this.element.getElementsByClassName('mdw-datatable__footer')[0]);\n if (!footer && create) {\n footer = document.createElement('div');\n footer.classList.add('mdw-datatable__footer');\n this.element.appendChild(footer);\n }\n return footer;\n }\n\n /**\n * @param {HTMLTableRowElement} el\n * @return {boolean}\n */\n isRowVisible(el) {\n const scrollingElement = this.element;\n const rowRect = el.getBoundingClientRect();\n const scrollingRect = scrollingElement.getBoundingClientRect();\n const rowTop = (rowRect.top) - (scrollingRect.top);\n const rowBottom = rowTop + rowRect.height;\n const viewportTop = 0;\n const viewportBottom = scrollingRect.height;\n if (rowTop > viewportTop && rowTop < viewportBottom) {\n // Top of row is visible\n return true;\n }\n if (rowBottom > viewportTop && rowBottom < viewportBottom) {\n // Bottom of row is visible\n return true;\n }\n return false;\n }\n\n /**\n * @param {(HTMLTableRowElement[])} visibleRows\n * @return {void}\n */\n clearNonvisibleRows(visibleRows) {\n const tbody = this.getTableBody();\n const len = tbody.rows.length;\n if (visibleRows.length === len) {\n return;\n }\n let firstRowIndex = Infinity;\n let lastRowIndex = -Infinity;\n if (visibleRows.length) {\n firstRowIndex = visibleRows[0].sectionRowIndex;\n lastRowIndex = visibleRows[visibleRows.length - 1].sectionRowIndex;\n }\n for (let i = 0; i < len; i += 1) {\n if (i < firstRowIndex || i > lastRowIndex) {\n const row = tbody.rows.item(i);\n if (row.lastChild) {\n // Store row height to prevent layout shifting\n const rect = row.getBoundingClientRect();\n row.style.setProperty('height', `${rect.height || 0}px`);\n }\n while (row.lastChild) {\n row.removeChild(row.lastChild);\n }\n }\n }\n }\n\n /**\n * @return {HTMLTableRowElement[]}\n */\n getLazyRenderRows() {\n const tbody = this.getTableBody();\n const len = tbody.rows.length;\n const rows = [];\n const minRowCount = window.screen.height / 48;\n if (len <= minRowCount) {\n for (let i = 0; i < len; i += 1) {\n rows.push(tbody.rows.item(i));\n }\n return rows;\n }\n let foundFirstVisibleRow = false;\n let startIndex = 0;\n let endIndex = 0;\n for (let i = 0; i < len; i += 1) {\n const row = tbody.rows.item(i);\n if (this.isRowVisible(row)) {\n if (!foundFirstVisibleRow) {\n foundFirstVisibleRow = true;\n startIndex = i;\n }\n endIndex = i;\n } else if (foundFirstVisibleRow) {\n break;\n }\n }\n\n while ((endIndex - startIndex) + 1 < minRowCount) {\n if (startIndex === 0) {\n endIndex += 1;\n } else if (endIndex === len - 1) {\n startIndex -= 1;\n } else {\n startIndex -= 1;\n endIndex += 1;\n }\n }\n for (let i = startIndex; i <= endIndex; i += 1) {\n rows.push(tbody.rows.item(i));\n }\n\n return rows;\n }\n\n /**\n * @param {boolean} forceRefresh\n * @return {void}\n */\n performLazyRender(forceRefresh = false) {\n const visibleRows = this.getLazyRenderRows();\n visibleRows.forEach((row) => {\n if (forceRefresh || !row.cells.length) {\n this.refreshRow(row.sectionRowIndex);\n }\n });\n this.clearNonvisibleRows(visibleRows);\n }\n\n /**\n * @param {DataTableAdapterFilter<T>} filter\n * @return {void}\n */\n setFilter(filter) {\n this.filter = filter;\n this.refreshFilter();\n }\n\n /**\n * @param {DataTableAdapterSorter<T>} sorter\n * @return {void}\n */\n setSorter(sorter) {\n this.sorter = sorter;\n this.refreshFilter();\n }\n\n refreshFilter() {\n if (this.filter && this.sorter) {\n this.filteredDatasource = this.datasource.filter(this.filter).sort(this.sorter);\n } else if (this.filter) {\n this.filteredDatasource = this.datasource.filter(this.filter);\n } else if (this.sorter) {\n this.filteredDatasource = this.datasource.slice(0).sort(this.sorter);\n } else {\n this.filteredDatasource = null;\n }\n }\n\n /**\n * Get filtered datasource\n * @return {T[]}\n */\n getDatasource() {\n if (this.filter || this.sorter) {\n if (this.filteredDatasource == null) {\n this.refreshFilter();\n }\n return this.filteredDatasource;\n }\n return this.datasource;\n }\n\n /**\n * Update number of rows in table\n * @param {boolean=} refresh Refresh new rows\n * @return {void}\n */\n updateRowCount(refresh) {\n const tbody = this.getTableBody();\n const rowLength = tbody.rows.length;\n\n const datasource = this.getDatasource();\n let rowsToDisplay = datasource.length;\n if (this.pageLimit) {\n let offset = this.page * this.pageLimit;\n if (offset > rowsToDisplay) {\n // Datasource or filter likely changed\n // Reset to page 0\n this.page = 0;\n offset = 0;\n }\n rowsToDisplay -= offset;\n if (rowsToDisplay > this.pageLimit) {\n rowsToDisplay = this.pageLimit;\n }\n }\n\n const rowDifference = rowsToDisplay - rowLength;\n const newRows = [];\n\n if (rowDifference < 0) {\n // too many rows\n for (let i = rowLength - 1; i >= rowsToDisplay; i -= 1) {\n const row = tbody.rows.item(i);\n tbody.removeChild(row);\n }\n }\n if (rowDifference > 0) {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < rowDifference; i += 1) {\n const row = document.createElement('tr');\n if (this.element.hasAttribute('mdw-row-focusable')) {\n row.setAttribute('tabindex', '-1');\n }\n newRows.push(row);\n fragment.appendChild(row);\n }\n tbody.appendChild(fragment);\n }\n if (refresh && rowDifference !== 0) {\n if (this.useLazyRendering) {\n this.scheduleThrottledRender(true);\n } else {\n newRows.forEach((row) => {\n this.refreshRow(row.sectionRowIndex);\n });\n }\n }\n }\n\n /** @return {void} */\n refreshRows() {\n if (this.useLazyRendering) {\n this.performLazyRender(true);\n } else {\n const tbody = this.getTableBody();\n const len = tbody.rows.length;\n for (let i = 0; i < len; i += 1) {\n this.refreshRow(i);\n }\n }\n if (this.tabindexRowData) {\n const row = this.getTableRowForData(this.tabindexRowData);\n if (row !== this.tabindexRow) {\n if (this.tabindexRow) {\n this.tabindexRow.setAttribute('tabindex', '-1');\n }\n if (row) {\n row.setAttribute('tabindex', '0');\n if (document.activeElement === this.tabindexRow) {\n row.focus();\n }\n }\n this.tabindexRow = row;\n }\n }\n if (this.useLazyRendering) {\n this.scheduleThrottledRender();\n }\n }\n\n /** @return {void} */\n refresh() {\n this.refreshFilter();\n this.updateRowCount(false);\n this.updatePaginator();\n this.refreshRows();\n }\n\n /**\n * @param {HTMLTableRowElement} row\n * @return {T}\n */\n getDataForTableRow(row) {\n const index = (row.sectionRowIndex) + (this.page * this.pageLimit);\n return this.getDatasource()[index];\n }\n\n /**\n * @param {T} data\n * @return {HTMLTableRowElement} row\n */\n getTableRowForData(data) {\n const datasourceIndex = this.getDatasource().indexOf(data);\n if (datasourceIndex === -1) {\n return null;\n }\n const minIndex = this.page * this.pageLimit;\n return this.getTableBody().rows.item(datasourceIndex - minIndex);\n }\n\n /**\n * @param {number} rowIndex\n * @return {void}\n */\n refreshRow(rowIndex) {\n const row = this.getTableBody().rows.item(rowIndex);\n row.style.removeProperty('height');\n for (let columnIndex = 0; columnIndex < this.columns.length; columnIndex += 1) {\n this.refreshCell(columnIndex, rowIndex);\n }\n }\n\n /**\n * @param {number} columnIndex\n * @param {number} rowIndex\n * @return {void}\n */\n refreshCell(columnIndex, rowIndex) {\n const tableColumn = this.columns[columnIndex];\n const row = this.getTableBody().rows.item(rowIndex);\n let len = row.cells.length;\n while (len <= columnIndex) {\n // Generate cells\n const missingColumn = this.columns[len];\n const missingCell = row.insertCell();\n if (missingColumn.type) {\n missingCell.dataset.type = missingColumn.type;\n }\n missingCell.dataset.key = missingColumn.key;\n if (missingColumn.rowSelector) {\n missingCell.setAttribute('mdw-selector', '');\n }\n if (missingColumn.primaryColumn) {\n missingCell.setAttribute('mdw-primary-column', '');\n }\n len += 1;\n }\n const cell = row.cells.item(columnIndex);\n const data = this.getDataForTableRow(row);\n const value = data[tableColumn.key];\n if (tableColumn.rowSelector) {\n if (value) {\n if (!row.hasAttribute('mdw-selected')) {\n row.setAttribute('mdw-selected', '');\n }\n } else if (row.hasAttribute('mdw-selected')) {\n row.removeAttribute('mdw-selected');\n }\n }\n const formattedValue = tableColumn.formatter(value, data);\n tableColumn.renderer(cell, formattedValue, data);\n }\n\n /**\n * @param {HTMLTableCellElement|DataTableAdapterColumn|number|string} search\n * @return {DataTableAdapterColumn<T>}\n */\n getColumn(search) {\n if (search instanceof DataTableAdapterColumn) {\n return search;\n }\n if (search instanceof HTMLTableCellElement) {\n return this.columns.filter(column => column.element === search)[0];\n }\n if (typeof search === 'string') {\n return this.columns.filter(column => column.element.dataset.key === search)[0];\n }\n return this.columns[search];\n }\n\n /** @return {HTMLTableElement} */\n getTable() {\n let table = this.element.getElementsByTagName('table')[0];\n if (!table) {\n table = document.createElement('table');\n const footer = this.element.getElementsByClassName('mdw-datatable__footer')[0];\n if (footer) {\n this.element.insertBefore(table, footer);\n } else {\n this.element.appendChild(table);\n }\n }\n return table;\n }\n\n /** @return {HTMLTableRowElement} */\n getHeaderRow() {\n let thead = this.element.getElementsByTagName('thead')[0];\n if (!thead) {\n const table = this.getTable();\n thead = document.createElement('thead');\n table.appendChild(thead);\n }\n let headerRow = thead.getElementsByTagName('tr')[0];\n if (!headerRow) {\n headerRow = document.createElement('tr');\n thead.appendChild(headerRow);\n }\n return headerRow;\n }\n\n /** @return {HTMLTableSectionElement} */\n getTableBody() {\n if (this.tbody) {\n return this.tbody;\n }\n this.tbody = this.element.getElementsByTagName('tbody')[0];\n if (!this.tbody) {\n const table = this.getTable();\n this.tbody = document.createElement('tbody');\n table.appendChild(this.tbody);\n }\n return this.tbody;\n }\n\n /**\n * @param {number} columnIndex\n * @return {void}\n */\n refreshColumn(columnIndex) {\n const tbody = this.getTableBody();\n const rowLen = tbody.rows.length;\n for (let rowIndex = 0; rowIndex < rowLen; rowIndex += 1) {\n this.refreshCell(columnIndex, rowIndex);\n }\n }\n}\n\nexport {\n DataTableAdapter,\n DataTableAdapterColumn,\n};\n","import { Button } from '../../../components/button/index';\nimport { DataTable } from '../../../components/datatable/index';\nimport { Menu } from '../../../components/menu/index';\nimport { setupMenuOptions } from '../menuoptions';\nimport { DataTableAdapter } from '../../../adapters/datatable/index';\n\n/** @return {void} */\nfunction initializeMdwComponents() {\n let components;\n components = document.querySelectorAll('.mdw-datatable');\n for (let i = 0; i < components.length; i += 1) {\n DataTable.attach(components.item(i));\n }\n components = document.querySelectorAll('.mdw-button');\n for (let i = 0; i < components.length; i += 1) {\n Button.attach(components.item(i));\n }\n components = document.querySelectorAll('.mdw-menu');\n for (let i = 0; i < components.length; i += 1) {\n Menu.attach(components.item(i));\n }\n}\n\n\n/** @type {DataTableAdapter} */\nlet dynamicTableAdapter = null;\n/** @return {void} */\nfunction buildDynamicTable() {\n const datasource = [];\n let count = 1;\n const addDatasourceObject = () => {\n datasource.push({\n text: Math.random().toString(36).substring(2),\n text2: Math.random().toString(36).substring(2),\n check1: Math.random() > 0.5,\n increment: count,\n random: Math.floor(Math.random() * 99999),\n });\n count += 1;\n };\n for (let i = 0; i < 256; i += 1) {\n addDatasourceObject();\n }\n\n const datatable = document.getElementById('dynamic-table');\n dynamicTableAdapter = new DataTableAdapter({ datatable, datasource });\n dynamicTableAdapter.addColumn({\n key: 'selected',\n type: 'checkbox',\n rowSelector: true,\n });\n dynamicTableAdapter.addColumn({\n key: 'text',\n name: 'Primary Column (full-width)',\n primaryColumn: true,\n sortable: true,\n type: 'text',\n });\n dynamicTableAdapter.addColumn({\n key: 'text2',\n name: 'Text field',\n sortable: true,\n type: 'text',\n });\n dynamicTableAdapter.addColumn({\n key: 'check1',\n name: 'bool',\n type: 'checkbox',\n tooltip: 'Non-selection boolean value',\n sortable: true,\n });\n dynamicTableAdapter.addColumn({\n key: 'increment',\n name: 'Increment',\n type: 'number',\n sortable: true,\n });\n dynamicTableAdapter.addColumn({\n key: 'random',\n name: 'Random',\n sortable: true,\n type: 'number',\n });\n dynamicTableAdapter.setUseLazyRendering(true);\n dynamicTableAdapter.setPagination();\n dynamicTableAdapter.refresh();\n const buttons = dynamicTableAdapter.element.querySelectorAll('.mdw-datatable__header-controls .mdw-button');\n const filterButton = buttons[0];\n const optionsButton = buttons[1];\n const menus = dynamicTableAdapter.element.querySelectorAll('.mdw-datatable__header-controls .mdw-menu');\n const filterMenu = menus[0];\n const optionsMenu = menus[1];\n\n filterButton.addEventListener('click', (event) => {\n Menu.show(filterMenu, event);\n });\n const filterMenuItems = filterMenu.querySelectorAll('.mdw-menu__item');\n const noFilterMenuItem = filterMenuItems[0];\n const mdFilterMenuItem = filterMenuItems[1];\n const randomDivBy9MenuItem = filterMenuItems[2];\n const checkedFilterMenuItem = filterMenuItems[3];\n\n /**\n * @param {NodeListOf<Element>} menuItems\n * @param {number} checkedIndex\n * @return {void}\n */\n function setMenuChecked(menuItems, checkedIndex) {\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems.item(i);\n if (checkedIndex === i) {\n menuItem.setAttribute('mdw-checked', '');\n } else {\n menuItem.removeAttribute('mdw-checked');\n }\n }\n }\n noFilterMenuItem.addEventListener('click', () => {\n dynamicTableAdapter.setFilter(null);\n dynamicTableAdapter.refresh();\n Menu.hide(filterMenu);\n setMenuChecked(filterMenuItems, 0);\n filterButton.setAttribute('mdw-inactive', '');\n filterButton.removeAttribute('mdw-active');\n });\n mdFilterMenuItem.addEventListener('click', () => {\n dynamicTableAdapter.setFilter(data => data.text.indexOf('md') !== -1 || data.text2.indexOf('md') !== -1);\n dynamicTableAdapter.refresh();\n Menu.hide(filterMenu);\n setMenuChecked(filterMenuItems, 1);\n filterButton.setAttribute('mdw-active', '');\n filterButton.removeAttribute('mdw-inactive');\n });\n randomDivBy9MenuItem.addEventListener('click', () => {\n dynamicTableAdapter.setFilter(data => data.random % 9 === 0);\n dynamicTableAdapter.refresh();\n Menu.hide(filterMenu);\n setMenuChecked(filterMenuItems, 2);\n filterButton.setAttribute('mdw-active', '');\n filterButton.removeAttribute('mdw-inactive');\n });\n checkedFilterMenuItem.addEventListener('click', () => {\n dynamicTableAdapter.setFilter(data => data.check1);\n dynamicTableAdapter.refresh();\n Menu.hide(filterMenu);\n setMenuChecked(filterMenuItems, 3);\n filterButton.setAttribute('mdw-active', '');\n filterButton.removeAttribute('mdw-inactive');\n });\n\n const menuItems = optionsMenu.querySelectorAll('.mdw-menu__item');\n const throttleMenuItem = menuItems[0];\n const paginateMenuItem = menuItems[1];\n optionsButton.addEventListener('click', (event) => {\n Menu.show(optionsMenu, event);\n });\n throttleMenuItem.addEventListener('click', () => {\n if (throttleMenuItem.hasAttribute('mdw-checked')) {\n dynamicTableAdapter.setUseLazyRendering(false);\n throttleMenuItem.removeAttribute('mdw-checked');\n } else {\n dynamicTableAdapter.setUseLazyRendering(true);\n throttleMenuItem.setAttribute('mdw-checked', '');\n }\n Menu.hide(optionsMenu);\n dynamicTableAdapter.refresh();\n });\n paginateMenuItem.addEventListener('click', () => {\n if (paginateMenuItem.hasAttribute('mdw-checked')) {\n dynamicTableAdapter.setPagination({ disabled: true });\n paginateMenuItem.removeAttribute('mdw-checked');\n } else {\n dynamicTableAdapter.setPagination();\n paginateMenuItem.setAttribute('mdw-checked', '');\n }\n Menu.hide(optionsMenu);\n dynamicTableAdapter.refresh();\n });\n}\n\ninitializeMdwComponents();\nsetupMenuOptions();\nbuildDynamicTable();\n"],"sourceRoot":""}
|
package/docs/dialog.html
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><title>Material Design Web</title><meta charset="utf-8"><meta content="IE=edge" http-equiv="X-UA-Compatible"><meta content="" name="description"><meta content="width=device-width, initial-scale=1, viewport-fit=cover" name="viewport"><meta name="theme-color" content="#E91E63"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><meta name="apple-mobile-web-app-capable" content="yes"><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700"><link rel="stylesheet" href="docs.min.css"><link rel="stylesheet" href="components.min.css"><link rel="stylesheet" href="theming.min.css"><link rel="stylesheet" href="theming.ie11.min.css" media="screen and (-ms-high-contrast: active), (-ms-high-contrast: none)"><script src="prerender.min.js"></script></head><body class="mdw-type"><div class="mdw-navdrawer" id="docs-navdrawer"><a class="mdw-navdrawer__scrim" href="#"></a><div class="mdw-navdrawer__toolbar"><div class="mdw-toolbar" mdw-theme-fill="accent-500 dark" mdw-app-bar><div class="mdw-toolbar__action"><div class="mdw-toolbar__start"><div class="mdw-tooltip__wrapper"><a class="mdw-tooltip__target mdw-button material-icons" mdw-icon href="#docs-navdrawer">menu</a><div class="mdw-tooltip">Menu</div></div></div><div class="mdw-toolbar__title">dialog</div><div class="mdw-toolbar__end" id="docs-menu-buttons"><div class="mdw-tooltip__wrapper"><div class="mdw-tooltip__target mdw-button docs-rtl" mdw-inactive>RTL</div><div class="mdw-tooltip">Right-to-Left</div></div><div class="mdw-tooltip__wrapper"><div class="mdw-tooltip__target mdw-button material-icons" mdw-icon mdw-inactive>brightness_3</div><div class="mdw-tooltip">Dark Mode</div></div><div class="mdw-tooltip__wrapper"><div class="mdw-tooltip__target mdw-button material-icons" mdw-icon mdw-inactive>format_size</div><div class="mdw-tooltip">Large Font</div></div></div></div></div></div><div class="mdw-navdrawer__drawer"><div class="mdw-list"><a class="mdw-list__item" href="index.html" mdw-theme-color="primary"><div class="mdw-list__text">Home</div></a><div class="mdw-list__subheader">Components</div><a class="mdw-list__item" href="bottomnav.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">call_to_action</div><div class="mdw-list__text">Bottom Navigation</div></a><a class="mdw-list__item" href="button.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">crop_landscape</div><div class="mdw-list__text">Button</div></a><a class="mdw-list__item" href="card.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">crop_square</div><div class="mdw-list__text">Card</div></a><a class="mdw-list__item" mdw-selected href="dialog.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">select_all</div><div class="mdw-list__text">Dialog</div></a><a class="mdw-list__item" href="datatable.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">format_align_justify</div><div class="mdw-list__text">Data Table</div></a><a class="mdw-list__item" href="elevation.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">layers</div><div class="mdw-list__text">Elevation</div></a><a class="mdw-list__item" href="fab.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">add_circle</div><div class="mdw-list__text">Floating Action Button</div></a><a class="mdw-list__item" href="layout.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">view_compact</div><div class="mdw-list__text">Layout</div></a><a class="mdw-list__item" href="list.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">view_list</div><div class="mdw-list__text">List</div></a><a class="mdw-list__item" href="menu.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">picture_in_picture</div><div class="mdw-list__text">Menu</div></a><a class="mdw-list__item" href="navdrawer.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">menu</div><div class="mdw-list__text">Navigation Drawer</div></a><a class="mdw-list__item" href="progress.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">timelapse</div><div class="mdw-list__text">Progress</div></a><a class="mdw-list__item" href="search.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">search</div><div class="mdw-list__text">Search</div></a><a class="mdw-list__item" href="selection.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">toggle_on</div><div class="mdw-list__text">Selection</div></a><a class="mdw-list__item" href="slider.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">tune</div><div class="mdw-list__text">Slider</div></a><a class="mdw-list__item" href="snackbar.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">video_label</div><div class="mdw-list__text">Snackbar</div></a><a class="mdw-list__item" href="tab.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">tab</div><div class="mdw-list__text">Tab</div></a><a class="mdw-list__item" href="textfield.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">text_fields</div><div class="mdw-list__text">Text Field</div></a><a class="mdw-list__item" href="toolbar.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">web_asset</div><div class="mdw-list__text">Toolbar</div></a><a class="mdw-list__item" href="tooltip.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">info</div><div class="mdw-list__text">Tooltip</div></a><a class="mdw-list__item" href="type.html" mdw-theme-color="accent"><div class="mdw-list__icon material-icons">font_download</div><div class="mdw-list__text">Typography</div></a></div></div><div class="mdw-navdrawer__content" style="padding-bottom:24px"><div class="mdw-layout" mdw-margin-top mdw-margin-bottom><div class="mdw-layout__item" mdw-colspan="100%"><div><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><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></div></div><div class="mdw-layout__item" mdw-colspan="4"><div class="component-sample"><div class="component-sample__container"><a class="mdw-button" href="#sample-dialog">Open</a><div class="mdw-dialog" id="sample-dialog"><a class="mdw-dialog__close" href="#"></a><div class="mdw-dialog__popup"><div class="mdw-dialog__title">Sample title</div><div class="mdw-dialog__body">Sample body text</div><div class="mdw-dialog__button-area"><a class="mdw-button" mdw-theme-color="accent" href="#">Agree</a><a class="mdw-button" mdw-theme-color="accent" href="#">Disagree</a></div></div></div></div></div></div><div class="mdw-layout__item" mdw-colspan="8"><div><div class="mdw-type" mdw-style="subtitle">Javascript</div><div><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="javascript" value="required"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">Required</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="javascript" value="optional" checked><div class="mdw-selection__icon"></div><div class="mdw-selection__label">Optional</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="javascript" value="none"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">None</div></label></div><div class="mdw-type" mdw-style="subtitle">Options</div><div><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="checkbox" name="stacked-buttons"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">Stacked Buttons</div></label></div><div class="mdw-type" mdw-style="subtitle">Width Units</div><div><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="width" value="auto" checked><div class="mdw-selection__icon"></div><div class="mdw-selection__label">Auto</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="width" value="3"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">3</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="width" value="4"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">4</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="width" value="5"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">5</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="width" value="6"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">6</div></label><label class="mdw-selection" mdw-theme-color="accent" style="margin:16px 8px"><input class="mdw-selection__input" type="radio" name="width" value="7"><div class="mdw-selection__icon"></div><div class="mdw-selection__label">7</div></label></div></div></div><div class="mdw-layout__item" mdw-colspan="100%" style="max-height:0"></div><div class="mdw-layout__item" mdw-colspan="100%"><div class="display-flex" flex-column><h6 class="mdw-type">HTML Code</h6><div class="mdw-card component-code component-html"></div></div></div><div class="mdw-layout__item" mdw-colspan="100%"><div class="display-flex" flex-column><h6 class="mdw-type">Javascript Code</h6><div class="mdw-card component-code component-js"></div></div></div><div class="mdw-layout__item" mdw-colspan="100%"><h6 class="mdw-type">Samples</h6></div><div class="mdw-layout__item display-flex" mdw-colspan="4" flex-justify-content="center"><div class="render"><div class="display-flex flex-1" flex-column style="position:relative"><div class="androidstatusbar" mdw-theme-fill="primary-700 dark"><div>12:30</div><i class="material-icons" style="letter-spacing:2px;padding:0 2px"></i></div><div class="mdw-toolbar" mdw-theme-fill="primary-500 dark"><div class="mdw-toolbar__action"><div class="mdw-toolbar__start"><div class="mdw-tooltip__wrapper"><div class="mdw-tooltip__target mdw-button material-icons" mdw-icon>menu</div><div class="mdw-tooltip">Menu</div></div></div><div class="mdw-toolbar__end"><div class="mdw-tooltip__wrapper"><div class="mdw-tooltip__target mdw-button material-icons" mdw-icon mdw-more-button>more_vert</div><div class="mdw-tooltip">Options</div></div></div></div></div><div class="content" style="padding:16px 8px;"><a class="mdw-button" mdw-theme-fill="primary dark" mdw-raised href="#confirmdialog-titled">Titled</a><a class="mdw-button" mdw-theme-fill="primary dark" mdw-raised href="#confirmdialog-text">Text</a><a class="mdw-button" mdw-theme-fill="primary dark" mdw-raised href="#dialog-scrolling">Scrolling</a><div class="display-flex js" style="padding:16px 0"><button class="mdw-button" mdw-theme-fill="primary dark" mdw-raised>JS</button></div></div><div class="mdw-dialog" id="confirmdialog-titled"><a class="mdw-dialog__close" href="#"></a><div class="mdw-dialog__popup"><div class="mdw-dialog__title">Use Google's location service?</div><div class="mdw-dialog__body">Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.</div><div class="mdw-dialog__button-area"><a class="mdw-button" mdw-theme-color="accent" href="#">Agree</a><a class="mdw-button" mdw-theme-color="accent" href="#">Disagree</a></div></div></div><div class="mdw-dialog" id="dialog-scrolling"><a class="mdw-dialog__close" href="#"></a><div class="mdw-dialog__popup"><div class="mdw-dialog__header"><div class="mdw-dialog__title">Dialog header</div></div><div class="mdw-divider"></div><div class="mdw-dialog__scrolling"><div class="mdw-list"><div class="mdw-list__item">Item 1</div><div class="mdw-list__item">Item 2</div><div class="mdw-list__item">Item 3</div><div class="mdw-list__item">Item 4</div><div class="mdw-list__item">Item 5</div><div class="mdw-list__item">Item 6</div><div class="mdw-list__item">Item 7</div><div class="mdw-list__item">Item 8</div><div class="mdw-list__item">Item 9</div></div></div><div class="mdw-divider"></div><div class="mdw-dialog__button-area"><a class="mdw-button" mdw-theme-color="accent" href="#">Agree</a><a class="mdw-button" mdw-theme-color="accent" href="#">Disagree</a></div></div></div><div class="mdw-dialog" id="confirmdialog-text"><a class="mdw-dialog__close" href="#"></a><div class="mdw-dialog__popup"><div class="mdw-dialog__body">Discard draft?</div><div class="mdw-dialog__button-area"><a class="mdw-button" mdw-theme-color="accent" href="#">Discard</a><a class="mdw-button" mdw-theme-color="accent" href="#">Cancel</a></div></div></div></div><div class="androidnavbar"><i class="material-icons back-button"></i><i class="material-icons"></i><i class="material-icons"></i></div></div></div></div></div></div><script src="dialog.min.js"></script></body></html>
|
package/docs/dialog.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=33)}({0:function(e,t,n){"use strict";function r(e){return window.localStorage?localStorage.getItem(e):null}function o(e,t){window.localStorage&&localStorage.setItem(e,t)}function i(e){window.localStorage&&localStorage.removeItem(e)}n.d(t,"a",function(){return r}),n.d(t,"c",function(){return o}),n.d(t,"b",function(){return i})},1:function(e,t,n){"use strict";function r(e,t){var n=e.getElementsByClassName(t)[0];return n&&n.parentElement!==e?null:n}function o(e,t,n){var r;for(r=!1===n?e.parentElement:e;null!=r&&!r.classList.contains(t);)r=r.parentElement;return r}function i(){return document.documentElement.hasAttribute("dir")&&"rtl"===document.documentElement.getAttribute("dir").toLowerCase()}function a(e,t){var n=document.createEvent("Event");return n.initEvent(t,!0,!0),e.dispatchEvent(n)}n.d(t,"c",function(){return r}),n.d(t,"b",function(){return o}),n.d(t,"d",function(){return i}),n.d(t,"a",function(){return a}),n.d(t,"e",function(){return c});var c=window.requestAnimationFrame||function(e){return setTimeout(e,17)}},2:function(e,t,n){"use strict";n.d(t,"c",function(){return a}),n.d(t,"a",function(){return c}),n.d(t,"b",function(){return u}),n.d(t,"d",function(){return l});var r=n(0),o="black dark",i="white light";function a(e,t){e?(document.documentElement.setAttribute("dir","rtl"),t&&t.removeAttribute("mdw-inactive"),Object(r.c)("rtlmode","true")):(document.documentElement.removeAttribute("dir"),t&&t.setAttribute("mdw-inactive",""),Object(r.b)("rtlmode"))}function c(e,t){e?(document.documentElement.setAttribute("mdw-theme-fill",o),t&&t.removeAttribute("mdw-inactive")):(document.documentElement.setAttribute("mdw-theme-fill",i),t&&t.setAttribute("mdw-inactive","")),Object(r.c)("darkmode",e?"true":"false")}function u(e,t){e?(document.documentElement.style.setProperty("font-size",e),t&&t.removeAttribute("mdw-inactive"),Object(r.c)("fontsize",e)):(document.documentElement.style.removeProperty("font-size"),t&&t.setAttribute("mdw-inactive",""),Object(r.b)("fontsize"))}function l(){var e=document.getElementById("docs-menu-buttons").getElementsByClassName("mdw-button"),t=e[0],n=e[1],i=e[2];!function(e){"true"===Object(r.a)("rtlmode")&&a(!0,e),e.addEventListener("click",function(){"rtl"===document.documentElement.getAttribute("dir")?a(!1,e):a(!0,e)})}(t),function(e){"true"===Object(r.a)("darkmode")&&c(!0,e),e.addEventListener("click",function(){document.documentElement.getAttribute("mdw-theme-fill")===o?c(!1,e):c(!0,e)})}(n),function(e){u(Object(r.a)("fontsize"),e),e.addEventListener("click",function(){document.documentElement.style.getPropertyValue("font-size")?u(null,e):u("125%",e)})}(i)}},3:function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(1);function o(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){n&&o(e,n)}(e,0,[{key:"attach",value:function(t){var n=Object(r.c)(t,"mdw-ripple");n||((n=document.createElement("div")).classList.add("mdw-ripple"),t.firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n));var o=Object(r.c)(n,"mdw-ripple__inner");o||((o=document.createElement("div")).classList.add("mdw-ripple__inner"),n.appendChild(o)),t.setAttribute("mdw-ripple",""),n.addEventListener("click",e.onClick)}},{key:"onClick",value:function(e){var t=e.currentTarget,n=Object(r.c)(t,"mdw-ripple__inner");if(n){if(!e.pointerType&&!e.detail)return n.style.removeProperty("left"),void n.style.removeProperty("top");n.style.setProperty("left","".concat(e.offsetX,"px")),n.style.setProperty("top","".concat(e.offsetY,"px"))}}},{key:"detach",value:function(t){var n=Object(r.c)(t,"mdw-ripple");n&&t.removeChild(n),t.removeAttribute("mdw-ripple"),t.removeEventListener("click",e.onClick)}}]),e}()},33:function(e,t,n){n(84),e.exports=n(34)},34:function(e,t,n){e.exports=n.p+"dialog.html"},4:function(e,t,n){"use strict";function r(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e.tagName.toLowerCase(),o=[],i=0;i<e.attributes.length;i+=1){var a=e.attributes.item(i);a.value.length?o.push("".concat(a.name,'="').concat(a.value,'"')):o.push(a.name)}o.sort();for(var c=[n,o.join(" ")],u="<".concat(c.filter(function(e){return e}).join(" ").trim(),">"),l="</".concat(n,">"),d=[u],s=[],m=!0,f=0;f<e.childNodes.length;f+=1){var v=e.childNodes.item(f),b=void 0;v instanceof HTMLElement?(b=r(v," ".concat(t))).trim()&&(m=!1):v.nodeValue&&(b=" ".concat(v.nodeValue)),b&&b.trim()&&s.push(b)}return m?t+d.join("")+s.join("").trim()+l:(s.filter(function(e){return e.trim()}).forEach(function(e){return d.push(e)}),d.push(t+l),t+d.join("\n"))}function o(e,t,n){var r;r=e instanceof Element?[r]:e;for(var o=0;o<r.length;o+=1)r[o].addEventListener(t,n)}function i(e){for(var t=0;t<e.childNodes.length;t+=1){var n=e.childNodes[t];if(n.nodeType===Node.TEXT_NODE)return n}var r=document.createTextNode("");return e.appendChild(r),r}function a(e,t){for(var n=document.createElement(t),r=e.attributes.length-1;r>=0;r-=1){var o=e.attributes.item(r);n.attributes.setNamedItem(o.cloneNode())}for(;e.firstChild;)n.appendChild(e.firstChild);return e.parentElement.replaceChild(n,e),n}n.d(t,"c",function(){return r}),n.d(t,"a",function(){return o}),n.d(t,"d",function(){return i}),n.d(t,"b",function(){return a})},5:function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(3);function o(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){n&&o(e,n)}(e,0,[{key:"attach",value:function(t){t.setAttribute("mdw-js",""),t.hasAttribute("mdw-icon")||r.a.attach(t),t instanceof HTMLButtonElement==0&&t instanceof HTMLInputElement==0&&t.addEventListener("keydown",e.onKeyDown)}},{key:"detach",value:function(t){t.removeEventListener("keydown",e.onKeyDown),t.removeAttribute("mdw-js"),r.a.detach(t)}},{key:"onKeyDown",value:function(e){if("Enter"===e.key||"Spacebar"===e.key||" "===e.key){var t=e.currentTarget;if(t){e.stopPropagation(),e.preventDefault();var n=document.createEvent("Event");n.initEvent("click",!0,!0),t.dispatchEvent(n)}}}}]),e}()},84:function(e,t,n){"use strict";n.r(t);var r=n(5),o=n(1);function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var c=[],u=function(){function e(){a(this,e)}return function(e,t,n){n&&i(e,n)}(e,0,[{key:"attach",value:function(t){var n=Object(o.c)(t,"mdw-dialog__close");n||((n=document.createElement("div")).classList.add("mdw-dialog__close"),t.firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.addEventListener("click",e.onCancelClick);var i=Object(o.c)(t,"mdw-dialog__popup");i.addEventListener("keydown",e.onKeyDown);for(var a=i.querySelectorAll(".mdw-dialog__button-area .mdw-button"),c=!1,u=!1,l=0;l<a.length;l+=1){var d=a.item(l);r.a.attach(d),d.hasAttribute("mdw-custom")?d.addEventListener("click",e.onCustomButtonClick):c?u?d.addEventListener("click",e.onCustomButtonClick):(d.addEventListener("click",e.onCancelClick),u=!0):(d.addEventListener("click",e.onConfirmClick),c=!0)}}},{key:"detach",value:function(t){var n=Object(o.c)(t,"mdw-dialog__close");n&&n.removeEventListener("click",e.onCancelClick),t.removeAttribute("mdw-js"),t.removeAttribute("mdw-show"),t.removeAttribute("mdw-hide");var i=t.getElementsByClassName("mdw-dialog__popup")[0];i&&(i.removeEventListener("keydown",e.onKeyDown),i.style.removeProperty("transform-origin"),i.hasAttribute("style")&&!i.getAttribute("style")&&i.removeAttribute("style"));for(var a=i.querySelectorAll(".mdw-dialog__button-area .mdw-button"),c=0;c<a.length;c+=1){var u=a.item(c);r.a.detach(u),u.removeEventListener("click",e.onConfirmClick),u.removeEventListener("click",e.onCancelClick),u.removeEventListener("click",e.onCustomButtonClick)}}},{key:"onCancelClick",value:function(t){if(t&&t.currentTarget instanceof HTMLAnchorElement&&t.preventDefault(),Object(o.a)(t.currentTarget,e.CANCEL_EVENT)){var n=Object(o.b)(t.currentTarget,"mdw-dialog");e.hide(n)}}},{key:"onConfirmClick",value:function(t){if(t&&t.currentTarget instanceof HTMLAnchorElement&&t.preventDefault(),Object(o.a)(t.currentTarget,e.CONFIRM_EVENT)){var n=Object(o.b)(t.currentTarget,"mdw-dialog");e.hide(n)}}},{key:"onCustomButtonClick",value:function(t){if(t&&t.currentTarget instanceof HTMLAnchorElement&&t.preventDefault(),Object(o.a)(t.currentTarget,e.CUSTOM_EVENT)){var n=Object(o.b)(t.currentTarget,"mdw-dialog");e.hide(n)}}},{key:"onKeyDown",value:function(t){"Tab"!==t.key?"Escape"!==t.key&&"Esc"!==t.key||e.onEscapeKeyDown(t):e.handleTabKeyPress(t)}},{key:"onEscapeKeyDown",value:function(t){t.stopPropagation(),t.preventDefault();var n=Object(o.b)(t.currentTarget,"mdw-dialog");e.cancel(n)}},{key:"onPopState",value:function(t){if(t.state){var n=c[c.length-1];if(n&&n.previousState&&(n.previousState===t.state||Object.keys(t.state).every(function(e){return t.state[e]===n.previousState[e]})))if(Object(o.a)(n.element,e.CANCEL_EVENT))e.hide(n.element);else{var r=e.getTitleText(n.element);window.history.pushState(n.state,r)}}}},{key:"cancel",value:function(t){Object(o.a)(t,e.CANCEL_EVENT)&&e.hide(t)}},{key:"confirm",value:function(t){Object(o.a)(t,e.CONFIRM_EVENT)&&e.hide(t)}},{key:"getTitleText",value:function(e){var t="Dialog",n=e.getElementsByClassName("mdw-dialog__title")[0];if(n)t=n.textContent;else{var r=e.getElementsByClassName("mdw-dialog__body")[0];r&&(t=r.textContent)}return t}},{key:"hide",value:function(t){if(t.hasAttribute("mdw-hide"))return!1;if(!Object(o.a)(t,e.DISMISS_EVENT))return!1;t.setAttribute("mdw-hide","");var n=-1;if(c.some(function(e,r){return e.element===t&&(n=r,!0)}),-1!==n){var r=c[n];r.previousFocus&&Object(o.b)(document.activeElement,"mdw-dialog")===t&&r.previousFocus.focus(),c.splice(n,1),r.state&&window.history&&window.history.state&&r.state.hash===window.history.state.hash&&window.history.back()}return c.length||window.removeEventListener("popstate",e.onPopState),!0}},{key:"show",value:function(t,n){n&&n.currentTarget instanceof HTMLAnchorElement&&n.preventDefault();var r=!1;if(e.updateTransformOrigin(t,n),t.hasAttribute("mdw-hide")&&(t.removeAttribute("mdw-hide"),r=!0),t.hasAttribute("mdw-show")||(t.setAttribute("mdw-show",""),r=!0),r){e.attach(t);var o=document.activeElement,i={hash:Math.random().toString(36).substr(2,16)},u=null;if(window.history&&window.history.pushState){window.history.state||window.history.replaceState({hash:Math.random().toString(36).substr(2,16)},document.title),u=window.history.state;var l=e.getTitleText(t);window.history.pushState(i,l),window.addEventListener("popstate",e.onPopState)}var d=new function e(t,n,r,o){a(this,e),this.element=t,this.previousFocus=n,this.state=r,this.previousState=o}(t,o,i,u);c.push(d);var s=t.querySelector("[mdw-autofocus]");s?s.focus():t.focus()}return r}},{key:"handleTabKeyPress",value:function(e){for(var t=e.currentTarget.querySelectorAll(['button:not(:disabled):not([tabindex="-1"])','[href]:not(:disabled):not([tabindex="-1"])','input:not(:disabled):not([tabindex="-1"])','select:not(:disabled):not([tabindex="-1"])','textarea:not(:disabled):not([tabindex="-1"])','[tabindex]:not([tabindex="-1"])'].join(", ")),n=!1,r=null,o=0;o<t.length;o+=1){var i=t.item(o);if(i===e.target){if(n=!0,e.shiftKey)break}else if(e.shiftKey)r=i;else if(n){r=i;break}}r||(r=e.shiftKey?t[t.length-1]:t[0]),e.stopPropagation(),e.preventDefault(),r&&r.focus()}},{key:"updateTitle",value:function(e,t){var n=e.getElementsByClassName("mdw-dialog__title")[0];if(t){if(!n){(n=document.createElement("div")).classList.add("mdw-dialog__title");var r=e.getElementsByClassName("mdw-dialog__popup")[0];r.insertBefore(n,r.firstChild)}if(t instanceof DocumentFragment){for(;n.lastChild;)n.removeChild(n.lastChild);n.appendChild(t)}else n.textContent=t}else{if(!n)return;n.parentElement.removeChild(n)}}},{key:"updateButtonText",value:function(e,t){for(var n=e.querySelectorAll(".mdw-dialog__button-area .mdw-button"),r=0;r<n.length;r+=1)n.item(r).textContent=t[r]}},{key:"updateBody",value:function(e,t){var n=e.getElementsByClassName("mdw-dialog__body")[0];if(t){if(!n){(n=document.createElement("div")).classList.add("mdw-dialog__body");var r=e.getElementsByClassName("mdw-dialog__title")[0];if(r)r.insertAdjacentElement("afterend",n);else{var o=e.getElementsByClassName("mdw-dialog__popup")[0];o.insertBefore(n,o.firstChild)}}if(t instanceof DocumentFragment){for(;n.lastChild;)n.removeChild(n.lastChild);n.appendChild(t)}else n.textContent=t}else{if(!n)return;n.parentElement.removeChild(n)}}},{key:"create",value:function(t){var n=document.createElement("div");n.classList.add("mdw-dialog");var r=document.createElement("div");if(r.classList.add("mdw-dialog__popup"),n.appendChild(r),e.updateTitle(n,t.title),e.updateBody(n,t.body),t.buttons){var o=document.createElement("div");o.classList.add("mdw-dialog__button-area");var i=0;t.buttons.forEach(function(e){var n=document.createElement("div");n.classList.add("mdw-button"),n.setAttribute("tabindex","0"),n.setAttribute("mdw-theme-color","accent"),t.custom&&n.setAttribute("mdw-custom",""),n.textContent=e,o.appendChild(n),(null==t.autofocus&&0===i||t.autofocus===i||t.autofocus===e)&&n.setAttribute("mdw-autofocus",""),i+=1}),t.stacked&&o.setAttribute("mdw-stacked",""),r.appendChild(o)}return t.parent&&t.parent.appendChild(n),e.attach(n),n}},{key:"updateTransformOrigin",value:function(e,t){var n=Object(o.c)(e,"mdw-dialog__popup");if(n.style.removeProperty("transform-origin"),t){for(var r=0,i=0,a=n;null!=a;)r+=a.offsetLeft-a.scrollLeft,i+=a.offsetTop-a.scrollTop,a=a.offsetParent;var c=t.pageX,u=t.pageY;if(!c&&!u){var l=(t.currentTarget||t.target).getBoundingClientRect();if(!(l.width||l.width||l.x||l.y))return;c=l.x+l.width/2,u=l.y+l.height/2}var d="".concat(c-r,"px"),s="".concat(u-i,"px");n.style.setProperty("transform-origin","".concat(d," ").concat(s))}}},{key:"CANCEL_EVENT",get:function(){return"mdw:dialog-cancel"}},{key:"CONFIRM_EVENT",get:function(){return"mdw:dialog-confirm"}},{key:"CUSTOM_EVENT",get:function(){return"mdw:dialog-custom"}},{key:"DISMISS_EVENT",get:function(){return"mdw:dialog-dismiss"}}]),e}();u.dismiss=u.hide;var l,d=n(2),s=n(4);function m(e){u.show(l,e)}function f(){var e=document.querySelector('input[name="javascript"][value="required"]').checked,t=document.querySelector('input[name="javascript"][value="optional"]').checked,n=e||t;u.detach(l);var r=document.querySelector(".component-sample .mdw-button"),o=document.querySelector(".component-sample .mdw-dialog__close"),i=l.querySelectorAll(".mdw-dialog__button-area .mdw-button");r.removeEventListener("click",m);for(var a=l.querySelectorAll("[tabindex]"),c=0;c<a.length;c+=1)a.item(c).removeAttribute("tabindex");o&&(e||o instanceof HTMLAnchorElement==0)&&(o.parentElement.removeChild(o),o=null),n?i[0].setAttribute("mdw-autofocus",""):i[0].removeAttribute("mdw-autofocus"),e?(l.removeAttribute("id"),r.removeAttribute("href"),r instanceof HTMLAnchorElement&&(r=Object(s.b)(r,"button")),i[0].removeAttribute("href"),i[0]instanceof HTMLAnchorElement&&Object(s.b)(i[0],"button"),i[1].removeAttribute("href"),i[1]instanceof HTMLAnchorElement&&Object(s.b)(i[1],"button")):(l.setAttribute("id","sample-dialog"),r.setAttribute("href","#sample-dialog"),r instanceof HTMLButtonElement&&(r=Object(s.b)(r,"a")),i[0].setAttribute("href","#"),i[0]instanceof HTMLButtonElement&&Object(s.b)(i[0],"a"),i[1].setAttribute("href","#"),i[1]instanceof HTMLButtonElement&&Object(s.b)(i[1],"a"),o||((o=document.createElement("a")).classList.add("mdw-dialog__close"),o.setAttribute("href","#"),l.insertBefore(o,l.firstElementChild)));for(var d=document.getElementsByClassName("component-html")[0],f=[],v=document.querySelector(".component-sample__container").firstElementChild;v;){var b=Object(s.c)(v).trim();b&&f.push(b),v=v.nextElementSibling}d.textContent=f.join("\n"),n&&(u.attach(l),r.addEventListener("click",m)),document.getElementsByClassName("component-js")[0].textContent=["buttonElement.addEventListener('click', (event) => {"," mdw.Dialog.show(dialogElement, event);","});"].join("\n")}!function(){var e=document.querySelector(".js .mdw-button"),t=u.create({title:"Feedback",body:"Are you enjoying this demo?",buttons:["It's great!","Meh."],parent:document.querySelector(".render div")}),n=u.create({body:"placeholder",buttons:["K"],parent:document.querySelector(".render div")});t.addEventListener(u.CONFIRM_EVENT,function(){u.updateBody(n,"Thanks!"),u.updateButtonText(n,["K"]),u.show(n)}),t.addEventListener(u.CANCEL_EVENT,function(){u.updateBody(n,"Oh..."),u.updateButtonText(n,["Sorry!"]),u.show(n)}),e.addEventListener("click",function(e){u.show(t,e)})}(),l=document.querySelector(".component-sample .mdw-dialog"),Object(s.a)(document.querySelectorAll("input[name]"),"change",function(e){var t=e.target,n=t.name,r=t.value,o=t.checked,i=(l.getAttribute("mdw-position"),l.getElementsByClassName("mdw-dialog__button-area")[0]);switch(n){case"stacked-buttons":o?i.setAttribute("mdw-stacked",""):i.removeAttribute("mdw-stacked");break;case"width":switch(r){case"auto":l.removeAttribute("mdw-width-units");break;default:l.setAttribute("mdw-width-units",r)}}f()}),f(),Object(d.d)()}});
|
|
2
|
-
//# sourceMappingURL=dialog.min.js.map
|