@addev-be/ui 0.6.11 → 0.6.12
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/package.json +1 -1
- package/src/components/data/DataGrid/helpers/columns.tsx +24 -0
- package/src/components/data/DataGrid/hooks/useDataGrid.tsx +1 -1
- package/src/components/data/DataGrid/index.tsx +3 -1
- package/src/components/data/DataGrid/types.ts +4 -1
- package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +25 -2
- package/src/components/data/SqlRequestDataGrid/index.tsx +3 -0
- package/src/components/data/index.ts +6 -1
- package/src/components/layout/Modal/styles.ts +11 -0
- package/src/helpers/dates.ts +8 -0
package/package.json
CHANGED
|
@@ -90,6 +90,8 @@ export const dateColumn = <R extends Record<string, any>>(
|
|
|
90
90
|
name: title,
|
|
91
91
|
type: 'date',
|
|
92
92
|
render: (row) => moment(row[key]).format('DD/MM/YYYY') ?? '',
|
|
93
|
+
excelFormatter: () => 'dd/mm/yyyy',
|
|
94
|
+
excelValue: (date) => moment(date).format('DD/MM/YYYY') ?? '',
|
|
93
95
|
getter: (row) => row[key] ?? '',
|
|
94
96
|
sortGetter: (row) => row[key] ?? '',
|
|
95
97
|
footer: (_, filteredRows) => `${filteredRows.length} éléments`,
|
|
@@ -101,6 +103,28 @@ export const dateColumn = <R extends Record<string, any>>(
|
|
|
101
103
|
},
|
|
102
104
|
});
|
|
103
105
|
|
|
106
|
+
export const dateTimeColumn = <R extends Record<string, any>>(
|
|
107
|
+
key: string,
|
|
108
|
+
title: string,
|
|
109
|
+
options?: Partial<DataGridColumn<R>>
|
|
110
|
+
): DataGridColumns<R> => ({
|
|
111
|
+
[key]: {
|
|
112
|
+
name: title,
|
|
113
|
+
type: 'date',
|
|
114
|
+
render: (row) => moment(row[key]).format('DD/MM/YYYY HH:mm:ss') ?? '',
|
|
115
|
+
excelFormatter: () => 'dd/mm/yyyy hh:mm:ss',
|
|
116
|
+
excelValue: (date) => moment(date).format('DD/MM/YYYY HH:mm:ss') ?? '',
|
|
117
|
+
getter: (row) => row[key] ?? '',
|
|
118
|
+
sortGetter: (row) => row[key] ?? '',
|
|
119
|
+
footer: (_, filteredRows) => `${filteredRows.length} éléments`,
|
|
120
|
+
filter: {
|
|
121
|
+
...dateFilter(key),
|
|
122
|
+
renderer: (value) => moment(value).format('DD/MM/YYYY HH:mm:ss') ?? '',
|
|
123
|
+
},
|
|
124
|
+
...options,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
|
|
104
128
|
export const monthColumn = <R extends Record<string, any>>(
|
|
105
129
|
key: string,
|
|
106
130
|
title: string,
|
|
@@ -58,7 +58,7 @@ export const useDataGrid = <R,>(
|
|
|
58
58
|
const gridTemplateColumns = useMemo(
|
|
59
59
|
() =>
|
|
60
60
|
[
|
|
61
|
-
...(selectable ? ['var(--space-
|
|
61
|
+
...(selectable ? ['var(--space-8)'] : []),
|
|
62
62
|
...visibleColumns.map(([, col]) => `${col.width ?? 150}px`),
|
|
63
63
|
].join(' '),
|
|
64
64
|
[selectable, visibleColumns]
|
|
@@ -38,14 +38,16 @@ export const DataGridInner = <R,>(
|
|
|
38
38
|
sortedRows,
|
|
39
39
|
onVisibleRowsChange,
|
|
40
40
|
refresh,
|
|
41
|
+
setSelectedKeys,
|
|
41
42
|
} = contextProps;
|
|
42
43
|
|
|
43
44
|
useImperativeHandle(
|
|
44
45
|
ref,
|
|
45
46
|
() => ({
|
|
46
47
|
refresh,
|
|
48
|
+
setSelectedKeys,
|
|
47
49
|
}),
|
|
48
|
-
[refresh]
|
|
50
|
+
[refresh, setSelectedKeys]
|
|
49
51
|
);
|
|
50
52
|
|
|
51
53
|
const hasFooter = Object.values(columns).some((col) => col.footer);
|
|
@@ -270,4 +270,7 @@ export type DataGridRowTemplateProps<R> = {
|
|
|
270
270
|
context: DataGridContext<R>;
|
|
271
271
|
};
|
|
272
272
|
|
|
273
|
-
export type DataGridRefProps<R> = Pick<
|
|
273
|
+
export type DataGridRefProps<R> = Pick<
|
|
274
|
+
DataGridContextProps<R>,
|
|
275
|
+
'refresh' | 'setSelectedKeys'
|
|
276
|
+
>;
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
numberFilter,
|
|
7
7
|
textFilter,
|
|
8
8
|
} from '../../DataGrid/helpers';
|
|
9
|
+
import { formatDate, formatDateTime } from '../../../../helpers/dates';
|
|
9
10
|
import {
|
|
10
11
|
formatMoney,
|
|
11
12
|
formatNumber,
|
|
@@ -13,8 +14,6 @@ import {
|
|
|
13
14
|
formatPercentage,
|
|
14
15
|
} from '../../../../helpers/numbers';
|
|
15
16
|
|
|
16
|
-
import { formatDate } from '../../../../helpers/dates';
|
|
17
|
-
|
|
18
17
|
export const sqlTextColumn = <R extends Record<string, any>>(
|
|
19
18
|
key: string,
|
|
20
19
|
title: string,
|
|
@@ -121,6 +120,30 @@ export const sqlDateColumn = <R extends Record<string, any>>(
|
|
|
121
120
|
},
|
|
122
121
|
});
|
|
123
122
|
|
|
123
|
+
export const sqlDateTimeColumn = <R extends Record<string, any>>(
|
|
124
|
+
key: string,
|
|
125
|
+
title: string,
|
|
126
|
+
options?: Partial<SqlRequestDataGridColumn<R>>
|
|
127
|
+
): SqlRequestDataGridColumns<R> => ({
|
|
128
|
+
[key]: {
|
|
129
|
+
name: title,
|
|
130
|
+
type: 'date',
|
|
131
|
+
render: (row) => formatDateTime(row[key]),
|
|
132
|
+
getter: (row) => row[key] ?? '',
|
|
133
|
+
sortGetter: (row) => row[key] ?? '',
|
|
134
|
+
excelFormatter: () => 'dd/mm/yyyy hh:mm:ss',
|
|
135
|
+
excelValue: (value) => formatDateTime(value, 'YYYY-MM-DD HH:mm:ss'),
|
|
136
|
+
filter: {
|
|
137
|
+
...textFilter(key),
|
|
138
|
+
getter: (value) => value[key] ?? '',
|
|
139
|
+
formatter: (value) => formatDateTime(value),
|
|
140
|
+
renderer: (value) => formatDateTime(value),
|
|
141
|
+
},
|
|
142
|
+
footer: (rows) => `${rows[0][key]} éléments`,
|
|
143
|
+
...options,
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
|
|
124
147
|
export const sqlMonthColumn = <R extends Record<string, any>>(
|
|
125
148
|
key: string,
|
|
126
149
|
title: string,
|
|
@@ -43,6 +43,7 @@ export const SqlRequestDataGridInner = <R,>(
|
|
|
43
43
|
const [sqlRequest, sqlIdRequest, sqlPartialRequest] = useSqlRequestHandler<R>(
|
|
44
44
|
props.type
|
|
45
45
|
);
|
|
46
|
+
const gridRef = useRef<DataGridRefProps<R>>(null);
|
|
46
47
|
|
|
47
48
|
const [conditions, setConditions] = useState<Record<string, ConditionDTO>>(
|
|
48
49
|
{}
|
|
@@ -348,12 +349,14 @@ export const SqlRequestDataGridInner = <R,>(
|
|
|
348
349
|
ref,
|
|
349
350
|
() => ({
|
|
350
351
|
refresh,
|
|
352
|
+
setSelectedKeys: gridRef.current?.setSelectedKeys ?? (() => {}),
|
|
351
353
|
}),
|
|
352
354
|
[refresh]
|
|
353
355
|
);
|
|
354
356
|
|
|
355
357
|
return (
|
|
356
358
|
<DataGrid
|
|
359
|
+
ref={gridRef}
|
|
357
360
|
onVisibleRowsChange={onVisibleRowsChanged}
|
|
358
361
|
filter={false}
|
|
359
362
|
sort={false}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
export * from './DataGrid';
|
|
2
2
|
export * from './DataGrid/helpers';
|
|
3
3
|
export * from './DataGrid/styles';
|
|
4
|
+
export * from './DataGrid/types';
|
|
5
|
+
|
|
4
6
|
export * from './AdvancedRequestDataGrid';
|
|
7
|
+
export * from './AdvancedRequestDataGrid/helpers';
|
|
8
|
+
|
|
5
9
|
export * from './SqlRequestDataGrid';
|
|
6
10
|
export * from './SqlRequestDataGrid/helpers';
|
|
7
11
|
export * from './SqlRequestDataGrid/types';
|
|
12
|
+
|
|
8
13
|
export * from './SqlRequestGrid';
|
|
9
14
|
export * from './SqlRequestGrid/types';
|
|
15
|
+
|
|
10
16
|
export * from './VirtualScroller';
|
|
11
17
|
export * from './VirtualScroller/types';
|
|
12
|
-
export * from './AdvancedRequestDataGrid/helpers';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import styled, { css } from 'styled-components';
|
|
2
2
|
|
|
3
|
+
import { ThemeColor } from '../../../providers';
|
|
4
|
+
|
|
3
5
|
export const ModalBackdrop = styled.div.attrs({
|
|
4
6
|
className: 'ModalBackdrop',
|
|
5
7
|
})`
|
|
@@ -20,6 +22,7 @@ export type ModalContainerProps = {
|
|
|
20
22
|
$height?: number;
|
|
21
23
|
$zIndex?: number;
|
|
22
24
|
$fullscreen?: boolean;
|
|
25
|
+
$color?: ThemeColor;
|
|
23
26
|
};
|
|
24
27
|
|
|
25
28
|
export const ModalContainer = styled.div.attrs({
|
|
@@ -51,6 +54,14 @@ export const ModalContainer = styled.div.attrs({
|
|
|
51
54
|
width: ${$width ? `${$width}px` : 'auto'};
|
|
52
55
|
height: ${$height ? `${$height}px` : 'auto'};
|
|
53
56
|
`}
|
|
57
|
+
|
|
58
|
+
${({ $color }) =>
|
|
59
|
+
$color
|
|
60
|
+
? css`
|
|
61
|
+
border: 1px solid var(--color-${$color}-500);
|
|
62
|
+
box-shadow: 0 0 var(--space-3) var(--color-${$color}-500);
|
|
63
|
+
`
|
|
64
|
+
: null}
|
|
54
65
|
`;
|
|
55
66
|
|
|
56
67
|
export const ModalHeader = styled.div.attrs({ className: 'ModalHeader' })`
|
package/src/helpers/dates.ts
CHANGED
|
@@ -7,3 +7,11 @@ export const formatDate = (
|
|
|
7
7
|
const m = moment.utc(date);
|
|
8
8
|
return m.isValid() ? m.format(format) : '';
|
|
9
9
|
};
|
|
10
|
+
|
|
11
|
+
export const formatDateTime = (
|
|
12
|
+
date: moment.MomentInput,
|
|
13
|
+
format: string = 'DD/MM/YYYY HH:mm:ss'
|
|
14
|
+
): string => {
|
|
15
|
+
const m = moment.utc(date);
|
|
16
|
+
return m.isValid() ? m.format(format) : '';
|
|
17
|
+
};
|