trestle 0.9.9 → 0.10.0.pre

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 (328) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +31 -3
  3. data/.gitignore +3 -0
  4. data/Gemfile +5 -1
  5. data/README.md +2 -1
  6. data/app/assets/bundle/trestle/admin.css +23 -0
  7. data/app/assets/bundle/trestle/admin.js +83 -0
  8. data/app/assets/bundle/trestle/fa-brands-400.ttf +0 -0
  9. data/app/assets/bundle/trestle/fa-brands-400.woff2 +0 -0
  10. data/app/assets/bundle/trestle/fa-regular-400.ttf +0 -0
  11. data/app/assets/bundle/trestle/fa-regular-400.woff2 +0 -0
  12. data/app/assets/bundle/trestle/fa-solid-900.ttf +0 -0
  13. data/app/assets/bundle/trestle/fa-solid-900.woff2 +0 -0
  14. data/app/assets/bundle/trestle/locale/cs.js +110 -0
  15. data/app/assets/bundle/trestle/locale/de.js +116 -0
  16. data/app/assets/bundle/trestle/locale/en.js +329 -0
  17. data/app/assets/bundle/trestle/locale/es-MX.js +109 -0
  18. data/app/assets/bundle/trestle/locale/es.js +109 -0
  19. data/app/assets/bundle/trestle/locale/fr.js +111 -0
  20. data/app/assets/bundle/trestle/locale/ko.js +111 -0
  21. data/app/assets/bundle/trestle/locale/lv.js +109 -0
  22. data/app/assets/bundle/trestle/locale/nl.js +96 -0
  23. data/app/assets/bundle/trestle/locale/pl.js +99 -0
  24. data/app/assets/bundle/trestle/locale/pt-BR.js +98 -0
  25. data/app/assets/bundle/trestle/locale/vi.js +116 -0
  26. data/app/assets/bundle/trestle/locale/zh-CN.js +109 -0
  27. data/app/assets/bundle/trestle/photoswipe-7aa1aec9c3c1fd65c382.digested.js +6 -0
  28. data/app/assets/sprockets/trestle/custom.css +1 -0
  29. data/app/assets/sprockets/trestle/icons/font-awesome.css.erb +32 -0
  30. data/app/assets/sprockets/trestle/manifest.js +4 -0
  31. data/app/assets/stylesheets/trestle/custom.css +6 -1
  32. data/app/controllers/concerns/trestle/controller/helpers.rb +2 -0
  33. data/app/controllers/concerns/trestle/controller/location.rb +1 -6
  34. data/app/controllers/concerns/trestle/controller/modal.rb +23 -0
  35. data/app/controllers/concerns/trestle/controller/turbo.rb +21 -0
  36. data/app/controllers/concerns/trestle/resource/controller/actions.rb +39 -28
  37. data/app/controllers/concerns/trestle/resource/controller/redirection.rb +5 -5
  38. data/app/controllers/trestle/application_controller.rb +2 -1
  39. data/app/helpers/trestle/flash_helper.rb +10 -0
  40. data/app/helpers/trestle/form_helper.rb +3 -2
  41. data/app/helpers/trestle/format_helper.rb +2 -1
  42. data/app/helpers/trestle/i18n_helper.rb +46 -7
  43. data/app/helpers/trestle/modal_helper.rb +34 -0
  44. data/app/helpers/trestle/tab_helper.rb +1 -1
  45. data/app/helpers/trestle/turbo_frame_helper.rb +34 -0
  46. data/app/helpers/trestle/url_helper.rb +7 -4
  47. data/app/views/layouts/trestle/admin.html.erb +16 -18
  48. data/app/views/layouts/trestle/admin.turbo_stream.erb +11 -0
  49. data/app/views/layouts/trestle/modal.html.erb +5 -0
  50. data/app/views/trestle/_i18n.html.erb +12 -0
  51. data/app/views/trestle/_theme.html.erb +15 -0
  52. data/app/views/trestle/application/_header.html.erb +1 -1
  53. data/app/views/trestle/application/_layout.html.erb +6 -3
  54. data/app/views/trestle/application/_modal.html.erb +36 -0
  55. data/app/views/trestle/application/_tabs.html.erb +4 -4
  56. data/app/views/trestle/flash/_alert.html.erb +1 -1
  57. data/app/views/trestle/flash/_debug.html.erb +1 -1
  58. data/app/views/trestle/resource/_form.html.erb +5 -0
  59. data/app/views/trestle/resource/create.turbo_stream.erb +5 -0
  60. data/app/views/trestle/resource/destroy.turbo_stream.erb +1 -0
  61. data/app/views/trestle/resource/edit.html.erb +4 -2
  62. data/app/views/trestle/resource/index.html.erb +12 -10
  63. data/app/views/trestle/resource/new.html.erb +4 -2
  64. data/app/views/trestle/resource/show.html.erb +4 -2
  65. data/app/views/trestle/resource/update.turbo_stream.erb +5 -0
  66. data/app/views/trestle/shared/_sidebar.html.erb +9 -9
  67. data/frontend/css/components/_alerts.scss +19 -17
  68. data/frontend/css/components/_background.scss +7 -35
  69. data/frontend/css/components/_badges.scss +31 -0
  70. data/frontend/css/components/_breadcrumbs.scss +4 -4
  71. data/frontend/css/components/_buttons.scss +5 -4
  72. data/frontend/css/components/_datepicker.scss +12 -8
  73. data/frontend/css/components/_dropdown.scss +23 -3
  74. data/frontend/css/components/{_fields.scss → _forms.scss} +16 -3
  75. data/frontend/css/components/_media-grid.scss +52 -44
  76. data/frontend/css/components/_modal.scss +33 -4
  77. data/frontend/css/components/_pagination.scss +1 -1
  78. data/frontend/css/components/_photoswipe.scss +8 -0
  79. data/frontend/css/components/_popover.scss +1 -0
  80. data/frontend/css/components/_scopes.scss +1 -1
  81. data/frontend/css/components/_select.scss +161 -31
  82. data/frontend/css/components/_table.scss +60 -65
  83. data/frontend/css/components/_tabs.scss +10 -3
  84. data/frontend/css/components/_tags.scss +71 -16
  85. data/frontend/css/components/_toolbars.scss +16 -11
  86. data/frontend/css/components/_turbo.scss +3 -0
  87. data/frontend/css/core/_bootstrap.scss +46 -0
  88. data/frontend/css/core/_dependencies.scss +4 -3
  89. data/frontend/css/core/_functions.scss +39 -0
  90. data/frontend/css/core/_mixins.scss +2 -36
  91. data/frontend/css/core/_theme.scss +258 -0
  92. data/frontend/css/core/_typography.scss +10 -1
  93. data/frontend/css/icons/_fontawesome.scss +3 -15
  94. data/frontend/css/index.scss +12 -6
  95. data/frontend/css/layout/_base.scss +3 -3
  96. data/frontend/css/layout/_content.scss +10 -6
  97. data/frontend/css/layout/_footer.scss +1 -1
  98. data/frontend/css/layout/_header.scss +5 -3
  99. data/frontend/css/layout/_navigation.scss +2 -2
  100. data/frontend/css/layout/_sidebar.scss +19 -9
  101. data/frontend/css/support/_sprockets.scss +2 -0
  102. data/frontend/css/support/_webpack.scss +2 -0
  103. data/frontend/css/variables/_bootstrap.scss +134 -40
  104. data/frontend/css/variables/_maps.scss +15 -0
  105. data/frontend/css/variables/_trestle.scss +55 -26
  106. data/frontend/js/controllers/application_controller.js +17 -0
  107. data/frontend/js/controllers/checkbox_select_controller.js +43 -0
  108. data/frontend/js/controllers/confirm_controller.js +115 -0
  109. data/frontend/js/controllers/confirm_delete_controller.js +11 -0
  110. data/frontend/js/controllers/datepicker_controller.js +12 -0
  111. data/frontend/js/controllers/datetimepicker_controller.js +13 -0
  112. data/frontend/js/controllers/deprecated/init_controller.js +9 -0
  113. data/frontend/js/controllers/flatpickr_controller.js +50 -0
  114. data/frontend/js/controllers/follow_url_controller.js +36 -0
  115. data/frontend/js/controllers/form_error_controller.js +24 -0
  116. data/frontend/js/controllers/form_loading_controller.js +50 -0
  117. data/frontend/js/controllers/gallery_controller.js +10 -0
  118. data/frontend/js/controllers/index.js +19 -0
  119. data/frontend/js/controllers/keyboard_submit_controller.js +25 -0
  120. data/frontend/js/controllers/lightbox_controller.js +160 -0
  121. data/frontend/js/controllers/mobile_sidebar_controller.js +30 -0
  122. data/frontend/js/controllers/modal_controller.js +36 -0
  123. data/frontend/js/controllers/modal_frame_controller.js +11 -0
  124. data/frontend/js/controllers/modal_trigger_controller.js +74 -0
  125. data/frontend/js/{components/navigation.js → controllers/navigation_controller.js} +14 -10
  126. data/frontend/js/controllers/navigation_tooltip_controller.js +32 -0
  127. data/frontend/js/controllers/popover_controller.js +87 -0
  128. data/frontend/js/controllers/reloadable_controller.js +34 -0
  129. data/frontend/js/controllers/select_controller.js +49 -0
  130. data/frontend/js/controllers/sidebar_controller.js +33 -0
  131. data/frontend/js/controllers/tab_errors_controller.js +45 -0
  132. data/frontend/js/controllers/tabs_controller.js +45 -0
  133. data/frontend/js/controllers/timepicker_controller.js +14 -0
  134. data/frontend/js/controllers/toggle_attr_controller.js +27 -0
  135. data/frontend/js/controllers/toggle_class_controller.js +27 -0
  136. data/frontend/js/controllers/tooltip_controller.js +13 -0
  137. data/frontend/js/controllers/wrapper_controller.js +43 -0
  138. data/frontend/js/core/backdrop.js +100 -0
  139. data/frontend/js/core/error_modal.js +65 -0
  140. data/frontend/js/core/fetch.js +32 -0
  141. data/frontend/js/core/i18n.js +24 -10
  142. data/frontend/js/core/modal.js +52 -0
  143. data/frontend/js/core/stream_actions.js +56 -0
  144. data/frontend/js/core/turbo_errors.js +9 -0
  145. data/frontend/js/{core → deprecated}/events.js +1 -8
  146. data/frontend/js/deprecated/tooltip.js +8 -0
  147. data/frontend/js/index.js +28 -40
  148. data/frontend/js/mixins/index.js +5 -0
  149. data/frontend/js/mixins/photoswipe.js +10 -0
  150. data/frontend/js/util/bootstrap.js +93 -0
  151. data/i18n/config.yml +14 -0
  152. data/i18n/environment.rb +8 -0
  153. data/i18n/export +3 -0
  154. data/i18n/template.erb +1 -0
  155. data/lib/generators/trestle/install/install_generator.rb +3 -8
  156. data/lib/generators/trestle/install/templates/trestle.rb.erb +5 -5
  157. data/lib/trestle/color.rb +113 -0
  158. data/lib/trestle/configuration.rb +16 -8
  159. data/lib/trestle/engine.rb +23 -17
  160. data/lib/trestle/form/fields/check_box_helpers.rb +7 -18
  161. data/lib/trestle/form/fields/collection_select.rb +1 -1
  162. data/lib/trestle/form/fields/color_field.rb +4 -0
  163. data/lib/trestle/form/fields/date_field.rb +4 -0
  164. data/lib/trestle/form/fields/date_picker.rb +10 -4
  165. data/lib/trestle/form/fields/date_select.rb +1 -1
  166. data/lib/trestle/form/fields/datetime_field.rb +4 -0
  167. data/lib/trestle/form/fields/datetime_select.rb +1 -1
  168. data/lib/trestle/form/fields/file_field.rb +3 -28
  169. data/lib/trestle/form/fields/form_control.rb +2 -2
  170. data/lib/trestle/form/fields/form_group.rb +1 -1
  171. data/lib/trestle/form/fields/grouped_collection_select.rb +1 -1
  172. data/lib/trestle/form/fields/radio_button_helpers.rb +5 -17
  173. data/lib/trestle/form/fields/range_field.rb +1 -5
  174. data/lib/trestle/form/fields/select.rb +17 -1
  175. data/lib/trestle/form/fields/time_field.rb +4 -0
  176. data/lib/trestle/form/fields/time_select.rb +1 -1
  177. data/lib/trestle/form/fields/time_zone_select.rb +1 -1
  178. data/lib/trestle/form/renderer.rb +3 -0
  179. data/lib/trestle/form.rb +16 -1
  180. data/lib/trestle/resource/toolbar.rb +2 -2
  181. data/lib/trestle/table/actions_column.rb +2 -2
  182. data/lib/trestle/table/row.rb +2 -1
  183. data/lib/trestle/table/select_column.rb +3 -6
  184. data/lib/trestle/table.rb +6 -1
  185. data/lib/trestle/toolbar/item.rb +1 -1
  186. data/lib/trestle/toolbar/menu.rb +3 -6
  187. data/lib/trestle/version.rb +1 -1
  188. data/lib/trestle.rb +2 -23
  189. data/package.json +31 -27
  190. data/trestle.gemspec +2 -3
  191. data/webpack.config.js +10 -10
  192. data/yarn.lock +1456 -1194
  193. metadata +166 -164
  194. data/app/assets/bundle/trestle/bundle.css +0 -12
  195. data/app/assets/bundle/trestle/bundle.js +0 -89
  196. data/app/assets/bundle/trestle/fa-brands-400.eot +0 -0
  197. data/app/assets/bundle/trestle/fa-brands-400.svg +0 -3717
  198. data/app/assets/bundle/trestle/fa-brands-400.woff +0 -0
  199. data/app/assets/bundle/trestle/fa-regular-400.eot +0 -0
  200. data/app/assets/bundle/trestle/fa-regular-400.svg +0 -801
  201. data/app/assets/bundle/trestle/fa-regular-400.woff +0 -0
  202. data/app/assets/bundle/trestle/fa-solid-900.eot +0 -0
  203. data/app/assets/bundle/trestle/fa-solid-900.svg +0 -5034
  204. data/app/assets/bundle/trestle/fa-solid-900.woff +0 -0
  205. data/app/assets/javascripts/trestle/admin.js +0 -3
  206. data/app/assets/javascripts/trestle/i18n.js.erb +0 -8
  207. data/app/assets/stylesheets/trestle/admin.css +0 -2
  208. data/app/assets/stylesheets/trestle/icons/_font-awesome.css.erb +0 -40
  209. data/app/controllers/concerns/trestle/controller/dialog.rb +0 -16
  210. data/app/views/trestle/application/_dialog.html.erb +0 -34
  211. data/frontend/css/components/_color-vars.scss +0 -10
  212. data/frontend/css/components/_custom-forms.scss +0 -35
  213. data/frontend/css/components/_magnific-popup.scss +0 -36
  214. data/frontend/css/components/_turbolinks.scss +0 -3
  215. data/frontend/js/components/confirmation.js +0 -32
  216. data/frontend/js/components/datepicker.js +0 -69
  217. data/frontend/js/components/dialog.js +0 -149
  218. data/frontend/js/components/file.js +0 -7
  219. data/frontend/js/components/form.js +0 -100
  220. data/frontend/js/components/gallery.js +0 -33
  221. data/frontend/js/components/pagination.js +0 -51
  222. data/frontend/js/components/select.js +0 -18
  223. data/frontend/js/components/sidebar.js +0 -75
  224. data/frontend/js/components/table.js +0 -61
  225. data/frontend/js/components/tabs.js +0 -59
  226. data/frontend/js/components/tooltips.js +0 -25
  227. data/frontend/js/core/contexts.js +0 -17
  228. data/frontend/js/core/turbolinks.js +0 -3
  229. data/frontend/js/core/visit.js +0 -16
  230. data/frontend/theme/trestle/_theme.scss +0 -4
  231. data/frontend/theme/trestle/_variables.scss +0 -4
  232. data/frontend/theme/trestle/theme/_defaults.scss +0 -152
  233. data/frontend/theme/trestle/theme/_functions.scss +0 -44
  234. data/frontend/theme/trestle/theme/_variables.scss +0 -15
  235. data/frontend/theme/trestle/theme/bootstrap/_alert.scss +0 -19
  236. data/frontend/theme/trestle/theme/bootstrap/_badge.scss +0 -25
  237. data/frontend/theme/trestle/theme/bootstrap/_buttons.scss +0 -93
  238. data/frontend/theme/trestle/theme/bootstrap/_color-vars.scss +0 -11
  239. data/frontend/theme/trestle/theme/bootstrap/_custom-forms.scss +0 -93
  240. data/frontend/theme/trestle/theme/bootstrap/_dropdown.scss +0 -6
  241. data/frontend/theme/trestle/theme/bootstrap/_forms.scss +0 -6
  242. data/frontend/theme/trestle/theme/bootstrap/_links.scss +0 -7
  243. data/frontend/theme/trestle/theme/bootstrap/_list-group.scss +0 -31
  244. data/frontend/theme/trestle/theme/bootstrap/_nav.scss +0 -6
  245. data/frontend/theme/trestle/theme/bootstrap/_pagination.scss +0 -18
  246. data/frontend/theme/trestle/theme/bootstrap/_progress.scss +0 -3
  247. data/frontend/theme/trestle/theme/bootstrap/_tables.scss +0 -41
  248. data/frontend/theme/trestle/theme/bootstrap/_utilities.scss +0 -3
  249. data/frontend/theme/trestle/theme/bootstrap/utilities/_background.scss +0 -17
  250. data/frontend/theme/trestle/theme/bootstrap/utilities/_borders.scss +0 -5
  251. data/frontend/theme/trestle/theme/bootstrap/utilities/_text.scss +0 -18
  252. data/frontend/theme/trestle/theme/trestle/_background.scss +0 -61
  253. data/frontend/theme/trestle/theme/trestle/_datepicker.scss +0 -58
  254. data/frontend/theme/trestle/theme/trestle/_headers.scss +0 -4
  255. data/frontend/theme/trestle/theme/trestle/_navbar.scss +0 -15
  256. data/frontend/theme/trestle/theme/trestle/_navigation.scss +0 -5
  257. data/frontend/theme/trestle/theme/trestle/_select2.scss +0 -22
  258. data/frontend/theme/trestle/theme/trestle/_tags.scss +0 -12
  259. data/frontend/theme/trestle/theme/trestle/_turbolinks.scss +0 -3
  260. data/frontend/theme/trestle/theme.scss +0 -29
  261. data/lib/generators/trestle/install/templates/_theme.scss +0 -13
  262. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ar-dz.js +0 -0
  263. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ar.js +0 -0
  264. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/at.js +0 -0
  265. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/az.js +0 -0
  266. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/be.js +0 -0
  267. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/bg.js +0 -0
  268. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/bn.js +0 -0
  269. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/bs.js +0 -0
  270. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/cat.js +0 -0
  271. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ckb.js +0 -0
  272. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/cs.js +0 -0
  273. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/cy.js +0 -0
  274. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/da.js +0 -0
  275. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/de.js +0 -0
  276. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/default.js +0 -0
  277. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/eo.js +0 -0
  278. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/es.js +0 -0
  279. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/et.js +0 -0
  280. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/fa.js +0 -0
  281. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/fi.js +0 -0
  282. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/fo.js +0 -0
  283. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/fr.js +0 -0
  284. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ga.js +0 -0
  285. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/gr.js +0 -0
  286. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/he.js +0 -0
  287. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/hi.js +0 -0
  288. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/hr.js +0 -0
  289. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/hu.js +0 -0
  290. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/hy.js +0 -0
  291. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/id.js +0 -0
  292. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/is.js +0 -0
  293. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/it.js +0 -0
  294. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ja.js +0 -0
  295. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ka.js +0 -0
  296. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/km.js +0 -0
  297. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ko.js +0 -0
  298. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/kz.js +0 -0
  299. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/lt.js +0 -0
  300. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/lv.js +0 -0
  301. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/mk.js +0 -0
  302. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/mn.js +0 -0
  303. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ms.js +0 -0
  304. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/my.js +0 -0
  305. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/nl.js +0 -0
  306. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/nn.js +0 -0
  307. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/no.js +0 -0
  308. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/pa.js +0 -0
  309. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/pl.js +0 -0
  310. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/pt.js +0 -0
  311. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ro.js +0 -0
  312. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/ru.js +0 -0
  313. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/si.js +0 -0
  314. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/sk.js +0 -0
  315. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/sl.js +0 -0
  316. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/sq.js +0 -0
  317. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/sr-cyr.js +0 -0
  318. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/sr.js +0 -0
  319. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/sv.js +0 -0
  320. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/th.js +0 -0
  321. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/tr.js +0 -0
  322. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/uk.js +0 -0
  323. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/uz.js +0 -0
  324. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/uz_latn.js +0 -0
  325. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/vn.js +0 -0
  326. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/zh-tw.js +0 -0
  327. /data/app/assets/bundle/trestle/{flatpickr → locale/flatpickr}/zh.js +0 -0
  328. /data/app/assets/{stylesheets → sprockets}/trestle/_custom.css +0 -0
