nillud-data-table 1.2.0 → 1.2.1

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
@@ -414,136 +414,149 @@ scrollable
414
414
  scrollHeight={410}
415
415
  ```
416
416
 
417
- ### exportSectionComponent
417
+ ### headerGroup
418
418
 
419
- Необязательный параметр. Необходимо подключить модуль ExportSection и установить пакеты для экспорта Word и Excel
419
+ Необязательный параметр. Передается **массив объектов**. Отображает сгруппированные заголовки таблицы, где title - заголовок группы, а cols - количество столбцов, на которое растягивается группа
420
420
 
421
- ```bash
422
- npm i exceljs docx file-saver
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
- ```tsx
430
- import { DataTable, ExportSection } from 'nillud-data-table'
427
+ Необязательный параметр. Передается **строка**. Отображает строки таблицы, сгруппированные по столбцу, указанному в groupBy, каждую группу можно свернуть и раскрыть
431
428
 
432
- <DataTable
433
- tableData={tableData}
434
- columns={columns}
435
- tableName={'current-tasks'}
436
- ExportSectionComponent={ExportSection}
437
- />
429
+ ```tsx
430
+ groupBy={'status'}
438
431
  ```
439
432
 
440
- ### exportCustomColumns
441
-
442
- Необязательный параметр. Принимает в себя массив объектов формата.
443
- По умолчанию:
444
- - Ключ header содержит в себе значение **title** объекта из массива columns
445
- - Ключ key содержит в себе значение **field** объекта из массива columns
446
- - Ключ width по умолчанию умеет ширину 20 у.е. по системе Excel
433
+ ### isTitles
447
434
 
448
- Дополнительные параметры можно добавлять исходя из документации [exceljs](https://www.npmjs.com/package/exceljs).
449
- Для изменения/добавления каких-либо параметров в массиве необходимо указать объект с нужным ключом **key**
435
+ Необязательный параметр. Передается **boolean** значение. Отображает **html title** при наведении на ячейку, по умолчанию **false**
450
436
 
451
437
  ```tsx
452
- excelCustomColumns={[
453
- {
454
- key: 'name',
455
- width: 50
456
- }
457
- ]}
438
+ isTitles
458
439
  ```
459
440
 
460
- ### excelBtn
441
+ ### Возможности useRef
461
442
 
462
- Необязательный параметр. Тип **boolean**, по умолчанию **false**. При значении **true** над таблицей с правой стороны появляется кнопка экспорта Excel, которая по умолчанию принимает в себя исходный массив **tableData**
443
+ Возможность подключиться напрямую к таблице и получить данные после всех манипуляций
463
444
 
464
- Для использования модуля Excel необходимо установить библиотеку [exceljs](https://www.npmjs.com/package/exceljs)
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
- ### wordBtn
463
+ ## Возможности экспорта данных
473
464
 
474
- Необязательный параметр. Тип **boolean**, по умолчанию **false**. При значении **true** над таблицей с правой стороны появляется кнопка экспорта Word, которая по умолчанию принимает в себя исходный массив **tableData**
465
+ ### ExportExcel
475
466
 
476
- Для использования модуля Word необходимо установить библиотеки [docx](https://www.npmjs.com/package/docx) и [file-saver](https://www.npmjs.com/package/file-saver)
467
+ Требует установки пакета Exceljs
477
468
 
478
469
  ```bash
479
- npm i docx file-saver
480
- -или-
481
- yarn add docx file-saver
470
+ npm install exceljs
471
+ # или
472
+ yarn add exceljs
482
473
  ```
483
474
 
484
- ### wordOptions
485
-
486
- Необязательный параметр. Используется вместе с **wordBtn**. Принимает в себя объект
487
-
475
+ Пример вызова
488
476
  ```tsx
