@addev-be/ui 0.9.1 → 0.10.3

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.
Files changed (269) hide show
  1. package/assets/icons/table.svg +1 -1
  2. package/package.json +1 -1
  3. package/src/components/auth/LoginForm.tsx +1 -1
  4. package/src/components/auth/PasswordRecoveryForm.tsx +1 -1
  5. package/src/components/auth/PasswordResetForm.tsx +1 -1
  6. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +1 -1
  7. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +2 -2
  8. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +60 -42
  9. package/src/components/data/DataGrid/DataGridHeader.tsx +3 -3
  10. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +4 -4
  11. package/src/components/data/DataGrid/index.tsx +1 -0
  12. package/src/components/data/DataGrid/styles.ts +2 -2
  13. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +6 -5
  14. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +102 -0
  15. package/src/components/data/SqlRequestGrid/filters/styles.ts +83 -0
  16. package/src/components/data/SqlRequestGrid/index.tsx +159 -29
  17. package/src/components/data/SqlRequestGrid/styles.ts +6 -36
  18. package/src/components/data/SqlRequestGrid/types.ts +2 -0
  19. package/src/components/data/VirtualScroller/index.tsx +28 -18
  20. package/src/components/data/VirtualScroller/styles.ts +10 -1
  21. package/src/components/forms/Button.tsx +40 -16
  22. package/src/components/ui/Avatar/styles.ts +61 -61
  23. package/src/components/ui/Label.tsx +90 -0
  24. package/src/components/ui/index.ts +1 -0
  25. package/src/hooks/useShowArchived.ts +21 -21
  26. package/src/providers/ThemeProvider/defaultTheme.ts +12 -0
  27. package/src/providers/ThemeProvider/types.ts +7 -1
  28. package/src/providers/TrackingProvider/hooks.ts +14 -14
  29. package/dist/Icons.d.ts +0 -49
  30. package/dist/Icons.js +0 -128
  31. package/dist/components/auth/LoginForm.d.ts +0 -2
  32. package/dist/components/auth/LoginForm.js +0 -48
  33. package/dist/components/auth/LoginPage.d.ts +0 -2
  34. package/dist/components/auth/LoginPage.js +0 -9
  35. package/dist/components/auth/PasswordRecoveryForm.d.ts +0 -2
  36. package/dist/components/auth/PasswordRecoveryForm.js +0 -24
  37. package/dist/components/auth/PasswordResetForm.d.ts +0 -2
  38. package/dist/components/auth/PasswordResetForm.js +0 -56
  39. package/dist/components/auth/index.d.ts +0 -4
  40. package/dist/components/auth/index.js +0 -20
  41. package/dist/components/auth/styles.d.ts +0 -3
  42. package/dist/components/auth/styles.js +0 -16
  43. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +0 -14
  44. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +0 -76
  45. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +0 -22
  46. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +0 -156
  47. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +0 -2
  48. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +0 -18
  49. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +0 -2
  50. package/dist/components/data/AdvancedRequestDataGrid/index.js +0 -215
  51. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +0 -21
  52. package/dist/components/data/AdvancedRequestDataGrid/types.js +0 -2
  53. package/dist/components/data/DataGrid/DataGridCell.d.ts +0 -2
  54. package/dist/components/data/DataGrid/DataGridCell.js +0 -59
  55. package/dist/components/data/DataGrid/DataGridColumnsModal/helpers.d.ts +0 -2
  56. package/dist/components/data/DataGrid/DataGridColumnsModal/helpers.js +0 -24
  57. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.d.ts +0 -6
  58. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.js +0 -38
  59. package/dist/components/data/DataGrid/DataGridColumnsModal/index.d.ts +0 -15
  60. package/dist/components/data/DataGrid/DataGridColumnsModal/index.js +0 -111
  61. package/dist/components/data/DataGrid/DataGridColumnsModal/styles.d.ts +0 -22
  62. package/dist/components/data/DataGrid/DataGridColumnsModal/styles.js +0 -54
  63. package/dist/components/data/DataGrid/DataGridEditableCell.d.ts +0 -2
  64. package/dist/components/data/DataGrid/DataGridEditableCell.js +0 -27
  65. package/dist/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.d.ts +0 -13
  66. package/dist/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.js +0 -71
  67. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.d.ts +0 -9
  68. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.js +0 -52
  69. package/dist/components/data/DataGrid/DataGridFilterMenu/index.d.ts +0 -9
  70. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +0 -221
  71. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.d.ts +0 -18
  72. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.js +0 -31
  73. package/dist/components/data/DataGrid/DataGridFooter.d.ts +0 -4
  74. package/dist/components/data/DataGrid/DataGridFooter.js +0 -44
  75. package/dist/components/data/DataGrid/DataGridHeader.d.ts +0 -4
  76. package/dist/components/data/DataGrid/DataGridHeader.js +0 -119
  77. package/dist/components/data/DataGrid/DataGridHeaderCell.d.ts +0 -2
  78. package/dist/components/data/DataGrid/DataGridHeaderCell.js +0 -84
  79. package/dist/components/data/DataGrid/DataGridRowTemplate.d.ts +0 -3
  80. package/dist/components/data/DataGrid/DataGridRowTemplate.js +0 -71
  81. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +0 -7
  82. package/dist/components/data/DataGrid/FilterModalContent/index.js +0 -117
  83. package/dist/components/data/DataGrid/FilterModalContent/styles.d.ts +0 -3
  84. package/dist/components/data/DataGrid/FilterModalContent/styles.js +0 -15
  85. package/dist/components/data/DataGrid/helpers/columns.d.ts +0 -14
  86. package/dist/components/data/DataGrid/helpers/columns.js +0 -176
  87. package/dist/components/data/DataGrid/helpers/filters.d.ts +0 -18
  88. package/dist/components/data/DataGrid/helpers/filters.js +0 -334
  89. package/dist/components/data/DataGrid/helpers/index.d.ts +0 -2
  90. package/dist/components/data/DataGrid/helpers/index.js +0 -18
  91. package/dist/components/data/DataGrid/hooks/index.d.ts +0 -7
  92. package/dist/components/data/DataGrid/hooks/index.js +0 -34
  93. package/dist/components/data/DataGrid/hooks/useDataGrid.d.ts +0 -2
  94. package/dist/components/data/DataGrid/hooks/useDataGrid.js +0 -241
  95. package/dist/components/data/DataGrid/hooks/useDataGridCopy.d.ts +0 -4
  96. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +0 -163
  97. package/dist/components/data/DataGrid/hooks/useDataGridSettings.d.ts +0 -16
  98. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +0 -43
  99. package/dist/components/data/DataGrid/index.d.ts +0 -8
  100. package/dist/components/data/DataGrid/index.js +0 -63
  101. package/dist/components/data/DataGrid/styles.d.ts +0 -47
  102. package/dist/components/data/DataGrid/styles.js +0 -111
  103. package/dist/components/data/DataGrid/types.d.ts +0 -172
  104. package/dist/components/data/DataGrid/types.js +0 -34
  105. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +0 -17
  106. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +0 -136
  107. package/dist/components/data/SqlRequestDataGrid/helpers/index.d.ts +0 -2
  108. package/dist/components/data/SqlRequestDataGrid/helpers/index.js +0 -18
  109. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.d.ts +0 -3
  110. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.js +0 -18
  111. package/dist/components/data/SqlRequestDataGrid/index.d.ts +0 -13
  112. package/dist/components/data/SqlRequestDataGrid/index.js +0 -309
  113. package/dist/components/data/SqlRequestDataGrid/types.d.ts +0 -21
  114. package/dist/components/data/SqlRequestDataGrid/types.js +0 -2
  115. package/dist/components/data/SqlRequestGrid/helpers/index.d.ts +0 -1
  116. package/dist/components/data/SqlRequestGrid/helpers/index.js +0 -17
  117. package/dist/components/data/SqlRequestGrid/helpers/sqlRequests.d.ts +0 -3
  118. package/dist/components/data/SqlRequestGrid/helpers/sqlRequests.js +0 -18
  119. package/dist/components/data/SqlRequestGrid/index.d.ts +0 -4
  120. package/dist/components/data/SqlRequestGrid/index.js +0 -145
  121. package/dist/components/data/SqlRequestGrid/styles.d.ts +0 -16
  122. package/dist/components/data/SqlRequestGrid/styles.js +0 -33
  123. package/dist/components/data/SqlRequestGrid/types.d.ts +0 -30
  124. package/dist/components/data/SqlRequestGrid/types.js +0 -3
  125. package/dist/components/data/VirtualScroller/hooks.d.ts +0 -18
  126. package/dist/components/data/VirtualScroller/hooks.js +0 -50
  127. package/dist/components/data/VirtualScroller/index.d.ts +0 -14
  128. package/dist/components/data/VirtualScroller/index.js +0 -58
  129. package/dist/components/data/VirtualScroller/styles.d.ts +0 -16
  130. package/dist/components/data/VirtualScroller/styles.js +0 -39
  131. package/dist/components/data/VirtualScroller/types.d.ts +0 -6
  132. package/dist/components/data/VirtualScroller/types.js +0 -3
  133. package/dist/components/data/index.d.ts +0 -13
  134. package/dist/components/data/index.js +0 -29
  135. package/dist/components/forms/Button.d.ts +0 -10
  136. package/dist/components/forms/Button.js +0 -70
  137. package/dist/components/forms/IconButton.d.ts +0 -7
  138. package/dist/components/forms/IconButton.js +0 -64
  139. package/dist/components/forms/IndeterminateCheckbox.d.ts +0 -8
  140. package/dist/components/forms/IndeterminateCheckbox.js +0 -41
  141. package/dist/components/forms/Select.d.ts +0 -10
  142. package/dist/components/forms/Select.js +0 -49
  143. package/dist/components/forms/VerticalLabel.d.ts +0 -6
  144. package/dist/components/forms/VerticalLabel.js +0 -32
  145. package/dist/components/forms/index.d.ts +0 -5
  146. package/dist/components/forms/index.js +0 -21
  147. package/dist/components/forms/styles.d.ts +0 -7
  148. package/dist/components/forms/styles.js +0 -39
  149. package/dist/components/index.d.ts +0 -6
  150. package/dist/components/index.js +0 -22
  151. package/dist/components/layout/Dropdown/index.d.ts +0 -11
  152. package/dist/components/layout/Dropdown/index.js +0 -85
  153. package/dist/components/layout/Dropdown/styles.d.ts +0 -14
  154. package/dist/components/layout/Dropdown/styles.js +0 -48
  155. package/dist/components/layout/Loading/index.d.ts +0 -6
  156. package/dist/components/layout/Loading/index.js +0 -42
  157. package/dist/components/layout/Loading/styles.d.ts +0 -6
  158. package/dist/components/layout/Loading/styles.js +0 -18
  159. package/dist/components/layout/Modal/index.d.ts +0 -16
  160. package/dist/components/layout/Modal/index.js +0 -67
  161. package/dist/components/layout/Modal/styles.d.ts +0 -34
  162. package/dist/components/layout/Modal/styles.js +0 -56
  163. package/dist/components/layout/index.d.ts +0 -3
  164. package/dist/components/layout/index.js +0 -19
  165. package/dist/components/search/HighlightedText.d.ts +0 -5
  166. package/dist/components/search/HighlightedText.js +0 -43
  167. package/dist/components/search/QuickSearchBar.d.ts +0 -6
  168. package/dist/components/search/QuickSearchBar.js +0 -69
  169. package/dist/components/search/QuickSearchResults.d.ts +0 -8
  170. package/dist/components/search/QuickSearchResults.js +0 -70
  171. package/dist/components/search/index.d.ts +0 -5
  172. package/dist/components/search/index.js +0 -25
  173. package/dist/components/search/styles.d.ts +0 -28
  174. package/dist/components/search/styles.js +0 -40
  175. package/dist/components/search/types.d.ts +0 -21
  176. package/dist/components/search/types.js +0 -2
  177. package/dist/components/ui/Card/index.d.ts +0 -8
  178. package/dist/components/ui/Card/index.js +0 -34
  179. package/dist/components/ui/Card/styles.d.ts +0 -9
  180. package/dist/components/ui/Card/styles.js +0 -21
  181. package/dist/components/ui/ContextMenu/index.d.ts +0 -11
  182. package/dist/components/ui/ContextMenu/index.js +0 -63
  183. package/dist/components/ui/ContextMenu/styles.d.ts +0 -18
  184. package/dist/components/ui/ContextMenu/styles.js +0 -56
  185. package/dist/components/ui/Message/index.d.ts +0 -9
  186. package/dist/components/ui/Message/index.js +0 -53
  187. package/dist/components/ui/Message/styles.d.ts +0 -9
  188. package/dist/components/ui/Message/styles.js +0 -41
  189. package/dist/components/ui/index.d.ts +0 -3
  190. package/dist/components/ui/index.js +0 -19
  191. package/dist/config/index.d.ts +0 -10
  192. package/dist/config/index.js +0 -2
  193. package/dist/helpers/dates.d.ts +0 -3
  194. package/dist/helpers/dates.js +0 -19
  195. package/dist/helpers/getScrollbarSize.d.ts +0 -1
  196. package/dist/helpers/getScrollbarSize.js +0 -17
  197. package/dist/helpers/index.d.ts +0 -3
  198. package/dist/helpers/index.js +0 -19
  199. package/dist/helpers/numbers.d.ts +0 -4
  200. package/dist/helpers/numbers.js +0 -39
  201. package/dist/helpers/text.d.ts +0 -2
  202. package/dist/helpers/text.js +0 -18
  203. package/dist/hooks/index.d.ts +0 -2
  204. package/dist/hooks/index.js +0 -18
  205. package/dist/hooks/useElementSize.d.ts +0 -4
  206. package/dist/hooks/useElementSize.js +0 -23
  207. package/dist/hooks/useWindowSize.d.ts +0 -4
  208. package/dist/hooks/useWindowSize.js +0 -19
  209. package/dist/index.d.ts +0 -6
  210. package/dist/index.js +0 -22
  211. package/dist/providers/AuthenticationProvider/helpers.d.ts +0 -1
  212. package/dist/providers/AuthenticationProvider/helpers.js +0 -6
  213. package/dist/providers/AuthenticationProvider/index.d.ts +0 -23
  214. package/dist/providers/AuthenticationProvider/index.js +0 -221
  215. package/dist/providers/LoadingProvider/index.d.ts +0 -7
  216. package/dist/providers/LoadingProvider/index.js +0 -26
  217. package/dist/providers/PortalsProvider/index.d.ts +0 -10
  218. package/dist/providers/PortalsProvider/index.js +0 -46
  219. package/dist/providers/PortalsProvider/styles.d.ts +0 -9
  220. package/dist/providers/PortalsProvider/styles.js +0 -21
  221. package/dist/providers/SettingsProvider/index.d.ts +0 -8
  222. package/dist/providers/SettingsProvider/index.js +0 -54
  223. package/dist/providers/ThemeProvider/ThemeProvider.d.ts +0 -7
  224. package/dist/providers/ThemeProvider/ThemeProvider.js +0 -51
  225. package/dist/providers/ThemeProvider/defaultTheme.d.ts +0 -2
  226. package/dist/providers/ThemeProvider/defaultTheme.js +0 -417
  227. package/dist/providers/ThemeProvider/index.d.ts +0 -3
  228. package/dist/providers/ThemeProvider/index.js +0 -22
  229. package/dist/providers/ThemeProvider/types.d.ts +0 -24
  230. package/dist/providers/ThemeProvider/types.js +0 -2
  231. package/dist/providers/UiProviders/index.d.ts +0 -12
  232. package/dist/providers/UiProviders/index.js +0 -62
  233. package/dist/providers/UiProviders/styles.d.ts +0 -3
  234. package/dist/providers/UiProviders/styles.js +0 -13
  235. package/dist/providers/hooks.d.ts +0 -5
  236. package/dist/providers/hooks.js +0 -19
  237. package/dist/providers/index.d.ts +0 -5
  238. package/dist/providers/index.js +0 -21
  239. package/dist/services/HttpService.d.ts +0 -10
  240. package/dist/services/HttpService.js +0 -125
  241. package/dist/services/WebSocketService.d.ts +0 -23
  242. package/dist/services/WebSocketService.js +0 -125
  243. package/dist/services/advancedRequests.d.ts +0 -41
  244. package/dist/services/advancedRequests.js +0 -13
  245. package/dist/services/base.d.ts +0 -14
  246. package/dist/services/base.js +0 -7
  247. package/dist/services/globalSearch.d.ts +0 -13
  248. package/dist/services/globalSearch.js +0 -8
  249. package/dist/services/hooks.d.ts +0 -3
  250. package/dist/services/hooks.js +0 -29
  251. package/dist/services/index.d.ts +0 -11
  252. package/dist/services/index.js +0 -27
  253. package/dist/services/requests/auth.d.ts +0 -63
  254. package/dist/services/requests/auth.js +0 -28
  255. package/dist/services/requests/userProfiles.d.ts +0 -40
  256. package/dist/services/requests/userProfiles.js +0 -20
  257. package/dist/services/requests/users.d.ts +0 -84
  258. package/dist/services/requests/users.js +0 -20
  259. package/dist/services/sqlRequests.d.ts +0 -45
  260. package/dist/services/sqlRequests.js +0 -11
  261. package/dist/services/types/auth.d.ts +0 -87
  262. package/dist/services/types/auth.js +0 -72
  263. package/dist/services/types/base.d.ts +0 -6
  264. package/dist/services/types/base.js +0 -31
  265. package/dist/services/types/userProfiles.d.ts +0 -64
  266. package/dist/services/types/userProfiles.js +0 -68
  267. package/dist/services/types/users.d.ts +0 -118
  268. package/dist/services/types/users.js +0 -83
  269. package/tsconfig.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M48 264V160H232V264H48zm0 48H232V432H64c-8.8 0-16-7.2-16-16V312zM280 432V312H464V416c0 8.8-7.2 16-16 16H280zM464 264H280V160H464V264zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M48 264V160H232V264H48zm0 48H232V432H64c-8.8 0-16-7.2-16-16V312zM280 432V312H464V416c0 8.8-7.2 16-16 16H280zM464 264H280V160H464V264zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@addev-be/ui",
