@arco-design/mobile-react 2.35.2 → 2.36.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.
- package/CHANGELOG.md +30 -0
- package/README.en-US.md +2 -2
- package/README.md +2 -2
- package/cjs/_helpers/hooks.d.ts +10 -2
- package/cjs/_helpers/hooks.js +12 -5
- package/cjs/date-picker/index.js +218 -18
- package/cjs/date-picker/style/css/index.css +42 -0
- package/cjs/date-picker/style/index.less +38 -1
- package/cjs/date-picker/type.d.ts +22 -6
- package/cjs/ellipsis/components/js-ellipsis.js +3 -1
- package/cjs/form/linked-container.d.ts +2 -2
- package/cjs/form/linked-container.js +5 -1
- package/cjs/picker/index.js +3 -2
- package/cjs/picker/type.d.ts +5 -0
- package/cjs/popover/hooks/usePosition.js +26 -8
- package/cjs/search-bar/association.js +2 -2
- package/cjs/search-bar/type.d.ts +1 -1
- package/cjs/stepper/hooks/useValue.js +3 -1
- package/cjs/tabs/index.js +1 -1
- package/cjs/tabs/type.d.ts +2 -2
- package/dist/index.js +301 -47
- package/dist/index.min.js +4 -4
- package/dist/style.css +23 -0
- package/dist/style.min.css +1 -1
- package/esm/_helpers/hooks.d.ts +10 -2
- package/esm/_helpers/hooks.js +12 -5
- package/esm/date-picker/index.js +218 -18
- package/esm/date-picker/style/css/index.css +42 -0
- package/esm/date-picker/style/index.less +38 -1
- package/esm/date-picker/type.d.ts +22 -6
- package/esm/ellipsis/components/js-ellipsis.js +3 -1
- package/esm/form/linked-container.d.ts +2 -2
- package/esm/form/linked-container.js +5 -1
- package/esm/picker/index.js +3 -2
- package/esm/picker/type.d.ts +5 -0
- package/esm/popover/hooks/usePosition.js +26 -8
- package/esm/search-bar/association.js +2 -2
- package/esm/search-bar/type.d.ts +1 -1
- package/esm/stepper/hooks/useValue.js +1 -0
- package/esm/tabs/index.js +1 -1
- package/esm/tabs/type.d.ts +2 -2
- package/esnext/_helpers/hooks.d.ts +10 -2
- package/esnext/_helpers/hooks.js +12 -5
- package/esnext/date-picker/index.js +167 -10
- package/esnext/date-picker/style/css/index.css +42 -0
- package/esnext/date-picker/style/index.less +38 -1
- package/esnext/date-picker/type.d.ts +22 -6
- package/esnext/ellipsis/components/js-ellipsis.js +2 -0
- package/esnext/form/linked-container.d.ts +2 -2
- package/esnext/form/linked-container.js +7 -2
- package/esnext/picker/index.js +2 -1
- package/esnext/picker/type.d.ts +5 -0
- package/esnext/popover/hooks/usePosition.js +32 -12
- package/esnext/search-bar/association.js +1 -1
- package/esnext/search-bar/type.d.ts +1 -1
- package/esnext/stepper/hooks/useValue.js +1 -0
- package/esnext/tabs/index.js +1 -1
- package/esnext/tabs/type.d.ts +2 -2
- package/package.json +3 -3
- package/tokens/app/arcodesign/default/css-variables.less +10 -0
- package/tokens/app/arcodesign/default/index.d.ts +10 -0
- package/tokens/app/arcodesign/default/index.js +11 -1
- package/tokens/app/arcodesign/default/index.json +108 -0
- package/tokens/app/arcodesign/default/index.less +10 -0
- package/umd/_helpers/hooks.d.ts +10 -2
- package/umd/_helpers/hooks.js +12 -5
- package/umd/date-picker/index.js +218 -18
- package/umd/date-picker/style/css/index.css +42 -0
- package/umd/date-picker/style/index.less +38 -1
- package/umd/date-picker/type.d.ts +22 -6
- package/umd/ellipsis/components/js-ellipsis.js +3 -1
- package/umd/form/linked-container.d.ts +2 -2
- package/umd/form/linked-container.js +5 -1
- package/umd/picker/index.js +3 -2
- package/umd/picker/type.d.ts +5 -0
- package/umd/popover/hooks/usePosition.js +26 -8
- package/umd/search-bar/association.js +2 -2
- package/umd/search-bar/type.d.ts +1 -1
- package/umd/stepper/hooks/useValue.js +5 -5
- package/umd/tabs/index.js +1 -1
- package/umd/tabs/type.d.ts +2 -2
@@ -161,24 +161,44 @@ export const usePosition = (props, popoverRef, childRef, wrapperRef) => {
|
|
161
161
|
// 垂直方向安全距离调整
|
162
162
|
// @en Vertical safety distance adjustment
|
163
163
|
if (verticalAuto) {
|
164
|
-
const
|
165
|
-
(newConfig.bottom && newConfig.height ? newConfig.bottom + newConfig.height : 0);
|
166
|
-
const popoverBottom = childRect.top +
|
167
|
-
(newConfig.top && newConfig.height ? newConfig.top + newConfig.height : 0);
|
168
|
-
// 顶部安全距离不够,调整到底部
|
169
|
-
// @en The top safety distance is not enough, adjust to the bottom
|
170
|
-
if (directionState.indexOf('top') !== -1 && popoverTop < topOffset) {
|
164
|
+
const setToBottom = () => {
|
171
165
|
newConfig.top = verticalOffset + childRect.height;
|
172
166
|
newConfig.bottom = null;
|
173
167
|
onAdjustDirection('bottom');
|
174
|
-
}
|
175
|
-
|
176
|
-
popoverBottom + bottomOffset > window.innerHeight) {
|
177
|
-
// 底部安全距离不够,调整到顶部
|
178
|
-
// @en The bottom safety distance is not enough, adjust to the top
|
168
|
+
};
|
169
|
+
const setToTop = () => {
|
179
170
|
newConfig.top = null;
|
180
171
|
newConfig.bottom = verticalOffset + childRect.height;
|
181
172
|
onAdjustDirection('top');
|
173
|
+
};
|
174
|
+
// 判断上下空间是否都不足以展示气泡内容
|
175
|
+
// @en Determine whether there is insufficient space both above and below to display content
|
176
|
+
const isPopoverTooTall = window.innerHeight - topOffset - bottomOffset <
|
177
|
+
2 * (newConfig.height || 0) + 2 * verticalOffset + childRect.height;
|
178
|
+
if (isPopoverTooTall) {
|
179
|
+
const spaceAbove = childRect.top;
|
180
|
+
const spaceBelow = window.innerHeight - childRect.bottom;
|
181
|
+
spaceAbove > spaceBelow ? setToTop() : setToBottom();
|
182
|
+
}
|
183
|
+
else {
|
184
|
+
const popoverTop = childRect.bottom -
|
185
|
+
(newConfig.bottom && newConfig.height
|
186
|
+
? newConfig.bottom + newConfig.height
|
187
|
+
: 0);
|
188
|
+
const popoverBottom = childRect.top +
|
189
|
+
(newConfig.top && newConfig.height ? newConfig.top + newConfig.height : 0);
|
190
|
+
// 顶部安全距离不够,调整到底部
|
191
|
+
// @en The top safety distance is not enough, adjust to the bottom
|
192
|
+
if (directionState.indexOf('top') !== -1 && popoverTop < topOffset) {
|
193
|
+
setToBottom();
|
194
|
+
}
|
195
|
+
else if (
|
196
|
+
// 底部安全距离不够,调整到顶部
|
197
|
+
// @en The bottom safety distance is not enough, adjust to the top
|
198
|
+
directionState.indexOf('bottom') !== -1 &&
|
199
|
+
popoverBottom + bottomOffset > window.innerHeight) {
|
200
|
+
setToTop();
|
201
|
+
}
|
182
202
|
}
|
183
203
|
}
|
184
204
|
// 挂载在全局的气泡需要计算相对屏幕的位置
|
@@ -36,7 +36,7 @@ export function SearchBarAssociation(props) {
|
|
36
36
|
if (renderAssociationItem) {
|
37
37
|
node = renderAssociationItem(item, index, node);
|
38
38
|
}
|
39
|
-
return (React.createElement("div", { key: index, className: `${searchBarAssociationPrefixCls}-item`, onClick:
|
39
|
+
return (React.createElement("div", { key: index, className: `${searchBarAssociationPrefixCls}-item`, onClick: e => onAssociationItemClick?.(item, index, e) }, node));
|
40
40
|
};
|
41
41
|
const renderContent = () => {
|
42
42
|
const associationContent = associationItems.map(renderItem);
|
@@ -57,7 +57,7 @@ export interface SearchBarAssociationProps<Data = Record<string, any>> {
|
|
57
57
|
* 每行搜索结果的点击回调
|
58
58
|
* @en Click callback for each row of search results
|
59
59
|
*/
|
60
|
-
onAssociationItemClick?: (item: SearchAssociationItem<Data>, index: number) => void;
|
60
|
+
onAssociationItemClick?: (item: SearchAssociationItem<Data>, index: number, event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
61
61
|
/**
|
62
62
|
* 搜索联想框整体被点击的回调
|
63
63
|
* @en The callback for the overall click of the search association box
|
package/esnext/tabs/index.js
CHANGED
@@ -247,7 +247,7 @@ const Tabs = forwardRef((props, ref) => {
|
|
247
247
|
}
|
248
248
|
function updateLayout() {
|
249
249
|
const { width, height } = getOffset(domRef.current);
|
250
|
-
cellRef.current && cellRef.current.
|
250
|
+
cellRef.current && cellRef.current.updateLayout();
|
251
251
|
setWrapWidth(width || domRef.current?.offsetWidth || 0);
|
252
252
|
setWrapHeight(height || domRef.current?.offsetHeight || 0);
|
253
253
|
paneRef.current && paneRef.current.setCurrentHeight();
|
package/esnext/tabs/type.d.ts
CHANGED
@@ -561,8 +561,8 @@ export interface TabCellRef {
|
|
561
561
|
*/
|
562
562
|
setCaterpillarAnimate: (ratio?: number) => void;
|
563
563
|
/**
|
564
|
-
*
|
565
|
-
* @en Recalculate underline style
|
564
|
+
* 重新计算下划线样式(仅重算位置,如果 tab cell DOM 被人为改变,请调用 updateLayout)
|
565
|
+
* @en Recalculate underline style (only recalculate position, if the tab cell DOM is changed manually, please call updateLayout)
|
566
566
|
*/
|
567
567
|
resetUnderlineStyle: () => void;
|
568
568
|
/**
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@arco-design/mobile-react",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.36.1",
|
4
4
|
"description": "",
|
5
5
|
"main": "cjs/index.js",
|
6
6
|
"module": "esm/index.js",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"author": "taoyiyue@bytedance.com",
|
16
16
|
"license": "ISC",
|
17
17
|
"dependencies": {
|
18
|
-
"@arco-design/mobile-utils": "2.
|
18
|
+
"@arco-design/mobile-utils": "2.21.1",
|
19
19
|
"@arco-design/transformable": "^1.0.0",
|
20
20
|
"@babel/runtime": "^7",
|
21
21
|
"lodash.throttle": "^4.1.1",
|
@@ -47,5 +47,5 @@
|
|
47
47
|
"publishConfig": {
|
48
48
|
"access": "public"
|
49
49
|
},
|
50
|
-
"gitHead": "
|
50
|
+
"gitHead": "b7c3cd986250450f6433c906cf68bd550883fc7c"
|
51
51
|
}
|
@@ -1093,4 +1093,14 @@
|
|
1093
1093
|
--uploader-disabled-delete-icon-color: var(--disabled-color);
|
1094
1094
|
--dark-uploader-item-text-error-color: var(--dark-danger-color);
|
1095
1095
|
--uploader-item-text-error-color: var(--danger-color);
|
1096
|
+
--date-picker-range-font-size: ~`pxtorem(16)`;
|
1097
|
+
--date-picker-range-background-color: #FBFCFC;
|
1098
|
+
--dark-date-picker-range-background-color: #1E1E1E;
|
1099
|
+
--dark-date-picker-range-font-color: var(--dark-font-color);
|
1100
|
+
--date-picker-range-font-color: var(--font-color);
|
1101
|
+
--dark-date-picker-range-disabled-font-color: var(--dark-disabled-color);
|
1102
|
+
--date-picker-range-disabled-font-color: var(--disabled-color);
|
1103
|
+
--date-picker-range-show-padding: 0 ~`pxtorem(16)`;
|
1104
|
+
--date-picker-range-show-min-height: ~`pxtorem(48)`;
|
1105
|
+
--date-picker-range-separate-min-width: ~`pxtorem(48)`;
|
1096
1106
|
}
|
@@ -1092,6 +1092,16 @@ export interface ArcodesignToken extends Record<string, string> {
|
|
1092
1092
|
'uploader-disabled-delete-icon-color': string;
|
1093
1093
|
'dark-uploader-item-text-error-color': string;
|
1094
1094
|
'uploader-item-text-error-color': string;
|
1095
|
+
'date-picker-range-font-size': string;
|
1096
|
+
'date-picker-range-background-color': string;
|
1097
|
+
'dark-date-picker-range-background-color': string;
|
1098
|
+
'dark-date-picker-range-font-color': string;
|
1099
|
+
'date-picker-range-font-color': string;
|
1100
|
+
'dark-date-picker-range-disabled-font-color': string;
|
1101
|
+
'date-picker-range-disabled-font-color': string;
|
1102
|
+
'date-picker-range-show-padding': string;
|
1103
|
+
'date-picker-range-show-min-height': string;
|
1104
|
+
'date-picker-range-separate-min-width': string;
|
1095
1105
|
}
|
1096
1106
|
declare const tokens: ArcodesignToken;
|
1097
1107
|
export default tokens;
|
@@ -1103,7 +1103,17 @@ var tokens = {
|
|
1103
1103
|
"dark-uploader-disabled-delete-icon-color": "var(--dark-disabled-color)",
|
1104
1104
|
"uploader-disabled-delete-icon-color": "var(--disabled-color)",
|
1105
1105
|
"dark-uploader-item-text-error-color": "var(--dark-danger-color)",
|
1106
|
-
"uploader-item-text-error-color": "var(--danger-color)"
|
1106
|
+
"uploader-item-text-error-color": "var(--danger-color)",
|
1107
|
+
"date-picker-range-font-size": "0.32rem",
|
1108
|
+
"date-picker-range-background-color": "#FBFCFC",
|
1109
|
+
"dark-date-picker-range-background-color": "#1E1E1E",
|
1110
|
+
"dark-date-picker-range-font-color": "var(--dark-font-color)",
|
1111
|
+
"date-picker-range-font-color": "var(--font-color)",
|
1112
|
+
"dark-date-picker-range-disabled-font-color": "var(--dark-disabled-color)",
|
1113
|
+
"date-picker-range-disabled-font-color": "var(--disabled-color)",
|
1114
|
+
"date-picker-range-show-padding": "0 0.32rem",
|
1115
|
+
"date-picker-range-show-min-height": "0.96rem",
|
1116
|
+
"date-picker-range-separate-min-width": "0.96rem"
|
1107
1117
|
};
|
1108
1118
|
var _default = tokens;
|
1109
1119
|
exports["default"] = _default;
|
@@ -2699,6 +2699,30 @@
|
|
2699
2699
|
"jsValue": "#F76965",
|
2700
2700
|
"staticValue": "#F76965"
|
2701
2701
|
},
|
2702
|
+
"darkDatePickerRangeBackgroundColor": {
|
2703
|
+
"cssKey": "dark-date-picker-range-background-color",
|
2704
|
+
"desc": "",
|
2705
|
+
"override": "",
|
2706
|
+
"value": "#1E1E1E",
|
2707
|
+
"jsValue": "#1E1E1E",
|
2708
|
+
"staticValue": "#1E1E1E"
|
2709
|
+
},
|
2710
|
+
"darkDatePickerRangeDisabledFontColor": {
|
2711
|
+
"cssKey": "dark-date-picker-range-disabled-font-color",
|
2712
|
+
"desc": "",
|
2713
|
+
"override": "",
|
2714
|
+
"value": "@dark-disabled-color",
|
2715
|
+
"jsValue": "@global@darkDisabledColor",
|
2716
|
+
"staticValue": "#5f5f60"
|
2717
|
+
},
|
2718
|
+
"darkDatePickerRangeFontColor": {
|
2719
|
+
"cssKey": "dark-date-picker-range-font-color",
|
2720
|
+
"desc": "",
|
2721
|
+
"override": "",
|
2722
|
+
"value": "@dark-font-color",
|
2723
|
+
"jsValue": "@global@darkFontColor",
|
2724
|
+
"staticValue": "#f6f6f6"
|
2725
|
+
},
|
2702
2726
|
"darkDialogBodyAndroidColor": {
|
2703
2727
|
"cssKey": "dark-dialog-body-android-color",
|
2704
2728
|
"desc": "",
|
@@ -4355,6 +4379,90 @@
|
|
4355
4379
|
"jsValue": "#FF9626",
|
4356
4380
|
"staticValue": "#FF9626"
|
4357
4381
|
},
|
4382
|
+
"datePickerRangeBackgroundColor": {
|
4383
|
+
"cssKey": "date-picker-range-background-color",
|
4384
|
+
"desc": "日期时间范围选择器背景颜色",
|
4385
|
+
"override": "",
|
4386
|
+
"value": "#FBFCFC",
|
4387
|
+
"jsValue": "#FBFCFC",
|
4388
|
+
"staticValue": "#FBFCFC",
|
4389
|
+
"localeDesc": {
|
4390
|
+
"ch": "日期时间范围选择器背景颜色",
|
4391
|
+
"en": "Background color of the date picker range when checked"
|
4392
|
+
}
|
4393
|
+
},
|
4394
|
+
"datePickerRangeDisabledFontColor": {
|
4395
|
+
"cssKey": "date-picker-range-disabled-font-color",
|
4396
|
+
"desc": "日期时间范围选择器未选中时文字颜色",
|
4397
|
+
"override": "",
|
4398
|
+
"value": "@disabled-color",
|
4399
|
+
"jsValue": "@global@disabledColor",
|
4400
|
+
"staticValue": "#c9cdd4",
|
4401
|
+
"localeDesc": {
|
4402
|
+
"ch": "日期时间范围选择器未选中时文字颜色",
|
4403
|
+
"en": "Font color of the date picker range when disabled"
|
4404
|
+
}
|
4405
|
+
},
|
4406
|
+
"datePickerRangeFontColor": {
|
4407
|
+
"cssKey": "date-picker-range-font-color",
|
4408
|
+
"desc": "日期时间范围选择器选中时文字颜色",
|
4409
|
+
"override": "",
|
4410
|
+
"value": "@font-color",
|
4411
|
+
"jsValue": "@global@fontColor",
|
4412
|
+
"staticValue": "#1d2129",
|
4413
|
+
"localeDesc": {
|
4414
|
+
"ch": "日期时间范围选择器选中时文字颜色",
|
4415
|
+
"en": "Font color of the date picker range when checked"
|
4416
|
+
}
|
4417
|
+
},
|
4418
|
+
"datePickerRangeFontSize": {
|
4419
|
+
"cssKey": "date-picker-range-font-size",
|
4420
|
+
"desc": "日期时间范围选择器文字大小",
|
4421
|
+
"override": "",
|
4422
|
+
"value": "~`pxtorem(16)`",
|
4423
|
+
"jsValue": "@getRem@16",
|
4424
|
+
"staticValue": "0.32rem",
|
4425
|
+
"localeDesc": {
|
4426
|
+
"ch": "日期时间范围选择器文字大小",
|
4427
|
+
"en": "Font size of the date picker range"
|
4428
|
+
}
|
4429
|
+
},
|
4430
|
+
"datePickerRangeSeparateMinWidth": {
|
4431
|
+
"cssKey": "date-picker-range-separate-min-width",
|
4432
|
+
"desc": "日期时间范围选择器展示区域分隔符最小宽度",
|
4433
|
+
"override": "",
|
4434
|
+
"value": "~`pxtorem(48)`",
|
4435
|
+
"jsValue": "@getRem@48",
|
4436
|
+
"staticValue": "0.96rem",
|
4437
|
+
"localeDesc": {
|
4438
|
+
"ch": "日期时间范围选择器展示区域分隔符最小宽度",
|
4439
|
+
"en": "Min width of the date picker range separate"
|
4440
|
+
}
|
4441
|
+
},
|
4442
|
+
"datePickerRangeShowMinHeight": {
|
4443
|
+
"cssKey": "date-picker-range-show-min-height",
|
4444
|
+
"desc": "日期时间范围选择器展示区域最小高度",
|
4445
|
+
"override": "",
|
4446
|
+
"value": "~`pxtorem(48)`",
|
4447
|
+
"jsValue": "@getRem@48",
|
4448
|
+
"staticValue": "0.96rem",
|
4449
|
+
"localeDesc": {
|
4450
|
+
"ch": "日期时间范围选择器展示区域最小高度",
|
4451
|
+
"en": "Min height of the date picker range area"
|
4452
|
+
}
|
4453
|
+
},
|
4454
|
+
"datePickerRangeShowPadding": {
|
4455
|
+
"cssKey": "date-picker-range-show-padding",
|
4456
|
+
"desc": "日期时间范围选择器展示区域外边距大小",
|
4457
|
+
"override": "",
|
4458
|
+
"value": "0 ~`pxtorem(16)`",
|
4459
|
+
"jsValue": "0 @getRem@16",
|
4460
|
+
"staticValue": "0 0.32rem",
|
4461
|
+
"localeDesc": {
|
4462
|
+
"ch": "日期时间范围选择器展示区域外边距大小",
|
4463
|
+
"en": "Margin of the date picker range area"
|
4464
|
+
}
|
4465
|
+
},
|
4358
4466
|
"dialogAndroidBodyFooterGutter": {
|
4359
4467
|
"cssKey": "dialog-android-body-footer-gutter",
|
4360
4468
|
"desc": "对话框 body 和 footer 的间距 (android)",
|
@@ -1092,4 +1092,14 @@
|
|
1092
1092
|
@uploader-disabled-delete-icon-color: @disabled-color;
|
1093
1093
|
@dark-uploader-item-text-error-color: @dark-danger-color;
|
1094
1094
|
@uploader-item-text-error-color: @danger-color;
|
1095
|
+
@date-picker-range-font-size: ~`pxtorem(16)`;
|
1096
|
+
@date-picker-range-background-color: #FBFCFC;
|
1097
|
+
@dark-date-picker-range-background-color: #1E1E1E;
|
1098
|
+
@dark-date-picker-range-font-color: @dark-font-color;
|
1099
|
+
@date-picker-range-font-color: @font-color;
|
1100
|
+
@dark-date-picker-range-disabled-font-color: @dark-disabled-color;
|
1101
|
+
@date-picker-range-disabled-font-color: @disabled-color;
|
1102
|
+
@date-picker-range-show-padding: 0 ~`pxtorem(16)`;
|
1103
|
+
@date-picker-range-show-min-height: ~`pxtorem(48)`;
|
1104
|
+
@date-picker-range-separate-min-width: ~`pxtorem(48)`;
|
1095
1105
|
|
package/umd/_helpers/hooks.d.ts
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
* @name_en General Hooks
|
5
5
|
*/
|
6
6
|
import React from 'react';
|
7
|
+
import type { SystemOptions } from '@arco-design/mobile-utils';
|
7
8
|
import { BezierType } from '../progress';
|
8
9
|
/**
|
9
10
|
* 监听页面resize事件的统一封装
|
@@ -130,15 +131,22 @@ export declare function useLatestRef<T>(variable: T): React.MutableRefObject<T>;
|
|
130
131
|
/**
|
131
132
|
* 从navigator.userAgent中获取当前操作系统,如果无法获取ua,则从ContextProvider传入的system中获取值
|
132
133
|
* @desc {en} Get the current operating system from navigator.userAgent, if ua cannot be obtained, get the value from the system passed in by ContextProvider
|
133
|
-
* @
|
134
|
+
* @param options 配置选项
|
135
|
+
* @param {en} options Configuration options
|
136
|
+
* @param options.detectHarmony 是否识别鸿蒙系统,默认为 false,鸿蒙系统会被识别为 android
|
137
|
+
* @param {en} options.detectHarmony Whether to detect HarmonyOS separately, default is false, HarmonyOS will be recognized as android
|
138
|
+
* @returns 返回当前设备的操作系统,可能的值包括 'android'、'ios'、'harmony' 或 'pc',如果无法获取,则返回空字符串
|
139
|
+
* @returns {en} Returns the operating system of the current device, possible values are 'android', 'ios', 'harmony', or 'pc'. Returns an empty string if it cannot be obtained
|
134
140
|
* @example
|
135
141
|
* ```
|
136
142
|
* import { useSystem } from '@arco-design/mobile-react/esm/_helpers/hooks';
|
137
143
|
*
|
138
144
|
* const system = useSystem();
|
145
|
+
* // Or with options
|
146
|
+
* const systemWithHarmony = useSystem({ detectHarmony: true });
|
139
147
|
* ```
|
140
148
|
*/
|
141
|
-
export declare function useSystem(): "" | "android" | "ios" | "pc";
|
149
|
+
export declare function useSystem(options?: SystemOptions): "" | "android" | "harmony" | "ios" | "pc";
|
142
150
|
/**
|
143
151
|
* 获取页面视口宽高大小,并在页面有resize时更新大小
|
144
152
|
* @desc {en} Get the width and height of the page viewport, and update the size when the page is resized
|
package/umd/_helpers/hooks.js
CHANGED
@@ -283,29 +283,36 @@
|
|
283
283
|
/**
|
284
284
|
* 从navigator.userAgent中获取当前操作系统,如果无法获取ua,则从ContextProvider传入的system中获取值
|
285
285
|
* @desc {en} Get the current operating system from navigator.userAgent, if ua cannot be obtained, get the value from the system passed in by ContextProvider
|
286
|
-
* @
|
286
|
+
* @param options 配置选项
|
287
|
+
* @param {en} options Configuration options
|
288
|
+
* @param options.detectHarmony 是否识别鸿蒙系统,默认为 false,鸿蒙系统会被识别为 android
|
289
|
+
* @param {en} options.detectHarmony Whether to detect HarmonyOS separately, default is false, HarmonyOS will be recognized as android
|
290
|
+
* @returns 返回当前设备的操作系统,可能的值包括 'android'、'ios'、'harmony' 或 'pc',如果无法获取,则返回空字符串
|
291
|
+
* @returns {en} Returns the operating system of the current device, possible values are 'android', 'ios', 'harmony', or 'pc'. Returns an empty string if it cannot be obtained
|
287
292
|
* @example
|
288
293
|
* ```
|
289
294
|
* import { useSystem } from '@arco-design/mobile-react/esm/_helpers/hooks';
|
290
295
|
*
|
291
296
|
* const system = useSystem();
|
297
|
+
* // Or with options
|
298
|
+
* const systemWithHarmony = useSystem({ detectHarmony: true });
|
292
299
|
* ```
|
293
300
|
*/
|
294
301
|
|
295
302
|
|
296
|
-
function useSystem() {
|
303
|
+
function useSystem(options) {
|
297
304
|
var _useContext = (0, _react.useContext)(_contextProvider.GlobalContext),
|
298
305
|
currentSystem = _useContext.system;
|
299
306
|
|
300
307
|
var _useState5 = (0, _react.useState)(function () {
|
301
|
-
return currentSystem || (0, _mobileUtils.getSystem)();
|
308
|
+
return currentSystem || (0, _mobileUtils.getSystem)(options);
|
302
309
|
}),
|
303
310
|
system = _useState5[0],
|
304
311
|
setSystem = _useState5[1];
|
305
312
|
|
306
313
|
(0, _react.useEffect)(function () {
|
307
|
-
setSystem(currentSystem || (0, _mobileUtils.getSystem)());
|
308
|
-
}, [currentSystem]);
|
314
|
+
setSystem(currentSystem || (0, _mobileUtils.getSystem)(options));
|
315
|
+
}, [currentSystem, options]);
|
309
316
|
return system;
|
310
317
|
}
|
311
318
|
/**
|