inline_forms 7.0.4 → 7.2.10

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 (351) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -0
  3. data/CHANGELOG.md +163 -0
  4. data/app/assets/fonts/foundation-icons.svg +970 -0
  5. data/app/assets/fonts/foundation-icons.ttf +0 -0
  6. data/app/assets/fonts/foundation-icons.woff +0 -0
  7. data/app/assets/images/jquery-ui/animated-overlay.gif +0 -0
  8. data/app/assets/images/jquery-ui/ui-bg_diagonal-maze_20_6e4f1c_10x10.png +0 -0
  9. data/app/assets/images/jquery-ui/ui-bg_diagonal-maze_40_000000_10x10.png +0 -0
  10. data/app/assets/images/jquery-ui/ui-bg_diagonals-medium_20_d34d17_40x40.png +0 -0
  11. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  12. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_25_c5ddfc_40x40.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_40_db4865_40x40.png +0 -0
  14. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_50_262626_40x40.png +0 -0
  15. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_50_93c3cd_40x40.png +0 -0
  16. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_50_ff3853_40x40.png +0 -0
  17. data/app/assets/images/jquery-ui/ui-bg_diagonals-small_75_ccd232_40x40.png +0 -0
  18. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_15_0b3e6f_40x40.png +0 -0
  19. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  20. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  21. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  22. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_20_e69700_40x40.png +0 -0
  23. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_22_1484e6_40x40.png +0 -0
  24. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_26_2293f7_40x40.png +0 -0
  25. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_75_f3d8d8_40x40.png +0 -0
  26. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_8_333333_40x40.png +0 -0
  27. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_90_eeeeee_40x40.png +0 -0
  28. data/app/assets/images/jquery-ui/ui-bg_diagonals-thick_95_ffdc2e_40x40.png +0 -0
  29. data/app/assets/images/jquery-ui/ui-bg_diamond_10_4f4221_10x8.png +0 -0
  30. data/app/assets/images/jquery-ui/ui-bg_diamond_20_372806_10x8.png +0 -0
  31. data/app/assets/images/jquery-ui/ui-bg_diamond_25_675423_10x8.png +0 -0
  32. data/app/assets/images/jquery-ui/ui-bg_diamond_25_d5ac5d_10x8.png +0 -0
  33. data/app/assets/images/jquery-ui/ui-bg_diamond_8_261803_10x8.png +0 -0
  34. data/app/assets/images/jquery-ui/ui-bg_diamond_8_443113_10x8.png +0 -0
  35. data/app/assets/images/jquery-ui/ui-bg_dots-medium_30_0b58a2_4x4.png +0 -0
  36. data/app/assets/images/jquery-ui/ui-bg_dots-medium_80_ffff38_4x4.png +0 -0
  37. data/app/assets/images/jquery-ui/ui-bg_dots-small_20_333333_2x2.png +0 -0
  38. data/app/assets/images/jquery-ui/ui-bg_dots-small_30_a32d00_2x2.png +0 -0
  39. data/app/assets/images/jquery-ui/ui-bg_dots-small_35_35414f_2x2.png +0 -0
  40. data/app/assets/images/jquery-ui/ui-bg_dots-small_40_00498f_2x2.png +0 -0
  41. data/app/assets/images/jquery-ui/ui-bg_dots-small_65_a6a6a6_2x2.png +0 -0
  42. data/app/assets/images/jquery-ui/ui-bg_fine-grain_10_eceadf_60x60.png +0 -0
  43. data/app/assets/images/jquery-ui/ui-bg_fine-grain_10_f8f7f6_60x60.png +0 -0
  44. data/app/assets/images/jquery-ui/ui-bg_fine-grain_15_eceadf_60x60.png +0 -0
  45. data/app/assets/images/jquery-ui/ui-bg_fine-grain_15_f7f3de_60x60.png +0 -0
  46. data/app/assets/images/jquery-ui/ui-bg_fine-grain_15_ffffff_60x60.png +0 -0
  47. data/app/assets/images/jquery-ui/ui-bg_fine-grain_65_654b24_60x60.png +0 -0
  48. data/app/assets/images/jquery-ui/ui-bg_fine-grain_68_b83400_60x60.png +0 -0
  49. data/app/assets/images/jquery-ui/ui-bg_flat_0_303030_40x100.png +0 -0
  50. data/app/assets/images/jquery-ui/ui-bg_flat_0_333333_40x100.png +0 -0
  51. data/app/assets/images/jquery-ui/ui-bg_flat_0_4c4c4c_40x100.png +0 -0
  52. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  53. data/app/assets/images/jquery-ui/ui-bg_flat_0_e69700_40x100.png +0 -0
  54. data/app/assets/images/jquery-ui/ui-bg_flat_0_e6b900_40x100.png +0 -0
  55. data/app/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  56. data/app/assets/images/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
  57. data/app/assets/images/jquery-ui/ui-bg_flat_15_cd0a0a_40x100.png +0 -0
  58. data/app/assets/images/jquery-ui/ui-bg_flat_30_cccccc_40x100.png +0 -0
  59. data/app/assets/images/jquery-ui/ui-bg_flat_40_292929_40x100.png +0 -0
  60. data/app/assets/images/jquery-ui/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  61. data/app/assets/images/jquery-ui/ui-bg_flat_55_994d53_40x100.png +0 -0
  62. data/app/assets/images/jquery-ui/ui-bg_flat_55_999999_40x100.png +0 -0
  63. data/app/assets/images/jquery-ui/ui-bg_flat_55_c0402a_40x100.png +0 -0
  64. data/app/assets/images/jquery-ui/ui-bg_flat_55_eeeeee_40x100.png +0 -0
  65. data/app/assets/images/jquery-ui/ui-bg_flat_55_fafafa_40x100.png +0 -0
  66. data/app/assets/images/jquery-ui/ui-bg_flat_55_fbec88_40x100.png +0 -0
  67. data/app/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  68. data/app/assets/images/jquery-ui/ui-bg_flat_65_ffffff_40x100.png +0 -0
  69. data/app/assets/images/jquery-ui/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
  70. data/app/assets/images/jquery-ui/ui-bg_flat_75_ba9217_40x100.png +0 -0
  71. data/app/assets/images/jquery-ui/ui-bg_flat_75_ddd4b0_40x100.png +0 -0
  72. data/app/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  73. data/app/assets/images/jquery-ui/ui-bg_glass_100_e4f1fb_1x400.png +0 -0
  74. data/app/assets/images/jquery-ui/ui-bg_glass_100_f5f0e5_1x400.png +0 -0
  75. data/app/assets/images/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  76. data/app/assets/images/jquery-ui/ui-bg_glass_100_f8f8f8_1x400.png +0 -0
  77. data/app/assets/images/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  78. data/app/assets/images/jquery-ui/ui-bg_glass_15_5f391b_1x400.png +0 -0
  79. data/app/assets/images/jquery-ui/ui-bg_glass_20_555555_1x400.png +0 -0
  80. data/app/assets/images/jquery-ui/ui-bg_glass_25_cb842e_1x400.png +0 -0
  81. data/app/assets/images/jquery-ui/ui-bg_glass_35_dddddd_1x400.png +0 -0
  82. data/app/assets/images/jquery-ui/ui-bg_glass_40_0078a3_1x400.png +0 -0
  83. data/app/assets/images/jquery-ui/ui-bg_glass_40_0a0a0a_1x400.png +0 -0
  84. data/app/assets/images/jquery-ui/ui-bg_glass_40_111111_1x400.png +0 -0
  85. data/app/assets/images/jquery-ui/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  86. data/app/assets/images/jquery-ui/ui-bg_glass_45_0078ae_1x400.png +0 -0
  87. data/app/assets/images/jquery-ui/ui-bg_glass_50_3baae3_1x400.png +0 -0
  88. data/app/assets/images/jquery-ui/ui-bg_glass_55_1c1c1c_1x400.png +0 -0
  89. data/app/assets/images/jquery-ui/ui-bg_glass_55_f1fbe5_1x400.png +0 -0
  90. data/app/assets/images/jquery-ui/ui-bg_glass_55_f8da4e_1x400.png +0 -0
  91. data/app/assets/images/jquery-ui/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  92. data/app/assets/images/jquery-ui/ui-bg_glass_55_fbf8ee_1x400.png +0 -0
  93. data/app/assets/images/jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  94. data/app/assets/images/jquery-ui/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
  95. data/app/assets/images/jquery-ui/ui-bg_glass_60_000000_1x400.png +0 -0
  96. data/app/assets/images/jquery-ui/ui-bg_glass_60_eeeeee_1x400.png +0 -0
  97. data/app/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  98. data/app/assets/images/jquery-ui/ui-bg_glass_70_ede4d4_1x400.png +0 -0
  99. data/app/assets/images/jquery-ui/ui-bg_glass_75_79c9ec_1x400.png +0 -0
  100. data/app/assets/images/jquery-ui/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  101. data/app/assets/images/jquery-ui/ui-bg_glass_75_dadada_1x400.png +0 -0
  102. data/app/assets/images/jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  103. data/app/assets/images/jquery-ui/ui-bg_glass_80_d7ebf9_1x400.png +0 -0
  104. data/app/assets/images/jquery-ui/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  105. data/app/assets/images/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  106. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_100_ece8da_500x100.png +0 -0
  107. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_16_121212_500x100.png +0 -0
  108. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_20_111111_500x100.png +0 -0
  109. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_20_1c160d_500x100.png +0 -0
  110. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
  111. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_25_453326_500x100.png +0 -0
  112. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_30_3d3644_500x100.png +0 -0
  113. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_30_44372c_500x100.png +0 -0
  114. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  115. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_45_817865_500x100.png +0 -0
  116. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_45_e14f1c_500x100.png +0 -0
  117. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_50_6eac2c_500x100.png +0 -0
  118. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_55_000000_500x100.png +0 -0
  119. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  120. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_60_fece2f_500x100.png +0 -0
  121. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_70_ffdd57_500x100.png +0 -0
  122. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_75_2191c0_500x100.png +0 -0
  123. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_85_9fda58_500x100.png +0 -0
  124. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_90_fff9e5_500x100.png +0 -0
  125. data/app/assets/images/jquery-ui/ui-bg_gloss-wave_95_f6ecd5_500x100.png +0 -0
  126. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
  127. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_f2f5f7_1x100.png +0 -0
  128. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_f4f0ec_1x100.png +0 -0
  129. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_f5f3e5_1x100.png +0 -0
  130. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_f6f6f6_1x100.png +0 -0
  131. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  132. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_100_fafaf4_1x100.png +0 -0
  133. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_15_459e00_1x100.png +0 -0
  134. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_15_888888_1x100.png +0 -0
  135. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_20_0972a5_1x100.png +0 -0
  136. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_30_285c00_1x100.png +0 -0
  137. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_40_aaaaaa_1x100.png +0 -0
  138. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_55_555555_1x100.png +0 -0
  139. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_65_fee4bd_1x100.png +0 -0
  140. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_70_000000_1x100.png +0 -0
  141. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_75_f5f5b5_1x100.png +0 -0
  142. data/app/assets/images/jquery-ui/ui-bg_highlight-hard_95_cccccc_1x100.png +0 -0
  143. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_dcd9de_1x100.png +0 -0
  144. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_deedf7_1x100.png +0 -0
  145. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_eae6ea_1x100.png +0 -0
  146. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  147. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  148. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_f9f9f9_1x100.png +0 -0
  149. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_100_feeebd_1x100.png +0 -0
  150. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_15_cc0000_1x100.png +0 -0
  151. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_20_201913_1x100.png +0 -0
  152. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_20_619226_1x100.png +0 -0
  153. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  154. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_25_30273a_1x100.png +0 -0
  155. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_25_67b021_1x100.png +0 -0
  156. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_25_ffef8f_1x100.png +0 -0
  157. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_33_003147_1x100.png +0 -0
  158. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_33_3a8104_1x100.png +0 -0
  159. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_35_222222_1x100.png +0 -0
  160. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_35_adadad_1x100.png +0 -0
  161. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_44_444444_1x100.png +0 -0
  162. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_45_5f5964_1x100.png +0 -0
  163. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_50_4eb305_1x100.png +0 -0
  164. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_50_aaaaaa_1x100.png +0 -0
  165. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  166. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_60_4ca20b_1x100.png +0 -0
  167. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_60_dddddd_1x100.png +0 -0
  168. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  169. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  170. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  171. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
  172. data/app/assets/images/jquery-ui/ui-bg_inset-hard_100_eeeeee_1x100.png +0 -0
  173. data/app/assets/images/jquery-ui/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  174. data/app/assets/images/jquery-ui/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  175. data/app/assets/images/jquery-ui/ui-bg_inset-hard_45_cd0a0a_1x100.png +0 -0
  176. data/app/assets/images/jquery-ui/ui-bg_inset-hard_55_ffeb80_1x100.png +0 -0
  177. data/app/assets/images/jquery-ui/ui-bg_inset-hard_75_999999_1x100.png +0 -0
  178. data/app/assets/images/jquery-ui/ui-bg_inset-soft_100_f4f0ec_1x100.png +0 -0
  179. data/app/assets/images/jquery-ui/ui-bg_inset-soft_10_201913_1x100.png +0 -0
  180. data/app/assets/images/jquery-ui/ui-bg_inset-soft_10_285c00_1x100.png +0 -0
  181. data/app/assets/images/jquery-ui/ui-bg_inset-soft_15_121212_1x100.png +0 -0
  182. data/app/assets/images/jquery-ui/ui-bg_inset-soft_15_2b2922_1x100.png +0 -0
  183. data/app/assets/images/jquery-ui/ui-bg_inset-soft_25_000000_1x100.png +0 -0
  184. data/app/assets/images/jquery-ui/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
  185. data/app/assets/images/jquery-ui/ui-bg_inset-soft_30_ffffff_1x100.png +0 -0
  186. data/app/assets/images/jquery-ui/ui-bg_inset-soft_50_c9c9c9_1x100.png +0 -0
  187. data/app/assets/images/jquery-ui/ui-bg_loop_25_000000_21x21.png +0 -0
  188. data/app/assets/images/jquery-ui/ui-bg_white-lines_85_f7f7ba_40x100.png +0 -0
  189. data/app/assets/images/jquery-ui/ui-icons_000000_256x240.png +0 -0
  190. data/app/assets/images/jquery-ui/ui-icons_004276_256x240.png +0 -0
  191. data/app/assets/images/jquery-ui/ui-icons_00498f_256x240.png +0 -0
  192. data/app/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  193. data/app/assets/images/jquery-ui/ui-icons_0078ae_256x240.png +0 -0
  194. data/app/assets/images/jquery-ui/ui-icons_056b93_256x240.png +0 -0
  195. data/app/assets/images/jquery-ui/ui-icons_070603_256x240.png +0 -0
  196. data/app/assets/images/jquery-ui/ui-icons_0a82eb_256x240.png +0 -0
  197. data/app/assets/images/jquery-ui/ui-icons_0b54d5_256x240.png +0 -0
  198. data/app/assets/images/jquery-ui/ui-icons_1f1f1f_256x240.png +0 -0
  199. data/app/assets/images/jquery-ui/ui-icons_217bc0_256x240.png +0 -0
  200. data/app/assets/images/jquery-ui/ui-icons_222222_256x240.png +0 -0
  201. data/app/assets/images/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
  202. data/app/assets/images/jquery-ui/ui-icons_2694e8_256x240.png +0 -0
  203. data/app/assets/images/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
  204. data/app/assets/images/jquery-ui/ui-icons_3383bb_256x240.png +0 -0
  205. data/app/assets/images/jquery-ui/ui-icons_3572ac_256x240.png +0 -0
  206. data/app/assets/images/jquery-ui/ui-icons_3d3d3d_256x240.png +0 -0
  207. data/app/assets/images/jquery-ui/ui-icons_3d80b3_256x240.png +0 -0
  208. data/app/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  209. data/app/assets/images/jquery-ui/ui-icons_469bdd_256x240.png +0 -0
  210. data/app/assets/images/jquery-ui/ui-icons_4b8e0b_256x240.png +0 -0
  211. data/app/assets/images/jquery-ui/ui-icons_4ca300_256x240.png +0 -0
  212. data/app/assets/images/jquery-ui/ui-icons_4eb305_256x240.png +0 -0
  213. data/app/assets/images/jquery-ui/ui-icons_5fa5e3_256x240.png +0 -0
  214. data/app/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  215. data/app/assets/images/jquery-ui/ui-icons_6da8d5_256x240.png +0 -0
  216. data/app/assets/images/jquery-ui/ui-icons_70b2e1_256x240.png +0 -0
  217. data/app/assets/images/jquery-ui/ui-icons_72a7cf_256x240.png +0 -0
  218. data/app/assets/images/jquery-ui/ui-icons_72b42d_256x240.png +0 -0
  219. data/app/assets/images/jquery-ui/ui-icons_734d99_256x240.png +0 -0
  220. data/app/assets/images/jquery-ui/ui-icons_808080_256x240.png +0 -0
  221. data/app/assets/images/jquery-ui/ui-icons_847e71_256x240.png +0 -0
  222. data/app/assets/images/jquery-ui/ui-icons_888888_256x240.png +0 -0
  223. data/app/assets/images/jquery-ui/ui-icons_88a206_256x240.png +0 -0
  224. data/app/assets/images/jquery-ui/ui-icons_8DC262_256x240.png +0 -0
  225. data/app/assets/images/jquery-ui/ui-icons_8c291d_256x240.png +0 -0
  226. data/app/assets/images/jquery-ui/ui-icons_8d78a5_256x240.png +0 -0
  227. data/app/assets/images/jquery-ui/ui-icons_98d2fb_256x240.png +0 -0
  228. data/app/assets/images/jquery-ui/ui-icons_999999_256x240.png +0 -0
  229. data/app/assets/images/jquery-ui/ui-icons_9bcc60_256x240.png +0 -0
  230. data/app/assets/images/jquery-ui/ui-icons_9ccdfc_256x240.png +0 -0
  231. data/app/assets/images/jquery-ui/ui-icons_9fda58_256x240.png +0 -0
  232. data/app/assets/images/jquery-ui/ui-icons_a83300_256x240.png +0 -0
  233. data/app/assets/images/jquery-ui/ui-icons_a8a3ae_256x240.png +0 -0
  234. data/app/assets/images/jquery-ui/ui-icons_aaaaaa_256x240.png +0 -0
  235. data/app/assets/images/jquery-ui/ui-icons_add978_256x240.png +0 -0
  236. data/app/assets/images/jquery-ui/ui-icons_b83400_256x240.png +0 -0
  237. data/app/assets/images/jquery-ui/ui-icons_b8ec79_256x240.png +0 -0
  238. data/app/assets/images/jquery-ui/ui-icons_bbbbbb_256x240.png +0 -0
  239. data/app/assets/images/jquery-ui/ui-icons_bd7b00_256x240.png +0 -0
  240. data/app/assets/images/jquery-ui/ui-icons_c02669_256x240.png +0 -0
  241. data/app/assets/images/jquery-ui/ui-icons_c47a23_256x240.png +0 -0
  242. data/app/assets/images/jquery-ui/ui-icons_c98000_256x240.png +0 -0
  243. data/app/assets/images/jquery-ui/ui-icons_cb672b_256x240.png +0 -0
  244. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  245. data/app/assets/images/jquery-ui/ui-icons_cccccc_256x240.png +0 -0
  246. data/app/assets/images/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
  247. data/app/assets/images/jquery-ui/ui-icons_d19405_256x240.png +0 -0
  248. data/app/assets/images/jquery-ui/ui-icons_d8e7f3_256x240.png +0 -0
  249. data/app/assets/images/jquery-ui/ui-icons_e0fdff_256x240.png +0 -0
  250. data/app/assets/images/jquery-ui/ui-icons_e1e463_256x240.png +0 -0
  251. data/app/assets/images/jquery-ui/ui-icons_e3ddc9_256x240.png +0 -0
  252. data/app/assets/images/jquery-ui/ui-icons_e8e2b5_256x240.png +0 -0
  253. data/app/assets/images/jquery-ui/ui-icons_e9cd86_256x240.png +0 -0
  254. data/app/assets/images/jquery-ui/ui-icons_eb990f_256x240.png +0 -0
  255. data/app/assets/images/jquery-ui/ui-icons_ebccce_256x240.png +0 -0
  256. data/app/assets/images/jquery-ui/ui-icons_ed9f26_256x240.png +0 -0
  257. data/app/assets/images/jquery-ui/ui-icons_ededed_256x240.png +0 -0
  258. data/app/assets/images/jquery-ui/ui-icons_eeeeee_256x240.png +0 -0
  259. data/app/assets/images/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
  260. data/app/assets/images/jquery-ui/ui-icons_efec9f_256x240.png +0 -0
  261. data/app/assets/images/jquery-ui/ui-icons_f08000_256x240.png +0 -0
  262. data/app/assets/images/jquery-ui/ui-icons_f1fd86_256x240.png +0 -0
  263. data/app/assets/images/jquery-ui/ui-icons_f29a00_256x240.png +0 -0
  264. data/app/assets/images/jquery-ui/ui-icons_f2ec64_256x240.png +0 -0
  265. data/app/assets/images/jquery-ui/ui-icons_f35f07_256x240.png +0 -0
  266. data/app/assets/images/jquery-ui/ui-icons_f5e175_256x240.png +0 -0
  267. data/app/assets/images/jquery-ui/ui-icons_f7a50d_256x240.png +0 -0
  268. data/app/assets/images/jquery-ui/ui-icons_f9bd01_256x240.png +0 -0
  269. data/app/assets/images/jquery-ui/ui-icons_f9f2bd_256x240.png +0 -0
  270. data/app/assets/images/jquery-ui/ui-icons_fadc7a_256x240.png +0 -0
  271. data/app/assets/images/jquery-ui/ui-icons_fbc856_256x240.png +0 -0
  272. data/app/assets/images/jquery-ui/ui-icons_fbdb93_256x240.png +0 -0
  273. data/app/assets/images/jquery-ui/ui-icons_fcd113_256x240.png +0 -0
  274. data/app/assets/images/jquery-ui/ui-icons_fcdd4a_256x240.png +0 -0
  275. data/app/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  276. data/app/assets/images/jquery-ui/ui-icons_ff7519_256x240.png +0 -0
  277. data/app/assets/images/jquery-ui/ui-icons_ffcf29_256x240.png +0 -0
  278. data/app/assets/images/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
  279. data/app/assets/images/jquery-ui/ui-icons_ffe180_256x240.png +0 -0
  280. data/app/assets/images/jquery-ui/ui-icons_ffeb33_256x240.png +0 -0
  281. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  282. data/app/assets/javascripts/inline_forms/inline_forms.js +14 -0
  283. data/app/assets/stylesheets/inline_forms/_foundation_icons.scss +596 -0
  284. data/app/assets/stylesheets/inline_forms/devise.scss +34 -3
  285. data/app/assets/stylesheets/inline_forms/foundation_and_overrides.scss +62 -4
  286. data/app/assets/stylesheets/inline_forms/inline_forms.scss +196 -44
  287. data/app/assets/stylesheets/jquery_ui/jquery.ui.accordion.css.scss +39 -0
  288. data/app/assets/stylesheets/jquery_ui/jquery.ui.all.css.scss +14 -0
  289. data/app/assets/stylesheets/jquery_ui/jquery.ui.autocomplete.css.scss +17 -0
  290. data/app/assets/stylesheets/jquery_ui/jquery.ui.base.css.scss +27 -0
  291. data/app/assets/stylesheets/jquery_ui/jquery.ui.button.css.scss +115 -0
  292. data/app/assets/stylesheets/jquery_ui/jquery.ui.core.css.scss +92 -0
  293. data/app/assets/stylesheets/jquery_ui/jquery.ui.datepicker.css.scss +179 -0
  294. data/app/assets/stylesheets/jquery_ui/jquery.ui.dialog.css.scss +70 -0
  295. data/app/assets/stylesheets/jquery_ui/jquery.ui.menu.css.scss +80 -0
  296. data/app/assets/stylesheets/jquery_ui/jquery.ui.progressbar.css.scss +29 -0
  297. data/app/assets/stylesheets/jquery_ui/jquery.ui.resizable.css.scss +79 -0
  298. data/app/assets/stylesheets/jquery_ui/jquery.ui.selectable.css.scss +16 -0
  299. data/app/assets/stylesheets/jquery_ui/jquery.ui.slider.css.scss +74 -0
  300. data/app/assets/stylesheets/jquery_ui/jquery.ui.spinner.css.scss +66 -0
  301. data/app/assets/stylesheets/jquery_ui/jquery.ui.tabs.css.scss +53 -0
  302. data/app/assets/stylesheets/jquery_ui/jquery.ui.theme.css.scss +408 -0
  303. data/app/assets/stylesheets/jquery_ui/jquery.ui.tooltip.css.scss +20 -0
  304. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.base.css.scss +78 -0
  305. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.black-tie.css.scss +80 -0
  306. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.blitzer.css.scss +80 -0
  307. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.cupertino.css.scss +80 -0
  308. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.dark-hive.css.scss +80 -0
  309. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.dot-luv.css.scss +80 -0
  310. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.eggplant.css.scss +80 -0
  311. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.excite-bike.css.scss +80 -0
  312. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.flick.css.scss +80 -0
  313. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.hot-sneaks.css.scss +80 -0
  314. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.humanity.css.scss +80 -0
  315. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.le-frog.css.scss +80 -0
  316. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.mint-choc.css.scss +80 -0
  317. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.overcast.css.scss +80 -0
  318. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.pepper-grinder.css.scss +80 -0
  319. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.redmond.css.scss +80 -0
  320. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.smoothness.css.scss +80 -0
  321. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.south-street.css.scss +80 -0
  322. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.start.css.scss +80 -0
  323. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.sunny.css.scss +80 -0
  324. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.swanky-purse.css.scss +80 -0
  325. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.trontastic.css.scss +80 -0
  326. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.ui-darkness.css.scss +80 -0
  327. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.ui-lightness.css.scss +80 -0
  328. data/app/assets/stylesheets/jquery_ui/themes/_jquery.ui.vader.css.scss +80 -0
  329. data/app/controllers/inline_forms_controller.rb +29 -1
  330. data/app/views/devise/passwords/_top-bar-and-flash.html.erb +8 -9
  331. data/app/views/devise/passwords/edit.html.erb +1 -1
  332. data/app/views/devise/passwords/new.html.erb +1 -1
  333. data/app/views/devise/sessions/_top-bar.html.erb +8 -9
  334. data/app/views/devise/sessions/new.html.erb +1 -1
  335. data/app/views/inline_forms/_header.html.erb +18 -25
  336. data/app/views/inline_forms/_list.html.erb +64 -4
  337. data/app/views/inline_forms/_versions_list.html.erb +83 -74
  338. data/app/views/layouts/application.html.erb +10 -1
  339. data/app/views/layouts/inline_forms.html.erb +11 -1
  340. data/bin/inline_forms_app_template.rb +3 -1
  341. data/bin/inline_forms_installer_core.rb +132 -5
  342. data/lib/generators/assets/stylesheets/inline_forms.scss +215 -76
  343. data/lib/generators/templates/_inline_forms_tabs.html.erb +38 -39
  344. data/lib/inline_forms/version.rb +1 -1
  345. data/lib/inline_forms.rb +10 -0
  346. data/lib/installer_templates/dartsass/devise_main.scss +2 -0
  347. data/lib/installer_templates/dartsass/inline_forms_dartsass_builds.rb +14 -0
  348. data/lib/installer_templates/dartsass/inline_forms_main.scss +2 -0
  349. data/lib/installer_templates/example_app_tests/test/integration/example_app_apartment_photos_pagination_test.rb +228 -0
  350. data/lib/installer_templates/example_app_tests/test/integration/example_app_turbo_layout_test.rb +28 -0
  351. metadata +327 -1