@@ -2,10 +2,6 @@ module Trestle
2
2
  class Form
3
3
  module Fields
4
4
  module CheckBoxHelpers
5
- def custom?
6
- options[:custom] != false
7
- end
8
-
9
5
  def switch?
10
6
  options[:switch]
11
7
  end
@@ -15,26 +11,19 @@ module Trestle
15
11
  end
16
12
 
17
13
  def default_wrapper_class
18
- if custom?
19
- [
20
- "custom-control",
21
- switch? ? "custom-switch" : "custom-checkbox",
22
- ("custom-control-inline" if inline?)
23
- ].compact
24
- else
25
- [
26
- "form-check",
27
- ("form-check-inline" if inline?)
28
- ].compact
29
- end
14
+ [
15
+ "form-check",
16
+ ("form-switch" if switch?),
17
+ ("form-check-inline" if inline?)
18
+ ].compact
30
19
  end
31
20
 
32
21
  def input_class
33
- custom? ? ["custom-control-input"] : ["form-check-input"]
22
+ ["form-check-input"]
34
23
  end
35
24
 
36
25
  def label_class
37
- custom? ? ["custom-control-label"] : ["form-check-label"]
26
+ ["form-check-label"]
38
27
  end
39
28
 
40
29
  def defaults
@@ -16,7 +16,7 @@ module Trestle
16
16
  end
