Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit b52204b

Browse files
Merge pull request #282 from deckgo/highlight-selected-element
feat(#250): highlight selected element
2 parents 8481374 + 2ab5bd9 commit b52204b

File tree

5 files changed

+38
-0
lines changed

5 files changed

+38
-0
lines changed

studio/src/app/components/editor/app-editor-toolbar/app-editor-toolbar.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,11 @@ export class AppEditorToolbar {
638638

639639
private initSelectedElement(element: HTMLElement): Promise<void> {
640640
return new Promise<void>(async (resolve) => {
641+
// If needed, remove highlight on previous element
642+
if (!element && this.selectedElement) {
643+
await this.highlightElement(false);
644+
}
645+
641646
this.selectedElement = element;
642647
this.deckOrSlide = this.isElementSlideOrDeck(element);
643648

@@ -652,6 +657,26 @@ export class AppEditorToolbar {
652657
element.addEventListener('paste', this.cleanOnPaste, false);
653658

654659
await this.attachMoveToolbarOnElement();
660+
661+
await this.highlightElement(true);
662+
}
663+
664+
resolve();
665+
});
666+
}
667+
668+
private highlightElement(highlight: boolean): Promise<void> {
669+
return new Promise<void>(async (resolve) => {
670+
// No highlight on deck
671+
if (!this.selectedElement || this.deckOrSlide) {
672+
resolve();
673+
return;
674+
}
675+
676+
if (highlight) {
677+
this.selectedElement.setAttribute('highlighted', '');
678+
} else {
679+
this.selectedElement.removeAttribute('highlighted');
655680
}
656681

657682
resolve();

studio/src/app/handlers/editor/events/deck/deck-events.handler.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,7 @@ export class DeckEventsHandler {
567567

568568
let result: string = content.replace(/contenteditable=""|contenteditable="true"|contenteditable="false"|contenteditable/gi, '');
569569
result = result.replace(/editable=""|editable="true"|editable/gi, '');
570+
result = result.replace(/highlighted=""|highlighted="true"|highlighted/gi, '');
570571
result = result.replace(/hydrated/gi, '');
571572
result = result.replace(/class=""/g, '');
572573

studio/src/app/utils/editor/reveal-slot.utils.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,5 +96,9 @@ export class RevealSlotUtils {
9696
element.setAttribute('style', selectedElement.getAttribute('style'));
9797
selectedElement.removeAttribute('style');
9898
}
99+
100+
if (selectedElement.hasAttribute('highlighted')) {
101+
selectedElement.removeAttribute('highlighted');
102+
}
99103
}
100104
}

studio/src/global/theme/editor/editor-deck-placeholder.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,8 @@ deckgo-deck {
6767
}
6868
}
6969

70+
[highlighted] {
71+
box-shadow: 1px 2px 8px 2px rgba(var(--ion-color-primary-rgb), 0.2);
72+
}
73+
7074
}

studio/src/global/theme/editor/editor-fullscreen.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
h1, h2, h3, section, ol, ul, deckgo-reveal-list, deckgo-highlight-code, *:not([slot="background"]) > deckgo-lazy-img, deckgo-reveal.img {
5050
border: 1px solid transparent;
5151
}
52+
53+
[highlighted] {
54+
box-shadow: none;
55+
}
5256
}
5357
}
5458

0 commit comments

Comments
 (0)