alchemy_cms 7.1.0.pre.b1 → 7.1.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/Gemfile +1 -1
  4. data/README.md +2 -2
  5. data/alchemy_cms.gemspec +1 -1
  6. data/app/assets/config/alchemy_manifest.js +3 -4
  7. data/app/assets/images/alchemy/missing-image.svg +1 -1
  8. data/app/assets/javascripts/alchemy/admin.js +0 -4
  9. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +4 -4
  10. data/app/assets/javascripts/tinymce/icons/remixicons/icons.js +93 -0
  11. data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +37 -18
  12. data/app/assets/stylesheets/alchemy/_variables.scss +11 -3
  13. data/app/assets/stylesheets/alchemy/archive.scss +5 -2
  14. data/app/assets/stylesheets/alchemy/buttons.scss +5 -4
  15. data/app/assets/stylesheets/alchemy/dialogs.scss +1 -1
  16. data/app/assets/stylesheets/alchemy/elements.scss +4 -5
  17. data/app/assets/stylesheets/alchemy/filter_field.scss +5 -0
  18. data/app/assets/stylesheets/tinymce/skins/content/alchemy/content.min.scss +69 -0
  19. data/app/assets/stylesheets/tinymce/skins/skintool.json +38 -0
  20. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css +711 -0
  21. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css +705 -0
  22. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css +7 -0
  23. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css +7 -0
  24. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css +29 -0
  25. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css +7 -0
  26. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff +0 -0
  27. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.min.scss +3803 -0
  28. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css +677 -0
  29. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css +7 -0
  30. data/app/controllers/alchemy/admin/pages_controller.rb +9 -4
  31. data/app/helpers/alchemy/admin/base_helper.rb +23 -10
  32. data/app/helpers/alchemy/base_helper.rb +16 -1
  33. data/app/javascript/alchemy_admin/components/button.js +1 -1
  34. data/app/javascript/alchemy_admin/components/clipboard_button.js +27 -0
  35. data/app/javascript/alchemy_admin/components/element_editor.js +2 -2
  36. data/app/javascript/alchemy_admin/components/tinymce.js +9 -21
  37. data/app/javascript/alchemy_admin/picture_editors.js +4 -2
  38. data/app/javascript/alchemy_admin/utils/debounce.js +10 -0
  39. data/app/javascript/alchemy_admin/utils/max.js +3 -0
  40. data/app/javascript/alchemy_admin.js +4 -10
  41. data/app/models/alchemy/page/page_naming.rb +7 -0
  42. data/app/models/alchemy/page.rb +2 -2
  43. data/app/models/alchemy/picture_variant.rb +11 -2
  44. data/app/models/concerns/alchemy/picture_thumbnails.rb +1 -1
  45. data/app/views/alchemy/admin/attachments/show.html.erb +10 -19
  46. data/app/views/alchemy/admin/crop.html.erb +1 -1
  47. data/app/views/alchemy/admin/nodes/index.html.erb +1 -0
  48. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +0 -1
  49. data/app/views/alchemy/admin/pictures/_archive.html.erb +3 -3
  50. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +16 -3
  51. data/app/views/alchemy/admin/pictures/_picture.html.erb +3 -5
  52. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  53. data/app/views/alchemy/admin/resources/_filter.html.erb +1 -1
  54. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
  55. data/app/views/alchemy/admin/tinymce/_setup.html.erb +1 -2
  56. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +2 -2
  57. data/app/views/layouts/alchemy/admin.html.erb +1 -1
  58. data/bundles/shoelace.js +10 -0
  59. data/bundles/tinymce.js +20 -0
  60. data/config/alchemy/config.yml +11 -10
  61. data/config/brakeman.ignore +0 -34
  62. data/config/importmap.rb +9 -14
  63. data/config/initializers/dragonfly.rb +1 -0
  64. data/config/locales/alchemy.en.yml +2 -0
  65. data/eslint.config.js +17 -0
  66. data/lib/alchemy/config.rb +24 -2
  67. data/lib/alchemy/engine.rb +2 -1
  68. data/lib/alchemy/forms/builder.rb +7 -0
  69. data/lib/alchemy/test_support/capybara_helpers.rb +1 -1
  70. data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +6 -6
  71. data/lib/alchemy/tinymce.rb +13 -2
  72. data/lib/alchemy/version.rb +1 -1
  73. data/package.json +20 -6
  74. data/rollup.config.mjs +65 -0
  75. data/vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css +1 -0
  76. data/vendor/javascript/clipboard.min.js +7 -0
  77. data/vendor/javascript/flatpickr.min.js +1 -0
  78. data/vendor/javascript/keymaster.min.js +1 -0
  79. data/vendor/javascript/rails-ujs.min.js +1 -0
  80. data/vendor/javascript/shoelace.min.js +995 -0
  81. data/vendor/javascript/sortable.min.js +7 -0
  82. data/vendor/javascript/tinymce.min.js +1 -0
  83. data/vendor/javascript/ungap-custom-elements.min.js +3 -0
  84. metadata +31 -39
  85. data/.codeclimate.yml +0 -35
  86. data/.editorconfig +0 -23
  87. data/.github/FUNDING.yml +0 -4
  88. data/.github/ISSUE_TEMPLATE/Bug_report.md +0 -22
  89. data/.github/ISSUE_TEMPLATE/Feature_request.md +0 -17
  90. data/.github/PULL_REQUEST_TEMPLATE.md +0 -18
  91. data/.github/workflows/backport.yml +0 -36
  92. data/.github/workflows/brakeman-analysis.yml +0 -46
  93. data/.github/workflows/lint.yml +0 -37
  94. data/.github/workflows/stale.yml +0 -33
  95. data/.github/workflows/test.yml +0 -125
  96. data/.gitignore +0 -32
  97. data/.hound.yml +0 -9
  98. data/.localeapp/config.rb +0 -8
  99. data/.prettierrc +0 -6
  100. data/.rspec +0 -1
  101. data/.rubocop.yml +0 -7
  102. data/.standard.yml +0 -4
  103. data/.yardopts +0 -5
  104. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +0 -94
  105. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +0 -63
  106. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
  107. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
  108. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +0 -129
  109. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
  110. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
  111. data/app/assets/stylesheets/tinymce/skins/alchemy/img/anchor.gif +0 -0
  112. data/app/assets/stylesheets/tinymce/skins/alchemy/img/loader.gif +0 -0
  113. data/app/assets/stylesheets/tinymce/skins/alchemy/img/object.gif +0 -0
  114. data/app/assets/stylesheets/tinymce/skins/alchemy/img/trans.gif +0 -0
  115. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +0 -2077
  116. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +0 -10
  117. data/vendor/assets/javascripts/clipboard.min.js +0 -7
  118. data/vendor/assets/javascripts/keymaster.js +0 -296
  119. data/vendor/assets/javascripts/requestAnimationFrame.js +0 -31
  120. data/vendor/assets/javascripts/tinymce/license.txt +0 -504
  121. data/vendor/assets/javascripts/tinymce/tinymce.min.js +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5fb9cc889441542df81f914d50c91feabb03990e67f92ce0092546736f1bb1d
