UNPKG

es-grid-template

Version:

es-grid-template

318 lines (298 loc) 11.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.convertToTanStackColumns = convertToTanStackColumns; exports.toggleRowSelection = exports.renderValueCell = void 0; var _react = _interopRequireWildcard(require("react")); var _ControlCheckbox = _interopRequireDefault(require("../components/ControlCheckbox")); var _utils = require("./utils"); var _reactNumericComponent = require("react-numeric-component"); var _dayjs = _interopRequireDefault(require("dayjs")); var _moment = _interopRequireDefault(require("moment")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const renderValueCell = (column, value, record, rowIndex, colIndex, format, editAble) => { switch (column?.type) { case 'number': const colFormat = typeof column.format === 'function' ? column.format(record) : column.format; const cellFormat = (0, _utils.getFormat)(colFormat, format); const thousandSeparator = cellFormat?.thousandSeparator; const decimalSeparator = cellFormat?.decimalSeparator; const dec = cellFormat?.decimalScale; // const contentNumber = !isEmpty(value) ? ((dec || dec === 0) ? parseFloat(Number(value).toFixed(dec)).toString() : value.toString()) : '0' const tmpval = typeof value === 'string' ? Number(value) : value; const numericFormatProps = { thousandSeparator: (0, _utils.checkThousandSeparator)(thousandSeparator, decimalSeparator), decimalSeparator: (0, _utils.checkDecimalSeparator)(thousandSeparator, decimalSeparator), allowNegative: cellFormat?.allowNegative ?? true, prefix: cellFormat?.prefix, suffix: cellFormat?.suffix, decimalScale: dec, fixedDecimalScale: cellFormat?.fixedDecimalScale ?? false }; // if ( typeof value === "string") { // const ttt = removeNumericFormat(value, undefined, numericFormatProps ) // // } const contentNumber = !(0, _utils.isEmpty)(value) ? dec || dec === 0 ? parseFloat(tmpval.toFixed(dec)).toString() : tmpval.toString() : '0'; // const contentNumber = !isEmpty(value) ? ((dec || dec === 0) ? tmpval.toString() : tmpval.toString()) : '0' return !(0, _utils.isEmpty)(contentNumber) ? (0, _reactNumericComponent.numericFormatter)(contentNumber, numericFormatProps) : ''; case 'date': return value ? (0, _dayjs.default)(value).format(format?.dateFormat ?? 'DD/MM/YYYY') : ''; case 'time': return value ? value : ''; case 'year': const year = value ? (0, _moment.default)(value).format('yyyy') : ''; return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, year); case 'datetime': return value ? (0, _moment.default)(value).format(format?.datetimeFormat ?? 'DD/MM/YYYY HH:mm') : ''; case 'boolean': return value ? 'true' : 'false'; case 'color': return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: 'w-100 h-100', style: { backgroundColor: (0, _utils.isColor)(value) ? value : '#fff', border: '1px solid #f0f0f0', height: '100%', minHeight: 20 } })); case 'checkbox': return /*#__PURE__*/_react.default.createElement(_ControlCheckbox.default, { column: column, record: record, rowIndex: rowIndex, colIndex: colIndex, checked: !!value, checkValue: value, editAble: editAble }); case 'file': const nameFile = typeof value === 'object' && !Array.isArray(value) ? value.name : Array.isArray(value) ? value.map(it => typeof it === 'object' ? it.name : it).filter(Boolean).join(", ") : ''; return value ? nameFile : ''; default: if (Array.isArray(value)) { return value.join(', '); } return value; } }; exports.renderValueCell = renderValueCell; function convertToTanStackColumns({ t, columns, // expanded, // setExpanded, // expandable, format, editAble }) { // const expandIconColumnIndex = expandable?.expandIconColumnIndex ?? 0 return (0, _utils.sortByType)(columns).map(col => { const { headerText, headerTemplate, field, width, allowResizing, minWidth, template, allowSortering, allowFiltering } = col; const { children, ...restProps } = col; const newCol = { header: () => { if (headerTemplate) { if (typeof headerTemplate === 'function') { return headerTemplate(col); } else { return headerTemplate; } } else { return t ? t(headerText) : headerText; // return field } }, cell: props => { const { getValue, cell } = props; const cellValue = props.renderValue() ?? null; const record = cell.row.original; const colIndex = cell.column.getIndex(); const rowIndex = cell.row.index; if (template) { if (typeof template === 'function') { return template({ field: field ?? '', index: cell.row.index, rowData: cell.row.original, value: getValue() }); } else { return template; } } else { return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, renderValueCell(col, cellValue, record, rowIndex, colIndex, format, editAble)); } }, enableResizing: allowResizing !== false, // enableHiding: false, // enableResizing: true, id: field, size: width, accessorKey: field, sortDescFirst: false, minSize: minWidth, // maxSize: maxWidth, enableSorting: allowSortering !== false, // enableSorting: false, // enableColumnFilter: allowFiltering !== false && !nonActionColumn.includes(field) enableColumnFilter: allowFiltering !== false }; if (children) { newCol.size = undefined; // @ts-ignore newCol.columns = convertToTanStackColumns({ columns: children, editAble, format, t }); } const meta = { ...restProps }; if (Object.keys(meta).length > 0) { newCol.meta = meta; } return newCol; }); } const toggleRowSelection = props => { const { selectionSettings, cell, isSelectionChange, e, setIsSelectionChange } = props; const { row } = cell; const { rowsData } = isSelectionChange ?? {}; const prevSelected = rowsData && rowsData.length > 0 ? [...rowsData] : []; if (selectionSettings?.checkStrictly || selectionSettings?.type === 'single') { row.getToggleSelectedHandler()(e); if (row.getIsSelected()) { // đã chọn // xóa row ra list selected const newRowsSelected = prevSelected.filter(it => it.id !== row.id); setIsSelectionChange({ isChange: true, type: 'rowSelected', rowData: row.original, rowsData: newRowsSelected ?? [] }); } else { // chưa selected const checkedRows = [...prevSelected, row]; setIsSelectionChange({ isChange: true, type: 'rowSelected', rowData: row.original, rowsData: selectionSettings?.type === 'single' ? [row] : checkedRows }); } return; } if (row.subRows && row.subRows.length > 0) { // click vào row cha const allChild = (0, _utils.getAllChildren)(row); (0, _utils.toggleRowAndChildren)(row, !row.getIsSelected()); if (row.getIsSelected()) { // đã chọn // const aaa = isSelectionChange?.rowsData.filter((it) => it.id !== row.id) const newRowsSelected = (0, _utils.excludeItems)(prevSelected, [...allChild, row]); setIsSelectionChange({ isChange: true, type: 'rowSelected', rowData: row.original, rowsData: newRowsSelected ?? [] }); } else { // chưa selected let checkedRows = []; if (row.subRows && row.subRows.length > 0) { checkedRows = [...prevSelected, row, ...allChild]; } else { checkedRows = [...prevSelected, row]; } setIsSelectionChange({ isChange: true, type: 'rowSelected', rowData: row.original, rowsData: checkedRows }); } } else { // click vào row không có cha row.getToggleSelectedHandler()(e); if (row.getIsSelected()) { // đã chọn const rowParent = row.getParentRow(); // const rowParent1 = row.getParentRows() let newCheckedRows = []; if (rowParent) {} if (rowParent && (0, _utils.countUnselectedChildren)(row) === 1) { newCheckedRows = prevSelected.filter(it => it.id !== row.id && it.id !== rowParent.id); } else { // xóa row ra list selected // const newRowsSelected = prevSelected.filter((it) => it.id !== row.id) newCheckedRows = prevSelected.filter(it => it.id !== row.id); } setIsSelectionChange({ isChange: true, type: 'rowSelected', rowData: row.original, rowsData: newCheckedRows ?? [] }); } else { // chưa selected let checkedRows = []; const rowParent = row.getParentRow(); // nếu có cha và cha chưa được chọn và tất cả con đã chọn => thêm row cha vào if (rowParent && !rowParent.getIsSelected() && (0, _utils.countUnselectedChildren)(row) === 1) { rowParent.toggleSelected(!rowParent.getIsSelected()); checkedRows = [...prevSelected, row, rowParent]; } else { // chỉ thêm vào row hiện tại const isInclude = prevSelected.findIndex(it => it.id === cell.row.id); if (isInclude > -1) { // cập nhật data row hiện tại prevSelected[isInclude] = row; checkedRows = [...prevSelected]; } else { checkedRows = [...prevSelected, row]; } } setIsSelectionChange({ isChange: true, type: 'rowSelected', rowData: row.original, rowsData: checkedRows }); } } }; exports.toggleRowSelection = toggleRowSelection;