ad2games-ui_components 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|