@bifrostui/react 1.0.5 → 1.1.1

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 (65) hide show
  1. package/dist/CitySelector/CitySelector.css +102 -0
  2. package/dist/CitySelector/CitySelector.d.ts +4 -0
  3. package/dist/CitySelector/CitySelector.js +36 -0
  4. package/dist/CitySelector/CitySelector.miniapp.d.ts +5 -0
  5. package/dist/CitySelector/CitySelector.miniapp.js +79 -0
  6. package/dist/CitySelector/CitySelector.types.d.ts +47 -0
  7. package/dist/CitySelector/CitySelector.types.js +5 -0
  8. package/dist/CitySelector/CitySelectorCore.d.ts +5 -0
  9. package/dist/CitySelector/CitySelectorCore.js +184 -0
  10. package/dist/CitySelector/Selector/index.css +11 -0
  11. package/dist/CitySelector/Selector/index.d.ts +9 -0
  12. package/dist/CitySelector/Selector/index.js +22 -0
  13. package/dist/CitySelector/index.d.ts +2 -0
  14. package/dist/CitySelector/index.js +34 -0
  15. package/dist/CitySelector/miniapp.css +4 -0
  16. package/dist/Modal/Modal.miniapp.d.ts +16 -0
  17. package/dist/Modal/Modal.miniapp.js +73 -0
  18. package/dist/Picker/Picker.css +53 -0
  19. package/dist/Picker/Picker.d.ts +5 -0
  20. package/dist/Picker/Picker.js +155 -0
  21. package/dist/Picker/Picker.types.d.ts +98 -0
  22. package/dist/Picker/Picker.types.js +5 -0
  23. package/dist/Picker/PickerPanel.css +54 -0
  24. package/dist/Picker/PickerPanel.d.ts +5 -0
  25. package/dist/Picker/PickerPanel.js +210 -0
  26. package/dist/Picker/index.d.ts +2 -0
  27. package/dist/Picker/index.js +34 -0
  28. package/dist/Picker/utils.d.ts +13 -0
  29. package/dist/Picker/utils.js +66 -0
  30. package/dist/Tabs/Tabs.css +2 -2
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.js +22 -0
  33. package/es/CitySelector/CitySelector.css +102 -0
  34. package/es/CitySelector/CitySelector.d.ts +4 -0
  35. package/es/CitySelector/CitySelector.js +36 -0
  36. package/es/CitySelector/CitySelector.miniapp.d.ts +5 -0
  37. package/es/CitySelector/CitySelector.miniapp.js +77 -0
  38. package/es/CitySelector/CitySelector.types.d.ts +47 -0
  39. package/es/CitySelector/CitySelector.types.js +1 -0
  40. package/es/CitySelector/CitySelectorCore.d.ts +5 -0
  41. package/es/CitySelector/CitySelectorCore.js +195 -0
  42. package/es/CitySelector/Selector/index.css +11 -0
  43. package/es/CitySelector/Selector/index.d.ts +9 -0
  44. package/es/CitySelector/Selector/index.js +13 -0
  45. package/es/CitySelector/index.d.ts +2 -0
  46. package/es/CitySelector/index.js +2 -0
  47. package/es/CitySelector/miniapp.css +4 -0
  48. package/es/Modal/Modal.miniapp.d.ts +16 -0
  49. package/es/Modal/Modal.miniapp.js +78 -0
  50. package/es/Picker/Picker.css +53 -0
  51. package/es/Picker/Picker.d.ts +5 -0
  52. package/es/Picker/Picker.js +171 -0
  53. package/es/Picker/Picker.types.d.ts +98 -0
  54. package/es/Picker/Picker.types.js +1 -0
  55. package/es/Picker/PickerPanel.css +54 -0
  56. package/es/Picker/PickerPanel.d.ts +5 -0
  57. package/es/Picker/PickerPanel.js +234 -0
  58. package/es/Picker/index.d.ts +2 -0
  59. package/es/Picker/index.js +2 -0
  60. package/es/Picker/utils.d.ts +13 -0
  61. package/es/Picker/utils.js +65 -0
  62. package/es/Tabs/Tabs.css +2 -2
  63. package/es/index.d.ts +2 -0
  64. package/es/index.js +3 -1
  65. package/package.json +6 -6
