@dovetail-v2/refine 0.2.12 → 0.3.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.
@@ -12,9 +12,9 @@ import { parse, stringify } from "qs";
12
12
  import * as React from "react";
13
13
  import React__default, { createElement, isValidElement, cloneElement, Children, useContext, useCallback, createContext, useState, useEffect, useMemo, useRef, useImperativeHandle, lazy, Suspense, forwardRef } from "react";
14
14
  import { useLocation, useHistory, useParams, matchPath, Link, Route, NavLink, Router } from "react-router-dom";
15
- import { usePushModal, usePopModal, DeleteDialog, Tag, RejectDialog, RejectDialogType, Input, Select, AntdOption, Button, Form, Space, TextArea, kitContext, Typo, Loading, Table as Table$2, Pagination, Alert, Modal, Fields, Units, Link as Link$1, OverflowTooltip, Tooltip, Dropdown, Menu as Menu$1, Icon as Icon$1, Divider, StatusCapsule, Tabs as Tabs$1, TabsTabPane, Row, Col, Popover, AntdTable, TableForm, getOptions, DonutChart, SegmentControl, Checkbox, useMessage, SearchInput, Token, AntdSelectOptGroup, MenuItemGroup, Layout as Layout$1, Time as Time$1, ModalStack, KitStoreProvider, ConfigProvider } from "@cloudtower/eagle";
15
+ import { usePushModal, usePopModal, DeleteDialog, Tag, RejectDialog, RejectDialogType, Input, Select, AntdOption, Button, Form, Space, TextArea, kitContext, Typo, Loading, Table as Table$2, Pagination, Alert, Modal, Fields, Units, Link as Link$1, OverflowTooltip, Tooltip, Dropdown, Menu as Menu$1, Icon as Icon$1, Divider, StatusCapsule, Tabs as Tabs$1, TabsTabPane, Row, Col, Popover, AntdTable, TableForm, Upload, getOptions, DonutChart, SegmentControl, Checkbox, useMessage, SearchInput, Token, AntdSelectOptGroup, MenuItemGroup, Layout as Layout$1, Time as Time$1, ModalStack, KitStoreProvider, ConfigProvider } from "@cloudtower/eagle";
16
16
  import { EditPen16PrimaryIcon, Download16GradientBlueIcon, TrashBinDelete16Icon, MoreEllipsis324BoldSecondaryIcon, MoreEllipsis324BoldBlueIcon, MoreEllipsis316BoldBlueIcon, PlusAddCreateNew16BoldOntintIcon, ArrowChevronLeft16BoldTertiaryIcon, ArrowChevronLeftSmall16BoldBlueIcon, ViewEye16GradientGrayIcon, EntityFilterIgnoreGradient16GrayIcon, InfoICircleFill16GrayIcon, InfoICircleFill16Gray70Icon, RecoverContinue16GradientBlueIcon, SuspendedPause16GradientBlueIcon, Retry16GradientBlueIcon, OpenTerminal16GradientBlueIcon, HierarchyTriangleRight16GrayIcon, HierarchyTriangleRight16BlueIcon, ClipboardCopy16GradientGrayIcon, ClipboardCopy16GradientBlueIcon, Retry16GradientGrayIcon, EditPen16GradientGrayIcon, EditPen16GradientBlueIcon, Showdiff16GradientGrayIcon, Showdiff16GradientBlueIcon, XmarkFailedSeriousWarningFill16RedIcon, ExclamationErrorCircleFill16RedIcon, Pause16GradientBlueIcon, EditPen16BlueIcon } from "@cloudtower/icons-react";
17
- import { first, get as get$2, cloneDeep, set, omit as omit$1, merge, debounce, last, setWith, clone, isObject as isObject$3, uniq, keyBy } from "lodash-es";
17
+ import { first, get as get$2, cloneDeep, set, omit as omit$1, merge, isEqual, debounce, last, setWith, clone, isObject as isObject$3, uniq, keyBy } from "lodash-es";
18
18
  import yaml$2 from "js-yaml";
19
19
  import { useLocalStorage } from "usehooks-ts";
20
20
  import { paginateData, sortData, dataProvider, liveProvider } from "k8s-api-provider";
@@ -1163,6 +1163,7 @@ const confirm = "确认";
1163
1163
  const cant_delete_resource = "无法删除{{resource}}";
1164
1164
  const cant_delete_resource_with_name = "无法删除{{resource}} <0>{{name}}</0> 。";
1165
1165
  const close = "关闭";
1166
+ const import_from_file = "从文件读取";
1166
1167
  const dovetail = {
1167
1168
  copy,
1168
1169
  reset_arguments,
@@ -1404,7 +1405,8 @@ const dovetail = {
1404
1405
  confirm,
1405
1406
  cant_delete_resource,
1406
1407
  cant_delete_resource_with_name,
1407
- close
1408
+ close,
1409
+ import_from_file
1408
1410
  };
1409
1411
  const ZH = {
1410
1412
  dovetail
@@ -5615,7 +5617,7 @@ lodash.exports;
5615
5617
  }
5616
5618
  return true;
5617
5619
  }
5618
- function isEqual(value2, other) {
5620
+ function isEqual2(value2, other) {
5619
5621
  return baseIsEqual(value2, other);
5620
5622
  }
5621
5623
  function isEqualWith(value2, other, customizer) {
@@ -6728,7 +6730,7 @@ lodash.exports;
6728
6730
  lodash2.isDate = isDate;
6729
6731
  lodash2.isElement = isElement;
6730
6732
  lodash2.isEmpty = isEmpty;
6731
- lodash2.isEqual = isEqual;
6733
+ lodash2.isEqual = isEqual2;
6732
6734
  lodash2.isEqualWith = isEqualWith;
6733
6735
  lodash2.isError = isError;
6734
6736
  lodash2.isFinite = isFinite2;
@@ -9300,7 +9302,7 @@ class JobModel extends WorkloadBaseModel {
9300
9302
  return matchSelector(p, (_a = this.spec) == null ? void 0 : _a.selector, this.metadata.namespace);
9301
9303
  }
9302
9304
  );
9303
- const result = lodashExports.sumBy(myPods, "restartCount");
9305
+ const result = lodashExports.sumBy(myPods, "restarts");
9304
9306
  this.restarts = result;
9305
9307
  }
9306
9308
  get duration() {
@@ -9367,7 +9369,7 @@ class WorkloadModel extends WorkloadBaseModel {
9367
9369
  return matchSelector(p, (_a = this.spec) == null ? void 0 : _a.selector, this.metadata.namespace);
9368
9370
  }
9369
9371
  );
9370
- const result = lodashExports.sumBy(myPods, "restartCount");
9372
+ const result = lodashExports.sumBy(myPods, "restarts");
9371
9373
  this.restarts = result;
9372
9374
  }
