@bsuite/page-builder

中文文档
2.8.4发布于 2026/11/08UNLICENSEDTypeScriptES Module零依赖近 30 天下载 3324

共享 BSet 响应页面构建器网格和布局持久性原始

中文使用文档

@bsuite/页面构建器

共享 BSuite 响应页面构建器网格原始.

输出 :

  • PageGridLayout
  • usePageGridLayout
  • rescaleLayout
  • computeAutoHeightRows
  • GridLayouts, (中文(简体) ), GridLayoutItem, (中文(简体) ), WidgetMeta类型

消费者应用必须依赖于已发布的 npm 软件包,而不是 workspace:* 或者说 file: 链接,因为每个应用程序独立部署.

编辑班纳焦点揭示,扩展控制取景口盖,编辑班纳焦点环 padding 发布为 2.8.4。 。 。 .

测量自重(autoHeight,0.5.0+) (中文(简体) )

通过设置将部件切入内容驱动的高度 autoHeight: true 联 合 国 GridLayoutItem数字 :

const defaultLayouts: GridLayouts = {
  lg: [
    // Fixed card — user resizes it manually, height persists.
    { i: 'summary', x: 0, y: 0, w: 6, h: 8 },
    // Measured card — height tracks rendered content; `h` is only the
    // initial seed used until the first measurement lands.
    { i: 'details', x: 6, y: 0, w: 6, h: 20, autoHeight: true },
  ],
};

行为和保障:

  • A 类 ResizeObserver 在不受约束的计量包装器上读取内容 内在高; computeAutoHeightRows 使用 不变 rowHeight编号 :margin 网格由网格制成,所以环相通 固定点而不是斜向.
  • 自动加高器件 isResizable: false 自动——不要 也可以为它们编织一个手动调整大小的路径.
  • 测量行是 生成, 仅包含记忆状态: 合并到已保存的部分 每个查看器在渲染时的布局,以及 从来没有坚持过A级 只读查看器切换卡片中的标签产生零偏好 写作。 用户驱动 x编号 :y编号 :w (和 h 非自动八项) 持久性不变.
  • 更新为 raAF- bridged (所有在框架内安放的卡片都作为一个国家适用) 更新)并压制了中拖/中缩放,再在手势端被冲出.

添加时 autoHeight 到一个已有的页面布局,将该页面的 layoutVersion 因此 stale 坚持的布局(没有旗帜)被重置.

编辑-模式铬 (2.7.1-next.0+)

PAGE_GRID_EDITING_EVENT 报告的变动情况 2.7.1-next.1。 。 。 . 内容 { pageKey, editing } 有效载荷和事件名称不变。 匹配 画布 DOM 在听众运行前更新, 包括保存和退出使用时 a 反应过渡。 初始升起、状态不变和已放弃的过渡 不发出通知。 消费者必须匹配页面密钥并保存 在同步其头控件时注重幸存输入.

从 2.7.1-next.5,一个标题保存退出调度( E) PAGE_GRID_SAVE_EVENT 与 { pageKey }。帆布会等待所有的首选适配器,并保持它的 在失败时可见控制和出错,并释放已承诺的编辑 通知成功与否。 信头在清除前等待通知 编辑模式。 现有的开放/关闭事件仍可供路线导航.

选定深度显示单独休息、光互动和暗互动 阴影变量。 光相互作用添加中性高; 暗相互作用 在保留所选深度的同时,添加角色约束的发光. 明确为零 保持平稳。 消费者必须读取所有三个变量; 拥有铬的网格项目 已经做了。 默认所画的网格卡现在使用中性高地 2, 使用 交互反馈,匹配D2C卡恢复.

从 2.7.1-next.6,应用程序卡导入 useCardPadding 财务报告和审定财务报表 CardPaddingBoundary 从 @bsuite/page-builder/card-padding。阅读 在渲染出卡片前设置,将定义值应用到所绘表面, 并用没有垫子的分界线包裹其子孙。 那么内卡 保持它们的相距;一个被嵌入的网格会建立它自己的独立内置. 电网不会给孩子造成困扰 当它自己涂上铬时 此替换 消费者服务 @scope 规则,不包括支持的 Safari/Firefox 基线。 子路径将一个独立的卡导入从网格代码中分离出来.

