nillud-data-table 1.4.10 → 1.5.0

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/README.md CHANGED
@@ -118,7 +118,7 @@ const columns = [
118
118
  return (
119
119
  <div style={{ display: 'flex', alignItems: 'center' }}>
120
120
  <span style={{ marginBottom: 3 }}>{cell}</span>
121
- <span style={{ marginLeft: 5, cursor: 'pointer' }} onClick={() => { setModalShow(true); setRowData(row) }}><PenEdit /></span>
121
+ <span style={{ marginLeft: 5, cursor: 'pointer' }} onClick={() => { setModalShow(true); setRowData(row); }}><PenEdit /></span>
122
122
  </div>
123
123
  )
124
124
  },
@@ -126,13 +126,15 @@ const columns = [
126
126
  {
127
127
  field: 'address',
128
128
  title: 'Адрес',
129
- headerFilter: headerFilterAddress,
130
- editable: true
131
- },
132
- {
133
- field: 'obj',
134
- title: 'Объект',
135
- sortable: false
129
+ headerFilter(headerValue, rowValue, row) {
130
+ const values = [
131
+ rowValue.toLowerCase(),
132
+ String(row.user_name).toLowerCase(),
133
+ String(row.org_name).toLowerCase()
134
+ ]
135
+
136
+ return values.some(e => e.includes(headerValue.toLowerCase()))
137
+ },
136
138
  },
137
139
  ]
138
140
  ```
@@ -148,6 +150,7 @@ const columns = [
148
150
  | [formatter](#formatter) | - | func | Кастомное форматирование, принимает в себя функцию, описание далее |
149
151
  | [headerFormatter](#headerFormatter) | - | func | Кастомное форматирование заголовка колонки, принимает в себя функцию, описание далее |
150
152
  | [exportCustomCell](#exportCustomCell) | - | func | Кастомное форматирование для Excel и Word, принимает в себя функцию, описание далее |
153
+ | [cellAlignment](#cellAlignment) | - | string | Выравнивание контента в ячейке |
151
154
  | [headerFilter](#headerFilter) | - | func | Кастомный фильтр, принимает в себя функуцию, описание далее |
152
155
  | [sortable](#sortable) | - | bool | Убирает возможность сортировки, по умолчанию true |
153
156
  | [filterable](#filterable) | - | bool | Убирает возможность фильтрации, по умолчанию true |
@@ -263,44 +266,54 @@ const columns = [
263
266
  }
264
267
  ```
265
268
 
266
- #### headerFilter
269
+ #### cellAlignment
267
270
 
268
- Кастомный фильтр колонки. Принимает в себя функцию со значениями headerValue и rowValue
271
+ Выравнивание контента ячейки таблицы, так же распространяется на выравнивание в Excel
269
272
 
270
273
  ```tsx
271
- // Функция фильтрации
272
274
 
273
- const headerFilterAddress = (headerValue, rowValue) => {
274
- if (headerValue.includes(" ")) {
275
- const stringArray = headerValue.split(" ")
275
+ type CellAlignment = {
276
+ vertical: 'top' | 'middle' | 'bottom'
277
+ horizontal: 'left' | 'center' | 'right'
278
+ }
279
+
280
+ const columns = {
281
+ ...,
282
+ {
283
+ field: 'name',
284
+ title: 'name',
285
+ cellAlignment: {
286
+ vertical: 'middle',
287
+ horizontal: 'center'
288
+ },
289
+ }
290
+ ...
291
+ }
292
+
293
+ ```
276
294
 
