diff --git a/docs/addon/toggleAppDescription/images/saved.png b/docs/addon/toggleAppDescription/images/saved.png
index b97f0a2..99232d0 100644
Binary files a/docs/addon/toggleAppDescription/images/saved.png and b/docs/addon/toggleAppDescription/images/saved.png differ
diff --git a/docs/addon/toggleAppDescription/images/setting_dialog.png b/docs/addon/toggleAppDescription/images/setting_dialog.png
index 0adf2b3..758a858 100644
Binary files a/docs/addon/toggleAppDescription/images/setting_dialog.png and b/docs/addon/toggleAppDescription/images/setting_dialog.png differ
diff --git a/docs/addon/toggleAppDescription/index.md b/docs/addon/toggleAppDescription/index.md
index f4a488a..88a229e 100644
--- a/docs/addon/toggleAppDescription/index.md
+++ b/docs/addon/toggleAppDescription/index.md
@@ -7,28 +7,41 @@
### 1. 設定ダイアログを開く
-アプリの`一覧画面`、`詳細画面`、`編集画面`、`作成画面`のいずれかを開いた状態で`アプリ説明欄の表示/非表示`を選択します。
+Devkinox の拡張機能アイコンをクリックし、`アプリ説明欄の表示/非表示` を選択します。
-
+### 2. 非表示ルールを設定
-### 2. 非表示にしたいアプリIDを設定
+説明欄を自動的に非表示にしたいアプリIDを半角数字/カンマ区切りで入力します。
+アプリ画面では現在表示中のアプリIDも表示されるため、入力の参考にできます。
-説明欄を自動的に非表示にしたいアプリIDをカンマ区切りで入力します。
-現在表示中のアプリIDも表示されるため、入力の参考にできます。
+> [!NOTE]
+> ポータル画面などアプリ以外の画面でも設定ダイアログは利用できます。
+> ただし、その場合は現在のアプリIDは表示されません。
+
+また、`すべてのアプリで説明欄を非表示にする` を有効化すると、全アプリが対象になります。
+このチェックが ON の間は、アプリID入力欄は編集できません。
> [!TIP]
> 例: `1, 54, 67` のように複数のアプリ ID を設定できます。
-
+> [!NOTE]
+> `すべてのアプリで説明欄を非表示にする` を ON にしても、個別のアプリID設定は保持されます。
+> OFF に戻すと、保持されていた個別設定が再び適用されます。
### 3. 設定を保存
「保存」ボタンをクリックすると、設定が保存されます。
-設定したアプリでは、次回表示時から説明欄が自動的に閉じた状態になります。
+保存後は現在の画面にも反映されます。
+
+入力に無効な値(数値以外、0 以下など)が含まれている場合は、その値を自動的に除外して保存し、
+保存完了メッセージに「除外した無効値」が表示されます。
+保存完了メッセージは約 4 秒表示されます。
+
+また、対象ページを開いた瞬間にも設定が自動適用されます。
@@ -37,17 +50,20 @@
### 自動適用
- 設定は localStorage に保存されます
-- 設定したアプリを開くと、自動的に説明欄が閉じられます
-- 一覧画面、詳細画面、編集画面、作成画面すべてで動作します
+- 設定したアプリを開いた瞬間に、自動的に説明欄が閉じられます
+- 一覧/詳細/編集/追加/グラフ画面で動作します
+- `すべてのアプリで説明欄を非表示にする` を ON にすると、対象画面では常に非表示になります
### 設定の変更
-設定を変更したい場合は、再度ダイアログを開いてアプリIDを入力してください。
+設定を変更したい場合は、拡張機能から再度このアドオンを選択してダイアログを開き、アプリIDを入力してください。
### 設定の解除
特定のアプリで説明欄を再び表示したい場合は、そのアプリIDを削除して保存してください。
+全アプリ対象を解除したい場合は、`すべてのアプリで説明欄を非表示にする` のチェックを OFF にして保存してください。
+
## 注意事項
> [!NOTE]
@@ -63,6 +79,8 @@
- 設定データは JSON 形式で localStorage に保存されます
- kintone の標準 API(`kintone.app.showDescription`)を使用しています
- 無効なアプリID(数値以外、0 以下)は自動的に除外されます
+- 無効値が除外された場合は、保存完了メッセージに除外内容を表示します
+- kintone オブジェクト初期化の遅延には、プロパティフックで準備完了を検知してイベント登録します
### 作成者
diff --git a/manifest.json b/manifest.json
index bbf1e01..3ca8b85 100644
--- a/manifest.json
+++ b/manifest.json
@@ -17,7 +17,7 @@
{
"matches": ["*://*.cybozu.com/*"],
"js": ["addons/toggleAppDescription.js"],
- "run_at": "document_end",
+ "run_at": "document_start",
"world": "MAIN"
}
],
diff --git a/src/addons/toggleAppDescription/index.ts b/src/addons/toggleAppDescription/index.ts
index 167654a..860801b 100644
--- a/src/addons/toggleAppDescription/index.ts
+++ b/src/addons/toggleAppDescription/index.ts
@@ -1,88 +1,277 @@
-import type { Kintone } from './types';
-
-declare const kintone: Kintone;
+import type { Kintone } from "./types";
(() => {
- const DIALOG_ID = 'kintone-dev-tools-toggle-app-description-dialog';
- const STORAGE_KEY = 'kintone-dev-tools-hidden-app-ids';
+ const DIALOG_ID = "kintone-dev-tools-toggle-app-description-dialog";
+ const STORAGE_KEY = "kintone-dev-tools-hidden-app-ids";
+ const HIDE_ALL_STORAGE_KEY = "kintone-dev-tools-hide-all-app-descriptions";
const STYLES = {
DIALOG_Z_INDEX: 2147483647,
MESSAGE_Z_INDEX: 2147483648,
COLORS: {
- PRIMARY: '#3498db',
- SUCCESS: '#27ae60',
- INFO_BG: '#f0f8ff',
- INFO_BORDER: '#b0d4f1',
- TEXT_SECONDARY: '#666',
- BORDER: '#ccc',
- BUTTON_CANCEL: '#ccc',
- BUTTON_CANCEL_TEXT: '#333',
+ PRIMARY: "#3498db",
+ SUCCESS: "#27ae60",
+ INFO_BG: "#f0f8ff",
+ INFO_BORDER: "#b0d4f1",
+ TEXT_SECONDARY: "#666",
+ BORDER: "#ccc",
+ BUTTON_CANCEL: "#ccc",
+ BUTTON_CANCEL_TEXT: "#333",
},
TIMING: {
- SUCCESS_MESSAGE_DURATION: 2000,
+ SUCCESS_MESSAGE_DURATION: 4000,
+ },
+ } as const;
+
+ const kintoneReadyHookInstalledTargets = new WeakSet