@dovetail-v2/refine 0.3.0 → 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;
@@ -10176,29 +10178,38 @@ function getInitialValues(config) {
10176
10178
  spec: {}
10177
10179
  };
10178
10180
  }
10179
- function useOpenForm(options) {
10181
+ function useOpenForm() {
10180
10182
  const { resource } = useResource();
10181
10183
  const configs = useContext(ConfigsContext);
10182
10184
  const { edit: edit2 } = useEdit();
10183
10185
  const navigation = useNavigation();
10184
10186
  const pushModal = usePushModal();
10185
10187
  const go = useGo();
10186
- return function openForm(resourceName) {
10187
- var _a, _b;
10188
- const finalResourceName = resourceName || (resource == null ? void 0 : 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);
10189
10191
  if (finalResourceName) {
10190
10192
  const config = configs[finalResourceName];
10191
10193
  const formType = (_a = config.formConfig) == null ? void 0 : _a.formContainerType;
10192
10194
  if (formType === void 0 || formType === FormContainerType.MODAL) {
10193
10195
  pushModal({
10194
- component: ((_b = config.formConfig) == null ? void 0 : _b.CustomFormModal) || FormModal,
10195
- props: {
10196
- resource: finalResourceName,
10197
- id: options == null ? void 0 : options.id,
10198
- formProps: {
10199
- initialValues: getInitialValues(config)
10200
- }
10201
- }
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: {}
10202
10213
  });
10203
10214
  } else if (options == null ? void 0 : options.id) {
10204
10215
  edit2(options.id);
@@ -10217,6 +10228,52 @@ function getResourceNameByKind(kind, configs) {
10217
10228
  var _a;
10218
10229
  return (_a = Object.values(configs).find((config) => config.kind === kind)) == null ? void 0 : _a.name;
10219
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
+ }
10220
10277
  function K8sDropdown(props) {
10221
10278
  var _a;
10222
10279
  const { record, size = "normal" } = props;
@@ -10228,7 +10285,7 @@ function K8sDropdown(props) {
10228
10285
  const { t: t2 } = useTranslation();
10229
10286
  const { openDeleteConfirmModal } = useDeleteModal({ resourceName: resourceName || "" });
10230
10287
  const download2 = useDownloadYAML();
10231
- const openForm = useOpenForm({ id: record.id });
10288
+ const openForm = useOpenForm();
10232
10289
  const isInShowPage = useResourceResult.action === "show";
10233
10290
  const { data: canEditData } = useCan({
10234
10291
  resource: resourceName,
@@ -10249,7 +10306,7 @@ function K8sDropdown(props) {
10249
10306
  Dropdown,
10250
10307
  {
10251
10308
  overlay: /* @__PURE__ */ jsxRuntimeExports.jsxs(Menu$1, { children: [
10252
- 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") }) }),
10253
10310
  /* @__PURE__ */ jsxRuntimeExports.jsx(
10254
10311
  Menu$1.Item,
10255
10312
  {
@@ -11027,9 +11084,7 @@ const ShowContent = (props) => {
11027
11084
  } = queryResult;
11028
11085
  const navigation = useNavigation();
11029
11086
  const go = useGo();
11030
- const openForm = useOpenForm({
11031
- id
11032
- });
11087
+ const openForm = useOpenForm();
11033
11088
  const Component = useContext(ComponentContext);
11034
11089
  const configs = useContext(ConfigsContext);
11035
11090
  const config = configs[(resource == null ? void 0 : resource.name) || ""];
@@ -11132,7 +11187,9 @@ const ShowContent = (props) => {
11132
11187
  style: {
11133
11188
  marginRight: 8
11134
11189
  },
11135
- onClick: () => openForm(),
11190
+ onClick: () => openForm({
11191
+ id
11192
+ }),
11136
11193
  children: ((_f = config.formConfig) == null ? void 0 : _f.formType) === FormType.FORM ? t2("dovetail.edit") : t2("dovetail.edit_yaml")
11137
11194
  })
11138
11195
  }) : null, /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown2, {
@@ -11221,45 +11278,36 @@ function KeyValueSecret(props) {
11221
11278
  })
11222
11279
  });
11223
11280
  }
11224
- function validateLabelKey(key2) {
11225
- const labelRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
11226
- let prefix2, name2;
11227
- const splitResult = key2.split("/");
11228
- if (splitResult.length === 1) {
11229
- name2 = splitResult[0];
11230
- } else {
11231
- prefix2 = splitResult[0];
11232
- name2 = splitResult[1];
11233
- }
11234
- if (prefix2 === "") {
11235
- return { isValid: false, errorMessage: "EMPTY_PREFIX" };
11236
- }
11237
- if (prefix2 && !labelRegex.test(prefix2)) {
11238
- return { isValid: false, errorMessage: "INVALID_PREFIX" };
11239
- }
11240
- if (!labelRegex.test(name2)) {
11241
- return { isValid: false, errorMessage: "INVALID_NAME" };
11242
- }
11243
- if (prefix2 && prefix2.length > 253) {
11244
- return { isValid: false, errorMessage: "MAX_253" };
11245
- }
11246
- if (name2 && name2.length > 63) {
11247
- 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;
11248
11288
  }
11249
- return { isValid: true };
11250
11289
  }
11251
- function validateLabelValue(value2) {
11252
- const labelValueRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
11253
- if (value2 === "") {
11254
- return { isValid: true };
11255
- }
11256
- if (value2.length > 63) {
11257
- return { isValid: false, errorMessage: "MAX_63" };
11258
- }
11259
- if (!labelValueRegex.test(value2)) {
11260
- return { isValid: false, errorMessage: "INVALID_VALUE" };
11261
- }
11262
- 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
+ });
11263
11311
  }
11264
11312
  const LabelFormatPopover_piveun = "";
11265
11313
  const PodLabelFormatRulePopoverStyle = "p5jt6nm";
@@ -11347,59 +11395,86 @@ const LabelFormatPopover = ({
11347
11395
  })
11348
11396
  });
11349
11397
  };
11350
- const KeyValueTableForm_1eydq7y = "";
11351
- function _KeyValueTableFormForm(props, ref) {
11398
+ const index_t3zi07 = "";
11399
+ function _KeyValueTableForm(props, ref) {
11352
11400
  const {
11401
+ value: value2,
11353
11402
  defaultValue,
11354
- onSubmit,
11403
+ onChange,
11355
11404
  extraColumns,
11356
11405
  addButtonText,
11357
- noValueValidation
11406
+ noValueValidation,
11407
+ isHideLabelFormatPopover,
11408
+ isValueOptional = true,
11409
+ canImportFromFile,
11410
+ minSize,
11411
+ validateKey,
11412
+ validateValue,
11413
+ onSubmit
11358
11414
  } = props;
11359
11415
  const {
11360
11416
  t: t2
11361
11417
  } = useTranslation();
11362
- const [value2, setValue] = useState([]);
11363
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]);
11364
11433
  useImperativeHandle(ref, () => ({
11365
- submit: () => {
11366
- return new Promise((res, rej) => {
11367
- var _a;
11368
- (_a = tableFormRef.current) == null ? void 0 : _a.validateWholeFields();
11369
- setTimeout(() => {
11370
- var _a2;
11371
- const isValid = (_a2 = tableFormRef.current) == null ? void 0 : _a2.isValid();
11372
- if (isValid) {
11373
- res(onSubmit(value2));
11374
- } else {
11375
- rej();
11376
- }
11377
- }, 0);
11378
- });
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);
11379
11453
  }
11380
- }), [onSubmit, value2]);
11454
+ }, [value2]);
11381
11455
  const renderTextAreaFunc = ({
11382
11456
  value: value22,
11383
- onChange
11457
+ onChange: onChange2
11384
11458
  }) => {
11385
11459
  return /* @__PURE__ */ jsxRuntimeExports.jsx(TextArea, {
11386
11460
  autoSize: true,
11387
- className: "clsjtk2",
11461
+ className: "c17gq8cd",
11388
11462
  size: "small",
11389
11463
  value: value22,
11390
11464
  onChange: (e2) => {
11391
- onChange(e2.target.value);
11465
+ onChange2(e2.target.value);
11392
11466
  }
11393
11467
  });
11394
11468
  };
11395
11469
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, {
11396
11470
  size: 8,
11397
11471
  direction: "vertical",
11398
- className: "cq3mbby",
11472
+ className: "c1n7fiws",
11399
11473
  children: [/* @__PURE__ */ jsxRuntimeExports.jsx(TableForm, {
11400
11474
  ref: tableFormRef,
11401
- onBodyChange: (value22) => {
11402
- setValue(value22);
11475
+ onBodyChange: (newValue) => {
11476
+ _setValue(newValue);
11477
+ onChange == null ? void 0 : onChange(newValue);
11403
11478
  },
11404
11479
  columns: [{
11405
11480
  key: "key",
@@ -11410,46 +11485,72 @@ function _KeyValueTableFormForm(props, ref) {
11410
11485
  }) => {
11411
11486
  if (!value22)
11412
11487
  return t2("dovetail.key_empty_text");
11488
+ const validate2 = validateKey || validateLabelKey;
11413
11489
  const {
11414
- isValid
11415
- } = validateLabelKey(value22 || "");
11490
+ isValid,
11491
+ errorMessage
11492
+ } = validate2(value22 || "");
11416
11493
  if (!isValid)
11417
- return t2("dovetail.format_error");
11494
+ return errorMessage || t2("dovetail.format_error");
11418
11495
  },
11419
11496
  render: renderTextAreaFunc
11420
11497
  }, {
11421
11498
  key: "value",
11422
- title: t2("dovetail.value_optional"),
11499
+ title: isValueOptional ? t2("dovetail.value_optional") : t2("dovetail.value"),
11423
11500
  type: "input",
11424
11501
  validator: ({
11425
11502
  value: value22
11426
11503
  }) => {
11427
11504
  if (noValueValidation)
11428
11505
  return;
11506
+ const validate2 = validateValue || validateLabelValue;
11429
11507
  const {
11430
- isValid
11431
- } = validateLabelValue(value22 || "");
11508
+ isValid,
11509
+ errorMessage
11510
+ } = validate2(value22 || "", isValueOptional);
11432
11511
  if (!isValid)
11433
- return t2("dovetail.format_error");
11512
+ return errorMessage || t2("dovetail.format_error");
11434
11513
  },
11435
11514
  render: renderTextAreaFunc
11436
11515
  }, ...extraColumns || []],
11437
- disableBatchFilling: true,
11438
- hideEmptyTable: true,
11439
11516
  rowAddConfig: {
11440
11517
  addible: true,
11441
11518
  text: () => addButtonText
11442
11519
  },
11443
11520
  defaultData: defaultValue,
11444
11521
  row: {
11445
- deletable: true
11446
- }
11447
- }), /* @__PURE__ */ jsxRuntimeExports.jsx(LabelFormatPopover, {
11522
+ deletable: _value.length > (minSize || 0)
11523
+ },
11524
+ disableBatchFilling: true,
11525
+ hideEmptyTable: true
11526
+ }), isHideLabelFormatPopover ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(LabelFormatPopover, {
11448
11527
  noValueValidation
11449
- })]
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]
11450
11551
  });
