alchemy_cms 7.0.14 → 7.1.0.pre.b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/backport.yml +36 -0
  3. data/.github/workflows/test.yml +3 -2
  4. data/.gitignore +0 -1
  5. data/.standard.yml +1 -1
  6. data/CHANGELOG.md +144 -33
  7. data/Gemfile +7 -11
  8. data/README.md +10 -8
  9. data/alchemy_cms.gemspec +4 -3
  10. data/app/assets/config/alchemy_manifest.js +0 -1
  11. data/app/assets/javascripts/alchemy/admin.js +1 -19
  12. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -3
  13. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +19 -34
  14. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +38 -13
  15. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
  16. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +32 -25
  17. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
  18. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +3 -5
  19. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +0 -57
  20. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +22 -63
  21. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
  22. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +5 -4
  23. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +5 -5
  24. data/app/assets/javascripts/alchemy/templates/index.js +0 -2
  25. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
  26. data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
  27. data/app/assets/javascripts/alchemy/templates/page_folder.hbs +2 -2
  28. data/app/assets/stylesheets/alchemy/_custom-properties.scss +82 -0
  29. data/app/assets/stylesheets/alchemy/_mixins.scss +38 -30
  30. data/app/assets/stylesheets/alchemy/_variables.scss +12 -5
  31. data/app/assets/stylesheets/alchemy/admin.scss +3 -4
  32. data/app/assets/stylesheets/alchemy/archive.scss +107 -50
  33. data/app/assets/stylesheets/alchemy/attachments.scss +5 -4
  34. data/app/assets/stylesheets/alchemy/buttons.scss +38 -164
  35. data/app/assets/stylesheets/alchemy/dashboard.scss +31 -6
  36. data/app/assets/stylesheets/alchemy/dialogs.scss +12 -28
  37. data/app/assets/stylesheets/alchemy/elements.scss +273 -282
  38. data/app/assets/stylesheets/alchemy/flash.scss +20 -12
  39. data/app/assets/stylesheets/alchemy/forms.scss +21 -34
  40. data/app/assets/stylesheets/alchemy/frame.scss +11 -32
  41. data/app/assets/stylesheets/alchemy/hints.scss +4 -62
  42. data/app/assets/stylesheets/alchemy/image_library.scss +36 -33
  43. data/app/assets/stylesheets/alchemy/labels.scss +4 -1
  44. data/app/assets/stylesheets/alchemy/menubar.scss +7 -6
  45. data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
  46. data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
  47. data/app/assets/stylesheets/alchemy/notices.scss +16 -4
  48. data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
  49. data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
  50. data/app/assets/stylesheets/alchemy/preview_window.scss +4 -8
  51. data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
  52. data/app/assets/stylesheets/alchemy/selects.scss +49 -42
  53. data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
  54. data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
  55. data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
  56. data/app/assets/stylesheets/alchemy/tables.scss +16 -24
  57. data/app/assets/stylesheets/alchemy/tags.scss +4 -0
  58. data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
  59. data/app/assets/stylesheets/alchemy/upload.scss +140 -89
  60. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
  61. data/app/components/alchemy/admin/node_select.rb +39 -0
  62. data/app/components/alchemy/admin/page_select.rb +42 -0
  63. data/app/components/alchemy/ingredients/audio_view.rb +1 -1
  64. data/app/components/alchemy/ingredients/base_view.rb +1 -1
  65. data/app/components/alchemy/ingredients/boolean_view.rb +1 -1
  66. data/app/components/alchemy/ingredients/datetime_view.rb +1 -1
  67. data/app/components/alchemy/ingredients/file_view.rb +1 -1
  68. data/app/components/alchemy/ingredients/headline_view.rb +7 -16
  69. data/app/components/alchemy/ingredients/link_view.rb +1 -1
  70. data/app/components/alchemy/ingredients/page_view.rb +1 -1
  71. data/app/components/alchemy/ingredients/picture_view.rb +1 -1
  72. data/app/components/alchemy/ingredients/richtext_view.rb +1 -1
  73. data/app/components/alchemy/ingredients/text_view.rb +1 -1
  74. data/app/components/alchemy/ingredients/video_view.rb +1 -1
  75. data/app/controllers/alchemy/admin/base_controller.rb +5 -6
  76. data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
  77. data/app/controllers/alchemy/admin/languages_controller.rb +1 -2
  78. data/app/controllers/alchemy/base_controller.rb +4 -2
  79. data/app/controllers/concerns/alchemy/admin/current_language.rb +1 -5
  80. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
  81. data/app/controllers/concerns/alchemy/site_redirects.rb +1 -1
  82. data/app/decorators/alchemy/element_editor.rb +0 -2
  83. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
  84. data/app/helpers/alchemy/admin/base_helper.rb +17 -12
  85. data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
  86. data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
  87. data/app/helpers/alchemy/base_helper.rb +47 -13
  88. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
  89. data/app/javascript/alchemy_admin/components/button.js +59 -0
  90. data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
  91. data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
  92. data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
  93. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
  94. data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
  95. data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
  96. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
  97. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
  98. data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
  99. data/app/javascript/alchemy_admin/components/node_select.js +45 -0
  100. data/app/javascript/alchemy_admin/components/overlay.js +18 -0
  101. data/app/javascript/alchemy_admin/components/page_select.js +63 -0
  102. data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
  103. data/app/javascript/alchemy_admin/components/select.js +12 -0
  104. data/app/javascript/alchemy_admin/components/spinner.js +31 -0
  105. data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
  106. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
  107. data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
  108. data/app/javascript/alchemy_admin/components/uploader.js +132 -0
  109. data/app/javascript/alchemy_admin/dirty.js +49 -0
  110. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  111. data/app/javascript/alchemy_admin/gui.js +14 -0
  112. data/app/javascript/alchemy_admin/i18n.js +12 -8
  113. data/app/javascript/alchemy_admin/image_cropper.js +6 -3
  114. data/app/javascript/alchemy_admin/image_loader.js +7 -15
  115. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
  116. data/app/javascript/alchemy_admin/initializer.js +65 -0
  117. data/app/javascript/alchemy_admin/locales/en.js +31 -0
  118. data/app/javascript/alchemy_admin/picture_editors.js +2 -2
  119. data/app/javascript/alchemy_admin/picture_selector.js +38 -0
  120. data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
  121. data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
  122. data/app/javascript/alchemy_admin/spinner.js +36 -0
  123. data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
  124. data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
  125. data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
  126. data/app/javascript/alchemy_admin/utils/format.js +11 -0
  127. data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
  128. data/app/javascript/alchemy_admin.js +70 -13
  129. data/app/javascript/menubar.js +10 -0
  130. data/app/models/alchemy/attachment.rb +9 -11
  131. data/app/models/alchemy/element.rb +11 -0
  132. data/app/models/alchemy/ingredients/audio.rb +0 -11
  133. data/app/models/alchemy/ingredients/richtext.rb +1 -10
  134. data/app/models/alchemy/ingredients/video.rb +0 -12
  135. data/app/models/alchemy/node.rb +4 -0
  136. data/app/models/alchemy/page/page_elements.rb +2 -11
  137. data/app/models/alchemy/page/page_natures.rb +10 -2
  138. data/app/models/alchemy/page.rb +9 -51
  139. data/app/models/alchemy/picture/url.rb +1 -9
  140. data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
  141. data/app/services/alchemy/copy_page.rb +98 -0
  142. data/app/views/alchemy/_menubar.html.erb +17 -13
  143. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
  144. data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
  145. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
  146. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  147. data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
  148. data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
  149. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  150. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  151. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
  152. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  153. data/app/views/alchemy/admin/crop.html.erb +1 -1
  154. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  155. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
  156. data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
  157. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +21 -23
  158. data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
  159. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  160. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  161. data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
  162. data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
  163. data/app/views/alchemy/admin/elements/create.js.erb +7 -15
  164. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
  165. data/app/views/alchemy/admin/elements/index.html.erb +27 -24
  166. data/app/views/alchemy/admin/elements/new.html.erb +9 -11
  167. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
  168. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
  169. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
  170. data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
  171. data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
  172. data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
  173. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
  174. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  175. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
  176. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  177. data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
  178. data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
  179. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  180. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
  181. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  182. data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
  183. data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
  184. data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
  185. data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
  186. data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
  187. data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
  188. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
  189. data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
  190. data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
  191. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
  192. data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
  193. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
  194. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  195. data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
  196. data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
  197. data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
  198. data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
  199. data/app/views/alchemy/admin/pages/info.html.erb +20 -11
  200. data/app/views/alchemy/admin/pages/link.html.erb +22 -16
  201. data/app/views/alchemy/admin/pages/new.html.erb +9 -11
  202. data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
  203. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
  204. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
  205. data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
  206. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
  207. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
  208. data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
  209. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  210. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
  211. data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
  212. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
  213. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
  214. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  215. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
  216. data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
  217. data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
  218. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  219. data/app/views/alchemy/admin/resources/_filter.html.erb +2 -2
  220. data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
  221. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
  222. data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
  223. data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
  224. data/app/views/alchemy/admin/resources/index.html.erb +22 -19
  225. data/app/views/alchemy/admin/sites/index.html.erb +2 -1
  226. data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
  227. data/app/views/alchemy/admin/tags/_tag.html.erb +16 -18
  228. data/app/views/alchemy/admin/tags/index.html.erb +15 -12
  229. data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
  230. data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
  231. data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
  232. data/app/views/alchemy/base/500.html.erb +1 -1
  233. data/app/views/alchemy/base/error_notice.js.erb +0 -1
  234. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  235. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
  236. data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
  237. data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
  238. data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
  239. data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
  240. data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
  241. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
  242. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  243. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  244. data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
  245. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
  246. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
  247. data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
  248. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  249. data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
  250. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  251. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  252. data/app/views/layouts/alchemy/admin.html.erb +10 -29
  253. data/config/alchemy/modules.yml +30 -30
  254. data/config/importmap.rb +10 -1
  255. data/config/initializers/rails_live_reload.rb +13 -0
  256. data/config/locales/alchemy.en.yml +23 -9
  257. data/config/routes.rb +2 -1
  258. data/lib/alchemy/auth_accessors.rb +6 -1
  259. data/lib/alchemy/controller_actions.rb +17 -4
  260. data/lib/alchemy/dev_support/live_reload_watcher.rb +5 -0
  261. data/lib/alchemy/engine.rb +8 -2
  262. data/lib/alchemy/forms/builder.rb +18 -12
  263. data/lib/alchemy/modules.rb +2 -2
  264. data/lib/alchemy/resources_helper.rb +3 -3
  265. data/lib/alchemy/routing_constraints.rb +1 -1
  266. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  267. data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
  268. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  269. data/lib/alchemy/tinymce.rb +8 -3
  270. data/lib/alchemy/version.rb +1 -1
  271. data/package.json +14 -5
  272. data/vendor/assets/fonts/remixicon.eot +0 -0
  273. data/vendor/assets/fonts/remixicon.svg +7816 -0
  274. data/vendor/assets/fonts/remixicon.ttf +0 -0
  275. data/vendor/assets/fonts/remixicon.woff +0 -0
  276. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  277. data/vendor/assets/stylesheets/remixicon.scss +10480 -0
  278. metadata +85 -97
  279. data/.gem_release.yml +0 -8
  280. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
  281. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
  282. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
  283. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
  284. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
  285. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
  286. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
  287. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
  288. data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
  289. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
  290. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
  291. data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
  292. data/app/assets/javascripts/alchemy/node_select.js +0 -39
  293. data/app/assets/javascripts/alchemy/page_select.js +0 -46
  294. data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
  295. data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
  296. data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
  297. data/app/javascript/alchemy_admin/datepicker.js +0 -40
  298. data/app/javascript/alchemy_admin/tinymce.js +0 -146
  299. data/app/javascript/alchemy_admin/translations.js +0 -32
  300. data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
  301. data/app/views/alchemy/admin/elements/order.js.erb +0 -11
  302. data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
  303. data/app/views/alchemy/admin/elements/update.js.erb +0 -27
  304. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  305. data/vendor/assets/fonts/fa-regular-400.svg +0 -803
  306. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  307. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  308. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  309. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  310. data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
  311. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  312. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  313. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  314. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
  315. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
  316. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
  317. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
  318. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  319. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  320. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  321. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  322. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  323. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  324. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  325. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  326. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  327. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
  328. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  329. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  330. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
  331. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  332. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
  333. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
  334. data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
  335. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
  336. data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
  337. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
  338. data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
  339. data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
  340. data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
  341. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
  342. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
  343. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
  344. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
  345. data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
  346. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
  347. data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
  348. data/vendor/assets/stylesheets/fontawesome/solid.scss +0 -24