当画布编辑器打开时, 每个网格项都会产生入流条 (单位:千美元)[data-slot="grid-item-editor-chrome"]在卡片内容上方:部件 名称和一个隐藏控件。 条子是 没有 绝对位置在 牌头。 AutoHeight用内容测量,使电网增长; 离开编辑模式将其删除并恢复仅包含内容的测量. 在消费者中不要重塑这种形式——这是共同合同.

图层:上行/下行. 在(上)或 在(下)其最近的可移动相邻按网格 DRAWS 顺序后:上至 底部,然后从左到右,在反应-网格-放出压缩了布局后。 这个 已保存的更改 x编号 :y 在作者单位中,没有其它:大小、旗帜、隐藏 牌,被锁的牌和不需要移动的每张牌都保存保存 价值,以及 _grid_base_cols 别动 图层面板、 移动按钮和 dOM / 标签顺序都遵循已绘制的顺序 。 锁定、删除、添加和压缩 在同一作者布局上的布局 。 Contract 使用反应- 网格放出 压缩机和锁上卡片的位置.

限制,说明而不是隐藏:

  • 锁定的卡片( E)static 或者说 isDraggable: false)从不动和走步 过它. isResizable: false 一个人不是锁.
  • 隐藏或没有内容的卡既不是合伙人也不是障碍.
  • 其他牌只有在交换时才会移动;它们被推出 下来,永远不要调整大小。 如果没有重叠或锁上卡片的交换方式, 移动被拒绝, 什么都没有写, 和残疾按钮说明原因.
  • 单列电话堆栈( U)xxs,在 480px 下显示容器 相同的顺序:在测量高后,从所绘制的顺序重新排列出来, 仅用于显示。 用户的电话布局 defaultLayouts 实值 在作者默认对象生效时保持给定。 版本门 第一次访问时可能持续默认值;在重新装入之后读取 计数为存储布局。 一旦读取存储的布局,其 lg 替换它,钩子 滴数 xxs 在读取时,电话堆栈被衍生出来,然后再次重装。 这个 公开 buildResponsiveLayouts 推论不变.
  • 重新排序 DOM 中的现有网格项目( 保留输入状态); 内嵌 iframe 在重新装入的卡片中更改位置, 就像它那样 上一个移动.

标签带有 min-w-0 truncate (单位:千美元) title 与全名. 这是 在窄卡上装入,而不是装饰:没有它标签的自动 最小大小是它的分量,一个长而未断的部件名称会推动 ml-auto 隐藏卡盒外的按钮。 双向测量 scripts/editor-chrome-geometry.mjs,它复制 缺陷与两者 运行时取消课程.

版本与发布记录

@bsuite/page-builder 共发布 68 个版本,首次发布于 2026/04/27;过去 12 个月发布了 68 个版本。

版本发布日期距今
2.8.4latest2026/11/08今天
2.8.4-next.4next2026/11/08今天
2.8.4-next.32026/11/08今天
2.8.4-next.22026/11/08今天
2.8.4-next.12026/11/08今天
2.8.4-next.02026/11/08今天

关于 @bsuite/page-builder 的常见问题

@bsuite/page-builder 是什么?

共享 BSet 响应页面构建器网格和布局持久性原始

如何安装 @bsuite/page-builder?

在项目目录运行 npm install @bsuite/page-builder,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18 <21)、react-dom(>=18 <21)、lucide-react(>=0.400.0)、react-resizable(^3 || ^4)、react-grid-layout(^2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bsuite/page-builder 支持 TypeScript 吗?

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

@bsuite/page-builder 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@bsuite/page-builder 可以商用吗?

@bsuite/page-builder 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@bsuite/page-builder 的下载量有多少?

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

@bsuite/page-builder 还在维护吗?

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