@prorobotech/openapi-k8s-toolkit 1.4.0-alpha.9 → 1.5.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-BwCZPalv.mjs → index-BFIWg9xn.mjs} +2861 -755
- package/dist/index-BFIWg9xn.mjs.map +1 -0
- package/dist/{index-85og70S2.mjs → index-_9cT8fBl.mjs} +29 -3
- package/dist/index-_9cT8fBl.mjs.map +1 -0
- package/dist/openapi-k8s-toolkit.es.js +1 -1
- package/dist/openapi-k8s-toolkit.umd.js +2890 -751
- package/dist/openapi-k8s-toolkit.umd.js.map +1 -1
- package/dist/types/api/bff/search/getKindsRaw.d.ts +4 -0
- package/dist/types/components/atoms/ErrorBoundary/ErrorBoundary.d.ts +38 -0
- package/dist/types/components/atoms/ErrorBoundary/ErrorBoundary.test.d.ts +1 -0
- package/dist/types/components/atoms/ErrorBoundary/ErrorBoundaryWithDataReset.d.ts +14 -0
- package/dist/types/components/atoms/ErrorBoundary/index.d.ts +2 -0
- package/dist/types/components/atoms/index.d.ts +1 -0
- package/dist/types/components/molecules/BlackholeForm/molecules/FormObjectFromSwagger/FormObjectFromSwagger.test.d.ts +1 -0
- package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeForm/helpers/prefills.d.ts +6 -3
- package/dist/types/components/molecules/BlackholeForm/organisms/BlackholeFormProvider/BlackholeFormProvider.d.ts +1 -0
- package/dist/types/components/molecules/EnrichedTable/index.d.ts +2 -2
- package/dist/types/components/molecules/EnrichedTable/organisms/ClusterListTable/ClusterListTable.d.ts +27 -0
- package/dist/types/components/molecules/EnrichedTable/organisms/ClusterListTable/ClusterListTable.test.d.ts +1 -0
- package/dist/types/components/molecules/EnrichedTable/organisms/ClusterListTable/index.d.ts +2 -0
- package/dist/types/components/molecules/EnrichedTable/organisms/EnrichedTable/EnrichedTable.d.ts +11 -6
- package/dist/types/components/molecules/EnrichedTable/organisms/EnrichedTable/EnrichedTable.test.d.ts +1 -0
- package/dist/types/components/molecules/EnrichedTable/organisms/EnrichedTable/atoms/TrimmedTags/styled.d.ts +851 -0
- package/dist/types/components/molecules/EnrichedTable/organisms/EnrichedTable/utils.d.ts +10 -8
- package/dist/types/components/molecules/EnrichedTable/organisms/index.d.ts +2 -0
- package/dist/types/components/molecules/Events/Events.error.test.d.ts +2 -0
- package/dist/types/components/molecules/Events/types.d.ts +12 -1
- package/dist/types/components/molecules/YamlEditorSingleton/utils.d.ts +5 -1
- package/dist/types/components/molecules/index.d.ts +2 -2
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/ActionsDropdown.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/dropdownPlacement.d.ts +12 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/dropdownPlacement.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/actionHandlers.d.ts +23 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/index.d.ts +6 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/useCreateFromFilesHandlers.d.ts +11 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/useDrainHandlers.d.ts +12 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/useEvictHandlers.d.ts +9 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/useRerunHandlers.d.ts +11 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/useRollbackHandlers.d.ts +11 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/handlers/useScaleHandlers.d.ts +11 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/helpers.d.ts +25 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/index.d.ts +3 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/types.d.ts +65 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers/useActionsDropdownHandlers.d.ts +38 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/modals/CreateFromFilesModal.d.ts +12 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/modals/CreateFromFilesModal.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/modals/DownloadAsFilesModal.d.ts +11 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/modals/DownloadAsFilesModal.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/AntdResult/AntdResult.d.ts +6 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/AntdResult/AntdResult.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/AntdResult/index.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/AntdResult/styled.d.ts +548 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/AntdResult/utils.d.ts +33 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/AntdResult/utils.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/EnrichedTable/EnrichedTable.error.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/Events/Events.permissions.test.d.ts +2 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/MappedParsedText/MappedParsedText.d.ts +5 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/MappedParsedText/index.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/ParsedText/ParsedText.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/PerRequestError/PerRequestError.d.ts +7 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/PerRequestError/PerRequestError.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/PerRequestError/index.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/Volumes/Volumes.d.ts +6 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/Volumes/Volumes.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/Volumes/index.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/Volumes/utils.d.ts +46 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/hooks/index.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/hooks/mergePerRequestErrors.d.ts +10 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/hooks/types.d.ts +5 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/hooks/useAutoPerRequestError.d.ts +15 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/hooks/useAutoPerRequestError.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/index.d.ts +3 -0
- package/dist/types/components/organisms/DynamicComponents/molecules/utils.d.ts +19 -0
- package/dist/types/components/organisms/DynamicComponents/types/ActionsDropdown.d.ts +22 -2
- package/dist/types/components/organisms/DynamicComponents/types/MappedParsedText.d.ts +7 -0
- package/dist/types/components/organisms/DynamicComponents/types/Volumes.d.ts +19 -0
- package/dist/types/components/organisms/DynamicComponents/types/antdComponents.d.ts +22 -1
- package/dist/types/components/organisms/DynamicComponents/types/index.d.ts +6 -1
- package/dist/types/components/organisms/DynamicComponents/types/parsedText.d.ts +1 -0
- package/dist/types/components/organisms/DynamicRendererWithProviders/DynamicRendererWithProviders.d.ts +2 -0
- package/dist/types/components/organisms/DynamicRendererWithProviders/EffectiveAntdResultWrapper/EffectiveAntdResultWrapper.d.ts +8 -0
- package/dist/types/components/organisms/DynamicRendererWithProviders/EffectiveAntdResultWrapper/EffectiveAntdResultWrapper.test.d.ts +1 -0
- package/dist/types/components/organisms/DynamicRendererWithProviders/EffectiveAntdResultWrapper/index.d.ts +1 -0
- package/dist/types/components/organisms/DynamicRendererWithProviders/providers/hybridDataProvider/hybridDataProvider.d.ts +4 -0
- package/dist/types/hooks/useApiResource.d.ts +2 -1
- package/dist/types/hooks/useApisResourceTypes.d.ts +4 -2
- package/dist/types/hooks/useBuiltinResource.d.ts +2 -1
- package/dist/types/hooks/useBuiltinResourceTypes.d.ts +2 -1
- package/dist/types/hooks/useClusterList.d.ts +6 -3
- package/dist/types/hooks/useDirectUnknownResource.d.ts +2 -1
- package/dist/types/hooks/useK8sSmartResource/useSmartResourceParams.d.ts +3 -2
- package/dist/types/hooks/useKindsRaw.d.ts +8 -0
- package/dist/types/hooks/useListThenWatch/types.d.ts +2 -0
- package/dist/types/hooks/useResourceScope/useResourceScope.d.ts +2 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/localTypes/bff/form.d.ts +2 -0
- package/dist/types/localTypes/bff/table.d.ts +2 -1
- package/dist/types/localTypes/clusterList.d.ts +3 -2
- package/dist/types/localTypes/dynamicRender.d.ts +5 -0
- package/dist/types/localTypes/richTable.d.ts +4 -0
- package/package.json +1 -1
- package/dist/index-85og70S2.mjs.map +0 -1
- package/dist/index-BwCZPalv.mjs.map +0 -1
- package/dist/types/components/organisms/DynamicComponents/molecules/ActionsDropdown/hooks/useActionsDropdownHandlers.d.ts +0 -77
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Volumes } from './Volumes';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { TAdditionalPrinterColumnsKeyTypeProps } from '../../../../../localTypes/richTable';
|
|
2
|
+
export declare const ellipsisStyle: {
|
|
3
|
+
display: string;
|
|
4
|
+
overflow: string;
|
|
5
|
+
textOverflow: string;
|
|
6
|
+
whiteSpace: "nowrap";
|
|
7
|
+
verticalAlign: "bottom";
|
|
8
|
+
};
|
|
9
|
+
export type TVolumeTypeMeta = {
|
|
10
|
+
typeResource: string;
|
|
11
|
+
typeKey: string;
|
|
12
|
+
typeName: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const getVolumeTypeMetas: (volumeName: string, volumesMap: Record<string, any>) => TVolumeTypeMeta[];
|
|
15
|
+
export declare const buildCustomColumns: (containerFactoryKey?: string) => TAdditionalPrinterColumnsKeyTypeProps;
|
|
16
|
+
export type TLinkableVolumeTypeKey = 'configMap' | 'secret' | 'persistentVolumeClaim';
|
|
17
|
+
export declare const isLinkableVolumeTypeKey: (typeKey: string) => typeKey is TLinkableVolumeTypeKey;
|
|
18
|
+
export declare const isPendingLinkSegment: (value?: string) => boolean;
|
|
19
|
+
export declare const getVolumeFactoryKey: ({ apiGroup, apiVersion, resource, namespace, baseFactoriesMapping, baseFactoryNamespacedAPIKey, baseFactoryClusterSceopedAPIKey, baseFactoryNamespacedBuiltinKey, baseFactoryClusterSceopedBuiltinKey, }: {
|
|
20
|
+
resource: string;
|
|
21
|
+
apiGroup?: string | undefined;
|
|
22
|
+
apiVersion: string;
|
|
23
|
+
namespace?: string | undefined;
|
|
24
|
+
baseFactoriesMapping?: Record<string, string> | undefined;
|
|
25
|
+
baseFactoryNamespacedAPIKey: string;
|
|
26
|
+
baseFactoryClusterSceopedAPIKey: string;
|
|
27
|
+
baseFactoryNamespacedBuiltinKey: string;
|
|
28
|
+
baseFactoryClusterSceopedBuiltinKey: string;
|
|
29
|
+
}) => string;
|
|
30
|
+
export declare const getVolumeResourceLinkPrefix: ({ baseprefix, cluster, namespace, apiGroupVersion, pluralName, baseFactoryNamespacedAPIKey, baseFactoryClusterSceopedAPIKey, baseFactoryNamespacedBuiltinKey, baseFactoryClusterSceopedBuiltinKey, baseFactoriesMapping, }: {
|
|
31
|
+
baseprefix?: string | undefined;
|
|
32
|
+
cluster: string;
|
|
33
|
+
namespace?: string | undefined;
|
|
34
|
+
apiGroupVersion: string;
|
|
35
|
+
pluralName: string;
|
|
36
|
+
baseFactoryNamespacedAPIKey: string;
|
|
37
|
+
baseFactoryClusterSceopedAPIKey: string;
|
|
38
|
+
baseFactoryNamespacedBuiltinKey: string;
|
|
39
|
+
baseFactoryClusterSceopedBuiltinKey: string;
|
|
40
|
+
baseFactoriesMapping?: Record<string, string> | undefined;
|
|
41
|
+
}) => string;
|
|
42
|
+
export declare const getVolumeTypeHref: ({ typeKey, typeName, resourceLinkPrefixes, }: {
|
|
43
|
+
typeKey: string;
|
|
44
|
+
typeName: string;
|
|
45
|
+
resourceLinkPrefixes?: Partial<Record<TLinkableVolumeTypeKey, string>> | undefined;
|
|
46
|
+
}) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useAutoPerRequestError } from './useAutoPerRequestError';
|
package/dist/types/components/organisms/DynamicComponents/molecules/hooks/mergePerRequestErrors.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TPerRequestErrorResult } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Merges the result of useAutoPerRequestError with additional
|
|
4
|
+
* nested req index checks (e.g. labelSelectorFull.reqIndex,
|
|
5
|
+
* additionalReqsDataToEachItem).
|
|
6
|
+
*
|
|
7
|
+
* Use this when a component accesses multiQueryData via nested reqIndex
|
|
8
|
+
* fields that useAutoPerRequestError cannot auto-detect.
|
|
9
|
+
*/
|
|
10
|
+
export declare const mergePerRequestErrors: (autoResult: TPerRequestErrorResult, hasErrorForReq: (idx: number) => boolean, nestedReqIndices: (number | undefined)[]) => TPerRequestErrorResult;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TPerRequestErrorResult } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Auto-detects which requests a component depends on
|
|
4
|
+
* by scanning template strings in its `data` props for
|
|
5
|
+
* {reqs[N]...} and {reqsJsonPath[N]...} patterns.
|
|
6
|
+
*
|
|
7
|
+
* Also picks up an explicit `data.reqIndex` prop (used by
|
|
8
|
+
* direct-access components like Labels, Annotations, etc.).
|
|
9
|
+
*
|
|
10
|
+
* If no req references are found (layout components like antdFlex,
|
|
11
|
+
* or programmatically rendered components like ConverterBytes inside
|
|
12
|
+
* UsageGraphCard), returns no error — the component does not consume
|
|
13
|
+
* multiQuery data, so multiQuery errors are irrelevant to it.
|
|
14
|
+
*/
|
|
15
|
+
export declare const useAutoPerRequestError: (data: Record<string, unknown>) => TPerRequestErrorResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -10,6 +10,7 @@ export { AntdIcons } from './AntdIcons';
|
|
|
10
10
|
export { PartsOfUrl } from './PartsOfUrl';
|
|
11
11
|
export { MultiQuery } from './MultiQuery';
|
|
12
12
|
export { ParsedText } from './ParsedText';
|
|
13
|
+
export { MappedParsedText } from './MappedParsedText';
|
|
13
14
|
export { ProjectInfoCard } from './ProjectInfoCard';
|
|
14
15
|
export { MarketplaceCard } from './MarketplaceCard';
|
|
15
16
|
export { ContentCard } from './ContentCard';
|
|
@@ -48,3 +49,5 @@ export { AggregatedCounterCard } from './AggregatedCounterCard';
|
|
|
48
49
|
export { Base64Icon } from './Base64Icon';
|
|
49
50
|
export { UsageGraphCard } from './UsageGraphCard';
|
|
50
51
|
export { ActionsDropdown } from './ActionsDropdown';
|
|
52
|
+
export { Volumes } from './Volumes';
|
|
53
|
+
export { AntdResult } from './AntdResult';
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/** Parse a string reqIndex (from YAML config) to a number, or return undefined if absent/invalid */
|
|
2
|
+
export declare const parseReqIndex: (reqIndex: string | number | undefined) => number | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Scans a template string for {reqs[N]...} and {reqsJsonPath[N]...} patterns
|
|
5
|
+
* and returns the deduplicated set of req indices referenced.
|
|
6
|
+
*
|
|
7
|
+
* Handles nested/recursive cases like:
|
|
8
|
+
* {reqsJsonPath[0]['.items.{reqsJsonPath[1][".index"]}.name']}
|
|
9
|
+
* → returns [0, 1]
|
|
10
|
+
*/
|
|
11
|
+
export declare const extractReqIndices: (text: string) => number[];
|
|
12
|
+
/**
|
|
13
|
+
* Recursively scans all string values in a component's `data` object
|
|
14
|
+
* and collects req indices from template expressions.
|
|
15
|
+
*
|
|
16
|
+
* Traverses nested objects and arrays to find template strings
|
|
17
|
+
* at any depth (e.g. data.actions[].props.endpoint, data.values[]).
|
|
18
|
+
*/
|
|
19
|
+
export declare const extractReqIndicesFromData: (data: Record<string, unknown>) => number[];
|
|
1
20
|
export declare const parsePartsOfUrl: ({ template, replaceValues, }: {
|
|
2
21
|
template: string;
|
|
3
22
|
replaceValues: Record<string, string | undefined>;
|
|
@@ -81,7 +81,8 @@ export type TScaleActionProps = TActionBaseProps & {
|
|
|
81
81
|
export type TTriggerRunActionProps = TActionBaseProps & {
|
|
82
82
|
createEndpoint: string;
|
|
83
83
|
cronJobName: string;
|
|
84
|
-
|
|
84
|
+
reqIndex: string;
|
|
85
|
+
jsonPathToObj: string;
|
|
85
86
|
};
|
|
86
87
|
export type TDeleteChildrenActionProps = TActionBaseProps & {
|
|
87
88
|
children: string;
|
|
@@ -89,8 +90,9 @@ export type TDeleteChildrenActionProps = TActionBaseProps & {
|
|
|
89
90
|
};
|
|
90
91
|
export type TRerunLastActionProps = TActionBaseProps & {
|
|
91
92
|
createEndpoint: string;
|
|
92
|
-
sourceJobSpec: string;
|
|
93
93
|
sourceJobName: string;
|
|
94
|
+
reqIndex: string;
|
|
95
|
+
jsonPathToObj: string;
|
|
94
96
|
};
|
|
95
97
|
export type TDrainActionProps = TActionBaseProps & {
|
|
96
98
|
bffEndpoint: string;
|
|
@@ -101,6 +103,18 @@ export type TRollbackActionProps = TActionBaseProps & {
|
|
|
101
103
|
resourceName: string;
|
|
102
104
|
resourceEndpoint: string;
|
|
103
105
|
};
|
|
106
|
+
export type TResourceKind = 'ConfigMap' | 'Secret';
|
|
107
|
+
export type TDownloadAsFilesActionProps = TActionBaseProps & {
|
|
108
|
+
endpoint: string;
|
|
109
|
+
resourceKind: TResourceKind;
|
|
110
|
+
name: string;
|
|
111
|
+
};
|
|
112
|
+
export type TCreateFromFilesActionProps = TActionBaseProps & {
|
|
113
|
+
createEndpoint: string;
|
|
114
|
+
namespace: string;
|
|
115
|
+
resourceKind: TResourceKind;
|
|
116
|
+
apiVersion?: string;
|
|
117
|
+
};
|
|
104
118
|
export type TActionUnion = {
|
|
105
119
|
type: 'edit';
|
|
106
120
|
props: TEditActionProps;
|
|
@@ -158,6 +172,12 @@ export type TActionUnion = {
|
|
|
158
172
|
} | {
|
|
159
173
|
type: 'rollback';
|
|
160
174
|
props: TRollbackActionProps;
|
|
175
|
+
} | {
|
|
176
|
+
type: 'downloadAsFiles';
|
|
177
|
+
props: TDownloadAsFilesActionProps;
|
|
178
|
+
} | {
|
|
179
|
+
type: 'createFromFiles';
|
|
180
|
+
props: TCreateFromFilesActionProps;
|
|
161
181
|
};
|
|
162
182
|
/** Per-action permission map. Key = "${actionType}-${index}", value = whether action is allowed. */
|
|
163
183
|
export type TActionsPermissions = Record<string, boolean | undefined>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
export type TVolumesProps = {
|
|
3
|
+
id: number | string;
|
|
4
|
+
baseprefix?: string;
|
|
5
|
+
cluster: string;
|
|
6
|
+
reqIndex: string;
|
|
7
|
+
jsonPathToSpec: string;
|
|
8
|
+
jsonPathToPodName?: string;
|
|
9
|
+
forcedNamespace?: string;
|
|
10
|
+
errorText?: string;
|
|
11
|
+
containerStyle?: CSSProperties;
|
|
12
|
+
baseFactoryNamespacedAPIKey: string;
|
|
13
|
+
baseFactoryClusterSceopedAPIKey: string;
|
|
14
|
+
baseFactoryNamespacedBuiltinKey: string;
|
|
15
|
+
baseFactoryClusterSceopedBuiltinKey: string;
|
|
16
|
+
baseNavigationPluralName: string;
|
|
17
|
+
baseNavigationSpecificName: string;
|
|
18
|
+
containerFactoryKey?: string;
|
|
19
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
2
|
import { CardProps, FlexProps, RowProps, ColProps, ButtonProps, TabsProps } from 'antd';
|
|
3
3
|
import type { TextProps } from 'antd/es/typography/Text';
|
|
4
4
|
import type { LinkProps } from 'antd/es/typography/Link';
|
|
@@ -27,6 +27,9 @@ export type TAntdColProps = {
|
|
|
27
27
|
} & Omit<ColProps, 'id' | 'children'>;
|
|
28
28
|
export type TAntdTabsProps = {
|
|
29
29
|
id: number | string;
|
|
30
|
+
syncActiveKeyWithHash?: boolean;
|
|
31
|
+
allowOpenInNewBrowserTab?: boolean;
|
|
32
|
+
unmountOnTabChange?: boolean;
|
|
30
33
|
} & Omit<TabsProps, 'id' | 'children'>;
|
|
31
34
|
export type TAntdButtonProps = {
|
|
32
35
|
id: number | string;
|
|
@@ -38,3 +41,21 @@ export type TAntdIconsProps = {
|
|
|
38
41
|
iconProps?: AntdIconProps;
|
|
39
42
|
containerStyle?: React.CSSProperties;
|
|
40
43
|
};
|
|
44
|
+
export type TAntdResultProps = {
|
|
45
|
+
id: number | string;
|
|
46
|
+
reqIndex?: number | number[];
|
|
47
|
+
/** Dot-separated path to the array in the response to check for emptiness.
|
|
48
|
+
* Default: ".items" (K8s list response format). Can be changed for non-K8s
|
|
49
|
+
* APIs, e.g. ".data.results".
|
|
50
|
+
* When reqIndex is an array, itemsPath can also be an array — each position
|
|
51
|
+
* maps to the corresponding reqIndex (e.g. reqIndex: [0,1], itemsPath: [".items", ".data.results"]). */
|
|
52
|
+
itemsPath?: string | string[];
|
|
53
|
+
/** Whether to check if the array at `itemsPath` is empty and show 404 when
|
|
54
|
+
* it is. Default: true — antdResult reacts to empty responses by default.
|
|
55
|
+
* Set to false to explicitly disable this check. */
|
|
56
|
+
checkEmpty?: boolean;
|
|
57
|
+
status?: 'success' | 'error' | 'info' | 'warning' | '403' | '404' | '500' | 403 | 404 | 500;
|
|
58
|
+
title?: string;
|
|
59
|
+
subTitle?: string;
|
|
60
|
+
style?: CSSProperties;
|
|
61
|
+
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { TAntdTextProps, TAntdLinkProps, TAntdCardProps, TAntdFlexProps, TAntdRowProps, TAntdColProps, TAntdTabsProps, TAntdButtonProps, TAntdIconsProps } from './antdComponents';
|
|
1
|
+
import { TAntdTextProps, TAntdLinkProps, TAntdCardProps, TAntdFlexProps, TAntdRowProps, TAntdColProps, TAntdTabsProps, TAntdButtonProps, TAntdIconsProps, TAntdResultProps } from './antdComponents';
|
|
2
2
|
import { TDefaultDivProps } from './DefaultDiv';
|
|
3
3
|
import { TPartsOfUrlProps } from './partsOfUrl';
|
|
4
4
|
import { TMultiQueryProps } from './multiQuery';
|
|
5
5
|
import { TParsedTextProps } from './parsedText';
|
|
6
|
+
import { TMappedParsedTextProps } from './MappedParsedText';
|
|
6
7
|
import { TProjectInfoCardProps } from './ProjectInfoCard';
|
|
7
8
|
import { TMarketplaceCardProps } from './MarketplaceCard';
|
|
8
9
|
import { TContentCardProps } from './ContentCard';
|
|
@@ -38,6 +39,7 @@ import { TAggregatedCounterCardProps } from './AggregatedCounterCard';
|
|
|
38
39
|
import { TBase64IconProps } from './Base64Icon';
|
|
39
40
|
import { TUsageGraphCardProps } from './UsageGraphCard';
|
|
40
41
|
import { TActionsDropdownProps } from './ActionsDropdown';
|
|
42
|
+
import { TVolumesProps } from './Volumes';
|
|
41
43
|
export type TDynamicComponentsAppTypeMap = {
|
|
42
44
|
antdText: TAntdTextProps;
|
|
43
45
|
antdLink: TAntdLinkProps;
|
|
@@ -52,6 +54,7 @@ export type TDynamicComponentsAppTypeMap = {
|
|
|
52
54
|
partsOfUrl: TPartsOfUrlProps;
|
|
53
55
|
multiQuery: TMultiQueryProps;
|
|
54
56
|
parsedText: TParsedTextProps;
|
|
57
|
+
MappedParsedText: TMappedParsedTextProps;
|
|
55
58
|
ProjectInfoCard: TProjectInfoCardProps;
|
|
56
59
|
MarketplaceCard: TMarketplaceCardProps;
|
|
57
60
|
ContentCard: TContentCardProps;
|
|
@@ -89,4 +92,6 @@ export type TDynamicComponentsAppTypeMap = {
|
|
|
89
92
|
Base64Icon: TBase64IconProps;
|
|
90
93
|
UsageGraphCard: TUsageGraphCardProps;
|
|
91
94
|
ActionsDropdown: TActionsDropdownProps;
|
|
95
|
+
Volumes: TVolumesProps;
|
|
96
|
+
antdResult: TAntdResultProps;
|
|
92
97
|
};
|
|
@@ -8,4 +8,6 @@ export declare const DynamicRendererWithProviders: <T extends TItemTypeMap>(prop
|
|
|
8
8
|
theme: 'dark' | 'light';
|
|
9
9
|
nodeTerminalDefaultProfile?: string | undefined;
|
|
10
10
|
disableEventBubbling?: boolean | undefined;
|
|
11
|
+
effectiveReqIndexes?: number[] | undefined;
|
|
12
|
+
effectiveItemsPath?: string | string[] | undefined;
|
|
11
13
|
}) => ReactElement;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
type TEffectiveAntdResultWrapperProps = {
|
|
3
|
+
effectiveReqIndexes: number[];
|
|
4
|
+
itemsPath?: string | string[];
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
export declare const EffectiveAntdResultWrapper: FC<TEffectiveAntdResultWrapperProps>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EffectiveAntdResultWrapper } from './EffectiveAntdResultWrapper';
|
|
@@ -7,6 +7,10 @@ type MultiQueryContextValue = {
|
|
|
7
7
|
isLoading: boolean;
|
|
8
8
|
isError: boolean;
|
|
9
9
|
errors: ReadonlyArray<AxiosError | Error | string | null>;
|
|
10
|
+
/** Check whether a specific request (by index) has an error */
|
|
11
|
+
hasErrorForReq: (reqIndex: number) => boolean;
|
|
12
|
+
/** Get the error object for a specific request (by index), or null if it succeeded */
|
|
13
|
+
getErrorForReq: (reqIndex: number) => AxiosError | Error | string | null;
|
|
10
14
|
};
|
|
11
15
|
type MultiQueryProviderProps = {
|
|
12
16
|
/** Mixed array: first (any number of) K8s resources, then (any number of) URL strings */
|
|
@@ -12,7 +12,7 @@ export declare const useApiResources: ({ cluster, namespace, apiGroup, apiVersio
|
|
|
12
12
|
refetchInterval?: number | false | undefined;
|
|
13
13
|
isEnabled?: boolean | undefined;
|
|
14
14
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<TApiResources, Error>;
|
|
15
|
-
export declare const useApiResourceSingle: ({ cluster, namespace, apiGroup, apiVersion, plural, name, refetchInterval, }: {
|
|
15
|
+
export declare const useApiResourceSingle: ({ cluster, namespace, apiGroup, apiVersion, plural, name, refetchInterval, enabler, }: {
|
|
16
16
|
cluster: string;
|
|
17
17
|
namespace?: string | undefined;
|
|
18
18
|
apiGroup: string;
|
|
@@ -20,6 +20,7 @@ export declare const useApiResourceSingle: ({ cluster, namespace, apiGroup, apiV
|
|
|
20
20
|
plural: string;
|
|
21
21
|
name: string;
|
|
22
22
|
refetchInterval?: number | false | undefined;
|
|
23
|
+
enabler?: boolean | undefined;
|
|
23
24
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<{
|
|
24
25
|
metadata: {
|
|
25
26
|
name: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export declare const useApisResourceTypes: ({ cluster }: {
|
|
1
|
+
export declare const useApisResourceTypes: ({ cluster, enabler }: {
|
|
2
2
|
cluster: string;
|
|
3
|
+
enabler?: boolean | undefined;
|
|
3
4
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<{
|
|
4
5
|
apiVersion: string;
|
|
5
6
|
kind: string;
|
|
@@ -15,10 +16,11 @@ export declare const useApisResourceTypes: ({ cluster }: {
|
|
|
15
16
|
};
|
|
16
17
|
}[];
|
|
17
18
|
}, Error>;
|
|
18
|
-
export declare const useApiResourceTypesByGroup: ({ cluster, apiGroup, apiVersion, }: {
|
|
19
|
+
export declare const useApiResourceTypesByGroup: ({ cluster, apiGroup, apiVersion, enabler, }: {
|
|
19
20
|
cluster: string;
|
|
20
21
|
apiGroup: string;
|
|
21
22
|
apiVersion: string;
|
|
23
|
+
enabler?: boolean | undefined;
|
|
22
24
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<{
|
|
23
25
|
apiVersion: string;
|
|
24
26
|
kind: string;
|
|
@@ -10,12 +10,13 @@ export declare const useBuiltinResources: ({ cluster, namespace, plural, name, l
|
|
|
10
10
|
refetchInterval?: number | false | undefined;
|
|
11
11
|
isEnabled?: boolean | undefined;
|
|
12
12
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<TBuiltinResources, Error>;
|
|
13
|
-
export declare const useBuiltinResourceSingle: ({ cluster, namespace, plural, name, refetchInterval, }: {
|
|
13
|
+
export declare const useBuiltinResourceSingle: ({ cluster, namespace, plural, name, refetchInterval, enabler, }: {
|
|
14
14
|
cluster: string;
|
|
15
15
|
namespace?: string | undefined;
|
|
16
16
|
plural: string;
|
|
17
17
|
name: string;
|
|
18
18
|
refetchInterval?: number | false | undefined;
|
|
19
|
+
enabler?: boolean | undefined;
|
|
19
20
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<{
|
|
20
21
|
metadata: {
|
|
21
22
|
name: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TBuiltinResourceTypeList } from '../localTypes/k8s';
|
|
2
|
-
export declare const useBuiltinResourceTypes: ({ cluster }: {
|
|
2
|
+
export declare const useBuiltinResourceTypes: ({ cluster, enabler }: {
|
|
3
3
|
cluster: string;
|
|
4
|
+
enabler?: boolean | undefined;
|
|
4
5
|
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<TBuiltinResourceTypeList, Error>;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type TUseClusterListParams = {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
refetchInterval?: number | false;
|
|
4
|
+
};
|
|
5
|
+
export declare const useClusterList: ({ enabled, refetchInterval }?: TUseClusterListParams) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<import("..").TClusterList, Error>;
|
|
6
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { UseQueryResult } from '@tanstack/react-query';
|
|
2
|
-
export declare const useDirectUnknownResource: <T>({ uri, queryKey, refetchInterval, isEnabled, }: {
|
|
2
|
+
export declare const useDirectUnknownResource: <T>({ uri, queryKey, refetchInterval, staleTime, isEnabled, }: {
|
|
3
3
|
uri: string;
|
|
4
4
|
queryKey: string[];
|
|
5
5
|
refetchInterval?: number | false | undefined;
|
|
6
|
+
staleTime?: number | undefined;
|
|
6
7
|
isEnabled?: boolean | undefined;
|
|
7
8
|
}) => UseQueryResult<T, Error>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { TUseK8sSmartResourceParams } from './useK8sSmartResourceWithoutKinds';
|
|
2
|
-
export declare const useSmartResourceParams: ({ cluster, namespace }: {
|
|
3
|
-
cluster
|
|
2
|
+
export declare const useSmartResourceParams: ({ cluster, namespace, enabler, }: {
|
|
3
|
+
cluster?: string | undefined;
|
|
4
4
|
namespace?: string | undefined;
|
|
5
|
+
enabler?: boolean | undefined;
|
|
5
6
|
}) => {
|
|
6
7
|
paramsList: TUseK8sSmartResourceParams<unknown>[];
|
|
7
8
|
scopesLoading: boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const useKindsRaw: ({ cluster, refetchInterval, isEnabled, }: {
|
|
2
|
+
cluster: string;
|
|
3
|
+
refetchInterval?: number | false | undefined;
|
|
4
|
+
isEnabled?: boolean | undefined;
|
|
5
|
+
}) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<{
|
|
6
|
+
kindIndex: import("..").TKindIndex;
|
|
7
|
+
kindsWithVersion: import("..").TKindWithVersion[];
|
|
8
|
+
}, Error>;
|
|
@@ -29,6 +29,8 @@ type TConsoleFrame = {
|
|
|
29
29
|
type TInitialError = {
|
|
30
30
|
type: 'INITIAL_ERROR';
|
|
31
31
|
message: string;
|
|
32
|
+
statusCode?: number;
|
|
33
|
+
reason?: string;
|
|
32
34
|
};
|
|
33
35
|
export type TServerFrame = TInitialFrame | TPageFrame | TPageErrorFrame | TDeltaFrame | TConsoleFrame | TInitialError;
|
|
34
36
|
export type TScrollMsg = {
|
|
@@ -3,10 +3,11 @@ type TUseResourceScopeArgs = {
|
|
|
3
3
|
apiGroup?: string;
|
|
4
4
|
apiVersion?: string;
|
|
5
5
|
plural: string;
|
|
6
|
+
enabler?: boolean;
|
|
6
7
|
};
|
|
7
8
|
type TUseResourceScopeRes = {
|
|
8
9
|
isClusterWide: boolean;
|
|
9
10
|
isNamespaceScoped: boolean;
|
|
10
11
|
};
|
|
11
|
-
export declare const useResourceScope: ({ plural, cluster, apiGroup, apiVersion }: TUseResourceScopeArgs) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<TUseResourceScopeRes, Error>;
|
|
12
|
+
export declare const useResourceScope: ({ plural, cluster, apiGroup, apiVersion, enabler }: TUseResourceScopeArgs) => import("@tanstack/react-query/build/legacy/types").UseQueryResult<TUseResourceScopeRes, Error>;
|
|
12
13
|
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './components';
|
|
2
2
|
export * from './utils';
|
|
3
3
|
export { getClusterList } from './api/getClusterList';
|
|
4
|
-
export { createNewEntry, updateEntry, deleteEntry } from './api/forms';
|
|
4
|
+
export { createNewEntry, updateEntry, deleteEntry, patchEntryWithReplaceOp, patchEntryWithMergePatch, patchEntryWithDeleteOp, } from './api/forms';
|
|
5
5
|
export { getApiResources, getApiResourceSingle } from './api/getApiResource';
|
|
6
6
|
export { getBuiltinResources, getBuiltinResourceSingle } from './api/getBuiltinResource';
|
|
7
7
|
export { getCrdResources, getCrdResourceSingle } from './api/getCrdResource';
|
|
@@ -29,6 +29,7 @@ export { useK8sVerbs } from './hooks/useK8sVerbs';
|
|
|
29
29
|
export { useK8sSmartResource, useManyK8sSmartResource, useSmartResourceParams } from './hooks/useK8sSmartResource';
|
|
30
30
|
export { useResourceScope } from './hooks/useResourceScope';
|
|
31
31
|
export { useKinds } from './hooks/useKinds';
|
|
32
|
+
export { useKindsRaw } from './hooks/useKindsRaw';
|
|
32
33
|
export { usePluginManifest } from './hooks/usePlugins';
|
|
33
34
|
export type { TRequestError } from './localTypes/api';
|
|
34
35
|
export type { TClusterList } from './localTypes/clusterList';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TAdditionalPrinterColumns, TAdditionalPrinterColumnsUndefinedValues, TAdditionalPrinterColumnsTrimLengths, TAdditionalPrinterColumnsColWidths, TAdditionalPrinterColumnsKeyTypeProps, TAdditionalPrinterColumnsCustomSortersAndFilters } from '../richTable';
|
|
1
|
+
import { TAdditionalPrinterColumns, TAdditionalPrinterColumnsUndefinedValues, TAdditionalPrinterColumnsTrimLengths, TAdditionalPrinterColumnsColWidths, TAdditionalPrinterColumnsTooltips, TAdditionalPrinterColumnsKeyTypeProps, TAdditionalPrinterColumnsCustomSortersAndFilters } from '../richTable';
|
|
2
2
|
export type TPrepareTableReq = {
|
|
3
3
|
customizationId?: string;
|
|
4
4
|
tableMappingsReplaceValues?: Record<string, string | undefined>;
|
|
@@ -16,6 +16,7 @@ export type TPrepareTableRes = {
|
|
|
16
16
|
additionalPrinterColumnsUndefinedValues?: TAdditionalPrinterColumnsUndefinedValues;
|
|
17
17
|
additionalPrinterColumnsTrimLengths?: TAdditionalPrinterColumnsTrimLengths;
|
|
18
18
|
additionalPrinterColumnsColWidths?: TAdditionalPrinterColumnsColWidths;
|
|
19
|
+
additionalPrinterColumnsTooltips?: TAdditionalPrinterColumnsTooltips;
|
|
19
20
|
additionalPrinterColumnsKeyTypeProps?: TAdditionalPrinterColumnsKeyTypeProps;
|
|
20
21
|
additionalPrinterColumnsCustomSortersAndFilters?: TAdditionalPrinterColumnsCustomSortersAndFilters;
|
|
21
22
|
withoutControls?: boolean;
|
|
@@ -18,7 +18,12 @@ export type TFactoryDataK8s<T extends TItemTypeMap> = {
|
|
|
18
18
|
key: string;
|
|
19
19
|
urlsToFetch: (string | TUseK8sSmartResourceParams<any>)[];
|
|
20
20
|
withScrollableMainContentCard?: boolean;
|
|
21
|
+
effectiveReqIndexes?: number[];
|
|
22
|
+
/** Per-request itemsPath for effectiveReqIndexes empty-check.
|
|
23
|
+
* String → same path for all; string[] → positional mapping per reqIndex. */
|
|
24
|
+
effectiveItemsPath?: string | string[];
|
|
21
25
|
data: TRenderableItem<T>[];
|
|
26
|
+
forcedSidebarId?: string;
|
|
22
27
|
sidebarTags?: string[];
|
|
23
28
|
};
|
|
24
29
|
export type TFactoryResource<T extends TItemTypeMap> = {
|
|
@@ -16,6 +16,10 @@ export type TAdditionalPrinterColumnsColWidths = {
|
|
|
16
16
|
key: string;
|
|
17
17
|
value: string;
|
|
18
18
|
}[];
|
|
19
|
+
export type TAdditionalPrinterColumnsTooltips = {
|
|
20
|
+
key: string;
|
|
21
|
+
value: string;
|
|
22
|
+
}[];
|
|
19
23
|
export type TAdditionalPrinterColumnsKeyTypeProps = Record<string, {
|
|
20
24
|
type: string;
|
|
21
25
|
customProps?: unknown;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-85og70S2.mjs","sources":["../src/components/organisms/DynamicComponents/molecules/AggregatedCounterCard/molecules/EnrichedTableModal/styled.ts","../src/components/organisms/DynamicComponents/molecules/AggregatedCounterCard/molecules/EnrichedTableModal/EnrichedTableModal.tsx"],"sourcesContent":["import styled from 'styled-components'\n\ntype TColorContainerProps = {\n $colorText: string\n}\n\nconst ColorContainer = styled.div<TColorContainerProps>`\n color: ${({ $colorText }) => $colorText};\n\n & tr,\n td {\n color: ${({ $colorText }) => $colorText};\n }\n`\n\nexport const Styled = {\n ColorContainer,\n}\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { FC, useState, CSSProperties } from 'react'\nimport jp from 'jsonpath'\nimport _ from 'lodash'\nimport { useLocation, useNavigate, useParams } from 'react-router-dom'\nimport { Flex, Spin, Button, theme as antdtheme } from 'antd'\nimport { PlusOutlined, ClearOutlined, MinusOutlined } from '@ant-design/icons'\nimport { EditIcon, DeleteIcon, PaddingContainer, DeleteModal, DeleteModalMany } from 'components/atoms'\nimport { EnrichedTableProvider } from 'components/molecules'\nimport { usePermissions } from 'hooks/usePermissions'\nimport { useK8sSmartResource } from 'hooks/useK8sSmartResource'\nimport { useDirectUnknownResource } from 'hooks/useDirectUnknownResource'\nimport { getLinkToForm } from 'utils/tableLocations'\nimport { useMultiQuery } from '../../../../../DynamicRendererWithProviders/providers/hybridDataProvider'\nimport { usePartsOfUrl } from '../../../../../DynamicRendererWithProviders/providers/partsOfUrlContext'\nimport { useTheme } from '../../../../../DynamicRendererWithProviders/providers/themeContext'\nimport { serializeLabelsWithNoEncoding } from '../../../../utils/EnrichedTable'\nimport { TEnrichedTableProps as TInnerProps } from '../../../../types/EnrichedTable'\nimport { parseAll } from '../../../utils'\nimport { ReadOnlyModal } from '../../../../atoms/modals'\nimport { Styled } from './styled'\n\ntype TEnrichedTableModalProps = {\n open: boolean\n onClose: () => void\n modalTitle?: string\n modalDescriptionText?: string\n modalDescriptionTextStyle?: CSSProperties\n editModalWidth?: number | string\n} & TInnerProps\n\nexport const EnrichedTableModal: FC<TEnrichedTableModalProps> = ({\n open,\n onClose,\n modalTitle,\n modalDescriptionText,\n modalDescriptionTextStyle,\n editModalWidth,\n fetchUrl,\n k8sResourceToFetch,\n pathToItems,\n additionalReqsDataToEachItem,\n cluster,\n labelSelector,\n labelSelectorFull,\n fieldSelector,\n namespace,\n k8sResource,\n dataForControls,\n baseprefix,\n pathToKey,\n ...props\n}) => {\n const location = useLocation()\n const params = useParams()\n const navigate = useNavigate()\n const { token } = antdtheme.useToken()\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([])\n const [selectedRowsData, setSelectedRowsData] = useState<{ name: string; endpoint: string }[]>([])\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState<false | { name: string; endpoint: string }>(false)\n const [isDeleteModalManyOpen, setIsDeleteModalManyOpen] = useState<false | { name: string; endpoint: string }[]>(\n false,\n )\n\n const { data: multiQueryData, isLoading: isMultiqueryLoading } = useMultiQuery()\n\n const theme = useTheme()\n const partsOfUrl = usePartsOfUrl()\n\n const replaceValues = partsOfUrl.partsOfUrl.reduce<Record<string, string | undefined>>((acc, value, index) => {\n acc[index.toString()] = value\n return acc\n }, {})\n\n const clusterPrepared = parseAll({ text: cluster, replaceValues, multiQueryData })\n\n const namespacePrepared = namespace ? parseAll({ text: namespace, replaceValues, multiQueryData }) : undefined\n\n const k8sResourcePrePrepared = k8sResource\n ? {\n apiGroup: k8sResource.apiGroup\n ? parseAll({ text: k8sResource.apiGroup, replaceValues, multiQueryData })\n : undefined,\n apiVersion: parseAll({ text: k8sResource.apiVersion, replaceValues, multiQueryData }),\n plural: parseAll({ text: k8sResource.plural, replaceValues, multiQueryData }),\n }\n : undefined\n\n const k8sResourcePrepared =\n k8sResourcePrePrepared?.apiGroup === '-'\n ? { apiVersion: k8sResourcePrePrepared.apiVersion, plural: k8sResourcePrePrepared.plural }\n : k8sResourcePrePrepared\n\n const dataForControlsPrepared = dataForControls\n ? {\n cluster: clusterPrepared,\n syntheticProject: dataForControls.syntheticProject\n ? parseAll({ text: dataForControls.syntheticProject, replaceValues, multiQueryData })\n : undefined,\n plural: parseAll({ text: dataForControls.plural, replaceValues, multiQueryData }),\n apiGroup: dataForControls.apiGroup\n ? parseAll({ text: dataForControls.apiGroup, replaceValues, multiQueryData })\n : undefined,\n apiVersion: parseAll({ text: dataForControls.apiVersion, replaceValues, multiQueryData }),\n }\n : undefined\n\n const createPermission = usePermissions({\n apiGroup: dataForControlsPrepared?.apiGroup,\n plural: dataForControlsPrepared?.plural || '',\n namespace: namespacePrepared,\n cluster: clusterPrepared,\n verb: 'create',\n refetchInterval: false,\n enabler: Boolean(dataForControlsPrepared && clusterPrepared && !isMultiqueryLoading),\n })\n\n const fetchUrlPrepared = fetchUrl ? parseAll({ text: fetchUrl, replaceValues, multiQueryData }) : undefined\n\n const k8sResourceToFetchPrepared = k8sResourceToFetch\n ? {\n apiGroup: k8sResourceToFetch.apiGroup\n ? parseAll({ text: k8sResourceToFetch.apiGroup, replaceValues, multiQueryData })\n : undefined,\n apiVersion: parseAll({ text: k8sResourceToFetch.apiVersion, replaceValues, multiQueryData }),\n plural: parseAll({ text: k8sResourceToFetch.plural, replaceValues, multiQueryData }),\n namespace: k8sResourceToFetch.namespace\n ? parseAll({ text: k8sResourceToFetch.namespace, replaceValues, multiQueryData })\n : undefined,\n }\n : undefined\n\n const sParams = new URLSearchParams()\n\n if (labelSelector && Object.keys(labelSelector).length > 0) {\n const parsedObject: Record<string, string> = Object.fromEntries(\n Object.entries(labelSelector).map(\n ([k, v]) => [k, parseAll({ text: v, replaceValues, multiQueryData })] as [string, string],\n ),\n )\n const serializedLabels = serializeLabelsWithNoEncoding(parsedObject)\n if (serializedLabels.length > 0) sParams.set('labelSelector', serializedLabels)\n }\n\n if (labelSelectorFull) {\n const root = multiQueryData[`req${labelSelectorFull.reqIndex}`]\n const value = Array.isArray(labelSelectorFull.pathToLabels)\n ? _.get(root || {}, labelSelectorFull.pathToLabels)\n : jp.query(root || {}, `$${labelSelectorFull.pathToLabels}`)[0]\n\n const serializedLabels = serializeLabelsWithNoEncoding(value)\n if (serializedLabels.length > 0) sParams.set('labelSelector', serializedLabels)\n }\n\n if (fieldSelector) {\n const parsedObject: Record<string, string> = Object.fromEntries(\n Object.entries(fieldSelector).map(\n ([k, v]) =>\n [\n parseAll({ text: k, replaceValues, multiQueryData }),\n parseAll({ text: v, replaceValues, multiQueryData }),\n ] as [string, string],\n ),\n )\n const serializedFields = serializeLabelsWithNoEncoding(parsedObject)\n\n if (serializedFields.length > 0) sParams.set('fieldSelector', serializedFields)\n }\n\n const searchParams = sParams.toString()\n\n const {\n data: fetchedData,\n isLoading: isFetchedDataLoading,\n error: fetchedDataError,\n } = useDirectUnknownResource<unknown>({\n uri: `${fetchUrlPrepared}${searchParams ? `?${searchParams}` : ''}`,\n queryKey: [`${fetchUrlPrepared}${searchParams ? `?${searchParams}` : ''}`],\n isEnabled: Boolean(!isMultiqueryLoading && fetchUrlPrepared),\n })\n\n const {\n data: fetchedDataSocket,\n isLoading: isFetchedDataSocketLoading,\n error: fetchedDataSocketError,\n } = useK8sSmartResource<{ items?: unknown }>({\n cluster: clusterPrepared || '',\n namespace: k8sResourceToFetchPrepared?.namespace,\n apiGroup: k8sResourceToFetchPrepared?.apiGroup,\n apiVersion: k8sResourceToFetchPrepared?.apiVersion || '',\n plural: k8sResourceToFetchPrepared?.plural || '',\n fieldSelector: sParams.get('fieldSelector') || undefined,\n labelSelector: sParams.get('labelSelector') || undefined,\n isEnabled: Boolean(!isMultiqueryLoading && k8sResourceToFetchPrepared),\n })\n\n if (fetchUrlPrepared && isMultiqueryLoading) {\n return <div>Loading multiquery</div>\n }\n\n if (k8sResourceToFetchPrepared && isMultiqueryLoading) {\n return <div>Loading multiquery</div>\n }\n\n // if (!fetchedData) {\n // return <div>No data has been fetched</div>\n // }\n\n if (fetchUrlPrepared && isFetchedDataLoading) {\n return (\n <Flex justify=\"center\">\n <Spin />\n </Flex>\n )\n }\n\n if (k8sResourceToFetchPrepared && isFetchedDataSocketLoading) {\n return (\n <Flex justify=\"center\">\n <Spin />\n </Flex>\n )\n }\n\n if (fetchUrlPrepared && fetchedDataError) {\n return <div>Error: {JSON.stringify(fetchedDataError)}</div>\n }\n\n if (k8sResourceToFetchPrepared && fetchedDataSocketError) {\n return <div>Error: {JSON.stringify(fetchedDataError)}</div>\n }\n\n const dataFromOneOfHooks = fetchedData || fetchedDataSocket || {}\n\n const items = Array.isArray(pathToItems)\n ? _.get(dataFromOneOfHooks || {}, pathToItems)\n : jp.query(dataFromOneOfHooks || {}, `$${pathToItems}`)[0]\n\n const itemsAlwaysArr = Array.isArray(items) ? items : []\n\n let additionalReqsData: any[] | undefined = []\n if (additionalReqsDataToEachItem) {\n additionalReqsDataToEachItem.forEach(item => {\n additionalReqsData?.push(multiQueryData[`req${item}`])\n })\n }\n additionalReqsData = additionalReqsData.length > 0 ? additionalReqsData : undefined\n\n const itemsAlwaysArrWithAdditionalData = itemsAlwaysArr.map(el => ({\n ...el,\n ...(additionalReqsData ? { additionalReqsData } : {}),\n }))\n\n // if (!items) {\n // return <div>No data on this path {JSON.stringify(pathToItems)}</div>\n // }\n\n const clearSelected = () => {\n setSelectedRowKeys([])\n setSelectedRowsData([])\n }\n\n const onDeleteHandle = (name: string, endpoint: string) => {\n setIsDeleteModalOpen({ name, endpoint })\n }\n\n const fullPath = `${location.pathname}${location.search}`\n\n const modalTitlePrepared = modalTitle ? parseAll({ text: modalTitle, replaceValues, multiQueryData }) : 'Edit'\n const modalDescriptionTextPrepared = modalDescriptionText\n ? parseAll({ text: modalDescriptionText, replaceValues, multiQueryData })\n : undefined\n\n return (\n <>\n <ReadOnlyModal\n open={open}\n close={onClose}\n modalTitle={modalTitlePrepared}\n modalDescriptionText={modalDescriptionTextPrepared}\n modalDescriptionTextStyle={modalDescriptionTextStyle}\n editModalWidth={editModalWidth}\n >\n <Styled.ColorContainer $colorText={token.colorText}>\n <EnrichedTableProvider\n tableMappingsReplaceValues={replaceValues}\n cluster={clusterPrepared}\n namespace={namespacePrepared}\n theme={theme}\n dataItems={itemsAlwaysArrWithAdditionalData}\n tableProps={{\n borderless: true,\n paginationPosition: ['bottomRight'],\n isTotalLeft: true,\n editIcon: <EditIcon />,\n deleteIcon: <DeleteIcon />,\n disablePagination: true,\n }}\n selectData={\n dataForControlsPrepared\n ? {\n selectedRowKeys,\n onChange: (\n selectedRowKeys: React.Key[],\n selectedRowsData: { name: string; endpoint: string }[],\n ) => {\n setSelectedRowKeys(selectedRowKeys)\n setSelectedRowsData(selectedRowsData)\n },\n }\n : undefined\n }\n k8sResource={k8sResourcePrepared}\n dataForControlsInternal={{ onDeleteHandle }}\n dataForControls={dataForControlsPrepared}\n withoutControls={!dataForControlsPrepared}\n baseprefix={baseprefix}\n pathToKey={pathToKey}\n {...props}\n />\n </Styled.ColorContainer>\n </ReadOnlyModal>\n {dataForControlsPrepared && (\n <PaddingContainer $padding=\"4px\">\n <Flex justify=\"space-between\">\n <Button\n type=\"primary\"\n onClick={() => {\n const url = getLinkToForm({\n cluster: clusterPrepared,\n baseprefix,\n namespace: namespacePrepared,\n syntheticProject: params.syntheticProject,\n apiGroup: dataForControlsPrepared.apiGroup,\n apiVersion: dataForControlsPrepared.apiVersion,\n plural: dataForControlsPrepared.plural,\n fullPath,\n })\n navigate(url)\n }}\n loading={createPermission.isPending}\n disabled={!createPermission.data?.status.allowed}\n >\n <PlusOutlined />\n Add\n </Button>\n {selectedRowKeys.length > 0 && (\n <Flex gap={16}>\n <Button type=\"primary\" onClick={clearSelected}>\n <ClearOutlined />\n Clear\n </Button>\n <Button type=\"primary\" onClick={() => setIsDeleteModalManyOpen(selectedRowsData)}>\n <MinusOutlined />\n Delete\n </Button>\n </Flex>\n )}\n </Flex>\n </PaddingContainer>\n )}\n {isDeleteModalOpen && (\n <DeleteModal\n name={isDeleteModalOpen.name}\n onClose={() => {\n setIsDeleteModalOpen(false)\n clearSelected()\n }}\n endpoint={isDeleteModalOpen.endpoint}\n />\n )}\n {isDeleteModalManyOpen !== false && (\n <DeleteModalMany\n data={isDeleteModalManyOpen}\n onClose={() => {\n setIsDeleteModalManyOpen(false)\n clearSelected()\n }}\n />\n )}\n </>\n )\n}\n"],"names":["antdtheme","theme","jsx","jsxs","Fragment","selectedRowKeys","selectedRowsData"],"mappings":"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"}
|