reactjs - 制表符 - 自定义单元格编辑器未完全打开
问题描述
要求是对基于制表符的表格中的某些单元格进行“内联编辑”。该单元格需要自定义编辑器,因为输入是自定义组件(已在 Tabulator 之外以另一种形式使用)。
我们的环境是 React + Tabulator (v4.7) + BlueprintJS 作为组件库。
问题是该组件不会在 Tabulator 中作为自定义编辑器完全打开,而在 Tabulator 之外以常规形式正常工作。
为什么组件不会完全打开?
用作此单元格的“编辑器”的自定义组件使用蓝图 (BP) 的“弹出框”,因此它具有弹出框目标和内容。这是它在表单编辑中的样子:
问题是,单击时,弹出框目标正在呈现,但弹出框内容未呈现,因此自定义“下拉”输入组件永远不会出现:
相关代码部分
制表符列定义:
{
title: "Some Col Title",
field: "someField",
formatter: someFieldFormatter,
editor: "someFieldEditor" as Tabulator.Editor,
editorParams: (cell) => {
return { cell, zones: zonesDataTree };
},
},
定义自定义单元格编辑器:
Tabulator.prototype.extendModule("edit", "editors", {
someFieldEditor: (
cell: CellComponent,
onRendered: Function,
success: Function,
cancel: Function,
editorParams: SomeFieldCellEditorParams
): Element => {
const elem = document.createElement("div");
// SomeFieldCellEditor is a React component that wraps around the same component used in
// the "regular form" scenario mentioned in the screenshot
const someFieldCellEditorComponent: any = React.createElement(SomeFieldCellEditor, {
theData: editorParams.data,
});
ReactDOM.render(someFieldCellEditorComponent, elem);
return elem;
},
});
解决方案
发生这种情况是因为元素包含在单元格内部。
为了防止表格布局损坏,制表单元格overflow:hidden
在其 CSS 上进行了定义。
大多数下拉库都有一个选项,可让您设置应在 DOM 中附加列表的位置。您可以使用此药水将列表附加到body
应该解决问题的标签上。
附带说明一下,您是否知道 Tabulator 带有内置的选择和自动完成编辑器
推荐阅读
- c++ - OSG+MFC 示例黑窗
- c++ - c++编译的makefile没有运行
- angular - Angular 11 - 可重用组件不起作用
- pdf - 文本框中包含不可见文本的 PDF
- linux - 对字段中的 $ 值(以逗号作为千位分隔符的美国格式数字)进行排序
- node.js - socket.io 中 io.on 和 socket.on 的区别
- c++ - 既然我们在 C++20 中有 operator<=>,还需要 operator== 吗?
- android - 从查询中组装 pojo 时,Room 分配了错误的值
- javascript - 文本太长时 HTML 横幅消失
- amazon-web-services - 运行 Spring Boot 应用程序的最小资源