ice_cube-select 4.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 +21 -0
- data/README.md +134 -0
- data/Rakefile +29 -0
- data/app/assets/javascripts/ice_cube_select/fr.js +29 -0
- data/app/assets/javascripts/ice_cube_select.js +182 -0
- data/app/assets/javascripts/ice_cube_select_dialog.js +605 -0
- data/app/assets/stylesheets/ice_cube_select.css +297 -0
- data/config/locales/en.yml +8 -0
- data/config/locales/fr.yml +8 -0
- data/config/locales/nl.yml +8 -0
- data/gemfiles/Gemfile.rails-8.0 +10 -0
- data/lib/helpers/ice_cube_select_helper.rb +119 -0
- data/lib/ice_cube/select.rb +1 -0
- data/lib/ice_cube_select/engine.rb +18 -0
- data/lib/ice_cube_select/version.rb +3 -0
- data/lib/ice_cube_select.rb +86 -0
- data/lib/middleware/ice_cube_select_middleware.rb +25 -0
- data/spec/dummy/Gemfile +4 -0
- data/spec/dummy/Gemfile.lock +336 -0
- data/spec/dummy/Rakefile +8 -0
- data/spec/dummy/app/assets/stylesheets/application.css +2 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/controllers/samples_controller.rb +10 -0
- data/spec/dummy/app/models/sample.rb +19 -0
- data/spec/dummy/app/views/layouts/application.html.erb +16 -0
- data/spec/dummy/app/views/samples/create.html.erb +4 -0
- data/spec/dummy/app/views/samples/index.html.erb +49 -0
- data/spec/dummy/bin/importmap +4 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +25 -0
- data/spec/dummy/config/application.rb +35 -0
- data/spec/dummy/config/boot.rb +3 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +56 -0
- data/spec/dummy/config/environments/production.rb +76 -0
- data/spec/dummy/config/environments/test.rb +50 -0
- data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/dummy/config/initializers/assets.rb +12 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +8 -0
- data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +8 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/new_framework_defaults_6_1.rb +67 -0
- data/spec/dummy/config/initializers/new_framework_defaults_7_0.rb +117 -0
- data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +33 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/storage.yml +34 -0
- data/spec/dummy/config.ru +6 -0
- data/spec/dummy/lib/tasks/remove_schema_dump.rake +14 -0
- data/spec/dummy/log/development.log +2853 -0
- data/spec/dummy/log/test.log +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/--/--rAmByKtm0MnL8xXXDD62V7GaMXJB41PGYpkcDVC7g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-H/-HoxUZp14yWxlPRfwr8zr4NnyUAIoxc4A0TWoizdCtw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-c/-coqzCZSM-0wxDotkoWOlQabhKGWhh143WHFMK53TJ4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-k/-kCOhoKk1Fu5xtBHgA3f5bR_3UEtRYtRBBbAxnuEAqY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/00/00X-Dx7XvMmD59y9DbmBX8n8amyi0DnxvZpseW_zuU0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/19/19AOV6CKatQZK21h_rXMCzB8_zuX8qWwmt56qmrt2G4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1A/1AnErSaPi9_LX0qwRXmRu1_ROnFaxM4IecBFefnVDXU.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1i/1iJJTKhmNHZa0O0LpBXVUHwKscaTeHLe2X3YgaHUpMM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1k/1kliLj9Kd2jSY2EcJYkYfeKaIU7IsdHlYIwXltjJpXw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/20/20ImWtZR2kdu2W4HagE2cY3iLxhjbrqzjDViGjSj4pU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2E/2EX7iEADWBlei6Q6wKSyJq90KETrVghg8_2ZdQiTkl8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2E/2ExNzABSQbawrVV5L4YfULcZAabuF8fdKAxWlcmiZ9s.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2V/2Vej7W4Hs74U5sJ3y19ucsMyXkkqFMBU1jlZBcS8ox8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2b/2bBqXSgVWORK7ud3Xzpx8-wKHCMMMqt4Z_9jNpkpn_I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3I/3IakavgfROEtBiPDnjvxFJPpufCARsM9OFp6Avo4Qpw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3P/3PnmW10YkIfjRCDVHUBti81IRf1zu48H6OXfGGidetE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3j/3jrvubzDyeSYbZ5LpobP0QlL6YtKaIr9pxJAWPvz0QY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/4Z/4ZYjL6BwG-4luPzGbr5tM-bfWDitfi9MIXmYPxSaFbY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5-/5-NZ31xdNVQOUzgVAe25YKeWdAlXNDAm3bCyyA0bEB8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5h/5h0LRd6jysM1bODkNUguQPIiPq_yyyshQWiX2bQo7Dw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5h/5ho4h5pFPW9LbRUoDaOHiJpRM9WoE9r4BiB4x2IpHik.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5r/5rpbtDytrYjudaQCIwG-YYVYMWTVr0IzfRa62Zz5q7E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/6U/6UnV4bmBnVj9Q2MYBMvN_z9580jGYixHRf-uE14rmBM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/6z/6zghnUiyy2JIObJo2QdSyyeW1dNl8S7A_WKUQZiU71I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7A/7AuGblG3kfw0biDvVJd7h14-GPrSks5Tm_jtJFxLpJU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7C/7CMRdPP_5RHFOYd0UA0sUc54XQKmdHMVxSF4wICezOI.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7G/7GNYo-ooWC0NdNXqwCstEi3K9A4r_2ZnGMB7x9OOA7s.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7X/7XlOmVF_-kN_KeAPnDH8KYCUjoh-wME9C1KzIQQp738.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8C/8CFoKvJc86Aidx4dFmaWlJjvO4w1BTNvUu9EJR_b2MY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8L/8LcN0hnf9LwU5wTh-cUTI0axF_C3ve1-bHmFA-OS6bc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8n/8nK17HLAxXcrKXTRPbDh4yo_wsUAbkJeALf3_zNMGNM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8o/8o4S7UljhNV2Z2GyNvih1qSrliFB4oY9txiIP1gPxiE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/9V/9VpuJd_MaYUudt4ZqhxZIAynaw48Q-ENsH4jpizolu0.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/9m/9mDRpW3sa10mOv8Hborg_OnKaMwoxyKgDQtiJFEbdew.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/AF/AFMZ8jQk8PF9S0Dya8-Sx0oY3BEgLJEYwiMrsUj3SUs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ad/AdzUPsYCUeyeJM9QDOc55BMiVfPKTj9RjTNptv2fthY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/B4/B47HHTG0X0oHVtPd8O7l1-WogI9CwR_onS5udO4u02U.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/BF/BFgv1Q06JYYiWDGgzV1wEFsiARisuKLyyMQ79aM0vww.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/BK/BKnI-D57Lom3NkMA5Gg0eL975J5GtpwQznyKm62_Ig8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/BX/BXpqYQikJhkDIeSunYQM4AOxzeFHhzBGL1HjMQGuOyg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/By/ByNoD5nl2lLfZdy0StFKfI04h0n2GvebYawt7Pzfx2k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/C2/C2UCua3N7rS37BDP6CuHQh4N-0EsipLtm4gS0jOTWTs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Cx/Cxg1MzLUOTufOyyAraZ5-lhDoTmJZ0_UR2wP1CAATmQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Cx/cXR4PS7r0QhE65tK8kBbSHubGuVGlZnhwnChH4Q5O8M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/DO/DOm8UJqQNZ2WSyt9UJXgao467OHzmWMY1WNK6BO8-Cw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/DR/DRmS0YNZkpmdjtGqNaJI5CVUFLzZvp8tMq0M-VlEPns.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Dp/Dp0tuYIHrdk_SzxNULPVoCwUSXCoo0duQz_gP2yCsKU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/E5/E5bSQ0e6WGQAXIGED37jE9854jXP0izuMW-qOBnOJ5w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/E9/E975xsqzWYLl1fla_STjHkB3_kIcjxWyjYDAAKe39GY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/EN/EN0Ln6CmfYd_aS0QfjeXAF6YnR6KviZkiiujMQny4R8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ER/ERk6Yzv-Nk3zf2DwC31Byh7Hch4uK_2qhJdfKmyUoCw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Eg/EgkR6bN9owtB1hLTwWmUQR8phmhoT3lbqWRQ0n9-4xY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/F0IzP-ooVgPlRLqw1nTZPbFT93fmWvNLsNW0HSicwiE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/F0YaMcusCPsKvUsl6Qrv4E8sHLUOOO85lIKCu6JAxvM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/F6/F6ywfHEq5RIh4l5Csa6TG4WGDaUyiNiVMsE9OMiXvqc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/FG/FG52-VtsSB6Uk5pQzX9Fc0IaUHUZdY6-43F1-6j8zuQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/FH/FHT4wSpWbcJV2vmEmtdO1QVHHOfyXnwvJTaCYZNZGX8.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/FS/FSkqX8HmkLi0NUTvRqOGdFQc0h5x-NffdpVY5QMyZ3E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ga/GacyHXwq3SMNZA8i9qCG5VnHQK1ohFOL5PvEceVJVXM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Gg/GgYS5qpRC5JBC7lT5WQg1sugrKqeOGWjL1_EJqeQdBE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/H5/H5aYXwLLA6hunjp2ZD3-WV5VecvRIcDfEwGfnHtnKlI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HF/HFoCxeVSBDPGavW78cZ4NRuV6_DcHcGO15vtyFQpsIc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HF/HfwMtjCwm3esZHcIUOxsATdY8YDIwBj0TpCJcZdSRbo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HM/HMVilv2P7QkEfX_XqjY6Vi-HhikAQzAtJ5pOOKBXZ8A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HP/HPFKy86tI3wqp2v0mLD6sxo7d6OU1Mm3A3HqJZKEEHY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HW/HW5J4Rr-E5FGCR8_kiIq5eWeeu85iHXycfljRUuGaHE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HY/HYntTQo8ujQN_iPUCmrZxow3mCeKQiZ9svGhshJMf18.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Hv/Hv-sCE5Em5YVBiHFWgptmpGjXv-8PXUUVKml2B4r7jk.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Hv/HvkyKaQDcuqTxW2OjKH3mgojlqBTUytx5EBEquRtTCU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/II/IIIk7k5PJTIB8s9xvs5yADHh_R-GjTInWvZyExXMQrg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ih/Ihnlkw3Tfk01su33Dluw8kB_to7SP71G2tmEuj1ewGs.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ij/IjD5hEBpHPVLqpBvBOq5xoL7_OLi_jyidEQeDZkH51A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Is/IsKkAZpcet0IgYLP9ot1iuwmrVxgpNCahS2eQICEgpw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/JB/JBnoQUvpupRs9ABR-ZC0om41bMO7Ew_7-n9xKqhfPK8.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Jo/Jo4kA4keuGt7HEgEHyTmsHD6EeZRghqoq-c7mxDFs_k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Jw/Jw99Bfcj2I-8QDAVxuxejfPqQvJMpXI9QhcmTA_fpN8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Jx/JxZK86jYw-hmXkkt4XFinkCXLM76albIzT4YcKNsslg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/K-/K-gLlOoAf1VoJsDSh7EysiST1K12nABer0Bktfo4ILg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ki/KiP5gu20LeRLp87vzBsu9YZgmM9RDblIVi5h5bSph2I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/LQ/LQJfG2MNHnyXOvsz28VGUCv80Ct7nj8HM_i-cKqjSFg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ls/LsChyuxgjfk5l-ho4B-e93iZ6mHSK3IjvhmZfHFXUTI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Mn/Mn_GXGiBEOM4BXHo8WoOo5rTCTfKcksaW64banP-7P0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/N7/N7uGCIOmTFR3e5s880xHaOuAwgx8BXXXvUgawWXyvEY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/N9/N9I9AndWoHI25CuWHQUs3o7tMw3lFwKckkjnbwlOtQk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/NT/NTNTUrI37iM00TCO7PJY6za3IyZlQvujQQYqHwrxXYE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ng/NGh28TnI8MI4EX0k9Xg5dDKAjE4FJB08_WByjLoCDU4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ng/Ngz36YYa3DqZ1hpWDd25R8i2y7XW6t5SzDsuhn0EVbQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/OX/OXjxHnKgHLaEpsF_RwpLYLqo5-hdvkGh6oUY6iLnsXY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/O_/O_JDKIlx6_eN5BPCYmp6D7GkCiNHgwxl31cnRpzo9j0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Oh/OhsTmQH5UXh9lL-r3a5eN9zhBeb3myfNhDKodW0dre4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ou/Our8Abkp4wOx_HnV5wwAdB73DEHm9JMVBPH_oOGDz7I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/P-/P-cEaKuaX89WINQhpcO1HiOZGqDbnYma0EhsyA02_HA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/P8/P8Mf8CDRiKWckVgwrRzsf7iOqv_YTb2NSB1mk9PGXjM.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Pd/Pd9js4FS4IkizfaoEwofmx-u1BuH07fHfo4jRO1s3uo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Po/Po6QNSUVcwV0hIj5S12kQhKKRUT-Av0D7vv8ZEezzBk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Pz/PzpWq0LzzmiGetCVYTJP2fESglsAjH79oS_N_FmcpEA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/QQ/QQjZEwyt47hcGLBQnd4bxK1RnL6388wlWt_-qRL9QxI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Qx/Qx4wefCS41Nynaeh70sR1oQflaxhIqgqI57YIiZVvhc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/RE/REM7Qt1meU-tf1Wwzx9m2Ex8FSNL4Ac4Hh5dUjCpohQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Rb/Rbofto9PCO3Xqo5Kb2bfKxidbBqCea8OvPV7fgZhYqc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Rh/RhELObEP6WOgvZRsFG_UOLejgNpEi80uIgg2frnOVGM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Rk/RkuFQbKDq4yK0RuxrAAyktPGjclHBNC2rQ8MxWqxhc4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/S1/S11sGtH5-7UHEft-KOEyzTjynx4QxVUCkXYLa6bTvSQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/SA/SAePtLkGMoh0xPlyx3KSVOmY2S2WceTxhNmVPM4Avwk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/SJ/SJ37zvjYsOc0W_N121qfBac5Ave5tUIijbKa8ih1JJE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Sn/SnoRRhUoQdDi9EbxvaevgfLauCLgLVsheiKsR54Kjfw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Sw/SwyIlWe4mW-S1D1KV1lW2qTNWZwF_-APRUsJvXma0hA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Sx/SxMkFQvQYrgxva3so2GOBrxfDH9NvdeDTZeAIKuhsBs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/TA/TAJETM9mHztCEnd1ZOWzkHeeOUm-LVcyWpzaI3OklUo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Tk/Tk3p5H6iRTsufo_OZhbd96jjvk1iIijfJn67gtl8_Rs.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Tp/TpEhz31Vry4blOsb19xfTmLTrv7z2lOfuzTdE3GAf08.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Tw/TwXQz2y7XuFI6moY1b7OAfRj0yvQgh8FHWLelbIkpqQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/U2/U2uaXPqVIKdXq3WhD4ve0eNnFPR1mLkVw6YRBMpbJMw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Un/Un1S7oFpRfo8iXfpTHfmLfKpuowlu3a7xmoRX9o8o1o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Uv/UvzZcA7VsfUnNXg1faVWZBBwvpDuMwkhFsp8Yty8c5k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/VO/VO0NU-0YjMWB518kDQvBAN_TB-f163jCha33D9HXoGI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/W8/W80hQWjpEvHcvAv8NK2J7OVaGOqetk_9zImXzOL3kKA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/WQ/WQlY1gKet7rqxIa0Tmm-pXMzm9uQKfTC_iN6y0UErQs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XF/XFQ1cyb4geU4-m45TZ6f8O1-6F72xmBPM6L7RAgpmNk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XG/XGKSlgoUO-Ao6SLWO0LBovvDllZF_qlYf6CMxVVP0UA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XT/XTT3QmjQsOlMF_dFPgMD4V68iD-HDiZZUnKLMjhCHHI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xa/Xa5vmj80u39cbSYwvFp8MP0ZjZPxbhoBXbwtDSwrTj4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xj/XjGC7OdhT2-8iU6mpw1aRSXg5-HUu6lrpAxqK1kPYN8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xl/XlwIbBHvQN1mPdaybMu74nsakLjjptziEiHWZLXrKro.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xl/xlpNYJ-I5t3H-Q-ktfTeNktZKv6lfTzk3C1g6p7FHWs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xv/Xvs5FwiU3ADexvO0PM5dqsaii2mju3EmTsiTQs1rhGI.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xy/Xy_jRQku90hZK8aOJcggEBPFu_2USlHMFYhAAeCVjyo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Y-/Y-56loF4CG0OZHkkSpbGpqs-JQXKnU5qxpUfMu94_dQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Y4/Y4j86RBxOwUicCjzQOzXGy0qIoq5T-vUA6grPaX7-vA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YO/YOYHgN_CYZvhn7Bx4JjkkFvHaBGRtjEmdO8dGzpJeo0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YO/YOgxpoMg5VdlPVutuEBQEYvtxgnWIrDYp2Kd_m_2QCA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YO/Yo4PIprn8GN72L-Uf7l9Llo1pi--fmh2Pw20qFFYrSM.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YY/YYlQ5LzpBHieP1jNUAFLRW78t99PoS6PQZoHLzvAmqQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Yj/YjHZbRQ4e3rroImtj_1EGCKGdU4d24gCi5kjgJKT0Eo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Z3/Z38TZfN9y2TJJrdYAogo8EKs28avVKmbyCxwshjm8S4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zc/ZcGWNhggUU9-hpR3Rp6n3lGdLffDUk1-ZHkdrgsI4Fs.cache +8 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zm/ZmAvNaLlj36Yl3dRtL5jXgQb1ROtK6FDQ8UIJvDf-50.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zm/zMfeZQV1ZaglFuhJlqfoH5nBqycWIGi4TtdOsBXhiQE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zo/Zo-5NBFdii8PLufO6jPHfksOVBbZgxXwyiIBnX6-arI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_S/_SDIVNAeJ2JgDNkkZbV-DbL7PF6UxhpIdNmGPIqepj8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_T/_TuZsxsNu8oWeosPWrwp5FFjJMdw3-bR14LuI45gyfI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_e/_eLlScoirmskBHgaco2SBQSRSvidoT0JqA7lwM6z5vo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_f/_fJObZyqnMEnxYaRROG2kradIRxhFG-d9emrXIrFU2E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_m/_mVz9daeaggkYCgqZHOUq2rXXwnDVVSgG7TxxuRhl3o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/a3/a3Wlw8mfSHL3Dkg2rPHq8sfIB5_CWrja7maNwTSlHeY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/aN/aNnagxTBHQBX-Uk5eD3Zs8HVPb39rRYKAWRusog5ZGQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ae/aedjSmdfbe95obaMai-ieIh6a_3N91TgaJYjTo7tIZs.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bB/BBePVrVgXjj33MChLDgH52MwyAavBoJw5dl8m-xbnbU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bB/bBrzjV__VsMBy7B9FWdu9no2bbDQ3acRrIW2SOfshL0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bL/bLXE5zW1q67OPev2YvwAbhGVJ_SbApqE_Ls58OvrNu4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bN/bNYxhHdkUUL8Y1nuz9_-kyZ_UN6VLeoCzNMW1EVTXXY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/c-/c-fmu-AJTAuWWqRYRITv4TvxepuQd5pl9zoW655uOss.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/c0/c02CYJm8uXV42AjNiiheDJGwvAktcPQpSHOfMdT2O6Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/c3/c36-ILADjdI0hK-vAafc2slgc5IG0s2L1_iUhB7Nt5k.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ca/caudjI4goS55DlSgnZ85x9H_OPROOa_IzcOte5i94Lw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/d8/d8UVHo14387ggWM-ihl2hnCGjrdD7kD1EWmtKoJFhZs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dE/dE-UXNWFaPVOroV1gDYLPr11Aac3uIEV1U2_0DlBChY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dG/dGQHIXD6OxFuKLBgfZng3jhaLt4E2mL4rXbIKIgi-1o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dj/DjDdFr4eUKFW1ELhsrqjNn-1fgWUHaiDP9K8fEzRSTo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dj/dj4jKx8uxTq7bhT8X-o5YE4-MenFUARsxg9p9-aBGn4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/eZ/eZeS8IM2kEkG8Di1hc78lPtrcKgCxBoJF3m93SwSl2o.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/eq/eqSiLs66O8JL_zsULRFTvv4UHaCKJfKGXT9SE-ENGTo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ex/exxTGIdEZtv28XRzt5nkLHq-q3ax6zwXM5TYwcLem4Q.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/f3/f3Vhu9wCLqostdP0O1KvT8rrQICvCHlWDOVcqoLaQaA.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/f5/f5I8b7-97jbOTGMz6kOh125uhlC71AwPFmfx9An_Yfs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fJ/fJL-23z_wILBwjstvUogxa7XE2gV8euVbemL1A3bN0A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fW/fWu_Jbmw7pCUuw6NM9FHK6dHakwoZlgl1WrLDPjI1Xc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/f_/f_92yxHv4NT467Qe_368dBwfsNG0JjOW6ZGNNSN7B-4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fk/fkGFDnQy3ZoizGrxvBeicNKt4gKZq1tbCY98d9J3bu8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fn/fnsUMJ-l4Qq0Mgz90Uwq5iQcO0Jz6FM2aphVdoaj6PQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fp/fpp4a0aLsdj0GWG6PDEb00tmkbs2HAV_wcCcnFKkdFQ.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/g1/g1FOHMzVGFlom-5VB0PL5bMu4w2PcyC0dN6H8iOFTaw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gp/gpk1qbxhyFLe1Ti05iOTnBDoV47K_XwltWsrci25r6E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gx/gxNDUXeSuAAy-u4tltwoYq4NyMqaNFtuB5ekyLW5CZg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hB/hBuH2UD-FyOB6d5tntOeamH_P2DhL5fnZooR9eSxS0U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hC/HCSca_wtgnbQcyCOUzEgY1HA1AiGPSo5O_UlH2OHxVo.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hC/hCZpc9fQarc_-WwXwQlBGJdfyf8K0j0oCsD5wwJ87fQ.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hH/hH-9z4LbnPE5PvD_Ulfl2n7KLJ2t85eBdm939oK99jg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hj/hjt930_FBM8T4TSqao690Ut9wpyBcyovx50LwBnwfCI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/iM/iMnsKhKBVL5ZlU312QbDxKAQxdbWixigrdtm6nkNIpM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ie/ie01ktpzESjQATjWLtmJrU_SqYGTPbXTfk_p1sIkyLE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ik/ik91oPGrzPQ28WVZeMtO9eXMoAn6dIewX4mtG6oE3wk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jD/jDbBgIr3eqwHN2tbK6dfEbBh153VcG8w2gIc00cvUSI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jL/jLgFs9r0he0nwxve_QPSGsMCwD8DN0p2dutPcBEdudk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jR/jRfx5gPnRK0E-bKji2jhWfatCZTkGQLNuAh6tGzN7Xk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/js/jS7F-4ji84iKnL6VccBetACQZ09FDa-jFeJcpbWKZp8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/js/jsLM__rizw2y6oZgK1J92rDoGld6ksh8IC4bZik5StQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jt/jtsPqVuhIBCkiezypSQiA91Gu9cHxJ9HYIJgyOFzWpI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jz/jzgPDHzDiORAkY9cdIk7iD6aeeMlQFSiK1EZMb5LArk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/k2/k2DnReFaxm2COfOVCliXIWmrQW6SFKrEzK0C4UVmMfw.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kT/kT5GPb8H30zL28XXLxEpjiOHbvkDuIXPWGblRef1BQA.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kX/kXQi4LdsbeCcGgz0DItW3yQ_CNJBjgRr0_-rUgRAX5Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kX/kxCCxS0DA1OuBKQZiE2l0OaLlibk52cfWdP8-W62Uew.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/l0/l0bpxrry7l99VYb6OSfDAuRHD8b3vScsEM2rKwWbzbg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lE/lEn5gC3LZEbwhSVk6N-pbWaJ-B8-V9Ni94RB0NOcF7s.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lG/lG3iHoJOI6LEroFQ0eatdHaC4LMdejPH2WCGx-hj0IM.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lH/lHgP5ecRDTRlmWXvJkjL7hXApyVNu9okZwu0qUPVWLY.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lM/LmI4-RSp3IzgufIh-m8oOgwQDjOVD3_Pg6uiSwi-ZMA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lM/lMK2-DaB5fyKC0Mx4GC4vZmeh-2U7o19t0u3lf49BJM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lZ/lZbVP0P4nhiaXsNfwakCwfnn7S1KRJFvuTmvNd-hT5Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/la/laz6UauLx5eH2uAX2-MoTe8LI_w9k3Pc2s0av5zP5Os.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mB/mBIInGzzmZtHE9f_MonfEGNoMq6Rt6w7hFaGzK7CY3U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mM/mMNvregKyLKC7sUeixSvPy9QJVIhpQuF9HUHIFA8v5I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mQ/mQrMRifZ6T4NVAvNTigREMDQ2lIs2tBdk_HPBeh5c0E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mi/miMTncRS_QRcUmEjrMCCLHvqpyP3Y3tevYqbGeHNCwY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nP/nP_6hZekGfWlK1BxG3Jpesn0Wg-PlXPQvx4q-oSaUnc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nc/ncvbMM5nXJrd6F1pzx0GyKcFlJsMrhApX7mIGd-Y_C0.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oA/oAnMt8rD2Y8KoKS-OlshH3pRIvvjCflKb2WCHTbT2NQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oJ/oJupiasx8q1af4x7mHMbTup1gJqv5z7OoQJ4L9Ss4KY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oJ/ojRlXNPfTajXI8xb3VK2gQI6y7uLUEYOp_JmuI98Nsk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oY/oYXCW9fFRCuaXxAA0yRPTDT-kwODWS_XFZKsTnOZVww.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/od/od4Hn-hIPfcKzoWdAX0i_U9Uvfhbz0pGLNeu-Yy6BeY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pX/PxyzWwsLWJGP5H1hmuPZH1ecFGSer_3lgnMoR8DL1_0.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pX/pXatIzIMlyuYQ5ocuRvGOdW5SUer7V9bmUchsJSTmOw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pa/panfaQzZeA3AGdf_J9-Bt-ojz0Ag0wZLM7zWyFxcN-8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pn/pnkosyuIYxWPtFEhs3pZwDW14neSEZ8dpDZenAQEWCU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/qF/qFeHFyL9X1q52qcX5G3kWdyfIvGSAxa94G5-X3zKJUw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/r4/r4RLCA2JH9MDKvTuYkWxANEAgkBtBkzL1xfLYb2bdWY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/s7/s7WY0ri3ThG-7kmTez9gaezuyzIHtDnCQsyyyVaAI1Y.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sH/sHwc0BgUVQF-beOHCqO1HfAgQLZZvrDCgqRhlcqkAIY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sY/sYHbJlpT7n7snUMZPsqzsD7SVxtO_TSyQ2ozNXpzvlE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/t-/t-RQAyny112Yh75r-KP8uJpuzS5EaSUCOkxaII8hCdQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/t6/t6f70gfkYYgqo61jqkAEsqjVugK7FNe4uaMLVutlfdo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/tE/tEwbQxrUFzGwUKGtwW2YwXMdEewqp5mexvCrPp3AyMg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/tx/txGVXlv6uBNHc06d-ej1FrGSSQSzLXTMmuw5M1QkPTM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/uA/uA1tfNsvpEfJssTEQgl1EAfSoug4zHSuBBFeG70UPvU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ue/ueCpC7IbEUV9n26Ai5S0JkBvrThWhC-QECDjXZ52I30.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/us/us3xxjCK4Ovczw49X1Mosyyo_fXkNcPZB5ZthtYOBj4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/vE/vEqA11YY0Pn0C0Ims0FY0t4THzZHwAODRT46yLLRQEA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wM/wMledL4ttQiAHUdjtbGPhPWrFsJcADMCeqYeQLQVQ50.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wf/wf4nZLiUKwZPi5bAkP8uOMlsezO8FvmeJQlvNcFnUSc.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wt/wtsfbgVHG5HnQeSccq2bvve7RsTjfx33hOx_4lcEau4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xE/xEKXI_k6To35TyFYx7_CHpLXMBN9u1yvL7XbBGSCMzo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xW/xWTKryjn-5sOpmPF4zrGDd-ThrSCEQuLXAShhkbIFFY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xZ/xZ1IbV-YWC-jHrkzCffY4GvD19oIfe753l7dzD3IYew.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xo/xolz1HzMb_2_lfkmvbaT8_QWgxaJqQ5w1OtPZWqKHiA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xr/xrxYZJuo9pgxXDbGXmtOWUlzq9jYWuLOsTuFS2ktVlo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/y1/y1cAP8pJ30_K5pLPPRJhDnXgB7ggVZ6RFgg_kanmG0A.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yT/YTz62lYcOj7f7nmZ-Z_jpl5wOhkaWZp99r0tQxT6SVY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yT/yTdpyb-v7EzirDsmEwwm0GdagRBPzWl4V5wTe4irItA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zU/zUK2_euW_9gw2XdaZ6kpwsCEP-RGLn4V52h0Y4eEbys.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zY/zYCYsTXX3QYnqE-YOMjmjL1wo5MujSkR4CeStEjablU.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zs/zsaNhb7gDFFpZzrSu8n9zLQu6ZPD3DfWc1_7m9NtMOs.cache +1 -0
- data/spec/dummy/tmp/development_secret.txt +1 -0
- data/spec/dummy/tmp/local_secret.txt +1 -0
- data/spec/lib/helpers/ice_cube_select_helper_spec.rb +60 -0
- data/spec/lib/ice_cube_select_spec.rb +50 -0
- data/spec/spec_helper.rb +9 -0
- metadata +675 -0
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
// IceCubeSelectDialog - Vanilla JS implementation
|
|
2
|
+
// Replaces the jQuery version
|
|
3
|
+
|
|
4
|
+
(function() {
|
|
5
|
+
'use strict';
|
|
6
|
+
|
|
7
|
+
class IceCubeSelectDialog {
|
|
8
|
+
constructor(iceCubeSelector) {
|
|
9
|
+
this.iceCubeSelector = iceCubeSelector;
|
|
10
|
+
this.iceCubeSelectInstance = IceCubeSelect.getOrCreate(iceCubeSelector);
|
|
11
|
+
this.currentRule = this.iceCubeSelectInstance.currentRule();
|
|
12
|
+
|
|
13
|
+
this.initDialogBox();
|
|
14
|
+
|
|
15
|
+
if (!this.currentRule.hash || !this.currentRule.hash.rule_type) {
|
|
16
|
+
this.freqChanged();
|
|
17
|
+
} else {
|
|
18
|
+
setTimeout(() => this.positionDialogVert(), 10);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
initDialogBox() {
|
|
23
|
+
// Remove any existing dialog
|
|
24
|
+
const existing = document.querySelector('.ice_cube_select_dialog_holder');
|
|
25
|
+
if (existing) existing.remove();
|
|
26
|
+
|
|
27
|
+
// Find container (body or jQuery Mobile active page)
|
|
28
|
+
let openIn = document.body;
|
|
29
|
+
const activePage = document.querySelector('.ui-page-active');
|
|
30
|
+
if (activePage) openIn = activePage;
|
|
31
|
+
|
|
32
|
+
// Insert template
|
|
33
|
+
openIn.insertAdjacentHTML('beforeend', this.template());
|
|
34
|
+
|
|
35
|
+
this.outerHolder = document.querySelector('.ice_cube_select_dialog_holder');
|
|
36
|
+
this.innerHolder = this.outerHolder.querySelector('.ice_cube_select_dialog');
|
|
37
|
+
this.content = this.outerHolder.querySelector('.ice_cube_select_dialog_content');
|
|
38
|
+
|
|
39
|
+
this.positionDialogVert(true);
|
|
40
|
+
this.mainEventInit();
|
|
41
|
+
this.freqInit();
|
|
42
|
+
this.summaryInit();
|
|
43
|
+
|
|
44
|
+
this.outerHolder.dispatchEvent(new CustomEvent('ice_cube_select:dialog_opened'));
|
|
45
|
+
this.freqSelect.focus();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
ordinalSuffixOf(i) {
|
|
49
|
+
const j = i % 10;
|
|
50
|
+
const k = i % 100;
|
|
51
|
+
if (j === 1 && k !== 11) return i + 'st';
|
|
52
|
+
if (j === 2 && k !== 12) return i + 'nd';
|
|
53
|
+
if (j === 3 && k !== 13) return i + 'rd';
|
|
54
|
+
return i + 'th';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
fullStringWeekday(num) {
|
|
58
|
+
const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
59
|
+
return weekdays[num];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
positionDialogVert(initialPositioning) {
|
|
63
|
+
const windowHeight = window.innerHeight;
|
|
64
|
+
let dialogHeight = this.content.offsetHeight;
|
|
65
|
+
|
|
66
|
+
if (dialogHeight < 80) dialogHeight = 80;
|
|
67
|
+
|
|
68
|
+
let marginTop = (windowHeight - dialogHeight) / 2 - 30;
|
|
69
|
+
if (marginTop < 10) marginTop = 10;
|
|
70
|
+
|
|
71
|
+
if (initialPositioning) {
|
|
72
|
+
this.innerHolder.style.marginTop = marginTop + 'px';
|
|
73
|
+
this.innerHolder.style.minHeight = dialogHeight + 'px';
|
|
74
|
+
this.innerHolder.dispatchEvent(new CustomEvent('ice_cube_select:dialog_positioned'));
|
|
75
|
+
} else {
|
|
76
|
+
this.innerHolder.classList.add('animated');
|
|
77
|
+
this.innerHolder.style.marginTop = marginTop + 'px';
|
|
78
|
+
this.innerHolder.style.minHeight = dialogHeight + 'px';
|
|
79
|
+
|
|
80
|
+
// Use CSS transition end instead of jQuery animate
|
|
81
|
+
const onTransitionEnd = () => {
|
|
82
|
+
this.innerHolder.classList.remove('animated');
|
|
83
|
+
this.content.style.width = 'auto';
|
|
84
|
+
this.innerHolder.dispatchEvent(new CustomEvent('ice_cube_select:dialog_positioned'));
|
|
85
|
+
this.innerHolder.removeEventListener('transitionend', onTransitionEnd);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
this.innerHolder.addEventListener('transitionend', onTransitionEnd);
|
|
89
|
+
|
|
90
|
+
// Fallback if no transition
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
if (this.innerHolder.classList.contains('animated')) {
|
|
93
|
+
onTransitionEnd();
|
|
94
|
+
}
|
|
95
|
+
}, 250);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
cancel() {
|
|
100
|
+
this.outerHolder.remove();
|
|
101
|
+
this.iceCubeSelectInstance.cancel();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
outerCancel(event) {
|
|
105
|
+
if (event.target.classList.contains('ice_cube_select_dialog_holder')) {
|
|
106
|
+
this.cancel();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
save() {
|
|
111
|
+
if (!this.currentRule.str) return;
|
|
112
|
+
this.outerHolder.remove();
|
|
113
|
+
this.iceCubeSelectInstance.save(this.currentRule);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
mainEventInit() {
|
|
117
|
+
this.outerHolder.addEventListener('click', (e) => this.outerCancel(e));
|
|
118
|
+
|
|
119
|
+
this.content.querySelector('h4 a').addEventListener('click', (e) => {
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
this.cancel();
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
this.saveButton = this.content.querySelector('input.ice_cube_select_save');
|
|
125
|
+
this.saveButton.addEventListener('click', () => this.save());
|
|
126
|
+
|
|
127
|
+
this.content.querySelector('input.ice_cube_select_cancel').addEventListener('click', () => this.cancel());
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
freqInit() {
|
|
131
|
+
this.freqSelect = this.outerHolder.querySelector('.ice_cube_select_frequency');
|
|
132
|
+
|
|
133
|
+
if (this.currentRule.hash && this.currentRule.hash.rule_type) {
|
|
134
|
+
const ruleType = this.currentRule.hash.rule_type;
|
|
135
|
+
|
|
136
|
+
if (ruleType.includes('Weekly')) {
|
|
137
|
+
this.freqSelect.selectedIndex = 1;
|
|
138
|
+
this.initWeeklyOptions();
|
|
139
|
+
} else if (ruleType.includes('Monthly')) {
|
|
140
|
+
this.freqSelect.selectedIndex = 2;
|
|
141
|
+
this.initMonthlyOptions();
|
|
142
|
+
} else if (ruleType.includes('Yearly')) {
|
|
143
|
+
this.freqSelect.selectedIndex = 3;
|
|
144
|
+
this.initYearlyOptions();
|
|
145
|
+
} else {
|
|
146
|
+
this.initDailyOptions();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
this.freqSelect.addEventListener('change', () => this.freqChanged());
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
initDailyOptions() {
|
|
154
|
+
const section = this.content.querySelector('.daily_options');
|
|
155
|
+
const intervalInput = section.querySelector('.ice_cube_select_daily_interval');
|
|
156
|
+
|
|
157
|
+
if (this.currentRule.hash && this.currentRule.hash.interval) {
|
|
158
|
+
intervalInput.value = this.currentRule.hash.interval;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
intervalInput.addEventListener('change', (e) => this.intervalChanged(e));
|
|
162
|
+
intervalInput.addEventListener('keyup', (e) => this.intervalChanged(e));
|
|
163
|
+
|
|
164
|
+
section.style.display = 'block';
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
initWeeklyOptions() {
|
|
168
|
+
const section = this.content.querySelector('.weekly_options');
|
|
169
|
+
const intervalInput = section.querySelector('.ice_cube_select_weekly_interval');
|
|
170
|
+
|
|
171
|
+
if (this.currentRule.hash && this.currentRule.hash.interval) {
|
|
172
|
+
intervalInput.value = this.currentRule.hash.interval;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
intervalInput.addEventListener('change', (e) => this.intervalChanged(e));
|
|
176
|
+
intervalInput.addEventListener('keyup', (e) => this.intervalChanged(e));
|
|
177
|
+
|
|
178
|
+
// Reset all day selections
|
|
179
|
+
section.querySelectorAll('.day_holder a').forEach(el => el.classList.remove('selected'));
|
|
180
|
+
|
|
181
|
+
// Apply current selections
|
|
182
|
+
if (this.currentRule.hash?.validations?.day) {
|
|
183
|
+
this.currentRule.hash.validations.day.forEach(val => {
|
|
184
|
+
const dayLink = section.querySelector(`.day_holder a[data-value="${val}"]`);
|
|
185
|
+
if (dayLink) dayLink.classList.add('selected');
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
section.querySelector('.day_holder').addEventListener('click', (e) => {
|
|
190
|
+
if (e.target.tagName === 'A') {
|
|
191
|
+
this.daysChanged(e);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
section.style.display = 'block';
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
initMonthlyOptions() {
|
|
199
|
+
const section = this.content.querySelector('.monthly_options');
|
|
200
|
+
const intervalInput = section.querySelector('.ice_cube_select_monthly_interval');
|
|
201
|
+
|
|
202
|
+
if (this.currentRule.hash && this.currentRule.hash.interval) {
|
|
203
|
+
intervalInput.value = this.currentRule.hash.interval;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
intervalInput.addEventListener('change', (e) => this.intervalChanged(e));
|
|
207
|
+
intervalInput.addEventListener('keyup', (e) => this.intervalChanged(e));
|
|
208
|
+
|
|
209
|
+
// Ensure validations exist
|
|
210
|
+
this.currentRule.hash = this.currentRule.hash || {};
|
|
211
|
+
this.currentRule.hash.validations = this.currentRule.hash.validations || {};
|
|
212
|
+
this.currentRule.hash.validations.day_of_month = this.currentRule.hash.validations.day_of_month || [];
|
|
213
|
+
this.currentRule.hash.validations.day_of_week = this.currentRule.hash.validations.day_of_week || {};
|
|
214
|
+
|
|
215
|
+
this.initCalendarDays(section);
|
|
216
|
+
this.initCalendarWeeks(section);
|
|
217
|
+
|
|
218
|
+
const inWeekMode = Object.keys(this.currentRule.hash.validations.day_of_week).length > 0;
|
|
219
|
+
|
|
220
|
+
section.querySelector('.monthly_rule_type_week').checked = inWeekMode;
|
|
221
|
+
section.querySelector('.monthly_rule_type_day').checked = !inWeekMode;
|
|
222
|
+
|
|
223
|
+
this.toggleMonthView();
|
|
224
|
+
|
|
225
|
+
section.querySelectorAll('input[name=monthly_rule_type]').forEach(input => {
|
|
226
|
+
input.addEventListener('change', () => this.toggleMonthView());
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
section.style.display = 'block';
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
initYearlyOptions() {
|
|
233
|
+
const section = this.content.querySelector('.yearly_options');
|
|
234
|
+
const intervalInput = section.querySelector('.ice_cube_select_yearly_interval');
|
|
235
|
+
|
|
236
|
+
if (this.currentRule.hash && this.currentRule.hash.interval) {
|
|
237
|
+
intervalInput.value = this.currentRule.hash.interval;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
intervalInput.addEventListener('change', (e) => this.intervalChanged(e));
|
|
241
|
+
intervalInput.addEventListener('keyup', (e) => this.intervalChanged(e));
|
|
242
|
+
|
|
243
|
+
section.style.display = 'block';
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
summaryInit() {
|
|
247
|
+
this.summary = this.outerHolder.querySelector('.ice_cube_select_summary');
|
|
248
|
+
this.summaryUpdate();
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
summaryUpdate() {
|
|
252
|
+
this.summary.style.width = this.content.offsetWidth + 'px';
|
|
253
|
+
|
|
254
|
+
if (this.currentRule.hash && this.currentRule.str) {
|
|
255
|
+
this.summary.classList.remove('fetching');
|
|
256
|
+
this.saveButton.classList.remove('disabled');
|
|
257
|
+
|
|
258
|
+
let ruleStr = this.currentRule.str.replace('*', '');
|
|
259
|
+
if (ruleStr.length < 20) {
|
|
260
|
+
ruleStr = IceCubeSelect.texts.summary + ': ' + ruleStr;
|
|
261
|
+
}
|
|
262
|
+
this.summary.querySelector('span').innerHTML = ruleStr;
|
|
263
|
+
} else {
|
|
264
|
+
this.summary.classList.add('fetching');
|
|
265
|
+
this.saveButton.classList.add('disabled');
|
|
266
|
+
this.summary.querySelector('span').innerHTML = '';
|
|
267
|
+
this.summaryFetch();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
summaryFetch() {
|
|
272
|
+
if (!this.currentRule.hash || !this.currentRule.hash.rule_type) return;
|
|
273
|
+
|
|
274
|
+
this.currentRule.hash.week_start = IceCubeSelect.texts.first_day_of_week;
|
|
275
|
+
|
|
276
|
+
// Get translate URL from data attribute on the select element
|
|
277
|
+
const translateUrl = this.iceCubeSelector.dataset.translateUrl || '/ice_cube_select/translate';
|
|
278
|
+
const locale = IceCubeSelect.texts.locale_iso_code;
|
|
279
|
+
|
|
280
|
+
// Build form data
|
|
281
|
+
const formData = new FormData();
|
|
282
|
+
this.buildFormData(formData, this.currentRule.hash);
|
|
283
|
+
|
|
284
|
+
fetch(`${translateUrl}/${locale}`, {
|
|
285
|
+
method: 'POST',
|
|
286
|
+
body: formData,
|
|
287
|
+
headers: {
|
|
288
|
+
'X-Requested-With': 'XMLHttpRequest'
|
|
289
|
+
}
|
|
290
|
+
})
|
|
291
|
+
.then(response => response.text())
|
|
292
|
+
.then(data => this.summaryFetchSuccess(data))
|
|
293
|
+
.catch(error => console.error('Summary fetch error:', error));
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
buildFormData(formData, data, parentKey = '') {
|
|
297
|
+
if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {
|
|
298
|
+
Object.keys(data).forEach(key => {
|
|
299
|
+
this.buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key);
|
|
300
|
+
});
|
|
301
|
+
} else if (data !== null && data !== undefined) {
|
|
302
|
+
formData.append(parentKey, data);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
summaryFetchSuccess(data) {
|
|
307
|
+
this.currentRule.str = data;
|
|
308
|
+
this.summaryUpdate();
|
|
309
|
+
this.content.style.width = 'auto';
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
initCalendarDays(section) {
|
|
313
|
+
const monthlyCalendar = section.querySelector('.ice_cube_select_calendar_day');
|
|
314
|
+
monthlyCalendar.innerHTML = '';
|
|
315
|
+
|
|
316
|
+
for (let num = 1; num <= 31; num++) {
|
|
317
|
+
const dayLink = document.createElement('a');
|
|
318
|
+
dayLink.href = '';
|
|
319
|
+
dayLink.textContent = num;
|
|
320
|
+
dayLink.classList.add('a_day');
|
|
321
|
+
dayLink.setAttribute('aria-label', this.ordinalSuffixOf(num) + ' Day of Month');
|
|
322
|
+
|
|
323
|
+
if (this.currentRule.hash.validations.day_of_month.includes(num)) {
|
|
324
|
+
dayLink.classList.add('selected');
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
monthlyCalendar.appendChild(dayLink);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Add "Last Day" option
|
|
331
|
+
const endOfMonthLink = document.createElement('a');
|
|
332
|
+
endOfMonthLink.href = '';
|
|
333
|
+
endOfMonthLink.textContent = IceCubeSelect.texts.last_day;
|
|
334
|
+
endOfMonthLink.classList.add('end_of_month');
|
|
335
|
+
endOfMonthLink.setAttribute('aria-label', 'Last Day of Month');
|
|
336
|
+
|
|
337
|
+
if (this.currentRule.hash.validations.day_of_month.includes(-1)) {
|
|
338
|
+
endOfMonthLink.classList.add('selected');
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
monthlyCalendar.appendChild(endOfMonthLink);
|
|
342
|
+
|
|
343
|
+
monthlyCalendar.addEventListener('click', (e) => {
|
|
344
|
+
if (e.target.tagName === 'A') {
|
|
345
|
+
e.preventDefault();
|
|
346
|
+
this.dateOfMonthChanged(e);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
initCalendarWeeks(section) {
|
|
352
|
+
const monthlyCalendar = section.querySelector('.ice_cube_select_calendar_week');
|
|
353
|
+
monthlyCalendar.innerHTML = '';
|
|
354
|
+
|
|
355
|
+
const rowLabels = IceCubeSelect.texts.order;
|
|
356
|
+
const showRow = IceCubeSelect.options.monthly.show_week;
|
|
357
|
+
const cellStr = IceCubeSelect.texts.days_first_letter;
|
|
358
|
+
const weekNums = [1, 2, 3, 4, 5, -1];
|
|
359
|
+
|
|
360
|
+
weekNums.forEach((num, index) => {
|
|
361
|
+
if (showRow[index]) {
|
|
362
|
+
const span = document.createElement('span');
|
|
363
|
+
span.textContent = rowLabels[num === -1 ? 5 : num - 1];
|
|
364
|
+
monthlyCalendar.appendChild(span);
|
|
365
|
+
|
|
366
|
+
const firstDay = IceCubeSelect.texts.first_day_of_week;
|
|
367
|
+
for (let d = firstDay; d < firstDay + 7; d++) {
|
|
368
|
+
const dayOfWeek = d % 7;
|
|
369
|
+
const dayLink = document.createElement('a');
|
|
370
|
+
dayLink.href = '';
|
|
371
|
+
dayLink.textContent = cellStr[dayOfWeek];
|
|
372
|
+
dayLink.setAttribute('aria-label', this.ordinalSuffixOf(num === -1 ? 'Last' : num) + ' ' + this.fullStringWeekday(dayOfWeek));
|
|
373
|
+
dayLink.setAttribute('day', dayOfWeek);
|
|
374
|
+
dayLink.setAttribute('instance', num);
|
|
375
|
+
monthlyCalendar.appendChild(dayLink);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// Apply current selections
|
|
381
|
+
const dayOfWeek = this.currentRule.hash.validations.day_of_week;
|
|
382
|
+
Object.keys(dayOfWeek).forEach(key => {
|
|
383
|
+
dayOfWeek[key].forEach(instance => {
|
|
384
|
+
const link = section.querySelector(`a[day="${key}"][instance="${instance}"]`);
|
|
385
|
+
if (link) link.classList.add('selected');
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
monthlyCalendar.addEventListener('click', (e) => {
|
|
390
|
+
if (e.target.tagName === 'A') {
|
|
391
|
+
e.preventDefault();
|
|
392
|
+
this.weekOfMonthChanged(e);
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
toggleMonthView() {
|
|
398
|
+
const weekMode = this.content.querySelector('.monthly_rule_type_week').checked;
|
|
399
|
+
this.content.querySelector('.ice_cube_select_calendar_week').style.display = weekMode ? 'block' : 'none';
|
|
400
|
+
this.content.querySelector('.ice_cube_select_calendar_day').style.display = weekMode ? 'none' : 'block';
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
freqChanged() {
|
|
404
|
+
if (typeof this.currentRule.hash !== 'object' || this.currentRule.hash === null) {
|
|
405
|
+
this.currentRule.hash = {};
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
this.currentRule.hash.interval = 1;
|
|
409
|
+
this.currentRule.hash.until = null;
|
|
410
|
+
this.currentRule.hash.count = null;
|
|
411
|
+
this.currentRule.hash.validations = null;
|
|
412
|
+
|
|
413
|
+
this.content.querySelectorAll('.freq_option_section').forEach(el => {
|
|
414
|
+
el.style.display = 'none';
|
|
415
|
+
});
|
|
416
|
+
|
|
417
|
+
this.content.querySelectorAll('input[type=radio], input[type=checkbox]').forEach(el => {
|
|
418
|
+
el.checked = false;
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
switch (this.freqSelect.value) {
|
|
422
|
+
case 'Weekly':
|
|
423
|
+
this.currentRule.hash.rule_type = 'IceCube::WeeklyRule';
|
|
424
|
+
this.currentRule.str = IceCubeSelect.texts.weekly;
|
|
425
|
+
this.initWeeklyOptions();
|
|
426
|
+
break;
|
|
427
|
+
case 'Monthly':
|
|
428
|
+
this.currentRule.hash.rule_type = 'IceCube::MonthlyRule';
|
|
429
|
+
this.currentRule.str = IceCubeSelect.texts.monthly;
|
|
430
|
+
this.initMonthlyOptions();
|
|
431
|
+
break;
|
|
432
|
+
case 'Yearly':
|
|
433
|
+
this.currentRule.hash.rule_type = 'IceCube::YearlyRule';
|
|
434
|
+
this.currentRule.str = IceCubeSelect.texts.yearly;
|
|
435
|
+
this.initYearlyOptions();
|
|
436
|
+
break;
|
|
437
|
+
default:
|
|
438
|
+
this.currentRule.hash.rule_type = 'IceCube::DailyRule';
|
|
439
|
+
this.currentRule.str = IceCubeSelect.texts.daily;
|
|
440
|
+
this.initDailyOptions();
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
this.summaryUpdate();
|
|
444
|
+
this.positionDialogVert();
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
intervalChanged(event) {
|
|
448
|
+
this.currentRule.str = null;
|
|
449
|
+
this.currentRule.hash = this.currentRule.hash || {};
|
|
450
|
+
|
|
451
|
+
let interval = parseInt(event.target.value, 10);
|
|
452
|
+
if (interval < 1 || isNaN(interval)) {
|
|
453
|
+
interval = 1;
|
|
454
|
+
}
|
|
455
|
+
this.currentRule.hash.interval = interval;
|
|
456
|
+
this.summaryUpdate();
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
daysChanged(event) {
|
|
460
|
+
event.preventDefault();
|
|
461
|
+
event.target.classList.toggle('selected');
|
|
462
|
+
|
|
463
|
+
this.currentRule.str = null;
|
|
464
|
+
this.currentRule.hash = this.currentRule.hash || {};
|
|
465
|
+
this.currentRule.hash.validations = {};
|
|
466
|
+
|
|
467
|
+
const selectedDays = this.content.querySelectorAll('.day_holder a.selected');
|
|
468
|
+
this.currentRule.hash.validations.day = Array.from(selectedDays).map(el => {
|
|
469
|
+
return parseInt(el.dataset.value, 10);
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
this.summaryUpdate();
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
dateOfMonthChanged(event) {
|
|
476
|
+
event.target.classList.toggle('selected');
|
|
477
|
+
|
|
478
|
+
this.currentRule.str = null;
|
|
479
|
+
this.currentRule.hash = this.currentRule.hash || {};
|
|
480
|
+
this.currentRule.hash.validations = {};
|
|
481
|
+
|
|
482
|
+
const selectedDays = this.content.querySelectorAll('.monthly_options .ice_cube_select_calendar_day a.selected');
|
|
483
|
+
this.currentRule.hash.validations.day_of_week = {};
|
|
484
|
+
this.currentRule.hash.validations.day_of_month = Array.from(selectedDays).map(el => {
|
|
485
|
+
return el.textContent === IceCubeSelect.texts.last_day ? -1 : parseInt(el.textContent, 10);
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
this.summaryUpdate();
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
weekOfMonthChanged(event) {
|
|
492
|
+
event.target.classList.toggle('selected');
|
|
493
|
+
|
|
494
|
+
this.currentRule.str = null;
|
|
495
|
+
this.currentRule.hash = this.currentRule.hash || {};
|
|
496
|
+
this.currentRule.hash.validations = {};
|
|
497
|
+
this.currentRule.hash.validations.day_of_month = [];
|
|
498
|
+
this.currentRule.hash.validations.day_of_week = {};
|
|
499
|
+
|
|
500
|
+
const selectedLinks = this.content.querySelectorAll('.monthly_options .ice_cube_select_calendar_week a.selected');
|
|
501
|
+
selectedLinks.forEach(elm => {
|
|
502
|
+
const day = parseInt(elm.getAttribute('day'), 10);
|
|
503
|
+
const instance = parseInt(elm.getAttribute('instance'), 10);
|
|
504
|
+
|
|
505
|
+
if (!this.currentRule.hash.validations.day_of_week[day]) {
|
|
506
|
+
this.currentRule.hash.validations.day_of_week[day] = [];
|
|
507
|
+
}
|
|
508
|
+
this.currentRule.hash.validations.day_of_week[day].push(instance);
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
this.summaryUpdate();
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
template() {
|
|
515
|
+
const texts = IceCubeSelect.texts;
|
|
516
|
+
const firstDay = texts.first_day_of_week;
|
|
517
|
+
|
|
518
|
+
let dayButtons = '';
|
|
519
|
+
for (let d = firstDay; d < firstDay + 7; d++) {
|
|
520
|
+
const dayOfWeek = d % 7;
|
|
521
|
+
dayButtons += `<a href="#" data-value="${dayOfWeek}">${texts.days_first_letter[dayOfWeek]}</a>`;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
return `
|
|
525
|
+
<div id="ice_cube_select_modal" class="ice_cube_select_dialog_holder">
|
|
526
|
+
<div class="ice_cube_select_dialog">
|
|
527
|
+
<div class="ice_cube_select_dialog_content">
|
|
528
|
+
<h4>${texts.repeat}
|
|
529
|
+
<a href="#" id="ice_cube_select_cancel_button" title="${texts.cancel}" alt="${texts.cancel}"></a>
|
|
530
|
+
</h4>
|
|
531
|
+
|
|
532
|
+
<p class="frequency-select-wrapper">
|
|
533
|
+
<label for="ice_cube_select_frequency">${texts.frequency}:</label>
|
|
534
|
+
<select data-wrapper-class="ui-recurring-select" id="ice_cube_select_frequency" class="ice_cube_select_frequency" name="ice_cube_select_frequency">
|
|
535
|
+
<option value="Daily">${texts.daily}</option>
|
|
536
|
+
<option value="Weekly">${texts.weekly}</option>
|
|
537
|
+
<option value="Monthly">${texts.monthly}</option>
|
|
538
|
+
<option value="Yearly">${texts.yearly}</option>
|
|
539
|
+
</select>
|
|
540
|
+
</p>
|
|
541
|
+
|
|
542
|
+
<div class="daily_options freq_option_section">
|
|
543
|
+
<p>
|
|
544
|
+
${texts.every}
|
|
545
|
+
<input type="text" data-wrapper-class="ui-recurring-select" name="ice_cube_select_daily_interval" class="ice_cube_select_daily_interval ice_cube_select_interval" value="1" size="2" title="Enter number of days to repeat" />
|
|
546
|
+
${texts.days}
|
|
547
|
+
</p>
|
|
548
|
+
</div>
|
|
549
|
+
|
|
550
|
+
<div class="weekly_options freq_option_section">
|
|
551
|
+
<p>
|
|
552
|
+
${texts.every}
|
|
553
|
+
<input type="text" data-wrapper-class="ui-recurring-select" name="ice_cube_select_weekly_interval" class="ice_cube_select_weekly_interval ice_cube_select_interval" value="1" size="2" title="Enter number of weeks to repeat" />
|
|
554
|
+
${texts.weeks_on}:
|
|
555
|
+
</p>
|
|
556
|
+
<div class="day_holder">${dayButtons}</div>
|
|
557
|
+
<span style="clear:both; visibility:hidden; height:1px;">.</span>
|
|
558
|
+
</div>
|
|
559
|
+
|
|
560
|
+
<div class="monthly_options freq_option_section">
|
|
561
|
+
<p>
|
|
562
|
+
${texts.every}
|
|
563
|
+
<input type="text" data-wrapper-class="ui-recurring-select" name="ice_cube_select_monthly_interval" class="ice_cube_select_monthly_interval ice_cube_select_interval" value="1" size="2" title="Enter number of months to repeat" />
|
|
564
|
+
${texts.months}:
|
|
565
|
+
</p>
|
|
566
|
+
<p class="monthly_rule_type">
|
|
567
|
+
<span>
|
|
568
|
+
<label for="monthly_rule_type_day">${texts.day_of_month}</label>
|
|
569
|
+
<input type="radio" class="monthly_rule_type_day" name="monthly_rule_type" id="monthly_rule_type_day" value="true" />
|
|
570
|
+
</span>
|
|
571
|
+
<span>
|
|
572
|
+
<label for="monthly_rule_type_week">${texts.day_of_week}</label>
|
|
573
|
+
<input type="radio" class="monthly_rule_type_week" name="monthly_rule_type" id="monthly_rule_type_week" value="true" />
|
|
574
|
+
</span>
|
|
575
|
+
</p>
|
|
576
|
+
<p class="ice_cube_select_calendar_day"></p>
|
|
577
|
+
<p class="ice_cube_select_calendar_week"></p>
|
|
578
|
+
</div>
|
|
579
|
+
|
|
580
|
+
<div class="yearly_options freq_option_section">
|
|
581
|
+
<p>
|
|
582
|
+
${texts.every}
|
|
583
|
+
<input type="text" data-wrapper-class="ui-recurring-select" name="ice_cube_select_yearly_interval" class="ice_cube_select_yearly_interval ice_cube_select_interval" value="1" size="2" title="Enter number of years to repeat" />
|
|
584
|
+
${texts.years}
|
|
585
|
+
</p>
|
|
586
|
+
</div>
|
|
587
|
+
|
|
588
|
+
<p class="ice_cube_select_summary">
|
|
589
|
+
<span></span>
|
|
590
|
+
</p>
|
|
591
|
+
|
|
592
|
+
<div class="controls">
|
|
593
|
+
<input type="button" data-wrapper-class="ui-recurring-select" id="ice_cube_select_save" class="ice_cube_select_save" value="${texts.ok}" />
|
|
594
|
+
<input type="button" data-wrapper-class="ui-recurring-select" id="ice_cube_select_cancel" class="ice_cube_select_cancel" value="${texts.cancel}" />
|
|
595
|
+
</div>
|
|
596
|
+
</div>
|
|
597
|
+
</div>
|
|
598
|
+
</div>
|
|
599
|
+
`;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// Expose globally
|
|
604
|
+
window.IceCubeSelectDialog = IceCubeSelectDialog;
|
|
605
|
+
})();
|