17
17
 
18
18
  def default_html_options
19
- Trestle::Options.new(class: ["form-control"], disabled: disabled? || readonly?, data: { enable_select2: true })
19
+ Trestle::Options.new(class: ["form-select"], disabled: disabled? || readonly?, data: { controller: "select" })
20
20
  end
21
21
  end
22
22
  end
@@ -2,6 +2,10 @@ class Trestle::Form::Fields::ColorField < Trestle::Form::Fields::FormControl
2
2
  def field
3
3
  builder.raw_color_field(name, options)
4
4
  end
5
+
6
+ def defaults
7
+ super.merge(class: ["form-control-color"])
8
+ end
5
9
  end
6
10
 
7
11
  Trestle::Form::Builder.register(:color_field, Trestle::Form::Fields::ColorField)
@@ -4,6 +4,10 @@ class Trestle::Form::Fields::DateField < Trestle::Form::Fields::FormControl
4
4
  def field
5
5
  builder.raw_date_field(name, options)
6
6
  end
7
+
8
+ def controller
9
+ "datepicker"
10
+ end
7
11
  end
8
12
 
9
13
  Trestle::Form::Builder.register(:date_field, Trestle::Form::Fields::DateField)
@@ -4,13 +4,15 @@ module Trestle::Form::Fields::DatePicker
4
4
  options[:prepend] ||= options.delete(:icon) { default_icon }
