@themarioga/grid-editor 3.2.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/BUILDING.md +12 -3
  2. package/CHANGELOG.md +45 -0
  3. package/README.md +26 -6
  4. package/UPGRADING.md +79 -0
  5. package/dist/grideditor.css +40 -20
  6. package/dist/grideditor.min.css +1 -1
  7. package/dist/grideditor.min.css.map +1 -1
  8. package/dist/jquery.grideditor.bundle.min.js +10 -0
  9. package/dist/jquery.grideditor.js +369 -165
  10. package/dist/jquery.grideditor.min.js +1 -1
  11. package/dist/jquery.grideditor.min.js.map +1 -1
  12. package/dist/locales/grideditor.es.js +2 -0
  13. package/dist/locales/grideditor.es.min.js +1 -1
  14. package/dist/locales/grideditor.es.min.js.map +1 -1
  15. package/dist/plugins/grideditor.accordion.js +8 -0
  16. package/dist/plugins/grideditor.accordion.min.js +1 -1
  17. package/dist/plugins/grideditor.accordion.min.js.map +1 -1
  18. package/dist/plugins/grideditor.elements.js +5 -5
  19. package/dist/plugins/grideditor.elements.min.js +1 -1
  20. package/dist/plugins/grideditor.elements.min.js.map +1 -1
  21. package/dist/plugins/grideditor.tabs.js +8 -0
  22. package/dist/plugins/grideditor.tabs.min.js +1 -1
  23. package/dist/plugins/grideditor.tabs.min.js.map +1 -1
  24. package/docs/events.md +6 -7
  25. package/docs/locale-keys.md +2 -0
  26. package/docs/plugins.md +21 -7
  27. package/example/autosave.html +1 -1
  28. package/example/basic.html +3 -2
  29. package/example/breakpoints.html +1 -1
  30. package/example/ckeditor.html +1 -1
  31. package/example/containers.html +1 -1
  32. package/example/elements.html +1 -1
  33. package/example/locale.html +1 -1
  34. package/example/plugins.html +1 -1
  35. package/example/summernote.html +1 -1
  36. package/example/wrap_content.html +1 -1
  37. package/package.json +3 -2
  38. package/src/js/jquery.grideditor.js +369 -165
  39. package/src/js/locales/grideditor.es.js +2 -0
  40. package/src/js/plugins/grideditor.accordion.js +8 -0
  41. package/src/js/plugins/grideditor.elements.js +5 -5
  42. package/src/js/plugins/grideditor.tabs.js +8 -0
  43. package/src/less/grideditor.less +43 -18
@@ -127,13 +127,13 @@ $.fn.gridEditor.features.elements = function(ge) {
127
127
  onContentReady: markElements,
128
128
 
129
129
  /** Elements move within a content area and between them. */
130
- onSortable: function(shared) {
130
+ onSortable: function(sortable) {
131
131
  if (!elementsEnabled()) { return; }
132
132
 
133
- ge.canvas.find('.ge-content').sortable($.extend({
134
- items: '> .ge-element',
135
- connectWith: '.ge-canvas .ge-content',
136
- }, shared, ge.settings.sortable_options));
133
+ sortable(ge.canvas.find('.ge-content'), {
134
+ draggable: '.ge-element',
135
+ group: 'element',
136
+ });
137
137
  },
138
138
  };
139
139
  };