@@ -41,7 +41,20 @@
41
41
  <% end %>
42
42
  <% end %>
43
43
 
44
- <%= raw "<div class=\"list_container\" id=\"#{update_span}\">" if ul_needed -%>
44
+ <%#
45
+ Container element. For the nested has_many case (parent_class set) we
46
+ emit a `<turbo-frame>` so pagination clicks (and any future in-frame
47
+ re-render of this list) swap only the matching frame instead of doing
48
+ a full-page navigation. Top-level lists (parent_class.nil?) keep the
49
+ classic <div> + full-page pagination they already had.
50
+ -%>
51
+ <% if ul_needed -%>
52
+ <% if parent_class.nil? -%>
53
+ <%= raw "<div class=\"list_container\" id=\"#{update_span}\">" -%>
54
+ <% else -%>
55
+ <%= raw "<turbo-frame id=\"#{update_span}\" class=\"list_container\">" -%>
56
+ <% end -%>
57
+ <% end -%>
45
58
 
46
59
  <!-- # list of objects -->
47
60
  <% for object in objects %>
@@ -52,7 +65,30 @@
52
65
  <% css_class_id = parent_class.to_s.underscore + '_' + parent_id.to_s + '_' + attribute.to_s.singularize.underscore + "_" + object.id.to_s -%>
