diff --git a/CHANGELOG.md b/CHANGELOG.md
index 66fc43872e..37ca0ad2a9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@
- Feat: 投稿フォームで画像をプレビュー可能に
- Enhance: 投稿フォームの「迷惑になる可能性があります」のダイアログを表示する条件においてCWを考慮するように
- Enhance: アンテナ、リスト等の名前をカラム名のデフォルト値にするように `#13992`
+- Enhance: 投稿フォームの絵文字ピッカーに独立したウィンドウを使用できるように
- Enhance: クライアントエラー画面の多言語対応
- Enhance: 開発者モードでメニューからファイルIDをコピー出来るように `#15441'
- Fix: コンディショナルロールを手動で割り当てできる導線を削除 `#13529`
diff --git a/locales/index.d.ts b/locales/index.d.ts
index 4fe605490e..9ba9332566 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -130,6 +130,10 @@ export interface Locale extends ILocale {
* ウィンドウで開く
*/
"openInWindow": string;
+ /**
+ * ウィンドウ
+ */
+ "window": string;
/**
* プロフィール
*/
@@ -542,6 +546,10 @@ export interface Locale extends ILocale {
* 絵文字ピッカー
*/
"emojiPicker": string;
+ /**
+ * リアクションピッカー
+ */
+ "reactionPicker": string;
/**
* リアクション時にピン留め表示する絵文字を設定できます
*/
@@ -3186,10 +3194,6 @@ export interface Locale extends ILocale {
* 設定はページリロード後に反映されます。
*/
"reloadToApplySetting": string;
- /**
- * 反映には再起動が必要です。
- */
- "needReloadToApply": string;
/**
* タイトルバーを表示する
*/
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 57b11e9e04..b25107903b 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -28,6 +28,7 @@ notificationSettings: "通知の設定"
basicSettings: "基本設定"
otherSettings: "その他の設定"
openInWindow: "ウィンドウで開く"
+window: "ウィンドウ"
profile: "プロフィール"
timeline: "タイムライン"
noAccountDescription: "自己紹介はありません"
@@ -131,6 +132,7 @@ add: "追加"
reaction: "リアクション"
reactions: "リアクション"
emojiPicker: "絵文字ピッカー"
+reactionPicker: "リアクションピッカー"
pinnedEmojisForReactionSettingDescription: "リアクション時にピン留め表示する絵文字を設定できます"
pinnedEmojisSettingDescription: "絵文字入力時にピン留め表示する絵文字を設定できます"
emojiPickerDisplay: "ピッカーの表示"
@@ -792,7 +794,6 @@ center: "中央"
wide: "広い"
narrow: "狭い"
reloadToApplySetting: "設定はページリロード後に反映されます。"
-needReloadToApply: "反映には再起動が必要です。"
showTitlebar: "タイトルバーを表示する"
clearCache: "キャッシュをクリア"
onlineUsersCount: "{n}人がオンライン"
diff --git a/packages/frontend/src/components/MkEmojiPickerDialog.vue b/packages/frontend/src/components/MkEmojiPickerDialog.vue
index 21c712b441..42ebc0a6b9 100644
--- a/packages/frontend/src/components/MkEmojiPickerDialog.vue
+++ b/packages/frontend/src/components/MkEmojiPickerDialog.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
ref="modal"
v-slot="{ type, maxHeight }"
:zPriority="'middle'"
- :preferType="defaultStore.state.emojiPickerStyle"
+ :preferType="asReactionPicker ? defaultStore.state.reactionPickerStyle : defaultStore.state.emojiPickerStyle === 'window' ? 'auto' : defaultStore.state.emojiPickerStyle"
:hasInteractionWithOtherFocusTrappedEls="true"
:transparentBg="true"
:manualShowing="manualShowing"
diff --git a/packages/frontend/src/components/MkEmojiPickerWindow.stories.impl.ts b/packages/frontend/src/components/MkEmojiPickerWindow.stories.impl.ts
new file mode 100644
index 0000000000..67dd0f8d6f
--- /dev/null
+++ b/packages/frontend/src/components/MkEmojiPickerWindow.stories.impl.ts
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import MkEmojiPickerWindow from './MkEmojiPickerWindow.vue';
+void MkEmojiPickerWindow;
diff --git a/packages/frontend/src/components/MkEmojiPickerWindow.vue b/packages/frontend/src/components/MkEmojiPickerWindow.vue
new file mode 100644
index 0000000000..3600805ea4
--- /dev/null
+++ b/packages/frontend/src/components/MkEmojiPickerWindow.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue
index 49ed4197de..3a68560266 100644
--- a/packages/frontend/src/components/MkPostForm.vue
+++ b/packages/frontend/src/components/MkPostForm.vue
@@ -100,7 +100,7 @@ SPDX-License-Identifier: AGPL-3.0-only