@orchestrator-ui/orchestrator-ui-components 0.2.4 → 0.2.6

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 (444) hide show
  1. package/.storybook/main.js +1 -1
  2. package/.turbo/turbo-build.log +9 -7
  3. package/.turbo/turbo-lint.log +3 -6
  4. package/.turbo/turbo-test.log +17 -9
  5. package/CHANGELOG.md +12 -0
  6. package/dist/index.d.ts +1092 -358
  7. package/dist/index.js +22934 -6399
  8. package/jest.config.cjs +0 -1
  9. package/package.json +24 -8
  10. package/src/api/axios.ts +34 -0
  11. package/src/api/index.ts +170 -0
  12. package/src/components/WfoAuth/WfoAuth.tsx +22 -0
  13. package/src/components/WfoAuth/index.ts +1 -0
  14. package/src/components/{WFOBadges/WFOBadge/WFOBadge.stories.tsx → WfoBadges/WfoBadge/WfoBadge.stories.tsx} +5 -4
  15. package/src/components/{WFOBadges/WFOBadge/WFOBadge.tsx → WfoBadges/WfoBadge/WfoBadge.tsx} +4 -3
  16. package/src/components/WfoBadges/WfoBadge/index.ts +1 -0
  17. package/src/components/{WFOBadges/WFOEngineStatusBadge/WFOEngineStatusBadge.stories.tsx → WfoBadges/WfoEngineStatusBadge/WfoEngineStatusBadge.stories.tsx} +6 -4
  18. package/src/components/{WFOBadges/WFOEngineStatusBadge/WFOEngineStatusBadge.tsx → WfoBadges/WfoEngineStatusBadge/WfoEngineStatusBadge.tsx} +13 -7
  19. package/src/components/WfoBadges/WfoEngineStatusBadge/index.ts +1 -0
  20. package/src/components/{WFOBadges/WFOEnvironmentBadge/WFOEnvironmentBadge.stories.tsx → WfoBadges/WfoEnvironmentBadge/WfoEnvironmentBadge.stories.tsx} +6 -4
  21. package/src/components/{WFOBadges/WFOEnvironmentBadge/WFOEnvironmentBadge.tsx → WfoBadges/WfoEnvironmentBadge/WfoEnvironmentBadge.tsx} +8 -7
  22. package/src/components/WfoBadges/WfoEnvironmentBadge/index.ts +1 -0
  23. package/src/components/WfoBadges/WfoFailedTasksBadge/WfoFailedTasksBadge.stories.tsx +13 -0
  24. package/src/components/WfoBadges/WfoFailedTasksBadge/WfoFailedTasksBadge.tsx +95 -0
  25. package/src/components/WfoBadges/WfoFailedTasksBadge/index.ts +1 -0
  26. package/src/components/{WFOBadges/WFOHeaderBadge/WFOHeaderBadge.stories.tsx → WfoBadges/WfoHeaderBadge/WfoHeaderBadge.stories.tsx} +6 -4
  27. package/src/components/{WFOBadges/WFOHeaderBadge/WFOHeaderBadge.tsx → WfoBadges/WfoHeaderBadge/WfoHeaderBadge.tsx} +6 -4
  28. package/src/components/WfoBadges/WfoHeaderBadge/index.ts +1 -0
  29. package/src/components/{WFOBadges/WFOProcessStatusBadge/WFOProcessStatusBadge.tsx → WfoBadges/WfoProcessStatusBadge/WfoProcessStatusBadge.tsx} +8 -6
  30. package/src/components/WfoBadges/WfoProcessStatusBadge/index.ts +1 -0
  31. package/src/components/WfoBadges/WfoProductBlockBadge/WfoProductBlockBadge.stories.tsx +16 -0
  32. package/src/components/WfoBadges/WfoProductBlockBadge/WfoProductBlockBadge.tsx +70 -0
  33. package/src/components/WfoBadges/WfoProductBlockBadge/index.ts +1 -0
  34. package/src/components/WfoBadges/WfoProductStatusBadge/WfoProductStatusBadge.stories.tsx +22 -0
  35. package/src/components/WfoBadges/WfoProductStatusBadge/WfoProductStatusBadge.tsx +53 -0
  36. package/src/components/WfoBadges/WfoProductStatusBadge/index.ts +1 -0
  37. package/src/components/{WFOBadges/WFOSubscriptionStatusBadge/WFOSubscriptionStatusBadge.stories.tsx → WfoBadges/WfoSubscriptionStatusBadge/WfoSubscriptionStatusBadge.stories.tsx} +5 -4
  38. package/src/components/{WFOBadges/WFOSubscriptionStatusBadge/WFOSubscriptionStatusBadge.tsx → WfoBadges/WfoSubscriptionStatusBadge/WfoSubscriptionStatusBadge.tsx} +12 -10
  39. package/src/components/WfoBadges/WfoSubscriptionStatusBadge/index.ts +1 -0
  40. package/src/components/WfoBadges/WfoWorkflowTargetBadge/WfoWorkflowTargetBadge.tsx +65 -0
  41. package/src/components/WfoBadges/WfoWorkflowTargetBadge/index.ts +1 -0
  42. package/src/components/WfoBadges/index.ts +9 -0
  43. package/src/components/WfoButtonComboBox/WfoButtonComboBox.tsx +76 -0
  44. package/src/components/WfoButtonComboBox/styles.ts +13 -0
  45. package/src/components/WfoDateTime/WfoDateTime.tsx +28 -0
  46. package/src/components/WfoDateTime/index.ts +1 -0
  47. package/src/components/WfoDropdownButton/WfoDropdownButton.tsx +67 -0
  48. package/src/components/WfoDropdownButton/index.ts +1 -0
  49. package/src/components/{WFOFilterTabs/WFOFilterTabs.tsx → WfoFilterTabs/WfoFilterTabs.tsx} +8 -6
  50. package/src/components/WfoFilterTabs/index.ts +1 -0
  51. package/src/components/WfoForms/AutoFieldLoader.tsx +110 -0
  52. package/src/components/WfoForms/AutoFields.tsx +49 -0
  53. package/src/components/WfoForms/CreateForm.tsx +71 -0
  54. package/src/components/WfoForms/UserInputForm.tsx +607 -0
  55. package/src/components/WfoForms/UserInputFormStyling.ts +80 -0
  56. package/src/components/WfoForms/UserInputFormWizard.tsx +120 -0
  57. package/src/components/WfoForms/formFields/AcceptField.tsx +239 -0
  58. package/src/components/WfoForms/formFields/AcceptFieldStyling.ts +29 -0
  59. package/src/components/WfoForms/formFields/BoolField.tsx +71 -0
  60. package/src/components/WfoForms/formFields/BoolFieldStyling.ts +68 -0
  61. package/src/components/WfoForms/formFields/ContactPersonAutocomplete.tsx +97 -0
  62. package/src/components/WfoForms/formFields/ContactPersonAutocompleteStyles.ts +40 -0
  63. package/src/components/WfoForms/formFields/ContactPersonNameField.tsx +253 -0
  64. package/src/components/WfoForms/formFields/DateField.tsx +72 -0
  65. package/src/components/WfoForms/formFields/DividerField.tsx +29 -0
  66. package/src/components/WfoForms/formFields/ErrorField.tsx +40 -0
  67. package/src/components/WfoForms/formFields/ErrorsField.tsx +34 -0
  68. package/src/components/WfoForms/formFields/ImsNodeIdField.tsx +110 -0
  69. package/src/components/WfoForms/formFields/IpNetworkField.tsx +128 -0
  70. package/src/components/WfoForms/formFields/IpPrefixTableField.tsx +454 -0
  71. package/src/components/WfoForms/formFields/IpPrefixTableFieldStyling.ts +117 -0
  72. package/src/components/WfoForms/formFields/LabelField.tsx +39 -0
  73. package/src/components/WfoForms/formFields/ListAddField.tsx +98 -0
  74. package/src/components/WfoForms/formFields/ListDelField.tsx +95 -0
  75. package/src/components/WfoForms/formFields/ListField.tsx +113 -0
  76. package/src/components/WfoForms/formFields/ListItemField.tsx +40 -0
  77. package/src/components/WfoForms/formFields/ListSelectField.tsx +92 -0
  78. package/src/components/WfoForms/formFields/LocationCodeField.tsx +66 -0
  79. package/src/components/WfoForms/formFields/LongTextField.tsx +68 -0
  80. package/src/components/WfoForms/formFields/NestField.tsx +107 -0
  81. package/src/components/WfoForms/formFields/NumField.tsx +75 -0
  82. package/src/components/WfoForms/formFields/OptGroupField.tsx +74 -0
  83. package/src/components/WfoForms/formFields/OrganisationField.tsx +57 -0
  84. package/src/components/WfoForms/formFields/ProductField.tsx +78 -0
  85. package/src/components/WfoForms/formFields/RadioField.tsx +87 -0
  86. package/src/components/WfoForms/formFields/SelectField.tsx +152 -0
  87. package/src/components/WfoForms/formFields/SplitPrefix.tsx +163 -0
  88. package/src/components/WfoForms/formFields/SplitPrefixStyling.ts +11 -0
  89. package/src/components/WfoForms/formFields/SubmitField.tsx +50 -0
  90. package/src/components/WfoForms/formFields/SubscriptionField.tsx +351 -0
  91. package/src/components/WfoForms/formFields/SubscriptionFieldStyling.ts +33 -0
  92. package/src/components/WfoForms/formFields/SubscriptionSummaryField.tsx +75 -0
  93. package/src/components/WfoForms/formFields/TextField.tsx +71 -0
  94. package/src/components/WfoForms/formFields/TimestampField.tsx +103 -0
  95. package/src/components/WfoForms/formFields/VlanField.tsx +297 -0
  96. package/src/components/WfoForms/formFields/index.ts +29 -0
  97. package/src/components/WfoForms/formFields/listFieldStyling.ts +86 -0
  98. package/src/components/WfoForms/formFields/reactSelectStyles.ts +45 -0
  99. package/src/components/WfoForms/formFields/surf/types.ts +53 -0
  100. package/src/components/WfoForms/formFields/surf/utils.ts +1 -0
  101. package/src/components/WfoForms/formFields/types.ts +50 -0
  102. package/src/components/WfoForms/formFields/utils.spec.ts +196 -0
  103. package/src/components/WfoForms/formFields/utils.ts +65 -0
  104. package/src/components/WfoForms/index.ts +5 -0
  105. package/src/components/WfoForms/useAxiosApiClient.ts +8 -0
  106. package/src/components/WfoInsyncIcon/WfoInsyncIcon.stories.tsx +21 -0
  107. package/src/components/WfoInsyncIcon/WfoInsyncIcon.tsx +26 -0
  108. package/src/components/WfoInsyncIcon/index.ts +1 -0
  109. package/src/components/WfoJsonCodeBlock/WfoJsonCodeBlock.tsx +27 -0
  110. package/src/components/WfoJsonCodeBlock/styles.ts +13 -0
  111. package/src/components/WfoKeyValueTable/WfoKeyCell.tsx +25 -0
  112. package/src/components/WfoKeyValueTable/WfoKeyValueTable.tsx +41 -0
  113. package/src/components/WfoKeyValueTable/WfoValueCell.tsx +53 -0
  114. package/src/components/WfoKeyValueTable/index.ts +3 -0
  115. package/src/components/WfoKeyValueTable/styles.ts +77 -0
  116. package/src/components/WfoLoading/WfoLoading.tsx +3 -0
  117. package/src/components/WfoLoading/index.ts +1 -0
  118. package/src/components/WfoNoResults/WfoNoResults.stories.tsx +19 -0
  119. package/src/components/WfoNoResults/WfoNoResults.tsx +22 -0
  120. package/src/components/WfoNoResults/index.ts +1 -0
  121. package/src/components/WfoNoResults/styles.ts +22 -0
  122. package/src/components/WfoPageHeader/WfoPageHeader.tsx +25 -0
  123. package/src/components/{WFOPageTemplate/WFOBreadcrumbs/WFOBreadcrumbs.tsx → WfoPageTemplate/WfoBreadcrumbs/WfoBreadcrumbs.tsx} +5 -2
  124. package/src/components/WfoPageTemplate/WfoBreadcrumbs/index.ts +1 -0
  125. package/src/components/{WFOPageTemplate/WFOPageHeader/WFOPageHeader.stories.tsx → WfoPageTemplate/WfoPageHeader/WfoPageHeader.stories.tsx} +7 -5
  126. package/src/components/{WFOPageTemplate/WFOPageHeader/WFOPageHeader.tsx → WfoPageTemplate/WfoPageHeader/WfoPageHeader.tsx} +26 -11
  127. package/src/components/WfoPageTemplate/WfoPageHeader/index.ts +1 -0
  128. package/src/components/{WFOPageTemplate/WFOPageTemplate/WFOPageTemplate.stories.tsx → WfoPageTemplate/WfoPageTemplate/WfoPageTemplate.stories.tsx} +8 -6
  129. package/src/components/{WFOPageTemplate/WFOPageTemplate/WFOPageTemplate.tsx → WfoPageTemplate/WfoPageTemplate/WfoPageTemplate.tsx} +20 -10
  130. package/src/components/WfoPageTemplate/WfoPageTemplate/index.ts +1 -0
  131. package/src/components/{WFOPageTemplate/WFOSidebar/WFOSidebar.stories.tsx → WfoPageTemplate/WfoSidebar/WfoSidebar.stories.tsx} +6 -4
  132. package/src/components/WfoPageTemplate/WfoSidebar/WfoSidebar.tsx +161 -0
  133. package/src/components/WfoPageTemplate/WfoSidebar/WfoStartCreateWorkflowButtonComboBox.tsx +58 -0
  134. package/src/components/WfoPageTemplate/WfoSidebar/index.ts +1 -0
  135. package/src/components/WfoPageTemplate/index.ts +4 -0
  136. package/src/components/{WFOPageTemplate → WfoPageTemplate}/paths.ts +1 -1
  137. package/src/components/WfoProcessesList/WfoProcessList.tsx +227 -0
  138. package/src/components/WfoProcessesList/processListObjectMappers.ts +79 -0
  139. package/src/components/{WFOSearchBar/WFOSearchField.tsx → WfoSearchBar/WfoSearchField.tsx} +4 -3
  140. package/src/components/WfoSearchBar/index.ts +1 -0
  141. package/src/components/WfoSettingsModal/WfoInformationModal.tsx +41 -0
  142. package/src/components/{WFOSettingsModal/WFOSettingsModal.tsx → WfoSettingsModal/WfoSettingsModal.tsx} +3 -2
  143. package/src/components/WfoSettingsModal/index.tsx +2 -0
  144. package/src/components/{WFOSettingsPage/WFOEngineStatusButton.tsx → WfoSettingsPage/WfoEngineStatusButton.tsx} +5 -3
  145. package/src/components/{WFOSettingsPage/WFOFlushSettings.tsx → WfoSettingsPage/WfoFlushSettings.tsx} +19 -30
  146. package/src/components/{WFOSettingsPage/WFOModifySettings.tsx → WfoSettingsPage/WfoModifySettings.tsx} +7 -5
  147. package/src/components/{WFOSettingsPage/WFOSettings.tsx → WfoSettingsPage/WfoSettings.tsx} +12 -8
  148. package/src/components/{WFOSettingsPage/WFOStatus.tsx → WfoSettingsPage/WfoStatus.tsx} +8 -6
  149. package/src/components/WfoSettingsPage/index.ts +1 -0
  150. package/src/components/{WFOStartPage/WFOFrequentlyUsed.stories.tsx → WfoStartPage/WfoFrequentlyUsed.stories.tsx} +5 -4
  151. package/src/components/{WFOStartPage/WFOFrequentlyUsed.tsx → WfoStartPage/WfoFrequentlyUsed.tsx} +4 -3
  152. package/src/components/{WFOStartPage/WFOListItemStartPage.stories.tsx → WfoStartPage/WfoListItemStartPage.stories.tsx} +6 -4
  153. package/src/components/{WFOStartPage/WFOListItemStartPage.tsx → WfoStartPage/WfoListItemStartPage.tsx} +9 -6
  154. package/src/components/{WFOStartPage/WFOListStartPage.stories.tsx → WfoStartPage/WfoListStartPage.stories.tsx} +6 -4
  155. package/src/components/{WFOStartPage/WFOListStartPage.tsx → WfoStartPage/WfoListStartPage.tsx} +9 -6
  156. package/src/components/{WFOStartPage/WFOMultiListSection.stories.tsx → WfoStartPage/WfoMultiListSection.stories.tsx} +5 -4
  157. package/src/components/{WFOStartPage/WFOMultiListSection.tsx → WfoStartPage/WfoMultiListSection.tsx} +9 -6
  158. package/src/components/WfoStartPage/WfoNewProcessPanel.stories.tsx +13 -0
  159. package/src/components/{WFOStartPage/WFONewProcessPanel.tsx → WfoStartPage/WfoNewProcessPanel.tsx} +5 -3
  160. package/src/components/WfoStartPage/WfoStatCards.stories.tsx +13 -0
  161. package/src/components/{WFOStartPage/WFOStatCards.tsx → WfoStartPage/WfoStatCards.tsx} +6 -4
  162. package/src/components/WfoStartPage/index.ts +6 -0
  163. package/src/components/WfoStartTaskButtonComboBox/WfoStartTaskButtonComboBox.tsx +51 -0
  164. package/src/components/WfoStartTaskButtonComboBox/index.ts +1 -0
  165. package/src/components/WfoSubscription/SubscriptionKeyValueBlock.tsx +46 -0
  166. package/src/components/WfoSubscription/WfoProcessesTimeline.tsx +158 -0
  167. package/src/components/WfoSubscription/WfoRelatedSubscriptions.tsx +192 -0
  168. package/src/components/WfoSubscription/WfoSubscription.tsx +145 -0
  169. package/src/components/WfoSubscription/WfoSubscriptionActions.tsx +236 -0
  170. package/src/components/WfoSubscription/WfoSubscriptionDetailTree.tsx +161 -0
  171. package/src/components/WfoSubscription/WfoSubscriptionGeneral.tsx +147 -0
  172. package/src/components/WfoSubscription/WfoSubscriptionProductBlock.tsx +207 -0
  173. package/src/components/WfoSubscription/index.ts +8 -0
  174. package/src/components/WfoSubscription/styles.ts +104 -0
  175. package/src/components/WfoSubscription/utils/index.ts +1 -0
  176. package/src/components/WfoSubscription/utils/utils.spec.ts +168 -0
  177. package/src/components/WfoSubscription/utils/utils.ts +76 -0
  178. package/src/components/{WFOSubscriptionsList/WFOSubscriptionsList.tsx → WfoSubscriptionsList/WfoSubscriptionsList.tsx} +63 -57
  179. package/src/components/{WFOSubscriptionsList → WfoSubscriptionsList}/index.ts +1 -2
  180. package/src/components/{WFOSubscriptionsList → WfoSubscriptionsList}/mapGrapghQlSubscriptionsResultToSubscriptionListItems.ts +16 -7
  181. package/src/components/{WFOSubscriptionsList → WfoSubscriptionsList}/subscriptionListTabs.ts +18 -18
  182. package/src/components/WfoTable/WfoBasicTable/WfoBasicTable.tsx +178 -0
  183. package/src/components/{WFOTable/WFOSortDirectionIcon.tsx → WfoTable/WfoBasicTable/WfoSortDirectionIcon.tsx} +8 -8
  184. package/src/components/WfoTable/WfoBasicTable/WfoStatusColorField.tsx +21 -0
  185. package/src/components/WfoTable/WfoBasicTable/WfoTableHeaderCell.tsx +120 -0
  186. package/src/components/WfoTable/WfoBasicTable/index.ts +4 -0
  187. package/src/components/WfoTable/WfoBasicTable/styles.ts +73 -0
  188. package/src/components/{WFOTable/WFODataGridTable/WFODataGridTable.stories.tsx → WfoTable/WfoDataGridTable/WfoDataGridTable.stories.tsx} +9 -7
  189. package/src/components/{WFOTable/WFODataGridTable/WFODataGridTable.tsx → WfoTable/WfoDataGridTable/WfoDataGridTable.tsx} +23 -21
  190. package/src/components/{WFOTable/WFODataGridTable/WFOdataGridColumns.spec.ts → WfoTable/WfoDataGridTable/WfodataGridColumns.spec.ts} +7 -7
  191. package/src/components/{WFOTable/WFODataGridTable/WFOdataGridColumns.ts → WfoTable/WfoDataGridTable/WfodataGridColumns.ts} +8 -7
  192. package/src/components/WfoTable/WfoFirstPartUUID/WfoFirstPartUUID.tsx +11 -0
  193. package/src/components/WfoTable/WfoFirstPartUUID/index.ts +1 -0
  194. package/src/components/WfoTable/WfoSortButtons/WfoSortButton.tsx +31 -0
  195. package/src/components/WfoTable/WfoSortButtons/WfoSortButtons.tsx +33 -0
  196. package/src/components/WfoTable/WfoSortButtons/index.ts +2 -0
  197. package/src/components/WfoTable/WfoSortButtons/styles.ts +20 -0
  198. package/src/components/{WFOTable/WFOTableSettingsModal/WFOTableSettingsModal.tsx → WfoTable/WfoTableSettingsModal/WfoTableSettingsModal.tsx} +5 -3
  199. package/src/components/WfoTable/WfoTableSettingsModal/index.ts +1 -0
  200. package/src/components/WfoTable/WfoTableWithFilter/WfoTableWithFilter.tsx +253 -0
  201. package/src/components/WfoTable/WfoTableWithFilter/index.ts +1 -0
  202. package/src/components/WfoTable/index.ts +15 -0
  203. package/src/components/{WFOTable → WfoTable}/utils/columns.ts +27 -16
  204. package/src/components/{WFOTable → WfoTable}/utils/constants.ts +3 -1
  205. package/src/components/WfoTable/utils/mapSortableAndFilterableValuesToTableColumnConfig.spec.ts +52 -0
  206. package/src/components/WfoTable/utils/mapSortableAndFilterableValuesToTableColumnConfig.ts +21 -0
  207. package/src/components/{WFOTable → WfoTable}/utils/tableConfigPersistence.spec.ts +4 -4
  208. package/src/components/{WFOTable → WfoTable}/utils/tableConfigPersistence.ts +12 -16
  209. package/src/components/{WFOTable → WfoTable}/utils/tableUtils.spec.ts +1 -1
  210. package/src/components/{WFOTable → WfoTable}/utils/tableUtils.ts +6 -25
  211. package/src/components/WfoTimeline/WfoTimeline.tsx +69 -0
  212. package/src/components/WfoTimeline/WfoTimelineStep.tsx +57 -0
  213. package/src/components/WfoTimeline/index.ts +1 -0
  214. package/src/components/WfoTimeline/mapProcessStepStatusToEuiStepStatus.ts +23 -0
  215. package/src/components/WfoTimeline/styles.ts +165 -0
  216. package/src/components/WfoTimeline/timelineUtils.ts +14 -0
  217. package/src/components/WfoToastsList/WfoToastsList.tsx +22 -0
  218. package/src/components/WfoToastsList/index.ts +1 -0
  219. package/src/components/WfoTree/WfoTree.tsx +27 -0
  220. package/src/components/{WFOTree/WFOTreeBranch.tsx → WfoTree/WfoTreeBranch.tsx} +7 -6
  221. package/src/components/{WFOTree/WFOTreeNode.tsx → WfoTree/WfoTreeNode.tsx} +28 -13
  222. package/src/components/WfoTree/index.ts +4 -0
  223. package/src/components/WfoTree/styles.ts +18 -0
  224. package/src/components/WfoTree/treeUtils.spec.ts +100 -0
  225. package/src/components/WfoTree/treeUtils.ts +21 -0
  226. package/src/components/WfoWorkflowSteps/WfoStep/WfoStep.stories.tsx +13 -0
  227. package/src/components/WfoWorkflowSteps/WfoStep/WfoStep.tsx +167 -0
  228. package/src/components/WfoWorkflowSteps/WfoStep/index.ts +1 -0
  229. package/src/components/WfoWorkflowSteps/WfoStepList/WfoStepList.tsx +107 -0
  230. package/src/components/WfoWorkflowSteps/WfoStepList/index.ts +1 -0
  231. package/src/components/WfoWorkflowSteps/WfoStepStatusIcon/WfoStepStatusIcon.stories.tsx +16 -0
  232. package/src/components/WfoWorkflowSteps/WfoStepStatusIcon/WfoStepStatusIcon.tsx +114 -0
  233. package/src/components/WfoWorkflowSteps/WfoStepStatusIcon/index.ts +1 -0
  234. package/src/components/WfoWorkflowSteps/WfoWorkflowStepList/WfoStepListHeader.tsx +139 -0
  235. package/src/components/WfoWorkflowSteps/WfoWorkflowStepList/WfoWorkflowStepList.stories.tsx +56 -0
  236. package/src/components/WfoWorkflowSteps/WfoWorkflowStepList/WfoWorkflowStepList.tsx +121 -0
  237. package/src/components/WfoWorkflowSteps/WfoWorkflowStepList/index.ts +2 -0
  238. package/src/components/WfoWorkflowSteps/index.ts +4 -0
  239. package/src/components/WfoWorkflowSteps/stepListUtils.spec.ts +26 -0
  240. package/src/components/WfoWorkflowSteps/stepListUtils.ts +56 -0
  241. package/src/components/WfoWorkflowSteps/styles.ts +121 -0
  242. package/src/components/confirmationDialog/ConfirmationDialogStyling.ts +12 -0
  243. package/src/components/confirmationDialog/WfoConfirmationDialog.tsx +112 -0
  244. package/src/components/confirmationDialog/index.ts +1 -0
  245. package/src/components/index.ts +19 -11
  246. package/src/contexts/ApiClientContext.tsx +30 -0
  247. package/src/contexts/ConfirmationDialogProvider.tsx +99 -0
  248. package/src/contexts/OrchestratorConfigContext.tsx +8 -3
  249. package/src/contexts/ToastContext.tsx +136 -0
  250. package/src/contexts/TreeContext.tsx +53 -32
  251. package/src/contexts/index.ts +3 -1
  252. package/src/graphqlQueries/customersQuery.ts +19 -0
  253. package/src/graphqlQueries/index.ts +4 -0
  254. package/src/graphqlQueries/processDetailQuery.ts +45 -0
  255. package/src/graphqlQueries/processListQuery.ts +17 -7
  256. package/src/graphqlQueries/productBlocksQuery.ts +13 -1
  257. package/src/graphqlQueries/productsQuery.ts +5 -1
  258. package/src/graphqlQueries/relatedSubscriptionsQuery.ts +65 -0
  259. package/src/graphqlQueries/resourceTypesQuery.ts +13 -2
  260. package/src/graphqlQueries/subscriptionDetailQuery.ts +62 -0
  261. package/src/graphqlQueries/subscriptionsDropdownOptionsQuery.ts +47 -0
  262. package/src/graphqlQueries/subscriptionsListQuery.ts +4 -0
  263. package/src/graphqlQueries/{workflowsQuery.ts → workflows/workflowsQuery.ts} +9 -3
  264. package/src/graphqlQueries/workflows/workflowsQueryForDropdownList.ts +41 -0
  265. package/src/hooks/DataFetchHooks.ts +72 -49
  266. package/src/hooks/ProcessesHooks/useDeleteProcess.ts +37 -0
  267. package/src/hooks/index.ts +4 -1
  268. package/src/hooks/surf/useGetSubscriptionDropdownOptions.ts +47 -0
  269. package/src/hooks/surf/useIsTaggedPort.ts +29 -0
  270. package/src/hooks/useDataDisplayParams.ts +1 -1
  271. package/src/hooks/useEngineStatusQuery.ts +20 -10
  272. package/src/hooks/useOrchestratorConfig.ts +6 -2
  273. package/src/hooks/useProcessStatusCountsQuery.ts +8 -23
  274. package/src/hooks/useQueryWithFetch.ts +33 -0
  275. package/src/hooks/useQueryWithGraphql.ts +18 -13
  276. package/src/hooks/useSessionWithToken.ts +14 -0
  277. package/src/hooks/useStoredTableConfig.ts +43 -0
  278. package/src/hooks/useSubscriptionActions.ts +3 -3
  279. package/src/hooks/useToastMessage.ts +5 -0
  280. package/src/hooks/useWithOrchestratorTheme.ts +10 -0
  281. package/src/icons/WfoArrowNarrowDown.stories.tsx +13 -0
  282. package/src/icons/{WFOArrowNarrowDown.tsx → WfoArrowNarrowDown.tsx} +4 -2
  283. package/src/icons/WfoArrowNarrowUp.stories.tsx +13 -0
  284. package/src/icons/{WFOArrowNarrowUp.tsx → WfoArrowNarrowUp.tsx} +4 -2
  285. package/src/icons/WfoArrowsExpand.stories.tsx +13 -0
  286. package/src/icons/WfoArrowsExpand.tsx +33 -0
  287. package/src/icons/WfoCheckmarkCircleFill.stories.tsx +13 -0
  288. package/src/icons/{WFOCheckmarkCircleFill.tsx → WfoCheckmarkCircleFill.tsx} +3 -2
  289. package/src/icons/WfoChevronDown.stories.tsx +13 -0
  290. package/src/icons/{WFOChevronDown.tsx → WfoChevronDown.tsx} +3 -2
  291. package/src/icons/WfoChevronUp.stories.tsx +13 -0
  292. package/src/icons/WfoChevronUp.tsx +33 -0
  293. package/src/icons/WfoClipboardCopy.stories.tsx +13 -0
  294. package/src/icons/WfoClipboardCopy.tsx +33 -0
  295. package/src/icons/WfoCode.stories.tsx +13 -0
  296. package/src/icons/WfoCode.tsx +35 -0
  297. package/src/icons/WfoCogFill.stories.tsx +13 -0
  298. package/src/icons/WfoCogFill.tsx +35 -0
  299. package/src/icons/WfoEyeFill.stories.tsx +13 -0
  300. package/src/icons/WfoEyeFill.tsx +35 -0
  301. package/src/icons/{WFOIconProps.ts → WfoIconProps.ts} +1 -1
  302. package/src/icons/WfoLogoutIcon.stories.tsx +13 -0
  303. package/src/icons/{WFOLogoutIcon.tsx → WfoLogoutIcon.tsx} +3 -2
  304. package/src/icons/WfoMinusCircleFill.stories.tsx +13 -0
  305. package/src/icons/WfoMinusCircleFill.tsx +33 -0
  306. package/src/icons/WfoMinusCircleOutline.stories.tsx +13 -0
  307. package/src/icons/{WFOMinusCircleOutline.tsx → WfoMinusCircleOutline.tsx} +3 -2
  308. package/src/icons/WfoPencilAlt.stories.tsx +13 -0
  309. package/src/icons/WfoPencilAlt.tsx +33 -0
  310. package/src/icons/WfoPlayFill.stories.tsx +13 -0
  311. package/src/icons/WfoPlayFill.tsx +35 -0
  312. package/src/icons/WfoPlusCircleFill.stories.tsx +13 -0
  313. package/src/icons/{WFOPlusCircleFill.tsx → WfoPlusCircleFill.tsx} +3 -2
  314. package/src/icons/WfoRefresh.stories.tsx +13 -0
  315. package/src/icons/WfoRefresh.tsx +35 -0
  316. package/src/icons/WfoSearchStrikethrough.stories.tsx +13 -0
  317. package/src/icons/WfoSearchStrikethrough.tsx +33 -0
  318. package/src/icons/WfoSortAsc.stories.tsx +13 -0
  319. package/src/icons/WfoSortAsc.tsx +33 -0
  320. package/src/icons/WfoSortDesc.stories.tsx +13 -0
  321. package/src/icons/WfoSortDesc.tsx +33 -0
  322. package/src/icons/WfoStatistic.tsx +41 -0
  323. package/src/icons/WfoStatusDotIcon.stories.tsx +13 -0
  324. package/src/icons/{WFOStatusDotIcon.tsx → WfoStatusDotIcon.tsx} +3 -2
  325. package/src/icons/WfoXCircleFill.stories.tsx +13 -0
  326. package/src/icons/{WFOXCircleFill.tsx → WfoXCircleFill.tsx} +3 -2
  327. package/src/icons/index.ts +22 -10
  328. package/src/index.ts +1 -0
  329. package/src/messages/en-US.json +173 -20
  330. package/src/messages/getTranslationMessages.spec.ts +1 -1
  331. package/src/messages/getTranslationMessages.ts +1 -1
  332. package/src/messages/nl-NL.json +177 -22
  333. package/src/pages/index.ts +2 -0
  334. package/src/pages/metadata/{WFOMetadataPageLayout.tsx → WfoMetadataPageLayout.tsx} +5 -3
  335. package/src/pages/metadata/WfoProductBlocksPage.tsx +239 -0
  336. package/src/pages/metadata/{WFOProductsPage.tsx → WfoProductsPage.tsx} +96 -54
  337. package/src/pages/metadata/WfoResourceTypesPage.tsx +185 -0
  338. package/src/pages/metadata/WfoWorkflowsPage.tsx +194 -0
  339. package/src/pages/metadata/index.ts +4 -4
  340. package/src/pages/metadata/workflowListObjectMapper.ts +43 -0
  341. package/src/pages/processes/WfoProcessDetail.tsx +327 -0
  342. package/src/pages/processes/WfoProcessDetailPage.tsx +88 -0
  343. package/src/pages/processes/WfoProcessListPage.tsx +106 -0
  344. package/src/pages/processes/WfoProcessListSubscriptionsCell.tsx +72 -0
  345. package/src/pages/processes/getProcessListTabTypeFromString.ts +6 -6
  346. package/src/pages/processes/index.ts +3 -2
  347. package/src/pages/processes/tabConfig.ts +28 -10
  348. package/src/pages/processes/timelineUtils.spec.ts +202 -0
  349. package/src/pages/processes/timelineUtils.ts +113 -0
  350. package/src/pages/subscriptions/WfoSubscriptionDetailPage.tsx +19 -0
  351. package/src/pages/subscriptions/{WFOSubscriptionsListPage.tsx → WfoSubscriptionsListPage.tsx} +40 -20
  352. package/src/pages/subscriptions/index.ts +2 -1
  353. package/src/pages/tasks/WfoTaskListPage.tsx +120 -0
  354. package/src/pages/tasks/index.ts +1 -0
  355. package/src/pages/workflow/WfoStartWorkflowPage.tsx +176 -0
  356. package/src/pages/workflow/index.ts +1 -0
  357. package/src/stories/Button.jsx +45 -39
  358. package/src/stories/Configure.mdx +48 -43
  359. package/src/stories/Header.jsx +59 -45
  360. package/src/stories/Page.jsx +81 -60
  361. package/src/stories/Page.stories.js +2 -1
  362. package/src/stories/button.css +18 -18
  363. package/src/stories/colors.mdx +12 -0
  364. package/src/stories/colors.tsx +27 -0
  365. package/src/stories/header.css +18 -18
  366. package/src/stories/page.css +40 -40
  367. package/src/theme/defaultOrchestratorTheme.ts +16 -0
  368. package/src/types/forms.ts +40 -0
  369. package/src/types/index.ts +0 -1
  370. package/src/types/types.ts +283 -73
  371. package/src/utils/date.spec.ts +157 -5
  372. package/src/utils/date.ts +66 -5
  373. package/src/utils/environmentVariables.spec.ts +17 -0
  374. package/src/utils/environmentVariables.ts +12 -0
  375. package/src/utils/getDefaultTableConfig.ts +101 -0
  376. package/src/utils/getProductNamesFromProcess.spec.ts +133 -0
  377. package/src/utils/getProductNamesFromProcess.ts +16 -0
  378. package/src/utils/getTokenName.ts +2 -1
  379. package/src/utils/index.ts +2 -0
  380. package/src/utils/string.spec.ts +24 -1
  381. package/src/utils/strings.ts +5 -0
  382. package/tsconfig.build.json +18 -0
  383. package/tsconfig.json +8 -2
  384. package/src/components/WFOBadges/WFOBadge/index.ts +0 -1
  385. package/src/components/WFOBadges/WFOEngineStatusBadge/index.ts +0 -1
  386. package/src/components/WFOBadges/WFOEnvironmentBadge/index.ts +0 -1
  387. package/src/components/WFOBadges/WFOFailedTasksBadge/WFOFailedTasksBadge.stories.tsx +0 -12
  388. package/src/components/WFOBadges/WFOFailedTasksBadge/WFOFailedTasksBadge.tsx +0 -63
  389. package/src/components/WFOBadges/WFOFailedTasksBadge/index.ts +0 -1
  390. package/src/components/WFOBadges/WFOHeaderBadge/index.ts +0 -1
  391. package/src/components/WFOBadges/WFOProcessStatusBadge/index.ts +0 -1
  392. package/src/components/WFOBadges/WFOProductBlockBadge/WFOProductBlockBadge.stories.tsx +0 -15
  393. package/src/components/WFOBadges/WFOProductBlockBadge/WFOProductBlockBadge.tsx +0 -22
  394. package/src/components/WFOBadges/WFOProductBlockBadge/index.ts +0 -1
  395. package/src/components/WFOBadges/WFOSubscriptionStatusBadge/index.ts +0 -1
  396. package/src/components/WFOBadges/index.ts +0 -8
  397. package/src/components/WFOFilterTabs/index.ts +0 -1
  398. package/src/components/WFOLoading/WFOLoading.tsx +0 -2
  399. package/src/components/WFOLoading/index.ts +0 -1
  400. package/src/components/WFOPageTemplate/WFOBreadcrumbs/index.ts +0 -1
  401. package/src/components/WFOPageTemplate/WFOPageHeader/index.ts +0 -1
  402. package/src/components/WFOPageTemplate/WFOPageTemplate/index.ts +0 -1
  403. package/src/components/WFOPageTemplate/WFOSidebar/WFOSidebar.tsx +0 -161
  404. package/src/components/WFOPageTemplate/WFOSidebar/index.ts +0 -1
  405. package/src/components/WFOPageTemplate/index.ts +0 -4
  406. package/src/components/WFOSearchBar/index.ts +0 -1
  407. package/src/components/WFOSettingsModal/index.tsx +0 -1
  408. package/src/components/WFOSettingsPage/index.ts +0 -1
  409. package/src/components/WFOStartPage/WFONewProcessPanel.stories.tsx +0 -12
  410. package/src/components/WFOStartPage/WFOStatCards.stories.tsx +0 -12
  411. package/src/components/WFOStartPage/index.ts +0 -6
  412. package/src/components/WFOSubscription/WFOFixedInputBlock.tsx +0 -58
  413. package/src/components/WFOSubscription/WFOProcessesTimeline.tsx +0 -105
  414. package/src/components/WFOSubscription/WFOProductBlock.tsx +0 -186
  415. package/src/components/WFOSubscription/WFOSubscriptionActions.tsx +0 -138
  416. package/src/components/WFOSubscription/WFOSubscriptionBlock.tsx +0 -109
  417. package/src/components/WFOSubscription/WFOSubscriptionDetailTree.tsx +0 -184
  418. package/src/components/WFOSubscription/WFOSubscriptionGeneral.tsx +0 -53
  419. package/src/components/WFOSubscription/index.ts +0 -7
  420. package/src/components/WFOSubscription/styles.ts +0 -18
  421. package/src/components/WFOSubscriptionsList/types.ts +0 -11
  422. package/src/components/WFOTable/WFOTable.tsx +0 -85
  423. package/src/components/WFOTable/WFOTableHeaderCell.tsx +0 -30
  424. package/src/components/WFOTable/WFOTableSettingsModal/index.ts +0 -1
  425. package/src/components/WFOTable/WFOTableWithFilter/WFOTableWithFilter.tsx +0 -174
  426. package/src/components/WFOTable/WFOTableWithFilter/index.ts +0 -1
  427. package/src/components/WFOTable/index.ts +0 -14
  428. package/src/components/WFOTree/WFOTree.tsx +0 -16
  429. package/src/contexts/SubscriptionContext.tsx +0 -72
  430. package/src/hooks/useSubscriptionProcesses.ts +0 -45
  431. package/src/icons/WFOCheckmarkCircleFill.stories.tsx +0 -12
  432. package/src/icons/WFOLogoutIcon.stories.tsx +0 -12
  433. package/src/icons/WFOMinusCircleOutline.stories.tsx +0 -12
  434. package/src/icons/WFOPlusCircleFill.stories.tsx +0 -12
  435. package/src/icons/WFOStatusDotIcon.stories.tsx +0 -12
  436. package/src/icons/WFOXCircleFill.stories.tsx +0 -12
  437. package/src/pages/metadata/WFOProductBlocksPage.tsx +0 -166
  438. package/src/pages/metadata/WFOResourceTypesPage.tsx +0 -120
  439. package/src/pages/metadata/WFOWorkflowsPage.tsx +0 -251
  440. package/src/pages/processes/WFOProcessListPage.tsx +0 -213
  441. package/src/pages/processes/WFOProcessesListSubscriptionsCell.tsx +0 -28
  442. package/src/pages/processes/tableConfig.ts +0 -22
  443. package/src/types/subscription.ts +0 -21
  444. package/src/components/{WFOTable → WfoTable}/utils/columns.spec.ts +1 -1
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright 2019-2023 SURF.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS,
10
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the License for the specific language governing permissions and
12
+ * limitations under the License.
13
+ *
14
+ */
15
+ import React from 'react';
16
+
17
+ import { filterDOMProps, useForm } from 'uniforms';
18
+
19
+ import { FieldProps } from '../../../types/forms';
20
+
21
+ export type SubmitFieldProps = FieldProps<
22
+ null,
23
+ object,
24
+ HTMLInputElement,
25
+ HTMLInputElement
26
+ >;
27
+
28
+ // onChange not used on purpose
29
+ export const SubmitField = ({
30
+ disabled,
31
+ inputRef,
32
+ readOnly,
33
+ value,
34
+ ...props
35
+ }: SubmitFieldProps) => {
36
+ const { error, state } = useForm();
37
+
38
+ return (
39
+ <input
40
+ disabled={
41
+ disabled === undefined ? !!(error || state.disabled) : disabled
42
+ }
43
+ readOnly={readOnly}
44
+ ref={inputRef}
45
+ type="submit"
46
+ {...(value ? { value } : {})}
47
+ {...filterDOMProps(props)}
48
+ />
49
+ );
50
+ };
@@ -0,0 +1,351 @@
1
+ /*
2
+ * Copyright 2019-2023 SURF.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS,
10
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the License for the specific language governing permissions and
12
+ * limitations under the License.
13
+ *
14
+ */
15
+ import React from 'react';
16
+ import ReactSelect from 'react-select';
17
+
18
+ import get from 'lodash/get';
19
+ import { useTranslations } from 'next-intl';
20
+ import {
21
+ connectField,
22
+ filterDOMProps,
23
+ joinName,
24
+ useField,
25
+ useForm,
26
+ } from 'uniforms';
27
+
28
+ import {
29
+ EuiButtonIcon,
30
+ EuiFlexGroup,
31
+ EuiFlexItem,
32
+ EuiFormRow,
33
+ EuiText,
34
+ } from '@elastic/eui';
35
+
36
+ import { useOrchestratorTheme } from '../../../hooks';
37
+ import { useGetSubscriptionDropdownOptions } from '../../../hooks/surf/useGetSubscriptionDropdownOptions';
38
+ import { SubscriptionDropdownOption } from '../../../types';
39
+ import { subscriptionFieldStyling } from './SubscriptionFieldStyling';
40
+ import { getReactSelectInnerComponentStyles } from './reactSelectStyles';
41
+ import { PortMode, ProductTag } from './surf/types';
42
+ import { FieldProps, Option } from './types';
43
+ import { getPortMode } from './utils';
44
+
45
+ declare module 'uniforms' {
46
+ interface FilterDOMProps {
47
+ excludedSubscriptionIds: never;
48
+ organisationId: never;
49
+ organisationKey: never;
50
+ visiblePortMode: never;
51
+ bandwidth: never;
52
+ bandwidthKey: never;
53
+ tags: never;
54
+ statuses: never;
55
+ }
56
+ }
57
+ filterDOMProps.register(
58
+ 'productIds',
59
+ 'excludedSubscriptionIds',
60
+ 'organisationId',
61
+ 'organisationKey',
62
+ 'visiblePortMode',
63
+ 'bandwidth',
64
+ 'bandwidthKey',
65
+ 'tags',
66
+ 'statuses',
67
+ );
68
+
69
+ export type SubscriptionFieldProps = FieldProps<
70
+ string,
71
+ {
72
+ productIds?: string[];
73
+ excludedSubscriptionIds?: string[];
74
+ organisationId?: string;
75
+ organisationKey?: string;
76
+ visiblePortMode?: string;
77
+ bandwidth?: number;
78
+ bandwidthKey?: string;
79
+ tags?: string[]; // There is an assumption that using tags means you want port subscriptions
80
+ statuses?: string[];
81
+ }
82
+ >;
83
+
84
+ function SubscriptionFieldDefinition({
85
+ disabled,
86
+ id,
87
+ label,
88
+ description,
89
+ name,
90
+ onChange,
91
+ readOnly,
92
+ value,
93
+ error,
94
+ showInlineError,
95
+ errorMessage,
96
+ className = '',
97
+ productIds = [],
98
+ excludedSubscriptionIds = [],
99
+ organisationId,
100
+ organisationKey,
101
+ visiblePortMode = 'all',
102
+ bandwidth,
103
+ bandwidthKey,
104
+ tags,
105
+ statuses,
106
+ ...props
107
+ }: SubscriptionFieldProps) {
108
+ const t = useTranslations('pydanticForms');
109
+ const { theme } = useOrchestratorTheme();
110
+ // React select allows callbacks to supply style for innercomponents: https://react-select.com/styles#inner-components
111
+ const reactSelectInnerComponentStyles =
112
+ getReactSelectInnerComponentStyles(theme);
113
+
114
+ const { refetch, subscriptions, isFetching } =
115
+ useGetSubscriptionDropdownOptions(tags, statuses);
116
+
117
+ const nameArray = joinName(null, name);
118
+ let parentName = joinName(nameArray.slice(0, -1));
119
+
120
+ // We cant call useField conditionally so we call it for ourself if there is no parent
121
+ if (parentName === '') {
122
+ parentName = name;
123
+ }
124
+
125
+ const parent = useField(parentName, {}, { absoluteName: true })[0];
126
+
127
+ const { model, schema } = useForm();
128
+
129
+ const bandWithFromField = bandwidthKey
130
+ ? get(model, bandwidthKey!) || schema.getInitialValue(bandwidthKey, {})
131
+ : undefined;
132
+
133
+ const usedBandwidth = bandwidth || bandWithFromField;
134
+
135
+ // Get value from org field if organisationKey is set.
136
+ const usedOrganisationId = organisationKey
137
+ ? get(model, organisationKey, 'nonExistingOrgToFilterEverything')
138
+ : organisationId;
139
+
140
+ const makeLabel = (subscription: SubscriptionDropdownOption) => {
141
+ const description =
142
+ subscription.description ||
143
+ t('widgets.subscription.missingDescription');
144
+ const subscriptionSubstring = subscription.subscriptionId.substring(
145
+ 0,
146
+ 8,
147
+ );
148
+
149
+ if (['Node'].includes(subscription.product.tag)) {
150
+ const description =
151
+ subscription.description ||
152
+ t('widgets.subscription.missingDescription');
153
+ return `${subscription.subscriptionId.substring(
154
+ 0,
155
+ 8,
156
+ )} ${description.trim()}`;
157
+ } else if (
158
+ [
159
+ ProductTag.SP,
160
+ ProductTag.SPNL,
161
+ ProductTag.AGGSP,
162
+ ProductTag.AGGSPNL,
163
+ ProductTag.MSC,
164
+ ProductTag.MSCNL,
165
+ ProductTag.IRBSP,
166
+ ].includes(subscription.product.tag as ProductTag)
167
+ ) {
168
+ const portMode = getPortMode(subscription.productBlockInstances);
169
+ return `${subscriptionSubstring} ${portMode?.toUpperCase()} ${description.trim()} ${subscription
170
+ .customer?.fullname}`;
171
+ } else {
172
+ return description.trim();
173
+ }
174
+ };
175
+
176
+ // Filter by product, needed because getSubscriptions might return more than we want
177
+ const getSubscriptionOptions = (): Option[] => {
178
+ const filteredSubscriptions = subscriptions?.filter((subscription) => {
179
+ // NOTE: useBandWith, productIds and tags need to be checked in this order as per the V1 logic
180
+
181
+ // If a bandwidth filter is supplied it needs to be applied to the subscription product
182
+ if (usedBandwidth) {
183
+ const portSpeedInput = subscription.fixedInputs.find(
184
+ (fixedInput) => fixedInput.field === 'port_speed',
185
+ );
186
+ if (
187
+ portSpeedInput &&
188
+ parseInt(portSpeedInput.value.toString(), 10) <
189
+ parseInt(usedBandwidth.toString(), 10)
190
+ ) {
191
+ return false;
192
+ }
193
+ }
194
+
195
+ // If specific productIds are provided the subscriptions needs to have one of those
196
+ if (
197
+ !usedBandwidth &&
198
+ productIds &&
199
+ productIds.length > 0 &&
200
+ !productIds.includes(subscription.product.productId)
201
+ ) {
202
+ return false;
203
+ }
204
+
205
+ if (
206
+ !usedBandwidth &&
207
+ !productIds &&
208
+ tags &&
209
+ tags?.length > 0 &&
210
+ !tags.includes(subscription.product.tag)
211
+ ) {
212
+ return false;
213
+ }
214
+
215
+ // If specific subscriptionIds are excluded the subscription can't be one ot those
216
+ if (
217
+ excludedSubscriptionIds &&
218
+ excludedSubscriptionIds.length > 0 &&
219
+ excludedSubscriptionIds.includes(subscription.subscriptionId)
220
+ ) {
221
+ return false;
222
+ }
223
+
224
+ // If a Port mode filter is applied we need to filter on that
225
+ if (visiblePortMode !== 'all') {
226
+ const portMode = getPortMode(
227
+ subscription.productBlockInstances,
228
+ );
229
+ // For normal mode filter out all subscriptions that don't have tagged or untagged ports
230
+ if (
231
+ visiblePortMode === 'normal' &&
232
+ ![PortMode.TAGGED, PortMode.UNTAGGED, undefined].includes(
233
+ portMode,
234
+ )
235
+ ) {
236
+ return false;
237
+ } else if (portMode !== visiblePortMode) {
238
+ return false;
239
+ }
240
+ }
241
+
242
+ // If a customer/organisation filter is applied we need to filter on that
243
+ if (
244
+ usedOrganisationId &&
245
+ subscription.customer?.identifier !== usedOrganisationId
246
+ ) {
247
+ return false;
248
+ }
249
+
250
+ if (parentName !== name) {
251
+ if (
252
+ parent.fieldType === Array &&
253
+ // @ts-ignore
254
+ parent.uniqueItems
255
+ ) {
256
+ const allValues: string[] = get(model, parentName, []);
257
+ const chosenValues = allValues.filter(
258
+ (_item, index) =>
259
+ index.toString() !==
260
+ nameArray[nameArray.length - 1],
261
+ );
262
+ if (!chosenValues.includes(subscription.subscriptionId)) {
263
+ return false;
264
+ }
265
+ }
266
+ }
267
+
268
+ return true;
269
+ });
270
+
271
+ return filteredSubscriptions
272
+ ? filteredSubscriptions.map((subscription) => ({
273
+ label: makeLabel(subscription),
274
+ value: subscription.subscriptionId,
275
+ }))
276
+ : [];
277
+ };
278
+
279
+ const options = getSubscriptionOptions();
280
+ const selectedValue = options.find(
281
+ (option: Option) => option.value === value,
282
+ );
283
+
284
+ const isDisabled = disabled || readOnly || isFetching;
285
+
286
+ return (
287
+ <EuiFlexItem css={subscriptionFieldStyling} grow={1}>
288
+ <section
289
+ {...filterDOMProps(props)}
290
+ className={`${className} subscription-field${
291
+ disabled ? '-disabled' : ''
292
+ }`}
293
+ >
294
+ <EuiFormRow
295
+ label={label}
296
+ labelAppend={<EuiText size="m">{description}</EuiText>}
297
+ error={showInlineError ? errorMessage : false}
298
+ isInvalid={error}
299
+ id={id}
300
+ fullWidth
301
+ >
302
+ <div>
303
+ {!disabled && (
304
+ <EuiFlexGroup
305
+ alignItems={'center'}
306
+ gutterSize={'none'}
307
+ responsive={false}
308
+ >
309
+ <EuiButtonIcon
310
+ className="reload-subscriptions-icon-button"
311
+ id={`refresh-icon-${id}`}
312
+ aria-label={`reload-${label}`}
313
+ iconType="refresh"
314
+ iconSize="l"
315
+ disabled={isDisabled}
316
+ onClick={() => {
317
+ !isDisabled ? refetch() : null;
318
+ }}
319
+ />
320
+ </EuiFlexGroup>
321
+ )}
322
+ <ReactSelect<Option, false>
323
+ id={id}
324
+ inputId={`${id}.search`}
325
+ name={name}
326
+ onChange={(option) => {
327
+ onChange(option?.value);
328
+ }}
329
+ options={options}
330
+ value={isDisabled ? null : selectedValue}
331
+ isSearchable={true}
332
+ isClearable={false}
333
+ placeholder={
334
+ isFetching
335
+ ? t('widgets.subscription.loading')
336
+ : t('widgets.subscription.placeholder')
337
+ }
338
+ isDisabled={isDisabled}
339
+ styles={reactSelectInnerComponentStyles}
340
+ className="subscription-field-select"
341
+ />
342
+ </div>
343
+ </EuiFormRow>
344
+ </section>
345
+ </EuiFlexItem>
346
+ );
347
+ }
348
+
349
+ export const SubscriptionField = connectField(SubscriptionFieldDefinition, {
350
+ kind: 'leaf',
351
+ });
@@ -0,0 +1,33 @@
1
+ import { css } from '@emotion/react';
2
+
3
+ export const subscriptionFieldStyling = css`
4
+ .subscription-field {
5
+ > div {
6
+ display: flex;
7
+
8
+ .subscription-field-select {
9
+ width: 100%;
10
+ margin-left: 5px;
11
+ }
12
+ }
13
+
14
+ .euiFormRow > .euiFormRow__fieldWrapper > div {
15
+ display: flex;
16
+ }
17
+ }
18
+
19
+ // Setup sensible margins for port selectors
20
+ .subscription-field-disabled {
21
+ > div {
22
+ display: flex;
23
+ .subscription-field-select {
24
+ margin-left: 0px;
25
+ margin-top: 5px;
26
+ }
27
+ }
28
+ }
29
+
30
+ .reload-subscriptions-icon-button {
31
+ margin-left: -7px;
32
+ }
33
+ `;
@@ -0,0 +1,75 @@
1
+ /*
2
+ * Copyright 2019-2023 SURF.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS,
10
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the License for the specific language governing permissions and
12
+ * limitations under the License.
13
+ *
14
+ */
15
+ import React from 'react';
16
+
17
+ import { connectField, filterDOMProps } from 'uniforms';
18
+
19
+ import { EuiFormRow, EuiText } from '@elastic/eui';
20
+
21
+ import { GET_SUBSCRIPTION_DETAIL_GRAPHQL_QUERY } from '../../../graphqlQueries';
22
+ import { useQueryWithGraphql } from '../../../hooks';
23
+ import { WfoLoading } from '../../WfoLoading';
24
+ import { WfoSubscriptionGeneral } from '../../WfoSubscription';
25
+ import { FieldProps } from './types';
26
+
27
+ export type SubscriptionSummaryFieldProps = FieldProps<string>;
28
+
29
+ interface SubscriptionSummaryDisplayProps {
30
+ subscriptionId: string;
31
+ }
32
+
33
+ const SubscriptionSummaryDisplay = ({
34
+ subscriptionId,
35
+ }: SubscriptionSummaryDisplayProps) => {
36
+ const { data } = useQueryWithGraphql(
37
+ GET_SUBSCRIPTION_DETAIL_GRAPHQL_QUERY,
38
+ { subscriptionId },
39
+ `subscription-${subscriptionId}`,
40
+ );
41
+ const subscriptionDetail = data?.subscriptions.page[0];
42
+
43
+ return (
44
+ (subscriptionDetail && (
45
+ <WfoSubscriptionGeneral subscriptionDetail={subscriptionDetail} />
46
+ )) || <WfoLoading />
47
+ );
48
+ };
49
+
50
+ const SubscriptionSummary = ({
51
+ id,
52
+ value,
53
+ description,
54
+ ...props
55
+ }: SubscriptionSummaryFieldProps) => {
56
+ if (!value) {
57
+ return null;
58
+ }
59
+
60
+ return (
61
+ <section {...filterDOMProps(props)}>
62
+ <EuiFormRow
63
+ id={id}
64
+ labelAppend={<EuiText size="m">{description}</EuiText>}
65
+ fullWidth
66
+ >
67
+ <SubscriptionSummaryDisplay subscriptionId={value} />
68
+ </EuiFormRow>
69
+ </section>
70
+ );
71
+ };
72
+
73
+ export const SubscriptionSummaryField = connectField(SubscriptionSummary, {
74
+ kind: 'leaf',
75
+ });
@@ -0,0 +1,71 @@
1
+ /*
2
+ * Copyright 2019-2023 SURF.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS,
10
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the License for the specific language governing permissions and
12
+ * limitations under the License.
13
+ *
14
+ */
15
+ import React from 'react';
16
+
17
+ import { connectField, filterDOMProps } from 'uniforms';
18
+
19
+ import { EuiFieldText, EuiFormRow, EuiText } from '@elastic/eui';
20
+
21
+ import { FieldProps } from '../../../types/forms';
22
+
23
+ export type TextFieldProps = FieldProps<string>;
24
+
25
+ function Text({
26
+ autoComplete,
27
+ disabled,
28
+ id,
29
+ label,
30
+ description,
31
+ name,
32
+ onChange,
33
+ placeholder,
34
+ readOnly,
35
+ type,
36
+ value,
37
+ error,
38
+ showInlineError,
39
+ errorMessage,
40
+ ...props
41
+ }: TextFieldProps) {
42
+ return (
43
+ <section {...filterDOMProps(props)}>
44
+ <EuiFormRow
45
+ label={label}
46
+ labelAppend={<EuiText size="m">{description}</EuiText>}
47
+ error={showInlineError ? errorMessage : false}
48
+ isInvalid={error}
49
+ id={id}
50
+ fullWidth
51
+ >
52
+ <EuiFieldText
53
+ autoComplete={autoComplete}
54
+ disabled={disabled}
55
+ name={name}
56
+ isInvalid={error}
57
+ onChange={(event) => onChange(event.target.value)}
58
+ placeholder={placeholder}
59
+ readOnly={readOnly}
60
+ type={type}
61
+ value={value ?? ''}
62
+ fullWidth
63
+ />
64
+ </EuiFormRow>
65
+ </section>
66
+ );
67
+ }
68
+
69
+ Text.defaultProps = { type: 'text' };
70
+
71
+ export const TextField = connectField(Text, { kind: 'leaf' });
@@ -0,0 +1,103 @@
1
+ /*
2
+ * Copyright 2019-2023 SURF.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS,
10
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ * See the License for the specific language governing permissions and
12
+ * limitations under the License.
13
+ *
14
+ */
15
+ import React from 'react';
16
+
17
+ import moment, { Moment } from 'moment-timezone';
18
+ import { connectField, filterDOMProps } from 'uniforms';
19
+
20
+ import { EuiDatePicker, EuiFormRow, EuiText } from '@elastic/eui';
21
+
22
+ import { FieldProps } from './types';
23
+
24
+ export function utcTimestampToLocalMoment(utc_timestamp: number) {
25
+ // Convert UTC timestamp to localized Moment object
26
+ return moment
27
+ .unix(utc_timestamp)
28
+ .tz(moment.tz.guess() ?? 'Europe/Amsterdam');
29
+ }
30
+
31
+ export function localMomentToUtcTimestamp(local_moment: Moment) {
32
+ // Convert localized Moment object to UTC timestamp
33
+ return local_moment.unix();
34
+ }
35
+
36
+ export type TimestampFieldProps = FieldProps<
37
+ number,
38
+ {
39
+ max?: number;
40
+ min?: number;
41
+ showTimeSelect: boolean;
42
+ locale?: string;
43
+ dateFormat?: string;
44
+ timeFormat?: string;
45
+ }
46
+ >;
47
+
48
+ function Timestamp({
49
+ disabled,
50
+ id,
51
+ label,
52
+ description,
53
+ max,
54
+ min,
55
+ showTimeSelect,
56
+ locale,
57
+ dateFormat,
58
+ timeFormat,
59
+ onChange,
60
+ value,
61
+ error,
62
+ showInlineError,
63
+ errorMessage,
64
+ ...props
65
+ }: TimestampFieldProps) {
66
+ return (
67
+ <div {...filterDOMProps(props)}>
68
+ <EuiFormRow
69
+ label={label}
70
+ labelAppend={<EuiText size="m">{description}</EuiText>}
71
+ error={showInlineError ? errorMessage : false}
72
+ isInvalid={error}
73
+ id={id}
74
+ fullWidth
75
+ >
76
+ <EuiDatePicker
77
+ disabled={disabled}
78
+ selected={value ? utcTimestampToLocalMoment(value) : null}
79
+ value={
80
+ value
81
+ ? utcTimestampToLocalMoment(value).toLocaleString()
82
+ : undefined
83
+ }
84
+ onChange={(event) => {
85
+ onChange(
86
+ event
87
+ ? localMomentToUtcTimestamp(event)
88
+ : undefined,
89
+ );
90
+ }}
91
+ showTimeSelect={showTimeSelect}
92
+ dateFormat={dateFormat ? dateFormat : undefined}
93
+ timeFormat={timeFormat ? timeFormat : undefined}
94
+ locale={locale ? locale : 'en-en'}
95
+ maxDate={max ? moment.unix(max) : undefined}
96
+ minDate={min ? moment.unix(min) : undefined}
97
+ />
98
+ </EuiFormRow>
99
+ </div>
100
+ );
101
+ }
102
+
103
+ export const TimestampField = connectField(Timestamp, { kind: 'leaf' });