@dovetail-v2/refine 0.3.8-alpha.4 → 0.3.9-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,9 +9,9 @@ import i18n from "i18next";
9
9
  import { w as warnOnce, g as getDefaults, a as warn, b as getI18n, s as setDefaults, d as setI18n, I as I18nContext, j as jsxRuntimeExports, u as useTranslation, c as cx_default, S as SocketStatus } from "./common-241b21f8.js";
10
10
  import { ResourceContext, matchResourceFromRoute, useResource, useDelete, useNavigation, useBreadcrumb, useList, CanAccess, useUpdate, useParsed, useGo, useCan, useTable, useDeleteMany, useShow, useRefineContext, useTranslate, useWarnAboutChange, useForm as useForm$2, flattenObjectKeys, pickNotDeprecated, useMenu, Refine } from "@refinedev/core";
11
11
  import { parse, stringify } from "qs";
12
- import React, { createElement, isValidElement, cloneElement, Children, useContext, useCallback, createContext, useState, useEffect, useMemo, useRef, useImperativeHandle, lazy, Suspense, forwardRef } from "react";
12
+ import React, { createElement, isValidElement, cloneElement, Children, useContext, useCallback, createContext, useState, useEffect, useMemo, useRef, useImperativeHandle, lazy, Suspense, memo, forwardRef } from "react";
13
13
  import { useLocation, useHistory, useParams, matchPath, Link, Route, NavLink, Router } from "react-router-dom";
14
- import { usePushModal, usePopModal, DeleteDialog, Tag, RejectDialog, RejectDialogType, Input, Select, AntdOption, Button, Form, Space, TextArea, kitContext, Typo, Loading, Table as Table$2, Pagination, Alert, ImmersiveDialog, SmallDialog, Fields, Units, Link as Link$1, OverflowTooltip, Tooltip, Dropdown, Menu as Menu$1, Icon, Divider, Modal, StatusCapsule, Popover, AntdTable, TableForm, Upload, getOptions, DonutChart, SegmentControl, Checkbox, Tabs as Tabs$1, TabsTabPane, Col, Row, useMessage, SearchInput, Token, AntdSelectOptGroup, WizardDialog, MenuItemGroup, Layout as Layout$1, InputGroup, InputInteger, Time as Time$1, ModalStack, KitStoreProvider, ConfigProvider } from "@cloudtower/eagle";
14
+ import { usePushModal, usePopModal, DeleteDialog, Tag, RejectDialog, RejectDialogType, Input, Select, AntdOption, Button, Form, Space, TextArea, kitContext, Typo, Loading, Table as Table$2, Pagination, Alert, ImmersiveDialog, SmallDialog, Fields, Units, Link as Link$1, OverflowTooltip, Tooltip, Dropdown, Menu as Menu$1, Icon, Divider, Modal, StatusCapsule, Popover, AntdTable, TableForm, Upload, AutoComplete, getOptions, DonutChart, SegmentControl, Checkbox, Tabs as Tabs$1, TabsTabPane, Col, Row, useMessage, SearchInput, Token, AntdSelectOptGroup, WizardDialog, MenuItemGroup, Layout as Layout$1, InputGroup, InputInteger, Time as Time$1, ModalStack, KitStoreProvider, ConfigProvider } from "@cloudtower/eagle";
15
15
  import { EditPen16PrimaryIcon, Download16GradientBlueIcon, TrashBinDelete16Icon, MoreEllipsis324BoldSecondaryIcon, MoreEllipsis324BoldBlueIcon, MoreEllipsis316BoldBlueIcon, PlusAddCreateNew16BoldOntintIcon, ViewEye16GradientGrayIcon, EntityFilterIgnoreGradient16GrayIcon, InfoICircleFill16GrayIcon, InfoICircleFill16Gray70Icon, RecoverContinue16GradientBlueIcon, SuspendedPause16GradientBlueIcon, ArrowChevronLeft16BoldTertiaryIcon, ArrowChevronLeftSmall16BoldBlueIcon, ArrowChevronUp16BoldSecondaryIcon, ArrowBoldDown16Icon, Retry16GradientBlueIcon, OpenTerminal16GradientBlueIcon, ArrowChevronDown16BlueIcon, ArrowChevronUp16BlueIcon, HierarchyTriangleRight16GrayIcon, HierarchyTriangleRight16BlueIcon, ClipboardCopy16GradientGrayIcon, ClipboardCopy16GradientBlueIcon, Retry16GradientGrayIcon, EditPen16GradientGrayIcon, EditPen16GradientBlueIcon, Showdiff16GradientGrayIcon, Showdiff16GradientBlueIcon, XmarkFailedSeriousWarningFill16RedIcon, Pause16GradientBlueIcon, EditPen16BlueIcon } from "@cloudtower/icons-react";
16
16
  import { first, get as get$2, cloneDeep, set, omit as omit$1, merge, isEqual as isEqual$1, debounce, last, setWith, clone, isObject as isObject$4, uniq, keyBy } from "lodash-es";
17
17
  import yaml$2 from "js-yaml";
@@ -682,7 +682,7 @@ const udp$1 = "UDP";
682
682
  const required_field$1 = "Please enter {{ label }}.";
