@pisell/private-materials 3.4.43 → 3.4.44

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 (131) 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 +9 -1
  6. package/build/lowcode/preview.js +149 -149
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +8 -8
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +8 -8
  11. package/es/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
  12. package/es/components/appointmentBooking/components/Cart/Item/index.js +3 -2
  13. package/es/components/appointmentBooking/components/ConfirmInformation/index.js +273 -76
  14. package/es/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  15. package/es/components/appointmentBooking/hooks.d.ts +1 -0
  16. package/es/components/appointmentBooking/hooks.js +30 -30
  17. package/es/components/appointmentBooking/locales.d.ts +3 -0
  18. package/es/components/appointmentBooking/locales.js +9 -6
  19. package/es/components/booking/components/customSelect/index.js +1 -1
  20. package/es/components/booking/components/footer/index.js +4 -1
  21. package/es/components/booking/components/footer/utils.js +75 -73
  22. package/es/components/booking/forms/footer.js +24 -10
  23. package/es/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
  24. package/es/components/booking/info/client/index.js +28 -13
  25. package/es/components/booking/info/clientVariant/hooks/useClientFn.js +16 -10
  26. package/es/components/booking/info/clientVariant/vertical/SelectDrawer.js +10 -2
  27. package/es/components/booking/info/clientVariant/vertical/index.js +1 -1
  28. package/es/components/booking/info/main.js +3 -2
  29. package/es/components/booking/info/model.js +5 -0
  30. package/es/components/booking/info2/index.js +3 -2
  31. package/es/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
  32. package/es/components/booking/info2/service/contactInfoMode/index.js +94 -0
  33. package/es/components/booking/locales.d.ts +6 -0
  34. package/es/components/booking/locales.js +12 -3
  35. package/es/components/booking/model.d.ts +4 -0
  36. package/es/components/booking/model.js +3 -0
  37. package/es/components/ticketBooking/components/ticketBooking/index.less +2 -1
  38. package/es/index.d.ts +2 -0
  39. package/es/index.js +3 -1
  40. package/es/plus/clientName/index.d.ts +4 -0
  41. package/es/plus/clientName/index.js +18 -0
  42. package/es/plus/clientName/index.less +10 -0
  43. package/es/plus/clientName/type.d.ts +13 -0
  44. package/es/plus/clientName/type.js +1 -0
  45. package/es/plus/clientName/utils.d.ts +2 -0
  46. package/es/plus/clientName/utils.js +18 -0
  47. package/es/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  48. package/es/plus/contactInfo/components/Avatar/index.js +30 -0
  49. package/es/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  50. package/es/plus/contactInfo/components/SwipeAction/index.js +360 -0
  51. package/es/plus/contactInfo/components/SwipeAction/index.less +74 -0
  52. package/es/plus/contactInfo/index.d.ts +6 -0
  53. package/es/plus/contactInfo/index.js +198 -0
  54. package/es/plus/contactInfo/index.less +621 -0
  55. package/es/plus/contactInfo/locales.d.ts +15 -0
  56. package/es/plus/contactInfo/locales.js +14 -0
  57. package/es/plus/contactInfo/types.d.ts +91 -0
  58. package/es/plus/contactInfo/types.js +1 -0
  59. package/es/plus/contactInfo/utils.d.ts +7 -0
  60. package/es/plus/contactInfo/utils.js +50 -0
  61. package/es/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
  62. package/es/plus/contactInfoModal/ContactInfoContent.js +74 -0
  63. package/es/plus/contactInfoModal/index.d.ts +41 -0
  64. package/es/plus/contactInfoModal/index.js +155 -0
  65. package/es/plus/contactInfoModal/index.less +19 -0
  66. package/es/plus/contactInfoModal/locales.d.ts +66 -0
  67. package/es/plus/contactInfoModal/locales.js +65 -0
  68. package/lib/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
  69. package/lib/components/appointmentBooking/components/Cart/Item/index.js +5 -3
  70. package/lib/components/appointmentBooking/components/ConfirmInformation/index.js +156 -13
  71. package/lib/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  72. package/lib/components/appointmentBooking/hooks.d.ts +1 -0
  73. package/lib/components/appointmentBooking/hooks.js +73 -35
  74. package/lib/components/appointmentBooking/locales.d.ts +3 -0
  75. package/lib/components/appointmentBooking/locales.js +6 -3
  76. package/lib/components/booking/components/customSelect/index.js +1 -1
  77. package/lib/components/booking/components/footer/index.js +4 -1
  78. package/lib/components/booking/components/footer/utils.js +93 -68
  79. package/lib/components/booking/forms/footer.js +29 -11
  80. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
  81. package/lib/components/booking/info/client/index.js +14 -1
  82. package/lib/components/booking/info/clientVariant/hooks/useClientFn.js +7 -2
  83. package/lib/components/booking/info/clientVariant/vertical/SelectDrawer.js +11 -4
  84. package/lib/components/booking/info/clientVariant/vertical/index.js +34 -17
  85. package/lib/components/booking/info/main.js +5 -4
  86. package/lib/components/booking/info/model.js +5 -0
  87. package/lib/components/booking/info2/index.js +5 -4
  88. package/lib/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
  89. package/lib/components/booking/info2/service/contactInfoMode/index.js +111 -0
  90. package/lib/components/booking/locales.d.ts +6 -0
  91. package/lib/components/booking/locales.js +12 -3
  92. package/lib/components/booking/model.d.ts +4 -0
  93. package/lib/components/booking/model.js +3 -0
  94. package/lib/components/ticketBooking/components/ticketBooking/index.less +2 -1
  95. package/lib/index.d.ts +2 -0
  96. package/lib/index.js +6 -0
  97. package/lib/plus/clientName/index.d.ts +4 -0
  98. package/lib/plus/clientName/index.js +53 -0
  99. package/lib/plus/clientName/index.less +10 -0
  100. package/lib/plus/clientName/type.d.ts +13 -0
  101. package/lib/plus/clientName/type.js +17 -0
  102. package/lib/plus/clientName/utils.d.ts +2 -0
  103. package/lib/plus/clientName/utils.js +43 -0
  104. package/lib/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  105. package/lib/plus/contactInfo/components/Avatar/index.js +56 -0
  106. package/lib/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  107. package/lib/plus/contactInfo/components/SwipeAction/index.js +373 -0
  108. package/lib/plus/contactInfo/components/SwipeAction/index.less +74 -0
  109. package/lib/plus/contactInfo/index.d.ts +6 -0
  110. package/lib/plus/contactInfo/index.js +226 -0
  111. package/lib/plus/contactInfo/index.less +621 -0
  112. package/lib/plus/contactInfo/locales.d.ts +15 -0
  113. package/lib/plus/contactInfo/locales.js +38 -0
  114. package/lib/plus/contactInfo/types.d.ts +91 -0
  115. package/lib/plus/contactInfo/types.js +17 -0
  116. package/lib/plus/contactInfo/utils.d.ts +7 -0
  117. package/lib/plus/contactInfo/utils.js +64 -0
  118. package/lib/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
  119. package/lib/plus/contactInfoModal/ContactInfoContent.js +129 -0
  120. package/lib/plus/contactInfoModal/index.d.ts +41 -0
  121. package/lib/plus/contactInfoModal/index.js +139 -0
  122. package/lib/plus/contactInfoModal/index.less +19 -0
  123. package/lib/plus/contactInfoModal/locales.d.ts +66 -0
  124. package/lib/plus/contactInfoModal/locales.js +89 -0
  125. package/lowcode/contact-info/fragments/cardStyle.ts +68 -0
  126. package/lowcode/contact-info/fragments/nameStyle.ts +33 -0
  127. package/lowcode/contact-info/fragments/pisellAvatar.ts +103 -0
  128. package/lowcode/contact-info/fragments/textStyle.ts +33 -0
  129. package/lowcode/contact-info/meta.ts +199 -0
  130. package/lowcode/contact-info-modal/meta.ts +98 -0
  131. package/package.json +4 -2
