@oslokommune/punkt-elements
Version:
Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo
74 lines (73 loc) • 2.76 kB
TypeScript
/**
* fileupload.ts
*
* Type definitions for the fileupload component.
* Used by both Elements and React implementations.
*/
export type TUploadStrategy = 'form' | 'custom';
export type TFileUploadItemRenderer = 'filename' | 'thumbnail';
export type TFilesChangedReason = 'add' | 'remove' | 'update';
export type TFileValidator = (file: File) => string | null;
export type TTransferProgress = number | 'done' | 'error' | 'canceled' | 'queued';
/** A selected file plus metadata used by the FileUpload UI. */
export interface IFileItem {
fileId: string;
file?: File;
attributes: {
targetFilename: string;
} & Record<string, unknown>;
}
/** Transfer status for a file when using `uploadStrategy="custom"`. */
export interface IFileTransfer {
fileId: string;
progress: TTransferProgress;
errorMessage?: string;
showProgress?: boolean;
lastProgress?: number;
}
/** Detail payload for the `file-validate` event (Lit) / callback equivalent (React). */
export interface IFileValidateDetail {
file: File;
errorMessage: string | null;
}
/** Detail payload for `transfer-cancelled` event / `onTransferCancelled` callback. */
export interface ITransferCancelledDetail {
fileId: string;
file?: File;
attributes: {
targetFilename: string;
} & Record<string, unknown>;
}
/** Detail payload for the `files-changed` event. */
export interface IFilesChangedDetail {
files: IFileItem[];
reason: TFilesChangedReason;
changedFileIds?: string[];
}
/** Default Norwegian Bokmål strings used by both implementations. */
export interface IFileUploadStrings {
dropZoneDragMultiple: string;
dropZoneDragSingle: string;
dropZoneDragMultipleThumbnail: string;
dropZoneDragSingleThumbnail: string;
dropZoneDragActiveMultiple: string;
dropZoneDragActiveSingle: string;
dropZoneDragActiveMultipleThumbnail: string;
dropZoneDragActiveSingleThumbnail: string;
dropZoneOpenFileDialogMultiple: string;
dropZoneOpenFileDialogSingle: string;
dropZoneOpenFileDialogMultipleThumbnail: string;
dropZoneOpenFileDialogSingleThumbnail: string;
supportedFormatsPrefix: string;
invalidFormatDefault: (formats: string) => string;
sizeTooLargeDefault: (maxSize: string) => string;
requiredMissing: string;
genericValidationRejection: string;
unknownFilename: string;
fileLabel: (count: number) => string;
srFileAdded: (filename: string) => string;
srFilesAdded: (count: number) => string;
srFilesUploadedOfTotal: (uploaded: number, total: number, label: string) => string;
srFilesFailedOfTotal: (failed: number, total: number, label: string) => string;
}
export declare const defaultFileUploadStrings: IFileUploadStrings;