tf-checkout-react 1.7.19 → 1.7.23
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/components/addonsContainer/AddonComponent.d.ts +4 -1
- package/dist/components/addonsContainer/SimpleAddonsContainer.d.ts +3 -1
- package/dist/components/addonsContainer/index.d.ts +1 -0
- package/dist/tf-checkout-react.cjs.development.js +87 -12
- package/dist/tf-checkout-react.cjs.development.js.map +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
- package/dist/tf-checkout-react.esm.js +87 -12
- package/dist/tf-checkout-react.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/addonsContainer/AddonComponent.tsx +24 -2
- package/src/components/addonsContainer/SimpleAddonsContainer.tsx +40 -5
- package/src/components/addonsContainer/index.tsx +2 -0
|
@@ -3603,16 +3603,37 @@ var AddonStepper = function AddonStepper(_ref) {
|
|
|
3603
3603
|
var id = _ref.id,
|
|
3604
3604
|
selectOptions = _ref.selectOptions,
|
|
3605
3605
|
handleAddonChange = _ref.handleAddonChange,
|
|
3606
|
-
classNamePrefix = _ref.classNamePrefix
|
|
3606
|
+
classNamePrefix = _ref.classNamePrefix,
|
|
3607
|
+
_ref$siblingIds = _ref.siblingIds,
|
|
3608
|
+
siblingIds = _ref$siblingIds === void 0 ? [] : _ref$siblingIds,
|
|
3609
|
+
_ref$allAddonIds = _ref.allAddonIds,
|
|
3610
|
+
allAddonIds = _ref$allAddonIds === void 0 ? [] : _ref$allAddonIds,
|
|
3611
|
+
maxTotalQuantity = _ref.maxTotalQuantity;
|
|
3607
3612
|
var _useFormikContext = useFormikContext(),
|
|
3608
3613
|
values = _useFormikContext.values,
|
|
3609
3614
|
setFieldValue = _useFormikContext.setFieldValue;
|
|
3610
3615
|
var qty = Number((_values$id = values[id]) != null ? _values$id : 0);
|
|
3611
3616
|
var max = (selectOptions == null ? void 0 : selectOptions.length) > 0 ? selectOptions[selectOptions.length - 1].value : 0;
|
|
3617
|
+
var totalSelected = allAddonIds.length > 0 ? allAddonIds.reduce(function (sum, aid) {
|
|
3618
|
+
var _values$aid;
|
|
3619
|
+
return sum + Number((_values$aid = values[aid]) != null ? _values$aid : 0);
|
|
3620
|
+
}, 0) : 0;
|
|
3612
3621
|
var change = function change(next) {
|
|
3622
|
+
if (next > qty) {
|
|
3623
|
+
if (maxTotalQuantity != null) {
|
|
3624
|
+
allAddonIds.forEach(function (aid) {
|
|
3625
|
+
if (aid !== id) setFieldValue(aid, 0);
|
|
3626
|
+
});
|
|
3627
|
+
} else {
|
|
3628
|
+
siblingIds.forEach(function (siblingId) {
|
|
3629
|
+
return setFieldValue(siblingId, 0);
|
|
3630
|
+
});
|
|
3631
|
+
}
|
|
3632
|
+
}
|
|
3613
3633
|
setFieldValue(id, next);
|
|
3614
3634
|
handleAddonChange(id, next);
|
|
3615
3635
|
};
|
|
3636
|
+
var incrementDisabled = qty >= max || maxTotalQuantity != null && totalSelected >= maxTotalQuantity && qty === 0;
|
|
3616
3637
|
return React.createElement("div", {
|
|
3617
3638
|
className: classNamePrefix + "_stepper"
|
|
3618
3639
|
}, React.createElement("button", {
|
|
@@ -3631,7 +3652,7 @@ var AddonStepper = function AddonStepper(_ref) {
|
|
|
3631
3652
|
onClick: function onClick() {
|
|
3632
3653
|
return change(qty + 1);
|
|
3633
3654
|
},
|
|
3634
|
-
disabled:
|
|
3655
|
+
disabled: incrementDisabled,
|
|
3635
3656
|
"aria-label": "Increase quantity"
|
|
3636
3657
|
}, "+"));
|
|
3637
3658
|
};
|
|
@@ -3648,6 +3669,11 @@ var AddonComponent = function AddonComponent(_ref2) {
|
|
|
3648
3669
|
errors = _ref2.errors,
|
|
3649
3670
|
_ref2$useStepperQty = _ref2.useStepperQty,
|
|
3650
3671
|
useStepperQty = _ref2$useStepperQty === void 0 ? false : _ref2$useStepperQty,
|
|
3672
|
+
_ref2$siblingIds = _ref2.siblingIds,
|
|
3673
|
+
siblingIds = _ref2$siblingIds === void 0 ? [] : _ref2$siblingIds,
|
|
3674
|
+
_ref2$allAddonIds = _ref2.allAddonIds,
|
|
3675
|
+
allAddonIds = _ref2$allAddonIds === void 0 ? [] : _ref2$allAddonIds,
|
|
3676
|
+
maxTotalQuantity = _ref2.maxTotalQuantity,
|
|
3651
3677
|
_ref2$onCustomFieldCh = _ref2.onCustomFieldChange,
|
|
3652
3678
|
onCustomFieldChange = _ref2$onCustomFieldCh === void 0 ? _identity : _ref2$onCustomFieldCh;
|
|
3653
3679
|
var id = data.id,
|
|
@@ -3680,7 +3706,10 @@ var AddonComponent = function AddonComponent(_ref2) {
|
|
|
3680
3706
|
id: id,
|
|
3681
3707
|
selectOptions: selectOptions,
|
|
3682
3708
|
handleAddonChange: handleAddonChange,
|
|
3683
|
-
classNamePrefix: classNamePrefix
|
|
3709
|
+
classNamePrefix: classNamePrefix,
|
|
3710
|
+
siblingIds: siblingIds,
|
|
3711
|
+
allAddonIds: allAddonIds,
|
|
3712
|
+
maxTotalQuantity: maxTotalQuantity
|
|
3684
3713
|
})) : React.createElement(Field, {
|
|
3685
3714
|
name: id,
|
|
3686
3715
|
selectOptions: selectOptions,
|
|
@@ -4402,6 +4431,11 @@ var AddonsContainter = function AddonsContainter(_ref) {
|
|
|
4402
4431
|
data: variant,
|
|
4403
4432
|
selectOptions: addonsOptions[variant.id],
|
|
4404
4433
|
classNamePrefix: classNamePrefix,
|
|
4434
|
+
siblingIds: addon.variants.map(function (v) {
|
|
4435
|
+
return v.id;
|
|
4436
|
+
}).filter(function (vid) {
|
|
4437
|
+
return vid !== variant.id;
|
|
4438
|
+
}),
|
|
4405
4439
|
handleAddonChange: function handleAddonChange(id, value) {
|
|
4406
4440
|
onAddOnSelect(id, value, addon);
|
|
4407
4441
|
onFieldChange(id, value, addon);
|
|
@@ -4463,6 +4497,7 @@ var SimpleAddonsContainer = function SimpleAddonsContainer(_ref) {
|
|
|
4463
4497
|
eventId = _ref.eventId,
|
|
4464
4498
|
_ref$useStepperQty = _ref.useStepperQty,
|
|
4465
4499
|
useStepperQty = _ref$useStepperQty === void 0 ? false : _ref$useStepperQty,
|
|
4500
|
+
addonMaxQuantityGroups = _ref.addonMaxQuantityGroups,
|
|
4466
4501
|
_ref$onAddOnSelect = _ref.onAddOnSelect,
|
|
4467
4502
|
onAddOnSelect = _ref$onAddOnSelect === void 0 ? _identity : _ref$onAddOnSelect,
|
|
4468
4503
|
_ref$handleConfirm = _ref.handleConfirm,
|
|
@@ -4479,12 +4514,15 @@ var SimpleAddonsContainer = function SimpleAddonsContainer(_ref) {
|
|
|
4479
4514
|
var _useState4 = useState({}),
|
|
4480
4515
|
groupsWithInitialVariantsValues = _useState4[0],
|
|
4481
4516
|
setGroupsWithInitialVariantsValues = _useState4[1];
|
|
4482
|
-
var _useState5 = useState(
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
var _useState6 = useState(
|
|
4486
|
-
|
|
4487
|
-
|
|
4517
|
+
var _useState5 = useState({}),
|
|
4518
|
+
crossGroupSelections = _useState5[0],
|
|
4519
|
+
setCrossGroupSelections = _useState5[1];
|
|
4520
|
+
var _useState6 = useState(true),
|
|
4521
|
+
loading = _useState6[0],
|
|
4522
|
+
setLoading = _useState6[1];
|
|
4523
|
+
var _useState7 = useState(null),
|
|
4524
|
+
visibleDescription = _useState7[0],
|
|
4525
|
+
setVisibleDescription = _useState7[1];
|
|
4488
4526
|
var handleDescriptionToggle = function handleDescriptionToggle(ticketId) {
|
|
4489
4527
|
setVisibleDescription(function (current) {
|
|
4490
4528
|
return current === ticketId ? null : ticketId;
|
|
@@ -4613,6 +4651,37 @@ var SimpleAddonsContainer = function SimpleAddonsContainer(_ref) {
|
|
|
4613
4651
|
recreateGroupVariantsSelectOptions(currGroupId, updatedGroupsWithSelectedVariants[currGroupId]);
|
|
4614
4652
|
}
|
|
4615
4653
|
};
|
|
4654
|
+
// Cross-group cap: when addonMaxQuantityGroups is set, limits total selections
|
|
4655
|
+
// across ALL addon groups to that number by capping each stepper's max.
|
|
4656
|
+
var effectiveAddonsOptions = useMemo(function () {
|
|
4657
|
+
if (!addonMaxQuantityGroups) return addonsOptions;
|
|
4658
|
+
var totalSelected = Object.values(crossGroupSelections).reduce(function (sum, v) {
|
|
4659
|
+
return sum + Number(v);
|
|
4660
|
+
}, 0);
|
|
4661
|
+
var globalRemaining = addonMaxQuantityGroups - totalSelected;
|
|
4662
|
+
var result = {};
|
|
4663
|
+
var _loop = function _loop() {
|
|
4664
|
+
var opts = addonsOptions[id] || [];
|
|
4665
|
+
var sdkMax = opts.length ? opts[opts.length - 1].value : 0;
|
|
4666
|
+
var currSelected = Number(crossGroupSelections[id] || 0);
|
|
4667
|
+
var allowedMax = Math.max(0, Math.min(sdkMax, globalRemaining + currSelected));
|
|
4668
|
+
result[id] = opts.filter(function (opt) {
|
|
4669
|
+
return opt.value <= allowedMax;
|
|
4670
|
+
});
|
|
4671
|
+
};
|
|
4672
|
+
for (var id in addonsOptions) {
|
|
4673
|
+
_loop();
|
|
4674
|
+
}
|
|
4675
|
+
return result;
|
|
4676
|
+
}, [addonsOptions, crossGroupSelections, addonMaxQuantityGroups]);
|
|
4677
|
+
var handleCrossGroupChange = function handleCrossGroupChange(id, value) {
|
|
4678
|
+
if (addonMaxQuantityGroups) {
|
|
4679
|
+
setCrossGroupSelections(function (prev) {
|
|
4680
|
+
var _extends6;
|
|
4681
|
+
return _extends({}, prev, (_extends6 = {}, _extends6[id] = Number(value), _extends6));
|
|
4682
|
+
});
|
|
4683
|
+
}
|
|
4684
|
+
};
|
|
4616
4685
|
var initialValues = useMemo(function () {
|
|
4617
4686
|
var _addOnDataWithCustomF2;
|
|
4618
4687
|
var addOnsData = {};
|
|
@@ -4722,10 +4791,15 @@ var SimpleAddonsContainer = function SimpleAddonsContainer(_ref) {
|
|
|
4722
4791
|
React.createElement(AddonComponent, {
|
|
4723
4792
|
key: variant.id,
|
|
4724
4793
|
data: variant,
|
|
4725
|
-
selectOptions:
|
|
4794
|
+
selectOptions: effectiveAddonsOptions[variant.id],
|
|
4726
4795
|
classNamePrefix: classNamePrefix,
|
|
4796
|
+
siblingIds: addon.variants.filter(function (v) {
|
|
4797
|
+
return v.id !== variant.id;
|
|
4798
|
+
}).map(function (v) {
|
|
4799
|
+
return v.id;
|
|
4800
|
+
}),
|
|
4727
4801
|
handleAddonChange: function handleAddonChange(id, value) {
|
|
4728
|
-
|
|
4802
|
+
handleCrossGroupChange(id, value);
|
|
4729
4803
|
onFieldChange(id, value, addon);
|
|
4730
4804
|
var fieldUpdates = collectAddonFieldUpdates(addon, values);
|
|
4731
4805
|
onAddOnSelect(id, value, addon, fieldUpdates);
|
|
@@ -4743,9 +4817,10 @@ var SimpleAddonsContainer = function SimpleAddonsContainer(_ref) {
|
|
|
4743
4817
|
React.createElement(AddonComponent, {
|
|
4744
4818
|
key: addon.id,
|
|
4745
4819
|
data: addon,
|
|
4746
|
-
selectOptions:
|
|
4820
|
+
selectOptions: effectiveAddonsOptions[addon.id],
|
|
4747
4821
|
classNamePrefix: classNamePrefix,
|
|
4748
4822
|
handleAddonChange: function handleAddonChange(id, value) {
|
|
4823
|
+
handleCrossGroupChange(id, value);
|
|
4749
4824
|
onFieldChange(id, value, addon);
|
|
4750
4825
|
var fieldUpdates = collectAddonFieldUpdates(addon, values);
|
|
4751
4826
|
onAddOnSelect(id, value, addon, fieldUpdates);
|