5
5
  end
6
6
 
7
- if enable_date_picker?
8
- options.reverse_merge!(data: { picker: true, allow_clear: true })
9
- end
10
-
11
7
  super
12
8
  end
13
9
 
10
+ def defaults
11
+ defaults = super
12
+ defaults.merge!(data: { controller: controller, allow_clear: true }) if enable_date_picker?
13
+ defaults
14
+ end
15
+
14
16
  def default_icon
15
17
  icon("fa fa-calendar")
16
18
  end
@@ -18,4 +20,8 @@ module Trestle::Form::Fields::DatePicker
18
20
  def enable_date_picker?
19
21
  !disabled? && !readonly? && options[:picker] != false
20
22
  end
23
+
24
+ def controller
25
+ "datepicker"
26
+ end
21
27
  end
@@ -17,7 +17,7 @@ module Trestle
17
17
  end
18
18
 
19
19
  def default_html_options
20
- Trestle::Options.new(class: ["form-control"], disabled: readonly?, data: { enable_select2: true })
20
+ Trestle::Options.new(class: ["form-select"], disabled: readonly?, data: { controller: "select" })
21
21
  end
22
22
  end
23
23
  end
@@ -4,6 +4,10 @@ class Trestle::Form::Fields::DatetimeField < Trestle::Form::Fields::FormControl
4
4
  def field
