es-grid-template 0.0.8 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -19
- package/es/{CheckboxFilter.js → grid-component/CheckboxFilter.js} +0 -1
- package/es/{ColumnsChoose.js → grid-component/ColumnsChoose.js} +1 -1
- package/es/grid-component/EditableCell.d.ts +19 -0
- package/es/grid-component/EditableCell.js +842 -0
- package/es/{FilterSearch.js → grid-component/FilterSearch.js} +1 -1
- package/es/grid-component/GridStyle.d.ts +4 -0
- package/es/grid-component/GridStyle.js +5 -0
- package/es/{InternalTable.d.ts → grid-component/InternalTable.d.ts} +1 -2
- package/es/grid-component/InternalTable.js +283 -0
- package/es/{LoadingSpinner.js → grid-component/LoadingSpinner.js} +1 -1
- package/es/grid-component/Message/Message.d.ts +2 -0
- package/es/grid-component/Message/Message.js +16 -0
- package/es/grid-component/Message/index.d.ts +1 -0
- package/es/grid-component/Message/index.js +1 -0
- package/{lib → es/grid-component}/TableGrid.d.ts +2 -2
- package/es/grid-component/TableGrid.js +375 -0
- package/es/grid-component/async-table-select/index.d.ts +9 -0
- package/es/grid-component/async-table-select/index.js +37 -0
- package/{lib → es/grid-component}/hooks/constant.d.ts +14 -0
- package/es/{hooks → grid-component/hooks}/constant.js +16 -1
- package/es/grid-component/hooks/useColumns/index.d.ts +6 -0
- package/es/grid-component/hooks/useColumns/index.js +422 -0
- package/es/grid-component/hooks/utils.d.ts +35 -0
- package/es/{hooks → grid-component/hooks}/utils.js +124 -16
- package/es/grid-component/index.d.ts +2 -0
- package/es/grid-component/index.js +2 -0
- package/es/grid-component/rc-table/Grid.d.ts +8 -0
- package/es/grid-component/rc-table/Grid.js +99 -0
- package/es/grid-component/rc-table/GridEdit.d.ts +9 -0
- package/es/grid-component/rc-table/GridEdit.js +706 -0
- package/es/grid-component/type.d.ts +225 -0
- package/es/grid-component/useContext.d.ts +27 -0
- package/es/grid-component/useContext.js +4 -0
- package/es/index.d.ts +1 -2
- package/es/index.js +2 -2
- package/es/table-grid/styles.scss +551 -0
- package/lib/{CheckboxFilter.js → grid-component/CheckboxFilter.js} +0 -1
- package/lib/{ColumnsChoose.js → grid-component/ColumnsChoose.js} +1 -1
- package/lib/grid-component/EditableCell.d.ts +19 -0
- package/lib/grid-component/EditableCell.js +844 -0
- package/lib/{FilterSearch.js → grid-component/FilterSearch.js} +1 -1
- package/lib/grid-component/GridStyle.d.ts +4 -0
- package/lib/grid-component/GridStyle.js +12 -0
- package/lib/{InternalTable.d.ts → grid-component/InternalTable.d.ts} +1 -2
- package/lib/grid-component/InternalTable.js +292 -0
- package/lib/{LoadingSpinner.js → grid-component/LoadingSpinner.js} +1 -1
- package/lib/grid-component/Message/Message.d.ts +2 -0
- package/lib/grid-component/Message/Message.js +25 -0
- package/lib/grid-component/Message/index.d.ts +1 -0
- package/lib/grid-component/Message/index.js +16 -0
- package/{es → lib/grid-component}/TableGrid.d.ts +2 -2
- package/lib/grid-component/TableGrid.js +382 -0
- package/lib/grid-component/async-table-select/index.d.ts +9 -0
- package/lib/grid-component/async-table-select/index.js +46 -0
- package/{es → lib/grid-component}/hooks/constant.d.ts +14 -0
- package/lib/{hooks → grid-component/hooks}/constant.js +17 -2
- package/lib/grid-component/hooks/useColumns/index.d.ts +6 -0
- package/lib/grid-component/hooks/useColumns/index.js +435 -0
- package/lib/grid-component/hooks/utils.d.ts +35 -0
- package/lib/{hooks → grid-component/hooks}/utils.js +140 -19
- package/lib/grid-component/index.d.ts +2 -0
- package/lib/grid-component/index.js +9 -0
- package/lib/grid-component/rc-table/Grid.d.ts +8 -0
- package/lib/grid-component/rc-table/Grid.js +108 -0
- package/lib/grid-component/rc-table/GridEdit.d.ts +9 -0
- package/lib/grid-component/rc-table/GridEdit.js +715 -0
- package/lib/grid-component/type.d.ts +225 -0
- package/lib/grid-component/useContext.d.ts +27 -0
- package/lib/grid-component/useContext.js +10 -0
- package/lib/index.d.ts +1 -2
- package/lib/index.js +7 -3
- package/lib/table-grid/styles.scss +551 -0
- package/package.json +15 -6
- package/es/InternalTable.js +0 -185
- package/es/TableGrid.js +0 -1055
- package/es/hooks/useColumns/index.d.ts +0 -2
- package/es/hooks/useColumns/index.js +0 -25
- package/es/hooks/utils.d.ts +0 -19
- package/es/styles.scss +0 -296
- package/es/type.d.ts +0 -100
- package/lib/InternalTable.js +0 -194
- package/lib/TableGrid.js +0 -1063
- package/lib/hooks/useColumns/index.d.ts +0 -2
- package/lib/hooks/useColumns/index.js +0 -31
- package/lib/hooks/utils.d.ts +0 -19
- package/lib/styles.scss +0 -296
- package/lib/type.d.ts +0 -100
- /package/es/{CheckboxFilter.d.ts → grid-component/CheckboxFilter.d.ts} +0 -0
- /package/es/{ColumnsChoose.d.ts → grid-component/ColumnsChoose.d.ts} +0 -0
- /package/es/{ContextMenu.d.ts → grid-component/ContextMenu.d.ts} +0 -0
- /package/es/{ContextMenu.js → grid-component/ContextMenu.js} +0 -0
- /package/es/{FilterSearch.d.ts → grid-component/FilterSearch.d.ts} +0 -0
- /package/es/{LoadingSpinner.d.ts → grid-component/LoadingSpinner.d.ts} +0 -0
- /package/es/{hooks → grid-component/hooks}/index.d.ts +0 -0
- /package/es/{hooks → grid-component/hooks}/index.js +0 -0
- /package/es/{hooks → grid-component/hooks}/useIsOverflow.d.ts +0 -0
- /package/es/{hooks → grid-component/hooks}/useIsOverflow.js +0 -0
- /package/es/{hooks → grid-component/hooks}/useOnClickOutside.d.ts +0 -0
- /package/es/{hooks → grid-component/hooks}/useOnClickOutside.js +0 -0
- /package/es/{type.js → grid-component/type.js} +0 -0
- /package/lib/{CheckboxFilter.d.ts → grid-component/CheckboxFilter.d.ts} +0 -0
- /package/lib/{ColumnsChoose.d.ts → grid-component/ColumnsChoose.d.ts} +0 -0
- /package/lib/{ContextMenu.d.ts → grid-component/ContextMenu.d.ts} +0 -0
- /package/lib/{ContextMenu.js → grid-component/ContextMenu.js} +0 -0
- /package/lib/{FilterSearch.d.ts → grid-component/FilterSearch.d.ts} +0 -0
- /package/lib/{LoadingSpinner.d.ts → grid-component/LoadingSpinner.d.ts} +0 -0
- /package/lib/{hooks → grid-component/hooks}/index.d.ts +0 -0
- /package/lib/{hooks → grid-component/hooks}/index.js +0 -0
- /package/lib/{hooks → grid-component/hooks}/useIsOverflow.d.ts +0 -0
- /package/lib/{hooks → grid-component/hooks}/useIsOverflow.js +0 -0
- /package/lib/{hooks → grid-component/hooks}/useOnClickOutside.d.ts +0 -0
- /package/lib/{hooks → grid-component/hooks}/useOnClickOutside.js +0 -0
- /package/lib/{type.js → grid-component/type.js} +0 -0
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.flatColumns = flatColumns;
|
|
8
|
+
exports.renderFilter = exports.renderContent = exports.getValueCell = void 0;
|
|
9
|
+
var _utils = require("../utils");
|
|
10
|
+
var _reactNumericComponent = require("react-numeric-component");
|
|
11
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
12
|
+
var _moment = _interopRequireDefault(require("moment/moment"));
|
|
13
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
+
var _rcMasterUi = require("rc-master-ui");
|
|
15
|
+
var _CheckboxFilter = _interopRequireDefault(require("../../CheckboxFilter"));
|
|
16
|
+
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); }
|
|
17
|
+
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; }
|
|
18
|
+
// import * as React from 'react'
|
|
19
|
+
|
|
20
|
+
const {
|
|
21
|
+
RangePicker
|
|
22
|
+
} = _rcMasterUi.DatePicker;
|
|
23
|
+
function flatColumns(columns, parentKey = 'key') {
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
return columns.filter(column => column && typeof column === 'object').reduce((list, column, index) => {
|
|
26
|
+
const {
|
|
27
|
+
fixed
|
|
28
|
+
} = column;
|
|
29
|
+
// Convert `fixed='true'` to `fixed='left'` instead
|
|
30
|
+
const parsedFixed = fixed === true ? 'left' : fixed;
|
|
31
|
+
const mergedKey = `${parentKey}-${index}`;
|
|
32
|
+
const subColumns = column.children;
|
|
33
|
+
if (subColumns && subColumns.length > 0) {
|
|
34
|
+
return [...list, ...flatColumns(subColumns, mergedKey).map(subColum => ({
|
|
35
|
+
fixed: parsedFixed,
|
|
36
|
+
...subColum
|
|
37
|
+
}))];
|
|
38
|
+
}
|
|
39
|
+
return [...list, {
|
|
40
|
+
key: mergedKey,
|
|
41
|
+
...column,
|
|
42
|
+
fixed: parsedFixed
|
|
43
|
+
}];
|
|
44
|
+
}, []);
|
|
45
|
+
}
|
|
46
|
+
const getValueCell = (column, value, format) => {
|
|
47
|
+
switch (column?.type) {
|
|
48
|
+
case 'number':
|
|
49
|
+
const thousandSeparator = column?.format?.thousandSeparator ? column?.format?.thousandSeparator : format?.thousandSeparator;
|
|
50
|
+
const decimalSeparator = column?.format?.decimalSeparator ? column?.format?.decimalSeparator : format?.decimalSeparator;
|
|
51
|
+
const dec = column?.format?.decimalScale || column?.format?.decimalScale === 0 ? column?.format?.decimalScale : format?.decimalScale;
|
|
52
|
+
const content = !(0, _utils.isEmpty)(value) ? dec || dec === 0 ? parseFloat(Number(value).toFixed(dec)).toString() : value.toString() : '0';
|
|
53
|
+
const numericFormatProps = {
|
|
54
|
+
thousandSeparator: (0, _utils.checkThousandSeparator)(thousandSeparator, decimalSeparator),
|
|
55
|
+
decimalSeparator: (0, _utils.checkDecimalSeparator)(thousandSeparator, decimalSeparator),
|
|
56
|
+
allowNegative: (column?.format?.allowNegative ? column?.format?.allowNegative : format?.allowNegative) ?? true,
|
|
57
|
+
prefix: column?.format?.prefix ? column?.format?.prefix : format?.prefix,
|
|
58
|
+
suffix: column?.format?.suffix ? column?.format?.suffix : format?.suffix,
|
|
59
|
+
decimalScale: column?.format?.decimalScale || column?.format?.decimalScale === 0 ? column?.format?.decimalScale : format?.decimalScale,
|
|
60
|
+
fixedDecimalScale: (column?.format?.fixedDecimalScale ? column?.format?.fixedDecimalScale : format?.fixedDecimalScale) ?? false
|
|
61
|
+
};
|
|
62
|
+
return !(0, _utils.isEmpty)(content) ? (0, _reactNumericComponent.numericFormatter)(content, numericFormatProps) : '';
|
|
63
|
+
case 'date':
|
|
64
|
+
return value ? (0, _dayjs.default)(value).format(column?.format?.dateFormat ?? format?.dateFormat ?? 'DD/MM/YYYY') : '';
|
|
65
|
+
case 'time':
|
|
66
|
+
return value ? value : '';
|
|
67
|
+
case 'year':
|
|
68
|
+
const year = value ? (0, _moment.default)(value).format('yyyy') : '';
|
|
69
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, year);
|
|
70
|
+
case 'datetime':
|
|
71
|
+
return value ? (0, _moment.default)(value).format(column?.format?.datetimeFormat ?? format?.datetimeFormat ?? 'DD/MM/YYYY HH:mm') : '';
|
|
72
|
+
case 'boolean':
|
|
73
|
+
return value ? 'true' : 'false';
|
|
74
|
+
case 'color':
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, (0, _utils.isColor)(value) ? /*#__PURE__*/_react.default.createElement("div", {
|
|
76
|
+
className: 'w-100 h-100',
|
|
77
|
+
style: {
|
|
78
|
+
backgroundColor: value,
|
|
79
|
+
border: '1px solid #f0f0f0'
|
|
80
|
+
}
|
|
81
|
+
}) : '');
|
|
82
|
+
case 'checkbox':
|
|
83
|
+
return /*#__PURE__*/_react.default.createElement(_rcMasterUi.Input, {
|
|
84
|
+
checked: !!content,
|
|
85
|
+
readOnly: true,
|
|
86
|
+
type: "checkbox"
|
|
87
|
+
});
|
|
88
|
+
case 'file':
|
|
89
|
+
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(", ") : '';
|
|
90
|
+
return value ? nameFile : '';
|
|
91
|
+
default:
|
|
92
|
+
if (Array.isArray(value)) {
|
|
93
|
+
return value.join(', ');
|
|
94
|
+
}
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
exports.getValueCell = getValueCell;
|
|
99
|
+
const renderContent = (column, value, record, index, format) => {
|
|
100
|
+
const cellValue = value instanceof Date ? (0, _utils.getDateString)(column, value) : value;
|
|
101
|
+
const content = getValueCell(column, cellValue, format);
|
|
102
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, column?.template ? typeof column.template === "function" ? column.template(value, record, index) : column.template : content);
|
|
103
|
+
};
|
|
104
|
+
exports.renderContent = renderContent;
|
|
105
|
+
const renderFilter = (column, selectedKeys, setSelectedKeys, confirm, visible, searchValue, setSearchValue, dataSourceFilter, buddhistLocale) => {
|
|
106
|
+
const type = (0, _utils.getTypeFilter)(column);
|
|
107
|
+
const dateFormat = (0, _utils.getDatepickerFormat)(column?.typeFilter ?? column?.type, column) ?? 'DD/MM/YYYY';
|
|
108
|
+
const dateRangeFormat = (0, _utils.getDatepickerFormat)(column?.type, column) ?? 'DD/MM/YYYY';
|
|
109
|
+
const find = dataSourceFilter?.find(it => it.key === column?.key);
|
|
110
|
+
const options = find ? find.data : [];
|
|
111
|
+
switch (type) {
|
|
112
|
+
case 'Number':
|
|
113
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
114
|
+
className: 'mb-1'
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
|
|
116
|
+
value: selectedKeys[0]
|
|
117
|
+
// thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
|
|
118
|
+
// decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
|
|
119
|
+
// allowNegative={col.format && col.format.allowNegative === true}
|
|
120
|
+
,
|
|
121
|
+
allowNegative: true,
|
|
122
|
+
customInput: _rcMasterUi.Input,
|
|
123
|
+
className: ' rounded-0 input-element form-control',
|
|
124
|
+
onValueChange: values => {
|
|
125
|
+
// onChangeValueFilter(type, values.floatValue)
|
|
126
|
+
setSelectedKeys(values.floatValue || values.floatValue === 0 ? [values.floatValue] : []);
|
|
127
|
+
}
|
|
128
|
+
}))));
|
|
129
|
+
case 'NumberRange':
|
|
130
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
131
|
+
className: 'mb-1 d-flex flex-column gap-1'
|
|
132
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
133
|
+
style: {
|
|
134
|
+
marginBottom: 8
|
|
135
|
+
}
|
|
136
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
|
|
137
|
+
value: selectedKeys[0]
|
|
138
|
+
// thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
|
|
139
|
+
// decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
|
|
140
|
+
,
|
|
141
|
+
allowNegative: true,
|
|
142
|
+
customInput: _rcMasterUi.Input,
|
|
143
|
+
className: ' rounded-0 input-element form-control'
|
|
144
|
+
// onValueChange={(values: any) => {
|
|
145
|
+
// onChangeValueFilter(type, values.floatValue, 'min')
|
|
146
|
+
// }}
|
|
147
|
+
,
|
|
148
|
+
placeholder: 'Min',
|
|
149
|
+
autoFocus: true
|
|
150
|
+
})), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
|
|
151
|
+
value: selectedKeys[1]
|
|
152
|
+
// thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
|
|
153
|
+
// decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
|
|
154
|
+
,
|
|
155
|
+
allowNegative: true,
|
|
156
|
+
customInput: _rcMasterUi.Input,
|
|
157
|
+
className: ' rounded-0 input-element form-control',
|
|
158
|
+
onValueChange: () => {
|
|
159
|
+
// onChangeValueFilter(type, values.floatValue, 'max')
|
|
160
|
+
},
|
|
161
|
+
placeholder: 'Max'
|
|
162
|
+
})))));
|
|
163
|
+
case 'Date':
|
|
164
|
+
const dateValue = selectedKeys[0] ? (0, _utils.convertDateToDayjs)(new Date(selectedKeys[0]), dateFormat) : null;
|
|
165
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
166
|
+
className: 'mb-1'
|
|
167
|
+
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.DatePicker, {
|
|
168
|
+
format: {
|
|
169
|
+
format: dateFormat,
|
|
170
|
+
type: 'mask'
|
|
171
|
+
},
|
|
172
|
+
locale: buddhistLocale,
|
|
173
|
+
style: {
|
|
174
|
+
width: '100%',
|
|
175
|
+
height: '100%'
|
|
176
|
+
},
|
|
177
|
+
value: dateValue,
|
|
178
|
+
defaultValue: dateValue,
|
|
179
|
+
placeholder: column?.placeholder,
|
|
180
|
+
onChange: (date, dateString) => {
|
|
181
|
+
const newDateValue = dateString ? (0, _moment.default)((0, _utils.convertDayjsToDate)(dateString, dateFormat)).format() : null;
|
|
182
|
+
setSelectedKeys(newDateValue ? [newDateValue] : []);
|
|
183
|
+
}
|
|
184
|
+
}))));
|
|
185
|
+
case 'DateRange':
|
|
186
|
+
const dateRangeValue = [selectedKeys[0] ? (0, _utils.convertDateToDayjs)(new Date(selectedKeys[0]), dateRangeFormat) : '', selectedKeys[1] ? (0, _utils.convertDateToDayjs)(new Date(selectedKeys[1]), dateRangeFormat) : ''];
|
|
187
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
188
|
+
className: 'mb-1'
|
|
189
|
+
}, /*#__PURE__*/_react.default.createElement(RangePicker, {
|
|
190
|
+
format: {
|
|
191
|
+
format: dateRangeFormat,
|
|
192
|
+
type: 'mask'
|
|
193
|
+
}
|
|
194
|
+
// defaultValue={dateRangeValue}
|
|
195
|
+
,
|
|
196
|
+
value: dateRangeValue,
|
|
197
|
+
placeholder: ['Ngày bắt đầu', 'Ngày kết thúc'],
|
|
198
|
+
popupStyle: {
|
|
199
|
+
zIndex: 9999
|
|
200
|
+
},
|
|
201
|
+
onChange: (value, dateString) => {
|
|
202
|
+
const newDateRangeValue = dateString[0] ? [dateString[0] ? (0, _moment.default)((0, _utils.convertDayjsToDate)(dateString[0], dateRangeFormat)).format() : '', dateString[1] ? (0, _moment.default)((0, _utils.convertDayjsToDate)(dateString[1], dateRangeFormat)).format() : ''] : '';
|
|
203
|
+
|
|
204
|
+
// setSelectedKeys(newDateValue ? [newDateValue] : [])
|
|
205
|
+
setSelectedKeys(newDateRangeValue);
|
|
206
|
+
},
|
|
207
|
+
style: {
|
|
208
|
+
width: '100%'
|
|
209
|
+
}
|
|
210
|
+
// popupClassName={'adv-popup-container'}
|
|
211
|
+
// getPopupContainer={() => menuRef.current}
|
|
212
|
+
}))));
|
|
213
|
+
case 'Week':
|
|
214
|
+
const weekValue = !(0, _utils.isEmpty)(selectedKeys[0]) ? (0, _dayjs.default)(selectedKeys[0], dateFormat) : null;
|
|
215
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
216
|
+
className: 'mb-1'
|
|
217
|
+
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.DatePicker, {
|
|
218
|
+
format: {
|
|
219
|
+
format: dateFormat,
|
|
220
|
+
type: 'mask'
|
|
221
|
+
},
|
|
222
|
+
picker: 'week',
|
|
223
|
+
locale: buddhistLocale,
|
|
224
|
+
style: {
|
|
225
|
+
width: '100%',
|
|
226
|
+
height: '100%'
|
|
227
|
+
},
|
|
228
|
+
value: weekValue,
|
|
229
|
+
defaultValue: weekValue,
|
|
230
|
+
placeholder: column?.placeholder,
|
|
231
|
+
onChange: (date, dateString) => {
|
|
232
|
+
const newDateValue = dateString ?? null;
|
|
233
|
+
setSelectedKeys(newDateValue ? [newDateValue] : []);
|
|
234
|
+
}
|
|
235
|
+
}))));
|
|
236
|
+
case 'Month':
|
|
237
|
+
const monthValue = !(0, _utils.isEmpty)(selectedKeys[0]) ? (0, _dayjs.default)(selectedKeys[0], dateFormat) : null;
|
|
238
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
239
|
+
className: 'mb-1'
|
|
240
|
+
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.DatePicker, {
|
|
241
|
+
format: {
|
|
242
|
+
format: dateFormat,
|
|
243
|
+
type: 'mask'
|
|
244
|
+
},
|
|
245
|
+
picker: 'month',
|
|
246
|
+
locale: buddhistLocale,
|
|
247
|
+
style: {
|
|
248
|
+
width: '100%',
|
|
249
|
+
height: '100%'
|
|
250
|
+
},
|
|
251
|
+
value: monthValue,
|
|
252
|
+
defaultValue: monthValue,
|
|
253
|
+
placeholder: column?.placeholder,
|
|
254
|
+
onChange: (date, dateString) => {
|
|
255
|
+
const newDateValue = dateString ?? null;
|
|
256
|
+
setSelectedKeys(newDateValue ? [newDateValue] : []);
|
|
257
|
+
}
|
|
258
|
+
})));
|
|
259
|
+
|
|
260
|
+
// case 'Quarter':
|
|
261
|
+
//
|
|
262
|
+
// // const monthValue = selectedKeys[0] ? convertDateToDayjs(new Date(selectedKeys[0]), dateFormat) : null
|
|
263
|
+
//
|
|
264
|
+
// const pickerFormat = getDatepickerFormat(getEditType(col) as IEditType, col)
|
|
265
|
+
// const pickerValue = !isEmpty(selectedKeys[0]) ? dayjs(selectedKeys[0], pickerFormat) : null
|
|
266
|
+
//
|
|
267
|
+
// return (
|
|
268
|
+
// <Fragment>
|
|
269
|
+
// <div>
|
|
270
|
+
//
|
|
271
|
+
//
|
|
272
|
+
// <div className={'mb-1'}>
|
|
273
|
+
//
|
|
274
|
+
// <DatePicker
|
|
275
|
+
// format={{
|
|
276
|
+
// format: dateFormat,
|
|
277
|
+
// type: 'mask'
|
|
278
|
+
// }}
|
|
279
|
+
// locale={buddhistLocale}
|
|
280
|
+
// style={{width: '100%', height: '100%'}}
|
|
281
|
+
// value={pickerValue}
|
|
282
|
+
// defaultValue={pickerValue}
|
|
283
|
+
// placeholder={column.placeholder}
|
|
284
|
+
// onChange={(date, dateString) => {
|
|
285
|
+
// const newDateValue = dateString ? moment(convertDayjsToDate(dateString as string, dateFormat)).format() : null
|
|
286
|
+
// setSelectedKeys(newDateValue ? [newDateValue] : [])
|
|
287
|
+
//
|
|
288
|
+
// }}
|
|
289
|
+
//
|
|
290
|
+
// />
|
|
291
|
+
// </div>
|
|
292
|
+
//
|
|
293
|
+
//
|
|
294
|
+
// </div>
|
|
295
|
+
// </Fragment>
|
|
296
|
+
// )
|
|
297
|
+
//
|
|
298
|
+
// case 'Year':
|
|
299
|
+
//
|
|
300
|
+
// // const monthValue = selectedKeys[0] ? convertDateToDayjs(new Date(selectedKeys[0]), dateFormat) : null
|
|
301
|
+
//
|
|
302
|
+
// const pickerFormat = getDatepickerFormat(getEditType(col) as IEditType, col)
|
|
303
|
+
// const pickerValue = !isEmpty(selectedKeys[0]) ? dayjs(selectedKeys[0], pickerFormat) : null
|
|
304
|
+
//
|
|
305
|
+
// return (
|
|
306
|
+
// <Fragment>
|
|
307
|
+
// <div>
|
|
308
|
+
//
|
|
309
|
+
//
|
|
310
|
+
// <div className={'mb-1'}>
|
|
311
|
+
//
|
|
312
|
+
// <DatePicker
|
|
313
|
+
// format={{
|
|
314
|
+
// format: dateFormat,
|
|
315
|
+
// type: 'mask'
|
|
316
|
+
// }}
|
|
317
|
+
// locale={buddhistLocale}
|
|
318
|
+
// style={{width: '100%', height: '100%'}}
|
|
319
|
+
// value={pickerValue}
|
|
320
|
+
// defaultValue={pickerValue}
|
|
321
|
+
// placeholder={column.placeholder}
|
|
322
|
+
// onChange={(date, dateString) => {
|
|
323
|
+
// const newDateValue = dateString ? moment(convertDayjsToDate(dateString as string, dateFormat)).format() : null
|
|
324
|
+
// setSelectedKeys(newDateValue ? [newDateValue] : [])
|
|
325
|
+
//
|
|
326
|
+
// }}
|
|
327
|
+
//
|
|
328
|
+
// />
|
|
329
|
+
// </div>
|
|
330
|
+
//
|
|
331
|
+
//
|
|
332
|
+
// </div>
|
|
333
|
+
// </Fragment>
|
|
334
|
+
// )
|
|
335
|
+
|
|
336
|
+
case 'Dropdown':
|
|
337
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
338
|
+
className: 'mb-1'
|
|
339
|
+
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select
|
|
340
|
+
// options={translateOption(numberOperator, t)}
|
|
341
|
+
, {
|
|
342
|
+
options: options,
|
|
343
|
+
style: {
|
|
344
|
+
width: '100%',
|
|
345
|
+
marginBottom: 8
|
|
346
|
+
},
|
|
347
|
+
value: selectedKeys[0],
|
|
348
|
+
onChange: val => {
|
|
349
|
+
// setOperatorKey(val)
|
|
350
|
+
setSelectedKeys(val ? [val] : []);
|
|
351
|
+
},
|
|
352
|
+
showSearch: true,
|
|
353
|
+
allowClear: true
|
|
354
|
+
}))));
|
|
355
|
+
|
|
356
|
+
// case 'DropTree':
|
|
357
|
+
// return (
|
|
358
|
+
// <Fragment>
|
|
359
|
+
// <div>
|
|
360
|
+
// {col.filterOption && col.filterOption.showOperator === false ? (
|
|
361
|
+
// ''
|
|
362
|
+
// ) : (
|
|
363
|
+
// <div className={'mb-1'}>
|
|
364
|
+
// <Select
|
|
365
|
+
// options={translateOption(numberOperator, t)}
|
|
366
|
+
// // options={t ? numberOperator.map((it: any) => ({...it, label: t(it.label)})) : numberOperator}
|
|
367
|
+
//
|
|
368
|
+
// classNamePrefix='select'
|
|
369
|
+
// className={`react-select`}
|
|
370
|
+
// value={translateOption(numberOperator, t).find(
|
|
371
|
+
// ope => ope.value === (operator ? operator : getDefaultOperator(col))
|
|
372
|
+
// )}
|
|
373
|
+
// onChange={(val: any) => {
|
|
374
|
+
// setCurrentFilter((prevState: any) => ({ ...prevState, operator: val.value }))
|
|
375
|
+
// }}
|
|
376
|
+
// />
|
|
377
|
+
// </div>
|
|
378
|
+
// )}
|
|
379
|
+
//
|
|
380
|
+
// <div className={'mb-1'}>
|
|
381
|
+
// <Input
|
|
382
|
+
// placeholder={'Nhập giá trị'}
|
|
383
|
+
// value={value}
|
|
384
|
+
// onChange={(val: any) => {
|
|
385
|
+
// onChangeValueFilter(type, val.value)
|
|
386
|
+
// }}
|
|
387
|
+
// />
|
|
388
|
+
// </div>
|
|
389
|
+
//
|
|
390
|
+
// <div className={'d-flex justify-content-end'}>
|
|
391
|
+
// <Button color='flat-primary' className={'me-1 be-button'} onClick={(e: any) => handleOnFilter(e)}>
|
|
392
|
+
// {t ? t('Filter') : 'Filter'}
|
|
393
|
+
// </Button>
|
|
394
|
+
// <Button color='flat-secondary' className={'be-button'} onClick={(e: any) => handleClearFilter(e)}>
|
|
395
|
+
// {t ? t('Delete') : 'Delete'}
|
|
396
|
+
// </Button>
|
|
397
|
+
// </div>
|
|
398
|
+
// </div>
|
|
399
|
+
// </Fragment>
|
|
400
|
+
// )
|
|
401
|
+
//
|
|
402
|
+
case 'Checkbox':
|
|
403
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
404
|
+
className: 'mb-1'
|
|
405
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_CheckboxFilter.default
|
|
406
|
+
// column={column}
|
|
407
|
+
, {
|
|
408
|
+
locale: {
|
|
409
|
+
filterTitle: 'Chọn tất cả',
|
|
410
|
+
filterCheckall: 'Chọn tất cả'
|
|
411
|
+
},
|
|
412
|
+
selectedKeys: selectedKeys,
|
|
413
|
+
onSelect: setSelectedKeys,
|
|
414
|
+
options: options,
|
|
415
|
+
filterMultiple: true,
|
|
416
|
+
open: visible,
|
|
417
|
+
searchValue: searchValue,
|
|
418
|
+
setSearchValue: setSearchValue
|
|
419
|
+
})))));
|
|
420
|
+
case 'Text':
|
|
421
|
+
default:
|
|
422
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
423
|
+
className: 'mb-1'
|
|
424
|
+
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Input, {
|
|
425
|
+
placeholder: `Search ${column?.dataIndex}`,
|
|
426
|
+
value: selectedKeys[0],
|
|
427
|
+
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
428
|
+
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
429
|
+
,
|
|
430
|
+
onPressEnter: () => confirm(),
|
|
431
|
+
allowClear: true
|
|
432
|
+
}))));
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
exports.renderFilter = renderFilter;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
import type { EditType, IColumnType, TypeFilter } from "rc-master-ui";
|
|
4
|
+
import type { ColumnEditType, ColumnsType, ColumnTable } from "../type";
|
|
5
|
+
import type { SelectionSettings } from "../type";
|
|
6
|
+
import type { AnyObject } from "../type";
|
|
7
|
+
export declare const newGuid: () => any;
|
|
8
|
+
export declare const sumDataByField: (data: any[], field: string) => any;
|
|
9
|
+
export declare const checkThousandSeparator: (thousandSeparator: string | undefined, decimalSeparator: string | undefined) => string;
|
|
10
|
+
export declare const checkDecimalSeparator: (thousandSeparator: string | undefined, decimalSeparator: string | undefined) => string;
|
|
11
|
+
export declare const isEmpty: (d: any) => boolean;
|
|
12
|
+
export declare const isNullOrUndefined: (d: any) => boolean;
|
|
13
|
+
export declare const convertDayjsToDate: (dateString: string, format?: string) => Date;
|
|
14
|
+
export declare const convertDateToDayjs: (date: Date | undefined, format?: string) => dayjs.Dayjs;
|
|
15
|
+
export declare const isNameColor: (strColor: string) => boolean;
|
|
16
|
+
export declare const isColor: (value: string) => boolean;
|
|
17
|
+
export declare const getAllVisibleKeys: (columns: any[]) => any[];
|
|
18
|
+
export declare const getVisibleColumnKeys: (columns: any[]) => string[];
|
|
19
|
+
export declare function getHiddenParentKeys(columns: any[], parentKeys?: string[]): string[];
|
|
20
|
+
export declare const updateColumns: (columns: any[], includes: string[]) => any[];
|
|
21
|
+
export declare const getDatepickerFormat: (type: EditType | TypeFilter | IColumnType, col: ColumnTable<any>) => string;
|
|
22
|
+
export declare const customWeekStartEndFormat: (value: any, weekFormat: string) => string;
|
|
23
|
+
export declare const getTypeFilter: (col: ColumnTable<any>) => TypeFilter;
|
|
24
|
+
export declare const updateArrayByKey: (arr: any[], element: any, key: string) => any[];
|
|
25
|
+
export declare const getDateString: <T>(column: ColumnTable<T>, value: any) => string;
|
|
26
|
+
export declare const getEditType: <T>(column: ColumnEditType<T>, rowData?: any) => EditType | ((rowData?: any) => EditType);
|
|
27
|
+
export declare const isDisable: <T>(column: ColumnEditType<T>, rowData?: any) => boolean;
|
|
28
|
+
export declare const checkFieldKey: (key: string | undefined) => string;
|
|
29
|
+
export declare const convertLabelToTitle: (data: any[]) => any[];
|
|
30
|
+
export declare const convertArrayWithIndent: (inputArray: any[], parentIndent?: number) => any[];
|
|
31
|
+
export declare const getTemplate: (template: any) => React.ReactNode | React.ReactElement;
|
|
32
|
+
export declare const totalFixedWidth: <T>(columns: ColumnsType<T>, type: 'left' | 'right', selectionSettings?: SelectionSettings) => number;
|
|
33
|
+
export declare const isObjEmpty: (obj: any) => boolean;
|
|
34
|
+
export declare const getColumnsVisible: <T>(columns: ColumnsType<T>, index: number) => import("../type").ColumnType<T>[];
|
|
35
|
+
export declare const updateData: <Record_1 = AnyObject>(initData: Record_1[], rows: Record_1[], key: keyof Record_1) => Record_1[];
|
|
@@ -4,10 +4,20 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.getDatepickerFormat = exports.getAllVisibleKeys = exports.convertDayjsToDate = exports.convertDateToDayjs = exports.checkThousandSeparator = exports.checkDecimalSeparator = void 0;
|
|
7
|
+
exports.getEditType = exports.getDatepickerFormat = exports.getDateString = exports.getColumnsVisible = exports.getAllVisibleKeys = exports.customWeekStartEndFormat = exports.convertLabelToTitle = exports.convertDayjsToDate = exports.convertDateToDayjs = exports.convertArrayWithIndent = exports.checkThousandSeparator = exports.checkFieldKey = exports.checkDecimalSeparator = void 0;
|
|
8
8
|
exports.getHiddenParentKeys = getHiddenParentKeys;
|
|
9
|
-
exports.updateColumns = exports.updateArrayByKey = exports.sumDataByField = exports.isNullOrUndefined = exports.isNameColor = exports.isEmpty = exports.isColor = exports.getVisibleColumnKeys = exports.getTypeFilter = void 0;
|
|
9
|
+
exports.updateData = exports.updateColumns = exports.updateArrayByKey = exports.totalFixedWidth = exports.sumDataByField = exports.newGuid = exports.isObjEmpty = exports.isNullOrUndefined = exports.isNameColor = exports.isEmpty = exports.isDisable = exports.isColor = exports.getVisibleColumnKeys = exports.getTypeFilter = exports.getTemplate = void 0;
|
|
10
10
|
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
11
|
+
var _moment = _interopRequireDefault(require("moment/moment"));
|
|
12
|
+
var _uuid = require("uuid");
|
|
13
|
+
const newGuid = () => {
|
|
14
|
+
for (let i = 0; i < 20; i++) {
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
// const id = crypto.randomUUID()
|
|
17
|
+
return (0, _uuid.v4)();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.newGuid = newGuid;
|
|
11
21
|
const sumDataByField = (data, field) => {
|
|
12
22
|
if (data && data.length > 0) {
|
|
13
23
|
return data.reduce((accumulator, currentValue) => {
|
|
@@ -55,17 +65,11 @@ const checkDecimalSeparator = (thousandSeparator, decimalSeparator) => {
|
|
|
55
65
|
};
|
|
56
66
|
exports.checkDecimalSeparator = checkDecimalSeparator;
|
|
57
67
|
const isEmpty = d => {
|
|
58
|
-
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
return false;
|
|
68
|
+
return d === null || d === undefined || d === '';
|
|
62
69
|
};
|
|
63
70
|
exports.isEmpty = isEmpty;
|
|
64
71
|
const isNullOrUndefined = d => {
|
|
65
|
-
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
return false;
|
|
72
|
+
return d === null || d === undefined;
|
|
69
73
|
};
|
|
70
74
|
exports.isNullOrUndefined = isNullOrUndefined;
|
|
71
75
|
const convertDayjsToDate = (dateString, format) => {
|
|
@@ -120,8 +124,7 @@ exports.getAllVisibleKeys = getAllVisibleKeys;
|
|
|
120
124
|
const getVisibleColumnKeys = columns => {
|
|
121
125
|
const allKeys = getAllVisibleKeys(columns);
|
|
122
126
|
const allParentKeys = getHiddenParentKeys(columns);
|
|
123
|
-
|
|
124
|
-
return rs;
|
|
127
|
+
return allKeys.filter(item => !allParentKeys.includes(item));
|
|
125
128
|
};
|
|
126
129
|
exports.getVisibleColumnKeys = getVisibleColumnKeys;
|
|
127
130
|
function getHiddenParentKeys(columns, parentKeys = []) {
|
|
@@ -153,11 +156,7 @@ const updateColumns = (columns, includes) => {
|
|
|
153
156
|
newColumn.children = updateColumns(newColumn.children, includes);
|
|
154
157
|
hasVisibleChild = newColumn.children.some(child => !child.hidden);
|
|
155
158
|
}
|
|
156
|
-
|
|
157
|
-
newColumn.hidden = true;
|
|
158
|
-
} else {
|
|
159
|
-
newColumn.hidden = false;
|
|
160
|
-
}
|
|
159
|
+
newColumn.hidden = newColumn.key && !includes.includes(newColumn.key);
|
|
161
160
|
if (newColumn.children && newColumn.children.length > 0) {
|
|
162
161
|
newColumn.hidden = !hasVisibleChild;
|
|
163
162
|
}
|
|
@@ -184,10 +183,14 @@ const getDatepickerFormat = (type, col) => {
|
|
|
184
183
|
case "time":
|
|
185
184
|
return col.format?.timeFormat ? col.format?.timeFormat : 'HH:mm';
|
|
186
185
|
default:
|
|
187
|
-
return
|
|
186
|
+
return 'DD/MM/YYYY';
|
|
188
187
|
}
|
|
189
188
|
};
|
|
190
189
|
exports.getDatepickerFormat = getDatepickerFormat;
|
|
190
|
+
const customWeekStartEndFormat = (value, weekFormat) => {
|
|
191
|
+
return `${(0, _dayjs.default)(value).startOf('week').format(weekFormat)} ~ ${(0, _dayjs.default)(value).endOf('week').format(weekFormat)}`;
|
|
192
|
+
};
|
|
193
|
+
exports.customWeekStartEndFormat = customWeekStartEndFormat;
|
|
191
194
|
const getTypeFilter = col => {
|
|
192
195
|
if (col?.typeFilter) {
|
|
193
196
|
return col.typeFilter;
|
|
@@ -233,4 +236,122 @@ const updateArrayByKey = (arr, element, key) => {
|
|
|
233
236
|
return [];
|
|
234
237
|
}
|
|
235
238
|
};
|
|
236
|
-
exports.updateArrayByKey = updateArrayByKey;
|
|
239
|
+
exports.updateArrayByKey = updateArrayByKey;
|
|
240
|
+
const getDateString = (column, value) => {
|
|
241
|
+
if (value instanceof Date) {
|
|
242
|
+
return (0, _moment.default)(value).format();
|
|
243
|
+
}
|
|
244
|
+
return value;
|
|
245
|
+
};
|
|
246
|
+
exports.getDateString = getDateString;
|
|
247
|
+
const getEditType = (column, rowData) => {
|
|
248
|
+
if (column && typeof column.editType === 'function') {
|
|
249
|
+
return column.editType(rowData);
|
|
250
|
+
}
|
|
251
|
+
return column.editType;
|
|
252
|
+
};
|
|
253
|
+
exports.getEditType = getEditType;
|
|
254
|
+
const isDisable = (column, rowData) => {
|
|
255
|
+
if (column && typeof column?.disable === 'function') {
|
|
256
|
+
return column.disable(rowData);
|
|
257
|
+
}
|
|
258
|
+
return !!column?.disable;
|
|
259
|
+
};
|
|
260
|
+
exports.isDisable = isDisable;
|
|
261
|
+
const checkFieldKey = key => {
|
|
262
|
+
if (key) {
|
|
263
|
+
return key;
|
|
264
|
+
} else {
|
|
265
|
+
return 'value';
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
exports.checkFieldKey = checkFieldKey;
|
|
269
|
+
const convertLabelToTitle = data => {
|
|
270
|
+
return data.map(item => {
|
|
271
|
+
const {
|
|
272
|
+
label,
|
|
273
|
+
title,
|
|
274
|
+
value,
|
|
275
|
+
...rest
|
|
276
|
+
} = item;
|
|
277
|
+
const newItem = {
|
|
278
|
+
...rest,
|
|
279
|
+
value,
|
|
280
|
+
key: value,
|
|
281
|
+
title: title ? title : label
|
|
282
|
+
};
|
|
283
|
+
if (item.children) {
|
|
284
|
+
newItem.children = convertLabelToTitle(item.children);
|
|
285
|
+
}
|
|
286
|
+
return newItem;
|
|
287
|
+
});
|
|
288
|
+
};
|
|
289
|
+
exports.convertLabelToTitle = convertLabelToTitle;
|
|
290
|
+
const convertArrayWithIndent = (inputArray, parentIndent = 0) => {
|
|
291
|
+
if (inputArray) {
|
|
292
|
+
return inputArray.map(item => {
|
|
293
|
+
const indent = parentIndent;
|
|
294
|
+
if (item.children && item.children.length > 0) {
|
|
295
|
+
item.children = convertArrayWithIndent(item.children, indent + 1);
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
...item,
|
|
299
|
+
indent,
|
|
300
|
+
rowId: item.rowId ? item.rowId : item.id ? item.id : newGuid()
|
|
301
|
+
};
|
|
302
|
+
});
|
|
303
|
+
} else {
|
|
304
|
+
return [];
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
exports.convertArrayWithIndent = convertArrayWithIndent;
|
|
308
|
+
const getTemplate = template => {
|
|
309
|
+
if (template && typeof template === 'function') {
|
|
310
|
+
return template();
|
|
311
|
+
}
|
|
312
|
+
return template;
|
|
313
|
+
};
|
|
314
|
+
exports.getTemplate = getTemplate;
|
|
315
|
+
const totalFixedWidth = (columns, type, selectionSettings) => {
|
|
316
|
+
const totalFixedLeftWidth = columns.filter(column => column.fixed === type) // Lọc các cột có fixed
|
|
317
|
+
.reduce((sum, column) => {
|
|
318
|
+
const width = typeof column.width === 'number' ? column.width : parseInt(column.width, 10) || 0; // Chuyển từ chuỗi sang số, nếu không hợp lệ thì lấy 0
|
|
319
|
+
return sum + width;
|
|
320
|
+
}, 0);
|
|
321
|
+
const selectColumnWidth = !selectionSettings?.mode ? 0.0000001 : typeof selectionSettings?.columnWidth === 'number' ? selectionSettings?.columnWidth : parseInt(selectionSettings?.columnWidth, 10) || 50;
|
|
322
|
+
return totalFixedLeftWidth + selectColumnWidth;
|
|
323
|
+
};
|
|
324
|
+
exports.totalFixedWidth = totalFixedWidth;
|
|
325
|
+
const isObjEmpty = obj => {
|
|
326
|
+
if (isNullOrUndefined(obj)) {
|
|
327
|
+
return true;
|
|
328
|
+
} else {
|
|
329
|
+
return Object.keys(obj).length === 0;
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
exports.isObjEmpty = isObjEmpty;
|
|
333
|
+
const getColumnsVisible = (columns, index) => {
|
|
334
|
+
const itemsBeforeIndex = columns.slice(0, index);
|
|
335
|
+
const itemsAfterIndex = columns.slice(index);
|
|
336
|
+
itemsAfterIndex.map(it => {
|
|
337
|
+
if (it.hidden !== false) {
|
|
338
|
+
itemsBeforeIndex.push(it);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
return itemsBeforeIndex;
|
|
342
|
+
};
|
|
343
|
+
exports.getColumnsVisible = getColumnsVisible;
|
|
344
|
+
const updateData = (initData, rows, key) => {
|
|
345
|
+
const updatedData = initData.map(item => {
|
|
346
|
+
const newData = rows.find(row => row[key] === item[key]);
|
|
347
|
+
return newData ? {
|
|
348
|
+
...item,
|
|
349
|
+
...newData
|
|
350
|
+
} : item;
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
// Thêm các phần tử mới chưa có trong initialData
|
|
354
|
+
const newRows = rows.filter(row => !initData.some(item => item[key] === row[key]));
|
|
355
|
+
return [...updatedData, ...newRows];
|
|
356
|
+
};
|
|
357
|
+
exports.updateData = updateData;
|