11451
11552
  }
11452
- const KeyValueTableFormForm = React__default.forwardRef(_KeyValueTableFormForm);
11553
+ const KeyValueTableForm = React__default.forwardRef(_KeyValueTableForm);
11453
11554
  const EditNodeTaintForm_cgov7z = "";
11454
11555
  const UlStyle = "u19jcs7t";
11455
11556
  const EditNodeTaintForm = React__default.forwardRef(function EditNodeTaintForm2(props, ref) {
@@ -11462,6 +11563,7 @@ const EditNodeTaintForm = React__default.forwardRef(function EditNodeTaintForm2(
11462
11563
  const {
11463
11564
  t: t2
11464
11565
  } = useTranslation();
11566
+ const tableFormRef = useRef(null);
11465
11567
  const defaultValue = useMemo(() => {
11466
11568
  var _a;
11467
11569
  return ((_a = nodeModel._rawYaml.spec) == null ? void 0 : _a.taints) || [];
@@ -11497,8 +11599,14 @@ const EditNodeTaintForm = React__default.forwardRef(function EditNodeTaintForm2(
11497
11599
  errorNotification: false
11498
11600
  });
11499
11601
  }, [nodeModel, mutateAsync, t2]);
11500
- return /* @__PURE__ */ jsxRuntimeExports.jsx(KeyValueTableFormForm, {
11501
- 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,
11502
11610
  defaultValue,
11503
11611
  onSubmit,
11504
11612
  addButtonText: t2("dovetail.add_taint"),
@@ -12690,7 +12798,7 @@ const PodLogTab = (i18n2) => ({
12690
12798
  ]
12691
12799
  });
12692
12800
  const NetworkPolicyRulesViewer_r6jity = "";
12693
- const MonacoYamlEditor$1 = lazy(() => import("./MonacoYamlEditor-74ecf0d5.js"));
12801
+ const MonacoYamlEditor$1 = lazy(() => import("./MonacoYamlEditor-5e4c98ce.js"));
12694
12802
  const EditorStyle$1 = "e1cjl2b8";
12695
12803
  const NetworkPolicyRulesViewer = ({
12696
12804
  ingressOrEgress,
@@ -15261,6 +15369,11 @@ function usePathMap(options) {
15261
15369
  transformApplyValues
15262
15370
  };
15263
15371
  }
15372
+ var FormItemLayout = /* @__PURE__ */ ((FormItemLayout2) => {
15373
+ FormItemLayout2["VERTICAL"] = "VERTICAL";
15374
+ FormItemLayout2["HORIZONTAL"] = "HORIZONTAL";
15375
+ return FormItemLayout2;
15376
+ })(FormItemLayout || {});
15264
15377
  function useFieldsConfig(config, formConfig, resourceId) {
15265
15378
  var _a, _b, _c;
15266
15379
  const action = resourceId ? "edit" : "create";
@@ -15282,7 +15395,8 @@ function useFieldsConfig(config, formConfig, resourceId) {
15282
15395
  action
15283
15396
  });
15284
15397
  }
15285
- const RefineFormContent_ahna8x = "";
15398
+ const RefineFormContent_lnhybh = "";
15399
+ const VerticalFormItemStyle = "v154n7ie";
15286
15400
  function renderCommonFormFiled(props) {
15287
15401
  const {
15288
15402
  field,
@@ -15309,7 +15423,7 @@ function renderCommonFormFiled(props) {
15309
15423
  switch (fieldConfig.type) {
15310
15424
  case "number":
15311
15425
  ele = /* @__PURE__ */ jsxRuntimeExports.jsx(Fields.Integer, {
15312
- className: "c154n7ie",
15426
+ className: "c1c9j4da",
15313
15427
  placeholder: fieldConfig.placeholder,
15314
15428
  input: {
15315
15429
  value: value2,
@@ -15352,7 +15466,7 @@ const RefineFormContent = (props) => {
15352
15466
  control,
15353
15467
  name: fieldConfig.path.join("."),
15354
15468
  rules: {
15355
- validate(value2) {
15469
+ async validate(value2) {
15356
15470
  const formValue = getValues();
15357
15471
  if (!fieldConfig.validators || fieldConfig.validators.length === 0)
15358
15472
  return true;
@@ -15360,7 +15474,7 @@ const RefineFormContent = (props) => {
15360
15474
  const {
15361
15475
  isValid,
15362
15476
  errorMsg
15363
- } = func(value2, formValue, FormType.FORM);
15477
+ } = await func(value2, formValue, FormType.FORM);
15364
15478
  if (!isValid)
15365
15479
  return errorMsg;
15366
15480
  }
@@ -15388,13 +15502,14 @@ const RefineFormContent = (props) => {
15388
15502
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Form.Item, {
15389
15503
  label: fieldConfig.label,
15390
15504
  colon: false,
15391
- labelCol: {
15505
+ labelCol: fieldConfig.layout === FormItemLayout.VERTICAL ? {} : {
15392
15506
  flex: `0 0 ${(formConfig == null ? void 0 : formConfig.labelWidth) || "216px"}`
15393
15507
  },
15394
- help: (_a2 = fieldState.error) == null ? void 0 : _a2.message,
15508
+ help: fieldConfig.isHideErrorStatus ? "" : (_a2 = fieldState.error) == null ? void 0 : _a2.message,
15395
15509
  extra: fieldConfig.helperText,
15396
- validateStatus: fieldState.invalid ? "error" : void 0,
15510
+ validateStatus: fieldState.invalid && !fieldConfig.isHideErrorStatus ? "error" : void 0,
15397
15511
  "data-test-id": fieldConfig.key,
15512
+ className: fieldConfig.layout === FormItemLayout.VERTICAL ? VerticalFormItemStyle : "",
15398
15513
  children: ele
15399
15514
  }, fieldConfig.key);
15400
15515
  }
@@ -15403,7 +15518,7 @@ const RefineFormContent = (props) => {
15403
15518
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, {
15404
15519
  direction: "vertical",
15405
15520
  size: 16,
15406
- className: "c1c9j4da",
15521
+ className: "cjxv8cf",
15407
15522
  children: [fields, /* @__PURE__ */ jsxRuntimeExports.jsx(FormErrorAlert, {
15408
15523
  errorMsgs: errorMsgs || [],
15409
15524
  style: {
@@ -16122,7 +16237,7 @@ const PlainCodeStyle = "pqch97v";
16122
16237
  const ErrorMsgStyle = "eh2qjnl";
16123
16238
  const ErrorWrapperStyle = "e19q2bnp";
16124
16239
  const YamlEditorStyle = "y16u5v3w";
16125
- const MonacoYamlEditor = React__default.lazy(() => import("./MonacoYamlEditor-74ecf0d5.js"));
16240
+ const MonacoYamlEditor = React__default.lazy(() => import("./MonacoYamlEditor-5e4c98ce.js"));
16126
16241
  const MonacoYamlDiffEditor = React__default.lazy(() => import("./MonacoYamlDiffEditor-7de94ad2.js"));
16127
16242
  const YamlEditorComponent = forwardRef(
16128
16243
  function YamlEditorComponent2(props, ref) {
@@ -16647,21 +16762,21 @@ const useYamlForm = ({
16647
16762
  }
16648
16763
  return changeValues;
16649
16764
  };
16650
- const validateRules = (yamlValue) => {
16765
+ const validateRules = async (yamlValue) => {
16651
16766
  const errorMap = {};
16652
16767
  if (rules && isYamlValid && isSchemaValid) {
16653
16768
  const formValue = yaml$2.load(yamlValue || "");
16654
- rules.forEach((rule2) => {
16769
+ for (const rule2 of rules) {
16655
16770
  const { path: path2, validators } = rule2;
16656
16771
  const value2 = get$2(formValue, path2);
16657
16772
  for (const validator of validators || []) {
16658
- const { isValid, errorMsg } = validator(value2, formValue, FormType.YAML);
16773
+ const { isValid, errorMsg } = await validator(value2, formValue, FormType.YAML);
16659
16774
  if (!isValid) {
16660
16775
  errorMap[path2.join(".")] = `${errorMsg}(${path2.join(".")})`;
16661
16776
  break;
16662
16777
  }
16663
16778
  }
16664
- });
16779
+ }
16665
16780
  }
16666
16781
  setRulesErrors(uniq(Object.values(errorMap)));
16667
16782
  return errorMap;
@@ -16799,7 +16914,7 @@ function YamlForm(props) {
16799
16914
  try {
16800
16915
  const result = await ((_a = formProps.onFinish) == null ? void 0 : _a.call(formProps, store));
16801
16916
  if (result) {
16802
- (_b = props.onFinish) == null ? void 0 : _b.call(props);
16917
+ (_b = props.onFinish) == null ? void 0 : _b.call(props, result);
16803
16918
  }
16804
16919
  } catch {
16805
16920
  } finally {
@@ -16870,20 +16985,21 @@ function RefineFormContainer({
16870
16985
  config,
16871
16986
  id,
16872
16987
  refineProps: {
16873
- onMutationSuccess: () => {
16874
- onSuccess == null ? void 0 : onSuccess();
16988
+ onMutationSuccess: (data2) => {
16989
+ onSuccess == null ? void 0 : onSuccess(data2);
16875
16990
  },
16876
16991
  onMutationError() {
16877
16992
  onError == null ? void 0 : onError();
16878
16993
  },
16879
16994
  redirect: false,
16995
+ mutationMeta: {
16996
+ updateType: "put"
16997
+ },
16880
16998
  ...formConfig == null ? void 0 : formConfig.refineCoreProps
16881
16999
  },
16882
17000
  formConfig
16883
17001
  });
16884
- const {
16885
- transformApplyValues
16886
- } = usePathMap({
17002
+ const { transformApplyValues } = usePathMap({
16887
17003
  pathMap: formConfig == null ? void 0 : formConfig.pathMap,
16888
17004
  transformInitValues: formConfig == null ? void 0 : formConfig.transformInitValues,
16889
17005
  transformApplyValues: (formConfig == null ? void 0 : formConfig.transformApplyValues) || ((v) => v)
@@ -16898,14 +17014,16 @@ function RefineFormContainer({
16898
17014
  initialValuesForCreate: transformApplyValues(
16899
17015
  refineFormResult.formResult.getValues()
16900
17016
  ),
16901
- initialValuesForEdit: transformApplyValues(refineFormResult.formResult.getValues()),
17017
+ initialValuesForEdit: transformApplyValues(
17018
+ refineFormResult.formResult.getValues()
17019
+ ),
16902
17020
  id,
16903
17021
  action,
16904
17022
  isShowLayout: false,
16905
17023
  useFormProps: {
16906
17024
  redirect: false
16907
17025
  },
16908
- rules: fieldsConfig == null ? void 0 : fieldsConfig.map((config2) => ({
17026
+ rules: fieldsConfig == null ? void 0 : fieldsConfig.filter((config2) => !config2.isSkipValidationInYaml).map((config2) => ({
16909
17027
  path: config2.path,
16910
17028
  validators: config2.validators
16911
17029
  })),
@@ -16973,51 +17091,45 @@ function YamlFormContainer({
16973
17091
  onSaveButtonPropsChange
16974
17092
  }) {
16975
17093
  const action = id ? "edit" : "create";
16976
- const {
16977
- transformInitValues,
16978
- transformApplyValues
16979
- } = usePathMap({
17094
+ const { transformInitValues, transformApplyValues } = usePathMap({
16980
17095
  pathMap: formConfig == null ? void 0 : formConfig.pathMap,
16981
17096
  transformInitValues: formConfig == null ? void 0 : formConfig.transformInitValues,
16982
17097
  transformApplyValues: (formConfig == null ? void 0 : formConfig.transformApplyValues) || ((v) => v)
16983
17098
  });
16984
- const yamlFormProps = useMemo(
16985
- () => {
16986
- return {
16987
- ...customYamlFormProps,
16988
- config,
16989
- transformInitValues,
16990
- transformApplyValues,
16991
- initialValuesForCreate: (customYamlFormProps == null ? void 0 : customYamlFormProps.initialValuesForCreate) || config.initValue,
16992
- initialValuesForEdit: void 0,
16993
- id,
16994
- action,
16995
- isShowLayout: false,
16996
- useFormProps: {
16997
- redirect: false
16998
- },
16999
- rules: void 0,
17000
- onSaveButtonPropsChange,
17001
- onErrorsChange(errors) {
17002
- if (errors.length) {
17003
- onError == null ? void 0 : onError();
17004
- }
17005
- },
17006
- onFinish: onSuccess
17007
- };
17008
- },
17009
- [
17010
- id,
17011
- action,
17012
- customYamlFormProps,
17099
+ const yamlFormProps = useMemo(() => {
17100
+ return {
17101
+ ...customYamlFormProps,
17013
17102
  config,
17014
17103
  transformInitValues,
17015
17104
  transformApplyValues,
17016
- onSuccess,
17017
- onError,
17018
- onSaveButtonPropsChange
17019
- ]
17020
- );
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
+ ]);
17021
17133
  return /* @__PURE__ */ jsxRuntimeExports.jsx(YamlForm, { ...yamlFormProps });
17022
17134
  }
17023
17135
  const FormModal_64brhp = "";
@@ -17057,7 +17169,8 @@ function FormModal(props) {
17057
17169
  const {
17058
17170
  resource: resourceFromProps,
17059
17171
  id,
17060
- yamlFormProps: customYamlFormProps
17172
+ yamlFormProps: customYamlFormProps,
17173
+ onSuccess
17061
17174
  } = props;
17062
17175
  const {
17063
17176
  i18n: i18n2
@@ -17136,9 +17249,10 @@ function FormModal(props) {
17136
17249
  onError: () => {
17137
17250
  setIsError(true);
17138
17251
  },
17139
- onSuccess: () => {
17252
+ onSuccess: (data2) => {
17140
17253
  setIsError(false);
17141
17254
  popModal();
17255
+ onSuccess == null ? void 0 : onSuccess(data2);
17142
17256
  }
17143
17257
  };
17144
17258
  if (config.formConfig && (((_a2 = config.formConfig) == null ? void 0 : _a2.formType) === FormType.FORM || "fields" in config.formConfig)) {
@@ -17152,7 +17266,7 @@ function FormModal(props) {
17152
17266
  ...commonFormProps,
17153
17267
  formConfig: config.formConfig
17154
17268
  });
17155
- }, [id, customYamlFormProps, config, isYamlMode, popModal, setSaveButtonProps]);
17269
+ }, [id, customYamlFormProps, config, isYamlMode, popModal, setSaveButtonProps, onSuccess]);
17156
17270
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Modal, {
17157
17271
  className: cx_default(FullscreenModalStyle),
17158
17272
  style: {
@@ -17325,6 +17439,7 @@ const EditLabelForm = React__default.forwardRef(
17325
17439
  const { resourceModel } = props;
17326
17440
  const { mutateAsync } = useUpdate();
17327
17441
  const { t: t2 } = useTranslation();
17442
+ const tableFormRef = useRef(null);
17328
17443
  const defaultValue = useMemo(() => {
17329
17444
  var _a2;
17330
17445
  return Object.keys(((_a2 = resourceModel.metadata) == null ? void 0 : _a2.labels) || {}).map((key2) => {
@@ -17366,10 +17481,20 @@ const EditLabelForm = React__default.forwardRef(
17366
17481
  },
17367
17482
  [resourceModel, mutateAsync, t2]
17368
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
+ );
17369
17494
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
17370
- KeyValueTableFormForm,
17495
+ KeyValueTableForm,
17371
17496
  {
17372
- ref,
17497
+ ref: tableFormRef,
17373
17498
  defaultValue,
17374
17499
  onSubmit,
17375
17500
  addButtonText: t2("dovetail.add_label")
@@ -17412,6 +17537,7 @@ const EditAnnotationForm = React__default.forwardRef(function EditAnnotationForm
17412
17537
  const { resourceModel } = props;
17413
17538
  const { mutateAsync } = useUpdate();
17414
17539
  const { t: t2 } = useTranslation();
17540
+ const tableFormRef = useRef(null);
17415
17541
  const defaultValue = useMemo(() => {
17416
17542
  var _a2;
17417
17543
  return Object.keys(((_a2 = resourceModel.metadata) == null ? void 0 : _a2.annotations) || {}).map((key2) => {
@@ -17453,10 +17579,20 @@ const EditAnnotationForm = React__default.forwardRef(function EditAnnotationForm
17453
17579
  },
17454
17580
  [resourceModel, mutateAsync, t2]
17455
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
+ );
17456
17592
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
17457
- KeyValueTableFormForm,
17593
+ KeyValueTableForm,
17458
17594
  {
17459
- ref,
17595
+ ref: tableFormRef,
17460
17596
  defaultValue,
17461
17597
  onSubmit,
17462
17598
  addButtonText: t2("dovetail.add_annotation"),
@@ -18846,7 +18982,7 @@ export {
18846
18982
  CronjobJobsTable as ay,
18847
18983
  KeyValue as az,
18848
18984
  useSchema as b,
18849
- TextTags as b$,
18985
+ Tags as b$,
18850
18986
  PodSelectorField as b0,
18851
18987
  PortsTableField as b1,
18852
18988
  DurationField as b2,
@@ -18881,9 +19017,9 @@ export {
18881
19017
  SchemaStrategy as bV,
18882
19018
  YamlForm as bW,
18883
19019
  useRefineForm as bX,
18884
- ServiceInClusterAccessComponent as bY,
18885
- ServiceOutClusterAccessComponent as bZ,
18886
- Tags as b_,
19020
+ FormItemLayout as bY,
19021
+ ServiceInClusterAccessComponent as bZ,
19022
+ ServiceOutClusterAccessComponent as b_,
18887
19023
  PVVolumeModeField as ba,
18888
19024
  PVAccessModeField as bb,
18889
19025
  PVCPodsField as bc,
@@ -18911,86 +19047,91 @@ export {
18911
19047
  NetworkPolicyIngressRulesGroup as by,
18912
19048
  NetworkPolicyEgressRulesGroup as bz,
18913
19049
  useDeleteModal as c,
18914
- NodeModel as c$,
18915
- PodLog as c0,
18916
- NetworkPolicyRulesViewer as c1,
18917
- PVVolumeModeDisplay as c2,
18918
- Tabs as c3,
18919
- ResourceSelect as c4,
18920
- PodShellModal as c5,
18921
- PodShell as c6,
18922
- ResourceTable as c7,
18923
- ErrorWrapper as c8,
18924
- ErrorContentType as c9,
18925
- PVC_INIT_VALUE as cA,
18926
- ResourceState as cB,
18927
- AccessControlAuth as cC,
18928
- Dovetail as cD,
18929
- RESOURCE_GROUP as cE,
18930
- FormContainerType as cF,
18931
- FormType as cG,
18932
- FormMode as cH,
18933
- ComponentContext as cI,
18934
- GlobalStoreContext as cJ,
18935
- ConfigsContext as cK,
18936
- IngressModel as cL,
18937
- NetworkPolicyModel as cM,
18938
- JobModel as cN,
18939
- WorkloadModel as cO,
18940
- WorkloadBaseModel as cP,
18941
- PodModel as cQ,
18942
- PodMetricsModel as cR,
18943
- ResourceModel as cS,
18944
- CronJobModel as cT,
18945
- EventModel as cU,
18946
- DeploymentModel as cV,
18947
- DaemonSetModel as cW,
18948
- StatefulSetModel as cX,
18949
- ServiceTypeEnum as cY,
18950
- ServiceModel as cZ,
18951
- NodeRole as c_,
18952
- BASE_INIT_VALUE as ca,
18953
- DEPLOYMENT_INIT_VALUE as cb,
18954
- CRONJOB_INIT_VALUE as cc,
18955
- DAEMONSET_INIT_VALUE as cd,
18956
- JOB_INIT_VALUE as ce,
18957
- STATEFULSET_INIT_VALUE as cf,
18958
- POD_INIT_VALUE as cg,
18959
- SERVICE_CLUSTER_IP_INIT_VALUE as ch,
18960
- SERVICE_NODE_PORT_INIT_VALUE as ci,
18961
- SERVICE_LOAD_BALANCER_INIT_VALUE as cj,
18962
- SERVICE_EXTERNAL_NAME_INIT_VALUE as ck,
18963
- SERVICE_HEADLESS_INIT_VALUE as cl,
18964
- INGRESS_INIT_VALUE as cm,
18965
- NETWORK_POLICY_INIT_VALUE as cn,
18966
- CONFIG_MAP_INIT_VALUE as co,
18967
- SERVER_INSTANCE_INIT_VALUE as cp,
18968
- REDEPLOY_TIMESTAMP_KEY as cq,
18969
- SECRET_OPAQUE_INIT_VALUE as cr,
18970
- SECRET_IMAGE_REPO_INIT_VALUE as cs,
18971
- SECRET_BASIC_AUTH_INIT_VALUE as ct,
18972
- SECRET_SSH_AUTH_INIT_VALUE as cu,
18973
- SECRET_TLS_INIT_VALUE as cv,
18974
- SECRET_CUSTOM_INIT_VALUE as cw,
18975
- NODE_INIT_VALUE as cx,
18976
- STORAGE_CLASS_INIT_VALUE as cy,
18977
- PV_INIT_VALUE as cz,
19050
+ ServiceModel as c$,
19051
+ TextTags as c0,
19052
+ PodLog as c1,
19053
+ NetworkPolicyRulesViewer as c2,
19054
+ PVVolumeModeDisplay as c3,
19055
+ Tabs as c4,
19056
+ ResourceSelect as c5,
19057
+ PodShellModal as c6,
19058
+ PodShell as c7,
19059
+ ResourceTable as c8,
19060
+ ErrorWrapper as c9,
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_,
19088
+ ErrorContentType as ca,
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,
18978
19114
  dovetailRefineI18n as d,
18979
- StorageClassModel as d0,
18980
- PersistentVolumeModel as d1,
18981
- PersistentVolumeClaimModel as d2,
18982
- ProviderPlugins as d3,
18983
- ModelPlugin as d4,
18984
- modelPlugin as d5,
18985
- RelationPlugin as d6,
18986
- relationPlugin as d7,
18987
- generateValueFromSchema as d8,
18988
- generateSchemaTypeValue as d9,
18989
- resolveRef as da,
18990
- getApiVersion as db,
18991
- pruneBeforeEdit as dc,
18992
- matchSelector as dd,
18993
- getResourceNameByKind 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,
18994
19135
  useDeleteModalOnly as e,
18995
19136
  useFailedModal as f,
18996
19137
  NameSpaceColumnRenderer as g,