@cloudbase/weda-ui 3.27.3 → 3.28.0

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 (62) hide show
  1. package/dist/configs/components/form-checkbox.d.ts +2 -2
  2. package/dist/configs/components/form-date.d.ts +2 -2
  3. package/dist/configs/components/form-depart-tree-select.d.ts +2 -2
  4. package/dist/configs/components/form-email.d.ts +2 -2
  5. package/dist/configs/components/form-image-uploader.d.ts +2 -2
  6. package/dist/configs/components/form-input.d.ts +2 -2
  7. package/dist/configs/components/form-location.d.ts +2 -2
  8. package/dist/configs/components/form-multi-region.d.ts +2 -2
  9. package/dist/configs/components/form-phone.d.ts +2 -2
  10. package/dist/configs/components/form-radio.d.ts +2 -2
  11. package/dist/configs/components/form-region.d.ts +2 -2
  12. package/dist/configs/components/form-rich-text.d.ts +2 -2
  13. package/dist/configs/components/form-select-multiple.d.ts +2 -2
  14. package/dist/configs/components/form-select.d.ts +2 -2
  15. package/dist/configs/components/form-switch.d.ts +2 -2
  16. package/dist/configs/components/form-text-area.d.ts +2 -2
  17. package/dist/configs/components/form-time.d.ts +2 -2
  18. package/dist/configs/components/form-upload-file.d.ts +2 -2
  19. package/dist/configs/components/form-url.d.ts +2 -2
  20. package/dist/configs/components/form-user-tree-select.d.ts +2 -2
  21. package/dist/configs/components/image.d.ts +2 -2
  22. package/dist/configs/components/scrollView.d.ts +145 -0
  23. package/dist/configs/components/scrollView.js +356 -0
  24. package/dist/configs/components/wd-bubble.d.ts +3 -3
  25. package/dist/configs/components/wd-form.d.ts +4 -4
  26. package/dist/configs/components/wd-location.d.ts +2 -0
  27. package/dist/configs/components/wd-location.js +1 -1
  28. package/dist/configs/components/wd-menu-layout.d.ts +6 -6
  29. package/dist/configs/components/wd-menu-list.d.ts +2 -2
  30. package/dist/configs/index.d.ts +266 -536
  31. package/dist/configs/index.js +1 -1
  32. package/dist/configs/type-utils/type-form.d.ts +2 -0
  33. package/dist/configs/type-utils/type-form.js +15 -0
  34. package/dist/style/weda-ui.min.css +2 -2
  35. package/dist/web/components/form/location/components/LocationH5/location.h5.js +13 -1
  36. package/dist/web/components/form/location/components/LocationPC/location.PC.js +12 -0
  37. package/dist/web/components/form-date/index.d.ts +1 -1
  38. package/dist/web/components/form-depart-tree-select/index.d.ts +1 -1
  39. package/dist/web/components/form-email/index.d.ts +1 -1
  40. package/dist/web/components/form-image-uploader/index.d.ts +1 -1
  41. package/dist/web/components/form-input/index.d.ts +1 -1
  42. package/dist/web/components/form-input-hooks/index.d.ts +1 -1
  43. package/dist/web/components/form-location/index.d.ts +1 -1
  44. package/dist/web/components/form-multi-region/index.d.ts +1 -1
  45. package/dist/web/components/form-phone/index.d.ts +1 -1
  46. package/dist/web/components/form-radio/index.d.ts +1 -1
  47. package/dist/web/components/form-region/index.d.ts +1 -1
  48. package/dist/web/components/form-rich-text/index.d.ts +1 -1
  49. package/dist/web/components/form-select/index.d.ts +1 -1
  50. package/dist/web/components/form-select-multiple/index.d.ts +1 -1
  51. package/dist/web/components/form-switch/index.d.ts +1 -1
  52. package/dist/web/components/form-text-area/index.d.ts +1 -1
  53. package/dist/web/components/form-time/index.d.ts +1 -1
  54. package/dist/web/components/form-upload-file/index.d.ts +1 -1
  55. package/dist/web/components/form-url/index.d.ts +1 -1
  56. package/dist/web/components/form-user-tree-select/index.d.ts +1 -1
  57. package/dist/web/components/grid/col.d.ts +2 -2
  58. package/dist/web/components/scrollView/index.d.ts +5 -23
  59. package/dist/web/components/scrollView/index.js +141 -50
  60. package/dist/web/components/wd-member/wd-member.css +3 -7
  61. package/package.json +6 -8
  62. package/dist/configs/components/scrollVeiw.json +0 -312
