Skip to content
fandhe-frontendcore v0.4.3
GitHub

File Upload

fandhe-frontend-pre-styled-ui の file_upload mod が提供するスタイル済み File Upload 部品です。

関連 API: fandhe-frontend-pre-styled-ui API / fandhe-frontend-headless-ui API

Demo

ファイルメタデータ(name/size/mime type)のみを扱い、File オブジェクト自体は headless 層で保持しません。実 File API 接触は wasm-full 側の配線層に隔離されています。

  • report.pdf
    200.0 KB
  • oversized.zip
    50.0 MB
  • locked.txt
    1.0 KB

Features

  • headless-ui の file_upload::root へ委譲し、size variant クラスのみを付与する。
  • FileUploadProps(disabled/readonly/invalid/required)と dragging(data-dragging の DOM ローカル状態)を引数で受け取り、headless 層へそのまま委譲する(イシュー #1609 の headless 側破壊的変更への追随)。
  • item の data-invalid は headless 層が出力しないため(旧 checkbox_group の判断。#1603 で checkbox_group 側は headless 出力へ移行済み)、利用者が item の attrs へ ("data-invalid", "") を直接付与することで border-color を danger 色化できる。
  • item は border と border-color の transition(data-invalid 用)を持つ。item-delete-trigger は hover(@media (hover: hover))を持つが、item が既に opacity 0.5 で dim 済みのため disabled は cursor: not-allowed のみに留め、opacity の三重適用(root × item × item-delete-trigger)を避ける。

Anatomy

root
  label
  dropzone
    trigger
    hidden-input
  item-group
    item
      item-name
      item-size-text
      item-delete-trigger
  clear-trigger

API Reference

Arguments

NameTypeDefaultDescription
sizeSizeSize::Mdサイズ variant。
props&FileUploadProps—disabled/readonly/invalid/required の状態束(headless 層へそのまま委譲)。
draggingboolfalseroot の data-dragging(wasm-full 側が DOM ローカルにトグルする想定)。
attrsVec<(&str, &str)>—root パーツへ合成する追加属性。
childrenVec<Node>—root 配下の子ノード(ドロップゾーン・トリガー等)。

Data Attributes

PartAttributeObserved Values
clear-triggerdata-disabled(値なし)
dropzonedata-disabled(値なし)
dropzonedata-dragging(値なし)
hidden-inputdata-disabled(値なし)
itemdata-disabled(値なし)
itemdata-invalid(値なし)
itemdata-typeaccepted
item-delete-triggerdata-disabled(値なし)
item-delete-triggerdata-typeaccepted
item-groupdata-disabled(値なし)
item-groupdata-typeaccepted
item-namedata-disabled(値なし)
item-namedata-typeaccepted
item-size-textdata-disabled(値なし)
item-size-textdata-typeaccepted
labeldata-disabled(値なし)
rootdata-disabled(値なし)
rootdata-dragging(値なし)
triggerdata-disabled(値なし)

CSS Variables

VariableDefault
--fandhe-file-upload-dropzone-paddingvar(--fandhe-space-6)
--fandhe-file-upload-font-sizevar(--fandhe-font-font-size-sm)