import type { TableColumn } from './datatable'; import { Prop, toNative } from 'vue-facing-decorator'; import PowerduckState from '../../app/powerduck-state'; import TsxComponent, { Component } from '../../app/vuetsx'; import Button from '../button/button'; import { ButtonLayout } from '../button/button-layout'; import CheckBox from '../input/checkbox'; import Modal from '../modal/modal'; import ModalBody from '../modal/modal-body'; import ModalFooter from '../modal/modal-footer'; interface ColVisModalArgs { columns: TableColumn[]; changed: (columns: TableColumn[]) => void; } interface TableColumnColVis extends TableColumn { _enforceVisible?: boolean } @Component class ColVisModalComponent extends TsxComponent implements ColVisModalArgs { @Prop() columns!: TableColumn[]; @Prop() changed: (columns: TableColumn[]) => void; show() { (this.$refs.colVisDialog as typeof Modal.prototype).show(); } handleColumnChanged(col: TableColumnColVis, visible: boolean): void { col.visible = visible; if (col.visible == true) { col._enforceVisible = true; } else { if (col._enforceVisible != null) { delete col._enforceVisible; } } this.changed(this.columns); } render(h) { return ( {this.columns && this.columns.map(col => (
this.handleColumnChanged(col, e)} />
))}