@@ -0,0 +1,102 @@
1
+ .bui-city-selector {
2
+ font-family: var(--bui-font-family);
3
+ height: 100%;
4
+ position: relative;
5
+ }
6
+ .bui-city-selector-title {
7
+ width: 100%;
8
+ height: 45px;
9
+ color: var(--bui-color-fg-default);
10
+ font-size: var(--bui-title-size-3);
11
+ line-height: 45px;
12
+ text-align: center;
13
+ position: sticky;
14
+ top: 0;
15
+ z-index: 1004;
16
+ border-bottom: solid 1px var(--bui-color-border-default);
17
+ background-color: var(--bui-color-bg-view);
18
+ }
19
+ .bui-city-selector-btn-close {
20
+ position: absolute;
21
+ top: 0;
22
+ right: 0;
23
+ width: 45px;
24
+ height: 45px;
25
+ color: var(--bui-color-fg-muted);
26
+ text-align: center;
27
+ font-size: 20px;
28
+ }
29
+ .bui-city-selector-scroll-view-container {
30
+ height: 100%;
31
+ }
32
+ .bui-city-selector-scroll-view-container.container-has-title {
33
+ height: calc(100% - 45px);
34
+ }
35
+ .bui-city-selector-all-city {
36
+ min-height: 500px;
37
+ font-size: var(--bui-text-size-2);
38
+ width: 100%;
39
+ background: var(--bui-color-bg-view);
40
+ align-self: flex-start;
41
+ }
42
+ .bui-city-selector-all-city .select-city-buttons {
43
+ display: flex;
44
+ flex-flow: wrap;
45
+ padding-left: 3px;
46
+ padding-top: 7.5px;
47
+ }
48
+ .bui-city-selector-all-city .select-city-title {
49
+ font-size: var(--bui-title-size-4);
50
+ line-height: 15px;
51
+ font-weight: 600;
52
+ padding-left: var(--bui-spacing-lg);
53
+ padding-top: 9px;
54
+ }
55
+ .bui-city-selector-list {
56
+ padding-left: var(--bui-spacing-lg);
57
+ list-style-type: none;
58
+ }
59
+ .bui-city-selector-list-item {
60
+ height: 45px;
61
+ font-size: var(--bui-title-size-4);
62
+ display: flex;
63
+ align-items: center;
64
+ }
65
+ .bui-city-selector-list-item:not(:last-child) {
66
+ border-bottom: 0.5px solid var(--bui-color-border-default);
67
+ }
68
+ .bui-city-selector-index-container {
69
+ z-index: 1001;
70
+ position: absolute;
71
+ white-space: nowrap;
72
+ right: 0;
73
+ top: 50%;
74
+ width: 40px;
75
+ will-change: transform;
76
+ transform: translate(0, -50%);
77
+ transition: opacity 0.2s ease-out, transform 0.2s ease-out;
78
+ }
79
+ .bui-city-selector-index-container.left-in {
80
+ opacity: 1;
81
+ transform: translate(0, -50%);
82
+ }
83
+ .bui-city-selector-index-container.city-index-has-title {
84
+ top: calc(50% + 22.5px);
85
+ }
86
+ .bui-city-selector-index-container ul {
87
+ margin: 0;
88
+ padding: 0;
89
+ float: left;
90
+ width: 100%;
91
+ touch-action: none;
92
+ }
93
+ .bui-city-selector-index-container li {
94
+ list-style: none;
95
+ height: 20px;
96
+ text-align: center;
97
+ font-size: var(--bui-text-size-3);
98
+ color: var(--bui-color-info, --bui-color-info);
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { CitySelectorProps } from './CitySelector.types';
3
+ declare const CitySelector: React.ForwardRefExoticComponent<Omit<CitySelectorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ export default CitySelector;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _CitySelectorCore = _interopRequireDefault(require("./CitySelectorCore"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ 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); }
13
+ const CitySelector = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
14
+ const {
15
+ cities
16
+ } = props;
17
+ const [height, setHeight] = (0, _react.useState)('');
18
+ const touchHandler = (e, scrollToCode) => {
19
+ const t = document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);
20
+ const code = t?.dataset?.code;
21
+ scrollToCode(code);
22
+ };
23
+ (0, _react.useEffect)(() => {
24
+ if (!cities?.length || height) return;
25
+ const screenHeight = window.innerHeight || document.documentElement.clientHeight;
26
+ const domHeight = document.querySelector('.bui-city-selector-scroll-view-container')?.getBoundingClientRect().height;
27
+ setHeight(`${domHeight / screenHeight * 100}vh`);
28
+ }, [cities]);
29
+ return /*#__PURE__*/_react.default.createElement(_CitySelectorCore.default, _extends({}, props, {
30
+ ref: ref,
31
+ touchHandler: touchHandler,
32
+ height: height
33
+ }));
34
+ });
35
+ CitySelector.displayName = 'BuiCitySelector';
36
+ var _default = exports.default = CitySelector;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { CitySelectorProps } from './CitySelector.types';
3
+ import './miniapp.less';
4
+ declare const CitySelector: React.ForwardRefExoticComponent<Omit<CitySelectorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ export default CitySelector;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _taro = _interopRequireDefault(require("@tarojs/taro"));
9
+ var _CitySelectorCore = _interopRequireDefault(require("./CitySelectorCore"));
10
+ require("./miniapp.css");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ 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); }
15
+ const CitySelector = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
16
+ const {
17
+ cities
18
+ } = props;
19
+ const containerTop = (0, _react.useRef)(0);
20
+ const codeHeight = (0, _react.useRef)(0);
21
+ const [height, setHeight] = (0, _react.useState)('');
22
+ const queryContainerTop = cbk => {
23
+ const query = _taro.default.createSelectorQuery();
24
+ query.select('.bui-city-selector-index-container').boundingClientRect();
25
+ query.exec(res => {
26
+ containerTop.current = res[0]?.top;
27
+ cbk?.();
28
+ });
29
+ };
30
+ (0, _react.useEffect)(() => {
31
+ if (cities?.length === 0 || codeHeight.current) return;
32
+ // 演示获取字母高度
33
+ setTimeout(() => {
34
+ const query = _taro.default.createSelectorQuery();
35
+ query.select('.bui-city-selector-index-item').boundingClientRect();
36
+ query.exec(res => {
37
+ codeHeight.current = res[0]?.height;
38
+ });
39
+ }, 300);
40
+ }, [cities, height]);
41
+ (0, _react.useEffect)(() => {
42
+ if (!cities?.length || height) return;
43
+ const {
44
+ screenHeight
45
+ } = _taro.default.getSystemInfoSync();
46
+ const query = _taro.default.createSelectorQuery();
47
+ query.select('.bui-city-selector-scroll-view-container').boundingClientRect();
48
+ query.exec(codeRect => {
49
+ const domHeight = codeRect?.[0]?.height;
50
+ setHeight(`${domHeight / screenHeight * 100}vh`);
51
+ });
52
+ }, [cities]);
53
+ const parseIndex = (length, index) => {
54
+ if (index <= 0) return 0;
55
+ if (index >= length - 1) return length - 1;
56
+ return index;
57
+ };
58
+ const pxToCode = (clientY, scrollToCode, codeGroup) => {
59
+ let index = Math.floor((clientY - containerTop.current) / codeHeight.current);
60
+ index = parseIndex(codeGroup.length, index);
61
+ const codeItem = codeGroup[index];
62
+ scrollToCode(codeItem.code || codeItem);
63
+ };
64
+ const touchHandler = (event, scrollToCode, codeGroup) => {
65
+ const {
66
+ clientY
67
+ } = event.changedTouches[0];
68
+ queryContainerTop(() => {
69
+ pxToCode(clientY, scrollToCode, codeGroup);
70
+ });
71
+ };
72
+ return /*#__PURE__*/_react.default.createElement(_CitySelectorCore.default, _extends({}, props, {
73
+ ref: ref,
74
+ touchHandler: touchHandler,
75
+ height: height
76
+ }));
77
+ });
78
+ CitySelector.displayName = 'BuiCitySelector';
79
+ var _default = exports.default = CitySelector;
@@ -0,0 +1,47 @@
1
+ /// <reference types="react" />
2
+ import { OverrideProps } from '@bifrostui/types';
3
+ export type cityType = {
4
+ /** 城市名 */
5
+ name: string;
6
+ /** 城市名id */
7
+ code: string;
8
+ };
9
+ export type allCityItemType = {
10
+ /** 城市列表 */
11
+ cities: cityType[];
12
+ /** 索引字母 */
13
+ groupName: string;
14
+ };
15
+ export type CitySelectorProps<D extends React.ElementType = 'div', P = {}> = OverrideProps<{
16
+ props: P & {
17
+ /** 当前城市信息 */
18
+ selectedCity?: cityType;
19
+ /** 当前城市栏的title */
20
+ selectedCityGroupName?: string;
21
+ /** 定位城市信息 */
22
+ currentCity?: cityType;
23
+ /** 定位城市栏的title */
24
+ currentCityGroupName?: string;
25
+ /** 热门城市信息 */
26
+ hotCities?: cityType[];
27
+ /** 热门城市栏的title */
28
+ hotCitiesGroupName?: string;
29
+ /** 城市列表 */
30
+ cities: allCityItemType[];
31
+ /** 禁用展示索引 默认false 即展示索引 */
32
+ disableIndex?: boolean;
33
+ /** 头部标题 */
34
+ title?: string;
35
+ /** 选择城市回调 */
36
+ onSelect: (e: React.SyntheticEvent, data: {
37
+ city: cityType;
38
+ }) => void;
39
+ /** 和title配合使用,头部右侧的关闭回调 */
40
+ onClose?: (e: React.SyntheticEvent) => void;
41
+ };
42
+ defaultComponent: D;
43
+ }, D>;
44
+ export type CitySelectorCoreProps = CitySelectorProps & {
45
+ touchHandler: any;
46
+ height?: string;
47
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { CitySelectorCoreProps } from './CitySelector.types';
3
+ import './CitySelector.less';
4
+ declare const CitySelector: React.ForwardRefExoticComponent<Omit<CitySelectorCoreProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ export default CitySelector;
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _clsx = _interopRequireDefault(require("clsx"));
9
+ var _utils = require("@bifrostui/utils");
10
+ var _ScrollView = require("../ScrollView");
11
+ var _Selector = _interopRequireDefault(require("./Selector"));
12
+ require("./CitySelector.css");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ 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); }
17
+ // 误差偏移量
18
+ const DEVIATION_HEIGHT = '6vmin';
19
+ const GPS_TYPE = {
20
+ title: '定位',
21
+ code: 'GPS'
22
+ };
23
+ const CURRENT_TYPE = {
24
+ title: '当前',
25
+ code: 'CRRT'
26
+ };
27
+ const HOT_CITY_TYPE = {
28
+ title: '热门',
29
+ code: 'HOT'
30
+ };
31
+ const prefixCls = 'bui-city-selector';
32
+ const CitySelector = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
33
+ const {
34
+ className,
35
+ title: pageTitle,
36
+ selectedCity,
37
+ selectedCityGroupName = '当前城市',
38
+ currentCity,
39
+ currentCityGroupName = '定位城市',
40
+ hotCities,
41
+ hotCitiesGroupName = '热门城市',
42
+ cities,
43
+ disableIndex,
44
+ touchHandler,
45
+ height,
46
+ onSelect,
47
+ onClose,
48
+ ref: propsRef,
49
+ ...others
50
+ } = props;
51
+ const cityRef = (0, _react.useRef)(null);
52
+ const nodeRef = (0, _utils.useForkRef)(ref, propsRef, cityRef);
53
+ (0, _utils.useTouchEmulator)(cityRef.current);
54
+ const [codeGroup, setCodeGroup] = (0, _react.useState)([]);
55
+ const [codeShow, setCodeShow] = (0, _react.useState)(false);
56
+ const [targetId, setTargetId] = (0, _react.useState)('');
57
+
58
+ // 提取字母
59
+ (0, _react.useEffect)(() => {
60
+ if (!cities || cities?.length === 0 || codeGroup.length !== 0 || disableIndex) return;
61
+ const newGroup = [];
62
+ if (selectedCity) {
63
+ newGroup.push(CURRENT_TYPE);
64
+ }
65
+ if (currentCity) {
66
+ newGroup.push(GPS_TYPE);
67
+ }
68
+ if (hotCities) {
69
+ newGroup.push(HOT_CITY_TYPE);
70
+ }
71
+ cities.forEach(item => {
72
+ newGroup.push(item.groupName.toUpperCase());
73
+ });
74
+ setCodeGroup(newGroup);
75
+ }, [cities, selectedCity, currentCity, hotCities]);
76
+
77
+ // 计算每个code的top
78
+ (0, _react.useEffect)(() => {
79
+ if (codeGroup.length === 0) return;
80
+ setCodeShow(true);
81
+ }, [codeGroup]);
82
+ const selectHandler = (e, city) => {
83
+ onSelect(e, {
84
+ city
85
+ });
86
+ };
87
+ const scrollToCode = targetCode => {
88
+ if (!targetCode) return;
89
+ setTargetId(oldCode => {
90
+ if (targetCode !== oldCode) return targetCode;
91
+ return oldCode;
92
+ });
93
+ };
94
+ const touchCbk = e => {
95
+ e.stopPropagation();
96
+ touchHandler?.(e, scrollToCode, codeGroup);
97
+ };
98
+ const codeClickHandler = rightCode => {
99
+ setTargetId(rightCode);
100
+ };
101
+ const scrollHandler = (0, _utils.throttle)(() => {
102
+ if (targetId) {
103
+ setTargetId(undefined);
104
+ }
105
+ }, 500);
106
+ const closeHandler = e => {
107
+ onClose?.(e);
108
+ };
109
+ const renderTitile = (title, titleCode) => {
110
+ const parseTitle = (titleCode || title).toUpperCase();
111
+ return /*#__PURE__*/_react.default.createElement("div", {
112
+ className: "select-city-title",
113
+ id: disableIndex ? '' : parseTitle
114
+ }, title.toUpperCase());
115
+ };
116
+ const renderCity = (citys, title, titleCode) => {
117
+ return /*#__PURE__*/_react.default.createElement("div", null, renderTitile(title, titleCode), /*#__PURE__*/_react.default.createElement("div", {
118
+ className: "select-city-buttons"
119
+ }, citys.map((city, index) => {
120
+ return /*#__PURE__*/_react.default.createElement(_Selector.default, {
121
+ key: index,
122
+ city: city,
123
+ onSelect: selectHandler
124
+ });
125
+ })));
126
+ };
127
+ return /*#__PURE__*/_react.default.createElement("div", _extends({
128
+ className: (0, _clsx.default)(prefixCls, className),
129
+ ref: nodeRef
130
+ }, others), pageTitle ? /*#__PURE__*/_react.default.createElement("div", {
131
+ className: `${prefixCls}-title`
132
+ }, pageTitle, /*#__PURE__*/_react.default.createElement("div", {
133
+ className: `${prefixCls}-btn-close`,
134
+ onClick: closeHandler
135
+ }, "\u2715")) : null, /*#__PURE__*/_react.default.createElement(_ScrollView.ScrollView, {
136
+ scrollIntoView: targetId,
137
+ scrollY: true,
138
+ className: (0, _clsx.default)(`${prefixCls}-scroll-view-container tph`, {
139
+ 'container-has-title': pageTitle
140
+ }),
141
+ onScroll: scrollHandler
142
+ }, /*#__PURE__*/_react.default.createElement("div", {
143
+ className: `${prefixCls}-all-city`
144
+ }, selectedCity ? renderCity([selectedCity], selectedCityGroupName, CURRENT_TYPE.code) : null, currentCity ? renderCity([currentCity], currentCityGroupName, GPS_TYPE.code) : null, hotCities?.length > 0 ? renderCity(hotCities, hotCitiesGroupName, HOT_CITY_TYPE.code) : null, cities?.length > 0 ? /*#__PURE__*/_react.default.createElement("div", {
145
+ className: `${prefixCls}-list-container`
146
+ }, cities.map((item, cityGroupIndex) => {
147
+ if (!item?.groupName) return null;
148
+ return /*#__PURE__*/_react.default.createElement("div", {
149
+ key: cityGroupIndex
150
+ }, renderTitile(item.groupName, item.groupName), /*#__PURE__*/_react.default.createElement("ul", {
151
+ className: `${prefixCls}-list`
152
+ }, item.cities.map((city, cityIndex) => {
153
+ return /*#__PURE__*/_react.default.createElement("li", {
154
+ className: `${prefixCls}-list-item`,
155
+ key: cityIndex,
156
+ onClick: e => {
157
+ selectHandler(e, city);
158
+ }
159
+ }, city.name);
160
+ })));
161
+ })) : null)), codeGroup?.length > 0 && height ? /*#__PURE__*/_react.default.createElement("div", {
162
+ className: (0, _clsx.default)(`${prefixCls}-index-container`, {
163
+ 'left-in': codeShow,
164
+ 'city-index-has-title': pageTitle
165
+ })
166
+ }, /*#__PURE__*/_react.default.createElement("ul", {
167
+ onTouchMove: touchCbk,
168
+ className: `${prefixCls}-index-list`
169
+ }, codeGroup.map((item, chartIndex) => {
170
+ return /*#__PURE__*/_react.default.createElement("li", {
171
+ className: `${prefixCls}-index-item`,
172
+ key: chartIndex,
173
+ "data-code": item.code || item,
174
+ onClick: () => {
175
+ codeClickHandler(item.code || item);
176
+ },
177
+ style: {
178
+ maxHeight: `calc((${height} - ${DEVIATION_HEIGHT}) / ${codeGroup.length})`
179
+ }
180
+ }, item.title || item);
181
+ }))) : null);
182
+ });
183
+ CitySelector.displayName = 'BuiCitySelector';
184
+ var _default = exports.default = CitySelector;
@@ -0,0 +1,11 @@
1
+ .bui-city-selector-item {
2
+ width: 111px;
3
+ height: 36px;
4
+ display: inline-flex;
5
+ justify-content: center;
6
+ align-items: center;
7
+ border-radius: 20px;
8
+ margin: 4.5px 0 4.5px 9px;
9
+ background-color: var(--bui-color-bg-default);
10
+ font-size: var(--bui-text-size-2);
11
+ }
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { cityType } from '../CitySelector.types';
3
+ import './index.less';
4
+ type propsType = {
5
+ city: cityType;
6
+ onSelect: (e: React.SyntheticEvent, city: cityType) => void;
7
+ };
8
+ declare const Selector: (props: propsType) => React.JSX.Element;
9
+ export default Selector;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ require("./index.css");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ const Selector = props => {
11
+ const {
12
+ city,
13
+ onSelect
14
+ } = props;
15
+ return /*#__PURE__*/_react.default.createElement("span", {
16
+ className: "bui-city-selector-item",
17
+ onClick: e => {
18
+ onSelect?.(e, city);
19
+ }
20
+ }, city.name);
21
+ };
22
+ var _default = exports.default = Selector;
@@ -0,0 +1,2 @@
1
+ export { default as CitySelector, default } from './CitySelector';
2
+ export * from './CitySelector.types';
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ CitySelector: true
8
+ };
9
+ Object.defineProperty(exports, "CitySelector", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _CitySelector.default;
13
+ }
14
+ });
15
+ Object.defineProperty(exports, "default", {
16
+ enumerable: true,
17
+ get: function () {
18
+ return _CitySelector.default;
19
+ }
20
+ });
21
+ var _CitySelector = _interopRequireDefault(require("./CitySelector"));
22
+ var _CitySelector2 = require("./CitySelector.types");
23
+ Object.keys(_CitySelector2).forEach(function (key) {
24
+ if (key === "default" || key === "__esModule") return;
25
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
+ if (key in exports && exports[key] === _CitySelector2[key]) return;
27
+ Object.defineProperty(exports, key, {
28
+ enumerable: true,
29
+ get: function () {
30
+ return _CitySelector2[key];
31
+ }
32
+ });
33
+ });
34
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,4 @@
1
+ .bui-city-scroll-view-container {
2
+ height: 100%;
3
+ display: block;
4
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { ViewProps } from '@tarojs/components';
3
+ import './Modal.less';
4
+ declare const Modal: React.ForwardRefExoticComponent<Omit<ViewProps & {
5
+ open?: boolean;
6
+ container?: Element | (() => Element);
7
+ hideBackdrop?: boolean;
8
+ BackdropProps?: Partial<import("../Backdrop").BackdropProps>;
9
+ onClose?: (e: React.SyntheticEvent<Element, Event>, detail: import("./Modal.types").CloseDetail) => void;
10
+ disableScrollLock?: boolean;
11
+ disablePortal?: boolean;
12
+ keepMounted?: boolean;
13
+ } & import("../../../bui-types/src").ICommonProps & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
14
+ ref?: React.Ref<HTMLDivElement>;
15
+ }, keyof import("../../../bui-types/src").ICommonProps | "open" | "container" | "hideBackdrop" | "BackdropProps" | "onClose" | "disableScrollLock" | "disablePortal" | "keepMounted">, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ export default Modal;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("@bifrostui/utils");
8
+ var _clsx = _interopRequireDefault(require("clsx"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _components = require("@tarojs/components");
11
+ var _Backdrop = _interopRequireDefault(require("../Backdrop"));
12
+ var _Portal = _interopRequireDefault(require("../Portal"));
13
+ require("./Modal.css");
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ 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); }
18
+ const prefixCls = 'bui-modal';
19
+ const Modal = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
20
+ const {
21
+ className,
22
+ open,
23
+ BackdropProps,
24
+ children,
25
+ container,
26
+ disablePortal,
27
+ disableScrollLock,
28
+ hideBackdrop,
29
+ onClose,
30
+ keepMounted,
31
+ ...others
32
+ } = props;
33
+ const modalRef = _react.default.useRef(null);
34
+ const handleRef = (0, _utils.useForkRef)(modalRef, ref);
35
+ const [backdropExited, setBackDropExited] = (0, _react.useState)(hideBackdrop || !open);
36
+ const mounted = open || !backdropExited || keepMounted;
37
+ const handleBackdropClick = event => {
38
+ if (event.target.id !== event.currentTarget.id) {
39
+ return;
40
+ }
41
+ if (onClose) {
42
+ onClose(event, {
43
+ from: 'backdrop'
44
+ });
45
+ }
46
+ };
47
+ if (!mounted) {
48
+ return null;
49
+ }
50
+ return /*#__PURE__*/_react.default.createElement(_Portal.default, {
51
+ container: container,
52
+ disablePortal: disablePortal
53
+ }, /*#__PURE__*/_react.default.createElement(_components.View, _extends({
54
+ className: (0, _clsx.default)(prefixCls, className),
55
+ ref: handleRef,
56
+ catchMove: !disableScrollLock
57
+ }, others), !hideBackdrop ? /*#__PURE__*/_react.default.createElement(_Backdrop.default, _extends({
58
+ open: open,
59
+ onClick: handleBackdropClick,
60
+ onEnter: () => setBackDropExited(false),
61
+ onExited: () => setBackDropExited(true)
62
+ }, BackdropProps, {
63
+ className: (0, _clsx.default)(`${prefixCls}-backdrop`, BackdropProps?.className)
64
+ })) : null, (open || keepMounted) && children));
65
+ });
66
+ Modal.displayName = 'BuiModal';
67
+ Modal.defaultProps = {
68
+ open: false,
69
+ disablePortal: false,
70
+ disableScrollLock: false,
71
+ hideBackdrop: false
72
+ };
73
+ var _default = exports.default = Modal;