@animech-public/chonky
Version:
A File Browser component for React
62 lines (58 loc) • 1.74 kB
text/typescript
import { ChonkyActions } from '../action-definitions/index';
import { ChonkyIconPlaceholder } from '../components/internal/ChonkyIconPlaceholder';
import { FileBrowserProps } from '../types/file-browser.types';
export type ChonkyConfig = Pick<
FileBrowserProps,
| 'fileActions'
| 'onFileAction'
| 'onSearchInput'
| 'onCancelSearch'
| 'searchPredicate'
| 'sortCollator'
| 'doubleClickDelay'
| 'disableSelection'
| 'disableSimpleDeselection'
| 'disableDefaultFileActions'
| 'hideToolbarInfo'
| 'forceEnableOpenParent'
| 'disableDragAndDrop'
| 'disableDragAndDropProvider'
| 'defaultSortActionId'
| 'defaultFileViewActionId'
| 'clearSelectionOnOutsideClick'
| 'iconComponent'
| 'darkMode'
| 'i18n'
| 'renamingSanitizer'
| 'disableRenaming'
>;
export const defaultConfig: ChonkyConfig = {
fileActions: null,
onFileAction: null,
onSearchInput: null,
onCancelSearch: null,
searchPredicate: null,
doubleClickDelay: 300,
disableSelection: false,
disableSimpleDeselection: false,
disableDefaultFileActions: false,
forceEnableOpenParent: false,
hideToolbarInfo: false,
disableDragAndDrop: false,
disableDragAndDropProvider: false,
defaultSortActionId: ChonkyActions.SortFilesByName.id,
defaultFileViewActionId: ChonkyActions.EnableGridView.id,
clearSelectionOnOutsideClick: true,
iconComponent: ChonkyIconPlaceholder,
darkMode: false,
i18n: {},
renamingSanitizer: null,
disableRenaming: false,
};
export const setChonkyDefaults = (config: Partial<ChonkyConfig>) => {
for (const key of Object.keys(defaultConfig)) {
if (key in config) {
(defaultConfig as any)[key as keyof ChonkyConfig] = config[key as keyof ChonkyConfig] as any;
}
}
};