14 KiB
Title, nav
Title | nav |
---|---|
ルール | ja |
ルール
ルールを使用すると、拡張コンポーネントの条件を評価できるため、たとえば特定のルールに基づいて要素を無効化または非表示にできます。
すべてのルールは、コンディションエバリュエータによって裏付けられています。
{
"$schema": "../../../extension.schema.json",
"$version": "1.0.0",
"$name": "plugin1",
"rules": [
{
"id": "app.trashcan",
"type": "app.navigation.isTrashcan"
}
]
}
ルールはパラメータとして他のルールを受け入れることができます:
{
"$schema": "../../../extension.schema.json",
"$version": "1.0.0",
"$name": "plugin1",
"rules": [
{
"id": "app.toolbar.favorite.canAdd",
"type": "core.every",
"parameters": [
{ "type": "rule", "value": "app.selection.canAddFavorite" },
{ "type": "rule", "value": "app.navigation.isNotRecentFiles" },
{ "type": "rule", "value": "app.navigation.isNotSharedFiles" },
{ "type": "rule", "value": "app.navigation.isNotSearchResults" }
]
}
]
}
Tip: また、!
プレフィックスを使用して、ルールを無効にすることもできます。
!app.navigation.isTrashcan
は app.navigation.isTrashcan
の反対です。
追加のパラメータを提供したり、複数のルールを連結したりする必要がない場合は、 ルールを宣言せずに、登録されたエバリュエータへのインライン参照を使用することもできます。
コアエバリュエータ
他のルールとエバリュエータを連鎖させることにより、新しいルールを作成できます。
バージョン | キー | 説明 |
---|---|---|
1.7.0 | core.every | すべての連鎖ルールが true と評価される場合、true と評価されます。 |
1.7.0 | core.some | 連鎖ルールの少なくとも1つが true と評価された場合、true と評価されます。 |
1.7.0 | core.not | すべての連鎖ルールが false に評価される場合、true に評価されます。 |
以下は、次の条件を組み合わせた複合ルール定義の例です:
- ユーザーが単一のファイルを選択しました
- ユーザーは ゴミ箱 ページを使用していません
{
"$schema": "../../../extension.schema.json",
"$version": "1.0.0",
"$name": "plugin1",
"rules": [
{
"id": "app.toolbar.canViewFile",
"type": "core.every",
"parameters": [
{
"type": "rule",
"value": "app.selection.file"
},
{
"type": "rule",
"value": "core.not",
"parameters": [
{
"type": "rule",
"value": "app.navigation.isTrashcan"
}
]
}
]
}
]
}
これで、上記のルールに基づいたツールバーボタンアクションを宣言できます。
{
"$schema": "../../../extension.schema.json",
"$version": "1.0.0",
"$name": "plugin1",
"features": {
"toolbar": [
{
"id": "app.toolbar.preview",
"type": "button",
"title": "View File",
"icon": "open_in_browser",
"actions": {
"click": "VIEW_FILE"
},
"rules": {
"visible": "app.toolbar.canViewFile"
}
}
]
}
}
ボタンは、リンクされたルールが true
と評価された場合にのみ表示されます。
アプリケーションエバリュエータ
バージョン | キー | 説明 |
---|---|---|
1.7.0 | app.selection.canDelete | ユーザーには、選択したノードを削除する権限があります。 |
1.7.0 | app.selection.canDownload | ユーザーは選択したノードをダウンロードできます。 |
1.7.0 | app.selection.notEmpty | 少なくとも1つのノードが選択されています。 |
1.7.0 | app.selection.canUnshare | ユーザーは、選択したノードを公開共有から削除できます。 |
1.7.0 | app.selection.canAddFavorite | ユーザーは、選択したノードをお気に入りに追加できます。 |
1.7.0 | app.selection.canRemoveFavorite | ユーザーは、選択したノードをお気に入りから削除できます。 |
1.7.0 | app.selection.first.canUpdate | ユーザーには、選択したノードを更新する権限があります。 |
1.7.0 | app.selection.file | 単一のファイルノードが選択されています。 |
1.7.0 | app.selection.file.canShare | ユーザーは選択したファイルを共有できます。 |
1.7.0 | app.selection.file.isShared | 共有ノードが選択されています。 |
1.7.0 | app.selection.file.isLocked | ファイルは編集のためにロックされています。 |
1.7.0 | app.selection.file.isLockOwner | ファイルはロックされており、現在のユーザーはロック所有者です。 |
1.7.0 | app.selection.file.canUploadVersion | ユーザーはファイルのバージョンを更新できます。 |
1.7.0 | app.selection.library | 単一のライブラリノードが選択されています。 |
1.7.0 | app.selection.isPrivateLibrary | プライベートライブラリノードが選択されています。 |
1.7.0 | app.selection.hasLibraryRole | 選択したライブラリノードにはロールプロパティがあります。 |
1.7.0 | app.selection.hasNoLibraryRole | 選択したライブラリノードにはロールプロパティがありません。 |
1.7.0 | app.selection.folder | 単一のフォルダノードが選択されます。 |
1.7.0 | app.selection.folder.canUpdate | ユーザーには、選択したフォルダを更新する権限があります。 |
1.7.0 | app.selection.file.canLock | ユーザーにはファイルをロックする権限があります。 |
1.7.0 | app.selection.file.canUnlock | ユーザーにはファイルのロックを解除する権限があります。 |
1.7.0 | repository.isQuickShareEnabled | クイック共有リポジトリオプションが有効かどうか。 |
1.8.0 | canCopyNode | ユーザーが選択したノードをコピーできるかどうかを確認します。 |
1.8.0 | canToggleJoinLibrary | ユーザーがライブラリで "参加" または "参加リクエストのキャンセル" を実行できるかどうかを確認します。 |
1.8.0 | canEditFolder | ユーザーが選択したフォルダを編集できるかどうかを確認します。 |
1.8.0 | isTrashcanItemSelected | ユーザーがゴミ箱アイテムを選択しているかどうかを確認します。 |
1.8.0 | canViewFile | ユーザーがファイルを表示できるかどうかを確認します。 |
1.8.0 | canLeaveLibrary | ユーザーが選択したライブラリを離れることができるかどうかを確認します。 |
1.8.0 | canToggleSharedLink | ユーザーが共有リンクモードを切り替えることができるかどうかを確認します。 |
1.8.0 | canShowInfoDrawer | ユーザーが選択したノードの情報ドロアーを表示できるかどうかを確認します。 |
1.8.0 | canManageFileVersions | ユーザーが選択したノードのファイルバージョンを管理できるかどうかを確認します。 |
1.8.0 | canManagePermissions | ユーザーが選択したノードの権限を管理できるかどうかを確認します。 |
1.8.0 | canToggleEditOffline | ユーザーが選択したノードのオフライン編集モードを切り替えることができるかどうかを確認します。 |
1.8.0 | user.isAdmin | ユーザーが管理者かどうかを確認します。 |
ナビゲーションエバリュエータ
アプリケーションは、表示されるルートまたはページに基づいて特定のアクションを開発者が制限または有効化できるように、ナビゲーション関連のエバリュエータのセットを公開します。
否定されたエバリュエータは、開発を単純化するためだけに提供され、core.every
と core.not
を混合するなど、
規則を否定するためだけに複雑な規則ツリーを持つことを回避します。
Tip: また、!
プレフィックスを使用して、ルールを無効にすることもできます。
!app.navigation.isTrashcan
は app.navigation.isTrashcan
の反対です。
バージョン | キー | 説明 |
---|---|---|
1.7.0 | app.navigation.folder.canCreate | ユーザーは、現在開いているフォルダにコンテンツを作成できます。 |
1.7.0 | app.navigation.folder.canUpload | ユーザーは、現在開いているフォルダにコンテンツをアップロードできます。 |
1.7.0 | app.navigation.isTrashcan | ユーザーはゴミ箱ページを使用しています。 |
1.7.0 | app.navigation.isNotTrashcan | 現在のページはゴミ箱ではありません。 |
1.7.0 | app.navigation.isLibraries | ユーザーはライブラリまたはライブラリ検索結果ページを使用しています。 |
1.7.0 | app.navigation.isNotLibraries | 現在のページはライブラリページではありません。 |
1.7.0 | app.navigation.isSharedFiles | ユーザーは共有ファイルページを使用しています。 |
1.7.0 | app.navigation.isNotSharedFiles | 現在のページは共有ファイルではありません。 |
1.7.0 | app.navigation.isFavorites | ユーザーはお気に入りページを使用しています。 |
1.7.0 | app.navigation.isNotFavorites | 現在のページはお気に入りではありません。 |
1.7.0 | app.navigation.isRecentFiles | ユーザーは最近のファイルページを使用しています。 |
1.7.0 | app.navigation.isNotRecentFiles | 現在のページは最近のファイルではありません。 |
1.7.0 | app.navigation.isSearchResults | ユーザーは検索結果ページを使用しています。 |
1.7.0 | app.navigation.isNotSearchResults | 現在のページは検索結果ではありません。 |
1.7.0 | app.navigation.isSharedPreview | 現在のページはプレビュー共有ファイルです。 |
1.7.0 | app.navigation.isFavoritesPreview | 現在のページはプレビューお気に入りです。 |
1.7.0 | app.navigation.isSharedFileViewer | 現在のページは共有ファイルのプレビューページです。 |
1.7.0 | app.navigation.isPreview | 現在のページはプレビューです。 |
1.7.0 | app.navigation.isPersonalFiles | 現在のページは個人用ファイルです。 |
1.7.0 | app.navigation.isLibraryFiles | 現在のページはライブラリファイルです。 |
Tip: 実行時に再利用される独自のエントリを登録する方法の詳細については、 登録 セクションを参照してください。
例
以下の例のルールは、すべての条件が満たされた場合に true
と評価されます:
- ユーザーがノードを選択しました
- ユーザーはゴミ箱ページを使用していません
- ユーザーはライブラリページ (マイライブラリ、お気に入りライブラリ、ライブラリ検索結果ページ) を使用していません
{
"$schema": "../../../extension.schema.json",
"$version": "1.0.0",
"$name": "plugin1",
"rules": [
{
"id": "app.toolbar.canCopyNode",
"type": "core.every",
"parameters": [
{ "type": "rule", "value": "app.selection.notEmpty" },
{ "type": "rule", "value": "app.navigation.isNotTrashcan" },
{ "type": "rule", "value": "app.navigation.isNotLibraries" }
]
}
]
}