@pisell/materials 1.0.604 → 1.0.606

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.
Files changed (84) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +7 -7
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +26 -26
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +21 -21
  11. package/es/components/appVersionControl/index.js +49 -52
  12. package/es/components/appVersionControl/index.less +2 -4
  13. package/es/components/appVersionControl/types.d.ts +4 -1
  14. package/es/components/appVersionControl/utils.d.ts +13 -0
  15. package/es/components/appVersionControl/utils.js +30 -0
  16. package/es/components/customSelect/index.d.ts +2 -2
  17. package/es/components/customSelect/index.js +8 -2
  18. package/es/components/dataSourceComponents/dataSourceForm/utils.js +6 -9
  19. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +4 -4
  20. package/es/components/dataSourceComponents/fields/Input.Subdomain/WithMode.js +4 -2
  21. package/es/components/versionModal/index.d.ts +7 -0
  22. package/es/components/versionModal/index.js +36 -9
  23. package/es/components/versionSelect/index.d.ts +18 -0
  24. package/es/components/versionSelect/index.js +53 -0
  25. package/es/components/versionSelect/index.less +3 -0
  26. package/es/locales/en-US.d.ts +2 -0
  27. package/es/locales/en-US.js +3 -1
  28. package/es/locales/zh-CN.d.ts +2 -0
  29. package/es/locales/zh-CN.js +3 -1
  30. package/es/locales/zh-TW.d.ts +2 -0
  31. package/es/locales/zh-TW.js +3 -1
  32. package/lib/components/appVersionControl/index.js +26 -46
  33. package/lib/components/appVersionControl/index.less +2 -4
  34. package/lib/components/appVersionControl/types.d.ts +4 -1
  35. package/lib/components/appVersionControl/utils.d.ts +13 -0
  36. package/lib/components/appVersionControl/utils.js +52 -0
  37. package/lib/components/customSelect/index.d.ts +2 -2
  38. package/lib/components/customSelect/index.js +1 -0
  39. package/lib/components/dataSourceComponents/dataSourceForm/utils.js +0 -6
  40. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +4 -4
  41. package/lib/components/dataSourceComponents/fields/Input.Subdomain/WithMode.js +2 -2
  42. package/lib/components/versionModal/index.d.ts +7 -0
  43. package/lib/components/versionModal/index.js +33 -8
  44. package/lib/components/versionSelect/index.d.ts +18 -0
  45. package/lib/components/versionSelect/index.js +91 -0
  46. package/lib/components/versionSelect/index.less +3 -0
  47. package/lib/locales/en-US.d.ts +2 -0
  48. package/lib/locales/en-US.js +3 -1
  49. package/lib/locales/zh-CN.d.ts +2 -0
  50. package/lib/locales/zh-CN.js +3 -1
  51. package/lib/locales/zh-TW.d.ts +2 -0
  52. package/lib/locales/zh-TW.js +3 -1
  53. package/lowcode/data-source-form/meta.ts +1 -1
  54. package/lowcode/data-source-image/meta.ts +1 -1
  55. package/lowcode/data-source-menu/meta.ts +1 -1
  56. package/lowcode/data-source-qrcode/meta.ts +1 -1
  57. package/lowcode/data-source-table/meta.ts +1 -1
  58. package/lowcode/data-source-typography.text/meta.ts +1 -1
  59. package/lowcode/data-source-wrapper/meta.ts +1 -1
  60. package/lowcode/form-group/meta.ts +1 -1
  61. package/lowcode/form-item-checkbox/meta.ts +1 -1
  62. package/lowcode/form-item-checkbox.group/meta.ts +1 -1
  63. package/lowcode/form-item-color-picker/meta.ts +1 -1
  64. package/lowcode/form-item-date-picker/meta.ts +1 -1
  65. package/lowcode/form-item-icon-select/meta.ts +1 -1
  66. package/lowcode/form-item-input/meta.ts +1 -1
  67. package/lowcode/form-item-input-number/meta.ts +1 -1
  68. package/lowcode/form-item-input.email/meta.ts +1 -1
  69. package/lowcode/form-item-input.json/meta.ts +1 -1
  70. package/lowcode/form-item-input.mobile/meta.ts +1 -1
  71. package/lowcode/form-item-input.password/meta.ts +1 -1
  72. package/lowcode/form-item-input.phone/meta.ts +1 -1
  73. package/lowcode/form-item-input.subdomain/meta.ts +1 -1
  74. package/lowcode/form-item-input.text-area/meta.ts +1 -1
  75. package/lowcode/form-item-input.url/meta.ts +1 -1
  76. package/lowcode/form-item-radio/meta.ts +1 -1
  77. package/lowcode/form-item-radio.group/meta.ts +1 -1
  78. package/lowcode/form-item-select/meta.ts +1 -1
  79. package/lowcode/form-item-time-picker/meta.ts +1 -1
  80. package/lowcode/form-item-translation/meta.ts +1 -1
  81. package/lowcode/form-item-upload/meta.ts +1 -1
  82. package/lowcode/json-wrapper/meta.ts +1 -1
  83. package/lowcode/submit-button/meta.ts +1 -1
  84. package/package.json +2 -2
