From 540e6e4f99f0116303dd37ad88586f1426c31644 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 31 Oct 2021 19:35:35 +0900 Subject: [PATCH] =?UTF-8?q?fix(client):=20=E3=83=9A=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E7=B7=A8=E9=9B=86=E6=99=82=E3=81=AE=E3=83=89=E3=83=AD=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=80=E3=82=A6=E3=83=B3=E3=83=A1=E3=83=8B=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=81=AA=E3=81=A9=E3=81=8C=E5=8B=95=E4=BD=9C=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + src/client/components/form/select.vue | 34 +++++++++++++-------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 260d15af1..eef1345c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ ### Bugfixes - リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正 - 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 +- クライアント: ページ編集時のドロップダウンメニューなどが動作しない問題を修正 ## 12.94.1 (2021/10/25) diff --git a/src/client/components/form/select.vue b/src/client/components/form/select.vue index 9efaf0269..363b3515f 100644 --- a/src/client/components/form/select.vue +++ b/src/client/components/form/select.vue @@ -150,26 +150,26 @@ export default defineComponent({ }); }; - for (const optionOrOptgroup of options) { - if (optionOrOptgroup.type === 'optgroup') { - const optgroup = optionOrOptgroup; - menu.push({ - type: 'label', - text: optgroup.props.label, - }); - for (const option of optgroup.children) { + const scanOptions = (options: VNode[]) => { + for (const vnode of options) { + if (vnode.type === 'optgroup') { + const optgroup = vnode; + menu.push({ + type: 'label', + text: optgroup.props.label, + }); + scanOptions(optgroup.children); + } else if (Array.isArray(vnode.children)) { // 何故かフラグメントになってくることがある + const fragment = vnode; + scanOptions(fragment.children); + } else { + const option = vnode; pushOption(option); } - } else if (Array.isArray(optionOrOptgroup.children)) { // 何故かフラグメントになってくることがある - const fragment = optionOrOptgroup; - for (const option of fragment.children) { - pushOption(option); - } - } else { - const option = optionOrOptgroup; - pushOption(option); } - } + }; + + scanOptions(options); os.popupMenu(menu, container.value, { width: container.value.offsetWidth,