@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@addev-be/ui",
3
- "version": "0.6.11",
3
+ "version": "0.6.12",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "watch": "tsc -b --watch",
@@ -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-10)'] : []),
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<DataGridContextProps<R>, 'refresh'>;
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' })`
@@ -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
+ };