Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
1c04fc5
Use checkbox elements for addon toggles, share styles
Samq64 Sep 20, 2025
9073ad2
Fix keyboard navigation in headers and sidebar
Samq64 Sep 20, 2025
c170d0b
More settings: use native dialog element
Samq64 Sep 20, 2025
02b693e
Convert more divs to buttons
Samq64 Sep 20, 2025
850a2d9
Format code
Samq64 Sep 21, 2025
410dede
Make list items tabbable
DNin01 Sep 21, 2025
48c4615
More accessibile arrow buttons, consolidate more styles
Samq64 Sep 21, 2025
cc091f8
Temporary dropdown solution
Samq64 Sep 22, 2025
f70b3a6
Don't focus disabled addon elements
Samq64 Sep 22, 2025
599d4bd
Format code
Samq64 Sep 22, 2025
39864a1
Dropdown component
Samq64 Sep 23, 2025
787f12d
Dropdown arrow navigation
Samq64 Sep 23, 2025
edc5780
Format code
Samq64 Sep 23, 2025
c2ba9e1
Fix icon margin in more settings
Samq64 Sep 23, 2025
66e98c9
Fix toggling addons with permssions/confirmation
Samq64 Sep 24, 2025
a5e8497
Give more buttons titles, focusable setting tooltips
Samq64 Sep 24, 2025
384efd6
Fix dropdowns not closing when clicking outside
Samq64 Sep 24, 2025
e553602
Format code
Samq64 Sep 24, 2025
7afdc5b
Start working on Scratch messaging
Samq64 Sep 24, 2025
93583ae
Format code
Samq64 Sep 24, 2025
2f0b39a
Delete and post comments with the keyboard
Samq64 Sep 24, 2025
7deebc6
Format code
Samq64 Sep 24, 2025
656227d
Always show dismiss button
Samq64 Sep 24, 2025
c5522f1
Shorter dropdown title
Samq64 Sep 24, 2025
2abdc7e
Apply Maximouse's suggestions
Samq64 Sep 24, 2025
167c790
Format code
Samq64 Sep 24, 2025
9468996
Forgot one
Samq64 Sep 24, 2025
4b7d405
Minor cleanup
Samq64 Sep 25, 2025
a1b0160
Apply suggestions from code review
Samq64 Sep 27, 2025
8f60587
Revert unnecessary messaging changes
Samq64 Sep 27, 2025
3282e7d
Fix bugs
Samq64 Sep 27, 2025
c705459
Format code
Samq64 Sep 27, 2025
83d0c24
Consistent disabled state naming
Samq64 Sep 27, 2025
b7feae4
margin-inline consistency with master
Samq64 Sep 28, 2025
3e634af
Fix split button highlight
Samq64 Sep 28, 2025
2172c15
Fix tab and category oulines
Samq64 Sep 28, 2025
fb0326c
Apply to header as well
Samq64 Sep 28, 2025
5316d63
filter-option as well
Samq64 Sep 28, 2025
1a953a8
Tabbable tags, autofocus first dropdown item
Samq64 Sep 28, 2025
0aaba64
Trun select options into radio input elements
Samq64 Sep 29, 2025
78c6139
Refine radio buttons
DNin01 Sep 29, 2025
b73e7e3
Apply to other sidebar toggle button
Samq64 Sep 29, 2025
8f75c7f
Format code
Samq64 Sep 29, 2025
be5f450
Focus before button when shift-tabbing in dropdown
Samq64 Sep 29, 2025
bdde59e
flex-grow on div
Samq64 Oct 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions _locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,9 @@
"moreSettings": {
"message": "More Settings"
},
"toggleSidebar": {
"message": "Toggle sidebar"
},
"close": {
"message": "Close"
},
Expand All @@ -152,6 +155,9 @@
"resetToDefault": {
"message": "Reset to default settings"
},
"importExport": {
"message": "Export/import settings"
},
"relatedAddons": {
"message": "Related addons:"
},
Expand All @@ -164,9 +170,21 @@
"viewLicenses": {
"message": "View library licenses"
},
"back": {
"message": "Go back"
},
"collapse": {
"message": "Collapse"
},
"expand": {
"message": "Expand"
},
"reset": {
"message": "Reset"
},
"resetTo": {
"message": "Reset to..."
},
"default": {
"message": "Default"
},
Expand All @@ -176,6 +194,15 @@
"preview": {
"message": "Preview"
},
"addRow": {
"message": "Add row"
},
"addPresetRow": {
"message": "Add preset row"
},
"deleteRow": {
"message": "Delete row"
},
"scratchAddonsTheme": {
"message": "Scratch Addons theme"
},
Expand All @@ -185,9 +212,15 @@
"light": {
"message": "Light"
},
"switchLight": {
"message": "Switch to light theme"
},
"dark": {
"message": "Dark"
},
"switchDark": {
"message": "Switch to dark theme"
},
"loading": {
"message": "Loading..."
},
Expand Down
2 changes: 1 addition & 1 deletion images/icons/x.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 6 additions & 3 deletions popups/scratch-messaging/popup.css
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ button {
align-items: center;
padding: 4px;
border-radius: 4px;
background-color: transparent;
border: none;
cursor: pointer;
}
.message-type-title:hover .btn-dropdown {
background: var(--hover-highlight);
Expand Down Expand Up @@ -231,8 +234,8 @@ a.message-type-title-text {
font-weight: 500;
user-select: none;
}
.comment:hover .reply-button-comment,
.comment:hover .delete-btn {
.comment:is(:hover, :focus-within) .reply-button-comment,
.comment:is(:hover, :focus-within) .delete-btn {
opacity: 1;
}
.reply-textarea {
Expand Down Expand Up @@ -329,7 +332,7 @@ a.message-type-title-text {
user-select: none;
}
#bottom-bar > * {
padding: 8px 0;
margin: 8px 0;
}
#bottom-bar > a {
font-weight: var(--brand-orange-min-font-weight);
Expand Down
46 changes: 27 additions & 19 deletions popups/scratch-messaging/popup.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@
</span>
<a
@click="deleteComment()"
@keydown.enter="deleteComment()"
tabindex="0"
class="delete-btn"
:class="{'delete-confirm': deleteStep === 1}"
v-show="!deleted"
Expand All @@ -65,7 +67,9 @@
</div>
<a
class="reply-button-comment"
tabindex="0"
@click="replying = true"
@keydown.enter="replying = true"
:class="{'replying': replying}"
:style="{'visibility': replying ? 'hidden' : 'visible'}"
v-show="!deleted"
Expand Down Expand Up @@ -103,14 +107,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.stMessages = !messageTypeExtended.stMessages"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.stMessages}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.stMessagesMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/notice.svg" draggable="false" /> {{ stMessages.length
Expand All @@ -120,7 +124,9 @@
<div class="message-type-details" v-show="messageTypeExtended.stMessages">
<div class="comment" v-for="alert of stMessages">
<span class="comment-time">{{ alert.datetime_created }}</span>
<a class="delete-btn" @click="dismissAlert(alert.id)">{{ uiMessages.dismissMsg }}</a>
<a class="delete-btn" tabindex="0" @click="dismissAlert(alert.id)" @keydown.enter="dismissAlert(alert.id)"
>{{ uiMessages.dismissMsg }}</a
>
<dom-element-renderer :element="alert.element"></dom-element-renderer>
</div>
</div>
Expand All @@ -132,14 +138,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.follows = !messageTypeExtended.follows"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.follows}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.followsMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/follow.svg" draggable="false" /> {{ follows.length
Expand All @@ -159,14 +165,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.studioInvites = !messageTypeExtended.studioInvites"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.studioInvites}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.studioInvitesMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/studio-add.svg" draggable="false" /> {{
Expand All @@ -184,14 +190,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.studioPromotions = !messageTypeExtended.studioPromotions"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.studioPromotions}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.studioPromotionsMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/adminusers.svg" draggable="false" /> {{
Expand All @@ -209,14 +215,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.studioHostTransfers = !messageTypeExtended.studioHostTransfers"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.studioHostTransfers}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.studioHostTransfersMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/users.svg" draggable="false" /> {{
Expand All @@ -236,14 +242,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.forumActivity = !messageTypeExtended.forumActivity"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.forumActivity}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.forumMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/forum.svg" draggable="false" /> {{ forumActivity.length
Expand All @@ -261,14 +267,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.studioActivity = !messageTypeExtended.studioActivity"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.studioActivity}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.studioActivityMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/studio.svg" draggable="false" /> {{ studioActivityAmt
Expand All @@ -289,14 +295,14 @@
class="message-type-title hover-reverse"
@click="messageTypeExtended.remixes = !messageTypeExtended.remixes"
>
<div class="btn-dropdown">
<button class="btn-dropdown">
<img
src="../../images/icons/expand.svg"
alt="v"
:class="{'reverted': messageTypeExtended.remixes}"
draggable="false"
/>
</div>
</button>
<span class="message-type-title-text">{{ uiMessages.remixesMsg }}</span>
<span class="float-right"
><img class="small-icon" src="../../images/icons/remix.svg" draggable="false" /> {{ remixes.length
Expand Down Expand Up @@ -417,7 +423,7 @@
>{{ project.title }}</a
>
<span class="float-right">
<div class="tooltip" v-if="project.loveCount || project.favoriteCount">
<div class="tooltip" tabindex="0" v-if="project.loveCount || project.favoriteCount">
<span class="tooltip-indicator">
<span v-show="project.loveCount"
><img class="small-icon colored" src="../../images/icons/heart.svg" draggable="false" />
Expand Down Expand Up @@ -524,7 +530,9 @@

<!-- Bottom bar-->
<div id="bottom-bar">
<a v-cloak @click="markAsRead()" v-show="!markedAsRead">{{ uiMessages.markAsReadMsg }}</a>
<a tabindex="0" v-cloak @click="markAsRead()" @keydown.enter="markAsRead()" v-show="!markedAsRead"
>{{ uiMessages.markAsReadMsg }}</a
>
<span v-cloak v-show="markedAsRead" class="marked-as-read"
><img class="small-icon" src="../../images/icons/read.svg" draggable="false" /> {{ uiMessages.markedAsReadMsg
}}</span
Expand Down
8 changes: 4 additions & 4 deletions webpages/popup/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@
<a id="version" :href="changelogLink" target="_blank" title="{{ msg('changelog') }}">v{{ version }}</a>
</span>
</div>
<div class="header-button" @click="openSettingsPage()">
<a href="#" class="header-button" @click="openSettingsPage()">
<img src="../../images/icons/settings.svg" id="settings-icon" title="{{ msg('settings') }}" draggable="false" />
</div>
</a>
</div>
<div id="popups">
<div id="popup-bar" v-cloak>
<div id="popup-chooser">
<div
<button
v-for="popup of popups"
class="popup-name"
:class="{ sel: currentPopup === popup }"
Expand All @@ -49,7 +49,7 @@
draggable="false"
/>
</span>
</div>
</button>
</div>
</div>
<iframe
Expand Down
19 changes: 17 additions & 2 deletions webpages/popup/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ body {
color: var(--white-text);
}

button {
background-color: transparent;
border: none;
font: inherit;
}

[v-cloak] {
display: none !important;
}
Expand All @@ -26,11 +32,16 @@ body {
padding: 18px;
line-height: 0;
user-select: none;
transition: 0.2s ease;
transition: background 0.2s ease;
outline-offset: -2px;
}
.header-button:hover {
background: var(--header-hover-darken);
}
.header-button:focus-visible {
outline: 2px solid var(--white-text);
}

#title-text,
.header-button {
font-size: 18px;
Expand Down Expand Up @@ -83,14 +94,18 @@ body {
padding-inline-start: 10.5px;
padding-inline-end: 12px;
user-select: none;
transition: 0.2s ease;
transition: background 0.2s ease;
outline-offset: -2px;
}
.popup-name:hover {
background-color: var(--hover-darken);
}
.popup-name:not(.sel):hover {
cursor: pointer;
}
.popup-name:focus-visible {
outline: 2px solid var(--content-text);
}
.popup-name:not(:last-child) {
border-inline-end: none;
}
Expand Down
Loading