683
683
  const length_limit$1 = "The length of {{ label }} should be between {{ minLength }} and {{ maxLength }} characters.";
684
684
  const rf1123_name_format_error$1 = "Only lowercase letters, numbers, and hyphens (-) are supported, and the name must start and end with a lowercase letter or number.";
685
- const name_duplicated$1 = "{{name}} already exists. Try another one.";
685
+ const name_duplicated$1 = "The name already exists.";
686
686
  const input_correct_port$1 = "Please fill in a valid port number.";
687
687
  const dovetail$1 = {
688
688
  copy: copy$1,
@@ -1190,11 +1190,13 @@ const required_field = "请填写{{ label }}。";
1190
1190
  const length_limit = "{{ label }}支持的字符长度范围为 {{ minLength }}–{{ maxLength }}。";
1191
1191
  const rf1123_name_format_error = "仅支持小写字母、数字、连字符(-),并且必须以小写字母、数字开头和结尾。";
1192
1192
  const rf1035_name_format_error = "仅支持小写字母、数字、连字符(-),并且必须以小写字母开头,以小写字母、数字结尾。";
1193
- const name_duplicated = "已存在同名 {{name}}。";
1193
+ const dns_subdomain_name_format_error = "仅支持小写字母、数字、连字符(-)和点(.),并且必须以小写字母或数字开头和结尾。";
1194
+ const name_duplicated = "名称已存在。";
1194
1195
  const input_correct_port = "请填写有效的端口号。";
1195
1196
  const auto_generate = "自动生成";
1196
1197
  const specify_port = "指定端口";
1197
1198
  const node_port_duplicated = "节点端口已存在。";
1199
+ const all = "全部";
1198
1200
  const dovetail = {
1199
1201
  copy,
1200
1202
  reset_arguments,
@@ -1451,11 +1453,13 @@ const dovetail = {
1451
1453
  length_limit,
1452
1454
  rf1123_name_format_error,
1453
1455
  rf1035_name_format_error,
1456
+ dns_subdomain_name_format_error,
1454
1457
  name_duplicated,
1455
1458
  input_correct_port,
1456
1459
  auto_generate,
1457
1460
  specify_port,
1458
- node_port_duplicated
1461
+ node_port_duplicated,
1462
+ all
1459
1463
  };
1460
1464
  const ZH = {
1461
1465
  dovetail
@@ -9478,7 +9482,6 @@ class PodModel extends WorkloadBaseModel {
9478
9482
  super(_rawYaml, _globalStore);
9479
9483
  __publicField(this, "request");
9480
9484
  __publicField(this, "limit");
9481
- __publicField(this, "belongToDeployment");
9482
9485
  this._rawYaml = _rawYaml;
9483
9486
  let cpuRequestNum = 0;
9484
9487
  let memoryRequestNum = 0;
@@ -9519,21 +9522,12 @@ class PodModel extends WorkloadBaseModel {
9519
9522
  }
9520
9523
  };
9521
9524
  }
9522
- getBelongToDeployment(deployments, replicaSets) {
9523
- const ownerReferences = this.metadata.ownerReferences;
9524
- const belongToReplicaSet = replicaSets.find(
9525
- (replicaSet) => ownerReferences == null ? void 0 : ownerReferences.some(
9526
- (ownerReference) => ownerReference.kind === "ReplicaSet" && ownerReference.uid === replicaSet.metadata.uid
9527
- )
9528
- );
9529
- return deployments.find(
9530
- (deployment) => {
9531
- var _a;
9532
- return (_a = belongToReplicaSet == null ? void 0 : belongToReplicaSet.metadata.ownerReferences) == null ? void 0 : _a.some(
9533
- (ownerReference) => ownerReference.kind === "Deployment" && ownerReference.uid === deployment.metadata.uid
9534
- );
9535
- }
9536
- );
9525
+ getBelongToDeployment(deployments) {
9526
+ return deployments.find((deployment) => {
9527
+ return deployment.replicaSets.find((replicaSet) => {
9528
+ return replicaSet.pods.find((pod2) => pod2.metadata.uid === this.metadata.uid);
9529
+ });
9530
+ });
9537
9531
  }
9538
9532
  get imageNames() {
9539
9533
  var _a;
@@ -10410,16 +10404,7 @@ function getResourceNameByKind(kind, configs) {
10410
10404
  }
10411
10405
  const Rfc1123NameRegExp = /(^[a-z0-9]$)|(^[a-z0-9][a-z0-9-]*[a-z0-9]$)/;
10412
10406
  const Rfc1035NameRegExp = /(^[a-z]$)|(^[a-z][a-z0-9\-]*[a-z0-9]$)/;
10413
- function validateDnsSubdomain(subdomain) {
10414
- const regex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
10415
- if (!regex.test(subdomain)) {
10416
- return { isValid: false };
10417
- }
10418
- if (subdomain && subdomain.length > 63) {
10419
- return { isValid: false };
10420
- }
10421
- return { isValid: true };
10422
- }
10407
+ const DnsSubdomainRegExp = /(^[a-z0-9]$)|(^[a-z0-9][a-z0-9-.]*[a-z0-9]$)/;
10423
10408
  function validateResourceName({
10424
10409
  v,
10425
10410
  allNames,
@@ -10427,7 +10412,8 @@ function validateResourceName({
10427
10412
  emptyText,
10428
10413
  duplicatedText,
10429
10414
  formatErrorText,
10430
- regex
10415
+ regex,
10416
+ maxLength = 63
10431
10417
  }) {
10432
10418
  if (!v) {
10433
10419
  return {
@@ -10437,13 +10423,13 @@ function validateResourceName({
10437
10423
  })
10438
10424
  };
10439
10425
  }
10440
- if (v.length > 63) {
10426
+ if (v.length > maxLength) {
10441
10427
  return {
10442
10428
  isValid: false,
10443
10429
  errorMessage: i18n2.t("dovetail.length_limit", {
10444
10430
  label: i18n2.t("dovetail.name"),
10445
10431
  minLength: 1,
10446
- maxLength: 63
10432
+ maxLength
10447
10433
  })
10448
10434
  };
10449
10435
  }
@@ -10499,6 +10485,24 @@ function ValidateRfc1035Name({
10499
10485
  formatErrorText: i18n2.t("dovetail.rf1035_name_format_error")
10500
10486
  });
10501
10487
  }
10488
+ function validateDnsSubdomainName({
10489
+ v,
10490
+ allNames,
10491
+ i18n: i18n2,
10492
+ emptyText,
10493
+ duplicatedText
10494
+ }) {
10495
+ return validateResourceName({
10496
+ v,
10497
+ allNames,
10498
+ i18n: i18n2,
10499
+ emptyText,
10500
+ duplicatedText,
10501
+ regex: DnsSubdomainRegExp,
10502
+ formatErrorText: i18n2.t("dovetail.dns_subdomain_name_format_error"),
10503
+ maxLength: 253
10504
+ });
10505
+ }
10502
10506
  function validateLabelKey(key2) {
10503
10507
  const labelRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
10504
10508
  let prefix2, name2;
@@ -10518,14 +10522,17 @@ function validateLabelKey(key2) {
10518
10522
  if (prefix2 && prefix2.length > 253) {
10519
10523
  return { isValid: false };
10520
10524
  }
10521
- return validateDnsSubdomain(name2);
10525
+ if (name2 && name2.length > 63) {
10526
+ return { isValid: false };
10527
+ }
10528
+ return { isValid: true };
10522
10529
  }
10523
- function validateLabelValue(value2, isOptional) {
10530
+ function validateLabelValue(value2, i18n2, isOptional) {
10524
10531
  const labelValueRegex = /(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]$)/;
10525
10532
  if (isOptional && value2 === "") {
10526
10533
  return { isValid: true };
10527
10534
  } else if (value2 === "") {
10528
- return { isValid: false };
10535
+ return { isValid: false, errorMessage: i18n2.t("dovetail.required_field", { label: i18n2.t("dovetail.value") }) };
10529
10536
  }
10530
10537
  if (value2.length > 63) {
10531
10538
  return { isValid: false };
@@ -10535,6 +10542,16 @@ function validateLabelValue(value2, isOptional) {
10535
10542
  }
10536
10543
  return { isValid: true };
10537
10544
  }
10545
+ function validateDataKey(key2) {
10546
+ const dataKeyRegex = /^[-._a-zA-Z0-9]+$/;
10547
+ if (!dataKeyRegex.test(key2)) {
10548
+ return { isValid: false };
10549
+ }
10550
+ if (key2.length > 253) {
10551
+ return { isValid: false };
10552
+ }
10553
+ return { isValid: true };
10554
+ }
10538
10555
  function validatePort(port2, isOptional, i18n2) {
10539
10556
  if (port2 === "" && !isOptional) {
10540
10557
  return {
@@ -11434,12 +11451,14 @@ function _KeyValueTableForm(props, ref) {
11434
11451
  canImportFromFile,
11435
11452
  minSize,
11436
11453
  extraAction,
11454
+ keyOptions,
11437
11455
  validateKey,
11438
11456
  validateValue,
11439
11457
  onSubmit
11440
11458
  } = props;
11441
11459
  const {
11442
- t: t2
11460
+ t: t2,
11461
+ i18n: i18n2
11443
11462
  } = useTranslation();
11444
11463
  const tableFormRef = useRef(null);
11445
11464
  const [_value, _setValue] = useState(value2 || defaultValue);
@@ -11478,6 +11497,22 @@ function _KeyValueTableForm(props, ref) {
11478
11497
  (_a = tableFormRef.current) == null ? void 0 : _a.setData(value2);
11479
11498
  }
11480
11499
  }, [value2]);
11500
+ const renderAutoCompleteFunc = ({
11501
+ value: value22,
11502
+ onChange: onChange2
11503
+ }) => {
11504
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(AutoComplete, {
11505
+ options: keyOptions || [],
11506
+ value: value22,
11507
+ onChange: onChange2,
11508
+ size: "small",
11509
+ filterOption: (inputValue, option) => {
11510
+ var _a;
11511
+ return ((_a = option == null ? void 0 : option.label) == null ? void 0 : _a.toString().toLowerCase().includes(inputValue.toLowerCase())) || false;
11512
+ },
11513
+ allowClear: true
11514
+ });
11515
+ };
11481
11516
  const renderTextAreaFunc = ({
11482
11517
  value: value22,
11483
11518
  onChange: onChange2
@@ -11519,7 +11554,7 @@ function _KeyValueTableForm(props, ref) {
11519
11554
  if (!isValid)
11520
11555
  return errorMessage || t2("dovetail.format_error");
11521
11556
  },
11522
- render: renderTextAreaFunc
11557
+ render: (keyOptions == null ? void 0 : keyOptions.length) ? renderAutoCompleteFunc : renderTextAreaFunc
11523
11558
  }, {
11524
11559
  key: "value",
11525
11560
  title: isValueOptional ? t2("dovetail.value_optional") : t2("dovetail.value"),
@@ -11533,7 +11568,7 @@ function _KeyValueTableForm(props, ref) {
11533
11568
  const {
11534
11569
  isValid,
11535
11570
  errorMessage
11536
- } = validate2(value22 || "", isValueOptional);
11571
+ } = validate2(value22 || "", i18n2, isValueOptional);
11537
11572
  if (!isValid)
11538
11573
  return errorMessage || t2("dovetail.format_error");
11539
11574
  },
@@ -11578,6 +11613,81 @@ function _KeyValueTableForm(props, ref) {
11578
11613
  });
11579
11614
  }
11580
11615
  const KeyValueTableForm = React.forwardRef(_KeyValueTableForm);
11616
+ var NodeTaintEffect = /* @__PURE__ */ ((NodeTaintEffect2) => {
11617
+ NodeTaintEffect2["NoSchedule"] = "NoSchedule";
11618
+ NodeTaintEffect2["PreferNoSchedule"] = "PreferNoSchedule";
11619
+ NodeTaintEffect2["NoExecute"] = "NoExecute";
11620
+ NodeTaintEffect2["All"] = "__none__";
11621
+ return NodeTaintEffect2;
11622
+ })(NodeTaintEffect || {});
11623
+ const NodeTaintEffectSelect = ({
11624
+ value: value2,
11625
+ selectProps,
11626
+ isShowAll,
11627
+ onChange
11628
+ }) => {
11629
+ const { t: t2 } = useTranslation();
11630
+ const options = useMemo(() => {
11631
+ const options2 = [
11632
+ {
11633
+ value: "NoSchedule",
11634
+ children: t2(`dovetail.node_taint_${"NoSchedule"}`),
11635
+ suffix: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: /* @__PURE__ */ jsxRuntimeExports.jsx(TaintEffectTooltip, {
11636
+ effect: "NoSchedule"
11637
+ /* NoSchedule */
11638
+ }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
11639
+ Icon,
11640
+ {
11641
+ src: InfoICircleFill16GrayIcon,
11642
+ hoverSrc: InfoICircleFill16Gray70Icon
11643
+ }
11644
+ ) })
11645
+ },
11646
+ {
11647
+ value: "PreferNoSchedule",
11648
+ children: t2(`dovetail.node_taint_${"PreferNoSchedule"}`),
11649
+ suffix: /* @__PURE__ */ jsxRuntimeExports.jsx(
11650
+ Tooltip,
11651
+ {
11652
+ title: /* @__PURE__ */ jsxRuntimeExports.jsx(TaintEffectTooltip, {
11653
+ effect: "PreferNoSchedule"
11654
+ /* PreferNoSchedule */
11655
+ }),
11656
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
11657
+ Icon,
11658
+ {
11659
+ src: InfoICircleFill16GrayIcon,
11660
+ hoverSrc: InfoICircleFill16Gray70Icon
11661
+ }
11662
+ )
11663
+ }
11664
+ )
11665
+ },
11666
+ {
11667
+ value: "NoExecute",
11668
+ children: t2(`dovetail.node_taint_${"NoExecute"}`),
11669
+ suffix: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: /* @__PURE__ */ jsxRuntimeExports.jsx(TaintEffectTooltip, {
11670
+ effect: "NoExecute"
11671
+ /* NoExecute */
11672
+ }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
11673
+ Icon,
11674
+ {
11675
+ src: InfoICircleFill16GrayIcon,
11676
+ hoverSrc: InfoICircleFill16Gray70Icon
11677
+ }
11678
+ ) })
11679
+ }
11680
+ ];
11681
+ if (isShowAll) {
11682
+ options2.unshift({
11683
+ value: "__none__",
11684
+ children: t2("dovetail.all")
11685
+ });
11686
+ }
11687
+ return options2;
11688
+ }, [t2, isShowAll]);
11689
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Select, { input: {}, value: value2, onChange, size: "small", ...selectProps, children: getOptions(options) });
11690
+ };
11581
11691
  const EditNodeTaintForm_cgov7z = "";
11582
11692
  const UlStyle = "u19jcs7t";
11583
11693
  const EditNodeTaintForm = React.forwardRef(function EditNodeTaintForm2(props, ref) {
@@ -11640,56 +11750,14 @@ const EditNodeTaintForm = React.forwardRef(function EditNodeTaintForm2(props, re
11640
11750
  extraColumns: [{
11641
11751
  key: "effect",
11642
11752
  title: t2("dovetail.effect"),
11643
- defaultValue: "NoExecute",
11753
+ defaultValue: NodeTaintEffect.NoExecute,
11644
11754
  render: ({
11645
11755
  value: value2,
11646
11756
  onChange
11647
11757
  }) => {
11648
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Select, {
11649
- input: {},
11758
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(NodeTaintEffectSelect, {
11650
11759
  value: value2,
11651
- onChange,
11652
- size: "small",
11653
- children: getOptions([{
11654
- value: "NoSchedule",
11655
- children: t2(`dovetail.node_taint_${"NoSchedule"}`),
11656
- suffix: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, {
11657
- title: /* @__PURE__ */ jsxRuntimeExports.jsx(TaintEffectTooltip, {
11658
- effect: "NoSchedule"
11659
- /* NoSchedule */
11660
- }),
11661
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
11662
- src: InfoICircleFill16GrayIcon,
11663
- hoverSrc: InfoICircleFill16Gray70Icon
11664
- })
11665
- })
11666
- }, {
11667
- value: "PreferNoSchedule",
11668
- children: t2(`dovetail.node_taint_${"PreferNoSchedule"}`),
11669
- suffix: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, {
11670
- title: /* @__PURE__ */ jsxRuntimeExports.jsx(TaintEffectTooltip, {
11671
- effect: "PreferNoSchedule"
11672
- /* PreferNoSchedule */
11673
- }),
11674
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
11675
- src: InfoICircleFill16GrayIcon,
11676
- hoverSrc: InfoICircleFill16Gray70Icon
11677
- })
11678
- })
11679
- }, {
11680
- value: "NoExecute",
11681
- children: t2(`dovetail.node_taint_${"NoExecute"}`),
11682
- suffix: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, {
11683
- title: /* @__PURE__ */ jsxRuntimeExports.jsx(TaintEffectTooltip, {
11684
- effect: "NoExecute"
11685
- /* NoExecute */
11686
- }),
11687
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
11688
- src: InfoICircleFill16GrayIcon,
11689
- hoverSrc: InfoICircleFill16Gray70Icon
11690
- })
11691
- })
11692
- }])
11760
+ onChange
11693
11761
  });
11694
11762
  },
11695
11763
  validator: ({
@@ -11708,24 +11776,15 @@ const TaintEffectTooltip = ({
11708
11776
  t: t2
11709
11777
  } = useTranslation();
11710
11778
  const TaintEffectTooltipTextConfig = {
11711
- [
11712
- "NoExecute"
11713
- /* NoExecute */
11714
- ]: {
11779
+ [NodeTaintEffect.NoExecute]: {
11715
11780
  title: "NoExecute",
11716
11781
  tooltips: [t2("dovetail.taint_effect_NoExecute_tooltip_1"), t2("dovetail.taint_effect_NoExecute_tooltip_2"), t2("dovetail.taint_effect_NoExecute_tooltip_3")]
11717
11782
  },
11718
- [
11719
- "NoSchedule"
11720
- /* NoSchedule */
11721
- ]: {
11783
+ [NodeTaintEffect.NoSchedule]: {
11722
11784
  title: "NoSchedule",
11723
11785
  tooltips: [t2("dovetail.taint_effect_NoSchedule_tooltip_1"), t2("dovetail.taint_effect_NoSchedule_tooltip_2")]
11724
11786
  },
11725
- [
11726
- "PreferNoSchedule"
11727
- /* PreferNoSchedule */
11728
- ]: {
11787
+ [NodeTaintEffect.PreferNoSchedule]: {
11729
11788
  title: "PreferNoSchedule",
11730
11789
  tooltips: [t2("dovetail.taint_effect_PreferNoSchedule_tooltip")]
11731
11790
  }
@@ -12888,7 +12947,7 @@ const PodLogTab = (i18n2, apiUrl) => ({
12888
12947
  ]
12889
12948
  });
12890
12949
  const NetworkPolicyRulesViewer_r6jity = "";
12891
- const MonacoYamlEditor$1 = lazy(() => import("./MonacoYamlEditor-70599129.js"));
12950
+ const MonacoYamlEditor$1 = lazy(() => import("./MonacoYamlEditor-be30f2cd.js"));
12892
12951
  const EditorStyle$1 = "e1cjl2b8";
12893
12952
  const NetworkPolicyRulesViewer = ({
12894
12953
  ingressOrEgress,
@@ -14265,16 +14324,83 @@ function renderCommonFormFiled(props) {
14265
14324
  }
14266
14325
  return ele;
14267
14326
  }
14327
+ const MemoizedFormField = memo(function FormField({
14328
+ fieldConfig,
14329
+ control,
14330
+ getValues,
14331
+ trigger,
14332
+ action,
14333
+ formConfig,
14334
+ watch
14335
+ }) {
14336
+ const formValues = fieldConfig.condition ? watch() : {};
14337
+ const isDisplay = fieldConfig.condition ? fieldConfig.condition(formValues, get$2(formValues, fieldConfig.path.join("."))) !== false : true;
14338
+ if (!isDisplay) {
14339
+ return null;
14340
+ }
14341
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
14342
+ Controller,
14343
+ {
14344
+ control,
14345
+ name: fieldConfig.path.join("."),
14346
+ rules: {
14347
+ async validate(value2) {
14348
+ const formValue = getValues();
14349
+ if (!fieldConfig.validators || fieldConfig.validators.length === 0)
14350
+ return true;
14351
+ for (const func of fieldConfig.validators) {
14352
+ const { isValid, errorMsg } = await func(value2, formValue, FormType.FORM);
14353
+ if (!isValid)
14354
+ return errorMsg;
14355
+ }
14356
+ return true;
14357
+ }
14358
+ },
14359
+ render: ({ field, fieldState }) => {
14360
+ var _a;
14361
+ const currentFormValue = getValues();
14362
+ const renderProps = {
14363
+ field,
14364
+ fieldConfig,
14365
+ action,
14366
+ control,
14367
+ trigger,
14368
+ formValue: currentFormValue
14369
+ };
14370
+ let ele = null;
14371
+ if (fieldConfig == null ? void 0 : fieldConfig.render) {
14372
+ ele = fieldConfig.render(renderProps);
14373
+ } else {
14374
+ ele = renderCommonFormFiled(renderProps);
14375
+ }
14376
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
14377
+ Form.Item,
14378
+ {
14379
+ label: fieldConfig.label,
14380
+ colon: false,
14381
+ labelCol: fieldConfig.layout === FormItemLayout.VERTICAL ? {} : { flex: `0 0 ${(formConfig == null ? void 0 : formConfig.labelWidth) || "216px"}` },
14382
+ help: fieldConfig.isHideErrorStatus ? "" : (_a = fieldState.error) == null ? void 0 : _a.message,
14383
+ extra: fieldConfig.helperText,
14384
+ validateStatus: fieldState.invalid && !fieldConfig.isHideErrorStatus ? "error" : void 0,
14385
+ "data-test-id": fieldConfig.key,
14386
+ className: fieldConfig.layout === FormItemLayout.VERTICAL ? VerticalFormItemStyle : "",
14387
+ children: ele
14388
+ },
14389
+ fieldConfig.key
14390
+ );
14391
+ }
14392
+ },
14393
+ fieldConfig.key
14394
+ );
14395
+ });
14268
14396
  function FieldsContent(props) {
14269
14397
  const { config, formConfig, resourceId, step, formResult, fields } = props;
14270
14398
  const { control, getValues, watch, trigger } = formResult;
14271
14399
  const action = resourceId ? "edit" : "create";
14272
- const formValues = watch();
14273
14400
  const formFieldsConfig = useFieldsConfig(config, { fields }, resourceId, step);
14274
14401
  const fieldsEle = formFieldsConfig == null ? void 0 : formFieldsConfig.map((fieldConfig) => {
14275
- var _a;
14276
14402
  if ("fields" in fieldConfig) {
14277
- return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
14403
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(React.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
14278
14404
  SectionTitle,
14279
14405
  {
14280
14406
  title: fieldConfig.title,
@@ -14292,62 +14418,21 @@ function FieldsContent(props) {
14292
14418
  }
14293
14419
  ) })
14294
14420
  }
14295
- ) });
14421
+ ) }, fieldConfig.title);
14296
14422
  }
14297
- const isDisplay = ((_a = fieldConfig.condition) == null ? void 0 : _a.call(fieldConfig, formValues, get$2(formValues, fieldConfig.path.join(".")))) !== false;
14298
- return isDisplay ? /* @__PURE__ */ jsxRuntimeExports.jsx(
14299
- Controller,
14423
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
14424
+ MemoizedFormField,
14300
14425
  {
14426
+ fieldConfig,
14301
14427
  control,
14302
- name: fieldConfig.path.join("."),
14303
- rules: {
14304
- async validate(value2) {
14305
- const formValue = getValues();
14306
- if (!fieldConfig.validators || fieldConfig.validators.length === 0)
14307
- return true;
14308
- for (const func of fieldConfig.validators) {
14309
- const { isValid, errorMsg } = await func(value2, formValue, FormType.FORM);
14310
- if (!isValid)
14311
- return errorMsg;
14312
- }
14313
- return true;
14314
- }
14315
- },
14316
- render: ({ field, fieldState }) => {
14317
- var _a2;
14318
- const renderProps = {
14319
- field,
14320
- fieldConfig,
14321
- action,
14322
- control,
14323
- trigger,
14324
- formValue: formValues
14325
- };
14326
- let ele = null;
14327
- if (fieldConfig == null ? void 0 : fieldConfig.render) {
14328
- ele = fieldConfig.render(renderProps);
14329
- } else {
14330
- ele = renderCommonFormFiled(renderProps);
14331
- }
14332
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
14333
- Form.Item,
14334
- {
14335
- label: fieldConfig.label,
14336
- colon: false,
14337
- labelCol: fieldConfig.layout === FormItemLayout.VERTICAL ? {} : { flex: `0 0 ${(formConfig == null ? void 0 : formConfig.labelWidth) || "216px"}` },
14338
- help: fieldConfig.isHideErrorStatus ? "" : (_a2 = fieldState.error) == null ? void 0 : _a2.message,
14339
- extra: fieldConfig.helperText,
14340
- validateStatus: fieldState.invalid && !fieldConfig.isHideErrorStatus ? "error" : void 0,
14341
- "data-test-id": fieldConfig.key,
14342
- className: fieldConfig.layout === FormItemLayout.VERTICAL ? VerticalFormItemStyle : "",
14343
- children: ele
14344
- },
14345
- fieldConfig.key
14346
- );
14347
- }
14428
+ getValues,
14429
+ trigger,
14430
+ action,
14431
+ formConfig,
14432
+ watch
14348
14433
  },
14349
14434
  fieldConfig.key
14350
- ) : null;
14435
+ );
14351
14436
  });