@@ -72,6 +72,15 @@ export default function LocationH5(props) {
72
72
  }
73
73
  }, [locationType]);
74
74
  useEffect(() => {
75
+ if (!value) {
76
+ setLocation({
77
+ poiname: '',
78
+ detailedAddress: '',
79
+ latlng: { lat: 39.98410411, lng: 116.307503 },
80
+ });
81
+ setUserSelectStatus('');
82
+ return;
83
+ }
75
84
  if (checkCustomLocation(value)) {
76
85
  // 表单为新增时回传点位信息
77
86
  const { address, detailedAddress, geopoint } = value;
@@ -262,6 +271,9 @@ export default function LocationH5(props) {
262
271
  };
263
272
  const getIsShowMap = () => {
264
273
  let status = showMap;
274
+ if (!value) {
275
+ return false;
276
+ }
265
277
  if (locationType === 1 && location.locationType === 1) {
266
278
  status = false;
267
279
  }
@@ -302,7 +314,7 @@ export default function LocationH5(props) {
302
314
  'form-location-addr-vertical': layout === 'vertical',
303
315
  [`${classPrefix}-form-read-color`]: readOnly,
304
316
  'form-location-addr--disabled': disabled,
305
- }), children: [_jsx("div", { className: "form-location-con__icon" }), _jsxs("div", { className: "form-location-con__text", children: [location.poiname && (_jsx(WdText, { text: location.poiname, className: "form-location-addr-title wd-location__info" })), showLngLat && (_jsx("div", { className: "form-location-addr-lat", children: location.latlng ? `${location.latlng.lat}N,${location.latlng.lng}E` : '' }))] })] }))] })] }), getIsShowMap() && (_jsx("div", { className: "form-map-container", style: { height: '200px' }, children: _jsx(MapView, { APIKEY: APIKEY, drag: drag, zoom: zoom, latlng: location.latlng }) })), _jsx(SelectModal, { isSelectMapVisible: isSelectMapVisible, setIsSelectMapVisible: setIsSelectMapVisible, location: location, currentLocations: currentLocations.current, setLocation: setLocation, chooseLocation: onChangeLocation, APIKEY: APIKEY, locationRange: locationRange, customRange: customRange })] }));
317
+ }), children: [_jsx("div", { className: "form-location-con__icon" }), _jsxs("div", { className: "form-location-con__text", children: [location.poiname && (_jsx(WdText, { text: location.poiname, maxLines: 2, overflow: true, className: "form-location-addr-title wd-location__info" })), showLngLat && (_jsx("div", { className: "form-location-addr-lat", children: location.latlng ? `${location.latlng.lat}N,${location.latlng.lng}E` : '' }))] })] }))] })] }), getIsShowMap() && (_jsx("div", { className: "form-map-container", style: { height: '200px' }, children: _jsx(MapView, { APIKEY: APIKEY, drag: drag, zoom: zoom, latlng: location.latlng }) })), _jsx(SelectModal, { isSelectMapVisible: isSelectMapVisible, setIsSelectMapVisible: setIsSelectMapVisible, location: location, currentLocations: currentLocations.current, setLocation: setLocation, chooseLocation: onChangeLocation, APIKEY: APIKEY, locationRange: locationRange, customRange: customRange })] }));
306
318
  return renderDecorator(LocationEl, decorator)({
307
319
  id,
308
320
  className: cls,
@@ -77,6 +77,15 @@ export default function LocationPC(props) {
77
77
  }
78
78
  }, [locationType]);
