@orderly.network/ui-order-entry 2.11.1-alpha.0 → 2.11.2-alpha.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.
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +51 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +51 -27
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -13
package/dist/index.d.mts
CHANGED
|
@@ -47,6 +47,9 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
|
|
|
47
47
|
setOrderValue: (this: unknown, key: string, value: unknown, options?: {
|
|
48
48
|
shouldUpdateLastChangedField?: boolean;
|
|
49
49
|
} | undefined) => void;
|
|
50
|
+
manualSetOrderValue: (this: unknown, key: string, value: unknown, options?: {
|
|
51
|
+
shouldUpdateLastChangedField?: boolean;
|
|
52
|
+
} | undefined) => void;
|
|
50
53
|
setOrderValues: (values: Partial<_orderly_network_types.OrderlyOrder>) => void;
|
|
51
54
|
currentLeverage: number | null;
|
|
52
55
|
symbolLeverage: number | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -47,6 +47,9 @@ declare const useOrderEntryScript: (inputs: OrderEntryScriptInputs) => {
|
|
|
47
47
|
setOrderValue: (this: unknown, key: string, value: unknown, options?: {
|
|
48
48
|
shouldUpdateLastChangedField?: boolean;
|
|
49
49
|
} | undefined) => void;
|
|
50
|
+
manualSetOrderValue: (this: unknown, key: string, value: unknown, options?: {
|
|
51
|
+
shouldUpdateLastChangedField?: boolean;
|
|
52
|
+
} | undefined) => void;
|
|
50
53
|
setOrderValues: (values: Partial<_orderly_network_types.OrderlyOrder>) => void;
|
|
51
54
|
currentLeverage: number | null;
|
|
52
55
|
symbolLeverage: number | undefined;
|
package/dist/index.js
CHANGED
|
@@ -2917,6 +2917,7 @@ var OrderEntryProvider = (props) => {
|
|
|
2917
2917
|
onBlur,
|
|
2918
2918
|
getErrorMsg,
|
|
2919
2919
|
setOrderValue,
|
|
2920
|
+
manualSetOrderValue,
|
|
2920
2921
|
setOrderValues,
|
|
2921
2922
|
currentFocusInput,
|
|
2922
2923
|
errors,
|
|
@@ -2935,6 +2936,7 @@ var OrderEntryProvider = (props) => {
|
|
|
2935
2936
|
onBlur,
|
|
2936
2937
|
getErrorMsg,
|
|
2937
2938
|
setOrderValue,
|
|
2939
|
+
manualSetOrderValue,
|
|
2938
2940
|
setOrderValues,
|
|
2939
2941
|
currentFocusInput,
|
|
2940
2942
|
errors,
|
|
@@ -2953,6 +2955,7 @@ var OrderEntryProvider = (props) => {
|
|
|
2953
2955
|
onBlur,
|
|
2954
2956
|
getErrorMsg,
|
|
2955
2957
|
setOrderValue,
|
|
2958
|
+
manualSetOrderValue,
|
|
2956
2959
|
setOrderValues,
|
|
2957
2960
|
currentFocusInput,
|
|
2958
2961
|
errors,
|
|
@@ -4381,7 +4384,12 @@ var SLIDER_MAX = 100;
|
|
|
4381
4384
|
var QuantitySlider = React3.memo((props) => {
|
|
4382
4385
|
const { canTrade, side, order_quantity, maxQty } = props;
|
|
4383
4386
|
const [sliderValue, setSliderValue] = React3.useState(0);
|
|
4384
|
-
const {
|
|
4387
|
+
const {
|
|
4388
|
+
setOrderValue,
|
|
4389
|
+
manualSetOrderValue,
|
|
4390
|
+
symbolInfo,
|
|
4391
|
+
lastQuantityInputType
|
|
4392
|
+
} = useOrderEntryContext();
|
|
4385
4393
|
const { base_dp, base_tick } = symbolInfo;
|
|
4386
4394
|
const { t } = i18n.useTranslation();
|
|
4387
4395
|
const color = React3.useMemo(
|
|
@@ -4394,22 +4402,30 @@ var QuantitySlider = React3.memo((props) => {
|
|
|
4394
4402
|
const onSliderValueChange = (value) => {
|
|
4395
4403
|
lastQuantityInputType.current = 4 /* QUANTITY_SLIDER */;
|
|
4396
4404
|
setSliderValue(value);
|
|
4405
|
+
sliderToQuantity(value, true);
|
|
4397
4406
|
};
|
|
4398
|
-
const sliderToQuantity = (value) => {
|
|
4407
|
+
const sliderToQuantity = (value, isManual = false) => {
|
|
4399
4408
|
const newQty = new utils.Decimal(value).div(SLIDER_MAX).mul(maxQty).toFixed(base_dp, utils.Decimal.ROUND_DOWN);
|
|
4400
|
-
|
|
4409
|
+
if (isManual) {
|
|
4410
|
+
manualSetOrderValue?.(
|
|
4411
|
+
"order_quantity",
|
|
4412
|
+
hooks.utils.formatNumber(newQty, base_tick)
|
|
4413
|
+
);
|
|
4414
|
+
} else {
|
|
4415
|
+
setOrderValue("order_quantity", hooks.utils.formatNumber(newQty, base_tick));
|
|
4416
|
+
}
|
|
4401
4417
|
};
|
|
4402
4418
|
const onMax = () => {
|
|
4403
4419
|
onSliderValueChange(SLIDER_MAX);
|
|
4404
4420
|
if (sliderValue === SLIDER_MAX) {
|
|
4405
|
-
sliderToQuantity(SLIDER_MAX);
|
|
4421
|
+
sliderToQuantity(SLIDER_MAX, true);
|
|
4406
4422
|
}
|
|
4407
4423
|
};
|
|
4408
4424
|
React3.useEffect(() => {
|
|
4409
4425
|
if (lastQuantityInputType.current === 4 /* QUANTITY_SLIDER */) {
|
|
4410
4426
|
sliderToQuantity(sliderValue);
|
|
4411
4427
|
}
|
|
4412
|
-
}, [
|
|
4428
|
+
}, [maxQty]);
|
|
4413
4429
|
React3.useEffect(() => {
|
|
4414
4430
|
const quantityToSlider = () => {
|
|
4415
4431
|
if (order_quantity && Number(order_quantity) !== 0 && maxQty !== 0) {
|
|
@@ -5164,6 +5180,7 @@ var OrderEntry = (props) => {
|
|
|
5164
5180
|
side,
|
|
5165
5181
|
formattedOrder,
|
|
5166
5182
|
setOrderValue,
|
|
5183
|
+
manualSetOrderValue,
|
|
5167
5184
|
setOrderValues,
|
|
5168
5185
|
symbolInfo,
|
|
5169
5186
|
maxQty,
|
|
@@ -5219,11 +5236,11 @@ var OrderEntry = (props) => {
|
|
|
5219
5236
|
return;
|
|
5220
5237
|
}
|
|
5221
5238
|
if (slippage) {
|
|
5222
|
-
|
|
5239
|
+
manualSetOrderValue("slippage", Number(slippage));
|
|
5223
5240
|
} else {
|
|
5224
|
-
|
|
5241
|
+
manualSetOrderValue("slippage", void 0);
|
|
5225
5242
|
}
|
|
5226
|
-
}, [slippage, disableFeatures]);
|
|
5243
|
+
}, [slippage, disableFeatures, manualSetOrderValue]);
|
|
5227
5244
|
React3.useEffect(() => {
|
|
5228
5245
|
const clickHandler = (event) => {
|
|
5229
5246
|
const target = event.target;
|
|
@@ -5297,12 +5314,12 @@ var OrderEntry = (props) => {
|
|
|
5297
5314
|
return new utils.Decimal(maxQty).todp(symbolInfo.base_dp, utils.Decimal.ROUND_DOWN).toString();
|
|
5298
5315
|
}, [maxQty, symbolInfo.base_dp]);
|
|
5299
5316
|
const onMaxQtyConfirm = React3.useCallback(() => {
|
|
5300
|
-
|
|
5317
|
+
manualSetOrderValue("order_quantity", formattedMaxQty);
|
|
5301
5318
|
requestAnimationFrame(() => {
|
|
5302
5319
|
onSubmit();
|
|
5303
5320
|
});
|
|
5304
5321
|
setMaxQtyConfirmOpen(false);
|
|
5305
|
-
}, [
|
|
5322
|
+
}, [manualSetOrderValue, formattedMaxQty, onSubmit]);
|
|
5306
5323
|
const validateSubmit = async () => {
|
|
5307
5324
|
if (formattedOrder.reduce_only && maxQty === 0) {
|
|
5308
5325
|
return ui.modal.confirm({
|
|
@@ -5310,7 +5327,7 @@ var OrderEntry = (props) => {
|
|
|
5310
5327
|
content: t("orderEntry.reduceOnly.reminder.content"),
|
|
5311
5328
|
okLabel: t("orderEntry.placeOrderNow"),
|
|
5312
5329
|
onOk: async () => {
|
|
5313
|
-
|
|
5330
|
+
manualSetOrderValue("reduce_only", false);
|
|
5314
5331
|
requestAnimationFrame(() => {
|
|
5315
5332
|
props.resetMetaState();
|
|
5316
5333
|
onSubmit();
|
|
@@ -5342,7 +5359,7 @@ var OrderEntry = (props) => {
|
|
|
5342
5359
|
};
|
|
5343
5360
|
const onSubmitAdvancedTPSL = (order) => {
|
|
5344
5361
|
if (order.side !== formattedOrder.side) {
|
|
5345
|
-
|
|
5362
|
+
manualSetOrderValue("side", order.side);
|
|
5346
5363
|
}
|
|
5347
5364
|
setOrderValues({
|
|
5348
5365
|
position_type: order.position_type,
|
|
@@ -5390,7 +5407,7 @@ var OrderEntry = (props) => {
|
|
|
5390
5407
|
setNeedConfirm,
|
|
5391
5408
|
hidden,
|
|
5392
5409
|
setHidden,
|
|
5393
|
-
onValueChange:
|
|
5410
|
+
onValueChange: manualSetOrderValue,
|
|
5394
5411
|
orderTypeExtra: formattedOrder["order_type_ext"],
|
|
5395
5412
|
showExtra: formattedOrder["order_type"] === types.OrderType.LIMIT && !props.tpslSwitch
|
|
5396
5413
|
};
|
|
@@ -5405,6 +5422,7 @@ var OrderEntry = (props) => {
|
|
|
5405
5422
|
onBlur: props.onBlur,
|
|
5406
5423
|
getErrorMsg,
|
|
5407
5424
|
setOrderValue,
|
|
5425
|
+
manualSetOrderValue,
|
|
5408
5426
|
setOrderValues,
|
|
5409
5427
|
currentFocusInput: currentFocusInput.current,
|
|
5410
5428
|
priceInputRef: props.priceInputRef,
|
|
@@ -5440,7 +5458,7 @@ var OrderEntry = (props) => {
|
|
|
5440
5458
|
canTrade: props.canTrade,
|
|
5441
5459
|
side,
|
|
5442
5460
|
order_type: formattedOrder.order_type,
|
|
5443
|
-
setOrderValue,
|
|
5461
|
+
setOrderValue: manualSetOrderValue,
|
|
5444
5462
|
symbolLeverage: props.symbolLeverage,
|
|
5445
5463
|
marginMode: props.marginMode
|
|
5446
5464
|
}
|
|
@@ -5535,10 +5553,10 @@ var OrderEntry = (props) => {
|
|
|
5535
5553
|
onSwitchChanged: props.setTpslSwitch,
|
|
5536
5554
|
orderType: formattedOrder.order_type,
|
|
5537
5555
|
errors: validated || props.slPriceError !== void 0 ? { ...errors, ...props.slPriceError } : null,
|
|
5538
|
-
setOrderValue,
|
|
5556
|
+
setOrderValue: manualSetOrderValue,
|
|
5539
5557
|
reduceOnlyChecked: formattedOrder.reduce_only ?? false,
|
|
5540
5558
|
onReduceOnlyChange: (checked) => {
|
|
5541
|
-
|
|
5559
|
+
manualSetOrderValue("reduce_only", checked);
|
|
5542
5560
|
},
|
|
5543
5561
|
values: {
|
|
5544
5562
|
position_type: formattedOrder.position_type ?? types.PositionType.PARTIAL,
|
|
@@ -5575,7 +5593,7 @@ var OrderEntry = (props) => {
|
|
|
5575
5593
|
{
|
|
5576
5594
|
checked: formattedOrder.reduce_only ?? false,
|
|
5577
5595
|
onCheckedChange: (checked) => {
|
|
5578
|
-
|
|
5596
|
+
manualSetOrderValue("reduce_only", checked);
|
|
5579
5597
|
}
|
|
5580
5598
|
}
|
|
5581
5599
|
),
|
|
@@ -5664,7 +5682,7 @@ var OrderEntry = (props) => {
|
|
|
5664
5682
|
children: showTPSLAdvanced && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5665
5683
|
uiTpsl.TPSLAdvancedWidget,
|
|
5666
5684
|
{
|
|
5667
|
-
setOrderValue,
|
|
5685
|
+
setOrderValue: manualSetOrderValue,
|
|
5668
5686
|
order: formattedOrder,
|
|
5669
5687
|
onSubmit: onSubmitAdvancedTPSL,
|
|
5670
5688
|
onClose: () => {
|
|
@@ -5943,6 +5961,12 @@ var useOrderEntryScript = (inputs) => {
|
|
|
5943
5961
|
);
|
|
5944
5962
|
}
|
|
5945
5963
|
);
|
|
5964
|
+
const manualSetOrderValue = hooks.useMemoizedFn(
|
|
5965
|
+
(key, value, options2) => {
|
|
5966
|
+
lastUserActiveTimeRef.current = Date.now();
|
|
5967
|
+
setOrderValue(key, value, options2);
|
|
5968
|
+
}
|
|
5969
|
+
);
|
|
5946
5970
|
const onTPSLSwitchChanged = (state2) => {
|
|
5947
5971
|
setTpslSwitch(state2);
|
|
5948
5972
|
if (state2) {
|
|
@@ -6069,22 +6093,21 @@ var useOrderEntryScript = (inputs) => {
|
|
|
6069
6093
|
}
|
|
6070
6094
|
}, [tpslSwitch]);
|
|
6071
6095
|
React3.useEffect(() => {
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
formattedOrder.
|
|
6076
|
-
|
|
6077
|
-
|
|
6078
|
-
React3.useEffect(() => {
|
|
6096
|
+
let estLiqPrice = state.estLiqPrice;
|
|
6097
|
+
if (estLiqPrice == null || formattedOrder.side == null || state.markPrice == null) {
|
|
6098
|
+
estLiqPrice = null;
|
|
6099
|
+
} else if (formattedOrder.side === types.OrderSide.BUY && estLiqPrice > state.markPrice || formattedOrder.side === types.OrderSide.SELL && estLiqPrice < state.markPrice) {
|
|
6100
|
+
estLiqPrice = null;
|
|
6101
|
+
}
|
|
6079
6102
|
const lastActive = lastUserActiveTimeRef.current;
|
|
6080
6103
|
const now = Date.now();
|
|
6081
6104
|
const isUserActive = now - lastActive <= ORDER_ENTRY_EST_LIQ_ACTIVE_WINDOW_MS;
|
|
6082
6105
|
ee.emit(types.ORDER_ENTRY_EST_LIQ_PRICE_CHANGE, {
|
|
6083
6106
|
symbol,
|
|
6084
|
-
estLiqPrice
|
|
6107
|
+
estLiqPrice,
|
|
6085
6108
|
isUserActive
|
|
6086
6109
|
});
|
|
6087
|
-
}, [ee, symbol, state.estLiqPrice]);
|
|
6110
|
+
}, [ee, symbol, state.estLiqPrice, state.markPrice, formattedOrder.side]);
|
|
6088
6111
|
React3.useEffect(() => {
|
|
6089
6112
|
setOrderValue("margin_mode", marginMode);
|
|
6090
6113
|
}, [marginMode]);
|
|
@@ -6096,6 +6119,7 @@ var useOrderEntryScript = (inputs) => {
|
|
|
6096
6119
|
level: formattedOrder.level,
|
|
6097
6120
|
formattedOrder,
|
|
6098
6121
|
setOrderValue,
|
|
6122
|
+
manualSetOrderValue,
|
|
6099
6123
|
setOrderValues,
|
|
6100
6124
|
// account-level leverage (for other consumers)
|
|
6101
6125
|
currentLeverage,
|