@orchestrator-ui/orchestrator-ui-components 1.21.0 → 1.22.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @orchestrator-ui/orchestrator-ui-components@1.21.0 build
2
+ > @orchestrator-ui/orchestrator-ui-components@1.22.0 build
3
3
  > tsup src/index.ts --format esm --dts --tsconfig tsconfig.build.json
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -9,6 +9,6 @@
9
9
  ESM Build start
10
10
  DTS Build start
11
11
  ESM dist/index.js 2.14 MB
12
- ESM ⚡️ Build success in 670ms
13
- DTS ⚡️ Build success in 13705ms
14
- DTS dist/index.d.ts 170.70 KB
12
+ ESM ⚡️ Build success in 1001ms
13
+ DTS ⚡️ Build success in 13674ms
14
+ DTS dist/index.d.ts 171.59 KB
@@ -1,4 +1,4 @@
1
1
 
2
- > @orchestrator-ui/orchestrator-ui-components@1.21.0 lint
2
+ > @orchestrator-ui/orchestrator-ui-components@1.22.0 lint
3
3
  > eslint "src/**/*.ts*"
4
4
 
@@ -1,37 +1,38 @@
1
1
 
2
- > @orchestrator-ui/orchestrator-ui-components@1.21.0 test
2
+ > @orchestrator-ui/orchestrator-ui-components@1.22.0 test
3
3
  > jest
4
4
 
5
- PASS Orchestrator UI Components Tests src/utils/date.spec.ts
6
5
  PASS Orchestrator UI Components Tests src/components/WfoForms/formFields/utils.spec.ts
7
6
  PASS Orchestrator UI Components Tests src/components/WfoSubscription/utils/utils.spec.ts
8
- PASS Orchestrator UI Components Tests src/utils/getProductNamesFromProcess.spec.ts
7
+ PASS Orchestrator UI Components Tests src/utils/date.spec.ts
9
8
  PASS Orchestrator UI Components Tests src/pages/processes/timelineUtils.spec.ts
9
+ PASS Orchestrator UI Components Tests src/utils/getProductNamesFromProcess.spec.ts
10
10
  PASS Orchestrator UI Components Tests src/utils/string.spec.ts
11
- PASS Orchestrator UI Components Tests src/components/WfoTable/WfoDataGridTable/WfodataGridColumns.spec.ts
12
11
  PASS Orchestrator UI Components Tests src/components/WfoTree/treeUtils.spec.ts
13
12
  PASS Orchestrator UI Components Tests src/components/WfoTable/WfoTableWithFilter/updateQueryString.spec.ts
13
+ PASS Orchestrator UI Components Tests src/components/WfoTable/WfoDataGridTable/WfodataGridColumns.spec.ts
14
14
  PASS Orchestrator UI Components Tests src/components/WfoTable/utils/tableUtils.spec.ts
15
- PASS Orchestrator UI Components Tests src/components/WfoTable/utils/tableConfigPersistence.spec.ts
16
15
  PASS Orchestrator UI Components Tests src/components/WfoTable/utils/mapSortableAndFilterableValuesToTableColumnConfig.spec.ts
16
+ PASS Orchestrator UI Components Tests src/components/WfoTable/utils/tableConfigPersistence.spec.ts
17
17
  PASS Orchestrator UI Components Tests src/messages/getTranslationMessages.spec.ts
18
+ PASS Orchestrator UI Components Tests src/components/WfoPageTemplate/WfoSidebar/utils/menuItemIsAllowed.spec.ts
18
19
  PASS Orchestrator UI Components Tests src/utils/resultFlattener.spec.ts
19
20
  PASS Orchestrator UI Components Tests src/utils/getToastMessage.spec.ts
20
21
  PASS Orchestrator UI Components Tests src/utils/optionalArray.spec.ts
21
- PASS Orchestrator UI Components Tests src/utils/filterData.spec.ts
22
22
  PASS Orchestrator UI Components Tests src/components/WfoTable/utils/columns.spec.ts
23
- PASS Orchestrator UI Components Tests src/utils/getTokenName.spec.ts
24
- PASS Orchestrator UI Components Tests src/components/WfoWorkflowSteps/stepListUtils.spec.ts
25
23
  PASS Orchestrator UI Components Tests src/utils/sortObjectKeys.spec.ts
26
- PASS Orchestrator UI Components Tests src/utils/environmentVariables.spec.ts
24
+ PASS Orchestrator UI Components Tests src/utils/filterData.spec.ts
25
+ PASS Orchestrator UI Components Tests src/components/WfoWorkflowSteps/stepListUtils.spec.ts
26
+ PASS Orchestrator UI Components Tests src/utils/getTokenName.spec.ts
27
27
  PASS Orchestrator UI Components Tests src/utils/onlyUnique.spec.ts
28
+ PASS Orchestrator UI Components Tests src/utils/environmentVariables.spec.ts
28
29
  PASS Orchestrator UI Components Tests src/utils/uuid.spec.ts
29
30
  PASS Orchestrator UI Components Tests src/utils/getTypedFieldFromObject.spec.ts
30
- PASS Orchestrator UI Components Tests src/components/WfoPageTemplate/WfoPageHeader/utils/toHexColorWithOpacity.spec.ts
31
31
  PASS Orchestrator UI Components Tests src/utils/getQueryVariablesForExport.spec.ts
32
+ PASS Orchestrator UI Components Tests src/components/WfoPageTemplate/WfoPageHeader/utils/toHexColorWithOpacity.spec.ts
32
33
 
33
- Test Suites: 27 passed, 27 total
34
- Tests: 161 passed, 161 total
34
+ Test Suites: 28 passed, 28 total
35
+ Tests: 165 passed, 165 total
35
36
  Snapshots: 0 total
36
- Time: 3.998 s
37
+ Time: 3.813 s
37
38
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @orchestrator-ui/orchestrator-ui-components
2
2
 
3
+ ## 1.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f6dc4fb: Replaces subscriptionsWithFilter REST call with a graphQL query
8
+ - d48df6b: Exports WFoUserInputForm
9
+
10
+ ### Patch Changes
11
+
12
+ - bcfe7de: 916 Exposes menuItemIsAllowed helper function
13
+ - 50e8f68: Fixes signOut modal showing in some cases
14
+ - 6a7264f: 1086 StartPage: Summary card with product counts ignores terminated instances
15
+ - aca21a5: 1085 Filters out current subscription from the related subscriptions list
16
+
3
17
  ## 1.21.0
4
18
 
5
19
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ import { HTMLFieldProps, FieldProps as FieldProps$2 } from 'uniforms';
9
9
  import * as _reduxjs_toolkit_dist_query_baseQueryTypes from '@reduxjs/toolkit/dist/query/baseQueryTypes';
10
10
  import * as _reduxjs_toolkit_query_react from '@reduxjs/toolkit/query/react';
11
11
  import * as _emotion_react_jsx_runtime from '@emotion/react/jsx-runtime';
12
+ import { NextRouter } from 'next/router';
12
13
  import { EuiSideNavItemType } from '@elastic/eui/src/components/side_nav/side_nav_types';
13
14
  import { TranslationValues } from 'next-intl';
14
15
  import { EuiDataGridControlColumn, EuiDataGridSorting, EuiDataGridPaginationProps } from '@elastic/eui/src/components/datagrid/data_grid_types';
@@ -535,11 +536,11 @@ declare const useLazyGetProductsQuery: _reduxjs_toolkit_dist_query_react_buildHo
535
536
  stack: string | undefined;
536
537
  }, {}>>, CacheTags, ProductsResponse, "orchestratorApi">>;
537
538
 
538
- declare const productsSummary = "\n query MetadataProducts(\n $first: Int!\n $after: Int!\n $sortBy: [GraphqlSort!]\n ) {\n products(first: $first, after: $after, sortBy: $sortBy) {\n page {\n name\n subscriptions {\n pageInfo {\n totalItems\n }\n }\n }\n pageInfo {\n totalItems\n startCursor\n endCursor\n }\n }\n }\n";
539
+ declare const productsSummary = "\n query MetadataProducts(\n $first: Int!\n $after: Int!\n $sortBy: [GraphqlSort!]\n $filterBy: [GraphqlFilter!]\n ) {\n products(first: $first, after: $after, sortBy: $sortBy) {\n page {\n name\n subscriptions(filterBy: $filterBy) {\n pageInfo {\n totalItems\n }\n }\n }\n pageInfo {\n totalItems\n startCursor\n endCursor\n }\n }\n }\n";
539
540
  declare type ProductsSummaryResponse = {
540
541
  products: ProductsSummary[];
541
542
  } & BaseGraphQlResult;
