@@ -41,6 +41,7 @@ interface DropzoneContextType extends DropzoneState {
4141 maxSize ?: DropzoneOptions [ 'maxSize' ]
4242 minSize ?: DropzoneOptions [ 'minSize' ]
4343 maxFiles ?: DropzoneOptions [ 'maxFiles' ]
44+ disabled ?: DropzoneOptions [ 'disabled' ]
4445}
4546
4647interface FinalDropzoneContextType extends DropzoneContextType {
@@ -137,6 +138,7 @@ export const DropzoneProvider = ({
137138 maxSize = { maxSize }
138139 minSize = { minSize }
139140 maxFiles = { maxFiles }
141+ disabled = { disabled }
140142 { ...dropzoneCtx }
141143 >
142144 { children }
@@ -166,7 +168,9 @@ export const DropZoneEmptyContent = (props: { children?: React.ReactNode }) => {
166168 return props . children
167169}
168170
169- export const DropZoneArea = ( props : React . ComponentPropsWithRef < 'button' > ) => {
171+ export const DropZoneArea = (
172+ props : Pick < React . ComponentPropsWithRef < 'button' > , 'className' | 'id' | 'children' >
173+ ) => {
170174 const dropzoneCtx = useDropZone ( )
171175
172176 return (
@@ -176,10 +180,11 @@ export const DropZoneArea = (props: React.ComponentPropsWithRef<'button'>) => {
176180 data-drag-reject = { dropzoneCtx . isDragReject }
177181 data-focused = { dropzoneCtx . isFocused }
178182 data-file-dialog-active = { dropzoneCtx . isFileDialogActive }
183+ data-disabled = { dropzoneCtx . disabled }
179184 className = { cn (
180185 'group/dropzone relative h-auto w-full flex-col overflow-hidden rounded-md border border-dashed p-12' ,
181186 'data-[drag-active=true]:ring-ring ring-offset-2 data-[drag-active=true]:outline-none data-[drag-active=true]:ring-[2px]' ,
182- 'disabled:bg-surface-primary-disabled' ,
187+ 'data-[ disabled=true] :bg-surface-primary-disabled' ,
183188 props . className
184189 ) }
185190 { ...dropzoneCtx . getRootProps ( {
@@ -190,8 +195,8 @@ export const DropZoneArea = (props: React.ComponentPropsWithRef<'button'>) => {
190195 >
191196 < input
192197 { ...dropzoneCtx . getInputProps ( ) }
193- disabled = { props . disabled }
194- aria-disabled = { props . disabled }
198+ disabled = { dropzoneCtx . disabled }
199+ aria-disabled = { dropzoneCtx . disabled }
195200 id = { props . id }
196201 />
197202 { props . children }
@@ -254,13 +259,12 @@ export const DropZoneEmptyUploadButton = ({
254259 < Button
255260 variant = "outline"
256261 asChild
262+ className = { cn (
263+ 'group-data-[disabled=true]/dropzone:bg-surface-primary-disabled group-data-[disabled=true]/dropzone:active:bg-surface-primary-disabled group-data-[disabled=true]/dropzone:cursor-default' ,
264+ className
265+ ) }
257266 children = {
258- < span
259- className = { cn (
260- 'group-disabled/dropzone:bg-surface-primary-disabled group-disabled/dropzone:active:bg-surface-primary-disabled group-disabled/dropzone:cursor-default' ,
261- className
262- ) }
263- >
267+ < span >
264268 < PaperclipIcon />
265269 < span > Upload { maxFiles === 1 ? 'a file' : 'files' } </ span >
266270 </ span >
0 commit comments