Mixins / foldkit-mixins-ui

FileDrop

namespace · packages/mixins-ui/src/fileDrop.ts:1

export * as FileDrop from './fileDrop.js'

In the guides

Members

FileDrop.FileDropSlots

const · packages/mixins-ui/src/fileDrop.ts:13

const FileDropSlots: Slots.Contract<{
  readonly root: Slot.UnnamedSlot<
    Capability.Capability<
      'Container',
      readonly [
        Capability.Capability<
          'Interactive',
          readonly [Capability.Capability<'Base', readonly []>]
        >,
      ]
    >,
    readonly Slot.EventName[],
    readonly Slot.AttributeName[],
    readonly Slot.RequirementName[],
    boolean
  >
  readonly input: Slot.UnnamedSlot<
    Capability.Capability<
      'Interactive',
      readonly [Capability.Capability<'Base', readonly []>]
    >,
    readonly [Event.EventToken<'change'>],
    readonly [Attr.AttrToken<'disabled'>],
    readonly Slot.RequirementName[],
    boolean
  >
}>

FileDrop is a small Submodel: a root drop zone plus its hidden file input. The root owns the drag handlers (dragenter/dragleave/drop have no Event tokens, but the resolver still refuses a second owner by event name); the input owns change while enabled. A Behavior adding its own handler to one of those is a conflict, not a second silent owner.

FileDrop.resolve

function · packages/mixins-ui/src/fileDrop.ts:26

function resolve<Input, Message>(
  render: FileDropAttributes,
  mixins: MixinList<Message>,
  context: ResolveContext<Input, Message>,
): ResolvedFileDrop<Message>

Resolves the file drop's render groups.

FileDrop.ResolvedFileDrop

type · packages/mixins-ui/src/fileDrop.ts:23

type ResolvedFileDrop<Message> = Resolved<
  FileDropAttributes,
  typeof FileDropSlots,
  Message
>

The file drop's bundles with the attached Mixins applied.

FileDrop.toView

function · packages/mixins-ui/src/fileDrop.ts:33

function toView<Message>(
  mixins: MixinList<Message>,
  context: ResolveContext<unknown, Message>,
  draw: (resolved: ResolvedFileDrop<Message>) => Html,
): (render: FileDropAttributes) => Html

The file drop's toView: draw receives its bundles with mixins applied.