zavadil-react-common 1.2.126 → 1.2.128

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.
@@ -28,6 +28,8 @@ export type AdvancedTableProps = {
28
28
  paging: PagingRequest;
29
29
  totalItems: number;
30
30
  hover?: boolean;
31
+ showPagingOnBottom?: boolean;
32
+ showPageSizeSelection?: boolean;
31
33
  striped?: boolean;
32
34
  bordered?: boolean;
33
35
  onPagingChanged: (p: PagingRequest) => any
@@ -35,6 +37,8 @@ export type AdvancedTableProps = {
35
37
 
36
38
  export function AdvancedTable({
37
39
  hover,
40
+ showPagingOnBottom,
41
+ showPageSizeSelection,
38
42
  striped,
39
43
  bordered,
40
44
  header,
@@ -82,7 +86,9 @@ export function AdvancedTable({
82
86
  <td colSpan={header.length}>
83
87
  <div className="d-flex justify-content-between align-items-center gap-2">
84
88
  <div><Localize text='Page'/>: {paging.page + 1} / {totalPages}</div>
85
- <TablePagination paging={paging} totalItems={totalItems} onPagingChanged={onPagingChanged}/>
89
+ {
90
+ totalPages > 0 && <TablePagination paging={paging} totalItems={totalItems} onPagingChanged={onPagingChanged}/>
91
+ }
86
92
  <div><Localize text='Total items'/>: {totalItems}</div>
87
93
  </div>
88
94
  </td>
@@ -117,37 +123,47 @@ export function AdvancedTable({
117
123
  <tbody>
118
124
  {children}
119
125
  </tbody>
120
- <tfoot>
121
- <tr>
122
- <td colSpan={header.length}>
123
- <div className="d-flex justify-content-between align-items-center gap-2">
124
- <div><Localize text='Page'/>: {paging.page + 1} / {totalPages}</div>
125
- <TablePagination paging={paging} totalItems={totalItems} onPagingChanged={onPagingChanged}/>
126
- <div><Localize text='Total items'/>: {totalItems}</div>
127
- </div>
128
- </td>
129
- </tr>
130
- <tr>
131
- <td colSpan={header.length}>
132
- <div className="d-flex align-items-center gap-2 justify-content-end">
133
- <div className="text-nowrap"><Localize text='Page size'/>:</div>
134
- <div>
135
- <NumberSelect
136
- value={paging.size}
137
- options={sizes}
138
- onChange={
139
- (e) => {
140
- paging.size = e || 10
141
- onPagingChanged({...paging});
142
- }
126
+ {
127
+ totalItems > 0 && <tfoot>
128
+ {
129
+ showPagingOnBottom &&
130
+ <tr>
131
+ <td colSpan={header.length}>
132
+ <div className="d-flex justify-content-between align-items-center gap-2">
133
+ <div><Localize text='Page'/>: {paging.page + 1} / {totalPages}</div>
134
+ {
135
+ totalPages > 0 && <TablePagination paging={paging} totalItems={totalItems} onPagingChanged={onPagingChanged}/>
143
136
  }
144
- showEmptyOption={false}
145
- />
146
- </div>
147
- </div>
148
- </td>
149
- </tr>
150
- </tfoot>
137
+ <div><Localize text='Total items'/>: {totalItems}</div>
138
+ </div>
139
+ </td>
140
+ </tr>
141
+ }
142
+ {
143
+ showPageSizeSelection &&
144
+ <tr>
145
+ <td colSpan={header.length}>
146
+ <div className="d-flex align-items-center gap-2 justify-content-end">
147
+ <div className="text-nowrap"><Localize text='Page size'/>:</div>
148
+ <div>
149
+ <NumberSelect
150
+ value={paging.size}
151
+ options={sizes}
152
+ onChange={
153
+ (e) => {
154
+ paging.size = e || 10
155
+ onPagingChanged({...paging});
156
+ }
157
+ }
158
+ showEmptyOption={false}
159
+ />
160
+ </div>
161
+ </div>
162
+ </td>
163
+ </tr>
164
+ }
165
+ </tfoot>
166
+ }
151
167
  </Table>
152
168
  </div>
153
169
  );
@@ -1,16 +1,16 @@
1
1
  import React, {useCallback, useEffect, useMemo, useState} from 'react';
2
- import {EntityBase, ObjectUtil} from 'zavadil-ts-common';
2
+ import {ObjectUtil} from 'zavadil-ts-common';
3
3
  import {AdvancedTable, AdvancedTableProps} from "./AdvancedTable";
4
4
  import {RenderFunc, SelectableTableHeader, TableHeader} from "./TableTypes";
5
5
  import {BsCheckAll} from "react-icons/bs";
6
6
  import IconCheck from "../forms/IconCheck";
7
7
 
8
- export type SelectableItem<T extends EntityBase> = {
8
+ export type SelectableItem<T> = {
9
9
  selected: boolean;
10
10
  item: T;
11
11
  };
12
12
 
13
- export type TableWithSelectProps<T extends EntityBase> = Omit<AdvancedTableProps, 'header'> & {
13
+ export type TableWithSelectProps<T> = Omit<AdvancedTableProps, 'header'> & {
14
14
  showSelect?: boolean;
15
15
  header: SelectableTableHeader<T>;
16
16
  items?: Array<T>;
@@ -22,7 +22,7 @@ function createRenderer<T>(name: string): RenderFunc<T> {
22
22
  return (e: T) => ObjectUtil.getNestedValue(e, name);
23
23
  }
24
24
 
25
- export function TableWithSelect<T extends EntityBase>({
25
+ export function TableWithSelect<T>({
26
26
  showSelect,
27
27
  header,
28
28
  items,