decidim-decidim_awesome 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +307 -0
  4. data/Rakefile +51 -0
  5. data/app/assets/config/decidim_admin_decidim_awesome_manifest.css +3 -0
  6. data/app/assets/config/decidim_admin_decidim_awesome_manifest.js +1 -0
  7. data/app/assets/config/decidim_decidim_awesome_manifest.css +5 -0
  8. data/app/assets/config/decidim_decidim_awesome_manifest.js +2 -0
  9. data/app/assets/images/decidim/decidim_awesome/loading.gif +0 -0
  10. data/app/assets/images/decidim/decidim_awesome/platoniq-logo.png +0 -0
  11. data/app/assets/javascripts/decidim/decidim_awesome/admin.js +2 -0
  12. data/app/assets/javascripts/decidim/decidim_awesome/admin/constraints.js.es6 +54 -0
  13. data/app/assets/javascripts/decidim/decidim_awesome/application.js +4 -0
  14. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/api_fetcher.js.es6 +38 -0
  15. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/categories.js.es6 +25 -0
  16. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/map.js.es6 +215 -0
  17. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/meetings.js.es6 +129 -0
  18. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/proposals.js.es6 +78 -0
  19. data/app/assets/javascripts/decidim/decidim_awesome/editors/markdown_view.js.es6 +12 -0
  20. data/app/assets/javascripts/decidim/decidim_awesome/editors/quill_editor.js.es6 +162 -0
  21. data/app/assets/javascripts/decidim/decidim_awesome/forms/autosave.js.es6 +90 -0
  22. data/app/assets/javascripts/decidim/decidim_awesome/proposals/images.js.es6 +25 -0
  23. data/app/assets/stylesheets/decidim/decidim_awesome/admin.scss +45 -0
  24. data/app/assets/stylesheets/decidim/decidim_awesome/admin/constraints.scss +37 -0
  25. data/app/assets/stylesheets/decidim/decidim_awesome/application.scss +8 -0
  26. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss +10 -0
  27. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/leaflet.scss.erb +9 -0
  28. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +66 -0
  29. data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +17 -0
  30. data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_view.scss +27 -0
  31. data/app/assets/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +7 -0
  32. data/app/assets/stylesheets/decidim/decidim_awesome/forms/autosave.scss +17 -0
  33. data/app/awesome_overrides/presenters/decidim/proposals/proposal_presenter_override.rb +31 -0
  34. data/app/commands/decidim/decidim_awesome/admin/create_constraint.rb +47 -0
  35. data/app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb +31 -0
  36. data/app/commands/decidim/decidim_awesome/admin/update_config.rb +44 -0
  37. data/app/commands/decidim/decidim_awesome/admin/update_constraint.rb +44 -0
  38. data/app/commands/decidim/decidim_awesome/create_editor_image.rb +34 -0
  39. data/app/controllers/concerns/decidim/decidim_awesome/needs_awesome_config.rb +17 -0
  40. data/app/controllers/decidim/decidim_awesome/admin/application_controller.rb +21 -0
  41. data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +37 -0
  42. data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +44 -0
  43. data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +126 -0
  44. data/app/controllers/decidim/decidim_awesome/application_controller.rb +14 -0
  45. data/app/controllers/decidim/decidim_awesome/editor_images_controller.rb +50 -0
  46. data/app/controllers/decidim/decidim_awesome/iframe_component/application_controller.rb +15 -0
  47. data/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb +33 -0
  48. data/app/controllers/decidim/decidim_awesome/map_component/application_controller.rb +15 -0
  49. data/app/controllers/decidim/decidim_awesome/map_component/map_controller.rb +31 -0
  50. data/app/forms/decidim/decidim_awesome/admin/config_form.rb +22 -0
  51. data/app/forms/decidim/decidim_awesome/admin/constraint_form.rb +20 -0
  52. data/app/forms/decidim/decidim_awesome/admin/intergram_form.rb +21 -0
  53. data/app/forms/decidim/decidim_awesome/editor_image_form.rb +16 -0
  54. data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +90 -0
  55. data/app/helpers/decidim/decidim_awesome/application_helper.rb +10 -0
  56. data/app/helpers/decidim/decidim_awesome/map_helper.rb +121 -0
  57. data/app/models/decidim/decidim_awesome/application_record.rb +10 -0
  58. data/app/models/decidim/decidim_awesome/awesome_config.rb +23 -0
  59. data/app/models/decidim/decidim_awesome/config_constraint.rb +13 -0
  60. data/app/models/decidim/decidim_awesome/editor_image.rb +24 -0
  61. data/app/permissions/decidim/decidim_awesome/permissions.rb +29 -0
  62. data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +22 -0
  63. data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +35 -0
  64. data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +27 -0
  65. data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +20 -0
  66. data/app/views/decidim/decidim_awesome/admin/config/_form_livechat.html.erb +44 -0
  67. data/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +12 -0
  68. data/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb +9 -0
  69. data/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb +11 -0
  70. data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +15 -0
  71. data/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb +56 -0
  72. data/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb +14 -0
  73. data/app/views/decidim/decidim_awesome/admin/constraints/show.html.erb +14 -0
  74. data/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb +9 -0
  75. data/app/views/decidim/decidim_awesome/map_component/map/error.erb +7 -0
  76. data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +74 -0
  77. data/app/views/layouts/decidim/_head.html.erb +5 -0
  78. data/app/views/layouts/decidim/admin/_header.html.erb +5 -0
  79. data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +47 -0
  80. data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +20 -0
  81. data/app/views/layouts/decidim/decidim_awesome/_intergram_widget.html.erb +16 -0
  82. data/app/views/v0.21/layouts/decidim/_head.html.erb +34 -0
  83. data/app/views/v0.21/layouts/decidim/admin/_header.html.erb +9 -0
  84. data/app/views/v0.22/layouts/decidim/_head.html.erb +36 -0
  85. data/app/views/v0.22/layouts/decidim/admin/_header.html.erb +11 -0
  86. data/config/i18n-tasks.yml +10 -0
  87. data/config/locales/ca.yml +125 -0
  88. data/config/locales/cs.yml +125 -0
  89. data/config/locales/en.yml +176 -0
  90. data/config/locales/es.yml +125 -0
  91. data/config/locales/fr.yml +125 -0
  92. data/config/locales/sv.yml +125 -0
  93. data/db/migrate/20200324170000_create_decidim_awesome_config.rb +16 -0
  94. data/db/migrate/20200324230936_create_awesome_editor_images.rb +14 -0
  95. data/db/migrate/20200403142257_create_decidim_awesome_config_constraints.rb +13 -0
  96. data/db/seeds.rb +27 -0
  97. data/lib/decidim/decidim_awesome.rb +110 -0
  98. data/lib/decidim/decidim_awesome/admin.rb +10 -0
  99. data/lib/decidim/decidim_awesome/admin_engine.rb +45 -0
  100. data/lib/decidim/decidim_awesome/awesome_helpers.rb +55 -0
  101. data/lib/decidim/decidim_awesome/checksums.yml +15 -0
  102. data/lib/decidim/decidim_awesome/config.rb +129 -0
  103. data/lib/decidim/decidim_awesome/content_renderers.rb +9 -0
  104. data/lib/decidim/decidim_awesome/content_renderers/markdown_renderer.rb +18 -0
  105. data/lib/decidim/decidim_awesome/context_analyzers.rb +11 -0
  106. data/lib/decidim/decidim_awesome/context_analyzers/component_analyzer.rb +38 -0
  107. data/lib/decidim/decidim_awesome/context_analyzers/participatory_space_analyzer.rb +31 -0
  108. data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +97 -0
  109. data/lib/decidim/decidim_awesome/engine.rb +38 -0
  110. data/lib/decidim/decidim_awesome/iframe_component/component.rb +59 -0
  111. data/lib/decidim/decidim_awesome/iframe_component/engine.rb +23 -0
  112. data/lib/decidim/decidim_awesome/map_component/component.rb +74 -0
  113. data/lib/decidim/decidim_awesome/map_component/engine.rb +23 -0
  114. data/lib/decidim/decidim_awesome/system_checker.rb +63 -0
  115. data/lib/decidim/decidim_awesome/test/factories.rb +36 -0
  116. data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +25 -0
  117. data/lib/decidim/decidim_awesome/test/themes/css.lvh.me.css +3 -0
  118. data/lib/decidim/decidim_awesome/test/themes/erb.lvh.me.scss.erb +2 -0
  119. data/lib/decidim/decidim_awesome/test/themes/scss.lvh.me.scss +1 -0
  120. data/lib/decidim/decidim_awesome/test/themes/test-theme/body.scss +4 -0
  121. data/lib/decidim/decidim_awesome/version.rb +10 -0
  122. data/vendor/assets/images/layers-2x.png +0 -0
  123. data/vendor/assets/images/layers.png +0 -0
  124. data/vendor/assets/images/marker-icon.png +0 -0
  125. data/vendor/assets/javascripts/codemirror-4.inline-attachment.js +89 -0
  126. data/vendor/assets/javascripts/form-storage.js +824 -0
  127. data/vendor/assets/javascripts/highlight.min.js +44 -0
  128. data/vendor/assets/javascripts/image-resize.min.js +1 -0
  129. data/vendor/assets/javascripts/image-upload.min.js +6 -0
  130. data/vendor/assets/javascripts/inline-attachment.js +399 -0
  131. data/vendor/assets/javascripts/inscrybmde.min.js +7 -0
  132. data/vendor/assets/javascripts/jquery.inline-attachment.js +66 -0
  133. data/vendor/assets/javascripts/leaflet.featuregroup.subgroup.js +6 -0
  134. data/vendor/assets/stylesheets/default.min.css +1 -0
  135. data/vendor/assets/stylesheets/foundation.min.css +1 -0
  136. data/vendor/assets/stylesheets/github.min.css +2 -0
  137. data/vendor/assets/stylesheets/inscrybmde.min.css +8 -0
  138. metadata +267 -0