5
5
  builder.raw_datetime_field(name, options)
6
6
  end
7
+
8
+ def controller
9
+ "datetimepicker"
10
+ end
7
11
  end
8
12
 
9
13
  Trestle::Form::Builder.register(:datetime_field, Trestle::Form::Fields::DatetimeField)
@@ -17,7 +17,7 @@ module Trestle
17
17
  end
18
18
 
19
19
  def default_html_options
20
- Trestle::Options.new(class: ["form-control"], disabled: readonly?, data: { enable_select2: true })
20
+ Trestle::Options.new(class: ["form-select"], disabled: readonly?, data: { controller: "select" })
21
21
  end
22
22
  end
23
23
  end
@@ -1,31 +1,6 @@
1
- module Trestle
2
- class Form
3
- module Fields
4
- class FileField < Field
5
- def field
6
- if custom?
7
- content_tag(:div, class: "custom-file") do
8
- concat builder.raw_file_field(name, options.merge(class: "custom-file-input"))
9
- concat builder.label(name, choose_file_text, class: "custom-file-label", data: { browse: browse_text })
10
- end
11
- else
12
- builder.raw_file_field(name, options)
13
- end
14
- end
15
-
16
- def custom?
17
- options[:custom] != false
18
- end
19
-
20
- def choose_file_text
21
- I18n.t("trestle.file.choose_file", default: "Choose file...")
22
- end
23
-
24
- def browse_text
25
- I18n.t("trestle.file.browse", default: "Browse")
26
- end
27
- end
28
- end
1
+ class Trestle::Form::Fields::FileField < Trestle::Form::Fields::FormControl
2
+ def field
3
+ builder.raw_file_field(name, options)
29
4
  end
30
5
  end
31
6
 
@@ -13,9 +13,9 @@ module Trestle
13
13
  def input_group
14
14
  if @prepend || @append
15
15
  content_tag(:div, class: "input-group") do
16
- concat content_tag(:div, input_group_addon(@prepend), class: "input-group-prepend") if @prepend
16
+ concat input_group_addon(@prepend) if @prepend
17
17
  concat yield
18
- concat content_tag(:div, input_group_addon(@append), class: "input-group-append") if @append
18
+ concat input_group_addon(@append) if @append
19
19
  end
20
20
  else
21
21
  yield
@@ -42,7 +42,7 @@ module Trestle
42
42
  end
43
43
 
44
44
  def label
45
- builder.label(name, options[:label], class: ["control-label", ("sr-only" if options[:hide_label])].compact)
45
+ builder.label(name, options[:label], class: ["form-label", ("visually-hidden" if options[:hide_label])].compact)
46
46
  end
47
47
 
48
48
  def defaults
@@ -16,7 +16,7 @@ module Trestle
16
16
  end
17
17
 
18
18
  def default_html_options
19
- Trestle::Options.new(class: ["form-control"], disabled: disabled? || readonly?, data: { enable_select2: true })
19
+ Trestle::Options.new(class: ["form-select"], disabled: disabled? || readonly?, data: { controller: "select" })
20
20
  end
21
21
  end
22
22
  end
@@ -2,35 +2,23 @@ module Trestle
2
2
  class Form
3
3
  module Fields
4
4
  module RadioButtonHelpers
5
- def custom?
6
- options[:custom] != false
7
- end
8
-
9
5
  def inline?
10
6
  options[:inline]
11
7
  end
12
8
 
13
9
  def default_wrapper_class
