@coreui/react-pro 4.0.0-rc.3 → 4.1.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 +157 -0
- package/dist/components/accordion/CAccordionCollapse.d.ts +1 -1
- package/dist/components/collapse/CCollapse.d.ts +4 -0
- package/dist/components/form/CFormCheck.d.ts +4 -0
- package/dist/components/form/CFormLabel.d.ts +2 -2
- package/dist/components/form/CFormSelect.d.ts +13 -0
- package/dist/components/placeholder/CPlaceholder.d.ts +51 -0
- package/dist/components/smart-table/CSmartTableHead.d.ts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.es.js +319 -217
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +319 -216
- package/dist/index.js.map +1 -1
- package/package.json +10 -10
- package/src/components/accordion/CAccordionCollapse.tsx +1 -1
- package/src/components/collapse/CCollapse.tsx +36 -3
- package/src/components/form/CFormCheck.tsx +30 -3
- package/src/components/form/CFormLabel.tsx +2 -2
- package/src/components/form/CFormSelect.tsx +28 -2
- package/src/components/form/__tests__/CFormLabel.spec.tsx +8 -0
- package/src/components/form/__tests__/__snapshots__/CFormLabel.spec.tsx.snap +11 -0
- package/src/components/grid/CCol.tsx +8 -8
- package/src/components/grid/CContainer.tsx +3 -3
- package/src/components/grid/CRow.tsx +6 -6
- package/src/components/offcanvas/COffcanvas.tsx +15 -2
- package/src/components/offcanvas/__tests__/COffcanvas.spec.tsx +1 -1
- package/src/components/offcanvas/__tests__/__snapshots__/COffcanvas.spec.tsx.snap +2 -2
- package/src/components/placeholder/CPlaceholder.tsx +114 -0
- package/src/components/placeholder/__tests__/CPlaceholder.spec.tsx +21 -0
- package/src/components/placeholder/__tests__/__snapshots__/CPlaceholder.spec.tsx.snap +17 -0
- package/src/components/smart-table/CSmartTable.tsx +27 -38
- package/src/components/smart-table/CSmartTableHead.tsx +15 -2
- package/src/index.ts +2 -0
|
@@ -95,19 +95,32 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
95
95
|
const compData = useRef({ firstRun: true, columnFiltered: 0, changeItems: 0 }).current
|
|
96
96
|
|
|
97
97
|
const previousSorterValue = useRef<SorterValue>()
|
|
98
|
+
const previousItemsValue = useRef<Item[]>()
|
|
99
|
+
|
|
100
|
+
const [_activePage, setActivePage] = useState<number>(activePage)
|
|
101
|
+
const [_items, setItems] = useState<Item[]>([])
|
|
102
|
+
const [_itemsPerPage, setItemsPerPage] = useState(itemsPerPage)
|
|
103
|
+
const [columnFilterState, setColumnFilterState] = useState<ColumnFilterValue>(
|
|
104
|
+
columnFilterValue ? columnFilterValue : {},
|
|
105
|
+
)
|
|
106
|
+
const [selectedAll, setSelectedAll] = useState<boolean | string>()
|
|
107
|
+
const [sorterState, setSorterState] = useState<SorterValue>(previousSorterValue.current || {})
|
|
108
|
+
const [tableFilterState, setTableFilterState] = useState<string>(
|
|
109
|
+
tableFilterValue ? tableFilterValue : '',
|
|
110
|
+
)
|
|
98
111
|
|
|
99
112
|
useMemo(() => {
|
|
100
113
|
if (JSON.stringify(previousSorterValue.current) !== JSON.stringify(sorterValue)) {
|
|
101
114
|
previousSorterValue.current = sorterValue
|
|
115
|
+
setSorterState({ ...sorterValue })
|
|
102
116
|
}
|
|
103
117
|
}, [sorterValue])
|
|
104
118
|
|
|
105
|
-
const previousItemsValue = useRef<Item[]>()
|
|
106
|
-
|
|
107
|
-
const [_items, setItems] = useState<Item[]>([])
|
|
108
|
-
|
|
109
119
|
useMemo(() => {
|
|
110
120
|
if (JSON.stringify(previousItemsValue.current) !== JSON.stringify(items)) {
|
|
121
|
+
if (items && items.length < _itemsPerPage * _activePage - _itemsPerPage) {
|
|
122
|
+
setActivePage(1)
|
|
123
|
+
}
|
|
111
124
|
previousItemsValue.current = items
|
|
112
125
|
|
|
113
126
|
Array.isArray(items) &&
|
|
@@ -119,19 +132,6 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
119
132
|
}
|
|
120
133
|
}, [items])
|
|
121
134
|
|
|
122
|
-
const [_itemsPerPage, setItemsPerPage] = useState(itemsPerPage)
|
|
123
|
-
const [_activePage, setActivePage] = useState<number>(activePage)
|
|
124
|
-
console.log(_activePage)
|
|
125
|
-
const [selectedAll, setSelectedAll] = useState<boolean | string>()
|
|
126
|
-
|
|
127
|
-
const [sorterState, setSorterState] = useState<SorterValue>(previousSorterValue.current || {})
|
|
128
|
-
const [tableFilterState, setTableFilterState] = useState<string>(
|
|
129
|
-
tableFilterValue ? tableFilterValue : '',
|
|
130
|
-
)
|
|
131
|
-
const [columnFilterState, setColumnFilterState] = useState<ColumnFilterValue>(
|
|
132
|
-
columnFilterValue ? columnFilterValue : {},
|
|
133
|
-
)
|
|
134
|
-
|
|
135
135
|
// functions
|
|
136
136
|
|
|
137
137
|
const isSortable = (i: number): boolean | undefined => {
|
|
@@ -161,7 +161,11 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
161
161
|
} else if (state.state === 'asc') {
|
|
162
162
|
state.state = 'desc'
|
|
163
163
|
} else {
|
|
164
|
-
|
|
164
|
+
if (typeof columnSorter === 'object' && !columnSorter.resetable) {
|
|
165
|
+
state.state = 'asc'
|
|
166
|
+
} else {
|
|
167
|
+
state.state = 0
|
|
168
|
+
}
|
|
165
169
|
}
|
|
166
170
|
} else {
|
|
167
171
|
state.column = column
|
|
@@ -184,6 +188,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
184
188
|
return
|
|
185
189
|
}
|
|
186
190
|
const newState = { ...columnFilterState, [`${colName}`]: value }
|
|
191
|
+
setActivePage(1)
|
|
187
192
|
setColumnFilterState(newState)
|
|
188
193
|
}
|
|
189
194
|
|
|
@@ -192,6 +197,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
192
197
|
if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
|
|
193
198
|
return
|
|
194
199
|
}
|
|
200
|
+
setActivePage(1)
|
|
195
201
|
setTableFilterState(value)
|
|
196
202
|
}
|
|
197
203
|
|
|
@@ -333,23 +339,6 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
333
339
|
)
|
|
334
340
|
useMemo(() => setColumnFilterState({ ...columnFilterValue }), [columnFilterValue])
|
|
335
341
|
|
|
336
|
-
//items
|
|
337
|
-
// useMemo(() => {
|
|
338
|
-
// if (
|
|
339
|
-
// items &&
|
|
340
|
-
// !compData.firstRun &&
|
|
341
|
-
// (items.length !== _items.length || JSON.stringify(items) !== JSON.stringify(_items))
|
|
342
|
-
// ) {
|
|
343
|
-
// setItems(
|
|
344
|
-
// items?.map((item: Item, index: number) => {
|
|
345
|
-
// return { ...item, _id: index }
|
|
346
|
-
// }),
|
|
347
|
-
// )
|
|
348
|
-
|
|
349
|
-
// compData.changeItems++
|
|
350
|
-
// }
|
|
351
|
-
// }, [items])
|
|
352
|
-
|
|
353
342
|
compData.firstRun = false
|
|
354
343
|
|
|
355
344
|
const handleRowChecked = (id: number, value: boolean) => {
|
|
@@ -378,6 +367,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
378
367
|
useEffect(() => {
|
|
379
368
|
if (selectable) {
|
|
380
369
|
const selected = _items.filter((item) => item._selected === true)
|
|
370
|
+
onSelectedItemsChange && onSelectedItemsChange(selected)
|
|
381
371
|
|
|
382
372
|
if (selected.length === _items.length) {
|
|
383
373
|
setSelectedAll(true)
|
|
@@ -392,8 +382,6 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
392
382
|
if (selected.length !== 0 && selected.length !== _items.length) {
|
|
393
383
|
setSelectedAll('indeterminate')
|
|
394
384
|
}
|
|
395
|
-
|
|
396
|
-
onSelectedItemsChange && onSelectedItemsChange(selected)
|
|
397
385
|
}
|
|
398
386
|
}, [_items])
|
|
399
387
|
|
|
@@ -441,6 +429,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
441
429
|
<CSmartTableHead
|
|
442
430
|
{...tableHeadProps}
|
|
443
431
|
columnFilter={columnFilter}
|
|
432
|
+
columnFilterState={columnFilterState}
|
|
444
433
|
columns={columns ? columns : rawColumnNames}
|
|
445
434
|
columnSorter={columnSorter}
|
|
446
435
|
selectable={selectable}
|
|
@@ -493,7 +482,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
|
|
|
493
482
|
|
|
494
483
|
{(pagination || itemsPerPageSelect) && (
|
|
495
484
|
<div className="row">
|
|
496
|
-
<div className="col
|
|
485
|
+
<div className="col">
|
|
497
486
|
{pagination && numberOfPages > 1 && (
|
|
498
487
|
<CSmartPagination
|
|
499
488
|
{...paginationProps}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import React, { ElementType, forwardRef, ReactNode, useEffect, useRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ColumnFilter,
|
|
6
|
+
ColumnFilterValue,
|
|
7
|
+
Column,
|
|
8
|
+
Sorter,
|
|
9
|
+
SorterValue,
|
|
10
|
+
} from './CSmartTableInterface'
|
|
5
11
|
|
|
6
12
|
import { CFormInput } from '../form/CFormInput'
|
|
7
13
|
import { CFormCheck } from '../form/CFormCheck'
|
|
@@ -10,6 +16,7 @@ import { CTableHeaderCell } from '../table/CTableHeaderCell'
|
|
|
10
16
|
import { CTableRow } from '../table/CTableRow'
|
|
11
17
|
export interface CSmartTableHeadProps extends CTableHeadProps {
|
|
12
18
|
columnFilter?: boolean | ColumnFilter
|
|
19
|
+
columnFilterState?: ColumnFilterValue
|
|
13
20
|
columnSorter?: boolean | Sorter
|
|
14
21
|
component?: string | ElementType
|
|
15
22
|
columns: (Column | string)[]
|
|
@@ -29,6 +36,7 @@ export const CSmartTableHead = forwardRef<HTMLTableSectionElement, CSmartTableHe
|
|
|
29
36
|
(
|
|
30
37
|
{
|
|
31
38
|
columnFilter,
|
|
39
|
+
columnFilterState,
|
|
32
40
|
columnSorter,
|
|
33
41
|
component: Component = CTableHead,
|
|
34
42
|
columns,
|
|
@@ -176,7 +184,11 @@ export const CSmartTableHead = forwardRef<HTMLTableSectionElement, CSmartTableHe
|
|
|
176
184
|
handleFilterOnChange &&
|
|
177
185
|
handleFilterOnChange(key(column), (event.target as HTMLInputElement).value)
|
|
178
186
|
}
|
|
179
|
-
|
|
187
|
+
value={
|
|
188
|
+
columnFilterState && columnFilterState[key(column)]
|
|
189
|
+
? columnFilterState[key(column)]
|
|
190
|
+
: ''
|
|
191
|
+
}
|
|
180
192
|
aria-label={`column name: '${label(column)}' filter input`}
|
|
181
193
|
/>
|
|
182
194
|
)}
|
|
@@ -192,6 +204,7 @@ export const CSmartTableHead = forwardRef<HTMLTableSectionElement, CSmartTableHe
|
|
|
192
204
|
|
|
193
205
|
CSmartTableHead.propTypes = {
|
|
194
206
|
columnFilter: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
|
|
207
|
+
columnFilterState: PropTypes.object,
|
|
195
208
|
columnSorter: PropTypes.bool,
|
|
196
209
|
component: PropTypes.elementType,
|
|
197
210
|
children: PropTypes.node,
|
package/src/index.ts
CHANGED
|
@@ -89,6 +89,7 @@ import { CNavbarToggler } from './components/navbar/CNavbarToggler'
|
|
|
89
89
|
import { CPagination } from './components/pagination/CPagination'
|
|
90
90
|
import { CPaginationItem } from './components/pagination/CPaginationItem'
|
|
91
91
|
import { CSmartPagination } from './components/pagination/CSmartPagination'
|
|
92
|
+
import { CPlaceholder } from './components/placeholder/CPlaceholder'
|
|
92
93
|
import { CPopover } from './components/popover/CPopover'
|
|
93
94
|
import { CProgress } from './components/progress/CProgress'
|
|
94
95
|
import { CProgressBar } from './components/progress/CProgressBar'
|
|
@@ -212,6 +213,7 @@ export {
|
|
|
212
213
|
CNavbarToggler,
|
|
213
214
|
CPagination,
|
|
214
215
|
CPaginationItem,
|
|
216
|
+
CPlaceholder,
|
|
215
217
|
CPopover,
|
|
216
218
|
CProgress,
|
|
217
219
|
CProgressBar,
|