489
- options = {
490
- fontSize: 20, // размер шрифта,
491
- boldHeaders: false, // Заголовки жирным начертанием,
492
- autoLandscape: false, // делать ли альбомный формат,
493
- maxColumnsBeforeLandscape: 5 // и от скольки столбцов.
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
- ### downloadSectionLeftSideContent
490
+ #### exportCustomColumns
498
491
 
499
- Необязательный параметр. Передается **React.Component**. Отображает компонент с левой стороны от кнопок экспорта. Создано для экономии места
492
+ Необязательный параметр. Принимает в себя массив объектов формата.
493
+ По умолчанию:
494
+ - Ключ header содержит в себе значение **title** объекта из массива columns
495
+ - Ключ key содержит в себе значение **field** объекта из массива columns
496
+ - Ключ width по умолчанию умеет ширину 20 у.е. по системе Excel
500
497
 
501
- ```tsx
502
- downloadSectionLeftSideContent={<button className='base-button' onClick={() => setCanvas(true)}>OffCanvas</button>}
503
- ```
498
+ Дополнительные параметры можно добавлять исходя из документации [exceljs](https://www.npmjs.com/package/exceljs).
499
+ Для изменения/добавления каких-либо параметров в массиве необходимо указать объект с нужным ключом **key**
504
500
 
505
- ### headerGroup
501
+ ### ExportWord
506
502
 
507
- Необязательный параметр. Передается **массив объектов**. Отображает сгруппированные заголовки таблицы, где title - заголовок группы, а cols - количество столбцов, на которое растягивается группа
503
+ Требует установки пакетов docx и file-saver
508
504
 
509
- ```tsx
510
- headerGroup={[{ title: 'Личные данные', cols: 4 }, { title: 'Оборудование', cols: 2 }]}
505
+ ```bash
506
+ npm install docx file-saver
507
+ # или
508
+ yarn add docx file-saver
511
509
  ```
512
510
 
513
- ### groupBy
514
-
515
- Необязательный параметр. Передается **строка**. Отображает строки таблицы, сгруппированные по столбцу, указанному в groupBy, каждую группу можно свернуть и раскрыть
516
-
511
+ Пример вызова
517
512
  ```tsx
518
- groupBy={'status'}
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
- ### isTitles
526
+ #### wordOptions
522
527
 
523
- Необязательный параметр. Передается **boolean** значение. Отображает **html title** при наведении на ячейку, по умолчанию **false**
528
+ Необязательный параметр. Принимает в себя объект:
524
529
 
525
530
  ```tsx
526
- isTitles
531
+ options = {{
532
+ fontSize: 20, // размер шрифта,
533
+ boldHeaders: false, // Заголовки жирным начертанием,
534
+ autoLandscape: false, // делать ли альбомный формат,
535
+ maxColumnsBeforeLandscape: 5 // и от скольки столбцов.
536
+ }}
527
537
  ```
528
538
 
529
- ### Возможности useRef
539
+ ### ExportSection
530
540
 
531
- Возможность подключиться напрямую к таблице и получить данные после всех манипуляций
541
+ Если нужно использовать секцию, по умолчанию 2 кнопки Word и Excel справа. А так же **downloadSectionLeftSideContent** принимает **React.Component**
532
542
 
533
543
  ```tsx
534
- import { useRef } from "react";
535
-
536
- const tableRef = useRef<DataTableRef>(null);
537
-
538
- <DataTable
539
- ...
540
- ref={tableRef}
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
- const func = () => {
545
- const data = tableRef.current.getData() // Получить текущие данные, после сортировки и фильтрации
546
- const currData = tableRef.current.getCurrentData() // Получить данные с текущей таблицы пагинации
547
- }
556
+ ##### downloadSectionLeftSideContent
557
+
558
+ Необязательный параметр. Передается **React.Component**. Отображает компонент с левой стороны от кнопок экспорта. Создано для экономии места
548
559
 
560
+ ```tsx
561
+ downloadSectionLeftSideContent={<button className='base-button' onClick={() => setCanvas(true)}>OffCanvas</button>}
549
562
  ```
@@ -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?: Array<{
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: ExportSectionTypes["exportCustomColumns"];
46
+ exportCustomColumns?: ExportSectionTypes["exportCustomColumns"];
44
47
  };
45
48
  type ExportWordTypes = {
46
49
  wordData: TableData;
package/dist/index.js CHANGED
@@ -235,7 +235,7 @@ var TableFooter = ({
235
235
  }
236
236
  };
237
237
  const renderPageNumbers = () => {
238
- if (totalPages <= 1) return null;
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]) || 10);
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: 16px 10px;
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
- padding: 4px;
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: 25px;
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: 5px;
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
  }
@@ -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;;AAIA;EACI;;AAMhB;EACI;EACA;EACA;EACA;EACA;;AAIA;EACI;;AAGI;EACI;;AAGJ;EACI;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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nillud-data-table",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",