@orderly.network/ui-order-entry 2.11.1 → 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.mjs
CHANGED
|
@@ -2911,6 +2911,7 @@ var OrderEntryProvider = (props) => {
|
|
|
2911
2911
|
onBlur,
|
|
2912
2912
|
getErrorMsg,
|
|
2913
2913
|
setOrderValue,
|
|
2914
|
+
manualSetOrderValue,
|
|
2914
2915
|
setOrderValues,
|
|
2915
2916
|
currentFocusInput,
|
|
2916
2917
|
errors,
|
|
@@ -2929,6 +2930,7 @@ var OrderEntryProvider = (props) => {
|
|
|
2929
2930
|
onBlur,
|
|
2930
2931
|
getErrorMsg,
|
|
2931
2932
|
setOrderValue,
|
|
2933
|
+
manualSetOrderValue,
|
|
2932
2934
|
setOrderValues,
|
|
2933
2935
|
currentFocusInput,
|
|
2934
2936
|
errors,
|
|
@@ -2947,6 +2949,7 @@ var OrderEntryProvider = (props) => {
|
|
|
2947
2949
|
onBlur,
|
|
2948
2950
|
getErrorMsg,
|
|
2949
2951
|
setOrderValue,
|
|
2952
|
+
manualSetOrderValue,
|
|
2950
2953
|
setOrderValues,
|
|
2951
2954
|
currentFocusInput,
|
|
2952
2955
|
errors,
|
|
@@ -4375,7 +4378,12 @@ var SLIDER_MAX = 100;
|
|
|
4375
4378
|
var QuantitySlider = memo((props) => {
|
|
4376
4379
|
const { canTrade, side, order_quantity, maxQty } = props;
|
|
4377
4380
|
const [sliderValue, setSliderValue] = useState(0);
|
|
4378
|
-
const {
|
|
4381
|
+
const {
|
|
4382
|
+
setOrderValue,
|
|
4383
|
+
manualSetOrderValue,
|
|
4384
|
+
symbolInfo,
|
|
4385
|
+
lastQuantityInputType
|
|
4386
|
+
} = useOrderEntryContext();
|
|
4379
4387
|
const { base_dp, base_tick } = symbolInfo;
|
|
4380
4388
|
const { t } = useTranslation();
|
|
4381
4389
|
const color = useMemo(
|
|
@@ -4388,22 +4396,30 @@ var QuantitySlider = memo((props) => {
|
|
|
4388
4396
|
const onSliderValueChange = (value) => {
|
|
4389
4397
|
lastQuantityInputType.current = 4 /* QUANTITY_SLIDER */;
|
|
4390
4398
|
setSliderValue(value);
|
|
4399
|
+
sliderToQuantity(value, true);
|
|
4391
4400
|
};
|
|
4392
|
-
const sliderToQuantity = (value) => {
|
|
4401
|
+
const sliderToQuantity = (value, isManual = false) => {
|
|
4393
4402
|
const newQty = new Decimal(value).div(SLIDER_MAX).mul(maxQty).toFixed(base_dp, Decimal.ROUND_DOWN);
|
|
4394
|
-
|
|
4403
|
+
if (isManual) {
|
|
4404
|
+
manualSetOrderValue?.(
|
|
4405
|
+
"order_quantity",
|
|
4406
|
+
utils.formatNumber(newQty, base_tick)
|
|
4407
|
+
);
|
|
4408
|
+
} else {
|
|
4409
|
+
setOrderValue("order_quantity", utils.formatNumber(newQty, base_tick));
|
|
4410
|
+
}
|
|
4395
4411
|
};
|
|
4396
4412
|
const onMax = () => {
|
|
4397
4413
|
onSliderValueChange(SLIDER_MAX);
|
|
4398
4414
|
if (sliderValue === SLIDER_MAX) {
|
|
4399
|
-
sliderToQuantity(SLIDER_MAX);
|
|
4415
|
+
sliderToQuantity(SLIDER_MAX, true);
|
|
4400
4416
|
}
|
|
4401
4417
|
};
|
|
4402
4418
|
useEffect(() => {
|
|
4403
4419
|
if (lastQuantityInputType.current === 4 /* QUANTITY_SLIDER */) {
|
|
4404
4420
|
sliderToQuantity(sliderValue);
|
|
4405
4421
|
}
|
|
4406
|
-
}, [
|
|
4422
|
+
}, [maxQty]);
|
|
4407
4423
|
useEffect(() => {
|
|
4408
4424
|
const quantityToSlider = () => {
|
|
4409
4425
|
if (order_quantity && Number(order_quantity) !== 0 && maxQty !== 0) {
|
|
@@ -5158,6 +5174,7 @@ var OrderEntry = (props) => {
|
|
|
5158
5174
|
side,
|
|
5159
5175
|
formattedOrder,
|
|
5160
5176
|
setOrderValue,
|
|
5177
|
+
manualSetOrderValue,
|
|
5161
5178
|
setOrderValues,
|
|
5162
5179
|
symbolInfo,
|
|
5163
5180
|
maxQty,
|
|
@@ -5213,11 +5230,11 @@ var OrderEntry = (props) => {
|
|
|
5213
5230
|
return;
|
|
5214
5231
|
}
|
|
5215
5232
|
if (slippage) {
|
|
5216
|
-
|
|
5233
|
+
manualSetOrderValue("slippage", Number(slippage));
|
|
5217
5234
|
} else {
|
|
5218
|
-
|
|
5235
|
+
manualSetOrderValue("slippage", void 0);
|
|
5219
5236
|
}
|
|
5220
|
-
}, [slippage, disableFeatures]);
|
|
5237
|
+
}, [slippage, disableFeatures, manualSetOrderValue]);
|
|
5221
5238
|
useEffect(() => {
|
|
5222
5239
|
const clickHandler = (event) => {
|
|
5223
5240
|
const target = event.target;
|
|
@@ -5291,12 +5308,12 @@ var OrderEntry = (props) => {
|
|
|
5291
5308
|
return new Decimal(maxQty).todp(symbolInfo.base_dp, Decimal.ROUND_DOWN).toString();
|
|
5292
5309
|
}, [maxQty, symbolInfo.base_dp]);
|
|
5293
5310
|
const onMaxQtyConfirm = useCallback(() => {
|
|
5294
|
-
|
|
5311
|
+
manualSetOrderValue("order_quantity", formattedMaxQty);
|
|
5295
5312
|
requestAnimationFrame(() => {
|
|
5296
5313
|
onSubmit();
|
|
5297
5314
|
});
|
|
5298
5315
|
setMaxQtyConfirmOpen(false);
|
|
5299
|
-
}, [
|
|
5316
|
+
}, [manualSetOrderValue, formattedMaxQty, onSubmit]);
|
|
5300
5317
|
const validateSubmit = async () => {
|
|
5301
5318
|
if (formattedOrder.reduce_only && maxQty === 0) {
|
|
5302
5319
|
return modal.confirm({
|
|
@@ -5304,7 +5321,7 @@ var OrderEntry = (props) => {
|
|
|
5304
5321
|
content: t("orderEntry.reduceOnly.reminder.content"),
|
|
5305
5322
|
okLabel: t("orderEntry.placeOrderNow"),
|
|
5306
5323
|
onOk: async () => {
|
|
5307
|
-
|
|
5324
|
+
manualSetOrderValue("reduce_only", false);
|
|
5308
5325
|
requestAnimationFrame(() => {
|
|
5309
5326
|
props.resetMetaState();
|
|
5310
5327
|
onSubmit();
|
|
@@ -5336,7 +5353,7 @@ var OrderEntry = (props) => {
|
|
|
5336
5353
|
};
|
|
5337
5354
|
const onSubmitAdvancedTPSL = (order) => {
|
|
5338
5355
|
if (order.side !== formattedOrder.side) {
|
|
5339
|
-
|
|
5356
|
+
manualSetOrderValue("side", order.side);
|
|
5340
5357
|
}
|
|
5341
5358
|
setOrderValues({
|
|
5342
5359
|
position_type: order.position_type,
|
|
@@ -5384,7 +5401,7 @@ var OrderEntry = (props) => {
|
|
|
5384
5401
|
setNeedConfirm,
|
|
5385
5402
|
hidden,
|
|
5386
5403
|
setHidden,
|
|
5387
|
-
onValueChange:
|
|
5404
|
+
onValueChange: manualSetOrderValue,
|
|
5388
5405
|
orderTypeExtra: formattedOrder["order_type_ext"],
|
|
5389
5406
|
showExtra: formattedOrder["order_type"] === OrderType.LIMIT && !props.tpslSwitch
|
|
5390
5407
|
};
|
|
@@ -5399,6 +5416,7 @@ var OrderEntry = (props) => {
|
|
|
5399
5416
|
onBlur: props.onBlur,
|
|
5400
5417
|
getErrorMsg,
|
|
5401
5418
|
setOrderValue,
|
|
5419
|
+
manualSetOrderValue,
|
|
5402
5420
|
setOrderValues,
|
|
5403
5421
|
currentFocusInput: currentFocusInput.current,
|
|
5404
5422
|
priceInputRef: props.priceInputRef,
|
|
@@ -5434,7 +5452,7 @@ var OrderEntry = (props) => {
|
|
|
5434
5452
|
canTrade: props.canTrade,
|
|
5435
5453
|
side,
|
|
5436
5454
|
order_type: formattedOrder.order_type,
|
|
5437
|
-
setOrderValue,
|
|
5455
|
+
setOrderValue: manualSetOrderValue,
|
|
5438
5456
|
symbolLeverage: props.symbolLeverage,
|
|
5439
5457
|
marginMode: props.marginMode
|
|
5440
5458
|
}
|
|
@@ -5529,10 +5547,10 @@ var OrderEntry = (props) => {
|
|
|
5529
5547
|
onSwitchChanged: props.setTpslSwitch,
|
|
5530
5548
|
orderType: formattedOrder.order_type,
|
|
5531
5549
|
errors: validated || props.slPriceError !== void 0 ? { ...errors, ...props.slPriceError } : null,
|
|
5532
|
-
setOrderValue,
|
|
5550
|
+
setOrderValue: manualSetOrderValue,
|
|
5533
5551
|
reduceOnlyChecked: formattedOrder.reduce_only ?? false,
|
|
5534
5552
|
onReduceOnlyChange: (checked) => {
|
|
5535
|
-
|
|
5553
|
+
manualSetOrderValue("reduce_only", checked);
|
|
5536
5554
|
},
|
|
5537
5555
|
values: {
|
|
5538
5556
|
position_type: formattedOrder.position_type ?? PositionType.PARTIAL,
|
|
@@ -5569,7 +5587,7 @@ var OrderEntry = (props) => {
|
|
|
5569
5587
|
{
|
|
5570
5588
|
checked: formattedOrder.reduce_only ?? false,
|
|
5571
5589
|
onCheckedChange: (checked) => {
|
|
5572
|
-
|
|
5590
|
+
manualSetOrderValue("reduce_only", checked);
|
|
5573
5591
|
}
|
|
5574
5592
|
}
|
|
5575
5593
|
),
|
|
@@ -5658,7 +5676,7 @@ var OrderEntry = (props) => {
|
|
|
5658
5676
|
children: showTPSLAdvanced && /* @__PURE__ */ jsx(
|
|
5659
5677
|
TPSLAdvancedWidget,
|
|
5660
5678
|
{
|
|
5661
|
-
setOrderValue,
|
|
5679
|
+
setOrderValue: manualSetOrderValue,
|
|
5662
5680
|
order: formattedOrder,
|
|
5663
5681
|
onSubmit: onSubmitAdvancedTPSL,
|
|
5664
5682
|
onClose: () => {
|
|
@@ -5937,6 +5955,12 @@ var useOrderEntryScript = (inputs) => {
|
|
|
5937
5955
|
);
|
|
5938
5956
|
}
|
|
5939
5957
|
);
|
|
5958
|
+
const manualSetOrderValue = useMemoizedFn(
|
|
5959
|
+
(key, value, options2) => {
|
|
5960
|
+
lastUserActiveTimeRef.current = Date.now();
|
|
5961
|
+
setOrderValue(key, value, options2);
|
|
5962
|
+
}
|
|
5963
|
+
);
|
|
5940
5964
|
const onTPSLSwitchChanged = (state2) => {
|
|
5941
5965
|
setTpslSwitch(state2);
|
|
5942
5966
|
if (state2) {
|
|
@@ -6063,22 +6087,21 @@ var useOrderEntryScript = (inputs) => {
|
|
|
6063
6087
|
}
|
|
6064
6088
|
}, [tpslSwitch]);
|
|
6065
6089
|
useEffect(() => {
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
formattedOrder.
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
useEffect(() => {
|
|
6090
|
+
let estLiqPrice = state.estLiqPrice;
|
|
6091
|
+
if (estLiqPrice == null || formattedOrder.side == null || state.markPrice == null) {
|
|
6092
|
+
estLiqPrice = null;
|
|
6093
|
+
} else if (formattedOrder.side === OrderSide.BUY && estLiqPrice > state.markPrice || formattedOrder.side === OrderSide.SELL && estLiqPrice < state.markPrice) {
|
|
6094
|
+
estLiqPrice = null;
|
|
6095
|
+
}
|
|
6073
6096
|
const lastActive = lastUserActiveTimeRef.current;
|
|
6074
6097
|
const now = Date.now();
|
|
6075
6098
|
const isUserActive = now - lastActive <= ORDER_ENTRY_EST_LIQ_ACTIVE_WINDOW_MS;
|
|
6076
6099
|
ee.emit(ORDER_ENTRY_EST_LIQ_PRICE_CHANGE, {
|
|
6077
6100
|
symbol,
|
|
6078
|
-
estLiqPrice
|
|
6101
|
+
estLiqPrice,
|
|
6079
6102
|
isUserActive
|
|
6080
6103
|
});
|
|
6081
|
-
}, [ee, symbol, state.estLiqPrice]);
|
|
6104
|
+
}, [ee, symbol, state.estLiqPrice, state.markPrice, formattedOrder.side]);
|
|
6082
6105
|
useEffect(() => {
|
|
6083
6106
|
setOrderValue("margin_mode", marginMode);
|
|
6084
6107
|
}, [marginMode]);
|
|
@@ -6090,6 +6113,7 @@ var useOrderEntryScript = (inputs) => {
|
|
|
6090
6113
|
level: formattedOrder.level,
|
|
6091
6114
|
formattedOrder,
|
|
6092
6115
|
setOrderValue,
|
|
6116
|
+
manualSetOrderValue,
|
|
6093
6117
|
setOrderValues,
|
|
6094
6118
|
// account-level leverage (for other consumers)
|
|
6095
6119
|
currentLeverage,
|