14
- if custom?
15
- [
16
- "custom-control",
17
- "custom-radio",
18
- ("custom-control-inline" if inline?)
19
- ].compact
20
- else
21
- [
22
- "form-check",
23
- ("form-check-inline" if inline?)
10
+ [
11
+ "form-check",
12
+ ("form-check-inline" if inline?)
24
13
  ].compact
25
- end
26
14
  end
27
15
 
28
16
  def input_class
29
- custom? ? ["custom-control-input"] : ["form-check-input"]
17
+ ["form-check-input"]
30
18
  end
31
19
 
32
20
  def label_class
33
- custom? ? ["custom-control-label"] : ["form-check-label"]
21
+ ["form-check-label"]
34
22
  end
35
23
  end
36
24
  end
@@ -6,12 +6,8 @@ module Trestle
6
6
  builder.raw_range_field(name, options)
7
7
  end
8
8
 
9
- def custom?
10
- options[:custom] != false
11
- end
12
-
13
9
  def defaults
14
- custom? ? super.merge(class: ["custom-range"]) : super
10
+ super.merge(class: ["form-range"])
15
11
  end
16
12
  end
17
13
  end
@@ -18,13 +18,29 @@ module Trestle
18
18
  end
19
19
 
20
20
  def default_html_options
21
- Trestle::Options.new(class: ["form-control"], disabled: disabled? || readonly?, data: { enable_select2: true })
21
+ Trestle::Options.new(class: ["form-select"], disabled: disabled? || readonly?, data: { controller: "select", placeholder: placeholder, allow_clear: clearable? })
22
22
  end
23
23
 
24
24
  def default_choices
25
25
  builder.object.send(name) if builder.object
26
26
  end
27
27
 
28
+ def placeholder
29
+ prompt = options[:prompt] || options[:include_blank]
30
+
31
+ if prompt.kind_of?(String)
32
+ prompt
33
+ elsif options[:prompt]
34
+ I18n.translate("helpers.select.prompt", default: "Please select")
35
+ elsif options[:include_blank]
36
+ ""
37
+ end
38
+ end
39
+
40
+ def clearable?
41
+ options[:allow_clear] || options[:prompt].present? || options[:include_blank].present?
42
+ end
43
+
28
44
  # Allows an array of model instances (or a scope) to be
29
45
  # passed to the select field as the list of choices.
30
46
  class Choices
@@ -8,6 +8,10 @@ class Trestle::Form::Fields::TimeField < Trestle::Form::Fields::FormControl
8
8
  def default_icon
9
9
  icon("fa fa-clock-o")
10
10
  end
11
+
12
+ def controller
13
+ "timepicker"
14
+ end
11
15
  end
12
16
 
13
17
  Trestle::Form::Builder.register(:time_field, Trestle::Form::Fields::TimeField)
@@ -17,7 +17,7 @@ module Trestle
17
17
  end
18
18
 
19
19
  def default_html_options
20
- Trestle::Options.new(class: ["form-control"], disabled: readonly?, data: { enable_select2: true })
20
+ Trestle::Options.new(class: ["form-select"], disabled: readonly?, data: { controller: "select" })
21
21
  end
22
22
  end
23
23
  end
@@ -16,7 +16,7 @@ module Trestle
16
16
  end
17
17
 
18
18
  def default_html_options
19
- Trestle::Options.new(class: ["form-control"], disabled: disabled? || readonly?, data: { enable_select2: true })
19
+ Trestle::Options.new(class: ["form-select"], disabled: disabled? || readonly?, data: { controller: "select" })
20
20
  end
21
21
  end
22
22
  end
@@ -23,6 +23,9 @@ module Trestle
23
23
  # that they can be delegated to the form builder or template by method_missing.
24
24
  undef_method :select, :display
25
25
 
26
+ # These methods defined in ActionView::Helpers::CaptureHelper should be called directly on the existing template object.
27
+ delegate :content_for, :content_for?, :provide, to: :@template
28
+
26
29
  delegate :concat, to: :output_buffer
27
30
 
28
31
  def initialize(template, form=nil)
data/lib/trestle/form.rb CHANGED
@@ -10,10 +10,25 @@ module Trestle
10
10
 
11
11
  def initialize(options={}, &block)
12
12
  @options, @block = options, block
13
+
14
+ if @options[:modal] == true
15
+ @options[:modal] = {}
16
+ end
17
+
18
+ if options[:dialog]
19
+ Trestle.deprecator.warn("`form dialog: true` is deprecated. Please use `form modal: true` instead.", caller_locations(3))
20
+ @options.delete(:dialog)
21
+ @options[:modal] = {}
22
+ end
23
+ end
24
+
25
+ def modal?
26
+ options[:modal]
13
27
  end
14
28
 
15
29
  def dialog?
16
- options[:dialog] == true
30
+ Trestle.deprecator.warn("`Trestle::Form#dialog?` is deprecated. Please use `modal?` instead.")
31
+ options[:modal]
17
32
  end
18
33
 
19
34
  def render(template, instance)
@@ -14,11 +14,11 @@ module Trestle
14
14
  end
15
15
 
16
16
  def delete
17
- link(t("buttons.delete", default: "Delete %{model_name}"), instance, action: :destroy, method: :delete, style: :danger, icon: "fa fa-trash", data: { toggle: "confirm-delete", placement: "bottom" }) if action?(:destroy)
17
+ link(t("buttons.delete", default: "Delete %{model_name}"), instance, action: :destroy, style: :danger, icon: "fa fa-trash", data: { turbo_method: "delete", controller: "confirm-delete", confirm_delete_placement_value: "bottom" }) if action?(:destroy)
18
18
  end
19
19
 
20
20
  def dismiss
21
- button(t("buttons.ok", default: "OK"), style: :light, data: { dismiss: "modal" }) if @template.dialog_request?
21
+ button(t("buttons.ok", default: "OK"), style: :light, data: { bs_dismiss: "modal" }) if @template.modal_request?
22
22
  end
23
23
  alias ok dismiss
24
24
 
@@ -42,7 +42,7 @@ module Trestle
42
42
  end
43
43
 
44
44
  def delete
45
- link(t("buttons.delete", default: "Delete"), instance, admin: admin, action: :destroy, method: :delete, icon: "fa fa-trash", style: :danger, data: { toggle: "confirm-delete", placement: "left" })
45
+ link(t("buttons.delete", default: "Delete"), instance, admin: admin, action: :destroy, icon: "fa fa-trash", style: :danger, data: { turbo_method: "delete", controller: "confirm-delete", confirm_delete_placement_value: "left" })
46
46
  end
47
47
 
48
48
  builder_method :show, :edit, :delete
@@ -67,7 +67,7 @@ module Trestle
67
67
  end
68
68
 
69
69
  def classes
70
- super + ["actions"]
70
+ super + ["table-actions"]
71
71
  end
72
72
 
73
73
  def content(instance)
@@ -33,8 +33,9 @@ module Trestle
33
33
  options = Trestle::Options.new
34
34
 
35
35
  if @table.admin && @table.autolink? && @table.admin.actions.include?(:show)
36
+ options.merge!(data: { controller: "follow-url", action: "click->follow-url#follow" })
36
37
  options.merge!(data: { url: admin_url_for(instance) })
37
- options.merge!(data: { behavior: "dialog" }) if @table.admin.form.dialog?
38
+ options.merge!(data: { modal: true }) if @table.admin.form.modal?
38
39
  end
39
40
 
40
41
  options.merge!(@row.options)
@@ -13,11 +13,11 @@ module Trestle
13
13
 
14
14
  class Renderer < Column::Renderer
15
15
  def header
16
- checkbox "", nil, id: checkbox_id("all")
16
+ checkbox "", nil, id: checkbox_id("all"), data: { checkbox_select_target: "selectAll", action: "change->checkbox-select#toggleAll" }
17
17
  end
18
18
 
19
19
  def content(instance)
20
- checkbox "selected[]", instance.to_param, id: checkbox_id(instance.to_param)
20
+ checkbox "selected[]", instance.to_param, id: checkbox_id(instance.to_param), data: { checkbox_select_target: "checkbox", action: "change->checkbox-select#toggle" }
21
21
  end
22
22
 
23
23
  def classes
@@ -34,10 +34,7 @@ module Trestle
34
34
  end
35
35
 
36
36
  def checkbox(name, value="1", options={})
37
- @template.content_tag(:div, class: "custom-control custom-checkbox") do
38
- @template.check_box_tag(name, value, false, options.merge(class: "custom-control-input")) +
39
- @template.tag(:label, for: options.fetch(:id), class: "custom-control-label")
40
- end
37
+ @template.check_box_tag(name, value, false, options.merge(class: "form-check-input"))
41
38
  end
42
39
  end
43
40
  end
data/lib/trestle/table.rb CHANGED
@@ -70,7 +70,12 @@ module Trestle
70
70
  end
71
71
 
72
72
  def data
73
- options[:data]
73
+ data = options[:data] || {}
74
+
75
+ controllers = Array(data[:controller])
76
+ controllers << "checkbox-select"
77
+
78
+ data.merge(controller: controllers.join(" "))
74
79
  end
75
80
  end
76
81
  end
@@ -97,7 +97,7 @@ module Trestle
97
97
 
98
98
  class Dropdown < Button
99
99
  def options
100
- super.merge(type: "button", data: { toggle: "dropdown" })
100
+ super.merge(type: "button", data: { bs_toggle: "dropdown" })
101
101
  end
102
102
 
103
103
  def label
@@ -18,16 +18,13 @@ module Trestle
18
18
  end
19
19
 
20
20
  def render_toggle(options={})
21
- content_tag(:button, type: "button", class: Array(options[:class]) + ["dropdown-toggle"], data: { toggle: "dropdown" }) do
22
- safe_join([
23
- content_tag(:span, "", class: "caret"),
24
- content_tag(:span, I18n.t("trestle.ui.toggle_dropdown", default: "Toggle dropdown"), class: "sr-only")
25
- ])
21
+ content_tag(:button, type: "button", class: Array(options[:class]) + ["dropdown-toggle dropdown-toggle-split"], data: { bs_toggle: "dropdown" }, aria: { expanded: false }) do
22
+ content_tag(:span, I18n.t("trestle.ui.toggle_dropdown", default: "Toggle dropdown"), class: "visually-hidden")
26
23
  end
27
24
  end
28
25
 
29
26
  def render_items
30
- content_tag(:ul, safe_join(items, "\n"), class: "dropdown-menu dropdown-menu-right", role: "menu")
27
+ content_tag(:ul, safe_join(items, "\n"), class: "dropdown-menu dropdown-menu-end", role: "menu")
31
28
  end
32
29
 
33
30
  class Builder
@@ -1,3 +1,3 @@
1
1
  module Trestle
2
- VERSION = "0.9.9"
2
+ VERSION = "0.10.0.pre"
3
3
  end
data/lib/trestle.rb CHANGED
@@ -6,6 +6,7 @@ require "kaminari"
6
6
  module Trestle
7
7
  require_relative "trestle/evaluation_context"
8
8
  require_relative "trestle/builder"
9
+ require_relative "trestle/color"
9
10
  require_relative "trestle/hook"
10
11
  require_relative "trestle/toolbar"
11
12
  require_relative "trestle/adapters"
@@ -64,30 +65,8 @@ module Trestle
64
65
  Navigation.build(blocks, context)
65
66
  end
66
67
 
67
- # Returns the I18n fallbacks for the given locale.
68
- #
69
- # This is used from within a Sprockets asset (JavaScript)
70
- # to determine which locale files to include.
71
- #
72
- # Examples
73
- #
74
- # Trestle.i18n_fallbacks("pt-BR") => ["pt-BR", "pt"]
75
- # Trestle.i18n_fallbacks("ca") => ["ca", "es-ES", "es"] %>
76
- #
77
- # Returns an array of locale Strings.
78
- def self.i18n_fallbacks(locale=I18n.locale)
79
- if I18n.respond_to?(:fallbacks)
80
- I18n.fallbacks[locale].map(&:to_s)
81
- elsif locale.to_s.include?("-")
82
- fallback = locale.to_s.split("-").first
83
- [locale, fallback]
84
- else
85
- [locale]
86
- end
87
- end
88
-
89
68
  def self.deprecator
90
- @deprecator ||= ActiveSupport::Deprecation.new
69
+ @deprecator ||= ActiveSupport::Deprecation.new('1.0', 'Trestle')
91
70
  end
92
71
  end
93
72
 
data/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "trestle",
3
- "version": "0.9.7",
3
+ "version": "0.10.0.pre",
4
4
  "description": "A modern, responsive admin framework for Ruby on Rails",
5
5
  "homepage": "https://trestle.io",
6
6
  "repository": "https://github.com/TrestleAdmin/trestle.git",
7
7
  "author": "Sam Pohlenz <sam@sampohlenz.com>",
8
- "license": "LGPL-3.0",
8
+ "license": "LGPL-3.0-only",
9
9
  "private": true,
10
10
  "scripts": {
11
11
  "dev": "webpack --mode development",
@@ -13,33 +13,37 @@
13
13
  "watch": "webpack --mode development --watch"
14
14
  },
15
15
  "devDependencies": {
16
- "@babel/core": "^7.14.6",
17
- "@babel/preset-env": "^7.14.7",
18
- "autoprefixer": "^10.2.6",
19
- "babel-loader": "^8.0.6",
20
- "copy-webpack-plugin": "^9.0.1",
21
- "css-loader": "^5.2.6",
22
- "css-minimizer-webpack-plugin": "^3.0.2",
23
- "expose-loader": "^3.0.0",
24
- "mini-css-extract-plugin": "^2.0.0",
25
- "postcss": "^8.3.5",
26
- "postcss-loader": "^6.1.1",
27
- "sass": "^1.76.0",
28
- "sass-loader": "^12.1.0",
29
- "webpack": "^5.42.0",
30
- "webpack-cli": "^4.7.2"
16
+ "@babel/core": "^7.20.12",
17
+ "@babel/helper-explode-assignable-expression": "^7.18.6",
18
+ "@babel/preset-env": "^7.20.2",
19
+ "autoprefixer": "^10.4.13",
20
+ "babel-loader": "^9.1.2",
21
+ "copy-webpack-plugin": "^11.0.0",
22
+ "css-loader": "^6.7.3",
23
+ "css-minimizer-webpack-plugin": "^5.0.0",
24
+ "expose-loader": "^4.0.0",
25
+ "mini-css-extract-plugin": "^2.7.2",
26
+ "postcss": "^8.4.21",
27
+ "postcss-loader": "^7.0.2",
28
+ "sass": "^1.57.1",
29
+ "sass-loader": "^13.2.0",
30
+ "webpack": "^5.75.0",
31
+ "webpack-bundle-analyzer": "^4.7.0",
32
+ "webpack-cli": "^5.0.1"
31
33
  },
32
34
  "dependencies": {
33
- "@fortawesome/fontawesome-free": "^5.15.3",
34
- "@rails/ujs": "^6.1.3-1",
35
- "bootstrap": "^4.5.0",
36
- "bootstrap-confirmation2": "^4.2.1",
37
- "bs-custom-file-input": "^1.3.2",
38
- "flatpickr": "^4.6.2",
35
+ "@fortawesome/fontawesome-free": "^6.2.1",
36
+ "@hotwired/stimulus": "^3.2.2",
37
+ "@hotwired/stimulus-webpack-helpers": "^1.0.1",
38
+ "@hotwired/turbo": "^8.0.2",
39
+ "@popperjs/core": "^2.11.8",
40
+ "bootstrap": "~5.3.1",
41
+ "flatpickr": "^4.6.13",
42
+ "get-video-id": "^4.1.7",
43
+ "i18n-js": "^4.4.3",
39
44
  "jquery": "^3.6.0",
40
- "magnific-popup": "^1.1.0",
41
- "popper.js": "^1.15.0",
42
- "select2": "^4.0.10",
43
- "select2-theme-bootstrap4": "^1.0.0"
45
+ "photoswipe": "^5.4.4",
46
+ "select2": "^4.0.13",
47
+ "select2-bootstrap-5-theme": "~1.3.0"
44
48
  }
45
49
  }
