diff --git a/package.json b/package.json index 5c684d45..c1f60386 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "impro", - "version": "0.20.27", + "version": "0.20.28", "type": "module", "scripts": { "start": "rm -rf \"${BUILD_DIR:-build}\" && NODE_ENV=development eleventy --serve", diff --git a/src/css/style.css b/src/css/style.css index 50b76a97..7607b089 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -10243,11 +10243,19 @@ label:has(toggle-switch[disabled]) { } .interaction-settings-lists-toggle { - padding: 8px 0; - color: var(--text-color); - font-size: 14px; - font-weight: 500; - cursor: pointer; + justify-content: space-between; + list-style: none; +} + +.interaction-settings-lists-toggle::-webkit-details-marker { + display: none; +} + +.interaction-settings-lists-chevron { + display: flex; + width: 18px; + height: 18px; + flex-shrink: 0; } .interaction-settings-lists-message { diff --git a/src/js/components/post-interaction-settings-dialog.js b/src/js/components/post-interaction-settings-dialog.js index d1a2c9be..b0e90172 100644 --- a/src/js/components/post-interaction-settings-dialog.js +++ b/src/js/components/post-interaction-settings-dialog.js @@ -116,19 +116,30 @@ function listsSectionTemplate({ listsError, atRuleCap, isSaving, + listsOpen, + onToggleListsOpen, onToggleList, }) { const selectedCount = settings.filter( (setting) => setting.type === "list", ).length; return html` -
+
onToggleListsOpen(event.target.open)} + > - Select from your - lists${selectedCount > 0 ? ` (${selectedCount} selected)` : ""} + + Select from your + lists${selectedCount > 0 ? ` (${selectedCount} selected)` : ""} + + ${listsError ? html`
@@ -187,6 +198,8 @@ function interactionSettingsFormTemplate({ saveError, defaultsRowState, saveAsDefault, + listsOpen, + onToggleListsOpen, onToggleSaveAsDefault, onSelectEverybody, onSelectNobody, @@ -254,6 +267,8 @@ function interactionSettingsFormTemplate({ listsError, atRuleCap, isSaving, + listsOpen, + onToggleListsOpen, onToggleList, })} ${preservedSettings.map((setting) => @@ -333,6 +348,7 @@ class PostInteractionSettingsDialog extends Component { this.state.$isSaving = new Signal.State(false); this.state.$saveError = new Signal.State(null); this.state.$saveAsDefault = new Signal.State(false); + this.state.$listsOpen = new Signal.State(false); this._defaultAllowJson = this.defaultInteractionSettings ? JSON.stringify(this.defaultInteractionSettings.threadgateAllowRules) : null; @@ -476,6 +492,7 @@ class PostInteractionSettingsDialog extends Component { const isSaving = this.state.$isSaving.get(); const saveError = this.state.$saveError.get(); const saveAsDefault = this.state.$saveAsDefault.get(); + const listsOpen = this.state.$listsOpen.get(); const curateLists = this._getCurateLists(); let defaultsRowState = null; if (this._defaultAllowJson !== null) { @@ -539,6 +556,8 @@ class PostInteractionSettingsDialog extends Component { saveError, defaultsRowState, saveAsDefault, + listsOpen, + onToggleListsOpen: (open) => this.state.$listsOpen.set(open), onToggleSaveAsDefault: (checked) => this.state.$saveAsDefault.set(checked), onSelectEverybody: () => this._selectEverybody(),