542
- declare const useGetProductsSummaryQuery: _reduxjs_toolkit_dist_query_react_buildHooks.UseQuery<_reduxjs_toolkit_query.QueryDefinition<GraphqlQueryVariables<ProductsSummary>, (args: any, api: _reduxjs_toolkit_query.BaseQueryApi, extraOptions: {
543
+ declare const useGetProductsSummaryQuery: _reduxjs_toolkit_dist_query_react_buildHooks.UseQuery<_reduxjs_toolkit_query.QueryDefinition<GraphqlQueryVariables<Pick<ProductDefinition, "name"> & SubscriptionsResult<never> & Subscription>, (args: any, api: _reduxjs_toolkit_query.BaseQueryApi, extraOptions: {
543
544
  baseQueryType?: BaseQueryTypes | undefined;
544
545
  apiName?: string | undefined;
545
546
  }) => {
@@ -2039,6 +2040,8 @@ declare type WfoMenuItemLinkProps = {
2039
2040
  };
2040
2041
  declare const WfoMenuItemLink: FC<WfoMenuItemLinkProps>;
2041
2042
 
2043
+ declare const menuItemIsAllowed: (url: string | undefined, urlPolicyMap: Map<string, string>, isAllowedHandler: (resource?: string | undefined) => boolean) => boolean;
2044
+
2042
2045
  declare const PATH_START = "/";
2043
2046
  declare const PATH_START_NEW_WORKFLOW = "/workflows/new";
2044
2047
  declare const PATH_START_NEW_TASK = "/tasks/new";
@@ -2246,6 +2249,20 @@ declare type TreeProviderProps = {
2246
2249
  };
2247
2250
  declare const TreeProvider: React.FC<TreeProviderProps>;
2248
2251
 
2252
+ interface IProps$1 {
2253
+ router: NextRouter;
2254
+ stepUserInput: JSONSchema6;
2255
+ validSubmit: (userInput: {
2256
+ [index: string]: unknown;
2257
+ }) => Promise<unknown>;
2258
+ cancel?: ConfirmDialogActions['closeConfirmDialog'];
2259
+ previous: ConfirmDialogActions['closeConfirmDialog'];
2260
+ hasNext?: boolean;
2261
+ hasPrev?: boolean;
2262
+ userInput: object;
2263
+ isTask?: boolean;
2264
+ isResuming?: boolean;
2265
+ }
2249
2266
  declare module 'uniforms' {
2250
2267
  interface FilterDOMProps {
2251
2268
  customPropToFilter: never;
@@ -2260,6 +2277,7 @@ declare module 'uniforms' {
2260
2277
  options: never;
2261
2278
  }
2262
2279
  }
2280
+ declare function WfoUserInputForm({ router, stepUserInput, validSubmit, cancel, previous, hasNext, hasPrev, userInput, isTask, isResuming, }: IProps$1): _emotion_react_jsx_runtime.JSX.Element;
2263
2281
 
2264
2282
  interface UserInputFormWizardProps {
2265
2283
  stepUserInput: InputForm;
@@ -2480,19 +2498,6 @@ declare type VlanFieldProps = FieldProps<string, {
2480
2498
  declare type VlanRange = [number, number];
2481
2499
  declare const VlanField: uniforms.ConnectedField<VlanFieldProps, string | undefined>;
2482
2500
 
2483
- interface NodeSubscription {
2484
- name: string;
2485
- subscription_id: string;
2486
- description: string;
2487
- product: ProductDefinition;
2488
- product_id: string;
2489
- status: string;
2490
- insync: boolean;
2491
- customer_id: string;
2492
- start_date: number;
2493
- end_date: number;
2494
- note: string;
2495
- }
2496
2501
  interface ServicePort {
2497
2502
  subscription_id?: string;
2498
2503
  vlan?: string;
@@ -2549,6 +2554,10 @@ interface IpBlock {
2549
2554
  is_subnet: boolean;
2550
2555
  state_repr: string;
2551
2556
  }
2557
+ declare type NodeSubscriptionOption = Pick<Subscription, 'subscriptionId' | 'description'>;
2558
+ interface NodeSubscriptionOptionsResult {
2559
+ subscriptions: GraphQlSinglePage<NodeSubscriptionOption>;
2560
+ }
2552
2561
 
2553
2562
  declare const ipamStates: (string | null)[];
2554
2563
 
@@ -4036,4 +4045,4 @@ declare const optionalArrayMapper: <T, U>(data: T[] | undefined, mapper: (input:
4036
4045
 
4037
4046
  declare const filterDataByCriteria: <Type>(data: Type[], filterCriteria: GraphqlFilter<Type>[]) => Type[];
4038
4047
 
4039
- export { ACTIVE_PROCESSES_LIST_TABLE_LOCAL_STORAGE_KEY, ACTIVE_TASKS_LIST_TABLE_LOCAL_STORAGE_KEY, AcceptField, type AcceptFieldProps, type AppDispatch, type AutoFieldsProps, BadgeType, type BaseGraphQlResult, BaseQueryTypes, BoolField, type BoolFieldProps, COMPLETED_PROCESSES_LIST_TABLE_LOCAL_STORAGE_KEY, COMPLETED_TASKS_LIST_TABLE_LOCAL_STORAGE_KEY, type CacheNames, type CacheOption, CacheTags, ColorModes, type ColumnConfig, type ConfirmDialogActions, ConfirmationDialogContext, ConfirmationDialogContextWrapper, ConfirmationDialogProvider, ConnectedSelectField, ContactPersonAutocomplete, ContactPersonNameField, type ContactPersonNameFieldProps, CreateForm, type CustomApiConfig, type Customer, type CustomerDescriptions, CustomerField, type CustomerFieldProps, type CustomersResult, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, type DataDisplayParams, type DataDisplayReturnValues, DateField, type DateFieldProps, DividerField, type DividerFieldProps, type EmailAddress, type EmailState, EngineStatus, Environment, ErrorField, type ErrorFieldProps, ErrorsField, type ErrorsFieldProps, type ExternalService, type FetchFilter, type FieldProps$1 as FieldProps, type FieldValue, type FilterQuery, type FixedInputDefinition, type Form, type FormNotCompleteResponse, type FormValidationError, type GraphQLPageInfo, type GraphQLSort, type GraphQlResultPage, type GraphQlSinglePage, type GraphqlFilter, type GraphqlQueryVariables, type GroupedStep, HIDDEN_KEYS, type HeaderBadgeProps, HttpStatus, IPAM_ENDPOINT, IPAM_FREE_SUBNETS_ENDPOINT, IPAM_IP_BLOCKS_ENDPOINT, IPAM_PREFIX_FILTERS_ENDPOINT, type IPvAnyNetworkFieldProps, type ImsNode, ImsNodeIdField, type ImsNodeIdFieldProps, type ImsPort, type ImsPortFieldProps, ImsPortIdField, type InUseByRelation, type InUseByRelationDetail, type InUseByRelationsDetailResponse, type InUseByRelationsDetailResult, type InitialOrchestratorStoreConfig, type InputForm, type IpBlock, IpNetworkField, type IpPrefix, LabelField, type LabelFieldProps, ListAddField, type ListAddFieldProps, ListDelField, type ListDelFieldProps, ListField, type ListFieldProps, ListSelectField, type ListSelectFieldProps, Locale, LocationCodeField, type LocationCodeFieldProps, LongTextField, type LongTextFieldProps, MAXIMUM_ITEMS_FOR_BULK_FETCHING, METADATA_PRODUCT_BLOCKS_TABLE_LOCAL_STORAGE_KEY, METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY, METADATA_RESOURCE_TYPES_TABLE_LOCAL_STORAGE_KEY, METADATA_TASKS_TABLE_LOCAL_STORAGE_KEY, METADATA_WORKFLOWS_TABLE_LOCAL_STORAGE_KEY, type MetaDataTab, NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS, NestField, type NestFieldProps, type NodeSubscription, type Nullable, NumField, type NumFieldProps, OptGroupField, type OptGroupFieldProps, type OrchestratorComponentOverride, type OrchestratorConfig, OrchestratorConfigContext, OrchestratorConfigProvider, type OrchestratorConfigProviderProps, PATH_METADATA, PATH_METADATA_PRODUCTS, PATH_METADATA_PRODUCT_BLOCKS, PATH_METADATA_RESOURCE_TYPES, PATH_METADATA_TASKS, PATH_METADATA_WORKFLOWS, PATH_SETTINGS, PATH_START, PATH_START_NEW_TASK, PATH_START_NEW_WORKFLOW, PATH_SUBSCRIPTIONS, PATH_TASKS, PATH_WORKFLOWS, PROCESSES_ENDPOINT, PROCESSES_RESUME_ALL_ENDPOINT, PROCESS_ABORT_ENDPOINT, PROCESS_RESUME_ENDPOINT, PROCESS_STATUS_COUNTS_ENDPOINT, type Pagination, type Policy, PolicyContext, PolicyContextProvider, type PolicyProviderProps, PolicyResource, PortMode, type Process, type ProcessDetail, type ProcessDetailResultRaw, ProcessDoneStatuses, type ProcessListExportItem, type ProcessListItem, type ProcessListResponse, type ProcessListResult, type ProcessListSummaryResponse, ProcessStatus, type ProcessStepsResult, type ProcessSummary, type ProcessesDetailResult, type ProductBlockDefinition, type ProductBlockDefinitionsResult, type ProductBlockInstance, type ProductBlocksResponse, type ProductDefinition, type ProductDefinitionsResult, ProductLifecycleStatus, ProductTag, type ProductsResponse, type ProductsSummary, type ProductsSummaryResponse, RENDER_ALL, RESOURCE_TYPE_FIELD_DESCRIPTION, RESOURCE_TYPE_FIELD_ID, RESOURCE_TYPE_FIELD_PRODUCT_BLOCKS, RESOURCE_TYPE_FIELD_TYPE, RadioField, type RadioFieldProps, type RelatedSubscription, RelatedSubscriptionsQuery, type RelatedSubscriptionsResponse, type RelatedSubscriptionsResult, RenderDirection, type ResourceTypeDefinition, type ResourceTypeDefinitionsResult, type ResourceTypesResponse, type RootState, SETTINGS_CACHE_ENDPOINT, SETTINGS_CACHE_NAMES_ENDPOINT, SETTINGS_ENDPOINT, SETTINGS_SEARCH_INDEX_RESET_ENDPOINT, SETTINGS_STATUS_ENDPOINT, STEP_STATE_HIDDEN_KEYS, SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY, SUBSCRIPTION_ACTIONS_ENDPOINT, type SelectFieldProps, type ServicePort, type ShowConfirmDialog, type ShowConfirmDialogType, type SortOption, SortOrder, type StartComboBoxOption, type StartOptionsResponse, type StartOptionsResult, type StartProcessStep, type Step, type StepListItem, type StepState, StepStatus, StoreProvider, type StoreProviderProps, type StoredTableConfig, SubmitField, type SubmitFieldProps, type Subscription, type SubscriptionAction, type SubscriptionActions, type SubscriptionDetail, type SubscriptionDetailProcess, type SubscriptionDetailResponse, type SubscriptionDetailResult, SubscriptionDetailTab, type SubscriptionDropdownOption, type SubscriptionDropdownOptionsResponse, type SubscriptionDropdownOptionsResult, SubscriptionField, type SubscriptionFieldProps, SubscriptionKeyValueBlock, type SubscriptionListItem, type SubscriptionListResponse, type SubscriptionListSummaryResponse, SubscriptionStatus, type SubscriptionSummary, SubscriptionSummaryField, type SubscriptionSummaryFieldProps, type SubscriptionsResult, type SummaryCardButtonConfig, type SummaryCardListItem, SummaryCardStatus, SummaryField, type SummaryFieldProps, type TableColumnKeys, type TableConfig, TableSettingsModal, type TableSettingsModalProps, type TaskDefinition, type TaskDefinitionsResult, type TaskListItem, type TasksResponse, TextField, type TextFieldProps, type TimelineItem, TimelinePosition, TimestampField, type TimestampFieldProps, type ToastState, ToastTypes, type TreeBlock, TreeContext, type TreeContextType, TreeProvider, type TreeProviderProps, UnconnectedSelectField, type UserInputForm, UserInputFormWizard, type ValidationError, type ValidationErrorContext, type ValueOverrideConfiguration, type ValueOverrideFunction, VlanField, type VlanFieldProps, type VlanRange, WFO_STATUS_COLOR_FIELD, WfoActiveWorkflowsSummaryCard, WfoArrowNarrowDown, WfoArrowNarrowUp, WfoArrowsExpand, WfoAuth, WfoBadge, type WfoBadgeProps, WfoBasicTable, type WfoBasicTableColumns, type WfoBasicTableColumnsWithControlColumns, type WfoBasicTableProps, WfoBell, WfoBoltFill, WfoBoltSlashFill, WfoBreadcrumbs, WfoCheckmarkCircleFill, WfoChevronDown, WfoChevronUp, WfoCode, WfoCogFill, WfoContactEnvelopeFill, type WfoControlColumn, WfoCubeSolid, WfoDataGridTable, type WfoDataGridTableColumns, type WfoDataGridTableProps, type WfoDataSearch, type WfoDataSorting, WfoDateTime, type WfoDateTimeProps, WfoDropdownButton, WfoEngineStatusBadge, WfoEngineStatusButton, WfoEnvironmentBadge, WfoError, WfoErrorBoundary, type WfoEuiBasicTableColumn, WfoExpandableField, type WfoExpandableFieldProps, WfoExternalLink, WfoEyeFill, WfoFailedTasksBadge, WfoFailedTasksSummaryCard, type WfoFilterTab, WfoFilterTabs, type WfoFilterTabsProps, WfoFirstPartUUID, type WfoFirstUUIDPartProps, WfoFlushSettings, WfoHeaderBadge, type WfoIconProps, WfoInSyncField, WfoInformationModal, type WfoInformationModalProps, WfoInlineJson, type WfoInlineJsonProps, WfoInsyncIcon, WfoIsAllowedToRender, type WfoIsAllowedToRenderProps, WfoJsonCodeBlock, type WfoJsonCodeBlockProps, WfoKeyCell, type WfoKeyCellProps, WfoKeyValueTable, type WfoKeyValueTableDataType, type WfoKeyValueTableProps, WfoLatestActiveSubscriptionsSummaryCard, WfoLatestOutOfSyncSubscriptionSummaryCard, WfoLoading, WfoLogoutIcon, WfoMenuItemLink, WfoMetadataPageLayout, WfoMinusCircleFill, WfoMinusCircleOutline, WfoModifySettings, WfoMyWorkflowsSummaryCard, type WfoMyWorkflowsSummaryCardProps, WfoNoResults, WfoPageHeader, type WfoPageHeaderProps, WfoPageTemplate, type WfoPageTemplateProps, WfoPageUnauthorized, WfoPencil, WfoPencilAlt, WfoPlayCircle, WfoPlayFill, WfoPlusCircleFill, type WfoPolicyRenderFallbackProps, WfoPolicyRenderPageFallback, WfoProcessDetailPage, WfoProcessListSubscriptionsCell, WfoProcessRawData, WfoProcessStatusBadge, type WfoProcessStatusBadgeProps, WfoProcessSubscriptionDelta, WfoProcessesList, type WfoProcessesListProps, type WfoProcessesListSubscriptionsCellProps, WfoProcessesTimeline, WfoProductBlockBadge, type WfoProductBlockBadgeProps, WfoProductBlockKeyValueRow, type WfoProductBlockKeyValueRowProps, WfoProductBlocksPage, WfoProductInformationWithLink, WfoProductStatusBadge, type WfoProductStatusBadgeProps, WfoProductsPage, WfoProductsSummaryCard, WfoRefresh, WfoRelatedSubscriptions, WfoResetTextSearchIndexButton, WfoResourceTypesPage, WfoRouteChangeListener, WfoSearchField, type WfoSearchFieldProps, WfoSearchStrikethrough, type WfoSession, WfoSettingsModal, type WfoSettingsModalProps, WfoSettingsPage, WfoShare, WfoSideMenu, WfoSidebar, type WfoSidebarProps, WfoSortAsc, WfoSortButton, type WfoSortButtonProps, WfoSortButtons, type WfoSortButtonsProps, WfoSortDesc, WfoSortDirectionIcon, type WfoSortDirectionIconProps, WfoStartPage, WfoStartProcessPage, WfoStartTaskButtonComboBox, WfoStartWorkflowButtonComboBox, WfoStatistic, WfoStatus, WfoStatusColorField, type WfoStatusColorFieldProps, WfoStatusDotIcon, WfoStep, WfoStepList, WfoStepListHeader, type WfoStepListHeaderProps, type WfoStepListProps, type WfoStepListRef, type WfoStepProps, WfoStepStatusIcon, type WfoStepStatusIconProps, WfoSubmitModal, type WfoSubmitModalProps, WfoSubscription, WfoSubscriptionActions, type WfoSubscriptionActionsProps, type WfoSubscriptionDetailGeneralConfiguration, WfoSubscriptionDetailPage, WfoSubscriptionDetailTree, WfoSubscriptionGeneral, WfoSubscriptionListTab, WfoSubscriptionProductBlock, WfoSubscriptionStatusBadge, type WfoSubscriptionStatusBadgeProps, WfoSubscriptionsList, WfoSubscriptionsListPage, type WfoSubscriptionsListProps, WfoSummaryCard, WfoSummaryCardHeader, type WfoSummaryCardHeaderProps, WfoSummaryCardList, WfoSummaryCardListItem, type WfoSummaryCardListItemProps, type WfoSummaryCardListProps, type WfoSummaryCardProps, WfoSummaryCards, type WfoSummaryCardsProps, type WfoTableColumns, type WfoTableColumnsWithExtraNonDataFields, type WfoTableControlColumnConfig, type WfoTableDataColumnConfig, WfoTableHeaderCell, type WfoTableHeaderCellProps, WfoTableWithFilter, type WfoTableWithFilterProps, WfoTasksListPage, WfoTasksListTabType, WfoTasksPage, WfoTextAnchor, type WfoTheme, WfoTimeline, type WfoTimelineProps, WfoToastsList, WfoTrash, type WfoTreeNodeMap, type WfoUserProfile, WfoValueCell, type WfoValueCellProps, WfoViewList, WfoWarningTriangle, WfoWorkflowStepList, type WfoWorkflowStepListProps, WfoWorkflowTargetBadge, type WfoWorkflowTargetBadgeProps, WfoWorkflowsListPage, WfoWorkflowsListTabType, WfoWorkflowsPage, WfoXCircleFill, type WorkflowDefinition, type WorkflowDefinitionsResult, type WorkflowListItem, WorkflowTarget, type WorkflowsResponse, addToastMessage, calculateTimeDifference, camelToHuman, clearTableConfigFromLocalStorage, csvDownloadHandler, defaultOrchestratorTheme, defaultTasksListTabs, defaultWorkflowsListTabs, determineNewSortOrder, determinePageIndex, filterDataByCriteria, flattenArrayProps, formatDate, formatDateCetWithUtc, getConcatenatedPagedResult, getConcatenatedResult, getCsvFileNameWithDate, getCurrentBrowserLocale, getCustomApiSlice, getDataSortHandler, getDate, getFieldFromProductBlockInstanceValues, getFirstUuidPart, getFormFieldsBaseStyle, getInitialColumnOrder, getLastUncompletedProcess, getLatestTaskDate, getNumberOfColumns, getNumberValueFromEnvironmentVariable, getOrchestratorComponentOverrideSlice, getOrchestratorConfigSlice, getOrchestratorStore, getPageChangeHandler, getProductBlockTitle, getProductNamesFromProcess, getQueryStringHandler, getQueryVariablesForExport, getSortDirectionFromString, getStatusBadgeColor, getStepContent, getStyles, getTableConfigFromLocalStorage, getTasksListTabTypeFromString, getTypedFieldFromObject, getWfoBasicTableStyles, getWorkflowTargetColor, getWorkflowTargetIconContent, getWorkflowsListTabTypeFromString, graphQlWorkflowListMapper, handlePromiseErrorWithCallback, imsPortIdFieldStyling, initiateCsvFileDownload, ipPrefixTableFieldStyling, ipamStates, isToday, isUuid4, isValidLocalStorageTableConfig, localMomentToUtcTimestamp, mapColumnSortToEuiDataGridSorting, mapGraphQlSubscriptionsResultToPageInfo, mapGraphQlSubscriptionsResultToSubscriptionListItems, mapProcessSummaryToSummaryCardListItem, mapSortableAndFilterableValuesToTableColumnConfig, mapSubscriptionSummaryToSummaryCardListItem, mapWorkflowDefinitionToWorkflowListItem, metaDataTabs, onlyUnique, optionalArrayMapper, orchestratorApi, parseDate, parseDateOrTimeRelativeToToday, parseDateRelativeToToday, parseDateToLocaleDateString, parseDateToLocaleDateTimeString, parseDateToLocaleTimeString, parseIsoString, prepareHeaders, processListQuery, processListSummaryQuery, processStepsQuery, productBlocksQuery, products, productsSummary, removeSuffix, removeToastMessage, resourceTypesQuery, selectOrchestratorConfig, setTableConfigToLocalStorage, snakeToHuman, snakeToKebab, splitPrefixStyling, stop, subscriptionDetailQuery, subscriptionInUseByRelationQuery, subscriptionListQuery, subscriptionListSummaryQuery, subscriptionListTabs, subscriptionsDropdownOptionsQuery, tasksQuery, toOptionalArrayEntry, toastMessagesReducer, toastMessagesSlice, upperCaseFirstChar, urlPolicyMap, useCheckEngineStatus, useClearCacheMutation, useDataDisplayParams, useGetCacheNamesQuery, useGetCustomerQuery, useGetCustomersQuery, useGetEngineStatusQuery, useGetInUseByRelationDetailsQuery, useGetOrchestratorConfig, useGetProcessListQuery, useGetProcessListSummaryQuery, useGetProductBlocksQuery, useGetProductsQuery, useGetProductsSummaryQuery, useGetRelatedSubscriptionsQuery, useGetResourceTypesQuery, useGetSubscriptionDetailQuery, useGetSubscriptionListQuery, useGetSubscriptionSummaryListQuery, useGetSubscriptionsDropdownOptionsQuery, useGetTaskOptionsQuery, useGetTasksQuery, useGetTimeLineItemsQuery, useGetTranslationMessages, useGetWorkflowOptionsQuery, useGetWorkflowsQuery, useLazyGetProcessListQuery, useLazyGetProductBlocksQuery, useLazyGetProductsQuery, useLazyGetResourceTypesQuery, useLazyGetSubscriptionListQuery, useLazyGetTasksQuery, useLazyGetWorkflowsQuery, useOrchestratorConfig, useOrchestratorTheme, usePolicy, useResetTextSearchIndexMutation, useSetEngineStatusMutation, useSetSubscriptionInSyncMutation, useShowToastMessage, useStoredTableConfig, useStreamMessagesQuery, useSubscriptionDetailValueOverride, useWfoSession, useWithOrchestratorTheme, utcTimestampToLocalMoment, workflowFieldMapper, workflowsQuery };
4048
+ export { ACTIVE_PROCESSES_LIST_TABLE_LOCAL_STORAGE_KEY, ACTIVE_TASKS_LIST_TABLE_LOCAL_STORAGE_KEY, AcceptField, type AcceptFieldProps, type AppDispatch, type AutoFieldsProps, BadgeType, type BaseGraphQlResult, BaseQueryTypes, BoolField, type BoolFieldProps, COMPLETED_PROCESSES_LIST_TABLE_LOCAL_STORAGE_KEY, COMPLETED_TASKS_LIST_TABLE_LOCAL_STORAGE_KEY, type CacheNames, type CacheOption, CacheTags, ColorModes, type ColumnConfig, type ConfirmDialogActions, ConfirmationDialogContext, ConfirmationDialogContextWrapper, ConfirmationDialogProvider, ConnectedSelectField, ContactPersonAutocomplete, ContactPersonNameField, type ContactPersonNameFieldProps, CreateForm, type CustomApiConfig, type Customer, type CustomerDescriptions, CustomerField, type CustomerFieldProps, type CustomersResult, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, type DataDisplayParams, type DataDisplayReturnValues, DateField, type DateFieldProps, DividerField, type DividerFieldProps, type EmailAddress, type EmailState, EngineStatus, Environment, ErrorField, type ErrorFieldProps, ErrorsField, type ErrorsFieldProps, type ExternalService, type FetchFilter, type FieldProps$1 as FieldProps, type FieldValue, type FilterQuery, type FixedInputDefinition, type Form, type FormNotCompleteResponse, type FormValidationError, type GraphQLPageInfo, type GraphQLSort, type GraphQlResultPage, type GraphQlSinglePage, type GraphqlFilter, type GraphqlQueryVariables, type GroupedStep, HIDDEN_KEYS, type HeaderBadgeProps, HttpStatus, IPAM_ENDPOINT, IPAM_FREE_SUBNETS_ENDPOINT, IPAM_IP_BLOCKS_ENDPOINT, IPAM_PREFIX_FILTERS_ENDPOINT, type IPvAnyNetworkFieldProps, type ImsNode, ImsNodeIdField, type ImsNodeIdFieldProps, type ImsPort, type ImsPortFieldProps, ImsPortIdField, type InUseByRelation, type InUseByRelationDetail, type InUseByRelationsDetailResponse, type InUseByRelationsDetailResult, type InitialOrchestratorStoreConfig, type InputForm, type IpBlock, IpNetworkField, type IpPrefix, LabelField, type LabelFieldProps, ListAddField, type ListAddFieldProps, ListDelField, type ListDelFieldProps, ListField, type ListFieldProps, ListSelectField, type ListSelectFieldProps, Locale, LocationCodeField, type LocationCodeFieldProps, LongTextField, type LongTextFieldProps, MAXIMUM_ITEMS_FOR_BULK_FETCHING, METADATA_PRODUCT_BLOCKS_TABLE_LOCAL_STORAGE_KEY, METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY, METADATA_RESOURCE_TYPES_TABLE_LOCAL_STORAGE_KEY, METADATA_TASKS_TABLE_LOCAL_STORAGE_KEY, METADATA_WORKFLOWS_TABLE_LOCAL_STORAGE_KEY, type MetaDataTab, NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS, NestField, type NestFieldProps, type NodeSubscriptionOption, type NodeSubscriptionOptionsResult, type Nullable, NumField, type NumFieldProps, OptGroupField, type OptGroupFieldProps, type OrchestratorComponentOverride, type OrchestratorConfig, OrchestratorConfigContext, OrchestratorConfigProvider, type OrchestratorConfigProviderProps, PATH_METADATA, PATH_METADATA_PRODUCTS, PATH_METADATA_PRODUCT_BLOCKS, PATH_METADATA_RESOURCE_TYPES, PATH_METADATA_TASKS, PATH_METADATA_WORKFLOWS, PATH_SETTINGS, PATH_START, PATH_START_NEW_TASK, PATH_START_NEW_WORKFLOW, PATH_SUBSCRIPTIONS, PATH_TASKS, PATH_WORKFLOWS, PROCESSES_ENDPOINT, PROCESSES_RESUME_ALL_ENDPOINT, PROCESS_ABORT_ENDPOINT, PROCESS_RESUME_ENDPOINT, PROCESS_STATUS_COUNTS_ENDPOINT, type Pagination, type Policy, PolicyContext, PolicyContextProvider, type PolicyProviderProps, PolicyResource, PortMode, type Process, type ProcessDetail, type ProcessDetailResultRaw, ProcessDoneStatuses, type ProcessListExportItem, type ProcessListItem, type ProcessListResponse, type ProcessListResult, type ProcessListSummaryResponse, ProcessStatus, type ProcessStepsResult, type ProcessSummary, type ProcessesDetailResult, type ProductBlockDefinition, type ProductBlockDefinitionsResult, type ProductBlockInstance, type ProductBlocksResponse, type ProductDefinition, type ProductDefinitionsResult, ProductLifecycleStatus, ProductTag, type ProductsResponse, type ProductsSummary, type ProductsSummaryResponse, RENDER_ALL, RESOURCE_TYPE_FIELD_DESCRIPTION, RESOURCE_TYPE_FIELD_ID, RESOURCE_TYPE_FIELD_PRODUCT_BLOCKS, RESOURCE_TYPE_FIELD_TYPE, RadioField, type RadioFieldProps, type RelatedSubscription, RelatedSubscriptionsQuery, type RelatedSubscriptionsResponse, type RelatedSubscriptionsResult, RenderDirection, type ResourceTypeDefinition, type ResourceTypeDefinitionsResult, type ResourceTypesResponse, type RootState, SETTINGS_CACHE_ENDPOINT, SETTINGS_CACHE_NAMES_ENDPOINT, SETTINGS_ENDPOINT, SETTINGS_SEARCH_INDEX_RESET_ENDPOINT, SETTINGS_STATUS_ENDPOINT, STEP_STATE_HIDDEN_KEYS, SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY, SUBSCRIPTION_ACTIONS_ENDPOINT, type SelectFieldProps, type ServicePort, type ShowConfirmDialog, type ShowConfirmDialogType, type SortOption, SortOrder, type StartComboBoxOption, type StartOptionsResponse, type StartOptionsResult, type StartProcessStep, type Step, type StepListItem, type StepState, StepStatus, StoreProvider, type StoreProviderProps, type StoredTableConfig, SubmitField, type SubmitFieldProps, type Subscription, type SubscriptionAction, type SubscriptionActions, type SubscriptionDetail, type SubscriptionDetailProcess, type SubscriptionDetailResponse, type SubscriptionDetailResult, SubscriptionDetailTab, type SubscriptionDropdownOption, type SubscriptionDropdownOptionsResponse, type SubscriptionDropdownOptionsResult, SubscriptionField, type SubscriptionFieldProps, SubscriptionKeyValueBlock, type SubscriptionListItem, type SubscriptionListResponse, type SubscriptionListSummaryResponse, SubscriptionStatus, type SubscriptionSummary, SubscriptionSummaryField, type SubscriptionSummaryFieldProps, type SubscriptionsResult, type SummaryCardButtonConfig, type SummaryCardListItem, SummaryCardStatus, SummaryField, type SummaryFieldProps, type TableColumnKeys, type TableConfig, TableSettingsModal, type TableSettingsModalProps, type TaskDefinition, type TaskDefinitionsResult, type TaskListItem, type TasksResponse, TextField, type TextFieldProps, type TimelineItem, TimelinePosition, TimestampField, type TimestampFieldProps, type ToastState, ToastTypes, type TreeBlock, TreeContext, type TreeContextType, TreeProvider, type TreeProviderProps, UnconnectedSelectField, type UserInputForm, UserInputFormWizard, type ValidationError, type ValidationErrorContext, type ValueOverrideConfiguration, type ValueOverrideFunction, VlanField, type VlanFieldProps, type VlanRange, WFO_STATUS_COLOR_FIELD, WfoActiveWorkflowsSummaryCard, WfoArrowNarrowDown, WfoArrowNarrowUp, WfoArrowsExpand, WfoAuth, WfoBadge, type WfoBadgeProps, WfoBasicTable, type WfoBasicTableColumns, type WfoBasicTableColumnsWithControlColumns, type WfoBasicTableProps, WfoBell, WfoBoltFill, WfoBoltSlashFill, WfoBreadcrumbs, WfoCheckmarkCircleFill, WfoChevronDown, WfoChevronUp, WfoCode, WfoCogFill, WfoContactEnvelopeFill, type WfoControlColumn, WfoCubeSolid, WfoDataGridTable, type WfoDataGridTableColumns, type WfoDataGridTableProps, type WfoDataSearch, type WfoDataSorting, WfoDateTime, type WfoDateTimeProps, WfoDropdownButton, WfoEngineStatusBadge, WfoEngineStatusButton, WfoEnvironmentBadge, WfoError, WfoErrorBoundary, type WfoEuiBasicTableColumn, WfoExpandableField, type WfoExpandableFieldProps, WfoExternalLink, WfoEyeFill, WfoFailedTasksBadge, WfoFailedTasksSummaryCard, type WfoFilterTab, WfoFilterTabs, type WfoFilterTabsProps, WfoFirstPartUUID, type WfoFirstUUIDPartProps, WfoFlushSettings, WfoHeaderBadge, type WfoIconProps, WfoInSyncField, WfoInformationModal, type WfoInformationModalProps, WfoInlineJson, type WfoInlineJsonProps, WfoInsyncIcon, WfoIsAllowedToRender, type WfoIsAllowedToRenderProps, WfoJsonCodeBlock, type WfoJsonCodeBlockProps, WfoKeyCell, type WfoKeyCellProps, WfoKeyValueTable, type WfoKeyValueTableDataType, type WfoKeyValueTableProps, WfoLatestActiveSubscriptionsSummaryCard, WfoLatestOutOfSyncSubscriptionSummaryCard, WfoLoading, WfoLogoutIcon, WfoMenuItemLink, WfoMetadataPageLayout, WfoMinusCircleFill, WfoMinusCircleOutline, WfoModifySettings, WfoMyWorkflowsSummaryCard, type WfoMyWorkflowsSummaryCardProps, WfoNoResults, WfoPageHeader, type WfoPageHeaderProps, WfoPageTemplate, type WfoPageTemplateProps, WfoPageUnauthorized, WfoPencil, WfoPencilAlt, WfoPlayCircle, WfoPlayFill, WfoPlusCircleFill, type WfoPolicyRenderFallbackProps, WfoPolicyRenderPageFallback, WfoProcessDetailPage, WfoProcessListSubscriptionsCell, WfoProcessRawData, WfoProcessStatusBadge, type WfoProcessStatusBadgeProps, WfoProcessSubscriptionDelta, WfoProcessesList, type WfoProcessesListProps, type WfoProcessesListSubscriptionsCellProps, WfoProcessesTimeline, WfoProductBlockBadge, type WfoProductBlockBadgeProps, WfoProductBlockKeyValueRow, type WfoProductBlockKeyValueRowProps, WfoProductBlocksPage, WfoProductInformationWithLink, WfoProductStatusBadge, type WfoProductStatusBadgeProps, WfoProductsPage, WfoProductsSummaryCard, WfoRefresh, WfoRelatedSubscriptions, WfoResetTextSearchIndexButton, WfoResourceTypesPage, WfoRouteChangeListener, WfoSearchField, type WfoSearchFieldProps, WfoSearchStrikethrough, type WfoSession, WfoSettingsModal, type WfoSettingsModalProps, WfoSettingsPage, WfoShare, WfoSideMenu, WfoSidebar, type WfoSidebarProps, WfoSortAsc, WfoSortButton, type WfoSortButtonProps, WfoSortButtons, type WfoSortButtonsProps, WfoSortDesc, WfoSortDirectionIcon, type WfoSortDirectionIconProps, WfoStartPage, WfoStartProcessPage, WfoStartTaskButtonComboBox, WfoStartWorkflowButtonComboBox, WfoStatistic, WfoStatus, WfoStatusColorField, type WfoStatusColorFieldProps, WfoStatusDotIcon, WfoStep, WfoStepList, WfoStepListHeader, type WfoStepListHeaderProps, type WfoStepListProps, type WfoStepListRef, type WfoStepProps, WfoStepStatusIcon, type WfoStepStatusIconProps, WfoSubmitModal, type WfoSubmitModalProps, WfoSubscription, WfoSubscriptionActions, type WfoSubscriptionActionsProps, type WfoSubscriptionDetailGeneralConfiguration, WfoSubscriptionDetailPage, WfoSubscriptionDetailTree, WfoSubscriptionGeneral, WfoSubscriptionListTab, WfoSubscriptionProductBlock, WfoSubscriptionStatusBadge, type WfoSubscriptionStatusBadgeProps, WfoSubscriptionsList, WfoSubscriptionsListPage, type WfoSubscriptionsListProps, WfoSummaryCard, WfoSummaryCardHeader, type WfoSummaryCardHeaderProps, WfoSummaryCardList, WfoSummaryCardListItem, type WfoSummaryCardListItemProps, type WfoSummaryCardListProps, type WfoSummaryCardProps, WfoSummaryCards, type WfoSummaryCardsProps, type WfoTableColumns, type WfoTableColumnsWithExtraNonDataFields, type WfoTableControlColumnConfig, type WfoTableDataColumnConfig, WfoTableHeaderCell, type WfoTableHeaderCellProps, WfoTableWithFilter, type WfoTableWithFilterProps, WfoTasksListPage, WfoTasksListTabType, WfoTasksPage, WfoTextAnchor, type WfoTheme, WfoTimeline, type WfoTimelineProps, WfoToastsList, WfoTrash, type WfoTreeNodeMap, WfoUserInputForm, type WfoUserProfile, WfoValueCell, type WfoValueCellProps, WfoViewList, WfoWarningTriangle, WfoWorkflowStepList, type WfoWorkflowStepListProps, WfoWorkflowTargetBadge, type WfoWorkflowTargetBadgeProps, WfoWorkflowsListPage, WfoWorkflowsListTabType, WfoWorkflowsPage, WfoXCircleFill, type WorkflowDefinition, type WorkflowDefinitionsResult, type WorkflowListItem, WorkflowTarget, type WorkflowsResponse, addToastMessage, calculateTimeDifference, camelToHuman, clearTableConfigFromLocalStorage, csvDownloadHandler, defaultOrchestratorTheme, defaultTasksListTabs, defaultWorkflowsListTabs, determineNewSortOrder, determinePageIndex, filterDataByCriteria, flattenArrayProps, formatDate, formatDateCetWithUtc, getConcatenatedPagedResult, getConcatenatedResult, getCsvFileNameWithDate, getCurrentBrowserLocale, getCustomApiSlice, getDataSortHandler, getDate, getFieldFromProductBlockInstanceValues, getFirstUuidPart, getFormFieldsBaseStyle, getInitialColumnOrder, getLastUncompletedProcess, getLatestTaskDate, getNumberOfColumns, getNumberValueFromEnvironmentVariable, getOrchestratorComponentOverrideSlice, getOrchestratorConfigSlice, getOrchestratorStore, getPageChangeHandler, getProductBlockTitle, getProductNamesFromProcess, getQueryStringHandler, getQueryVariablesForExport, getSortDirectionFromString, getStatusBadgeColor, getStepContent, getStyles, getTableConfigFromLocalStorage, getTasksListTabTypeFromString, getTypedFieldFromObject, getWfoBasicTableStyles, getWorkflowTargetColor, getWorkflowTargetIconContent, getWorkflowsListTabTypeFromString, graphQlWorkflowListMapper, handlePromiseErrorWithCallback, imsPortIdFieldStyling, initiateCsvFileDownload, ipPrefixTableFieldStyling, ipamStates, isToday, isUuid4, isValidLocalStorageTableConfig, localMomentToUtcTimestamp, mapColumnSortToEuiDataGridSorting, mapGraphQlSubscriptionsResultToPageInfo, mapGraphQlSubscriptionsResultToSubscriptionListItems, mapProcessSummaryToSummaryCardListItem, mapSortableAndFilterableValuesToTableColumnConfig, mapSubscriptionSummaryToSummaryCardListItem, mapWorkflowDefinitionToWorkflowListItem, menuItemIsAllowed, metaDataTabs, onlyUnique, optionalArrayMapper, orchestratorApi, parseDate, parseDateOrTimeRelativeToToday, parseDateRelativeToToday, parseDateToLocaleDateString, parseDateToLocaleDateTimeString, parseDateToLocaleTimeString, parseIsoString, prepareHeaders, processListQuery, processListSummaryQuery, processStepsQuery, productBlocksQuery, products, productsSummary, removeSuffix, removeToastMessage, resourceTypesQuery, selectOrchestratorConfig, setTableConfigToLocalStorage, snakeToHuman, snakeToKebab, splitPrefixStyling, stop, subscriptionDetailQuery, subscriptionInUseByRelationQuery, subscriptionListQuery, subscriptionListSummaryQuery, subscriptionListTabs, subscriptionsDropdownOptionsQuery, tasksQuery, toOptionalArrayEntry, toastMessagesReducer, toastMessagesSlice, upperCaseFirstChar, urlPolicyMap, useCheckEngineStatus, useClearCacheMutation, useDataDisplayParams, useGetCacheNamesQuery, useGetCustomerQuery, useGetCustomersQuery, useGetEngineStatusQuery, useGetInUseByRelationDetailsQuery, useGetOrchestratorConfig, useGetProcessListQuery, useGetProcessListSummaryQuery, useGetProductBlocksQuery, useGetProductsQuery, useGetProductsSummaryQuery, useGetRelatedSubscriptionsQuery, useGetResourceTypesQuery, useGetSubscriptionDetailQuery, useGetSubscriptionListQuery, useGetSubscriptionSummaryListQuery, useGetSubscriptionsDropdownOptionsQuery, useGetTaskOptionsQuery, useGetTasksQuery, useGetTimeLineItemsQuery, useGetTranslationMessages, useGetWorkflowOptionsQuery, useGetWorkflowsQuery, useLazyGetProcessListQuery, useLazyGetProductBlocksQuery, useLazyGetProductsQuery, useLazyGetResourceTypesQuery, useLazyGetSubscriptionListQuery, useLazyGetTasksQuery, useLazyGetWorkflowsQuery, useOrchestratorConfig, useOrchestratorTheme, usePolicy, useResetTextSearchIndexMutation, useSetEngineStatusMutation, useSetSubscriptionInSyncMutation, useShowToastMessage, useStoredTableConfig, useStreamMessagesQuery, useSubscriptionDetailValueOverride, useWfoSession, useWithOrchestratorTheme, utcTimestampToLocalMoment, workflowFieldMapper, workflowsQuery };
package/dist/index.js CHANGED
@@ -40295,7 +40295,7 @@ var orchestratorApi = createApi2({
40295
40295
  var _a;
40296
40296
  const { baseQueryType, apiName } = extraOptions || {};
40297
40297
  const state = api.getState();
40298
- const { orchestratorApiBaseUrl, graphqlEndpointCore } = state.orchestratorConfig;
40298
+ const { orchestratorApiBaseUrl, graphqlEndpointCore, authActive } = state.orchestratorConfig;
40299
40299
  const customApi = (_a = state.customApis) == null ? void 0 : _a.find(
40300
40300
  (query) => query.apiName === apiName
40301
40301
  );
@@ -40313,7 +40313,7 @@ var orchestratorApi = createApi2({
40313
40313
  customErrors: (error) => {
40314
40314
  var _a2;
40315
40315
  const { name, message, stack, response } = error;
40316
- if ((response == null ? void 0 : response.errors) && ((_a2 = response.errors) == null ? void 0 : _a2.length) > 0) {
40316
+ if (((_a2 = response == null ? void 0 : response.errors) == null ? void 0 : _a2.length) && authActive) {
40317
40317
  response.errors.map((error2) => {
40318
40318
  var _a3;
40319
40319
  if (((_a3 = error2.extensions) == null ? void 0 : _a3.error_type) === "not_authorized") {
@@ -41065,11 +41065,12 @@ var productsSummary = `
41065
41065
  $first: Int!
41066
41066
  $after: Int!
41067
41067
  $sortBy: [GraphqlSort!]
41068
+ $filterBy: [GraphqlFilter!]
41068
41069
  ) {
41069
41070
  products(first: $first, after: $after, sortBy: $sortBy) {
41070
41071
  page {
41071
41072
  name
41072
- subscriptions {
41073
+ subscriptions(filterBy: $filterBy) {
41073
41074
  pageInfo {
41074
41075
  totalItems
41075
41076
  }
@@ -45161,13 +45162,7 @@ var WfoSidebar = ({ overrideMenuItems }) => {
45161
45162
  }
45162
45163
  ];
45163
45164
  const defaultMenuItemsFilteredByPolicy = defaultMenuItems.filter(
45164
- ({ href }) => {
45165
- if (!href) {
45166
- return true;
45167
- }
45168
- const policyResource = urlPolicyMap.get(href);
45169
- return policyResource ? isAllowed(policyResource) : true;
45170
- }
45165
+ ({ href }) => menuItemIsAllowed(href, urlPolicyMap, isAllowed)
45171
45166
  );
45172
45167
  const defaultMenu = [
45173
45168
  {
@@ -45199,6 +45194,15 @@ var WfoSidebar = ({ overrideMenuItems }) => {
45199
45194
  );
45200
45195
  };
45201
45196
 
45197
+ // src/components/WfoPageTemplate/WfoSidebar/utils/menuItemIsAllowed.ts
45198
+ var menuItemIsAllowed = (url, urlPolicyMap2, isAllowedHandler) => {
45199
+ if (!url) {
45200
+ return true;
45201
+ }
45202
+ const policyResource = urlPolicyMap2.get(url);
45203
+ return policyResource ? isAllowedHandler(policyResource) : true;
45204
+ };
45205
+
45202
45206
  // src/components/WfoPageTemplate/WfoPageTemplate/WfoPageTemplate.tsx
45203
45207
  import { Fragment as Fragment7, jsx as jsx67, jsxs as jsxs48 } from "@emotion/react/jsx-runtime";
45204
45208
  var WfoPageTemplate = ({
@@ -46468,6 +46472,7 @@ var WfoInUseByRelations = ({
46468
46472
  Link5,
46469
46473
  {
46470
46474
  href: `/${PATH_SUBSCRIPTIONS}/${inUseByRelationDetails.subscriptionId}`,
46475
+ target: "_blank",
46471
46476
  children: inUseByRelationDetails.description
46472
46477
  }
46473
46478
  ),
@@ -46941,13 +46946,16 @@ var WfoSubscriptionDetailTree = ({
46941
46946
  ),
46942
46947
  selectedIds.length !== 0 && selectedIds.map((id, index) => {
46943
46948
  const block = idToNodeMap[selectedIds[index]];
46949
+ const inUseByRelationsWithoutCurrentSubscription = block.inUseByRelations.filter(
46950
+ (inUseByRelation) => inUseByRelation.subscription_id !== subscriptionId
46951
+ );
46944
46952
  return /* @__PURE__ */ jsx90(
46945
46953
  WfoSubscriptionProductBlock,
46946
46954
  {
46947
46955
  ownerSubscriptionId: block.ownerSubscriptionId,
46948
46956
  subscriptionInstanceId: block.subscriptionInstanceId,
46949
46957
  productBlockInstanceValues: block.productBlockInstanceValues,
46950
- inUseByRelations: block.inUseByRelations,
46958
+ inUseByRelations: inUseByRelationsWithoutCurrentSubscription,
46951
46959
  isOutsideCurrentSubscription: block.isOutsideCurrentSubscription,
46952
46960
  id
46953
46961
  },
@@ -49839,23 +49847,20 @@ var CONTACT_PERSONS_ENDPOINT = "surf/crm/contacts";
49839
49847
  var IMS_NODES_ENDPOINT = "/surf/ims/nodes";
49840
49848
  var VLANS_BY_SERVICE_PORT = "surf/subscriptions/vlans-by-service-port";
49841
49849
  var FREE_PORTS_BY_NODE_SUBSCRIPTION_AND_SPEED = "surf/ims/free_ports";
49842
- var SUBSCRIPTIONS = "subscriptions";
49843
- var subscriptionsParams = (tagList = [], statusList = [], productList = []) => {
49844
- const filters = [];
49845
- if (tagList.length)
49846
- filters.push(`tags,${encodeURIComponent(tagList.join("-"))}`);
49847
- if (statusList.length)
49848
- filters.push(`statuses,${encodeURIComponent(statusList.join("-"))}`);
49849
- if (productList.length)
49850
- filters.push(`products,${encodeURIComponent(productList.join("-"))}`);
49851
- const params = new URLSearchParams();
49852
- if (filters.length)
49853
- params.set("filter", filters.join(","));
49854
- return `${filters.length ? "?" : ""}${params.toString()}`;
49855
- };
49856
- var nodeSubscriptions = (statusList = []) => {
49857
- return subscriptionsParams(["Node"], statusList);
49858
- };
49850
+ var nodeSubscriptionsQuery = `query NodeSubscriptions(
49851
+ $statuses: String!
49852
+ ) {
49853
+ subscriptions(filterBy: [
49854
+ {field: "tag", value: "Node"},
49855
+ {field: "status", value: $statuses}
49856
+
49857
+ ], first: ${NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS}, after: 0) {
49858
+ page {
49859
+ description
49860
+ subscriptionId
49861
+ }
49862
+ }
49863
+ }`;
49859
49864
  var formFieldsApi = orchestratorApi.injectEndpoints({
49860
49865
  endpoints: (build) => ({
49861
49866
  locationCodes: build.query({
@@ -49918,16 +49923,16 @@ var formFieldsApi = orchestratorApi.injectEndpoints({
49918
49923
  baseQueryType: "fetch" /* fetch */
49919
49924
  }
49920
49925
  }),
49921
- subscriptionsWithFilters: build.query({
49922
- query: ({ filters }) => ({
49923
- url: `${SUBSCRIPTIONS}/${filters}`,
49924
- method: "GET",
49925
- headers: {
49926
- "Content-Type": "application/json"
49926
+ getNodeSubscriptionOptions: build.query({
49927
+ query: ({ statuses }) => ({
49928
+ document: nodeSubscriptionsQuery,
49929
+ variables: {
49930
+ statuses
49927
49931
  }
49928
49932
  }),
49929
- extraOptions: {
49930
- baseQueryType: "fetch" /* fetch */
49933
+ transformResponse: (response) => {
49934
+ var _a;
49935
+ return ((_a = response == null ? void 0 : response.subscriptions) == null ? void 0 : _a.page) || [];
49931
49936
  }
49932
49937
  })
49933
49938
  })
@@ -49938,7 +49943,7 @@ var {
49938
49943
  useImsNodesQuery,
49939
49944
  useVlansByServicePortQuery,
49940
49945
  useFreePortsByNodeSubscriptionIdAndSpeedQuery,
49941
- useSubscriptionsWithFiltersQuery
49946
+ useGetNodeSubscriptionOptionsQuery
49942
49947
  } = formFieldsApi;
49943
49948
 
49944
49949
  // src/components/WfoForms/formFields/LocationCodeField.tsx
@@ -50412,10 +50417,10 @@ var imsPortIdFieldStyling = css20`
50412
50417
 
50413
50418
  // src/components/WfoForms/formFields/deprecated/ImsPortIdField.tsx
50414
50419
  import { jsx as jsx130, jsxs as jsxs77 } from "@emotion/react/jsx-runtime";
50415
- function nodeToOptionCorelink(node) {
50420
+ function nodeToOptionCorelink(nodeOption) {
50416
50421
  return {
50417
- value: node.subscription_id,
50418
- label: `${node.subscription_id.substring(0, 8)} ${node.description.trim() || "<No description>"}`
50422
+ value: nodeOption.subscriptionId,
50423
+ label: `${nodeOption.subscriptionId.substring(0, 8)} ${nodeOption.description.trim() || "<No description>"}`
50419
50424
  };
50420
50425
  }
50421
50426
  filterDOMProps19.register(
@@ -50458,13 +50463,13 @@ function ImsPortId(_a) {
50458
50463
  "imsPortMode",
50459
50464
  "nodeStatuses"
50460
50465
  ]);
50461
- const t = useTranslations33("pydanticForms");
50462
- const { reactSelectInnerComponentStyles } = useWithOrchestratorTheme(getSelectFieldStyles);
50463
- const [nodes, setNodes] = useState21([]);
50466
+ var _a2;
50464
50467
  const [nodeId, setNodeId] = useState21(
50465
50468
  nodeSubscriptionId
50466
50469
  );
50467
50470
  const [ports, setPorts] = useState21([]);
50471
+ const t = useTranslations33("pydanticForms");
50472
+ const { reactSelectInnerComponentStyles } = useWithOrchestratorTheme(getSelectFieldStyles);
50468
50473
  const {
50469
50474
  data: freePorts,
50470
50475
  error: freePortsError,
@@ -50479,8 +50484,8 @@ function ImsPortId(_a) {
50479
50484
  skip: !nodeId
50480
50485
  }
50481
50486
  );
50482
- const { data: nodeSubscriptionsData } = useSubscriptionsWithFiltersQuery({
50483
- filters: nodeSubscriptions(nodeStatuses != null ? nodeStatuses : ["active"])
50487
+ const { data: nodeSubscriptionOptions } = useGetNodeSubscriptionOptionsQuery({
50488
+ statuses: (_a2 = nodeStatuses == null ? void 0 : nodeStatuses.join("-")) != null ? _a2 : "active"
50484
50489
  });
50485
50490
  useEffect12(() => {
50486
50491
  setPorts(freePorts != null ? freePorts : []);
@@ -50497,38 +50502,18 @@ function ImsPortId(_a) {
50497
50502
  },
50498
50503
  [onChange]
50499
50504
  );
50500
- useEffect12(() => {
50501
- if (nodeSubscriptionId && nodeSubscriptionsData) {
50502
- setNodes(
50503
- nodeSubscriptionsData.filter(
50504
- (subscription) => subscription.subscription_id === nodeSubscriptionId
50505
- )
50506
- );
50507
- onChangeNodes({ value: nodeSubscriptionId });
50508
- } else {
50509
- setNodes(nodeSubscriptionsData != null ? nodeSubscriptionsData : []);
50510
- }
50511
- }, [
50512
- onChangeNodes,
50513
- nodeStatuses,
50514
- nodeSubscriptionId,
50515
- loading,
50516
- nodeSubscriptionsData
50517
- ]);
50518
50505
  const nodesPlaceholder = loading ? t("widgets.nodePort.loadingNodes") : t("widgets.nodePort.selectNode");
50519
50506
  const portPlaceholder = loading ? t("widgets.nodePort.loadingPorts") : nodeId ? t("widgets.nodePort.selectPort") : t("widgets.nodePort.selectNodeFirst");
50520
- const node_options = nodes.map(
50521
- nodeToOptionCorelink
50522
- );
50523
- node_options.sort((x, y) => x.label.localeCompare(y.label));
50524
- const node_value = node_options.find(
50507
+ const nodeOptions = (nodeSubscriptionOptions == null ? void 0 : nodeSubscriptionOptions.map(nodeToOptionCorelink)) || [];
50508
+ nodeOptions.sort((x, y) => x.label.localeCompare(y.label));
50509
+ const nodeValue = nodeOptions.find(
50525
50510
  (option) => option.value === (nodeId == null ? void 0 : nodeId.toString())
50526
50511
  );
50527
- const port_options = ports.map((aPort) => ({
50512
+ const portOptions = ports.map((aPort) => ({
50528
50513
  value: aPort.id,
50529
50514
  label: `${aPort.port} (${aPort.status}) (${aPort.iface_type})`
50530
50515
  })).sort((x, y) => x.label.localeCompare(y.label));
50531
- const port_value = port_options.find((option) => option.value === value);
50516
+ const portValue = portOptions.find((option) => option.value === value);
50532
50517
  return /* @__PURE__ */ jsx130(EuiFlexItem16, { css: imsPortIdFieldStyling, children: /* @__PURE__ */ jsx130("section", __spreadProps(__spreadValues({}, filterDOMProps19(props)), { children: /* @__PURE__ */ jsx130(
50533
50518
  EuiFormRow12,
50534
50519
  {
@@ -50551,11 +50536,11 @@ function ImsPortId(_a) {
50551
50536
  inputId: `${id}.node.search`,
50552
50537
  name: `${name}.node`,
50553
50538
  onChange: onChangeNodes,
50554
- options: node_options,
50539
+ options: nodeOptions,
50555
50540
  placeholder: nodesPlaceholder,
50556
- value: node_value,
50541
+ value: nodeValue,
50557
50542
  isSearchable: true,
50558
- isDisabled: disabled || readOnly || !!nodeSubscriptionId || nodes.length === 0,
50543
+ isDisabled: disabled || readOnly || nodeOptions.length === 0 || !!nodeSubscriptionId,
50559
50544
  styles: reactSelectInnerComponentStyles
50560
50545
  }
50561
50546
  )
@@ -50569,11 +50554,11 @@ function ImsPortId(_a) {
50569
50554
  onChange: (selected) => {
50570
50555
  onChange(selected == null ? void 0 : selected.value);
50571
50556
  },
50572
- options: port_options,
50557
+ options: portOptions,
50573
50558
  placeholder: portPlaceholder,
50574
- value: port_value || null,
50559
+ value: portValue || null,
50575
50560
  isSearchable: true,
50576
- isDisabled: disabled || readOnly || ports.length === 0,
50561
+ isDisabled: disabled || readOnly || portOptions.length === 0,
50577
50562
  styles: reactSelectInnerComponentStyles
50578
50563
  }
50579
50564
  ) }) })
@@ -52542,7 +52527,7 @@ function fillPreselection(form, router) {
52542
52527
  }
52543
52528
  return form;
52544
52529
  }
52545
- function UserInputForm({
52530
+ function WfoUserInputForm({
52546
52531
  router,
52547
52532
  stepUserInput,
52548
52533
  validSubmit,
@@ -52742,7 +52727,6 @@ function UserInputForm({
52742
52727
  ) })
52743
52728
  ] }) }) });
52744
52729
  }
52745
- var UserInputForm_default = UserInputForm;
52746
52730
 
52747
52731
  // src/components/WfoForms/UserInputFormWizard.tsx
52748
52732
  import { useEffect as useEffect16, useState as useState27 } from "react";
@@ -52800,7 +52784,7 @@ var UserInputFormWizard = ({
52800
52784
  }
52801
52785
  const key = hash.sha1({ form: currentForm.form, length: forms.length });
52802
52786
  return /* @__PURE__ */ jsx143(
52803
- UserInputForm_default,
52787
+ WfoUserInputForm,
52804
52788
  {
52805
52789
  router,
52806
52790
  stepUserInput: currentForm.form,
@@ -57505,12 +57489,18 @@ var taskListSummaryQueryVariables = __spreadProps(__spreadValues({}, baseQueryVa
57505
57489
  ]
57506
57490
  });
57507
57491
  var productsSummaryQueryVariables = {
57508
- first: 1e3,
57492
+ first: MAXIMUM_ITEMS_FOR_BULK_FETCHING,
57509
57493
  after: 0,
57510
57494
  sortBy: {
57511
57495
  field: "name",
57512
57496
  order: "ASC" /* ASC */
57513
- }
57497
+ },
57498
+ filterBy: [
57499
+ {
57500
+ field: "status",
57501
+ value: `!${"terminated" /* TERMINATED */}`
57502
+ }
57503
+ ]
57514
57504
  };
57515
57505
 
57516
57506
  // src/components/WfoSummary/WfoActiveWorkflowsSummaryCard.tsx
@@ -57707,7 +57697,7 @@ var WfoProductsSummaryCard = () => {
57707
57697
 
57708
57698
  // src/components/WfoRouteChangeListener/WfoRouteChangeListener.tsx
57709
57699
  import { useEffect as useEffect30 } from "react";
57710
- import { getSession as getSession3, signOut as signOut4 } from "next-auth/react";
57700
+ import { getSession as getSession3, signIn } from "next-auth/react";
57711
57701
  import { useRouter as useRouter16 } from "next/router";
57712
57702
  import { Fragment as Fragment47, jsx as jsx199 } from "@emotion/react/jsx-runtime";
57713
57703
  var WfoRouteChangeListener = () => {
@@ -57717,7 +57707,7 @@ var WfoRouteChangeListener = () => {
57717
57707
  if (authActive) {
57718
57708
  getSession3().then((session) => {
57719
57709
  if (!session) {
57720
- signOut4();
57710
+ signIn();
57721
57711
  }
57722
57712
  });
57723
57713
  }
@@ -58843,6 +58833,7 @@ export {
58843
58833
  WfoTimeline,
58844
58834
  WfoToastsList,
58845
58835
  WfoTrash,
58836
+ WfoUserInputForm,
58846
58837
  WfoValueCell,
58847
58838
  WfoViewList,
58848
58839
  WfoWarningTriangle,
@@ -58918,6 +58909,7 @@ export {
58918
58909
  mapSortableAndFilterableValuesToTableColumnConfig,
58919
58910
  mapSubscriptionSummaryToSummaryCardListItem,
58920
58911
  mapWorkflowDefinitionToWorkflowListItem,
58912
+ menuItemIsAllowed,
58921
58913
  metaDataTabs,
58922
58914
  onlyUnique,
58923
58915
  optionalArrayMapper,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchestrator-ui/orchestrator-ui-components",
3
- "version": "1.21.0",
3
+ "version": "1.22.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Library of UI Components used to display the workflow orchestrator frontend",
6
6
  "author": {
@@ -410,7 +410,7 @@ function fillPreselection(form: JSONSchema6, router: NextRouter) {
410
410
  return form;
411
411
  }
412
412
 
413
- function UserInputForm({
413
+ export function WfoUserInputForm({
414
414
  router,
415
415
  stepUserInput,
416
416
  validSubmit,
@@ -668,5 +668,3 @@ function UserInputForm({
668
668
  </div>
669
669
  );
670
670
  }
671
-
672
- export default UserInputForm;
@@ -21,7 +21,7 @@ import { ConfirmDialogActions } from '@/contexts';
21
21
  import { HttpStatus, handlePromiseErrorWithCallback } from '@/rtk';
22
22
  import { FormNotCompleteResponse, InputForm } from '@/types/forms';
23
23
 
24
- import UserInputForm from './UserInputForm';
24
+ import { WfoUserInputForm } from './UserInputForm';
25
25
 
26
26
  interface Form {
27
27
  form: InputForm;
@@ -104,7 +104,7 @@ export const UserInputFormWizard = ({
104
104
  * */
105
105
  const key = hash.sha1({ form: currentForm.form, length: forms.length });
106
106
  return (
107
- <UserInputForm
107
+ <WfoUserInputForm
108
108
  key={key}
109
109
  router={router}
110
110
  stepUserInput={currentForm.form}
@@ -22,15 +22,14 @@ import { EuiFlexItem, EuiFormRow, EuiText } from '@elastic/eui';
22
22
 
23
23
  import { useWithOrchestratorTheme } from '@/hooks';
24
24
  import {
25
- nodeSubscriptions,
26
25
  useFreePortsByNodeSubscriptionIdAndSpeedQuery,
27
- useSubscriptionsWithFiltersQuery,
26
+ useGetNodeSubscriptionOptionsQuery,
28
27
  } from '@/rtk/endpoints/formFields';
29
28
 
30
29
  import { getSelectFieldStyles } from '../SelectField/styles';
31
30
  import { FieldProps, Option } from '../types';
32
31
  import { imsPortIdFieldStyling } from './ImsPortIdFieldStyling';
33
- import { ImsNode, ImsPort, NodeSubscription } from './types';
32
+ import { ImsPort, NodeSubscriptionOption } from './types';
34
33
 
35
34
  export type ImsPortFieldProps = FieldProps<
36
35
  number,
@@ -42,11 +41,11 @@ export type ImsPortFieldProps = FieldProps<
42
41
  }
43
42
  >;
44
43
 
45
- function nodeToOptionCorelink(node: NodeSubscription): Option {
44
+ function nodeToOptionCorelink(nodeOption: NodeSubscriptionOption): Option {
46
45
  return {
47
- value: node.subscription_id,
48
- label: `${node.subscription_id.substring(0, 8)} ${
49
- node.description.trim() || '<No description>'
46
+ value: nodeOption.subscriptionId,
47
+ label: `${nodeOption.subscriptionId.substring(0, 8)} ${
48
+ nodeOption.description.trim() || '<No description>'
50
49
  }`,
51
50
  };
52
51
  }
@@ -84,17 +83,16 @@ function ImsPortId({
84
83
  nodeStatuses,
85
84
  ...props
86
85
  }: ImsPortFieldProps) {
87
- const t = useTranslations('pydanticForms');
88
- // React select allows callbacks to supply style for innercomponents: https://react-select.com/styles#inner-components
89
- const { reactSelectInnerComponentStyles } =
90
- useWithOrchestratorTheme(getSelectFieldStyles);
91
-
92
- const [nodes, setNodes] = useState<ImsNode[] | NodeSubscription[]>([]);
93
86
  const [nodeId, setNodeId] = useState<number | string | undefined>(
94
87
  nodeSubscriptionId,
95
88
  );
96
89
  const [ports, setPorts] = useState<ImsPort[]>([]);
97
90
 
91
+ const t = useTranslations('pydanticForms');
92
+ // React select allows callbacks to supply style for innercomponents: https://react-select.com/styles#inner-components
93
+ const { reactSelectInnerComponentStyles } =
94
+ useWithOrchestratorTheme(getSelectFieldStyles);
95
+
98
96
  const {
99
97
  data: freePorts,
100
98
  error: freePortsError,
@@ -110,9 +108,10 @@ function ImsPortId({
110
108
  },
111
109
  );
112
110
 
113
- const { data: nodeSubscriptionsData } = useSubscriptionsWithFiltersQuery({
114
- filters: nodeSubscriptions(nodeStatuses ?? ['active']),
115
- });
111
+ const { data: nodeSubscriptionOptions } =
112
+ useGetNodeSubscriptionOptionsQuery({
113
+ statuses: nodeStatuses?.join('-') ?? 'active',
114
+ });
116
115
 
117
116
  useEffect(() => {
118
117
  setPorts(freePorts ?? []);
@@ -133,26 +132,6 @@ function ImsPortId({
133
132
  [onChange],
134
133
  );
135
134
 
136
- useEffect(() => {
137
- if (nodeSubscriptionId && nodeSubscriptionsData) {
138
- setNodes(
139
- nodeSubscriptionsData.filter(
140
- (subscription) =>
141
- subscription.subscription_id === nodeSubscriptionId,
142
- ),
143
- );
144
- onChangeNodes({ value: nodeSubscriptionId } as Option);
145
- } else {
146
- setNodes(nodeSubscriptionsData ?? []);
147
- }
148
- }, [
149
- onChangeNodes,
150
- nodeStatuses,
151
- nodeSubscriptionId,
152
- loading,
153
- nodeSubscriptionsData,
154
- ]);
155
-
156
135
  const nodesPlaceholder = loading
157
136
  ? t('widgets.nodePort.loadingNodes')
158
137
  : t('widgets.nodePort.selectNode');
@@ -163,22 +142,21 @@ function ImsPortId({
163
142
  ? t('widgets.nodePort.selectPort')
164
143
  : t('widgets.nodePort.selectNodeFirst');
165
144
 
166
- const node_options: Option[] = (nodes as NodeSubscription[]).map(
167
- nodeToOptionCorelink,
168
- );
145
+ const nodeOptions: Option[] =
146
+ nodeSubscriptionOptions?.map(nodeToOptionCorelink) || [];
169
147
 
170
- node_options.sort((x, y) => x.label.localeCompare(y.label));
171
- const node_value = node_options.find(
148
+ nodeOptions.sort((x, y) => x.label.localeCompare(y.label));
149
+ const nodeValue = nodeOptions.find(
172
150
  (option) => option.value === nodeId?.toString(),
173
151
  );
174
152
 
175
- const port_options: Option<number>[] = ports
153
+ const portOptions: Option<number>[] = ports
176
154
  .map((aPort) => ({
177
155
  value: aPort.id,
178
156
  label: `${aPort.port} (${aPort.status}) (${aPort.iface_type})`,
179
157
  }))
180
158
  .sort((x, y) => x.label.localeCompare(y.label));
181
- const port_value = port_options.find((option) => option.value === value);
159
+ const portValue = portOptions.find((option) => option.value === value);
182
160
 
183
161
  return (
184
162
  <EuiFlexItem css={imsPortIdFieldStyling}>
@@ -202,15 +180,15 @@ function ImsPortId({
202
180
  inputId={`${id}.node.search`}
203
181
  name={`${name}.node`}
204
182
  onChange={onChangeNodes}
205
- options={node_options}
183
+ options={nodeOptions}
206
184
  placeholder={nodesPlaceholder}
207
- value={node_value}
185
+ value={nodeValue}
208
186
  isSearchable={true}
209
187
  isDisabled={
210
188
  disabled ||
211
189
  readOnly ||
212
- !!nodeSubscriptionId ||
213
- nodes.length === 0
190
+ nodeOptions.length === 0 ||
191
+ !!nodeSubscriptionId
214
192
  }
215
193
  styles={reactSelectInnerComponentStyles}
216
194
  />
@@ -224,14 +202,14 @@ function ImsPortId({
224
202
  onChange={(selected) => {
225
203
  onChange(selected?.value);
226
204
  }}
227
- options={port_options}
205
+ options={portOptions}
228
206
  placeholder={portPlaceholder}
229
- value={port_value || null}
207
+ value={portValue || null}
230
208
  isSearchable={true}
231
209
  isDisabled={
232
210
  disabled ||
233
211
  readOnly ||
234
- ports.length === 0
212
+ portOptions.length === 0
235
213
  }
236
214
  styles={reactSelectInnerComponentStyles}
237
215
  />
@@ -1,18 +1,4 @@
1
- import { ProductDefinition } from '@/types';
2
-
3
- export interface NodeSubscription {
4
- name: string;
5
- subscription_id: string;
6
- description: string;
7
- product: ProductDefinition;
8
- product_id: string;
9
- status: string;
10
- insync: boolean;
11
- customer_id: string;
12
- start_date: number;
13
- end_date: number;
14
- note: string;
15
- }
1
+ import { GraphQlSinglePage, Subscription } from '@/types';
16
2
 
17
3
  export interface ServicePort {
18
4
  subscription_id?: string;
@@ -77,3 +63,12 @@ export interface IpBlock {
77
63
  is_subnet: boolean;
78
64
  state_repr: string;
79
65
  }
66
+
67
+ export type NodeSubscriptionOption = Pick<
68
+ Subscription,
69
+ 'subscriptionId' | 'description'
70
+ >;
71
+
72
+ export interface NodeSubscriptionOptionsResult {
73
+ subscriptions: GraphQlSinglePage<NodeSubscriptionOption>;
74
+ }
@@ -6,7 +6,7 @@ import { useRouter } from 'next/router';
6
6
  import { EuiSideNav, EuiSpacer } from '@elastic/eui';
7
7
  import { EuiSideNavItemType } from '@elastic/eui/src/components/side_nav/side_nav_types';
8
8
 
9
- import { WfoIsAllowedToRender } from '@/components';
9
+ import { WfoIsAllowedToRender, menuItemIsAllowed } from '@/components';
10
10
  import { getMenuStyles } from '@/components/WfoPageTemplate/WfoSidebar/styles';
11
11
  import { WfoStartWorkflowButtonComboBox } from '@/components/WfoStartButton/WfoStartWorkflowComboBox';
12
12
  import { PolicyResource } from '@/configuration/policy-resources';
@@ -225,15 +225,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
225
225
  ];
226
226
 
227
227
  const defaultMenuItemsFilteredByPolicy = defaultMenuItems.filter(
228
- ({ href }) => {
229
- if (!href) {
230
- return true;
231
- }
232
-
233
- const policyResource = urlPolicyMap.get(href);
234
-
235
- return policyResource ? isAllowed(policyResource) : true;
236
- },
228
+ ({ href }) => menuItemIsAllowed(href, urlPolicyMap, isAllowed),
237
229
  );
238
230
 
239
231
  const defaultMenu: EuiSideNavItemType<object>[] = [
@@ -1,2 +1,3 @@
1
1
  export * from './WfoSidebar';
2
2
  export * from './WfoMenuLink';
3
+ export * from './utils';
@@ -0,0 +1 @@
1
+ export * from './menuItemIsAllowed';
@@ -0,0 +1,48 @@
1
+ import { menuItemIsAllowed } from './menuItemIsAllowed';
2
+
3
+ const isAllowedHandlerMock = jest.fn();
4
+ const testUrlMap = new Map<string, string>([
5
+ ['/testUrl1', '/testPolicyResource1'],
6
+ ['/testUrl2', '/testPolicyResource2'],
7
+ ]);
8
+
9
+ describe('menuItemIsAllowed', () => {
10
+ beforeEach(() => {
11
+ isAllowedHandlerMock.mockClear();
12
+ });
13
+
14
+ it.each([undefined, ''])(
15
+ 'returns true when the value of the url is: "%s"',
16
+ (url) => {
17
+ const result = menuItemIsAllowed(
18
+ url,
19
+ testUrlMap,
20
+ isAllowedHandlerMock,
21
+ );
22
+
23
+ expect(result).toEqual(true);
24
+ expect(isAllowedHandlerMock).not.toHaveBeenCalled();
25
+ },
26
+ );
27
+
28
+ it('returns the result of the isAllowedHandler when url is in the url-map', () => {
29
+ const url = '/testUrl1';
30
+ isAllowedHandlerMock.mockReturnValue(false);
31
+
32
+ const result = menuItemIsAllowed(url, testUrlMap, isAllowedHandlerMock);
33
+
34
+ expect(result).toEqual(false);
35
+ expect(isAllowedHandlerMock).toHaveBeenCalledWith(
36
+ '/testPolicyResource1',
37
+ );
38
+ });
39
+
40
+ it('returns true if url is not in the url-map', () => {
41
+ const url = '/does-not-exist';
42
+
43
+ const result = menuItemIsAllowed(url, testUrlMap, isAllowedHandlerMock);
44
+
45
+ expect(result).toEqual(true);
46
+ expect(isAllowedHandlerMock).not.toHaveBeenCalled();
47
+ });
48
+ });
@@ -0,0 +1,13 @@
1
+ export const menuItemIsAllowed = (
2
+ url: string | undefined,
3
+ urlPolicyMap: Map<string, string>,
4
+ isAllowedHandler: (resource?: string) => boolean,
5
+ ) => {
6
+ if (!url) {
7
+ return true;
8
+ }
9
+
10
+ const policyResource = urlPolicyMap.get(url);
11
+
12
+ return policyResource ? isAllowedHandler(policyResource) : true;
13
+ };
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect } from 'react';
2
2
 
3
- import { getSession, signOut } from 'next-auth/react';
3
+ import { getSession, signIn } from 'next-auth/react';
4
4
  import { useRouter } from 'next/router';
5
5
 
6
6
  import { useGetOrchestratorConfig } from '@/hooks';
@@ -13,7 +13,7 @@ export const WfoRouteChangeListener = () => {
13
13
  if (authActive) {
14
14
  getSession().then((session) => {
15
15
  if (!session) {
16
- signOut();
16
+ signIn();
17
17
  }
18
18
  });
19
19
  }
@@ -59,6 +59,7 @@ export const WfoInUseByRelations = ({
59
59
  value: (
60
60
  <Link
61
61
  href={`/${PATH_SUBSCRIPTIONS}/${inUseByRelationDetails.subscriptionId}`}
62
+ target="_blank"
62
63
  >
63
64
  {inUseByRelationDetails.description}
64
65
  </Link>
@@ -153,6 +153,13 @@ export const WfoSubscriptionDetailTree = ({
153
153
  selectedIds.map((id, index) => {
154
154
  const block = idToNodeMap[selectedIds[index]];
155
155
 
156
+ const inUseByRelationsWithoutCurrentSubscription =
157
+ block.inUseByRelations.filter(
158
+ (inUseByRelation) =>
159
+ inUseByRelation.subscription_id !==
160
+ subscriptionId,
161
+ );
162
+
156
163
  return (
157
164
  <WfoSubscriptionProductBlock
158
165
  key={index}
@@ -165,7 +172,9 @@ export const WfoSubscriptionDetailTree = ({
165
172
  productBlockInstanceValues={
166
173
  block.productBlockInstanceValues
167
174
  }
168
- inUseByRelations={block.inUseByRelations}
175
+ inUseByRelations={
176
+ inUseByRelationsWithoutCurrentSubscription
177
+ }
169
178
  isOutsideCurrentSubscription={
170
179
  block.isOutsideCurrentSubscription
171
180
  }
@@ -1,3 +1,4 @@
1
+ import { MAXIMUM_ITEMS_FOR_BULK_FETCHING } from '@/configuration';
1
2
  import {
2
3
  GraphqlFilter,
3
4
  GraphqlQueryVariables,
@@ -5,6 +6,7 @@ import {
5
6
  ProductsSummary,
6
7
  SortOrder,
7
8
  Subscription,
9
+ SubscriptionStatus,
8
10
  } from '@/types';
9
11
 
10
12
  const baseQueryVariables: Partial<GraphqlQueryVariables<unknown>> = {
@@ -100,12 +102,19 @@ export const taskListSummaryQueryVariables: GraphqlQueryVariables<Process> = {
100
102
  ],
101
103
  };
102
104
 
103
- export const productsSummaryQueryVariables: GraphqlQueryVariables<ProductsSummary> =
104
- {
105
- first: 1000,
106
- after: 0,
107
- sortBy: {
108
- field: 'name',
109
- order: SortOrder.ASC,
105
+ export const productsSummaryQueryVariables: GraphqlQueryVariables<
106
+ ProductsSummary & Subscription
107
+ > = {
108
+ first: MAXIMUM_ITEMS_FOR_BULK_FETCHING,
109
+ after: 0,
110
+ sortBy: {
111
+ field: 'name',
112
+ order: SortOrder.ASC,
113
+ },
114
+ filterBy: [
115
+ {
116
+ field: 'status',
117
+ value: `!${SubscriptionStatus.TERMINATED}`,
110
118
  },
111
- };
119
+ ],
120
+ };
package/src/rtk/api.ts CHANGED
@@ -65,7 +65,7 @@ export const orchestratorApi = createApi({
65
65
  const { baseQueryType, apiName } = extraOptions || {};
66
66
 
67
67
  const state = api.getState() as RootState;
68
- const { orchestratorApiBaseUrl, graphqlEndpointCore } =
68
+ const { orchestratorApiBaseUrl, graphqlEndpointCore, authActive } =
69
69
  state.orchestratorConfig;
70
70
 
71
71
  const customApi = state.customApis?.find(
@@ -87,7 +87,7 @@ export const orchestratorApi = createApi({
87
87
  prepareHeaders,
88
88
  customErrors: (error) => {
89
89
  const { name, message, stack, response } = error;
90
- if (response?.errors && response.errors?.length > 0) {
90
+ if (response?.errors?.length && authActive) {
91
91
  response.errors.map((error) => {
92
92
  // TODO: https://github.com/workfloworchestrator/orchestrator-ui-library/issues/1105
93
93
  if (
@@ -1,5 +1,12 @@
1
- import { ImsNode, ImsPort, NodeSubscription, VlanRange } from '@/components';
1
+ import {
2
+ ImsNode,
3
+ ImsPort,
4
+ NodeSubscriptionOption,
5
+ NodeSubscriptionOptionsResult,
6
+ VlanRange,
7
+ } from '@/components';
2
8
  import { ContactPerson } from '@/components/WfoForms/formFields/types';
9
+ import { NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS } from '@/configuration';
3
10
  import { BaseQueryTypes, orchestratorApi } from '@/rtk';
4
11
 
5
12
  const LOCATION_CODES_ENDPOINT = 'surf/crm/location_codes';
@@ -7,31 +14,21 @@ const CONTACT_PERSONS_ENDPOINT = 'surf/crm/contacts';
7
14
  const IMS_NODES_ENDPOINT = '/surf/ims/nodes';
8
15
  const VLANS_BY_SERVICE_PORT = 'surf/subscriptions/vlans-by-service-port';
9
16
  const FREE_PORTS_BY_NODE_SUBSCRIPTION_AND_SPEED = 'surf/ims/free_ports';
10
- const SUBSCRIPTIONS = 'subscriptions';
11
17
 
12
- export const subscriptionsParams = (
13
- tagList: string[] = [],
14
- statusList: string[] = [],
15
- productList: string[] = [],
16
- ): string => {
17
- const filters = [];
18
-
19
- if (tagList.length)
20
- filters.push(`tags,${encodeURIComponent(tagList.join('-'))}`);
21
- if (statusList.length)
22
- filters.push(`statuses,${encodeURIComponent(statusList.join('-'))}`);
23
- if (productList.length)
24
- filters.push(`products,${encodeURIComponent(productList.join('-'))}`);
25
-
26
- const params = new URLSearchParams();
27
- if (filters.length) params.set('filter', filters.join(','));
28
-
29
- return `${filters.length ? '?' : ''}${params.toString()}`;
30
- };
31
-
32
- export const nodeSubscriptions = (statusList: string[] = []): string => {
33
- return subscriptionsParams(['Node'], statusList);
34
- };
18
+ const nodeSubscriptionsQuery = `query NodeSubscriptions(
19
+ $statuses: String!
20
+ ) {
21
+ subscriptions(filterBy: [
22
+ {field: "tag", value: "Node"},
23
+ {field: "status", value: $statuses}
24
+
25
+ ], first: ${NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS}, after: 0) {
26
+ page {
27
+ description
28
+ subscriptionId
29
+ }
30
+ }
31
+ }`;
35
32
 
36
33
  const formFieldsApi = orchestratorApi.injectEndpoints({
37
34
  endpoints: (build) => ({
@@ -107,20 +104,19 @@ const formFieldsApi = orchestratorApi.injectEndpoints({
107
104
  baseQueryType: BaseQueryTypes.fetch,
108
105
  },
109
106
  }),
110
- subscriptionsWithFilters: build.query<
111
- NodeSubscription[],
112
- { filters: string }
107
+ getNodeSubscriptionOptions: build.query<
108
+ NodeSubscriptionOption[],
109
+ { statuses: string }
113
110
  >({
114
- query: ({ filters }) => ({
115
- url: `${SUBSCRIPTIONS}/${filters}`,
116
- method: 'GET',
117
- headers: {
118
- 'Content-Type': 'application/json',
111
+ query: ({ statuses }) => ({
112
+ document: nodeSubscriptionsQuery,
113
+ variables: {
114
+ statuses,
119
115
  },
120
116
  }),
121
- extraOptions: {
122
- baseQueryType: BaseQueryTypes.fetch,
123
- },
117
+ transformResponse: (
118
+ response: NodeSubscriptionOptionsResult,
119
+ ): NodeSubscriptionOption[] => response?.subscriptions?.page || [],
124
120
  }),
125
121
  }),
126
122
  });
@@ -131,5 +127,5 @@ export const {
131
127
  useImsNodesQuery,
132
128
  useVlansByServicePortQuery,
133
129
  useFreePortsByNodeSubscriptionIdAndSpeedQuery,
134
- useSubscriptionsWithFiltersQuery,
130
+ useGetNodeSubscriptionOptionsQuery,
135
131
  } = formFieldsApi;
@@ -4,6 +4,7 @@ import {
4
4
  GraphqlQueryVariables,
5
5
  ProductDefinitionsResult,
6
6
  ProductsSummary,
7
+ Subscription,
7
8
  } from '@/types';
8
9
 
9
10
  export const productsSummary = `
@@ -11,11 +12,12 @@ export const productsSummary = `
11
12
  $first: Int!
12
13
  $after: Int!
13
14
  $sortBy: [GraphqlSort!]
15
+ $filterBy: [GraphqlFilter!]
14
16
  ) {
15
17
  products(first: $first, after: $after, sortBy: $sortBy) {
16
18
  page {
17
19
  name
18
- subscriptions {
20
+ subscriptions(filterBy: $filterBy) {
19
21
  pageInfo {
20
22
  totalItems
21
23
  }
@@ -38,7 +40,7 @@ const productsSummaryApi = orchestratorApi.injectEndpoints({
38
40
  endpoints: (builder) => ({
39
41
  getProductsSummary: builder.query<
40
42
  ProductsSummaryResponse,
41
- GraphqlQueryVariables<ProductsSummary>
43
+ GraphqlQueryVariables<ProductsSummary & Subscription>
42
44
  >({
43
45
  query: (variables) => ({
44
46
  document: productsSummary,