@pisell/private-materials 3.4.42 → 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 (185) 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 +150 -155
  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/Sales/Summary/utils.d.ts +1 -1
  12. package/es/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
  13. package/es/components/appointmentBooking/components/Cart/Item/index.js +3 -2
  14. package/es/components/appointmentBooking/components/ConfirmInformation/index.js +273 -76
  15. package/es/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  16. package/es/components/appointmentBooking/components/Services/index.js +22 -8
  17. package/es/components/appointmentBooking/hooks.d.ts +1 -0
  18. package/es/components/appointmentBooking/hooks.js +30 -30
  19. package/es/components/appointmentBooking/locales.d.ts +3 -0
  20. package/es/components/appointmentBooking/locales.js +9 -6
  21. package/es/components/booking/addons/model.d.ts +10 -1
  22. package/es/components/booking/components/customSelect/index.js +1 -1
  23. package/es/components/booking/components/footer/index.js +4 -1
  24. package/es/components/booking/components/footer/utils.js +75 -73
  25. package/es/components/booking/forms/footer.js +24 -10
  26. package/es/components/booking/forms/model.d.ts +10 -1
  27. package/es/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
  28. package/es/components/booking/info/client/index.js +28 -13
  29. package/es/components/booking/info/clientVariant/hooks/useClientFn.js +16 -10
  30. package/es/components/booking/info/clientVariant/vertical/SelectDrawer.js +10 -2
  31. package/es/components/booking/info/clientVariant/vertical/index.js +1 -1
  32. package/es/components/booking/info/main.js +3 -2
  33. package/es/components/booking/info/model.d.ts +10 -1
  34. package/es/components/booking/info/model.js +5 -0
  35. package/es/components/booking/info/service/addService/utils.d.ts +1 -1
  36. package/es/components/booking/info2/index.js +3 -2
  37. package/es/components/booking/info2/service/addService/utils.d.ts +1 -1
  38. package/es/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
  39. package/es/components/booking/info2/service/contactInfoMode/index.js +94 -0
  40. package/es/components/booking/locales.d.ts +6 -0
  41. package/es/components/booking/locales.js +12 -3
  42. package/es/components/booking/model.d.ts +13 -1
  43. package/es/components/booking/model.js +3 -0
  44. package/es/components/booking/notes/model.d.ts +10 -1
  45. package/es/components/booking/payments/model.d.ts +10 -1
  46. package/es/components/eftposPay/app.d.ts +1 -1
  47. package/es/components/eftposPay/hooks.d.ts +1 -1
  48. package/es/components/eftposPay/store/index.d.ts +1 -1
  49. package/es/components/pay/toC/PaymentMethods/ApplePay/index.js +1 -1
  50. package/es/components/pay/toC/PaymentMethods/GooglePay/index.js +1 -1
  51. package/es/components/pay/toC/model.d.ts +9 -1
  52. package/es/components/schedules/model.d.ts +9 -1
  53. package/es/components/ticketBooking/components/ticketBooking/index.less +2 -1
  54. package/es/components/wallet/Detail/model.d.ts +13 -1
  55. package/es/components/wallet/DiscountCard/model.d.ts +14 -1
  56. package/es/components/wallet/PointCard/model.d.ts +13 -1
  57. package/es/components/wallet/RechargeableCard/model.d.ts +29 -1
  58. package/es/components/wallet/Voucher/model.d.ts +13 -1
  59. package/es/components/wallet/model.d.ts +9 -1
  60. package/es/index.d.ts +2 -0
  61. package/es/index.js +3 -1
  62. package/es/plus/clientName/index.d.ts +4 -0
  63. package/es/plus/clientName/index.js +18 -0
  64. package/es/plus/clientName/index.less +10 -0
  65. package/es/plus/clientName/type.d.ts +13 -0
  66. package/es/plus/clientName/type.js +1 -0
  67. package/es/plus/clientName/utils.d.ts +2 -0
  68. package/es/plus/clientName/utils.js +18 -0
  69. package/es/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  70. package/es/plus/contactInfo/components/Avatar/index.js +30 -0
  71. package/es/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  72. package/es/plus/contactInfo/components/SwipeAction/index.js +360 -0
  73. package/es/plus/contactInfo/components/SwipeAction/index.less +74 -0
  74. package/es/plus/contactInfo/index.d.ts +6 -0
  75. package/es/plus/contactInfo/index.js +198 -0
  76. package/es/plus/contactInfo/index.less +621 -0
  77. package/es/plus/contactInfo/locales.d.ts +15 -0
  78. package/es/plus/contactInfo/locales.js +14 -0
  79. package/es/plus/contactInfo/types.d.ts +91 -0
  80. package/es/plus/contactInfo/types.js +1 -0
  81. package/es/plus/contactInfo/utils.d.ts +7 -0
  82. package/es/plus/contactInfo/utils.js +50 -0
  83. package/es/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
  84. package/es/plus/contactInfoModal/ContactInfoContent.js +74 -0
  85. package/es/plus/contactInfoModal/index.d.ts +41 -0
  86. package/es/plus/contactInfoModal/index.js +155 -0
  87. package/es/plus/contactInfoModal/index.less +19 -0
  88. package/es/plus/contactInfoModal/locales.d.ts +66 -0
  89. package/es/plus/contactInfoModal/locales.js +65 -0
  90. package/es/plus/productSelect/ProductCard/index.d.ts +3 -1
  91. package/es/plus/productSelect/ProductCard/index.js +14 -5
  92. package/es/plus/productSelect/index.d.ts +3 -2
  93. package/es/plus/productSelect/index.js +33 -8
  94. package/es/plus/productSelect/index.less +4 -0
  95. package/lib/components/Sales/Summary/utils.d.ts +1 -1
  96. package/lib/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
  97. package/lib/components/appointmentBooking/components/Cart/Item/index.js +5 -3
  98. package/lib/components/appointmentBooking/components/ConfirmInformation/index.js +156 -13
  99. package/lib/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  100. package/lib/components/appointmentBooking/components/Services/index.js +8 -3
  101. package/lib/components/appointmentBooking/hooks.d.ts +1 -0
  102. package/lib/components/appointmentBooking/hooks.js +73 -35
  103. package/lib/components/appointmentBooking/locales.d.ts +3 -0
  104. package/lib/components/appointmentBooking/locales.js +6 -3
  105. package/lib/components/booking/addons/model.d.ts +10 -1
  106. package/lib/components/booking/components/customSelect/index.js +1 -1
  107. package/lib/components/booking/components/footer/index.js +4 -1
  108. package/lib/components/booking/components/footer/utils.js +93 -68
  109. package/lib/components/booking/forms/footer.js +29 -11
  110. package/lib/components/booking/forms/model.d.ts +10 -1
  111. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
  112. package/lib/components/booking/info/client/index.js +14 -1
  113. package/lib/components/booking/info/clientVariant/hooks/useClientFn.js +7 -2
  114. package/lib/components/booking/info/clientVariant/vertical/SelectDrawer.js +11 -4
  115. package/lib/components/booking/info/clientVariant/vertical/index.js +34 -17
  116. package/lib/components/booking/info/main.js +5 -4
  117. package/lib/components/booking/info/model.d.ts +10 -1
  118. package/lib/components/booking/info/model.js +5 -0
  119. package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
  120. package/lib/components/booking/info2/index.js +5 -4
  121. package/lib/components/booking/info2/service/addService/utils.d.ts +1 -1
  122. package/lib/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
  123. package/lib/components/booking/info2/service/contactInfoMode/index.js +111 -0
  124. package/lib/components/booking/locales.d.ts +6 -0
  125. package/lib/components/booking/locales.js +12 -3
  126. package/lib/components/booking/model.d.ts +13 -1
  127. package/lib/components/booking/model.js +3 -0
  128. package/lib/components/booking/notes/model.d.ts +10 -1
  129. package/lib/components/booking/payments/model.d.ts +10 -1
  130. package/lib/components/eftposPay/app.d.ts +1 -1
  131. package/lib/components/eftposPay/hooks.d.ts +1 -1
  132. package/lib/components/eftposPay/store/index.d.ts +1 -1
  133. package/lib/components/pay/toC/PaymentMethods/ApplePay/index.js +1 -1
  134. package/lib/components/pay/toC/PaymentMethods/GooglePay/index.js +1 -1
  135. package/lib/components/pay/toC/model.d.ts +9 -1
  136. package/lib/components/schedules/model.d.ts +9 -1
  137. package/lib/components/ticketBooking/components/ticketBooking/index.less +2 -1
  138. package/lib/components/wallet/Detail/model.d.ts +13 -1
  139. package/lib/components/wallet/DiscountCard/model.d.ts +14 -1
  140. package/lib/components/wallet/PointCard/model.d.ts +13 -1
  141. package/lib/components/wallet/RechargeableCard/model.d.ts +29 -1
  142. package/lib/components/wallet/Voucher/model.d.ts +13 -1
  143. package/lib/components/wallet/model.d.ts +9 -1
  144. package/lib/index.d.ts +2 -0
  145. package/lib/index.js +6 -0
  146. package/lib/plus/clientName/index.d.ts +4 -0
  147. package/lib/plus/clientName/index.js +53 -0
  148. package/lib/plus/clientName/index.less +10 -0
  149. package/lib/plus/clientName/type.d.ts +13 -0
  150. package/lib/plus/clientName/type.js +17 -0
  151. package/lib/plus/clientName/utils.d.ts +2 -0
  152. package/lib/plus/clientName/utils.js +43 -0
  153. package/lib/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  154. package/lib/plus/contactInfo/components/Avatar/index.js +56 -0
  155. package/lib/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  156. package/lib/plus/contactInfo/components/SwipeAction/index.js +373 -0
  157. package/lib/plus/contactInfo/components/SwipeAction/index.less +74 -0
  158. package/lib/plus/contactInfo/index.d.ts +6 -0
  159. package/lib/plus/contactInfo/index.js +226 -0
  160. package/lib/plus/contactInfo/index.less +621 -0
  161. package/lib/plus/contactInfo/locales.d.ts +15 -0
  162. package/lib/plus/contactInfo/locales.js +38 -0
  163. package/lib/plus/contactInfo/types.d.ts +91 -0
  164. package/lib/plus/contactInfo/types.js +17 -0
  165. package/lib/plus/contactInfo/utils.d.ts +7 -0
  166. package/lib/plus/contactInfo/utils.js +64 -0
  167. package/lib/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
  168. package/lib/plus/contactInfoModal/ContactInfoContent.js +129 -0
  169. package/lib/plus/contactInfoModal/index.d.ts +41 -0
  170. package/lib/plus/contactInfoModal/index.js +139 -0
  171. package/lib/plus/contactInfoModal/index.less +19 -0
  172. package/lib/plus/contactInfoModal/locales.d.ts +66 -0
  173. package/lib/plus/contactInfoModal/locales.js +89 -0
  174. package/lib/plus/productSelect/ProductCard/index.d.ts +3 -1
  175. package/lib/plus/productSelect/ProductCard/index.js +18 -4
  176. package/lib/plus/productSelect/index.d.ts +3 -2
  177. package/lib/plus/productSelect/index.js +20 -6
  178. package/lib/plus/productSelect/index.less +4 -0
  179. package/lowcode/contact-info/fragments/cardStyle.ts +68 -0
  180. package/lowcode/contact-info/fragments/nameStyle.ts +33 -0
  181. package/lowcode/contact-info/fragments/pisellAvatar.ts +103 -0
  182. package/lowcode/contact-info/fragments/textStyle.ts +33 -0
  183. package/lowcode/contact-info/meta.ts +199 -0
  184. package/lowcode/contact-info-modal/meta.ts +98 -0
  185. package/package.json +6 -4
