<!--
 * 表单 表格 
  -->
<script lang="ts">
export default {
  name: 'FORM_TEST',
};
</script>
<script setup lang="ts">
import { ref, reactive } from 'vue';
import { AgGridVue } from 'ag-grid-vue3';
import { cloneDeep } from 'src/common/utils';
import AG_GRID_LOCALE from 'src/config/ag-grid-locale';

import { defaultColDef, testData } from './config';

import FormDialog from './element/FormDialog.vue';

const formDialogRef = ref<any>(null);

const gridApi = ref<any>(null);
const gridColumnApi = ref<any>(null);

const columnDefs = reactive([
  { field: 'name', headerName: '姓名' },
  { field: 'age', headerName: '年龄' },
]);

const state = reactive({
  rowData: [] as any,
});

function onGridReady(params: any) {
  gridApi.value = params.api;
  gridColumnApi.value = params.columnApi;
  getData();
}

function getData() {
  state.rowData = cloneDeep(testData);
}

function clickAdd() {
  formDialogRef.value.openDialog();
}

function viewData() {
  console.log('查看', state.rowData);
}
</script>
<template>
  <div class="box">
    <div class="actions">
      <q-btn unelevated color="primary" label="添加" @click="clickAdd" />
      <q-btn unelevated color="primary" label="查看" @click="viewData" />
    </div>
    <div class="ag-table">
      <ag-grid-vue
        style="height: 550px"
        class="ag-theme-alpine"
        :animateRows="true"
        :localeText="AG_GRID_LOCALE"
        :suppressContextMenu="true"
        :suppressCellFocus="true"
        :defaultColDef="defaultColDef"
        :columnDefs="columnDefs"
        :rowData="state.rowData"
        @grid-ready="onGridReady"
      >
      </ag-grid-vue>
    </div>
    <form-dialog ref="formDialogRef" />
  </div>
</template>

<style lang="scss" scoped>
.actions {
  padding: 10px;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  column-gap: 10px;
}
.ag-table {
  padding: 0 10px 10px 10px;
}
</style>