@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.
Files changed (581) hide show
  1. package/index.html +104 -0
  2. package/package.json +24 -0
  3. package/src/Base/Components/Attribute.jsx +51 -0
  4. package/src/Base/Components/CardCapsule.jsx +353 -0
  5. package/src/Base/Components/Col.jsx +36 -0
  6. package/src/Base/Components/ConfirmEdit.jsx +61 -0
  7. package/src/Base/Components/CopyButton.jsx +33 -0
  8. package/src/Base/Components/LargeCard.jsx +22 -0
  9. package/src/Base/Components/Link.jsx +42 -0
  10. package/src/Base/Components/LiveEdit.jsx +64 -0
  11. package/src/Base/Components/MediumCard.jsx +30 -0
  12. package/src/Base/Components/MediumContent.jsx +74 -0
  13. package/src/Base/Components/MediumEditableContent.jsx +52 -0
  14. package/src/Base/Components/ProxyLink.jsx +132 -0
  15. package/src/Base/Components/Row.jsx +23 -0
  16. package/src/Base/Components/Table.jsx +275 -0
  17. package/src/Base/Components/index.js +14 -0
  18. package/src/Base/Components/style.js +278 -0
  19. package/src/Base/FormControls/Collapsible.jsx +46 -0
  20. package/src/Base/FormControls/Dialog.jsx +75 -0
  21. package/src/Base/FormControls/EntityLookup.jsx +175 -0
  22. package/src/Base/FormControls/Filter.jsx +834 -0
  23. package/src/Base/FormControls/Input.jsx +163 -0
  24. package/src/Base/FormControls/Label.jsx +40 -0
  25. package/src/Base/FormControls/Select.jsx +150 -0
  26. package/src/Base/FormControls/TextArea.jsx +86 -0
  27. package/src/Base/FormControls/index.js +8 -0
  28. package/src/Base/Helpers/AsyncStateIndicator.jsx +9 -0
  29. package/src/Base/Helpers/GQLEntityProvider.jsx +163 -0
  30. package/src/Base/Helpers/NavigationHistoryProvider.jsx +178 -0
  31. package/src/Base/Helpers/PlaceChild.jsx +13 -0
  32. package/src/Base/Helpers/generateQuery.js +508 -0
  33. package/src/Base/Helpers/index.js +5 -0
  34. package/src/Base/Mutations/Create.jsx +152 -0
  35. package/src/Base/Mutations/Delete.jsx +237 -0
  36. package/src/Base/Mutations/General.jsx +241 -0
  37. package/src/Base/Mutations/InteractiveMutations.jsx +32 -0
  38. package/src/Base/Mutations/Update.jsx +270 -0
  39. package/src/Base/Mutations/helpers.jsx +7 -0
  40. package/src/Base/Mutations/index.js +5 -0
  41. package/src/Base/Pages/Page.jsx +235 -0
  42. package/src/Base/Pages/PageCatch.jsx +235 -0
  43. package/src/Base/Pages/PageNavbar.jsx +70 -0
  44. package/src/Base/Pages/PageVector.jsx +229 -0
  45. package/src/Base/Pages/RouterSegment.jsx +66 -0
  46. package/src/Base/Pages/index.js +5 -0
  47. package/src/Base/Queries/DeleteAsyncAction.jsx +32 -0
  48. package/src/Base/Queries/Fragments.jsx +101 -0
  49. package/src/Base/Queries/InsertAsyncAction.jsx +40 -0
  50. package/src/Base/Queries/ReadAsyncAction.jsx +44 -0
  51. package/src/Base/Queries/ReadPageAsyncAction.jsx +16 -0
  52. package/src/Base/Queries/SearchAsyncAction.jsx +16 -0
  53. package/src/Base/Queries/UpdateAsyncAction.jsx +40 -0
  54. package/src/Base/Queries/index.js +6 -0
  55. package/src/Base/Scalars/ScalarAttribute.jsx +49 -0
  56. package/src/Base/Scalars/index.js +1 -0
  57. package/src/Base/Vectors/VectorAttribute.jsx +137 -0
  58. package/src/Base/Vectors/index.js +1 -0
  59. package/src/Base/index.js +32 -0
  60. package/src/GroupGQLModel/Components/CUDButton.jsx +128 -0
  61. package/src/GroupGQLModel/Components/CardCapsule.jsx +44 -0
  62. package/src/GroupGQLModel/Components/Children.jsx +31 -0
  63. package/src/GroupGQLModel/Components/ConfirmEdit.jsx +61 -0
  64. package/src/GroupGQLModel/Components/Filter.jsx +14 -0
  65. package/src/GroupGQLModel/Components/LargeCard.jsx +68 -0
  66. package/src/GroupGQLModel/Components/Link.jsx +54 -0
  67. package/src/GroupGQLModel/Components/LiveEdit.jsx +111 -0
  68. package/src/GroupGQLModel/Components/MediumCard.jsx +51 -0
  69. package/src/GroupGQLModel/Components/MediumContent.jsx +56 -0
  70. package/src/GroupGQLModel/Components/MediumEditableContent.jsx +52 -0
  71. package/src/GroupGQLModel/Components/Table.jsx +70 -0
  72. package/src/GroupGQLModel/Components/index.js +14 -0
  73. package/src/GroupGQLModel/Mutations/AddMembership.jsx +156 -0
  74. package/src/GroupGQLModel/Mutations/Create.jsx +67 -0
  75. package/src/GroupGQLModel/Mutations/Delete.jsx +81 -0
  76. package/src/GroupGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  77. package/src/GroupGQLModel/Mutations/Update.jsx +74 -0
  78. package/src/GroupGQLModel/Pages/PageBase.jsx +56 -0
  79. package/src/GroupGQLModel/Pages/PageCreateItem.jsx +27 -0
  80. package/src/GroupGQLModel/Pages/PageDeleteItem.jsx +16 -0
  81. package/src/GroupGQLModel/Pages/PageNavbar.jsx +264 -0
  82. package/src/GroupGQLModel/Pages/PageReadItem.jsx +12 -0
  83. package/src/GroupGQLModel/Pages/PageReadItemEx.jsx +57 -0
  84. package/src/GroupGQLModel/Pages/PageUpdateItem.jsx +14 -0
  85. package/src/GroupGQLModel/Pages/PageVector.jsx +80 -0
  86. package/src/GroupGQLModel/Pages/RouterSegment.jsx +85 -0
  87. package/src/GroupGQLModel/Pages/index.js +2 -0
  88. package/src/GroupGQLModel/Queries/DeleteAsyncAction.jsx +22 -0
  89. package/src/GroupGQLModel/Queries/Fragments.jsx +129 -0
  90. package/src/GroupGQLModel/Queries/InsertAsyncAction.jsx +43 -0
  91. package/src/GroupGQLModel/Queries/ReadAsyncAction.jsx +44 -0
  92. package/src/GroupGQLModel/Queries/ReadPageAsyncAction.jsx +18 -0
  93. package/src/GroupGQLModel/Queries/SearchAsyncAction.jsx +15 -0
  94. package/src/GroupGQLModel/Queries/UpdateAsyncAction.jsx +56 -0
  95. package/src/GroupGQLModel/Queries/index.js +6 -0
  96. package/src/GroupGQLModel/Scalars/GroupRoles.jsx +69 -0
  97. package/src/GroupGQLModel/Scalars/MasterGroup.jsx +15 -0
  98. package/src/GroupGQLModel/Scalars/RBACObject.jsx +233 -0
  99. package/src/GroupGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  100. package/src/GroupGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  101. package/src/GroupGQLModel/Scalars/index.js +1 -0
  102. package/src/GroupGQLModel/Vectors/GroupMemberships.jsx +115 -0
  103. package/src/GroupGQLModel/Vectors/GroupRoles.jsx +112 -0
  104. package/src/GroupGQLModel/Vectors/GroupRolesOn.jsx +113 -0
  105. package/src/GroupGQLModel/Vectors/GroupSubgroups.jsx +97 -0
  106. package/src/GroupGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  107. package/src/GroupGQLModel/Vectors/VectorAttribute.jsx +56 -0
  108. package/src/GroupGQLModel/Vectors/index.js +1 -0
  109. package/src/GroupGQLModel/index.js +7 -0
  110. package/src/GroupTypeGQLModel/Components/CUDButton.jsx +128 -0
  111. package/src/GroupTypeGQLModel/Components/CardCapsule.jsx +43 -0
  112. package/src/GroupTypeGQLModel/Components/Children.jsx +31 -0
  113. package/src/GroupTypeGQLModel/Components/ConfirmEdit.jsx +61 -0
  114. package/src/GroupTypeGQLModel/Components/Filter.jsx +14 -0
  115. package/src/GroupTypeGQLModel/Components/LargeCard.jsx +49 -0
  116. package/src/GroupTypeGQLModel/Components/Link.jsx +53 -0
  117. package/src/GroupTypeGQLModel/Components/LiveEdit.jsx +111 -0
  118. package/src/GroupTypeGQLModel/Components/MediumCard.jsx +39 -0
  119. package/src/GroupTypeGQLModel/Components/MediumContent.jsx +97 -0
  120. package/src/GroupTypeGQLModel/Components/MediumEditableContent.jsx +35 -0
  121. package/src/GroupTypeGQLModel/Components/Table.jsx +7 -0
  122. package/src/GroupTypeGQLModel/Components/index.js +14 -0
  123. package/src/GroupTypeGQLModel/Mutations/Create.jsx +67 -0
  124. package/src/GroupTypeGQLModel/Mutations/Delete.jsx +80 -0
  125. package/src/GroupTypeGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  126. package/src/GroupTypeGQLModel/Mutations/Update.jsx +74 -0
  127. package/src/GroupTypeGQLModel/Pages/Page.jsx +3 -0
  128. package/src/GroupTypeGQLModel/Pages/PageBase.jsx +26 -0
  129. package/src/GroupTypeGQLModel/Pages/PageCreateItem.jsx +21 -0
  130. package/src/GroupTypeGQLModel/Pages/PageDeleteItem.jsx +13 -0
  131. package/src/GroupTypeGQLModel/Pages/PageNavbar.jsx +148 -0
  132. package/src/GroupTypeGQLModel/Pages/PageReadItem.jsx +28 -0
  133. package/src/GroupTypeGQLModel/Pages/PageUpdateItem.jsx +25 -0
  134. package/src/GroupTypeGQLModel/Pages/PageVector.jsx +83 -0
  135. package/src/GroupTypeGQLModel/Pages/RouterSegment.jsx +68 -0
  136. package/src/GroupTypeGQLModel/Pages/index.js +10 -0
  137. package/src/GroupTypeGQLModel/Queries/DeleteAsyncAction.jsx +27 -0
  138. package/src/GroupTypeGQLModel/Queries/Fragments.jsx +96 -0
  139. package/src/GroupTypeGQLModel/Queries/InsertAsyncAction.jsx +41 -0
  140. package/src/GroupTypeGQLModel/Queries/ReadAsyncAction.jsx +45 -0
  141. package/src/GroupTypeGQLModel/Queries/ReadPageAsyncAction.jsx +14 -0
  142. package/src/GroupTypeGQLModel/Queries/SearchAsyncAction.jsx +16 -0
  143. package/src/GroupTypeGQLModel/Queries/UpdateAsyncAction.jsx +42 -0
  144. package/src/GroupTypeGQLModel/Queries/index.js +6 -0
  145. package/src/GroupTypeGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  146. package/src/GroupTypeGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  147. package/src/GroupTypeGQLModel/Scalars/index.js +1 -0
  148. package/src/GroupTypeGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  149. package/src/GroupTypeGQLModel/Vectors/VectorAttribute.jsx +56 -0
  150. package/src/GroupTypeGQLModel/Vectors/index.js +1 -0
  151. package/src/GroupTypeGQLModel/index.js +6 -0
  152. package/src/MembershipGQLModel/Components/CUDButton.jsx +128 -0
  153. package/src/MembershipGQLModel/Components/CardCapsule.jsx +43 -0
  154. package/src/MembershipGQLModel/Components/Children.jsx +31 -0
  155. package/src/MembershipGQLModel/Components/ConfirmEdit.jsx +61 -0
  156. package/src/MembershipGQLModel/Components/Filter.jsx +14 -0
  157. package/src/MembershipGQLModel/Components/LargeCard.jsx +49 -0
  158. package/src/MembershipGQLModel/Components/Link.jsx +54 -0
  159. package/src/MembershipGQLModel/Components/LiveEdit.jsx +111 -0
  160. package/src/MembershipGQLModel/Components/MediumCard.jsx +39 -0
  161. package/src/MembershipGQLModel/Components/MediumContent.jsx +97 -0
  162. package/src/MembershipGQLModel/Components/MediumEditableContent.jsx +35 -0
  163. package/src/MembershipGQLModel/Components/Table.jsx +7 -0
  164. package/src/MembershipGQLModel/Components/index.js +14 -0
  165. package/src/MembershipGQLModel/Mutations/Create.jsx +67 -0
  166. package/src/MembershipGQLModel/Mutations/Delete.jsx +80 -0
  167. package/src/MembershipGQLModel/Mutations/InteractiveMutations.jsx +31 -0
  168. package/src/MembershipGQLModel/Mutations/Update.jsx +74 -0
  169. package/src/MembershipGQLModel/Mutations/helpers.jsx +7 -0
  170. package/src/MembershipGQLModel/Pages/PageBase.jsx +57 -0
  171. package/src/MembershipGQLModel/Pages/PageCreateItem.jsx +28 -0
  172. package/src/MembershipGQLModel/Pages/PageDeleteItem.jsx +16 -0
  173. package/src/MembershipGQLModel/Pages/PageNavbar.jsx +110 -0
  174. package/src/MembershipGQLModel/Pages/PageReadItem.jsx +11 -0
  175. package/src/MembershipGQLModel/Pages/PageReadItemEx.jsx +42 -0
  176. package/src/MembershipGQLModel/Pages/PageUpdateItem.jsx +14 -0
  177. package/src/MembershipGQLModel/Pages/PageVector.jsx +80 -0
  178. package/src/MembershipGQLModel/Pages/RouterSegment.jsx +73 -0
  179. package/src/MembershipGQLModel/Pages/index.js +2 -0
  180. package/src/MembershipGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
  181. package/src/MembershipGQLModel/Queries/Fragments.jsx +113 -0
  182. package/src/MembershipGQLModel/Queries/InsertAsyncAction.jsx +38 -0
  183. package/src/MembershipGQLModel/Queries/ReadAsyncAction.jsx +44 -0
  184. package/src/MembershipGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
  185. package/src/MembershipGQLModel/Queries/SearchAsyncAction.jsx +16 -0
  186. package/src/MembershipGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
  187. package/src/MembershipGQLModel/Queries/index.js +6 -0
  188. package/src/MembershipGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  189. package/src/MembershipGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  190. package/src/MembershipGQLModel/Scalars/index.js +1 -0
  191. package/src/MembershipGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  192. package/src/MembershipGQLModel/Vectors/VectorAttribute.jsx +56 -0
  193. package/src/MembershipGQLModel/Vectors/index.js +1 -0
  194. package/src/MembershipGQLModel/WhatToDo.md +44 -0
  195. package/src/MembershipGQLModel/index.js +6 -0
  196. package/src/RBACGQLModel/Components/CardCapsule.jsx +43 -0
  197. package/src/RBACGQLModel/Components/Children.jsx +31 -0
  198. package/src/RBACGQLModel/Components/ConfirmEdit.jsx +61 -0
  199. package/src/RBACGQLModel/Components/Filter.jsx +14 -0
  200. package/src/RBACGQLModel/Components/LargeCard.jsx +50 -0
  201. package/src/RBACGQLModel/Components/Link.jsx +54 -0
  202. package/src/RBACGQLModel/Components/LiveEdit.jsx +111 -0
  203. package/src/RBACGQLModel/Components/MediumCard.jsx +39 -0
  204. package/src/RBACGQLModel/Components/MediumContent.jsx +96 -0
  205. package/src/RBACGQLModel/Components/MediumEditableContent.jsx +212 -0
  206. package/src/RBACGQLModel/Components/Table.jsx +7 -0
  207. package/src/RBACGQLModel/Components/index.js +13 -0
  208. package/src/RBACGQLModel/Mutations/Create.jsx +202 -0
  209. package/src/RBACGQLModel/Mutations/Delete.jsx +173 -0
  210. package/src/RBACGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  211. package/src/RBACGQLModel/Mutations/Update.jsx +147 -0
  212. package/src/RBACGQLModel/Mutations/helpers.jsx +7 -0
  213. package/src/RBACGQLModel/Pages/PageBase.jsx +56 -0
  214. package/src/RBACGQLModel/Pages/PageCreateItem.jsx +28 -0
  215. package/src/RBACGQLModel/Pages/PageDeleteItem.jsx +16 -0
  216. package/src/RBACGQLModel/Pages/PageNavbar.jsx +160 -0
  217. package/src/RBACGQLModel/Pages/PageReadItem.jsx +11 -0
  218. package/src/RBACGQLModel/Pages/PageReadItemEx.jsx +42 -0
  219. package/src/RBACGQLModel/Pages/PageUpdateItem.jsx +14 -0
  220. package/src/RBACGQLModel/Pages/PageVector.jsx +80 -0
  221. package/src/RBACGQLModel/Pages/RouterSegment.jsx +72 -0
  222. package/src/RBACGQLModel/Pages/index.js +2 -0
  223. package/src/RBACGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
  224. package/src/RBACGQLModel/Queries/Fragments.jsx +101 -0
  225. package/src/RBACGQLModel/Queries/InsertAsyncAction.jsx +40 -0
  226. package/src/RBACGQLModel/Queries/ReadAsyncAction.jsx +44 -0
  227. package/src/RBACGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
  228. package/src/RBACGQLModel/Queries/SearchAsyncAction.jsx +16 -0
  229. package/src/RBACGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
  230. package/src/RBACGQLModel/Queries/index.js +6 -0
  231. package/src/RBACGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  232. package/src/RBACGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  233. package/src/RBACGQLModel/Scalars/index.js +1 -0
  234. package/src/RBACGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  235. package/src/RBACGQLModel/Vectors/VectorAttribute.jsx +56 -0
  236. package/src/RBACGQLModel/Vectors/index.js +1 -0
  237. package/src/RBACGQLModel/WhatToDo.md +44 -0
  238. package/src/RBACGQLModel/index.js +71 -0
  239. package/src/RoleGQLModel/Components/CUDButton.jsx +128 -0
  240. package/src/RoleGQLModel/Components/CardCapsule.jsx +43 -0
  241. package/src/RoleGQLModel/Components/Children.jsx +31 -0
  242. package/src/RoleGQLModel/Components/ConfirmEdit.jsx +61 -0
  243. package/src/RoleGQLModel/Components/Filter.jsx +14 -0
  244. package/src/RoleGQLModel/Components/LargeCard.jsx +49 -0
  245. package/src/RoleGQLModel/Components/Link.jsx +55 -0
  246. package/src/RoleGQLModel/Components/LiveEdit.jsx +111 -0
  247. package/src/RoleGQLModel/Components/MediumCard.jsx +39 -0
  248. package/src/RoleGQLModel/Components/MediumContent.jsx +97 -0
  249. package/src/RoleGQLModel/Components/MediumEditableContent.jsx +72 -0
  250. package/src/RoleGQLModel/Components/RBACObject.jsx +22 -0
  251. package/src/RoleGQLModel/Components/Table.jsx +82 -0
  252. package/src/RoleGQLModel/Components/index.js +14 -0
  253. package/src/RoleGQLModel/Mutations/AddRoleOnGroup.jsx +117 -0
  254. package/src/RoleGQLModel/Mutations/Create.jsx +67 -0
  255. package/src/RoleGQLModel/Mutations/Delete.jsx +80 -0
  256. package/src/RoleGQLModel/Mutations/InteractiveMutations.jsx +31 -0
  257. package/src/RoleGQLModel/Mutations/Update.jsx +74 -0
  258. package/src/RoleGQLModel/Pages/Page.jsx +3 -0
  259. package/src/RoleGQLModel/Pages/PageBase.jsx +26 -0
  260. package/src/RoleGQLModel/Pages/PageContent.jsx +31 -0
  261. package/src/RoleGQLModel/Pages/PageCreateItem.jsx +21 -0
  262. package/src/RoleGQLModel/Pages/PageDeleteItem.jsx +13 -0
  263. package/src/RoleGQLModel/Pages/PageNavbar.jsx +161 -0
  264. package/src/RoleGQLModel/Pages/PageReadItem.jsx +28 -0
  265. package/src/RoleGQLModel/Pages/PageUpdateItem.jsx +25 -0
  266. package/src/RoleGQLModel/Pages/PageVector.jsx +83 -0
  267. package/src/RoleGQLModel/Pages/RouterSegment.jsx +69 -0
  268. package/src/RoleGQLModel/Pages/index.js +10 -0
  269. package/src/RoleGQLModel/Queries/DeleteAsyncAction.jsx +22 -0
  270. package/src/RoleGQLModel/Queries/Fragments.jsx +123 -0
  271. package/src/RoleGQLModel/Queries/InsertAsyncAction.jsx +45 -0
  272. package/src/RoleGQLModel/Queries/ReadAsyncAction.jsx +45 -0
  273. package/src/RoleGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
  274. package/src/RoleGQLModel/Queries/UpdateAsyncAction.jsx +35 -0
  275. package/src/RoleGQLModel/Queries/index.js +6 -0
  276. package/src/RoleGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  277. package/src/RoleGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  278. package/src/RoleGQLModel/Scalars/index.js +1 -0
  279. package/src/RoleGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  280. package/src/RoleGQLModel/Vectors/VectorAttribute.jsx +56 -0
  281. package/src/RoleGQLModel/Vectors/index.js +1 -0
  282. package/src/RoleGQLModel/index.js +6 -0
  283. package/src/RoleTypeGQLModel/Components/CUDButton.jsx +128 -0
  284. package/src/RoleTypeGQLModel/Components/CardCapsule.jsx +43 -0
  285. package/src/RoleTypeGQLModel/Components/Children.jsx +31 -0
  286. package/src/RoleTypeGQLModel/Components/ConfirmEdit.jsx +61 -0
  287. package/src/RoleTypeGQLModel/Components/Filter.jsx +14 -0
  288. package/src/RoleTypeGQLModel/Components/LargeCard.jsx +49 -0
  289. package/src/RoleTypeGQLModel/Components/Link.jsx +55 -0
  290. package/src/RoleTypeGQLModel/Components/LiveEdit.jsx +111 -0
  291. package/src/RoleTypeGQLModel/Components/MediumCard.jsx +39 -0
  292. package/src/RoleTypeGQLModel/Components/MediumContent.jsx +97 -0
  293. package/src/RoleTypeGQLModel/Components/MediumEditableContent.jsx +35 -0
  294. package/src/RoleTypeGQLModel/Components/Table.jsx +7 -0
  295. package/src/RoleTypeGQLModel/Components/index.js +14 -0
  296. package/src/RoleTypeGQLModel/Mutations/Create.jsx +67 -0
  297. package/src/RoleTypeGQLModel/Mutations/Delete.jsx +80 -0
  298. package/src/RoleTypeGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  299. package/src/RoleTypeGQLModel/Mutations/Update.jsx +74 -0
  300. package/src/RoleTypeGQLModel/Pages/Page.jsx +3 -0
  301. package/src/RoleTypeGQLModel/Pages/PageBase.jsx +56 -0
  302. package/src/RoleTypeGQLModel/Pages/PageCreateItem.jsx +27 -0
  303. package/src/RoleTypeGQLModel/Pages/PageDeleteItem.jsx +16 -0
  304. package/src/RoleTypeGQLModel/Pages/PageNavbar.jsx +148 -0
  305. package/src/RoleTypeGQLModel/Pages/PageReadItem.jsx +11 -0
  306. package/src/RoleTypeGQLModel/Pages/PageUpdateItem.jsx +14 -0
  307. package/src/RoleTypeGQLModel/Pages/PageVector.jsx +79 -0
  308. package/src/RoleTypeGQLModel/Pages/RouterSegment.jsx +69 -0
  309. package/src/RoleTypeGQLModel/Pages/index.js +10 -0
  310. package/src/RoleTypeGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
  311. package/src/RoleTypeGQLModel/Queries/Fragments.jsx +103 -0
  312. package/src/RoleTypeGQLModel/Queries/InsertAsyncAction.jsx +40 -0
  313. package/src/RoleTypeGQLModel/Queries/ReadAsyncAction.jsx +44 -0
  314. package/src/RoleTypeGQLModel/Queries/ReadPageAsyncAction.jsx +13 -0
  315. package/src/RoleTypeGQLModel/Queries/SearchAsyncAction.jsx +29 -0
  316. package/src/RoleTypeGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
  317. package/src/RoleTypeGQLModel/Queries/index.js +6 -0
  318. package/src/RoleTypeGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  319. package/src/RoleTypeGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  320. package/src/RoleTypeGQLModel/Scalars/index.js +1 -0
  321. package/src/RoleTypeGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  322. package/src/RoleTypeGQLModel/Vectors/VectorAttribute.jsx +56 -0
  323. package/src/RoleTypeGQLModel/Vectors/index.js +1 -0
  324. package/src/RoleTypeGQLModel/index.js +6 -0
  325. package/src/StateGQLModel/Components/CardCapsule.jsx +43 -0
  326. package/src/StateGQLModel/Components/Children.jsx +31 -0
  327. package/src/StateGQLModel/Components/ConfirmEdit.jsx +61 -0
  328. package/src/StateGQLModel/Components/Filter.jsx +14 -0
  329. package/src/StateGQLModel/Components/LargeCard.jsx +50 -0
  330. package/src/StateGQLModel/Components/Link.jsx +54 -0
  331. package/src/StateGQLModel/Components/LiveEdit.jsx +111 -0
  332. package/src/StateGQLModel/Components/MediumCard.jsx +39 -0
  333. package/src/StateGQLModel/Components/MediumContent.jsx +96 -0
  334. package/src/StateGQLModel/Components/MediumEditableContent.jsx +36 -0
  335. package/src/StateGQLModel/Components/Table.jsx +7 -0
  336. package/src/StateGQLModel/Components/index.js +13 -0
  337. package/src/StateGQLModel/Mutations/Create.jsx +79 -0
  338. package/src/StateGQLModel/Mutations/Delete.jsx +87 -0
  339. package/src/StateGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  340. package/src/StateGQLModel/Mutations/Update.jsx +76 -0
  341. package/src/StateGQLModel/Mutations/helpers.jsx +7 -0
  342. package/src/StateGQLModel/Pages/PageBase.jsx +56 -0
  343. package/src/StateGQLModel/Pages/PageCreateItem.jsx +28 -0
  344. package/src/StateGQLModel/Pages/PageDeleteItem.jsx +16 -0
  345. package/src/StateGQLModel/Pages/PageNavbar.jsx +160 -0
  346. package/src/StateGQLModel/Pages/PageReadItem.jsx +11 -0
  347. package/src/StateGQLModel/Pages/PageReadItemEx.jsx +42 -0
  348. package/src/StateGQLModel/Pages/PageUpdateItem.jsx +14 -0
  349. package/src/StateGQLModel/Pages/PageVector.jsx +80 -0
  350. package/src/StateGQLModel/Pages/RouterSegment.jsx +72 -0
  351. package/src/StateGQLModel/Pages/index.js +2 -0
  352. package/src/StateGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
  353. package/src/StateGQLModel/Queries/Fragments.jsx +109 -0
  354. package/src/StateGQLModel/Queries/InsertAsyncAction.jsx +104 -0
  355. package/src/StateGQLModel/Queries/ReadAsyncAction.jsx +48 -0
  356. package/src/StateGQLModel/Queries/ReadPageAsyncAction.jsx +23 -0
  357. package/src/StateGQLModel/Queries/SearchAsyncAction.jsx +16 -0
  358. package/src/StateGQLModel/Queries/UpdateAsyncAction.jsx +106 -0
  359. package/src/StateGQLModel/Queries/index.js +6 -0
  360. package/src/StateGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  361. package/src/StateGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  362. package/src/StateGQLModel/Scalars/index.js +1 -0
  363. package/src/StateGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  364. package/src/StateGQLModel/Vectors/VectorAttribute.jsx +56 -0
  365. package/src/StateGQLModel/Vectors/index.js +1 -0
  366. package/src/StateGQLModel/index.js +71 -0
  367. package/src/StateMachineGQLModel/Components/CardCapsule.jsx +43 -0
  368. package/src/StateMachineGQLModel/Components/Children.jsx +31 -0
  369. package/src/StateMachineGQLModel/Components/ConfirmEdit.jsx +61 -0
  370. package/src/StateMachineGQLModel/Components/Filter.jsx +14 -0
  371. package/src/StateMachineGQLModel/Components/LargeCard.jsx +50 -0
  372. package/src/StateMachineGQLModel/Components/Link.jsx +54 -0
  373. package/src/StateMachineGQLModel/Components/LiveEdit.jsx +111 -0
  374. package/src/StateMachineGQLModel/Components/MediumCard.jsx +39 -0
  375. package/src/StateMachineGQLModel/Components/MediumContent.jsx +96 -0
  376. package/src/StateMachineGQLModel/Components/MediumEditableContent.jsx +989 -0
  377. package/src/StateMachineGQLModel/Components/Table.jsx +7 -0
  378. package/src/StateMachineGQLModel/Components/index.js +13 -0
  379. package/src/StateMachineGQLModel/Mutations/Create.jsx +79 -0
  380. package/src/StateMachineGQLModel/Mutations/Delete.jsx +80 -0
  381. package/src/StateMachineGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  382. package/src/StateMachineGQLModel/Mutations/Update.jsx +74 -0
  383. package/src/StateMachineGQLModel/Mutations/helpers.jsx +7 -0
  384. package/src/StateMachineGQLModel/Pages/PageBase.jsx +56 -0
  385. package/src/StateMachineGQLModel/Pages/PageCreateItem.jsx +28 -0
  386. package/src/StateMachineGQLModel/Pages/PageDeleteItem.jsx +16 -0
  387. package/src/StateMachineGQLModel/Pages/PageNavbar.jsx +160 -0
  388. package/src/StateMachineGQLModel/Pages/PageReadItem.jsx +11 -0
  389. package/src/StateMachineGQLModel/Pages/PageReadItemEx.jsx +42 -0
  390. package/src/StateMachineGQLModel/Pages/PageUpdateItem.jsx +14 -0
  391. package/src/StateMachineGQLModel/Pages/PageVector.jsx +80 -0
  392. package/src/StateMachineGQLModel/Pages/RouterSegment.jsx +72 -0
  393. package/src/StateMachineGQLModel/Pages/index.js +2 -0
  394. package/src/StateMachineGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
  395. package/src/StateMachineGQLModel/Queries/Fragments.jsx +148 -0
  396. package/src/StateMachineGQLModel/Queries/InsertAsyncAction.jsx +44 -0
  397. package/src/StateMachineGQLModel/Queries/ReadAsyncAction.jsx +48 -0
  398. package/src/StateMachineGQLModel/Queries/ReadPageAsyncAction.jsx +23 -0
  399. package/src/StateMachineGQLModel/Queries/SearchAsyncAction.jsx +16 -0
  400. package/src/StateMachineGQLModel/Queries/UpdateAsyncAction.jsx +40 -0
  401. package/src/StateMachineGQLModel/Queries/index.js +6 -0
  402. package/src/StateMachineGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  403. package/src/StateMachineGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  404. package/src/StateMachineGQLModel/Scalars/index.js +1 -0
  405. package/src/StateMachineGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  406. package/src/StateMachineGQLModel/Vectors/VectorAttribute.jsx +56 -0
  407. package/src/StateMachineGQLModel/Vectors/index.js +1 -0
  408. package/src/StateMachineGQLModel/WhatToDo.md +44 -0
  409. package/src/StateMachineGQLModel/index.js +71 -0
  410. package/src/StateTransitionGQLModel/Components/CardCapsule.jsx +43 -0
  411. package/src/StateTransitionGQLModel/Components/Children.jsx +31 -0
  412. package/src/StateTransitionGQLModel/Components/ConfirmEdit.jsx +61 -0
  413. package/src/StateTransitionGQLModel/Components/Filter.jsx +14 -0
  414. package/src/StateTransitionGQLModel/Components/LargeCard.jsx +50 -0
  415. package/src/StateTransitionGQLModel/Components/Link.jsx +54 -0
  416. package/src/StateTransitionGQLModel/Components/LiveEdit.jsx +111 -0
  417. package/src/StateTransitionGQLModel/Components/MediumCard.jsx +39 -0
  418. package/src/StateTransitionGQLModel/Components/MediumContent.jsx +96 -0
  419. package/src/StateTransitionGQLModel/Components/MediumEditableContent.jsx +35 -0
  420. package/src/StateTransitionGQLModel/Components/Table.jsx +7 -0
  421. package/src/StateTransitionGQLModel/Components/index.js +13 -0
  422. package/src/StateTransitionGQLModel/Mutations/Create.jsx +79 -0
  423. package/src/StateTransitionGQLModel/Mutations/Delete.jsx +80 -0
  424. package/src/StateTransitionGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  425. package/src/StateTransitionGQLModel/Mutations/Update.jsx +75 -0
  426. package/src/StateTransitionGQLModel/Mutations/helpers.jsx +7 -0
  427. package/src/StateTransitionGQLModel/Pages/PageBase.jsx +56 -0
  428. package/src/StateTransitionGQLModel/Pages/PageCreateItem.jsx +28 -0
  429. package/src/StateTransitionGQLModel/Pages/PageDeleteItem.jsx +16 -0
  430. package/src/StateTransitionGQLModel/Pages/PageNavbar.jsx +160 -0
  431. package/src/StateTransitionGQLModel/Pages/PageReadItem.jsx +11 -0
  432. package/src/StateTransitionGQLModel/Pages/PageReadItemEx.jsx +42 -0
  433. package/src/StateTransitionGQLModel/Pages/PageUpdateItem.jsx +14 -0
  434. package/src/StateTransitionGQLModel/Pages/PageVector.jsx +80 -0
  435. package/src/StateTransitionGQLModel/Pages/RouterSegment.jsx +72 -0
  436. package/src/StateTransitionGQLModel/Pages/index.js +2 -0
  437. package/src/StateTransitionGQLModel/Queries/DeleteAsyncAction.jsx +32 -0
  438. package/src/StateTransitionGQLModel/Queries/Fragments.jsx +150 -0
  439. package/src/StateTransitionGQLModel/Queries/InsertAsyncAction.jsx +107 -0
  440. package/src/StateTransitionGQLModel/Queries/ReadAsyncAction.jsx +48 -0
  441. package/src/StateTransitionGQLModel/Queries/ReadPageAsyncAction.jsx +23 -0
  442. package/src/StateTransitionGQLModel/Queries/SearchAsyncAction.jsx +16 -0
  443. package/src/StateTransitionGQLModel/Queries/UpdateAsyncAction.jsx +109 -0
  444. package/src/StateTransitionGQLModel/Queries/index.js +6 -0
  445. package/src/StateTransitionGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  446. package/src/StateTransitionGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  447. package/src/StateTransitionGQLModel/Scalars/index.js +1 -0
  448. package/src/StateTransitionGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  449. package/src/StateTransitionGQLModel/Vectors/VectorAttribute.jsx +56 -0
  450. package/src/StateTransitionGQLModel/Vectors/index.js +1 -0
  451. package/src/StateTransitionGQLModel/WhatToDo.md +44 -0
  452. package/src/StateTransitionGQLModel/index.js +71 -0
  453. package/src/Template/Attributes/TemplateTrivialAttribute.jsx +21 -0
  454. package/src/Template/Attributes/index.js +1 -0
  455. package/src/Template/Components/CUDButton.jsx +128 -0
  456. package/src/Template/Components/CardCapsule.jsx +43 -0
  457. package/src/Template/Components/Children.jsx +31 -0
  458. package/src/Template/Components/ConfirmEdit.jsx +61 -0
  459. package/src/Template/Components/LargeCard.jsx +48 -0
  460. package/src/Template/Components/Link.jsx +41 -0
  461. package/src/Template/Components/LiveEdit.jsx +111 -0
  462. package/src/Template/Components/MediumCard.jsx +39 -0
  463. package/src/Template/Components/MediumContent.jsx +97 -0
  464. package/src/Template/Components/MediumEditableContent.jsx +36 -0
  465. package/src/Template/Components/Table.jsx +7 -0
  466. package/src/Template/Components/index.js +14 -0
  467. package/src/Template/Pages/Page.jsx +28 -0
  468. package/src/Template/Pages/PageCapsule.jsx +13 -0
  469. package/src/Template/Pages/PageContent.jsx +34 -0
  470. package/src/Template/Pages/PageEdit.jsx +17 -0
  471. package/src/Template/Pages/PageNavbar.jsx +110 -0
  472. package/src/Template/Pages/RouterSegment.jsx +52 -0
  473. package/src/Template/Pages/VectorPage.jsx +133 -0
  474. package/src/Template/Pages/index.js +6 -0
  475. package/src/Template/Queries/DeleteAsyncAction.jsx +22 -0
  476. package/src/Template/Queries/Fragments.jsx +92 -0
  477. package/src/Template/Queries/InsertAsyncAction.jsx +22 -0
  478. package/src/Template/Queries/ReadAsyncAction.jsx +45 -0
  479. package/src/Template/Queries/ReadPageAsyncAction.jsx +13 -0
  480. package/src/Template/Queries/UpdateAsyncAction.jsx +76 -0
  481. package/src/Template/Queries/index.js +6 -0
  482. package/src/Template/Scalars/ScalarAttribute.jsx +54 -0
  483. package/src/Template/Scalars/TemplateScalarAttribute.jsx +88 -0
  484. package/src/Template/Scalars/index.js +1 -0
  485. package/src/Template/Vectors/TemplateVectorsAttribute.jsx +326 -0
  486. package/src/Template/Vectors/VectorAttribute.jsx +56 -0
  487. package/src/Template/Vectors/index.js +1 -0
  488. package/src/Template/index.js +71 -0
  489. package/src/UserGQLModel/Components/CUDButton.jsx +128 -0
  490. package/src/UserGQLModel/Components/CardCapsule.jsx +43 -0
  491. package/src/UserGQLModel/Components/ConfirmEdit.jsx +61 -0
  492. package/src/UserGQLModel/Components/Filter.jsx +15 -0
  493. package/src/UserGQLModel/Components/LargeCard.jsx +82 -0
  494. package/src/UserGQLModel/Components/Link.jsx +54 -0
  495. package/src/UserGQLModel/Components/LiveEdit.jsx +111 -0
  496. package/src/UserGQLModel/Components/MediumCard.jsx +40 -0
  497. package/src/UserGQLModel/Components/MediumContent.jsx +43 -0
  498. package/src/UserGQLModel/Components/MediumEditableContent.jsx +57 -0
  499. package/src/UserGQLModel/Components/Table.jsx +7 -0
  500. package/src/UserGQLModel/Components/index.js +13 -0
  501. package/src/UserGQLModel/Mutations/AddMembership.jsx +136 -0
  502. package/src/UserGQLModel/Mutations/Create.jsx +68 -0
  503. package/src/UserGQLModel/Mutations/Delete.jsx +81 -0
  504. package/src/UserGQLModel/Mutations/InteractiveMutations.jsx +30 -0
  505. package/src/UserGQLModel/Mutations/Update.jsx +68 -0
  506. package/src/UserGQLModel/Mutations/helpers.jsx +7 -0
  507. package/src/UserGQLModel/Pages/PageAddMembership.jsx +15 -0
  508. package/src/UserGQLModel/Pages/PageBase.jsx +56 -0
  509. package/src/UserGQLModel/Pages/PageCreateItem.jsx +27 -0
  510. package/src/UserGQLModel/Pages/PageDeleteItem.jsx +16 -0
  511. package/src/UserGQLModel/Pages/PageNavbar.jsx +146 -0
  512. package/src/UserGQLModel/Pages/PageReadItem.jsx +12 -0
  513. package/src/UserGQLModel/Pages/PageReadItemEx.jsx +62 -0
  514. package/src/UserGQLModel/Pages/PageUpdateItem.jsx +14 -0
  515. package/src/UserGQLModel/Pages/PageVector.jsx +78 -0
  516. package/src/UserGQLModel/Pages/RouterSegment.jsx +77 -0
  517. package/src/UserGQLModel/Pages/index.js +9 -0
  518. package/src/UserGQLModel/Queries/DeleteAsyncAction.jsx +22 -0
  519. package/src/UserGQLModel/Queries/Fragments.jsx +114 -0
  520. package/src/UserGQLModel/Queries/InsertAsyncAction.jsx +22 -0
  521. package/src/UserGQLModel/Queries/ReadAsyncAction.jsx +45 -0
  522. package/src/UserGQLModel/Queries/ReadPageAsyncAction.jsx +17 -0
  523. package/src/UserGQLModel/Queries/SearchAsyncAction.jsx +15 -0
  524. package/src/UserGQLModel/Queries/UpdateAsyncAction.jsx +76 -0
  525. package/src/UserGQLModel/Queries/index.js +6 -0
  526. package/src/UserGQLModel/Scalars/ScalarAttribute.jsx +54 -0
  527. package/src/UserGQLModel/Scalars/TemplateScalarAttribute.jsx +88 -0
  528. package/src/UserGQLModel/Scalars/index.js +1 -0
  529. package/src/UserGQLModel/Vectors/Roles.jsx +23 -0
  530. package/src/UserGQLModel/Vectors/TemplateVectorsAttribute.jsx +326 -0
  531. package/src/UserGQLModel/Vectors/UserMemberships.jsx +56 -0
  532. package/src/UserGQLModel/Vectors/UserRoles.jsx +81 -0
  533. package/src/UserGQLModel/Vectors/VectorAttribute.jsx +56 -0
  534. package/src/UserGQLModel/Vectors/index.js +1 -0
  535. package/src/UserGQLModel/index.js +6 -0
  536. package/src/_Template/Components/CardCapsule.jsx +43 -0
  537. package/src/_Template/Components/Children.jsx +31 -0
  538. package/src/_Template/Components/ConfirmEdit.jsx +61 -0
  539. package/src/_Template/Components/Filter.jsx +14 -0
  540. package/src/_Template/Components/LargeCard.jsx +50 -0
  541. package/src/_Template/Components/Link.jsx +54 -0
  542. package/src/_Template/Components/LiveEdit.jsx +111 -0
  543. package/src/_Template/Components/MediumCard.jsx +39 -0
  544. package/src/_Template/Components/MediumContent.jsx +96 -0
  545. package/src/_Template/Components/MediumEditableContent.jsx +35 -0
  546. package/src/_Template/Components/Table.jsx +7 -0
  547. package/src/_Template/Components/index.js +13 -0
  548. package/src/_Template/Mutations/Create.jsx +202 -0
  549. package/src/_Template/Mutations/Delete.jsx +173 -0
  550. package/src/_Template/Mutations/InteractiveMutations.jsx +30 -0
  551. package/src/_Template/Mutations/Update.jsx +147 -0
  552. package/src/_Template/Mutations/helpers.jsx +7 -0
  553. package/src/_Template/Pages/PageBase.jsx +56 -0
  554. package/src/_Template/Pages/PageCreateItem.jsx +28 -0
  555. package/src/_Template/Pages/PageDeleteItem.jsx +16 -0
  556. package/src/_Template/Pages/PageNavbar.jsx +160 -0
  557. package/src/_Template/Pages/PageReadItem.jsx +11 -0
  558. package/src/_Template/Pages/PageReadItemEx.jsx +42 -0
  559. package/src/_Template/Pages/PageUpdateItem.jsx +14 -0
  560. package/src/_Template/Pages/PageVector.jsx +80 -0
  561. package/src/_Template/Pages/RouterSegment.jsx +72 -0
  562. package/src/_Template/Pages/index.js +2 -0
  563. package/src/_Template/Queries/DeleteAsyncAction.jsx +32 -0
  564. package/src/_Template/Queries/Fragments.jsx +101 -0
  565. package/src/_Template/Queries/InsertAsyncAction.jsx +40 -0
  566. package/src/_Template/Queries/ReadAsyncAction.jsx +44 -0
  567. package/src/_Template/Queries/ReadPageAsyncAction.jsx +13 -0
  568. package/src/_Template/Queries/SearchAsyncAction.jsx +16 -0
  569. package/src/_Template/Queries/UpdateAsyncAction.jsx +40 -0
  570. package/src/_Template/Queries/index.js +6 -0
  571. package/src/_Template/Scalars/ScalarAttribute.jsx +54 -0
  572. package/src/_Template/Scalars/TemplateScalarAttribute.jsx +88 -0
  573. package/src/_Template/Scalars/index.js +1 -0
  574. package/src/_Template/Vectors/TemplateVectorsAttribute.jsx +326 -0
  575. package/src/_Template/Vectors/VectorAttribute.jsx +56 -0
  576. package/src/_Template/Vectors/index.js +1 -0
  577. package/src/_Template/WhatToDo.md +44 -0
  578. package/src/_Template/index.js +71 -0
  579. package/src/index.js +8 -0
  580. package/src/uriroot.js +158 -0
  581. package/vite.config.js +47 -0