@@ -0,0 +1,360 @@
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 _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+ 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."); }
5
+ 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); }
6
+ 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; }
7
+ 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; } }
8
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
13
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
+ import { animated, useSpring } from '@react-spring/web';
15
+ import { useDrag } from '@use-gesture/react/dist/use-gesture-react.cjs';
16
+ import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
17
+
18
+ // 本地实现的工具函数和类型
19
+
20
+ // withNativeProps 工具函数
21
+ function withNativeProps(props, element) {
22
+ var p = _objectSpread({}, element.props);
23
+ if (props.className) {
24
+ p.className = props.className + (element.props.className ? " ".concat(element.props.className) : '');
25
+ }
26
+ if (props.style) {
27
+ p.style = _objectSpread(_objectSpread({}, props.style), element.props.style);
28
+ }
29
+ return /*#__PURE__*/React.cloneElement(element, p);
30
+ }
31
+
32
+ // nearest 工具函数
33
+ function nearest(arr, target) {
34
+ return arr.reduce(function (prev, curr) {
35
+ return Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev;
36
+ });
37
+ }
38
+
39
+ // mergeProps 工具函数
40
+ function mergeProps(a, b) {
41
+ return _objectSpread(_objectSpread({}, a), b);
42
+ }
43
+
44
+ // withStopPropagation 工具函数
45
+ function withStopPropagation(events, element) {
46
+ if (!events.includes('click')) {
47
+ return element;
48
+ }
49
+ var onClick = function onClick(e) {
50
+ var _element$props$onClic, _element$props;
51
+ e.stopPropagation();
52
+ (_element$props$onClic = (_element$props = element.props).onClick) === null || _element$props$onClic === void 0 || _element$props$onClic.call(_element$props, e);
53
+ };
54
+ return /*#__PURE__*/React.cloneElement(element, _objectSpread(_objectSpread({}, element.props), {}, {
55
+ onClick: onClick
56
+ }));
57
+ }
58
+
59
+ // Button 组件实现
60
+
61
+ var Button = function Button(_ref) {
62
+ var children = _ref.children,
63
+ className = _ref.className,
64
+ style = _ref.style,
65
+ onClick = _ref.onClick;
66
+ return /*#__PURE__*/React.createElement("button", {
67
+ className: className,
68
+ style: _objectSpread({
69
+ border: 'none',
70
+ background: (style === null || style === void 0 ? void 0 : style['--background-color']) || 'transparent'
71
+ }, style),
72
+ onClick: onClick
73
+ }, children);
74
+ };
75
+ import "./index.less";
76
+ var classPrefix = "pisell-custom-swipe-action";
77
+ var defaultProps = {
78
+ rightActions: [],
79
+ leftActions: [],
80
+ closeOnTouchOutside: true,
81
+ closeOnAction: true,
82
+ stopPropagation: []
83
+ };
84
+ export var SwipeAction = /*#__PURE__*/forwardRef(function (p, ref) {
85
+ var props = mergeProps(defaultProps, p);
86
+ var rootRef = useRef(null);
87
+ var leftRef = useRef(null);
88
+ var rightRef = useRef(null);
89
+
90
+ // 添加容器高度状态
91
+ var _useState = useState(0),
92
+ _useState2 = _slicedToArray(_useState, 2),
93
+ containerHeight = _useState2[0],
94
+ setContainerHeight = _useState2[1];
95
+ function getWidth(ref) {
96
+ var element = ref.current;
97
+ if (!element) return 0;
98
+ return element.offsetWidth;
99
+ }
100
+
101
+ // 添加获取高度的函数
102
+ function getHeight(ref) {
103
+ var element = ref.current;
104
+ if (!element) return 0;
105
+ return element.offsetHeight;
106
+ }
107
+ function getLeftWidth() {
108
+ return getWidth(leftRef);
109
+ }
110
+ function getRightWidth() {
111
+ return getWidth(rightRef);
112
+ }
113
+
114
+ // 添加获取根容器高度的函数
115
+ function getRootHeight() {
116
+ return getHeight(rootRef);
117
+ }
118
+ var _useSpring = useSpring(function () {
119
+ return {
120
+ x: 0,
121
+ config: {
122
+ tension: 200,
123
+ friction: 30
124
+ }
125
+ };
126
+ }, []),
127
+ _useSpring2 = _slicedToArray(_useSpring, 2),
128
+ x = _useSpring2[0].x,
129
+ api = _useSpring2[1];
130
+ var draggingRef = useRef(false);
131
+ var dragCancelRef = useRef(null);
132
+ function forceCancelDrag() {
133
+ var _dragCancelRef$curren;
134
+ (_dragCancelRef$curren = dragCancelRef.current) === null || _dragCancelRef$curren === void 0 || _dragCancelRef$curren.call(dragCancelRef);
135
+ draggingRef.current = false;
136
+ }
137
+ var bind = useDrag(function (state) {
138
+ dragCancelRef.current = state.cancel;
139
+ if (!state.intentional) return;
140
+ if (state.down) {
141
+ draggingRef.current = true;
142
+ }
143
+ if (!draggingRef.current) return;
144
+ var _state$offset = _slicedToArray(state.offset, 1),
145
+ offsetX = _state$offset[0];
146
+ if (state.last) {
147
+ var leftWidth = getLeftWidth();
148
+ var rightWidth = getRightWidth();
149
+ var position = offsetX + state.velocity[0] * state.direction[0] * 50;
150
+ if (offsetX > 0) {
151
+ position = Math.max(0, position);
152
+ } else if (offsetX < 0) {
153
+ position = Math.min(0, position);
154
+ } else {
155
+ position = 0;
156
+ }
157
+ var targetX = nearest([-rightWidth, 0, leftWidth], position);
158
+ api.start({
159
+ x: targetX
160
+ });
161
+ if (targetX !== 0) {
162
+ var _p$onActionsReveal;
163
+ (_p$onActionsReveal = p.onActionsReveal) === null || _p$onActionsReveal === void 0 || _p$onActionsReveal.call(p, targetX > 0 ? 'left' : 'right');
164
+ }
165
+ window.setTimeout(function () {
166
+ draggingRef.current = false;
167
+ });
168
+ } else {
169
+ api.start({
170
+ x: offsetX,
171
+ immediate: true
172
+ });
173
+ }
174
+ }, {
175
+ from: function from() {
176
+ return [x.get(), 0];
177
+ },
178
+ bounds: function bounds() {
179
+ var leftWidth = getLeftWidth();
180
+ var rightWidth = getRightWidth();
181
+ return {
182
+ left: -rightWidth,
183
+ right: leftWidth
184
+ };
185
+ },
186
+ axis: 'x',
187
+ preventScroll: true,
188
+ pointer: {
189
+ touch: true
190
+ },
191
+ triggerAllEvents: true
192
+ });
193
+ var close = function close() {
194
+ var _props$onClose;
195
+ api.start({
196
+ x: 0
197
+ });
198
+ forceCancelDrag();
199
+ (_props$onClose = props.onClose) === null || _props$onClose === void 0 || _props$onClose.call(props);
200
+ };
201
+ useImperativeHandle(ref, function () {
202
+ return {
203
+ show: function show() {
204
+ var _p$onActionsReveal2;
205
+ var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'right';
206
+ if (side === 'right') {
207
+ api.start({
208
+ x: -getRightWidth()
209
+ });
210
+ } else if (side === 'left') {
211
+ api.start({
212
+ x: getLeftWidth()
213
+ });
214
+ }
215
+ (_p$onActionsReveal2 = p.onActionsReveal) === null || _p$onActionsReveal2 === void 0 || _p$onActionsReveal2.call(p, side);
216
+ },
217
+ close: close
218
+ };
219
+ });
220
+
221
+ // 添加高度检测的 useEffect
222
+ useEffect(function () {
223
+ var updateHeight = function updateHeight() {
224
+ var height = getRootHeight();
225
+ setContainerHeight(height);
226
+ };
227
+
228
+ // 组件挂载后检测高度
229
+ updateHeight();
230
+
231
+ // 监听窗口大小变化
232
+ var resizeObserver = new ResizeObserver(updateHeight);
233
+ if (rootRef.current) {
234
+ resizeObserver.observe(rootRef.current);
235
+ }
236
+ return function () {
237
+ resizeObserver.disconnect();
238
+ };
239
+ }, []);
240
+ useEffect(function () {
241
+ if (!props.closeOnTouchOutside) return;
242
+ function handle(e) {
243
+ // 检查点击的元素或其祖先元素是否有特定 class
244
+ if (e.target && props.escapeDom) {
245
+ var container = document.querySelector(props.escapeDom);
246
+ if (container !== null && container !== void 0 && container.contains(e.target)) return;
247
+ }
248
+ if (x.get() === 0) {
249
+ return;
250
+ }
251
+ var root = rootRef.current;
252
+ if (root && !root.contains(e.target)) {
253
+ close();
254
+ }
255
+ }
256
+ if ('ontouchstart' in window) {
257
+ document.addEventListener('touchstart', handle);
258
+ } else {
259
+ document.addEventListener('mousedown', handle);
260
+ }
261
+ return function () {
262
+ document.removeEventListener('touchstart', handle);
263
+ document.removeEventListener('mousedown', handle);
264
+ };
265
+ }, [props.closeOnTouchOutside, props.escapeDom]);
266
+
267
+ // 根据容器高度获取右侧容器的 class 名称
268
+ var getRightContainerClass = function getRightContainerClass() {
269
+ var baseClass = "".concat(classPrefix, "-actions ").concat(classPrefix, "-actions-right");
270
+ if (containerHeight > 180) {
271
+ return "".concat(baseClass, " ").concat(classPrefix, "-height-large");
272
+ } else if (containerHeight > 120) {
273
+ return "".concat(baseClass, " ").concat(classPrefix, "-height-medium");
274
+ }
275
+ return "".concat(baseClass, " ").concat(classPrefix, "-height-small");
276
+ };
277
+
278
+ // 根据容器高度获取右侧按钮的 class 名称
279
+ var getRightActionButtonClass = function getRightActionButtonClass() {
280
+ if (containerHeight > 180) {
281
+ return "".concat(classPrefix, "-action-height-large");
282
+ } else if (containerHeight > 120) {
283
+ return "".concat(classPrefix, "-action-height-medium");
284
+ }
285
+ return "".concat(classPrefix, "-action-height-small");
286
+ };
287
+ function renderAction(action) {
288
+ var _action$color, _colorRecord$color;
289
+ var isRightAction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
290
+ var color = (_action$color = action.color) !== null && _action$color !== void 0 ? _action$color : 'light';
291
+ var _style = action.style || {};
292
+
293
+ // 为右侧按钮添加基于高度的 class
294
+ var buttonClass = isRightAction ? "".concat(classPrefix, "-action-button ").concat(getRightActionButtonClass()) : "".concat(classPrefix, "-action-button");
295
+ return /*#__PURE__*/React.createElement(Button, {
296
+ key: action.key,
297
+ className: buttonClass,
298
+ style: _objectSpread({
299
+ '--background-color': (_colorRecord$color = colorRecord[color]) !== null && _colorRecord$color !== void 0 ? _colorRecord$color : color
300
+ }, _style),
301
+ onClick: function onClick(e) {
302
+ var _action$onClick, _props$onAction;
303
+ if (props.closeOnAction) {
304
+ close();
305
+ }
306
+ (_action$onClick = action.onClick) === null || _action$onClick === void 0 || _action$onClick.call(action, e);
307
+ (_props$onAction = props.onAction) === null || _props$onAction === void 0 || _props$onAction.call(props, action, e);
308
+ }
309
+ }, action.text);
310
+ }
311
+ return withNativeProps(props, /*#__PURE__*/React.createElement("div", _extends({
312
+ className: classPrefix
313
+ }, bind(), {
314
+ ref: rootRef,
315
+ onClickCapture: function onClickCapture(e) {
316
+ if (draggingRef.current) {
317
+ e.stopPropagation();
318
+ e.preventDefault();
319
+ }
320
+ }
321
+ }), /*#__PURE__*/React.createElement(animated.div, {
322
+ className: "".concat(classPrefix, "-track"),
323
+ style: {
324
+ x: x
325
+ }
326
+ }, withStopPropagation(props.stopPropagation, /*#__PURE__*/React.createElement("div", {
327
+ className: "".concat(classPrefix, "-actions ").concat(classPrefix, "-actions-left"),
328
+ ref: leftRef
329
+ }, props.leftActions.map(function (action) {
330
+ return renderAction(action, false);
331
+ }))), /*#__PURE__*/React.createElement("div", {
332
+ className: "".concat(classPrefix, "-content"),
333
+ onClickCapture: function onClickCapture(e) {
334
+ if (x.goal !== 0) {
335
+ e.preventDefault();
336
+ e.stopPropagation();
337
+ close();
338
+ }
339
+ }
340
+ }, /*#__PURE__*/React.createElement(animated.div, {
341
+ style: {
342
+ pointerEvents: x.to(function (v) {
343
+ return v !== 0 && x.goal !== 0 ? 'none' : 'auto';
344
+ })
345
+ }
346
+ }, props.children)), withStopPropagation(props.stopPropagation, /*#__PURE__*/React.createElement("div", {
347
+ className: getRightContainerClass(),
348
+ ref: rightRef
349
+ }, props.rightActions.map(function (action) {
350
+ return renderAction(action, true);
351
+ }))))));
352
+ });
353
+ var colorRecord = {
354
+ light: '#ccc',
355
+ weak: '#999',
356
+ primary: '#1677ff',
357
+ success: '#00b578',
358
+ warning: '#ff8f1f',
359
+ danger: '#ff3141'
360
+ };
@@ -0,0 +1,74 @@
1
+ .pisell-custom-swipe-action {
2
+ cursor: grab;
3
+ overflow: hidden;
4
+ touch-action: pan-y;
5
+ &-track {
6
+ position: relative;
7
+ overflow: visible;
8
+ }
9
+ &-content {
10
+ }
11
+ &-actions {
12
+ position: absolute;
13
+ display: flex;
14
+ justify-content: center;
15
+ align-items: stretch;
16
+ width: auto;
17
+ white-space: nowrap;
18
+ &-right {
19
+ left: 100%;
20
+ top: 0;
21
+ height: 100%;
22
+ }
23
+ &-left {
24
+ right: 100%;
25
+ top: 0;
26
+ height: 100%;
27
+ }
28
+ }
29
+ &-action-button {
30
+ --border-radius: 0;
31
+ --border-width: 0;
32
+ padding-left: 4px;
33
+ padding-right: 4px;
34
+ }
35
+ }
36
+
37
+ .pisell-custom-swipe-action-action-button {
38
+ min-width: 80px;
39
+ }
40
+
41
+ /* 容器样式 */
42
+ .pisell-custom-swipe-action-height-large {
43
+ display: flex;
44
+ flex-direction: column;
45
+ background-color: rgba(67, 93, 147, 0.3);
46
+ justify-content: flex-start;
47
+
48
+ .pisell-number-selector-btn {
49
+ width: 40px !important;
50
+ height: 40px !important;
51
+ }
52
+ }
53
+
54
+ .pisell-custom-swipe-action-height-medium {
55
+ display: flex;
56
+ flex-direction: column;
57
+ background-color: rgba(67, 93, 147, 0.3);
58
+
59
+ .pisell-number-selector-btn {
60
+ width: 40px !important;
61
+ height: 40px !important;
62
+ }
63
+ }
64
+
65
+ /* 按钮样式 */
66
+ .pisell-custom-swipe-action-action-height-large {
67
+ height: 60px;
68
+ width: 200px;
69
+ }
70
+
71
+ .pisell-custom-swipe-action-action-height-medium {
72
+ flex: 1;
73
+ width: 200px;
74
+ }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { ContactInfoProps } from './types';
3
+ import './index.less';
4
+ export declare const PREFIX = "pisell-plus-contact-info";
5
+ declare const ContactInfo: React.FC<ContactInfoProps>;
6
+ export default ContactInfo;
@@ -0,0 +1,198 @@
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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ 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."); }
9
+ 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); }
10
+ 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; }
11
+ 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; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import React, { useMemo, useState } from 'react';
14
+ import { Iconfont } from '@pisell/materials';
15
+ import { locales } from '@pisell/utils';
16
+ import useEngineContext from "../../hooks/useEngineContext";
17
+ import Avatar from "./components/Avatar";
18
+ import { SwipeAction } from "./components/SwipeAction";
19
+ import ContactInfoModal from "../contactInfoModal";
20
+ import localeTexts from "./locales";
21
+ import "./index.less";
22
+ export var PREFIX = 'pisell-plus-contact-info';
23
+ var ContactInfo = function ContactInfo(props) {
24
+ var _context$appHelper$ut, _props$style2;
25
+ console.log('props>>>>>>>>>', props);
26
+ var dataSource = props.dataSource,
27
+ defaultName = props.defaultName,
28
+ placeholder = props.placeholder,
29
+ _props$direction = props.direction,
30
+ direction = _props$direction === void 0 ? 'horizontal' : _props$direction,
31
+ isShowDelete = props.isShowDelete,
32
+ isShowAvatar = props.isShowAvatar,
33
+ isShowPhone = props.isShowPhone,
34
+ isShowEmail = props.isShowEmail,
35
+ horizontalGap = props.horizontalGap,
36
+ verticalGap = props.verticalGap,
37
+ _onSave = props.onSave,
38
+ _onDelete = props.onDelete,
39
+ _onCancel = props.onCancel;
40
+ var context = useEngineContext();
41
+ 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');
42
+ var _useState = useState(false),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ modalVisible = _useState2[0],
45
+ setModalVisible = _useState2[1];
46
+ var isHorizontal = useMemo(function () {
47
+ return direction === 'horizontal';
48
+ }, [direction]);
49
+ var displayName = useMemo(function () {
50
+ var _ref = dataSource || {},
51
+ first_name = _ref.first_name,
52
+ last_name = _ref.last_name;
53
+ if (!first_name && !last_name) {
54
+ return defaultName || '';
55
+ }
56
+ return "".concat(first_name || '', " ").concat(last_name || '');
57
+ }, [dataSource, defaultName]);
58
+ var displayPhone = useMemo(function () {
59
+ var _ref2 = (dataSource === null || dataSource === void 0 ? void 0 : dataSource.phone) || {},
60
+ country_calling_code = _ref2.country_calling_code,
61
+ phone = _ref2.phone;
62
+ if (!country_calling_code || !phone) {
63
+ return '';
64
+ }
65
+ // 需要对country_calling_code做兼容处理,部分数据可能没有+号前缀
66
+ var countryCallingCode = country_calling_code !== null && country_calling_code !== void 0 && country_calling_code.startsWith('+') ? country_calling_code : "+".concat(country_calling_code);
67
+ return "".concat(countryCallingCode || '', " ").concat(phone || '');
68
+ }, [dataSource === null || dataSource === void 0 ? void 0 : dataSource.phone]);
69
+ var isEmpty = useMemo(function () {
70
+ var _dataSource$phone;
71
+ 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);
72
+ }, [dataSource]);
73
+ var handleClick = function handleClick() {
74
+ console.log('handleClick');
75
+ setModalVisible(true);
76
+ };
77
+ var _rightActions = useMemo(function () {
78
+ var deleteAction = {
79
+ key: 'delete',
80
+ text: /*#__PURE__*/React.createElement("div", {
81
+ style: {
82
+ display: 'flex',
83
+ justifyContent: 'center',
84
+ alignItems: 'center',
85
+ color: 'white',
86
+ cursor: 'pointer',
87
+ padding: '10px 0px',
88
+ borderRadius: '8px'
89
+ }
90
+ }, /*#__PURE__*/React.createElement(Iconfont, {
91
+ type: "pisell2-trash-01",
92
+ style: {
93
+ fontSize: 20,
94
+ marginRight: 4
95
+ }
96
+ }), /*#__PURE__*/React.createElement("span", {
97
+ style: {
98
+ fontSize: 12,
99
+ fontWeight: 500
100
+ }
101
+ }, locales.getText('pisell2.text.contact-info.actions.delete'))),
102
+ color: 'danger',
103
+ onClick: function onClick(e) {
104
+ e.preventDefault();
105
+ e.stopPropagation();
106
+ _onDelete === null || _onDelete === void 0 || _onDelete();
107
+ }
108
+ };
109
+ return [deleteAction];
110
+ }, [dataSource, _onDelete]);
111
+ var renderContent = function renderContent() {
112
+ var _props$style;
113
+ return /*#__PURE__*/React.createElement("div", {
114
+ className: "".concat(PREFIX, "__").concat(direction),
115
+ style: {
116
+ gap: verticalGap,
117
+ padding: (props === null || props === void 0 || (_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.padding) || '8px'
118
+ }
119
+ }, isHorizontal ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
120
+ className: "".concat(PREFIX, "__horizontal-left"),
121
+ style: {
122
+ gap: horizontalGap
123
+ }
124
+ }, isShowAvatar && /*#__PURE__*/React.createElement(Avatar, {
125
+ config: props.avatar,
126
+ name: displayName,
127
+ cover: ''
128
+ }), /*#__PURE__*/React.createElement("div", {
129
+ className: "".concat(PREFIX, "__horizontal-left-content"),
130
+ style: {
131
+ gap: verticalGap
132
+ }
133
+ }, isEmpty ? /*#__PURE__*/React.createElement("div", {
134
+ className: "".concat(PREFIX, "__empty-description")
135
+ }, placeholder || locales.getText('pisell2.text.contact-info.placeholder')) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
136
+ className: "".concat(PREFIX, "__name-horizontal-container")
137
+ }, /*#__PURE__*/React.createElement("span", {
138
+ className: "".concat(PREFIX, "__name-horizontal"),
139
+ style: props.nameStyle
140
+ }, displayName), isShowPhone && displayPhone && /*#__PURE__*/React.createElement("span", {
141
+ className: "".concat(PREFIX, "__phone-horizontal"),
142
+ style: props.textStyle
143
+ }, "(", displayPhone, ")")), isShowEmail && (dataSource === null || dataSource === void 0 ? void 0 : dataSource.email) && /*#__PURE__*/React.createElement("div", {
144
+ className: "".concat(PREFIX, "__text"),
145
+ style: props.textStyle
146
+ }, dataSource === null || dataSource === void 0 ? void 0 : dataSource.email)))), /*#__PURE__*/React.createElement("div", {
147
+ className: "".concat(PREFIX, "__horizontal-right")
148
+ }, /*#__PURE__*/React.createElement(Iconfont, {
149
+ type: isEmpty ? 'pisell2-plus-circle' : 'pisell2-edit-05',
150
+ className: "".concat(PREFIX, "__horizontal-right-icon")
151
+ }))) : /*#__PURE__*/React.createElement(React.Fragment, null, isShowAvatar && /*#__PURE__*/React.createElement(Avatar, {
152
+ config: props.avatar,
153
+ name: 'hhhhh',
154
+ cover: ''
155
+ }), isEmpty ? /*#__PURE__*/React.createElement("div", {
156
+ className: "".concat(PREFIX, "__empty-description")
157
+ }, placeholder || locales.getText('pisell2.text.contact-info.placeholder')) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
158
+ className: "".concat(PREFIX, "__name"),
159
+ style: props.nameStyle
160
+ }, displayName), isShowPhone && displayPhone && /*#__PURE__*/React.createElement("div", {
161
+ className: "".concat(PREFIX, "__text"),
162
+ style: props.textStyle
163
+ }, displayPhone), isShowEmail && (dataSource === null || dataSource === void 0 ? void 0 : dataSource.email) && /*#__PURE__*/React.createElement("div", {
164
+ className: "".concat(PREFIX, "__text"),
165
+ style: props.textStyle
166
+ }, dataSource === null || dataSource === void 0 ? void 0 : dataSource.email))));
167
+ };
168
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
169
+ className: "".concat(PREFIX),
170
+ style: _objectSpread(_objectSpread({}, props.style || {}), {}, {
171
+ padding: 0
172
+ }),
173
+ onClick: handleClick
174
+ }, isShowDelete && !isEmpty ? /*#__PURE__*/React.createElement(SwipeAction, {
175
+ closeOnAction: false,
176
+ rightActions: _rightActions,
177
+ style: {
178
+ borderRadius: (props === null || props === void 0 || (_props$style2 = props.style) === null || _props$style2 === void 0 ? void 0 : _props$style2.borderRadius) || 0
179
+ }
180
+ }, renderContent()) : renderContent()), /*#__PURE__*/React.createElement(ContactInfoModal, {
181
+ open: modalVisible,
182
+ dataSource: dataSource,
183
+ isShowDelete: isShowDelete,
184
+ onCancel: function onCancel() {
185
+ setModalVisible(false);
186
+ _onCancel === null || _onCancel === void 0 || _onCancel();
187
+ },
188
+ onSave: function onSave(value) {
189
+ setModalVisible(false);
190
+ _onSave === null || _onSave === void 0 || _onSave(value);
191
+ },
192
+ onDelete: function onDelete() {
193
+ setModalVisible(false);
194
+ _onDelete === null || _onDelete === void 0 || _onDelete();
195
+ }
196
+ }));
197
+ };
198
+ export default ContactInfo;