@themarioga/grid-editor 8.0.0 → 8.2.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.
- package/CHANGELOG.md +30 -0
- package/README.md +19 -2
- package/dist/grideditor.bundle.min.js +3 -3
- package/dist/grideditor.css +9 -0
- package/dist/grideditor.d.ts +18 -1
- package/dist/grideditor.esm.js +147 -32
- package/dist/grideditor.jquery.js +3 -1
- package/dist/grideditor.jquery.min.js +1 -1
- package/dist/grideditor.jquery.min.js.map +2 -2
- package/dist/grideditor.js +147 -32
- package/dist/grideditor.min.css +1 -1
- package/dist/grideditor.min.css.map +1 -1
- package/dist/grideditor.min.js +2 -2
- package/dist/grideditor.min.js.map +3 -3
- package/dist/locales/grideditor.es.esm.js +1 -0
- package/dist/locales/grideditor.es.js +1 -0
- package/dist/locales/grideditor.es.min.js +1 -1
- package/dist/locales/grideditor.es.min.js.map +2 -2
- package/dist/plugins/grideditor.inline-style.esm.js +9 -0
- package/dist/plugins/grideditor.inline-style.js +9 -0
- package/dist/plugins/grideditor.inline-style.min.js +3 -3
- package/dist/plugins/grideditor.inline-style.min.js.map +3 -3
- package/docs/events.md +7 -0
- package/docs/locale-keys.md +1 -0
- package/package.json +1 -1
- package/src/js/grideditor.jquery.js +2 -0
- package/src/js/grideditor.js +139 -27
- package/src/js/inline-style/fields.js +10 -0
- package/src/js/locales/grideditor.es.js +1 -0
- package/src/js/plugins/grideditor.inline-style.js +1 -0
- package/src/less/grideditor.less +10 -0
- package/types/grideditor.d.ts +18 -1
package/dist/grideditor.js
CHANGED
|
@@ -326,7 +326,9 @@
|
|
|
326
326
|
addAccordionItem: { value: true },
|
|
327
327
|
setLocale: {},
|
|
328
328
|
getUtility: { value: true },
|
|
329
|
-
setUtility: { value: true }
|
|
329
|
+
setUtility: { value: true },
|
|
330
|
+
getActiveTarget: { value: true },
|
|
331
|
+
setActiveTarget: {}
|
|
330
332
|
};
|
|
331
333
|
var PLACEMENTS = ["appendTo", "prependTo", "insertAfter", "insertBefore"];
|
|
332
334
|
var BREAKPOINTS = [
|
|
@@ -396,11 +398,18 @@
|
|
|
396
398
|
},
|
|
397
399
|
resize: {
|
|
398
400
|
enabled: true,
|
|
401
|
+
// The handle on the column's edge
|
|
402
|
+
tools: true,
|
|
403
|
+
// The narrower and wider tools in the column's drawer
|
|
399
404
|
handles: "e",
|
|
400
405
|
// Which edges carry a handle: 'e', 'w', or 'e, w'
|
|
401
406
|
balance: "next"
|
|
402
407
|
// 'next' takes the units out of the following column
|
|
403
408
|
},
|
|
409
|
+
indent: {
|
|
410
|
+
tools: true
|
|
411
|
+
// The indent tools in the column's drawer
|
|
412
|
+
},
|
|
404
413
|
drag: {
|
|
405
414
|
delay: 0,
|
|
406
415
|
// Milliseconds to hold before a drag starts
|
|
@@ -562,6 +571,8 @@
|
|
|
562
571
|
// 'tool' for the move tool, 'drawer' for the whole drawer
|
|
563
572
|
"toolbar_drag": "auto",
|
|
564
573
|
// Drag the toolbar's buttons onto the canvas. 'auto' follows drag_handle
|
|
574
|
+
"active_target": false,
|
|
575
|
+
// A click in a column makes it where the toolbar's buttons add
|
|
565
576
|
"element_tools": [],
|
|
566
577
|
// Host tools on element drawers, same shape as row_tools
|
|
567
578
|
"element_classes": [],
|
|
@@ -596,6 +607,8 @@
|
|
|
596
607
|
"default_view": ALL_VIEW,
|
|
597
608
|
"resize": NESTED_SETTINGS.resize,
|
|
598
609
|
// Resizing a column by dragging its edge
|
|
610
|
+
"indent": NESTED_SETTINGS.indent,
|
|
611
|
+
// Indenting a column, offset-*
|
|
599
612
|
"source_textarea": "",
|
|
600
613
|
"edit_source": true,
|
|
601
614
|
// The toolbar's button to edit the canvas as html
|
|
@@ -621,6 +634,7 @@
|
|
|
621
634
|
var sizePicker = null;
|
|
622
635
|
var sourceOpen = false;
|
|
623
636
|
var dropMarker = null;
|
|
637
|
+
var activeTarget = null;
|
|
624
638
|
var warnedHere = {};
|
|
625
639
|
var sortables = [];
|
|
626
640
|
var instanceId = ++editorCounter;
|
|
@@ -1025,6 +1039,34 @@
|
|
|
1025
1039
|
e.preventDefault();
|
|
1026
1040
|
}
|
|
1027
1041
|
}, signal);
|
|
1042
|
+
if (settings.active_target) {
|
|
1043
|
+
var pressed = null;
|
|
1044
|
+
canvas.addEventListener("pointerdown", function(e) {
|
|
1045
|
+
pressed = { x: e.clientX, y: e.clientY };
|
|
1046
|
+
}, signal);
|
|
1047
|
+
canvas.addEventListener("click", function(e) {
|
|
1048
|
+
var from = pressed;
|
|
1049
|
+
pressed = null;
|
|
1050
|
+
if (!hasClass(canvas, "ge-editing")) {
|
|
1051
|
+
return;
|
|
1052
|
+
}
|
|
1053
|
+
if (from && Math.abs(e.clientX - from.x) + Math.abs(e.clientY - from.y) > settings.drag.threshold) {
|
|
1054
|
+
return;
|
|
1055
|
+
}
|
|
1056
|
+
var region = closest(e.target, targetSelector());
|
|
1057
|
+
changeTarget(region && region !== canvas && canvas.contains(region) ? region : null);
|
|
1058
|
+
}, signal);
|
|
1059
|
+
document.addEventListener("keydown", function(e) {
|
|
1060
|
+
if (e.key !== "Escape" || !activeTarget || openSettingsState || dialogState) {
|
|
1061
|
+
return;
|
|
1062
|
+
}
|
|
1063
|
+
var focus = document.activeElement;
|
|
1064
|
+
if (focus && (is(focus, "input, textarea, select") || focus.isContentEditable)) {
|
|
1065
|
+
return;
|
|
1066
|
+
}
|
|
1067
|
+
changeTarget(null);
|
|
1068
|
+
}, signal);
|
|
1069
|
+
}
|
|
1028
1070
|
}
|
|
1029
1071
|
function textReady(block) {
|
|
1030
1072
|
if (!is(block, ".ge-content") || !canvas.contains(block)) {
|
|
@@ -1050,6 +1092,10 @@
|
|
|
1050
1092
|
"data-ge-layout": grouped ? JSON.stringify(layout) : layout.join(",")
|
|
1051
1093
|
});
|
|
1052
1094
|
btn.addEventListener("click", function() {
|
|
1095
|
+
if (activeTarget) {
|
|
1096
|
+
addToTarget(btn, "tool");
|
|
1097
|
+
return;
|
|
1098
|
+
}
|
|
1053
1099
|
var row = rowFromLayoutValue(layout);
|
|
1054
1100
|
var added = addNode("row", row, function() {
|
|
1055
1101
|
canvas.appendChild(row);
|
|
@@ -1078,6 +1124,10 @@
|
|
|
1078
1124
|
);
|
|
1079
1125
|
attr(button, { "data-ge-toolbar": "container", "data-ge-container-type": type });
|
|
1080
1126
|
button.addEventListener("click", function() {
|
|
1127
|
+
if (activeTarget) {
|
|
1128
|
+
addToTarget(button, "tool");
|
|
1129
|
+
return;
|
|
1130
|
+
}
|
|
1081
1131
|
var row = createRow();
|
|
1082
1132
|
var column = row.appendChild(createColumn(MAX_COL_SIZE));
|
|
1083
1133
|
var container = column.appendChild(definition.create({}));
|
|
@@ -1171,6 +1221,10 @@
|
|
|
1171
1221
|
"data-ge-item": index
|
|
1172
1222
|
});
|
|
1173
1223
|
button.addEventListener("click", function() {
|
|
1224
|
+
if (activeTarget) {
|
|
1225
|
+
addToTarget(button, item.source || "tool");
|
|
1226
|
+
return;
|
|
1227
|
+
}
|
|
1174
1228
|
var made = item.create();
|
|
1175
1229
|
var placed = item.inColumn ? inRowOfItsOwn(made) : made;
|
|
1176
1230
|
var added = addNode(item.kind, made, function() {
|
|
@@ -1276,7 +1330,7 @@
|
|
|
1276
1330
|
});
|
|
1277
1331
|
return { region, before };
|
|
1278
1332
|
}
|
|
1279
|
-
function insertFeatureFromToolbar(button, where) {
|
|
1333
|
+
function insertFeatureFromToolbar(button, where, source) {
|
|
1280
1334
|
var item = FEATURES[button.getAttribute("data-ge-feature")].toolbar[parseInt(button.getAttribute("data-ge-item"), 10)];
|
|
1281
1335
|
var made = item.create();
|
|
1282
1336
|
var placed = made;
|
|
@@ -1295,7 +1349,7 @@
|
|
|
1295
1349
|
} else {
|
|
1296
1350
|
where.region.appendChild(placed);
|
|
1297
1351
|
}
|
|
1298
|
-
}, { parent: where.region, source: item.source || "dragdrop" });
|
|
1352
|
+
}, { parent: where.region, source: item.source || source || "dragdrop" });
|
|
1299
1353
|
}
|
|
1300
1354
|
function inRowOfItsOwn(node) {
|
|
1301
1355
|
var row = createRow();
|
|
@@ -1322,9 +1376,9 @@
|
|
|
1322
1376
|
dropMarker.remove();
|
|
1323
1377
|
}
|
|
1324
1378
|
}
|
|
1325
|
-
function insertFromToolbar(button, where) {
|
|
1379
|
+
function insertFromToolbar(button, where, source) {
|
|
1326
1380
|
if (button.getAttribute("data-ge-toolbar") === "feature") {
|
|
1327
|
-
return insertFeatureFromToolbar(button, where);
|
|
1381
|
+
return insertFeatureFromToolbar(button, where, source);
|
|
1328
1382
|
}
|
|
1329
1383
|
var container = button.getAttribute("data-ge-toolbar") === "container";
|
|
1330
1384
|
var type = button.getAttribute("data-ge-container-type");
|
|
@@ -1339,7 +1393,7 @@
|
|
|
1339
1393
|
} else {
|
|
1340
1394
|
where.region.appendChild(placed);
|
|
1341
1395
|
}
|
|
1342
|
-
}, { parent: where.region, source: "dragdrop" });
|
|
1396
|
+
}, { parent: where.region, source: source || "dragdrop" });
|
|
1343
1397
|
}
|
|
1344
1398
|
function widthFamily() {
|
|
1345
1399
|
var values = [];
|
|
@@ -1579,6 +1633,7 @@
|
|
|
1579
1633
|
}
|
|
1580
1634
|
function openSource() {
|
|
1581
1635
|
deinit();
|
|
1636
|
+
changeTarget(null);
|
|
1582
1637
|
htmlTextArea.style.height = 0.8 * document.documentElement.clientHeight + "px";
|
|
1583
1638
|
htmlTextArea.value = canvas.innerHTML;
|
|
1584
1639
|
show(htmlTextArea);
|
|
@@ -1594,6 +1649,32 @@
|
|
|
1594
1649
|
init();
|
|
1595
1650
|
hide(htmlTextArea);
|
|
1596
1651
|
}
|
|
1652
|
+
function targetSelector() {
|
|
1653
|
+
return [".column"].concat(pluginHooks("regions")).join(", ");
|
|
1654
|
+
}
|
|
1655
|
+
function isTarget(node) {
|
|
1656
|
+
return !!node && node !== canvas && canvas.contains(node) && is(node, targetSelector());
|
|
1657
|
+
}
|
|
1658
|
+
function changeTarget(node) {
|
|
1659
|
+
if (node === activeTarget) {
|
|
1660
|
+
return;
|
|
1661
|
+
}
|
|
1662
|
+
var from = activeTarget;
|
|
1663
|
+
if (from) {
|
|
1664
|
+
removeClass(from, "ge-active-target");
|
|
1665
|
+
}
|
|
1666
|
+
activeTarget = node;
|
|
1667
|
+
if (node && hasClass(canvas, "ge-editing")) {
|
|
1668
|
+
addClass(node, "ge-active-target");
|
|
1669
|
+
}
|
|
1670
|
+
emit("target-change", { canvas, target: node, from });
|
|
1671
|
+
}
|
|
1672
|
+
function addToTarget(button, source) {
|
|
1673
|
+
var made = insertFromToolbar(button, { region: activeTarget, before: null }, source);
|
|
1674
|
+
if (made && made.scrollIntoView) {
|
|
1675
|
+
made.scrollIntoView({ behavior: "smooth" });
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1597
1678
|
function init() {
|
|
1598
1679
|
if (openSettingsState && !attached(openSettingsState.node)) {
|
|
1599
1680
|
closeSettings();
|
|
@@ -1617,10 +1698,18 @@
|
|
|
1617
1698
|
makeResizable();
|
|
1618
1699
|
switchLayout(curView);
|
|
1619
1700
|
refreshPreviews(canvas);
|
|
1701
|
+
if (activeTarget && !canvas.contains(activeTarget)) {
|
|
1702
|
+
changeTarget(null);
|
|
1703
|
+
} else if (activeTarget) {
|
|
1704
|
+
addClass(activeTarget, "ge-active-target");
|
|
1705
|
+
}
|
|
1620
1706
|
}
|
|
1621
1707
|
function deinit() {
|
|
1622
1708
|
closeSettings();
|
|
1623
1709
|
removeClass(canvas, "ge-editing ge-drag-drawer ge-dropping");
|
|
1710
|
+
if (activeTarget) {
|
|
1711
|
+
removeClass(activeTarget, "ge-active-target");
|
|
1712
|
+
}
|
|
1624
1713
|
plugins("onBeforeDeinit");
|
|
1625
1714
|
closeSizePicker();
|
|
1626
1715
|
hideDropMarker();
|
|
@@ -1662,6 +1751,7 @@
|
|
|
1662
1751
|
closeSource();
|
|
1663
1752
|
}
|
|
1664
1753
|
deinit();
|
|
1754
|
+
activeTarget = null;
|
|
1665
1755
|
removeConfirmModal();
|
|
1666
1756
|
removeSettingsPanels();
|
|
1667
1757
|
removeDialog();
|
|
@@ -2530,30 +2620,34 @@
|
|
|
2530
2620
|
}
|
|
2531
2621
|
var drawer = prependDrawer(col, "ge-tools-drawer");
|
|
2532
2622
|
createMoveTool(drawer);
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2623
|
+
if (settings.resize.tools !== false) {
|
|
2624
|
+
createTool(drawer, t("tool.column_narrower"), "ge-decrease-col-width", "bi bi-dash-lg", function(e) {
|
|
2625
|
+
resizeColumn(
|
|
2626
|
+
col,
|
|
2627
|
+
e.shiftKey ? smallest(settings.valid_col_sizes) : stepThrough(settings.valid_col_sizes.filter(isUnits), currentUnits(col), -1),
|
|
2628
|
+
"tool"
|
|
2629
|
+
);
|
|
2630
|
+
});
|
|
2631
|
+
createTool(drawer, t("tool.column_wider"), "ge-increase-col-width", "bi bi-plus-lg", function(e) {
|
|
2632
|
+
resizeColumn(
|
|
2633
|
+
col,
|
|
2634
|
+
e.shiftKey ? widestFor(col) : stepThrough(settings.valid_col_sizes.filter(isUnits), currentUnits(col), 1),
|
|
2635
|
+
"tool"
|
|
2636
|
+
);
|
|
2637
|
+
});
|
|
2638
|
+
}
|
|
2639
|
+
if (settings.indent.tools !== false) {
|
|
2640
|
+
createTool(drawer, t("tool.indent_decrease"), "ge-decrease-col-offset", "bi bi-text-indent-right", function(e) {
|
|
2641
|
+
indentColumn(
|
|
2642
|
+
col,
|
|
2643
|
+
e.shiftKey ? smallest(settings.valid_col_offsets) : stepThrough(settings.valid_col_offsets, currentOffset(col), -1),
|
|
2644
|
+
"tool"
|
|
2645
|
+
);
|
|
2646
|
+
});
|
|
2647
|
+
createTool(drawer, t("tool.indent_increase"), "ge-increase-col-offset", "bi bi-text-indent-left", function(e) {
|
|
2648
|
+
indentColumn(col, e.shiftKey ? deepestFor(col) : stepThrough(settings.valid_col_offsets, currentOffset(col), 1), "tool");
|
|
2649
|
+
});
|
|
2650
|
+
}
|
|
2557
2651
|
addSettingsTool(drawer, col, settings.col_classes);
|
|
2558
2652
|
hostTools(drawer, settings.col_tools);
|
|
2559
2653
|
createTool(drawer, t("tool.delete_column"), "ge-delete-column", "bi bi-trash", function() {
|
|
@@ -4034,6 +4128,23 @@
|
|
|
4034
4128
|
return featureMethods[name].apply(null, arguments);
|
|
4035
4129
|
};
|
|
4036
4130
|
}
|
|
4131
|
+
function apiSetActiveTarget(value) {
|
|
4132
|
+
if (!settings.active_target) {
|
|
4133
|
+
warnOnceHere("active_target", "setActiveTarget needs the active_target setting: without it, it does nothing");
|
|
4134
|
+
return;
|
|
4135
|
+
}
|
|
4136
|
+
if (value === null || value === void 0) {
|
|
4137
|
+
changeTarget(null);
|
|
4138
|
+
return;
|
|
4139
|
+
}
|
|
4140
|
+
var node = nodeFrom(value);
|
|
4141
|
+
if (!isTarget(node)) {
|
|
4142
|
+
var named = typeof value === "string" ? value : node ? "<" + node.tagName.toLowerCase() + ">" : String(value);
|
|
4143
|
+
warn("setActiveTarget: " + named + " is not a column or a region of the canvas");
|
|
4144
|
+
return;
|
|
4145
|
+
}
|
|
4146
|
+
changeTarget(node);
|
|
4147
|
+
}
|
|
4037
4148
|
var own = {
|
|
4038
4149
|
getHtml,
|
|
4039
4150
|
getPlainHtml,
|
|
@@ -4067,7 +4178,11 @@
|
|
|
4067
4178
|
},
|
|
4068
4179
|
setLocale,
|
|
4069
4180
|
getUtility,
|
|
4070
|
-
setUtility
|
|
4181
|
+
setUtility,
|
|
4182
|
+
getActiveTarget: function() {
|
|
4183
|
+
return settings.active_target ? activeTarget : null;
|
|
4184
|
+
},
|
|
4185
|
+
setActiveTarget: apiSetActiveTarget
|
|
4071
4186
|
};
|
|
4072
4187
|
Object.keys(own).forEach(function(name) {
|
|
4073
4188
|
var value = !!(METHODS[name] && METHODS[name].value);
|
|
@@ -4106,7 +4221,7 @@
|
|
|
4106
4221
|
GridEditor._plainHtml = plainHtml;
|
|
4107
4222
|
GridEditor.Sortable = null;
|
|
4108
4223
|
GridEditor.bootstrap = null;
|
|
4109
|
-
GridEditor.version = false ? "dev" : "8.
|
|
4224
|
+
GridEditor.version = false ? "dev" : "8.2.0";
|
|
4110
4225
|
GridEditor.locales = {
|
|
4111
4226
|
en: {
|
|
4112
4227
|
"tool.move": "Move",
|