53
66
  <% path_to_object = attribute.to_s.singularize.underscore + "_path" %>
54
67
  <% end %>
55
- <div class="row <%= cycle('odd', 'even') %><%= " top-level" if parent_class.nil? %>" id="<%= css_class_id -%>">
68
+ <%#
69
+ For NESTED rows (parent_class present) the surrounding
70
+ <turbo-frame> would otherwise intercept the UJS-driven inline-edit
71
+ links/forms swapped in by show.js.erb / edit.js.erb / new.js.erb
72
+ -- those all do `$('#<row_id>').html(...)`, so the swapped content
73
+ stays a descendant of this row. Turbo would submit the multipart
74
+ `<form>` from _edit.html.erb with `Accept: text/html`, which
75
+ inline_forms_controller's update / create / destroy only respond
76
+ to via format.js, raising `ActionController::UnknownFormat` (HTTP
77
+ 406) AFTER the DB write already happened. `data-turbo="false"`
78
+ here keeps UJS handling those, unchanged.
79
+
80
+ For TOP-LEVEL rows (parent_class.nil?) there is no surrounding
81
+ frame, so the attribute would be a no-op for the row's own click
82
+ -- BUT after UJS swaps in the inline edit (which itself contains
83
+ the nested-photos `<turbo-frame>`), Turbo's `elementIsNavigatable`
84
+ walks up from any link inside that inner frame looking for the
85
+ closest `[data-turbo]` ancestor; it does NOT stop at the
86
+ intervening `<turbo-frame>`. A `data-turbo="false"` on the
87
+ top-level row therefore poisons every descendant including the
88
+ pagination links inside the inner photos frame, breaking
89
+ in-frame navigation. So we only emit it on nested rows.
90
+ -%>
91
+ <div class="row <%= cycle('odd', 'even') %><%= " top-level" if parent_class.nil? %>" id="<%= css_class_id -%>"<%= raw ' data-turbo="false"' unless parent_class.nil? %>>
56
92
  <% if cancan_disabled? || ( can? :soft_delete, object ) %>
