nillud-data-table 1.2.0 → 1.2.2
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 +97 -84
- package/dist/export/index.d.ts +9 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/styles.css +28 -5
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -414,136 +414,149 @@ scrollable
|
|
414
414
|
scrollHeight={410}
|
415
415
|
```
|
416
416
|
|
417
|
-
###
|
417
|
+
### headerGroup
|
418
418
|
|
419
|
-
Необязательный параметр.
|
419
|
+
Необязательный параметр. Передается **массив объектов**. Отображает сгруппированные заголовки таблицы, где title - заголовок группы, а cols - количество столбцов, на которое растягивается группа
|
420
420
|
|
421
|
-
```
|
422
|
-
|
423
|
-
-или-
|
424
|
-
yarn add exceljs docx file-saver
|
421
|
+
```tsx
|
422
|
+
headerGroup={[{ title: 'Личные данные', cols: 4 }, { title: 'Оборудование', cols: 2 }]}
|
425
423
|
```
|
426
424
|
|
427
|
-
|
425
|
+
### groupBy
|
428
426
|
|
429
|
-
|
430
|
-
import { DataTable, ExportSection } from 'nillud-data-table'
|
427
|
+
Необязательный параметр. Передается **строка**. Отображает строки таблицы, сгруппированные по столбцу, указанному в groupBy, каждую группу можно свернуть и раскрыть
|
431
428
|
|
432
|
-
|
433
|
-
|
434
|
-
columns={columns}
|
435
|
-
tableName={'current-tasks'}
|
436
|
-
ExportSectionComponent={ExportSection}
|
437
|
-
/>
|
429
|
+
```tsx
|
430
|
+
groupBy={'status'}
|
438
431
|
```
|
439
432
|
|
440
|
-
###
|
441
|
-
|
442
|
-
Необязательный параметр. Принимает в себя массив объектов формата.
|
443
|
-
По умолчанию:
|
444
|
-
- Ключ header содержит в себе значение **title** объекта из массива columns
|
445
|
-
- Ключ key содержит в себе значение **field** объекта из массива columns
|
446
|
-
- Ключ width по умолчанию умеет ширину 20 у.е. по системе Excel
|
433
|
+
### isTitles
|
447
434
|
|
448
|
-
|
449
|
-
Для изменения/добавления каких-либо параметров в массиве необходимо указать объект с нужным ключом **key**
|
435
|
+
Необязательный параметр. Передается **boolean** значение. Отображает **html title** при наведении на ячейку, по умолчанию **false**
|
450
436
|
|
451
437
|
```tsx
|
452
|
-
|
453
|
-
{
|
454
|
-
key: 'name',
|
455
|
-
width: 50
|
456
|
-
}
|
457
|
-
]}
|
438
|
+
isTitles
|
458
439
|
```
|
459
440
|
|
460
|
-
###
|
441
|
+
### Возможности useRef
|
461
442
|
|
462
|
-
|
443
|
+
Возможность подключиться напрямую к таблице и получить данные после всех манипуляций
|
463
444
|
|
464
|
-
|
445
|
+
```tsx
|
446
|
+
import { useRef } from "react";
|
447
|
+
|
448
|
+
const tableRef = useRef<DataTableRef>(null);
|
449
|
+
|
450
|
+
<DataTable
|
451
|
+
...
|
452
|
+
ref={tableRef}
|
453
|
+
...
|
454
|
+
/>
|
455
|
+
|
456
|
+
const func = () => {
|
457
|
+
const data = tableRef.current.getData() // Получить текущие данные, после сортировки и фильтрации
|
458
|
+
const currData = tableRef.current.getCurrentData() // Получить данные с текущей таблицы пагинации
|
459
|
+
}
|
465
460
|
|
466
|
-
```bash
|
467
|
-
npm i exceljs
|
468
|
-
-или-
|
469
|
-
yarn add exceljs
|
470
461
|
```
|
471
462
|
|
472
|
-
|
463
|
+
## Возможности экспорта данных
|
473
464
|
|
474
|
-
|
465
|
+
### ExportExcel
|
475
466
|
|
476
|
-
|
467
|
+
Требует установки пакета Exceljs
|
477
468
|
|
478
469
|
```bash
|
479
|
-
npm
|
480
|
-
|
481
|
-
yarn add
|
470
|
+
npm install exceljs
|
471
|
+
# или
|
472
|
+
yarn add exceljs
|
482
473
|
```
|
483
474
|
|
484
|
-
|
485
|
-
|
486
|
-
Необязательный параметр. Используется вместе с **wordBtn**. Принимает в себя объект
|
487
|
-
|
475
|
+
Пример вызова
|
488
476
|
```tsx
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
477
|
+
<ExportExcel
|
478
|
+
columns={columns} // Колонки таблицы
|
479
|
+
excelData={tableData} // Данные таблицы
|
480
|
+
title={'table-name'} // Название таблицы
|
481
|
+
exportCustomColumns={[{
|
482
|
+
header: 'Наименование',
|
483
|
+
key: 'name',
|
484
|
+
width: 50,
|
485
|
+
...
|
486
|
+
}]} // Описание ниже
|
487
|
+
/>
|
495
488
|
```
|
496
489
|
|
497
|
-
|
490
|
+
#### exportCustomColumns
|
498
491
|
|
499
|
-
Необязательный параметр.
|
492
|
+
Необязательный параметр. Принимает в себя массив объектов формата.
|
493
|
+
По умолчанию:
|
494
|
+
- Ключ header содержит в себе значение **title** объекта из массива columns
|
495
|
+
- Ключ key содержит в себе значение **field** объекта из массива columns
|
496
|
+
- Ключ width по умолчанию умеет ширину 20 у.е. по системе Excel
|
500
497
|
|
501
|
-
|
502
|
-
|
503
|
-
```
|
498
|
+
Дополнительные параметры можно добавлять исходя из документации [exceljs](https://www.npmjs.com/package/exceljs).
|
499
|
+
Для изменения/добавления каких-либо параметров в массиве необходимо указать объект с нужным ключом **key**
|
504
500
|
|
505
|
-
###
|
501
|
+
### ExportWord
|
506
502
|
|
507
|
-
|
503
|
+
Требует установки пакетов docx и file-saver
|
508
504
|
|
509
|
-
```
|
510
|
-
|
505
|
+
```bash
|
506
|
+
npm install docx file-saver
|
507
|
+
# или
|
508
|
+
yarn add docx file-saver
|
511
509
|
```
|
512
510
|
|
513
|
-
|
514
|
-
|
515
|
-
Необязательный параметр. Передается **строка**. Отображает строки таблицы, сгруппированные по столбцу, указанному в groupBy, каждую группу можно свернуть и раскрыть
|
516
|
-
|
511
|
+
Пример вызова
|
517
512
|
```tsx
|
518
|
-
|
513
|
+
<ExportWord
|
514
|
+
columns={columns} // Колонки таблицы
|
515
|
+
wordData={tableData} // Данные таблицы
|
516
|
+
title={'table-name'} // Название таблицы
|
517
|
+
options={
|
518
|
+
fontSize: 20,
|
519
|
+
boldHeaders: false,
|
520
|
+
autoLandscape: false,
|
521
|
+
maxColumnsBeforeLandscape: 5
|
522
|
+
} // Описание ниже
|
523
|
+
/>
|
519
524
|
```
|
520
525
|
|
521
|
-
|
526
|
+
#### wordOptions
|
522
527
|
|
523
|
-
Необязательный параметр.
|
528
|
+
Необязательный параметр. Принимает в себя объект:
|
524
529
|
|
525
530
|
```tsx
|
526
|
-
|
531
|
+
options = {{
|
532
|
+
fontSize: 20, // размер шрифта,
|
533
|
+
boldHeaders: false, // Заголовки жирным начертанием,
|
534
|
+
autoLandscape: false, // делать ли альбомный формат,
|
535
|
+
maxColumnsBeforeLandscape: 5 // и от скольки столбцов.
|
536
|
+
}}
|
527
537
|
```
|
528
538
|
|
529
|
-
###
|
539
|
+
### ExportSection
|
530
540
|
|
531
|
-
|
541
|
+
Если нужно использовать секцию, по умолчанию 2 кнопки Word и Excel справа. А так же **downloadSectionLeftSideContent** принимает **React.Component**
|
532
542
|
|
533
543
|
```tsx
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
...
|
544
|
+
<ExportSection
|
545
|
+
wordBtn // boolean - использовать экспорт Word
|
546
|
+
excelBtn // boolean - использовать экспорт Excel
|
547
|
+
downloadSectionLeftSideContent={<>...</>} // React.Component - произвольный контент
|
548
|
+
tableData={tableData} // Данные таблицы
|
549
|
+
columns={columns} // Колонки таблицы
|
550
|
+
tableName={'table-name'} // Название таблицы
|
551
|
+
exportCustomColumns={[{...}, {...}]}
|
552
|
+
wordOptions={{...}}
|
542
553
|
/>
|
554
|
+
```
|
543
555
|
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
}
|
556
|
+
##### downloadSectionLeftSideContent
|
557
|
+
|
558
|
+
Необязательный параметр. Передается **React.Component**. Отображает компонент с левой стороны от кнопок экспорта. Создано для экономии места
|
548
559
|
|
560
|
+
```tsx
|
561
|
+
downloadSectionLeftSideContent={<button className='base-button' onClick={() => setCanvas(true)}>OffCanvas</button>}
|
549
562
|
```
|
package/dist/export/index.d.ts
CHANGED
@@ -22,6 +22,13 @@ type ExportOptions = {
|
|
22
22
|
autoLandscape?: boolean;
|
23
23
|
maxColumnsBeforeLandscape?: number;
|
24
24
|
};
|
25
|
+
type CustomColumn = {
|
26
|
+
header: string;
|
27
|
+
key: string;
|
28
|
+
width?: number;
|
29
|
+
[key: string]: any;
|
30
|
+
};
|
31
|
+
type CustomColumns = Array<CustomColumn> | null;
|
25
32
|
type ExportSectionTypes = {
|
26
33
|
wordBtn: boolean;
|
27
34
|
excelBtn: boolean;
|
@@ -29,18 +36,14 @@ type ExportSectionTypes = {
|
|
29
36
|
tableData: TableData;
|
30
37
|
columns: Array<Column>;
|
31
38
|
tableName: string;
|
32
|
-
exportCustomColumns?:
|
33
|
-
header: string;
|
34
|
-
key: string;
|
35
|
-
width: number;
|
36
|
-
}> | null;
|
39
|
+
exportCustomColumns?: CustomColumns;
|
37
40
|
wordOptions?: ExportOptions;
|
38
41
|
};
|
39
42
|
type ExcelExportTypes = {
|
40
43
|
columns: Array<Column>;
|
41
44
|
excelData: TableData;
|
42
45
|
title: string;
|
43
|
-
exportCustomColumns
|
46
|
+
exportCustomColumns?: ExportSectionTypes["exportCustomColumns"];
|
44
47
|
};
|
45
48
|
type ExportWordTypes = {
|
46
49
|
wordData: TableData;
|
package/dist/index.d.ts
CHANGED
@@ -11,7 +11,7 @@ type Column = {
|
|
11
11
|
autoinc?: boolean;
|
12
12
|
formatter?: (cell: string, row: TableElement) => ReactElement;
|
13
13
|
exportCustomCell?: (cell: string, row: TableElement) => string;
|
14
|
-
headerFilter?: (headerValue: string, rowValue: string) =>
|
14
|
+
headerFilter?: (headerValue: string, rowValue: string) => boolean;
|
15
15
|
sortable?: boolean;
|
16
16
|
filterable?: boolean;
|
17
17
|
};
|
package/dist/index.js
CHANGED
@@ -235,7 +235,7 @@ var TableFooter = ({
|
|
235
235
|
}
|
236
236
|
};
|
237
237
|
const renderPageNumbers = () => {
|
238
|
-
if (totalPages <= 1) return
|
238
|
+
if (totalPages <= 1) return /* @__PURE__ */ jsx12("button", { onClick: () => handlePageChange(0), children: "1" }, "page-0");
|
239
239
|
const pages = [];
|
240
240
|
const maxVisible = 5;
|
241
241
|
let start = Math.max(0, paginationPage - Math.floor(maxVisible / 2));
|
@@ -411,7 +411,7 @@ var DataTable = forwardRef(({
|
|
411
411
|
}, ref) => {
|
412
412
|
const [filters, setFilters] = useState({});
|
413
413
|
const [sortBy, setSortBy] = useState({ col: "", type: "asc" });
|
414
|
-
const [paginationSize, setPaginationSize] = useState((paginationCounts == null ? void 0 : paginationCounts[0]) ||
|
414
|
+
const [paginationSize, setPaginationSize] = useState((paginationCounts == null ? void 0 : paginationCounts[0]) || 0);
|
415
415
|
const [paginationPage, setPaginationPage] = useState(0);
|
416
416
|
const [collapsedGroups, setCollapsedGroups] = useState({});
|
417
417
|
const toggleGroup = (groupKey) => {
|
package/dist/styles.css
CHANGED
@@ -15,12 +15,14 @@
|
|
15
15
|
border-bottom: 2px solid #ddd;
|
16
16
|
}
|
17
17
|
.ndt-table-container .ndt-table .ndt-table-columns .ndt-column {
|
18
|
-
padding:
|
18
|
+
padding: 10px 10px;
|
19
19
|
}
|
20
20
|
.ndt-table-container .ndt-table .ndt-table-columns .ndt-column:not(:last-child) {
|
21
21
|
border-right: 1px solid #ddd;
|
22
22
|
}
|
23
23
|
.ndt-table-container .ndt-table .ndt-table-columns .ndt-column .ndt-column-head {
|
24
|
+
font-size: 14px;
|
25
|
+
font-weight: 700;
|
24
26
|
display: flex;
|
25
27
|
align-items: center;
|
26
28
|
justify-content: space-between;
|
@@ -45,7 +47,15 @@
|
|
45
47
|
}
|
46
48
|
.ndt-table-container .ndt-table .ndt-table-columns .ndt-column .ndt-column-footer input {
|
47
49
|
width: 100%;
|
48
|
-
|
50
|
+
color: #222;
|
51
|
+
font-weight: 400;
|
52
|
+
letter-spacing: -0.01em;
|
53
|
+
line-height: 24px;
|
54
|
+
border: 1px solid #d9d9d9;
|
55
|
+
border-radius: 5px;
|
56
|
+
font-size: 14px;
|
57
|
+
padding: 4px 11px;
|
58
|
+
height: 43px;
|
49
59
|
}
|
50
60
|
.ndt-table-container .ndt-table .ndt-table-body {
|
51
61
|
z-index: 1000;
|
@@ -81,6 +91,13 @@
|
|
81
91
|
.ndt-table-container .ndt-table .ndt-table-body .ndt-table-row:nth-child(2n) {
|
82
92
|
background-color: rgba(0, 0, 0, 0.05);
|
83
93
|
}
|
94
|
+
.ndt-table-container .ndt-table .ndt-table-body .ndt-table-row .ndt-cell {
|
95
|
+
display: flex;
|
96
|
+
align-items: center;
|
97
|
+
color: #333;
|
98
|
+
font-size: 16px;
|
99
|
+
font-weight: 400;
|
100
|
+
}
|
84
101
|
.ndt-table-container .ndt-table .ndt-table-body .ndt-table-row .ndt-cell:not(:last-child) {
|
85
102
|
border-right: 1px solid #ddd;
|
86
103
|
}
|
@@ -91,14 +108,20 @@
|
|
91
108
|
border-top: 2px solid #cccccc;
|
92
109
|
padding: 10px;
|
93
110
|
}
|
111
|
+
.ndt-table-container .ndt-table .ndt-table-footer .ndt-footer-count {
|
112
|
+
font-size: 14px;
|
113
|
+
color: #777777;
|
114
|
+
}
|
94
115
|
.ndt-table-container .ndt-table .ndt-table-footer .ndt-footer-pagination {
|
95
116
|
display: flex;
|
96
117
|
}
|
97
118
|
.ndt-table-container .ndt-table .ndt-table-footer .ndt-footer-pagination .ndt-pagination-counts span {
|
98
119
|
margin-right: 5px;
|
120
|
+
color: #777777;
|
99
121
|
}
|
100
122
|
.ndt-table-container .ndt-table .ndt-table-footer .ndt-footer-pagination .ndt-pagination-counts select {
|
101
|
-
height:
|
123
|
+
height: 32px;
|
124
|
+
border: 1px solid #cccccc;
|
102
125
|
min-width: 50px;
|
103
126
|
text-align: center;
|
104
127
|
}
|
@@ -107,12 +130,12 @@
|
|
107
130
|
display: flex;
|
108
131
|
}
|
109
132
|
.ndt-table-container .ndt-table .ndt-table-footer .ndt-footer-pagination .ndt-pagination-buttons button {
|
110
|
-
margin-right:
|
133
|
+
margin-right: 10px;
|
111
134
|
background-color: #fff;
|
112
135
|
border: 1px solid #cccccc;
|
113
136
|
border-radius: 4px;
|
114
137
|
cursor: pointer;
|
115
|
-
padding: 4px;
|
138
|
+
padding: 4px 10px;
|
116
139
|
height: 100%;
|
117
140
|
font-size: 14px;
|
118
141
|
}
|
package/dist/styles.css.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../components/data-table/styles/data-table.scss"],"names":[],"mappings":";AACI;EACI;EACA;;AAEA;AAAA;EAEI;;AAGJ;AAAA;EAEI;;AAGJ;EACI;;AAEA;EACI;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAMR;EACI;EACA;;AAMhB;EACI;;AAEA;EACI;EACA;EACA;;AAGA;EACI;AACA;;AAGJ;EACI;AACA;EACA;AACA;;AAGJ;EACI;AACA;EACA;AACA;;AAGJ;EACI;AACA;;AAKJ;EACI;;AAGJ;EACI;;
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../components/data-table/styles/data-table.scss"],"names":[],"mappings":";AACI;EACI;EACA;;AAEA;AAAA;EAEI;;AAGJ;AAAA;EAEI;;AAGJ;EACI;;AAEA;EACI;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAMR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMhB;EACI;;AAEA;EACI;EACA;EACA;;AAGA;EACI;AACA;;AAGJ;EACI;AACA;EACA;AACA;;AAGJ;EACI;AACA;EACA;AACA;;AAGJ;EACI;AACA;;AAKJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAMhB;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGI;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EAGI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;;AAEA;EACI;;AAEA;EACI;EACA;EACA;;;AAUhC;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEA;EAGI;EACA;EACA;;AAIR;EACI;;AAEA;EAGI;EACA;EACA;;;AAKZ;EACI;EACA;EACA;EACA;EACA;;AAIA;EACI","file":"styles.css"}
|