@hrbolek/uoisfrontend-template 0.6.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/index.html +104 -0
- package/package.json +24 -0
- package/src/Base/Components/Attribute.jsx +51 -0
- package/src/Base/Components/CardCapsule.jsx +353 -0
- package/src/Base/Components/Col.jsx +36 -0
- package/src/Base/Components/ConfirmEdit.jsx +61 -0
- package/src/Base/Components/CopyButton.jsx +33 -0
- package/src/Base/Components/LargeCard.jsx +22 -0
- package/src/Base/Components/Link.jsx +42 -0
- package/src/Base/Components/LiveEdit.jsx +64 -0
- package/src/Base/Components/MediumCard.jsx +30 -0
- package/src/Base/Components/MediumContent.jsx +74 -0
- package/src/Base/Components/MediumEditableContent.jsx +52 -0
- package/src/Base/Components/ProxyLink.jsx +132 -0
- package/src/Base/Components/Row.jsx +23 -0
- package/src/Base/Components/Table.jsx +275 -0
- package/src/Base/Components/index.js +14 -0
- package/src/Base/Components/style.js +278 -0
- package/src/Base/FormControls/Collapsible.jsx +46 -0
- package/src/Base/FormControls/Dialog.jsx +75 -0
- package/src/Base/FormControls/EntityLookup.jsx +175 -0
- package/src/Base/FormControls/Filter.jsx +834 -0
- package/src/Base/FormControls/Input.jsx +163 -0
- package/src/Base/FormControls/Label.jsx +40 -0
- package/src/Base/FormControls/Select.jsx +150 -0
- package/src/Base/FormControls/TextArea.jsx +86 -0
- package/src/Base/FormControls/index.js +8 -0
- package/src/Base/Helpers/AsyncStateIndicator.jsx +9 -0
- package/src/Base/Helpers/GQLEntityProvider.jsx +163 -0
- package/src/Base/Helpers/NavigationHistoryProvider.jsx +178 -0
- package/src/Base/Helpers/PlaceChild.jsx +13 -0
- package/src/Base/Helpers/generateQuery.js +508 -0
- package/src/Base/Helpers/index.js +5 -0
- package/src/Base/Mutations/Create.jsx +152 -0
- package/src/Base/Mutations/Delete.jsx +237 -0
- package/src/Base/Mutations/General.jsx +241 -0
- package/src/Base/Mutations/InteractiveMutations.jsx +32 -0
- package/src/Base/Mutations/Update.jsx +270 -0
- package/src/Base/Mutations/helpers.jsx +7 -0
- package/src/Base/Mutations/index.js +5 -0
- package/src/Base/Pages/Page.jsx +235 -0
- package/src/Base/Pages/PageCatch.jsx +235 -0
- package/src/Base/Pages/PageNavbar.jsx +70 -0
- package/src/Base/Pages/PageVector.jsx +229 -0
- package/src/Base/Pages/RouterSegment.jsx +66 -0
- package/src/Base/Pages/index.js +5 -0
- package/src/Base/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/Base/Queries/Fragments.jsx +101 -0
- package/src/Base/Queries/InsertAsyncAction.jsx +40 -0
- package/src/Base/Queries/ReadAsyncAction.jsx +44 -0
- package/src/Base/Queries/ReadPageAsyncAction.jsx +16 -0
- package/src/Base/Queries/SearchAsyncAction.jsx +16 -0
- package/src/Base/Queries/UpdateAsyncAction.jsx +40 -0
- package/src/Base/Queries/index.js +6 -0
- package/src/Base/Scalars/ScalarAttribute.jsx +49 -0
- package/src/Base/Scalars/index.js +1 -0
- package/src/Base/Vectors/VectorAttribute.jsx +137 -0
- package/src/Base/Vectors/index.js +1 -0
- package/src/Base/index.js +32 -0
- package/src/GroupGQLModel/Components/CUDButton.jsx +128 -0
- package/src/GroupGQLModel/Components/CardCapsule.jsx +44 -0
- package/src/GroupGQLModel/Components/Children.jsx +31 -0
- package/src/GroupGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/GroupGQLModel/Components/Filter.jsx +14 -0
- package/src/GroupGQLModel/Components/LargeCard.jsx +68 -0
- package/src/GroupGQLModel/Components/Link.jsx +54 -0
- package/src/GroupGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/GroupGQLModel/Components/MediumCard.jsx +51 -0
- package/src/GroupGQLModel/Components/MediumContent.jsx +56 -0
- package/src/GroupGQLModel/Components/MediumEditableContent.jsx +52 -0
- package/src/GroupGQLModel/Components/Table.jsx +70 -0
- package/src/GroupGQLModel/Components/index.js +14 -0
- package/src/GroupGQLModel/Mutations/AddMembership.jsx +156 -0
- package/src/GroupGQLModel/Mutations/Create.jsx +67 -0
- package/src/GroupGQLModel/Mutations/Delete.jsx +81 -0
- package/src/GroupGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/GroupGQLModel/Mutations/Update.jsx +74 -0
- package/src/GroupGQLModel/Pages/PageBase.jsx +56 -0
- package/src/GroupGQLModel/Pages/PageCreateItem.jsx +27 -0
- package/src/GroupGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/GroupGQLModel/Pages/PageNavbar.jsx +264 -0
- package/src/GroupGQLModel/Pages/PageReadItem.jsx +12 -0
- package/src/GroupGQLModel/Pages/PageReadItemEx.jsx +57 -0
- package/src/GroupGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/GroupGQLModel/Pages/PageVector.jsx +80 -0
- package/src/GroupGQLModel/Pages/RouterSegment.jsx +85 -0
- package/src/GroupGQLModel/Pages/index.js +2 -0
- package/src/GroupGQLModel/Queries/DeleteAsyncAction.jsx +22 -0
- package/src/GroupGQLModel/Queries/Fragments.jsx +129 -0
- package/src/GroupGQLModel/Queries/InsertAsyncAction.jsx +43 -0
- package/src/GroupGQLModel/Queries/ReadAsyncAction.jsx +44 -0
- package/src/GroupGQLModel/Queries/ReadPageAsyncAction.jsx +18 -0
- package/src/GroupGQLModel/Queries/SearchAsyncAction.jsx +15 -0
- package/src/GroupGQLModel/Queries/UpdateAsyncAction.jsx +56 -0
- package/src/GroupGQLModel/Queries/index.js +6 -0
- package/src/GroupGQLModel/Scalars/GroupRoles.jsx +69 -0
- package/src/GroupGQLModel/Scalars/MasterGroup.jsx +15 -0
- package/src/GroupGQLModel/Scalars/RBACObject.jsx +233 -0
- package/src/GroupGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/GroupGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/GroupGQLModel/Scalars/index.js +1 -0
- package/src/GroupGQLModel/Vectors/GroupMemberships.jsx +115 -0
- package/src/GroupGQLModel/Vectors/GroupRoles.jsx +112 -0
- package/src/GroupGQLModel/Vectors/GroupRolesOn.jsx +113 -0
- package/src/GroupGQLModel/Vectors/GroupSubgroups.jsx +97 -0
- package/src/GroupGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/GroupGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/GroupGQLModel/Vectors/index.js +1 -0
- package/src/GroupGQLModel/index.js +7 -0
- package/src/GroupTypeGQLModel/Components/CUDButton.jsx +128 -0
- package/src/GroupTypeGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/GroupTypeGQLModel/Components/Children.jsx +31 -0
- package/src/GroupTypeGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/GroupTypeGQLModel/Components/Filter.jsx +14 -0
- package/src/GroupTypeGQLModel/Components/LargeCard.jsx +49 -0
- package/src/GroupTypeGQLModel/Components/Link.jsx +53 -0
- package/src/GroupTypeGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/GroupTypeGQLModel/Components/MediumCard.jsx +39 -0
- package/src/GroupTypeGQLModel/Components/MediumContent.jsx +97 -0
- package/src/GroupTypeGQLModel/Components/MediumEditableContent.jsx +35 -0
- package/src/GroupTypeGQLModel/Components/Table.jsx +7 -0
- package/src/GroupTypeGQLModel/Components/index.js +14 -0
- package/src/GroupTypeGQLModel/Mutations/Create.jsx +67 -0
- package/src/GroupTypeGQLModel/Mutations/Delete.jsx +80 -0
- package/src/GroupTypeGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/GroupTypeGQLModel/Mutations/Update.jsx +74 -0
- package/src/GroupTypeGQLModel/Pages/Page.jsx +3 -0
- package/src/GroupTypeGQLModel/Pages/PageBase.jsx +26 -0
- package/src/GroupTypeGQLModel/Pages/PageCreateItem.jsx +21 -0
- package/src/GroupTypeGQLModel/Pages/PageDeleteItem.jsx +13 -0
- package/src/GroupTypeGQLModel/Pages/PageNavbar.jsx +148 -0
- package/src/GroupTypeGQLModel/Pages/PageReadItem.jsx +28 -0
- package/src/GroupTypeGQLModel/Pages/PageUpdateItem.jsx +25 -0
- package/src/GroupTypeGQLModel/Pages/PageVector.jsx +83 -0
- package/src/GroupTypeGQLModel/Pages/RouterSegment.jsx +68 -0
- package/src/GroupTypeGQLModel/Pages/index.js +10 -0
- package/src/GroupTypeGQLModel/Queries/DeleteAsyncAction.jsx +27 -0
- package/src/GroupTypeGQLModel/Queries/Fragments.jsx +96 -0
- package/src/GroupTypeGQLModel/Queries/InsertAsyncAction.jsx +41 -0
- package/src/GroupTypeGQLModel/Queries/ReadAsyncAction.jsx +45 -0
- package/src/GroupTypeGQLModel/Queries/ReadPageAsyncAction.jsx +14 -0
- package/src/GroupTypeGQLModel/Queries/SearchAsyncAction.jsx +16 -0
- package/src/GroupTypeGQLModel/Queries/UpdateAsyncAction.jsx +42 -0
- package/src/GroupTypeGQLModel/Queries/index.js +6 -0
- package/src/GroupTypeGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/GroupTypeGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/GroupTypeGQLModel/Scalars/index.js +1 -0
- package/src/GroupTypeGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/GroupTypeGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/GroupTypeGQLModel/Vectors/index.js +1 -0
- package/src/GroupTypeGQLModel/index.js +6 -0
- package/src/MembershipGQLModel/Components/CUDButton.jsx +128 -0
- package/src/MembershipGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/MembershipGQLModel/Components/Children.jsx +31 -0
- package/src/MembershipGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/MembershipGQLModel/Components/Filter.jsx +14 -0
- package/src/MembershipGQLModel/Components/LargeCard.jsx +49 -0
- package/src/MembershipGQLModel/Components/Link.jsx +54 -0
- package/src/MembershipGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/MembershipGQLModel/Components/MediumCard.jsx +39 -0
- package/src/MembershipGQLModel/Components/MediumContent.jsx +97 -0
- package/src/MembershipGQLModel/Components/MediumEditableContent.jsx +35 -0
- package/src/MembershipGQLModel/Components/Table.jsx +7 -0
- package/src/MembershipGQLModel/Components/index.js +14 -0
- package/src/MembershipGQLModel/Mutations/Create.jsx +67 -0
- package/src/MembershipGQLModel/Mutations/Delete.jsx +80 -0
- package/src/MembershipGQLModel/Mutations/InteractiveMutations.jsx +31 -0
- package/src/MembershipGQLModel/Mutations/Update.jsx +74 -0
- package/src/MembershipGQLModel/Mutations/helpers.jsx +7 -0
- package/src/MembershipGQLModel/Pages/PageBase.jsx +57 -0
- package/src/MembershipGQLModel/Pages/PageCreateItem.jsx +28 -0
- package/src/MembershipGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/MembershipGQLModel/Pages/PageNavbar.jsx +110 -0
- package/src/MembershipGQLModel/Pages/PageReadItem.jsx +11 -0
- package/src/MembershipGQLModel/Pages/PageReadItemEx.jsx +42 -0
- package/src/MembershipGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/MembershipGQLModel/Pages/PageVector.jsx +80 -0
- package/src/MembershipGQLModel/Pages/RouterSegment.jsx +73 -0
- package/src/MembershipGQLModel/Pages/index.js +2 -0
- package/src/MembershipGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/MembershipGQLModel/Queries/Fragments.jsx +113 -0
- package/src/MembershipGQLModel/Queries/InsertAsyncAction.jsx +38 -0
- package/src/MembershipGQLModel/Queries/ReadAsyncAction.jsx +44 -0
- package/src/MembershipGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
- package/src/MembershipGQLModel/Queries/SearchAsyncAction.jsx +16 -0
- package/src/MembershipGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
- package/src/MembershipGQLModel/Queries/index.js +6 -0
- package/src/MembershipGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/MembershipGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/MembershipGQLModel/Scalars/index.js +1 -0
- package/src/MembershipGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/MembershipGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/MembershipGQLModel/Vectors/index.js +1 -0
- package/src/MembershipGQLModel/WhatToDo.md +44 -0
- package/src/MembershipGQLModel/index.js +6 -0
- package/src/RBACGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/RBACGQLModel/Components/Children.jsx +31 -0
- package/src/RBACGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/RBACGQLModel/Components/Filter.jsx +14 -0
- package/src/RBACGQLModel/Components/LargeCard.jsx +50 -0
- package/src/RBACGQLModel/Components/Link.jsx +54 -0
- package/src/RBACGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/RBACGQLModel/Components/MediumCard.jsx +39 -0
- package/src/RBACGQLModel/Components/MediumContent.jsx +96 -0
- package/src/RBACGQLModel/Components/MediumEditableContent.jsx +212 -0
- package/src/RBACGQLModel/Components/Table.jsx +7 -0
- package/src/RBACGQLModel/Components/index.js +13 -0
- package/src/RBACGQLModel/Mutations/Create.jsx +202 -0
- package/src/RBACGQLModel/Mutations/Delete.jsx +173 -0
- package/src/RBACGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/RBACGQLModel/Mutations/Update.jsx +147 -0
- package/src/RBACGQLModel/Mutations/helpers.jsx +7 -0
- package/src/RBACGQLModel/Pages/PageBase.jsx +56 -0
- package/src/RBACGQLModel/Pages/PageCreateItem.jsx +28 -0
- package/src/RBACGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/RBACGQLModel/Pages/PageNavbar.jsx +160 -0
- package/src/RBACGQLModel/Pages/PageReadItem.jsx +11 -0
- package/src/RBACGQLModel/Pages/PageReadItemEx.jsx +42 -0
- package/src/RBACGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/RBACGQLModel/Pages/PageVector.jsx +80 -0
- package/src/RBACGQLModel/Pages/RouterSegment.jsx +72 -0
- package/src/RBACGQLModel/Pages/index.js +2 -0
- package/src/RBACGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/RBACGQLModel/Queries/Fragments.jsx +101 -0
- package/src/RBACGQLModel/Queries/InsertAsyncAction.jsx +40 -0
- package/src/RBACGQLModel/Queries/ReadAsyncAction.jsx +44 -0
- package/src/RBACGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
- package/src/RBACGQLModel/Queries/SearchAsyncAction.jsx +16 -0
- package/src/RBACGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
- package/src/RBACGQLModel/Queries/index.js +6 -0
- package/src/RBACGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/RBACGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/RBACGQLModel/Scalars/index.js +1 -0
- package/src/RBACGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/RBACGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/RBACGQLModel/Vectors/index.js +1 -0
- package/src/RBACGQLModel/WhatToDo.md +44 -0
- package/src/RBACGQLModel/index.js +71 -0
- package/src/RoleGQLModel/Components/CUDButton.jsx +128 -0
- package/src/RoleGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/RoleGQLModel/Components/Children.jsx +31 -0
- package/src/RoleGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/RoleGQLModel/Components/Filter.jsx +14 -0
- package/src/RoleGQLModel/Components/LargeCard.jsx +49 -0
- package/src/RoleGQLModel/Components/Link.jsx +55 -0
- package/src/RoleGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/RoleGQLModel/Components/MediumCard.jsx +39 -0
- package/src/RoleGQLModel/Components/MediumContent.jsx +97 -0
- package/src/RoleGQLModel/Components/MediumEditableContent.jsx +72 -0
- package/src/RoleGQLModel/Components/RBACObject.jsx +22 -0
- package/src/RoleGQLModel/Components/Table.jsx +82 -0
- package/src/RoleGQLModel/Components/index.js +14 -0
- package/src/RoleGQLModel/Mutations/AddRoleOnGroup.jsx +117 -0
- package/src/RoleGQLModel/Mutations/Create.jsx +67 -0
- package/src/RoleGQLModel/Mutations/Delete.jsx +80 -0
- package/src/RoleGQLModel/Mutations/InteractiveMutations.jsx +31 -0
- package/src/RoleGQLModel/Mutations/Update.jsx +74 -0
- package/src/RoleGQLModel/Pages/Page.jsx +3 -0
- package/src/RoleGQLModel/Pages/PageBase.jsx +26 -0
- package/src/RoleGQLModel/Pages/PageContent.jsx +31 -0
- package/src/RoleGQLModel/Pages/PageCreateItem.jsx +21 -0
- package/src/RoleGQLModel/Pages/PageDeleteItem.jsx +13 -0
- package/src/RoleGQLModel/Pages/PageNavbar.jsx +161 -0
- package/src/RoleGQLModel/Pages/PageReadItem.jsx +28 -0
- package/src/RoleGQLModel/Pages/PageUpdateItem.jsx +25 -0
- package/src/RoleGQLModel/Pages/PageVector.jsx +83 -0
- package/src/RoleGQLModel/Pages/RouterSegment.jsx +69 -0
- package/src/RoleGQLModel/Pages/index.js +10 -0
- package/src/RoleGQLModel/Queries/DeleteAsyncAction.jsx +22 -0
- package/src/RoleGQLModel/Queries/Fragments.jsx +123 -0
- package/src/RoleGQLModel/Queries/InsertAsyncAction.jsx +45 -0
- package/src/RoleGQLModel/Queries/ReadAsyncAction.jsx +45 -0
- package/src/RoleGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
- package/src/RoleGQLModel/Queries/UpdateAsyncAction.jsx +35 -0
- package/src/RoleGQLModel/Queries/index.js +6 -0
- package/src/RoleGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/RoleGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/RoleGQLModel/Scalars/index.js +1 -0
- package/src/RoleGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/RoleGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/RoleGQLModel/Vectors/index.js +1 -0
- package/src/RoleGQLModel/index.js +6 -0
- package/src/RoleTypeGQLModel/Components/CUDButton.jsx +128 -0
- package/src/RoleTypeGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/RoleTypeGQLModel/Components/Children.jsx +31 -0
- package/src/RoleTypeGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/RoleTypeGQLModel/Components/Filter.jsx +14 -0
- package/src/RoleTypeGQLModel/Components/LargeCard.jsx +49 -0
- package/src/RoleTypeGQLModel/Components/Link.jsx +55 -0
- package/src/RoleTypeGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/RoleTypeGQLModel/Components/MediumCard.jsx +39 -0
- package/src/RoleTypeGQLModel/Components/MediumContent.jsx +97 -0
- package/src/RoleTypeGQLModel/Components/MediumEditableContent.jsx +35 -0
- package/src/RoleTypeGQLModel/Components/Table.jsx +7 -0
- package/src/RoleTypeGQLModel/Components/index.js +14 -0
- package/src/RoleTypeGQLModel/Mutations/Create.jsx +67 -0
- package/src/RoleTypeGQLModel/Mutations/Delete.jsx +80 -0
- package/src/RoleTypeGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/RoleTypeGQLModel/Mutations/Update.jsx +74 -0
- package/src/RoleTypeGQLModel/Pages/Page.jsx +3 -0
- package/src/RoleTypeGQLModel/Pages/PageBase.jsx +56 -0
- package/src/RoleTypeGQLModel/Pages/PageCreateItem.jsx +27 -0
- package/src/RoleTypeGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/RoleTypeGQLModel/Pages/PageNavbar.jsx +148 -0
- package/src/RoleTypeGQLModel/Pages/PageReadItem.jsx +11 -0
- package/src/RoleTypeGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/RoleTypeGQLModel/Pages/PageVector.jsx +79 -0
- package/src/RoleTypeGQLModel/Pages/RouterSegment.jsx +69 -0
- package/src/RoleTypeGQLModel/Pages/index.js +10 -0
- package/src/RoleTypeGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/RoleTypeGQLModel/Queries/Fragments.jsx +103 -0
- package/src/RoleTypeGQLModel/Queries/InsertAsyncAction.jsx +40 -0
- package/src/RoleTypeGQLModel/Queries/ReadAsyncAction.jsx +44 -0
- package/src/RoleTypeGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
- package/src/RoleTypeGQLModel/Queries/SearchAsyncAction.jsx +29 -0
- package/src/RoleTypeGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
- package/src/RoleTypeGQLModel/Queries/index.js +6 -0
- package/src/RoleTypeGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/RoleTypeGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/RoleTypeGQLModel/Scalars/index.js +1 -0
- package/src/RoleTypeGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/RoleTypeGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/RoleTypeGQLModel/Vectors/index.js +1 -0
- package/src/RoleTypeGQLModel/index.js +6 -0
- package/src/StateGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/StateGQLModel/Components/Children.jsx +31 -0
- package/src/StateGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/StateGQLModel/Components/Filter.jsx +14 -0
- package/src/StateGQLModel/Components/LargeCard.jsx +50 -0
- package/src/StateGQLModel/Components/Link.jsx +54 -0
- package/src/StateGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/StateGQLModel/Components/MediumCard.jsx +39 -0
- package/src/StateGQLModel/Components/MediumContent.jsx +96 -0
- package/src/StateGQLModel/Components/MediumEditableContent.jsx +36 -0
- package/src/StateGQLModel/Components/Table.jsx +7 -0
- package/src/StateGQLModel/Components/index.js +13 -0
- package/src/StateGQLModel/Mutations/Create.jsx +79 -0
- package/src/StateGQLModel/Mutations/Delete.jsx +87 -0
- package/src/StateGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/StateGQLModel/Mutations/Update.jsx +76 -0
- package/src/StateGQLModel/Mutations/helpers.jsx +7 -0
- package/src/StateGQLModel/Pages/PageBase.jsx +56 -0
- package/src/StateGQLModel/Pages/PageCreateItem.jsx +28 -0
- package/src/StateGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/StateGQLModel/Pages/PageNavbar.jsx +160 -0
- package/src/StateGQLModel/Pages/PageReadItem.jsx +11 -0
- package/src/StateGQLModel/Pages/PageReadItemEx.jsx +42 -0
- package/src/StateGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/StateGQLModel/Pages/PageVector.jsx +80 -0
- package/src/StateGQLModel/Pages/RouterSegment.jsx +72 -0
- package/src/StateGQLModel/Pages/index.js +2 -0
- package/src/StateGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/StateGQLModel/Queries/Fragments.jsx +109 -0
- package/src/StateGQLModel/Queries/InsertAsyncAction.jsx +104 -0
- package/src/StateGQLModel/Queries/ReadAsyncAction.jsx +48 -0
- package/src/StateGQLModel/Queries/ReadPageAsyncAction.jsx +23 -0
- package/src/StateGQLModel/Queries/SearchAsyncAction.jsx +16 -0
- package/src/StateGQLModel/Queries/UpdateAsyncAction.jsx +106 -0
- package/src/StateGQLModel/Queries/index.js +6 -0
- package/src/StateGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/StateGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/StateGQLModel/Scalars/index.js +1 -0
- package/src/StateGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/StateGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/StateGQLModel/Vectors/index.js +1 -0
- package/src/StateGQLModel/index.js +71 -0
- package/src/StateMachineGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/StateMachineGQLModel/Components/Children.jsx +31 -0
- package/src/StateMachineGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/StateMachineGQLModel/Components/Filter.jsx +14 -0
- package/src/StateMachineGQLModel/Components/LargeCard.jsx +50 -0
- package/src/StateMachineGQLModel/Components/Link.jsx +54 -0
- package/src/StateMachineGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/StateMachineGQLModel/Components/MediumCard.jsx +39 -0
- package/src/StateMachineGQLModel/Components/MediumContent.jsx +96 -0
- package/src/StateMachineGQLModel/Components/MediumEditableContent.jsx +989 -0
- package/src/StateMachineGQLModel/Components/Table.jsx +7 -0
- package/src/StateMachineGQLModel/Components/index.js +13 -0
- package/src/StateMachineGQLModel/Mutations/Create.jsx +79 -0
- package/src/StateMachineGQLModel/Mutations/Delete.jsx +80 -0
- package/src/StateMachineGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/StateMachineGQLModel/Mutations/Update.jsx +74 -0
- package/src/StateMachineGQLModel/Mutations/helpers.jsx +7 -0
- package/src/StateMachineGQLModel/Pages/PageBase.jsx +56 -0
- package/src/StateMachineGQLModel/Pages/PageCreateItem.jsx +28 -0
- package/src/StateMachineGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/StateMachineGQLModel/Pages/PageNavbar.jsx +160 -0
- package/src/StateMachineGQLModel/Pages/PageReadItem.jsx +11 -0
- package/src/StateMachineGQLModel/Pages/PageReadItemEx.jsx +42 -0
- package/src/StateMachineGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/StateMachineGQLModel/Pages/PageVector.jsx +80 -0
- package/src/StateMachineGQLModel/Pages/RouterSegment.jsx +72 -0
- package/src/StateMachineGQLModel/Pages/index.js +2 -0
- package/src/StateMachineGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/StateMachineGQLModel/Queries/Fragments.jsx +148 -0
- package/src/StateMachineGQLModel/Queries/InsertAsyncAction.jsx +44 -0
- package/src/StateMachineGQLModel/Queries/ReadAsyncAction.jsx +48 -0
- package/src/StateMachineGQLModel/Queries/ReadPageAsyncAction.jsx +23 -0
- package/src/StateMachineGQLModel/Queries/SearchAsyncAction.jsx +16 -0
- package/src/StateMachineGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
- package/src/StateMachineGQLModel/Queries/index.js +6 -0
- package/src/StateMachineGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/StateMachineGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/StateMachineGQLModel/Scalars/index.js +1 -0
- package/src/StateMachineGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/StateMachineGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/StateMachineGQLModel/Vectors/index.js +1 -0
- package/src/StateMachineGQLModel/WhatToDo.md +44 -0
- package/src/StateMachineGQLModel/index.js +71 -0
- package/src/StateTransitionGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/StateTransitionGQLModel/Components/Children.jsx +31 -0
- package/src/StateTransitionGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/StateTransitionGQLModel/Components/Filter.jsx +14 -0
- package/src/StateTransitionGQLModel/Components/LargeCard.jsx +50 -0
- package/src/StateTransitionGQLModel/Components/Link.jsx +54 -0
- package/src/StateTransitionGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/StateTransitionGQLModel/Components/MediumCard.jsx +39 -0
- package/src/StateTransitionGQLModel/Components/MediumContent.jsx +96 -0
- package/src/StateTransitionGQLModel/Components/MediumEditableContent.jsx +35 -0
- package/src/StateTransitionGQLModel/Components/Table.jsx +7 -0
- package/src/StateTransitionGQLModel/Components/index.js +13 -0
- package/src/StateTransitionGQLModel/Mutations/Create.jsx +79 -0
- package/src/StateTransitionGQLModel/Mutations/Delete.jsx +80 -0
- package/src/StateTransitionGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/StateTransitionGQLModel/Mutations/Update.jsx +75 -0
- package/src/StateTransitionGQLModel/Mutations/helpers.jsx +7 -0
- package/src/StateTransitionGQLModel/Pages/PageBase.jsx +56 -0
- package/src/StateTransitionGQLModel/Pages/PageCreateItem.jsx +28 -0
- package/src/StateTransitionGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/StateTransitionGQLModel/Pages/PageNavbar.jsx +160 -0
- package/src/StateTransitionGQLModel/Pages/PageReadItem.jsx +11 -0
- package/src/StateTransitionGQLModel/Pages/PageReadItemEx.jsx +42 -0
- package/src/StateTransitionGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/StateTransitionGQLModel/Pages/PageVector.jsx +80 -0
- package/src/StateTransitionGQLModel/Pages/RouterSegment.jsx +72 -0
- package/src/StateTransitionGQLModel/Pages/index.js +2 -0
- package/src/StateTransitionGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/StateTransitionGQLModel/Queries/Fragments.jsx +150 -0
- package/src/StateTransitionGQLModel/Queries/InsertAsyncAction.jsx +107 -0
- package/src/StateTransitionGQLModel/Queries/ReadAsyncAction.jsx +48 -0
- package/src/StateTransitionGQLModel/Queries/ReadPageAsyncAction.jsx +23 -0
- package/src/StateTransitionGQLModel/Queries/SearchAsyncAction.jsx +16 -0
- package/src/StateTransitionGQLModel/Queries/UpdateAsyncAction.jsx +109 -0
- package/src/StateTransitionGQLModel/Queries/index.js +6 -0
- package/src/StateTransitionGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/StateTransitionGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/StateTransitionGQLModel/Scalars/index.js +1 -0
- package/src/StateTransitionGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/StateTransitionGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/StateTransitionGQLModel/Vectors/index.js +1 -0
- package/src/StateTransitionGQLModel/WhatToDo.md +44 -0
- package/src/StateTransitionGQLModel/index.js +71 -0
- package/src/Template/Attributes/TemplateTrivialAttribute.jsx +21 -0
- package/src/Template/Attributes/index.js +1 -0
- package/src/Template/Components/CUDButton.jsx +128 -0
- package/src/Template/Components/CardCapsule.jsx +43 -0
- package/src/Template/Components/Children.jsx +31 -0
- package/src/Template/Components/ConfirmEdit.jsx +61 -0
- package/src/Template/Components/LargeCard.jsx +48 -0
- package/src/Template/Components/Link.jsx +41 -0
- package/src/Template/Components/LiveEdit.jsx +111 -0
- package/src/Template/Components/MediumCard.jsx +39 -0
- package/src/Template/Components/MediumContent.jsx +97 -0
- package/src/Template/Components/MediumEditableContent.jsx +36 -0
- package/src/Template/Components/Table.jsx +7 -0
- package/src/Template/Components/index.js +14 -0
- package/src/Template/Pages/Page.jsx +28 -0
- package/src/Template/Pages/PageCapsule.jsx +13 -0
- package/src/Template/Pages/PageContent.jsx +34 -0
- package/src/Template/Pages/PageEdit.jsx +17 -0
- package/src/Template/Pages/PageNavbar.jsx +110 -0
- package/src/Template/Pages/RouterSegment.jsx +52 -0
- package/src/Template/Pages/VectorPage.jsx +133 -0
- package/src/Template/Pages/index.js +6 -0
- package/src/Template/Queries/DeleteAsyncAction.jsx +22 -0
- package/src/Template/Queries/Fragments.jsx +92 -0
- package/src/Template/Queries/InsertAsyncAction.jsx +22 -0
- package/src/Template/Queries/ReadAsyncAction.jsx +45 -0
- package/src/Template/Queries/ReadPageAsyncAction.jsx +13 -0
- package/src/Template/Queries/UpdateAsyncAction.jsx +76 -0
- package/src/Template/Queries/index.js +6 -0
- package/src/Template/Scalars/ScalarAttribute.jsx +54 -0
- package/src/Template/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/Template/Scalars/index.js +1 -0
- package/src/Template/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/Template/Vectors/VectorAttribute.jsx +56 -0
- package/src/Template/Vectors/index.js +1 -0
- package/src/Template/index.js +71 -0
- package/src/UserGQLModel/Components/CUDButton.jsx +128 -0
- package/src/UserGQLModel/Components/CardCapsule.jsx +43 -0
- package/src/UserGQLModel/Components/ConfirmEdit.jsx +61 -0
- package/src/UserGQLModel/Components/Filter.jsx +15 -0
- package/src/UserGQLModel/Components/LargeCard.jsx +82 -0
- package/src/UserGQLModel/Components/Link.jsx +54 -0
- package/src/UserGQLModel/Components/LiveEdit.jsx +111 -0
- package/src/UserGQLModel/Components/MediumCard.jsx +40 -0
- package/src/UserGQLModel/Components/MediumContent.jsx +43 -0
- package/src/UserGQLModel/Components/MediumEditableContent.jsx +57 -0
- package/src/UserGQLModel/Components/Table.jsx +7 -0
- package/src/UserGQLModel/Components/index.js +13 -0
- package/src/UserGQLModel/Mutations/AddMembership.jsx +136 -0
- package/src/UserGQLModel/Mutations/Create.jsx +68 -0
- package/src/UserGQLModel/Mutations/Delete.jsx +81 -0
- package/src/UserGQLModel/Mutations/InteractiveMutations.jsx +30 -0
- package/src/UserGQLModel/Mutations/Update.jsx +68 -0
- package/src/UserGQLModel/Mutations/helpers.jsx +7 -0
- package/src/UserGQLModel/Pages/PageAddMembership.jsx +15 -0
- package/src/UserGQLModel/Pages/PageBase.jsx +56 -0
- package/src/UserGQLModel/Pages/PageCreateItem.jsx +27 -0
- package/src/UserGQLModel/Pages/PageDeleteItem.jsx +16 -0
- package/src/UserGQLModel/Pages/PageNavbar.jsx +146 -0
- package/src/UserGQLModel/Pages/PageReadItem.jsx +12 -0
- package/src/UserGQLModel/Pages/PageReadItemEx.jsx +62 -0
- package/src/UserGQLModel/Pages/PageUpdateItem.jsx +14 -0
- package/src/UserGQLModel/Pages/PageVector.jsx +78 -0
- package/src/UserGQLModel/Pages/RouterSegment.jsx +77 -0
- package/src/UserGQLModel/Pages/index.js +9 -0
- package/src/UserGQLModel/Queries/DeleteAsyncAction.jsx +22 -0
- package/src/UserGQLModel/Queries/Fragments.jsx +114 -0
- package/src/UserGQLModel/Queries/InsertAsyncAction.jsx +22 -0
- package/src/UserGQLModel/Queries/ReadAsyncAction.jsx +45 -0
- package/src/UserGQLModel/Queries/ReadPageAsyncAction.jsx +17 -0
- package/src/UserGQLModel/Queries/SearchAsyncAction.jsx +15 -0
- package/src/UserGQLModel/Queries/UpdateAsyncAction.jsx +76 -0
- package/src/UserGQLModel/Queries/index.js +6 -0
- package/src/UserGQLModel/Scalars/ScalarAttribute.jsx +54 -0
- package/src/UserGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/UserGQLModel/Scalars/index.js +1 -0
- package/src/UserGQLModel/Vectors/Roles.jsx +23 -0
- package/src/UserGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/UserGQLModel/Vectors/UserMemberships.jsx +56 -0
- package/src/UserGQLModel/Vectors/UserRoles.jsx +81 -0
- package/src/UserGQLModel/Vectors/VectorAttribute.jsx +56 -0
- package/src/UserGQLModel/Vectors/index.js +1 -0
- package/src/UserGQLModel/index.js +6 -0
- package/src/_Template/Components/CardCapsule.jsx +43 -0
- package/src/_Template/Components/Children.jsx +31 -0
- package/src/_Template/Components/ConfirmEdit.jsx +61 -0
- package/src/_Template/Components/Filter.jsx +14 -0
- package/src/_Template/Components/LargeCard.jsx +50 -0
- package/src/_Template/Components/Link.jsx +54 -0
- package/src/_Template/Components/LiveEdit.jsx +111 -0
- package/src/_Template/Components/MediumCard.jsx +39 -0
- package/src/_Template/Components/MediumContent.jsx +96 -0
- package/src/_Template/Components/MediumEditableContent.jsx +35 -0
- package/src/_Template/Components/Table.jsx +7 -0
- package/src/_Template/Components/index.js +13 -0
- package/src/_Template/Mutations/Create.jsx +202 -0
- package/src/_Template/Mutations/Delete.jsx +173 -0
- package/src/_Template/Mutations/InteractiveMutations.jsx +30 -0
- package/src/_Template/Mutations/Update.jsx +147 -0
- package/src/_Template/Mutations/helpers.jsx +7 -0
- package/src/_Template/Pages/PageBase.jsx +56 -0
- package/src/_Template/Pages/PageCreateItem.jsx +28 -0
- package/src/_Template/Pages/PageDeleteItem.jsx +16 -0
- package/src/_Template/Pages/PageNavbar.jsx +160 -0
- package/src/_Template/Pages/PageReadItem.jsx +11 -0
- package/src/_Template/Pages/PageReadItemEx.jsx +42 -0
- package/src/_Template/Pages/PageUpdateItem.jsx +14 -0
- package/src/_Template/Pages/PageVector.jsx +80 -0
- package/src/_Template/Pages/RouterSegment.jsx +72 -0
- package/src/_Template/Pages/index.js +2 -0
- package/src/_Template/Queries/DeleteAsyncAction.jsx +32 -0
- package/src/_Template/Queries/Fragments.jsx +101 -0
- package/src/_Template/Queries/InsertAsyncAction.jsx +40 -0
- package/src/_Template/Queries/ReadAsyncAction.jsx +44 -0
- package/src/_Template/Queries/ReadPageAsyncAction.jsx +13 -0
- package/src/_Template/Queries/SearchAsyncAction.jsx +16 -0
- package/src/_Template/Queries/UpdateAsyncAction.jsx +40 -0
- package/src/_Template/Queries/index.js +6 -0
- package/src/_Template/Scalars/ScalarAttribute.jsx +54 -0
- package/src/_Template/Scalars/TemplateScalarAttribute.jsx +88 -0
- package/src/_Template/Scalars/index.js +1 -0
- package/src/_Template/Vectors/TemplateVectorsAttribute.jsx +326 -0
- package/src/_Template/Vectors/VectorAttribute.jsx +56 -0
- package/src/_Template/Vectors/index.js +1 -0
- package/src/_Template/WhatToDo.md +44 -0
- package/src/_Template/index.js +71 -0
- package/src/index.js +8 -0
- package/src/uriroot.js +158 -0
- package/vite.config.js +47 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { DeleteItemURI, ListURI, MediumContent, VectorItemsURI } from "../Components";
|
|
2
|
+
import { DeleteAsyncAction } from "../Queries";
|
|
3
|
+
import {
|
|
4
|
+
DeleteBody as BaseDeleteBody,
|
|
5
|
+
DeleteButton as BaseDeleteButton,
|
|
6
|
+
DeleteDialog as BaseDeleteDialog,
|
|
7
|
+
DeleteLink as BaseDeleteLink
|
|
8
|
+
} from "../../../../_template/src/Base/Mutations/Delete";
|
|
9
|
+
|
|
10
|
+
const DefaultContent = MediumContent
|
|
11
|
+
const MutationAsyncAction = DeleteAsyncAction
|
|
12
|
+
|
|
13
|
+
const permissions = {
|
|
14
|
+
oneOfRoles: ["superadmin"],
|
|
15
|
+
mode: "absolute",
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Link na delete route pro konkrétní entitu.
|
|
20
|
+
*
|
|
21
|
+
* Wrapper nad `BaseDeleteLink`. Nastavuje výchozí `uriPattern` pro delete route a aplikuje RBAC
|
|
22
|
+
* přes `permissions`. Ostatní props přeposílá do Base komponenty.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} params
|
|
25
|
+
* @param {string} [params.uriPattern=DeleteItemURI]
|
|
26
|
+
* URI pattern pro delete route (typicky obsahuje `:id` nebo odpovídá routování aplikace).
|
|
27
|
+
* @param {Object} params.props
|
|
28
|
+
* Další props přeposílané do `BaseDeleteLink` (např. `children`, `className`,
|
|
29
|
+
* `preserveSearch`, `preserveHash`, atd.).
|
|
30
|
+
*
|
|
31
|
+
* @returns {JSX.Element}
|
|
32
|
+
*/
|
|
33
|
+
export const DeleteLink = ({
|
|
34
|
+
uriPattern=DeleteItemURI,
|
|
35
|
+
...props
|
|
36
|
+
}) => {
|
|
37
|
+
return (
|
|
38
|
+
<BaseDeleteLink
|
|
39
|
+
{...props}
|
|
40
|
+
uriPattern={uriPattern}
|
|
41
|
+
{...permissions}
|
|
42
|
+
/>
|
|
43
|
+
)
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Tlačítko pro smazání entity (obvykle otevře confirm dialog a spustí delete mutaci).
|
|
48
|
+
*
|
|
49
|
+
* Wrapper nad `BaseDeleteButton`. Dodává výchozí `DefaultContent`, `mutationAsyncAction`
|
|
50
|
+
* a `vectorItemsURI` (kam se naviguje po úspěšném smazání, pokud není použit `onOk`).
|
|
51
|
+
*
|
|
52
|
+
* Chování navigace / callback:
|
|
53
|
+
* - Pokud je definované `onOk`, použije se pro “feedback”, že mazání proběhlo (tj. uživatel si
|
|
54
|
+
* rozhodne, co dál).
|
|
55
|
+
* - Pokud `onOk` definované není, Base implementace typicky naviguje na `vectorItemsURI`.
|
|
56
|
+
*
|
|
57
|
+
* @param {Object} params
|
|
58
|
+
* @param {Function} [params.mutationAsyncAction=MutationAsyncAction]
|
|
59
|
+
* Async action (thunk) pro delete operaci (např. DeleteAsyncAction).
|
|
60
|
+
*
|
|
61
|
+
* @param {React.ComponentType<Object>} [params.DefaultContent=MediumContent]
|
|
62
|
+
* Komponenta pro zobrazení mazáné entity v confirm dialogu (read-only).
|
|
63
|
+
*
|
|
64
|
+
* @param {string} [params.vectorItemsURI=ListURI]
|
|
65
|
+
* URI pro návrat po úspěšném smazání (typicky list stránka / kolekce).
|
|
66
|
+
*
|
|
67
|
+
* @param {Function} [params.onOk]
|
|
68
|
+
* Callback po úspěšném smazání. Pokud není zadán, Base implementace typicky použije navigaci na `vectorItemsURI`.
|
|
69
|
+
*
|
|
70
|
+
* @param {Object}} params.props
|
|
71
|
+
* Další props přeposílané do `BaseDeleteButton` (např. `children`, `title`, `className`,
|
|
72
|
+
* `rbacitem`, `item`, `disabled`, atd. – podle Base/General implementace).
|
|
73
|
+
*
|
|
74
|
+
* @returns {JSX.Element}
|
|
75
|
+
*/
|
|
76
|
+
export const DeleteButton = ({
|
|
77
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
78
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
79
|
+
Dialog=DeleteDialog,
|
|
80
|
+
vectorItemsURI=ListURI,
|
|
81
|
+
onOk,
|
|
82
|
+
...props
|
|
83
|
+
}) => {
|
|
84
|
+
return (
|
|
85
|
+
<BaseDeleteButton
|
|
86
|
+
{...props}
|
|
87
|
+
DefaultContent={DefaultContent_}
|
|
88
|
+
Dialog={Dialog}
|
|
89
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
90
|
+
vectorItemsURI={vectorItemsURI}
|
|
91
|
+
onOk={onOk}
|
|
92
|
+
{...permissions}
|
|
93
|
+
/>
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Confirm dialog pro smazání entity.
|
|
99
|
+
*
|
|
100
|
+
* Wrapper nad `BaseDeleteDialog`. Dodává výchozí `DefaultContent` (read-only zobrazení entity),
|
|
101
|
+
* `mutationAsyncAction` a `vectorItemsURI` pro návrat po úspěchu (dle Base/General implementace).
|
|
102
|
+
*
|
|
103
|
+
* @param {Object} params
|
|
104
|
+
* @param {Function} [params.mutationAsyncAction=MutationAsyncAction]
|
|
105
|
+
* Async action (thunk) pro delete operaci (např. DeleteAsyncAction).
|
|
106
|
+
*
|
|
107
|
+
* @param {React.ComponentType<Object>} [params.DefaultContent=MediumContent]
|
|
108
|
+
* Komponenta pro zobrazení mazáné entity (read-only).
|
|
109
|
+
*
|
|
110
|
+
* @param {string} [params.vectorItemsURI=ListURI]
|
|
111
|
+
* URI pro návrat po úspěšném smazání (typicky list stránka / kolekce).
|
|
112
|
+
*
|
|
113
|
+
* @param {Object}} params.props
|
|
114
|
+
* Další props přeposílané do `BaseDeleteDialog` (např. `title`, `oklabel`, `cancellabel`,
|
|
115
|
+
* `item`, `onOk`, `onCancel`, atd.).
|
|
116
|
+
*
|
|
117
|
+
* @returns {JSX.Element}
|
|
118
|
+
*/
|
|
119
|
+
export const DeleteDialog = ({
|
|
120
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
121
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
122
|
+
vectorItemsURI=ListURI,
|
|
123
|
+
...props
|
|
124
|
+
}) => {
|
|
125
|
+
return (
|
|
126
|
+
<BaseDeleteDialog
|
|
127
|
+
{...props}
|
|
128
|
+
DefaultContent={DefaultContent_}
|
|
129
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
130
|
+
vectorItemsURI={vectorItemsURI}
|
|
131
|
+
{...permissions}
|
|
132
|
+
/>
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* “Page-level” delete workflow (mazání na celé stránce / v těle stránky).
|
|
138
|
+
*
|
|
139
|
+
* Wrapper nad `BaseDeleteBody`. Dodává výchozí `DefaultContent`, `mutationAsyncAction`
|
|
140
|
+
* a `vectorItemsURI` a aplikuje RBAC přes `permissions`.
|
|
141
|
+
*
|
|
142
|
+
* @param {Object} params
|
|
143
|
+
* @param {Function} [params.mutationAsyncAction=MutationAsyncAction]
|
|
144
|
+
* Async action (thunk) pro delete operaci (např. DeleteAsyncAction).
|
|
145
|
+
*
|
|
146
|
+
* @param {React.ComponentType<Object>} [params.DefaultContent=MediumContent]
|
|
147
|
+
* Komponenta pro zobrazení mazáné entity (read-only).
|
|
148
|
+
*
|
|
149
|
+
* @param {string} [params.vectorItemsURI=ListURI]
|
|
150
|
+
* URI pro návrat po úspěšném smazání (typicky list stránka / kolekce).
|
|
151
|
+
*
|
|
152
|
+
* @param {Object}} params.props
|
|
153
|
+
* Další props přeposílané do `BaseDeleteBody` (např. `title`, `oklabel`, `cancellabel`,
|
|
154
|
+
* `item`, `onOk`, `onCancel`, atd.).
|
|
155
|
+
*
|
|
156
|
+
* @returns {JSX.Element}
|
|
157
|
+
*/
|
|
158
|
+
export const DeleteBody = ({
|
|
159
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
160
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
161
|
+
vectorItemsURI=ListURI,
|
|
162
|
+
...props
|
|
163
|
+
}) => {
|
|
164
|
+
return (
|
|
165
|
+
<BaseDeleteBody
|
|
166
|
+
{...props}
|
|
167
|
+
DefaultContent={DefaultContent_}
|
|
168
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
169
|
+
vectorItemsURI={vectorItemsURI}
|
|
170
|
+
{...permissions}
|
|
171
|
+
/>
|
|
172
|
+
)
|
|
173
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CardCapsule, VectorItemsURI } from "../Components"
|
|
2
|
+
import { CreateButton, CreateLink } from "./Create"
|
|
3
|
+
import { UpdateButton, UpdateLink } from "./Update"
|
|
4
|
+
import { ProxyLink } from "../../../../_template/src/Base/Components/ProxyLink"
|
|
5
|
+
import { DeleteButton } from "./Delete"
|
|
6
|
+
|
|
7
|
+
export const PageLink = ({ children, preserveHash = true, preserveSearch = true, ...props }) => {
|
|
8
|
+
return (
|
|
9
|
+
<ProxyLink
|
|
10
|
+
to={VectorItemsURI}
|
|
11
|
+
preserveHash={preserveHash}
|
|
12
|
+
preserveSearch={preserveSearch}
|
|
13
|
+
{...props}
|
|
14
|
+
>
|
|
15
|
+
{children}
|
|
16
|
+
</ProxyLink>
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const InteractiveMutations = ({ item }) => {
|
|
21
|
+
return (
|
|
22
|
+
<CardCapsule item={item} title="Nástroje">
|
|
23
|
+
<PageLink className="btn btn-outline-success">Stránka</PageLink>
|
|
24
|
+
<UpdateLink className="btn btn-outline-success" item={item}>Upravit</UpdateLink>
|
|
25
|
+
<UpdateButton className="btn btn-outline-success" item={item}>Upravit Dialog</UpdateButton>
|
|
26
|
+
<CreateButton className="btn btn-outline-success" rbacitem={{}}>Vytvořit nový</CreateButton>
|
|
27
|
+
<DeleteButton className="btn btn-outline-danger" item={item}>Odstranit</DeleteButton>
|
|
28
|
+
</CardCapsule>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import {
|
|
2
|
+
UpdateBody as BaseUpdateBody,
|
|
3
|
+
UpdateButton as BaseUpdateButton,
|
|
4
|
+
UpdateDialog as BaseUpdateDialog,
|
|
5
|
+
UpdateLink as BaseUpdateLink
|
|
6
|
+
} from "../../../../_template/src/Base/Mutations/Update";
|
|
7
|
+
|
|
8
|
+
import { MediumEditableContent, UpdateItemURI } from "../Components";
|
|
9
|
+
import { UpdateAsyncAction } from "../Queries";
|
|
10
|
+
|
|
11
|
+
const DefaultContent = (props) => <MediumEditableContent {...props} />
|
|
12
|
+
const mutationAsyncAction = UpdateAsyncAction
|
|
13
|
+
|
|
14
|
+
const permissions = {
|
|
15
|
+
oneOfRoles: ["superadmin"],
|
|
16
|
+
mode: "absolute",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// ALTERNATIVE, CHECK GQLENDPOINT
|
|
20
|
+
// const permissions = {
|
|
21
|
+
// oneOfRoles: ["administrátor", "personalista"],
|
|
22
|
+
// mode: "item",
|
|
23
|
+
// }
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Link na update stránku / update route pro konkrétní entitu.
|
|
27
|
+
*
|
|
28
|
+
* Wrapper nad `BaseUpdateLink`. Nastavuje výchozí `uriPattern` a aplikuje RBAC
|
|
29
|
+
* přes `permissions`. Vše ostatní přeposílá do Base komponenty.
|
|
30
|
+
*
|
|
31
|
+
* @param {Object} params
|
|
32
|
+
* @param {string} [params.uriPattern=UpdateItemURI]
|
|
33
|
+
* URI pattern pro update route (typicky obsahuje `:id` nebo je již konkrétní URL dle routování).
|
|
34
|
+
* @param {Object} params.props
|
|
35
|
+
* Další props přeposílané do `BaseUpdateLink` (např. `children`, `className`,
|
|
36
|
+
* `preserveSearch`, `preserveHash`, atd.).
|
|
37
|
+
* @returns {JSX.Element}
|
|
38
|
+
*/
|
|
39
|
+
export const UpdateLink = ({
|
|
40
|
+
uriPattern = UpdateItemURI,
|
|
41
|
+
...props
|
|
42
|
+
}) => {
|
|
43
|
+
return <BaseUpdateLink
|
|
44
|
+
{...props}
|
|
45
|
+
uriPattern={uriPattern}
|
|
46
|
+
{...permissions}
|
|
47
|
+
/>
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Dialog pro editaci entity.
|
|
52
|
+
*
|
|
53
|
+
* Wrapper nad `BaseUpdateDialog`. Dodává výchozí editovatelný obsah (`DefaultContent`)
|
|
54
|
+
* a výchozí mutační akci (`mutationAsyncAction`) pro uložení změn. Aplikuje RBAC
|
|
55
|
+
* přes `permissions`.
|
|
56
|
+
*
|
|
57
|
+
* @param {Object} params
|
|
58
|
+
* @param {React.ComponentType<Object>} [params.DefaultContent=DefaultContent]
|
|
59
|
+
* Komponenta, která vykreslí editovatelný obsah dialogu (typicky MediumEditableContent).
|
|
60
|
+
* @param {Function} [params.mutationAsyncAction=mutationAsyncAction]
|
|
61
|
+
* Async action (thunk) pro uložení změn (např. UpdateAsyncAction). Použije se podle Base/General implementace.
|
|
62
|
+
* @param {Object} params.props
|
|
63
|
+
* Další props přeposílané do `BaseUpdateDialog` (např. `title`, `oklabel`, `cancellabel`,
|
|
64
|
+
* `item`, `onOk`, `onCancel`, atd.).
|
|
65
|
+
* @returns {JSX.Element}
|
|
66
|
+
*/
|
|
67
|
+
export const UpdateDialog = ({
|
|
68
|
+
DefaultContent: DefaultContent_ = DefaultContent,
|
|
69
|
+
mutationAsyncAction: mutationAsyncAction_ = mutationAsyncAction,
|
|
70
|
+
...props
|
|
71
|
+
}) => {
|
|
72
|
+
return (
|
|
73
|
+
<BaseUpdateDialog
|
|
74
|
+
{...props}
|
|
75
|
+
DefaultContent={DefaultContent_}
|
|
76
|
+
mutationAsyncAction={mutationAsyncAction_}
|
|
77
|
+
{...permissions}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Tlačítko, které otevře update dialog a provede uložení.
|
|
84
|
+
*
|
|
85
|
+
* Wrapper nad `BaseUpdateButton`. Dodává výchozí `DefaultContent`, výchozí `Dialog`,
|
|
86
|
+
* a výchozí `mutationAsyncAction`. Aplikuje RBAC přes `permissions`.
|
|
87
|
+
*
|
|
88
|
+
* @param {Object} params
|
|
89
|
+
* @param {React.ComponentType<Object>} [params.DefaultContent=DefaultContent]
|
|
90
|
+
* Komponenta editovatelného obsahu (typicky MediumEditableContent).
|
|
91
|
+
* @param {React.ComponentType<Object>} [params.Dialog=UpdateDialog]
|
|
92
|
+
* Dialog komponenta použitá pro editaci (volá `onOk(draft)` / `onCancel()`).
|
|
93
|
+
* @param {Function} [params.mutationAsyncAction=mutationAsyncAction]
|
|
94
|
+
* Async action (thunk) pro uložení změn (např. UpdateAsyncAction).
|
|
95
|
+
* @param {Object} params.props
|
|
96
|
+
* Další props přeposílané do `BaseUpdateButton` (např. `children`, `className`, `title`,
|
|
97
|
+
* `item`, `uriPattern`, `onOk`, `onCancel`, atd.).
|
|
98
|
+
* @returns {JSX.Element}
|
|
99
|
+
*/
|
|
100
|
+
export const UpdateButton = ({
|
|
101
|
+
DefaultContent: DefaultContent_ = DefaultContent,
|
|
102
|
+
Dialog = UpdateDialog,
|
|
103
|
+
mutationAsyncAction: mutationAsyncAction_ = mutationAsyncAction,
|
|
104
|
+
...props
|
|
105
|
+
}) => {
|
|
106
|
+
return (
|
|
107
|
+
<BaseUpdateButton
|
|
108
|
+
{...props}
|
|
109
|
+
DefaultContent={DefaultContent_}
|
|
110
|
+
Dialog={Dialog}
|
|
111
|
+
mutationAsyncAction={mutationAsyncAction_}
|
|
112
|
+
{...permissions}
|
|
113
|
+
/>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* “Page-level” update workflow (inline edit / celá stránka editace).
|
|
119
|
+
*
|
|
120
|
+
* Wrapper nad `BaseUpdateBody`. Typicky vykreslí editovatelný obsah (`DefaultContent`)
|
|
121
|
+
* a zajistí uložení přes `mutationAsyncAction` (dle Base/General implementace).
|
|
122
|
+
* Aplikuje RBAC přes `permissions`.
|
|
123
|
+
*
|
|
124
|
+
* @param {Object} params
|
|
125
|
+
* @param {React.ComponentType<Object>} [params.DefaultContent=DefaultContent]
|
|
126
|
+
* Komponenta editovatelného obsahu (typicky MediumEditableContent).
|
|
127
|
+
* @param {Function} [params.mutationAsyncAction=mutationAsyncAction]
|
|
128
|
+
* Async action (thunk) pro uložení změn (např. UpdateAsyncAction).
|
|
129
|
+
* @param {Object} params.props
|
|
130
|
+
* Další props přeposílané do `BaseUpdateBody` (např. `title`, `oklabel`, `cancellabel`,
|
|
131
|
+
* `item`, `onOk`, `onCancel`, `className`, atd.).
|
|
132
|
+
* @returns {JSX.Element}
|
|
133
|
+
*/
|
|
134
|
+
export const UpdateBody = ({
|
|
135
|
+
DefaultContent: DefaultContent_ = DefaultContent,
|
|
136
|
+
mutationAsyncAction: mutationAsyncAction_ = mutationAsyncAction,
|
|
137
|
+
...props
|
|
138
|
+
}) => {
|
|
139
|
+
return (
|
|
140
|
+
<BaseUpdateBody
|
|
141
|
+
{...props}
|
|
142
|
+
DefaultContent={DefaultContent_}
|
|
143
|
+
mutationAsyncAction={mutationAsyncAction_}
|
|
144
|
+
{...permissions}
|
|
145
|
+
/>
|
|
146
|
+
);
|
|
147
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const makeMutationURI = (linkURI, action, { withId = false } = {}) => {
|
|
2
|
+
const viewSegmentRe = /\/view(\/|$)/;
|
|
3
|
+
if (!viewSegmentRe.test(linkURI)) throw new Error(`LinkURI must contain '/view'. Got: ${linkURI}`);
|
|
4
|
+
|
|
5
|
+
const base = linkURI.replace(viewSegmentRe, `/${action}$1`).replace(/\/?$/, "/");
|
|
6
|
+
return withId ? `${base}:id` : base.replace(/\/$/, "");
|
|
7
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ReadAsyncAction } from "../Queries"
|
|
2
|
+
import { PageItemBase as PageItemBase_} from "../../../../_template/src/Base/Pages/Page"
|
|
3
|
+
import { LargeCard } from "../Components"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Base wrapper pro stránky pracující s jedním entity itemem podle `:id` z routy.
|
|
8
|
+
*
|
|
9
|
+
* Komponenta:
|
|
10
|
+
* - načte `id` z URL přes `useParams()`
|
|
11
|
+
* - sestaví minimální `item` objekt `{ id }`
|
|
12
|
+
* - poskytne jej přes `AsyncActionProvider`, který zajistí načtení entity pomocí `queryAsyncAction`
|
|
13
|
+
* - vloží do stránky navbar přes `PlaceChild Component={PageNavbar}`
|
|
14
|
+
* - vyrenderuje `children` uvnitř provideru (tj. až v kontextu načtené entity)
|
|
15
|
+
*
|
|
16
|
+
* Typické použití je jako obálka routy typu `/.../:id`, kde vnořené komponenty
|
|
17
|
+
* (detail, editace, akce) používají kontext z `AsyncActionProvider`.
|
|
18
|
+
*
|
|
19
|
+
* @component
|
|
20
|
+
* @param {object} props
|
|
21
|
+
* @param {import("react").ReactNode} props.children
|
|
22
|
+
* Obsah stránky, který se má vyrenderovat uvnitř `AsyncActionProvider`.
|
|
23
|
+
* @param {Function} [props.queryAsyncAction=ReadAsyncAction]
|
|
24
|
+
* Async action (např. thunk) použitá pro načtení entity z GraphQL endpointu.
|
|
25
|
+
* Dostane `item` s `id` (a případně další parametry podle implementace provideru).
|
|
26
|
+
*
|
|
27
|
+
* @returns {import("react").JSX.Element}
|
|
28
|
+
* Provider s navigací (`PageNavbar`) a obsahem stránky (`children`).
|
|
29
|
+
*/
|
|
30
|
+
export const PageItemBase = ({
|
|
31
|
+
queryAsyncAction=ReadAsyncAction,
|
|
32
|
+
PageNavbar=()=>null,
|
|
33
|
+
ItemLayout=LargeCard,
|
|
34
|
+
SubPage=null,
|
|
35
|
+
...props
|
|
36
|
+
}) => {
|
|
37
|
+
return (
|
|
38
|
+
<PageItemBase_
|
|
39
|
+
queryAsyncAction={queryAsyncAction}
|
|
40
|
+
PageNavbar={PageNavbar}
|
|
41
|
+
ItemLayout={ItemLayout}
|
|
42
|
+
SubPage={SubPage}
|
|
43
|
+
{...props}
|
|
44
|
+
/>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
export const PageBase = ({ children, PageNavbar=()=>null }) => {
|
|
50
|
+
return (
|
|
51
|
+
<>
|
|
52
|
+
<PageNavbar />
|
|
53
|
+
{children}
|
|
54
|
+
</>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ReadAsyncAction } from "../Queries"
|
|
2
|
+
import { Row } from "../../../../_template/src/Base/Components/Row";
|
|
3
|
+
import { CreateBody } from "../Mutations/Create";
|
|
4
|
+
import { LeftColumn, MiddleColumn } from "@hrbolek/uoisfrontend-shared";
|
|
5
|
+
import { PageItemBase } from "./PageBase";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
const PageBody = ({...props}) => (
|
|
10
|
+
<Row>
|
|
11
|
+
<LeftColumn />
|
|
12
|
+
<MiddleColumn>
|
|
13
|
+
<CreateBody {...props} />
|
|
14
|
+
</MiddleColumn>
|
|
15
|
+
</Row>
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
export const PageCreateItem = ({
|
|
19
|
+
SubPage=PageBody,
|
|
20
|
+
...props
|
|
21
|
+
}) => {
|
|
22
|
+
return (
|
|
23
|
+
<PageItemBase
|
|
24
|
+
SubPage={SubPage}
|
|
25
|
+
{...props}
|
|
26
|
+
/>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PageItemBase } from "./PageBase";
|
|
2
|
+
import { DeleteBody } from "../Mutations/Delete";
|
|
3
|
+
|
|
4
|
+
export const PageDeleteItem = ({
|
|
5
|
+
SubPage=DeleteBody,
|
|
6
|
+
...props
|
|
7
|
+
}) => {
|
|
8
|
+
return (
|
|
9
|
+
<PageItemBase
|
|
10
|
+
SubPage={SubPage}
|
|
11
|
+
{...props}
|
|
12
|
+
/>
|
|
13
|
+
|
|
14
|
+
)
|
|
15
|
+
}
|
|
16
|
+
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import Nav from 'react-bootstrap/Nav'
|
|
2
|
+
import { Link, LinkURI } from '../Components'
|
|
3
|
+
import { ProxyLink } from '../../../../_template/src/Base/Components/ProxyLink';
|
|
4
|
+
import { NavDropdown } from 'react-bootstrap';
|
|
5
|
+
import { UpdateLink } from '../Mutations/Update';
|
|
6
|
+
import { CreateButton } from '../Mutations/Create';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Allow to use HashContainer for determination which component at page will be rendered.
|
|
10
|
+
* That must be manually inserted at TemplatePageContent, usually this should be done
|
|
11
|
+
* as children of TemplateLargeCard.
|
|
12
|
+
* <TemplateLargeCard>
|
|
13
|
+
* <HashContainer>
|
|
14
|
+
* <VectorA id="history"/>
|
|
15
|
+
* <VectorB id="roles"/>
|
|
16
|
+
* <VectorC id="graph"/>
|
|
17
|
+
* </HashContainer>
|
|
18
|
+
* </TemplateLargeCard>
|
|
19
|
+
* it is usefull to define globally active "areas" like science, administration, teaching, ...
|
|
20
|
+
*/
|
|
21
|
+
// const TemplatePageSegments = [
|
|
22
|
+
// { segment: 'education', label: 'Výuka' },
|
|
23
|
+
// { segment: 'reaserach', label: 'Tvůrčí činnost' },
|
|
24
|
+
// { segment: 'administration', label: 'Organizační činnost' },
|
|
25
|
+
// { segment: 'development', label: 'Rozvoj' },
|
|
26
|
+
// ]
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A navigation button component that generates a URL based on the template's ID and a specific segment.
|
|
30
|
+
* The button uses a `ProxyLink` to navigate while preserving hash and query parameters.
|
|
31
|
+
*
|
|
32
|
+
* ### Features:
|
|
33
|
+
* - Dynamically constructs the URL with a hash fragment pointing to the specified segment.
|
|
34
|
+
* - Displays a label for the navigation link.
|
|
35
|
+
* - Integrates seamlessly with `ProxyLink` for enhanced navigation.
|
|
36
|
+
*
|
|
37
|
+
* @component
|
|
38
|
+
* @param {Object} props - The properties for the TitleNavButton component.
|
|
39
|
+
* @param {Object} props.template - The template object containing details about the template.
|
|
40
|
+
* @param {string|number} props.template.id - The unique identifier for the template.
|
|
41
|
+
* @param {string} props.segment - The segment to append as a hash fragment in the URL.
|
|
42
|
+
* @param {string} props.label - The text to display as the label for the navigation button.
|
|
43
|
+
*
|
|
44
|
+
* @returns {JSX.Element} A styled navigation button linking to the constructed URL.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* // Example 1: Basic usage with a template and segment
|
|
48
|
+
* const template = { id: 123 };
|
|
49
|
+
* const segment = "details";
|
|
50
|
+
* const label = "View Details";
|
|
51
|
+
*
|
|
52
|
+
* <TitleNavButton template={template} segment={segment} label={label} />
|
|
53
|
+
* // Resulting URL: `/ug/template/view/123#details`
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Example 2: Different segment and label
|
|
57
|
+
* <TitleNavButton template={{ id: 456 }} segment="settings" label="Template Settings" />
|
|
58
|
+
* // Resulting URL: `/ug/template/view/456#settings`
|
|
59
|
+
*/
|
|
60
|
+
// const TitleNavButton = ({ item, segment, label, ...props }) => {
|
|
61
|
+
// // const urlbase = (segment) => `/templates/template/${segment}/${template?.id}`;
|
|
62
|
+
// const urlbase = (segment) => `${LinkURI}${item?.id}#${segment}`;
|
|
63
|
+
// return (
|
|
64
|
+
// <Nav.Link as={"span"} {...props}>
|
|
65
|
+
// {/* <ProxyLink to={urlbase(segment)}>{label}</ProxyLink> */}
|
|
66
|
+
// </Nav.Link>
|
|
67
|
+
// );
|
|
68
|
+
// };
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Renders the navigation bar for an Template page.
|
|
72
|
+
*
|
|
73
|
+
* This component uses a custom hook, `useHash()`, to determine the current hash
|
|
74
|
+
* and highlights the active segment. It displays a navigation bar (using MyNavbar)
|
|
75
|
+
* with several segments (e.g. "history", "roles", "graph"), each rendered as a
|
|
76
|
+
* TitleNavButton. The segments are hardcoded in this component and only rendered
|
|
77
|
+
* if an `template` object is provided.
|
|
78
|
+
*
|
|
79
|
+
* @component
|
|
80
|
+
* @param {Object} props - The component properties.
|
|
81
|
+
* @param {Object} props.template - The template entity object that provides context for the page.
|
|
82
|
+
* @param {string|number} props.template.id - The unique identifier for the template.
|
|
83
|
+
* @param {Function} props.onSearchChange - Callback function to handle changes in the search input.
|
|
84
|
+
*
|
|
85
|
+
* @returns {JSX.Element} The rendered TemplatePageNavbar component.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* // Example usage:
|
|
89
|
+
* const template = { id: 123, ... };
|
|
90
|
+
* <TemplatePageNavbar template={template} onSearchChange={handleSearchChange} />
|
|
91
|
+
*/
|
|
92
|
+
// export const PageNavbar = ({ item, children, onSearchChange }) => {
|
|
93
|
+
// // const [currentHash, setHash] = useHash(); // Use the custom hook to manage hash
|
|
94
|
+
// const currentHash = "da"
|
|
95
|
+
// return (
|
|
96
|
+
// <div className='screen-only'>
|
|
97
|
+
// <MyNavbar onSearchChange={onSearchChange} >
|
|
98
|
+
// {item && TemplatePageSegments.map(({ segment, label }) => (
|
|
99
|
+
// <Nav.Item key={segment} >
|
|
100
|
+
// <TitleNavButton
|
|
101
|
+
// template={item}
|
|
102
|
+
// segment={segment}
|
|
103
|
+
// label={label}
|
|
104
|
+
// className={segment === currentHash ? "active" : ""} aria-current={segment === currentHash ? "page" : undefined}
|
|
105
|
+
// />
|
|
106
|
+
// </Nav.Item>
|
|
107
|
+
// ))}
|
|
108
|
+
// {children}
|
|
109
|
+
// </MyNavbar>
|
|
110
|
+
// </div>
|
|
111
|
+
// );
|
|
112
|
+
// };
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
export const MyNavDropdown = ({ item }) => {
|
|
116
|
+
const { __typename } = item || {}
|
|
117
|
+
const hasProperType = __typename === "TemplateGQLModel"
|
|
118
|
+
return (
|
|
119
|
+
<NavDropdown title="Skupiny">
|
|
120
|
+
<NavDropdown.Item as={ProxyLink} to={VectorItemsURI}>
|
|
121
|
+
Seznam všech
|
|
122
|
+
</NavDropdown.Item>
|
|
123
|
+
|
|
124
|
+
<NavDropdown.Item as={Link} item={item} action="roles" disabled={!hasProperType}>
|
|
125
|
+
Role<br/><Link item={item} />
|
|
126
|
+
</NavDropdown.Item>
|
|
127
|
+
<NavDropdown.Item as={Link} item={item} action="subgroups" disabled={!hasProperType}>
|
|
128
|
+
Podskupiny<br/><Link item={item} />
|
|
129
|
+
</NavDropdown.Item>
|
|
130
|
+
<NavDropdown.Item as={Link} item={item} action="memberships" disabled={!hasProperType}>
|
|
131
|
+
Členové<br/><Link item={item} />
|
|
132
|
+
</NavDropdown.Item>
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
<NavDropdown.Divider />
|
|
136
|
+
|
|
137
|
+
<NavDropdown.Item
|
|
138
|
+
as={UpdateLink}
|
|
139
|
+
item={item}
|
|
140
|
+
disabled={!hasProperType}
|
|
141
|
+
>
|
|
142
|
+
Upravit<br/><Link item={item} />
|
|
143
|
+
</NavDropdown.Item>
|
|
144
|
+
<NavDropdown.Item
|
|
145
|
+
as={CreateButton}
|
|
146
|
+
item={item}
|
|
147
|
+
disabled={!hasProperType}
|
|
148
|
+
item={{
|
|
149
|
+
group: item,
|
|
150
|
+
groupId: item?.groupId
|
|
151
|
+
}}
|
|
152
|
+
>
|
|
153
|
+
Nové<br/><Link item={item} />
|
|
154
|
+
</NavDropdown.Item>
|
|
155
|
+
|
|
156
|
+
<NavDropdown.Divider />
|
|
157
|
+
<NavDropdown.Item as={ProxyLink} to={`/generic/${item?.__typename}/__def/${item?.id}`} reloadDocument={false}>Definice</NavDropdown.Item >
|
|
158
|
+
</NavDropdown>
|
|
159
|
+
)
|
|
160
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GeneratedContentBase } from "../../../../_template/src/Base/Pages/Page"
|
|
2
|
+
import { PageItemBase } from "./PageBase"
|
|
3
|
+
|
|
4
|
+
export const PageReadItem = ({
|
|
5
|
+
SubPage=GeneratedContentBase,
|
|
6
|
+
...props
|
|
7
|
+
}) => {
|
|
8
|
+
return (
|
|
9
|
+
<PageItemBase SubPage={SubPage} {...props}/>
|
|
10
|
+
)
|
|
11
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { GeneratedContentBase } from "../../../../_template/src/Base/Pages/Page"
|
|
2
|
+
import { ReadItemURI } from "../Components"
|
|
3
|
+
import { ReadAsyncAction } from "../Queries"
|
|
4
|
+
import { PageReadItem } from "./PageReadItem"
|
|
5
|
+
|
|
6
|
+
export const RolesOnURI = ReadItemURI.replace("view", "roleson")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Základní obálka pro „read“ stránku entity podle `:id` z routy.
|
|
11
|
+
*
|
|
12
|
+
* Využívá `PageItemBase`, který zajistí:
|
|
13
|
+
* - získání `id` z URL (`useParams`)
|
|
14
|
+
* - načtení entity přes `AsyncActionProvider` pomocí `queryAsyncAction`
|
|
15
|
+
* - vložení navigace (`PageNavbar`)
|
|
16
|
+
*
|
|
17
|
+
* Uvnitř provideru vykreslí `ReadWithComponent`, který si vezme načtený `item`
|
|
18
|
+
* z `useGQLEntityContext()` a zobrazí ho v zadané komponentě (defaultně `LargeCard`).
|
|
19
|
+
*
|
|
20
|
+
* @component
|
|
21
|
+
* @param {object} props
|
|
22
|
+
* @param {Function} [props.queryAsyncAction=ReadAsyncAction]
|
|
23
|
+
* Async action (např. thunk) pro načtení entity z backendu/GraphQL dle `id`.
|
|
24
|
+
* @param {Object<string, any>} [props]
|
|
25
|
+
* Další props předané do `ReadWithComponent` (např. `Component`, layout props).
|
|
26
|
+
*
|
|
27
|
+
* @returns {import("react").JSX.Element}
|
|
28
|
+
*/
|
|
29
|
+
export const PageReadItemRolesOn = ({
|
|
30
|
+
queryAsyncAction=ReadAsyncAction,
|
|
31
|
+
children,
|
|
32
|
+
...props
|
|
33
|
+
}) => {
|
|
34
|
+
return (
|
|
35
|
+
<PageReadItem
|
|
36
|
+
queryAsyncAction={queryAsyncAction}
|
|
37
|
+
SubPage={GeneratedContentBase}
|
|
38
|
+
{...props}
|
|
39
|
+
/>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|