@@ -0,0 +1,163 @@
1
+ import { useMemo } from "react";
2
+ import { useEffect } from "react";
3
+ import { Label } from "./Label";
4
+ import { useRef } from "react";
5
+ import { useState } from "react";
6
+
7
+ /**
8
+ * Univerzální `<input>` wrapper s podporou controlled i uncontrolled režimu,
9
+ * s volitelným label obalem přes {@link Label}. Normalizuje `onChange`/`onBlur`
10
+ * tak, že callbacky vždy dostanou objekt ve tvaru `{ target: { id, value } }`.
11
+ *
12
+ * Chování:
13
+ * - **Controlled**: pokud je předán `value`, komponenta řídí hodnotu přes `value`.
14
+ * - **Uncontrolled**: pokud `value` není předán, použije se `defaultValue`.
15
+ * - `onBlur` se vyvolá pouze pokud uživatel opravdu změnil hodnotu (touched).
16
+ * - Pro `type="number"` komponenta převádí hodnotu na `number` (nebo `""` při prázdnu/NaN).
17
+ * - Pokud se interní `value_` liší od `value`, přidá se třída `bg-warning`.
18
+ *
19
+ * @component
20
+ * @param {Object} props
21
+ * @param {string} [props.label]
22
+ * Text titulku; pokud je uveden, input se zabalí do {@link Label} a použije se jako `title`.
23
+ * Pokud není, vrací se přímo element `<input>`.
24
+ * @param {boolean} [props.ariaHidden=false]
25
+ * Pokud `true`, komponenta nerenderuje nic (`null`). Vhodné pro podmíněné skrývání.
26
+ * @param {React.ReactNode} [props.children]
27
+ * Dodatečný obsah renderovaný pod inputem (pouze pokud je `label` uveden).
28
+ *
29
+ * @param {string} [props.id]
30
+ * ID inputu. Použije se i v emitovaných událostech (`target.id`).
31
+ * @param {string|number} [props.value]
32
+ * Controlled hodnota. Pokud je definovaná, komponenta přepne do controlled režimu.
33
+ * @param {string|number} [props.defaultValue]
34
+ * Výchozí hodnota pro uncontrolled režim.
35
+ * @param {("text"|"number"|string)} [props.type="text"]
36
+ * Typ inputu. Pro `"number"` probíhá coercion na `number`/`""`.
37
+ * @param {(e: {target: {id: string, value: any}}) => void} [props.onChange]
38
+ * Callback při změně; dostane normalizovaný event `{ target: { id, value } }`.
39
+ * @param {(e: {target: {id: string, value: any}}) => void} [props.onBlur]
40
+ * Callback při blur; vyvolá se pouze pokud uživatel předtím změnil hodnotu (touched).
41
+ *
42
+ * @param {Object<string, any>} [props.rest]
43
+ * Ostatní props předané přímo do `<input />` (např. `className`, `placeholder`, `disabled`,
44
+ * `min`, `max`, `step`, `name`, `autoComplete`, `data-*`, atd.).
45
+ *
46
+ * @returns {JSX.Element|null}
47
+ *
48
+ * @example
49
+ * // Controlled
50
+ * <Input
51
+ * id="age"
52
+ * label="Age"
53
+ * type="number"
54
+ * value={age}
55
+ * onChange={({ target }) => setAge(target.value)}
56
+ * onBlur={({ target }) => saveAge(target.value)}
57
+ * />
58
+ *
59
+ * @example
60
+ * // Uncontrolled
61
+ * <Input id="name" defaultValue="John" onBlur={({ target }) => console.log(target.value)} />
62
+ */
63
+ export const Input = ({ label, ariaHidden = false, children, ...props }) => {
64
+ const {
65
+ id,
66
+ value,
67
+ defaultValue,
68
+ onChange = () => null,
69
+ onBlur = () => null,
70
+ type="text",
71
+ reset=0,
72
+ ...rest
73
+ } = props;
74
+
75
+ const isControlled = value !== undefined; // klíčové
76
+ const touchedRef = useRef(false);
77
+
78
+ const coerceValue = (val) => {
79
+ if (type === "number") {
80
+ if (val === "" || val == null) return "";
81
+ const num = Number(val);
82
+ return Number.isNaN(num) ? "" : num;
83
+ }
84
+ return val ?? "";
85
+ };
86
+
87
+ const [value_, setValue_] = useState(() => coerceValue(value));
88
+
89
+ useEffect(() => {
90
+ // console.log("Input.useEffect.value")
91
+ if (!isControlled) return;
92
+ // console.log("Input.useEffect.value changed to", value)
93
+ touchedRef.current = false;
94
+ setValue_(value)
95
+ }, [isControlled, value, reset])
96
+
97
+
98
+ // reset "touched", když se změní hodnota zvenku (typicky reload / cancel / confirm)
99
+ const externalValueKey = useMemo(
100
+ () => (isControlled ? coerceValue(value) : undefined),
101
+ [isControlled, value, type]
102
+ );
103
+
104
+ useEffect(() => {
105
+ if (isControlled) touchedRef.current = false;
106
+ }, [externalValueKey, isControlled]);
107
+
108
+ const emit = (cb) => (e) => {
109
+ const coercedValue = coerceValue(e.target.value);
110
+ cb({ target: { id, value: coercedValue } });
111
+ };
112
+
113
+ const handleChange = (e) => {
114
+ touchedRef.current = true;
115
+ const value = e?.target?.value
116
+ setValue_(value)
117
+ // console.log("Input.handleChange.value changed to", value, reset)
118
+ emit(onChange)(e);
119
+ };
120
+
121
+ const handleBlur = (e) => {
122
+ if (!touchedRef.current) return;
123
+ emit(onBlur)(e);
124
+ };
125
+
126
+ if (ariaHidden) return null;
127
+
128
+ const inputProps = {
129
+ id,
130
+ type,
131
+ onChange: handleChange,
132
+ onBlur: handleBlur,
133
+ ...rest,
134
+ };
135
+
136
+ // Controlled vs uncontrolled:
137
+ if (isControlled) {
138
+ // console.log("Input.isControlled using value", value_, value)
139
+ inputProps.value = coerceValue(value_);
140
+ } else {
141
+ inputProps.defaultValue = coerceValue(defaultValue);
142
+ }
143
+
144
+ if (value !== value_) {
145
+ inputProps.className = (inputProps.className ? inputProps.className + " " : "") + "bg-warning";
146
+ }
147
+ // console.log("Input default", isControlled, defaultValue, inputProps)
148
+ const inputElement = <input {...inputProps} />;
149
+
150
+ // console.log(inputProps)
151
+ if (!label) return inputElement;
152
+
153
+ return (
154
+ <Label title={label}>
155
+ {/* {JSON.stringify(inputProps)} */}
156
+ {inputElement}
157
+ {/* value_: {value_} <br />
158
+ value: {value} */}
159
+
160
+ {children}
161
+ </Label>
162
+ );
163
+ };
@@ -0,0 +1,40 @@
1
+ import { SimpleCardCapsule } from "../Components/CardCapsule"
2
+
3
+ /**
4
+ * Komponenta pro jednoduché “označené” (labelované) zobrazení obsahu v kapsli.
5
+ * Využívá {@link SimpleCardCapsule} jako vizuální obal a umožňuje vložit
6
+ * do hlavičkové části (před `children`) volitelné nástroje/akce.
7
+ *
8
+ * Typické použití:
9
+ * - panel s tlačítky (tools) + obsah (children),
10
+ * - “sekce” formuláře s akcemi (např. Přidat, Obnovit, Uložit),
11
+ * - obal pro vizuální sjednocení.
12
+ *
13
+ * @component
14
+ * @param {Object} props
15
+ * @param {React.ReactNode} [props.tools]
16
+ * Volitelné UI prvky zobrazené před hlavním obsahem (např. tlačítka, badge, filtr).
17
+ * @param {React.ReactNode} [props.children]
18
+ * Hlavní obsah komponenty.
19
+ * @param {Object<string, any>} [props.props]
20
+ * Další props jsou předány do {@link SimpleCardCapsule} (např. `id`, `title`, `header`,
21
+ * `style`, `className`, `data-*`).
22
+ *
23
+ * @returns {JSX.Element}
24
+ *
25
+ * @example
26
+ * <Label
27
+ * title="Nastavení"
28
+ * tools={<button onClick={reset}>Reset</button>}
29
+ * >
30
+ * <SettingsForm />
31
+ * </Label>
32
+ */
33
+ export const Label = ({tools, children, ...props}) => {
34
+ return (
35
+ <SimpleCardCapsule {...props}>
36
+ {tools}
37
+ {children}
38
+ </SimpleCardCapsule>
39
+ )
40
+ }
@@ -0,0 +1,150 @@
1
+ import React, { useState } from 'react'
2
+ import { useEffect, useRef } from 'react'
3
+ import { Label } from './Label'
4
+
5
+ /**
6
+ * A React component that renders a styled `<select>` dropdown with dynamic options and enhanced change detection.
7
+ *
8
+ * This component integrates with the `Options` component to fetch and display dynamic `<option>` elements.
9
+ * It uses a `MutationObserver` to detect changes in the `<select>` element's children and triggers the `onChange`
10
+ * event accordingly. The dropdown is wrapped in a `SimpleCardCapsule` for a consistent UI layout.
11
+ *
12
+ * @function Select
13
+ * @param {Object} props - The properties for the Select component.
14
+ * @param {string} [props.label] - The label displayed as the title of the `SimpleCardCapsule`.
15
+ * @param {React.ReactNode} props.children - The `<option>` elements or an `Options` component to render dynamic options.
16
+ * @param {string} [props.id] - The unique identifier for the `<select>` element.
17
+ * @param {string|number} [props.value] - The current value of the `<select>` element, used for controlled components.
18
+ * @param {string|number} [props.defaultValue] - The default value of the `<select>` element, used for uncontrolled components.
19
+ * @param {Function} [props.onChange] - A callback function triggered when the `<select>` value changes. Receives an event object.
20
+ * @param {Function} [props.onBlur] - A callback function triggered when the `<select>` loses focus. Receives an event object.
21
+ * @param {Object} props.rest - Any additional props passed to the `<select>` element.
22
+ *
23
+ * @returns {JSX.Element} A styled dropdown wrapped in a `SimpleCardCapsule` with dynamic options and change detection.
24
+ *
25
+ * @example
26
+ * // Example usage with Options:
27
+ * const MyComponent = () => {
28
+ * const fetchOptions = (params) => async (dispatch) => {
29
+ * const response = await fetch('/api/data', {
30
+ * method: 'POST',
31
+ * body: JSON.stringify(params),
32
+ * });
33
+ * const json = await response.json();
34
+ * return json;
35
+ * };
36
+ *
37
+ * const [selectedValue, setSelectedValue] = useState("");
38
+ * const [fetchTrigger, setFetchTrigger] = useState(0);
39
+ *
40
+ * const handleChange = (e) => {
41
+ * setSelectedValue(e.target.value);
42
+ * };
43
+ *
44
+ * const refreshOptions = () => setFetchTrigger((prev) => prev + 1);
45
+ *
46
+ * return (
47
+ * <div>
48
+ * <button onClick={refreshOptions}>Refresh Options</button>
49
+ * <Select
50
+ * label="Dynamic Select"
51
+ * id="dynamic-select"
52
+ * value={selectedValue}
53
+ * onChange={handleChange}
54
+ * >
55
+ * <Options asyncAction={fetchOptions} params={{ someParam: "value" }} shouldFetch={fetchTrigger} />
56
+ * </Select>
57
+ * </div>
58
+ * );
59
+ * };
60
+ */
61
+ export const Select_ = ({ label, children, defaultValue, onChange, onBlur, ariaHidden, ...props }) => {
62
+ const selectRef = useRef(null);
63
+ const prevValueRef = useRef(defaultValue); // poslední známá hodnota
64
+
65
+ useEffect(() => {
66
+ if (!selectRef.current || typeof onChange !== "function") return;
67
+
68
+ const observer = new MutationObserver(() => {
69
+ // Oddálíme vyhodnocení, až se React přepne na novou hodnotu
70
+ setTimeout(() => {
71
+ const current = selectRef.current?.value;
72
+
73
+ if (prevValueRef.current !== current) {
74
+ prevValueRef.current = current;
75
+ const event = { target: { id: selectRef.current.id, value: current } };
76
+ console.log("Select firing event due to real change", event);
77
+ onChange(event);
78
+ } else {
79
+ console.log("MutationObserver detected change but value unchanged");
80
+ }
81
+ }, 0);
82
+ });
83
+
84
+ observer.observe(selectRef.current, { childList: true, subtree: true });
85
+
86
+ // Uložíme počáteční hodnotu
87
+ if (selectRef.current?.value) {
88
+ prevValueRef.current = selectRef.current.value;
89
+ }
90
+
91
+ return () => observer.disconnect();
92
+ }, [onChange, children]);
93
+
94
+ if (ariaHidden) return null;
95
+
96
+ const selectElement = (
97
+ <select
98
+ ref={selectRef}
99
+ defaultValue={defaultValue}
100
+ onChange={onChange}
101
+ onBlur={onBlur}
102
+ {...props}
103
+ >
104
+ {children}
105
+ </select>
106
+ );
107
+
108
+ return label ? <Label title={label}>{selectElement}</Label> : selectElement;
109
+ };
110
+
111
+
112
+ export const Select = ({ id, label, value, onChange, onBlur, children, ...props }) => {
113
+ const [internalValue, setInternalValue] = useState(value ?? "");
114
+
115
+ // Když se externí `value` změní, aktualizuj i vnitřní stav
116
+ useEffect(() => {
117
+ setInternalValue(value ?? "");
118
+ }, [value]);
119
+
120
+ const handleChange = (e) => {
121
+ const newValue = e.target.value;
122
+ setInternalValue(newValue); // aktualizuj interní stav
123
+ onChange?.({ target: { id, value: newValue } }); // zavolej callback s konzistentním tvarem
124
+ };
125
+
126
+ const handleBlur = (e) => {
127
+ const newValue = e.target.value;
128
+ onBlur?.({ target: { id, value: newValue } });
129
+ };
130
+
131
+ const selectElement = (
132
+ <select
133
+ id={id}
134
+ value={internalValue}
135
+ onChange={handleChange}
136
+ onBlur={handleBlur}
137
+ {...props}
138
+ >
139
+ {children}
140
+ </select>
141
+ );
142
+
143
+ if (props.ariaHidden) return null;
144
+
145
+ return label ? (
146
+ <Label title={label}>{selectElement}</Label>
147
+ ) : (
148
+ selectElement
149
+ );
150
+ };
@@ -0,0 +1,86 @@
1
+ import { useEffect, useRef, useState, useCallback } from "react";
2
+ import { Label } from './Label';
3
+
4
+ export const TextArea = ({
5
+ id,
6
+ value,
7
+ label,
8
+ placeHolder,
9
+ ariaHidden = false,
10
+ autoHeight = true,
11
+
12
+ // IMPORTANT: očekává string, ne event
13
+ onChange = (_value) => null,
14
+ onBlur = (_value) => null,
15
+
16
+ ...props
17
+ }) => {
18
+ const textareaRef = useRef(null);
19
+
20
+ const [value_, setValue_] = useState(value ?? "");
21
+ const [dirty, setDirty] = useState(false);
22
+
23
+ const adjustHeight = useCallback(() => {
24
+ if (!autoHeight) return;
25
+ const el = textareaRef.current;
26
+ if (!el) return;
27
+ el.style.height = "auto";
28
+ el.style.height = `${el.scrollHeight + 10}px`;
29
+ }, [autoHeight]);
30
+
31
+ // autoheight reaguje na obsah
32
+ useEffect(() => {
33
+ adjustHeight();
34
+ }, [value_, adjustHeight]);
35
+
36
+ useEffect(() => {
37
+ const external = value ?? "";
38
+
39
+ // 1) sync zvenku jen když uživatel nepíše
40
+ if (!dirty) {
41
+ setValue_(external);
42
+ return;
43
+ }
44
+
45
+ // 2) když uživatel píše, ale backend dohnal stejnou hodnotu, shodit dirty
46
+ if (external === value_) {
47
+ setDirty(false);
48
+ }
49
+ }, [value, value_, dirty]);
50
+
51
+ const handleChange = (e) => {
52
+ const next = e?.target?.value ?? "";
53
+ setDirty(true);
54
+ setValue_(next);
55
+ onChange({ target: { id, value: next }}); // bez debounce uvnitř, debounce je externí
56
+ };
57
+
58
+ const handleBlur = () => {
59
+ // na blur obvykle chceš "flush" (externí debounce by měl mít flush),
60
+ // tady aspoň pošli aktuální hodnotu:
61
+ onBlur({ target: { id, value: value_ }});
62
+ };
63
+
64
+ const textarea = (
65
+ <textarea
66
+ {...props}
67
+ ref={textareaRef}
68
+ value={value_}
69
+ aria-hidden={ariaHidden ? true : undefined}
70
+ onChange={handleChange}
71
+ onBlur={handleBlur}
72
+ />
73
+ );
74
+
75
+ if (ariaHidden) return textarea;
76
+
77
+ const content = (
78
+ <>
79
+ {placeHolder && <p>{placeHolder}</p>}
80
+ {textarea}
81
+ </>
82
+ );
83
+
84
+ if (label) return <Label title={label}>{content}</Label>;
85
+ return content;
86
+ };
@@ -0,0 +1,8 @@
1
+ export * from "./Collapsible"
2
+ export * from "./Dialog"
3
+ export * from "./EntityLookup"
4
+ export * from "./Filter"
5
+ export * from "./Input"
6
+ export * from "./Label"
7
+ export * from "./Select"
8
+ export * from "./TextArea"
@@ -0,0 +1,9 @@
1
+ import { ErrorHandler, LoadingSpinner } from "@hrbolek/uoisfrontend-shared"
2
+
3
+ export const AsyncStateIndicator = ({ error, loading, text, children }) => {
4
+ return (<>
5
+ {error && <ErrorHandler errors={error} />}
6
+ {loading && <LoadingSpinner text={text} />}
7
+ {/* {!error && !loading && children} */}
8
+ </>)
9
+ }
@@ -0,0 +1,163 @@
1
+ import { useContext } from "react";
2
+ import { createContext } from "react";
3
+ import { useAsyncThunkAction } from "../../../../dynamic/src/Hooks";
4
+ import { useState } from "react";
5
+ import { CreateDelayer } from "@hrbolek/uoisfrontend-shared";
6
+ import { AsyncStateIndicator } from "./AsyncStateIndicator";
7
+ import { SimpleCardCapsule } from "../Components";
8
+ import { useCallback } from "react";
9
+
10
+ const GQLEntityContext = createContext(null);
11
+ export const useGQLEntityContext = () => {
12
+ const result = useContext(GQLEntityContext)
13
+ if (result == null) {
14
+ throw new Error("useGQLEntityContext must be used within a GQLEntityProvider")
15
+ }
16
+ return result
17
+ }
18
+
19
+
20
+ /**
21
+ * Provider, který nad daným `item` spouští asynchronní thunk akci (`queryAsyncAction`)
22
+ * přes `useAsyncThunkAction` a zpřístupňuje stav + handlery potomkům přes `GQLEntityContext`.
23
+ *
24
+ * Kontextová hodnota obsahuje:
25
+ * - `loading` {boolean} stav načítání
26
+ * - `error` {any|null} chyba z posledního volání (pokud nastala)
27
+ * - `reRead` {Function} funkce pro znovunačtení (alias na `run`)
28
+ * - `item` {any|null} entita ze storu (typicky `entity` z `useAsyncThunkAction`)
29
+ * - `data` {any|null} návratová data z thunk akce (typicky `data` z `useAsyncThunkAction`)
30
+ * - `onChange` {Function} debounced handler pro změnu (volá `run`)
31
+ * - `onBlur` {Function} alias na `onChange`
32
+ *
33
+ * @component
34
+ *
35
+ * @param {Object} props
36
+ * @param {any} props.item
37
+ * Vstupní item/vars pro `queryAsyncAction`. Typicky objekt s `{ id }` nebo rovnou entita,
38
+ * podle toho, jak máš `useAsyncThunkAction`/`queryAsyncAction` postavené.
39
+ *
40
+ * @param {Function} props.queryAsyncAction
41
+ * Factory pro thunk async akci. Musí být kompatibilní s `useAsyncThunkAction`,
42
+ * tj. typicky funkce, kterou lze volat jako `queryAsyncAction(vars, client?)`
43
+ * a která vrací thunk `(dispatch, getState, extra?) => Promise<any>`.
44
+ *
45
+ * @param {Object} [props.options]
46
+ * @param {boolean} [props.options.deferred=false]
47
+ * Pokud je `false`, hook může spustit první načtení automaticky (podle implementace `useAsyncThunkAction`).
48
+ * @param {boolean} [props.options.network=true]
49
+ * Pokud je `false`, `run` se nebude provádět (offline režim / vypnutí síťových volání).
50
+ *
51
+ * @param {import('react').ReactNode} props.children
52
+ * Potomci, kteří budou mít přístup ke kontextu.
53
+ *
54
+ * @returns {import('react').JSX.Element}
55
+ */
56
+ export const AsyncActionProvider = ({
57
+ item,
58
+ queryAsyncAction,
59
+ options = { deferred: false, network: true },
60
+
61
+ onChange = () => null,
62
+ onBlur = () => null,
63
+
64
+ children,
65
+ }) => {
66
+ if (queryAsyncAction == null) {
67
+ throw new Error("AsyncActionProvider: queryAsyncAction is required");
68
+ }
69
+
70
+ const [contextid] = useState(crypto?.randomUUID?.() ?? null)
71
+ const { run, error, loading, entity, data } = useAsyncThunkAction(queryAsyncAction, item, options)
72
+ const [delayer] = useState(() => CreateDelayer())
73
+ const [varsState, setVarsState] = useState(item || {});
74
+ const onEvent = useCallback((masterEvent) => async (e) => {
75
+ // console.log("AsyncAcionProvider onChange e", contextid, e)
76
+ const value = e?.target?.value
77
+ setVarsState(old => value)
78
+ const newState = await delayer(() => run(value))
79
+ // console.log("AsyncAcionProvider newState e", contextid, newState)
80
+ const newE = { target: { value: newState } }
81
+ return await masterEvent(newE)
82
+ }, [setVarsState, delayer, run])
83
+
84
+ const handleChange = useCallback(
85
+ onEvent(onChange), [onEvent, onChange]
86
+ )
87
+ const handleBlur = useCallback(
88
+ onEvent(onBlur), [onEvent, onBlur]
89
+ )
90
+ // console.log("GQLEntityProvider", item, "entity", entity, "data", data)
91
+ const contextValue = {
92
+ loading,
93
+ error,
94
+ reRead: run,
95
+ params: varsState,
96
+ item: entity,
97
+ data,
98
+ onChange: handleChange,
99
+ onBlur: handleBlur
100
+ }
101
+ // console.log("GQLEntityProvider item", contextid, entity, data)
102
+ // console.log("GQLEntityProvider contextValue", contextid, contextValue)
103
+ // if (!item) return null;
104
+ return (
105
+ <GQLEntityContext.Provider value={contextValue}>
106
+ {/* <h1>{contextid}</h1> */}
107
+ <AsyncStateIndicator error={error} loading={loading} />
108
+
109
+ {/* {(!loading && !error) && children} */}
110
+ {children}
111
+ {/* {!contextValue.item && <pre>{JSON.stringify(contextValue)}</pre>} */}
112
+ {/* <pre>{JSON.stringify(contextValue, null, 2)}</pre> */}
113
+ </GQLEntityContext.Provider>
114
+ );
115
+ };
116
+
117
+ export const Group = ({ id, children }) => {
118
+ const entityCtx = useContext(GQLEntityContext);
119
+ if (!entityCtx) throw Error("Group must be used within GQLEntityContext");
120
+
121
+ const wrapEvent = useCallback(
122
+ (eOrValue) => {
123
+ // dovol: event nebo přímá hodnota
124
+ const value =
125
+ eOrValue && typeof eOrValue === "object" && "target" in eOrValue
126
+ ? eOrValue.target?.value
127
+ : eOrValue;
128
+
129
+ return {
130
+ target: {
131
+ id,
132
+ value: { [id]: value }, // patch
133
+ }
134
+ };
135
+ },
136
+ [id]
137
+ );
138
+
139
+ const handleChange = useCallback(
140
+ (eOrValue) => entityCtx.onChange?.(wrapEvent(eOrValue)),
141
+ [entityCtx, wrapEvent]
142
+ );
143
+
144
+ const handleBlur = useCallback(
145
+ (eOrValue) => entityCtx.onBlur?.(wrapEvent(eOrValue)),
146
+ [entityCtx, wrapEvent]
147
+ );
148
+
149
+ const contextValue = useMemo(
150
+ () => ({
151
+ ...entityCtx, // zachovej vše z parenta
152
+ onChange: handleChange,
153
+ onBlur: handleBlur,
154
+ }),
155
+ [entityCtx, handleChange, handleBlur]
156
+ );
157
+
158
+ return (
159
+ <GQLEntityContext.Provider value={contextValue}>
160
+ {children}
161
+ </GQLEntityContext.Provider>
162
+ );
163
+ };