4
- data.tar.gz: ce0865e967f9f99d5008d43230f8e89c45287890185c502303ba8986df54e454
3
+ metadata.gz: 52cea190db8dfb6571f62d93f72942df0c05afbf7b7988b952da56cbbba5dd91
4
+ data.tar.gz: efd336249755bc11de59ff751be0af224ab9861f902df7ddd4226a97208840b6
5
5
  SHA512:
6
- metadata.gz: 9dafbbae6fa3b062d79ac7121781a864deb5d0da1bc2ba663753799b8a5a28eaf413d9a7ff9f12e3f35590d62bb08b7f7ea154f5e92a729877a1ae6c0c5428e9
7
- data.tar.gz: 83805ccd75226f2c596f0d24594857beedfc5e6391b305e88d0e9d5727b0e70d1b7d1bb4969e2649635baa9c29dfb65e104424ff4f327ae8a4b5d9ed60a3605b
6
+ metadata.gz: 587dee2f8372e32252543bbf6dd86bad7ab69d1734c2f129b3b6c4d11519e32f476f8605d2675e3df8cde2a1485ec470383baab818ab236895d61e0f37f9b631
7
+ data.tar.gz: dfdaa30ab9f4429d75fdc1bf4930cce9e5b093f9a5e4ca2a3a090008e90c0747b8efb6c7dc40fecc0874fd788db9de82da3a6e071eeed2c65e297ca2a3c9b7a2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 7.1.0-rc1 (2024-01-15)
4
+
5
+ - Use title attribute for link_to_dialog and delete_button tooltip [#2688](https://github.com/AlchemyCMS/alchemy_cms/pull/2688) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Add alchemy-clipboard-button component [#2687](https://github.com/AlchemyCMS/alchemy_cms/pull/2687) ([tvdeyen](https://github.com/tvdeyen))
7
+ - Fix layout of empty picture archive [#2686](https://github.com/AlchemyCMS/alchemy_cms/pull/2686) ([tvdeyen](https://github.com/tvdeyen))
8
+ - Fix Tinymce language config [#2685](https://github.com/AlchemyCMS/alchemy_cms/pull/2685) ([tvdeyen](https://github.com/tvdeyen))
9
+ - Add richtext input type for form builder [#2684](https://github.com/AlchemyCMS/alchemy_cms/pull/2684) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Add support for legacy icon styles [#2683](https://github.com/AlchemyCMS/alchemy_cms/pull/2683) ([tvdeyen](https://github.com/tvdeyen))
11
+ - Fix imports of ES modules [#2682](https://github.com/AlchemyCMS/alchemy_cms/pull/2682) ([tvdeyen](https://github.com/tvdeyen))
12
+ - Use webp for image cropper [#2681](https://github.com/AlchemyCMS/alchemy_cms/pull/2681) ([tvdeyen](https://github.com/tvdeyen))
13
+ - Fix sizing of tinymce textarea [#2680](https://github.com/AlchemyCMS/alchemy_cms/pull/2680) ([tvdeyen](https://github.com/tvdeyen))
14
+
15
+ ## 7.1.0-b2 (2024-01-09)
16
+
17
+ - Download and bundle third party JS packages with npm [#2679](https://github.com/AlchemyCMS/alchemy_cms/pull/2679) ([tvdeyen](https://github.com/tvdeyen))
18
+ - Remove legacy pages urls and folded pages if page gets destroyed [#2678](https://github.com/AlchemyCMS/alchemy_cms/pull/2678) ([tvdeyen](https://github.com/tvdeyen))
19
+ - Clear unnecessary legacy URLs [#2677](https://github.com/AlchemyCMS/alchemy_cms/pull/2677) ([mamhoff](https://github.com/mamhoff))
20
+ - Fix error linking text in tinymce [#2676](https://github.com/AlchemyCMS/alchemy_cms/pull/2676) ([tvdeyen](https://github.com/tvdeyen))
21
+ - Use WebP for all thumbnails [#2675](https://github.com/AlchemyCMS/alchemy_cms/pull/2675) ([tvdeyen](https://github.com/tvdeyen))
22
+ - Allow quality setting for webp images [#2674](https://github.com/AlchemyCMS/alchemy_cms/pull/2674) ([tvdeyen](https://github.com/tvdeyen))
23
+ - Do not remove background from non transparent images [#2673](https://github.com/AlchemyCMS/alchemy_cms/pull/2673) ([tvdeyen](https://github.com/tvdeyen))
24
+ - Update Tinymce to v6 [#2671](https://github.com/AlchemyCMS/alchemy_cms/pull/2671) ([tvdeyen](https://github.com/tvdeyen))
25
+ - Update Tinymce to v5 [#2670](https://github.com/AlchemyCMS/alchemy_cms/pull/2670) ([tvdeyen](https://github.com/tvdeyen))
26
+ - Fix missing image styles [#2667](https://github.com/AlchemyCMS/alchemy_cms/pull/2667) ([tvdeyen](https://github.com/tvdeyen))
27
+ - Preserve transparent backgrounds for PNGs [#2666](https://github.com/AlchemyCMS/alchemy_cms/pull/2666) ([tvdeyen](https://github.com/tvdeyen))
28
+ - Resource filter fixes [#2665](https://github.com/AlchemyCMS/alchemy_cms/pull/2665) ([tvdeyen](https://github.com/tvdeyen))
29
+ - [ruby - main] Update sqlite3 → 1.7.0 (unknown) [#2663](https://github.com/AlchemyCMS/alchemy_cms/pull/2663) ([depfu](https://github.com/apps/depfu))
30
+ - Fix brakeman offense [#2661](https://github.com/AlchemyCMS/alchemy_cms/pull/2661) ([tvdeyen](https://github.com/tvdeyen))
31
+
3
32
  ## 7.1.0-b1 (2023-12-28)
4
33
 
5
34
  - Fix messages controller [#2658](https://github.com/AlchemyCMS/alchemy_cms/pull/2658) ([tvdeyen](https://github.com/tvdeyen))
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ rails_version = ENV.fetch("RAILS_VERSION", "7.1")
8
8
  gem "rails", "~> #{rails_version}.0"
9
9
 
10
10
  if ENV["DB"].nil? || ENV["DB"] == "sqlite"
11
- gem "sqlite3", "~> 1.6.0"
11
+ gem "sqlite3", "~> 1.7.0"
12
12
  end
13
13
  if ENV["DB"] == "mysql" || ENV["DB"] == "mariadb"
14
14
  gem "mysql2", "~> 0.5.1"
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](https://badge.fury.io/rb/alchemy_cms)
7
7
  [![Maintainability](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/maintainability)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/maintainability)
8
8
  [![Test Coverage](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/test_coverage)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/test_coverage)
9
- [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)
9
+ [![Lint](https://github.com/AlchemyCMS/alchemy_cms/actions/workflows/lint.yml/badge.svg)](https://github.com/AlchemyCMS/alchemy_cms/actions/workflows/lint.yml)
10
10
  [![Depfu](https://badges.depfu.com/badges/ebe56d2dd7b7044a8ae700cc81212a8e/overview.svg)](https://depfu.com/github/AlchemyCMS/alchemy_cms?project_id=4600)
11
11
 
12
12
  [![Backers on Open Collective](https://opencollective.com/alchemy_cms/backers/badge.svg?color=blue)](#backers)
@@ -51,7 +51,7 @@ Visit the existing demo at https://alchemy-demo.fly.dev/
51
51
 
52
52
  ## 🚂 Rails Version
53
53
 
54
- **This version of AlchemyCMS runs with Rails 7.0**
54
+ **This version of AlchemyCMS runs with Rails 7.0 and 7.1**
55
55
 
56
56
  * For a Rails 6.1 compatible version use the [`7.0-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/7.0-stable).
57
57
  * For a Rails 6.0 compatible version use the [`6.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/6.1-stable).
data/alchemy_cms.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.requirements << "ImageMagick (libmagick), v6.6 or greater."
17
17
  gem.required_ruby_version = ">= 3.0.0"
18
18
  gem.license = "BSD New"
19
- gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
19
+ gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/|yarn|^\.}) }
20
20
  gem.require_paths = ["lib"]
21
21
 
22
22
  %w[
@@ -5,11 +5,10 @@
5
5
  //= link alchemy/print.css
6
6
  //= link alchemy/welcome.css
7
7
  //= link tinymce/plugins/alchemy_link/plugin.min.js
8
- //= link tinymce/tinymce.min.js
9
- //= link_directory ../stylesheets/tinymce/skins/alchemy/ .css
10
- //= link_directory ../stylesheets/tinymce/skins/alchemy/img/
11
- //= link_directory ../stylesheets/tinymce/skins/alchemy/fonts/
8
+ //= link_directory ../stylesheets/tinymce/skins/ui/alchemy/ .css
9
+ //= link_directory ../stylesheets/tinymce/skins/content/alchemy/ .css
12
10
  //= link_tree ../images/alchemy/
13
11
  //= link_tree ../../../vendor/assets/fonts/
14
12
  //= link_tree ../../../vendor/assets/images/
15
13
  //= link_tree ../../javascript .js
14
+ //= link_tree ../../../vendor/javascript .js
@@ -1 +1 @@
1
- <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" width="16" height="16"><path fill="#f7f7f7" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z" class=""></path></svg>
1
+ <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18"><path d="M12.8659 3.00017L22.3922 19.5002C22.6684 19.9785 22.5045 20.5901 22.0262 20.8662C21.8742 20.954 21.7017 21.0002 21.5262 21.0002H2.47363C1.92135 21.0002 1.47363 20.5525 1.47363 20.0002C1.47363 19.8246 1.51984 19.6522 1.60761 19.5002L11.1339 3.00017C11.41 2.52187 12.0216 2.358 12.4999 2.63414C12.6519 2.72191 12.7782 2.84815 12.8659 3.00017ZM4.20568 19.0002H19.7941L11.9999 5.50017L4.20568 19.0002ZM10.9999 16.0002H12.9999V18.0002H10.9999V16.0002ZM10.9999 9.00017H12.9999V14.0002H10.9999V9.00017Z" fill="currentColor"></path></svg>
@@ -1,11 +1,7 @@
1
1
  // Alchemy CMS Sprockets Manifest
2
2
  // ------------------------------
3
3
  //= require jquery3
4
- //= require tinymce/tinymce.min
5
4
  //= require_tree ../../../../vendor/assets/javascripts/jquery_plugins/
6
- //= require clipboard.min
7
- //= require keymaster
8
- //= require requestAnimationFrame
9
5
  //= require handlebars
10
6
  //= require alchemy/templates
11
7
  //= require alchemy/alchemy.dialog
@@ -149,13 +149,13 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
149
149
 
150
150
  # Selects the correct tab for link type and fills all fields.
151
151
  selectTab: ->
152
- # Creating an temporary anchor node if we are linking an Picture Ingredient.
153
- if (@link_object.getAttribute("is") == "alchemy-link-button")
154
- @$link = $(@createTempLink())
155
152
  # Restoring the bookmarked selection inside the TinyMCE of an Richtext.
156
- else if (@link_object.node.nodeName == 'A')
153
+ if @link_object.node?.nodeName == 'A'
157
154
  @$link = $(@link_object.node)
158
155
  @link_object.selection.moveToBookmark(@link_object.bookmark)
156
+ # Creating an temporary anchor node if we are linking an Picture Ingredient.
157
+ else if @link_object.getAttribute && @link_object.getAttribute("is") == "alchemy-link-button"
158
+ @$link = $(@createTempLink())
159
159
  else
160
160
  return false
161
161
  # Populate title and target fields.
@@ -0,0 +1,93 @@
1
+ tinymce.IconManager.add("remixicons", {
2
+ icons: {
3
+ "action-next":
4
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12 13.2 5-5 1.4 1.4L12 16 5.6 9.6l1.5-1.4 4.9 5Z"/></svg>',
5
+ "action-prev":
6
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12 10.8-5 5-1.4-1.4L12 8l6.4 6.4-1.5 1.4-4.9-5Z"/></svg>',
7
+ "align-center":
8
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 4h18v2H3V4Zm2 15h14v2H5v-2Zm-2-5h18v2H3v-2Zm2-5h14v2H5V9Z"/></svg>',
9
+ "align-justify":
10
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 4h18v2H3V4Zm0 15h18v2H3v-2Zm0-5h18v2H3v-2Zm0-5h18v2H3V9Z"/></svg>',
11
+ "align-left":
12
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 4h18v2H3V4Zm0 15h14v2H3v-2Zm0-5h18v2H3v-2Zm0-5h14v2H3V9Z"/></svg>',
13
+ "align-right":
14
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 4h18v2H3V4Zm4 15h14v2H7v-2Zm-4-5h18v2H3v-2Zm4-5h14v2H7V9Z"/></svg>',
15
+ "arrow-left":
16
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M7.8 11H20v2H7.8l5.4 5.4-1.4 1.4L4 12l7.8-7.8 1.4 1.4L7.8 11Z"/></svg>',
17
+ "arrow-right":
18
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m16.2 11-5.4-5.4 1.4-1.4L20 12l-7.8 7.8-1.4-1.4 5.4-5.4H4v-2h12.2Z"/></svg>',
19
+ bold: '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M8 11h4.5a2.5 2.5 0 0 0 0-5H8v5Zm10 4.5c0 2.5-2 4.5-4.5 4.5H6V4h6.5a4.5 4.5 0 0 1 3.3 7.6c1.3.8 2.2 2.2 2.2 3.9ZM8 13v5h5.5a2.5 2.5 0 0 0 0-5H8Z"/></svg>',
20
+ bookmark:
21
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M5 2h14c.6 0 1 .4 1 1v19.1a.5.5 0 0 1-.8.5L12 18l-7.2 4.6A.5.5 0 0 1 4 22V3c0-.6.4-1 1-1Zm13 2H6v15.4l6-3.7 6 3.7V4Z"/></svg>',
22
+ cancel:
23
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M12 22a10 10 0 1 1 0-20 10 10 0 0 1 0 20Zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0-9.4 2.8-2.8 1.4 1.4-2.8 2.8 2.8 2.8-1.4 1.4-2.8-2.8-2.8 2.8-1.4-1.4 2.8-2.8-2.8-2.8 1.4-1.4 2.8 2.8Z"/></svg>',
24
+ checkmark:
25
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M10 15.2 19.2 6l1.4 1.4L10 18l-6.4-6.4L5 10.2l5 5Z"/></svg>',
26
+ "chevron-down":
27
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12 13.2 5-5 1.4 1.4L12 16 5.6 9.6l1.5-1.4 4.9 5Z"/></svg>',
28
+ "chevron-left":
29
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m10.8 12 5 5-1.4 1.4L8 12l6.4-6.4 1.4 1.5-5 4.9Z"/></svg>',
30
+ "chevron-right":
31
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m13.2 12-5-5 1.4-1.4L16 12l-6.4 6.4L8.2 17l5-5Z"/></svg>',
32
+ "chevron-up":
33
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12 10.8-5 5-1.4-1.4L12 8l6.4 6.4-1.5 1.4-4.9-5Z"/></svg>',
34
+ close:
35
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12 10.6 5-5 1.4 1.5-5 4.9 5 5-1.5 1.4-4.9-5-5 5L5.6 17l5-5-5-5L7 5.7l5 5Z"/></svg>',
36
+ "color-picker":
37
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M12 2c5.5 0 10 4 10 8.9 0 3-2.5 5.5-5.6 5.5h-2a1.7 1.7 0 0 0-1.2 2.8c.3.3.5.7.5 1.1 0 1-.8 1.7-1.7 1.7a10 10 0 0 1 0-20Zm-1.2 16.1c0-2 1.7-3.7 3.7-3.7h2c2 0 3.5-1.5 3.5-3.5C20 7 16.5 4 12 4a8 8 0 0 0-.7 16c-.3-.6-.5-1.2-.5-1.9ZM7.5 12a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm9 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3ZM12 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Z"/></svg>',
38
+ "color-swatch-remove-color":
39
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m8.6 8.9-5 4.9L8.8 19h2.4l3.7-3.8L8.6 9ZM10 7.4l6.4 6.4 2.8-2.8-6.4-6.4L10 7.4ZM14 19h7v2H8l-6.5-6.5a1 1 0 0 1 0-1.4L12.1 2.5a1 1 0 0 1 1.4 0l7.8 7.8c.4.4.4 1 0 1.4L14 19Z"/></svg>',
40
+ fill: '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M19.2 18.7 21 17l1.8 1.7a2.5 2.5 0 1 1-3.6 0ZM9 1.1l11.3 11.3c.4.4.4 1 0 1.4l-8.5 8.5a1 1 0 0 1-1.4 0l-8.5-8.5a1 1 0 0 1 0-1.4l7.8-7.8-2.1-2.1L8.9 1ZM11 6l-7 7h14l-7-7Z"/></svg>',
41
+ fullscreen:
42
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M8 3v2H4v4H2V3h6ZM2 21v-6h2v4h4v2H2Zm20 0h-6v-2h4v-4h2v6Zm0-12h-2V5h-4V3h6v6Z"/></svg>',
43
+ "highlight-bg-color":
44
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M19.2 18.7 21 17l1.8 1.7a2.5 2.5 0 1 1-3.6 0ZM9 1.1l11.3 11.3c.4.4.4 1 0 1.4l-8.5 8.5a1 1 0 0 1-1.4 0l-8.5-8.5a1 1 0 0 1 0-1.4l7.8-7.8-2.1-2.1L8.9 1ZM11 6l-7 7h14l-7-7Z"/></svg>',
45
+ "horizontal-rule":
46
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M2 11h2v2H2v-2Zm4 0h12v2H6v-2Zm14 0h2v2h-2v-2Z"/></svg>',
47
+ indent:
48
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 4h18v2H3V4Zm0 15h18v2H3v-2Zm8-5h10v2H11v-2Zm0-5h10v2H11V9Zm-4 3.5L3 16V9l4 3.5Z"/></svg>',
49
+ "insert-character":
50
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M14 20v-2.2a8.5 8.5 0 0 0 3.5-7c0-3-2-6-5.5-6s-5.5 3-5.5 6c0 3.2 1.6 5.9 3.5 7V20H3v-2h4.8C5.7 16.5 4 14 4 10.9 4 6.2 7.5 3 12 3s8 3.2 8 7.9c0 3-1.7 5.6-3.8 7.1H21v2h-7Z"/></svg>',
51
+ italic:
52
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M15 20H7v-2h3l2-12H9V4h8v2h-3l-2 12h3v2Z"/></svg>',
53
+ link: '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m17.7 14.8-1.5-1.4 1.5-1.4A4 4 0 1 0 12 6.3l-1.4 1.5-1.4-1.5L10.6 5a6 6 0 0 1 8.5 8.5l-1.4 1.4Zm-2.9 2.9L13.4 19A6 6 0 0 1 5 10.6l1.4-1.4 1.5 1.4L6.3 12a4 4 0 0 0 5.7 5.7l1.4-1.5 1.4 1.5Zm0-10 1.4 1.5-7 7-1.4-1.4 7-7Z"/></svg>',
54
+ "more-drawer":
55
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M4.5 10.5c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S6 12.8 6 12s-.7-1.5-1.5-1.5Zm15 0c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S21 12.8 21 12s-.7-1.5-1.5-1.5Zm-7.5 0c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5 1.5-.7 1.5-1.5-.7-1.5-1.5-1.5Z"/></svg>',
56
+ "new-tab":
57
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M10 6v2H5v11h11v-5h2v6c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1h6Zm11-3v8h-2V6.4l-7.8 7.8-1.4-1.4L17.6 5H13V3h8Z"/></svg>',
58
+ "ordered-list":
59
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M5.8 3.5h-1l-1.5.4v1.5l1-.2v3.3H3V10h4V8.5H5.8v-5ZM10 4h11v2H10V4Zm0 7h11v2H10v-2Zm0 7h11v2H10v-2Zm-7.1-2.4A2.1 2.1 0 1 1 6.7 17l-1.4 1.6H7V20H3v-1.1L5.5 16l.1-.4a.6.6 0 0 0-1.2 0v.3H2.9v-.3Z"/></svg>',
60
+ outdent:
61
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M3 4h18v2H3V4Zm0 15h18v2H3v-2Zm8-5h10v2H11v-2Zm0-5h10v2H11V9Zm-8 3.5L7 9v7l-4-3.5Z"/></svg>',
62
+ paragraph:
63
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M12 6v15h-2v-5a6 6 0 0 1 0-12h10v2h-3v15h-2V6h-3Zm-2 0a4 4 0 1 0 0 8V6Z"/></svg>',
64
+ "paste-text":
65
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M13 6v15h-2V6H5V4h14v2h-6Z"/></svg>',
66
+ redo: '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M18.2 7H11a6 6 0 0 0 0 12h9v2h-9a8 8 0 0 1 0-16h7.2l-2.6-2.5L17.1 1 22 6l-5 5-1.4-1.5L18.2 7Z"/></svg>',
67
+ "remove-formatting":
68
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12.7 14-1.1 6h-2l1.3-7.7L3.5 5 5 3.5l15.6 15.6-1.4 1.4-6.4-6.4Zm-1-6.5L12 6h-1.8l-2-2H20v2h-6l-.5 3.3-1.7-1.8Z"/></svg>',
69
+ sourcecode:
70
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M17 8.5 18.3 7l5 4.9-5 5-1.4-1.5 3.5-3.5-3.6-3.5Zm-10 0L3.6 12l3.6 3.5L5.6 17 .6 12l5-5 1.5 1.5Z"/></svg>',
71
+ "strike-through":
72
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M17.2 14c.2.5.3 1 .3 1.7 0 1.4-.5 2.4-1.6 3.2-1 .7-2.5 1.1-4.3 1.1-1.7 0-3.3-.4-4.9-1.1v-2.3c1.5.9 3 1.3 4.7 1.3 2.5 0 3.8-.7 3.8-2.2a2.2 2.2 0 0 0-.7-1.7H3v-2h18v2h-3.8ZM13 11H7.6a3.2 3.2 0 0 1-1.1-2.5c0-1.3.5-2.3 1.4-3.2 1-.9 2.4-1.3 4.3-1.3 1.5 0 2.9.3 4.2 1V7c-1.2-.7-2.5-1-3.9-1-2.5 0-3.7.8-3.7 2.4 0 .4.2.7.6 1 .5.4 1 .6 1.6.8l2 .7Z"/></svg>',
73
+ subscript:
74
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m5.6 4 4.9 6 4.9-6H18l-6.2 7.5L18 19h-2.6l-4.9-6-5 6H3l6.2-7.5L3 4h2.6Zm16.2 12a.8.8 0 1 0-1.6.2l-1.1.3a2 2 0 1 1 3.3 1L20.7 19H23v1h-4v-1l2.6-2.4.2-.6Z"/></svg>',
75
+ superscript:
76
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m5.6 5 4.9 6 4.9-6H18l-6.2 7.5L18 20h-2.6l-4.9-6-5 6H3l6.2-7.5L3 5h2.6Zm16 1.6a.8.8 0 0 0-.6-1.4.8.8 0 0 0-.8 1l-1.1.3a2 2 0 1 1 3.3 1L20.7 9H23v1h-4V9l2.6-2.4Z"/></svg>',
77
+ "text-color":
78
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M15.2 14H8.8l-1.6 4H5l6-15h2l6 15h-2.2l-1.6-4Zm-.8-2L12 5.9 9.6 12h4.8ZM3 20h18v2H3v-2Z"/></svg>',
79
+ underline:
80
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M8 3v9a4 4 0 0 0 8 0V3h2v9a6 6 0 0 1-12 0V3h2ZM4 20h16v2H4v-2Z"/></svg>',
81
+ undo: '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m5.8 7 2.6 2.5L6.9 11 2 6l5-5 1.4 1.5L5.8 5H13a8 8 0 1 1 0 16H4v-2h9a6 6 0 0 0 0-12H5.8Z"/></svg>',
82
+ unlink:
83
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m17.7 14.8-1.5-1.4 1.5-1.4A4 4 0 1 0 12 6.3l-1.4 1.5-1.4-1.5L10.6 5a6 6 0 0 1 8.5 8.5l-1.4 1.4Zm-2.9 2.9L13.4 19A6 6 0 0 1 5 10.6l1.4-1.4 1.5 1.4L6.3 12a4 4 0 0 0 5.7 5.7l1.4-1.5 1.4 1.5Zm0-10 1.4 1.5-7 7-1.4-1.4 7-7Zm-9-5.4 2-.5 1 3.8-2 .6-1-4Zm9.5 16 1.9-.5 1 4-2 .4-1-3.8ZM2.3 5.9l3.9 1-.6 2-3.8-1 .5-2Zm16 9.5 4 1-.6 2-3.9-1.1.6-2Z"/></svg>',
84
+ "unordered-list":
85
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M8 4h13v2H8V4ZM4.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm0 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm0 6.9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3ZM8 11h13v2H8v-2Zm0 7h13v2H8v-2Z"/></svg>',
86
+ visualblocks:
87
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M1 2v3h2V4h2v5H3.5v2h5V9H7V4h2v1h2V2H1Zm20 1h-7v2h6v14H4v-5H2v6c0 .6.4 1 1 1h18c.6 0 1-.4 1-1V4c0-.6-.4-1-1-1Z"/></svg>',
88
+ visualchars:
89
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="M12 6v15h-2v-5a6 6 0 0 1 0-12h10v2h-3v15h-2V6h-3Zm-2 0a4 4 0 1 0 0 8V6Z"/></svg>',
90
+ warning:
91
+ '<svg viewBox="0 0 24 24" width="16" height="16"><path d="m12.9 3 9.5 16.5a1 1 0 0 1-.9 1.5h-19a1 1 0 0 1-.9-1.5L11.1 3A1 1 0 0 1 13 3ZM4.2 19h15.6L12 5.5 4.2 19Zm6.8-3h2v2h-2v-2Zm0-7h2v5h-2V9Z"/></svg>'
92
+ }
93
+ })
@@ -1,19 +1,38 @@
1
- tinymce.PluginManager.add('alchemy_link', function(editor, url) {
2
- editor.addButton('alchemy_link', {
3
- icon: 'link',
4
- tooltip: 'Insert/edit link',
5
- shortcut: 'Ctrl+K',
6
- stateSelector: 'a[href]',
7
- onclick: function () {
8
- var linkObject = {
9
- node: editor.selection.getNode(),
10
- bookmark: editor.selection.getBookmark(),
11
- selection: editor.selection,
12
- editor: editor
13
- };
14
- var linkDialog = new Alchemy.LinkDialog(linkObject);
15
- editor.focus();
16
- linkDialog.open();
1
+ tinymce.PluginManager.add("alchemy_link", function (editor) {
2
+ const getAnchor = (selectedElm) => {
3
+ return editor.dom.getParent(selectedElm, "a[href]")
4
+ }
5
+
6
+ const openLinkDialog = () => {
7
+ if (Alchemy.currentDialog()) return
8
+ const linkObject = {
9
+ node: getAnchor(editor.selection.getNode()),
10
+ bookmark: editor.selection.getBookmark(),
11
+ selection: editor.selection,
12
+ editor: editor
17
13
  }
18
- });
19
- });
14
+ const linkDialog = new Alchemy.LinkDialog(linkObject)
15
+ editor.focus()
16
+ linkDialog.open()
17
+ }
18
+
19
+ editor.ui.registry.addToggleButton("alchemy_link", {
20
+ icon: "link",
21
+ tooltip: "Insert/edit link",
22
+ onSetup(buttonApi) {
23
+ const onNodeChange = () => {
24
+ buttonApi.setActive(getAnchor(editor.selection.getNode()) !== null)
25
+ }
26
+ onNodeChange()
27
+ editor.on("NodeChange", onNodeChange)
28
+ return () => {
29
+ editor.off("NodeChange", onNodeChange)
30
+ }
31
+ },
32
+ onAction: openLinkDialog
33
+ })
34
+
35
+ // Replace the default link command with our own
36
+ editor.addCommand("mceLink", openLinkDialog)
37
+ editor.addShortcut("Meta+K", "", openLinkDialog)
38
+ })
@@ -30,7 +30,11 @@ $default-font-size: 1em !default;
30
30
  $small-font-size: 0.9em !default;
31
31
  $default-font-style: $default-font-size $default-font-family !default;
32
32
 
33
+ $default-padding: 4px !default;
34
+ $default-margin: $default-padding !default;
35
+
33
36
  $dialog-header-height: 36px !default;
37
+ $dialog-header-padding: 0 2 * $default-padding !default;
34
38
  $dialog-header-color: $dark-blue !default;
35
39
  $dialog-header-text-color: $white !default;
36
40
  $dialog-header-font-size: $default-font-size !default;
@@ -39,9 +43,6 @@ $dialog-overlay-color: rgb(100, 100, 100) !default;
39
43
  $dialog-overlay-opacity: 0.4 !default;
40
44
  $dialog-background-color: $light-gray !default;
41
45
 
42
- $default-padding: 4px !default;
43
- $default-margin: $default-padding !default;
44
-
45
46
  $default-border-color: rgba(#afafaf, 0.5) !default;
46
47
  $border-inset-color: lighten($default-border-color, 10%) !default;
47
48
  $default-border-width: 1px !default;
@@ -84,6 +85,13 @@ $button-padding: $default-padding 5 * $default-padding !default;
84
85
  $small-button-padding: 0.4em 0.8em !default;
85
86
  $button-margin: $form-field-margin !default;
86
87
 
88
+ $icon-button-width: 30px !default;
89
+ $icon-button-height: 30px !default;
90
+ $icon-button-medium-width: 26px !default;
91
+ $icon-button-medium-height: 26px !default;
92
+ $icon-button-small-width: 15px !default;
93
+ $icon-button-small-height: 15px !default;
94
+
87
95
  $secondary-button-bg-color: transparent !default;
88
96
  $secondary-button-text-color: $text-color !default;
89
97
  $secondary-button-border-color: $default-border-color !default;
@@ -69,9 +69,12 @@
69
69
  img {
70
70
  max-width: 100%;
71
71
  max-height: 100%;
72
- background: $thumbnail-background;
73
72
 
74
- &[src*=".svg"] {
73
+ &:not([src*="alchemy/missing-image"]) {
74
+ background: $thumbnail-background;
75
+ }
76
+
77
+ &[src$=".svg"]:not([src*="alchemy/missing-image"]) {
75
78
  width: var(--picture-width);
76
79
  max-height: var(--picture-height);
77
80
  }
@@ -52,18 +52,19 @@ input.button {
52
52
  display: inline-flex;
53
53
  align-items: center;
54
54
  justify-content: center;
55
- width: 30px;
56
- height: 30px;
55
+ width: $icon-button-width;
56
+ height: $icon-button-height;
57
57
  margin: 0;
58
58
  padding: 0;
59
59
  text-shadow: none;
60
60
  border-radius: $default-border-radius;
61
61
 
62
62
  &.small {
63
- width: 15px;
64
- height: 15px;
63
+ width: $icon-button-small-width;
64
+ height: $icon-button-small-height;
65
65
  background: none;
66
66
  border: none;
67
+ padding: 0; // button.small has padding
67
68
  }
68
69
 
69
70
  &.active,
@@ -126,7 +126,7 @@ $dialog-transition-duration: 150ms;
126
126
  gap: $default-padding;
127
127
  position: relative;
128
128
  height: $dialog-header-height;
129
- padding: 0 2 * $default-padding;
129
+ padding: $dialog-header-padding;
130
130
  background: $dialog-header-color;
131
131
  color: $dialog-header-text-color;
132
132
  font-weight: normal;
@@ -555,8 +555,8 @@ alchemy-publish-element-button {
555
555
  border-bottom-right-radius: $default-border-radius;
556
556
 
557
557
  .icon_button {
558
- width: 26px;
559
- height: 26px;
558
+ width: $icon-button-medium-width;
559
+ height: $icon-button-medium-height;
560
560
  }
561
561
  }
562
562
 
@@ -604,9 +604,8 @@ alchemy-publish-element-button {
604
604
  height: 120px;
605
605
 
606
606
  .icon {
607
- font-size: 4em;
608
- color: $medium-gray;
609
- vertical-align: top;
607
+ font-size: 3em;
608
+ color: var(--color-grey_dark);
610
609
 
611
610
  &.error {
612
611
  font-size: 1.2em;
@@ -14,6 +14,11 @@
14
14
  padding-left: 28px;
15
15
  padding-right: 24px;
16
16
  margin: 0;
17
+
18
+ .input & {
19
+ float: none;
20
+ width: 100%;
21
+ }
17
22
  }
18
23
 
19
24
  .js_filter_field_clear {
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3
+ * Licensed under the LGPL or a commercial license.
4
+ * For LGPL see License.txt in the project root for license information.
5
+ * For commercial licenses see https://www.tiny.cloud/
6
+ */
7
+
8
+ @import "alchemy/variables";
9
+
10
+ html {
11
+ font-size: 13px;
12
+ }
13
+
14
+ body {
15
+ font-family: $default-font-family;
16
+ line-height: 1.4;
17
+ margin: 1em;
18
+ color: $text-color;
19
+ }
20
+
21
+ a {
22
+ color: $dark-blue;
23
+ }
24
+
25
+ table {
26
+ border-collapse: collapse;
27
+ }
28
+
29
+ table td,
30
+ table th {
31
+ border: 1px solid $default-border-color;
32
+ padding: 0.4rem;
33
+ }
34
+
35
+ figure {
36
+ display: table;
37
+ margin: 1rem auto;
38
+ }
39
+
40
+ figure figcaption {
41
+ color: $dark-gray;
42
+ display: block;
43
+ margin-top: 0.25rem;
44
+ text-align: center;
45
+ }
46
+
47
+ hr {
48
+ border-color: $default-border-color;
49
+ border-style: solid;
50
+ border-width: 1px 0 0 0;
51
+ }
52
+
53
+ code {
54
+ background-color: $light-gray;
55
+ border-radius: $default-border-radius;
56
+ padding: 0.1rem 0.2rem;
57
+ }
58
+
59
+ .mce-content-body:not([dir="rtl"]) blockquote {
60
+ border-left: 2px solid $default-border-color;
61
+ margin-left: 1.5rem;
62
+ padding-left: 1rem;
63
+ }
64
+
65
+ .mce-content-body[dir="rtl"] blockquote {
66
+ border-right: 2px solid $default-border-color;
67
+ margin-right: 1.5rem;
68
+ padding-right: 1rem;
69
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "backgroundColor": "#ffffff",
3
+ "skinName": "alchemy",
4
+ "contentCss": "body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n line-height: 1.4;\n margin: 1rem;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ntable th,\ntable td {\n border: 1px solid #ccc;\n padding: .4rem;\n}\n\nfigure {\n display: table;\n margin: 1rem auto;\n}\n\nfigure figcaption {\n color: #999;\n display: block;\n margin-top: .25rem;\n text-align: center;\n}\n\nhr {\n border-color: #ccc;\n border-style: solid;\n border-width: 1px 0 0 0;\n}\n\ncode {\n background-color: #e8e8e8;\n border-radius: 3px;\n padding: .1rem .2rem;\n}\n\n.mce-content-body:not([dir=rtl]) {\n blockquote {\n border-left: 2px solid #ccc;\n margin-left: 1.5rem;\n padding-left: 1rem;\n }\n}\n\n// RTL\n.mce-content-body[dir=rtl] {\n blockquote {\n border-right: 2px solid #ccc;\n margin-right: 1.5rem;\n padding-right: 1rem;\n }\n}\n",
5
+ "initConfig": "tinymce.init({\n plugins: [\n \"a11ychecker advcode casechange formatpainter\",\n \"linkchecker autolink lists checklist\",\n \"media mediaembed pageembed permanentpen\",\n \"powerpaste table advtable tinymcespellchecker\"\n ],\n toolbar: \"formatselect | fontselect | bold italic strikethrough forecolor backcolor formatpainter | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | link insertfile image | removeformat | code | addcomment | checklist | casechange\",\n height: 360\n});",
6
+ "lessVariablesMap": {
7
+ "@background-color": "#fff",
8
+ "@toolbar-background-color": "#efefef",
9
+ "@menubar-background-color": "#efefef",
10
+ "@border-color": "rgba(175, 175, 175, 0.5)",
11
+ "@color-black": "#000",
12
+ "@color-white": "#fff",
13
+ "@color-tint": "rgba(45, 90, 141, 1)",
14
+ "@color-error": "rgba(239, 211, 211, 1)",
15
+ "@color-success": "rgba(226, 239, 211, 1)",
16
+ "@base-value": "13px",
17
+ "@control-border-radius": "3px",
18
+ "@panel-border-radius": "3px",
19
+ "@tinymce-border-radius": "3px",
20
+ "@font-weight-normal": "normal",
21
+ "@font-weight-bold": "bold",
22
+ "@toolbar-button-icon-color": "rgba(51, 59, 81, 0.75)",
23
+ "@toolbar-button-text-color": "rgba(51, 59, 81, 0.75)",
24
+ "@toolbar-button-hover-background-color": "rgba(175, 175, 175, 0.25)",
25
+ "@toolbar-button-hover-icon-color": "rgba(51, 59, 81, 0.8)",
26
+ "@toolbar-button-hover-text-color": "rgba(51, 59, 81, 0.8)",
27
+ "@toolbar-button-focus-background-color": "rgba(175, 175, 175, 0.25)",
28
+ "@toolbar-button-focus-icon-color": "@toolbar-button-hover-icon-color",
29
+ "@toolbar-button-focus-text-color": "@toolbar-button-hover-icon-color",
30
+ "@toolbar-button-active-background-color": "rgba(175, 175, 175, 0.5)",
31
+ "@toolbar-button-enabled-background-color": "rgba(175, 175, 175, 0.5)",
32
+ "@toolbar-button-active-icon-color": "@toolbar-button-hover-icon-color",
33
+ "@toolbar-button-active-text-color": "@toolbar-button-hover-icon-color",
34
+ "@toolbar-button-enabled-icon-color": "@toolbar-button-hover-icon-color",
35
+ "@toolbar-button-enabled-text-color": "@toolbar-button-hover-icon-color"
36
+ },
37
+ "lessVariables": "@background-color: #fff;\n@toolbar-background-color: #efefef;\n@menubar-background-color: #efefef;\n@border-color: rgba(175, 175, 175, 0.5);\n@color-black: #000;\n@color-white: #fff;\n@color-tint: rgba(45, 90, 141, 1);\n@color-error: rgba(239, 211, 211, 1);\n@color-success: rgba(226, 239, 211, 1);\n@base-value: 13px;\n@control-border-radius: 3px;\n@panel-border-radius: 3px;\n@tinymce-border-radius: 3px;\n@font-stack: \"Open Sans\", \"Lucida Grande\", \"Lucida Sans Unicode\",\n \"Lucida Sans\", Verdana, Tahoma, sans-serif;\n@font-weight-normal: normal;\n@font-weight-bold: bold;\n@toolbar-button-icon-color: rgba(51, 59, 81, 0.75);\n@toolbar-button-text-color: rgba(51, 59, 81, 0.75);\n@toolbar-button-hover-background-color: rgba(175, 175, 175, 0.25);\n@toolbar-button-hover-icon-color: rgba(51, 59, 81, 0.8);\n@toolbar-button-hover-text-color: rgba(51, 59, 81, 0.8);\n@toolbar-button-focus-background-color: rgba(175, 175, 175, 0.25);\n@toolbar-button-focus-icon-color: @toolbar-button-hover-icon-color;\n@toolbar-button-focus-text-color: @toolbar-button-hover-icon-color;\n@toolbar-button-active-background-color: rgba(175, 175, 175, 0.5);\n@toolbar-button-enabled-background-color: rgba(175, 175, 175, 0.5);\n@toolbar-button-active-icon-color: @toolbar-button-hover-icon-color;\n@toolbar-button-active-text-color: @toolbar-button-hover-icon-color;\n@toolbar-button-enabled-icon-color: @toolbar-button-hover-icon-color;\n@toolbar-button-enabled-text-color: @toolbar-button-hover-icon-color;\n"
38
+ }