@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,111 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
|
|
4
|
+
import { UpdateAsyncAction } from "../Queries";
|
|
5
|
+
import { CreateDelayer, ErrorHandler, LoadingSpinner } from "@hrbolek/uoisfrontend-shared";
|
|
6
|
+
import { MediumEditableContent } from "./MediumEditableContent";
|
|
7
|
+
import { useEditAction } from "../../../../dynamic/src/Hooks/useEditAction";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* TemplateLiveEdit Component
|
|
11
|
+
*
|
|
12
|
+
* Interaktivní React komponenta pro live editaci entity `template` s podporou optimistického fetchování a debounce delaye.
|
|
13
|
+
*
|
|
14
|
+
* - Používá `useAsyncAction` k načítání a update entit (např. GraphQL mutation).
|
|
15
|
+
* - Pokud se hodnota pole změní, spustí se update po krátkém zpoždění (`delayer`) — uživatelské změny nejsou ihned posílány, ale až po pauze.
|
|
16
|
+
* - Zobrazuje loading a error stav pomocí komponent `LoadingSpinner` a `ErrorHandler`.
|
|
17
|
+
* - Předává editované hodnoty do komponenty `TemplateMediumEditableContent`, která zajišťuje zobrazení a editaci jednotlivých polí šablony (`template`).
|
|
18
|
+
*
|
|
19
|
+
* @component
|
|
20
|
+
* @param {Object} props - Props objekt.
|
|
21
|
+
* @param {Object} props.template - Objekt reprezentující editovanou šablonu (template entity).
|
|
22
|
+
* @param {React.ReactNode} [props.children] - Libovolné children, které se vloží pod editační komponentu.
|
|
23
|
+
* @param {Function} [props.asyncAction=TemplateUpdateAsyncAction] - Asynchronní akce pro update (`useAsyncAction`), typicky GraphQL update mutation.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Standardní použití
|
|
27
|
+
* <TemplateLiveEdit template={templateEntity} />
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* // S vlastním asyncAction a doplňkovým obsahem
|
|
31
|
+
* <TemplateLiveEdit template={templateEntity} asyncAction={myUpdateAction}>
|
|
32
|
+
* <div>Extra obsah nebo poznámka</div>
|
|
33
|
+
* </TemplateLiveEdit>
|
|
34
|
+
*
|
|
35
|
+
* @returns {JSX.Element}
|
|
36
|
+
* Interaktivní komponenta pro live editaci šablony, včetně spinneru a error handleru.
|
|
37
|
+
*/
|
|
38
|
+
export const LiveEdit_ = ({ children, asyncAction=UpdateAsyncAction}) => {
|
|
39
|
+
const { onChange, onBlur, item } = useGQLEntityContext()
|
|
40
|
+
return (
|
|
41
|
+
<AsyncActionProvider
|
|
42
|
+
item={item}
|
|
43
|
+
queryAsyncAction={asyncAction}
|
|
44
|
+
options={{deferred: true, network: true}}
|
|
45
|
+
onChange={onChange}
|
|
46
|
+
onBlur={onBlur}
|
|
47
|
+
>
|
|
48
|
+
<LiveEditWrapper item={item}>
|
|
49
|
+
{children}
|
|
50
|
+
{/* <hr />
|
|
51
|
+
<pre>{JSON.stringify(item, null, 2)}</pre> */}
|
|
52
|
+
</LiveEditWrapper>
|
|
53
|
+
</AsyncActionProvider>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const LiveEditWrapper = ({ item, children }) => {
|
|
58
|
+
const { run , error, loading, entity, data, onChange, onBlur } = useGQLEntityContext()
|
|
59
|
+
|
|
60
|
+
const handleEvent = useCallback((handler) => async (e) => {
|
|
61
|
+
const {id, value} = e?.target || {}
|
|
62
|
+
if (id === undefined || value === undefined) return
|
|
63
|
+
if (item?.[id] === value) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const newItem = { ...item, [e.target.id]: e.target.value }
|
|
67
|
+
const newEvent = { target: { value: newItem } }
|
|
68
|
+
// console.log("LiveEditWrapper localOnChange start e", e, '=>', newEvent)
|
|
69
|
+
// const result = await delayer(()=>onChange(newEvent))
|
|
70
|
+
const result = await handler(newEvent)
|
|
71
|
+
// console.log("LiveEditWrapper localOnChange end e", e, '=>', newItem, '=>', result)
|
|
72
|
+
return result
|
|
73
|
+
}, [item])
|
|
74
|
+
|
|
75
|
+
const bindedOnChange = useMemo(() => handleEvent(onChange), [onChange, handleEvent])
|
|
76
|
+
const bindedOnBlur = useMemo(() => handleEvent(onBlur), [onBlur, handleEvent])
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<MediumEditableContent item={item} onChange={bindedOnChange} onBlur={bindedOnBlur} >
|
|
80
|
+
{children}
|
|
81
|
+
{/* <hr />
|
|
82
|
+
<pre>{JSON.stringify(item, null, 2)}</pre> */}
|
|
83
|
+
</MediumEditableContent>
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
export const LiveEdit = ({ item, children, asyncMutationAction=UpdateAsyncAction }) => {
|
|
89
|
+
// const { run , error, loading, entity, data, onChange: contextOnChange, onBlur: contextOnBlur } = useGQLEntityContext()
|
|
90
|
+
const {
|
|
91
|
+
draft,
|
|
92
|
+
dirty,
|
|
93
|
+
loading: saving,
|
|
94
|
+
onChange,
|
|
95
|
+
onBlur,
|
|
96
|
+
onCancel,
|
|
97
|
+
onConfirm,
|
|
98
|
+
} = useEditAction(asyncMutationAction, item, {
|
|
99
|
+
mode: "live",
|
|
100
|
+
// onCommit: contextOnChange
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
return (
|
|
104
|
+
|
|
105
|
+
<MediumEditableContent item={item} onChange={onChange} onBlur={onBlur} >
|
|
106
|
+
{saving && <LoadingSpinner/>}
|
|
107
|
+
{children}
|
|
108
|
+
</MediumEditableContent>
|
|
109
|
+
|
|
110
|
+
)
|
|
111
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PersonFill } from "react-bootstrap-icons"
|
|
2
|
+
import { CardCapsule } from "./CardCapsule"
|
|
3
|
+
import { MediumContent } from "./MediumContent"
|
|
4
|
+
import { Link } from "./Link"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A card component that displays detailed content for an template entity.
|
|
8
|
+
*
|
|
9
|
+
* This component combines `TemplateCardCapsule` and `TemplateMediumContent` to create a card layout
|
|
10
|
+
* with a title and medium-level content. The title includes a `PersonFill` icon and a link to
|
|
11
|
+
* the template entity's details, while the body displays serialized details of the entity along
|
|
12
|
+
* with any additional children passed to the component.
|
|
13
|
+
*
|
|
14
|
+
* @component
|
|
15
|
+
* @param {Object} props - The properties for the TemplateMediumCard component.
|
|
16
|
+
* @param {Object} props.template - The object representing the template entity.
|
|
17
|
+
* @param {string|number} props.template.id - The unique identifier for the template entity.
|
|
18
|
+
* @param {string} props.template.name - The name or label of the template entity.
|
|
19
|
+
* @param {React.ReactNode} [props.children=null] - Additional content to render inside the card body.
|
|
20
|
+
*
|
|
21
|
+
* @returns {JSX.Element} A JSX element combining a card with a title and detailed content.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Example usage:
|
|
25
|
+
* const templateEntity = { id: 123, name: "Sample Entity" };
|
|
26
|
+
*
|
|
27
|
+
* <TemplateMediumCard template={templateEntity}>
|
|
28
|
+
* <p>Additional details or actions for the entity.</p>
|
|
29
|
+
* </TemplateMediumCard>
|
|
30
|
+
*/
|
|
31
|
+
export const MediumCard = ({ item, children }) => {
|
|
32
|
+
return (
|
|
33
|
+
<CardCapsule title={<><PersonFill /> <Link item={item} /></>}>
|
|
34
|
+
{children}
|
|
35
|
+
<MediumContent item={item}>
|
|
36
|
+
</MediumContent>
|
|
37
|
+
</CardCapsule>
|
|
38
|
+
)
|
|
39
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Col } from "../../Base/Components/Col"
|
|
2
|
+
import { Row } from "../../Base/Components/Row"
|
|
3
|
+
import { Link } from "./Link"
|
|
4
|
+
/**
|
|
5
|
+
* A component that displays medium-level content for an template entity.
|
|
6
|
+
*
|
|
7
|
+
* This component renders a label "TemplateMediumContent" followed by a serialized representation of the `template` object
|
|
8
|
+
* and any additional child content. It is designed to handle and display information about an template entity object.
|
|
9
|
+
*
|
|
10
|
+
* @component
|
|
11
|
+
* @param {Object} props - The properties for the TemplateMediumContent component.
|
|
12
|
+
* @param {Object} props.template - The object representing the template entity.
|
|
13
|
+
* @param {string|number} props.template.id - The unique identifier for the template entity.
|
|
14
|
+
* @param {string} props.template.name - The name or label of the template entity.
|
|
15
|
+
* @param {React.ReactNode} [props.children=null] - Additional content to render after the serialized `template` object.
|
|
16
|
+
*
|
|
17
|
+
* @returns {JSX.Element} A JSX element displaying the entity's details and optional content.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* // Example usage:
|
|
21
|
+
* const templateEntity = { id: 123, name: "Sample Entity" };
|
|
22
|
+
*
|
|
23
|
+
* <TemplateMediumContent template={templateEntity}>
|
|
24
|
+
* <p>Additional information about the entity.</p>
|
|
25
|
+
* </TemplateMediumContent>
|
|
26
|
+
*/
|
|
27
|
+
// export const MediumContent = ({ item, children}) => {
|
|
28
|
+
// return (
|
|
29
|
+
// <MediumContent_ item={item}>
|
|
30
|
+
// {children}
|
|
31
|
+
// </MediumContent_>
|
|
32
|
+
// )
|
|
33
|
+
// }
|
|
34
|
+
|
|
35
|
+
// export const MediumContent_ = ({ item, children }) => {
|
|
36
|
+
// return (
|
|
37
|
+
// <>
|
|
38
|
+
// {Object.entries(item).map(([attribute_name, attribute_value]) => {
|
|
39
|
+
// // if (attribute_name !== "id") return null
|
|
40
|
+
// if (Array.isArray(attribute_value)) return null
|
|
41
|
+
// if (typeof attribute_value === "object" && attribute_value !== null) return null
|
|
42
|
+
// let attribute_value_result = attribute_value
|
|
43
|
+
// // let attribute_value_result = attribute_value
|
|
44
|
+
// if (Array.isArray(attribute_value))
|
|
45
|
+
// // attribute_value_result = <CardCapsule><Table data={attribute_value} /></CardCapsule>
|
|
46
|
+
// return null
|
|
47
|
+
// else if (typeof attribute_value === "object" && attribute_value !== null)
|
|
48
|
+
// // attribute_value_result = <MediumCard item={attribute_value} />
|
|
49
|
+
// return null
|
|
50
|
+
// else if (attribute_name === "__typename") {
|
|
51
|
+
// /*attribute_value_result = <Link item={attribute_value} />*/
|
|
52
|
+
// // console.log("else1", attribute_name, attribute_value)
|
|
53
|
+
// }
|
|
54
|
+
// if (attribute_name === "id")
|
|
55
|
+
// attribute_value_result = <Link item={item}>{item?.id || "Data error"}</Link>
|
|
56
|
+
// if (attribute_name === "name")
|
|
57
|
+
// attribute_value_result = <Link item={item} />
|
|
58
|
+
// // else return null
|
|
59
|
+
// if (attribute_value)
|
|
60
|
+
// return (
|
|
61
|
+
// <Row key={attribute_name}>
|
|
62
|
+
// <Col className="col-4"><b>{attribute_name}</b></Col>
|
|
63
|
+
// <Col className="col-8">{attribute_value_result}</Col>
|
|
64
|
+
// </Row>
|
|
65
|
+
// )
|
|
66
|
+
// else return null
|
|
67
|
+
// })}
|
|
68
|
+
// {Object.entries(item).map(([attribute_name, attribute_value]) => {
|
|
69
|
+
// if (attribute_value !== null) return null
|
|
70
|
+
// let attribute_value_result = JSON.stringify(attribute_value)
|
|
71
|
+
// if (Array.isArray(attribute_value))
|
|
72
|
+
// // attribute_value_result = <CardCapsule><Table data={attribute_value} /></CardCapsule>
|
|
73
|
+
// return null
|
|
74
|
+
// else if (typeof attribute_value === "object" && attribute_value !== null)
|
|
75
|
+
// // attribute_value_result = <MediumCard item={attribute_value} />
|
|
76
|
+
// return null
|
|
77
|
+
// else if (attribute_name === "__typename") {
|
|
78
|
+
// /*attribute_value_result = <Link item={attribute_value} />*/
|
|
79
|
+
// console.log("else2", attribute_name, attribute_value)
|
|
80
|
+
// }
|
|
81
|
+
// if (attribute_value)
|
|
82
|
+
// return null
|
|
83
|
+
// else
|
|
84
|
+
// return (
|
|
85
|
+
// <Row key={attribute_name}>
|
|
86
|
+
// <Col className="col-4"><b>{attribute_name}</b></Col>
|
|
87
|
+
// <Col className="col-8">{attribute_value_result}</Col>
|
|
88
|
+
// </Row>
|
|
89
|
+
// )
|
|
90
|
+
// })}
|
|
91
|
+
// {children}
|
|
92
|
+
// </>
|
|
93
|
+
// )
|
|
94
|
+
// }
|
|
95
|
+
|
|
96
|
+
export { MediumContent } from "../../Base/Components/MediumContent"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Input } from "../../Base/FormControls/Input"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A component that displays medium-level content for an template entity.
|
|
5
|
+
*
|
|
6
|
+
* This component renders a label "TemplateMediumContent" followed by a serialized representation of the `template` object
|
|
7
|
+
* and any additional child content. It is designed to handle and display information about an template entity object.
|
|
8
|
+
*
|
|
9
|
+
* @component
|
|
10
|
+
* @param {Object} props - The properties for the TemplateMediumContent component.
|
|
11
|
+
* @param {Object} props.template - The object representing the template entity.
|
|
12
|
+
* @param {string|number} props.template.id - The unique identifier for the template entity.
|
|
13
|
+
* @param {string} props.template.name - The name or label of the template entity.
|
|
14
|
+
* @param {React.ReactNode} [props.children=null] - Additional content to render after the serialized `template` object.
|
|
15
|
+
*
|
|
16
|
+
* @returns {JSX.Element} A JSX element displaying the entity's details and optional content.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // Example usage:
|
|
20
|
+
* const templateEntity = { id: 123, name: "Sample Entity" };
|
|
21
|
+
*
|
|
22
|
+
* <TemplateMediumContent template={templateEntity}>
|
|
23
|
+
* <p>Additional information about the entity.</p>
|
|
24
|
+
* </TemplateMediumContent>
|
|
25
|
+
*/
|
|
26
|
+
export const MediumEditableContent = ({ item, onChange=(e)=>null, onBlur=(e)=>null, children}) => {
|
|
27
|
+
return (
|
|
28
|
+
<>
|
|
29
|
+
{/* defaultValue={item?.name|| "Název"} */}
|
|
30
|
+
<Input id={"name"} label={"Jméno"} className="form-control" value={item?.name|| "Název"} onChange={onChange} onBlur={onBlur} />
|
|
31
|
+
<Input id={"nameEn"} label={"Anglický název"} className="form-control" value={item?.nameEn|| "Anglický název"} onChange={onChange} onBlur={onBlur} />
|
|
32
|
+
<Input type="number" id={"order"} label={"Pořadí"} className="form-control" value={item?.order|| 0} onChange={onChange} onBlur={onBlur} />
|
|
33
|
+
{children}
|
|
34
|
+
</>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
export * from './CardCapsule'
|
|
3
|
+
export * from './Children'
|
|
4
|
+
export * from './LargeCard'
|
|
5
|
+
export * from './Link'
|
|
6
|
+
export * from './MediumContent'
|
|
7
|
+
export * from './MediumCard'
|
|
8
|
+
|
|
9
|
+
export * from './MediumEditableContent'
|
|
10
|
+
export * from './LiveEdit'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export * from './ConfirmEdit'
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CreateURI, MediumEditableContent, ReadItemURI } from "../Components"
|
|
2
|
+
import { InsertAsyncAction } from "../Queries"
|
|
3
|
+
import {
|
|
4
|
+
CreateBody as BaseCreateBody,
|
|
5
|
+
CreateButton as BaseCreateButton,
|
|
6
|
+
CreateDialog as BaseCreateDialog,
|
|
7
|
+
CreateLink as BaseCreateLink
|
|
8
|
+
} from "../../Base/Mutations/Create"
|
|
9
|
+
|
|
10
|
+
const DefaultContent = (props) => <MediumEditableContent {...props} />
|
|
11
|
+
const MutationAsyncAction = InsertAsyncAction
|
|
12
|
+
|
|
13
|
+
const permissions = {
|
|
14
|
+
oneOfRoles: ["superadmin"],
|
|
15
|
+
mode: "absolute",
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const CreateLink = ({
|
|
19
|
+
uriPattern=CreateURI,
|
|
20
|
+
...props
|
|
21
|
+
}) => (
|
|
22
|
+
<BaseCreateLink {...props} uriPattern={uriPattern} />
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
export const CreateButton = ({
|
|
26
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
27
|
+
CreateDialog: CreateDialog_=CreateDialog,
|
|
28
|
+
DefaultContent:defaultContent=DefaultContent,
|
|
29
|
+
readItemURI=ReadItemURI,
|
|
30
|
+
rbacitem,
|
|
31
|
+
item={
|
|
32
|
+
name: "Nový",
|
|
33
|
+
},
|
|
34
|
+
...props
|
|
35
|
+
}) => {
|
|
36
|
+
return <BaseCreateButton
|
|
37
|
+
{...props}
|
|
38
|
+
DefaultContent={defaultContent}
|
|
39
|
+
CreateDialog={CreateDialog_}
|
|
40
|
+
readItemURI={readItemURI}
|
|
41
|
+
rbacitem={rbacitem}
|
|
42
|
+
item={item}
|
|
43
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
44
|
+
{...permissions}
|
|
45
|
+
/>
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const CreateDialog = ({
|
|
49
|
+
title = "Nov(ý/é)",
|
|
50
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
51
|
+
DefaultContent:defaultContent=DefaultContent,
|
|
52
|
+
readItemURI=ReadItemURI,
|
|
53
|
+
item,
|
|
54
|
+
...props
|
|
55
|
+
}) => {
|
|
56
|
+
return <BaseCreateDialog
|
|
57
|
+
{...props}
|
|
58
|
+
title={title}
|
|
59
|
+
DefaultContent={defaultContent}
|
|
60
|
+
readItemURI={readItemURI}
|
|
61
|
+
item={item}
|
|
62
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
63
|
+
/>
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const CreateBody = ({
|
|
67
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
68
|
+
DefaultContent:defaultContent=DefaultContent,
|
|
69
|
+
readItemURI=ReadItemURI,
|
|
70
|
+
...props
|
|
71
|
+
}) => {
|
|
72
|
+
return <BaseCreateBody
|
|
73
|
+
{...props}
|
|
74
|
+
DefaultContent={defaultContent}
|
|
75
|
+
readItemURI={readItemURI}
|
|
76
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
77
|
+
/>
|
|
78
|
+
};
|
|
79
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
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 "../../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
|
+
export const DeleteLink = ({
|
|
19
|
+
uriPattern=DeleteItemURI,
|
|
20
|
+
...props
|
|
21
|
+
}) => {
|
|
22
|
+
return (
|
|
23
|
+
<BaseDeleteLink
|
|
24
|
+
{...props}
|
|
25
|
+
uriPattern={uriPattern}
|
|
26
|
+
{...permissions}
|
|
27
|
+
/>
|
|
28
|
+
)
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
* @param {onOk} param0 if defined, it is used to feeback that delete has been run, otherwise vectorItemsURI is used for navigation
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
export const DeleteButton = ({
|
|
37
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
38
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
39
|
+
vectorItemsURI=ListURI,
|
|
40
|
+
onOk,
|
|
41
|
+
...props
|
|
42
|
+
}) => {
|
|
43
|
+
return (
|
|
44
|
+
<BaseDeleteButton
|
|
45
|
+
{...props}
|
|
46
|
+
DefaultContent={DefaultContent_}
|
|
47
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
48
|
+
vectorItemsURI={vectorItemsURI}
|
|
49
|
+
onOk={onOk}
|
|
50
|
+
{...permissions}
|
|
51
|
+
/>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const DeleteDialog = ({
|
|
56
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
57
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
58
|
+
vectorItemsURI=ListURI,
|
|
59
|
+
...props
|
|
60
|
+
}) => {
|
|
61
|
+
return (
|
|
62
|
+
<BaseDeleteDialog
|
|
63
|
+
{...props}
|
|
64
|
+
DefaultContent={DefaultContent}
|
|
65
|
+
mutationAsyncAction={MutationAsyncAction}
|
|
66
|
+
vectorItemsURI={vectorItemsURI}
|
|
67
|
+
{...permissions}
|
|
68
|
+
/>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export const DeleteBody = ({
|
|
73
|
+
mutationAsyncAction=MutationAsyncAction,
|
|
74
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
75
|
+
vectorItemsURI=ListURI,
|
|
76
|
+
...props
|
|
77
|
+
}) => {
|
|
78
|
+
return (
|
|
79
|
+
<BaseDeleteBody
|
|
80
|
+
{...props}
|
|
81
|
+
DefaultContent={DefaultContent}
|
|
82
|
+
mutationAsyncAction={MutationAsyncAction}
|
|
83
|
+
vectorItemsURI={vectorItemsURI}
|
|
84
|
+
{...permissions}
|
|
85
|
+
/>
|
|
86
|
+
)
|
|
87
|
+
}
|
|
@@ -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 "../../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,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
UpdateBody as BaseUpdateBody,
|
|
3
|
+
UpdateButton as BaseUpdateButton,
|
|
4
|
+
UpdateDialog as BaseUpdateDialog,
|
|
5
|
+
UpdateLink as BaseUpdateLink
|
|
6
|
+
} from "../../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
|
+
export const UpdateLink = ({
|
|
27
|
+
uriPattern=UpdateItemURI,
|
|
28
|
+
...props
|
|
29
|
+
}) => {
|
|
30
|
+
return <BaseUpdateLink
|
|
31
|
+
{...props}
|
|
32
|
+
uriPattern={uriPattern}
|
|
33
|
+
{...permissions}
|
|
34
|
+
/>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const UpdateDialog = ({
|
|
38
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
39
|
+
mutationAsyncAction:mutationAsyncAction_=mutationAsyncAction,
|
|
40
|
+
...props
|
|
41
|
+
}) => {
|
|
42
|
+
return <BaseUpdateDialog
|
|
43
|
+
{...props}
|
|
44
|
+
DefaultContent={DefaultContent_}
|
|
45
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
46
|
+
{...permissions}
|
|
47
|
+
/>
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const UpdateButton = ({
|
|
51
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
52
|
+
Dialog=UpdateDialog,
|
|
53
|
+
mutationAsyncAction:mutationAsyncAction_=mutationAsyncAction,
|
|
54
|
+
...props
|
|
55
|
+
}) => {
|
|
56
|
+
return <BaseUpdateButton
|
|
57
|
+
{...props}
|
|
58
|
+
DefaultContent={DefaultContent_}
|
|
59
|
+
Dialog={Dialog}
|
|
60
|
+
mutationAsyncAction={mutationAsyncAction_}
|
|
61
|
+
{...permissions}
|
|
62
|
+
/>
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const UpdateBody = ({
|
|
66
|
+
DefaultContent:DefaultContent_=DefaultContent,
|
|
67
|
+
mutationAsyncAction:mutationAsyncAction_=mutationAsyncAction,
|
|
68
|
+
...props
|
|
69
|
+
}) => {
|
|
70
|
+
return <BaseUpdateBody
|
|
71
|
+
{...props}
|
|
72
|
+
DefaultContent={DefaultContent_}
|
|
73
|
+
mutationAsyncAction={mutationAsyncAction}
|
|
74
|
+
{...permissions}
|
|
75
|
+
/>
|
|
76
|
+
}
|
|
@@ -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 "../../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
|
+
}
|