79
79
  useEffect(() => {
80
+ if (!value) {
81
+ setLocation({
82
+ poiname: '',
83
+ detailedAddress: '',
84
+ latlng: { lat: 39.98410411, lng: 116.307503 },
85
+ });
86
+ setUserSelectStatus('');
87
+ return;
88
+ }
80
89
  if (checkCustomLocation(value)) {
81
90
  // 表单为新增时回传点位信息
82
91
  const { address, detailedAddress, geopoint } = value;
@@ -180,6 +189,9 @@ export default function LocationPC(props) {
180
189
  }, [dataSource]);
181
190
  const getIsShowMap = () => {
182
191
  let status = showMap;
192
+ if (!value) {
193
+ return false;
194
+ }
183
195
  if (locationType === 1 && location.locationType === 1) {
184
196
  status = false;
185
197
  }
@@ -16,7 +16,7 @@ declare const FormDate: React.ForwardRefExoticComponent<CommonPropsType & {
16
16
  placeholder: string;
17
17
  end: string;
18
18
  start: string;
19
- layout: "" | "vertical" | "horizontal";
19
+ layout: "" | "horizontal" | "vertical";
20
20
  mode: "datetime" | "year" | "month" | "day";
21
21
  clearable: boolean;
22
22
  labelVisible: boolean;
@@ -14,7 +14,7 @@ declare const FormDepartTreeSelect: React.ForwardRefExoticComponent<CommonPropsT
14
14
  size: "s" | "m" | "l" | "full";
15
15
  disabled: boolean;
16
16
  placeholder: string;
17
- layout: "" | "vertical" | "horizontal";
17
+ layout: "" | "horizontal" | "vertical";
18
18
  multiple: boolean;
19
19
  labelVisible: boolean;
20
20
  departmentScope: string[];
@@ -16,7 +16,7 @@ declare const FormEmail: React.ForwardRefExoticComponent<CommonPropsType & {
16
16
  disabled: boolean;
17
17
  maxLength: number;
18
18
  placeholder: string;
19
- layout: "" | "vertical" | "horizontal";
19
+ layout: "" | "horizontal" | "vertical";
20
20
  clearable: boolean;
21
21
  labelVisible: boolean;
22
22
  requiredFlag: boolean;
@@ -12,7 +12,7 @@ declare const FormImageUploader: React.ForwardRefExoticComponent<CommonPropsType
12
12
  value: string[];
13
13
  required: boolean;
14
14
  disabled: boolean;
15
- layout: "" | "vertical" | "horizontal";
15
+ layout: "" | "horizontal" | "vertical";
16
16
  single: boolean;
17
17
  maxUploadCount: number;
18
18
  labelVisible: boolean;
@@ -17,7 +17,7 @@ declare const WdInput: React.ForwardRefExoticComponent<CommonPropsType & {
17
17
  disabled: boolean;
18
18
  maxLength: number;
19
19
  placeholder: string;
20
- layout: "" | "vertical" | "horizontal";
20
+ layout: "" | "horizontal" | "vertical";
21
21
  clearable: boolean;
22
22
  labelVisible: boolean;
23
23
  isNickNameType: boolean;
@@ -43,7 +43,7 @@ export declare function useFormInputTrait<Value = unknown>(inputParams: FormInpu
43
43
  /**
44
44
  * @deprecated 在Wd组件中应该直接用输入的那个,通过css联动而不是js
45
45
  */
46
- layout: "vertical" | "horizontal";
46
+ layout: "horizontal" | "vertical";
47
47
  initValidate: (validateState: any, validateErrorMsg: any) => void;
48
48
  };
49
49
  export {};
@@ -19,7 +19,7 @@ declare const FormLocation: React.ForwardRefExoticComponent<CommonPropsType & {
19
19
  };
20
20
  required: boolean;
21
21
  disabled: boolean;
22
- layout: "" | "vertical" | "horizontal";
22
+ layout: "" | "horizontal" | "vertical";
23
23
  zoom: boolean;
24
24
  locationType: 2 | 1;
25
25
  labelVisible: boolean;
@@ -14,7 +14,7 @@ declare const FormMultiRegion: React.ForwardRefExoticComponent<CommonPropsType &
14
14
  size: "s" | "m" | "l" | "full";
15
15
  disabled: boolean;
16
16
  placeholder: string;
17
- layout: "" | "vertical" | "horizontal";
17
+ layout: "" | "horizontal" | "vertical";
18
18
  regionType: "levelThree" | "levelTwo" | "levelOne";
19
19
  labelVisible: boolean;
20
20
  requiredFlag: boolean;
@@ -15,7 +15,7 @@ declare const FormPhone: React.ForwardRefExoticComponent<CommonPropsType & {
15
15
  size: "s" | "m" | "l" | "full";
16
16
  disabled: boolean;
17
17
  placeholder: string;
18
- layout: "" | "vertical" | "horizontal";
18
+ layout: "" | "horizontal" | "vertical";
19
19
  clearable: boolean;
20
20
  labelVisible: boolean;
21
21
  requiredFlag: boolean;
@@ -17,7 +17,7 @@ declare const FormRadio: React.ForwardRefExoticComponent<CommonPropsType & {
17
17
  value: string;
18
18
  required: boolean;
19
19
  disabled: boolean;
20
- layout: "" | "vertical" | "horizontal";
20
+ layout: "" | "horizontal" | "vertical";
21
21
  range: {
22
22
  label: string;
23
23
  value: string;
@@ -15,7 +15,7 @@ declare const FormRegion: React.ForwardRefExoticComponent<CommonPropsType & {
15
15
  disabled: boolean;
16
16
  placeholder: string;
17
17
  separator: string;
18
- layout: "" | "vertical" | "horizontal";
18
+ layout: "" | "horizontal" | "vertical";
19
19
  labelVisible: boolean;
20
20
  requiredFlag: boolean;
21
21
  requiredMsg: string;
@@ -12,7 +12,7 @@ declare const FormRichText: React.ForwardRefExoticComponent<CommonPropsType & {
12
12
  value: string;
13
13
  required: boolean;
14
14
  disabled: boolean;
15
- layout: "" | "vertical" | "horizontal";
15
+ layout: "" | "horizontal" | "vertical";
16
16
  readOnly: boolean;
17
17
  acceptTypes: ("image/*" | "image/jpeg" | "image/png" | "image/bmp" | "image/tif" | "image/tiff")[];
18
18
  maxSize: number;
@@ -15,7 +15,7 @@ declare const FormSelect: React.ForwardRefExoticComponent<CommonPropsType & {
15
15
  size: "s" | "m" | "l" | "full";
16
16
  disabled: boolean;
17
17
  placeholder: string;
18
- layout: "" | "vertical" | "horizontal";
18
+ layout: "" | "horizontal" | "vertical";
19
19
  range: {
20
20
  label: string;
21
21
  value: string;
@@ -15,7 +15,7 @@ declare const FormSelectMultiple: React.ForwardRefExoticComponent<CommonPropsTyp
15
15
  size: "s" | "m" | "l" | "full";
16
16
  disabled: boolean;
17
17
  placeholder: string;
18
- layout: "" | "vertical" | "horizontal";
18
+ layout: "" | "horizontal" | "vertical";
19
19
  range: {
20
20
  label: string;
21
21
  value: string;
@@ -12,7 +12,7 @@ declare const FormSwitch: React.ForwardRefExoticComponent<CommonPropsType & {
12
12
  value: boolean;
13
13
  required: boolean;
14
14
  disabled: boolean;
15
- layout: "" | "vertical" | "horizontal";
15
+ layout: "" | "horizontal" | "vertical";
16
16
  labelVisible: boolean;
17
17
  requiredFlag: boolean;
18
18
  requiredMsg: string;
@@ -16,7 +16,7 @@ declare const FormTextArea: React.ForwardRefExoticComponent<CommonPropsType & {
16
16
  disabled: boolean;
17
17
  maxLength: number;
18
18
  placeholder: string;
19
- layout: "" | "vertical" | "horizontal";
19
+ layout: "" | "horizontal" | "vertical";
20
20
  labelVisible: boolean;
21
21
  counterVisible: boolean;
22
22
  requiredFlag: boolean;
@@ -16,7 +16,7 @@ declare const FormTime: React.ForwardRefExoticComponent<CommonPropsType & {
16
16
  placeholder: string;
17
17
  end: string;
18
18
  start: string;
19
- layout: "" | "vertical" | "horizontal";
19
+ layout: "" | "horizontal" | "vertical";
20
20
  clearable: boolean;
21
21
  labelVisible: boolean;
22
22
  requiredFlag: boolean;
@@ -12,7 +12,7 @@ declare const FormUploadFile: React.ForwardRefExoticComponent<CommonPropsType &
12
12
  value: string[];
13
13
  required: boolean;
14
14
  disabled: boolean;
15
- layout: "" | "vertical" | "horizontal";
15
+ layout: "" | "horizontal" | "vertical";
16
16
  single: boolean;
17
17
  maxUploadCount: number;
18
18
  labelVisible: boolean;
@@ -16,7 +16,7 @@ declare const FormUrl: React.ForwardRefExoticComponent<CommonPropsType & {
16
16
  disabled: boolean;
17
17
  maxLength: number;
18
18
  placeholder: string;
19
- layout: "" | "vertical" | "horizontal";
19
+ layout: "" | "horizontal" | "vertical";
20
20
  clearable: boolean;
21
21
  labelVisible: boolean;
22
22
  requiredFlag: boolean;
@@ -14,7 +14,7 @@ declare const FormUserTreeSelect: React.ForwardRefExoticComponent<CommonPropsTyp
14
14
  size: "s" | "m" | "l" | "full";
15
15
  disabled: boolean;
16
16
  placeholder: string;
17
- layout: "" | "vertical" | "horizontal";
17
+ layout: "" | "horizontal" | "vertical";
18
18
  multiple: boolean;
19
19
  where: any[];
20
20
  labelVisible: boolean;
@@ -3,11 +3,11 @@ import type { CommonPropsType } from '../../types';
3
3
  import './style';
4
4
  declare const _default: React.ForwardRefExoticComponent<CommonPropsType & {
5
5
  alignSelf?: string;
6
- widthType: ("fit-content" | "auto-fill" | (1 | "1") | (2 | "2") | (3 | "3") | (4 | "4") | (5 | "5") | (6 | "6") | (7 | "7") | (8 | "8") | ("9" | 9) | (10 | "10") | (11 | "11") | (12 | "12")) | {
6
+ widthType: ("fit-content" | "auto-fill" | (1 | "1") | (2 | "2") | (3 | "3") | (4 | "4") | (5 | "5") | (6 | "6") | (7 | "7") | (8 | "8") | (9 | "9") | (10 | "10") | (11 | "11") | (12 | "12")) | {
7
7
  type: string;
8
8
  value: string;
9
9
  };
10
- lgWidthType: ("fit-content" | "auto-fill" | (1 | "1") | (2 | "2") | (3 | "3") | (4 | "4") | (5 | "5") | (6 | "6") | (7 | "7") | (8 | "8") | ("9" | 9) | (10 | "10") | (11 | "11") | (12 | "12")) | {
10
+ lgWidthType: ("fit-content" | "auto-fill" | (1 | "1") | (2 | "2") | (3 | "3") | (4 | "4") | (5 | "5") | (6 | "6") | (7 | "7") | (8 | "8") | (9 | "9") | (10 | "10") | (11 | "11") | (12 | "12")) | {
11
11
  type: string;
12
12
  value: string;
13
13
  };
@@ -1,26 +1,8 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import type { CommonPropsType } from '../../types';
3
+ import type { DataType } from '../../../configs/components/scrollView';
3
4
  import './style';
4
- export interface PropsType extends CommonPropsType {
5
- scrollX?: boolean;
6
- scrollY?: boolean;
7
- scrollTop?: number;
8
- scrollLeft?: number;
9
- scrollIntoView?: string;
10
- upperThreshold?: number;
11
- lowerThreshold?: number;
5
+ export interface PropsType extends CommonPropsType, DataType {
12
6
  }
13
- export default function ScrollView({ id, scrollX, scrollY, style, scrollTop, scrollLeft, scrollIntoView, className, children, upperThreshold, lowerThreshold, events, }: {
14
- id: any;
15
- scrollX?: boolean;
16
- scrollY?: boolean;
17
- style: any;
18
- scrollTop: any;
19
- scrollLeft: any;
20
- scrollIntoView: any;
21
- className: any;
22
- children: any;
23
- upperThreshold?: number;
24
- lowerThreshold?: number;
25
- events: any;
26
- }): JSX.Element;
7
+ declare const _default: React.ForwardRefExoticComponent<PropsType & React.RefAttributes<HTMLDivElement>>;
8
+ export default _default;
@@ -1,38 +1,71 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import * as React from 'react';
2
+ import { useState, forwardRef, useEffect, useRef, useCallback } from 'react';
3
+ import { useDebouncedCallback } from '@react-hookz/web';
3
4
  import classNames from '../../utils/classnames';
5
+ import { useSetWidgetApi } from '../../utils/widget-api/use-set-widget-api';
4
6
  import './style';
5
- export default function ScrollView({ id, scrollX = false, scrollY = true, style, scrollTop, scrollLeft, scrollIntoView, className, children, upperThreshold = 50, lowerThreshold = 50, events, }) {
6
- const [toUpper, setToUpper] = React.useState(false);
7
- const [toLower, setToLower] = React.useState(false);
8
- const [scrollLeftPos, setScrollLeftPos] = React.useState(0);
9
- const [scrollTopPos, setScrollTopPos] = React.useState(0);
10
- const scrollViewRef = React.useRef(null);
11
- const handleOnScroll = function (e) {
7
+ export default forwardRef(function ScrollView({ id, scrollX = false, scrollY = true, style, scrollTop, scrollLeft, scrollIntoView, className, children, upperThreshold = 50, lowerThreshold = 50, events, observerSelector = [], rootMargin, }, ref) {
8
+ const [ready, setReady] = useState(false);
9
+ const [toUpper, setToUpper] = useState(false);
10
+ const [toLower, setToLower] = useState(false);
11
+ const [scrollLeftPos, setScrollLeftPos] = useState(0);
12
+ const [scrollTopPos, setScrollTopPos] = useState(0);
13
+ const scrollViewRef = useRef(null);
14
+ const handleScrollToTarget = useDebouncedCallback((element, option) => {
15
+ const { onEnter = () => { } } = option;
16
+ const _rootMargin = ['top', 'right', 'bottom', 'left'].map((dir) => parseInt((rootMargin === null || rootMargin === void 0 ? void 0 : rootMargin[dir]) || 0)).join('px ') + 'px';
17
+ // eslint-disable-next-line compat/compat
18
+ const observer = new IntersectionObserver((entries) => {
19
+ entries.forEach((entry) => {
20
+ if (entry.isIntersecting) {
21
+ // 当元素进入视口时执行
22
+ // 执行你的动作
23
+ onEnter(entry);
24
+ }
25
+ });
26
+ }, {
27
+ threshold: 0.5,
28
+ rootMargin: _rootMargin,
29
+ });
30
+ [].concat(element).forEach((el) => {
31
+ var _a;
32
+ let selector = el === null || el === void 0 ? void 0 : el.replace(/^#/, '').replace(/^\./, '');
33
+ if (selector && scrollViewRef.current) {
34
+ if (el.startsWith('#')) {
35
+ selector = document.getElementById(selector);
36
+ }
37
+ else {
38
+ selector = (_a = scrollViewRef.current.getElementsByClassName(selector)) === null || _a === void 0 ? void 0 : _a[0];
39
+ }
40
+ selector && observer.observe(selector);
41
+ }
42
+ });
43
+ }, [scrollViewRef, rootMargin], 500);
44
+ const handleOnScroll = useCallback((e) => {
45
+ var _a;
46
+ const target = e.target;
12
47
  const detail = {
13
- scrollLeft: e.target.scrollLeft,
14
- scrollTop: e.target.scrollTop,
15
- scrollHeight: e.target.scrollHeight,
16
- scrollWidth: e.target.scrollWidth,
17
- clientHeight: e.target.clientHeight,
18
- clientWidth: e.target.clientWidth,
48
+ scrollLeft: target.scrollLeft,
49
+ scrollTop: target.scrollTop,
50
+ scrollHeight: target.scrollHeight,
51
+ scrollWidth: target.scrollWidth,
52
+ clientHeight: target.clientHeight,
53
+ clientWidth: target.clientWidth,
19
54
  };
20
- const deltaY = scrollY ? e.target.scrollTop - scrollTopPos : 0;
21
- const deltaX = scrollX ? e.target.scrollLeft - scrollLeftPos : 0;
55
+ const deltaY = scrollY ? target.scrollTop - scrollTopPos : 0;
56
+ const deltaX = scrollX ? target.scrollLeft - scrollLeftPos : 0;
22
57
  let delta;
23
58
  // 横向滚动
24
59
  if (Math.abs(deltaX) > Math.abs(deltaY)) {
25
60
  delta = deltaX;
26
- setScrollLeftPos(e.target.scrollLeft);
27
- if (scrollX && e.target.scrollLeft <= upperThreshold) {
61
+ setScrollLeftPos(target.scrollLeft);
62
+ if (scrollX && target.scrollLeft <= upperThreshold) {
28
63
  delta < 0 && setToUpper(true);
29
64
  }
30
65
  else {
31
66
  setToUpper(false);
32
67
  }
33
- if (scrollX &&
34
- e.target.scrollLeft + e.target.offsetWidth + lowerThreshold >=
35
- e.target.scrollWidth) {
68
+ if (scrollX && target.scrollLeft + target.offsetWidth + lowerThreshold >= target.scrollWidth) {
36
69
  delta > 0 && setToLower(true);
37
70
  }
38
71
  else {
@@ -41,52 +74,104 @@ export default function ScrollView({ id, scrollX = false, scrollY = true, style,
41
74
  }
42
75
  else {
43
76
  delta = deltaY;
44
- setScrollTopPos(e.target.scrollTop);
45
- if (scrollY && e.target.scrollTop <= upperThreshold) {
77
+ setScrollTopPos(target.scrollTop);
78
+ if (scrollY && target.scrollTop <= upperThreshold) {
46
79
  delta < 0 && setToUpper(true);
47
80
  }
48
81
  else {
49
82
  setToUpper(false);
50
83
  }
51
- if (scrollY &&
52
- e.target.scrollTop + e.target.offsetHeight + lowerThreshold >=
53
- e.target.scrollHeight) {
84
+ if (scrollY && target.scrollTop + target.offsetHeight + lowerThreshold >= target.scrollHeight) {
54
85
  delta > 0 && setToLower(true);
55
86
  }
56
87
  else {
57
88
  setToLower(false);
58
89
  }
59
90
  }
60
- events.scroll(detail, { originEvent: e });
61
- };
62
- React.useEffect(() => {
63
- scrollViewRef.current.scrollTop = scrollTop;
91
+ if (observerSelector.length) {
92
+ handleScrollToTarget(observerSelector, {
93
+ onEnter: (element) => {
94
+ if (typeof (events === null || events === void 0 ? void 0 : events.scrollToTarget) === 'function') {
95
+ element.id = element.target.id;
96
+ events.scrollToTarget(element);
97
+ }
98
+ },
99
+ });
100
+ }
101
+ (_a = events === null || events === void 0 ? void 0 : events.scroll) === null || _a === void 0 ? void 0 : _a.call(events, detail, { originEvent: e });
102
+ }, [
103
+ scrollY,
104
+ scrollTopPos,
105
+ scrollX,
106
+ scrollLeftPos,
107
+ observerSelector,
108
+ events,
109
+ upperThreshold,
110
+ lowerThreshold,
111
+ handleScrollToTarget,
112
+ ]);
113
+ const handleScrollToView = useCallback((_scrollIntoView = scrollIntoView) => {
114
+ var _a;
115
+ let selector = _scrollIntoView !== null && _scrollIntoView !== void 0 ? _scrollIntoView : scrollIntoView;
116
+ selector = _scrollIntoView === null || _scrollIntoView === void 0 ? void 0 : _scrollIntoView.replace(/^#/, '').replace(/^\./, '');
117
+ if (selector && scrollViewRef.current) {
118
+ if (_scrollIntoView.startsWith('#') || selector === scrollIntoView) {
119
+ selector = document.getElementById(selector);
120
+ }
121
+ else {
122
+ selector = (_a = scrollViewRef.current.getElementsByClassName(selector)) === null || _a === void 0 ? void 0 : _a[0];
123
+ }
124
+ if (selector) {
125
+ scrollY &&
126
+ scrollViewRef.current.scrollTo({
127
+ top: selector.offsetTop || 0,
128
+ behavior: 'smooth',
129
+ });
130
+ scrollX &&
131
+ scrollViewRef.current.scrollTo({
132
+ left: selector.offsetLeft || 0,
133
+ behavior: 'smooth',
134
+ });
135
+ }
136
+ }
137
+ }, [scrollIntoView, scrollX, scrollY]);
138
+ useEffect(() => {
139
+ if (scrollViewRef.current && scrollTop !== undefined) {
140
+ scrollViewRef.current.scrollTop = scrollTop;
141
+ }
64
142
  }, [scrollTop]);
65
- React.useEffect(() => {
66
- scrollViewRef.current.scrollLeft = scrollLeft;
143
+ useEffect(() => {
144
+ if (scrollViewRef.current && scrollLeft !== undefined) {
145
+ scrollViewRef.current.scrollLeft = scrollLeft;
146
+ }
67
147
  }, [scrollLeft]);
68
- React.useEffect(() => {
69
- toUpper && events.scrolltoupper();
70
- }, [toUpper]);
71
- React.useEffect(() => {
72
- toLower && events.scrolltolower();
73
- }, [toLower]);
74
- React.useEffect(() => {
75
- if (scrollIntoView) {
76
- const children = scrollViewRef.current.children;
77
- const item = Array.from(children).find((item) => item && item.id === scrollIntoView);
78
- scrollY && (scrollViewRef.current.scrollTop = (item === null || item === void 0 ? void 0 : item.offsetTop) || 0);
79
- scrollX && (scrollViewRef.current.scrollLeft = (item === null || item === void 0 ? void 0 : item.offsetLeft) || 0);
80
- // console.log('children', children, item)
148
+ useEffect(() => {
149
+ var _a;
150
+ toUpper && ((_a = events === null || events === void 0 ? void 0 : events.scrolltoupper) === null || _a === void 0 ? void 0 : _a.call(events));
151
+ }, [toUpper, events]);
152
+ useEffect(() => {
153
+ var _a;
154
+ toLower && ((_a = events === null || events === void 0 ? void 0 : events.scrolltolower) === null || _a === void 0 ? void 0 : _a.call(events));
155
+ }, [toLower, events]);
156
+ useEffect(() => {
157
+ if (ready) {
158
+ handleScrollToView();
159
+ }
160
+ }, [handleScrollToView, ready]);
161
+ useEffect(() => {
162
+ if ((scrollViewRef.current, !ready)) {
163
+ setReady(true);
164
+ if ((events === null || events === void 0 ? void 0 : events.onReady) && typeof (events === null || events === void 0 ? void 0 : events.onReady) === 'function') {
165
+ events.onReady({ scrollViewContext: scrollViewRef.current });
166
+ }
81
167
  }
82
- }, [scrollIntoView]);
168
+ }, [events, ready]);
83
169
  const webStyles = {
84
170
  position: 'relative',
85
171
  width: '100%',
86
172
  height: '100%',
87
- // whiteSpace: scroll === 'y' ? 'normal' : 'nowrap',
88
- overflowX: `${scrollX ? 'auto' : 'hidden'}`,
89
- overflowY: `${scrollY ? 'auto' : 'hidden'}`,
173
+ overflowX: scrollX ? 'auto' : 'hidden',
174
+ overflowY: scrollY ? 'auto' : 'hidden',
90
175
  ...style,
91
176
  };
92
177
  const cls = classNames({
@@ -94,5 +179,11 @@ export default function ScrollView({ id, scrollX = false, scrollY = true, style,
94
179
  'g-scroll-view': true,
95
180
  [className]: className,
96
181
  });
182
+ useSetWidgetApi(() => ({
183
+ scrollViewContext: scrollViewRef.current,
184
+ scrollIntoElement: ({ selector }) => {
185
+ handleScrollToView(selector);
186
+ },
187
+ }), [], ref);
97
188
  return (_jsx("div", { id: id, style: webStyles, ref: scrollViewRef, className: cls, onScrollCapture: handleOnScroll, children: children }));
98
- }
189
+ });
@@ -1,12 +1,11 @@
1
1
  /* h5 */
2
2
  .wd-form-item.wd-h5-member-root .weui-cell {
3
3
  padding: 0;
4
+ width: 100%;
4
5
  }
5
6
 
6
7
  /* pc */
7
- .wd-form-item.wd-pc-member-root
8
- .weda-ui-user-selected
9
- .wedatea2td-dropdown-btn.wedatea2td-dropdown__header {
8
+ .wd-form-item.wd-pc-member-root .weda-ui-user-selected .wedatea2td-dropdown-btn.wedatea2td-dropdown__header {
10
9
  border: none;
11
10
  padding: 0;
12
11
  height: 100%;
@@ -14,10 +13,7 @@
14
13
  padding-right: 0 !important;
15
14
  }
16
15
 
17
- .wd-form-item.wd-pc-member-root
18
- .weda-ui-user-selected
19
- .wedatea2td-dropdown__header
20
- .wedatea2td-icon-arrowdown {
16
+ .wd-form-item.wd-pc-member-root .weda-ui-user-selected .wedatea2td-dropdown__header .wedatea2td-icon-arrowdown {
21
17
  display: none;
22
18
  }
23
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/weda-ui",
3
- "version": "3.27.3",
3
+ "version": "3.28.0",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index",
6
6
  "miniprogram": "mpdist",
@@ -73,10 +73,8 @@
73
73
  "postpack": "pinst --enable",
74
74
  "test:icon": "node tools/publish-icon/test.mjs",
75
75
  "sync-icon": "node tools/publish-icon/sync-icon.mjs",
76
- "deploy": "npm run use-node18 && node scripts/deploy.mjs && npm run release",
76
+ "deploy": "bash scripts/deploy.sh",
77
77
  "release": "node scripts/release.mjs",
78
- "use-node18": "node scripts/use-node18.mjs",
79
- "use-node20": "bash scripts/use-node20.sh",
80
78
  "scan": "tcb-i18n -c ./i18n/i18next-scanner.config.js",
81
79
  "dict:push": "lingo push",
82
80
  "dict:pull": "lingo pull"
@@ -91,7 +89,7 @@
91
89
  "description": "腾讯云微搭低代码组件库模板",
92
90
  "dependencies": {
93
91
  "@antv/g6": "^4.8.5",
94
- "@cloudbase/weda-client": "^1.1.36",
92
+ "@cloudbase/weda-client": "^1.1.37",
95
93
  "@codemirror/autocomplete": "^6.16.0",
96
94
  "@codemirror/lang-javascript": "^6.2.2",
97
95
  "@codemirror/lang-json": "^6.0.1",
@@ -153,9 +151,9 @@
153
151
  "@babel/preset-env": "^7.22.15",
154
152
  "@babel/preset-react": "^7.22.15",
155
153
  "@babel/preset-typescript": "^7.22.15",
156
- "@cloudbase/cals": "^1.2.20",
157
- "@cloudbase/lowcode-cli": "^0.22.4",
158
- "@cloudbase/weda-cloud-sdk": "^1.0.107",
154
+ "@cloudbase/cals": "^1.2.22",
155
+ "@cloudbase/lowcode-cli": "^0.23.0",
156
+ "@cloudbase/weda-cloud-sdk": "^1.0.108",
159
157
  "@commitlint/cli": "^16.0.2",
160
158
  "@commitlint/config-conventional": "^17.7.0",
161
159
  "@craco/craco": "^7.1.0",