57
93
  <div class="small-1 column">
58
94
  <%= link_to_soft_delete(object, css_class_id) -%>
@@ -77,7 +113,25 @@
77
113
  <% pagination = will_paginate objects -%>
78
114
  <% else %>
79
115
  <% if pagination %>
80
- <% pagination = will_paginate objects, :remote => true, :params => {:controller => attribute, :action => :index, :id => nil, :parent_class => parent_class, :parent_id => parent_id, :update => "#{parent_class.to_s.underscore}_#{parent_id}_#{attribute}", :ul_needed => true } %>
116
+ <%#
117
+ Nested pagination is now driven by the surrounding <turbo-frame>:
118
+ the link's same-URL GET returns a fresh frame and Turbo swaps
119
+ just that region. No more remote: true + list.js.erb on the
120
+ pagination path.
121
+
122
+ The `update:` param must match the frame's id (`<update_span>`,
123
+ which is `…_list`). The legacy UJS pagination passed the OUTER
124
+ wrapper's id (`…` without `_list`) because list.js.erb did
125
+ `$('#<outer>').html(<rendered _list partial>)` and needed the
126
+ outer container, not the inner one. Turbo Frames swaps the
127
+ element with the matching id, so the param now carries the
128
+ frame id itself; otherwise the response (`<turbo-frame
129
+ id="…_list">`) and the request expectation (`Turbo-Frame:
130
+ <update_span>` derived from the URL `update=…` param) would
131
+ disagree and Turbo would log "the response did not contain the
132
+ expected <turbo-frame>" and ignore the page.
133
+ -%>
134
+ <% pagination = will_paginate objects, :params => {:controller => attribute, :action => :index, :id => nil, :parent_class => parent_class, :parent_id => parent_id, :update => "#{parent_class.to_s.underscore}_#{parent_id}_#{attribute}_list", :ul_needed => true } %>
81
135
  <% end %>
