carbon-components-svelte
Version:
Svelte implementation of the Carbon Design System
64 lines (53 loc) • 1.92 kB
TypeScript
import { SvelteComponentTyped } from "svelte";
import type { SvelteHTMLElements } from "svelte/elements";
export type FilenameIconDescriptionContext = {
/** Set when rendered from `FileUploader` rows; otherwise `undefined`. */
file?: File | undefined;
/** Display name (`file.name` or `FileUploaderItem` `name`). */
fileName: string;
status: "uploading" | "edit" | "complete";
invalid: boolean;
};
type $RestProps = SvelteHTMLElements["div"] & SvelteHTMLElements["button"] & SvelteHTMLElements["svg"];
type $Props = {
/**
* Specify the file name status.
* @default "uploading"
*/
status?: "uploading" | "edit" | "complete";
/**
* Accessible label for the status icons (spinner, remove control, checkmark).
* Pass a string, or a function receiving {@link FilenameIconDescriptionContext}.
* When the resolved value is omitted or blank after trim, defaults are used:
* - `uploading`: passed to `Loading` as `"uploading"`
* - `edit`: close button `aria-label` is `"Remove file"`
* - `complete`: checkmark `aria-label` / `title` are `"Upload complete"`
* @default undefined
*/
iconDescription?: string | undefined | ((ctx: FilenameIconDescriptionContext) => string | undefined);
/**
* Current file when rendered inside `FileUploader`; omit when using `FileUploaderItem` only.
* @default undefined
*/
file?: File | undefined;
/**
* Display file name (e.g. `file.name` or `FileUploaderItem` `name`).
* @default ""
*/
fileName?: string;
/**
* Set to `true` to indicate an invalid state
* @default false
*/
invalid?: boolean;
[key: `data-${string}`]: unknown;
};
export type FilenameProps = Omit<$RestProps, keyof $Props> & $Props;
export default class Filename extends SvelteComponentTyped<
FilenameProps,
{
click: WindowEventMap["click"];
keydown: WindowEventMap["keydown"];
},
Record<string, never>
> {}