express_admin 1.3.2 → 1.4.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 +4 -4
- data/app/assets/stylesheets/express_admin/components/_definition.sass +1 -1
- data/app/assets/stylesheets/express_admin/components/_h_box.sass +1 -1
- data/app/assets/stylesheets/express_admin/components/_live_edit.sass +3 -0
- data/app/assets/stylesheets/express_admin/components/_v_box.sass +1 -1
- data/app/assets/stylesheets/express_admin/screen.sass +1 -0
- data/app/components/express_admin/definition_list.rb +29 -12
- data/app/components/express_admin/definition_table.rb +11 -43
- data/app/components/express_admin/{flash_message_component.rb → flash_messages.rb} +3 -2
- data/app/components/express_admin/icon.rb +9 -2
- data/app/components/express_admin/icon_link.rb +32 -25
- data/app/components/express_admin/layout_component.rb +2 -32
- data/app/components/express_admin/layout_components/h_box.rb +3 -6
- data/app/components/express_admin/layout_components/pane.rb +8 -16
- data/app/components/express_admin/layout_components/sidebar_region.rb +2 -6
- data/app/components/express_admin/layout_components/v_box.rb +3 -6
- data/app/components/express_admin/main_region.rb +2 -4
- data/app/components/express_admin/{mega_menu_component.rb → mega_menu.rb} +6 -19
- data/app/components/express_admin/{addon_sidebar_component.rb → module_sidebar.rb} +12 -10
- data/app/components/express_admin/page_header.rb +14 -0
- data/app/components/express_admin/smart_form.rb +30 -29
- data/app/components/express_admin/smart_table.rb +43 -30
- data/app/components/express_admin/widget_box.rb +11 -6
- data/app/views/layouts/express_admin/admin.html.et +2 -2
- data/app/views/shared/express_admin/_navigation_bar.html.et +3 -3
- data/lib/express_admin/version.rb +1 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/test/components/smart_form_test.rb +6 -5
- data/vendor/gems/express_templates/Gemfile.lock +1 -1
- data/vendor/gems/express_templates/express_templates-0.8.0.gem +0 -0
- data/vendor/gems/express_templates/express_templates.gemspec +1 -1
- data/vendor/gems/express_templates/lib/express_templates/compiler.rb +0 -9
- data/vendor/gems/express_templates/lib/express_templates/components.rb +0 -1
- data/vendor/gems/express_templates/lib/express_templates/components/base.rb +62 -10
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/resourceful.rb +12 -0
- data/vendor/gems/express_templates/lib/express_templates/components/configurable.rb +143 -16
- data/vendor/gems/express_templates/lib/express_templates/components/forms/basic_fields.rb +11 -16
- data/vendor/gems/express_templates/lib/express_templates/components/forms/checkbox.rb +6 -6
- data/vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb +18 -26
- data/vendor/gems/express_templates/lib/express_templates/components/forms/form_component.rb +17 -16
- data/vendor/gems/express_templates/lib/express_templates/components/forms/radio.rb +14 -32
- data/vendor/gems/express_templates/lib/express_templates/components/forms/select.rb +18 -35
- data/vendor/gems/express_templates/lib/express_templates/components/forms/select_collection.rb +11 -17
- data/vendor/gems/express_templates/lib/express_templates/components/forms/submit.rb +18 -14
- data/vendor/gems/express_templates/lib/express_templates/components/tree_for.rb +11 -4
- data/vendor/gems/express_templates/lib/express_templates/renderer.rb +1 -3
- data/vendor/gems/express_templates/lib/express_templates/version.rb +1 -1
- data/vendor/gems/express_templates/test/components/base_test.rb +45 -24
- data/vendor/gems/express_templates/test/components/capabilities/resourceful_test.rb +1 -1
- data/vendor/gems/express_templates/test/components/configurable_test.rb +108 -30
- data/vendor/gems/express_templates/test/components/forms/basic_fields_test.rb +3 -3
- data/vendor/gems/express_templates/test/components/forms/express_form_test.rb +4 -1
- data/vendor/gems/express_templates/test/components/forms/radio_test.rb +3 -3
- data/vendor/gems/express_templates/test/components/forms/submit_test.rb +3 -3
- data/vendor/gems/express_templates/test/components/tree_for_test.rb +1 -1
- data/vendor/gems/express_templates/test/core_extensions/proc_test.rb +10 -0
- data/vendor/gems/express_templates/test/dummy/log/test.log +1240 -20959
- data/vendor/gems/express_templates/test/test_helper.rb +3 -0
- metadata +22 -248
- data/app/components/express_admin/page_header_component.rb +0 -29
- data/app/components/express_admin/setting_form.rb +0 -48
- data/test/dummy/log/development.log +0 -35
- data/test/dummy/log/test.log +0 -51433
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0fNukwCUjSC_GRsVIMtSMVdZkd5bq5eShMcGCrCVolc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0zehLcbCZ34CdyBVctEOnsyyyFlqjtTI-VkIje9xdCQ.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1EoyfDwFVtgMAOjo7HPkor8TQbVaioOFx9hildx_DTQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1c4REJHKdQH9bwZhZ7Ixshmy_1jAzXc3-9OiDCDyRlk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1rKHSaJsgLcnfIJRWYdYy7IimMCKcdI-I_ABekUargk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2kMk5s4FKAOWE1z_MvFIKHmdvNDzyoknoi39xL7KwJw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2oGeKB_QtwWpX3sJNHocsJiBZT60x_cwV_nSGh_HS-A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2rQDWRzFxOlBnczJ1BLfE2yCPVvrhgLGfAI7VSM54wk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3S9nnUmEIG4-hDY6cVc82GFUUWicNxtpFfWwJAmJSkI.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4OPIkynisipUm8vKo57HUhBMWFSHBno_IH6OdpK29IA.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4WErFdugnc8uWYwUE9vVfw4xxCgknECdpWhn8teZbLk.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4a7epNa5R1jeKCtFsJKTdVqMEQm5p0clABRPIiKegMo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4hK1AdPGHbXGkebvk-nSvhxtCdOSlMYNWvA43CvQKhI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/57pjjkzReNE1L9yodewGebfd0AwnfQb33rtJjSTNpLc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6c0H20s6oHf45XogeDELaojxa0PX1NmirTTWV1ClcRw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7vpDV8GyXVfyuFIkRrrkOwUXyIaCmf22tBPDpvhCUUc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/89d4LukQv0MLDc35wfIlQZps-IyoMSdlaSZjBF4U5Qs.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9QvwPXfTSVmgQX6tdK9GuCn0--MZ8Z8eJJbHpUEq1p8.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BoKdGhgi5NHfGTc42p9nltpEIYj_BBUxVdv7YhpBmmA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Cpj6WyqdggDUkeQl_Ut3P9sUtPHPXXwkmZ92TfIJGJ8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DwepgSdLiEklsJWIJItEY_ZW-nOjjeHqcdQwBtu0mus.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FOJpwMQCx9V9wfhJQKFa2f7BjfP7vyS7M3o6VX0nAI0.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GJGMlSyTg1AvPCV_6PaLOTVEKbHeVKY1jhCoaKuRlxM.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GStmpiXE4g01i-UTlSKq8B9yS69WpAp0YH7vWyESBwI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H0aD5KRj-4fhORkqWcWZfKPOQfu_ggvt4OmYOl4S5mw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H53ZZ50FwJjYUOMH60F7cpINgkh9tOF4R3L6ANoH6tU.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HY86Fwn8VPlIysY56uV-wu90bISxrXeiCtwDXg94Glg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IBLgVNsKBbJxN8NQnh6zTc3bC_OG-8BhtA3xCNDV6ks.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IcNDN_pmsAcLAMv6CST75OwOucmYm3q2099jn4tB0H8.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JpdfSFVzivQn6TFSivlys3nV3VzD8cT0ET8uqbptxV4.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KLD96-U_D5wyyJMO4CJwhXydNwVp3GnQ_Pcu9fqMWwk.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KRkc9MoVFNfI2aJI6sncnC92a1RmZyYM_CbJoa01saw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KYe0_GIi-cNX0eRteBB0aixVATrVRo7Z3BaWFCgc7yg.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LsiO4sLQfM0GvyEYhaC2E54rCurTkewg7YJX-sWBctI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MczkmkaXLyXg8mAnmpTt-Rhvlf_OGFUEr-Ut9BuWo6g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NDViKg4-yspkY1tX9IQWnh1-LkiKqIohBqtRlYZZQcs.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OXsmreTQ3MNzGsrV1eEoW72VZQ52hQ0HiuTr0ImnqHA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Po8q4NrWy9Kymnz_HbOk-WbdGY_KuuXc6urGogTHe7U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PuMvTyv89E8wfRqbWNMhTH3PAE61uCCHgpEsgdOzMXQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pvp8CVIKYjspNrgzEvgleujifrrdfATzWbwALDzQNE4.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PzcOUndLc-O-VBR2SDM2rFkiqh-iqknTEgEAXDLKfdc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QbX1HRM7KX85_PeVHcd6VJM6sqzUCWXEEYZX7CAG0eA.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UDHqQKrYSSvXfCbiJjXzmJh2Q6T5hLO80aaPvs9n-74.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UFtISk01WwcjjWcPLyjeHX3bgBqZHGQcb0Z4KFNmduA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UWvG-0WgVYHVxrtLU32uumROQuSjJv_M_svW1B8YxhY.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UruI7_ZpuzDnmNir9hzUa_r8oiuuIfVTco19ACdxwRw.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V1aP9G-CVtOLR5PTnHleid8WC9TSfFAT1DzAygp_5CQ.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VQ2-2HlkGd1XVIHlwRGcgDsjto3oE-50-4E3HGdt8uU.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VezioHwyk87G6TWkkYX88tBHC6QToVGOU5geZ54Ts5A.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WG06sI8kg0TrFKDQh2slScD0xqYK5UF0gPF1Ri6APG0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WfQ-xKbnwqaKy-UQa8spczc9qocIL_jZE4cyRZftjfA.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WhePtBvZPmF1Jhdcc4glsjhxBJQo9Qw0CDgy_F8lClY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/X2i4W-0ADnY8zQKnn3oh3P61cDw_n1B26D2JPcgWBTY.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XPpCqlT8yHTnQNHKRxjnilUBvAs6klpgWXneFU15U78.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XXTM8o6vkSxhxxm8P_orbeCZvxb8nMk7cjdwvUNL1io.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XyRQXY_oj8GLw9z8lj2dknGu45jbX5lK8ko7TePosPE.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7zGDJM6L5VhKbRWRU6vonJVe-DGxBuOhE_qGM8zJ0o.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YDMOayx363vI7odbkHMVI-_RxkOoVP2Hb7FX0mFVFE0.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Z88gJS67lNABJgUB18JzXrnGkVbYfXQvjqm7mSJIv3o.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZAIAu3UIaGRI3RknA2lbuZ8Y6AZ12VB84mQRg-q0vFs.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_2bn753sv7A0CDBODs7rO8SWdQ1OMi2vbzSas5co4TE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_FyeE-ad3bA2IH6ZwZOn6J4qaW857Rjv4FBs_HIPiqM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_k4X14Cc-2Y4gc47s7PaWtAaG_zcq1ICJInTYNp6bI4.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_kr_dP4VVnM8s8ZMdiNBSpuPqkQVx46FUdCTDH4XR70.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_y-BPEZTh3iXcaPJkcP9-krjw-V8LMhop4VGxUEUDsY.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/afi__XQzjsqMT3svcCGlVD_YrHEWQZAEbJt4CgYaCkw.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bdqS7lHa0nBN-mqdSomfMK-S6ct2TAn0z9kVzFBwQPM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/c4lC2GnsHBJ0BpWF3Nlgfk2FLPkhA7GCIiMMjnMTWE8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/csH89NDps1_QU4E0p0HHZti2XLd_etKYDqM9cPsNpps.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dVokuKbK8HbOtvPIksKGBAYE8x44l372dQ0gEISqbdo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ePtEu-AuU0iZ2J02ZafF9yOJVd8VVdV2KSheiJYlXzA.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eTRff0YXBw-Tx9VEMxb-Es8NwqjHCXiaosBLxijl3I8.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fRkrxaDYzRDIvxEUGZBFbW5ocAlmDQNg8_LRcOJJOzI.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/goVFgqSk0CBOXpbwLNd-enc31BvXm1S8cMSJ3zbxRYI.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hPH6lLkPX0EzSG_eBprMMUnmFs9y89AOarfyhGoAFGc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hgfrt0FmGrYD5SJVJhlsUPtL9usJvw3vZrW4dqQq16Y.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hiZg7FLw7SFa7S-BQ8CKWdAqFVUZy2HVb2chmQijM-g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iKb8yzw0EdFpNkayUbc16U7olK7iwE2xIs_6b_xIEtI.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iY03Ztj2YhBWadK8LHOKR3Hj1W7PLss0v85Q6Nj7E3Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ipLhCJrCCVwH7l_p1quUi2xS6POFlVHfZCqIymk8CoI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ipTot5AshDPhFtCBNfXROxutQlCrYkvsXsy3fcVT0Nw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/j5CxYBAeuD-bGDZUBh-pA0mEPCSVFDZsJm3x7QED4g0.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jr4uhEONyFYm0QhfEOMqv05S-BeUP7gw1gQl3GIFyAI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kDj0mxTRTc51sKL3YhP09H-N_wvNoeTMq4ZZXxWk00U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kGO7_IQtBwpe93nSTKj6cCWGm0fZ_NoXltdw8E_74CQ.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/le9WohG3eSGbBMySdKkdvkHXW8yipO8w4iQZCCCQb3M.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mtmR_XlvnlYbOPmP1EkOj96q2Z5OQNv4HkeFj9DwEXQ.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nU1obIDVHUhN-3yRA6B9U5aO8wsd6zh1tyVtSROJewk.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nk1B0AsQ24ck-r1vlAmaG2ZkDkzOfoIi6b5u-5BNFTQ.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oN1zSGeSEz4KhkAuUF_yFDsCVPkulfFjomEAjFzGdPc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oZ6SMNNft5SCbvNtWXkGQwKQPVwXoJRMV7VUJfWHc2k.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/orzlNSAVLprBGJNkJc1USpGtVMhktfj0hR1igXbs5fA.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oygs10cGTBBo7Mj97CjFRTrSrFR7Qi3MnHNR_WQvIps.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p0Gnpai0VYzEsAXH_5t9huZ3dO0v6JKRH0PIH--q-XA.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p0VpILMLAmqpH1IIuA6MfyLrqT7ltiDJqYqZSLr_k3I.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pWOcH5cfG1n9XqxJljnSwciDeLoaTkoUxp1zlOo0WTk.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pu9xM8T2O07hU3PafxbOLjg2vJxbbHE3qnIK9JHqVhA.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qEHftZrJ-Da_nsvX4UOaALyIt0mwnOuE2TdtBPGAWEw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qIeSoker4TjM7JYRQTOjgRd4nN0WeHnNY1GMK7Zpe8M.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rtdpq5fxIYMKM43QyOIluEECg2NP5OA-7Zi8yuowZSI.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tTFLM1bjKSeg4nyH7GWbTY6JVvuYhNKFFvsOMS9h8O0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tzX-HHF4F70o-aSB9Z_duoPxFGDv3auYnrpko9SYafU.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ujFa5Hu76zd1O6nO2G7WcgnOWZyTOMKLajazyMXAL_I.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uovLHiJZBoVnD7CXYj2WZYmAbBcqGLQOzu4Voz5Fx8c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uyHm0KHsHpJhn-wv69exuuyU4kyJtW3DDQLP7tCD7e4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v50nc5cuqpLxjepk7XsBmomcmFARYlHQRtq8yOv8AY0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vAh5eTPxI929yxRCyXgbKTWat5cZiVSOyX0UeTveXGE.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vKiuNu1fQitE151bh0Tr2Ufkc80jWzchPjxaHkpjQL8.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vMbWbI1SO5bEaiu2pRvV8NDmms_j5flYoRvCSJavhdU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vZBxpTbv5C70_MrcmWyk0z6yDwcZ-yjr7fo16bQaLhY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x-3lyh5i4qS-Q9E3X2uj2LthTOxsndFTrFXBsPPo6hI.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x3xQgAyjbrGTXy2FX2UzGG77agJgt_xsyNBuofrvY_E.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xQqBwKYWFPxZm5tidxsRKk23Z3q-OLRmKQUlMjRev_c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yZNo-6dzWGUNCJDnmqm7X5YB5FOxjYp_l8aKS6KaZOg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yfh4w2OYe-sHC9BwdeUb4FtXVEH59KeRr6P7V_lJ7Uc.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ypZCDLo54Pz2ZoUxrxSEUjT5FYMAq8Ozp8OTOYDRdAE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zV58Nou0R2EJG875wLND6wF9ES4diVi1fP7B_B6eCzw.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zxPFYKpkfNJtui1ekitdNMaGAo39fefm-oJCnILEEQ8.cache +0 -1
- data/vendor/gems/express_templates/lib/express_templates/components/form_rails_support.rb +0 -21
|
@@ -2,13 +2,11 @@ module ExpressTemplates
|
|
|
2
2
|
module Components
|
|
3
3
|
module Forms
|
|
4
4
|
# Provides a form Select component based on the Rails *select_tag* helper.
|
|
5
|
-
# Parameters:
|
|
6
|
-
# field_name, select_options, helper_options
|
|
7
5
|
#
|
|
8
|
-
#
|
|
6
|
+
# The :options may be specified as an Array or Hash which will be
|
|
9
7
|
# supplied to the *options_for_select* helper.
|
|
10
8
|
#
|
|
11
|
-
# If the
|
|
9
|
+
# If the :options are omitted, the component attempts to check
|
|
12
10
|
# whether the field is an association. If an association exists,
|
|
13
11
|
# the options will be generated using *options_from_collection_for_select*
|
|
14
12
|
# with the assumption that :id and :name are the value and name fields
|
|
@@ -18,24 +16,26 @@ module ExpressTemplates
|
|
|
18
16
|
class Select < FormComponent
|
|
19
17
|
include OptionSupport
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
has_option :options, 'Select options. Can be Array, Hash, or Proc.'
|
|
20
|
+
has_option :selected, 'The currently selected value; Used when options are supplied. Otherwise the value is taken from the resource.'
|
|
21
|
+
has_option :include_blank, 'Whether or not to include a blank option.', default: true
|
|
22
|
+
has_option :select2, 'Use select2 enhanced select box.', default: true
|
|
23
|
+
|
|
24
|
+
contains -> {
|
|
25
|
+
label_tag(label_name, label_text)
|
|
26
|
+
select_tag(*select_tag_args)
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
def select_tag_args
|
|
29
|
-
|
|
30
|
-
args
|
|
30
|
+
[field_name_attribute, select_options, select_helper_options]
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def select_options_supplied?
|
|
34
|
-
[Array, Hash, Proc].include?(
|
|
34
|
+
[Array, Hash, Proc].include?(config[:options].class)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def use_supplied_options
|
|
38
|
-
opts =
|
|
38
|
+
opts = config[:options]
|
|
39
39
|
if opts.respond_to?(:call) # can be a proc
|
|
40
40
|
opts.call(resource)
|
|
41
41
|
else
|
|
@@ -55,7 +55,7 @@ module ExpressTemplates
|
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def selected_value
|
|
58
|
-
|
|
58
|
+
config[:selected]||resource.send(field_name)
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def options_from_supplied_or_field_values
|
|
@@ -104,33 +104,16 @@ module ExpressTemplates
|
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
|
|
107
|
-
def field_options
|
|
108
|
-
# If field_otions is omitted the Expander will be
|
|
109
|
-
# in last or 3rd position and we don't want that
|
|
110
|
-
defaults = {include_blank: true}
|
|
111
|
-
defaults.merge(supplied_component_options)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
107
|
def select_helper_options
|
|
115
|
-
|
|
116
|
-
add_select2_class( field_options.reject {|k,v| component_option_names.include?(k)})
|
|
108
|
+
add_select2_class( input_attributes.merge(include_blank: !!config[:include_blank]) )
|
|
117
109
|
end
|
|
118
110
|
|
|
119
111
|
protected
|
|
120
112
|
|
|
121
113
|
def add_select2_class(helper_options)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
helper_options
|
|
125
|
-
helper_options
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def supplied_component_options
|
|
129
|
-
if @args.last && @args.last.is_a?(Hash)
|
|
130
|
-
@args.last
|
|
131
|
-
else
|
|
132
|
-
{}
|
|
133
|
-
end
|
|
114
|
+
classes = (helper_options[:class]||'').split(' ')
|
|
115
|
+
classes << 'select2' if config[:select2] === true
|
|
116
|
+
helper_options.merge(:class => classes.join(' '))
|
|
134
117
|
end
|
|
135
118
|
|
|
136
119
|
end
|
data/vendor/gems/express_templates/lib/express_templates/components/forms/select_collection.rb
CHANGED
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
module ExpressTemplates
|
|
2
2
|
module Components
|
|
3
3
|
module Forms
|
|
4
|
-
# Provides a form Select component based on the Rails *
|
|
5
|
-
# Parameters:
|
|
6
|
-
# field_name, select_options, helper_options
|
|
7
|
-
#
|
|
8
|
-
# Select options may be specified as an Array or Hash which will be
|
|
9
|
-
# supplied to the *options_for_select* helper.
|
|
10
|
-
#
|
|
4
|
+
# Provides a form Select component based on the Rails *collection_select* helper.
|
|
11
5
|
class SelectCollection < Select
|
|
12
6
|
|
|
13
|
-
|
|
14
|
-
div(class: field_wrapper_class) {
|
|
15
|
-
label_tag(label_name, label_text)
|
|
7
|
+
has_option :multiple, "Allow multiple selections.", default: true
|
|
16
8
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
9
|
+
contains -> {
|
|
10
|
+
label_tag(label_name, label_text)
|
|
11
|
+
|
|
12
|
+
# need this because the collection_select helper does not provide
|
|
13
|
+
# the hidden_field_tag trick (see rails api docs for select)
|
|
14
|
+
hidden_field_tag(multi_field_name, '')
|
|
15
|
+
collection_select(*collection_select_tag_args)
|
|
22
16
|
}
|
|
23
17
|
|
|
24
18
|
def collection_select_tag_args
|
|
@@ -30,11 +24,11 @@ module ExpressTemplates
|
|
|
30
24
|
end
|
|
31
25
|
|
|
32
26
|
def field_options
|
|
33
|
-
|
|
27
|
+
{include_blank: !!input_attributes.delete(:include_blank)}
|
|
34
28
|
end
|
|
35
29
|
|
|
36
30
|
def html_options
|
|
37
|
-
(
|
|
31
|
+
input_attributes.reject {|k,v| k.eql?(:include_blank)}.merge(multiple: config[:multiple])
|
|
38
32
|
end
|
|
39
33
|
|
|
40
34
|
def multi_field_name
|
|
@@ -3,22 +3,26 @@ module ExpressTemplates
|
|
|
3
3
|
module Forms
|
|
4
4
|
class Submit < FormComponent
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
submit_tag(args.first || 'Save', (args[1]||{}))
|
|
10
|
-
else
|
|
11
|
-
submit_tag 'Save', (args.first || {})
|
|
12
|
-
end
|
|
13
|
-
}
|
|
14
|
-
end
|
|
6
|
+
has_option :button_class, 'The css class of the input button.'
|
|
7
|
+
has_option :value, 'The value of the submit tag. Text show in button.',
|
|
8
|
+
default: 'Save'
|
|
15
9
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
contains -> {
|
|
11
|
+
submit_tag(value, input_attributes)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
before_build -> {
|
|
15
|
+
# if we are not part of a form, we don't get a default id
|
|
16
|
+
begin
|
|
17
|
+
super()
|
|
18
|
+
rescue
|
|
19
|
+
add_class(config[:class])
|
|
20
|
+
remove_class('submit')
|
|
21
21
|
end
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
def value
|
|
25
|
+
config[:value]
|
|
22
26
|
end
|
|
23
27
|
|
|
24
28
|
end
|
|
@@ -38,11 +38,18 @@ module ExpressTemplates
|
|
|
38
38
|
#
|
|
39
39
|
|
|
40
40
|
class TreeFor < Configurable
|
|
41
|
-
|
|
41
|
+
|
|
42
|
+
tag :ul
|
|
43
|
+
|
|
44
|
+
has_attributes :class => 'tree'
|
|
45
|
+
|
|
46
|
+
contains -> (&customize_block) {
|
|
42
47
|
@customize_block = customize_block
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
list_items(eval(config[:id].to_s))
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
before_build -> {
|
|
52
|
+
add_class config[:id]
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
def list_items(nodes)
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
module ExpressTemplates
|
|
2
2
|
module Renderer
|
|
3
|
-
# render accepts source or block,
|
|
4
|
-
# compiles the resulting macros
|
|
5
|
-
# and then evaluates the resulting string of ruby in the context provided
|
|
3
|
+
# render accepts source or block, evaluates the resulting string of ruby in the context provided
|
|
6
4
|
def render context=nil, template_or_src=nil, &block
|
|
7
5
|
compiled_template = compile(template_or_src, &block)
|
|
8
6
|
context.instance_eval compiled_template
|
|
@@ -2,45 +2,66 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
class BaseTest < ActiveSupport::TestCase
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
class Context
|
|
6
|
+
def assigns
|
|
7
|
+
{}
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def render(&block)
|
|
12
|
+
ExpressTemplates.render(Context.new, &block)
|
|
7
13
|
end
|
|
8
14
|
|
|
9
|
-
class
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
class UnorderedList < ExpressTemplates::Components::Base
|
|
16
|
+
tag :ul
|
|
17
|
+
|
|
18
|
+
has_attributes :class => 'something',
|
|
19
|
+
'data-foo' => 'something-else'
|
|
20
|
+
|
|
21
|
+
contains {
|
|
22
|
+
li { "Some stuff" }
|
|
12
23
|
}
|
|
13
24
|
end
|
|
14
25
|
|
|
15
|
-
test ".
|
|
16
|
-
|
|
26
|
+
test ".tag_name determines the enclosing tag" do
|
|
27
|
+
assert_match /^\<ul/, render { unordered_list }
|
|
17
28
|
end
|
|
18
29
|
|
|
19
|
-
test "
|
|
20
|
-
|
|
30
|
+
test ".has_attributes creates default attributes" do
|
|
31
|
+
assert_match /class="[^"]*something[^"]*"/, render { unordered_list }
|
|
32
|
+
assert_match /data-foo="[^"]*something-else[^"]*"/, render { unordered_list }
|
|
21
33
|
end
|
|
22
34
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
end
|
|
35
|
+
test ".contains places fragment inside the enclosing tag" do
|
|
36
|
+
markup = render { unordered_list }
|
|
37
|
+
assert_match /\<ul.*\<li.*\/li\>.*\/ul\>/, markup.gsub("\n", '')
|
|
27
38
|
end
|
|
28
39
|
|
|
29
|
-
class
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
end
|
|
40
|
+
test "class name is dasherized instead of underscored" do
|
|
41
|
+
assert_match /class="[^"]*unordered-list[^"]*"/, render { unordered_list }
|
|
42
|
+
end
|
|
33
43
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
}
|
|
44
|
+
test "options are passed to html attributes" do
|
|
45
|
+
assert_match /rows="5"/, render { unordered_list(rows: 5) }
|
|
46
|
+
end
|
|
39
47
|
|
|
48
|
+
test "class option adds a class, does not override" do
|
|
49
|
+
markup = render { unordered_list(class: 'extra') }
|
|
50
|
+
assert_match /class="[^"]*something[^"]*"/, markup
|
|
51
|
+
assert_match /class="[^"]*unordered-list[^"]*"/, markup
|
|
52
|
+
assert_match /class="[^"]*extra[^"]*"/, markup
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class BeforeBuildHook < ExpressTemplates::Components::Base
|
|
56
|
+
before_build :add_my_foo
|
|
57
|
+
|
|
58
|
+
def add_my_foo
|
|
59
|
+
set_attribute('data-foo', 'bar')
|
|
60
|
+
end
|
|
40
61
|
end
|
|
41
62
|
|
|
42
|
-
test "
|
|
43
|
-
|
|
63
|
+
test "before_build hook runs before build" do
|
|
64
|
+
assert_match /data-foo="bar"/, render { before_build_hook }
|
|
44
65
|
end
|
|
45
66
|
|
|
46
67
|
end
|
|
@@ -2,48 +2,126 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
class ConfigurableTest < ActiveSupport::TestCase
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def markup
|
|
9
|
-
div(id: my[:id], class: 'bar')
|
|
5
|
+
class Context
|
|
6
|
+
def assigns
|
|
7
|
+
{}
|
|
10
8
|
end
|
|
11
9
|
end
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
def render(&block)
|
|
12
|
+
ExpressTemplates.render(Context.new, &block)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
ETCC = ExpressTemplates::Components::Configurable
|
|
16
|
+
|
|
17
|
+
class ConfigurableComponent < ETCC
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test "renders first argument as dom id" do
|
|
21
|
+
assert_match /id="foo"/, render { configurable_component(:foo) }
|
|
16
22
|
end
|
|
17
23
|
|
|
18
|
-
|
|
24
|
+
test "has no id attribute if not specified" do
|
|
25
|
+
assert_no_match /id="foo"/, render { configurable_component }
|
|
26
|
+
end
|
|
19
27
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
class ConfigWithOption < ETCC
|
|
29
|
+
has_option :thing, 'Something about things'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "supports option declaration" do
|
|
33
|
+
markup = render { config_with_option }
|
|
34
|
+
assert_equal %Q(<div class="config-with-option"></div>\n), markup
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "does not pass declared options as html attributes" do
|
|
38
|
+
markup = render { config_with_option(thing: 'whatever') }
|
|
39
|
+
assert_equal %Q(<div class="config-with-option"></div>\n), markup
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test "unrecognized options raises an exception" do
|
|
43
|
+
assert_raises(ArgumentError) do
|
|
44
|
+
class ConfigWithUnrecognizedOptions < ETCC
|
|
45
|
+
has_option :title, 'asdfasdf', something_unrecognized: 'whatever'
|
|
46
|
+
end
|
|
24
47
|
end
|
|
48
|
+
end
|
|
25
49
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
50
|
+
class ConfigWithDefaultOption < ETCC
|
|
51
|
+
has_option :rows, 'Number of rows', type: :integer, default: 5, attribute: true
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
test "default values are supported" do
|
|
55
|
+
markup = render { config_with_default_option }
|
|
56
|
+
assert_equal %Q(<div class="config-with-default-option" rows="5"></div>\n), markup
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
test "default values for attributes can be overridden" do
|
|
60
|
+
markup = render { config_with_default_option(rows: 999) }
|
|
61
|
+
assert_equal %Q(<div class="config-with-default-option" rows="999"></div>\n), markup
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
class ConfigWithRequiredOptions < ETCC
|
|
65
|
+
has_option :title, 'adds a title', required: true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
test "required options are required" do
|
|
69
|
+
assert_raises(RuntimeError) do
|
|
70
|
+
render { config_with_required_options }
|
|
31
71
|
end
|
|
72
|
+
assert render { config_with_required_options(title: 'foo') }
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class ConfigSubclass < ConfigWithRequiredOptions
|
|
76
|
+
has_option :status, 'something'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
test "options are inherited" do
|
|
80
|
+
assert_equal [:title, :status], ConfigSubclass.supported_options.keys
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
class ConfigArgument < ETCC
|
|
84
|
+
has_argument :name, "The name.", type: :string
|
|
85
|
+
|
|
86
|
+
has_option :something, "else"
|
|
87
|
+
|
|
88
|
+
contains {
|
|
89
|
+
text_node config[:name]
|
|
90
|
+
}
|
|
32
91
|
end
|
|
33
92
|
|
|
34
|
-
|
|
35
|
-
|
|
93
|
+
test ".has_argument adds a positional configuration argument" do
|
|
94
|
+
assert_equal :name, ConfigArgument.new.supported_arguments.keys.last
|
|
95
|
+
assert_equal "The name.", ConfigArgument.new.supported_arguments.values.last[:description]
|
|
36
96
|
end
|
|
37
97
|
|
|
38
|
-
test "
|
|
39
|
-
html =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
<p>bar</p>
|
|
44
|
-
</div>
|
|
45
|
-
HTML
|
|
46
|
-
assert_equal "<div id=\"foo\">\n <h1>foo</h1>\n <p>bar</p>\n</div>\n", html
|
|
98
|
+
test ".has_argument makes builder arguments accessible by name according to position" do
|
|
99
|
+
html = render &-> {
|
|
100
|
+
config_argument :bar, 'Foo'
|
|
101
|
+
}
|
|
102
|
+
assert_match />Foo</, html
|
|
47
103
|
end
|
|
48
104
|
|
|
49
|
-
|
|
105
|
+
class ConfigAnotherArgument < ConfigArgument
|
|
106
|
+
has_argument :title, "comes after name", type: :string
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
test ".has_argument appends supported arguments in order of inheritence" do
|
|
110
|
+
assert_equal [:id, :name, :title], ConfigAnotherArgument.new.supported_arguments.keys
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
class ConfigOverwriteId < ConfigArgument
|
|
114
|
+
has_argument :id, 'Should overwrite :id',
|
|
115
|
+
as: :foo, type: :symbol
|
|
116
|
+
contains -> {
|
|
117
|
+
text_node config[:foo]
|
|
118
|
+
}
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
test ".has_argument as: allows overwrite of inherited argument" do
|
|
122
|
+
html = render {
|
|
123
|
+
config_overwrite_id(:whatever, 'Ignore me')
|
|
124
|
+
}
|
|
125
|
+
assert_match /div.*>whatever/, html
|
|
126
|
+
end
|
|
127
|
+
end
|