{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/table-page/src/table.ts"],"sourcesContent":["import { computed, defineComponent, h, ref } from 'vue'\nimport { ElRadio, ElTable, ElTableColumn } from 'element-plus'\nimport type { CI, CRI, ColumnProps } from './types'\nimport type { PropType } from 'vue'\n\nexport default defineComponent({\n  name: 'ElTable',\n  props: {\n    columns: {\n      type: Array as PropType<ColumnProps[]>,\n      default: () => [],\n    },\n  },\n  setup(props, { attrs, slots, expose }) {\n    const rowKey: any = attrs?.['row-key'] ?? attrs?.['rowKey']\n    const onRadioSelectionChange: any = attrs?.onRadioSelectionChange\n    const tableRef = ref(null)\n    const currentSelectRow = ref(null)\n\n    const hasRadioType = computed(() =>\n      props.columns.some((column) => column.type === 'radio')\n    )\n    const radioColumn = computed(() =>\n      props.columns.find((column) => column.type === 'radio')\n    )\n    if (hasRadioType.value && !rowKey) {\n      console.error('[ElTablePage]: row-key is required')\n    }\n\n    const data = computed(() => {\n      const data = (attrs as any)?.data ?? []\n      const reserveRadioSelection = radioColumn.value?.reserveRadioSelection\n      const currentRow = currentSelectRow.value\n\n      return hasRadioType.value\n        ? data.map((row: Record<string, any>) => {\n            if (\n              !Object.prototype.hasOwnProperty.call(row, '__radioModelValue__')\n            ) {\n              row.__radioModelValue__ = reserveRadioSelection\n                ? currentRow\n                  ? currentRow?.[rowKey] === row[rowKey]\n                    ? true\n                    : false\n                  : false\n                : false\n            }\n            return row\n          })\n        : data\n    })\n\n    const clearRadioSelection = () => {\n      data.value.forEach((item: any) => {\n        item.__radioModelValue__ = false\n      })\n      currentSelectRow.value = null\n    }\n\n    const getRadioSelectionRow = () => currentSelectRow.value\n\n    const toggleRadioRowSelection = (rowData: any, selected: boolean) => {\n      const index = data.value.findIndex(\n        (_: any) => _[rowKey] === rowData[rowKey]\n      )\n      if (index !== -1) {\n        data.value[index]['__radioModelValue__'] = selected\n        if (selected) {\n          currentSelectRow.value = data.value[index]\n        }\n      }\n    }\n\n    expose({\n      getTable: () => {\n        const table = (tableRef as any).value ?? {}\n        table.clearRadioSelection = clearRadioSelection\n        table.getRadioSelectionRow = getRadioSelectionRow\n        table.toggleRadioRowSelection = toggleRadioRowSelection\n        return table\n      },\n    })\n\n    return () => {\n      const { columns } = props\n\n      const children = columns.map((column: ColumnProps) => {\n        const formatSlots: any = {\n          header: (data: CI<any>) => {\n            return column?.headerCellRenderer?.(data) ?? data.column.label\n          },\n        }\n        if (!column.formatter) {\n          formatSlots.default = (data: CRI<any>) => {\n            return (\n              column?.cellRenderer?.(data) ??\n              data?.row?.[data?.column?.property]\n            )\n          }\n        }\n        if (column.type === 'radio') {\n          column.width = column.width ?? 50\n          column.cellRenderer = ({ row, $index }) => {\n            return h(ElRadio, {\n              disabled: column.selectable\n                ? !column.selectable.call(null, row, $index)\n                : false,\n              value: true,\n              modelValue: row.__radioModelValue__,\n              onChange() {\n                clearRadioSelection()\n                row.__radioModelValue__ = true\n                currentSelectRow.value = row\n                onRadioSelectionChange && onRadioSelectionChange(row)\n              },\n            })\n          }\n        }\n        return h(ElTableColumn, { ...column }, formatSlots)\n      })\n      return h(\n        ElTable,\n        { ...attrs, ref: tableRef, data: data.value },\n        {\n          ...slots,\n          default: () => children,\n        }\n      )\n    }\n  },\n})\n"],"names":["_a","data"],"mappings":"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"}