@@ -240,6 +240,7 @@ export default {
240
240
  'pisell-version-modal-describe-update-notes': '描述此版本的主要更改...',
241
241
  'pisell-version-modal-version-error': '版本號必須大於當前版本',
242
242
  'pisell-version-modal-version-required': '版本號為必填項',
243
+ 'pisell-version-modal-based-on-version': '基於版本',
243
244
  // 图标选择组件
244
245
  'pisell-icon-select-placeholder': '選擇圖標',
245
246
  'pisell-icon-select-outlined': '線框風格',
@@ -266,5 +267,6 @@ export default {
266
267
  },
267
268
  'pisell-lowcode-app-version-control-promote-version-describe': '發布版本後,該版本將無法再進行修改',
268
269
  'pisell-lowcode-app-version-control-promote-version-ok': '發布',
269
- 'pisell-lowcode-app-version-control-promote-version-cancel': '取消'
270
+ 'pisell-lowcode-app-version-control-promote-version-cancel': '取消',
271
+ 'pisell-lowcode-app-version-control-version-exists': '版本已存在'
270
272
  };
@@ -35,33 +35,16 @@ module.exports = __toCommonJS(appVersionControl_exports);
35
35
  var import_classnames = __toESM(require("classnames"));
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_button = __toESM(require("../button"));
38
- var import_customSelect = __toESM(require("../customSelect"));
39
38
  var import_pisellCard = __toESM(require("../pisellCard"));
40
39
  var import_pisellModal = __toESM(require("../pisellModal"));
41
40
  var import_pisellAvatar = __toESM(require("../pisellAvatar"));
42
41
  var import_icon = __toESM(require("../icon"));
43
- var import_pisellRow = __toESM(require("../pisellRow"));
44
- var import_pisellTags = __toESM(require("../pisellTags"));
45
42
  var import_versionModal = __toESM(require("../versionModal"));
43
+ var import_versionSelect = __toESM(require("../versionSelect"));
44
+ var import_pisellToast = __toESM(require("../pisellToast"));
46
45
  var import_locales = require("../../locales");
46
+ var import_utils = require("./utils");
47
47
  var import_index = require("./index.less");
