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.
Files changed (312) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README.md +134 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/javascripts/ice_cube_select/fr.js +29 -0
  6. data/app/assets/javascripts/ice_cube_select.js +182 -0
  7. data/app/assets/javascripts/ice_cube_select_dialog.js +605 -0
  8. data/app/assets/stylesheets/ice_cube_select.css +297 -0
  9. data/config/locales/en.yml +8 -0
  10. data/config/locales/fr.yml +8 -0
  11. data/config/locales/nl.yml +8 -0
  12. data/gemfiles/Gemfile.rails-8.0 +10 -0
  13. data/lib/helpers/ice_cube_select_helper.rb +119 -0
  14. data/lib/ice_cube/select.rb +1 -0
  15. data/lib/ice_cube_select/engine.rb +18 -0
  16. data/lib/ice_cube_select/version.rb +3 -0
  17. data/lib/ice_cube_select.rb +86 -0
  18. data/lib/middleware/ice_cube_select_middleware.rb +25 -0
  19. data/spec/dummy/Gemfile +4 -0
  20. data/spec/dummy/Gemfile.lock +336 -0
  21. data/spec/dummy/Rakefile +8 -0
  22. data/spec/dummy/app/assets/stylesheets/application.css +2 -0
  23. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  24. data/spec/dummy/app/controllers/samples_controller.rb +10 -0
  25. data/spec/dummy/app/models/sample.rb +19 -0
  26. data/spec/dummy/app/views/layouts/application.html.erb +16 -0
  27. data/spec/dummy/app/views/samples/create.html.erb +4 -0
  28. data/spec/dummy/app/views/samples/index.html.erb +49 -0
  29. data/spec/dummy/bin/importmap +4 -0
  30. data/spec/dummy/bin/rails +4 -0
  31. data/spec/dummy/bin/rake +4 -0
  32. data/spec/dummy/bin/setup +25 -0
  33. data/spec/dummy/config/application.rb +35 -0
  34. data/spec/dummy/config/boot.rb +3 -0
  35. data/spec/dummy/config/environment.rb +5 -0
  36. data/spec/dummy/config/environments/development.rb +56 -0
  37. data/spec/dummy/config/environments/production.rb +76 -0
  38. data/spec/dummy/config/environments/test.rb +50 -0
  39. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  40. data/spec/dummy/config/initializers/assets.rb +12 -0
  41. data/spec/dummy/config/initializers/backtrace_silencers.rb +8 -0
  42. data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
  43. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  44. data/spec/dummy/config/initializers/filter_parameter_logging.rb +8 -0
  45. data/spec/dummy/config/initializers/inflections.rb +16 -0
  46. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  47. data/spec/dummy/config/initializers/new_framework_defaults_6_1.rb +67 -0
  48. data/spec/dummy/config/initializers/new_framework_defaults_7_0.rb +117 -0
  49. data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
  50. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  51. data/spec/dummy/config/initializers/session_store.rb +8 -0
  52. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  53. data/spec/dummy/config/locales/en.yml +33 -0
  54. data/spec/dummy/config/routes.rb +4 -0
  55. data/spec/dummy/config/storage.yml +34 -0
  56. data/spec/dummy/config.ru +6 -0
  57. data/spec/dummy/lib/tasks/remove_schema_dump.rake +14 -0
  58. data/spec/dummy/log/development.log +2853 -0
  59. data/spec/dummy/log/test.log +0 -0
  60. data/spec/dummy/public/404.html +26 -0
  61. data/spec/dummy/public/422.html +26 -0
  62. data/spec/dummy/public/500.html +26 -0
  63. data/spec/dummy/public/favicon.ico +0 -0
  64. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/--/--rAmByKtm0MnL8xXXDD62V7GaMXJB41PGYpkcDVC7g.cache +1 -0
  65. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-H/-HoxUZp14yWxlPRfwr8zr4NnyUAIoxc4A0TWoizdCtw.cache +1 -0
  66. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-c/-coqzCZSM-0wxDotkoWOlQabhKGWhh143WHFMK53TJ4.cache +2 -0
  67. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-k/-kCOhoKk1Fu5xtBHgA3f5bR_3UEtRYtRBBbAxnuEAqY.cache +0 -0
  68. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/00/00X-Dx7XvMmD59y9DbmBX8n8amyi0DnxvZpseW_zuU0.cache +1 -0
  69. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/19/19AOV6CKatQZK21h_rXMCzB8_zuX8qWwmt56qmrt2G4.cache +1 -0
  70. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1A/1AnErSaPi9_LX0qwRXmRu1_ROnFaxM4IecBFefnVDXU.cache +2 -0
  71. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1i/1iJJTKhmNHZa0O0LpBXVUHwKscaTeHLe2X3YgaHUpMM.cache +1 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/1k/1kliLj9Kd2jSY2EcJYkYfeKaIU7IsdHlYIwXltjJpXw.cache +0 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/20/20ImWtZR2kdu2W4HagE2cY3iLxhjbrqzjDViGjSj4pU.cache +1 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2E/2EX7iEADWBlei6Q6wKSyJq90KETrVghg8_2ZdQiTkl8.cache +1 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2E/2ExNzABSQbawrVV5L4YfULcZAabuF8fdKAxWlcmiZ9s.cache +1 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2V/2Vej7W4Hs74U5sJ3y19ucsMyXkkqFMBU1jlZBcS8ox8.cache +1 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2b/2bBqXSgVWORK7ud3Xzpx8-wKHCMMMqt4Z_9jNpkpn_I.cache +0 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3I/3IakavgfROEtBiPDnjvxFJPpufCARsM9OFp6Avo4Qpw.cache +0 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3P/3PnmW10YkIfjRCDVHUBti81IRf1zu48H6OXfGGidetE.cache +0 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3j/3jrvubzDyeSYbZ5LpobP0QlL6YtKaIr9pxJAWPvz0QY.cache +0 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/4Z/4ZYjL6BwG-4luPzGbr5tM-bfWDitfi9MIXmYPxSaFbY.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5-/5-NZ31xdNVQOUzgVAe25YKeWdAlXNDAm3bCyyA0bEB8.cache +1 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5h/5h0LRd6jysM1bODkNUguQPIiPq_yyyshQWiX2bQo7Dw.cache +1 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5h/5ho4h5pFPW9LbRUoDaOHiJpRM9WoE9r4BiB4x2IpHik.cache +0 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5r/5rpbtDytrYjudaQCIwG-YYVYMWTVr0IzfRa62Zz5q7E.cache +0 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/6U/6UnV4bmBnVj9Q2MYBMvN_z9580jGYixHRf-uE14rmBM.cache +1 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/6z/6zghnUiyy2JIObJo2QdSyyeW1dNl8S7A_WKUQZiU71I.cache +0 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7A/7AuGblG3kfw0biDvVJd7h14-GPrSks5Tm_jtJFxLpJU.cache +0 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7C/7CMRdPP_5RHFOYd0UA0sUc54XQKmdHMVxSF4wICezOI.cache +3 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7G/7GNYo-ooWC0NdNXqwCstEi3K9A4r_2ZnGMB7x9OOA7s.cache +1 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7X/7XlOmVF_-kN_KeAPnDH8KYCUjoh-wME9C1KzIQQp738.cache +3 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8C/8CFoKvJc86Aidx4dFmaWlJjvO4w1BTNvUu9EJR_b2MY.cache +0 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8L/8LcN0hnf9LwU5wTh-cUTI0axF_C3ve1-bHmFA-OS6bc.cache +0 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8n/8nK17HLAxXcrKXTRPbDh4yo_wsUAbkJeALf3_zNMGNM.cache +0 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8o/8o4S7UljhNV2Z2GyNvih1qSrliFB4oY9txiIP1gPxiE.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/9V/9VpuJd_MaYUudt4ZqhxZIAynaw48Q-ENsH4jpizolu0.cache +2 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/9m/9mDRpW3sa10mOv8Hborg_OnKaMwoxyKgDQtiJFEbdew.cache +1 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/AF/AFMZ8jQk8PF9S0Dya8-Sx0oY3BEgLJEYwiMrsUj3SUs.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ad/AdzUPsYCUeyeJM9QDOc55BMiVfPKTj9RjTNptv2fthY.cache +1 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/B4/B47HHTG0X0oHVtPd8O7l1-WogI9CwR_onS5udO4u02U.cache +2 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/BF/BFgv1Q06JYYiWDGgzV1wEFsiARisuKLyyMQ79aM0vww.cache +1 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/BK/BKnI-D57Lom3NkMA5Gg0eL975J5GtpwQznyKm62_Ig8.cache +1 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/BX/BXpqYQikJhkDIeSunYQM4AOxzeFHhzBGL1HjMQGuOyg.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/By/ByNoD5nl2lLfZdy0StFKfI04h0n2GvebYawt7Pzfx2k.cache +1 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/C2/C2UCua3N7rS37BDP6CuHQh4N-0EsipLtm4gS0jOTWTs.cache +0 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Cx/Cxg1MzLUOTufOyyAraZ5-lhDoTmJZ0_UR2wP1CAATmQ.cache +0 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Cx/cXR4PS7r0QhE65tK8kBbSHubGuVGlZnhwnChH4Q5O8M.cache +1 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/DO/DOm8UJqQNZ2WSyt9UJXgao467OHzmWMY1WNK6BO8-Cw.cache +1 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/DR/DRmS0YNZkpmdjtGqNaJI5CVUFLzZvp8tMq0M-VlEPns.cache +0 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Dp/Dp0tuYIHrdk_SzxNULPVoCwUSXCoo0duQz_gP2yCsKU.cache +1 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/E5/E5bSQ0e6WGQAXIGED37jE9854jXP0izuMW-qOBnOJ5w.cache +0 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/E9/E975xsqzWYLl1fla_STjHkB3_kIcjxWyjYDAAKe39GY.cache +0 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/EN/EN0Ln6CmfYd_aS0QfjeXAF6YnR6KviZkiiujMQny4R8.cache +1 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ER/ERk6Yzv-Nk3zf2DwC31Byh7Hch4uK_2qhJdfKmyUoCw.cache +1 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Eg/EgkR6bN9owtB1hLTwWmUQR8phmhoT3lbqWRQ0n9-4xY.cache +0 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/F0IzP-ooVgPlRLqw1nTZPbFT93fmWvNLsNW0HSicwiE.cache +0 -0
  117. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/F0YaMcusCPsKvUsl6Qrv4E8sHLUOOO85lIKCu6JAxvM.cache +0 -0
  118. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/F6/F6ywfHEq5RIh4l5Csa6TG4WGDaUyiNiVMsE9OMiXvqc.cache +1 -0
  119. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/FG/FG52-VtsSB6Uk5pQzX9Fc0IaUHUZdY6-43F1-6j8zuQ.cache +0 -0
  120. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/FH/FHT4wSpWbcJV2vmEmtdO1QVHHOfyXnwvJTaCYZNZGX8.cache +2 -0
  121. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/FS/FSkqX8HmkLi0NUTvRqOGdFQc0h5x-NffdpVY5QMyZ3E.cache +0 -0
  122. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ga/GacyHXwq3SMNZA8i9qCG5VnHQK1ohFOL5PvEceVJVXM.cache +1 -0
  123. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Gg/GgYS5qpRC5JBC7lT5WQg1sugrKqeOGWjL1_EJqeQdBE.cache +1 -0
  124. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/H5/H5aYXwLLA6hunjp2ZD3-WV5VecvRIcDfEwGfnHtnKlI.cache +0 -0
  125. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HF/HFoCxeVSBDPGavW78cZ4NRuV6_DcHcGO15vtyFQpsIc.cache +0 -0
  126. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HF/HfwMtjCwm3esZHcIUOxsATdY8YDIwBj0TpCJcZdSRbo.cache +0 -0
  127. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HM/HMVilv2P7QkEfX_XqjY6Vi-HhikAQzAtJ5pOOKBXZ8A.cache +1 -0
  128. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HP/HPFKy86tI3wqp2v0mLD6sxo7d6OU1Mm3A3HqJZKEEHY.cache +1 -0
  129. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HW/HW5J4Rr-E5FGCR8_kiIq5eWeeu85iHXycfljRUuGaHE.cache +1 -0
  130. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/HY/HYntTQo8ujQN_iPUCmrZxow3mCeKQiZ9svGhshJMf18.cache +1 -0
  131. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Hv/Hv-sCE5Em5YVBiHFWgptmpGjXv-8PXUUVKml2B4r7jk.cache +2 -0
  132. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Hv/HvkyKaQDcuqTxW2OjKH3mgojlqBTUytx5EBEquRtTCU.cache +0 -0
  133. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/II/IIIk7k5PJTIB8s9xvs5yADHh_R-GjTInWvZyExXMQrg.cache +1 -0
  134. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ih/Ihnlkw3Tfk01su33Dluw8kB_to7SP71G2tmEuj1ewGs.cache +3 -0
  135. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ij/IjD5hEBpHPVLqpBvBOq5xoL7_OLi_jyidEQeDZkH51A.cache +1 -0
  136. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Is/IsKkAZpcet0IgYLP9ot1iuwmrVxgpNCahS2eQICEgpw.cache +0 -0
  137. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/JB/JBnoQUvpupRs9ABR-ZC0om41bMO7Ew_7-n9xKqhfPK8.cache +3 -0
  138. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Jo/Jo4kA4keuGt7HEgEHyTmsHD6EeZRghqoq-c7mxDFs_k.cache +0 -0
  139. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Jw/Jw99Bfcj2I-8QDAVxuxejfPqQvJMpXI9QhcmTA_fpN8.cache +1 -0
  140. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Jx/JxZK86jYw-hmXkkt4XFinkCXLM76albIzT4YcKNsslg.cache +1 -0
  141. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/K-/K-gLlOoAf1VoJsDSh7EysiST1K12nABer0Bktfo4ILg.cache +0 -0
  142. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ki/KiP5gu20LeRLp87vzBsu9YZgmM9RDblIVi5h5bSph2I.cache +1 -0
  143. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/LQ/LQJfG2MNHnyXOvsz28VGUCv80Ct7nj8HM_i-cKqjSFg.cache +1 -0
  144. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ls/LsChyuxgjfk5l-ho4B-e93iZ6mHSK3IjvhmZfHFXUTI.cache +1 -0
  145. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Mn/Mn_GXGiBEOM4BXHo8WoOo5rTCTfKcksaW64banP-7P0.cache +1 -0
  146. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/N7/N7uGCIOmTFR3e5s880xHaOuAwgx8BXXXvUgawWXyvEY.cache +0 -0
  147. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/N9/N9I9AndWoHI25CuWHQUs3o7tMw3lFwKckkjnbwlOtQk.cache +1 -0
  148. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/NT/NTNTUrI37iM00TCO7PJY6za3IyZlQvujQQYqHwrxXYE.cache +1 -0
  149. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ng/NGh28TnI8MI4EX0k9Xg5dDKAjE4FJB08_WByjLoCDU4.cache +1 -0
  150. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ng/Ngz36YYa3DqZ1hpWDd25R8i2y7XW6t5SzDsuhn0EVbQ.cache +1 -0
  151. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/OX/OXjxHnKgHLaEpsF_RwpLYLqo5-hdvkGh6oUY6iLnsXY.cache +0 -0
  152. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/O_/O_JDKIlx6_eN5BPCYmp6D7GkCiNHgwxl31cnRpzo9j0.cache +1 -0
  153. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Oh/OhsTmQH5UXh9lL-r3a5eN9zhBeb3myfNhDKodW0dre4.cache +2 -0
  154. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ou/Our8Abkp4wOx_HnV5wwAdB73DEHm9JMVBPH_oOGDz7I.cache +1 -0
  155. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/P-/P-cEaKuaX89WINQhpcO1HiOZGqDbnYma0EhsyA02_HA.cache +1 -0
  156. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/P8/P8Mf8CDRiKWckVgwrRzsf7iOqv_YTb2NSB1mk9PGXjM.cache +2 -0
  157. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Pd/Pd9js4FS4IkizfaoEwofmx-u1BuH07fHfo4jRO1s3uo.cache +0 -0
  158. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Po/Po6QNSUVcwV0hIj5S12kQhKKRUT-Av0D7vv8ZEezzBk.cache +0 -0
  159. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Pz/PzpWq0LzzmiGetCVYTJP2fESglsAjH79oS_N_FmcpEA.cache +0 -0
  160. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/QQ/QQjZEwyt47hcGLBQnd4bxK1RnL6388wlWt_-qRL9QxI.cache +0 -0
  161. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Qx/Qx4wefCS41Nynaeh70sR1oQflaxhIqgqI57YIiZVvhc.cache +1 -0
  162. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/RE/REM7Qt1meU-tf1Wwzx9m2Ex8FSNL4Ac4Hh5dUjCpohQ.cache +0 -0
  163. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Rb/Rbofto9PCO3Xqo5Kb2bfKxidbBqCea8OvPV7fgZhYqc.cache +0 -0
  164. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Rh/RhELObEP6WOgvZRsFG_UOLejgNpEi80uIgg2frnOVGM.cache +0 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Rk/RkuFQbKDq4yK0RuxrAAyktPGjclHBNC2rQ8MxWqxhc4.cache +1 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/S1/S11sGtH5-7UHEft-KOEyzTjynx4QxVUCkXYLa6bTvSQ.cache +0 -0
  167. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/SA/SAePtLkGMoh0xPlyx3KSVOmY2S2WceTxhNmVPM4Avwk.cache +0 -0
  168. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/SJ/SJ37zvjYsOc0W_N121qfBac5Ave5tUIijbKa8ih1JJE.cache +1 -0
  169. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Sn/SnoRRhUoQdDi9EbxvaevgfLauCLgLVsheiKsR54Kjfw.cache +0 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Sw/SwyIlWe4mW-S1D1KV1lW2qTNWZwF_-APRUsJvXma0hA.cache +0 -0
  171. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Sx/SxMkFQvQYrgxva3so2GOBrxfDH9NvdeDTZeAIKuhsBs.cache +1 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/TA/TAJETM9mHztCEnd1ZOWzkHeeOUm-LVcyWpzaI3OklUo.cache +1 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Tk/Tk3p5H6iRTsufo_OZhbd96jjvk1iIijfJn67gtl8_Rs.cache +4 -0
  174. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Tp/TpEhz31Vry4blOsb19xfTmLTrv7z2lOfuzTdE3GAf08.cache +1 -0
  175. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Tw/TwXQz2y7XuFI6moY1b7OAfRj0yvQgh8FHWLelbIkpqQ.cache +0 -0
  176. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/U2/U2uaXPqVIKdXq3WhD4ve0eNnFPR1mLkVw6YRBMpbJMw.cache +0 -0
  177. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Un/Un1S7oFpRfo8iXfpTHfmLfKpuowlu3a7xmoRX9o8o1o.cache +1 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Uv/UvzZcA7VsfUnNXg1faVWZBBwvpDuMwkhFsp8Yty8c5k.cache +0 -0
  179. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/VO/VO0NU-0YjMWB518kDQvBAN_TB-f163jCha33D9HXoGI.cache +0 -0
  180. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/W8/W80hQWjpEvHcvAv8NK2J7OVaGOqetk_9zImXzOL3kKA.cache +1 -0
  181. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/WQ/WQlY1gKet7rqxIa0Tmm-pXMzm9uQKfTC_iN6y0UErQs.cache +0 -0
  182. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XF/XFQ1cyb4geU4-m45TZ6f8O1-6F72xmBPM6L7RAgpmNk.cache +1 -0
  183. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XG/XGKSlgoUO-Ao6SLWO0LBovvDllZF_qlYf6CMxVVP0UA.cache +1 -0
  184. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/XT/XTT3QmjQsOlMF_dFPgMD4V68iD-HDiZZUnKLMjhCHHI.cache +0 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xa/Xa5vmj80u39cbSYwvFp8MP0ZjZPxbhoBXbwtDSwrTj4.cache +1 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xj/XjGC7OdhT2-8iU6mpw1aRSXg5-HUu6lrpAxqK1kPYN8.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xl/XlwIbBHvQN1mPdaybMu74nsakLjjptziEiHWZLXrKro.cache +1 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xl/xlpNYJ-I5t3H-Q-ktfTeNktZKv6lfTzk3C1g6p7FHWs.cache +1 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xv/Xvs5FwiU3ADexvO0PM5dqsaii2mju3EmTsiTQs1rhGI.cache +2 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Xy/Xy_jRQku90hZK8aOJcggEBPFu_2USlHMFYhAAeCVjyo.cache +1 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Y-/Y-56loF4CG0OZHkkSpbGpqs-JQXKnU5qxpUfMu94_dQ.cache +0 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Y4/Y4j86RBxOwUicCjzQOzXGy0qIoq5T-vUA6grPaX7-vA.cache +0 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YO/YOYHgN_CYZvhn7Bx4JjkkFvHaBGRtjEmdO8dGzpJeo0.cache +0 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YO/YOgxpoMg5VdlPVutuEBQEYvtxgnWIrDYp2Kd_m_2QCA.cache +1 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YO/Yo4PIprn8GN72L-Uf7l9Llo1pi--fmh2Pw20qFFYrSM.cache +2 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/YY/YYlQ5LzpBHieP1jNUAFLRW78t99PoS6PQZoHLzvAmqQ.cache +1 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Yj/YjHZbRQ4e3rroImtj_1EGCKGdU4d24gCi5kjgJKT0Eo.cache +0 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Z3/Z38TZfN9y2TJJrdYAogo8EKs28avVKmbyCxwshjm8S4.cache +0 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zc/ZcGWNhggUU9-hpR3Rp6n3lGdLffDUk1-ZHkdrgsI4Fs.cache +8 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zm/ZmAvNaLlj36Yl3dRtL5jXgQb1ROtK6FDQ8UIJvDf-50.cache +0 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zm/zMfeZQV1ZaglFuhJlqfoH5nBqycWIGi4TtdOsBXhiQE.cache +0 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Zo/Zo-5NBFdii8PLufO6jPHfksOVBbZgxXwyiIBnX6-arI.cache +0 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_S/_SDIVNAeJ2JgDNkkZbV-DbL7PF6UxhpIdNmGPIqepj8.cache +0 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_T/_TuZsxsNu8oWeosPWrwp5FFjJMdw3-bR14LuI45gyfI.cache +1 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_e/_eLlScoirmskBHgaco2SBQSRSvidoT0JqA7lwM6z5vo.cache +1 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_f/_fJObZyqnMEnxYaRROG2kradIRxhFG-d9emrXIrFU2E.cache +0 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/_m/_mVz9daeaggkYCgqZHOUq2rXXwnDVVSgG7TxxuRhl3o.cache +1 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/a3/a3Wlw8mfSHL3Dkg2rPHq8sfIB5_CWrja7maNwTSlHeY.cache +0 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/aN/aNnagxTBHQBX-Uk5eD3Zs8HVPb39rRYKAWRusog5ZGQ.cache +0 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ae/aedjSmdfbe95obaMai-ieIh6a_3N91TgaJYjTo7tIZs.cache +3 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bB/BBePVrVgXjj33MChLDgH52MwyAavBoJw5dl8m-xbnbU.cache +1 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bB/bBrzjV__VsMBy7B9FWdu9no2bbDQ3acRrIW2SOfshL0.cache +0 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bL/bLXE5zW1q67OPev2YvwAbhGVJ_SbApqE_Ls58OvrNu4.cache +1 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/bN/bNYxhHdkUUL8Y1nuz9_-kyZ_UN6VLeoCzNMW1EVTXXY.cache +1 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/c-/c-fmu-AJTAuWWqRYRITv4TvxepuQd5pl9zoW655uOss.cache +2 -0
  216. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/c0/c02CYJm8uXV42AjNiiheDJGwvAktcPQpSHOfMdT2O6Y.cache +0 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/c3/c36-ILADjdI0hK-vAafc2slgc5IG0s2L1_iUhB7Nt5k.cache +2 -0
  218. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ca/caudjI4goS55DlSgnZ85x9H_OPROOa_IzcOte5i94Lw.cache +1 -0
  219. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/d8/d8UVHo14387ggWM-ihl2hnCGjrdD7kD1EWmtKoJFhZs.cache +1 -0
  220. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dE/dE-UXNWFaPVOroV1gDYLPr11Aac3uIEV1U2_0DlBChY.cache +1 -0
  221. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dG/dGQHIXD6OxFuKLBgfZng3jhaLt4E2mL4rXbIKIgi-1o.cache +1 -0
  222. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dj/DjDdFr4eUKFW1ELhsrqjNn-1fgWUHaiDP9K8fEzRSTo.cache +0 -0
  223. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dj/dj4jKx8uxTq7bhT8X-o5YE4-MenFUARsxg9p9-aBGn4.cache +1 -0
  224. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/eZ/eZeS8IM2kEkG8Di1hc78lPtrcKgCxBoJF3m93SwSl2o.cache +3 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/eq/eqSiLs66O8JL_zsULRFTvv4UHaCKJfKGXT9SE-ENGTo.cache +1 -0
  226. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ex/exxTGIdEZtv28XRzt5nkLHq-q3ax6zwXM5TYwcLem4Q.cache +0 -0
  227. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/f3/f3Vhu9wCLqostdP0O1KvT8rrQICvCHlWDOVcqoLaQaA.cache +2 -0
  228. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/f5/f5I8b7-97jbOTGMz6kOh125uhlC71AwPFmfx9An_Yfs.cache +1 -0
  229. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fJ/fJL-23z_wILBwjstvUogxa7XE2gV8euVbemL1A3bN0A.cache +1 -0
  230. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fW/fWu_Jbmw7pCUuw6NM9FHK6dHakwoZlgl1WrLDPjI1Xc.cache +1 -0
  231. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/f_/f_92yxHv4NT467Qe_368dBwfsNG0JjOW6ZGNNSN7B-4.cache +0 -0
  232. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fk/fkGFDnQy3ZoizGrxvBeicNKt4gKZq1tbCY98d9J3bu8.cache +1 -0
  233. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fn/fnsUMJ-l4Qq0Mgz90Uwq5iQcO0Jz6FM2aphVdoaj6PQ.cache +0 -0
  234. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/fp/fpp4a0aLsdj0GWG6PDEb00tmkbs2HAV_wcCcnFKkdFQ.cache +3 -0
  235. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/g1/g1FOHMzVGFlom-5VB0PL5bMu4w2PcyC0dN6H8iOFTaw.cache +1 -0
  236. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gp/gpk1qbxhyFLe1Ti05iOTnBDoV47K_XwltWsrci25r6E.cache +0 -0
  237. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gx/gxNDUXeSuAAy-u4tltwoYq4NyMqaNFtuB5ekyLW5CZg.cache +1 -0
  238. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hB/hBuH2UD-FyOB6d5tntOeamH_P2DhL5fnZooR9eSxS0U.cache +1 -0
  239. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hC/HCSca_wtgnbQcyCOUzEgY1HA1AiGPSo5O_UlH2OHxVo.cache +3 -0
  240. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hC/hCZpc9fQarc_-WwXwQlBGJdfyf8K0j0oCsD5wwJ87fQ.cache +3 -0
  241. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hH/hH-9z4LbnPE5PvD_Ulfl2n7KLJ2t85eBdm939oK99jg.cache +0 -0
  242. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/hj/hjt930_FBM8T4TSqao690Ut9wpyBcyovx50LwBnwfCI.cache +1 -0
  243. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/iM/iMnsKhKBVL5ZlU312QbDxKAQxdbWixigrdtm6nkNIpM.cache +1 -0
  244. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ie/ie01ktpzESjQATjWLtmJrU_SqYGTPbXTfk_p1sIkyLE.cache +0 -0
  245. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ik/ik91oPGrzPQ28WVZeMtO9eXMoAn6dIewX4mtG6oE3wk.cache +1 -0
  246. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jD/jDbBgIr3eqwHN2tbK6dfEbBh153VcG8w2gIc00cvUSI.cache +0 -0
  247. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jL/jLgFs9r0he0nwxve_QPSGsMCwD8DN0p2dutPcBEdudk.cache +0 -0
  248. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jR/jRfx5gPnRK0E-bKji2jhWfatCZTkGQLNuAh6tGzN7Xk.cache +0 -0
  249. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/js/jS7F-4ji84iKnL6VccBetACQZ09FDa-jFeJcpbWKZp8.cache +1 -0
  250. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/js/jsLM__rizw2y6oZgK1J92rDoGld6ksh8IC4bZik5StQ.cache +0 -0
  251. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jt/jtsPqVuhIBCkiezypSQiA91Gu9cHxJ9HYIJgyOFzWpI.cache +1 -0
  252. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jz/jzgPDHzDiORAkY9cdIk7iD6aeeMlQFSiK1EZMb5LArk.cache +0 -0
  253. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/k2/k2DnReFaxm2COfOVCliXIWmrQW6SFKrEzK0C4UVmMfw.cache +2 -0
  254. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kT/kT5GPb8H30zL28XXLxEpjiOHbvkDuIXPWGblRef1BQA.cache +2 -0
  255. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kX/kXQi4LdsbeCcGgz0DItW3yQ_CNJBjgRr0_-rUgRAX5Y.cache +0 -0
  256. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/kX/kxCCxS0DA1OuBKQZiE2l0OaLlibk52cfWdP8-W62Uew.cache +0 -0
  257. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/l0/l0bpxrry7l99VYb6OSfDAuRHD8b3vScsEM2rKwWbzbg.cache +0 -0
  258. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lE/lEn5gC3LZEbwhSVk6N-pbWaJ-B8-V9Ni94RB0NOcF7s.cache +1 -0
  259. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lG/lG3iHoJOI6LEroFQ0eatdHaC4LMdejPH2WCGx-hj0IM.cache +2 -0
  260. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lH/lHgP5ecRDTRlmWXvJkjL7hXApyVNu9okZwu0qUPVWLY.cache +3 -0
  261. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lM/LmI4-RSp3IzgufIh-m8oOgwQDjOVD3_Pg6uiSwi-ZMA.cache +1 -0
  262. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lM/lMK2-DaB5fyKC0Mx4GC4vZmeh-2U7o19t0u3lf49BJM.cache +0 -0
  263. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/lZ/lZbVP0P4nhiaXsNfwakCwfnn7S1KRJFvuTmvNd-hT5Q.cache +1 -0
  264. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/la/laz6UauLx5eH2uAX2-MoTe8LI_w9k3Pc2s0av5zP5Os.cache +0 -0
  265. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mB/mBIInGzzmZtHE9f_MonfEGNoMq6Rt6w7hFaGzK7CY3U.cache +1 -0
  266. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mM/mMNvregKyLKC7sUeixSvPy9QJVIhpQuF9HUHIFA8v5I.cache +0 -0
  267. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mQ/mQrMRifZ6T4NVAvNTigREMDQ2lIs2tBdk_HPBeh5c0E.cache +0 -0
  268. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/mi/miMTncRS_QRcUmEjrMCCLHvqpyP3Y3tevYqbGeHNCwY.cache +1 -0
  269. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nP/nP_6hZekGfWlK1BxG3Jpesn0Wg-PlXPQvx4q-oSaUnc.cache +0 -0
  270. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nc/ncvbMM5nXJrd6F1pzx0GyKcFlJsMrhApX7mIGd-Y_C0.cache +3 -0
  271. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oA/oAnMt8rD2Y8KoKS-OlshH3pRIvvjCflKb2WCHTbT2NQ.cache +1 -0
  272. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oJ/oJupiasx8q1af4x7mHMbTup1gJqv5z7OoQJ4L9Ss4KY.cache +0 -0
  273. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oJ/ojRlXNPfTajXI8xb3VK2gQI6y7uLUEYOp_JmuI98Nsk.cache +0 -0
  274. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/oY/oYXCW9fFRCuaXxAA0yRPTDT-kwODWS_XFZKsTnOZVww.cache +0 -0
  275. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/od/od4Hn-hIPfcKzoWdAX0i_U9Uvfhbz0pGLNeu-Yy6BeY.cache +1 -0
  276. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pX/PxyzWwsLWJGP5H1hmuPZH1ecFGSer_3lgnMoR8DL1_0.cache +3 -0
  277. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pX/pXatIzIMlyuYQ5ocuRvGOdW5SUer7V9bmUchsJSTmOw.cache +1 -0
  278. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pa/panfaQzZeA3AGdf_J9-Bt-ojz0Ag0wZLM7zWyFxcN-8.cache +1 -0
  279. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pn/pnkosyuIYxWPtFEhs3pZwDW14neSEZ8dpDZenAQEWCU.cache +0 -0
  280. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/qF/qFeHFyL9X1q52qcX5G3kWdyfIvGSAxa94G5-X3zKJUw.cache +0 -0
  281. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/r4/r4RLCA2JH9MDKvTuYkWxANEAgkBtBkzL1xfLYb2bdWY.cache +0 -0
  282. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/s7/s7WY0ri3ThG-7kmTez9gaezuyzIHtDnCQsyyyVaAI1Y.cache +3 -0
  283. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sH/sHwc0BgUVQF-beOHCqO1HfAgQLZZvrDCgqRhlcqkAIY.cache +1 -0
  284. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sY/sYHbJlpT7n7snUMZPsqzsD7SVxtO_TSyQ2ozNXpzvlE.cache +0 -0
  285. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/t-/t-RQAyny112Yh75r-KP8uJpuzS5EaSUCOkxaII8hCdQ.cache +0 -0
  286. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/t6/t6f70gfkYYgqo61jqkAEsqjVugK7FNe4uaMLVutlfdo.cache +1 -0
  287. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/tE/tEwbQxrUFzGwUKGtwW2YwXMdEewqp5mexvCrPp3AyMg.cache +1 -0
  288. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/tx/txGVXlv6uBNHc06d-ej1FrGSSQSzLXTMmuw5M1QkPTM.cache +1 -0
  289. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/uA/uA1tfNsvpEfJssTEQgl1EAfSoug4zHSuBBFeG70UPvU.cache +1 -0
  290. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/ue/ueCpC7IbEUV9n26Ai5S0JkBvrThWhC-QECDjXZ52I30.cache +0 -0
  291. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/us/us3xxjCK4Ovczw49X1Mosyyo_fXkNcPZB5ZthtYOBj4.cache +0 -0
  292. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/vE/vEqA11YY0Pn0C0Ims0FY0t4THzZHwAODRT46yLLRQEA.cache +0 -0
  293. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wM/wMledL4ttQiAHUdjtbGPhPWrFsJcADMCeqYeQLQVQ50.cache +0 -0
  294. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wf/wf4nZLiUKwZPi5bAkP8uOMlsezO8FvmeJQlvNcFnUSc.cache +2 -0
  295. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wt/wtsfbgVHG5HnQeSccq2bvve7RsTjfx33hOx_4lcEau4.cache +1 -0
  296. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xE/xEKXI_k6To35TyFYx7_CHpLXMBN9u1yvL7XbBGSCMzo.cache +1 -0
  297. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xW/xWTKryjn-5sOpmPF4zrGDd-ThrSCEQuLXAShhkbIFFY.cache +0 -0
  298. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xZ/xZ1IbV-YWC-jHrkzCffY4GvD19oIfe753l7dzD3IYew.cache +1 -0
  299. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xo/xolz1HzMb_2_lfkmvbaT8_QWgxaJqQ5w1OtPZWqKHiA.cache +0 -0
  300. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/xr/xrxYZJuo9pgxXDbGXmtOWUlzq9jYWuLOsTuFS2ktVlo.cache +1 -0
  301. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/y1/y1cAP8pJ30_K5pLPPRJhDnXgB7ggVZ6RFgg_kanmG0A.cache +2 -0
  302. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yT/YTz62lYcOj7f7nmZ-Z_jpl5wOhkaWZp99r0tQxT6SVY.cache +1 -0
  303. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yT/yTdpyb-v7EzirDsmEwwm0GdagRBPzWl4V5wTe4irItA.cache +1 -0
  304. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zU/zUK2_euW_9gw2XdaZ6kpwsCEP-RGLn4V52h0Y4eEbys.cache +1 -0
  305. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zY/zYCYsTXX3QYnqE-YOMjmjL1wo5MujSkR4CeStEjablU.cache +2 -0
  306. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zs/zsaNhb7gDFFpZzrSu8n9zLQu6ZPD3DfWc1_7m9NtMOs.cache +1 -0
  307. data/spec/dummy/tmp/development_secret.txt +1 -0
  308. data/spec/dummy/tmp/local_secret.txt +1 -0
  309. data/spec/lib/helpers/ice_cube_select_helper_spec.rb +60 -0
  310. data/spec/lib/ice_cube_select_spec.rb +50 -0
  311. data/spec/spec_helper.rb +9 -0
  312. 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
+ })();