@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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +9 -1
- package/build/lowcode/preview.js +149 -149
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +8 -8
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +8 -8
- package/es/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
- package/es/components/appointmentBooking/components/Cart/Item/index.js +3 -2
- package/es/components/appointmentBooking/components/ConfirmInformation/index.js +273 -76
- package/es/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
- package/es/components/appointmentBooking/hooks.d.ts +1 -0
- package/es/components/appointmentBooking/hooks.js +30 -30
- package/es/components/appointmentBooking/locales.d.ts +3 -0
- package/es/components/appointmentBooking/locales.js +9 -6
- package/es/components/booking/components/customSelect/index.js +1 -1
- package/es/components/booking/components/footer/index.js +4 -1
- package/es/components/booking/components/footer/utils.js +75 -73
- package/es/components/booking/forms/footer.js +24 -10
- package/es/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
- package/es/components/booking/info/client/index.js +28 -13
- package/es/components/booking/info/clientVariant/hooks/useClientFn.js +16 -10
- package/es/components/booking/info/clientVariant/vertical/SelectDrawer.js +10 -2
- package/es/components/booking/info/clientVariant/vertical/index.js +1 -1
- package/es/components/booking/info/main.js +3 -2
- package/es/components/booking/info/model.js +5 -0
- package/es/components/booking/info2/index.js +3 -2
- package/es/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
- package/es/components/booking/info2/service/contactInfoMode/index.js +94 -0
- package/es/components/booking/locales.d.ts +6 -0
- package/es/components/booking/locales.js +12 -3
- package/es/components/booking/model.d.ts +4 -0
- package/es/components/booking/model.js +3 -0
- package/es/components/ticketBooking/components/ticketBooking/index.less +2 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +3 -1
- package/es/plus/clientName/index.d.ts +4 -0
- package/es/plus/clientName/index.js +18 -0
- package/es/plus/clientName/index.less +10 -0
- package/es/plus/clientName/type.d.ts +13 -0
- package/es/plus/clientName/type.js +1 -0
- package/es/plus/clientName/utils.d.ts +2 -0
- package/es/plus/clientName/utils.js +18 -0
- package/es/plus/contactInfo/components/Avatar/index.d.ts +10 -0
- package/es/plus/contactInfo/components/Avatar/index.js +30 -0
- package/es/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
- package/es/plus/contactInfo/components/SwipeAction/index.js +360 -0
- package/es/plus/contactInfo/components/SwipeAction/index.less +74 -0
- package/es/plus/contactInfo/index.d.ts +6 -0
- package/es/plus/contactInfo/index.js +198 -0
- package/es/plus/contactInfo/index.less +621 -0
- package/es/plus/contactInfo/locales.d.ts +15 -0
- package/es/plus/contactInfo/locales.js +14 -0
- package/es/plus/contactInfo/types.d.ts +91 -0
- package/es/plus/contactInfo/types.js +1 -0
- package/es/plus/contactInfo/utils.d.ts +7 -0
- package/es/plus/contactInfo/utils.js +50 -0
- package/es/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
- package/es/plus/contactInfoModal/ContactInfoContent.js +74 -0
- package/es/plus/contactInfoModal/index.d.ts +41 -0
- package/es/plus/contactInfoModal/index.js +155 -0
- package/es/plus/contactInfoModal/index.less +19 -0
- package/es/plus/contactInfoModal/locales.d.ts +66 -0
- package/es/plus/contactInfoModal/locales.js +65 -0
- package/lib/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
- package/lib/components/appointmentBooking/components/Cart/Item/index.js +5 -3
- package/lib/components/appointmentBooking/components/ConfirmInformation/index.js +156 -13
- package/lib/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
- package/lib/components/appointmentBooking/hooks.d.ts +1 -0
- package/lib/components/appointmentBooking/hooks.js +73 -35
- package/lib/components/appointmentBooking/locales.d.ts +3 -0
- package/lib/components/appointmentBooking/locales.js +6 -3
- package/lib/components/booking/components/customSelect/index.js +1 -1
- package/lib/components/booking/components/footer/index.js +4 -1
- package/lib/components/booking/components/footer/utils.js +93 -68
- package/lib/components/booking/forms/footer.js +29 -11
- package/lib/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
- package/lib/components/booking/info/client/index.js +14 -1
- package/lib/components/booking/info/clientVariant/hooks/useClientFn.js +7 -2
- package/lib/components/booking/info/clientVariant/vertical/SelectDrawer.js +11 -4
- package/lib/components/booking/info/clientVariant/vertical/index.js +34 -17
- package/lib/components/booking/info/main.js +5 -4
- package/lib/components/booking/info/model.js +5 -0
- package/lib/components/booking/info2/index.js +5 -4
- package/lib/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
- package/lib/components/booking/info2/service/contactInfoMode/index.js +111 -0
- package/lib/components/booking/locales.d.ts +6 -0
- package/lib/components/booking/locales.js +12 -3
- package/lib/components/booking/model.d.ts +4 -0
- package/lib/components/booking/model.js +3 -0
- package/lib/components/ticketBooking/components/ticketBooking/index.less +2 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +6 -0
- package/lib/plus/clientName/index.d.ts +4 -0
- package/lib/plus/clientName/index.js +53 -0
- package/lib/plus/clientName/index.less +10 -0
- package/lib/plus/clientName/type.d.ts +13 -0
- package/lib/plus/clientName/type.js +17 -0
- package/lib/plus/clientName/utils.d.ts +2 -0
- package/lib/plus/clientName/utils.js +43 -0
- package/lib/plus/contactInfo/components/Avatar/index.d.ts +10 -0
- package/lib/plus/contactInfo/components/Avatar/index.js +56 -0
- package/lib/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
- package/lib/plus/contactInfo/components/SwipeAction/index.js +373 -0
- package/lib/plus/contactInfo/components/SwipeAction/index.less +74 -0
- package/lib/plus/contactInfo/index.d.ts +6 -0
- package/lib/plus/contactInfo/index.js +226 -0
- package/lib/plus/contactInfo/index.less +621 -0
- package/lib/plus/contactInfo/locales.d.ts +15 -0
- package/lib/plus/contactInfo/locales.js +38 -0
- package/lib/plus/contactInfo/types.d.ts +91 -0
- package/lib/plus/contactInfo/types.js +17 -0
- package/lib/plus/contactInfo/utils.d.ts +7 -0
- package/lib/plus/contactInfo/utils.js +64 -0
- package/lib/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
- package/lib/plus/contactInfoModal/ContactInfoContent.js +129 -0
- package/lib/plus/contactInfoModal/index.d.ts +41 -0
- package/lib/plus/contactInfoModal/index.js +139 -0
- package/lib/plus/contactInfoModal/index.less +19 -0
- package/lib/plus/contactInfoModal/locales.d.ts +66 -0
- package/lib/plus/contactInfoModal/locales.js +89 -0
- package/lowcode/contact-info/fragments/cardStyle.ts +68 -0
- package/lowcode/contact-info/fragments/nameStyle.ts +33 -0
- package/lowcode/contact-info/fragments/pisellAvatar.ts +103 -0
- package/lowcode/contact-info/fragments/textStyle.ts +33 -0
- package/lowcode/contact-info/meta.ts +199 -0
- package/lowcode/contact-info-modal/meta.ts +98 -0
- package/package.json +4 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
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); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { PisellAvatar } from '@pisell/materials';
|
|
4
|
+
import { getAvatarText } from "../../utils";
|
|
5
|
+
import { PREFIX } from "../../index";
|
|
6
|
+
import "../../index.less";
|
|
7
|
+
var Avatar = function Avatar(props) {
|
|
8
|
+
var config = props.config,
|
|
9
|
+
name = props.name,
|
|
10
|
+
cover = props.cover;
|
|
11
|
+
var _ref = config || {},
|
|
12
|
+
useTextAvatar = _ref.useTextAvatar,
|
|
13
|
+
children = _ref.children;
|
|
14
|
+
if (useTextAvatar) {
|
|
15
|
+
var text = children || getAvatarText(name);
|
|
16
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
17
|
+
className: "".concat(PREFIX, "__avatar-wrapper")
|
|
18
|
+
}, /*#__PURE__*/React.createElement(PisellAvatar, _extends({
|
|
19
|
+
className: "".concat(PREFIX, "__avatar")
|
|
20
|
+
}, config || {}), text));
|
|
21
|
+
}
|
|
22
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
23
|
+
className: "".concat(PREFIX, "__avatar-wrapper")
|
|
24
|
+
}, /*#__PURE__*/React.createElement(PisellAvatar, _extends({
|
|
25
|
+
className: "".concat(PREFIX, "__avatar")
|
|
26
|
+
}, config || {}, {
|
|
27
|
+
src: cover || ''
|
|
28
|
+
})));
|
|
29
|
+
};
|
|
30
|
+
export default Avatar;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
declare type NativeProps<S extends string = never> = {
|
|
4
|
+
className?: string;
|
|
5
|
+
style?: React.CSSProperties & Partial<Record<S, string>>;
|
|
6
|
+
};
|
|
7
|
+
declare type PropagationEvent = 'click';
|
|
8
|
+
import './index.less';
|
|
9
|
+
declare type SideType = 'left' | 'right';
|
|
10
|
+
export declare type SwipeActionRef = {
|
|
11
|
+
close: () => void;
|
|
12
|
+
show: (side?: SideType) => void;
|
|
13
|
+
};
|
|
14
|
+
declare type ActionColor = 'light' | 'weak' | 'primary' | 'success' | 'warning' | 'danger';
|
|
15
|
+
export declare type Action = {
|
|
16
|
+
key: string | number;
|
|
17
|
+
text: ReactNode;
|
|
18
|
+
color?: ActionColor | string;
|
|
19
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
20
|
+
style?: React.CSSProperties;
|
|
21
|
+
};
|
|
22
|
+
export declare type SwipeActionProps = {
|
|
23
|
+
rightActions?: Action[];
|
|
24
|
+
leftActions?: Action[];
|
|
25
|
+
onAction?: (action: Action, e: React.MouseEvent) => void;
|
|
26
|
+
closeOnTouchOutside?: boolean;
|
|
27
|
+
closeOnAction?: boolean;
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
stopPropagation?: PropagationEvent[];
|
|
30
|
+
onActionsReveal?: (side: SideType) => void;
|
|
31
|
+
onClose?: () => void;
|
|
32
|
+
escapeDom?: string;
|
|
33
|
+
} & NativeProps<'--background'>;
|
|
34
|
+
export declare const SwipeAction: React.ForwardRefExoticComponent<{
|
|
35
|
+
rightActions?: Action[] | undefined;
|
|
36
|
+
leftActions?: Action[] | undefined;
|
|
37
|
+
onAction?: ((action: Action, e: React.MouseEvent) => void) | undefined;
|
|
38
|
+
closeOnTouchOutside?: boolean | undefined;
|
|
39
|
+
closeOnAction?: boolean | undefined;
|
|
40
|
+
children: ReactNode;
|
|
41
|
+
stopPropagation?: "click"[] | undefined;
|
|
42
|
+
onActionsReveal?: ((side: SideType) => void) | undefined;
|
|
43
|
+
onClose?: (() => void) | undefined;
|
|
44
|
+
escapeDom?: string | undefined;
|
|
45
|
+
} & NativeProps<"--background"> & React.RefAttributes<SwipeActionRef>>;
|
|
46
|
+
export {};
|
|
@@ -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
|
+
}
|