44 */
55
66import type { Node } from '@nextcloud/files'
7- import type { IFilePickerButton , IFilePickerButtonFactory , IFilePickerCanPick , IFilePickerFilter } from './components/types.ts'
7+ import type { IFilePickerButton , IFilePickerButtonFactory , IFilePickerCanNavigate , IFilePickerCanPick , IFilePickerFilter } from './components/types.ts'
88
99import IconMove from '@mdi/svg/svg/folder-move.svg?raw'
1010import IconCopy from '@mdi/svg/svg/folder-multiple.svg?raw'
@@ -38,6 +38,7 @@ export class FilePicker<IsMultiSelect extends boolean> {
3838 private path ?: string
3939 private filter ?: IFilePickerFilter
4040 private canPick ?: IFilePickerCanPick
41+ private canNavigate ?: IFilePickerCanNavigate
4142 private container ?: string
4243 private disabledNavigation : boolean
4344
@@ -50,6 +51,7 @@ export class FilePicker<IsMultiSelect extends boolean> {
5051 path ?: string ,
5152 filter ?: IFilePickerFilter ,
5253 canPick ?: IFilePickerCanPick ,
54+ canNavigate ?: IFilePickerCanNavigate ,
5355 container ?: string ,
5456 disabledNavigation = false ,
5557 ) {
@@ -60,6 +62,7 @@ export class FilePicker<IsMultiSelect extends boolean> {
6062 this . path = path
6163 this . filter = filter
6264 this . canPick = canPick
65+ this . canNavigate = canNavigate
6366 this . buttons = buttons
6467 this . container = container
6568 this . disabledNavigation = disabledNavigation
@@ -82,6 +85,7 @@ export class FilePicker<IsMultiSelect extends boolean> {
8285 multiselect : this . multiSelect ,
8386 filterFn : this . filter ,
8487 canPickFn : this . canPick ,
88+ canNavigateFn : this . canNavigate ,
8589 disabledNavigation : this . disabledNavigation ,
8690 } , {
8791 container : this . container ,
@@ -117,6 +121,7 @@ export class FilePickerBuilder<IsMultiSelect extends boolean> {
117121 private path ?: string
118122 private filter ?: IFilePickerFilter
119123 private canPick ?: IFilePickerCanPick
124+ private canNavigate ?: IFilePickerCanNavigate
120125 private buttons : IFilePickerButton [ ] | IFilePickerButtonFactory = [ ]
121126 private container ?: string
122127 private disabledNavigation = false
@@ -284,6 +289,16 @@ export class FilePickerBuilder<IsMultiSelect extends boolean> {
284289 return this
285290 }
286291
292+ /**
293+ * Add function to allow or not picking a node
294+ *
295+ * @param canNavigate Function to decide if a node can be navigated into
296+ */
297+ public setCanNavigate ( canNavigate : IFilePickerCanNavigate ) {
298+ this . canNavigate = canNavigate
299+ return this
300+ }
301+
287302 /**
288303 * Disable navigation (view selection)
289304 */
@@ -305,6 +320,7 @@ export class FilePickerBuilder<IsMultiSelect extends boolean> {
305320 this . path ,
306321 this . filter ,
307322 this . canPick ,
323+ this . canNavigate ,
308324 this . container ,
309325 this . disabledNavigation ,
310326 )
0 commit comments