@box/uploads-manager

中文文档
2.5.40发布于 2026/11/06SEE LICENSE IN LICENSETypeScriptESM + CJS零依赖近 30 天下载 3.1万
原始使用文档
文档目录10 节
  1. API Overview
  2. Types
  3. UploadItemStatus
  4. UploadItem
  5. UploadsManagerProps
  6. Usage
  7. Running commands
  8. Available commands
  9. Ownership
  10. Translations

uploads-manager

Displays upload progress for files and folders with a collapsible panel, per-item actions, and bulk operations. The component derives header state (overall progress, status text, counts) from the items array internally.

API Overview

The consuming app passes an items: UploadItem[] array and action callbacks. No data fetching, no external context dependencies (except IntlProvider).

<UploadsManager
    isExpanded={isExpanded}
    onToggle={() => setIsExpanded(prev => !prev)}
    items={items}
    onCancelAll={handleCancelAll}
    onRetryAll={handleRetryAll}
    onItemCancel={handleItemCancel}
    onItemRetry={handleItemRetry}
    onItemRemove={handleItemRemove}
    onItemOpen={handleItemOpen}
    onItemShare={handleItemShare}
/>

Types

UploadItemStatus

type UploadItemStatus = 'pending' | 'uploading' | 'staged' | 'complete' | 'error' | 'canceled';

UploadItem

PropTypeRequiredDescription
idstringYesUnique identifier for this upload
namestringYesDisplay name of the file or folder
extensionstringYesFile extension for the file-type icon
progressnumberYesUpload progress percentage (0–100)
statusUploadItemStatusYesCurrent status
isFolderbooleanNoWhether this item is a folder (default: false)
errorMessagestringNoError message to display when status is 'error'
versionNumberstringNoVersion label for completed uploads (e.g. "V2")
isRetryablebooleanNoWhether retry is available for errored items (default: true)

UploadsManagerProps

PropTypeRequiredDescription
isExpandedbooleanYesWhether the panel is expanded
onToggle() => voidYesToggle expand/collapse
itemsUploadItem[]YesUpload items to display
onCancelAll() => voidNoCancel all pending/in-progress uploads
onRetryAll() => voidNoRetry all errored items (labeled "Retry All")
onItemCancel(itemId: string) => voidNoCancel a single item
onItemRetry(itemId: string) => voidNoRetry a single item (labeled "Retry")
onItemRemove(itemId: string) => voidNoRemove a completed/errored/canceled item
onItemOpen(itemId: string) => voidNoOpen a completed item
onItemShare(itemId: string) => voidNoShare a completed item via link

Usage

import { UploadsManager } from '@box/uploads-manager';
import type { UploadItem } from '@box/uploads-manager';

const items: UploadItem[] = [
    { id: '1', name: 'report.pdf', extension: 'pdf', progress: 100, status: 'complete' },
    { id: '2', name: 'photo.png', extension: 'png', progress: 45, status: 'uploading' },
    {
        id: '3',
        name: 'data.csv',
        extension: 'csv',
        progress: 0,
        status: 'error',
        errorMessage: 'Upload failed',
        isRetryable: true,
    },
];

function App() {
    const [isExpanded, setIsExpanded] = useState(true);

    return (
        <UploadsManager
            isExpanded={isExpanded}
            onToggle={() => setIsExpanded(prev => !prev)}
            items={items}
            onCancelAll={() => {
                /* cancel pending + in-progress uploads */
            }}
            onRetryAll={() => {
                /* retry all errored items */
            }}
            onItemCancel={id => {
                /* cancel single item */
            }}
            onItemRetry={id => {
                /* retry single item */
            }}
            onItemRemove={id => {
                /* remove item from list */
            }}
        />
    );
}

Running commands

Your terminal should stay in location of root directory of repository, which is frontend-mono. That Allows Nx to run action against your project, or multiple project if that is necessary. Do not navigate to packages/group-shared-features/uploads-manager to run commands.

Commands for the project are run using syntax used by Nx:

Syntax: yarn nx <target name> <project name> <option overrides>
                      |              |                |
Example: yarn nx    test         products         --watch

Available commands

All commands used with Nx can be found in project.json file within your package.

  • nx storybook uploads-manager - launches development environment for UI component.
  • nx build-storybook uploads-manager - build static version of storybook with all stories.
  • nx build uploads-manager - build package using shared-feature-builder executor from automation package.
  • nx build uploads-manager --watch - build package with --watch flag enabled, which rebuilds dist content based on changes in src.
  • nx lint uploads-manager - runs linter over package files.
  • nx test uploads-manager - runs storybook tests (visual/interactions) and jest unit tests, producing coverage report at the end.
  • nx test-storybook uploads-manager - runs storybook tests. You need first to start storybook in separate terminal for this to work.
  • nx test-storybook-local-coverage uploads-manager - runs storybook tests, and produces coverage report at the end. Requires running instance of storybook.
  • nx test-storybook-ci uploads-manager - build storybook and run storybook tests with coverage output. Designed for CI usage.
  • nx test-jest uploads-manager - runs jest unit tests, producing code coverage at the end.
  • nx sonar uploads-manager - performs static analysis of code using SonarQube tooling, to detect bugs and code smells. Integrated as one of the steps in CI process.
  • nx chromatic uploads-manager - uploads storybook build for review to box chromatic , and performs visual comparison of the UI changes against baseline.
  • nx prepare uploads-manager - command run during the package publication process orchestrated by Nx Release.

Ownership

Code of the feature belongs to home-web. Responsibilities of owning team include control over code quality, providing guidelines for changes, and alignment with other teams regarding changes. It would be a good practice to consult which team, owning or requesting, will be responsible for implementing changes to code.

Translations

Per-locale i18n/*.js files are generated and committed by the Moji Jenkins pipeline. The shared-feature builder copies them into dist/i18n/ during build. Consuming applications list this package in i18n.config.js under translationDependencies.

版本与发布记录

@box/uploads-manager 共发布 212 个版本,首次发布于 2026/05/14;过去 12 个月发布了 212 个版本。

版本发布日期距今
2.5.40latest2026/11/062 天前
2.5.392026/11/062 天前
2.5.382026/11/052 天前
2.5.372026/11/053 天前
2.5.362026/11/053 天前
2.5.352026/11/044 天前

关于 @box/uploads-manager 的常见问题

如何安装 @box/uploads-manager?

在项目目录运行 npm install @box/uploads-manager,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0)、react-dom(^18.0.0)、react-intl(^6.4.2)、@box/item-icon(^3.6.39)、@box/blueprint-web(^18.10.3)、react-aria-components(1.16.0)、@box/blueprint-web-assets(^5.15.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@box/uploads-manager 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@box/uploads-manager 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@box/uploads-manager 可以商用吗?

@box/uploads-manager 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@box/uploads-manager 的下载量有多少?

根据 npm 官方下载统计,@box/uploads-manager 在 2026/10/09 – 2026/11/07 这 30 天内被下载 31,089 次,日均约 1,036 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@box/uploads-manager 还在维护吗?

最新版本 2.5.40 发布于 2026/11/06(2 天前);至今共发布 212 个版本,其中过去 12 个月发布了 212 个;首次发布于 2026/05/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。