277
- if (!stringArray.includes('')) {
278
- var row = rowValue.toLowerCase()
295
+ #### headerFilter
279
296
 
280
- const filtered = []
297
+ Кастомный фильтр колонки. Принимает в себя функцию со значениями headerValue, rowValue и не обязательным row
281
298
 
282
- for (let i = 0; i < stringArray.length; i++) {
283
- row = rowValue.toLowerCase().includes(stringArray[i].toLowerCase())
299
+ ```tsx
300
+ // Функция фильтрации
284
301
 
285
- row ? filtered.push(row) : null
286
- }
302
+ const headerFilter = (headerValue, rowValue, row) => {
303
+ const values = [
304
+ rowValue.toLowerCase(),
305
+ String(row.de_name).toLowerCase(),
306
+ String(row.dco_name).toLowerCase()
307
+ ]
287
308
 
288
- if (filtered.length === stringArray.length) {
289
- return rowValue
290
- }
291
- } else {
292
- return rowValue.toLowerCase().includes(stringArray[0].toLowerCase())
293
- }
294
- } else {
295
- return rowValue.toLowerCase().includes(headerValue.toLowerCase())
296
- }
309
+ return values.some(e => e.includes(headerValue.toLowerCase()))
297
310
  }
298
311
 
299
312
  // Объект массива columns
300
313
 
301
314
  {
302
315
  ...,
303
- headerFilter: headerFilterAddress
316
+ headerFilter: headerFilter
304
317
  }
305
318
  ```
306
319
 
package/dist/index.d.ts CHANGED
@@ -17,7 +17,7 @@ type Column = {
17
17
  headerFormatter?: (column: string) => ReactElement;
18
18
  exportCustomCell?: (title: string, row: TableElement) => string;
19
19
  cellAlignment?: CellAlignment;
20
- headerFilter?: (headerValue: string, rowValue: string) => boolean;
20
+ headerFilter?: (headerValue: string, rowValue: string, row: TableElement) => boolean;
21
21
  sortable?: boolean;
22
22
  filterable?: boolean;
23
23
  selectable?: boolean;
package/dist/index.js CHANGED
@@ -137,11 +137,25 @@ var Cell = ({
137
137
  var _a;
138
138
  return (_a = column.formatter) == null ? void 0 : _a.call(column, stringValue, row, column);
139
139
  }, [column.formatter, stringValue, row, column]);
140
+ const cellVerticalAlignment = {
141
+ "top": { alignItems: "flex-start" },
142
+ "middle": { alignItems: "center" },
143
+ "bottom": { alignItems: "flex-end" }
144
+ };
145
+ const cellHorizontalAlignment = {
146
+ "left": { justifyContent: "flex-start" },
147
+ "center": { justifyContent: "center" },
148
+ "right": { justifyContent: "flex-end" }
149
+ };
140
150
  const CellWithData = ({ children }) => /* @__PURE__ */ jsx6(
141
151
  "div",
142
152
  {
143
153
  className: "ndt-cell",
144
154
  title: isTitles && stringValue ? stringValue : "",
155
+ style: column.cellAlignment ? {
156
+ ...cellVerticalAlignment[column.cellAlignment.vertical],
157
+ ...cellHorizontalAlignment[column.cellAlignment.horizontal]
158
+ } : {},
145
159
  onClick: isSelectable && (typeof column.isSelectableCell === "undefined" || column.isSelectableCell || column.editable) ? onRowSelect : () => {
146
160
  },
147
161
  children
@@ -579,7 +593,7 @@ var DataTable = forwardRef(({
579
593
  if (filterValue === "") continue;
580
594
  const column = columnMap.get(field);
581
595
  if (!column) continue;
582
- result = column.headerFilter ? result.filter((e) => column.headerFilter(filterValue, String(e[field]))) : filterData(result, field, filterValue);
596
+ result = column.headerFilter ? result.filter((e) => column.headerFilter(filterValue, String(e[field]), e)) : filterData(result, field, filterValue);
583
597
  }
584
598
  if (sortBy.col) {
585
599
  result = sortData(result, sortBy.col, sortBy.type);
@@ -593,9 +607,9 @@ var DataTable = forwardRef(({
593
607
  }, [processedData, paginationPage, paginationSize]);
594
608
  const rowIdMap = useMemo4(() => {
595
609
  const map = /* @__PURE__ */ new Map();
596
- processedData.forEach((row, i) => map.set(row, i));
610
+ tableData.forEach((row, i) => map.set(row, i));
597
611
  return map;
598
- }, [processedData]);
612
+ }, [tableData]);
599
613
  const toggleRowSelection = (index) => {
600
614
  setSelectedRows((prev) => {
601
615
  const updated = new Set(prev);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nillud-data-table",
3
- "version": "1.4.10",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",