82
136
  <% end %>
83
137
  <% if pagination %>
@@ -87,4 +141,10 @@
87
141
  </div>
88
142
  </div>
89
143
  <% end %>
90
- <%= raw "</div>" if ul_needed -%>
144
+ <% if ul_needed -%>
145
+ <% if parent_class.nil? -%>
146
+ <%= raw "</div>" -%>
147
+ <% else -%>
148
+ <%= raw "</turbo-frame>" -%>
149
+ <% end -%>
150
+ <% end -%>
@@ -13,82 +13,91 @@
13
13
  %>
14
14
  </div>
15
15
  </div>
16
+ <%#
17
+ Header / per-entry rows: every entry was previously wrapped in a single
18
+ `<div class='small-12 column'>` whose direct children were `.small-N
19
+ column` divs. F5's float-based grid floated them side-by-side because
20
+ every `.column` was `float: left`; F6's flex grid only makes the direct
21
+ children of `.row` flex items, so once those `.small-N column` divs sit
22
+ inside a plain `.column` (not a `.row`) they collapse to stacked blocks
23
+ -- which is why opening Versions on F6 rendered Event/Done by/Changeset
24
+ vertically and the per-entry restore/timestamp/changeset cells one per
25
+ line. Each entry is now its own `<div class="row">` whose direct
26
+ children ARE the cell columns, so F6's flex grid lays them out
27
+ horizontally and the partial keeps F5's visual layout.
28
+ -%>
16
29
  <div class="row <%= cycle('odd', 'even') %>">