@@ -26,16 +26,20 @@ input.button {
26
26
 
27
27
  &.small {
28
28
  padding: $small-button-padding;
29
- vertical-align: inherit;
30
29
  line-height: 4 * $default-padding;
31
30
  font-size: inherit;
32
31
  }
33
32
 
34
- &.with_icon .icon {
35
- position: relative;
36
- top: -1px;
37
- margin-right: 2 * $default-margin;
38
- color: inherit;
33
+ &.with_icon {
34
+ display: inline-flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+
38
+ .icon {
39
+ font-weight: normal;
40
+ margin-right: $default-margin;
41
+ color: inherit;
42
+ }
39
43
  }
40
44
 
41
45
  &[disabled] {
@@ -44,64 +48,48 @@ input.button {
44
48
  }
45
49
 
46
50
  .icon_button {
47
- width: 27px;
48
- height: 27px;
49
- line-height: 21px;
51
+ position: relative;
52
+ display: inline-flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ width: 30px;
56
+ height: 30px;
50
57
  margin: 0;
51
- padding: 3px;
52
- overflow: hidden;
53
- text-align: center;
58
+ padding: 0;
54
59
  text-shadow: none;
55
60
  border-radius: $default-border-radius;
56
61
 
57
- img {
58
- position: absolute;
59
- top: 2px;
60
- left: 3px;
61
- }
62
-
63
62
  &.small {
64
63
  width: 15px;
65
64
  height: 15px;
66
- padding: 0;
67
- float: none;
68
- display: inline-block;
69
- vertical-align: middle;
70
- position: relative;
71
- top: 0px;
72
65
  background: none;
73
66
  border: none;
67
+ }
74
68
 
75
- .icon {
76
- position: absolute;
77
- top: 50%;
78
- transform: translateX(-50%) translateY(-50%);
79
- transition: color 250ms;
80
- }
81
-
82
- &:hover {
83
- border: $default-border-width $default-border-style $icon-color;
84
- color: $icon-color;
69
+ &.active,
70
+ &:active,
71
+ &:hover:not([disabled]):not(.disabled):not(.linked) {
72
+ text-decoration: none;
73
+ background-color: $default-border-color;
74
+ cursor: pointer;
75
+ }
85
76
 
86
- .icon {
87
- color: inherit;
88
- }
89
- }
77
+ .icon {
78
+ color: inherit;
79
+ transition: color 250ms;
90
80
  }
91
81
 
92
82
  &.disabled,
93
83
  &[disabled] {
94
- span {
95
- opacity: 0.3;
96
- cursor: not-allowed;
97
- }
84
+ pointer-events: none;
98
85
 
99
86
  i {
100
87
  opacity: 0.3;
101
88
  }
102
89
 
103
90
  &:hover {
104
- cursor: not-allowed;
91
+ text-decoration: none;
92
+ cursor: default;
105
93
  }
106
94
  }
107
95
 
@@ -109,15 +97,21 @@ input.button {
109
97
  @include linked-button;
110
98
  }
111
99
 
112
- &:focus {
100
+ &:focus:not(.disabled):not([disabled]) {
113
101
  @include default-focus-style;
114
102
  }
103
+
104
+ .spinner {
105
+ position: static;
106
+ transform: none;
107
+ }
115
108
  }
116
109
 
117
110
  button.icon_button {
118
111
  background: transparent;
119
112
  border: 0 none;
120
113
  box-shadow: none;
114
+ font-weight: normal;
121
115
 
122
116
  &:disabled,
123
117
  &.disabled {
@@ -128,123 +122,3 @@ button.icon_button {
128
122
  #new_element button.button {
129
123
  float: right;
130
124
  }
131
-
132
- .button_with_label {
133
- position: relative;
134
- display: inline-block;
135
- text-align: center;
136
-
137
- .toolbar_buttons & {
138
- margin: 0 2 * $default-margin;
139
- }
140
-
141
- &.active,
142
- &:active,
143
- &:hover {
144
- .icon_button:not([disabled]) {
145
- background-color: $default-border-color;
146
- cursor: pointer;
147
- }
148
- }
149
-
150
- .select2-container,
151
- select {
152
- margin: 0;
153
- top: 0;
154
- }
155
-
156
- .icon_button {
157
- float: none;
158
- margin-right: auto;
159
- margin-left: auto;
160
- display: inline-block;
161
- vertical-align: middle;
162
- position: relative;
163
- }
164
-
165
- &.disabled {
166
- opacity: 0.5;
167
- cursor: default;
168
- }
169
- }
170
-
171
- .button_with_label,
172
- .button_group {
173
- .icon_button {
174
- width: 29px;
175
- height: 29px;
176
- line-height: 24px;
177
- }
178
-
179
- label {
180
- border-radius: $default-border-radius;
181
- position: absolute;
182
- visibility: hidden;
183
- top: -20px;
184
- left: 50%;
185
- margin-left: -13px;
186
- z-index: 30;
187
- background-color: $tooltip-background-color;
188
- color: $white;
189
- padding: $default-padding 2 * $default-padding 1.5 * $default-padding;
190
- line-height: 1;
191
- box-shadow: 0 0 4px $default-border-color;
192
- white-space: nowrap;
193
- pointer-events: none;
194
- opacity: 0;
195
- transition: 0.3s;
196
-
197
- &:before {
198
- content: "";
199
- position: absolute;
200
- bottom: -10px;
201
- left: 8px;
202
- border: 5px transparent solid;
203
- border-top-color: $tooltip-background-color;
204
- }
205
-
206
- &.center {
207
- left: auto;
208
- right: 50%;
209
- margin-left: 0;
210
- transform: translateX(50%);
211
-
212
- &:before {
213
- left: auto;
214
- right: 50%;
215
- transform: translateX(50%);
216
- }
217
- }
218
-
219
- &.left {
220
- left: auto;
221
- right: 50%;
222
- margin-left: 0;
223
- margin-right: -13px;
224
-
225
- &:before {
226
- left: auto;
227
- right: 8px;
228
- }
229
- }
230
-
231
- &.right-aligned {
232
- left: auto;
233
- margin-left: auto;
234
- right: 50%;
235
- margin-right: -13px;
236
-
237
- &:before {
238
- left: auto;
239
- right: 8px;
240
- }
241
- }
242
- }
243
-
244
- &:hover label {
245
- visibility: visible;
246
- opacity: 1;
247
- top: -25px;
248
- transition-delay: 0.2s;
249
- }
250
- }
@@ -1,6 +1,6 @@
1
1
  #dashboard {
2
2
  overflow: auto;
3
- padding: 4*$default-padding 0;
3
+ padding: 4 * $default-padding 0;
4
4
  width: 100%;
5
5
  position: relative;
6
6
 
@@ -35,8 +35,13 @@
35
35
  td {
36
36
  position: relative;
37
37
 
38
- &:first-child { width: 40% }
39
- form { float: right }
38
+ &:first-child {
39
+ width: 40%;
40
+ }
41
+
42
+ form {
43
+ float: right;
44
+ }
40
45
  }
41
46
  }
42
47
  }
@@ -53,10 +58,30 @@
53
58
  display: none;
54
59
  }
55
60
 
56
- & > span { display: none }
61
+ > span {
62
+ display: inline-flex;
63
+ gap: $default-padding;
64
+ align-items: center;
65
+
66
+ &.hidden {
67
+ display: none;
68
+ }
69
+
70
+ .icon {
71
+ color: inherit;
72
+ }
73
+ }
74
+
75
+ #up_to_date {
76
+ color: $success_text_color;
77
+ }
78
+
79
+ #error {
80
+ color: $error_text_color;
81
+ }
57
82
 
58
- span.icon {
59
- vertical-align: top;
83
+ #update_available {
84
+ color: $warning_text_color;
60
85
  }
61
86
  }