3
- "version": "0.9.1",
3
+ "version": "0.10.3",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "watch": "tsc -b --watch",
@@ -73,7 +73,7 @@ export const LoginForm: FC = () => {
73
73
 
74
74
  {error && <Message type="error">{error}</Message>}
75
75
 
76
- <Button color="primary" onClick={onLoginClicked}>
76
+ <Button $color="primary" onClick={onLoginClicked}>
77
77
  Se connecter
78
78
  </Button>
79
79
 
@@ -41,7 +41,7 @@ export const PasswordRecoveryForm: FC = () => {
41
41
  />
42
42
  </StackedLabel>
43
43
 
44
- <Button color="primary" onClick={onSubmitClicked}>
44
+ <Button $color="primary" onClick={onSubmitClicked}>
45
45
  Envoyer un lien de récupération
46
46
  </Button>
47
47
  </>
@@ -100,7 +100,7 @@ export const PasswordResetForm: FC = () => {
100
100
  </Message>
101
101
  )}
102
102
 
103
- <Button color="primary" onClick={onSubmitClicked}>
103
+ <Button $color="primary" onClick={onSubmitClicked}>
104
104
  Réinitialiser le mot de passe
105
105
  </Button>
106
106
  </>
@@ -43,7 +43,7 @@ export const useDataGridColumnsModal = <R,>(context: DataGridContext<R>) => {
43
43
  <Modal.Footer>
44
44
  <Button onClick={closeModal}>Annuler</Button>
45
45
  <Button
46
- color="primary"
46
+ $color="primary"
47
47
  style={{ marginLeft: 'auto' }}
48
48
  onClick={onApplyClicked}
49
49
  >
@@ -55,12 +55,12 @@ export const useFilterModal = <R,>({
55
55
  />
56
56
  </Modal.ContentWithIcon>
57
57
  <Modal.Buttons>
58
- <Button color="danger" icon={FilterSlashIcon} onClick={onClearClicked}>
58
+ <Button $color="danger" icon={FilterSlashIcon} onClick={onClearClicked}>
59
59
  Supprimer
60
60
  </Button>
61
61
  <Button
62
62
  style={{ marginLeft: 'auto' }}
63
- color="primary"
63
+ $color="primary"
64
64
  icon={FilterIcon}
65
65
  onClick={onApplyClicked}
66
66
  >
@@ -46,6 +46,7 @@ import {
46
46
  import { ContextMenu } from '../../../ui/ContextMenu';
47
47
  import { FilterValuesScroller } from './FilterValuesScroller';
48
48
  import { Input } from '../../../forms';
49
+ import { MenuContainer } from '../../../ui/ContextMenu/styles';
49
50
  import { useFilterModal } from './hooks';
50
51
 
51
52
  type FilterValuesProps<R> = {
@@ -53,6 +54,8 @@ type FilterValuesProps<R> = {
53
54
  columnIndex: number;
54
55
  context: DataGridContext<R>;
55
56
  onClose?: () => void;
57
+ contextMenu?: boolean;
58
+ showTotalButton?: boolean;
56
59
  };
57
60
 
58
61
  const sortAsc: Record<DataGridFilterType, [string, IconFC]> = {
@@ -87,6 +90,8 @@ export const DataGridFilterMenu = <R,>({
87
90
  columnKey,
88
91
  context,
89
92
  onClose,
93
+ contextMenu = true,
94
+ showTotalButton = true,
90
95
  }: FilterValuesProps<R>) => {
91
96
  const { openModal, modal } = useFilterModal({ columnKey, context });
92
97
  const {
@@ -258,8 +263,8 @@ export const DataGridFilterMenu = <R,>({
258
263
  onClose?.();
259
264
  }, [columnKey, onClose, setFooters]);
260
265
 
261
- return (
262
- <ContextMenu>
266
+ const content = (
267
+ <>
263
268
  {modal}
264
269
  {column.sortGetter && (
265
270
  <>
@@ -283,48 +288,55 @@ export const DataGridFilterMenu = <R,>({
283
288
  <ContextMenu.Divider />
284
289
  </>
285
290
  )}
286
- {!isFooterVisible && typeof column.footer === 'function' && (
291
+ {showTotalButton && (
287
292
  <>
288
- <ContextMenu.Item onClick={() => showFooter('count')}>
289
- <TableFooterIcon />
290
- Afficher le total
291
- </ContextMenu.Item>
292
- <ContextMenu.Divider />
293
- </>
294
- )}
295
- {typeof column.footer === 'object' && (
296
- <>
297
- <ContextMenu.ParentItem>
298
- <TableFooterIcon />
299
- Afficher le total
300
- <ContextMenu.SubMenu>
301
- {Object.keys(column.footer).map((key) => {
302
- const TotalIcon =
303
- footerFunctionsIcons[
304
- key as DataGridFooterPredefinedFunction
305
- ] ?? TableFooterIcon;
306
- return (
307
- <ContextMenu.Item key={key} onClick={() => showFooter(key)}>
308
- <TotalIcon />
309
- {key in footerFunctionsTexts
310
- ? footerFunctionsTexts[
311
- key as DataGridFooterPredefinedFunction
312
- ]
313
- : key}
293
+ {!isFooterVisible && typeof column.footer === 'function' && (
294
+ <>
295
+ <ContextMenu.Item onClick={() => showFooter('count')}>
296
+ <TableFooterIcon />
297
+ Afficher le total
298
+ </ContextMenu.Item>
299
+ <ContextMenu.Divider />
300
+ </>
301
+ )}
302
+ {showTotalButton && typeof column.footer === 'object' && (
303
+ <>
304
+ <ContextMenu.ParentItem>
305
+ <TableFooterIcon />
306
+ Afficher le total
307
+ <ContextMenu.SubMenu>
308
+ {Object.keys(column.footer).map((key) => {
309
+ const TotalIcon =
310
+ footerFunctionsIcons[
311
+ key as DataGridFooterPredefinedFunction
312
+ ] ?? TableFooterIcon;
313
+ return (
314
+ <ContextMenu.Item
315
+ key={key}
316
+ onClick={() => showFooter(key)}
317
+ >
318
+ <TotalIcon />
319
+ {key in footerFunctionsTexts
320
+ ? footerFunctionsTexts[
321
+ key as DataGridFooterPredefinedFunction
322
+ ]
323
+ : key}
324
+ </ContextMenu.Item>
325
+ );
326
+ })}
327
+ <ContextMenu.Divider />
328
+ <ContextMenu.Item
329
+ onClick={hideFooter}
330
+ disabled={!isFooterVisible}
331
+ >
332
+ <TableFooterSlashIcon />
333
+ Masquer le total
314
334
  </ContextMenu.Item>
315
- );
316
- })}
335
+ </ContextMenu.SubMenu>
336
+ </ContextMenu.ParentItem>
317
337
  <ContextMenu.Divider />
318
- <ContextMenu.Item
319
- onClick={hideFooter}
320
- disabled={!isFooterVisible}
321
- >
322
- <TableFooterSlashIcon />
323
- Masquer le total
324
- </ContextMenu.Item>
325
- </ContextMenu.SubMenu>
326
- </ContextMenu.ParentItem>
327
- <ContextMenu.Divider />
338
+ </>
339
+ )}
328
340
  </>
329
341
  )}
330
342
  <ContextMenu.Item onClick={openModal}>
@@ -355,6 +367,12 @@ export const DataGridFilterMenu = <R,>({
355
367
  <styles.CheckboxesContainer>
356
368
  {checkboxesComponent}
357
369
  </styles.CheckboxesContainer>
358
- </ContextMenu>
370
+ </>
359
371
  );
372
+
373
+ if (!contextMenu) {
374
+ return <MenuContainer>{content}</MenuContainer>;
375
+ }
376
+
377
+ return <ContextMenu>{content}</ContextMenu>;
360
378
  };
@@ -76,16 +76,16 @@ export const DataGridHeader = <R,>({
76
76
  Rafraîchir
77
77
  </Button>
78
78
  )}
79
- <Button color="emerald" size="small" onClick={runCopyTable}>
79
+ <Button $color="emerald" size="small" onClick={runCopyTable}>
80
80
  <CopyIcon />
81
81
  Copier la table
82
82
  </Button>
83
- <Button size="small" color="danger" onClick={() => setFilters({})}>
83
+ <Button size="small" $color="danger" onClick={() => setFilters({})}>
84
84
  <FilterSlashIcon />
85
85
  Supprimer les filtres
86
86
  </Button>
87
87
  {name && (
88
- <Button color="info" size="small" onClick={openModal}>
88
+ <Button $color="info" size="small" onClick={openModal}>
89
89
  <TableColumnsIcon />
90
90
  Paramètres des colonnes
91
91
  </Button>
@@ -6,12 +6,12 @@ import * as styles from './styles';
6
6
  import { MouseEvent, useCallback, useMemo, useRef, useState } from 'react';
7
7
 
8
8
  import { ChevronDownIcon } from '../../../Icons';
9
- import { DataGridFilterMenu } from './DataGridFilterMenu';
10
- import { DataGridHeaderCellProps } from './types';
11
- import { Dropdown } from '../../layout';
9
+ import { useUi } from '../../../providers';
12
10
  import { IconButton } from '../../forms/IconButton';
11
+ import { Dropdown } from '../../layout';
12
+ import { DataGridFilterMenu } from './DataGridFilterMenu';
13
13
  import { useDataGridContext } from './hooks';
14
- import { useUi } from '../../../providers';
14
+ import { DataGridHeaderCellProps } from './types';
15
15
 
16
16
  export const DataGridHeaderCell = <R,>({
17
17
  columnKey,
@@ -66,6 +66,7 @@ export const DataGridInner = <R,>(
66
66
  >
67
67
  <DataGridHeader context={DataGridContext} />
68
68
  <VirtualScroller<R, { context: Context<DataGridContextProps<R>> }>
69
+ integrated
69
70
  gridTemplateColumns={gridTemplateColumns}
70
71
  items={sortedRows}
71
72
  itemTemplate={rowTemplate}
@@ -1,7 +1,7 @@
1
1
  import styled, { css } from 'styled-components';
2
2
 
3
3
  import { ThemeColor } from '../../../providers/ThemeProvider/types';
4
- import { VirtualScrollerContainer } from '../VirtualScroller/styles';
4
+ import { VirtualScrollerFiller } from '../VirtualScroller/styles';
5
5
 
6
6
  export const TOOLBAR_HEIGHT = 40;
7
7
  export const DEFAULT_HEADER_ROW_HEIGHT = 40;
@@ -168,7 +168,7 @@ export const DataGridContainer = styled.div<{
168
168
  box-sizing: border-box;
169
169
  }
170
170
 
171
- ${VirtualScrollerContainer} {
171
+ ${VirtualScrollerFiller} {
172
172
  grid-column-start: 1;
173
173
  grid-column-end: -1;
174
174
  grid-row: 3;
@@ -3,6 +3,7 @@
3
3
  import { SqlRequestDataGridColumn, SqlRequestDataGridColumns } from '../types';
4
4
  import {
5
5
  buildExcelFormat,
6
+ dateFilter,
6
7
  numberFilter,
7
8
  textFilter,
8
9
  } from '../../DataGrid/helpers';
@@ -110,7 +111,7 @@ export const sqlDateColumn = <R extends Record<string, any>>(
110
111
  excelFormatter: () => 'dd/mm/yyyy',
111
112
  excelValue: (value) => formatDate(value, 'YYYY-MM-DD'),
112
113
  filter: {
113
- ...textFilter(key),
114
+ ...dateFilter(key),
114
115
  getter: (value) => value[key] ?? '',
115
116
  formatter: (value) => formatDate(value),
116
117
  renderer: (value) => formatDate(value),
@@ -134,7 +135,7 @@ export const sqlDateTimeColumn = <R extends Record<string, any>>(
134
135
  excelFormatter: () => 'dd/mm/yyyy hh:mm:ss',
135
136
  excelValue: (value) => formatDateTime(value, 'YYYY-MM-DD HH:mm:ss'),
136
137
  filter: {
137
- ...textFilter(key),
138
+ ...dateFilter(key),
138
139
  getter: (value) => value[key] ?? '',
139
140
  formatter: (value) => formatDateTime(value),
140
141
  renderer: (value) => formatDateTime(value),
@@ -172,7 +173,7 @@ export const sqlNumberColumn = <R extends Record<string, any>>(
172
173
  excelFormatter: () => buildExcelFormat(decimals),
173
174
  excelValue: (value) => formatNumberInvariant(value, decimals),
174
175
  getter: (row) => row[key] ?? '',
175
- sortGetter: (row) => row[key] ?? '',
176
+ sortGetter: (row) => row[key] ?? 0,
176
177
  filter: {
177
178
  ...numberFilter(key),
178
179
  getter: (value) => value[key] ?? 0,
@@ -202,7 +203,7 @@ export const sqlMoneyColumn = <R extends Record<string, any>>(
202
203
  excelFormatter: () => buildExcelFormat(decimals, ' €'),
203
204
  excelValue: (value) => formatNumberInvariant(value, decimals),
204
205
  getter: (row) => row[key] ?? '',
205
- sortGetter: (row) => row[key] ?? '',
206
+ sortGetter: (row) => row[key] ?? 0,
206
207
  filter: {
207
208
  ...numberFilter(key),
208
209
  getter: (value) => value[key] ?? 0,
@@ -231,7 +232,7 @@ export const sqlPercentageColumn = <R extends Record<string, any>>(
231
232
  excelFormatter: () => buildExcelFormat(decimals, '%'),
232
233
  excelValue: (value) => formatNumberInvariant(value, decimals),
233
234
  getter: (row) => row[key] ?? '',
234
- sortGetter: (row) => row[key] ?? '',
235
+ sortGetter: (row) => row[key] ?? 0,
235
236
  filter: {
236
237
  ...numberFilter(key),
237
238
  getter: (value) => value[key] ?? 0,
@@ -0,0 +1,102 @@
1
+ import * as styles from './styles';
2
+
3
+ import {
4
+ CircleXMarkIcon,
5
+ FilterSlashIcon,
6
+ LeftIcon,
7
+ RightIcon,
8
+ } from '../../../../Icons';
9
+ import { MouseEvent, useCallback, useState } from 'react';
10
+
11
+ import { DataGridContext } from '../../DataGrid/types';
12
+ import { DataGridFilterMenu } from '../../DataGrid/DataGridFilterMenu';
13
+ import { IconButton } from '../../../forms';
14
+ import { SqlRequestGridProps } from '../types';
15
+
16
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
17
+ type FiltersSidebarProps<R, P extends object = {}> = {
18
+ props: SqlRequestGridProps<R, P>;
19
+ context: DataGridContext<R>;
20
+ onClose?: () => void;
21
+ onClearFilters?: () => void;
22
+ };
23
+
24
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
25
+ export const FiltersSidebar = <R, P extends object = {}>({
26
+ props,
27
+ context,
28
+ onClose,
29
+ onClearFilters,
30
+ }: FiltersSidebarProps<R, P>) => {
31
+ const [columnKey, setColumnKey] = useState<string | null>(null);
32
+ const column = columnKey ? props.fields[columnKey] : null;
33
+ const visible = !!(columnKey && column);
34
+
35
+ const stopPropagation = useCallback((e: MouseEvent) => {
36
+ e.stopPropagation();
37
+ }, []);
38
+
39
+ const onFilterClick = useCallback((columnKey: string | null) => {
40
+ setColumnKey(columnKey);
41
+ }, []);
42
+
43
+ return (
44
+ <styles.Backdrop onClick={onClose}>
45
+ <styles.FiltersSidebarContainer onClick={stopPropagation}>
46
+ {visible ? (
47
+ <>
48
+ <styles.FiltersSidebarHeader>
49
+ <IconButton
50
+ rounded
51
+ icon={LeftIcon}
52
+ color="secondary"
53
+ onClick={() => onFilterClick(null)}
54
+ />
55
+ <h3>{column.name}</h3>
56
+ <IconButton
57
+ rounded
58
+ icon={CircleXMarkIcon}
59
+ color="secondary"
60
+ onClick={onClose}
61
+ />
62
+ </styles.FiltersSidebarHeader>
63
+ <DataGridFilterMenu
64
+ contextMenu={false}
65
+ columnKey={columnKey}
66
+ columnIndex={0}
67
+ context={context}
68
+ showTotalButton={false}
69
+ />
70
+ </>
71
+ ) : (
72
+ <>
73
+ <styles.FiltersSidebarHeader>
74
+ <h3>Filtres</h3>
75
+ <IconButton
76
+ rounded
77
+ icon={FilterSlashIcon}
78
+ color="danger"
79
+ onClick={onClearFilters}
80
+ />
81
+ <IconButton
82
+ rounded
83
+ icon={CircleXMarkIcon}
84
+ color="secondary"
85
+ onClick={onClose}
86
+ />
87
+ </styles.FiltersSidebarHeader>
88
+ {Object.entries(props.fields).map(([key, field], index) => (
89
+ <styles.FiltersSidebarFilter
90
+ key={index}
91
+ onClick={() => onFilterClick(key)}
92
+ >
93
+ {field.name}
94
+ <RightIcon />
95
+ </styles.FiltersSidebarFilter>
96
+ ))}
97
+ </>
98
+ )}
99
+ </styles.FiltersSidebarContainer>
100
+ </styles.Backdrop>
101
+ );
102
+ };
@@ -0,0 +1,83 @@
1
+ import {
2
+ Divider,
3
+ MenuContainer,
4
+ MenuItemContainer,
5
+ } from '../../../ui/ContextMenu/styles';
6
+
7
+ import styled from 'styled-components';
8
+
9
+ export const FiltersSidebarContainer = styled.div`
10
+ position: absolute;
11
+ left: 0;
12
+ top: 0;
13
+ bottom: 0;
14
+ width: 100%;
15
+ max-width: var(--space-96);
16
+ border-radius: var(--rounded-none);
17
+ padding: 0;
18
+ z-index: 1;
19
+ overflow-y: auto;
20
+ box-sizing: border-box;
21
+ background-color: var(--color-neutral-50);
22
+ border-right: 1px solid var(--color-neutral-300);
23
+ box-shadow: var(--shadow-sm);
24
+
25
+ & > ${MenuContainer} {
26
+ position: relative;
27
+ background: none;
28
+ padding: var(--space-2) 0;
29
+
30
+ ${MenuItemContainer} {
31
+ background: none;
32
+ /* height: var(--size-6); */
33
+ padding: var(--space-2) var(--space-4);
34
+ }
35
+
36
+ ${Divider} {
37
+ margin: var(--space-2) 0;
38
+ }
39
+ }
40
+ `;
41
+
42
+ export const FiltersSidebarHeader = styled.div`
43
+ display: flex;
44
+ justify-content: space-between;
45
+ align-items: center;
46
+ gap: var(--space-4);
47
+ padding: var(--space-2);
48
+
49
+ padding-bottom: var(--space-2);
50
+ border-bottom: 1px solid var(--color-neutral-300);
51
+
52
+ h3 {
53
+ margin: 0;
54
+ margin-right: auto;
55
+ }
56
+ `;
57
+
58
+ export const FiltersSidebarFilter = styled.div`
59
+ display: flex;
60
+ align-items: center;
61
+ padding: var(--space-4) var(--space-2);
62
+ border-bottom: 1px solid var(--color-neutral-300);
63
+ cursor: pointer;
64
+
65
+ &:hover {
66
+ background-color: var(--color-neutral-100);
67
+ }
68
+ svg {
69
+ margin-left: auto;
70
+ width: var(--space-4);
71
+ height: var(--space-4);
72
+ }
73
+ `;
74
+
75
+ export const Backdrop = styled.div`
76
+ position: sticky;
77
+ top: 0;
78
+ left: 0;
79
+ width: 100%;
80
+ height: 100%;
81
+ z-index: 1;
82
+ background-color: rgba(0, 0, 0, 0.5);
83
+ `;