Skip to content

Commit 2f47df8

Browse files
committed
feat: add setting for spacing handles in live preview
1 parent 1756dd1 commit 2f47df8

4 files changed

Lines changed: 50 additions & 3 deletions

File tree

src/LiveDevelopment/LivePreviewConstants.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,5 @@ define(function main(require, exports, module) {
4141
exports.HIGHLIGHT_CLICK = "click";
4242

4343
exports.PREFERENCE_SHOW_RULER_LINES = "livePreviewShowMeasurements";
44+
exports.PREFERENCE_SHOW_SPACING_HANDLES = "livePreviewShowSpacingHandles";
4445
});

src/LiveDevelopment/main.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ define(function main(require, exports, module) {
7070
mode: LIVE_HIGHLIGHT_MODE, // will be updated when we fetch entitlements
7171
elemHighlights: CONSTANTS.HIGHLIGHT_HOVER, // default value, this will get updated when the extension loads
7272
showRulerLines: false, // default value, this will get updated when the extension loads
73+
showSpacingHandles: true, // default value, this will get updated when the extension loads
7374
isPaidUser: false, // will be updated when we fetch entitlements
7475
isLoggedIn: false, // will be updated when we fetch entitlements
7576
hasLiveEditCapability: false // handled inside _liveEditCapabilityChanged function
@@ -324,6 +325,13 @@ define(function main(require, exports, module) {
324325
MultiBrowserLiveDev.updateConfig(config);
325326
}
326327

328+
function updateSpacingHandlesConfig() {
329+
const prefValue = PreferencesManager.get(CONSTANTS.PREFERENCE_SHOW_SPACING_HANDLES);
330+
const config = MultiBrowserLiveDev.getConfig();
331+
config.showSpacingHandles = prefValue !== false;
332+
MultiBrowserLiveDev.updateConfig(config);
333+
}
334+
327335
EventDispatcher.makeEventDispatcher(exports);
328336

329337
// private api
@@ -347,6 +355,7 @@ define(function main(require, exports, module) {
347355
exports.setLivePreviewTransportBridge = setLivePreviewTransportBridge;
348356
exports.updateElementHighlightConfig = updateElementHighlightConfig;
349357
exports.updateRulerLinesConfig = updateRulerLinesConfig;
358+
exports.updateSpacingHandlesConfig = updateSpacingHandlesConfig;
350359
exports.getConnectionIds = MultiBrowserLiveDev.getConnectionIds;
351360
exports.getLivePreviewDetails = MultiBrowserLiveDev.getLivePreviewDetails;
352361
exports.hideHighlight = MultiBrowserLiveDev.hideHighlight;

src/extensionsIntegrated/Phoenix-live-preview/main.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ define(function (require, exports, module) {
110110
description: Strings.LIVE_DEV_SETTINGS_SHOW_RULER_LINES_PREFERENCE
111111
});
112112

113+
// live preview spacing handles preference (show/hide spacing handles on element selection)
114+
const PREFERENCE_SHOW_SPACING_HANDLES = CONSTANTS.PREFERENCE_SHOW_SPACING_HANDLES;
115+
PreferencesManager.definePreference(PREFERENCE_SHOW_SPACING_HANDLES, "boolean", true, {
116+
description: Strings.LIVE_DEV_SETTINGS_SHOW_SPACING_HANDLES_PREFERENCE
117+
});
118+
113119
const LIVE_PREVIEW_PANEL_ID = "live-preview-panel";
114120
const LIVE_PREVIEW_IFRAME_ID = "panel-live-preview-frame";
115121
const LIVE_PREVIEW_IFRAME_HTML = `
@@ -338,6 +344,7 @@ define(function (require, exports, module) {
338344
items.push("---");
339345
items.push(Strings.LIVE_PREVIEW_EDIT_HIGHLIGHT_ON);
340346
items.push(Strings.LIVE_PREVIEW_SHOW_RULER_LINES);
347+
items.push(Strings.LIVE_PREVIEW_SHOW_SPACING_HANDLES);
341348
}
342349

343350
const currentMode = LiveDevelopment.getCurrentMode();
@@ -372,6 +379,12 @@ define(function (require, exports, module) {
372379
return `✓ ${Strings.LIVE_PREVIEW_SHOW_RULER_LINES}`;
373380
}
374381
return `${'\u00A0'.repeat(4)}${Strings.LIVE_PREVIEW_SHOW_RULER_LINES}`;
382+
} else if (item === Strings.LIVE_PREVIEW_SHOW_SPACING_HANDLES) {
383+
const isEnabled = PreferencesManager.get(PREFERENCE_SHOW_SPACING_HANDLES);
384+
if(isEnabled) {
385+
return `✓ ${Strings.LIVE_PREVIEW_SHOW_SPACING_HANDLES}`;
386+
}
387+
return `${'\u00A0'.repeat(4)}${Strings.LIVE_PREVIEW_SHOW_SPACING_HANDLES}`;
375388
}
376389
return item;
377390
});
@@ -429,6 +442,15 @@ define(function (require, exports, module) {
429442
const currentValue = PreferencesManager.get(PREFERENCE_SHOW_RULER_LINES);
430443
PreferencesManager.set(PREFERENCE_SHOW_RULER_LINES, !currentValue);
431444
return; // Don't dismiss highlights for this option
445+
} else if (item === Strings.LIVE_PREVIEW_SHOW_SPACING_HANDLES) {
446+
// Don't allow spacing handles toggle if edit features are not active
447+
if (!isEditFeaturesActive) {
448+
return;
449+
}
450+
// Toggle spacing handles on/off
451+
const currentValue = PreferencesManager.get(PREFERENCE_SHOW_SPACING_HANDLES);
452+
PreferencesManager.set(PREFERENCE_SHOW_SPACING_HANDLES, !currentValue);
453+
return; // Don't dismiss highlights for this option
432454
}
433455
});
434456

@@ -1227,10 +1249,14 @@ define(function (require, exports, module) {
12271249
PreferencesManager.on("change", PREFERENCE_SHOW_RULER_LINES, function() {
12281250
LiveDevelopment.updateRulerLinesConfig();
12291251
});
1252+
PreferencesManager.on("change", PREFERENCE_SHOW_SPACING_HANDLES, function() {
1253+
LiveDevelopment.updateSpacingHandlesConfig();
1254+
});
12301255

1231-
// Initialize element highlight and ruler lines config on startup
1256+
// Initialize element highlight, ruler lines, and spacing handles config on startup
12321257
LiveDevelopment.updateElementHighlightConfig();
12331258
LiveDevelopment.updateRulerLinesConfig();
1259+
LiveDevelopment.updateSpacingHandlesConfig();
12341260

12351261
LiveDevelopment.openLivePreview();
12361262
LiveDevelopment.on(LiveDevelopment.EVENT_OPEN_PREVIEW_URL, _openLivePreviewURL);

src/nls/root/strings.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,13 @@ define({
240240
"LIVE_DEV_STYLES_PANEL_NO_STYLES": "No styles found",
241241
"LIVE_DEV_STYLES_PANEL_PROPERTY_PLACEHOLDER": "property",
242242
"LIVE_DEV_STYLES_PANEL_VALUE_PLACEHOLDER": "value",
243+
"LIVE_DEV_STYLES_QS_COLORS": "Colors",
244+
"LIVE_DEV_STYLES_QS_TEXT_COLOR_LABEL": "Text",
245+
"LIVE_DEV_STYLES_QS_BG_COLOR_LABEL": "Background",
243246
"LIVE_DEV_STYLES_QS_TYPOGRAPHY": "Typography",
244-
"LIVE_DEV_STYLES_QS_BACKGROUND": "Background",
245247
"LIVE_DEV_STYLES_QS_SIZE": "Size",
246248
"LIVE_DEV_STYLES_QS_SPACING": "Spacing",
249+
"LIVE_DEV_STYLES_QS_SIZE_AND_SPACING": "Size & Spacing",
247250
"LIVE_DEV_STYLES_QS_BORDER": "Border",
248251
"LIVE_DEV_STYLES_QS_LAYOUT": "Layout",
249252
"LIVE_DEV_STYLES_QS_EFFECTS": "Effects",
@@ -277,13 +280,19 @@ define({
277280
"LIVE_DEV_STYLES_QS_FLEX_DIR": "Direction",
278281
"LIVE_DEV_STYLES_QS_ALIGN_ITEMS": "Align",
279282
"LIVE_DEV_STYLES_QS_JUSTIFY": "Justify",
283+
"LIVE_DEV_STYLES_QS_DISTRIBUTE": "Distribute",
284+
"LIVE_DEV_STYLES_QS_DISTRIBUTE_PACKED": "Packed",
285+
"LIVE_DEV_STYLES_QS_DISTRIBUTE_BETWEEN": "Between",
286+
"LIVE_DEV_STYLES_QS_DISTRIBUTE_AROUND": "Around",
287+
"LIVE_DEV_STYLES_QS_DISTRIBUTE_EVENLY": "Evenly",
280288
"LIVE_DEV_STYLES_QS_GAP": "Gap",
281289
"LIVE_DEV_STYLES_QS_Z_INDEX": "Z-Index",
282290
"LIVE_DEV_STYLES_QS_OPACITY": "Opacity",
283291
"LIVE_DEV_STYLES_QS_BOX_SHADOW": "Box Shadow",
284292
"LIVE_DEV_STYLES_QS_SELECTOR": "Selector",
285293
"LIVE_DEV_STYLES_QS_ELEMENT_STYLE": "element.style",
286-
"LIVE_DEV_STYLES_QS_SHOW_MORE": "More properties",
294+
"LIVE_DEV_STYLES_QS_SHOW_MORE": "Show More",
295+
"LIVE_DEV_STYLES_QS_SHOW_LESS": "Show Less",
287296
"LIVE_DEV_STYLES_TAB_QUICK": "Quick Styles",
288297
"LIVE_DEV_STYLES_TAB_ADVANCED": "Advanced Styles",
289298
"LIVE_DEV_STYLES_TAB_COMPUTED": "Computed",
@@ -323,6 +332,8 @@ define({
323332
"LIVE_PREVIEW_MODE_EDIT": "Edit Mode",
324333
"LIVE_PREVIEW_EDIT_HIGHLIGHT_ON": "Inspect Element on Hover",
325334
"LIVE_PREVIEW_SHOW_RULER_LINES": "Show Measurements",
335+
"LIVE_PREVIEW_SHOW_SPACING_HANDLES": "Show Spacing Handles",
336+
"LIVE_DEV_SETTINGS_SHOW_SPACING_HANDLES_PREFERENCE": "Show spacing handles when elements are selected in live preview edit mode. Defaults to 'true'",
326337
"LIVE_PREVIEW_MODE_PREFERENCE": "'{0}' shows only the webpage, '{1}' connects the webpage to your code - click on elements to jump to their code and vice versa, '{2}' provides highlighting along with advanced element manipulation",
327338
"LIVE_PREVIEW_CONFIGURE_MODES": "Configure Live Preview Modes",
328339

0 commit comments

Comments
 (0)