@@ -0,0 +1,91 @@
1
+ import React, { CSSProperties } from 'react';
2
+ /**
3
+ * 联系信息数据
4
+ */
5
+ export interface ContactInfoData {
6
+ first_name?: string;
7
+ last_name?: string;
8
+ phone?: {
9
+ phone: string;
10
+ country_calling_code: string;
11
+ country_code?: string;
12
+ };
13
+ email?: string;
14
+ avatar?: string;
15
+ }
16
+ /**
17
+ * 卡片布局类型
18
+ */
19
+ export declare type Direction = 'horizontal' | 'vertical';
20
+ /**
21
+ * 头像尺寸类型
22
+ */
23
+ export declare type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
24
+ /**
25
+ * 头像形状类型
26
+ */
27
+ export declare type AvatarShape = 'circle' | 'square';
28
+ /**
29
+ * 头像配置
30
+ */
31
+ export interface AvatarConfig {
32
+ shape?: AvatarShape;
33
+ borderRadius?: number;
34
+ size?: AvatarSize;
35
+ useTextAvatar?: boolean;
36
+ children?: string;
37
+ }
38
+ /**
39
+ * 姓名样式配置
40
+ */
41
+ export interface NameStyle {
42
+ fontSize?: number | string;
43
+ fontWeight?: number | string;
44
+ color?: string;
45
+ textDecoration?: string;
46
+ }
47
+ export interface StyleConfig {
48
+ width?: number | string;
49
+ border?: 'solid' | 'unset';
50
+ borderWidth?: number | string;
51
+ borderColor?: string;
52
+ borderRadius?: number | string;
53
+ padding?: number | string;
54
+ [key: string]: any;
55
+ }
56
+ /**
57
+ * 文本样式配置
58
+ */
59
+ export interface TextStyle {
60
+ fontSize?: number | string;
61
+ fontWeight?: number | string;
62
+ color?: string;
63
+ }
64
+ /**
65
+ * ContactInfo 组件属性接口
66
+ */
67
+ export interface ContactInfoProps {
68
+ dataSource?: ContactInfoData;
69
+ defaultName?: string;
70
+ placeholder?: string | React.ReactNode;
71
+ isShowDelete?: boolean;
72
+ children?: React.ReactNode;
73
+ direction?: Direction;
74
+ horizontalGap?: number | string;
75
+ verticalGap?: number | string;
76
+ isShowAvatar?: boolean;
77
+ isShowPhone?: boolean;
78
+ isShowEmail?: boolean;
79
+ avatar?: AvatarConfig;
80
+ style?: StyleConfig;
81
+ nameStyle?: NameStyle;
82
+ textStyle?: TextStyle;
83
+ placeholderStyle?: CSSProperties;
84
+ button?: {
85
+ addButtonIcon?: string;
86
+ editButtonIcon?: string;
87
+ };
88
+ onSave?: (value: any) => void;
89
+ onDelete?: () => void;
90
+ onCancel?: () => void;
91
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ interface FieldMapping<T = any, R = any> {
2
+ [key: string]: string | ((data: T) => R) | undefined;
3
+ }
4
+ export declare function getFieldValue<T, R = any>(data: T, fieldKey: string): R | undefined;
5
+ export declare function getFieldValue<T, R = any>(data: T, fieldKey: string, mapping: FieldMapping<T, R>): R | undefined;
6
+ export declare const getAvatarText: (name: string) => string;
7
+ export {};
@@ -0,0 +1,50 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ import { get } from 'lodash';
3
+
4
+ // 类型定义
5
+
6
+ // 函数重载签名
7
+
8
+ // 函数实现
9
+ export function getFieldValue(data, fieldKey, mapping) {
10
+ // 参数验证
11
+ if (!fieldKey || typeof fieldKey !== 'string') {
12
+ console.warn('getFieldValue: fieldKey must be a non-empty string');
13
+ return undefined;
14
+ }
15
+ if (!data || _typeof(data) !== 'object') {
16
+ console.warn('getFieldValue: data must be a valid object');
17
+ return undefined;
18
+ }
19
+
20
+ // 如果没有提供 mapping,使用空对象
21
+ var fieldMapping = mapping || {};
22
+ var mappingRule = fieldMapping[fieldKey];
23
+ try {
24
+ // 函数映射
25
+ if (typeof mappingRule === 'function') {
26
+ return mappingRule(data);
27
+ }
28
+
29
+ // 字符串映射(使用 lodash.get)
30
+ if (typeof mappingRule === 'string') {
31
+ return get(data, mappingRule);
32
+ }
33
+
34
+ // 默认直接访问(使用 lodash.get)
35
+ return get(data, fieldKey);
36
+ } catch (error) {
37
+ console.error("getFieldValue: Error processing field '".concat(fieldKey, "':"), error);
38
+ return undefined;
39
+ }
40
+ }
41
+
42
+ // 获取头像文本(姓名的首字母,最多两个单词)
43
+ export var getAvatarText = function getAvatarText(name) {
44
+ if (!name) return '';
45
+ var words = name.trim().split(/\s+/);
46
+ var initials = words.slice(0, 2).map(function (word) {
47
+ return word.charAt(0).toUpperCase();
48
+ }).join('');
49
+ return initials;
50
+ };
@@ -0,0 +1,3 @@
1
+ import './index.less';
2
+ declare const ContactInfoContent: (props: any) => JSX.Element;
3
+ export default ContactInfoContent;
@@ -0,0 +1,74 @@
1
+ import React from 'react';
2
+ import { Form } from 'antd';
3
+ import { FormItemInput } from '@pisell/materials';
4
+ import { locales } from '@pisell/utils';
5
+ import useEngineContext from "../../hooks/useEngineContext";
6
+ import localeTexts from "./locales";
7
+ import "./index.less";
8
+ var ContactInfoContent = function ContactInfoContent(props) {
9
+ var _context$appHelper$ut, _config$first_name, _config$first_name2, _config$last_name, _config$last_name2, _config$phone, _config$phone2, _config$email, _config$email2;
10
+ var context = useEngineContext();
11
+ locales.init(localeTexts, ((_context$appHelper$ut = context.appHelper.utils) === null || _context$appHelper$ut === void 0 || (_context$appHelper$ut = _context$appHelper$ut.storage) === null || _context$appHelper$ut === void 0 ? void 0 : _context$appHelper$ut.get('umi_locale')) || 'en');
12
+ var config = props.config,
13
+ form = props.form;
14
+ console.log('config', config);
15
+ return /*#__PURE__*/React.createElement("div", {
16
+ className: "pisell-contact-info-modal-content"
17
+ }, /*#__PURE__*/React.createElement(Form, {
18
+ size: "large",
19
+ layout: "vertical",
20
+ form: form
21
+ }, /*#__PURE__*/React.createElement("div", {
22
+ className: "pisell-contact-info-modal-content-name-wrap"
23
+ }, (config === null || config === void 0 || (_config$first_name = config.first_name) === null || _config$first_name === void 0 ? void 0 : _config$first_name.visible) !== false ? /*#__PURE__*/React.createElement(FormItemInput, {
24
+ renderMode: "edit",
25
+ label: locales.getText('pisell2.text.contact-info.modal.first-name'),
26
+ placeholder: locales.getText('pisell2.text.contact-info.modal.first-name-placeholder'),
27
+ name: "first_name",
28
+ requiredobj: {
29
+ required: (config === null || config === void 0 || (_config$first_name2 = config.first_name) === null || _config$first_name2 === void 0 ? void 0 : _config$first_name2.required) !== true ? false : true,
30
+ message: locales.getText('pisell2.text.contact-info.modal.first-name-required')
31
+ }
32
+ }) : null, (config === null || config === void 0 || (_config$last_name = config.last_name) === null || _config$last_name === void 0 ? void 0 : _config$last_name.visible) !== false ? /*#__PURE__*/React.createElement(FormItemInput, {
33
+ renderMode: "edit",
34
+ label: locales.getText('pisell2.text.contact-info.modal.last-name'),
35
+ placeholder: locales.getText('pisell2.text.contact-info.modal.last-name-placeholder'),
36
+ name: "last_name",
37
+ requiredobj: {
38
+ required: (config === null || config === void 0 || (_config$last_name2 = config.last_name) === null || _config$last_name2 === void 0 ? void 0 : _config$last_name2.required) !== true ? false : true,
39
+ message: locales.getText('pisell2.text.contact-info.modal.last-name-required')
40
+ }
41
+ }) : null), (config === null || config === void 0 || (_config$phone = config.phone) === null || _config$phone === void 0 ? void 0 : _config$phone.visible) !== false ? /*#__PURE__*/React.createElement(FormItemInput.Mobile, {
42
+ renderMode: "edit",
43
+ name: "phone",
44
+ label: locales.getText('pisell2.text.contact-info.modal.mobile'),
45
+ placeholder: locales.getText('pisell2.text.contact-info.modal.mobile-placeholder'),
46
+ typeobj: {
47
+ type: 'phone',
48
+ enabled: true,
49
+ message: locales.getText('pisell2.text.contact-info.modal.mobile-error')
50
+ },
51
+ requiredobj: {
52
+ required: (config === null || config === void 0 || (_config$phone2 = config.phone) === null || _config$phone2 === void 0 ? void 0 : _config$phone2.required) !== true ? false : true,
53
+ message: locales.getText('pisell2.text.contact-info.modal.mobile-required')
54
+ },
55
+ returnFormat: "object"
56
+ }) : null, (config === null || config === void 0 || (_config$email = config.email) === null || _config$email === void 0 ? void 0 : _config$email.visible) !== false ? /*#__PURE__*/React.createElement(FormItemInput.Email, {
57
+ renderMode: "edit",
58
+ name: "email",
59
+ label: locales.getText('pisell2.text.contact-info.modal.email'),
60
+ placeholder: locales.getText('pisell2.text.contact-info.modal.email-placeholder'),
61
+ typeobj: {
62
+ type: 'email',
63
+ enabled: true
64
+ },
65
+ requiredobj: {
66
+ required: (config === null || config === void 0 || (_config$email2 = config.email) === null || _config$email2 === void 0 ? void 0 : _config$email2.required) !== true ? false : true,
67
+ message: locales.getText('pisell2.text.contact-info.modal.email-required')
68
+ },
69
+ onChange: function onChange() {
70
+ form.validateFields(['email']);
71
+ }
72
+ }) : null));
73
+ };
74
+ export default ContactInfoContent;
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import './index.less';
3
+ interface ContactInfoModalProps {
4
+ open: boolean;
5
+ title?: string;
6
+ onCancel: () => void;
7
+ onSave: (values: any) => void;
8
+ isShowDelete?: boolean;
9
+ onDelete: () => void;
10
+ dataSource?: {
11
+ first_name?: string;
12
+ last_name?: string;
13
+ display_name?: string;
14
+ email?: string;
15
+ phone?: {
16
+ phone: string;
17
+ country_calling_code: string;
18
+ country_code?: string;
19
+ };
20
+ };
21
+ config?: {
22
+ first_name?: {
23
+ visible?: boolean;
24
+ required?: boolean;
25
+ };
26
+ last_name?: {
27
+ visible?: boolean;
28
+ required?: boolean;
29
+ };
30
+ phone?: {
31
+ visible?: boolean;
32
+ required?: boolean;
33
+ };
34
+ email?: {
35
+ visible?: boolean;
36
+ required?: boolean;
37
+ };
38
+ };
39
+ }
40
+ declare const ContactInfoModal: React.FC<ContactInfoModalProps>;
41
+ export default ContactInfoModal;
@@ -0,0 +1,155 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
+ import { PisellModal, Button } from '@pisell/materials';
12
+ import React, { useEffect, useMemo } from 'react';
13
+ import { locales } from '@pisell/utils';
14
+ import { Form } from 'antd';
15
+ import useEngineContext from "../../hooks/useEngineContext";
16
+ import localeTexts from "./locales";
17
+ import "./index.less";
18
+ import ContactInfoContent from "./ContactInfoContent";
19
+ var ContactInfoModalContent = function ContactInfoModalContent(props) {
20
+ var _context$appHelper$ut;
21
+ var open = props.open,
22
+ title = props.title,
23
+ onCancel = props.onCancel,
24
+ onSave = props.onSave,
25
+ onDelete = props.onDelete,
26
+ isShowDelete = props.isShowDelete,
27
+ dataSource = props.dataSource,
28
+ config = props.config;
29
+ var context = useEngineContext();
30
+ locales.init(localeTexts, ((_context$appHelper$ut = context.appHelper.utils) === null || _context$appHelper$ut === void 0 || (_context$appHelper$ut = _context$appHelper$ut.storage) === null || _context$appHelper$ut === void 0 ? void 0 : _context$appHelper$ut.get('umi_locale')) || 'en');
31
+
32
+ // form实例
33
+ var _Form$useForm = Form.useForm(),
34
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
35
+ form = _Form$useForm2[0];
36
+ useEffect(function () {
37
+ form.resetFields();
38
+ if (dataSource) {
39
+ // 需要对country_calling_code做兼容处理,部分数据可能没有+号前缀
40
+ var _ref = dataSource || {},
41
+ first_name = _ref.first_name,
42
+ last_name = _ref.last_name,
43
+ email = _ref.email;
44
+ var _ref2 = (dataSource === null || dataSource === void 0 ? void 0 : dataSource.phone) || {},
45
+ country_calling_code = _ref2.country_calling_code,
46
+ phone = _ref2.phone,
47
+ country_code = _ref2.country_code;
48
+ var countryCallingCode = '';
49
+ if (country_calling_code) {
50
+ countryCallingCode = country_calling_code !== null && country_calling_code !== void 0 && country_calling_code.startsWith('+') ? country_calling_code : "+".concat(country_calling_code);
51
+ }
52
+ form.setFieldsValue({
53
+ first_name: first_name,
54
+ last_name: last_name,
55
+ phone: {
56
+ phone: phone,
57
+ countryCallingCode: countryCallingCode,
58
+ countryCode: country_code
59
+ },
60
+ email: email
61
+ });
62
+ } else {
63
+ form.resetFields();
64
+ }
65
+ }, [dataSource, form]);
66
+ var isEmpty = useMemo(function () {
67
+ var _dataSource$phone;
68
+ return !(dataSource !== null && dataSource !== void 0 && dataSource.first_name) && !(dataSource !== null && dataSource !== void 0 && dataSource.last_name) && !(dataSource !== null && dataSource !== void 0 && (_dataSource$phone = dataSource.phone) !== null && _dataSource$phone !== void 0 && _dataSource$phone.phone) && !(dataSource !== null && dataSource !== void 0 && dataSource.email);
69
+ }, [dataSource]);
70
+ var handleCancel = function handleCancel(e) {
71
+ var _e$preventDefault, _e$stopPropagation;
72
+ e === null || e === void 0 || (_e$preventDefault = e.preventDefault) === null || _e$preventDefault === void 0 || _e$preventDefault.call(e);
73
+ e === null || e === void 0 || (_e$stopPropagation = e.stopPropagation) === null || _e$stopPropagation === void 0 || _e$stopPropagation.call(e);
74
+ onCancel();
75
+ };
76
+ var handleDelete = function handleDelete(e) {
77
+ var _e$preventDefault2, _e$stopPropagation2;
78
+ e === null || e === void 0 || (_e$preventDefault2 = e.preventDefault) === null || _e$preventDefault2 === void 0 || _e$preventDefault2.call(e);
79
+ e === null || e === void 0 || (_e$stopPropagation2 = e.stopPropagation) === null || _e$stopPropagation2 === void 0 || _e$stopPropagation2.call(e);
80
+ onDelete();
81
+ };
82
+ var handleSave = /*#__PURE__*/function () {
83
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(e) {
84
+ var _e$preventDefault3, _e$stopPropagation3;
85
+ var _values$phone, _values$phone2, _values$phone3, _values;
86
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
87
+ while (1) switch (_context.prev = _context.next) {
88
+ case 0:
89
+ e === null || e === void 0 || (_e$preventDefault3 = e.preventDefault) === null || _e$preventDefault3 === void 0 || _e$preventDefault3.call(e);
90
+ e === null || e === void 0 || (_e$stopPropagation3 = e.stopPropagation) === null || _e$stopPropagation3 === void 0 || _e$stopPropagation3.call(e);
91
+ _context.prev = 2;
92
+ _context.next = 5;
93
+ return form.validateFields();
94
+ case 5:
95
+ _values = _context.sent;
96
+ console.log('values', _values);
97
+ onSave({
98
+ first_name: (_values === null || _values === void 0 ? void 0 : _values.first_name) || '',
99
+ last_name: (_values === null || _values === void 0 ? void 0 : _values.last_name) || '',
100
+ display_name: _values !== null && _values !== void 0 && _values.first_name || _values !== null && _values !== void 0 && _values.last_name ? "".concat((_values === null || _values === void 0 ? void 0 : _values.first_name) || '', " ").concat((_values === null || _values === void 0 ? void 0 : _values.last_name) || '') : '',
101
+ phone: {
102
+ phone: (_values === null || _values === void 0 || (_values$phone = _values.phone) === null || _values$phone === void 0 ? void 0 : _values$phone.phone) || '',
103
+ country_calling_code: (_values === null || _values === void 0 || (_values$phone2 = _values.phone) === null || _values$phone2 === void 0 ? void 0 : _values$phone2.countryCallingCode) || '',
104
+ country_code: (_values === null || _values === void 0 || (_values$phone3 = _values.phone) === null || _values$phone3 === void 0 ? void 0 : _values$phone3.countryCode) || ''
105
+ },
106
+ email: (_values === null || _values === void 0 ? void 0 : _values.email) || ''
107
+ });
108
+ _context.next = 13;
109
+ break;
110
+ case 10:
111
+ _context.prev = 10;
112
+ _context.t0 = _context["catch"](2);
113
+ console.error('handleSave failed:', _context.t0);
114
+ case 13:
115
+ case "end":
116
+ return _context.stop();
117
+ }
118
+ }, _callee, null, [[2, 10]]);
119
+ }));
120
+ return function handleSave(_x) {
121
+ return _ref3.apply(this, arguments);
122
+ };
123
+ }();
124
+ return /*#__PURE__*/React.createElement(PisellModal, {
125
+ open: open,
126
+ onCancel: handleCancel,
127
+ title: title || locales.getText('pisell2.text.contact-info.modal.title'),
128
+ footer: /*#__PURE__*/React.createElement("div", {
129
+ className: "pisell-contact-info-modal-footer"
130
+ }, /*#__PURE__*/React.createElement(Button, {
131
+ type: "default",
132
+ block: true,
133
+ onClick: handleCancel
134
+ }, locales.getText('pisell2.text.button.cancel')), isShowDelete && !isEmpty ? /*#__PURE__*/React.createElement(Button, {
135
+ type: "default",
136
+ block: true,
137
+ danger: true,
138
+ onClick: handleDelete
139
+ }, locales.getText('pisell2.text.button.delete')) : null, /*#__PURE__*/React.createElement(Button, {
140
+ type: "primary",
141
+ block: true,
142
+ onClick: handleSave
143
+ }, locales.getText('pisell2.text.button.save'))),
144
+ destroyOnClose: true,
145
+ mobileModalHeight: 'auto'
146
+ }, /*#__PURE__*/React.createElement(ContactInfoContent, {
147
+ form: form,
148
+ config: config
149
+ }));
150
+ };
151
+ var ContactInfoModal = function ContactInfoModal(props) {
152
+ var open = props.open;
153
+ return open ? /*#__PURE__*/React.createElement(ContactInfoModalContent, props) : null;
154
+ };
155
+ export default ContactInfoModal;
@@ -0,0 +1,19 @@
1
+ .pisell-contact-info-modal-footer {
2
+ width: 100%;
3
+ display: flex;
4
+ justify-content: space-between;
5
+ gap: 10px;
6
+ }
7
+
8
+ .pisell-contact-info-modal-content {
9
+ width: 100%;
10
+ height: 100%;
11
+ padding: 24px 0;
12
+ background-color: #fff;
13
+ }
14
+
15
+ .pisell-contact-info-modal-content-name-wrap {
16
+ display: flex;
17
+ flex-direction: row;
18
+ gap: 16px;
19
+ }
@@ -0,0 +1,66 @@
1
+ declare const _default: {
2
+ en: {
3
+ 'pisell2.text.button.save': string;
4
+ 'pisell2.text.button.delete': string;
5
+ 'pisell2.text.button.cancel': string;
6
+ 'pisell2.text.contact-info.actions.delete': string;
7
+ 'pisell2.text.contact-info.modal.title': string;
8
+ 'pisell2.text.contact-info.modal.first-name': string;
9
+ 'pisell2.text.contact-info.modal.first-name-placeholder': string;
10
+ 'pisell2.text.contact-info.modal.first-name-required': string;
11
+ 'pisell2.text.contact-info.modal.last-name': string;
12
+ 'pisell2.text.contact-info.modal.last-name-placeholder': string;
13
+ 'pisell2.text.contact-info.modal.last-name-required': string;
14
+ 'pisell2.text.contact-info.modal.mobile': string;
15
+ 'pisell2.text.contact-info.modal.mobile-placeholder': string;
16
+ 'pisell2.text.contact-info.modal.mobile-required': string;
17
+ 'pisell2.text.contact-info.modal.mobile-error': string;
18
+ 'pisell2.text.contact-info.modal.email': string;
19
+ 'pisell2.text.contact-info.modal.email-placeholder': string;
20
+ 'pisell2.text.contact-info.modal.email-required': string;
21
+ 'pisell2.text.contact-info.modal.email-error': string;
22
+ };
23
+ 'zh-CN': {
24
+ 'pisell2.text.button.save': string;
25
+ 'pisell2.text.button.delete': string;
26
+ 'pisell2.text.button.cancel': string;
27
+ 'pisell2.text.contact-info.actions.delete': string;
28
+ 'pisell2.text.contact-info.modal.title': string;
29
+ 'pisell2.text.contact-info.modal.first-name': string;
30
+ 'pisell2.text.contact-info.modal.first-name-placeholder': string;
31
+ 'pisell2.text.contact-info.modal.first-name-required': string;
32
+ 'pisell2.text.contact-info.modal.last-name': string;
33
+ 'pisell2.text.contact-info.modal.last-name-placeholder': string;
34
+ 'pisell2.text.contact-info.modal.last-name-required': string;
35
+ 'pisell2.text.contact-info.modal.mobile': string;
36
+ 'pisell2.text.contact-info.modal.mobile-placeholder': string;
37
+ 'pisell2.text.contact-info.modal.mobile-required': string;
38
+ 'pisell2.text.contact-info.modal.mobile-error': string;
39
+ 'pisell2.text.contact-info.modal.email': string;
40
+ 'pisell2.text.contact-info.modal.email-placeholder': string;
41
+ 'pisell2.text.contact-info.modal.email-required': string;
42
+ 'pisell2.text.contact-info.modal.email-error': string;
43
+ };
44
+ 'zh-HK': {
45
+ 'pisell2.text.button.save': string;
46
+ 'pisell2.text.button.delete': string;
47
+ 'pisell2.text.button.cancel': string;
48
+ 'pisell2.text.contact-info.actions.delete': string;
49
+ 'pisell2.text.contact-info.modal.title': string;
50
+ 'pisell2.text.contact-info.modal.first-name': string;
51
+ 'pisell2.text.contact-info.modal.first-name-placeholder': string;
52
+ 'pisell2.text.contact-info.modal.first-name-required': string;
53
+ 'pisell2.text.contact-info.modal.last-name': string;
54
+ 'pisell2.text.contact-info.modal.last-name-placeholder': string;
55
+ 'pisell2.text.contact-info.modal.last-name-required': string;
56
+ 'pisell2.text.contact-info.modal.mobile': string;
57
+ 'pisell2.text.contact-info.modal.mobile-placeholder': string;
58
+ 'pisell2.text.contact-info.modal.mobile-required': string;
59
+ 'pisell2.text.contact-info.modal.mobile-error': string;
60
+ 'pisell2.text.contact-info.modal.email': string;
61
+ 'pisell2.text.contact-info.modal.email-placeholder': string;
62
+ 'pisell2.text.contact-info.modal.email-required': string;
63
+ 'pisell2.text.contact-info.modal.email-error': string;
64
+ };
65
+ };
66
+ export default _default;
@@ -0,0 +1,65 @@
1
+ export default {
2
+ en: {
3
+ 'pisell2.text.button.save': 'Save',
4
+ 'pisell2.text.button.delete': 'Delete',
5
+ 'pisell2.text.button.cancel': 'Cancel',
6
+ 'pisell2.text.contact-info.actions.delete': 'Delete',
7
+ 'pisell2.text.contact-info.modal.title': 'Contact info',
8
+ 'pisell2.text.contact-info.modal.first-name': 'First Name',
9
+ 'pisell2.text.contact-info.modal.first-name-placeholder': 'Please enter first name',
10
+ 'pisell2.text.contact-info.modal.first-name-required': 'First name is required',
11
+ 'pisell2.text.contact-info.modal.last-name': 'Last Name',
12
+ 'pisell2.text.contact-info.modal.last-name-placeholder': 'Please enter last name',
13
+ 'pisell2.text.contact-info.modal.last-name-required': 'Last name is required',
14
+ 'pisell2.text.contact-info.modal.mobile': 'Phone Number',
15
+ 'pisell2.text.contact-info.modal.mobile-placeholder': 'Please enter phone number',
16
+ 'pisell2.text.contact-info.modal.mobile-required': 'Phone number is required',
17
+ 'pisell2.text.contact-info.modal.mobile-error': 'Please enter a valid phone number',
18
+ 'pisell2.text.contact-info.modal.email': 'Email',
19
+ 'pisell2.text.contact-info.modal.email-placeholder': 'Please enter email',
20
+ 'pisell2.text.contact-info.modal.email-required': 'Email is required',
21
+ 'pisell2.text.contact-info.modal.email-error': 'Please enter a valid email'
22
+ },
23
+ 'zh-CN': {
24
+ 'pisell2.text.button.save': '保存',
25
+ 'pisell2.text.button.delete': '删除',
26
+ 'pisell2.text.button.cancel': '取消',
27
+ 'pisell2.text.contact-info.actions.delete': '删除',
28
+ 'pisell2.text.contact-info.modal.title': '联系信息',
29
+ 'pisell2.text.contact-info.modal.first-name': '名',
30
+ 'pisell2.text.contact-info.modal.first-name-placeholder': '请输入名',
31
+ 'pisell2.text.contact-info.modal.first-name-required': '名是必填项',
32
+ 'pisell2.text.contact-info.modal.last-name': '姓',
33
+ 'pisell2.text.contact-info.modal.last-name-placeholder': '请输入姓',
34
+ 'pisell2.text.contact-info.modal.last-name-required': '姓是必填项',
35
+ 'pisell2.text.contact-info.modal.mobile': '电话号码',
36
+ 'pisell2.text.contact-info.modal.mobile-placeholder': '请输入电话号码',
37
+ 'pisell2.text.contact-info.modal.mobile-required': '电话号码是必填项',
38
+ 'pisell2.text.contact-info.modal.mobile-error': '请输入有效的电话号码',
39
+ 'pisell2.text.contact-info.modal.email': '电子邮箱',
40
+ 'pisell2.text.contact-info.modal.email-placeholder': '请输入电子邮箱',
41
+ 'pisell2.text.contact-info.modal.email-required': '电子邮箱是必填项',
42
+ 'pisell2.text.contact-info.modal.email-error': '请输入有效的电子邮箱'
43
+ },
44
+ 'zh-HK': {
45
+ 'pisell2.text.button.save': '保存',
46
+ 'pisell2.text.button.delete': '刪除',
47
+ 'pisell2.text.button.cancel': '取消',
48
+ 'pisell2.text.contact-info.actions.delete': '刪除',
49
+ 'pisell2.text.contact-info.modal.title': '聯繫信息',
50
+ 'pisell2.text.contact-info.modal.first-name': '名',
51
+ 'pisell2.text.contact-info.modal.first-name-placeholder': '請輸入名',
52
+ 'pisell2.text.contact-info.modal.first-name-required': '名是必填項',
53
+ 'pisell2.text.contact-info.modal.last-name': '姓',
54
+ 'pisell2.text.contact-info.modal.last-name-placeholder': '請輸入姓',
55
+ 'pisell2.text.contact-info.modal.last-name-required': '姓是必填項',
56
+ 'pisell2.text.contact-info.modal.mobile': '電話號碼',
57
+ 'pisell2.text.contact-info.modal.mobile-placeholder': '請輸入電話號碼',
58
+ 'pisell2.text.contact-info.modal.mobile-required': '電話號碼是必填項',
59
+ 'pisell2.text.contact-info.modal.mobile-error': '請輸入有效的電話號碼',
60
+ 'pisell2.text.contact-info.modal.email': '電子郵件',
61
+ 'pisell2.text.contact-info.modal.email-placeholder': '請輸入電子郵件',
62
+ 'pisell2.text.contact-info.modal.email-required': '電子郵件是必填項',
63
+ 'pisell2.text.contact-info.modal.email-error': '請輸入有效的電子郵件'
64
+ }
65
+ };
@@ -1,3 +1,3 @@
1
1
  import './index.less';