14352
14437
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: ContentWrapper, children: fieldsEle });
14353
14438
  }
@@ -15085,7 +15170,7 @@ const PlainCodeStyle = "pqch97v";
15085
15170
  const ErrorMsgStyle = "eh2qjnl";
15086
15171
  const ErrorWrapperStyle = "e19q2bnp";
15087
15172
  const YamlEditorStyle = "y16u5v3w";
15088
- const MonacoYamlEditor = React.lazy(() => import("./MonacoYamlEditor-70599129.js"));
15173
+ const MonacoYamlEditor = React.lazy(() => import("./MonacoYamlEditor-be30f2cd.js"));
15089
15174
  const MonacoYamlDiffEditor = React.lazy(() => import("./MonacoYamlDiffEditor-9232e9fc.js"));
15090
15175
  const YamlEditorComponent = forwardRef(
15091
15176
  function YamlEditorComponent2(props, ref) {
@@ -19080,7 +19165,7 @@ export {
19080
19165
  NetworkPolicyIngressRulesGroup as by,
19081
19166
  NetworkPolicyEgressRulesGroup as bz,
19082
19167
  useDeleteModal as c,
19083
- ResourceModel as c$,
19168
+ WorkloadModel as c$,
19084
19169
  FormItemLayout as c0,
19085
19170
  ServiceInClusterAccessComponent as c1,
19086
19171
  ServiceOutClusterAccessComponent as c2,
@@ -19091,33 +19176,33 @@ export {
19091
19176
  PVVolumeModeDisplay as c7,
19092
19177
  Tabs as c8,
19093
19178
  ResourceSelect as c9,
19094
- SECRET_OPAQUE_INIT_VALUE as cA,
19095
- SECRET_IMAGE_REPO_INIT_VALUE as cB,
19096
- SECRET_BASIC_AUTH_INIT_VALUE as cC,
19097
- SECRET_SSH_AUTH_INIT_VALUE as cD,
19098
- SECRET_TLS_INIT_VALUE as cE,
19099
- SECRET_CUSTOM_INIT_VALUE as cF,
19100
- NODE_INIT_VALUE as cG,
19101
- STORAGE_CLASS_INIT_VALUE as cH,
19102
- PV_INIT_VALUE as cI,
19103
- PVC_INIT_VALUE as cJ,
19104
- ResourceState as cK,
19105
- AccessControlAuth as cL,
19106
- Dovetail as cM,
19107
- RESOURCE_GROUP as cN,
19108
- FormContainerType as cO,
19109
- FormType as cP,
19110
- FormMode as cQ,
19111
- ComponentContext as cR,
19112
- GlobalStoreContext as cS,
19113
- ConfigsContext as cT,
19114
- IngressModel as cU,
19115
- NetworkPolicyModel as cV,
19116
- JobModel as cW,
19117
- WorkloadModel as cX,
19118
- WorkloadBaseModel as cY,
19119
- PodModel as cZ,
19120
- PodMetricsModel as c_,
19179
+ NETWORK_POLICY_INIT_VALUE as cA,
19180
+ CONFIG_MAP_INIT_VALUE as cB,
19181
+ SERVER_INSTANCE_INIT_VALUE as cC,
19182
+ REDEPLOY_TIMESTAMP_KEY as cD,
19183
+ SECRET_OPAQUE_INIT_VALUE as cE,
19184
+ SECRET_IMAGE_REPO_INIT_VALUE as cF,
19185
+ SECRET_BASIC_AUTH_INIT_VALUE as cG,
19186
+ SECRET_SSH_AUTH_INIT_VALUE as cH,
19187
+ SECRET_TLS_INIT_VALUE as cI,
19188
+ SECRET_CUSTOM_INIT_VALUE as cJ,
19189
+ NODE_INIT_VALUE as cK,
19190
+ STORAGE_CLASS_INIT_VALUE as cL,
19191
+ PV_INIT_VALUE as cM,
19192
+ PVC_INIT_VALUE as cN,
19193
+ ResourceState as cO,
19194
+ AccessControlAuth as cP,
19195
+ Dovetail as cQ,
19196
+ RESOURCE_GROUP as cR,
19197
+ FormContainerType as cS,
19198
+ FormType as cT,
19199
+ FormMode as cU,
19200
+ ComponentContext as cV,
19201
+ GlobalStoreContext as cW,
19202
+ ConfigsContext as cX,
19203
+ IngressModel as cY,
19204
+ NetworkPolicyModel as cZ,
19205
+ JobModel as c_,
19121
19206
  PodShellModal as ca,
19122
19207
  PodShell as cb,
19123
19208
  ResourceTable as cc,
@@ -19127,57 +19212,62 @@ export {
19127
19212
  MatchLabelSelector as cg,
19128
19213
  PortsConfigForm as ch,
19129
19214
  SectionTitle as ci,
19130
- BASE_INIT_VALUE as cj,
19131
- DEPLOYMENT_INIT_VALUE as ck,
19132
- CRONJOB_INIT_VALUE as cl,
19133
- DAEMONSET_INIT_VALUE as cm,
19134
- JOB_INIT_VALUE as cn,
19135
- STATEFULSET_INIT_VALUE as co,
19136
- POD_INIT_VALUE as cp,
19137
- SERVICE_CLUSTER_IP_INIT_VALUE as cq,
19138
- SERVICE_NODE_PORT_INIT_VALUE as cr,
19139
- SERVICE_LOAD_BALANCER_INIT_VALUE as cs,
19140
- SERVICE_EXTERNAL_NAME_INIT_VALUE as ct,
19141
- SERVICE_HEADLESS_INIT_VALUE as cu,
19142
- INGRESS_INIT_VALUE as cv,
19143
- NETWORK_POLICY_INIT_VALUE as cw,
19144
- CONFIG_MAP_INIT_VALUE as cx,
19145
- SERVER_INSTANCE_INIT_VALUE as cy,
19146
- REDEPLOY_TIMESTAMP_KEY as cz,
19215
+ EditLabelForm as cj,
19216
+ EditAnnotationForm as ck,
19217
+ NodeTaintEffect as cl,
19218
+ NodeTaintEffectSelect as cm,
19219
+ BASE_INIT_VALUE as cn,
19220
+ DEPLOYMENT_INIT_VALUE as co,
19221
+ CRONJOB_INIT_VALUE as cp,
19222
+ DAEMONSET_INIT_VALUE as cq,
19223
+ JOB_INIT_VALUE as cr,
19224
+ STATEFULSET_INIT_VALUE as cs,
19225
+ POD_INIT_VALUE as ct,
19226
+ SERVICE_CLUSTER_IP_INIT_VALUE as cu,
19227
+ SERVICE_NODE_PORT_INIT_VALUE as cv,
19228
+ SERVICE_LOAD_BALANCER_INIT_VALUE as cw,
19229
+ SERVICE_EXTERNAL_NAME_INIT_VALUE as cx,
19230
+ SERVICE_HEADLESS_INIT_VALUE as cy,
19231
+ INGRESS_INIT_VALUE as cz,
19147
19232
  dovetailRefineI18n as d,
19148
- ReplicaSetModel as d0,
19149
- CronJobModel as d1,
19150
- EventModel as d2,
19151
- DeploymentModel as d3,
19152
- DaemonSetModel as d4,
19153
- StatefulSetModel as d5,
19154
- ServiceTypeEnum as d6,
19155
- ServiceModel as d7,
19156
- NodeRole as d8,
19157
- NodeModel as d9,
19158
- StorageClassModel as da,
19159
- PersistentVolumeModel as db,
19160
- PersistentVolumeClaimModel as dc,
19161
- ProviderPlugins as dd,
19162
- ModelPlugin as de,
19163
- modelPlugin as df,
19164
- RelationPlugin as dg,
19165
- relationPlugin as dh,
19166
- generateValueFromSchema as di,
19167
- generateSchemaTypeValue as dj,
19168
- resolveRef as dk,
19169
- getApiVersion as dl,
19170
- pruneBeforeEdit as dm,
19171
- matchSelector as dn,
19172
- getResourceNameByKind as dp,
19173
- validateDnsSubdomain as dq,
19174
- validateResourceName as dr,
19175
- validateRfc1123Name as ds,
19176
- ValidateRfc1035Name as dt,
19177
- validateLabelKey as du,
19178
- validateLabelValue as dv,
19179
- validatePort as dw,
19180
- validateNodePort as dx,
19233
+ WorkloadBaseModel as d0,
19234
+ PodModel as d1,
19235
+ PodMetricsModel as d2,
19236
+ ResourceModel as d3,
19237
+ ReplicaSetModel as d4,
19238
+ CronJobModel as d5,
19239
+ EventModel as d6,
19240
+ DeploymentModel as d7,
19241
+ DaemonSetModel as d8,
19242
+ StatefulSetModel as d9,
19243
+ validateDataKey as dA,
19244
+ validatePort as dB,
19245
+ validateNodePort as dC,
19246
+ ServiceTypeEnum as da,
19247
+ ServiceModel as db,
19248
+ NodeRole as dc,
19249
+ NodeModel as dd,
19250
+ StorageClassModel as de,
19251
+ PersistentVolumeModel as df,
19252
+ PersistentVolumeClaimModel as dg,
19253
+ ProviderPlugins as dh,
19254
+ ModelPlugin as di,
19255
+ modelPlugin as dj,
19256
+ RelationPlugin as dk,
19257
+ relationPlugin as dl,
19258
+ generateValueFromSchema as dm,
19259
+ generateSchemaTypeValue as dn,
19260
+ resolveRef as dp,
19261
+ getApiVersion as dq,
19262
+ pruneBeforeEdit as dr,
19263
+ matchSelector as ds,
19264
+ getResourceNameByKind as dt,
19265
+ validateResourceName as du,
19266
+ validateRfc1123Name as dv,
19267
+ ValidateRfc1035Name as dw,
19268
+ validateDnsSubdomainName as dx,
19269
+ validateLabelKey as dy,
19270
+ validateLabelValue as dz,
19181
19271
  useDeleteModalOnly as e,
19182
19272
  useFailedModal as f,
19183
19273
  NameSpaceColumnRenderer as g,