17
- <div class='small-12 column'>
18
- <div class="small-1 column">
19
- &nbsp;
20
- </div>
21
- <div class="small-1 column">
22
- <strong>Event</strong>
23
- </div>
24
- <div class="small-2 column">
25
- <strong>Done by</strong>
26
- </div>
27
- <div class="small-8 column">
28
- <strong>Changeset</strong>
29
- </div>
30
+ <div class="small-1 column">
31
+ &nbsp;
32
+ </div>
33
+ <div class="small-1 column">
34
+ <strong>Event</strong>
35
+ </div>
36
+ <div class="small-2 column">
37
+ <strong>Done by</strong>
38
+ </div>
39
+ <div class="small-8 column">
40
+ <strong>Changeset</strong>
30
41
  </div>
31
42
  </div>
32
- <div class="row <%= cycle('odd', 'even') %>">
33
- <% entries.reverse.each do |entry| %>
34
- <% version = entry[:version] -%>
35
- <% rich_text_name = entry[:rich_text_name] -%>
36
- <div class='small-12 column'>
37
- <div class="small-1 column">
38
- <% if entry[:kind] == :primary %>
39
- <%= link_to t('inline_forms.view.restore'),
40
- send('revert_' + @object.class.to_s.underscore + "_path",
41
- version,
42
- :update => "#{@object.class.name.underscore}_#{@object.id}"
43
- ),
44
- :remote => true,
45
- :method => :post
46
- %>
47
- <% else %>
48
- &nbsp;
49
- <% end %>
50
- </div>
51
- <div class="small-1 column">
52
- <%= version.event -%><% if entry[:kind] == :rich_text %> <em>(rich text)</em><% end %>
53
- </div>
54
- <div class="small-2 column">
55
- <%= version.created_at -%>
56
- </div>
57
- <div class="small-2 column">
58
- <%= version_modified_by version.whodunnit -%>
59
- </div>
60
- <div class="small-6 column">
61
- <% if version.changeset.nil? || version.changeset.empty? %>
62
- <em>empty</em>
63
- <% else %>
64
- <% version.changeset.each do |attribute, value| %>
65
- <% next if attribute == 'updated_at' %>
66
- <% next if entry[:kind] == :rich_text && attribute == 'record_id' %>
67
- <% next if entry[:kind] == :rich_text && attribute == 'record_type' %>
68
- <% next if entry[:kind] == :rich_text && attribute == 'name' %>
69
- <% display_attribute = entry[:kind] == :rich_text && attribute == 'body' ? rich_text_name : attribute -%>
70
- <table>
71
- <tr>
72
- <th colspan="2" class="text-center"><%= display_attribute %></th>
73
- <th></th>
74
- </tr>
75
- <tr>
76
- <td>old value</td>
77
- <td>new value</td>
78
- </tr>
79
- <tr>
80
- <% if entry[:kind] == :rich_text && attribute == 'body' %>
81
- <td><%= raw value[0] %></td>
82
- <td><%= raw value[1] %></td>
83
- <% else %>
84
- <td><%= value[0] %></td>
85
- <td><%= value[1] %></td>
86
- <% end %>
87
- </tr>
88
- </table>
89
- <% end %>
43
+ <% entries.reverse.each do |entry| %>
44
+ <% version = entry[:version] -%>
45
+ <% rich_text_name = entry[:rich_text_name] -%>
46
+ <div class="row <%= cycle('odd', 'even') %>">
47
+ <div class="small-1 column">
48
+ <% if entry[:kind] == :primary %>
49
+ <%= link_to t('inline_forms.view.restore'),
50
+ send('revert_' + @object.class.to_s.underscore + "_path",
51
+ version,
52
+ :update => "#{@object.class.name.underscore}_#{@object.id}"
53
+ ),
54
+ :remote => true,
55
+ :method => :post
56
+ %>
57
+ <% else %>
58
+ &nbsp;
59
+ <% end %>
60
+ </div>
61
+ <div class="small-1 column">
62
+ <%= version.event -%><% if entry[:kind] == :rich_text %> <em>(rich text)</em><% end %>
63
+ </div>
64
+ <div class="small-2 column">
65
+ <%= version.created_at -%>
66
+ </div>
67
+ <div class="small-2 column">
68
+ <%= version_modified_by version.whodunnit -%>
69
+ </div>
70
+ <div class="small-6 column">
71
+ <% if version.changeset.nil? || version.changeset.empty? %>
72
+ <em>empty</em>
73
+ <% else %>
74
+ <% version.changeset.each do |attribute, value| %>
75
+ <% next if attribute == 'updated_at' %>
76
+ <% next if entry[:kind] == :rich_text && attribute == 'record_id' %>
77
+ <% next if entry[:kind] == :rich_text && attribute == 'record_type' %>
78
+ <% next if entry[:kind] == :rich_text && attribute == 'name' %>
79
+ <% display_attribute = entry[:kind] == :rich_text && attribute == 'body' ? rich_text_name : attribute -%>
80
+ <table>
81
+ <tr>
82
+ <th colspan="2" class="text-center"><%= display_attribute %></th>
83
+ <th></th>
84
+ </tr>
85
+ <tr>
86
+ <td>old value</td>
87
+ <td>new value</td>
88
+ </tr>
89
+ <tr>
90
+ <% if entry[:kind] == :rich_text && attribute == 'body' %>
91
+ <td><%= raw value[0] %></td>
92
+ <td><%= raw value[1] %></td>
93
+ <% else %>
94
+ <td><%= value[0] %></td>
95
+ <td><%= value[1] %></td>
96
+ <% end %>
97
+ </tr>
98
+ </table>
90
99
  <% end %>
91
- </div>
100
+ <% end %>
92
101
  </div>
93
- <% end %>
94
- </div>
102
+ </div>
103
+ <% end %>
@@ -13,7 +13,16 @@
13
13
 
14
14
  <body>
15
15
  <%= yield %>
16
- <%= javascript_include_tag "application", 'data-turbolinks-track' => true %>
16
+ <%= javascript_include_tag "application" %>
17
+ <%# Turbo (Hotwire) is loaded as an ES module so it does not collide with %>
18
+ <%# the classic-script Sprockets bundle above. Drive is disabled here so %>
19
+ <%# existing UJS-driven links/forms keep working unchanged; `<turbo-frame>` %>
20
+ <%# and `format.turbo_stream` remain available for per-view conversions. %>
21
+ <script type="module">
22
+ import { Turbo } from "<%= asset_path('turbo.min.js') %>"
23
+ Turbo.session.drive = false
24
+ window.Turbo = Turbo
25
+ </script>
17
26
  <%= javascript_include_tag "https://unpkg.com/trix@1.3.1/dist/trix.js" %>