data/trestle.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = "A modern, responsive admin framework for Ruby on Rails"
13
13
  spec.description = "Trestle is a modern, responsive admin framework for Ruby on Rails."
14
14
  spec.homepage = "https://www.trestle.io"
15
- spec.license = "LGPL-3.0"
15
+ spec.license = "LGPL-3.0-only"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|coverage|gemfiles|node_modules|spec|sandbox)/}) }
18
18
 
@@ -22,16 +22,15 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_dependency "railties", ">= 5.2.0"
24
24
  spec.add_dependency "activemodel", ">= 5.2.0"
25
- spec.add_dependency "sprockets-rails", ">= 2.0.0"
26
25
  spec.add_dependency "kaminari", ">= 1.1.0"
27
26
 
28
27
  spec.add_development_dependency "rspec-rails", ">= 5.1.2"
29
28
  spec.add_development_dependency "rspec-html-matchers", "~> 0.10.0"
30
29
  spec.add_development_dependency "database_cleaner", "~> 2.0.2"
31
30
  spec.add_development_dependency "ammeter", "~> 1.1.5"
31
+ spec.add_development_dependency "i18n-js", "~> 4.2.3"
32
32
 
33
33
  spec.add_development_dependency "bundler"
34
34
  spec.add_development_dependency "rake"
35
35
  spec.add_development_dependency "sqlite3"
36
- spec.add_development_dependency "turbolinks"
37
36
  end