9373
9375
  get replicas() {
@@ -9376,6 +9378,9 @@ class WorkloadModel extends WorkloadBaseModel {
9376
9378
  get readyReplicas() {
9377
9379
  return this.status && "readyReplicas" in this.status ? this.status.readyReplicas : 0;
9378
9380
  }
9381
+ get appKey() {
9382
+ return `${this.kind}-${this.name}-${this.namespace}`;
9383
+ }
9379
9384
  redeploy() {
9380
9385
  const rawYaml = this._globalStore.restoreItem(this);
9381
9386
  const newOne = lodashExports.cloneDeep(rawYaml);
@@ -9448,7 +9453,7 @@ class PodModel extends WorkloadBaseModel {
9448
9453
  (container2) => shortenedImage(container2.image || "")
9449
9454
  )) || [];
9450
9455
  }
9451
- get restartCount() {
9456
+ get restarts() {
9452
9457
  var _a, _b;
9453
9458
  if ((_a = this._rawYaml.status) == null ? void 0 : _a.containerStatuses) {
9454
9459
  return ((_b = this._rawYaml.status) == null ? void 0 : _b.containerStatuses.reduce((count, container2) => {
@@ -10173,34 +10178,44 @@ function getInitialValues(config) {
10173
10178
  spec: {}
10174
10179
  };
10175
10180
  }
10176
- function useOpenForm(options) {
10181
+ function useOpenForm() {
10177
10182
  const { resource } = useResource();
10178
10183
  const configs = useContext(ConfigsContext);
10179
10184
  const { edit: edit2 } = useEdit();
10180
10185
  const navigation = useNavigation();
10181
10186
  const pushModal = usePushModal();
10182
10187
  const go = useGo();
10183
- return function openForm() {
10184
- var _a, _b;
10185
- if (resource == null ? void 0 : resource.name) {
10186
- const config = configs[resource.name];
10188
+ return function openForm(options) {
10189
+ var _a;
10190
+ const finalResourceName = (options == null ? void 0 : options.resourceName) || (resource == null ? void 0 : resource.name);
10191
+ if (finalResourceName) {
10192
+ const config = configs[finalResourceName];
10187
10193
  const formType = (_a = config.formConfig) == null ? void 0 : _a.formContainerType;
10188
10194
  if (formType === void 0 || formType === FormContainerType.MODAL) {
10189
10195
  pushModal({
10190
- component: ((_b = config.formConfig) == null ? void 0 : _b.CustomFormModal) || FormModal,
10191
- props: {
10192
- resource: resource.name,
10193
- id: options == null ? void 0 : options.id,
10194
- formProps: {
10195
- initialValues: getInitialValues(config)
10196
- }
10197
- }
10196
+ component: () => {
10197
+ var _a2;
10198
+ const ModalComponent = ((_a2 = config.formConfig) == null ? void 0 : _a2.CustomFormModal) || FormModal;
10199
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
10200
+ ModalComponent,
10201
+ {
10202
+ resource: finalResourceName,
10203
+ id: options == null ? void 0 : options.id,
10204
+ yamlFormProps: {
10205
+ config,
10206
+ initialValuesForCreate: getInitialValues(config)
10207
+ },
10208
+ onSuccess: options == null ? void 0 : options.onSuccess
10209
+ }
10210
+ );
10211
+ },
10212
+ props: {}
10198
10213
  });
10199
10214
  } else if (options == null ? void 0 : options.id) {
10200
10215
  edit2(options.id);
10201
10216
  } else {
10202
10217
  go({
10203
- to: navigation.createUrl(resource.name),
10218
+ to: navigation.createUrl(finalResourceName),
10204
10219
  options: {
10205
10220
  keepQuery: true
10206
10221
  }
@@ -10209,28 +10224,78 @@ function useOpenForm(options) {
10209
10224
  }
10210
10225
  };
10211
10226
  }
10227
+ function getResourceNameByKind(kind, configs) {
10228
+ var _a;
10229
+ return (_a = Object.values(configs).find((config) => config.kind === kind)) == null ? void 0 : _a.name;
10230
+ }
10231
+ function validateDnsSubdomain(subdomain) {
10232
+ const regex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
10233
+ if (!regex.test(subdomain)) {
10234
+ return { isValid: false };
10235
+ }
10236
+ if (subdomain && subdomain.length > 63) {
10237
+ return { isValid: false };
10238
+ }
10239
+ return { isValid: true };
10240
+ }
10241
+ function validateLabelKey(key2) {
10242
+ const labelRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
10243
+ let prefix2, name2;
10244
+ const splitResult = key2.split("/");
10245
+ if (splitResult.length === 1) {
10246
+ name2 = splitResult[0];
10247
+ } else {
10248
+ prefix2 = splitResult[0];
10249
+ name2 = splitResult[1];
10250
+ }
10251
+ if (prefix2 === "") {
10252
+ return { isValid: false };
10253
+ }
10254
+ if (prefix2 && !labelRegex.test(prefix2)) {
10255
+ return { isValid: false };
10256
+ }
10257
+ if (prefix2 && prefix2.length > 253) {
10258
+ return { isValid: false };
10259
+ }
10260
+ return validateDnsSubdomain(name2);
10261
+ }
10262
+ function validateLabelValue(value2, isOptional) {
10263
+ const labelValueRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
10264
+ if (isOptional && value2 === "") {
10265
+ return { isValid: true };
10266
+ } else if (value2 === "") {
10267
+ return { isValid: false };
10268
+ }
10269
+ if (value2.length > 63) {
10270
+ return { isValid: false };
10271
+ }
10272
+ if (!labelValueRegex.test(value2)) {
10273
+ return { isValid: false };
10274
+ }
10275
+ return { isValid: true };
10276
+ }
10212
10277
  function K8sDropdown(props) {
10213
10278
  var _a;
10214
10279
  const { record, size = "normal" } = props;
10215
10280
  const globalStore = useGlobalStore();
10216
10281
  const useResourceResult = useResource();
10217
- const resource = useResourceResult.resource;
10218
10282
  const configs = useContext(ConfigsContext);
10219
- const config = configs[(resource == null ? void 0 : resource.name) || ""];
10283
+ const resourceName = getResourceNameByKind(record.kind || "", configs);
10284
+ const config = configs[resourceName || ""];
10220
10285
  const { t: t2 } = useTranslation();
10221
- const { openDeleteConfirmModal } = useDeleteModal({ resourceName: (resource == null ? void 0 : resource.name) || "" });
10286
+ const { openDeleteConfirmModal } = useDeleteModal({ resourceName: resourceName || "" });
10222
10287
  const download2 = useDownloadYAML();
10223
- const openForm = useOpenForm({ id: record.id });
10288
+ const openForm = useOpenForm();
10224
10289
  const isInShowPage = useResourceResult.action === "show";
10225
10290
  const { data: canEditData } = useCan({
10226
- resource: resource == null ? void 0 : resource.name,
10291
+ resource: resourceName,
10227
10292
  action: AccessControlAuth.Edit,
10228
10293
  params: {
10229
10294
  namespace: record.namespace
10230
10295
  }
10231
10296
  });
10232
10297
  const { data: canDeleteData } = useCan({
10233
- resource: resource == null ? void 0 : resource.name,
10298
+ resource: resourceName,
10234
10299
  action: AccessControlAuth.Delete,
10235
10300
  params: {
10236
10301
  namespace: record.namespace
@@ -10241,7 +10306,7 @@ function K8sDropdown(props) {
10241
10306
  Dropdown,
10242
10307
  {
10243
10308
  overlay: /* @__PURE__ */ jsxRuntimeExports.jsxs(Menu$1, { children: [
10244
- isInShowPage || (canEditData == null ? void 0 : canEditData.can) === false || config.hideEdit ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(Menu$1.Item, { onClick: openForm, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon$1, { src: EditPen16PrimaryIcon, children: formType === FormType.FORM ? t2("dovetail.edit") : t2("dovetail.edit_yaml") }) }),
10309
+ isInShowPage || (canEditData == null ? void 0 : canEditData.can) === false || config.hideEdit ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(Menu$1.Item, { onClick: () => openForm({ id: record.id }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon$1, { src: EditPen16PrimaryIcon, children: formType === FormType.FORM ? t2("dovetail.edit") : t2("dovetail.edit_yaml") }) }),
10245
10310
  /* @__PURE__ */ jsxRuntimeExports.jsx(
10246
10311
  Menu$1.Item,
10247
10312
  {
@@ -10399,7 +10464,7 @@ function CreateButton(props) {
10399
10464
  {
10400
10465
  prefixIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(PlusAddCreateNew16BoldOntintIcon, {}),
10401
10466
  type: "primary",
10402
- onClick: openForm,
10467
+ onClick: () => openForm(),
10403
10468
  children: createButtonText || t2("dovetail.create_resource", {
10404
10469
  resource: transformResourceKindInSentence(label2, i18n2.language)
10405
10470
  })
@@ -10678,7 +10743,7 @@ const index_x36tts = "";
10678
10743
  const LinkStyle = "l1vnw9x0";
10679
10744
  const ResourceLink = (props) => {
10680
10745
  const {
10681
- resourceKind: resourceName,
10746
+ resourceName,
10682
10747
  namespace: namespace2,
10683
10748
  name: name2,
10684
10749
  uid,
@@ -10769,7 +10834,7 @@ const IngressRulesTable = ({ ingress }) => {
10769
10834
  return record.serviceName ? /* @__PURE__ */ jsxRuntimeExports.jsx(
10770
10835
  ResourceLink,
10771
10836
  {
10772
- resourceKind: "services",
10837
+ resourceName: "services",
10773
10838
  namespace: ingress.metadata.namespace || "default",
10774
10839
  name: serviceName
10775
10840
  }
@@ -10796,7 +10861,7 @@ const IngressRulesTable = ({ ingress }) => {
10796
10861
  return secretName ? /* @__PURE__ */ jsxRuntimeExports.jsx(
10797
10862
  ResourceLink,
10798
10863
  {
10799
- resourceKind: "secrets",
10864
+ resourceName: "secrets",
10800
10865
  namespace: ingress.metadata.namespace || "default",
10801
10866
  name: secretName
10802
10867
  }
@@ -11019,9 +11084,7 @@ const ShowContent = (props) => {
11019
11084
  } = queryResult;
11020
11085
  const navigation = useNavigation();
11021
11086
  const go = useGo();
11022
- const openForm = useOpenForm({
11023
- id
11024
- });
11087
+ const openForm = useOpenForm();
11025
11088
  const Component = useContext(ComponentContext);
11026
11089
  const configs = useContext(ConfigsContext);
11027
11090
  const config = configs[(resource == null ? void 0 : resource.name) || ""];
@@ -11124,7 +11187,9 @@ const ShowContent = (props) => {
11124
11187
  style: {
11125
11188
  marginRight: 8
11126
11189
  },
11127
- onClick: openForm,
11190
+ onClick: () => openForm({
11191
+ id
11192
+ }),
11128
11193
  children: ((_f = config.formConfig) == null ? void 0 : _f.formType) === FormType.FORM ? t2("dovetail.edit") : t2("dovetail.edit_yaml")
11129
11194
  })
11130
11195
  }) : null, /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown2, {
@@ -11213,45 +11278,36 @@ function KeyValueSecret(props) {
11213
11278
  })
11214
11279
  });
11215
11280
  }
11216
- function validateLabelKey(key2) {
11217
- const labelRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
11218
- let prefix2, name2;
11219
- const splitResult = key2.split("/");
11220
- if (splitResult.length === 1) {
11221
- name2 = splitResult[0];
11222
- } else {
11223
- prefix2 = splitResult[0];
11224
- name2 = splitResult[1];
11225
- }
11226
- if (prefix2 === "") {
11227
- return { isValid: false, errorMessage: "EMPTY_PREFIX" };
11228
- }
11229
- if (prefix2 && !labelRegex.test(prefix2)) {
11230
- return { isValid: false, errorMessage: "INVALID_PREFIX" };
11231
- }
11232
- if (!labelRegex.test(name2)) {
11233
- return { isValid: false, errorMessage: "INVALID_NAME" };
11234
- }
11235
- if (prefix2 && prefix2.length > 253) {
11236
- return { isValid: false, errorMessage: "MAX_253" };
11237
- }
11238
- if (name2 && name2.length > 63) {
11239
- return { isValid: false, errorMessage: "MAX_63" };
11281
+ function isUtf8(buffer) {
11282
+ try {
11283
+ const decoder = new TextDecoder("utf-8", { fatal: true });
11284
+ decoder.decode(buffer);
11285
+ return true;
11286
+ } catch (e2) {
11287
+ return false;
11240
11288
  }
11241
- return { isValid: true };
11242
11289
  }
11243
- function validateLabelValue(value2) {
11244
- const labelValueRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
11245
- if (value2 === "") {
11246
- return { isValid: true };
11247
- }
11248
- if (value2.length > 63) {
11249
- return { isValid: false, errorMessage: "MAX_63" };
11250
- }
11251
- if (!labelValueRegex.test(value2)) {
11252
- return { isValid: false, errorMessage: "INVALID_VALUE" };
11253
- }
11254
- return { isValid: true };
11290
+ function readFileAsBase64(file) {
11291
+ return new Promise((resolve, reject) => {
11292
+ const reader = new FileReader();
11293
+ reader.onload = async () => {
11294
+ const arrayBuffer = reader.result;
11295
+ if (arrayBuffer instanceof ArrayBuffer) {
11296
+ if (isUtf8(arrayBuffer)) {
11297
+ resolve(await file.text());
11298
+ } else {
11299
+ const base64String = btoa(
11300
+ String.fromCharCode(...new Uint8Array(arrayBuffer))
11301
+ );
11302
+ resolve(base64String);
11303
+ }
11304
+ return;
11305
+ }
11306
+ reject(new Error("Failed to read file"));
11307
+ };
11308
+ reader.onerror = reject;
11309
+ reader.readAsArrayBuffer(file);
11310
+ });
11255
11311
  }
11256
11312
  const LabelFormatPopover_piveun = "";
11257
11313
  const PodLabelFormatRulePopoverStyle = "p5jt6nm";
@@ -11339,59 +11395,86 @@ const LabelFormatPopover = ({
11339
11395
  })
11340
11396
  });
11341
11397
  };
11342
- const KeyValueTableForm_1eydq7y = "";
11343
- function _KeyValueTableFormForm(props, ref) {
11398
+ const index_t3zi07 = "";
11399
+ function _KeyValueTableForm(props, ref) {
11344
11400
  const {
11401
+ value: value2,
11345
11402
  defaultValue,
11346
- onSubmit,
11403
+ onChange,
11347
11404
  extraColumns,
11348
11405
  addButtonText,
11349
- noValueValidation
11406
+ noValueValidation,
11407
+ isHideLabelFormatPopover,
11408
+ isValueOptional = true,
11409
+ canImportFromFile,
11410
+ minSize,
11411
+ validateKey,
11412
+ validateValue,
11413
+ onSubmit
11350
11414
  } = props;
11351
11415
  const {
11352
11416
  t: t2
11353
11417
  } = useTranslation();
11354
- const [value2, setValue] = useState([]);
11355
11418
  const tableFormRef = useRef(null);
11419
+ const [_value, _setValue] = useState(value2 || defaultValue);
11420
+ const [forceUpdateCount, setForceUpdateCount] = useState(0);
11421
+ const validate = useCallback(() => {
11422
+ return new Promise((resolve) => {
11423
+ var _a;
11424
+ (_a = tableFormRef.current) == null ? void 0 : _a.validateWholeFields();
11425
+ setForceUpdateCount(forceUpdateCount + 1);
11426
+ setTimeout(() => {
11427
+ var _a2;
11428
+ const isValid = (_a2 = tableFormRef.current) == null ? void 0 : _a2.isValid();
11429
+ resolve(isValid || false);
11430
+ }, 0);
11431
+ });
11432
+ }, [forceUpdateCount]);
11356
11433
  useImperativeHandle(ref, () => ({
11357
- submit: () => {
11358
- return new Promise((res, rej) => {
11359
- var _a;
11360
- (_a = tableFormRef.current) == null ? void 0 : _a.validateWholeFields();
11361
- setTimeout(() => {
11362
- var _a2;
11363
- const isValid = (_a2 = tableFormRef.current) == null ? void 0 : _a2.isValid();
11364
- if (isValid) {
11365
- res(onSubmit(value2));
11366
- } else {
11367
- rej();
11368
- }
11369
- }, 0);
11370
- });
11434
+ validate,
11435
+ submit: async () => {
11436
+ const isValid = await validate();
11437
+ if (isValid) {
11438
+ return onSubmit == null ? void 0 : onSubmit(_value);
11439
+ }
11440
+ return Promise.reject();
11441
+ },
11442
+ setValue: (value22) => {
11443
+ var _a;
11444
+ _setValue(value22);
11445
+ (_a = tableFormRef.current) == null ? void 0 : _a.setData(value22);
11446
+ }
11447
+ }), [validate, onSubmit, _value]);
11448
+ useEffect(() => {
11449
+ var _a;
11450
+ if (value2 && !isEqual(value2, _value)) {
11451
+ _setValue(value2);
11452
+ (_a = tableFormRef.current) == null ? void 0 : _a.setData(value2);
11371
11453
  }
11372
- }), [onSubmit, value2]);
11454
+ }, [value2]);
11373
11455
  const renderTextAreaFunc = ({
11374
11456
  value: value22,
11375
- onChange
11457
+ onChange: onChange2
11376
11458
  }) => {
11377
11459
  return /* @__PURE__ */ jsxRuntimeExports.jsx(TextArea, {
11378
11460
  autoSize: true,
11379
- className: "clsjtk2",
11461
+ className: "c17gq8cd",
11380
11462
  size: "small",
11381
11463
  value: value22,
11382
11464
  onChange: (e2) => {
11383
- onChange(e2.target.value);
11465
+ onChange2(e2.target.value);
11384
11466
  }
11385
11467
  });
11386
11468
  };
11387
11469
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, {
11388
11470
  size: 8,
11389
11471
  direction: "vertical",
11390
- className: "cq3mbby",
11472
+ className: "c1n7fiws",
11391
11473
  children: [/* @__PURE__ */ jsxRuntimeExports.jsx(TableForm, {
11392
11474
  ref: tableFormRef,
11393
- onBodyChange: (value22) => {
11394
- setValue(value22);
11475
+ onBodyChange: (newValue) => {
11476
+ _setValue(newValue);
11477
+ onChange == null ? void 0 : onChange(newValue);
11395
11478
  },
11396
11479
  columns: [{
11397
11480
  key: "key",
@@ -11402,46 +11485,72 @@ function _KeyValueTableFormForm(props, ref) {
11402
11485
  }) => {
11403
11486
  if (!value22)
11404
11487
  return t2("dovetail.key_empty_text");
11488
+ const validate2 = validateKey || validateLabelKey;
11405
11489
  const {
11406
- isValid
11407
- } = validateLabelKey(value22 || "");
11490
+ isValid,
11491
+ errorMessage
11492
+ } = validate2(value22 || "");
11408
11493
  if (!isValid)
11409
- return t2("dovetail.format_error");
11494
+ return errorMessage || t2("dovetail.format_error");
11410
11495
  },
11411
11496
  render: renderTextAreaFunc
11412
11497
  }, {
11413
11498
  key: "value",
11414
- title: t2("dovetail.value_optional"),
11499
+ title: isValueOptional ? t2("dovetail.value_optional") : t2("dovetail.value"),
11415
11500
  type: "input",
11416
11501
  validator: ({
11417
11502
  value: value22
11418
11503
  }) => {
11419
11504
  if (noValueValidation)
11420
11505
  return;
11506
+ const validate2 = validateValue || validateLabelValue;
11421
11507
  const {
11422
- isValid
11423
- } = validateLabelValue(value22 || "");
11508
+ isValid,
11509
+ errorMessage
11510
+ } = validate2(value22 || "", isValueOptional);
11424
11511
  if (!isValid)
11425
- return t2("dovetail.format_error");
11512
+ return errorMessage || t2("dovetail.format_error");
11426
11513
  },
11427
11514
  render: renderTextAreaFunc
11428
11515
  }, ...extraColumns || []],
11429
- disableBatchFilling: true,
11430
- hideEmptyTable: true,
11431
11516
  rowAddConfig: {
11432
11517
  addible: true,
11433
11518
  text: () => addButtonText
11434
11519
  },
11435
11520
  defaultData: defaultValue,
11436
11521
  row: {
11437
- deletable: true
11438
- }
11439
- }), /* @__PURE__ */ jsxRuntimeExports.jsx(LabelFormatPopover, {
11522
+ deletable: _value.length > (minSize || 0)
11523
+ },
11524
+ disableBatchFilling: true,
11525
+ hideEmptyTable: true
11526
+ }), isHideLabelFormatPopover ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(LabelFormatPopover, {
11440
11527
  noValueValidation
11441
- })]
11528
+ }), canImportFromFile ? /* @__PURE__ */ jsxRuntimeExports.jsx(Upload, {
11529
+ multiple: false,
11530
+ showUploadList: false,
11531
+ onChange: async (e2) => {
11532
+ var _a;
11533
+ const fileValue = {
11534
+ key: e2.file.name,
11535
+ value: await readFileAsBase64(e2.file.originFileObj)
11536
+ };
11537
+ let newValue = [..._value, fileValue];
11538
+ if (_value.some((v) => v.key === fileValue.key)) {
11539
+ newValue = _value.map((v) => v.key === fileValue.key ? fileValue : v);
11540
+ }
11541
+ _setValue(newValue);
11542
+ (_a = tableFormRef.current) == null ? void 0 : _a.setData(newValue);
11543
+ onChange == null ? void 0 : onChange(newValue);
11544
+ },
11545
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button, {
11546
+ type: "link",
11547
+ size: "small",
11548
+ children: t2("dovetail.import_from_file")
11549
+ })
11550
+ }) : null]
11442
11551
  });
11443
11552
  }
11444
- const KeyValueTableFormForm = React__default.forwardRef(_KeyValueTableFormForm);
11553
+ const KeyValueTableForm = React__default.forwardRef(_KeyValueTableForm);
11445
11554
  const EditNodeTaintForm_cgov7z = "";
11446
11555
  const UlStyle = "u19jcs7t";
11447
11556
  const EditNodeTaintForm = React__default.forwardRef(function EditNodeTaintForm2(props, ref) {
@@ -11454,6 +11563,7 @@ const EditNodeTaintForm = React__default.forwardRef(function EditNodeTaintForm2(
11454
11563
  const {
11455
11564
  t: t2
11456
11565
  } = useTranslation();
11566
+ const tableFormRef = useRef(null);
11457
11567
  const defaultValue = useMemo(() => {
11458
11568
  var _a;
11459
11569
  return ((_a = nodeModel._rawYaml.spec) == null ? void 0 : _a.taints) || [];
@@ -11489,8 +11599,14 @@ const EditNodeTaintForm = React__default.forwardRef(function EditNodeTaintForm2(
11489
11599
  errorNotification: false
11490
11600
  });
11491
11601
  }, [nodeModel, mutateAsync, t2]);
11492
- return /* @__PURE__ */ jsxRuntimeExports.jsx(KeyValueTableFormForm, {
11493
- ref,
11602
+ useImperativeHandle(ref, () => ({
11603
+ submit: () => {
11604
+ var _a;
11605
+ return (_a = tableFormRef.current) == null ? void 0 : _a.submit();
11606
+ }
11607
+ }), []);
11608
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(KeyValueTableForm, {
11609
+ ref: tableFormRef,
11494
11610
  defaultValue,
11495
11611
  onSubmit,
11496
11612
  addButtonText: t2("dovetail.add_taint"),
@@ -11767,7 +11883,7 @@ const WorkloadPodsTable = ({
11767
11883
  title: i18n2.t("dovetail.ip_address"),
11768
11884
  sortable: true,
11769
11885
  width: 160
11770
- }, hideNodeColumn ? void 0 : NodeNameColumnRenderer(i18n2), WorkloadImageColumnRenderer(i18n2), PodContainersNumColumnRenderer(i18n2), RestartCountColumnRenderer(i18n2), AgeColumnRenderer(i18n2)].filter((v) => !!v);
11886
+ }, hideNodeColumn ? void 0 : NodeNameColumnRenderer(i18n2), WorkloadImageColumnRenderer(i18n2), PodContainersNumColumnRenderer(i18n2), RestartsColumnRenderer(i18n2), AgeColumnRenderer(i18n2)].filter((v) => !!v);
11771
11887
  const {
11772
11888
  tableProps
11773
11889
  } = useEagleTable({
@@ -12310,7 +12426,7 @@ const PVRefField = (i18n2) => {
12310
12426
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
12311
12427
  ResourceLink,
12312
12428
  {
12313
- resourceKind: "persistentvolumes",
12429
+ resourceName: "persistentvolumes",
12314
12430
  namespace: "",
12315
12431
  name: value2
12316
12432
  }
@@ -12324,7 +12440,7 @@ const PVStorageClassField = (i18n2) => {
12324
12440
  path: ["spec", "storageClassName"],
12325
12441
  title: i18n2.t("dovetail.storage_class"),
12326
12442
  renderContent(value2) {
12327
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ResourceLink, { resourceKind: "storageclasses", namespace: "", name: value2 });
12443
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ResourceLink, { resourceName: "storageclasses", namespace: "", name: value2 });
12328
12444
  }
12329
12445
  };
12330
12446
  };
@@ -12392,7 +12508,7 @@ const PVCRefField = (i18n2) => {
12392
12508
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
12393
12509
  ResourceLink,
12394
12510
  {
12395
- resourceKind: "persistentvolumeclaims",
12511
+ resourceName: "persistentvolumeclaims",
12396
12512
  namespace: pv2.pvcNamespace || "default",
12397
12513
  name: value2,
12398
12514
  uid: pv2.pvcUid
@@ -12682,7 +12798,7 @@ const PodLogTab = (i18n2) => ({
12682
12798
  ]
12683
12799
  });
12684
12800
  const NetworkPolicyRulesViewer_r6jity = "";
12685
- const MonacoYamlEditor$1 = lazy(() => import("./MonacoYamlEditor-9a2832ff.js"));
12801
+ const MonacoYamlEditor$1 = lazy(() => import("./MonacoYamlEditor-5e4c98ce.js"));
12686
12802
  const EditorStyle$1 = "e1cjl2b8";
12687
12803
  const NetworkPolicyRulesViewer = ({
12688
12804
  ingressOrEgress,
@@ -12759,13 +12875,13 @@ const PodContainersTable = ({
12759
12875
  }
12760
12876
  },
12761
12877
  {
12762
- key: "restartCount",
12763
- dataIndex: ["restartCount"],
12878
+ key: "restarts",
12879
+ dataIndex: ["restarts"],
12764
12880
  title: i18n2.t("dovetail.restarts"),
12765
12881
  sortable: true,
12766
12882
  align: "right",
12767
12883
  width: 120,
12768
- sorter: CommonSorter(["restartCount"])
12884
+ sorter: CommonSorter(["restarts"])
12769
12885
  },
12770
12886
  {
12771
12887
  key: "started",
@@ -15069,18 +15185,26 @@ const NamespacesFilter = ({
15069
15185
  };
15070
15186
  function useNamespaceRefineFilter() {
15071
15187
  const { value: nsFilters = [] } = useNamespacesFilter();
15072
- const filters = useMemo(() => ({
15073
- permanent: [
15074
- {
15075
- operator: "or",
15076
- value: nsFilters.filter((filter) => filter !== ALL_NS).map((filter) => ({
15077
- field: "metadata.namespace",
15078
- operator: "eq",
15079
- value: filter
15080
- }))
15081
- }
15082
- ]
15083
- }), [nsFilters]);
15188
+ const filters = useMemo(() => {
15189
+ const filters2 = nsFilters.filter((filter) => filter !== ALL_NS);
15190
+ if (filters2.length === 0) {
15191
+ return {
15192
+ permanent: []
15193
+ };
15194
+ }
15195
+ return {
15196
+ permanent: [
15197
+ {
15198
+ operator: "or",
15199
+ value: filters2.map((filter) => ({
15200
+ field: "metadata.namespace",
15201
+ operator: "eq",
15202
+ value: filter
15203
+ }))
15204
+ }
15205
+ ]
15206
+ };
15207
+ }, [nsFilters]);
15084
15208
  return filters;
15085
15209
  }
15086
15210
  const index_1l2xllo = "";
@@ -15245,6 +15369,11 @@ function usePathMap(options) {
15245
15369
  transformApplyValues
15246
15370
  };
15247
15371
  }
15372
+ var FormItemLayout = /* @__PURE__ */ ((FormItemLayout2) => {
15373
+ FormItemLayout2["VERTICAL"] = "VERTICAL";
15374
+ FormItemLayout2["HORIZONTAL"] = "HORIZONTAL";
15375
+ return FormItemLayout2;
15376
+ })(FormItemLayout || {});
15248
15377
  function useFieldsConfig(config, formConfig, resourceId) {
15249
15378
  var _a, _b, _c;
15250
15379
  const action = resourceId ? "edit" : "create";
@@ -15266,7 +15395,8 @@ function useFieldsConfig(config, formConfig, resourceId) {
15266
15395
  action
15267
15396
  });
15268
15397
  }
15269
- const RefineFormContent_ahna8x = "";
15398
+ const RefineFormContent_lnhybh = "";
15399
+ const VerticalFormItemStyle = "v154n7ie";
15270
15400
  function renderCommonFormFiled(props) {
15271
15401
  const {
15272
15402
  field,
@@ -15293,7 +15423,7 @@ function renderCommonFormFiled(props) {
15293
15423
  switch (fieldConfig.type) {
15294
15424
  case "number":
15295
15425
  ele = /* @__PURE__ */ jsxRuntimeExports.jsx(Fields.Integer, {
15296
- className: "c154n7ie",
15426
+ className: "c1c9j4da",
15297
15427
  placeholder: fieldConfig.placeholder,
15298
15428
  input: {
15299
15429
  value: value2,
@@ -15336,7 +15466,7 @@ const RefineFormContent = (props) => {
15336
15466
  control,
15337
15467
  name: fieldConfig.path.join("."),
15338
15468
  rules: {
15339
- validate(value2) {
15469
+ async validate(value2) {
15340
15470
  const formValue = getValues();
15341
15471
  if (!fieldConfig.validators || fieldConfig.validators.length === 0)
15342
15472
  return true;
@@ -15344,7 +15474,7 @@ const RefineFormContent = (props) => {
15344
15474
  const {
15345
15475
  isValid,
15346
15476
  errorMsg
15347
- } = func(value2, formValue, FormType.FORM);
15477
+ } = await func(value2, formValue, FormType.FORM);
15348
15478
  if (!isValid)
15349
15479
  return errorMsg;
15350
15480
  }
@@ -15372,13 +15502,14 @@ const RefineFormContent = (props) => {
15372
15502
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Form.Item, {
15373
15503
  label: fieldConfig.label,
15374
15504
  colon: false,
15375
- labelCol: {
15505
+ labelCol: fieldConfig.layout === FormItemLayout.VERTICAL ? {} : {
15376
15506
  flex: `0 0 ${(formConfig == null ? void 0 : formConfig.labelWidth) || "216px"}`
15377
15507
  },
15378
- help: (_a2 = fieldState.error) == null ? void 0 : _a2.message,
15508
+ help: fieldConfig.isHideErrorStatus ? "" : (_a2 = fieldState.error) == null ? void 0 : _a2.message,
15379
15509
  extra: fieldConfig.helperText,
15380
- validateStatus: fieldState.invalid ? "error" : void 0,
15510
+ validateStatus: fieldState.invalid && !fieldConfig.isHideErrorStatus ? "error" : void 0,
15381
15511
  "data-test-id": fieldConfig.key,
15512
+ className: fieldConfig.layout === FormItemLayout.VERTICAL ? VerticalFormItemStyle : "",
15382
15513
  children: ele
15383
15514
  }, fieldConfig.key);
15384
15515
  }
@@ -15387,7 +15518,7 @@ const RefineFormContent = (props) => {
15387
15518
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, {
15388
15519
  direction: "vertical",
15389
15520
  size: 16,
15390
- className: "c1c9j4da",
15521
+ className: "cjxv8cf",
15391
15522
  children: [fields, /* @__PURE__ */ jsxRuntimeExports.jsx(FormErrorAlert, {
15392
15523
  errorMsgs: errorMsgs || [],
15393
15524
  style: {
@@ -16106,7 +16237,7 @@ const PlainCodeStyle = "pqch97v";
16106
16237
  const ErrorMsgStyle = "eh2qjnl";
16107
16238
  const ErrorWrapperStyle = "e19q2bnp";
16108
16239
  const YamlEditorStyle = "y16u5v3w";
16109
- const MonacoYamlEditor = React__default.lazy(() => import("./MonacoYamlEditor-9a2832ff.js"));
16240
+ const MonacoYamlEditor = React__default.lazy(() => import("./MonacoYamlEditor-5e4c98ce.js"));
16110
16241
  const MonacoYamlDiffEditor = React__default.lazy(() => import("./MonacoYamlDiffEditor-7de94ad2.js"));
16111
16242
  const YamlEditorComponent = forwardRef(
16112
16243
  function YamlEditorComponent2(props, ref) {
@@ -16631,21 +16762,21 @@ const useYamlForm = ({
16631
16762
  }
16632
16763
  return changeValues;
16633
16764
  };
16634
- const validateRules = (yamlValue) => {
16765
+ const validateRules = async (yamlValue) => {
16635
16766
  const errorMap = {};
16636
16767
  if (rules && isYamlValid && isSchemaValid) {
16637
16768
  const formValue = yaml$2.load(yamlValue || "");
16638
- rules.forEach((rule2) => {
16769
+ for (const rule2 of rules) {
16639
16770
  const { path: path2, validators } = rule2;
16640
16771
  const value2 = get$2(formValue, path2);
16641
16772
  for (const validator of validators || []) {
16642
- const { isValid, errorMsg } = validator(value2, formValue, FormType.YAML);
16773
+ const { isValid, errorMsg } = await validator(value2, formValue, FormType.YAML);
16643
16774
  if (!isValid) {
16644
16775
  errorMap[path2.join(".")] = `${errorMsg}(${path2.join(".")})`;
16645
16776
  break;
16646
16777
  }
16647
16778
  }
16648
- });
16779
+ }
16649
16780
  }
16650
16781
  setRulesErrors(uniq(Object.values(errorMap)));
16651
16782
  return errorMap;
@@ -16783,7 +16914,7 @@ function YamlForm(props) {
16783
16914
  try {
16784
16915
  const result = await ((_a = formProps.onFinish) == null ? void 0 : _a.call(formProps, store));
16785
16916
  if (result) {
16786
- (_b = props.onFinish) == null ? void 0 : _b.call(props);
16917
+ (_b = props.onFinish) == null ? void 0 : _b.call(props, result);
16787
16918
  }
16788
16919
  } catch {
16789
16920
  } finally {
@@ -16854,20 +16985,21 @@ function RefineFormContainer({
16854
16985
  config,
16855
16986
  id,
16856
16987
  refineProps: {
16857
- onMutationSuccess: () => {
16858
- onSuccess == null ? void 0 : onSuccess();
16988
+ onMutationSuccess: (data2) => {
16989
+ onSuccess == null ? void 0 : onSuccess(data2);
16859
16990
  },
16860
16991
  onMutationError() {
16861
16992
  onError == null ? void 0 : onError();
16862
16993
  },
16863
16994
  redirect: false,
16995
+ mutationMeta: {
16996
+ updateType: "put"
16997
+ },
16864
16998
  ...formConfig == null ? void 0 : formConfig.refineCoreProps
16865
16999
  },
16866
17000
  formConfig
16867
17001
  });
16868
- const {
16869
- transformApplyValues
16870
- } = usePathMap({
17002
+ const { transformApplyValues } = usePathMap({
16871
17003
  pathMap: formConfig == null ? void 0 : formConfig.pathMap,
16872
17004
  transformInitValues: formConfig == null ? void 0 : formConfig.transformInitValues,
16873
17005
  transformApplyValues: (formConfig == null ? void 0 : formConfig.transformApplyValues) || ((v) => v)
@@ -16882,14 +17014,16 @@ function RefineFormContainer({
16882
17014
  initialValuesForCreate: transformApplyValues(
16883
17015
  refineFormResult.formResult.getValues()
16884
17016
  ),
16885
- initialValuesForEdit: transformApplyValues(refineFormResult.formResult.getValues()),
17017
+ initialValuesForEdit: transformApplyValues(
17018
+ refineFormResult.formResult.getValues()
17019
+ ),
16886
17020
  id,
16887
17021
  action,
16888
17022
  isShowLayout: false,
16889
17023
  useFormProps: {
16890
17024
  redirect: false
16891
17025
  },
16892
- rules: fieldsConfig == null ? void 0 : fieldsConfig.map((config2) => ({
17026
+ rules: fieldsConfig == null ? void 0 : fieldsConfig.filter((config2) => !config2.isSkipValidationInYaml).map((config2) => ({
16893
17027
  path: config2.path,
16894
17028
  validators: config2.validators
16895
17029
  })),
@@ -16957,51 +17091,45 @@ function YamlFormContainer({
16957
17091
  onSaveButtonPropsChange
16958
17092
  }) {
16959
17093
  const action = id ? "edit" : "create";
16960
- const {
16961
- transformInitValues,
16962
- transformApplyValues
16963
- } = usePathMap({
17094
+ const { transformInitValues, transformApplyValues } = usePathMap({
16964
17095
  pathMap: formConfig == null ? void 0 : formConfig.pathMap,
16965
17096
  transformInitValues: formConfig == null ? void 0 : formConfig.transformInitValues,
16966
17097
  transformApplyValues: (formConfig == null ? void 0 : formConfig.transformApplyValues) || ((v) => v)
16967
17098
  });
16968
- const yamlFormProps = useMemo(
16969
- () => {
16970
- return {
16971
- ...customYamlFormProps,
16972
- config,
16973
- transformInitValues,
16974
- transformApplyValues,
16975
- initialValuesForCreate: (customYamlFormProps == null ? void 0 : customYamlFormProps.initialValuesForCreate) || config.initValue,
16976
- initialValuesForEdit: void 0,
16977
- id,
16978
- action,
16979
- isShowLayout: false,
16980
- useFormProps: {
16981
- redirect: false
16982
- },
16983
- rules: void 0,
16984
- onSaveButtonPropsChange,
16985
- onErrorsChange(errors) {
16986
- if (errors.length) {
16987
- onError == null ? void 0 : onError();
16988
- }
16989
- },
16990
- onFinish: onSuccess
16991
- };
16992
- },
16993
- [
16994
- id,
16995
- action,
16996
- customYamlFormProps,
17099
+ const yamlFormProps = useMemo(() => {
17100
+ return {
17101
+ ...customYamlFormProps,
16997
17102
  config,
16998
17103
  transformInitValues,
16999
17104
  transformApplyValues,
17000
- onSuccess,
17001
- onError,
17002
- onSaveButtonPropsChange
17003
- ]
17004
- );
17105
+ initialValuesForCreate: (customYamlFormProps == null ? void 0 : customYamlFormProps.initialValuesForCreate) || config.initValue,
17106
+ initialValuesForEdit: void 0,
17107
+ id,
17108
+ action,
17109
+ isShowLayout: false,
17110
+ useFormProps: {
17111
+ redirect: false
17112
+ },
17113
+ rules: void 0,
17114
+ onSaveButtonPropsChange,
17115
+ onErrorsChange(errors) {
17116
+ if (errors.length) {
17117
+ onError == null ? void 0 : onError();
17118
+ }
17119
+ },
17120
+ onFinish: onSuccess
17121
+ };
17122
+ }, [
17123
+ id,
17124
+ action,
17125
+ customYamlFormProps,
17126
+ config,
17127
+ transformInitValues,
17128
+ transformApplyValues,
17129
+ onSuccess,
17130
+ onError,
17131
+ onSaveButtonPropsChange
17132
+ ]);
17005
17133
  return /* @__PURE__ */ jsxRuntimeExports.jsx(YamlForm, { ...yamlFormProps });
17006
17134
  }
17007
17135
  const FormModal_64brhp = "";
@@ -17041,7 +17169,8 @@ function FormModal(props) {
17041
17169
  const {
17042
17170
  resource: resourceFromProps,
17043
17171
  id,
17044
- yamlFormProps: customYamlFormProps
17172
+ yamlFormProps: customYamlFormProps,
17173
+ onSuccess
17045
17174
  } = props;
17046
17175
  const {
17047
17176
  i18n: i18n2
@@ -17120,9 +17249,10 @@ function FormModal(props) {
17120
17249
  onError: () => {
17121
17250
  setIsError(true);
17122
17251
  },
17123
- onSuccess: () => {
17252
+ onSuccess: (data2) => {
17124
17253
  setIsError(false);
17125
17254
  popModal();
17255
+ onSuccess == null ? void 0 : onSuccess(data2);
17126
17256
  }
17127
17257
  };
17128
17258
  if (config.formConfig && (((_a2 = config.formConfig) == null ? void 0 : _a2.formType) === FormType.FORM || "fields" in config.formConfig)) {
@@ -17136,7 +17266,7 @@ function FormModal(props) {
17136
17266
  ...commonFormProps,
17137
17267
  formConfig: config.formConfig
17138
17268
  });
17139
- }, [id, customYamlFormProps, config, isYamlMode, popModal, setSaveButtonProps]);
17269
+ }, [id, customYamlFormProps, config, isYamlMode, popModal, setSaveButtonProps, onSuccess]);
17140
17270
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Modal, {
17141
17271
  className: cx_default(FullscreenModalStyle),
17142
17272
  style: {
@@ -17309,6 +17439,7 @@ const EditLabelForm = React__default.forwardRef(
17309
17439
  const { resourceModel } = props;
17310
17440
  const { mutateAsync } = useUpdate();
17311
17441
  const { t: t2 } = useTranslation();
17442
+ const tableFormRef = useRef(null);
17312
17443
  const defaultValue = useMemo(() => {
17313
17444
  var _a2;
17314
17445
  return Object.keys(((_a2 = resourceModel.metadata) == null ? void 0 : _a2.labels) || {}).map((key2) => {
@@ -17350,10 +17481,20 @@ const EditLabelForm = React__default.forwardRef(
17350
17481
  },
17351
17482
  [resourceModel, mutateAsync, t2]
17352
17483
  );
17484
+ useImperativeHandle(
17485
+ ref,
17486
+ () => ({
17487
+ submit: () => {
17488
+ var _a2;
17489
+ return (_a2 = tableFormRef.current) == null ? void 0 : _a2.submit();
17490
+ }
17491
+ }),
17492
+ []
17493
+ );
17353
17494
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
17354
- KeyValueTableFormForm,
17495
+ KeyValueTableForm,
17355
17496
  {
17356
- ref,
17497
+ ref: tableFormRef,
17357
17498
  defaultValue,
17358
17499
  onSubmit,
17359
17500
  addButtonText: t2("dovetail.add_label")
@@ -17396,6 +17537,7 @@ const EditAnnotationForm = React__default.forwardRef(function EditAnnotationForm
17396
17537
  const { resourceModel } = props;
17397
17538
  const { mutateAsync } = useUpdate();
17398
17539
  const { t: t2 } = useTranslation();
17540
+ const tableFormRef = useRef(null);
17399
17541
  const defaultValue = useMemo(() => {
17400
17542
  var _a2;
17401
17543
  return Object.keys(((_a2 = resourceModel.metadata) == null ? void 0 : _a2.annotations) || {}).map((key2) => {
@@ -17437,10 +17579,20 @@ const EditAnnotationForm = React__default.forwardRef(function EditAnnotationForm
17437
17579
  },
17438
17580
  [resourceModel, mutateAsync, t2]
17439
17581
  );
17582
+ useImperativeHandle(
17583
+ ref,
17584
+ () => ({
17585
+ submit: () => {
17586
+ var _a2;
17587
+ return (_a2 = tableFormRef.current) == null ? void 0 : _a2.submit();
17588
+ }
17589
+ }),
17590
+ []
17591
+ );
17440
17592
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
17441
- KeyValueTableFormForm,
17593
+ KeyValueTableForm,
17442
17594
  {
17443
- ref,
17595
+ ref: tableFormRef,
17444
17596
  defaultValue,
17445
17597
  onSubmit,
17446
17598
  addButtonText: t2("dovetail.add_annotation"),
@@ -17695,7 +17847,7 @@ const ReferenceLink = (props) => {
17695
17847
  ResourceLink,
17696
17848
  {
17697
17849
  name: ownerReference.name,
17698
- resourceKind: resource.name || "",
17850
+ resourceName: resource.name || "",
17699
17851
  namespace: namespace2
17700
17852
  }
17701
17853
  );
@@ -17757,7 +17909,7 @@ const IngressRulesComponent = ({ ingress }) => {
17757
17909
  /* @__PURE__ */ jsxRuntimeExports.jsx(
17758
17910
  ResourceLink,
17759
17911
  {
17760
- resourceKind: "services",
17912
+ resourceName: "services",
17761
17913
  namespace: ingress.metadata.namespace || "default",
17762
17914
  name: r2.serviceName
17763
17915
  }
@@ -17811,6 +17963,10 @@ const CommonSorter = (dataIndex) => (a2, b) => {
17811
17963
  const valB = lodashExports.get(b, dataIndex);
17812
17964
  if (valA === valB)
17813
17965
  return 0;
17966
+ if (valA !== void 0 && valB === void 0)
17967
+ return 1;
17968
+ if (valA === void 0 && valB !== void 0)
17969
+ return -1;
17814
17970
  if (valA > valB)
17815
17971
  return 1;
17816
17972
  return -1;
@@ -17895,7 +18051,7 @@ const WorkloadImageColumnRenderer = (i18n2) => {
17895
18051
  }
17896
18052
  };
17897
18053
  };
17898
- const WorkloadRestartsColumnRenderer = (i18n2) => {
18054
+ const RestartsColumnRenderer = (i18n2) => {
17899
18055
  const dataIndex = ["restarts"];
17900
18056
  return {
17901
18057
  key: "restarts",
@@ -17903,7 +18059,14 @@ const WorkloadRestartsColumnRenderer = (i18n2) => {
17903
18059
  width: 120,
17904
18060
  dataIndex,
17905
18061
  align: "right",
17906
- title: i18n2.t("dovetail.restarts")
18062
+ sortable: true,
18063
+ sorter: CommonSorter(dataIndex),
18064
+ title: i18n2.t("dovetail.restarts"),
18065
+ render: (value2) => {
18066
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ValueDisplay, {
18067
+ value: value2
18068
+ });
18069
+ }
17907
18070
  };
17908
18071
  };
17909
18072
  const ReplicasColumnRenderer = (i18n2) => {
@@ -17967,7 +18130,7 @@ const NodeNameColumnRenderer = (i18n2, options) => {
17967
18130
  sorter: CommonSorter(dataIndex),
17968
18131
  render: (v) => {
17969
18132
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ResourceLink, {
17970
- resourceKind: "nodes",
18133
+ resourceName: "nodes",
17971
18134
  name: v,
17972
18135
  namespace: ""
17973
18136
  });
@@ -17975,19 +18138,6 @@ const NodeNameColumnRenderer = (i18n2, options) => {
17975
18138
  ...options
17976
18139
  };
17977
18140
  };
17978
- const RestartCountColumnRenderer = (i18n2) => {
17979
- const dataIndex = ["restartCount"];
17980
- return {
17981
- key: "restartCount",
17982
- display: true,
17983
- dataIndex,
17984
- title: i18n2.t("dovetail.restarts"),
17985
- sortable: true,
17986
- width: 120,
17987
- align: "right",
17988
- sorter: CommonSorter(dataIndex)
17989
- };
17990
- };
17991
18141
  const CompletionsCountColumnRenderer = (i18n2) => {
17992
18142
  const dataIndex = ["succeeded"];
17993
18143
  return {
@@ -18357,7 +18507,7 @@ const PVRefColumnRenderer = (i18n2) => {
18357
18507
  sortable: true,
18358
18508
  render(value2) {
18359
18509
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ResourceLink, {
18360
- resourceKind: "persistentvolumes",
18510
+ resourceName: "persistentvolumes",
18361
18511
  namespace: "",
18362
18512
  name: value2
18363
18513
  });
@@ -18374,7 +18524,7 @@ const PVStorageClassColumnRenderer = (i18n2) => {
18374
18524
  sortable: true,
18375
18525
  render(value2) {
18376
18526
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ResourceLink, {
18377
- resourceKind: "storageclasses",
18527
+ resourceName: "storageclasses",
18378
18528
  namespace: "",
18379
18529
  name: value2
18380
18530
  });
@@ -18407,7 +18557,7 @@ const PVCRefColumnRenderer = (i18n2) => {
18407
18557
  sortable: true,
18408
18558
  render(value2, pv2) {
18409
18559
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ResourceLink, {
18410
- resourceKind: "persistentvolumeclaims",
18560
+ resourceName: "persistentvolumeclaims",
18411
18561
  namespace: pv2.pvcNamespace || "default",
18412
18562
  name: value2,
18413
18563
  uid: pv2.pvcUid
@@ -18738,166 +18888,166 @@ const relationPlugin = new RelationPlugin();
18738
18888
  const ProviderPlugins = [relationPlugin, modelPlugin];
18739
18889
  const dovetailRefineI18n = i18n;
18740
18890
  export {
18741
- useGlobalStore as $,
18891
+ useOpenForm as $,
18742
18892
  AgeColumnRenderer as A,
18743
- PVCapacityColumnRenderer as B,
18893
+ PVCStorageColumnRenderer as B,
18744
18894
  CommonSorter as C,
18745
18895
  DurationColumnRenderer as D,
18746
- PVCStorageColumnRenderer as E,
18747
- PVRefColumnRenderer as F,
18748
- PVStorageClassColumnRenderer as G,
18749
- PVPhaseColumnRenderer as H,
18896
+ PVRefColumnRenderer as E,
18897
+ PVStorageClassColumnRenderer as F,
18898
+ PVPhaseColumnRenderer as G,
18899
+ PVCRefColumnRenderer as H,
18750
18900
  IngressRulesColumnRenderer as I,
18751
- PVCRefColumnRenderer as J,
18752
- PVCSIRefColumnRenderer as K,
18753
- PVVolumeModeColumnRenderer as L,
18754
- PVAccessModeColumnRenderer as M,
18901
+ PVCSIRefColumnRenderer as J,
18902
+ PVVolumeModeColumnRenderer as K,
18903
+ PVAccessModeColumnRenderer as L,
18904
+ IsDefaultSCColumnRenderer as M,
18755
18905
  NameColumnRenderer as N,
18756
- IsDefaultSCColumnRenderer as O,
18906
+ SCReclaimPolicyColumnRenderer as O,
18757
18907
  PlainTextNameColumnRenderer as P,
18758
- SCReclaimPolicyColumnRenderer as Q,
18759
- ReplicasColumnRenderer as R,
18908
+ SCAllowExpandColumnRenderer as Q,
18909
+ RestartsColumnRenderer as R,
18760
18910
  StateDisplayColumnRenderer as S,
18761
- SCAllowExpandColumnRenderer as T,
18762
- ColumnKeys as U,
18763
- addDefaultRenderToColumns as V,
18911
+ ColumnKeys as T,
18912
+ addDefaultRenderToColumns as U,
18913
+ useEagleTable as V,
18764
18914
  WorkloadImageColumnRenderer as W,
18765
- useEagleTable as X,
18915
+ useDownloadYAML as X,
18766
18916
  YamlEditorStyle as Y,
18767
- useDownloadYAML as Z,
18768
- useEdit as _,
18917
+ useEdit as Z,
18918
+ useGlobalStore as _,
18769
18919
  useApiGroupSchema as a,
18770
- ServiceInnerClusterAccessField as a$,
18771
- useOpenForm as a0,
18772
- index as a1,
18773
- WidgetErrorContent as a2,
18774
- Breadcrumb as a3,
18775
- NameInputWidget as a4,
18776
- dnsSubDomainRules as a5,
18777
- rfc1123LabelRules as a6,
18778
- rfc1035LabelRules as a7,
18779
- NamespaceSelectWidget as a8,
18780
- namespaceRules as a9,
18781
- KeyValue as aA,
18782
- KeyValueAnnotation as aB,
18783
- KeyValueSecret as aC,
18784
- Separator as aD,
18785
- YamlEditorComponent as aE,
18786
- DeleteButton as aF,
18787
- Layout as aG,
18788
- AreaType as aH,
18789
- ImageField as aI,
18790
- ReplicaField as aJ,
18791
- ConditionsField as aK,
18792
- NodeTaintsField as aL,
18793
- PodsField as aM,
18794
- JobsField as aN,
18795
- DataField as aO,
18796
- SecretDataField as aP,
18797
- StartTimeField as aQ,
18798
- ServiceTypeField as aR,
18799
- ClusterIpField as aS,
18800
- SessionAffinityField as aT,
18801
- ServicePodsField as aU,
18802
- IngressRulesTableTabField as aV,
18803
- EventsTableTabField as aW,
18804
- NamespaceField as aX,
18805
- AgeField as aY,
18806
- LabelsField as aZ,
18807
- AnnotationsField as a_,
18808
- KeyValueListWidget as aa,
18809
- MetadataForm as ab,
18810
- PageShow as ac,
18811
- Time as ad,
18812
- ConditionsTable as ae,
18813
- FormErrorAlert as af,
18814
- PodContainersTable as ag,
18815
- WorkloadDropdown as ah,
18816
- ReplicasDropdown as ai,
18817
- PodDropdown as aj,
18818
- CreateButton as ak,
18819
- ImageNames as al,
18820
- ResourceList as am,
18821
- ResourceShow as an,
18822
- ResourceForm as ao,
18823
- ResourceCRUD as ap,
18824
- WorkloadPodsTable as aq,
18825
- CronJobDropdown as ar,
18826
- K8sDropdown as as,
18827
- EditLabelDropdownMenuItem as at,
18828
- EditAnnotationDropdownMenuItem as au,
18829
- EditNodeTaintDropdownMenuItem as av,
18830
- ResourceUsageBar as aw,
18831
- WorkloadReplicasForm as ax,
18832
- WorkloadReplicas as ay,
18833
- CronjobJobsTable as az,
18920
+ ServiceOutClusterAccessField as a$,
18921
+ index as a0,
18922
+ WidgetErrorContent as a1,
18923
+ Breadcrumb as a2,
18924
+ NameInputWidget as a3,
18925
+ dnsSubDomainRules as a4,
18926
+ rfc1123LabelRules as a5,
18927
+ rfc1035LabelRules as a6,
18928
+ NamespaceSelectWidget as a7,
18929
+ namespaceRules as a8,
18930
+ KeyValueListWidget as a9,
18931
+ KeyValueAnnotation as aA,
18932
+ KeyValueSecret as aB,
18933
+ Separator as aC,
18934
+ YamlEditorComponent as aD,
18935
+ DeleteButton as aE,
18936
+ Layout as aF,
18937
+ AreaType as aG,
18938
+ ImageField as aH,
18939
+ ReplicaField as aI,
18940
+ ConditionsField as aJ,
18941
+ NodeTaintsField as aK,
18942
+ PodsField as aL,
18943
+ JobsField as aM,
18944
+ DataField as aN,
18945
+ SecretDataField as aO,
18946
+ StartTimeField as aP,
18947
+ ServiceTypeField as aQ,
18948
+ ClusterIpField as aR,
18949
+ SessionAffinityField as aS,
18950
+ ServicePodsField as aT,
18951
+ IngressRulesTableTabField as aU,
18952
+ EventsTableTabField as aV,
18953
+ NamespaceField as aW,
18954
+ AgeField as aX,
18955
+ LabelsField as aY,
18956
+ AnnotationsField as aZ,
18957
+ ServiceInnerClusterAccessField as a_,
18958
+ MetadataForm as aa,
18959
+ PageShow as ab,
18960
+ Time as ac,
18961
+ ConditionsTable as ad,
18962
+ FormErrorAlert as ae,
18963
+ PodContainersTable as af,
18964
+ WorkloadDropdown as ag,
18965
+ ReplicasDropdown as ah,
18966
+ PodDropdown as ai,
18967
+ CreateButton as aj,
18968
+ ImageNames as ak,
18969
+ ResourceList as al,
18970
+ ResourceShow as am,
18971
+ ResourceForm as an,
18972
+ ResourceCRUD as ao,
18973
+ WorkloadPodsTable as ap,
18974
+ CronJobDropdown as aq,
18975
+ K8sDropdown as ar,
18976
+ EditLabelDropdownMenuItem as as,
18977
+ EditAnnotationDropdownMenuItem as at,
18978
+ EditNodeTaintDropdownMenuItem as au,
18979
+ ResourceUsageBar as av,
18980
+ WorkloadReplicasForm as aw,
18981
+ WorkloadReplicas as ax,
18982
+ CronjobJobsTable as ay,
18983
+ KeyValue as az,
18834
18984
  useSchema as b,
18835
18985
  Tags as b$,
18836
- ServiceOutClusterAccessField as b0,
18837
- PodSelectorField as b1,
18838
- PortsTableField as b2,
18839
- DurationField as b3,
18840
- StorageClassProvisionerField as b4,
18841
- StorageClassPvField as b5,
18842
- PVCapacityField as b6,
18843
- PVCStorageField as b7,
18844
- PVRefField as b8,
18845
- PVStorageClassField as b9,
18846
- NetworkPolicyEgressRulesGroup as bA,
18847
- StorageClassPvGroup as bB,
18848
- ResourceTableGroup as bC,
18849
- ShowGroupComponent as bD,
18850
- ShowContent as bE,
18851
- DeleteManyButton as bF,
18852
- ListPage as bG,
18853
- StateTag as bH,
18854
- DrawerShow as bI,
18855
- Menu as bJ,
18856
- Table as bK,
18857
- EditButton as bL,
18858
- ReferenceLink as bM,
18859
- ResourceLink as bN,
18860
- NS_STORE_KEY as bO,
18861
- ALL_NS as bP,
18862
- useNamespacesFilter as bQ,
18863
- NamespacesFilter as bR,
18864
- FormModal as bS,
18865
- renderCommonFormFiled as bT,
18866
- RefineFormContent as bU,
18867
- RefineFormPage as bV,
18868
- SchemaStrategy as bW,
18869
- YamlForm as bX,
18870
- useRefineForm as bY,
18986
+ PodSelectorField as b0,
18987
+ PortsTableField as b1,
18988
+ DurationField as b2,
18989
+ StorageClassProvisionerField as b3,
18990
+ StorageClassPvField as b4,
18991
+ PVCapacityField as b5,
18992
+ PVCStorageField as b6,
18993
+ PVRefField as b7,
18994
+ PVStorageClassField as b8,
18995
+ PVPhaseField as b9,
18996
+ StorageClassPvGroup as bA,
18997
+ ResourceTableGroup as bB,
18998
+ ShowGroupComponent as bC,
18999
+ ShowContent as bD,
19000
+ DeleteManyButton as bE,
19001
+ ListPage as bF,
19002
+ StateTag as bG,
19003
+ DrawerShow as bH,
19004
+ Menu as bI,
19005
+ Table as bJ,
19006
+ EditButton as bK,
19007
+ ReferenceLink as bL,
19008
+ ResourceLink as bM,
19009
+ NS_STORE_KEY as bN,
19010
+ ALL_NS as bO,
19011
+ useNamespacesFilter as bP,
19012
+ NamespacesFilter as bQ,
19013
+ FormModal as bR,
19014
+ renderCommonFormFiled as bS,
19015
+ RefineFormContent as bT,
19016
+ RefineFormPage as bU,
19017
+ SchemaStrategy as bV,
19018
+ YamlForm as bW,
19019
+ useRefineForm as bX,
19020
+ FormItemLayout as bY,
18871
19021
  ServiceInClusterAccessComponent as bZ,
18872
19022
  ServiceOutClusterAccessComponent as b_,
18873
- PVPhaseField as ba,
18874
- PVVolumeModeField as bb,
18875
- PVAccessModeField as bc,
18876
- PVCPodsField as bd,
18877
- PVCRefField as be,
18878
- PVCSIRefField as bf,
18879
- IsDefaultSCField as bg,
18880
- SCReclaimPolicyField as bh,
18881
- IsSCAllowVolumeExpansionField as bi,
18882
- ResourceTableField as bj,
18883
- EventsTab as bk,
18884
- PodLogTab as bl,
18885
- BasicGroup as bm,
18886
- PodsGroup as bn,
18887
- PodContainersGroup as bo,
18888
- ServicePodsGroup as bp,
18889
- PVCPodsGroup as bq,
18890
- ConditionsGroup as br,
18891
- NodeTaintsGroup as bs,
18892
- SecretDataGroup as bt,
18893
- JobsGroup as bu,
18894
- IngressRulesGroup as bv,
18895
- PodSelectorGroup as bw,
18896
- PortsGroup as bx,
18897
- DataGroup as by,
18898
- NetworkPolicyIngressRulesGroup as bz,
19023
+ PVVolumeModeField as ba,
19024
+ PVAccessModeField as bb,
19025
+ PVCPodsField as bc,
19026
+ PVCRefField as bd,
19027
+ PVCSIRefField as be,
19028
+ IsDefaultSCField as bf,
19029
+ SCReclaimPolicyField as bg,
19030
+ IsSCAllowVolumeExpansionField as bh,
19031
+ ResourceTableField as bi,
19032
+ EventsTab as bj,
19033
+ PodLogTab as bk,
19034
+ BasicGroup as bl,
19035
+ PodsGroup as bm,
19036
+ PodContainersGroup as bn,
19037
+ ServicePodsGroup as bo,
19038
+ PVCPodsGroup as bp,
19039
+ ConditionsGroup as bq,
19040
+ NodeTaintsGroup as br,
19041
+ SecretDataGroup as bs,
19042
+ JobsGroup as bt,
19043
+ IngressRulesGroup as bu,
19044
+ PodSelectorGroup as bv,
19045
+ PortsGroup as bw,
19046
+ DataGroup as bx,
19047
+ NetworkPolicyIngressRulesGroup as by,
19048
+ NetworkPolicyEgressRulesGroup as bz,
18899
19049
  useDeleteModal as c,
18900
- NodeRole as c$,
19050
+ ServiceModel as c$,
18901
19051
  TextTags as c0,
18902
19052
  PodLog as c1,
18903
19053
  NetworkPolicyRulesViewer as c2,
@@ -18908,95 +19058,100 @@ export {
18908
19058
  PodShell as c7,
18909
19059
  ResourceTable as c8,
18910
19060
  ErrorWrapper as c9,
18911
- PV_INIT_VALUE as cA,
18912
- PVC_INIT_VALUE as cB,
18913
- ResourceState as cC,
18914
- AccessControlAuth as cD,
18915
- Dovetail as cE,
18916
- RESOURCE_GROUP as cF,
18917
- FormContainerType as cG,
18918
- FormType as cH,
18919
- FormMode as cI,
18920
- ComponentContext as cJ,
18921
- GlobalStoreContext as cK,
18922
- ConfigsContext as cL,
18923
- IngressModel as cM,
18924
- NetworkPolicyModel as cN,
18925
- JobModel as cO,
18926
- WorkloadModel as cP,
18927
- WorkloadBaseModel as cQ,
18928
- PodModel as cR,
18929
- PodMetricsModel as cS,
18930
- ResourceModel as cT,
18931
- CronJobModel as cU,
18932
- EventModel as cV,
18933
- DeploymentModel as cW,
18934
- DaemonSetModel as cX,
18935
- StatefulSetModel as cY,
18936
- ServiceTypeEnum as cZ,
18937
- ServiceModel as c_,
19061
+ STORAGE_CLASS_INIT_VALUE as cA,
19062
+ PV_INIT_VALUE as cB,
19063
+ PVC_INIT_VALUE as cC,
19064
+ ResourceState as cD,
19065
+ AccessControlAuth as cE,
19066
+ Dovetail as cF,
19067
+ RESOURCE_GROUP as cG,
19068
+ FormContainerType as cH,
19069
+ FormType as cI,
19070
+ FormMode as cJ,
19071
+ ComponentContext as cK,
19072
+ GlobalStoreContext as cL,
19073
+ ConfigsContext as cM,
19074
+ IngressModel as cN,
19075
+ NetworkPolicyModel as cO,
19076
+ JobModel as cP,
19077
+ WorkloadModel as cQ,
19078
+ WorkloadBaseModel as cR,
19079
+ PodModel as cS,
19080
+ PodMetricsModel as cT,
19081
+ ResourceModel as cU,
19082
+ CronJobModel as cV,
19083
+ EventModel as cW,
19084
+ DeploymentModel as cX,
19085
+ DaemonSetModel as cY,
19086
+ StatefulSetModel as cZ,
19087
+ ServiceTypeEnum as c_,
18938
19088
  ErrorContentType as ca,
18939
- BASE_INIT_VALUE as cb,
18940
- DEPLOYMENT_INIT_VALUE as cc,
18941
- CRONJOB_INIT_VALUE as cd,
18942
- DAEMONSET_INIT_VALUE as ce,
18943
- JOB_INIT_VALUE as cf,
18944
- STATEFULSET_INIT_VALUE as cg,
18945
- POD_INIT_VALUE as ch,
18946
- SERVICE_CLUSTER_IP_INIT_VALUE as ci,
18947
- SERVICE_NODE_PORT_INIT_VALUE as cj,
18948
- SERVICE_LOAD_BALANCER_INIT_VALUE as ck,
18949
- SERVICE_EXTERNAL_NAME_INIT_VALUE as cl,
18950
- SERVICE_HEADLESS_INIT_VALUE as cm,
18951
- INGRESS_INIT_VALUE as cn,
18952
- NETWORK_POLICY_INIT_VALUE as co,
18953
- CONFIG_MAP_INIT_VALUE as cp,
18954
- SERVER_INSTANCE_INIT_VALUE as cq,
18955
- REDEPLOY_TIMESTAMP_KEY as cr,
18956
- SECRET_OPAQUE_INIT_VALUE as cs,
18957
- SECRET_IMAGE_REPO_INIT_VALUE as ct,
18958
- SECRET_BASIC_AUTH_INIT_VALUE as cu,
18959
- SECRET_SSH_AUTH_INIT_VALUE as cv,
18960
- SECRET_TLS_INIT_VALUE as cw,
18961
- SECRET_CUSTOM_INIT_VALUE as cx,
18962
- NODE_INIT_VALUE as cy,
18963
- STORAGE_CLASS_INIT_VALUE as cz,
19089
+ KeyValueTableForm as cb,
19090
+ BASE_INIT_VALUE as cc,
19091
+ DEPLOYMENT_INIT_VALUE as cd,
19092
+ CRONJOB_INIT_VALUE as ce,
19093
+ DAEMONSET_INIT_VALUE as cf,
19094
+ JOB_INIT_VALUE as cg,
19095
+ STATEFULSET_INIT_VALUE as ch,
19096
+ POD_INIT_VALUE as ci,
19097
+ SERVICE_CLUSTER_IP_INIT_VALUE as cj,
19098
+ SERVICE_NODE_PORT_INIT_VALUE as ck,
19099
+ SERVICE_LOAD_BALANCER_INIT_VALUE as cl,
19100
+ SERVICE_EXTERNAL_NAME_INIT_VALUE as cm,
19101
+ SERVICE_HEADLESS_INIT_VALUE as cn,
19102
+ INGRESS_INIT_VALUE as co,
19103
+ NETWORK_POLICY_INIT_VALUE as cp,
19104
+ CONFIG_MAP_INIT_VALUE as cq,
19105
+ SERVER_INSTANCE_INIT_VALUE as cr,
19106
+ REDEPLOY_TIMESTAMP_KEY as cs,
19107
+ SECRET_OPAQUE_INIT_VALUE as ct,
19108
+ SECRET_IMAGE_REPO_INIT_VALUE as cu,
19109
+ SECRET_BASIC_AUTH_INIT_VALUE as cv,
19110
+ SECRET_SSH_AUTH_INIT_VALUE as cw,
19111
+ SECRET_TLS_INIT_VALUE as cx,
19112
+ SECRET_CUSTOM_INIT_VALUE as cy,
19113
+ NODE_INIT_VALUE as cz,
18964
19114
  dovetailRefineI18n as d,
18965
- NodeModel as d0,
18966
- StorageClassModel as d1,
18967
- PersistentVolumeModel as d2,
18968
- PersistentVolumeClaimModel as d3,
18969
- ProviderPlugins as d4,
18970
- ModelPlugin as d5,
18971
- modelPlugin as d6,
18972
- RelationPlugin as d7,
18973
- relationPlugin as d8,
18974
- generateValueFromSchema as d9,
18975
- generateSchemaTypeValue as da,
18976
- resolveRef as db,
18977
- getApiVersion as dc,
18978
- pruneBeforeEdit as dd,
18979
- matchSelector as de,
19115
+ NodeRole as d0,
19116
+ NodeModel as d1,
19117
+ StorageClassModel as d2,
19118
+ PersistentVolumeModel as d3,
19119
+ PersistentVolumeClaimModel as d4,
19120
+ ProviderPlugins as d5,
19121
+ ModelPlugin as d6,
19122
+ modelPlugin as d7,
19123
+ RelationPlugin as d8,
19124
+ relationPlugin as d9,
19125
+ generateValueFromSchema as da,
19126
+ generateSchemaTypeValue as db,
19127
+ resolveRef as dc,
19128
+ getApiVersion as dd,
19129
+ pruneBeforeEdit as de,
19130
+ matchSelector as df,
19131
+ getResourceNameByKind as dg,
19132
+ validateDnsSubdomain as dh,
19133
+ validateLabelKey as di,
19134
+ validateLabelValue as dj,
18980
19135
  useDeleteModalOnly as e,
18981
19136
  useFailedModal as f,
18982
19137
  NameSpaceColumnRenderer as g,
18983
- WorkloadRestartsColumnRenderer as h,
19138
+ ReplicasColumnRenderer as h,
18984
19139
  NodeNameColumnRenderer as i,
18985
- RestartCountColumnRenderer as j,
18986
- CompletionsCountColumnRenderer as k,
18987
- ServiceTypeColumnRenderer as l,
18988
- ServiceInClusterAccessTitle as m,
18989
- ServiceInClusterAccessColumnRenderer as n,
18990
- ServiceOutClusterAccessTitle as o,
18991
- ServiceOutClusterAccessColumnRenderer as p,
18992
- PodWorkloadColumnRenderer as q,
19140
+ CompletionsCountColumnRenderer as j,
19141
+ ServiceTypeColumnRenderer as k,
19142
+ ServiceInClusterAccessTitle as l,
19143
+ ServiceInClusterAccessColumnRenderer as m,
19144
+ ServiceOutClusterAccessTitle as n,
19145
+ ServiceOutClusterAccessColumnRenderer as o,
19146
+ PodWorkloadColumnRenderer as p,
19147
+ IngressDefaultBackendColumnRenderer as q,
18993
19148
  routerProvider as r,
18994
- IngressDefaultBackendColumnRenderer as s,
18995
- IngressClassColumnRenderer as t,
19149
+ IngressClassColumnRenderer as s,
19150
+ IngressTlsColumnRenderer as t,
18996
19151
  useNamespaceRefineFilter as u,
18997
- IngressTlsColumnRenderer as v,
18998
- PodContainersNumColumnRenderer as w,
18999
- DataKeysColumnRenderer as x,
19000
- PortMappingColumnRenderer as y,
19001
- ProvisionerColumnRenderer as z
19152
+ PodContainersNumColumnRenderer as v,
19153
+ DataKeysColumnRenderer as w,
19154
+ PortMappingColumnRenderer as x,
19155
+ ProvisionerColumnRenderer as y,
19156
+ PVCapacityColumnRenderer as z
19002
19157
  };