18
27
  <%= javascript_include_tag Ckeditor.cdn_url if defined?(Ckeditor) %>
19
28
  </body>
@@ -16,7 +16,17 @@
16
16
  <div id="outer_container">
17
17
  <%= yield %>
18
18
  </div>
19
- <%= javascript_include_tag 'inline_forms/inline_forms', 'data-turbolinks-track' => true %>
19
+ <%= javascript_include_tag 'inline_forms/inline_forms' %>
20
+ <%# Turbo (Hotwire) is loaded as an ES module so it does not collide with %>
21
+ <%# the classic-script Sprockets bundle above (jquery_ujs etc.). Drive is %>
22
+ <%# disabled here so existing UJS-driven links/forms keep working unchanged; %>
23
+ <%# `<turbo-frame>` and `format.turbo_stream` are still available for the %>
24
+ <%# per-view conversions that follow this slice. %>
25
+ <script type="module">
26
+ import { Turbo } from "<%= asset_path('turbo.min.js') %>"
27
+ Turbo.session.drive = false
28
+ window.Turbo = Turbo
29
+ </script>
20
30
  <%= javascript_include_tag "https://unpkg.com/trix@1.3.1/dist/trix.js" %>
21
31
  <%= javascript_include_tag Ckeditor.cdn_url if defined?(Ckeditor) %>
22
32
  </body>
@@ -2,7 +2,9 @@ require 'rvm'
2
2
 
3
3
  if RVM.current && ENV['skiprvm'] !='true'
4
4
  rvm_version = "#{ENV['ruby_version']}@#{app_name}"
5
- RVM.chdir "../#{app_name}" do
5
+ # Rails' `app_name` is underscored (e.g. my_app) while the directory may be
6
+ # camel-cased (MyApp); `../#{app_name}` breaks on case-sensitive filesystems.
7
+ RVM.chdir(File.expand_path(".")) do
6
8
  say "Working directory is #{`pwd`}"
7
9
  RVM.use_from_path! '.' # TODO ROYTJE FIX THIS BELOW
8
10
  # Warning! PATH is not properly set up, '/home/vagrant/.rvm/gems/ruby-2.0.0-p247@MyApp/bin' is not available,
@@ -11,13 +11,20 @@ gem 'cancancan'
11
11
  gem 'carrierwave', '~> 3.1'
12
12
  gem 'devise-i18n', :git => 'https://github.com/acesuares/devise-i18n.git'
13
13
  gem 'devise'
14
- gem 'foundation-icons-sass-rails'
15
- gem 'foundation-rails', '~> 5.5'
14
+ gem 'autoprefixer-rails'
15
+ # foundation-rails 6.7+ uses Dart Sass (`sass:math`); sass-rails/sassc removed.
16
+ # Visually tuned against foundation-rails ~> 6.6.2; current pin ~> 6.9 (6.9.0.x).
17
+ gem 'foundation-rails', '~> 6.9'
16
18
  gem 'i18n-active_record', :git => 'https://github.com/acesuares/i18n-active_record.git'
17
19
  gem 'inline_forms', path: "#{File.expand_path(GENERATOR_PATH)}"
18
20
  gem 'jquery-rails'
19
21
  gem 'jquery-timepicker-rails'
20
- gem 'jquery-ui-sass-rails'
22
+ # jQuery UI JavaScript (`//= require jquery.ui.all` in inline_forms.js). SCSS + PNGs
23
+ # are vendored in the inline_forms engine (Dart Sass cannot evaluate sass-rails
24
+ # `image-path()`). Pin matches former jquery-ui-sass-rails 4.0.3.x stack.
25
+ gem 'jquery-ui-rails', '4.0.3'
26
+ # Foundation Icons SCSS + fonts are vendored in the inline_forms engine (Dart Sass;
27
+ # foundation-icons-sass-rails depended on sass-rails).
21
28
  gem 'mini_magick'
22
29
  gem 'mysql2'
23
30
  gem 'paper_trail', '~> 16.0'
@@ -27,13 +34,18 @@ gem 'rails', '~> 7.0.0'
27
34
  gem 'rake'
28
35
  gem 'remotipart', '~> 1.0'
29
36
  gem 'rvm'
30
- gem 'sass-rails'
37
+ gem 'dartsass-rails'
31
38
  # Rails 7 no longer adds sprockets-rails to the default Gemfile; declare it
32
39
  # explicitly because the gem's own assets (foundation, jquery, etc.) live in
33
40
  # app/assets and rely on the Sprockets pipeline.
34
41
  gem 'sprockets-rails'
35
42
  # Rails 7 default JavaScript tooling: importmap-rails replaces Webpacker.
36
43
  gem 'importmap-rails'
44
+ # Hotwire/Turbo. Loaded into the Sprockets bundle by inline_forms.js with
45
+ # Turbo Drive disabled by default so existing UJS-driven links/forms keep
46
+ # working; turbo-rails also registers the `turbo_stream` Mime type and view
47
+ # format so future controllers can opt in to Turbo Stream responses.
48
+ gem 'turbo-rails'
37
49
  gem 'tabs_on_rails', :git => 'https://github.com/acesuares/tabs_on_rails.git', :branch => 'update_remote_before_action'
38
50
  gem 'unicorn'
39
51
  gem 'validation_hints'
@@ -55,7 +67,6 @@ gem_group :development do
55
67
  gem 'seed_dump', '~> 0.5.3'
56
68
  # Rails 6.1 ActiveRecord's sqlite3 adapter requires sqlite3 ~> 1.4; 2.x activates first and breaks.
57
69
  gem 'sqlite3', '~> 1.4'
58
- gem 'switch_user'
59
70
  gem 'thin'
60
71
  gem 'yaml_db'
61
72
  end
@@ -69,6 +80,27 @@ say "- Running bundle..."
69
80
  run "gem install bundler"
70
81
  run "bundle install"
71
82
 
83
+ say "- Dart Sass: inline_forms stylesheet entrypoints + initializer..."
84
+ copy_file File.join(GENERATOR_PATH, "lib/installer_templates/dartsass/inline_forms_dartsass_builds.rb"),
85
+ "config/initializers/inline_forms_dartsass_builds.rb"
86
+ copy_file File.join(GENERATOR_PATH, "lib/installer_templates/dartsass/inline_forms_main.scss"),
87
+ "app/assets/stylesheets/inline_forms_install/inline_forms_main.scss"
88
+ copy_file File.join(GENERATOR_PATH, "lib/installer_templates/dartsass/devise_main.scss"),
89
+ "app/assets/stylesheets/inline_forms_install/devise_main.scss"
90
+
91
+ say "- Dart Sass: rails dartsass:install (builds/, manifest, Procfile.dev)..."
92
+ run "bundle exec rails dartsass:install"
93
+
94
+ say "- Dart Sass: drop default application.css (manifest links builds/*.css only)..."
95
+ remove_file "app/assets/stylesheets/application.css"
96
+
97
+ insert_into_file "test/test_helper.rb", <<~'DARTSASS_TEST', after: %(require "rails/test_help"\n)
98
+
99
+ # Dart Sass writes CSS to app/assets/builds; Sprockets does not compile .scss.
100
+ Rails.application.load_tasks
101
+ Rake::Task["dartsass:build"].invoke
102
+ DARTSASS_TEST
103
+
72
104
  say "- Database setup: creating config/database.yml with development database #{ENV['database']}"