@@ -0,0 +1,12 @@
1
+ // = require highlight.min.js
2
+ // = require_self
3
+
4
+ window.DecidimAwesome = window.DecidimAwesome || {};
5
+
6
+ if(window.DecidimAwesome.use_markdown_in_proposals) {
7
+ document.addEventListener('DOMContentLoaded', () => {
8
+ document.querySelectorAll('.awesome-markdown-editor pre code').forEach((block) => {
9
+ hljs.highlightBlock(block); // eslint-disable-line no-undef
10
+ });
11
+ });
12
+ }
@@ -0,0 +1,162 @@
1
+ // = require quill.min
2
+ // = require image-upload.min
3
+ // = require image-resize.min
4
+ // = require inscrybmde.min.js
5
+ // = require inline-attachment.js
6
+ // = require codemirror-4.inline-attachment.js
7
+ // = require jquery.inline-attachment.js
8
+ // = require_self
9
+
10
+ ((exports) => {
11
+ exports.DecidimAwesome = exports.DecidimAwesome || {};
12
+
13
+ // Redefines Quill editor with images
14
+ if(exports.DecidimAwesome.allow_images_in_full_editor || exports.DecidimAwesome.allow_images_in_small_editor) {
15
+
16
+ const quillFormats = ["bold", "italic", "link", "underline", "header", "list", "video", "image"];
17
+
18
+ const createQuillEditor = (container) => {
19
+ const toolbar = $(container).data("toolbar");
20
+ const disabled = $(container).data("disabled");
21
+
22
+ let quillToolbar = [
23
+ ["bold", "italic", "underline"],
24
+ [{ list: "ordered" }, { list: "bullet" }],
25
+ ["link", "clean"]
26
+ ];
27
+
28
+ let addImage = false;
29
+
30
+ if (toolbar === "full") {
31
+ quillToolbar = [
32
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
33
+ ...quillToolbar
34
+ ];
35
+ if(exports.DecidimAwesome.allow_images_in_full_editor) {
36
+ quillToolbar.push(["video", "image"]);
37
+ addImage = true;
38
+ } else {
39
+ quillToolbar.push(["video"]);
40
+ }
41
+ } else if (toolbar === "basic") {
42
+ if(exports.DecidimAwesome.allow_images_in_small_editor) {
43
+ quillToolbar.push(["video", "image"]);
44
+ addImage = true;
45
+ } else {
46
+ quillToolbar.push(["video"]);
47
+ }
48
+ } else if(exports.DecidimAwesome.allow_images_in_small_editor) {
49
+ quillToolbar.push(["image"]);
50
+ addImage = true;
51
+ }
52
+
53
+ let modules = {
54
+ toolbar: quillToolbar
55
+ };
56
+ const $input = $(container).siblings('input[type="hidden"]');
57
+ // https://github.com/decidim/decidim/pull/6422
58
+ container.innerHTML = $input.val() || "";
59
+ const token = $( 'meta[name="csrf-token"]' ).attr( 'content' );
60
+
61
+ if(addImage) {
62
+ modules.imageResize = {
63
+ modules: ["Resize", "DisplaySize"]
64
+ }
65
+ modules.imageUpload = {
66
+ url: exports.DecidimAwesome.editor_uploader_path, // server url. If the url is empty then the base64 returns
67
+ method: 'POST', // change query method, default 'POST'
68
+ name: 'image', // custom form name
69
+ withCredentials: false, // withCredentials
70
+ headers: { 'X-CSRF-Token': token }, // add custom headers, example { token: 'your-token'}
71
+ // personalize successful callback and call next function to insert new url to the editor
72
+ callbackOK: (serverResponse, next) => {
73
+ $(quill.getModule("toolbar").container).last().removeClass('editor-loading')
74
+ next(serverResponse.url);
75
+ },
76
+ // personalize failed callback
77
+ callbackKO: serverError => {
78
+ $(quill.getModule("toolbar").container).last().removeClass('editor-loading')
79
+ alert(serverError.message);
80
+ },
81
+ checkBeforeSend: (file, next) => {
82
+ $(quill.getModule("toolbar").container).last().addClass('editor-loading')
83
+ next(file); // go back to component and send to the server
84
+ }
85
+ }
86
+ }
87
+
88
+ const quill = new Quill(container, {
89
+ modules: modules,
90
+ formats: quillFormats,
91
+ theme: "snow"
92
+ });
93
+
94
+ if (disabled) {
95
+ quill.disable();
96
+ }
97
+
98
+ quill.on("text-change", () => {
99
+ const text = quill.getText();
100
+
101
+ // Triggers CustomEvent with the cursor position
102
+ // It is required in input_mentions.js
103
+ let event = new CustomEvent("quill-position", {
104
+ detail: quill.getSelection()
105
+ });
106
+ container.dispatchEvent(event);
107
+
108
+ if (text === "\n") {
109
+ $input.val("");
110
+ } else {
111
+ $input.val(quill.root.innerHTML);
112
+ }
113
+ });
114
+
115
+ if(addImage) {
116
+ const t = window.DecidimAwesome.texts["drag_and_drop_image"];
117
+ $(container).after(`<p class="help-text" style="margin-top:-1.5rem;">${t}</p>`);
118
+ }
119
+ };
120
+
121
+ const createMarkdownEditor = (container) => {
122
+ $(container).hide();
123
+ const t = window.DecidimAwesome.texts["drag_and_drop_image"];
124
+ const token = $( 'meta[name="csrf-token"]' ).attr( 'content' );
125
+ const $input = $(container).siblings('input[type="hidden"]');
126
+ const inscrybmde = new InscrybMDE({
127
+ element: $input[0],
128
+ spellChecker: false,
129
+ renderingConfig: {
130
+ codeSyntaxHighlighting: true
131
+ }
132
+ });
133
+
134
+ // Allow image upload
135
+ if(window.DecidimAwesome.allow_images_in_markdown_editor) {
136
+ $(inscrybmde.gui.statusbar).prepend(`<span class="help-text" style="float:left;margin:0;text-align:left;">${t}</span>`);
137
+ inlineAttachment.editors.codemirror4.attach(inscrybmde.codemirror, {
138
+ uploadUrl: window.DecidimAwesome.editor_uploader_path,
139
+ uploadFieldName: "image",
140
+ jsonFieldName: "url",
141
+ extraHeaders: { "X-CSRF-Token": token }
142
+ });
143
+ }
144
+ };
145
+
146
+ const quillEditor = () => {
147
+ $(".editor-container").each((idx, container) => {
148
+ if(exports.DecidimAwesome.use_markdown_editor) {
149
+ createMarkdownEditor(container);
150
+ } else {
151
+ createQuillEditor(container);
152
+ }
153
+ });
154
+ };
155
+
156
+ exports.Decidim = exports.Decidim || {};
157
+ exports.Decidim.quillEditor = quillEditor;
158
+ exports.Decidim.createQuillEditor = createQuillEditor;
159
+ exports.Decidim.createMarkdownEditor = createMarkdownEditor;
160
+
161
+ }
162
+ })(window);
@@ -0,0 +1,90 @@
1
+ // = require form-storage.js
2
+ // = require_self
3
+
4
+ $(() => {
5
+ window.DecidimAwesome = window.DecidimAwesome || {};
6
+ if (!window.DecidimAwesome.auto_save_forms) {
7
+ return;
8
+ }
9
+
10
+ const questionnaireId = window.DecidimAwesome.current_questionnaire;
11
+ if (!questionnaireId) {
12
+ // console.log("Not a questionnaire page")
13
+ return;
14
+ }
15
+
16
+ const storeId = `awesome_autosave:${questionnaireId}`;
17
+ const storeCheckboxesId = `awesome_autosave:checkboxes:${questionnaireId}`;
18
+ const $form = $('form.answer-questionnaire');
19
+
20
+ if (!$form.length) {
21
+ if(window.DecidimAwesome.questionnaire_answered) {
22
+ // console.log("Questionnaire already answered, remove any data saved");
23
+ window.localStorage.removeItem(storeId);
24
+ window.localStorage.removeItem(storeCheckboxesId);
25
+ }
26
+ // console.log("No forms here");
27
+ return;
28
+ }
29
+
30
+ const store = new FormStorage(`#${$form.attr('id')}`, {
31
+ name: storeId,
32
+ ignores: [
33
+ // '[type="hidden"]',
34
+ '[name="utf8"]',
35
+ '[name="authenticity_token"]',
36
+ '[disabled]',
37
+ '[type="checkbox"]' // there are problems with matrix questions
38
+ ],
39
+ });
40
+
41
+ const showMsg = (msg, error = false, default_time = 700) => {
42
+ const time = error ? 5000 : default_time;
43
+ const $div = $(`<div class="awesome_autosave-notice${error ? ' error' : ''}">${msg}</div>`)
44
+ .appendTo($form);
45
+ setTimeout(() => {
46
+ $div.fadeOut(500, () => {
47
+ $div.remove();
48
+ });
49
+ }, time);
50
+ };
51
+
52
+ if (!window.localStorage) {
53
+ showMsg(window.DecidimAwesome.texts.autosaved_error, true);
54
+ return;
55
+ }
56
+
57
+ if(window.localStorage.getItem(storeId)) {
58
+ showMsg(window.DecidimAwesome.texts.autosaved_retrieved, false, 5000);
59
+ }
60
+
61
+ // restore if available
62
+ store.apply();
63
+ // restore checkboxes
64
+ try {
65
+ let checkboxes = JSON.parse(window.localStorage.getItem(storeCheckboxesId));
66
+ for(let id in checkboxes) {
67
+ $("#" + id).prop("checked", checkboxes[id]);
68
+ }
69
+ } catch(e){
70
+ console.log("No checkboxes found");
71
+ }
72
+ // fire change items
73
+ $form.find('input, textarea, select').change();
74
+
75
+ const save = () => {
76
+ store.save();
77
+ // save checkbox manually
78
+ let checkboxes = {};
79
+ $form.find('input[type="checkbox"]').each((index, el) => {
80
+ checkboxes[el.id] = el.checked;
81
+ });
82
+ window.localStorage.setItem(storeCheckboxesId, JSON.stringify(checkboxes));
83
+ showMsg(window.DecidimAwesome.texts.autosaved_success);
84
+ };
85
+
86
+ // save changes when modifications
87
+ $form.find('input, textarea, select').on('change', () => {
88
+ save();
89
+ });
90
+ });
@@ -0,0 +1,25 @@
1
+ // = require_self
2
+
3
+ $(() => {
4
+ window.DecidimAwesome = window.DecidimAwesome || {};
5
+
6
+ const token = $( 'meta[name="csrf-token"]' ).attr( 'content' );
7
+ const $textarea = $("#proposal_body");
8
+ const t = window.DecidimAwesome.texts["drag_and_drop_image"];
9
+
10
+ if(!$textarea.length) return;
11
+
12
+ if(window.DecidimAwesome.allow_images_in_proposals) {
13
+ // Add the capability to upload images only (they will be presented as links)
14
+
15
+ $textarea.after(`<p class="help-text">${t}</p>`);
16
+ $textarea.inlineattachment({
17
+ uploadUrl: window.DecidimAwesome.editor_uploader_path,
18
+ uploadFieldName: "image",
19
+ jsonFieldName: "url",
20
+ progressText: "[Uploading file...]",
21
+ urlText: "{filename}",
22
+ extraHeaders: { "X-CSRF-Token": token }
23
+ });
24
+ }
25
+ });
@@ -0,0 +1,45 @@
1
+ //= require github.min
2
+ //= require inscrybmde.min
3
+ //= require_self
4
+
5
+ @import "decidim/variables";
6
+ @import "decidim/utils/settings";
7
+ @import "decidim/utils/mixins";
8
+ @import "./admin/constraints";
9
+ @import "./editors/quill_editor";
10
+ @import "./editors/markdown_editor";
11
+
12
+ .platoniq-credits{
13
+ position: absolute;
14
+ bottom: 0;
15
+ right: 0;
16
+ margin: 1em;
17
+ font-size: .8em;
18
+ }
19
+
20
+ .decidim_awesome {
21
+ &.modal{
22
+ .spinner{
23
+ @include spinner(25px, #aaa, var(--secondary), 800ms);
24
+
25
+ vertical-align: middle;
26
+ display: none;
27
+ }
28
+
29
+ &.loading{
30
+ .spinner{
31
+ display: inline-block;
32
+ }
33
+ }
34
+ }
35
+
36
+ &-form {
37
+ margin-bottom: 2em;
38
+ border-bottom: 1px solid #999;
39
+ padding-bottom: 1.5em;
40
+ }
41
+ &-form:last-child {
42
+ border-bottom: none;
43
+ padding-bottom: 0;
44
+ }
45
+ }
@@ -0,0 +1,37 @@
1
+ .constraints-editor{
2
+ background: #f6f6f6;
3
+ padding: 1rem;
4
+ margin: -.5rem 0 2rem;
5
+ border-radius: 5px;
6
+
7
+ .constraints-list{
8
+ padding: 0;
9
+ // margin:0 0 1em 0 ;
10
+ li{
11
+ margin: 0 1em 0 0;
12
+ padding: 0;
13
+ }
14
+
15
+ .label{
16
+ &.participatory_space_manifest{
17
+ background-color: #f7b230;
18
+ }
19
+
20
+ &.participatory_space_slug{
21
+ background-color: #19b380;
22
+ }
23
+
24
+ &.component_manifest{
25
+ background-color: #b31919;
26
+ }
27
+
28
+ &.component_id{
29
+ background-color: #ee449c;
30
+ }
31
+ }
32
+
33
+ a{
34
+ margin-left: 1rem;
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,8 @@
1
+ //= require github.min
2
+ //= require inscrybmde.min
3
+ //= require_self
4
+
5
+ @import "./editors/quill_editor";
6
+ @import "./editors/markdown_editor";
7
+ @import "./editors/markdown_view";
8
+ @import "./forms/autosave";
@@ -0,0 +1,10 @@
1
+ .wrapper{
2
+ .awesome-iframe{
3
+ margin: 0 auto;
4
+
5
+ iframe{
6
+ display: block;
7
+ margin: auto;
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,9 @@
1
+ .leaflet-control-layers-toggle {
2
+ background-image: url(<%= asset_path "layers.png" %>);
3
+ }
4
+ .leaflet-retina .leaflet-control-layers-toggle {
5
+ background-image: url(<%= asset_path "layers-2x.png" %>);
6
+ }
7
+ .leaflet-default-icon-path {
8
+ background-image: url(<%= asset_path "marker-icon.png" %>);
9
+ }
@@ -0,0 +1,66 @@
1
+ // = require decidim/map
2
+ @import "decidim/decidim_awesome/awesome_map/leaflet";
3
+
4
+ // Increase z-index for components menu otherwise map hides menu extensions
5
+ .dropdown-pane{
6
+ z-index: 1000;
7
+ }
8
+ // Override padding in this component
9
+ .wrapper{
10
+ padding: 0;
11
+
12
+ .callout.announcement{
13
+ margin-top: 2rem;
14
+ }
15
+
16
+ .google-map{
17
+ margin-bottom: 0;
18
+ }
19
+
20
+ .leaflet-control-layers-list{
21
+ hr{
22
+ margin: .5em 0;
23
+ }
24
+
25
+ b{
26
+ margin: 1em 0;
27
+ display: block;
28
+ }
29
+
30
+ label{
31
+ line-height: 1;
32
+ font-size: .8rem;
33
+ margin: 0 0 .5em;
34
+
35
+ i{
36
+ display: inline-block;
37
+ width: .8rem;
38
+ height: .8rem;
39
+ background-color: var(--primary);
40
+ }
41
+ }
42
+
43
+ input{
44
+ margin: 0;
45
+ }
46
+ }
47
+
48
+ #map{
49
+ height: 700px;
50
+ width: 100%;
51
+ display: flex;
52
+ justify-content: center;
53
+ align-items: center;
54
+
55
+ .leaflet-marker-icon.svg-icon svg path{
56
+ filter: drop-shadow(3px 3px 2px rgba(0, 0, 0, .7));
57
+ }
58
+ }
59
+
60
+ .map-legend{
61
+ background: rgba(255, 255, 255, .8);
62
+ padding: 1em;
63
+ border: 2px solid #bbb;
64
+ border-radius: 4px;
65
+ }
66
+ }