@@ -1,2 +1,2 @@
1
- (a=>{a.extend(a.fn.gridEditor.locales.en,{"tool.delete_element":"Remove element","tool.element_info":"Element: {name}","confirm.delete_element":"Delete element?"}),a.fn.gridEditor.features.elements=function(l){function t(){return"auto"!==l.settings.elements.enabled?l.settings.elements.enabled:l.settings.elements.auto||0<l.canvas.find(l.settings.elements.selector).length}function e(){t()&&l.canvas.find(".ge-content").each(function(){var e;e=a(this),(l.settings.elements.auto?e.children():e.children(l.settings.elements.selector)).each(function(){var t,n,e=a(this).addClass("ge-element").attr("contenteditable","false");e.find("> .ge-tools-drawer").length||(t=e,n=a('<div class="ge-tools-drawer ge-element-drawer" />').attr("data-mce-bogus","all").prependTo(t),l.createMoveTool(n),l.createTool(n,l.t("tool.element_info",{name:(e=>{var t=e.attr("data-ge-element"),n=e.attr("data-ge-label");return n&&t?n+" ("+t+")":n||t||e[0].tagName.toLowerCase()})(t)}),"ge-element-info","bi bi-info-circle"),l.addSettingsTool(n,t,l.settings.element_classes),l.settings.element_tools.forEach(function(e){l.createTool(n,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),l.createTool(n,l.t("tool.delete_element"),"ge-delete-element","bi bi-trash",function(){l.deleteNode("element",t,l.t("confirm.delete_element"),function(e){t.animate({opacity:"hide",height:"hide"},300,e)})}))})})}return{methods:{createElement:function(e,t){return t=t||{},e=a('<div class="ge-element" />').attr("data-ge-element",t.type||"element").append(e),void 0!==t.label&&e.attr("data-ge-label",t.label),l.place(e,"element",t)}},kindOf:function(e){return e.hasClass("ge-element")?"element":null},onInit:e,onDeinit:function(){l.canvas.find(".ge-element").each(function(){var e=a(this).removeClass("ge-element").removeAttr("contenteditable");e.attr("class")||e.removeAttr("class")})},onContentReady:e,onSortable:function(e){t()&&l.canvas.find(".ge-content").sortable(a.extend({items:"> .ge-element",connectWith:".ge-canvas .ge-content"},e,l.settings.sortable_options))}}}})(jQuery);
1
+ (a=>{a.extend(a.fn.gridEditor.locales.en,{"tool.delete_element":"Remove element","tool.element_info":"Element: {name}","confirm.delete_element":"Delete element?"}),a.fn.gridEditor.features.elements=function(l){function t(){return"auto"!==l.settings.elements.enabled?l.settings.elements.enabled:l.settings.elements.auto||0<l.canvas.find(l.settings.elements.selector).length}function e(){t()&&l.canvas.find(".ge-content").each(function(){var e;e=a(this),(l.settings.elements.auto?e.children():e.children(l.settings.elements.selector)).each(function(){var t,n,e=a(this).addClass("ge-element").attr("contenteditable","false");e.find("> .ge-tools-drawer").length||(t=e,n=a('<div class="ge-tools-drawer ge-element-drawer" />').attr("data-mce-bogus","all").prependTo(t),l.createMoveTool(n),l.createTool(n,l.t("tool.element_info",{name:(e=>{var t=e.attr("data-ge-element"),n=e.attr("data-ge-label");return n&&t?n+" ("+t+")":n||t||e[0].tagName.toLowerCase()})(t)}),"ge-element-info","bi bi-info-circle"),l.addSettingsTool(n,t,l.settings.element_classes),l.settings.element_tools.forEach(function(e){l.createTool(n,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),l.createTool(n,l.t("tool.delete_element"),"ge-delete-element","bi bi-trash",function(){l.deleteNode("element",t,l.t("confirm.delete_element"),function(e){t.animate({opacity:"hide",height:"hide"},300,e)})}))})})}return{methods:{createElement:function(e,t){return t=t||{},e=a('<div class="ge-element" />').attr("data-ge-element",t.type||"element").append(e),void 0!==t.label&&e.attr("data-ge-label",t.label),l.place(e,"element",t)}},kindOf:function(e){return e.hasClass("ge-element")?"element":null},onInit:e,onDeinit:function(){l.canvas.find(".ge-element").each(function(){var e=a(this).removeClass("ge-element").removeAttr("contenteditable");e.attr("class")||e.removeAttr("class")})},onContentReady:e,onSortable:function(e){t()&&e(l.canvas.find(".ge-content"),{draggable:".ge-element",group:"element"})}}}})(jQuery);
2
2
  //# sourceMappingURL=grideditor.elements.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grideditor.elements.min.js","sources":["../../src/js/plugins/grideditor.elements.js"],"names":["$","extend","fn","gridEditor","locales","en","tool.delete_element","tool.element_info","confirm.delete_element","features","elements","ge","elementsEnabled","settings","enabled","auto","canvas","find","selector","length","markElements","each","contentArea","this","children","element","drawer","addClass","attr","prependTo","createMoveTool","createTool","t","name","type","label","tagName","toLowerCase","addSettingsTool","element_classes","element_tools","forEach","hostTool","title","className","iconClass","on","deleteNode","removed","animate","opacity","height","methods","createElement","content","options","append","undefined","place","kindOf","node","hasClass","onInit","onDeinit","removeClass","removeAttr","onContentReady","onSortable","shared","sortable","items","connectWith","sortable_options","jQuery"],"mappings":"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"}
1
+ {"version":3,"file":"grideditor.elements.min.js","sources":["../../src/js/plugins/grideditor.elements.js"],"names":["$","extend","fn","gridEditor","locales","en","tool.delete_element","tool.element_info","confirm.delete_element","features","elements","ge","elementsEnabled","settings","enabled","auto","canvas","find","selector","length","markElements","each","contentArea","this","children","element","drawer","addClass","attr","prependTo","createMoveTool","createTool","t","name","type","label","tagName","toLowerCase","addSettingsTool","element_classes","element_tools","forEach","hostTool","title","className","iconClass","on","deleteNode","removed","animate","opacity","height","methods","createElement","content","options","append","undefined","place","kindOf","node","hasClass","onInit","onDeinit","removeClass","removeAttr","onContentReady","onSortable","sortable","draggable","group","jQuery"],"mappings":"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"}
@@ -73,6 +73,14 @@ $.fn.gridEditor.containers.tabs = function(ge) {
73
73
 
74
74
  return {
75
75
  labelKey: 'container.add_tabs',
76
+
77
+ // A tab strip sorts its own tabs, and the panes follow them. No
78
+ // group: a tab belongs to the strip it was made in.
79
+ onSortable: function(sortable) {
80
+ sortable(ge.canvas.find('.ge-container-tabs > .nav-tabs'), {
81
+ draggable: '.ge-tab',
82
+ });
83
+ },
76
84
  addPaneKey: 'container.add_tab',
77
85
  paneKind: 'tab',
78
86
 
@@ -1,2 +1,2 @@
1
- (b=>{b.extend(b.fn.gridEditor.locales.en,{"container.add_tabs":"Tabs","container.add_tab":"Add tab","container.tab_label":"Tab {number}","confirm.delete_tab":"Delete this tab and everything in it?"}),b.fn.gridEditor.containers.tabs=function(d){function r(a,t){t=t||{};var n=a.find("> .nav-tabs"),e=a.find("> .tab-content"),i=d.containerId("tab"),r=n.children(".nav-item").length+1,n=(b('<li class="nav-item ge-tab" role="presentation" />').append(b('<button class="nav-link" type="button" role="tab" data-bs-toggle="tab" />').attr("data-bs-target","#"+i).attr("aria-controls",i).append(b('<span class="ge-pane-label" />').text(t.label||d.t("container.tab_label",{number:r})))).appendTo(n),b('<div class="tab-pane fade" role="tabpanel" tabindex="0" />').attr("id",i).append(d.defaultRegion()).appendTo(e));return!t.activate&&1!==r||s(a,n),n}function s(a,t){var n=t.attr("id");a.find("> .tab-content > .tab-pane").removeClass("show active"),t.addClass("show active"),a.find("> .nav-tabs .nav-link").each(function(){var a=b(this),t=a.attr("data-bs-target")==="#"+n;a.toggleClass("active",t).attr("aria-selected",t?"true":"false")})}function l(a,t){return a.find(t.find(".nav-link").attr("data-bs-target"))}return{labelKey:"container.add_tabs",addPaneKey:"container.add_tab",paneKind:"tab",create:function(a){var t=b("<div />").attr("data-ge-container","tabs"),n=a.labels||[],e=a.tabs||n.length||2;b('<ul class="nav nav-tabs" role="tablist" />').appendTo(t),b('<div class="tab-content" />').appendTo(t);for(var i=0;i<e;i++)r(t,{label:n[i]});return t},addPane:r,mark:function(i){i.find("> .tab-content > .tab-pane").addClass("ge-tab-pane"),i.find("> .nav-tabs > .nav-item").each(function(){var a=b(this).addClass("ge-tab");d.makeLabelEditable(d.labelIn(a.find(".nav-link"))),a.find("> .ge-tools-drawer").length||d.createPaneControls(a,"tab",d.settings.tab_tools,d.t("confirm.delete_tab"),function(t){var n=l(i,a),e=n.hasClass("active");a.fadeOut(200,function(){n.remove(),t();var a=i.find("> .tab-content > .tab-pane").first();e&&a.length&&s(i,a)})})})},unmark:function(a){d.resumeToggles(a),a.find(".ge-tab-pane").removeClass("ge-tab-pane"),d.unwrapLabels(a)},afterPaneMove:function(a){var t=a.find("> .tab-content");a.find("> .nav-tabs > .nav-item").each(function(){t.append(l(a,b(this)))})}}}})(jQuery);
1
+ (o=>{o.extend(o.fn.gridEditor.locales.en,{"container.add_tabs":"Tabs","container.add_tab":"Add tab","container.tab_label":"Tab {number}","confirm.delete_tab":"Delete this tab and everything in it?"}),o.fn.gridEditor.containers.tabs=function(d){function r(a,t){t=t||{};var n=a.find("> .nav-tabs"),e=a.find("> .tab-content"),i=d.containerId("tab"),r=n.children(".nav-item").length+1,n=(o('<li class="nav-item ge-tab" role="presentation" />').append(o('<button class="nav-link" type="button" role="tab" data-bs-toggle="tab" />').attr("data-bs-target","#"+i).attr("aria-controls",i).append(o('<span class="ge-pane-label" />').text(t.label||d.t("container.tab_label",{number:r})))).appendTo(n),o('<div class="tab-pane fade" role="tabpanel" tabindex="0" />').attr("id",i).append(d.defaultRegion()).appendTo(e));return!t.activate&&1!==r||s(a,n),n}function s(a,t){var n=t.attr("id");a.find("> .tab-content > .tab-pane").removeClass("show active"),t.addClass("show active"),a.find("> .nav-tabs .nav-link").each(function(){var a=o(this),t=a.attr("data-bs-target")==="#"+n;a.toggleClass("active",t).attr("aria-selected",t?"true":"false")})}function b(a,t){return a.find(t.find(".nav-link").attr("data-bs-target"))}return{labelKey:"container.add_tabs",onSortable:function(a){a(d.canvas.find(".ge-container-tabs > .nav-tabs"),{draggable:".ge-tab"})},addPaneKey:"container.add_tab",paneKind:"tab",create:function(a){var t=o("<div />").attr("data-ge-container","tabs"),n=a.labels||[],e=a.tabs||n.length||2;o('<ul class="nav nav-tabs" role="tablist" />').appendTo(t),o('<div class="tab-content" />').appendTo(t);for(var i=0;i<e;i++)r(t,{label:n[i]});return t},addPane:r,mark:function(i){i.find("> .tab-content > .tab-pane").addClass("ge-tab-pane"),i.find("> .nav-tabs > .nav-item").each(function(){var a=o(this).addClass("ge-tab");d.makeLabelEditable(d.labelIn(a.find(".nav-link"))),a.find("> .ge-tools-drawer").length||d.createPaneControls(a,"tab",d.settings.tab_tools,d.t("confirm.delete_tab"),function(t){var n=b(i,a),e=n.hasClass("active");a.fadeOut(200,function(){n.remove(),t();var a=i.find("> .tab-content > .tab-pane").first();e&&a.length&&s(i,a)})})})},unmark:function(a){d.resumeToggles(a),a.find(".ge-tab-pane").removeClass("ge-tab-pane"),d.unwrapLabels(a)},afterPaneMove:function(a){var t=a.find("> .tab-content");a.find("> .nav-tabs > .nav-item").each(function(){t.append(b(a,o(this)))})}}}})(jQuery);
2
2
  //# sourceMappingURL=grideditor.tabs.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grideditor.tabs.min.js","sources":["../../src/js/plugins/grideditor.tabs.js"],"names":["$","extend","fn","gridEditor","locales","en","container.add_tabs","container.add_tab","container.tab_label","confirm.delete_tab","containers","tabs","ge","addTabTo","container","options","strip","find","content","id","containerId","number","children","length","pane","append","attr","text","label","t","appendTo","defaultRegion","activate","activatePane","removeClass","addClass","each","button","this","active","toggleClass","paneOf","tab","labelKey","addPaneKey","paneKind","create","labels","count","i","addPane","mark","makeLabelEditable","labelIn","createPaneControls","settings","tab_tools","removed","wasActive","hasClass","fadeOut","remove","first","unmark","resumeToggles","unwrapLabels","afterPaneMove","jQuery"],"mappings":"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"}
1
+ {"version":3,"file":"grideditor.tabs.min.js","sources":["../../src/js/plugins/grideditor.tabs.js"],"names":["$","extend","fn","gridEditor","locales","en","container.add_tabs","container.add_tab","container.tab_label","confirm.delete_tab","containers","tabs","ge","addTabTo","container","options","strip","find","content","id","containerId","number","children","length","pane","append","attr","text","label","t","appendTo","defaultRegion","activate","activatePane","removeClass","addClass","each","button","this","active","toggleClass","paneOf","tab","labelKey","onSortable","sortable","canvas","draggable","addPaneKey","paneKind","create","labels","count","i","addPane","mark","makeLabelEditable","labelIn","createPaneControls","settings","tab_tools","removed","wasActive","hasClass","fadeOut","remove","first","unmark","resumeToggles","unwrapLabels","afterPaneMove","jQuery"],"mappings":"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"}
package/docs/events.md CHANGED
@@ -114,13 +114,12 @@ cancels a `before-*`. What that means depends on the operation:
114
114
  then remove the node and call `reset()`. The editor's own confirmation modal
115
115
  never appears for a canceled delete — the host's handler runs first, on
116
116
  purpose.
117
- - **Move.** jQuery UI cannot refuse a drag once it has started, so
118
- `before-move` fires from the sortable's `start` handler and canceling marks
119
- the drag: on drop the item returns to where it came from and no `after-move`
120
- fires. The drag is visible and then reverts; it is not prevented outright.
121
- - **Resize.** From a tool, nothing is written. From a drag, the drag is refused
122
- at every step, so the column ends where it began jQuery UI's `resizable`
123
- ignores `false` from its start handler, unlike its `draggable`.
117
+ - **Move.** A drag cannot be refused once it has started, so `before-move`
118
+ fires as the drag begins and canceling marks it: on drop the item is put back
119
+ where it came from and no `after-move` fires. The drag is visible and then
120
+ reverts; it is not prevented outright.
121
+ - **Resize.** From a tool, nothing is written. From a drag, the gesture never
122
+ starts: the column does not move and nothing is written.
124
123
  - **Indent.** Nothing is written.
125
124
 
126
125
  `after-move` is suppressed when the drop leaves the node in the same parent at
@@ -130,6 +130,8 @@ all the same: the developer reading them is the one who chose the locale.
130
130
 
131
131
  | Key | English | Where |
132
132
  | --- | --- | --- |
133
+ | `error.sortable_missing` | SortableJS not available! … | Logged once when the drag library is not on the page |
134
+ | `warning.setting_removed` | The {setting} setting was removed in 4.0. Use {replacement} instead. | Logged once per removed setting a host still passes |
133
135
  | `error.tinymce_missing` | tinyMCE not available! … | `content_types: ['tinymce']` with no tinyMCE loaded |
134
136
  | `error.ckeditor_missing` | CKEditor not available! … | `content_types: ['ckeditor']` with no CKEditor loaded |
135
137
  | `error.summernote_missing` | Summernote not available! … | `content_types: ['summernote']` with no Summernote loaded |
package/docs/plugins.md CHANGED
@@ -133,23 +133,37 @@ $.fn.gridEditor.features.elements = function(ge) {
133
133
  onInit: function() { … }, // every init: put the furniture in
134
134
  onDeinit: function() { … }, // every deinit: take it out again
135
135
  onContentReady: function(area) { … }, // a rich text editor just took over
136
- onSortable: function(shared) { … }, // make your own sortables
136
+ onSortable: function(sortable) { … }, // declare your own sortable lists
137
137
  };
138
138
  };
139
139
  ```
140
140
 
141
- - **`onSortable(shared)`** is handed the options the editor's own sortables
142
- use the handle, the cancel selector, the start and stop handlers so a
143
- plugin's sortables answer to `drag_handle` and fire the move events like
144
- everything else.
141
+ - **`onSortable(sortable)`** is handed the function the editor makes all of its
142
+ own lists with. A plugin describes a list; it never touches the drag toolkit
143
+ itself, which is what keeps `drag_handle`, the cancel selector and the move
144
+ events the same everywhere:
145
+
146
+ ```javascript
147
+ onSortable: function(sortable) {
148
+ sortable(ge.canvas.find('.ge-content'), {
149
+ draggable: '> .ge-element', // which children move
150
+ group: 'element', // lists sharing a group connect
151
+ });
152
+ }
153
+ ```
154
+
155
+ Leaving `group` out makes a list that sorts only within itself, which is what
156
+ a tab strip wants. Group names are scoped to the editor instance, so two
157
+ editors on one page never drag into each other.
145
158
  - **`methods`** are added to the instance handle. A method the editor
146
159
  documents but a plugin implements — `createElement` — warns and returns null
147
160
  when the plugin is not loaded.
148
161
  - **`kindOf(node)`** returns the `kind` an event should carry for a node the
149
162
  plugin owns, or null.
150
163
 
151
- The core's own sortables and the plugins' are taken down together: jQuery UI
152
- marks what it made, so a plugin does not have to unmake it.
164
+ The core's own lists and the plugins' are taken down together: every list made
165
+ through `sortable()` is registered, so `deinit` unmakes exactly those and a
166
+ plugin does not have to unmake anything.
153
167
 
154
168
 
155
169
  What the editor does for you
@@ -10,13 +10,13 @@
10
10
 
11
11
  <!-- JS dependencies -->
12
12
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
13
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
14
13
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
15
14
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.6/tinymce.min.js"></script>
16
15
 
17
16
  <!-- Grid editor CSS -->
18
17
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
19
18
  <!-- Grid editor javascript -->
19
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
20
20
  <script src="../dist/jquery.grideditor.min.js"></script>
21
21
  </head>
22
22
  <body>
@@ -9,14 +9,15 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.6/tinymce.min.js"></script>
15
14
 
16
15
  <!-- Grid editor CSS -->
17
16
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
18
17
  <!-- Grid editor javascript -->
19
- <script src="../dist/jquery.grideditor.min.js"></script>
18
+ <!-- The editor with SortableJS inside it. Every other example loads the
19
+ two files separately; a page does one or the other, never both. -->
20
+ <script src="../dist/jquery.grideditor.bundle.min.js"></script>
20
21
 
21
22
  <script>
22
23
  $(function() {
@@ -9,12 +9,12 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
 
15
14
  <!-- Grid editor CSS -->
16
15
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
17
16
  <!-- Grid editor javascript -->
17
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
18
18
  <script src="../dist/jquery.grideditor.min.js"></script>
19
19
 
20
20
  <script>
@@ -9,7 +9,6 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
 
15
14
  <!-- Ckeditor js -->
@@ -18,6 +17,7 @@
18
17
  <!-- Grid editor CSS -->
19
18
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
20
19
  <!-- Grid editor javascript -->
20
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
21
21
  <script src="../dist/jquery.grideditor.min.js"></script>
22
22
 
23
23
  <script>
@@ -9,13 +9,13 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.6/tinymce.min.js"></script>
15
14
 
16
15
  <!-- Grid editor CSS -->
17
16
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
18
17
  <!-- Grid editor javascript -->
18
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
19
19
  <script src="../dist/jquery.grideditor.min.js"></script>
20
20
  <!-- One file per container type: load the ones this page offers -->
21
21
  <script src="../dist/plugins/grideditor.tabs.min.js"></script>
@@ -9,13 +9,13 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.6/tinymce.min.js"></script>
15
14
 
16
15
  <!-- Grid editor CSS -->
17
16
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
18
17
  <!-- Grid editor javascript -->
18
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
19
19
  <script src="../dist/jquery.grideditor.min.js"></script>
20
20
  <script src="../dist/plugins/grideditor.elements.min.js"></script>
21
21
 
@@ -9,13 +9,13 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
 
15
14
  <!-- Grid editor CSS -->
16
15
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
17
16
  <!-- Grid editor javascript, then the locales the page offers. English is
18
17
  built into the plugin; every other language is a file of its own. -->
18
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
19
19
  <script src="../dist/jquery.grideditor.min.js"></script>
20
20
  <script src="../dist/locales/grideditor.es.js"></script>
21
21
 
@@ -9,7 +9,6 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
 
15
14
  <!-- Grid editor CSS -->
@@ -17,6 +16,7 @@
17
16
 
18
17
  <!-- The editor, and the plugins this page offers. Loading a file is what
19
18
  makes its feature available; nothing here is in the main bundle. -->
19
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
20
20
  <script src="../dist/jquery.grideditor.min.js"></script>
21
21
  <script src="../dist/plugins/grideditor.tabs.min.js"></script>
22
22
  <script src="../dist/plugins/grideditor.accordion.min.js"></script>
@@ -9,7 +9,6 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
 
15
14
  <!-- Summernote CSS -->
@@ -20,6 +19,7 @@
20
19
  <!-- Grid editor CSS -->
21
20
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
22
21
  <!-- Grid editor javascript -->
22
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
23
23
  <script src="../dist/jquery.grideditor.min.js"></script>
24
24
 
25
25
  <script>
@@ -9,13 +9,13 @@
9
9
 
10
10
  <!-- Javascript dependencies -->
11
11
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
12
- <script src="https://code.jquery.com/ui/1.14.2/jquery-ui.min.js"></script>
13
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
14
13
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.8.6/tinymce.min.js"></script>
15
14
 
16
15
  <!-- Grid editor CSS -->
17
16
  <link rel="stylesheet" type="text/css" href="../dist/grideditor.css" />
18
17
  <!-- Grid editor javascript -->
18
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
19
19
  <script src="../dist/jquery.grideditor.min.js"></script>
20
20
 
21
21
  <script>
package/package.json CHANGED
@@ -21,7 +21,8 @@
21
21
  "grunt-contrib-cssmin": "^5.0.0",
22
22
  "grunt-contrib-less": "^3.0.0",
23
23
  "grunt-contrib-uglify": "^5.2.2",
24
- "grunt-contrib-watch": "^1.1.0"
24
+ "grunt-contrib-watch": "^1.1.0",
25
+ "sortablejs": "^1.15.6"
25
26
  },
26
27
  "name": "@themarioga/grid-editor",
27
28
  "description": "Visual javascript editor for the bootstrap grid system, written as a jQuery plugin.",
@@ -33,7 +34,7 @@
33
34
  "comment": "A scoped package publishes restricted unless it is told otherwise.",
34
35
  "access": "public"
35
36
  },
36
- "version": "3.2.1",
37
+ "version": "4.0.0",
37
38
  "main": "dist/jquery.grideditor.js",
38
39
  "files": [
39
40
  "dist",