ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 16.7 kB
Source Map (JSON)
{"version":3,"file":"useFixedTableCols.cjs","sources":["../../../../../../packages/element/table/src/hooks/useFixedTableCols.ts"],"sourcesContent":["import { isArray, isObject } from '@ideaz/utils'\nimport type { CheckboxValueType } from 'element-plus'\nimport type { ToolBarProps } from '../props'\nimport { getCheckData, getIsReturnToolBar } from '../utils'\nimport type { TableCol } from '../../../types'\n\n// function getArrayDifference(array1: TableCol[], array2: string[]) {\n// const uidSet = new Set(array2)\n\n// const difference = array1.filter(obj => !uidSet.has(obj.__uid))\n\n// return difference.map(obj => obj.__uid)\n// }\n\n// function sortByUidOrder(array1: TableCol[], array2: TableCol[]) {\n// const uidMap: any = {}\n\n// array1.forEach((obj, index) => {\n// uidMap[obj.__uid] = index\n// })\n\n// const sortedArray = array2.sort((a, b) => {\n// const indexA = uidMap[a.__uid]\n// const indexB = uidMap[b.__uid]\n// return indexA - indexB\n// })\n\n// return sortedArray\n// }\n\nfunction insertObjectByFieldValue(array1: TableCol[], objToInsert: TableCol, array2: TableCol[], fieldName = '__uid') {\n const fieldValue = objToInsert[fieldName]\n const index = array1.findIndex(obj => obj[fieldName] === fieldValue)\n\n if (index !== -1)\n array2.splice(index, 0, objToInsert)\n\n return array2\n}\n\nfunction removeObjectsByFieldValue(array: TableCol[], fieldValue: any, fieldName = '__uid') {\n return array.filter(obj => obj[fieldName] !== fieldValue)\n}\n\nfunction removeItemsByValue(array: string[], value: any) {\n return array.filter(item => item !== value)\n}\n\nexport function useFixedTableCols(props: ToolBarProps, emit: any, centerCheckedTableCols: Ref<string[]>) {\n const leftFixedTableCols = ref<TableCol[]>(props.originFormatTableCols.filter((tableCol: TableCol) => tableCol.fixed === 'left'))\n const rightFixedTableCols = ref<TableCol[]>(props.originFormatTableCols.filter((tableCol: TableCol) => tableCol.fixed === 'right'))\n const oldLeftFixedTableCols = ref<TableCol[]>(props.originFormatTableCols.filter((tableCol: TableCol) => tableCol.fixed === 'left'))\n const oldRightFixedTableCols = ref<TableCol[]>(props.originFormatTableCols.filter((tableCol: TableCol) => tableCol.fixed === 'right'))\n const leftCheckedTableColsUids = ref<string[]>(leftFixedTableCols.value.map(item => item.__uid!))\n const rightCheckedTableColsUids = ref<string[]>(rightFixedTableCols.value.map(item => item.__uid!))\n\n const originSortTableCols = computed(() => {\n return props.originFormatTableCols.filter((item: TableCol) => {\n return getIsReturnToolBar(item, props.toolBar)\n })\n })\n\n const handleTableColFixedFromCenter = (tableCol: TableCol, direction: 'left' | 'right') => {\n let middleTableList: TableCol[] = []\n let sortTableList: TableCol[] = []\n const item = { ...tableCol, fixed: direction }\n\n middleTableList = removeObjectsByFieldValue(props.middleTableCols, tableCol.__uid)\n sortTableList = removeObjectsByFieldValue(props.sortTableCols, tableCol.__uid)\n\n // if checked, when push to left or right, checked too\n if (centerCheckedTableCols.value.includes(tableCol.__uid!)) {\n if (direction === 'left')\n leftCheckedTableColsUids.value.push(tableCol.__uid!)\n\n if (direction === 'right')\n rightCheckedTableColsUids.value.push(tableCol.__uid!)\n\n // if checked, delete checked uids at the same time\n const centerCheckedIndex = centerCheckedTableCols.value.findIndex((uid: string) => tableCol.__uid === uid)\n if (centerCheckedIndex > -1)\n centerCheckedTableCols.value.splice(centerCheckedIndex, 1)\n }\n\n if (direction === 'left')\n leftFixedTableCols.value.push(item)\n\n if (direction === 'right')\n rightFixedTableCols.value.push(item)\n\n emit('columns-change', middleTableList.filter(item => !item.fixed).concat(getCheckedFixedCols(direction)))\n emit('table-cols-change', sortTableList)\n }\n\n const handleFixedTableColFromSide = (tableCol: TableCol, direction: 'left' | 'right') => {\n const middleTableList = [...props.middleTableCols]\n const item = { ...tableCol, fixed: direction }\n\n if (direction === 'left') {\n leftFixedTableCols.value.push(item)\n if (rightCheckedTableColsUids.value.includes(tableCol.__uid!))\n leftCheckedTableColsUids.value.push(tableCol.__uid!)\n\n rightFixedTableCols.value = removeObjectsByFieldValue(rightFixedTableCols.value, tableCol.__uid)\n rightCheckedTableColsUids.value = removeItemsByValue(rightCheckedTableColsUids.value, tableCol.__uid)\n }\n else {\n rightFixedTableCols.value.push(item)\n if (leftCheckedTableColsUids.value.includes(tableCol.__uid!))\n rightCheckedTableColsUids.value.push(tableCol.__uid!)\n\n leftFixedTableCols.value = removeObjectsByFieldValue(leftFixedTableCols.value, tableCol.__uid)\n leftCheckedTableColsUids.value = removeItemsByValue(leftCheckedTableColsUids.value, tableCol.__uid)\n }\n\n removeObjectsByFieldValue(middleTableList, tableCol.__uid)\n emit('columns-change', middleTableList.filter(item => !item.fixed).concat(getCheckedFixedCols(direction)))\n }\n\n const handleUnfixedTableCol = (tableCol: TableCol) => {\n let middleTableList: TableCol[] = []\n const sortTableList = [...props.sortTableCols]\n const item = { ...tableCol, fixed: false }\n\n // if fixed column checked, center column checked too\n if (leftCheckedTableColsUids.value.includes(tableCol.__uid!) || rightCheckedTableColsUids.value.includes(tableCol.__uid!))\n centerCheckedTableCols.value.push(tableCol.__uid!)\n\n leftCheckedTableColsUids.value = removeItemsByValue(leftCheckedTableColsUids.value, tableCol.__uid)\n rightCheckedTableColsUids.value = removeItemsByValue(rightCheckedTableColsUids.value, tableCol.__uid)\n\n leftFixedTableCols.value = removeObjectsByFieldValue(leftFixedTableCols.value, tableCol.__uid)\n rightFixedTableCols.value = removeObjectsByFieldValue(rightFixedTableCols.value, tableCol.__uid)\n middleTableList = removeObjectsByFieldValue(props.middleTableCols, tableCol.__uid)\n\n insertObjectByFieldValue(getOriginFormatTableColsWithoutFixed(item), item, middleTableList)\n insertObjectByFieldValue(getOriginSortTableColsWithoutFixed(tableCol), item, sortTableList)\n\n emit('columns-change', middleTableList.filter(item => !item.fixed).concat(getCheckedFixedCols(false)))\n emit('table-cols-change', sortTableList)\n }\n\n const handleResetFixedTableCols = () => {\n const tableCols = props.originFormatTableCols.filter((item) => {\n if (isObject(props.toolBar)) {\n return isArray(props.toolBar.exclude)\n ? !props.toolBar.exclude.includes(item.label)\n : true\n }\n return true\n })\n\n leftFixedTableCols.value = props.originFormatTableCols.filter((tableCol: TableCol) => tableCol.fixed === 'left')\n rightFixedTableCols.value = props.originFormatTableCols.filter((tableCol: TableCol) => tableCol.fixed === 'right')\n leftCheckedTableColsUids.value = tableCols.filter((tableCol: TableCol) => tableCol.fixed === 'left').map(item => item.__uid!)\n rightCheckedTableColsUids.value = tableCols.filter((tableCol: TableCol) => tableCol.fixed === 'right').map(item => item.__uid!)\n }\n\n const handleFixedCheckedTableColsChange = (direction: 'left' | 'right', checkedData: CheckboxValueType[]) => {\n const tableCols = getCheckedFixedCols(direction, checkedData)\n emit('columns-change', props.middleTableCols.filter(item => !item.fixed).concat(tableCols))\n }\n\n const handleSideFixedDragChange = (direction: 'left' | 'right') => {\n if (direction === 'left')\n oldLeftFixedTableCols.value = [...leftFixedTableCols.value]\n\n else\n oldRightFixedTableCols.value = [...rightFixedTableCols.value]\n }\n\n const handleSortTableCols = (dragData: any, direction: 'left' | 'right') => {\n const { oldIndex, newIndex } = dragData\n const sortList = direction === 'left' ? oldLeftFixedTableCols.value : oldRightFixedTableCols.value\n const dragItem = { ...sortList[oldIndex] }\n const oldItem = { ...sortList[newIndex] }\n const dragItemIndex = props.middleTableCols.findIndex((item: TableCol) => item.__uid === dragItem.__uid)\n const oldItemIndex = props.middleTableCols.findIndex((item: TableCol) => item.__uid === oldItem.__uid)\n const middleTableCols = [...props.middleTableCols]\n if (dragItemIndex > -1 && oldItemIndex > -1) {\n middleTableCols.splice(dragItemIndex, 1)\n middleTableCols.splice(oldItemIndex, 0, dragItem)\n emit('columns-change', middleTableCols)\n }\n }\n\n function getCheckedFixedCols(direction: 'left' | 'right' | false, checkedUids?: CheckboxValueType[]) {\n let tableCols: TableCol[] = []\n const checkedData = checkedUids || (direction === 'left' ? leftCheckedTableColsUids.value : rightCheckedTableColsUids.value)\n if (direction === 'left')\n tableCols = tableCols.concat(leftFixedTableCols.value.filter(item => checkedData.includes(item.__uid!)), rightFixedTableCols.value.filter(item => rightCheckedTableColsUids.value.includes(item.__uid!)))\n\n else\n tableCols = tableCols.concat(rightFixedTableCols.value.filter(item => checkedData.includes(item.__uid!)), leftFixedTableCols.value.filter(item => leftCheckedTableColsUids.value.includes(item.__uid!)))\n\n return tableCols\n }\n\n // get origin formatTableCols to reset fixed table column\n function getOriginFormatTableColsWithoutFixed(tableCol: TableCol) {\n const fixedUids = leftCheckedTableColsUids.value.concat(rightCheckedTableColsUids.value).filter(uid => uid !== tableCol.__uid)\n\n return getCheckData(props.toolBar, props.originFormatTableCols).filter(item => !fixedUids.includes(item.__uid!)\n && (centerCheckedTableCols.value.includes(item.__uid!) || leftCheckedTableColsUids.value.includes(item.__uid!) || rightCheckedTableColsUids.value.includes(item.__uid!)))\n }\n\n function getOriginSortTableColsWithoutFixed(tableCol: TableCol) {\n const fixedUids = leftFixedTableCols.value.concat(rightFixedTableCols.value).filter(item => item.__uid !== tableCol.__uid).map(item => item.__uid)\n\n return props.originFormatTableCols.filter(item => !fixedUids.includes(item.__uid))\n }\n\n return {\n handleTableColFixedFromCenter,\n leftFixedTableCols,\n rightFixedTableCols,\n originSortTableCols,\n handleResetFixedTableCols,\n handleSortTableCols,\n leftCheckedTableColsUids,\n rightCheckedTableColsUids,\n handleSideFixedDragChange,\n handleUnfixedTableCol,\n handleFixedTableColFromSide,\n handleFixedCheckedTableColsChange,\n }\n}\n"],"names":["insertObjectByFieldValue","array1","objToInsert","array2","fieldName","fieldValue","index","obj","removeObjectsByFieldValue","array","removeItemsByValue","value","item","useFixedTableCols","props","emit","centerCheckedTableCols","leftFixedTableCols","vue","tableCol","rightFixedTableCols","oldLeftFixedTableCols","oldRightFixedTableCols","leftCheckedTableColsUids","rightCheckedTableColsUids","originSortTableCols","getIsReturnToolBar","handleTableColFixedFromCenter","direction","middleTableList","sortTableList","centerCheckedIndex","uid","item2","getCheckedFixedCols","handleFixedTableColFromSide","handleUnfixedTableCol","getOriginFormatTableColsWithoutFixed","getOriginSortTableColsWithoutFixed","handleResetFixedTableCols","tableCols","is","handleFixedCheckedTableColsChange","checkedData","handleSideFixedDragChange","handleSortTableCols","dragData","oldIndex","newIndex","sortList","dragItem","oldItem","dragItemIndex","oldItemIndex","middleTableCols","checkedUids","fixedUids","getCheckedData"],"mappings":"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"}