ad2games-ui_components 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +28 -0
- data/app/assets/javascripts/ui_components.js.erb +26 -0
- data/app/assets/javascripts/ui_components/chosen_init.coffee +9 -0
- data/app/assets/javascripts/ui_components/domchange.coffee +1 -0
- data/app/assets/javascripts/ui_components/hide_empty_dropdowns.coffee +4 -0
- data/app/assets/javascripts/ui_components/modal.coffee +1 -0
- data/app/assets/javascripts/ui_components/navbar.coffee +2 -0
- data/app/assets/javascripts/ui_components/sticky_header.coffee +24 -0
- data/app/assets/javascripts/ui_components/submit_on_change.coffee +3 -0
- data/app/assets/javascripts/ui_components/turbolinks_progressbar.coffee +2 -0
- data/app/assets/stylesheets/a2g_ui_components.scss +8 -0
- data/app/assets/stylesheets/default_theme/button.scss +160 -0
- data/app/assets/stylesheets/default_theme/common.scss +15 -0
- data/app/assets/stylesheets/default_theme/footer.scss +7 -0
- data/app/assets/stylesheets/default_theme/form.scss +72 -0
- data/app/assets/stylesheets/default_theme/navbar.scss +55 -0
- data/app/assets/stylesheets/default_theme/table.scss +68 -0
- data/app/assets/stylesheets/default_theme/toolbar.scss +117 -0
- data/app/assets/stylesheets/libs.scss +6 -0
- data/app/assets/stylesheets/ui_components.scss.erb +15 -0
- data/app/assets/stylesheets/ui_components/checkbox_list.scss +11 -0
- data/app/assets/stylesheets/ui_components/date_range.scss +5 -0
- data/app/assets/stylesheets/ui_components/markdown_textarea.scss +7 -0
- data/app/assets/stylesheets/variables.scss +893 -0
- data/app/cells/checkbox_list/checkbox_list.yml +7 -0
- data/app/cells/checkbox_list/checkbox_list_cell.rb +33 -0
- data/app/cells/datagrid_filter/datagrid_filter.yml +14 -0
- data/app/cells/datagrid_filter/datagrid_filter_cell.rb +35 -0
- data/app/cells/date_range/date_range.coffee +69 -0
- data/app/cells/date_range/date_range.yml +7 -0
- data/app/cells/date_range/date_range_cell.rb +55 -0
- data/app/cells/form_cell_base.rb +26 -0
- data/app/cells/hello_world/hello_world.slim +1 -0
- data/app/cells/hello_world/hello_world.yml +5 -0
- data/app/cells/hello_world/hello_world_cell.rb +4 -0
- data/app/cells/markdown_readonly/markdown_readonly.coffee +5 -0
- data/app/cells/markdown_readonly/markdown_readonly.slim +1 -0
- data/app/cells/markdown_readonly/markdown_readonly.yml +4 -0
- data/app/cells/markdown_readonly/markdown_readonly_cell.rb +4 -0
- data/app/cells/markdown_textarea/markdown_textarea.coffee +9 -0
- data/app/cells/markdown_textarea/markdown_textarea.slim +9 -0
- data/app/cells/markdown_textarea/markdown_textarea.yml +8 -0
- data/app/cells/markdown_textarea/markdown_textarea_cell.rb +42 -0
- data/app/cells/modal/modal.coffee +2 -0
- data/app/cells/modal/modal.slim +12 -0
- data/app/cells/modal/modal.yml +22 -0
- data/app/cells/modal/modal_cell.rb +31 -0
- data/app/cells/select/select.coffee +35 -0
- data/app/cells/select/select.yml +14 -0
- data/app/cells/select/select_cell.rb +59 -0
- data/app/helpers/ui_components/view_helper.rb +8 -0
- data/lib/generators/generate_component.thor +32 -0
- data/lib/tasks/styleguide.rake +8 -0
- data/lib/ui_components.rb +14 -0
- data/lib/ui_components/cell.rb +16 -0
- data/lib/ui_components/cell_attributes.rb +49 -0
- data/lib/ui_components/docu_cop.rb +31 -0
- data/lib/ui_components/engine.rb +26 -0
- data/lib/ui_components/form_helper.rb +32 -0
- data/lib/ui_components/templates/cell.tt +2 -0
- data/lib/ui_components/templates/coffee.tt +0 -0
- data/lib/ui_components/templates/config.tt +9 -0
- data/lib/ui_components/templates/sass.tt +0 -0
- data/lib/ui_components/templates/view.tt +0 -0
- data/vendor/assets/bower_components/ajax-chosen/CHANGELOG.md +10 -0
- data/vendor/assets/bower_components/ajax-chosen/Cakefile +93 -0
- data/vendor/assets/bower_components/ajax-chosen/Makefile +2 -0
- data/vendor/assets/bower_components/ajax-chosen/README.md +131 -0
- data/vendor/assets/bower_components/ajax-chosen/VERSION +1 -0
- data/vendor/assets/bower_components/ajax-chosen/bower.json +23 -0
- data/vendor/assets/bower_components/ajax-chosen/data.json +57 -0
- data/vendor/assets/bower_components/ajax-chosen/docs/ajax-chosen.html +71 -0
- data/vendor/assets/bower_components/ajax-chosen/docs/docco.css +186 -0
- data/vendor/assets/bower_components/ajax-chosen/index.html +47 -0
- data/vendor/assets/bower_components/ajax-chosen/lib/ajax-chosen.js +159 -0
- data/vendor/assets/bower_components/ajax-chosen/lib/ajax-chosen.min.js +17 -0
- data/vendor/assets/bower_components/ajax-chosen/package.json +18 -0
- data/vendor/assets/bower_components/ajax-chosen/src/ajax-chosen.coffee +183 -0
- data/vendor/assets/bower_components/bootstrap-chosen/README.md +29 -0
- data/vendor/assets/bower_components/bootstrap-chosen/bootstrap-chosen-variables.less +24 -0
- data/vendor/assets/bower_components/bootstrap-chosen/bootstrap-chosen-variables.scss +16 -0
- data/vendor/assets/bower_components/bootstrap-chosen/bootstrap-chosen.less +473 -0
- data/vendor/assets/bower_components/bootstrap-chosen/bootstrap-chosen.scss +459 -0
- data/vendor/assets/bower_components/bootstrap-chosen/bower.json +25 -0
- data/vendor/assets/bower_components/bootstrap-chosen/chosen-sprite.png +0 -0
- data/vendor/assets/bower_components/bootstrap-chosen/chosen-sprite@2x.png +0 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/README.md +200 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/bower.json +20 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/daterangepicker-bs2.css +303 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/daterangepicker-bs3.css +335 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/daterangepicker.js +1348 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/examples.html +272 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/package.js +18 -0
- data/vendor/assets/bower_components/bootstrap-daterangepicker/package.json +32 -0
- data/vendor/assets/bower_components/chosen/bower.json +50 -0
- data/vendor/assets/bower_components/chosen/chosen-sprite.png +0 -0
- data/vendor/assets/bower_components/chosen/chosen-sprite@2x.png +0 -0
- data/vendor/assets/bower_components/chosen/chosen.css +448 -0
- data/vendor/assets/bower_components/chosen/chosen.jquery.js +1272 -0
- data/vendor/assets/bower_components/highlightjs/LICENSE +24 -0
- data/vendor/assets/bower_components/highlightjs/Makefile +21 -0
- data/vendor/assets/bower_components/highlightjs/README.md +12 -0
- data/vendor/assets/bower_components/highlightjs/bower.json +14 -0
- data/vendor/assets/bower_components/highlightjs/component.json +12 -0
- data/vendor/assets/bower_components/highlightjs/composer.json +26 -0
- data/vendor/assets/bower_components/highlightjs/highlight.pack.js +15263 -0
- data/vendor/assets/bower_components/highlightjs/highlight.pack.min.js +12 -0
- data/vendor/assets/bower_components/highlightjs/package.json +8 -0
- data/vendor/assets/bower_components/highlightjs/styles/agate.css +108 -0
- data/vendor/assets/bower_components/highlightjs/styles/androidstudio.css +66 -0
- data/vendor/assets/bower_components/highlightjs/styles/arduino-light.css +88 -0
- data/vendor/assets/bower_components/highlightjs/styles/arta.css +73 -0
- data/vendor/assets/bower_components/highlightjs/styles/ascetic.css +45 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-cave-dark.css +83 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-cave-light.css +85 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-cave.dark.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-cave.light.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-dune-dark.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-dune-light.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-dune.dark.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-dune.light.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-estuary-dark.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-estuary-light.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-estuary.dark.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-estuary.light.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-forest-dark.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-forest-light.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-forest.dark.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-forest.light.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-heath-dark.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-heath-light.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-heath.dark.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-heath.light.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-lakeside-dark.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-lakeside-light.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-lakeside.dark.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-lakeside.light.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-plateau-dark.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-plateau-light.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-plateau.dark.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-plateau.light.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-savanna-dark.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-savanna-light.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-savanna.dark.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-savanna.light.css +113 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-seaside-dark.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-seaside-light.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-seaside.dark.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-seaside.light.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-sulphurpool-dark.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-sulphurpool-light.css +69 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-sulphurpool.dark.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/atelier-sulphurpool.light.css +94 -0
- data/vendor/assets/bower_components/highlightjs/styles/brown-paper.css +64 -0
- data/vendor/assets/bower_components/highlightjs/styles/brown-papersq.png +0 -0
- data/vendor/assets/bower_components/highlightjs/styles/brown_paper.css +103 -0
- data/vendor/assets/bower_components/highlightjs/styles/brown_papersq.png +0 -0
- data/vendor/assets/bower_components/highlightjs/styles/codepen-embed.css +60 -0
- data/vendor/assets/bower_components/highlightjs/styles/color-brewer.css +71 -0
- data/vendor/assets/bower_components/highlightjs/styles/dark.css +63 -0
- data/vendor/assets/bower_components/highlightjs/styles/darkula.css +74 -0
- data/vendor/assets/bower_components/highlightjs/styles/default.css +99 -0
- data/vendor/assets/bower_components/highlightjs/styles/docco.css +97 -0
- data/vendor/assets/bower_components/highlightjs/styles/dracula.css +76 -0
- data/vendor/assets/bower_components/highlightjs/styles/far.css +71 -0
- data/vendor/assets/bower_components/highlightjs/styles/foundation.css +88 -0
- data/vendor/assets/bower_components/highlightjs/styles/github-gist.css +71 -0
- data/vendor/assets/bower_components/highlightjs/styles/github.css +99 -0
- data/vendor/assets/bower_components/highlightjs/styles/googlecode.css +89 -0
- data/vendor/assets/bower_components/highlightjs/styles/grayscale.css +101 -0
- data/vendor/assets/bower_components/highlightjs/styles/gruvbox-dark.css +108 -0
- data/vendor/assets/bower_components/highlightjs/styles/gruvbox-light.css +108 -0
- data/vendor/assets/bower_components/highlightjs/styles/hopscotch.css +83 -0
- data/vendor/assets/bower_components/highlightjs/styles/hybrid.css +102 -0
- data/vendor/assets/bower_components/highlightjs/styles/idea.css +97 -0
- data/vendor/assets/bower_components/highlightjs/styles/ir-black.css +73 -0
- data/vendor/assets/bower_components/highlightjs/styles/ir_black.css +106 -0
- data/vendor/assets/bower_components/highlightjs/styles/kimbie.dark.css +74 -0
- data/vendor/assets/bower_components/highlightjs/styles/kimbie.light.css +74 -0
- data/vendor/assets/bower_components/highlightjs/styles/magula.css +70 -0
- data/vendor/assets/bower_components/highlightjs/styles/mono-blue.css +59 -0
- data/vendor/assets/bower_components/highlightjs/styles/monokai-sublime.css +83 -0
- data/vendor/assets/bower_components/highlightjs/styles/monokai.css +70 -0
- data/vendor/assets/bower_components/highlightjs/styles/monokai_sublime.css +154 -0
- data/vendor/assets/bower_components/highlightjs/styles/obsidian.css +88 -0
- data/vendor/assets/bower_components/highlightjs/styles/paraiso-dark.css +72 -0
- data/vendor/assets/bower_components/highlightjs/styles/paraiso-light.css +72 -0
- data/vendor/assets/bower_components/highlightjs/styles/paraiso.dark.css +96 -0
- data/vendor/assets/bower_components/highlightjs/styles/paraiso.light.css +96 -0
- data/vendor/assets/bower_components/highlightjs/styles/pojoaque.css +83 -0
- data/vendor/assets/bower_components/highlightjs/styles/pojoaque.jpg +0 -0
- data/vendor/assets/bower_components/highlightjs/styles/qtcreator_dark.css +83 -0
- data/vendor/assets/bower_components/highlightjs/styles/qtcreator_light.css +83 -0
- data/vendor/assets/bower_components/highlightjs/styles/railscasts.css +106 -0
- data/vendor/assets/bower_components/highlightjs/styles/rainbow.css +85 -0
- data/vendor/assets/bower_components/highlightjs/styles/school-book.css +72 -0
- data/vendor/assets/bower_components/highlightjs/styles/school-book.png +0 -0
- data/vendor/assets/bower_components/highlightjs/styles/school_book.css +111 -0
- data/vendor/assets/bower_components/highlightjs/styles/school_book.png +0 -0
- data/vendor/assets/bower_components/highlightjs/styles/solarized-dark.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/solarized-light.css +84 -0
- data/vendor/assets/bower_components/highlightjs/styles/solarized_dark.css +107 -0
- data/vendor/assets/bower_components/highlightjs/styles/solarized_light.css +107 -0
- data/vendor/assets/bower_components/highlightjs/styles/sunburst.css +102 -0
- data/vendor/assets/bower_components/highlightjs/styles/tomorrow-night-blue.css +75 -0
- data/vendor/assets/bower_components/highlightjs/styles/tomorrow-night-bright.css +74 -0
- data/vendor/assets/bower_components/highlightjs/styles/tomorrow-night-eighties.css +74 -0
- data/vendor/assets/bower_components/highlightjs/styles/tomorrow-night.css +75 -0
- data/vendor/assets/bower_components/highlightjs/styles/tomorrow.css +72 -0
- data/vendor/assets/bower_components/highlightjs/styles/vs.css +68 -0
- data/vendor/assets/bower_components/highlightjs/styles/xcode.css +93 -0
- data/vendor/assets/bower_components/highlightjs/styles/zenburn.css +80 -0
- data/vendor/assets/bower_components/jquery.floatThead/CONTRIBUTING.md +33 -0
- data/vendor/assets/bower_components/jquery.floatThead/README.md +285 -0
- data/vendor/assets/bower_components/jquery.floatThead/bower.json +34 -0
- data/vendor/assets/bower_components/jquery.floatThead/dist/jquery.floatThead-slim.js +899 -0
- data/vendor/assets/bower_components/jquery.floatThead/dist/jquery.floatThead-slim.min.js +3 -0
- data/vendor/assets/bower_components/jquery.floatThead/dist/jquery.floatThead.js +964 -0
- data/vendor/assets/bower_components/jquery.floatThead/dist/jquery.floatThead.min.js +3 -0
- data/vendor/assets/bower_components/jquery.floatThead/license.txt +21 -0
- data/vendor/assets/bower_components/jquery/AUTHORS.txt +278 -0
- data/vendor/assets/bower_components/jquery/LICENSE.txt +36 -0
- data/vendor/assets/bower_components/jquery/README.md +65 -0
- data/vendor/assets/bower_components/jquery/bower.json +14 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.js +9842 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.min.js +4 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.slim.js +7877 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.slim.min.js +4 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.slim.min.map +1 -0
- data/vendor/assets/bower_components/jquery/sizzle/LICENSE.txt +36 -0
- data/vendor/assets/bower_components/jquery/sizzle/dist/sizzle.js +2143 -0
- data/vendor/assets/bower_components/jquery/sizzle/dist/sizzle.min.js +3 -0
- data/vendor/assets/bower_components/jquery/sizzle/dist/sizzle.min.map +1 -0
- data/vendor/assets/bower_components/jquery/src/ajax.js +845 -0
- data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +100 -0
- data/vendor/assets/bower_components/jquery/src/ajax/load.js +83 -0
- data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +13 -0
- data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +27 -0
- data/vendor/assets/bower_components/jquery/src/ajax/script.js +68 -0
- data/vendor/assets/bower_components/jquery/src/ajax/var/location.js +3 -0
- data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +5 -0
- data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +3 -0
- data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +167 -0
- data/vendor/assets/bower_components/jquery/src/attributes.js +11 -0
- data/vendor/assets/bower_components/jquery/src/attributes/attr.js +142 -0
- data/vendor/assets/bower_components/jquery/src/attributes/classes.js +177 -0
- data/vendor/assets/bower_components/jquery/src/attributes/prop.js +125 -0
- data/vendor/assets/bower_components/jquery/src/attributes/support.js +36 -0
- data/vendor/assets/bower_components/jquery/src/attributes/val.js +177 -0
- data/vendor/assets/bower_components/jquery/src/callbacks.js +232 -0
- data/vendor/assets/bower_components/jquery/src/core.js +494 -0
- data/vendor/assets/bower_components/jquery/src/core/DOMEval.js +14 -0
- data/vendor/assets/bower_components/jquery/src/core/access.js +65 -0
- data/vendor/assets/bower_components/jquery/src/core/init.js +134 -0
- data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +41 -0
- data/vendor/assets/bower_components/jquery/src/core/ready.js +103 -0
- data/vendor/assets/bower_components/jquery/src/core/support.js +18 -0
- data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +5 -0
- data/vendor/assets/bower_components/jquery/src/css.js +515 -0
- data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +24 -0
- data/vendor/assets/bower_components/jquery/src/css/adjustCSS.js +65 -0
- data/vendor/assets/bower_components/jquery/src/css/curCSS.js +60 -0
- data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +72 -0
- data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +18 -0
- data/vendor/assets/bower_components/jquery/src/css/showHide.js +48 -0
- data/vendor/assets/bower_components/jquery/src/css/support.js +121 -0
- data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +3 -0
- data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +15 -0
- data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +16 -0
- data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +3 -0
- data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
- data/vendor/assets/bower_components/jquery/src/css/var/swap.js +24 -0
- data/vendor/assets/bower_components/jquery/src/data.js +187 -0
- data/vendor/assets/bower_components/jquery/src/data/Data.js +200 -0
- data/vendor/assets/bower_components/jquery/src/data/accepts.js +20 -0
- data/vendor/assets/bower_components/jquery/src/data/support.js +23 -0
- data/vendor/assets/bower_components/jquery/src/data/var/acceptData.js +18 -0
- data/vendor/assets/bower_components/jquery/src/data/var/dataPriv.js +5 -0
- data/vendor/assets/bower_components/jquery/src/data/var/dataUser.js +5 -0
- data/vendor/assets/bower_components/jquery/src/deferred.js +158 -0
- data/vendor/assets/bower_components/jquery/src/deferred/exceptionHook.js +19 -0
- data/vendor/assets/bower_components/jquery/src/deprecated.js +32 -0
- data/vendor/assets/bower_components/jquery/src/dimensions.js +54 -0
- data/vendor/assets/bower_components/jquery/src/effects.js +629 -0
- data/vendor/assets/bower_components/jquery/src/effects/Tween.js +121 -0
- data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +13 -0
- data/vendor/assets/bower_components/jquery/src/effects/support.js +58 -0
- data/vendor/assets/bower_components/jquery/src/event.js +710 -0
- data/vendor/assets/bower_components/jquery/src/event/ajax.js +20 -0
- data/vendor/assets/bower_components/jquery/src/event/alias.js +27 -0
- data/vendor/assets/bower_components/jquery/src/event/focusin.js +53 -0
- data/vendor/assets/bower_components/jquery/src/event/support.js +9 -0
- data/vendor/assets/bower_components/jquery/src/event/trigger.js +199 -0
- data/vendor/assets/bower_components/jquery/src/exports/amd.js +24 -0
- data/vendor/assets/bower_components/jquery/src/exports/global.js +26 -0
- data/vendor/assets/bower_components/jquery/src/intro.js +44 -0
- data/vendor/assets/bower_components/jquery/src/jquery.js +37 -0
- data/vendor/assets/bower_components/jquery/src/manipulation.js +481 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +20 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/buildFragment.js +102 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/createSafeFragment.js +20 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/getAll.js +21 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/setGlobalEval.js +20 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/support.js +33 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/var/nodeNames.js +5 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rleadingWhitespace.js +3 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rscriptType.js +3 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rtagName.js +3 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/wrapMap.js +27 -0
- data/vendor/assets/bower_components/jquery/src/offset.js +218 -0
- data/vendor/assets/bower_components/jquery/src/outro.js +2 -0
- data/vendor/assets/bower_components/jquery/src/queue.js +143 -0
- data/vendor/assets/bower_components/jquery/src/queue/delay.js +22 -0
- data/vendor/assets/bower_components/jquery/src/selector-native.js +211 -0
- data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +14 -0
- data/vendor/assets/bower_components/jquery/src/selector.js +1 -0
- data/vendor/assets/bower_components/jquery/src/serialize.js +125 -0
- data/vendor/assets/bower_components/jquery/src/support.js +63 -0
- data/vendor/assets/bower_components/jquery/src/traversing.js +175 -0
- data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +100 -0
- data/vendor/assets/bower_components/jquery/src/traversing/var/dir.js +20 -0
- data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/vendor/assets/bower_components/jquery/src/traversing/var/siblings.js +15 -0
- data/vendor/assets/bower_components/jquery/src/var/arr.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/class2type.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/concat.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/deletedIds.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/document.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/documentElement.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/indexOf.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/pnum.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/push.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/rcssNum.js +7 -0
- data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/slice.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/support.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/toString.js +5 -0
- data/vendor/assets/bower_components/jquery/src/wrap.js +79 -0
- data/vendor/assets/bower_components/marked/Gulpfile.js +22 -0
- data/vendor/assets/bower_components/marked/LICENSE +19 -0
- data/vendor/assets/bower_components/marked/Makefile +12 -0
- data/vendor/assets/bower_components/marked/README.md +406 -0
- data/vendor/assets/bower_components/marked/bin/marked +187 -0
- data/vendor/assets/bower_components/marked/bower.json +24 -0
- data/vendor/assets/bower_components/marked/component.json +10 -0
- data/vendor/assets/bower_components/marked/doc/broken.md +426 -0
- data/vendor/assets/bower_components/marked/doc/todo.md +2 -0
- data/vendor/assets/bower_components/marked/index.js +1 -0
- data/vendor/assets/bower_components/marked/lib/marked.js +1285 -0
- data/vendor/assets/bower_components/marked/man/marked.1 +91 -0
- data/vendor/assets/bower_components/marked/marked.min.js +6 -0
- data/vendor/assets/bower_components/marked/package.json +24 -0
- data/vendor/assets/bower_components/moment/CHANGELOG.md +423 -0
- data/vendor/assets/bower_components/moment/LICENSE +22 -0
- data/vendor/assets/bower_components/moment/Moment.js.nuspec +28 -0
- data/vendor/assets/bower_components/moment/README.md +39 -0
- data/vendor/assets/bower_components/moment/benchmarks/clone.js +10 -0
- data/vendor/assets/bower_components/moment/bower.json +20 -0
- data/vendor/assets/bower_components/moment/locale/af.js +71 -0
- data/vendor/assets/bower_components/moment/locale/ar-ma.js +57 -0
- data/vendor/assets/bower_components/moment/locale/ar-sa.js +101 -0
- data/vendor/assets/bower_components/moment/locale/ar-tn.js +55 -0
- data/vendor/assets/bower_components/moment/locale/ar.js +134 -0
- data/vendor/assets/bower_components/moment/locale/az.js +107 -0
- data/vendor/assets/bower_components/moment/locale/be.js +154 -0
- data/vendor/assets/bower_components/moment/locale/bg.js +88 -0
- data/vendor/assets/bower_components/moment/locale/bn.js +111 -0
- data/vendor/assets/bower_components/moment/locale/bo.js +108 -0
- data/vendor/assets/bower_components/moment/locale/br.js +109 -0
- data/vendor/assets/bower_components/moment/locale/bs.js +140 -0
- data/vendor/assets/bower_components/moment/locale/ca.js +77 -0
- data/vendor/assets/bower_components/moment/locale/cs.js +157 -0
- data/vendor/assets/bower_components/moment/locale/cv.js +61 -0
- data/vendor/assets/bower_components/moment/locale/cy.js +79 -0
- data/vendor/assets/bower_components/moment/locale/da.js +58 -0
- data/vendor/assets/bower_components/moment/locale/de-at.js +74 -0
- data/vendor/assets/bower_components/moment/locale/de.js +73 -0
- data/vendor/assets/bower_components/moment/locale/el.js +94 -0
- data/vendor/assets/bower_components/moment/locale/en-au.js +64 -0
- data/vendor/assets/bower_components/moment/locale/en-ca.js +61 -0
- data/vendor/assets/bower_components/moment/locale/en-gb.js +65 -0
- data/vendor/assets/bower_components/moment/locale/eo.js +71 -0
- data/vendor/assets/bower_components/moment/locale/es.js +77 -0
- data/vendor/assets/bower_components/moment/locale/et.js +78 -0
- data/vendor/assets/bower_components/moment/locale/eu.js +62 -0
- data/vendor/assets/bower_components/moment/locale/fa.js +103 -0
- data/vendor/assets/bower_components/moment/locale/fi.js +107 -0
- data/vendor/assets/bower_components/moment/locale/fo.js +58 -0
- data/vendor/assets/bower_components/moment/locale/fr-ca.js +56 -0
- data/vendor/assets/bower_components/moment/locale/fr.js +60 -0
- data/vendor/assets/bower_components/moment/locale/fy.js +69 -0
- data/vendor/assets/bower_components/moment/locale/gl.js +73 -0
- data/vendor/assets/bower_components/moment/locale/he.js +80 -0
- data/vendor/assets/bower_components/moment/locale/hi.js +121 -0
- data/vendor/assets/bower_components/moment/locale/hr.js +141 -0
- data/vendor/assets/bower_components/moment/locale/hu.js +111 -0
- data/vendor/assets/bower_components/moment/locale/hy-am.js +118 -0
- data/vendor/assets/bower_components/moment/locale/id.js +81 -0
- data/vendor/assets/bower_components/moment/locale/is.js +126 -0
- data/vendor/assets/bower_components/moment/locale/it.js +68 -0
- data/vendor/assets/bower_components/moment/locale/ja.js +63 -0
- data/vendor/assets/bower_components/moment/locale/ka.js +109 -0
- data/vendor/assets/bower_components/moment/locale/km.js +56 -0
- data/vendor/assets/bower_components/moment/locale/ko.js +65 -0
- data/vendor/assets/bower_components/moment/locale/lb.js +139 -0
- data/vendor/assets/bower_components/moment/locale/lt.js +120 -0
- data/vendor/assets/bower_components/moment/locale/lv.js +79 -0
- data/vendor/assets/bower_components/moment/locale/mk.js +88 -0
- data/vendor/assets/bower_components/moment/locale/ml.js +69 -0
- data/vendor/assets/bower_components/moment/locale/mr.js +120 -0
- data/vendor/assets/bower_components/moment/locale/ms-my.js +80 -0
- data/vendor/assets/bower_components/moment/locale/my.js +89 -0
- data/vendor/assets/bower_components/moment/locale/nb.js +59 -0
- data/vendor/assets/bower_components/moment/locale/ne.js +121 -0
- data/vendor/assets/bower_components/moment/locale/nl.js +69 -0
- data/vendor/assets/bower_components/moment/locale/nn.js +58 -0
- data/vendor/assets/bower_components/moment/locale/pl.js +100 -0
- data/vendor/assets/bower_components/moment/locale/pt-br.js +58 -0
- data/vendor/assets/bower_components/moment/locale/pt.js +62 -0
- data/vendor/assets/bower_components/moment/locale/ro.js +73 -0
- data/vendor/assets/bower_components/moment/locale/ru.js +176 -0
- data/vendor/assets/bower_components/moment/locale/sk.js +158 -0
- data/vendor/assets/bower_components/moment/locale/sl.js +146 -0
- data/vendor/assets/bower_components/moment/locale/sq.js +67 -0
- data/vendor/assets/bower_components/moment/locale/sr-cyrl.js +107 -0
- data/vendor/assets/bower_components/moment/locale/sr.js +107 -0
- data/vendor/assets/bower_components/moment/locale/sv.js +65 -0
- data/vendor/assets/bower_components/moment/locale/ta.js +130 -0
- data/vendor/assets/bower_components/moment/locale/th.js +63 -0
- data/vendor/assets/bower_components/moment/locale/tl-ph.js +60 -0
- data/vendor/assets/bower_components/moment/locale/tr.js +94 -0
- data/vendor/assets/bower_components/moment/locale/tzm-latn.js +56 -0
- data/vendor/assets/bower_components/moment/locale/tzm.js +56 -0
- data/vendor/assets/bower_components/moment/locale/uk.js +163 -0
- data/vendor/assets/bower_components/moment/locale/uz.js +56 -0
- data/vendor/assets/bower_components/moment/locale/vi.js +64 -0
- data/vendor/assets/bower_components/moment/locale/zh-cn.js +125 -0
- data/vendor/assets/bower_components/moment/locale/zh-tw.js +99 -0
- data/vendor/assets/bower_components/moment/meteor/README.md +25 -0
- data/vendor/assets/bower_components/moment/meteor/export.js +3 -0
- data/vendor/assets/bower_components/moment/meteor/test.js +5 -0
- data/vendor/assets/bower_components/moment/min/locales.js +7306 -0
- data/vendor/assets/bower_components/moment/min/locales.min.js +4 -0
- data/vendor/assets/bower_components/moment/min/moment-with-locales.js +9792 -0
- data/vendor/assets/bower_components/moment/min/moment-with-locales.min.js +10 -0
- data/vendor/assets/bower_components/moment/min/moment.min.js +7 -0
- data/vendor/assets/bower_components/moment/moment.js +3043 -0
- data/vendor/assets/bower_components/moment/scripts/npm_prepublish.sh +43 -0
- data/vendor/assets/bower_components/underscore/LICENSE +23 -0
- data/vendor/assets/bower_components/underscore/README.md +22 -0
- data/vendor/assets/bower_components/underscore/bower.json +7 -0
- data/vendor/assets/bower_components/underscore/underscore-min.js +6 -0
- data/vendor/assets/bower_components/underscore/underscore-min.map +1 -0
- data/vendor/assets/bower_components/underscore/underscore.js +1548 -0
- metadata +782 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
description: 'A searchable selectbox.'
|
2
|
+
examples:
|
3
|
+
- slim: |
|
4
|
+
- bootstrap_form_for(:foo, url: '/') do |f|
|
5
|
+
= ui_component 'select', form: f,
|
6
|
+
name: 'foo',
|
7
|
+
select_options: [['Foo', 1], ['Bar', 2], ['Baz', 3]]
|
8
|
+
- description: 'Setting the `required` option to `true` will disallow deselecting selected options.'
|
9
|
+
slim: |
|
10
|
+
- bootstrap_form_for(:foo, url: '/') do |f|
|
11
|
+
= ui_component 'select', form: f,
|
12
|
+
name: 'foo',
|
13
|
+
select_options: [['Foo', 1], ['Bar', 2], ['Baz', 3]],
|
14
|
+
required: true
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class SelectCell < FormCellBase
|
3
|
+
attribute :disabled, description: 'Whether or not the field is disabled.'
|
4
|
+
attribute :form, mandatory: true, description: 'A form object.'
|
5
|
+
attribute :name, mandatory: true, description: 'The name attribute.'
|
6
|
+
attribute :select_options, description: 'Select options of the form `[[label, value]]`.'
|
7
|
+
attribute :label, description: 'A label. If not provided it will be derived from `name`.'
|
8
|
+
attribute :skip_label, description: 'Whether to not show the label.'
|
9
|
+
attribute :required, description: 'Whether or not the field is required.'
|
10
|
+
attribute :multiple, description: 'Enable multi-select behavior.'
|
11
|
+
attribute :placeholder, description: 'A placeholder text.'
|
12
|
+
attribute :error, description: 'An error message to display (E.g. on failed validations).'
|
13
|
+
attribute :width, description: 'The width of the component.'
|
14
|
+
attribute :remote_options, description: 'A URL path to load the options from.'
|
15
|
+
attribute :inline, description: 'Whether or not the element should be rendered inline.'
|
16
|
+
attribute :classes, description: 'CSS classes to be added to the element.'
|
17
|
+
attribute :label_col, description: 'CSS col class applied to the label, defaults to `col-sm-2`'
|
18
|
+
attribute :control_col,
|
19
|
+
description: 'CSS col class applied to the control, defaults to `col-sm-10`'
|
20
|
+
attribute :hide_label,
|
21
|
+
description: 'Hide the label, but keep it accessible to screen readers (e.g. Capybara)'
|
22
|
+
attribute :help, description: 'Help text associated with the control'
|
23
|
+
|
24
|
+
def show
|
25
|
+
options[:form].select(
|
26
|
+
options[:name],
|
27
|
+
select_options,
|
28
|
+
control_options,
|
29
|
+
html_options
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def control_options
|
36
|
+
options
|
37
|
+
.slice(:label, :skip_label, :hide_label, :label_col, :control_col, :help)
|
38
|
+
.merge(include_blank: true)
|
39
|
+
end
|
40
|
+
|
41
|
+
def html_options
|
42
|
+
html_opts = { class: css_class }
|
43
|
+
html_opts.update(options.slice(:required, :multiple, :disabled))
|
44
|
+
html_opts[:data] = options.slice(:placeholder, :error, :width, :remote_options)
|
45
|
+
html_opts[:data][:allow_single_deselect] = !options[:required]
|
46
|
+
html_opts
|
47
|
+
end
|
48
|
+
|
49
|
+
def select_options
|
50
|
+
options[:select_options] || []
|
51
|
+
end
|
52
|
+
|
53
|
+
def css_class
|
54
|
+
classes = %w(form-control ui-components-select chosen)
|
55
|
+
classes << 'chosen-inline' if options[:inline]
|
56
|
+
classes << options[:classes] if options[:classes]
|
57
|
+
classes.join(' ')
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
require 'active_support/core_ext/string'
|
3
|
+
|
4
|
+
class GenerateComponent < Thor::Group
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
argument :name, type: :string, desc: "The component's name."
|
8
|
+
desc 'Create a new component.'
|
9
|
+
source_root File.expand_path('../../ui_components/templates', __FILE__)
|
10
|
+
|
11
|
+
def create_cell
|
12
|
+
template 'cell.tt',
|
13
|
+
"app/cells/#{name}/#{name}_cell.rb"
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_view
|
17
|
+
template 'view.tt',
|
18
|
+
"app/cells/#{name}/#{name}.slim"
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_config
|
22
|
+
template 'config.tt',
|
23
|
+
"app/cells/#{name}/#{name}.yml"
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_assets
|
27
|
+
template 'coffee.tt',
|
28
|
+
"app/cells/#{name}/#{name}.coffee"
|
29
|
+
template 'sass.tt',
|
30
|
+
"app/cells/#{name}/#{name}.scss"
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
desc 'Run the styleguide on :port (defaults to 3999).'
|
3
|
+
task :styleguide, %i(port) do |_, args|
|
4
|
+
FileUtils.cd(UiComponents::Engine.root.join('spec', 'dummy')) do
|
5
|
+
port = args[:port] || 3999
|
6
|
+
exec "bundle exec rails s -p #{port}"
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
Gem.loaded_specs['ad2games-ui_components'].dependencies.each do |gem|
|
3
|
+
require gem.name if gem.type == :runtime
|
4
|
+
end
|
5
|
+
require 'active_model/railtie'
|
6
|
+
require 'ui_components/engine'
|
7
|
+
require 'ui_components/cell_attributes'
|
8
|
+
require 'ui_components/docu_cop'
|
9
|
+
require 'ui_components/cell'
|
10
|
+
require 'ui_components/form_helper'
|
11
|
+
require UiComponents::Engine.root.join('app', 'cells', 'form_cell_base')
|
12
|
+
Dir.glob(UiComponents::Engine.root.join('app', 'cells', '*', '*.rb')).each { |c| require c }
|
13
|
+
|
14
|
+
ActionView::Base.include UiComponents::FormHelper
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../../app/helpers/ui_components/view_helper'
|
3
|
+
|
4
|
+
module UiComponents
|
5
|
+
class Cell < ::Cell::ViewModel
|
6
|
+
include UiComponents::ViewHelper
|
7
|
+
include CellAttributes
|
8
|
+
include DocuCop
|
9
|
+
|
10
|
+
view_paths << Engine.root.join('app', 'cells')
|
11
|
+
|
12
|
+
def show
|
13
|
+
render(self.class.name.to_sym)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module UiComponents
|
3
|
+
module CellAttributes
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super
|
8
|
+
options.except(:controller).each do |k, v|
|
9
|
+
public_send(:"#{k}=", v)
|
10
|
+
end
|
11
|
+
validate_mandatory_attributes
|
12
|
+
end
|
13
|
+
|
14
|
+
def attributes
|
15
|
+
self.class.attributes.keys.map do |k|
|
16
|
+
[k, public_send(k)]
|
17
|
+
end.to_h
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def validate_mandatory_attributes
|
23
|
+
missing_attributes = self.class.attributes
|
24
|
+
.select { |a| a[:mandatory] && public_send(a[:name]).nil? }
|
25
|
+
return if missing_attributes.empty?
|
26
|
+
raise MandatoryAttributeNotSet,
|
27
|
+
'Following mandatory attribute(s) have not been provided: ' +
|
28
|
+
missing_attributes.map { |m| m[:name] }.join(', ')
|
29
|
+
end
|
30
|
+
|
31
|
+
class MandatoryAttributeNotSet < StandardError; end
|
32
|
+
|
33
|
+
class_methods do
|
34
|
+
def attribute(name, options = {})
|
35
|
+
options = ActionController::Parameters.new(options)
|
36
|
+
attributes << {
|
37
|
+
name: name,
|
38
|
+
mandatory: options[:mandatory] == true,
|
39
|
+
description: options.require(:description)
|
40
|
+
}
|
41
|
+
attr_accessor name
|
42
|
+
end
|
43
|
+
|
44
|
+
def attributes
|
45
|
+
@attributes ||= []
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module UiComponents
|
3
|
+
module DocuCop
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
class_methods do
|
7
|
+
def name
|
8
|
+
to_s.underscore.sub(/_cell\Z/, '')
|
9
|
+
end
|
10
|
+
|
11
|
+
def title
|
12
|
+
name.titleize
|
13
|
+
end
|
14
|
+
|
15
|
+
def examples
|
16
|
+
documentation[:examples].presence ||
|
17
|
+
raise("No examples provided for #{name} component")
|
18
|
+
end
|
19
|
+
|
20
|
+
def description
|
21
|
+
documentation[:description].presence ||
|
22
|
+
raise("No description provided for '#{name}' component")
|
23
|
+
end
|
24
|
+
|
25
|
+
def documentation
|
26
|
+
file = Engine.root.join('app', 'cells', name, "#{name}.yml")
|
27
|
+
YAML.load(File.read(file)).deep_symbolize_keys
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module UiComponents
|
3
|
+
class Engine < ::Rails::Engine
|
4
|
+
initializer 'ui_components.assets.add_load_paths' do |app|
|
5
|
+
app.config.assets.paths += self.class.components_paths
|
6
|
+
app.config.assets.paths << root.join('vendor/assets/bower_components')
|
7
|
+
end
|
8
|
+
|
9
|
+
initializer 'ui_components.assets.precompile' do |app|
|
10
|
+
app.config.assets.precompile += %w(styleguide.js
|
11
|
+
styleguide.css)
|
12
|
+
app.config.assets.precompile +=
|
13
|
+
self.class.components_paths
|
14
|
+
.map(&:basename)
|
15
|
+
.map { |p| ["#{p}.js", "#{p}.css"] }
|
16
|
+
.flatten
|
17
|
+
|
18
|
+
app.config.assets.precompile += %w(chosen/chosen-sprite.png
|
19
|
+
chosen/chosen-sprite@2x.png)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.components_paths
|
23
|
+
Dir[root.join('app/cells/*/')].map { |path| Pathname.new(path) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module UiComponents
|
3
|
+
class ValidatedOpenStruct < OpenStruct
|
4
|
+
def self.validators_on(*)
|
5
|
+
[]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module FormHelper
|
10
|
+
# TODO: Move to own component.
|
11
|
+
def modelless_form(options, &block)
|
12
|
+
model_params = options[:params] || params[options[:name]]
|
13
|
+
struct = ValidatedOpenStruct.new(model_params)
|
14
|
+
bootstrap_form_for(
|
15
|
+
struct,
|
16
|
+
as: options[:name],
|
17
|
+
url: options[:url].to_s,
|
18
|
+
method: options.fetch(:method, :post),
|
19
|
+
&block
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
# TODO: Move to DatagridFilterCell or own component.
|
24
|
+
def datagrid_filters(form, filters, options = {})
|
25
|
+
filter_markup = filters.map do |filter|
|
26
|
+
ui_component(:datagrid_filter, options.merge(form: form, filter: filter))
|
27
|
+
end
|
28
|
+
|
29
|
+
safe_join filter_markup
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
File without changes
|
@@ -0,0 +1,9 @@
|
|
1
|
+
description: "I didn't change the default description."
|
2
|
+
examples:
|
3
|
+
- attributes: {}
|
4
|
+
|
5
|
+
# Examples can consist of an attributes hash or a string of Slim markup:
|
6
|
+
#- attributes:
|
7
|
+
# something: 'something'
|
8
|
+
#- slim: |
|
9
|
+
# = ui_component('my_component', something: Something.new)
|
File without changes
|
File without changes
|
@@ -0,0 +1,93 @@
|
|
1
|
+
fs = require 'fs'
|
2
|
+
{exec} = require 'child_process'
|
3
|
+
util = require 'util'
|
4
|
+
{jsmin} = require 'jsmin'
|
5
|
+
|
6
|
+
targetName = "ajax-chosen"
|
7
|
+
|
8
|
+
###
|
9
|
+
CoffeeScript Options
|
10
|
+
###
|
11
|
+
csSrcDir = "src"
|
12
|
+
csTargetDir = "lib"
|
13
|
+
|
14
|
+
targetCoffee = "#{csSrcDir}/build.coffee"
|
15
|
+
targetJS = "#{csTargetDir}/#{targetName}.js"
|
16
|
+
targetMinJS = "#{csTargetDir}/#{targetName}.min.js"
|
17
|
+
|
18
|
+
coffeeOpts = "-b -j #{targetName}.js -o #{csTargetDir} -c #{targetCoffee}"
|
19
|
+
|
20
|
+
coffeeFiles = [
|
21
|
+
"ajax-chosen"
|
22
|
+
]
|
23
|
+
|
24
|
+
###
|
25
|
+
Event System
|
26
|
+
###
|
27
|
+
finishedCallback = {}
|
28
|
+
finished = (type) ->
|
29
|
+
finishedCallback[type]() if finishedCallback[type]?
|
30
|
+
|
31
|
+
finishListener = (type, cb) ->
|
32
|
+
finishedCallback[type] = cb
|
33
|
+
|
34
|
+
notify = (msg) ->
|
35
|
+
return if not growl?
|
36
|
+
growl.notify msg, {title: "Heello Development", image: "Terminal"}
|
37
|
+
|
38
|
+
###
|
39
|
+
Tasks
|
40
|
+
###
|
41
|
+
task 'docs', 'Generates documentation for the coffee files', ->
|
42
|
+
util.log 'Invoking docco on the CoffeeScript source files'
|
43
|
+
|
44
|
+
files = coffeeFiles
|
45
|
+
files[i] = "#{csSrcDir}/#{files[i]}.coffee" for i in [0...files.length]
|
46
|
+
|
47
|
+
exec "docco #{files.join(' ')}", (err, stdout, stderr) ->
|
48
|
+
util.log err if err
|
49
|
+
util.log "Documentation built into docs/ folder."
|
50
|
+
|
51
|
+
task 'watch', 'Automatically recompile the CoffeeScript files when updated', ->
|
52
|
+
util.log "Watching for changes in #{csSrcDir}"
|
53
|
+
|
54
|
+
for jsFile in coffeeFiles then do (jsFile) ->
|
55
|
+
fs.watchFile "#{csSrcDir}/#{jsFile}.coffee", (curr, prev) ->
|
56
|
+
if +curr.mtime isnt +prev.mtime
|
57
|
+
util.log "#{csSrcDir}/#{jsFile}.coffee updated"
|
58
|
+
invoke 'build'
|
59
|
+
|
60
|
+
task 'build', 'Compile and minify all CoffeeScript source files', ->
|
61
|
+
finishListener 'js', -> invoke 'minify'
|
62
|
+
invoke 'compile'
|
63
|
+
|
64
|
+
task 'compile', 'Compile all CoffeeScript source files', ->
|
65
|
+
util.log "Building #{targetJS}"
|
66
|
+
contents = []
|
67
|
+
remaining = coffeeFiles.length
|
68
|
+
|
69
|
+
util.log "Appending #{coffeeFiles.length} files to #{targetCoffee}"
|
70
|
+
|
71
|
+
for file, index in coffeeFiles then do (file, index) ->
|
72
|
+
fs.readFile "#{csSrcDir}/#{file}.coffee", "utf8", (err, fileContents) ->
|
73
|
+
util.log err if err
|
74
|
+
|
75
|
+
contents[index] = fileContents
|
76
|
+
util.log "[#{index + 1}] #{file}.coffee"
|
77
|
+
process() if --remaining is 0
|
78
|
+
|
79
|
+
process = ->
|
80
|
+
fs.writeFile targetCoffee, contents.join("\n\n"), "utf8", (err) ->
|
81
|
+
util.log err if err
|
82
|
+
|
83
|
+
exec "coffee #{coffeeOpts}", (err, stdout, stderr) ->
|
84
|
+
util.log err if err
|
85
|
+
util.log "Compiled #{targetJS}"
|
86
|
+
fs.unlink targetCoffee, (err) -> util.log err if err
|
87
|
+
finished('js')
|
88
|
+
|
89
|
+
task 'minify', 'Minify the CoffeeScript files', ->
|
90
|
+
util.log "Minifying #{targetJS}"
|
91
|
+
fs.readFile targetJS, "utf8", (err, contents) ->
|
92
|
+
fs.writeFile targetMinJS, jsmin(contents), "utf8", (err) ->
|
93
|
+
util.log err if err
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# Ajax-Chosen
|
2
|
+
|
3
|
+
This project is an addition to the excellent [Chosen jQuery plugin](https://github.com/harvesthq/chosen) that makes HTML input forms more friendly. Chosen adds search boxes to `select` HTML elements, so I felt it could use the addition of ajax autocomplete for awesomely dynamic forms.
|
4
|
+
|
5
|
+
This script bootstraps the existing Chosen plugin without making any modifications to the original code. Eventually, I would love to see this functionality built-in to the library, but until then, this seems to work pretty well.
|
6
|
+
|
7
|
+
## Note about this fork
|
8
|
+
|
9
|
+
This fork introduces compatibility for Chosen 1.x and a new plugin structure closer to the default jQuery plugin structure.
|
10
|
+
|
11
|
+
Merge requests are still open on the main Ajax Chosen repository but haven't been merged.
|
12
|
+
|
13
|
+
## How to Use
|
14
|
+
|
15
|
+
This plugin exposes a new jQuery function named `ajaxChosen` that we call on a `select` element. The first argument consists of the options passed to the jQuery $.ajax function. The `data` parameter is optional, and the `success` callback is also optional.
|
16
|
+
|
17
|
+
The second argument is a callback that tells the plugin what HTML `option` elements to make. It is passed the data returned from the ajax call, and you have to return an array of objects for which each item has a `value` property corresponding to the HTML `option` elements' `value` attribute, and a `text` property corresponding to the text to display for each option. In other words:
|
18
|
+
|
19
|
+
[{"value": 3, "text": "Ohio"}]
|
20
|
+
|
21
|
+
becomes:
|
22
|
+
|
23
|
+
<option value="3">Ohio</option>
|
24
|
+
|
25
|
+
or for grouping:
|
26
|
+
|
27
|
+
[{
|
28
|
+
group: true,
|
29
|
+
text: "Europe",
|
30
|
+
items: [
|
31
|
+
{ "value": "10", "text": "Stockholm" },
|
32
|
+
{ "value": "23", "text": "London" }
|
33
|
+
]
|
34
|
+
},
|
35
|
+
{
|
36
|
+
group: true,
|
37
|
+
text: "Asia",
|
38
|
+
items: [
|
39
|
+
{ "value": "36", "text": "Beijing" },
|
40
|
+
{ "value": "20", "text": "Tokyo" }
|
41
|
+
]
|
42
|
+
}]
|
43
|
+
|
44
|
+
becomes:
|
45
|
+
|
46
|
+
<optgroup label="Europe">
|
47
|
+
<option value="10">Stockholm</option>
|
48
|
+
<option value="23">London</option>
|
49
|
+
</optgroup>
|
50
|
+
<optgroup label="Asia">
|
51
|
+
<option value="36">Beijing</option>
|
52
|
+
<option value="20">Tokyo</option>
|
53
|
+
</optgroup>
|
54
|
+
|
55
|
+
Note:
|
56
|
+
|
57
|
+
Due to a bug in Chosen, it is necessary to change `choosen.css`.
|
58
|
+
|
59
|
+
Add
|
60
|
+
|
61
|
+
display: list-item;
|
62
|
+
|
63
|
+
to
|
64
|
+
|
65
|
+
.chzn-container .chzn-results .group-result {
|
66
|
+
|
67
|
+
class
|
68
|
+
|
69
|
+
### Options
|
70
|
+
|
71
|
+
There are some additional ajax-chosen specific options you can pass into the first argument to control its behavior.
|
72
|
+
|
73
|
+
* `minTermLength`: minimum number of characters that must be typed before an ajax call is fired
|
74
|
+
* `afterTypeDelay`: how many milliseconds to wait after typing stops to fire the ajax call
|
75
|
+
* `jsonTermKey`: the ajax request key to use for the search query (defaults to `term`)
|
76
|
+
|
77
|
+
## Example Code
|
78
|
+
|
79
|
+
``` js
|
80
|
+
$("#example-input").ajaxChosen({
|
81
|
+
type: 'GET',
|
82
|
+
url: '/ajax-chosen/data.php',
|
83
|
+
dataType: 'json'
|
84
|
+
}, function (data) {
|
85
|
+
var results = [];
|
86
|
+
|
87
|
+
$.each(data, function (i, val) {
|
88
|
+
results.push({ value: val.value, text: val.text });
|
89
|
+
});
|
90
|
+
|
91
|
+
return results;
|
92
|
+
});
|
93
|
+
```
|
94
|
+
To have the results grouped in `optgroup` elements, have the function return a list of group objects instead:
|
95
|
+
|
96
|
+
``` js
|
97
|
+
$("#example-input").ajaxChosen({
|
98
|
+
type: 'GET',
|
99
|
+
url: '/ajax-chosen/grouped.php',
|
100
|
+
dataType: 'json'
|
101
|
+
}, function (data) {
|
102
|
+
var results = [];
|
103
|
+
|
104
|
+
$.each(data, function (i, val) {
|
105
|
+
var group = { // here's a group object:
|
106
|
+
group: true,
|
107
|
+
text: val.name, // label for the group
|
108
|
+
items: [] // individual options within the group
|
109
|
+
};
|
110
|
+
|
111
|
+
$.each(val.items, function (i1, val1) {
|
112
|
+
group.items.push({value: val1.value, text: val1.text});
|
113
|
+
});
|
114
|
+
|
115
|
+
results.push(group);
|
116
|
+
});
|
117
|
+
|
118
|
+
return results;
|
119
|
+
});
|
120
|
+
|
121
|
+
```
|
122
|
+
|
123
|
+
## Developing ajax-chosen
|
124
|
+
|
125
|
+
In order to install development dependencies, you can run in the ajax-chosen directory:
|
126
|
+
|
127
|
+
```
|
128
|
+
npm install -d
|
129
|
+
```
|
130
|
+
|
131
|
+
ajax-chosen is written in Coffeescript, so there is a Cakefile provided that will perform all necessary tasks for you. Simply run `cake` to see all available commands.
|