¡Hemos usado Tabulator durante algunos años y es un gran producto! Ahora pasamos a usar Angular v13 y cambiamos al nuevo Tabulator 5.x
Previamente, en la definición de la columna de la tabla, hemos creado un menú contextual personalizado usando lo siguiente:
contextMenu: this.TableRowClicked.bind(this),Con la definición de la función luciendo así:
public TableRowClicked(data: any, e: Event): void { Tenga en cuenta que solo usamos el menú contextual del contextMenu para activar la creación de nuestro propio sistema de menú contextual, luciendo, por ejemplo, así:
Con el nuevo Tabulator 5.x, ¿esto parece haber cambiado? ¿Parece que debemos devolver una serie de elementos del menú ahora? Es posible que no haya entendido bien, pero parece que ya no es posible usar esto como un desencadenante para llamar a la creación de su propio menú contextual. ¿O estoy malinterpretando los tipos de entrada y retorno de la nueva función de menú contextual? Vi una nota sobre devolver una matriz vacía ([]) si no desea crear elementos de menú devueltos personalizados, sin embargo, el error pegado a continuación aún permanece. Ahora tengo la función definida así para el Tabulador 5, que requiere que devuelva una matriz:
public TableRowClicked(cell: Tabulator.MenuObject<Tabulator.CellComponent>, e: UIEvent): (Tabulator.MenuSeparator | Tabulator.MenuObject<Tabulator.CellComponent>)[] { El contextMenu en la definición de columna del tabulador da el siguiente error:
Type '(cell: MenuObject<CellComponent>, e: UIEvent) => (MenuObject<CellComponent> | MenuSeparator)[]' is missing the following properties from type '(MenuObject<CellComponent> | MenuSeparator)[]': pop, push, concat, join, and 27 more.ts(2740) index.d.ts(1412, 9): The expected type comes from property `contextMenu` which is declared here on type `ColumnDefinition`¿Puede alguien arrojar algo de luz sobre la nueva forma de hacer esto en Tabulator 5 o lo que me estoy perdiendo y haciendo mal?
Cualquier ayuda sería muy apreciada, ya que actualmente esto impide el cambio al Tabulador 5 desde el Tabulador 4.9.3.
Gracias,
Miguel
Al observar el error, parece que las escrituras de TypeScript que está utilizando pueden estar desactualizadas y no esperar la función allí.
Los Typings no son parte de la biblioteca Tabulator, la biblioteca en sí funciona como se esperaba.
Lo que diría es que si está iniciando su propio menú contextual, entonces no hay necesidad de usar la opción contextMenu , que está diseñada solo para iniciar el sistema incorporado.
Le recomendaría que use el evento cellContext para buscar un clic derecho en la celda y luego active su menú personalizado.
Esto se puede hacer por columna en la definición de columna:
{title:"Name", field:"name", cellContext:function(e, cell){ //e - the click event object //cell - cell component }, }o suscribiéndote al evento en toda la mesa:
table.on("cellContext", function(e, cell){ //e - the click event object //cell - cell component });