@jmruthers/pace-core 0.6.4 → 0.6.5
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/dist/{DataTable-E7YQZD7D.js → DataTable-AOVNCPTX.js} +8 -8
- package/dist/{PublicPageProvider-DEMpysFR.d.ts → PublicPageProvider-QTFVrL-Z.d.ts} +65 -83
- package/dist/{UnifiedAuthProvider-QPXO24B4.js → UnifiedAuthProvider-4SBX4LU5.js} +4 -4
- package/dist/{api-6LVZTHDS.js → api-O6HTBX5Y.js} +3 -3
- package/dist/{chunk-I6DAQMWX.js → chunk-6COVEUS7.js} +130 -106
- package/dist/chunk-6COVEUS7.js.map +1 -0
- package/dist/{chunk-36LVWXB2.js → chunk-AFVQODI2.js} +37 -1
- package/dist/{chunk-36LVWXB2.js.map → chunk-AFVQODI2.js.map} +1 -1
- package/dist/{chunk-3LPHPB62.js → chunk-EFN2EIMK.js} +2 -2
- package/dist/{chunk-ATKZM7RX.js → chunk-G7QEZTYQ.js} +31 -31
- package/dist/{chunk-ATKZM7RX.js.map → chunk-G7QEZTYQ.js.map} +1 -1
- package/dist/{chunk-NN6WWZ5U.js → chunk-HU2C6SSC.js} +29 -18
- package/dist/chunk-HU2C6SSC.js.map +1 -0
- package/dist/{chunk-AVMLPIM7.js → chunk-IHB5DR3H.js} +102 -51
- package/dist/chunk-IHB5DR3H.js.map +1 -0
- package/dist/{chunk-7JPAB3T5.js → chunk-IVOFDYWT.js} +364 -208
- package/dist/chunk-IVOFDYWT.js.map +1 -0
- package/dist/{chunk-6SOIHG6Z.js → chunk-JGRYX5UX.js} +120 -20
- package/dist/chunk-JGRYX5UX.js.map +1 -0
- package/dist/{chunk-OEWDTMG7.js → chunk-NTM7ZSB6.js} +4 -4
- package/dist/chunk-NTM7ZSB6.js.map +1 -0
- package/dist/{chunk-5EC5MEWX.js → chunk-RGAWHO7N.js} +4 -4
- package/dist/chunk-RGAWHO7N.js.map +1 -0
- package/dist/{chunk-YKRAFF5K.js → chunk-UPPMRMYG.js} +3 -3
- package/dist/{chunk-YKRAFF5K.js.map → chunk-UPPMRMYG.js.map} +1 -1
- package/dist/components.d.ts +2 -3
- package/dist/components.js +24 -28
- package/dist/components.js.map +1 -1
- package/dist/{contextValidator-OOPCLPZW.js → contextValidator-5OGXSPKS.js} +2 -2
- package/dist/hooks.d.ts +3 -3
- package/dist/hooks.js +41 -139
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +27 -18
- package/dist/index.js +41 -50
- package/dist/index.js.map +1 -1
- package/dist/providers.js +3 -3
- package/dist/rbac/index.d.ts +16 -9
- package/dist/rbac/index.js +6 -6
- package/dist/{usePublicRouteParams-i3qtoBgg.d.ts → usePublicRouteParams-ClnV4tnv.d.ts} +8 -8
- package/dist/utils.js +1 -1
- package/docs/api/modules.md +210 -100
- package/package.json +1 -2
- package/scripts/validate-master.js +1 -1
- package/src/components/DataTable/__tests__/keyboard.test.tsx +15 -2
- package/src/components/DataTable/components/ImportModal.tsx +4 -6
- package/src/components/DataTable/components/ViewRowModal.tsx +4 -4
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +455 -96
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +122 -58
- package/src/components/DataTable/core/DataTableContext.tsx +1 -1
- package/src/components/DateTimeField/DateTimeField.tsx +17 -19
- package/src/components/DateTimeField/README.md +5 -2
- package/src/components/Dialog/Dialog.test.tsx +248 -228
- package/src/components/Dialog/Dialog.tsx +455 -325
- package/src/components/Dialog/index.ts +3 -3
- package/src/components/FileDisplay/FileDisplay.test.tsx +41 -0
- package/src/components/FileDisplay/FileDisplay.tsx +5 -5
- package/src/components/Form/Form.test.tsx +3 -2
- package/src/components/Form/Form.tsx +4 -5
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +28 -28
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +40 -54
- package/src/components/LoginForm/LoginForm.tsx +2 -2
- package/src/components/NavigationMenu/NavigationMenu.tsx +2 -2
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +32 -39
- package/src/components/PaceAppLayout/README.md +10 -9
- package/src/components/PaceAppLayout/test-setup.tsx +40 -31
- package/src/components/PasswordChange/PasswordChangeForm.test.tsx +61 -0
- package/src/components/PasswordChange/PasswordChangeForm.tsx +20 -13
- package/src/components/PublicLayout/PublicLayout.test.tsx +7 -3
- package/src/components/PublicLayout/PublicPageLayout.tsx +5 -8
- package/src/components/UserMenu/UserMenu.test.tsx +38 -6
- package/src/components/UserMenu/UserMenu.tsx +36 -34
- package/src/components/index.ts +3 -4
- package/src/hooks/useEventTheme.ts +4 -4
- package/src/hooks/useEvents.ts +11 -7
- package/src/hooks/useKeyboardShortcuts.ts +1 -1
- package/src/hooks/useOrganisationPermissions.ts +4 -4
- package/src/hooks/useOrganisations.ts +13 -7
- package/src/index.ts +11 -1
- package/src/rbac/README.md +20 -20
- package/src/rbac/hooks/useRBAC.test.ts +21 -3
- package/src/rbac/hooks/useRBAC.ts +4 -3
- package/src/rbac/hooks/useResourcePermissions.test.ts +125 -30
- package/src/rbac/hooks/useResourcePermissions.ts +57 -29
- package/src/rbac/permissions.ts +17 -17
- package/src/rbac/utils/contextValidator.ts +36 -0
- package/src/services/AuthService.ts +2 -5
- package/src/services/InactivityService.ts +139 -58
- package/src/styles/core.css +4 -0
- package/src/utils/formatting/formatTime.test.ts +3 -2
- package/dist/chunk-5EC5MEWX.js.map +0 -1
- package/dist/chunk-6SOIHG6Z.js.map +0 -1
- package/dist/chunk-7JPAB3T5.js.map +0 -1
- package/dist/chunk-AVMLPIM7.js.map +0 -1
- package/dist/chunk-I6DAQMWX.js.map +0 -1
- package/dist/chunk-NN6WWZ5U.js.map +0 -1
- package/dist/chunk-OEWDTMG7.js.map +0 -1
- /package/dist/{DataTable-E7YQZD7D.js.map → DataTable-AOVNCPTX.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-QPXO24B4.js.map → UnifiedAuthProvider-4SBX4LU5.js.map} +0 -0
- /package/dist/{api-6LVZTHDS.js.map → api-O6HTBX5Y.js.map} +0 -0
- /package/dist/{chunk-3LPHPB62.js.map → chunk-EFN2EIMK.js.map} +0 -0
- /package/dist/{contextValidator-OOPCLPZW.js.map → contextValidator-5OGXSPKS.js.map} +0 -0
package/docs/api/modules.md
CHANGED
|
@@ -69,6 +69,14 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
|
|
|
69
69
|
- [EmptyStateConfig](undefined)
|
|
70
70
|
- [ExportOptions](undefined)
|
|
71
71
|
- [ExportColumn](undefined)
|
|
72
|
+
- [DialogProps](undefined)
|
|
73
|
+
- [DialogTriggerProps](undefined)
|
|
74
|
+
- [DialogContentProps](undefined)
|
|
75
|
+
- [DialogPortalProps](undefined)
|
|
76
|
+
- [DialogCloseProps](undefined)
|
|
77
|
+
- [DialogHeaderProps](undefined)
|
|
78
|
+
- [DialogFooterProps](undefined)
|
|
79
|
+
- [DialogBodyProps](undefined)
|
|
72
80
|
- [ErrorBoundaryState](undefined)
|
|
73
81
|
- [ErrorBoundaryProps](undefined)
|
|
74
82
|
- [ErrorBoundaryProviderProps](undefined)
|
|
@@ -200,6 +208,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
|
|
|
200
208
|
- [BadgeVariant](undefined)
|
|
201
209
|
- [GetRowId](undefined)
|
|
202
210
|
- [DataTableFeatureConfig](undefined)
|
|
211
|
+
- [DialogSize](undefined)
|
|
203
212
|
- [GlobalErrorHandler](undefined)
|
|
204
213
|
- [NavigationMode](undefined)
|
|
205
214
|
- [UseFileReferenceOptions](undefined)
|
|
@@ -275,9 +284,8 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
|
|
|
275
284
|
- [Dialog](undefined)
|
|
276
285
|
- [DialogTrigger](undefined)
|
|
277
286
|
- [DialogPortal](undefined)
|
|
278
|
-
- [DialogClose](undefined)
|
|
279
|
-
- [DialogOverlay](undefined)
|
|
280
287
|
- [DialogContent](undefined)
|
|
288
|
+
- [DialogClose](undefined)
|
|
281
289
|
- [DialogHeader](undefined)
|
|
282
290
|
- [DialogBody](undefined)
|
|
283
291
|
- [DialogFooter](undefined)
|
|
@@ -972,6 +980,103 @@ Column definition for export
|
|
|
972
980
|
|
|
973
981
|
___
|
|
974
982
|
|
|
983
|
+
### DialogProps
|
|
984
|
+
|
|
985
|
+
• **DialogProps**: Interface DialogProps
|
|
986
|
+
|
|
987
|
+
Props for the Dialog root component
|
|
988
|
+
|
|
989
|
+
#### Defined in
|
|
990
|
+
|
|
991
|
+
[packages/core/src/components/Dialog/Dialog.tsx:161](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L161)
|
|
992
|
+
|
|
993
|
+
___
|
|
994
|
+
|
|
995
|
+
### DialogTriggerProps
|
|
996
|
+
|
|
997
|
+
• **DialogTriggerProps**: Interface DialogTriggerProps
|
|
998
|
+
|
|
999
|
+
Props for the DialogTrigger component
|
|
1000
|
+
|
|
1001
|
+
#### Defined in
|
|
1002
|
+
|
|
1003
|
+
[packages/core/src/components/Dialog/Dialog.tsx:172](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L172)
|
|
1004
|
+
|
|
1005
|
+
___
|
|
1006
|
+
|
|
1007
|
+
### DialogContentProps
|
|
1008
|
+
|
|
1009
|
+
• **DialogContentProps**: Interface DialogContentProps
|
|
1010
|
+
|
|
1011
|
+
Enhanced props for the DialogContent component with size variants and customization
|
|
1012
|
+
Uses semantic HTML dialog element
|
|
1013
|
+
|
|
1014
|
+
#### Defined in
|
|
1015
|
+
|
|
1016
|
+
[packages/core/src/components/Dialog/Dialog.tsx:184](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L184)
|
|
1017
|
+
|
|
1018
|
+
___
|
|
1019
|
+
|
|
1020
|
+
### DialogPortalProps
|
|
1021
|
+
|
|
1022
|
+
• **DialogPortalProps**: Interface DialogPortalProps
|
|
1023
|
+
|
|
1024
|
+
Props for the DialogPortal component
|
|
1025
|
+
|
|
1026
|
+
#### Defined in
|
|
1027
|
+
|
|
1028
|
+
[packages/core/src/components/Dialog/Dialog.tsx:223](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L223)
|
|
1029
|
+
|
|
1030
|
+
___
|
|
1031
|
+
|
|
1032
|
+
### DialogCloseProps
|
|
1033
|
+
|
|
1034
|
+
• **DialogCloseProps**: Interface DialogCloseProps
|
|
1035
|
+
|
|
1036
|
+
Props for the DialogClose component
|
|
1037
|
+
|
|
1038
|
+
#### Defined in
|
|
1039
|
+
|
|
1040
|
+
[packages/core/src/components/Dialog/Dialog.tsx:231](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L231)
|
|
1041
|
+
|
|
1042
|
+
___
|
|
1043
|
+
|
|
1044
|
+
### DialogHeaderProps
|
|
1045
|
+
|
|
1046
|
+
• **DialogHeaderProps**: Interface DialogHeaderProps
|
|
1047
|
+
|
|
1048
|
+
Props for the DialogHeader component (semantic header element)
|
|
1049
|
+
|
|
1050
|
+
#### Defined in
|
|
1051
|
+
|
|
1052
|
+
[packages/core/src/components/Dialog/Dialog.tsx:237](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L237)
|
|
1053
|
+
|
|
1054
|
+
___
|
|
1055
|
+
|
|
1056
|
+
### DialogFooterProps
|
|
1057
|
+
|
|
1058
|
+
• **DialogFooterProps**: Interface DialogFooterProps
|
|
1059
|
+
|
|
1060
|
+
Props for the DialogFooter component (semantic footer element)
|
|
1061
|
+
|
|
1062
|
+
#### Defined in
|
|
1063
|
+
|
|
1064
|
+
[packages/core/src/components/Dialog/Dialog.tsx:246](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L246)
|
|
1065
|
+
|
|
1066
|
+
___
|
|
1067
|
+
|
|
1068
|
+
### DialogBodyProps
|
|
1069
|
+
|
|
1070
|
+
• **DialogBodyProps**: Interface DialogBodyProps
|
|
1071
|
+
|
|
1072
|
+
Props for the DialogBody component (semantic main element)
|
|
1073
|
+
|
|
1074
|
+
#### Defined in
|
|
1075
|
+
|
|
1076
|
+
[packages/core/src/components/Dialog/Dialog.tsx:255](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L255)
|
|
1077
|
+
|
|
1078
|
+
___
|
|
1079
|
+
|
|
975
1080
|
### ErrorBoundaryState
|
|
976
1081
|
|
|
977
1082
|
• **ErrorBoundaryState**: Interface ErrorBoundaryState
|
|
@@ -1057,7 +1162,7 @@ Props for the Form component
|
|
|
1057
1162
|
|
|
1058
1163
|
#### Defined in
|
|
1059
1164
|
|
|
1060
|
-
[packages/core/src/components/Form/Form.tsx:
|
|
1165
|
+
[packages/core/src/components/Form/Form.tsx:83](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L83)
|
|
1061
1166
|
|
|
1062
1167
|
___
|
|
1063
1168
|
|
|
@@ -1076,7 +1181,7 @@ Props for the FormField component
|
|
|
1076
1181
|
|
|
1077
1182
|
#### Defined in
|
|
1078
1183
|
|
|
1079
|
-
[packages/core/src/components/Form/Form.tsx:
|
|
1184
|
+
[packages/core/src/components/Form/Form.tsx:172](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L172)
|
|
1080
1185
|
|
|
1081
1186
|
___
|
|
1082
1187
|
|
|
@@ -1086,7 +1191,7 @@ ___
|
|
|
1086
1191
|
|
|
1087
1192
|
#### Defined in
|
|
1088
1193
|
|
|
1089
|
-
[packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx:
|
|
1194
|
+
[packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx:56](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx#L56)
|
|
1090
1195
|
|
|
1091
1196
|
___
|
|
1092
1197
|
|
|
@@ -1161,7 +1266,7 @@ Configures the application layout including navigation, header, and footer.
|
|
|
1161
1266
|
|
|
1162
1267
|
#### Defined in
|
|
1163
1268
|
|
|
1164
|
-
[packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:
|
|
1269
|
+
[packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:130](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L130)
|
|
1165
1270
|
|
|
1166
1271
|
___
|
|
1167
1272
|
|
|
@@ -1335,7 +1440,7 @@ Props for the UserMenu component.
|
|
|
1335
1440
|
|
|
1336
1441
|
#### Defined in
|
|
1337
1442
|
|
|
1338
|
-
[packages/core/src/components/UserMenu/UserMenu.tsx:
|
|
1443
|
+
[packages/core/src/components/UserMenu/UserMenu.tsx:130](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/UserMenu/UserMenu.tsx#L130)
|
|
1339
1444
|
|
|
1340
1445
|
___
|
|
1341
1446
|
|
|
@@ -2422,6 +2527,18 @@ ergonomic while maintaining strict internal guarantees.
|
|
|
2422
2527
|
|
|
2423
2528
|
___
|
|
2424
2529
|
|
|
2530
|
+
### DialogSize
|
|
2531
|
+
|
|
2532
|
+
Ƭ **DialogSize**: "sm" \| "md" \| "lg" \| "xl" \| "full" \| "auto"
|
|
2533
|
+
|
|
2534
|
+
Dialog size variants
|
|
2535
|
+
|
|
2536
|
+
#### Defined in
|
|
2537
|
+
|
|
2538
|
+
[packages/core/src/components/Dialog/Dialog.tsx:131](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L131)
|
|
2539
|
+
|
|
2540
|
+
___
|
|
2541
|
+
|
|
2425
2542
|
### GlobalErrorHandler
|
|
2426
2543
|
|
|
2427
2544
|
Ƭ **GlobalErrorHandler**: Function
|
|
@@ -3960,7 +4077,7 @@ ___
|
|
|
3960
4077
|
|
|
3961
4078
|
### Dialog
|
|
3962
4079
|
|
|
3963
|
-
▸ **Dialog**(`props`): ReactNode
|
|
4080
|
+
▸ **Dialog**(`props`): ReactNode
|
|
3964
4081
|
|
|
3965
4082
|
#### Parameters
|
|
3966
4083
|
|
|
@@ -3970,11 +4087,11 @@ ___
|
|
|
3970
4087
|
|
|
3971
4088
|
#### Returns
|
|
3972
4089
|
|
|
3973
|
-
ReactNode
|
|
4090
|
+
ReactNode
|
|
3974
4091
|
|
|
3975
4092
|
#### Defined in
|
|
3976
4093
|
|
|
3977
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4094
|
+
[packages/core/src/components/Dialog/Dialog.tsx:304](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L304)
|
|
3978
4095
|
|
|
3979
4096
|
___
|
|
3980
4097
|
|
|
@@ -3986,7 +4103,7 @@ ___
|
|
|
3986
4103
|
|
|
3987
4104
|
| Name | Type |
|
|
3988
4105
|
| :------ | :------ |
|
|
3989
|
-
| `props` | DialogTriggerProps & RefAttributes\<
|
|
4106
|
+
| `props` | DialogTriggerProps & RefAttributes\<HTMLElement\> |
|
|
3990
4107
|
|
|
3991
4108
|
#### Returns
|
|
3992
4109
|
|
|
@@ -3994,7 +4111,7 @@ ReactNode
|
|
|
3994
4111
|
|
|
3995
4112
|
#### Defined in
|
|
3996
4113
|
|
|
3997
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4114
|
+
[packages/core/src/components/Dialog/Dialog.tsx:345](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L345)
|
|
3998
4115
|
|
|
3999
4116
|
___
|
|
4000
4117
|
|
|
@@ -4014,135 +4131,111 @@ ReactNode \| Promise\<ReactNode\>
|
|
|
4014
4131
|
|
|
4015
4132
|
#### Defined in
|
|
4016
4133
|
|
|
4017
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4134
|
+
[packages/core/src/components/Dialog/Dialog.tsx:382](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L382)
|
|
4135
|
+
|
|
4136
|
+
[packages/core/src/components/Dialog/Dialog.tsx:394](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L394)
|
|
4018
4137
|
|
|
4019
4138
|
___
|
|
4020
4139
|
|
|
4021
|
-
###
|
|
4140
|
+
### DialogContent
|
|
4022
4141
|
|
|
4023
|
-
▸ **
|
|
4142
|
+
▸ **DialogContent**(`props`): ReactNode
|
|
4024
4143
|
|
|
4025
4144
|
#### Parameters
|
|
4026
4145
|
|
|
4027
|
-
| Name | Type |
|
|
4028
|
-
| :------ | :------ |
|
|
4029
|
-
| `props` |
|
|
4146
|
+
| Name | Type | Description |
|
|
4147
|
+
| :------ | :------ | :------ |
|
|
4148
|
+
| `props` | DialogContentProps & RefAttributes\<HTMLDialogElement\> | Content configuration and styling |
|
|
4030
4149
|
|
|
4031
4150
|
#### Returns
|
|
4032
4151
|
|
|
4033
4152
|
ReactNode
|
|
4034
4153
|
|
|
4154
|
+
JSX.Element - The semantic dialog content with overlay and optional close button
|
|
4155
|
+
|
|
4035
4156
|
#### Defined in
|
|
4036
4157
|
|
|
4037
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4158
|
+
[packages/core/src/components/Dialog/Dialog.tsx:523](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L523)
|
|
4038
4159
|
|
|
4039
4160
|
___
|
|
4040
4161
|
|
|
4041
|
-
###
|
|
4162
|
+
### DialogClose
|
|
4042
4163
|
|
|
4043
|
-
▸ **
|
|
4164
|
+
▸ **DialogClose**(`props`): ReactNode
|
|
4044
4165
|
|
|
4045
4166
|
#### Parameters
|
|
4046
4167
|
|
|
4047
4168
|
| Name | Type |
|
|
4048
4169
|
| :------ | :------ |
|
|
4049
|
-
| `props` |
|
|
4050
|
-
|
|
4051
|
-
#### Returns
|
|
4052
|
-
|
|
4053
|
-
ReactNode
|
|
4054
|
-
|
|
4055
|
-
#### Defined in
|
|
4056
|
-
|
|
4057
|
-
[packages/core/src/components/Dialog/Dialog.tsx:322](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L322)
|
|
4058
|
-
|
|
4059
|
-
___
|
|
4060
|
-
|
|
4061
|
-
### DialogContent
|
|
4062
|
-
|
|
4063
|
-
▸ **DialogContent**(`props`): ReactNode
|
|
4064
|
-
|
|
4065
|
-
#### Parameters
|
|
4066
|
-
|
|
4067
|
-
| Name | Type | Description |
|
|
4068
|
-
| :------ | :------ | :------ |
|
|
4069
|
-
| `props` | DialogContentProps & RefAttributes\<HTMLDivElement\> | Content configuration and styling |
|
|
4170
|
+
| `props` | DialogCloseProps & RefAttributes\<HTMLButtonElement\> |
|
|
4070
4171
|
|
|
4071
4172
|
#### Returns
|
|
4072
4173
|
|
|
4073
4174
|
ReactNode
|
|
4074
4175
|
|
|
4075
|
-
JSX.Element - The semantic dialog content with overlay and optional close button
|
|
4076
|
-
|
|
4077
4176
|
#### Defined in
|
|
4078
4177
|
|
|
4079
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4178
|
+
[packages/core/src/components/Dialog/Dialog.tsx:715](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L715)
|
|
4080
4179
|
|
|
4081
4180
|
___
|
|
4082
4181
|
|
|
4083
4182
|
### DialogHeader
|
|
4084
4183
|
|
|
4085
|
-
▸ **DialogHeader**(
|
|
4184
|
+
▸ **DialogHeader**(`«destructured»`): Element
|
|
4086
4185
|
|
|
4087
4186
|
#### Parameters
|
|
4088
4187
|
|
|
4089
|
-
| Name | Type |
|
|
4090
|
-
| :------ | :------ |
|
|
4091
|
-
|
|
|
4188
|
+
| Name | Type |
|
|
4189
|
+
| :------ | :------ |
|
|
4190
|
+
| `«destructured»` | DialogHeaderProps |
|
|
4092
4191
|
|
|
4093
4192
|
#### Returns
|
|
4094
4193
|
|
|
4095
4194
|
Element
|
|
4096
4195
|
|
|
4097
|
-
JSX.Element - The dialog header container using semantic <header> element
|
|
4098
|
-
|
|
4099
4196
|
#### Defined in
|
|
4100
4197
|
|
|
4101
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4198
|
+
[packages/core/src/components/Dialog/Dialog.tsx:742](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L742)
|
|
4102
4199
|
|
|
4103
4200
|
___
|
|
4104
4201
|
|
|
4105
4202
|
### DialogBody
|
|
4106
4203
|
|
|
4107
|
-
▸ **DialogBody**(
|
|
4204
|
+
▸ **DialogBody**(`«destructured»`): Element
|
|
4108
4205
|
|
|
4109
4206
|
#### Parameters
|
|
4110
4207
|
|
|
4111
|
-
| Name | Type |
|
|
4112
|
-
| :------ | :------ |
|
|
4113
|
-
|
|
|
4208
|
+
| Name | Type |
|
|
4209
|
+
| :------ | :------ |
|
|
4210
|
+
| `«destructured»` | DialogBodyProps |
|
|
4114
4211
|
|
|
4115
4212
|
#### Returns
|
|
4116
4213
|
|
|
4117
4214
|
Element
|
|
4118
4215
|
|
|
4119
|
-
JSX.Element - The scrollable dialog body container using semantic <main> element
|
|
4120
|
-
|
|
4121
4216
|
#### Defined in
|
|
4122
4217
|
|
|
4123
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4218
|
+
[packages/core/src/components/Dialog/Dialog.tsx:762](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L762)
|
|
4124
4219
|
|
|
4125
4220
|
___
|
|
4126
4221
|
|
|
4127
4222
|
### DialogFooter
|
|
4128
4223
|
|
|
4129
|
-
▸ **DialogFooter**(
|
|
4224
|
+
▸ **DialogFooter**(`«destructured»`): Element
|
|
4130
4225
|
|
|
4131
4226
|
#### Parameters
|
|
4132
4227
|
|
|
4133
|
-
| Name | Type |
|
|
4134
|
-
| :------ | :------ |
|
|
4135
|
-
|
|
|
4228
|
+
| Name | Type |
|
|
4229
|
+
| :------ | :------ |
|
|
4230
|
+
| `«destructured»` | DialogFooterProps |
|
|
4136
4231
|
|
|
4137
4232
|
#### Returns
|
|
4138
4233
|
|
|
4139
4234
|
Element
|
|
4140
4235
|
|
|
4141
|
-
JSX.Element - The dialog footer container using semantic <footer> element
|
|
4142
|
-
|
|
4143
4236
|
#### Defined in
|
|
4144
4237
|
|
|
4145
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4238
|
+
[packages/core/src/components/Dialog/Dialog.tsx:830](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L830)
|
|
4146
4239
|
|
|
4147
4240
|
___
|
|
4148
4241
|
|
|
@@ -4162,7 +4255,7 @@ ReactNode
|
|
|
4162
4255
|
|
|
4163
4256
|
#### Defined in
|
|
4164
4257
|
|
|
4165
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4258
|
+
[packages/core/src/components/Dialog/Dialog.tsx:850](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L850)
|
|
4166
4259
|
|
|
4167
4260
|
___
|
|
4168
4261
|
|
|
@@ -4174,7 +4267,7 @@ ___
|
|
|
4174
4267
|
|
|
4175
4268
|
| Name | Type |
|
|
4176
4269
|
| :------ | :------ |
|
|
4177
|
-
| `props` | DialogDescriptionProps & RefAttributes\<
|
|
4270
|
+
| `props` | DialogDescriptionProps & RefAttributes\<HTMLParagraphElement\> |
|
|
4178
4271
|
|
|
4179
4272
|
#### Returns
|
|
4180
4273
|
|
|
@@ -4182,7 +4275,7 @@ ReactNode
|
|
|
4182
4275
|
|
|
4183
4276
|
#### Defined in
|
|
4184
4277
|
|
|
4185
|
-
[packages/core/src/components/Dialog/Dialog.tsx:
|
|
4278
|
+
[packages/core/src/components/Dialog/Dialog.tsx:889](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L889)
|
|
4186
4279
|
|
|
4187
4280
|
___
|
|
4188
4281
|
|
|
@@ -4337,7 +4430,7 @@ JSX.Element - The rendered form with FormProvider context
|
|
|
4337
4430
|
|
|
4338
4431
|
#### Defined in
|
|
4339
4432
|
|
|
4340
|
-
[packages/core/src/components/Form/Form.tsx:
|
|
4433
|
+
[packages/core/src/components/Form/Form.tsx:142](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L142)
|
|
4341
4434
|
|
|
4342
4435
|
___
|
|
4343
4436
|
|
|
@@ -4429,7 +4522,7 @@ JSX.Element - The rendered form field with validation
|
|
|
4429
4522
|
|
|
4430
4523
|
#### Defined in
|
|
4431
4524
|
|
|
4432
|
-
[packages/core/src/components/Form/Form.tsx:
|
|
4525
|
+
[packages/core/src/components/Form/Form.tsx:307](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L307)
|
|
4433
4526
|
|
|
4434
4527
|
___
|
|
4435
4528
|
|
|
@@ -4474,7 +4567,7 @@ Element
|
|
|
4474
4567
|
|
|
4475
4568
|
#### Defined in
|
|
4476
4569
|
|
|
4477
|
-
[packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx:
|
|
4570
|
+
[packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx:73](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx#L73)
|
|
4478
4571
|
|
|
4479
4572
|
___
|
|
4480
4573
|
|
|
@@ -4778,7 +4871,7 @@ function AdminApp() {
|
|
|
4778
4871
|
|
|
4779
4872
|
#### Defined in
|
|
4780
4873
|
|
|
4781
|
-
[packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:
|
|
4874
|
+
[packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:353](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L353)
|
|
4782
4875
|
|
|
4783
4876
|
___
|
|
4784
4877
|
|
|
@@ -4820,7 +4913,7 @@ Element
|
|
|
4820
4913
|
|
|
4821
4914
|
#### Defined in
|
|
4822
4915
|
|
|
4823
|
-
[packages/core/src/components/PasswordChange/PasswordChangeForm.tsx:
|
|
4916
|
+
[packages/core/src/components/PasswordChange/PasswordChangeForm.tsx:133](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PasswordChange/PasswordChangeForm.tsx#L133)
|
|
4824
4917
|
|
|
4825
4918
|
___
|
|
4826
4919
|
|
|
@@ -5824,7 +5917,7 @@ ReactNode
|
|
|
5824
5917
|
|
|
5825
5918
|
#### Defined in
|
|
5826
5919
|
|
|
5827
|
-
[packages/core/src/components/UserMenu/UserMenu.tsx:
|
|
5920
|
+
[packages/core/src/components/UserMenu/UserMenu.tsx:138](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/UserMenu/UserMenu.tsx#L138)
|
|
5828
5921
|
|
|
5829
5922
|
___
|
|
5830
5923
|
|
|
@@ -6254,20 +6347,24 @@ function MyComponent() {
|
|
|
6254
6347
|
const { events, selectedEvent, setSelectedEvent } = useEvents();
|
|
6255
6348
|
|
|
6256
6349
|
return (
|
|
6257
|
-
<
|
|
6258
|
-
|
|
6259
|
-
|
|
6260
|
-
{event.
|
|
6261
|
-
|
|
6262
|
-
|
|
6263
|
-
|
|
6350
|
+
<nav>
|
|
6351
|
+
<ul>
|
|
6352
|
+
{events.map(event => (
|
|
6353
|
+
<li key={event.id}>
|
|
6354
|
+
<button onClick={() => setSelectedEvent(event)}>
|
|
6355
|
+
{event.event_name}
|
|
6356
|
+
</button>
|
|
6357
|
+
</li>
|
|
6358
|
+
))}
|
|
6359
|
+
</ul>
|
|
6360
|
+
</nav>
|
|
6264
6361
|
);
|
|
6265
6362
|
}
|
|
6266
6363
|
```
|
|
6267
6364
|
|
|
6268
6365
|
#### Defined in
|
|
6269
6366
|
|
|
6270
|
-
[packages/core/src/hooks/useEvents.ts:
|
|
6367
|
+
[packages/core/src/hooks/useEvents.ts:55](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useEvents.ts#L55)
|
|
6271
6368
|
|
|
6272
6369
|
___
|
|
6273
6370
|
|
|
@@ -6568,21 +6665,27 @@ function MyComponent() {
|
|
|
6568
6665
|
const { selectedOrganisation, organisations, switchOrganisation } = useOrganisations();
|
|
6569
6666
|
|
|
6570
6667
|
return (
|
|
6571
|
-
<
|
|
6668
|
+
<main>
|
|
6572
6669
|
<h1>Current Organisation: {selectedOrganisation.display_name}</h1>
|
|
6573
|
-
|
|
6574
|
-
<
|
|
6575
|
-
{org
|
|
6576
|
-
|
|
6577
|
-
|
|
6578
|
-
|
|
6670
|
+
<nav>
|
|
6671
|
+
<ul>
|
|
6672
|
+
{organisations.map(org => (
|
|
6673
|
+
<li key={org.id}>
|
|
6674
|
+
<button onClick={() => switchOrganisation(org.id)}>
|
|
6675
|
+
{org.display_name}
|
|
6676
|
+
</button>
|
|
6677
|
+
</li>
|
|
6678
|
+
))}
|
|
6679
|
+
</ul>
|
|
6680
|
+
</nav>
|
|
6681
|
+
</main>
|
|
6579
6682
|
);
|
|
6580
6683
|
}
|
|
6581
6684
|
```
|
|
6582
6685
|
|
|
6583
6686
|
#### Defined in
|
|
6584
6687
|
|
|
6585
|
-
[packages/core/src/hooks/useOrganisations.ts:
|
|
6688
|
+
[packages/core/src/hooks/useOrganisations.ts:47](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useOrganisations.ts#L47)
|
|
6586
6689
|
|
|
6587
6690
|
___
|
|
6588
6691
|
|
|
@@ -8721,15 +8824,22 @@ permissions for a resource type. It handles scope resolution, user context,
|
|
|
8721
8824
|
and provides a simple API for permission checking.
|
|
8722
8825
|
|
|
8723
8826
|
**Page Permission Support:**
|
|
8724
|
-
When an `appId` is available in the resolved scope, the
|
|
8725
|
-
|
|
8726
|
-
|
|
8727
|
-
|
|
8827
|
+
When an `appId` is available in the resolved scope, the hook automatically:
|
|
8828
|
+
1. Waits for scope resolution to complete (including `appId` being set)
|
|
8829
|
+
2. Constructs permission strings with the `page.` prefix (e.g., `create:page.planning`)
|
|
8830
|
+
3. Passes the resource name as `pageId` to enable page-based permission checks
|
|
8831
|
+
|
|
8832
|
+
This ensures permission strings match the format returned by `rbac_permissions_get`
|
|
8833
|
+
(e.g., `create:page.planning`) rather than resource-based format (e.g., `create:planning`).
|
|
8834
|
+
|
|
8835
|
+
**Scope Resolution Timing:**
|
|
8836
|
+
The hook waits for scope resolution to complete before constructing permission strings.
|
|
8837
|
+
This prevents timing issues where permission checks use the wrong format (e.g., `delete:planning`
|
|
8838
|
+
instead of `delete:page.planning`) when `appId` is not yet available in the scope.
|
|
8728
8839
|
|
|
8729
|
-
The RPC function `rbac_check_permission_simplified` will
|
|
8730
|
-
|
|
8731
|
-
|
|
8732
|
-
it will fall back to resource-based permission checking.
|
|
8840
|
+
The RPC function `rbac_check_permission_simplified` will resolve the page name to a page ID
|
|
8841
|
+
and check page permissions if the resource matches a registered page in `rbac_app_pages`.
|
|
8842
|
+
If the resource is not a registered page, it will fall back to resource-based permission checking.
|
|
8733
8843
|
|
|
8734
8844
|
#### Parameters
|
|
8735
8845
|
|
|
@@ -8779,7 +8889,7 @@ function usePlanning() {
|
|
|
8779
8889
|
|
|
8780
8890
|
#### Defined in
|
|
8781
8891
|
|
|
8782
|
-
[packages/core/src/rbac/hooks/useResourcePermissions.ts:
|
|
8892
|
+
[packages/core/src/rbac/hooks/useResourcePermissions.ts:138](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L138)
|
|
8783
8893
|
|
|
8784
8894
|
___
|
|
8785
8895
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jmruthers/pace-core",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
4
4
|
"description": "Clean, modern React component library with Tailwind v4 styling and native utilities",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -202,7 +202,6 @@
|
|
|
202
202
|
"license": "MIT",
|
|
203
203
|
"peerDependencies": {
|
|
204
204
|
"@radix-ui/react-checkbox": "^1.0.0",
|
|
205
|
-
"@radix-ui/react-dialog": "^1.0.0",
|
|
206
205
|
"@radix-ui/react-label": "^2.0.0",
|
|
207
206
|
"@radix-ui/react-slot": "^1.0.0",
|
|
208
207
|
"@radix-ui/react-switch": "^1.1.0",
|
|
@@ -232,6 +232,16 @@ const KeyboardNavigationTestTable: React.FC = () => {
|
|
|
232
232
|
|
|
233
233
|
describe('DataTable Keyboard Navigation', () => {
|
|
234
234
|
beforeEach(() => {
|
|
235
|
+
// Mock showModal for dialog elements (needed for test environments)
|
|
236
|
+
HTMLDialogElement.prototype.showModal = vi.fn(function(this: HTMLDialogElement) {
|
|
237
|
+
this.setAttribute('open', '');
|
|
238
|
+
this.dispatchEvent(new Event('show', { bubbles: true }));
|
|
239
|
+
});
|
|
240
|
+
HTMLDialogElement.prototype.close = vi.fn(function(this: HTMLDialogElement) {
|
|
241
|
+
this.removeAttribute('open');
|
|
242
|
+
this.dispatchEvent(new Event('close', { bubbles: true }));
|
|
243
|
+
});
|
|
244
|
+
|
|
235
245
|
// Clear any existing live regions
|
|
236
246
|
const existingLiveRegions = document.querySelectorAll('[aria-live]');
|
|
237
247
|
existingLiveRegions.forEach(region => {
|
|
@@ -517,8 +527,11 @@ describe('DataTable Keyboard Navigation', () => {
|
|
|
517
527
|
const importButton = await screen.findByRole('button', { name: /import/i });
|
|
518
528
|
await user.click(importButton);
|
|
519
529
|
|
|
520
|
-
// Confirm the modal is open
|
|
521
|
-
await
|
|
530
|
+
// Confirm the modal is open - wait for dialog to be accessible
|
|
531
|
+
await waitFor(() => {
|
|
532
|
+
const dialog = screen.queryByRole('dialog') || document.querySelector('dialog[role="dialog"]');
|
|
533
|
+
expect(dialog).toBeInTheDocument();
|
|
534
|
+
}, { timeout: 5000 });
|
|
522
535
|
|
|
523
536
|
// Close modal via Escape key
|
|
524
537
|
await user.keyboard('{Escape}');
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
* - Customizable text content
|
|
37
37
|
*/
|
|
38
38
|
import React, { useState, useRef, useEffect } from 'react';
|
|
39
|
-
import { Dialog, DialogContent,
|
|
39
|
+
import { Dialog, DialogContent, DialogHeader } from '../../Dialog';
|
|
40
40
|
import { Button } from '../../Button/Button';
|
|
41
41
|
import { Input } from '../../Input/Input';
|
|
42
42
|
import { Progress } from '../../Progress';
|
|
@@ -372,12 +372,10 @@ export function ImportModal({ isOpen, onClose, onImport, config = {} }: ImportMo
|
|
|
372
372
|
|
|
373
373
|
return (
|
|
374
374
|
<Dialog open={isOpen} onOpenChange={handleClose}>
|
|
375
|
-
<DialogContent className="sm:max-w-2xl bg-main-50">
|
|
375
|
+
<DialogContent className="sm:max-w-2xl bg-main-50" title={title} description={description}>
|
|
376
376
|
<DialogHeader>
|
|
377
|
-
<
|
|
378
|
-
<
|
|
379
|
-
{description}
|
|
380
|
-
</DialogDescription>
|
|
377
|
+
<h2>{title}</h2>
|
|
378
|
+
<p>{description}</p>
|
|
381
379
|
</DialogHeader>
|
|
382
380
|
|
|
383
381
|
<div className="space-y-4">
|