48
- var getStatusColor = (status) => {
49
- if (status === "live")
50
- return "success";
51
- if (status === "draft")
52
- return "warning";
53
- if (status === "deprecated")
54
- return "error";
55
- return "gray";
56
- };
57
- var getStatusText = (status) => {
58
- if (status === "live")
59
- return (0, import_locales.getText)("pisell-lowcode-app-version-control-live");
60
- if (status === "draft")
61
- return (0, import_locales.getText)("pisell-lowcode-app-version-control-draft");
62
- if (status === "deprecated")
63
- return (0, import_locales.getText)("pisell-lowcode-app-version-control-deprecated");
64
- };
65
48
  var AppVersionControl = (props) => {
66
49
  const {
67
50
  value,
@@ -81,9 +64,8 @@ var AppVersionControl = (props) => {
81
64
  const currentVersion = (0, import_react.useMemo)(() => {
82
65
  return versions.find((v) => v.value === value);
83
66
  }, [value, versions]);
84
- const liveVersion = (0, import_react.useMemo)(() => {
85
- var _a;
86
- return (_a = versions.find((v) => v.status === "live")) == null ? void 0 : _a.version;
67
+ const maxVersion = (0, import_react.useMemo)(() => {
68
+ return (0, import_utils.getMaxVersion)(versions.map((v) => v.version));
87
69
  }, [versions]);
88
70
  const handlePromoteToLive = async () => {
89
71
  setPromoteLoading(true);
@@ -98,8 +80,20 @@ var AppVersionControl = (props) => {
98
80
  };
99
81
  const handlePublishVersion = async (data) => {
100
82
  setPublishLoading(true);
83
+ if (data.versionType === "custom") {
84
+ const version = versions.find((v) => v.version === data.version);
85
+ if (version) {
86
+ setPublishLoading(false);
87
+ return (0, import_pisellToast.default)({
88
+ content: (0, import_locales.getText)("pisell-lowcode-app-version-control-version-exists")
89
+ });
90
+ }
91
+ }
101
92
  try {
102
- await (onCreateVersion == null ? void 0 : onCreateVersion(data.version));
93
+ await (onCreateVersion == null ? void 0 : onCreateVersion({
94
+ version: data.version,
95
+ baseVersion: data.baseVersion || ""
96
+ }));
103
97
  setPublishVersionModal(false);
104
98
  } catch (error) {
105
99
  console.error("Failed to create version:", error);
@@ -137,28 +131,11 @@ var AppVersionControl = (props) => {
137
131
  ),
138
132
  /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode-app-version-control-title" }, currentVersion == null ? void 0 : currentVersion.label),
139
133
  /* @__PURE__ */ import_react.default.createElement(
140
- import_customSelect.default,
134
+ import_versionSelect.default,
141
135
  {
142
- options: versions,
136
+ versions,
143
137
  value,
144
- size: "large",
145
- onChange: handleVersionChange,
146
- style: { width: "100%" },
147
- renderItem: (option) => /* @__PURE__ */ import_react.default.createElement(
148
- import_pisellRow.default,
149
- {
150
- leftContent: option.label,
151
- rightContent: /* @__PURE__ */ import_react.default.createElement(
152
- import_pisellTags.default,
153
- {
154
- type: "pill_color",
155
- color: getStatusColor(option.status),
156
- className: "pisell-lowcode-app-version-control-tag"
157
- },
158
- getStatusText(option.status)
159
- )
160
- }
161
- )
138
+ onChange: handleVersionChange
162
139
  }
163
140
  ),
164
141
  allowCreate && /* @__PURE__ */ import_react.default.createElement(
@@ -196,12 +173,15 @@ var AppVersionControl = (props) => {
196
173
  ), /* @__PURE__ */ import_react.default.createElement(
197
174
  import_versionModal.default,
198
175
  {
199
- currentVersion: liveVersion || "",
176
+ currentVersion: maxVersion || "",
200
177
  visible: publishVersionModal,
201
178
  onCancel: () => setPublishVersionModal(false),
202
179
  onConfirm: handlePublishVersion,
203
180
  isShowNote: false,
204
- confirmLoading: publishLoading
181
+ confirmLoading: publishLoading,
182
+ versions,
183
+ isShowBasedOn: true,
184
+ isValidateVersion: false
205
185
  }
206
186
  ));
207
187
  };
@@ -1,5 +1,6 @@
1
1
  .pisell-lowcode-app-version-control {
2
2
  background-color: #fff;
3
+ cursor: default;
3
4
  .pisell-lowcode-card-body {
4
5
  display: flex;
5
6
  flex-direction: column;
@@ -28,7 +29,4 @@
28
29
  &:hover {
29
30
  background: #fff !important;
30
31
  }
31
- }
32
- .pisell-lowcode-app-version-control-tag {
33
- line-height: 20px;
34
- }
32
+ }
@@ -11,7 +11,10 @@ export interface AppVersionControlProps {
11
11
  value: string;
12
12
  versions: Version[];
13
13
  onVersionChange: (value: string, version: Version) => void;
14
- onCreateVersion: (version: string) => Promise<boolean | undefined>;
14
+ onCreateVersion: (detail: {
15
+ version: string;
16
+ baseVersion: string;
17
+ }) => Promise<boolean | undefined>;
15
18
  onPromoteToLive: (value: string, version: Version) => Promise<boolean | undefined>;
16
19
  allowPublish?: boolean;
17
20
  allowCreate?: boolean;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 比较两个版本号
3
+ * @param version1 版本号1
4
+ * @param version2 版本号2
5
+ * @returns 如果version1大于version2返回1,相等返回0,小于返回-1
6
+ */
7
+ export declare const compareVersions: (version1: string, version2: string) => number;
8
+ /**
9
+ * 从版本号列表中获取最大版本号
10
+ * @param versions 版本号列表
11
+ * @returns 最大的版本号,如果列表为空返回undefined
12
+ */
13
+ export declare const getMaxVersion: (versions: string[]) => string | undefined;
@@ -0,0 +1,52 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/components/appVersionControl/utils.ts
20
+ var utils_exports = {};
21
+ __export(utils_exports, {
22
+ compareVersions: () => compareVersions,
23
+ getMaxVersion: () => getMaxVersion
24
+ });
25
+ module.exports = __toCommonJS(utils_exports);
26
+ var compareVersions = (version1, version2) => {
27
+ const v1Parts = version1.split(".").map(Number);
28
+ const v2Parts = version2.split(".").map(Number);
29
+ for (let i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) {
30
+ const v1Part = v1Parts[i] || 0;
31
+ const v2Part = v2Parts[i] || 0;
32
+ if (v1Part > v2Part)
33
+ return 1;
34
+ if (v1Part < v2Part)
35
+ return -1;
36
+ }
37
+ return 0;
38
+ };
39
+ var getMaxVersion = (versions) => {
40
+ if (!versions || versions.length === 0)
41
+ return void 0;
42
+ return versions.reduce((max, current) => {
43
+ if (!max)
44
+ return current;
45
+ return compareVersions(current, max) > 0 ? current : max;
46
+ }, versions[0]);
47
+ };
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ compareVersions,
51
+ getMaxVersion
52
+ });
@@ -7,8 +7,8 @@ export interface BaseOption {
7
7
  }
8
8
  export interface CustomSelectProps<T extends BaseOption> extends Omit<SelectProps<T['value']>, 'options' | 'value' | 'onChange'> {
9
9
  options: T[];
10
- value: T['value'];
11
- onChange: (value: T['value']) => void;
10
+ value?: T['value'];
11
+ onChange?: (value: T['value']) => void;
12
12
  renderItem?: (option: T) => React.ReactNode;
13
13
  className?: string;
14
14
  style?: React.CSSProperties;
@@ -40,6 +40,7 @@ var CustomSelect = (props) => {
40
40
  const { options: propsOptions, value, onChange, renderItem } = props;
41
41
  const options = (0, import_react.useMemo)(() => {
42
42
  return propsOptions.map((option) => ({
43
+ ...option,
43
44
  label: renderItem ? renderItem(option) : option.label,
44
45
  value: option.value
45
46
  }));
@@ -182,7 +182,6 @@ var withFormItem = (WrappedComponent, overlayProps) => {
182
182
  break;
183
183
  case "phone":
184
184
  rules.push({
185
- ...typeobj,
186
185
  validator: (_, value) => {
187
186
  if (!(value == null ? void 0 : value.trim())) {
188
187
  return Promise.resolve();
@@ -210,7 +209,6 @@ var withFormItem = (WrappedComponent, overlayProps) => {
210
209
  break;
211
210
  case "mobile":
212
211
  rules.push({
213
- ...typeobj,
214
212
  validator: (_, value) => {
215
213
  if (!(value == null ? void 0 : value.trim())) {
216
214
  return Promise.resolve();
@@ -259,14 +257,10 @@ var withFormItem = (WrappedComponent, overlayProps) => {
259
257
  break;
260
258
  case "subdomain":
261
259
  rules.push({
262
- ...typeobj,
263
260
  validator: (_, value) => {
264
261
  if (!value)
265
262
  return Promise.resolve();
266
263
  const subdomain = value.split(".")[0];
267
- if (!subdomain) {
268
- return Promise.resolve();
269
- }
270
264
  if (!/^[a-z0-9-]+$/.test(subdomain)) {
271
265
  return Promise.reject(
272
266
  new Error((0, import_locales.getText)("subdomain-error-pattern"))
@@ -17,7 +17,7 @@ interface UseTablePropsProps {
17
17
  * @returns
18
18
  */
19
19
  declare const useTableProps: (props: UseTablePropsProps) => {
20
- title: number | boolean | Iterable<React.ReactNode> | React.JSX.Element | (() => React.ReactNode) | null | undefined;
20
+ title: number | boolean | React.JSX.Element | Iterable<React.ReactNode> | (() => React.ReactNode) | null | undefined;
21
21
  pagination: {
22
22
  total: number;
23
23
  current: number;
@@ -26,7 +26,7 @@ declare const useTableProps: (props: UseTablePropsProps) => {
26
26
  showSizeChanger: boolean;
27
27
  };
28
28
  columns: import("./useColumns").Column[];
29
- subTitle: number | boolean | Iterable<React.ReactNode> | React.JSX.Element | (() => React.ReactNode) | null | undefined;
29
+ subTitle: number | boolean | React.JSX.Element | Iterable<React.ReactNode> | (() => React.ReactNode) | null | undefined;
30
30
  buttons: any[] | null;
31
31
  filter: React.JSX.Element | null;
32
32
  onRow: (record: any) => any;
@@ -47,7 +47,7 @@ declare const useTableProps: (props: UseTablePropsProps) => {
47
47
  width: number;
48
48
  align: "center" | "left" | "right";
49
49
  fixed: false | "left" | "right";
50
- type: "button" | "link";
50
+ type: "link" | "button";
51
51
  items: OperationItem[];
52
52
  } | undefined;
53
53
  operationContent?: {
@@ -65,7 +65,7 @@ declare const useTableProps: (props: UseTablePropsProps) => {
65
65
  useCustomAction: boolean;
66
66
  actionType: string;
67
67
  openMode: "modal" | "drawer";
68
- openContentSize: "small" | "middle" | "large";
68
+ openContentSize: "small" | "large" | "middle";
69
69
  openTitle: string;
70
70
  key: string;
71
71
  } | undefined;
@@ -132,7 +132,7 @@ var Subdomain = (props) => {
132
132
  const inputValue = e.target.value.toLowerCase();
133
133
  const { subdomain: newSubdomain } = parseExternalValue(inputValue);
134
134
  setSubdomain(newSubdomain);
135
- propsOnChange == null ? void 0 : propsOnChange(newSubdomain + suffix);
135
+ propsOnChange == null ? void 0 : propsOnChange(newSubdomain ? newSubdomain + suffix : "");
136
136
  } catch (error) {
137
137
  console.error("Error handling change:", error);
138
138
  }
@@ -140,7 +140,7 @@ var Subdomain = (props) => {
140
140
  const onBlur = (0, import_react.useCallback)((e) => {
141
141
  try {
142
142
  propsOnBlur == null ? void 0 : propsOnBlur(e);
143
- propsOnChange == null ? void 0 : propsOnChange(subdomain + suffix);
143
+ propsOnChange == null ? void 0 : propsOnChange(subdomain ? subdomain + suffix : "");
144
144
  } catch (error) {
145
145
  console.error("Error handling blur:", error);
146
146
  }
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { Version } from '../versionSelect';
2
3
  import './index.less';
3
4
  interface PublishVersionModalProps {
4
5
  visible: boolean;
@@ -7,10 +8,16 @@ interface PublishVersionModalProps {
7
8
  onConfirm: (data: VersionData) => void;
8
9
  isShowNote?: boolean;
9
10
  confirmLoading?: boolean;
11
+ versions?: Version[];
12
+ isShowBasedOn?: boolean;
13
+ isShowCurrentVersion?: boolean;
14
+ isValidateVersion?: boolean;
10
15
  }
11
16
  interface VersionData {
12
17
  version: string;
13
18
  note: string;
19
+ baseVersion?: string;
20
+ versionType?: string;
14
21
  }
15
22
  declare const PublishVersionModal: React.FC<PublishVersionModalProps>;
16
23
  export default PublishVersionModal;
@@ -35,6 +35,7 @@ module.exports = __toCommonJS(versionModal_exports);
35
35
  var import_react = __toESM(require("react"));
36
36
  var import_antd = require("antd");
37
37
  var import_pisellModal = __toESM(require("../pisellModal"));
38
+ var import_versionSelect = __toESM(require("../versionSelect"));
38
39
  var import_locales = require("../../locales");
39
40
  var import_index = require("./index.less");
40
41
  var style = {
@@ -70,20 +71,26 @@ var PublishVersionModal = ({
70
71
  currentVersion = "1.0.0",
71
72
  onCancel,
72
73
  onConfirm,
73
- isShowNote = true,
74
- confirmLoading = false
74
+ isShowNote,
75
+ confirmLoading = false,
76
+ versions = [],
77
+ isShowBasedOn,
78
+ isShowCurrentVersion,
79
+ isValidateVersion = true
75
80
  }) => {
76
81
  const [form] = import_antd.Form.useForm();
77
- const [versionType, setVersionType] = (0, import_react.useState)("patch");
82
+ const [versionType, setVersionType] = (0, import_react.useState)("");
78
83
  const { patch, minor, major } = getNextVersions(currentVersion);
79
84
  const handleVersionChange = (e) => {
80
85
  setVersionType(e.target.value);
81
86
  };
82
87
  const handleSubmit = () => {
83
88
  form.validateFields().then((values) => {
84
- let { version, note } = values;
89
+ let { version, note, baseVersion } = values;
90
+ let versionType2 = "";
85
91
  if (version === "custom") {
86
- if (!isVersionValid(
92
+ versionType2 = "custom";
93
+ if (isValidateVersion && !isVersionValid(
87
94
  `${values.major}.${values.minor}.${values.patch}`,
88
95
  currentVersion
89
96
  )) {
@@ -92,16 +99,18 @@ var PublishVersionModal = ({
92
99
  }
93
100
  version = `${values.major}.${values.minor}.${values.patch}`;
94
101
  }
95
- onConfirm({ version, note });
102
+ onConfirm({ version, note, baseVersion, versionType: versionType2 });
96
103
  });
97
104
  };
98
105
  (0, import_react.useEffect)(() => {
99
106
  if (visible) {
107
+ setVersionType("");
100
108
  form.setFieldsValue({
101
109
  version: patch,
102
110
  major: parseVersion(patch)[0] || 0,
103
111
  minor: parseVersion(patch)[1] || 0,
104
- patch: parseVersion(patch)[2] || 0
112
+ patch: parseVersion(patch)[2] || 0,
113
+ baseVersion: currentVersion
105
114
  });
106
115
  }
107
116
  }, [visible]);
@@ -125,7 +134,23 @@ var PublishVersionModal = ({
125
134
  preserve: false,
126
135
  className: "pisell-lowcode-version-modal-form"
127
136
  },
128
- /* @__PURE__ */ import_react.default.createElement("p", null, (0, import_locales.getText)("pisell-version-modal-current-version"), ": ", currentVersion),
137
+ isShowCurrentVersion && /* @__PURE__ */ import_react.default.createElement("p", null, (0, import_locales.getText)("pisell-version-modal-current-version"), ": ", currentVersion),
138
+ isShowBasedOn && /* @__PURE__ */ import_react.default.createElement(
139
+ import_antd.Form.Item,
140
+ {
141
+ label: (0, import_locales.getText)("pisell-version-modal-based-on-version"),
142
+ name: "baseVersion",
143
+ initialValue: currentVersion,
144
+ rules: [{ required: true }]
145
+ },
146
+ /* @__PURE__ */ import_react.default.createElement(
147
+ import_versionSelect.default,
148
+ {
149
+ versions,
150
+ fieldNames: { label: "label", value: "version", options: "options" }
151
+ }
152
+ )
153
+ ),
129
154
  /* @__PURE__ */ import_react.default.createElement(
130
155
  import_antd.Form.Item,
131
156
  {
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { SelectProps } from 'antd';
3
+ import './index.less';
4
+ export interface Version {
5
+ id: string;
6
+ label: string;
7
+ value: string;
8
+ status: 'live' | 'draft' | 'deprecated';
9
+ version: string;
10
+ avatar?: string;
11
+ }
12
+ interface VersionSelectProps extends Omit<SelectProps<string>, 'onChange' | 'options'> {
13
+ versions: Version[];
14
+ value?: string;
15
+ onChange?: (value: string, version: Version) => void;
16
+ }
17
+ declare const VersionSelect: (props: VersionSelectProps) => React.JSX.Element;
18
+ export default VersionSelect;
@@ -0,0 +1,91 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/versionSelect/index.tsx
30
+ var versionSelect_exports = {};
31
+ __export(versionSelect_exports, {
32
+ default: () => versionSelect_default
33
+ });
34
+ module.exports = __toCommonJS(versionSelect_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_customSelect = __toESM(require("../customSelect"));
37
+ var import_pisellRow = __toESM(require("../pisellRow"));
38
+ var import_pisellTags = __toESM(require("../pisellTags"));
39
+ var import_locales = require("../../locales");
40
+ var import_index = require("./index.less");
41
+ var getStatusColor = (status) => {
42
+ if (status === "live")
43
+ return "success";
44
+ if (status === "draft")
45
+ return "warning";
46
+ if (status === "deprecated")
47
+ return "error";
48
+ return "gray";
49
+ };
50
+ var getStatusText = (status) => {
51
+ if (status === "live")
52
+ return (0, import_locales.getText)("pisell-lowcode-app-version-control-live");
53
+ if (status === "draft")
54
+ return (0, import_locales.getText)("pisell-lowcode-app-version-control-draft");
55
+ if (status === "deprecated")
56
+ return (0, import_locales.getText)("pisell-lowcode-app-version-control-deprecated");
57
+ };
58
+ var VersionSelect = (props) => {
59
+ const { versions, value, onChange, ...rest } = props;
60
+ const handleVersionChange = (value2) => {
61
+ const version = versions.find((v) => v.value === value2);
62
+ onChange == null ? void 0 : onChange(value2, version);
63
+ };
64
+ return /* @__PURE__ */ import_react.default.createElement(
65
+ import_customSelect.default,
66
+ {
67
+ ...rest,
68
+ options: versions,
69
+ value,
70
+ size: "large",
71
+ onChange: handleVersionChange,
72
+ style: { width: "100%" },
73
+ renderItem: (option) => /* @__PURE__ */ import_react.default.createElement(
74
+ import_pisellRow.default,
75
+ {
76
+ leftContent: option.label,
77
+ rightContent: /* @__PURE__ */ import_react.default.createElement(
78
+ import_pisellTags.default,
79
+ {
80
+ type: "pill_color",
81
+ color: getStatusColor(option.status),
82
+ className: "pisell-lowcode-version-select-tag"
83
+ },
84
+ getStatusText(option.status)
85
+ )
86
+ }
87
+ )
88
+ }
89
+ );
90
+ };
91
+ var versionSelect_default = VersionSelect;
@@ -0,0 +1,3 @@
1
+ .pisell-lowcode-version-select-tag {
2
+ line-height: 20px;
3
+ }
@@ -189,6 +189,7 @@ declare const _default: {
189
189
  'pisell-version-modal-describe-update-notes': string;
190
190
  'pisell-version-modal-version-error': string;
191
191
  'pisell-version-modal-version-required': string;
192
+ 'pisell-version-modal-based-on-version': string;
192
193
  'pisell-icon-select-outlined': string;
193
194
  'pisell-icon-select-filled': string;
194
195
  'pisell-icon-select-two-tone': string;
@@ -211,5 +212,6 @@ declare const _default: {
211
212
  'pisell-lowcode-app-version-control-promote-version-describe': string;
212
213
  'pisell-lowcode-app-version-control-promote-version-ok': string;
213
214
  'pisell-lowcode-app-version-control-promote-version-cancel': string;
215
+ 'pisell-lowcode-app-version-control-version-exists': string;
214
216
  };
215
217
  export default _default;
@@ -231,6 +231,7 @@ var en_US_default = {
231
231
  "pisell-version-modal-describe-update-notes": "Describe the main changes in this version...",
232
232
  "pisell-version-modal-version-error": "Version number must be greater than the current version",
233
233
  "pisell-version-modal-version-required": "Version number is required",
234
+ "pisell-version-modal-based-on-version": "Based on version",
234
235
  // 图标选择组件
235
236
  "pisell-icon-select-outlined": "Outlined",
236
237
  "pisell-icon-select-filled": "Filled",
@@ -255,5 +256,6 @@ var en_US_default = {
255
256
  "pisell-lowcode-app-version-control-promote-version": (version) => `Promote version ${version || ""}?`,
256
257
  "pisell-lowcode-app-version-control-promote-version-describe": "Promoting this version will lock it further changes",
257
258
  "pisell-lowcode-app-version-control-promote-version-ok": "Promote",
258
- "pisell-lowcode-app-version-control-promote-version-cancel": "Cancel"
259
+ "pisell-lowcode-app-version-control-promote-version-cancel": "Cancel",
260
+ "pisell-lowcode-app-version-control-version-exists": "Version already exists"
259
261
  };
@@ -189,6 +189,7 @@ declare const _default: {
189
189
  'pisell-version-modal-describe-update-notes': string;
190
190
  'pisell-version-modal-version-error': string;
191
191
  'pisell-version-modal-version-required': string;
192
+ 'pisell-version-modal-based-on-version': string;
192
193
  'pisell-icon-select-outlined': string;
193
194
  'pisell-icon-select-filled': string;
194
195
  'pisell-icon-select-two-tone': string;
@@ -210,5 +211,6 @@ declare const _default: {
210
211
  'pisell-lowcode-app-version-control-promote-version-describe': string;
211
212
  'pisell-lowcode-app-version-control-promote-version-ok': string;
212
213
  'pisell-lowcode-app-version-control-promote-version-cancel': string;
214
+ 'pisell-lowcode-app-version-control-version-exists': string;
213
215
  };
214
216
  export default _default;
@@ -230,6 +230,7 @@ var zh_CN_default = {
230
230
  "pisell-version-modal-describe-update-notes": "描述此版本的主要更改...",
231
231
  "pisell-version-modal-version-error": "版本号必须大于当前版本",
232
232
  "pisell-version-modal-version-required": "版本号为必填项",
233
+ "pisell-version-modal-based-on-version": "基于版本",
233
234
  "pisell-icon-select-outlined": "线框风格",
234
235
  "pisell-icon-select-filled": "实底风格",
235
236
  "pisell-icon-select-two-tone": "双色风格",
@@ -252,5 +253,6 @@ var zh_CN_default = {
252
253
  "pisell-lowcode-app-version-control-promote-version": (version) => `发布版本 ${version || ""}?`,
253
254
  "pisell-lowcode-app-version-control-promote-version-describe": "发布版本后,该版本将无法再进行修改",
254
255
  "pisell-lowcode-app-version-control-promote-version-ok": "发布",
255
- "pisell-lowcode-app-version-control-promote-version-cancel": "取消"
256
+ "pisell-lowcode-app-version-control-promote-version-cancel": "取消",
257
+ "pisell-lowcode-app-version-control-version-exists": "版本已存在"
256
258
  };
@@ -188,6 +188,7 @@ declare const _default: {
188
188
  'pisell-version-modal-describe-update-notes': string;
189
189
  'pisell-version-modal-version-error': string;
190
190
  'pisell-version-modal-version-required': string;
191
+ 'pisell-version-modal-based-on-version': string;
191
192
  'pisell-icon-select-placeholder': string;
192
193
  'pisell-icon-select-outlined': string;
193
194
  'pisell-icon-select-filled': string;
@@ -210,5 +211,6 @@ declare const _default: {
210
211
  'pisell-lowcode-app-version-control-promote-version-describe': string;
211
212
  'pisell-lowcode-app-version-control-promote-version-ok': string;
212
213
  'pisell-lowcode-app-version-control-promote-version-cancel': string;
214
+ 'pisell-lowcode-app-version-control-version-exists': string;
213
215
  };
214
216
  export default _default;
@@ -230,6 +230,7 @@ var zh_TW_default = {
230
230
  "pisell-version-modal-describe-update-notes": "描述此版本的主要更改...",
231
231
  "pisell-version-modal-version-error": "版本號必須大於當前版本",
232
232
  "pisell-version-modal-version-required": "版本號為必填項",
233
+ "pisell-version-modal-based-on-version": "基於版本",
233
234
  // 图标选择组件
234
235
  "pisell-icon-select-placeholder": "選擇圖標",
235
236
  "pisell-icon-select-outlined": "線框風格",
@@ -254,5 +255,6 @@ var zh_TW_default = {
254
255
  "pisell-lowcode-app-version-control-promote-version": (version) => `發布版本 ${version || ""}?`,
255
256
  "pisell-lowcode-app-version-control-promote-version-describe": "發布版本後,該版本將無法再進行修改",
256
257
  "pisell-lowcode-app-version-control-promote-version-ok": "發布",
257
- "pisell-lowcode-app-version-control-promote-version-cancel": "取消"
258
+ "pisell-lowcode-app-version-control-promote-version-cancel": "取消",
259
+ "pisell-lowcode-app-version-control-version-exists": "版本已存在"
258
260
  };