73
105
  remove_file "config/database.yml" # the one that 'rails new' created
74
106
  if ENV['using_sqlite'] == 'true'
@@ -336,6 +368,9 @@ say "- Installaing ZURB Foundation..."
336
368
  say "- Copy inline_forms_devise file for custom styles..."
337
369
  copy_file File.join(GENERATOR_PATH, 'lib/generators/assets/stylesheets/inline_forms_devise.css'), 'app/assets/stylesheets/inline_forms_devise.css'
338
370
 
371
+ say "- Sprockets: link inline_forms_devise.css (logical path; dartsass:install drops link_directory ../stylesheets)..."
372
+ append_to_file "app/assets/config/manifest.js", "//= link inline_forms_devise.css\n"
373
+
339
374
  say "- Add human_attribute_name in app/models/application_record.rb"
340
375
  remove_file 'app/models/application_record.rb' # the one that 'rails new' created
341
376
  copy_file File.join(GENERATOR_PATH, 'lib/generators/templates/application_record.rb'), "app/models/application_record.rb"
@@ -621,8 +656,100 @@ if ENV['install_example'] == 'true'
621
656
  run 'bundle exec rails g inline_forms Photo name:string caption:string image:image_field description:rich_text apartment:belongs_to _presentation:\'#{name}\''
622
657
  run 'bundle exec rails generate uploader Image'
623
658
  run 'bundle exec rails g inline_forms Apartment name:string title:string description:rich_text photos:has_many photos:associated _enabled:yes _presentation:\'#{name}\''
659
+
660
+ say "- Lower Photo.per_page so the seeded gallery paginates..."
661
+ # The model template (lib/generators/templates/model.erb) emits
662
+ # attr_reader :per_page
663
+ # @per_page = 7
664
+ # which is a long-standing typo: `attr_reader :per_page` defines an
665
+ # *instance* method, then `@per_page = 7` (executed in the class body)
666
+ # actively *clobbers* the class-level per_page that will_paginate
667
+ # exposes via `class_attribute :per_page` (its singleton-ivar storage
668
+ # also lives on `@per_page`). Net effect: nothing reads 7 anywhere,
669
+ # and the class-level per_page silently reverts to will_paginate's
670
+ # 30-default. Replace the pair on Photo with a real `self.per_page = 5`
671
+ # so the seeded gallery (12 photos) actually paginates 5/5/2.
672
+ gsub_file "app/models/photo.rb",
673
+ /^\s*attr_reader\s+:per_page\s*\n\s*@per_page\s*=\s*\d+\s*\n/,
674
+ " self.per_page = 5\n"
675
+
624
676
  run 'bundle exec rake db:migrate'
625
677
 
678
+ # Seed the photos gallery from a local `pics/` folder. The folder is
679
+ # *gitignored* in the gem source (so the built .gem stays small and
680
+ # the gallery images are not committed) which means GENERATOR_PATH/pics
681
+ # exists only when the installer is run from the source repo, not when
682
+ # it is run from an installed gem on the developer's box. We therefore
683
+ # check, in order:
684
+ # 1. ENV['INLINE_FORMS_SEED_PICS'] -- explicit override path
685
+ # 2. GENERATOR_PATH/pics -- gem source repo checkout
686
+ # 3. /home/code/inline_forms/pics -- local dev convention
687
+ # and copy whichever is found into the generated app's db/seed_images/.
688
+ # The migration generated below is what reads from db/seed_images at
689
+ # `db:migrate` / `db:test:prepare` time, so this copy is only ever a
690
+ # one-shot at app generation.
691
+ pics_candidates = [
692
+ ENV["INLINE_FORMS_SEED_PICS"],
693
+ File.join(GENERATOR_PATH, "pics"),
694
+ "/home/code/inline_forms/pics",
695
+ ].compact
696
+ pics_src = pics_candidates.find { |p| Dir.exist?(p) }
697
+ if pics_src
698
+ seed_pics = Dir.glob(File.join(pics_src, "*.{jpg,jpeg,JPG,JPEG,png,PNG,gif,GIF}")).sort
699
+ if seed_pics.any?
700
+ say "- Copying #{seed_pics.size} sample photo(s) into db/seed_images/..."
701
+ empty_directory "db/seed_images"
702
+ seed_pics.each do |abs|
703
+ copy_file abs, File.join("db/seed_images", File.basename(abs))
704
+ end
705
+
706
+ say "- Generating Konferensha apartment + photos seed migration..."
707
+ sleep 1 # unique migration timestamp
708
+ seed_ts = Time.now.utc.strftime("%Y%m%d%H%M%S")
709
+ create_file "db/migrate/#{seed_ts}_seed_konferensha_photos.rb", <<-SEED_MIGRATION.strip_heredoc
710
+ class SeedKonferenshaPhotos < ActiveRecord::Migration[7.0]
711
+ # Seed an Apartment with a gallery of photos so the nested
712
+ # has_many list (apartments -> photos) has enough rows to
713
+ # trigger pagination. Driven by db/seed_images/, which the
714
+ # inline_forms installer copies from the gem's pics/ dir.
715
+ # Runs in development (via db:migrate) and against the test
716
+ # DB (via db:test:prepare), so integration tests can assert
717
+ # the paginated <turbo-frame> renders without seeding manually.
718
+ def up
719
+ apartment = Apartment.find_or_create_by!(name: "Konferensha") do |a|
720
+ a.title = "Konferensha sobre Papiamentu"
721
+ end
722
+
723
+ seed_dir = Rails.root.join("db", "seed_images")
724
+ return unless seed_dir.directory?
725
+
726
+ Dir.glob(seed_dir.join("*.{jpg,jpeg,png,gif}"), File::FNM_CASEFOLD).sort.each do |abs|
727
+ base = File.basename(abs)
728
+ next if Photo.exists?(name: base, apartment_id: apartment.id)
729
+ File.open(abs, "rb") do |io|
730
+ Photo.create!(
731
+ name: base,
732
+ caption: "Konferensha foto \#{base}",
733
+ apartment: apartment,
734
+ image: io
735
+ )
736
+ end
737
+ end
738
+ end
739
+
740
+ def down
741
+ apartment = Apartment.find_by(name: "Konferensha")
742
+ return unless apartment
743
+ apartment.photos.destroy_all
744
+ apartment.destroy
745
+ end
746
+ end
747
+ SEED_MIGRATION
748
+
749
+ run "bundle exec rake db:migrate"
750
+ end
751
+ end
752
+
626
753
  remove_file 'public/index.html'
627
754
 
628
755
  route "root :to => 'apartments#index'"