2
- declare const CartItem: ({ onNext }: any) => JSX.Element;
2
+ declare const CartItem: ({ onNext, renderContactInfo }: any) => JSX.Element;
3
3
  export default CartItem;
@@ -45,7 +45,7 @@ var import_Total = __toESM(require("./Total"));
45
45
  var import_Deposit = __toESM(require("../../Deposit"));
46
46
  var import_utils3 = require("../utils");
47
47
  var import_index = require("./index.less");
48
- var CartItem = ({ onNext }) => {
48
+ var CartItem = ({ onNext, renderContactInfo }) => {
49
49
  var _a, _b, _c, _d, _e;
50
50
  const appointmentBooking = (0, import_hooks.useAppointmentBooking)();
51
51
  const {
@@ -152,7 +152,9 @@ var CartItem = ({ onNext }) => {
152
152
  const products = (0, import_react.useMemo)(() => {
153
153
  if (!(carts == null ? void 0 : carts.length)) return [];
154
154
  carts.forEach((item) => {
155
- item.isShowChangeHolder = !appointmentBooking.isTargetCartIdNormalProduct(item == null ? void 0 : item._id);
155
+ item.isShowChangeHolder = !appointmentBooking.isTargetCartIdNormalProduct(
156
+ item == null ? void 0 : item._id
157
+ );
156
158
  });
157
159
  if ((currentSelectedResources == null ? void 0 : currentSelectedResources.length) > 0) {
158
160
  const newCarts = carts.map((item) => {
@@ -181,7 +183,7 @@ var CartItem = ({ onNext }) => {
181
183
  {
182
184
  className: `appointment-cart-item-wrap ${(0, import_utils.isMobile)() ? "appointment-cart-mobile-item-wrap" : ""}`
183
185
  },
184
- /* @__PURE__ */ import_react.default.createElement("div", { className: "content" }, /* @__PURE__ */ import_react.default.createElement(
186
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "content" }, renderContactInfo ? renderContactInfo() : null, /* @__PURE__ */ import_react.default.createElement(
185
187
  import_shoppingCart.default,
186
188
  {
187
189
  productParams: {