diff --git a/frontend/src/lib/components/apps/components/otherInputs/AppFileInput.svelte b/frontend/src/lib/components/apps/components/otherInputs/AppFileInput.svelte new file mode 100644 index 0000000000..86a773782a --- /dev/null +++ b/frontend/src/lib/components/apps/components/otherInputs/AppFileInput.svelte @@ -0,0 +1,43 @@ + + + + + + +
+ {handleChange(detail)}} + class="w-full h-full" + > + {text} + +
diff --git a/frontend/src/lib/components/apps/editor/Component.svelte b/frontend/src/lib/components/apps/editor/Component.svelte index 2551e2d7b7..d8110a1255 100644 --- a/frontend/src/lib/components/apps/editor/Component.svelte +++ b/frontend/src/lib/components/apps/editor/Component.svelte @@ -20,7 +20,8 @@ Smile, DollarSign, SeparatorHorizontal, - SeparatorVertical + SeparatorVertical, + Paperclip } from 'lucide-svelte' import type { Size } from 'svelte-grid' import { twMerge } from 'tailwind-merge' @@ -75,6 +76,7 @@ export type IconComponent = BaseComponent<'iconcomponent'> export type HorizontalDividerComponent = BaseComponent<'horizontaldividercomponent'> export type VerticalDividerComponent = BaseComponent<'verticaldividercomponent'> + export type FileInputComponent = BaseComponent<'fileinputcomponent'> export type AppComponent = BaseAppComponent & ( @@ -104,6 +106,7 @@ | IconComponent | HorizontalDividerComponent | VerticalDividerComponent + | FileInputComponent ) // Dimensions key formula: :-: @@ -1059,7 +1062,43 @@ customCss: {}, card: false } - } + }, + fileinputcomponent: { + name: 'File Input', + icon: Paperclip, + dims: '3:4-6:4', + data: { + id: '', + type: 'fileinputcomponent', + componentInput: undefined, + configuration: { + acceptedFileTypes: { + type: 'static', + value: [ + 'image/*', + 'application/pdf' + ], + fieldType: 'array', + onlyStatic: true + }, + allowMultiple: { + type: 'static', + value: false, + fieldType: 'boolean', + tooltip: 'If allowed, the user will be able to select more than one file', + onlyStatic: true + }, + text: { + type: 'static', + value: 'Drag and drop files or click to select them', + fieldType: 'text', + onlyStatic: true + }, + }, + customCss: {}, + card: false + } + }, } const inputs: ComponentSet = { @@ -1072,6 +1111,7 @@ 'slidercomponent', 'rangecomponent', 'dateinputcomponent', + 'fileinputcomponent', 'checkboxcomponent', 'selectcomponent' ] @@ -1441,7 +1481,6 @@ + + \ No newline at end of file diff --git a/frontend/src/lib/components/common/index.ts b/frontend/src/lib/components/common/index.ts index f0631c05d1..c5656dcff4 100644 --- a/frontend/src/lib/components/common/index.ts +++ b/frontend/src/lib/components/common/index.ts @@ -17,6 +17,7 @@ export { default as Tabs } from './tabs/Tabs.svelte' export { default as ToggleButton } from './toggleButton/ToggleButton.svelte' export { default as ToggleButtonGroup } from './toggleButton/ToggleButtonGroup.svelte' export { default as Breadcrumb } from './breadcrumb/Breadcrumb.svelte' +export { default as FileInput } from './fileInput/FileInput.svelte' export * from './alert/model' export * from './badge/model'