easycomments 1.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Gemfile +14 -0
- data/LICENSE +21 -0
- data/README.md +92 -0
- data/Rakefile +49 -0
- data/_config.yml +28 -0
- data/bin/ec +45 -0
- data/config.ru +12 -0
- data/dashboard.rb +57 -0
- data/easycomments.gemspec +22 -0
- data/ec.rb +43 -0
- data/lib/easycomments/ec_configuration.rb +42 -0
- data/lib/easycomments/ec_dashboard_model.rb +70 -0
- data/lib/easycomments/ec_model.rb +47 -0
- data/lib/easycomments.rb +14 -0
- data/public/bower.json +32 -0
- data/public/bower_components/core-a11y-keys/.bower.json +28 -0
- data/public/bower_components/core-a11y-keys/README.md +4 -0
- data/public/bower_components/core-a11y-keys/bower.json +18 -0
- data/public/bower_components/core-a11y-keys/core-a11y-keys.html +335 -0
- data/public/bower_components/core-a11y-keys/demo.html +41 -0
- data/public/bower_components/core-a11y-keys/index.html +22 -0
- data/public/bower_components/core-ajax/.bower.json +22 -0
- data/public/bower_components/core-ajax/README.md +4 -0
- data/public/bower_components/core-ajax/bower.json +11 -0
- data/public/bower_components/core-ajax/core-ajax.html +434 -0
- data/public/bower_components/core-ajax/core-xhr.html +116 -0
- data/public/bower_components/core-ajax/demo-progress.html +65 -0
- data/public/bower_components/core-ajax/demo.html +43 -0
- data/public/bower_components/core-ajax/index.html +22 -0
- data/public/bower_components/core-ajax/metadata.html +23 -0
- data/public/bower_components/core-ajax/test/core-ajax-progress.html +108 -0
- data/public/bower_components/core-ajax/test/core-ajax-race.html +81 -0
- data/public/bower_components/core-ajax/test/core-ajax.html +287 -0
- data/public/bower_components/core-ajax/test/index.html +17 -0
- data/public/bower_components/core-collapse/.bower.json +21 -0
- data/public/bower_components/core-collapse/README.md +4 -0
- data/public/bower_components/core-collapse/bower.json +11 -0
- data/public/bower_components/core-collapse/core-collapse.css +16 -0
- data/public/bower_components/core-collapse/core-collapse.html +298 -0
- data/public/bower_components/core-collapse/demo.html +75 -0
- data/public/bower_components/core-collapse/index.html +22 -0
- data/public/bower_components/core-collapse/test/basic.html +85 -0
- data/public/bower_components/core-collapse/test/index.html +24 -0
- data/public/bower_components/core-component-page/.bower.json +19 -0
- data/public/bower_components/core-component-page/README.md +6 -0
- data/public/bower_components/core-component-page/bowager-logo.png +0 -0
- data/public/bower_components/core-component-page/bower.json +9 -0
- data/public/bower_components/core-component-page/core-component-page.html +37 -0
- data/public/bower_components/core-component-page/demo.html +23 -0
- data/public/bower_components/core-component-page/index.html +22 -0
- data/public/bower_components/core-drawer-panel/.bower.json +19 -0
- data/public/bower_components/core-drawer-panel/README.md +4 -0
- data/public/bower_components/core-drawer-panel/bower.json +9 -0
- data/public/bower_components/core-drawer-panel/core-drawer-panel.css +160 -0
- data/public/bower_components/core-drawer-panel/core-drawer-panel.html +418 -0
- data/public/bower_components/core-drawer-panel/demo.html +68 -0
- data/public/bower_components/core-drawer-panel/index.html +22 -0
- data/public/bower_components/core-drawer-panel/metadata.html +37 -0
- data/public/bower_components/core-focusable/.bower.json +18 -0
- data/public/bower_components/core-focusable/README.md +6 -0
- data/public/bower_components/core-focusable/bower.json +8 -0
- data/public/bower_components/core-focusable/core-focusable.html +4 -0
- data/public/bower_components/core-focusable/core-focusable.js +134 -0
- data/public/bower_components/core-focusable/demo.html +109 -0
- data/public/bower_components/core-focusable/polymer-mixin.js +35 -0
- data/public/bower_components/core-header-panel/.bower.json +18 -0
- data/public/bower_components/core-header-panel/README.md +4 -0
- data/public/bower_components/core-header-panel/bower.json +8 -0
- data/public/bower_components/core-header-panel/core-header-panel.css +78 -0
- data/public/bower_components/core-header-panel/core-header-panel.html +277 -0
- data/public/bower_components/core-header-panel/demo.html +100 -0
- data/public/bower_components/core-header-panel/index.html +23 -0
- data/public/bower_components/core-header-panel/metadata.html +37 -0
- data/public/bower_components/core-icon/.bower.json +19 -0
- data/public/bower_components/core-icon/README.md +4 -0
- data/public/bower_components/core-icon/bower.json +9 -0
- data/public/bower_components/core-icon/core-icon.css +16 -0
- data/public/bower_components/core-icon/core-icon.html +201 -0
- data/public/bower_components/core-icon/demo.html +44 -0
- data/public/bower_components/core-icon/index.html +22 -0
- data/public/bower_components/core-icon/metadata.html +21 -0
- data/public/bower_components/core-icon-button/.bower.json +18 -0
- data/public/bower_components/core-icon-button/README.md +4 -0
- data/public/bower_components/core-icon-button/bower.json +8 -0
- data/public/bower_components/core-icon-button/core-icon-button.css +75 -0
- data/public/bower_components/core-icon-button/core-icon-button.html +81 -0
- data/public/bower_components/core-icon-button/demo.html +35 -0
- data/public/bower_components/core-icon-button/index.html +22 -0
- data/public/bower_components/core-icon-button/metadata.html +20 -0
- data/public/bower_components/core-icons/.bower.json +24 -0
- data/public/bower_components/core-icons/.gitignore +2 -0
- data/public/bower_components/core-icons/README.md +8 -0
- data/public/bower_components/core-icons/av-icons.html +65 -0
- data/public/bower_components/core-icons/bower.json +14 -0
- data/public/bower_components/core-icons/communication-icons.html +54 -0
- data/public/bower_components/core-icons/core-icons.html +278 -0
- data/public/bower_components/core-icons/demo.html +98 -0
- data/public/bower_components/core-icons/device-icons.html +90 -0
- data/public/bower_components/core-icons/editor-icons.html +67 -0
- data/public/bower_components/core-icons/hardware-icons.html +56 -0
- data/public/bower_components/core-icons/image-icons.html +152 -0
- data/public/bower_components/core-icons/index.html +22 -0
- data/public/bower_components/core-icons/maps-icons.html +70 -0
- data/public/bower_components/core-icons/notification-icons.html +49 -0
- data/public/bower_components/core-icons/social-icons.html +39 -0
- data/public/bower_components/core-iconset/.bower.json +20 -0
- data/public/bower_components/core-iconset/README.md +4 -0
- data/public/bower_components/core-iconset/bower.json +10 -0
- data/public/bower_components/core-iconset/core-iconset.html +241 -0
- data/public/bower_components/core-iconset/demo.html +62 -0
- data/public/bower_components/core-iconset/index.html +22 -0
- data/public/bower_components/core-iconset/my-icons-big.png +0 -0
- data/public/bower_components/core-iconset/my-icons.png +0 -0
- data/public/bower_components/core-iconset-svg/.bower.json +19 -0
- data/public/bower_components/core-iconset-svg/README.md +4 -0
- data/public/bower_components/core-iconset-svg/bower.json +9 -0
- data/public/bower_components/core-iconset-svg/core-iconset-svg.html +168 -0
- data/public/bower_components/core-iconset-svg/demo.html +66 -0
- data/public/bower_components/core-iconset-svg/index.html +22 -0
- data/public/bower_components/core-iconset-svg/svg-sample-icons.html +68 -0
- data/public/bower_components/core-input/.bower.json +20 -0
- data/public/bower_components/core-input/README.md +2 -0
- data/public/bower_components/core-input/bower.json +10 -0
- data/public/bower_components/core-input/core-input.css +41 -0
- data/public/bower_components/core-input/core-input.html +148 -0
- data/public/bower_components/core-input/demo.html +62 -0
- data/public/bower_components/core-input/index.html +22 -0
- data/public/bower_components/core-input/metadata.html +23 -0
- data/public/bower_components/core-input/test/a11y.html +55 -0
- data/public/bower_components/core-input/test/basic.html +60 -0
- data/public/bower_components/core-input/test/index.html +25 -0
- data/public/bower_components/core-item/.bower.json +19 -0
- data/public/bower_components/core-item/README.md +4 -0
- data/public/bower_components/core-item/bower.json +9 -0
- data/public/bower_components/core-item/core-item.css +45 -0
- data/public/bower_components/core-item/core-item.html +73 -0
- data/public/bower_components/core-item/demo.html +92 -0
- data/public/bower_components/core-item/index.html +22 -0
- data/public/bower_components/core-item/metadata.html +24 -0
- data/public/bower_components/core-media-query/.bower.json +18 -0
- data/public/bower_components/core-media-query/README.md +4 -0
- data/public/bower_components/core-media-query/bower.json +8 -0
- data/public/bower_components/core-media-query/core-media-query.html +87 -0
- data/public/bower_components/core-media-query/demo.html +44 -0
- data/public/bower_components/core-media-query/index.html +22 -0
- data/public/bower_components/core-menu/.bower.json +22 -0
- data/public/bower_components/core-menu/README.md +4 -0
- data/public/bower_components/core-menu/bower.json +11 -0
- data/public/bower_components/core-menu/core-menu.css +18 -0
- data/public/bower_components/core-menu/core-menu.html +73 -0
- data/public/bower_components/core-menu/core-submenu.css +43 -0
- data/public/bower_components/core-menu/core-submenu.html +126 -0
- data/public/bower_components/core-menu/demo.html +101 -0
- data/public/bower_components/core-menu/index.html +22 -0
- data/public/bower_components/core-menu/metadata.html +62 -0
- data/public/bower_components/core-meta/.bower.json +18 -0
- data/public/bower_components/core-meta/README.md +4 -0
- data/public/bower_components/core-meta/bower.json +8 -0
- data/public/bower_components/core-meta/core-meta.html +145 -0
- data/public/bower_components/core-meta/demo.html +58 -0
- data/public/bower_components/core-meta/index.html +22 -0
- data/public/bower_components/core-overlay/.bower.json +20 -0
- data/public/bower_components/core-overlay/README.md +4 -0
- data/public/bower_components/core-overlay/bower.json +10 -0
- data/public/bower_components/core-overlay/core-key-helper.html +22 -0
- data/public/bower_components/core-overlay/core-overlay-layer.html +116 -0
- data/public/bower_components/core-overlay/core-overlay.html +776 -0
- data/public/bower_components/core-overlay/demo.html +155 -0
- data/public/bower_components/core-overlay/gulpfile.js +2 -0
- data/public/bower_components/core-overlay/index.html +22 -0
- data/public/bower_components/core-overlay/tests/html/core-overlay-basic.html +127 -0
- data/public/bower_components/core-overlay/tests/html/core-overlay-positioning-margin.html +153 -0
- data/public/bower_components/core-overlay/tests/html/core-overlay-positioning.html +167 -0
- data/public/bower_components/core-overlay/tests/html/core-overlay-quick-close.html +45 -0
- data/public/bower_components/core-overlay/tests/html/core-overlay-scroll.html +130 -0
- data/public/bower_components/core-overlay/tests/js/htmltests.js +7 -0
- data/public/bower_components/core-overlay/tests/runner.html +14 -0
- data/public/bower_components/core-overlay/tests/tests.json +6 -0
- data/public/bower_components/core-pages/.bower.json +19 -0
- data/public/bower_components/core-pages/README.md +4 -0
- data/public/bower_components/core-pages/bower.json +8 -0
- data/public/bower_components/core-pages/core-pages.css +30 -0
- data/public/bower_components/core-pages/core-pages.html +44 -0
- data/public/bower_components/core-pages/demo.html +136 -0
- data/public/bower_components/core-pages/index.html +22 -0
- data/public/bower_components/core-pages/metadata.html +25 -0
- data/public/bower_components/core-resizable/.bower.json +18 -0
- data/public/bower_components/core-resizable/README.md +4 -0
- data/public/bower_components/core-resizable/bower.json +8 -0
- data/public/bower_components/core-resizable/core-resizable.html +248 -0
- data/public/bower_components/core-resizable/index.html +22 -0
- data/public/bower_components/core-resizable/test/basic.html +504 -0
- data/public/bower_components/core-resizable/test/index.html +16 -0
- data/public/bower_components/core-resizable/test/test-elements.html +66 -0
- data/public/bower_components/core-scaffold/.bower.json +22 -0
- data/public/bower_components/core-scaffold/README.md +4 -0
- data/public/bower_components/core-scaffold/bower.json +11 -0
- data/public/bower_components/core-scaffold/core-scaffold.html +252 -0
- data/public/bower_components/core-scaffold/demo.html +82 -0
- data/public/bower_components/core-scaffold/index.html +22 -0
- data/public/bower_components/core-scaffold/metadata.html +52 -0
- data/public/bower_components/core-selection/.bower.json +21 -0
- data/public/bower_components/core-selection/README.md +4 -0
- data/public/bower_components/core-selection/bower.json +11 -0
- data/public/bower_components/core-selection/core-selection.html +149 -0
- data/public/bower_components/core-selection/demo.html +59 -0
- data/public/bower_components/core-selection/index.html +22 -0
- data/public/bower_components/core-selection/test/basic.html +62 -0
- data/public/bower_components/core-selection/test/index.html +25 -0
- data/public/bower_components/core-selection/test/multi.html +63 -0
- data/public/bower_components/core-selector/.bower.json +22 -0
- data/public/bower_components/core-selector/.gitignore +2 -0
- data/public/bower_components/core-selector/README.md +4 -0
- data/public/bower_components/core-selector/bower.json +12 -0
- data/public/bower_components/core-selector/core-selector.html +548 -0
- data/public/bower_components/core-selector/demo.html +106 -0
- data/public/bower_components/core-selector/index.html +22 -0
- data/public/bower_components/core-selector/metadata.html +20 -0
- data/public/bower_components/core-selector/test/activate-event.html +63 -0
- data/public/bower_components/core-selector/test/basic.html +126 -0
- data/public/bower_components/core-selector/test/content.html +101 -0
- data/public/bower_components/core-selector/test/index.html +30 -0
- data/public/bower_components/core-selector/test/multi.html +115 -0
- data/public/bower_components/core-selector/test/next-previous.html +113 -0
- data/public/bower_components/core-selector/test/selected-attr-prop.html +62 -0
- data/public/bower_components/core-selector/test/template-repeat.html +63 -0
- data/public/bower_components/core-style/.bower.json +18 -0
- data/public/bower_components/core-style/README.md +4 -0
- data/public/bower_components/core-style/bower.json +8 -0
- data/public/bower_components/core-style/core-style.html +387 -0
- data/public/bower_components/core-style/demo.html +58 -0
- data/public/bower_components/core-style/elements.html +55 -0
- data/public/bower_components/core-style/index.html +22 -0
- data/public/bower_components/core-style/my-theme.html +73 -0
- data/public/bower_components/core-toolbar/.bower.json +19 -0
- data/public/bower_components/core-toolbar/README.md +4 -0
- data/public/bower_components/core-toolbar/bower.json +9 -0
- data/public/bower_components/core-toolbar/core-toolbar.css +117 -0
- data/public/bower_components/core-toolbar/core-toolbar.html +155 -0
- data/public/bower_components/core-toolbar/demo.html +119 -0
- data/public/bower_components/core-toolbar/index.html +22 -0
- data/public/bower_components/core-toolbar/metadata.html +28 -0
- data/public/bower_components/core-toolbar/test/basic.html +86 -0
- data/public/bower_components/core-toolbar/test/index.html +24 -0
- data/public/bower_components/core-transition/.bower.json +19 -0
- data/public/bower_components/core-transition/README.md +2 -0
- data/public/bower_components/core-transition/bower.json +9 -0
- data/public/bower_components/core-transition/core-transition-css.html +220 -0
- data/public/bower_components/core-transition/core-transition-overlay.css +46 -0
- data/public/bower_components/core-transition/core-transition.html +140 -0
- data/public/bower_components/core-transition/demo.html +87 -0
- data/public/bower_components/core-transition/index.html +22 -0
- data/public/bower_components/font-roboto/.bower.json +15 -0
- data/public/bower_components/font-roboto/roboto.html +9 -0
- data/public/bower_components/paper-button/.bower.json +27 -0
- data/public/bower_components/paper-button/README.md +4 -0
- data/public/bower_components/paper-button/bower.json +16 -0
- data/public/bower_components/paper-button/demo.html +157 -0
- data/public/bower_components/paper-button/index.html +22 -0
- data/public/bower_components/paper-button/metadata.html +17 -0
- data/public/bower_components/paper-button/paper-button-base.html +164 -0
- data/public/bower_components/paper-button/paper-button.html +197 -0
- data/public/bower_components/paper-button/test/index.html +24 -0
- data/public/bower_components/paper-button/test/paper-button.html +112 -0
- data/public/bower_components/paper-icon-button/.bower.json +25 -0
- data/public/bower_components/paper-icon-button/README.md +4 -0
- data/public/bower_components/paper-icon-button/bower.json +15 -0
- data/public/bower_components/paper-icon-button/demo.html +150 -0
- data/public/bower_components/paper-icon-button/index.html +22 -0
- data/public/bower_components/paper-icon-button/metadata.html +21 -0
- data/public/bower_components/paper-icon-button/paper-icon-button.html +154 -0
- data/public/bower_components/paper-icon-button/test/a11y.html +68 -0
- data/public/bower_components/paper-icon-button/test/basic.html +50 -0
- data/public/bower_components/paper-icon-button/test/index.html +25 -0
- data/public/bower_components/paper-input/.bower.json +26 -0
- data/public/bower_components/paper-input/.gitignore +1 -0
- data/public/bower_components/paper-input/README.md +4 -0
- data/public/bower_components/paper-input/bower.json +15 -0
- data/public/bower_components/paper-input/demo.html +236 -0
- data/public/bower_components/paper-input/index.html +22 -0
- data/public/bower_components/paper-input/metadata.html +20 -0
- data/public/bower_components/paper-input/paper-autogrow-textarea.html +162 -0
- data/public/bower_components/paper-input/paper-char-counter.html +121 -0
- data/public/bower_components/paper-input/paper-input-decorator.css +132 -0
- data/public/bower_components/paper-input/paper-input-decorator.html +547 -0
- data/public/bower_components/paper-input/paper-input.html +145 -0
- data/public/bower_components/paper-input/test/index.html +26 -0
- data/public/bower_components/paper-input/test/paper-autogrow-textarea.html +146 -0
- data/public/bower_components/paper-input/test/paper-input-decorator.html +240 -0
- data/public/bower_components/paper-input/test/paper-input.html +68 -0
- data/public/bower_components/paper-input/test/util.js +15 -0
- data/public/bower_components/paper-radio-button/.bower.json +22 -0
- data/public/bower_components/paper-radio-button/README.md +4 -0
- data/public/bower_components/paper-radio-button/bower.json +12 -0
- data/public/bower_components/paper-radio-button/demo.html +84 -0
- data/public/bower_components/paper-radio-button/index.html +22 -0
- data/public/bower_components/paper-radio-button/metadata.html +17 -0
- data/public/bower_components/paper-radio-button/paper-radio-button.css +108 -0
- data/public/bower_components/paper-radio-button/paper-radio-button.html +166 -0
- data/public/bower_components/paper-ripple/.bower.json +23 -0
- data/public/bower_components/paper-ripple/README.md +4 -0
- data/public/bower_components/paper-ripple/bower.json +13 -0
- data/public/bower_components/paper-ripple/demo.html +414 -0
- data/public/bower_components/paper-ripple/index.html +22 -0
- data/public/bower_components/paper-ripple/metadata.html +20 -0
- data/public/bower_components/paper-ripple/paper-ripple.html +477 -0
- data/public/bower_components/paper-ripple/test/index.html +24 -0
- data/public/bower_components/paper-ripple/test/position.html +109 -0
- data/public/bower_components/paper-shadow/.bower.json +22 -0
- data/public/bower_components/paper-shadow/README.md +4 -0
- data/public/bower_components/paper-shadow/bower.json +11 -0
- data/public/bower_components/paper-shadow/demo.html +134 -0
- data/public/bower_components/paper-shadow/index.html +22 -0
- data/public/bower_components/paper-shadow/metadata.html +17 -0
- data/public/bower_components/paper-shadow/paper-shadow.css +66 -0
- data/public/bower_components/paper-shadow/paper-shadow.html +86 -0
- data/public/bower_components/paper-shadow/test/basic.html +62 -0
- data/public/bower_components/paper-shadow/test/index.html +24 -0
- data/public/bower_components/paper-tabs/.bower.json +26 -0
- data/public/bower_components/paper-tabs/README.md +4 -0
- data/public/bower_components/paper-tabs/bower.json +15 -0
- data/public/bower_components/paper-tabs/demo.html +242 -0
- data/public/bower_components/paper-tabs/index.html +22 -0
- data/public/bower_components/paper-tabs/metadata.html +58 -0
- data/public/bower_components/paper-tabs/paper-tab.css +59 -0
- data/public/bower_components/paper-tabs/paper-tab.html +82 -0
- data/public/bower_components/paper-tabs/paper-tabs.css +80 -0
- data/public/bower_components/paper-tabs/paper-tabs.html +353 -0
- data/public/bower_components/paper-toast/.bower.json +22 -0
- data/public/bower_components/paper-toast/README.md +4 -0
- data/public/bower_components/paper-toast/bower.json +11 -0
- data/public/bower_components/paper-toast/demo.html +63 -0
- data/public/bower_components/paper-toast/index.html +22 -0
- data/public/bower_components/paper-toast/metadata.html +20 -0
- data/public/bower_components/paper-toast/paper-toast.css +80 -0
- data/public/bower_components/paper-toast/paper-toast.html +296 -0
- data/public/bower_components/paper-toggle-button/.bower.json +20 -0
- data/public/bower_components/paper-toggle-button/README.md +4 -0
- data/public/bower_components/paper-toggle-button/bower.json +9 -0
- data/public/bower_components/paper-toggle-button/demo.html +97 -0
- data/public/bower_components/paper-toggle-button/index.html +22 -0
- data/public/bower_components/paper-toggle-button/metadata.html +17 -0
- data/public/bower_components/paper-toggle-button/paper-toggle-button.css +95 -0
- data/public/bower_components/paper-toggle-button/paper-toggle-button.html +179 -0
- data/public/bower_components/polymer/.bower.json +32 -0
- data/public/bower_components/polymer/README.md +21 -0
- data/public/bower_components/polymer/bower.json +23 -0
- data/public/bower_components/polymer/build.log +26 -0
- data/public/bower_components/polymer/layout.html +286 -0
- data/public/bower_components/polymer/polymer.html +12 -0
- data/public/bower_components/polymer/polymer.js +11859 -0
- data/public/bower_components/polymer/polymer.min.js +14 -0
- data/public/bower_components/webcomponentsjs/.bower.json +23 -0
- data/public/bower_components/webcomponentsjs/CustomElements.js +634 -0
- data/public/bower_components/webcomponentsjs/CustomElements.min.js +11 -0
- data/public/bower_components/webcomponentsjs/HTMLImports.js +764 -0
- data/public/bower_components/webcomponentsjs/HTMLImports.min.js +11 -0
- data/public/bower_components/webcomponentsjs/README.md +73 -0
- data/public/bower_components/webcomponentsjs/ShadowDOM.js +4277 -0
- data/public/bower_components/webcomponentsjs/ShadowDOM.min.js +13 -0
- data/public/bower_components/webcomponentsjs/bower.json +14 -0
- data/public/bower_components/webcomponentsjs/build.log +31 -0
- data/public/bower_components/webcomponentsjs/package.json +31 -0
- data/public/bower_components/webcomponentsjs/webcomponents-lite.js +1728 -0
- data/public/bower_components/webcomponentsjs/webcomponents-lite.min.js +11 -0
- data/public/bower_components/webcomponentsjs/webcomponents.js +6114 -0
- data/public/bower_components/webcomponentsjs/webcomponents.min.js +14 -0
- data/public/css/main.css +41 -0
- data/public/elements/ec-dashboard/ec-dashboard.html +269 -0
- data/public/polymer-loader.html +24 -0
- data/public/polymer-loader.vulcanized.html +19 -0
- data/spec/ec/ec_dashboard_spec.rb +78 -0
- data/spec/ec/ec_spec.rb +78 -0
- data/spec/spec_helper.rb +27 -0
- data/views/index.html +88 -0
- metadata +464 -0
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@license
|
|
3
|
+
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
|
4
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
|
5
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
|
6
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
|
7
|
+
Code distributed by Google as part of the polymer project is also
|
|
8
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
`core-a11y-keys` provides a normalized interface for processing keyboard commands that pertain to [WAI-ARIA best
|
|
13
|
+
practices](http://www.w3.org/TR/wai-aria-practices/#kbd_general_binding). The element takes care of browser differences
|
|
14
|
+
with respect to Keyboard events and uses an expressive syntax to filter key presses.
|
|
15
|
+
|
|
16
|
+
Use the `keys` attribute to express what combination of keys will trigger the event to fire.
|
|
17
|
+
|
|
18
|
+
Use the `target` attribute to set up event handlers on a specific node.
|
|
19
|
+
The `keys-pressed` event will fire when one of the key combinations set with the `keys` attribute is pressed.
|
|
20
|
+
|
|
21
|
+
Example:
|
|
22
|
+
|
|
23
|
+
This element will call `arrowHandler` on all arrow keys:
|
|
24
|
+
|
|
25
|
+
<core-a11y-keys target="{{}}" keys="up down left right" on-keys-pressed="{{arrowHandler}}"></core-a11y-keys>
|
|
26
|
+
|
|
27
|
+
Keys Syntax:
|
|
28
|
+
|
|
29
|
+
The `keys` attribute can accepts a space seprated, `+` concatenated set of modifier keys and some common keyboard keys.
|
|
30
|
+
|
|
31
|
+
The common keys are `a-z`, `0-9` (top row and number pad), `*` (shift 8 and number pad), `F1-F12`, `Page Up`, `Page
|
|
32
|
+
Down`, `Left Arrow`, `Right Arrow`, `Down Arrow`, `Up Arrow`, `Home`, `End`, `Escape`, `Space`, `Tab`, and `Enter` keys.
|
|
33
|
+
|
|
34
|
+
The modifier keys are `Shift`, `Control`, and `Alt`.
|
|
35
|
+
|
|
36
|
+
All keys are expected to be lowercase and shortened:
|
|
37
|
+
`Left Arrow` is `left`, `Page Down` is `pagedown`, `Control` is `ctrl`, `F1` is `f1`, `Escape` is `esc` etc.
|
|
38
|
+
|
|
39
|
+
Keys Syntax Example:
|
|
40
|
+
|
|
41
|
+
Given the `keys` attribute value "ctrl+shift+f7 up pagedown esc space alt+m", the `<core-a11y-keys>` element will send
|
|
42
|
+
the `keys-pressed` event if any of the follow key combos are pressed: Control and Shift and F7 keys, Up Arrow key, Page
|
|
43
|
+
Down key, Escape key, Space key, Alt and M key.
|
|
44
|
+
|
|
45
|
+
Slider Example:
|
|
46
|
+
|
|
47
|
+
The following is an example of the set of keys that fulfil the WAI-ARIA "slider" role [best
|
|
48
|
+
practices](http://www.w3.org/TR/wai-aria-practices/#slider):
|
|
49
|
+
|
|
50
|
+
<core-a11y-keys target="{{}}" keys="left pagedown down" on-keys-pressed="{{decrement}}"></core-a11y-keys>
|
|
51
|
+
<core-a11y-keys target="{{}}" keys="right pageup up" on-keys-pressed="{{increment}}"></core-a11y-keys>
|
|
52
|
+
<core-a11y-keys target="{{}}" keys="home" on-keys-pressed="{{setMin}}"></core-a11y-keys>
|
|
53
|
+
<core-a11y-keys target="{{}}" keys="end" on-keys-pressed="{{setMax}}"></core-a11y-keys>
|
|
54
|
+
|
|
55
|
+
The `increment` function will move the slider a set amount toward the maximum value.
|
|
56
|
+
The `decrement` function will move the slider a set amount toward the minimum value.
|
|
57
|
+
The `setMin` function will move the slider to the minimum value.
|
|
58
|
+
The `setMax` function will move the slider to the maximum value.
|
|
59
|
+
|
|
60
|
+
Keys Syntax Grammar:
|
|
61
|
+
|
|
62
|
+
[EBNF](http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form) Grammar of the `keys` attribute.
|
|
63
|
+
|
|
64
|
+
modifier = "shift" | "ctrl" | "alt";
|
|
65
|
+
ascii = ? /[a-z0-9]/ ? ;
|
|
66
|
+
fnkey = ? f1 through f12 ? ;
|
|
67
|
+
arrow = "up" | "down" | "left" | "right" ;
|
|
68
|
+
key = "tab" | "esc" | "space" | "*" | "pageup" | "pagedown" | "home" | "end" | arrow | ascii | fnkey ;
|
|
69
|
+
keycombo = { modifier, "+" }, key ;
|
|
70
|
+
keys = keycombo, { " ", keycombo } ;
|
|
71
|
+
|
|
72
|
+
@group Core Elements
|
|
73
|
+
@element core-a11y-keys
|
|
74
|
+
@homepage github.io
|
|
75
|
+
-->
|
|
76
|
+
|
|
77
|
+
<link rel="import" href="../polymer/polymer.html">
|
|
78
|
+
|
|
79
|
+
<style shim-shadowdom>
|
|
80
|
+
html /deep/ core-a11y-keys {
|
|
81
|
+
display: none;
|
|
82
|
+
}
|
|
83
|
+
</style>
|
|
84
|
+
|
|
85
|
+
<polymer-element name="core-a11y-keys">
|
|
86
|
+
<script>
|
|
87
|
+
(function() {
|
|
88
|
+
/*
|
|
89
|
+
* Chrome uses an older version of DOM Level 3 Keyboard Events
|
|
90
|
+
*
|
|
91
|
+
* Most keys are labeled as text, but some are Unicode codepoints.
|
|
92
|
+
* Values taken from: http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/keyset.html#KeySet-Set
|
|
93
|
+
*/
|
|
94
|
+
var KEY_IDENTIFIER = {
|
|
95
|
+
'U+0009': 'tab',
|
|
96
|
+
'U+001B': 'esc',
|
|
97
|
+
'U+0020': 'space',
|
|
98
|
+
'U+002A': '*',
|
|
99
|
+
'U+0030': '0',
|
|
100
|
+
'U+0031': '1',
|
|
101
|
+
'U+0032': '2',
|
|
102
|
+
'U+0033': '3',
|
|
103
|
+
'U+0034': '4',
|
|
104
|
+
'U+0035': '5',
|
|
105
|
+
'U+0036': '6',
|
|
106
|
+
'U+0037': '7',
|
|
107
|
+
'U+0038': '8',
|
|
108
|
+
'U+0039': '9',
|
|
109
|
+
'U+0041': 'a',
|
|
110
|
+
'U+0042': 'b',
|
|
111
|
+
'U+0043': 'c',
|
|
112
|
+
'U+0044': 'd',
|
|
113
|
+
'U+0045': 'e',
|
|
114
|
+
'U+0046': 'f',
|
|
115
|
+
'U+0047': 'g',
|
|
116
|
+
'U+0048': 'h',
|
|
117
|
+
'U+0049': 'i',
|
|
118
|
+
'U+004A': 'j',
|
|
119
|
+
'U+004B': 'k',
|
|
120
|
+
'U+004C': 'l',
|
|
121
|
+
'U+004D': 'm',
|
|
122
|
+
'U+004E': 'n',
|
|
123
|
+
'U+004F': 'o',
|
|
124
|
+
'U+0050': 'p',
|
|
125
|
+
'U+0051': 'q',
|
|
126
|
+
'U+0052': 'r',
|
|
127
|
+
'U+0053': 's',
|
|
128
|
+
'U+0054': 't',
|
|
129
|
+
'U+0055': 'u',
|
|
130
|
+
'U+0056': 'v',
|
|
131
|
+
'U+0057': 'w',
|
|
132
|
+
'U+0058': 'x',
|
|
133
|
+
'U+0059': 'y',
|
|
134
|
+
'U+005A': 'z',
|
|
135
|
+
'U+007F': 'del'
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/*
|
|
139
|
+
* Special table for KeyboardEvent.keyCode.
|
|
140
|
+
* KeyboardEvent.keyIdentifier is better, and KeyBoardEvent.key is even better than that
|
|
141
|
+
*
|
|
142
|
+
* Values from: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode#Value_of_keyCode
|
|
143
|
+
*/
|
|
144
|
+
var KEY_CODE = {
|
|
145
|
+
9: 'tab',
|
|
146
|
+
13: 'enter',
|
|
147
|
+
27: 'esc',
|
|
148
|
+
33: 'pageup',
|
|
149
|
+
34: 'pagedown',
|
|
150
|
+
35: 'end',
|
|
151
|
+
36: 'home',
|
|
152
|
+
32: 'space',
|
|
153
|
+
37: 'left',
|
|
154
|
+
38: 'up',
|
|
155
|
+
39: 'right',
|
|
156
|
+
40: 'down',
|
|
157
|
+
46: 'del',
|
|
158
|
+
106: '*'
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
/*
|
|
162
|
+
* KeyboardEvent.key is mostly represented by printable character made by the keyboard, with unprintable keys labeled
|
|
163
|
+
* nicely.
|
|
164
|
+
*
|
|
165
|
+
* However, on OS X, Alt+char can make a Unicode character that follows an Apple-specific mapping. In this case, we
|
|
166
|
+
* fall back to .keyCode.
|
|
167
|
+
*/
|
|
168
|
+
var KEY_CHAR = /[a-z0-9*]/;
|
|
169
|
+
|
|
170
|
+
function transformKey(key) {
|
|
171
|
+
var validKey = '';
|
|
172
|
+
if (key) {
|
|
173
|
+
var lKey = key.toLowerCase();
|
|
174
|
+
if (lKey.length == 1) {
|
|
175
|
+
if (KEY_CHAR.test(lKey)) {
|
|
176
|
+
validKey = lKey;
|
|
177
|
+
}
|
|
178
|
+
} else if (lKey == 'multiply') {
|
|
179
|
+
// numpad '*' can map to Multiply on IE/Windows
|
|
180
|
+
validKey = '*';
|
|
181
|
+
} else {
|
|
182
|
+
validKey = lKey;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return validKey;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
var IDENT_CHAR = /U\+/;
|
|
189
|
+
function transformKeyIdentifier(keyIdent) {
|
|
190
|
+
var validKey = '';
|
|
191
|
+
if (keyIdent) {
|
|
192
|
+
if (IDENT_CHAR.test(keyIdent)) {
|
|
193
|
+
validKey = KEY_IDENTIFIER[keyIdent];
|
|
194
|
+
} else {
|
|
195
|
+
validKey = keyIdent.toLowerCase();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return validKey;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function transformKeyCode(keyCode) {
|
|
202
|
+
var validKey = '';
|
|
203
|
+
if (Number(keyCode)) {
|
|
204
|
+
if (keyCode >= 65 && keyCode <= 90) {
|
|
205
|
+
// ascii a-z
|
|
206
|
+
// lowercase is 32 offset from uppercase
|
|
207
|
+
validKey = String.fromCharCode(32 + keyCode);
|
|
208
|
+
} else if (keyCode >= 112 && keyCode <= 123) {
|
|
209
|
+
// function keys f1-f12
|
|
210
|
+
validKey = 'f' + (keyCode - 112);
|
|
211
|
+
} else if (keyCode >= 48 && keyCode <= 57) {
|
|
212
|
+
// top 0-9 keys
|
|
213
|
+
validKey = String(48 - keyCode);
|
|
214
|
+
} else if (keyCode >= 96 && keyCode <= 105) {
|
|
215
|
+
// num pad 0-9
|
|
216
|
+
validKey = String(96 - keyCode);
|
|
217
|
+
} else {
|
|
218
|
+
validKey = KEY_CODE[keyCode];
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return validKey;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function keyboardEventToKey(ev) {
|
|
225
|
+
// fall back from .key, to .keyIdentifier, to .keyCode, and then to .detail.key to support artificial keyboard events
|
|
226
|
+
var normalizedKey = transformKey(ev.key) || transformKeyIdentifier(ev.keyIdentifier) || transformKeyCode(ev.keyCode) || transformKey(ev.detail.key) || '';
|
|
227
|
+
return {
|
|
228
|
+
shift: ev.shiftKey,
|
|
229
|
+
ctrl: ev.ctrlKey,
|
|
230
|
+
meta: ev.metaKey,
|
|
231
|
+
alt: ev.altKey,
|
|
232
|
+
key: normalizedKey
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/*
|
|
237
|
+
* Input: ctrl+shift+f7 => {ctrl: true, shift: true, key: 'f7'}
|
|
238
|
+
* ctrl/space => {ctrl: true} || {key: space}
|
|
239
|
+
*/
|
|
240
|
+
function stringToKey(keyCombo) {
|
|
241
|
+
var keys = keyCombo.split('+');
|
|
242
|
+
var keyObj = Object.create(null);
|
|
243
|
+
keys.forEach(function(key) {
|
|
244
|
+
if (key == 'shift') {
|
|
245
|
+
keyObj.shift = true;
|
|
246
|
+
} else if (key == 'ctrl') {
|
|
247
|
+
keyObj.ctrl = true;
|
|
248
|
+
} else if (key == 'alt') {
|
|
249
|
+
keyObj.alt = true;
|
|
250
|
+
} else {
|
|
251
|
+
keyObj.key = key;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
return keyObj;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function keyMatches(a, b) {
|
|
258
|
+
return Boolean(a.alt) == Boolean(b.alt) && Boolean(a.ctrl) == Boolean(b.ctrl) && Boolean(a.shift) == Boolean(b.shift) && a.key === b.key;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Fired when a keycombo in `keys` is pressed.
|
|
263
|
+
*
|
|
264
|
+
* @event keys-pressed
|
|
265
|
+
*/
|
|
266
|
+
function processKeys(ev) {
|
|
267
|
+
var current = keyboardEventToKey(ev);
|
|
268
|
+
for (var i = 0, dk; i < this._desiredKeys.length; i++) {
|
|
269
|
+
dk = this._desiredKeys[i];
|
|
270
|
+
if (keyMatches(dk, current)) {
|
|
271
|
+
ev.preventDefault();
|
|
272
|
+
ev.stopPropagation();
|
|
273
|
+
this.fire('keys-pressed', current, this, false);
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function listen(node, handler) {
|
|
280
|
+
if (node && node.addEventListener) {
|
|
281
|
+
node.addEventListener('keydown', handler);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
function unlisten(node, handler) {
|
|
286
|
+
if (node && node.removeEventListener) {
|
|
287
|
+
node.removeEventListener('keydown', handler);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
Polymer('core-a11y-keys', {
|
|
292
|
+
created: function() {
|
|
293
|
+
this._keyHandler = processKeys.bind(this);
|
|
294
|
+
},
|
|
295
|
+
attached: function() {
|
|
296
|
+
if (!this.target) {
|
|
297
|
+
this.target = this.parentNode;
|
|
298
|
+
}
|
|
299
|
+
listen(this.target, this._keyHandler);
|
|
300
|
+
},
|
|
301
|
+
detached: function() {
|
|
302
|
+
unlisten(this.target, this._keyHandler);
|
|
303
|
+
},
|
|
304
|
+
publish: {
|
|
305
|
+
/**
|
|
306
|
+
* The set of key combinations that will be matched (in keys syntax).
|
|
307
|
+
*
|
|
308
|
+
* @attribute keys
|
|
309
|
+
* @type string
|
|
310
|
+
* @default ''
|
|
311
|
+
*/
|
|
312
|
+
keys: '',
|
|
313
|
+
/**
|
|
314
|
+
* The node that will fire keyboard events.
|
|
315
|
+
* Default to this element's parentNode unless one is assigned
|
|
316
|
+
*
|
|
317
|
+
* @attribute target
|
|
318
|
+
* @type Node
|
|
319
|
+
* @default this.parentNode
|
|
320
|
+
*/
|
|
321
|
+
target: null
|
|
322
|
+
},
|
|
323
|
+
keysChanged: function() {
|
|
324
|
+
// * can have multiple mappings: shift+8, * on numpad or Multiply on numpad
|
|
325
|
+
var normalized = this.keys.replace('*', '* shift+*');
|
|
326
|
+
this._desiredKeys = normalized.toLowerCase().split(' ').map(stringToKey);
|
|
327
|
+
},
|
|
328
|
+
targetChanged: function(oldTarget) {
|
|
329
|
+
unlisten(oldTarget, this._keyHandler);
|
|
330
|
+
listen(this.target, this._keyHandler);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
})();
|
|
334
|
+
</script>
|
|
335
|
+
</polymer-element>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@license
|
|
3
|
+
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
|
4
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
|
5
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
|
6
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
|
7
|
+
Code distributed by Google as part of the polymer project is also
|
|
8
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
|
9
|
+
-->
|
|
10
|
+
<!DOCTYPE html>
|
|
11
|
+
<html lang="en">
|
|
12
|
+
<head>
|
|
13
|
+
<meta charset="UTF-8">
|
|
14
|
+
<title>Core A11y Keys demo</title>
|
|
15
|
+
<script src="../webcomponentsjs/webcomponents.js"></script>
|
|
16
|
+
<link rel="import" href="core-a11y-keys.html">
|
|
17
|
+
<style>
|
|
18
|
+
div {
|
|
19
|
+
height: 100px;
|
|
20
|
+
width: 100px;
|
|
21
|
+
background: gray;
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
24
|
+
</head>
|
|
25
|
+
<body>
|
|
26
|
+
<template is="auto-binding">
|
|
27
|
+
<span>Press any of these keys: {{keys}}</span>
|
|
28
|
+
<core-a11y-keys id="a11y" keys="{{keys}}" on-keys-pressed="{{print}}"></core-a11y-keys>
|
|
29
|
+
<pre id="output"></pre>
|
|
30
|
+
</template>
|
|
31
|
+
<script>
|
|
32
|
+
addEventListener('template-bound', function(ev) {
|
|
33
|
+
ev.target.keys = "* pageup pagedown left right down up shift+a alt+a home end space enter"
|
|
34
|
+
ev.target.print = function(ev) {
|
|
35
|
+
console.log(ev.detail);
|
|
36
|
+
this.$.output.textContent += ev.detail.key + ' pressed!\n';
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
</script>
|
|
40
|
+
</body>
|
|
41
|
+
</html>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<!--
|
|
3
|
+
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
|
4
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE
|
|
5
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS
|
|
6
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
|
|
7
|
+
Code distributed by Google as part of the polymer project is also
|
|
8
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS
|
|
9
|
+
-->
|
|
10
|
+
<html>
|
|
11
|
+
<head>
|
|
12
|
+
|
|
13
|
+
<script src="../webcomponentsjs/webcomponents.js"></script>
|
|
14
|
+
<link rel="import" href="../core-component-page/core-component-page.html">
|
|
15
|
+
|
|
16
|
+
</head>
|
|
17
|
+
<body unresolved>
|
|
18
|
+
|
|
19
|
+
<core-component-page></core-component-page>
|
|
20
|
+
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "core-ajax",
|
|
3
|
+
"private": true,
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"polymer": "Polymer/polymer#^0.5"
|
|
6
|
+
},
|
|
7
|
+
"devDependencies": {
|
|
8
|
+
"polymer-test-tools": "Polymer/polymer-test-tools#master"
|
|
9
|
+
},
|
|
10
|
+
"version": "0.5.5",
|
|
11
|
+
"homepage": "https://github.com/polymer/core-ajax",
|
|
12
|
+
"_release": "0.5.5",
|
|
13
|
+
"_resolution": {
|
|
14
|
+
"type": "version",
|
|
15
|
+
"tag": "0.5.5",
|
|
16
|
+
"commit": "1898a145ea86a9d71a1601739c8f7c5409cae1ef"
|
|
17
|
+
},
|
|
18
|
+
"_source": "git://github.com/polymer/core-ajax.git",
|
|
19
|
+
"_target": "~0.5.5",
|
|
20
|
+
"_originalSource": "polymer/core-ajax",
|
|
21
|
+
"_direct": true
|
|
22
|
+
}
|