62
87
 
@@ -19,7 +19,7 @@ $dialog-transition-duration: 150ms;
19
19
 
20
20
  // vertical aligment
21
21
  &:before {
22
- content: '';
22
+ content: "";
23
23
  width: 0;
24
24
  height: 100%;
25
25
  display: inline-block;
@@ -41,7 +41,7 @@ $dialog-transition-duration: 150ms;
41
41
  z-index: 30;
42
42
  width: 100%;
43
43
  height: 100%;
44
- background-color: rgba(0, 0, 0, 0.0);
44
+ background-color: rgba(0, 0, 0, 0);
45
45
  transition: background-color $dialog-transition-duration linear;
46
46
 
47
47
  &.closable {
@@ -50,7 +50,6 @@ $dialog-transition-duration: 150ms;
50
50
  }
51
51
 
52
52
  .alchemy-dialog-overlay {
53
-
54
53
  &.open {
55
54
  background-color: rgba($dialog-overlay-color, $dialog-overlay-opacity);
56
55
  }
@@ -67,7 +66,7 @@ $dialog-transition-duration: 150ms;
67
66
 
68
67
  .alchemy-dialog {
69
68
  white-space: normal;
70
- margin: 2*$default-margin;
69
+ margin: 2 * $default-margin;
71
70
  @include border-top-radius($default-border-radius);
72
71
  box-shadow: $dialog-box-shadow;
73
72
  background-color: $dialog-background-color;
@@ -122,25 +121,23 @@ $dialog-transition-duration: 150ms;
122
121
  }
123
122
 
124
123
  .alchemy-dialog-header {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: $default-padding;
125
127
  position: relative;
126
128
  height: $dialog-header-height;
127
- padding: 0 2*$default-padding;
128
- line-height: $dialog-header-height;
129
+ padding: 0 2 * $default-padding;
129
130
  background: $dialog-header-color;
130
131
  color: $dialog-header-text-color;
131
132
  font-weight: normal;
132
133
  font-size: $dialog-header-font-size;
133
134
  @include border-top-radius($default-border-radius);
134
-
135
- .ui-draggable & {
136
- cursor: move;
137
- }
138
135
  }
139
136
 
140
137
  .alchemy-dialog-title {
138
+ flex-grow: 1;
141
139
  font-weight: bold;
142
140
  padding: 0 $default-padding;
143
- margin-right: 22px;
144
141
  white-space: nowrap;
145
142
  overflow: hidden;
146
143
  text-overflow: ellipsis;
@@ -149,15 +146,10 @@ $dialog-transition-duration: 150ms;
149
146
 
150
147
  .alchemy-image-overlay-close,
151
148
  .alchemy-dialog-close {
152
- position: absolute;
153
- z-index: 1;
154
149
  cursor: pointer;
155
150
  }
156
151
 
157
152
  .alchemy-dialog-close {
158
- top: 0;
159
- right: 2*$default-padding;
160
- padding: 0 $default-padding;
161
153
  color: inherit;
162
154
 
163
155
  .icon {
@@ -174,7 +166,7 @@ $dialog-transition-duration: 150ms;
174
166
  }
175
167
 
176
168
  &.padded {
177
- padding: 4*$default-padding;
169
+ padding: 4 * $default-padding;
178
170
 
179
171
  .message {
180
172
  margin: 0 0 8px 0;
@@ -192,22 +184,14 @@ $dialog-transition-duration: 150ms;
192
184
  }
193
185
 
194
186
  .alchemy-dialog-buttons {
195
- padding-top: 4*$default-padding;
187
+ padding-top: 4 * $default-padding;
196
188
  text-align: right;
197
189
 
198
190
  button:first-child {
199
- margin-right: 2*$default-margin;
191
+ margin-right: 2 * $default-margin;
200
192
  }
201
193
  }
202
194
 
203
195
  #overlay_tabs {
204
- margin: -4*$default-padding;
205
-
206
- .ui-tabs-panel {
207
- padding: 4*$default-padding;
208
- }
209
-
210
- .ui-tabs.ui-corner-all {
211
- border-radius: 0;
212
- }
196
+ margin: -4 * $default-padding;
213
197
  }