@open-tender/store 1.1.162 → 1.1.164

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.
@@ -1,12 +1,13 @@
1
1
  import { CartItemGroups, CartLevels } from '@open-tender/types';
2
2
  import { Handlers, ItemGroupsProps, ItemOptionProps, ErrorMessageProps, SuccessMessageProps, ItemGroupProps } from '@open-tender/ui';
3
3
  import React, { ReactNode } from 'react';
4
- declare const ItemGroups: ({ handlers, groups, levels, excludeSize, className, children, ItemGroupView, ItemOptionView, ErrorMessageView, SuccessMessageView }: {
4
+ declare const ItemGroups: ({ handlers, groups, levels, excludeSize, configName, optionConfigName, children, ItemGroupView, ItemOptionView, ErrorMessageView, SuccessMessageView }: {
5
5
  handlers: Handlers;
6
6
  groups: CartItemGroups;
7
7
  levels: CartLevels;
8
8
  excludeSize?: boolean;
9
- className?: string;
9
+ configName?: string;
10
+ optionConfigName?: string;
10
11
  children: (props: ItemGroupsProps) => ReactNode;
11
12
  ItemOptionView: (props: ItemOptionProps) => ReactNode;
12
13
  ItemGroupView: (props: ItemGroupProps) => ReactNode;
@@ -7,9 +7,9 @@ var slices_1 = require("../slices");
7
7
  var ItemGroup_1 = tslib_1.__importDefault(require("./ItemGroup"));
8
8
  var ItemOption_1 = tslib_1.__importDefault(require("./ItemOption"));
9
9
  var ItemGroups = function (_a) {
10
- var handlers = _a.handlers, groups = _a.groups, levels = _a.levels, _b = _a.excludeSize, excludeSize = _b === void 0 ? true : _b, _c = _a.className, className = _c === void 0 ? 'itemOption' : _c, children = _a.children, ItemGroupView = _a.ItemGroupView, ItemOptionView = _a.ItemOptionView, ErrorMessageView = _a.ErrorMessageView, SuccessMessageView = _a.SuccessMessageView;
11
- var config = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig).itemGroups;
12
- var renderItemOption = (0, react_1.useCallback)(function (group, option) { return (react_1.default.createElement(ItemOption_1.default, { key: "".concat(group.id, "-").concat(option.id), levels: levels, handlers: handlers, group: group, option: option, children: ItemOptionView, className: className })); }, [levels, handlers, ItemOptionView, className]);
10
+ var handlers = _a.handlers, groups = _a.groups, levels = _a.levels, _b = _a.excludeSize, excludeSize = _b === void 0 ? true : _b, _c = _a.configName, configName = _c === void 0 ? 'itemGroups' : _c, _d = _a.optionConfigName, optionConfigName = _d === void 0 ? 'itemOption' : _d, children = _a.children, ItemGroupView = _a.ItemGroupView, ItemOptionView = _a.ItemOptionView, ErrorMessageView = _a.ErrorMessageView, SuccessMessageView = _a.SuccessMessageView;
11
+ var _e = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), _f = configName, config = _e[_f];
12
+ var renderItemOption = (0, react_1.useCallback)(function (group, option) { return (react_1.default.createElement(ItemOption_1.default, { key: "".concat(group.id, "-").concat(option.id), levels: levels, handlers: handlers, group: group, option: option, children: ItemOptionView, configName: optionConfigName })); }, [levels, handlers, ItemOptionView, optionConfigName]);
13
13
  var renderItemGroup = (0, react_1.useCallback)(function (group, content) { return (react_1.default.createElement(ItemGroup_1.default, { key: group.id, SuccessMessageView: SuccessMessageView, ErrorMessageView: ErrorMessageView, group: group, content: content, children: ItemGroupView })); }, [ItemGroupView, ErrorMessageView, SuccessMessageView]);
14
14
  if (!config)
15
15
  return null;
@@ -1,13 +1,13 @@
1
1
  import { CartItemGroup, CartItemOption, CartLevels } from '@open-tender/types';
2
2
  import { Handlers, ItemOptionProps } from '@open-tender/ui';
3
3
  import { ReactNode } from 'react';
4
- declare const ItemOption: ({ handlers, group, option, levels, placeholder, children, className }: {
4
+ declare const ItemOption: ({ handlers, group, option, levels, placeholder, children, configName }: {
5
5
  handlers: Handlers;
6
6
  group: CartItemGroup;
7
7
  option: CartItemOption;
8
8
  levels: CartLevels;
9
9
  placeholder?: string;
10
10
  children: (props: ItemOptionProps) => ReactNode;
11
- className?: string;
11
+ configName?: string;
12
12
  }) => ReactNode;
13
13
  export default ItemOption;
@@ -4,10 +4,10 @@ var utils_1 = require("@open-tender/utils");
4
4
  var hooks_1 = require("../app/hooks");
5
5
  var slices_1 = require("../slices");
6
6
  var ItemOption = function (_a) {
7
- var handlers = _a.handlers, group = _a.group, option = _a.option, levels = _a.levels, placeholder = _a.placeholder, children = _a.children, _b = _a.className, className = _b === void 0 ? 'itemOption' : _b;
7
+ var handlers = _a.handlers, group = _a.group, option = _a.option, levels = _a.levels, placeholder = _a.placeholder, children = _a.children, _b = _a.configName, configName = _b === void 0 ? 'itemOption' : _b;
8
8
  var dispatch = (0, hooks_1.useAppDispatch)();
9
9
  var apiUrl = (0, hooks_1.useAppSelector)(slices_1.selectKioskApi);
10
- var _c = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), _d = className, config = _c[_d];
10
+ var _c = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), _d = configName, config = _c[_d];
11
11
  var toggleOption = handlers.toggleOption, incrementOption = handlers.incrementOption, decrementOption = handlers.decrementOption, setOptionQuantity = handlers.setOptionQuantity;
12
12
  var allergenAlerts = [];
13
13
  var modifier = (0, utils_1.useModifier)(group, option, levels, toggleOption, incrementOption, decrementOption, setOptionQuantity, allergenAlerts);
@@ -56,6 +56,7 @@ declare class PosAPI {
56
56
  postTender(orderId: string, data: CheckoutTenderPos): Promise<OrderTender>;
57
57
  patchTender(orderId: string, index: number, data: CheckoutTenderPos): Promise<OrderTender>;
58
58
  postTenderVoid(orderId: string, index: number): Promise<OrderTender>;
59
+ postCreditTender(orderId: string, data: CheckoutTenderPos): Promise<unknown>;
59
60
  postChipDNATender(orderId: string, data: CheckoutTender): Promise<unknown>;
60
61
  postChipDNACancel(): Promise<null>;
61
62
  postChipDNATmsUpdate(): Promise<null>;
@@ -276,6 +276,9 @@ var PosAPI = /** @class */ (function () {
276
276
  PosAPI.prototype.postTenderVoid = function (orderId, index) {
277
277
  return this.request("/orders/".concat(orderId, "/tenders/").concat(index, "/void"), 'POST', {});
278
278
  };
279
+ PosAPI.prototype.postCreditTender = function (orderId, data) {
280
+ return this.request("/orders/".concat(orderId, "/tenders/credit"), 'POST', data);
281
+ };
279
282
  PosAPI.prototype.postChipDNATender = function (orderId, data) {
280
283
  return this.request("/orders/".concat(orderId, "/tenders/chipdna"), 'POST', data);
281
284
  };
@@ -33,6 +33,7 @@ export declare enum CheckoutActionType {
33
33
  UpdateCart = "checkout/updateCart",
34
34
  IdentifyCustomer = "checkout/identifyCustomer",
35
35
  CompleteChipDNA = "checkout/completeChipDNA",
36
+ AddCreditTender = "checkout/addCreditTender",
36
37
  ValidatePosOrder = "checkout/validatePosOrder",
37
38
  SubmitPosOrder = "checkout/submitPosOrder",
38
39
  VoidPosOrder = "checkout/voidPosOrder",
@@ -113,6 +114,16 @@ export declare const completeChipDNA: import("@reduxjs/toolkit").AsyncThunk<any,
113
114
  fulfilledMeta?: unknown;
114
115
  rejectedMeta?: unknown;
115
116
  }>;
117
+ export declare const addCreditTender: import("@reduxjs/toolkit").AsyncThunk<any, void, {
118
+ state: AppState;
119
+ rejectValue: RequestError;
120
+ dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
121
+ extra?: unknown;
122
+ serializedErrorType?: unknown;
123
+ pendingMeta?: unknown;
124
+ fulfilledMeta?: unknown;
125
+ rejectedMeta?: unknown;
126
+ }>;
116
127
  export declare const validatePosOrder: import("@reduxjs/toolkit").AsyncThunk<void | Order, void, {
117
128
  state: AppState;
118
129
  rejectValue: RequestError;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.checkoutReducer = exports.selectPosCheckTenders = exports.selectPosCheckTotal = exports.selectPosCheckSubtotal = exports.selectPosAmountDue = exports.selectPosPendingDiscounts = exports.selectPosCustomerNameShort = exports.selectPosCustomerName = exports.selectPosCustomer = exports.selectPosCheck = exports.selectPosCheckout = exports.setPhone = exports.setMadeFor = exports.setPoints = exports.setPendingDiscounts = exports.removeCustomer = exports.addCustomer = exports.setTaxExempt = exports.removeTip = exports.addTip = exports.removeTax = exports.addTax = exports.removeDiscount = exports.addDiscount = exports.removeSurcharge = exports.addSurcharge = exports.removeGiftCard = exports.addGiftCard = exports.handleCheckoutError = exports.resetPosCheck = exports.resetPosCheckout = exports.activateGiftCards = exports.voidPosOrder = exports.submitPosOrder = exports.validatePosOrder = exports.completeChipDNA = exports.identifyCustomer = exports.updateCart = exports.updateTender = exports.removeTender = exports.addTender = exports.addPromoCode = exports.CheckoutActionType = exports.prepareOrder = void 0;
4
+ exports.checkoutReducer = exports.selectPosCheckTenders = exports.selectPosCheckTotal = exports.selectPosCheckSubtotal = exports.selectPosAmountDue = exports.selectPosPendingDiscounts = exports.selectPosCustomerNameShort = exports.selectPosCustomerName = exports.selectPosCustomer = exports.selectPosCheck = exports.selectPosCheckout = exports.setPhone = exports.setMadeFor = exports.setPoints = exports.setPendingDiscounts = exports.removeCustomer = exports.addCustomer = exports.setTaxExempt = exports.removeTip = exports.addTip = exports.removeTax = exports.addTax = exports.removeDiscount = exports.addDiscount = exports.removeSurcharge = exports.addSurcharge = exports.removeGiftCard = exports.addGiftCard = exports.handleCheckoutError = exports.resetPosCheck = exports.resetPosCheckout = exports.activateGiftCards = exports.voidPosOrder = exports.submitPosOrder = exports.validatePosOrder = exports.addCreditTender = exports.completeChipDNA = exports.identifyCustomer = exports.updateCart = exports.updateTender = exports.removeTender = exports.addTender = exports.addPromoCode = exports.CheckoutActionType = exports.prepareOrder = void 0;
5
5
  var tslib_1 = require("tslib");
6
6
  var utils_1 = require("@open-tender/utils");
7
7
  var toolkit_1 = require("@reduxjs/toolkit");
@@ -74,6 +74,7 @@ var CheckoutActionType;
74
74
  CheckoutActionType["UpdateCart"] = "checkout/updateCart";
75
75
  CheckoutActionType["IdentifyCustomer"] = "checkout/identifyCustomer";
76
76
  CheckoutActionType["CompleteChipDNA"] = "checkout/completeChipDNA";
77
+ CheckoutActionType["AddCreditTender"] = "checkout/addCreditTender";
77
78
  CheckoutActionType["ValidatePosOrder"] = "checkout/validatePosOrder";
78
79
  CheckoutActionType["SubmitPosOrder"] = "checkout/submitPosOrder";
79
80
  CheckoutActionType["VoidPosOrder"] = "checkout/voidPosOrder";
@@ -318,8 +319,44 @@ exports.completeChipDNA = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Com
318
319
  }
319
320
  });
320
321
  }); });
322
+ exports.addCreditTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddCreditTender, function (_1, _a) { return tslib_1.__awaiter(void 0, [_1, _a], void 0, function (_, _b) {
323
+ var _c, config, order, checkout, orderId, api, amount, tender, response, card_token, hasLoyalty, data, callback, err_7;
324
+ var _d;
325
+ var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
326
+ return tslib_1.__generator(this, function (_e) {
327
+ switch (_e.label) {
328
+ case 0:
329
+ _e.trys.push([0, 5, , 6]);
330
+ _c = getState(), config = _c.config, order = _c.order, checkout = _c.checkout;
331
+ orderId = order.orderId;
332
+ if (!orderId)
333
+ return [2 /*return*/];
334
+ api = config.api;
335
+ amount = getAmountDue(checkout.check);
336
+ tender = { tender_type: 'CREDIT', amount: amount };
337
+ return [4 /*yield*/, api.postCreditTender(orderId, tender)];
338
+ case 1:
339
+ response = _e.sent();
340
+ console.log(response);
341
+ card_token = null;
342
+ hasLoyalty = (_d = config.store) === null || _d === void 0 ? void 0 : _d.has_loyalty;
343
+ if (!(hasLoyalty && card_token && !checkout.customer)) return [3 /*break*/, 2];
344
+ data = { card_token: card_token };
345
+ callback = function () { return dispatch((0, exports.validatePosOrder)()); };
346
+ dispatch((0, exports.identifyCustomer)({ data: data, callback: callback }));
347
+ return [2 /*return*/];
348
+ case 2: return [4 /*yield*/, dispatch((0, exports.validatePosOrder)())];
349
+ case 3: return [2 /*return*/, _e.sent()];
350
+ case 4: return [3 /*break*/, 6];
351
+ case 5:
352
+ err_7 = _e.sent();
353
+ return [2 /*return*/, rejectWithValue(err_7)];
354
+ case 6: return [2 /*return*/];
355
+ }
356
+ });
357
+ }); });
321
358
  exports.validatePosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ValidatePosOrder, function (_1, _a) { return tslib_1.__awaiter(void 0, [_1, _a], void 0, function (_, _b) {
322
- var _c, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_7, errors, fields;
359
+ var _c, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_8, errors, fields;
323
360
  var _d;
324
361
  var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
325
362
  return tslib_1.__generator(this, function (_e) {
@@ -341,19 +378,19 @@ exports.validatePosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Va
341
378
  toRemove === null || toRemove === void 0 ? void 0 : toRemove.forEach(function (id) { return dispatch((0, exports.removeDiscount)({ id: id })); });
342
379
  return [2 /*return*/, check];
343
380
  case 2:
344
- err_7 = _e.sent();
345
- errors = (0, utils_1.handleRespError)(err_7).errors;
381
+ err_8 = _e.sent();
382
+ errors = (0, utils_1.handleRespError)(err_8).errors;
346
383
  fields = errors ? Object.keys(errors) : [];
347
384
  if (fields.includes('order_uuid')) {
348
385
  dispatch((0, order_1.setOrderId)((0, uuid_1.v4)()));
349
386
  }
350
- return [2 /*return*/, rejectWithValue(err_7)];
387
+ return [2 /*return*/, rejectWithValue(err_8)];
351
388
  case 3: return [2 /*return*/];
352
389
  }
353
390
  });
354
391
  }); });
355
392
  exports.submitPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitPosOrder, function (_1, _a) { return tslib_1.__awaiter(void 0, [_1, _a], void 0, function (_, _b) {
356
- var _c, config, order, checkout, preparedOrder, response, err_8, errors, fields;
393
+ var _c, config, order, checkout, preparedOrder, response, err_9, errors, fields;
357
394
  var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
358
395
  return tslib_1.__generator(this, function (_d) {
359
396
  switch (_d.label) {
@@ -369,19 +406,19 @@ exports.submitPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Subm
369
406
  dispatch((0, pos_1.setLastOrderId)(response.order_uuid || null));
370
407
  return [2 /*return*/, response];
371
408
  case 2:
372
- err_8 = _d.sent();
373
- errors = (0, utils_1.handleRespError)(err_8).errors;
409
+ err_9 = _d.sent();
410
+ errors = (0, utils_1.handleRespError)(err_9).errors;
374
411
  fields = errors ? Object.keys(errors) : [];
375
412
  if (fields.includes('order_uuid')) {
376
413
  dispatch((0, order_1.setOrderId)((0, uuid_1.v4)()));
377
414
  }
378
- return [2 /*return*/, rejectWithValue(err_8)];
415
+ return [2 /*return*/, rejectWithValue(err_9)];
379
416
  case 3: return [2 /*return*/];
380
417
  }
381
418
  });
382
419
  }); });
383
420
  exports.voidPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.VoidPosOrder, function (_1, _a) { return tslib_1.__awaiter(void 0, [_1, _a], void 0, function (_, _b) {
384
- var _c, config, order, checkout, preparedOrder, err_9;
421
+ var _c, config, order, checkout, preparedOrder, err_10;
385
422
  var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
386
423
  return tslib_1.__generator(this, function (_d) {
387
424
  switch (_d.label) {
@@ -394,14 +431,14 @@ exports.voidPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.VoidPo
394
431
  return [4 /*yield*/, config.api.deleteOrder(preparedOrder)];
395
432
  case 1: return [2 /*return*/, _d.sent()];
396
433
  case 2:
397
- err_9 = _d.sent();
398
- return [2 /*return*/, rejectWithValue(err_9)];
434
+ err_10 = _d.sent();
435
+ return [2 /*return*/, rejectWithValue(err_10)];
399
436
  case 3: return [2 /*return*/];
400
437
  }
401
438
  });
402
439
  }); });
403
440
  exports.activateGiftCards = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ActivateGiftCards, function (_1, _a) { return tslib_1.__awaiter(void 0, [_1, _a], void 0, function (_, _b) {
404
- var api_1, giftCards, requests, err_10;
441
+ var api_1, giftCards, requests, err_11;
405
442
  var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
406
443
  return tslib_1.__generator(this, function (_c) {
407
444
  switch (_c.label) {
@@ -418,8 +455,8 @@ exports.activateGiftCards = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.A
418
455
  return [4 /*yield*/, Promise.all(requests)];
419
456
  case 1: return [2 /*return*/, _c.sent()];
420
457
  case 2:
421
- err_10 = _c.sent();
422
- return [2 /*return*/, rejectWithValue(err_10)];
458
+ err_11 = _c.sent();
459
+ return [2 /*return*/, rejectWithValue(err_11)];
423
460
  case 3: return [2 /*return*/];
424
461
  }
425
462
  });
@@ -605,6 +642,17 @@ var checkoutSlice = (0, toolkit_1.createSlice)({
605
642
  .addCase(exports.completeChipDNA.rejected, function (state, action) {
606
643
  state.loading = 'idle';
607
644
  state.error = action.payload;
645
+ })
646
+ .addCase(exports.addCreditTender.fulfilled, function (state) {
647
+ state.loading = 'idle';
648
+ state.error = null;
649
+ })
650
+ .addCase(exports.addCreditTender.pending, function (state) {
651
+ state.loading = 'pending';
652
+ })
653
+ .addCase(exports.addCreditTender.rejected, function (state, action) {
654
+ state.loading = 'idle';
655
+ state.error = action.payload;
608
656
  })
609
657
  .addCase(exports.validatePosOrder.fulfilled, function (state, action) {
610
658
  state.check = action.payload || null;
@@ -1,12 +1,13 @@
1
1
  import { CartItemGroups, CartLevels } from '@open-tender/types';
2
2
  import { Handlers, ItemGroupsProps, ItemOptionProps, ErrorMessageProps, SuccessMessageProps, ItemGroupProps } from '@open-tender/ui';
3
3
  import React, { ReactNode } from 'react';
4
- declare const ItemGroups: ({ handlers, groups, levels, excludeSize, className, children, ItemGroupView, ItemOptionView, ErrorMessageView, SuccessMessageView }: {
4
+ declare const ItemGroups: ({ handlers, groups, levels, excludeSize, configName, optionConfigName, children, ItemGroupView, ItemOptionView, ErrorMessageView, SuccessMessageView }: {
5
5
  handlers: Handlers;
6
6
  groups: CartItemGroups;
7
7
  levels: CartLevels;
8
8
  excludeSize?: boolean;
9
- className?: string;
9
+ configName?: string;
10
+ optionConfigName?: string;
10
11
  children: (props: ItemGroupsProps) => ReactNode;
11
12
  ItemOptionView: (props: ItemOptionProps) => ReactNode;
12
13
  ItemGroupView: (props: ItemGroupProps) => ReactNode;
@@ -4,9 +4,9 @@ import { selectKioskConfig } from '../slices';
4
4
  import { default as ItemGroupContainer } from './ItemGroup';
5
5
  import { default as ItemOptionContainer } from './ItemOption';
6
6
  var ItemGroups = function (_a) {
7
- var handlers = _a.handlers, groups = _a.groups, levels = _a.levels, _b = _a.excludeSize, excludeSize = _b === void 0 ? true : _b, _c = _a.className, className = _c === void 0 ? 'itemOption' : _c, children = _a.children, ItemGroupView = _a.ItemGroupView, ItemOptionView = _a.ItemOptionView, ErrorMessageView = _a.ErrorMessageView, SuccessMessageView = _a.SuccessMessageView;
8
- var config = useAppSelector(selectKioskConfig).itemGroups;
9
- var renderItemOption = useCallback(function (group, option) { return (React.createElement(ItemOptionContainer, { key: "".concat(group.id, "-").concat(option.id), levels: levels, handlers: handlers, group: group, option: option, children: ItemOptionView, className: className })); }, [levels, handlers, ItemOptionView, className]);
7
+ var handlers = _a.handlers, groups = _a.groups, levels = _a.levels, _b = _a.excludeSize, excludeSize = _b === void 0 ? true : _b, _c = _a.configName, configName = _c === void 0 ? 'itemGroups' : _c, _d = _a.optionConfigName, optionConfigName = _d === void 0 ? 'itemOption' : _d, children = _a.children, ItemGroupView = _a.ItemGroupView, ItemOptionView = _a.ItemOptionView, ErrorMessageView = _a.ErrorMessageView, SuccessMessageView = _a.SuccessMessageView;
8
+ var _e = useAppSelector(selectKioskConfig), _f = configName, config = _e[_f];
9
+ var renderItemOption = useCallback(function (group, option) { return (React.createElement(ItemOptionContainer, { key: "".concat(group.id, "-").concat(option.id), levels: levels, handlers: handlers, group: group, option: option, children: ItemOptionView, configName: optionConfigName })); }, [levels, handlers, ItemOptionView, optionConfigName]);
10
10
  var renderItemGroup = useCallback(function (group, content) { return (React.createElement(ItemGroupContainer, { key: group.id, SuccessMessageView: SuccessMessageView, ErrorMessageView: ErrorMessageView, group: group, content: content, children: ItemGroupView })); }, [ItemGroupView, ErrorMessageView, SuccessMessageView]);
11
11
  if (!config)
12
12
  return null;
@@ -1,13 +1,13 @@
1
1
  import { CartItemGroup, CartItemOption, CartLevels } from '@open-tender/types';
2
2
  import { Handlers, ItemOptionProps } from '@open-tender/ui';
3
3
  import { ReactNode } from 'react';
4
- declare const ItemOption: ({ handlers, group, option, levels, placeholder, children, className }: {
4
+ declare const ItemOption: ({ handlers, group, option, levels, placeholder, children, configName }: {
5
5
  handlers: Handlers;
6
6
  group: CartItemGroup;
7
7
  option: CartItemOption;
8
8
  levels: CartLevels;
9
9
  placeholder?: string;
10
10
  children: (props: ItemOptionProps) => ReactNode;
11
- className?: string;
11
+ configName?: string;
12
12
  }) => ReactNode;
13
13
  export default ItemOption;
@@ -2,10 +2,10 @@ import { useModifier } from '@open-tender/utils';
2
2
  import { useAppDispatch, useAppSelector } from '../app/hooks';
3
3
  import { selectKioskApi, selectKioskConfig, setCurrentOption } from '../slices';
4
4
  var ItemOption = function (_a) {
5
- var handlers = _a.handlers, group = _a.group, option = _a.option, levels = _a.levels, placeholder = _a.placeholder, children = _a.children, _b = _a.className, className = _b === void 0 ? 'itemOption' : _b;
5
+ var handlers = _a.handlers, group = _a.group, option = _a.option, levels = _a.levels, placeholder = _a.placeholder, children = _a.children, _b = _a.configName, configName = _b === void 0 ? 'itemOption' : _b;
6
6
  var dispatch = useAppDispatch();
7
7
  var apiUrl = useAppSelector(selectKioskApi);
8
- var _c = useAppSelector(selectKioskConfig), _d = className, config = _c[_d];
8
+ var _c = useAppSelector(selectKioskConfig), _d = configName, config = _c[_d];
9
9
  var toggleOption = handlers.toggleOption, incrementOption = handlers.incrementOption, decrementOption = handlers.decrementOption, setOptionQuantity = handlers.setOptionQuantity;
10
10
  var allergenAlerts = [];
11
11
  var modifier = useModifier(group, option, levels, toggleOption, incrementOption, decrementOption, setOptionQuantity, allergenAlerts);
@@ -56,6 +56,7 @@ declare class PosAPI {
56
56
  postTender(orderId: string, data: CheckoutTenderPos): Promise<OrderTender>;
57
57
  patchTender(orderId: string, index: number, data: CheckoutTenderPos): Promise<OrderTender>;
58
58
  postTenderVoid(orderId: string, index: number): Promise<OrderTender>;
59
+ postCreditTender(orderId: string, data: CheckoutTenderPos): Promise<unknown>;
59
60
  postChipDNATender(orderId: string, data: CheckoutTender): Promise<unknown>;
60
61
  postChipDNACancel(): Promise<null>;
61
62
  postChipDNATmsUpdate(): Promise<null>;
@@ -274,6 +274,9 @@ var PosAPI = /** @class */ (function () {
274
274
  PosAPI.prototype.postTenderVoid = function (orderId, index) {
275
275
  return this.request("/orders/".concat(orderId, "/tenders/").concat(index, "/void"), 'POST', {});
276
276
  };
277
+ PosAPI.prototype.postCreditTender = function (orderId, data) {
278
+ return this.request("/orders/".concat(orderId, "/tenders/credit"), 'POST', data);
279
+ };
277
280
  PosAPI.prototype.postChipDNATender = function (orderId, data) {
278
281
  return this.request("/orders/".concat(orderId, "/tenders/chipdna"), 'POST', data);
279
282
  };
@@ -33,6 +33,7 @@ export declare enum CheckoutActionType {
33
33
  UpdateCart = "checkout/updateCart",
34
34
  IdentifyCustomer = "checkout/identifyCustomer",
35
35
  CompleteChipDNA = "checkout/completeChipDNA",
36
+ AddCreditTender = "checkout/addCreditTender",
36
37
  ValidatePosOrder = "checkout/validatePosOrder",
37
38
  SubmitPosOrder = "checkout/submitPosOrder",
38
39
  VoidPosOrder = "checkout/voidPosOrder",
@@ -113,6 +114,16 @@ export declare const completeChipDNA: import("@reduxjs/toolkit").AsyncThunk<any,
113
114
  fulfilledMeta?: unknown;
114
115
  rejectedMeta?: unknown;
115
116
  }>;
117
+ export declare const addCreditTender: import("@reduxjs/toolkit").AsyncThunk<any, void, {
118
+ state: AppState;
119
+ rejectValue: RequestError;
120
+ dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
121
+ extra?: unknown;
122
+ serializedErrorType?: unknown;
123
+ pendingMeta?: unknown;
124
+ fulfilledMeta?: unknown;
125
+ rejectedMeta?: unknown;
126
+ }>;
116
127
  export declare const validatePosOrder: import("@reduxjs/toolkit").AsyncThunk<void | Order, void, {
117
128
  state: AppState;
118
129
  rejectValue: RequestError;
@@ -70,6 +70,7 @@ export var CheckoutActionType;
70
70
  CheckoutActionType["UpdateCart"] = "checkout/updateCart";
71
71
  CheckoutActionType["IdentifyCustomer"] = "checkout/identifyCustomer";
72
72
  CheckoutActionType["CompleteChipDNA"] = "checkout/completeChipDNA";
73
+ CheckoutActionType["AddCreditTender"] = "checkout/addCreditTender";
73
74
  CheckoutActionType["ValidatePosOrder"] = "checkout/validatePosOrder";
74
75
  CheckoutActionType["SubmitPosOrder"] = "checkout/submitPosOrder";
75
76
  CheckoutActionType["VoidPosOrder"] = "checkout/voidPosOrder";
@@ -314,8 +315,44 @@ export var completeChipDNA = createAsyncThunk(CheckoutActionType.CompleteChipDNA
314
315
  }
315
316
  });
316
317
  }); });
318
+ export var addCreditTender = createAsyncThunk(CheckoutActionType.AddCreditTender, function (_1, _a) { return __awaiter(void 0, [_1, _a], void 0, function (_, _b) {
319
+ var _c, config, order, checkout, orderId, api, amount, tender, response, card_token, hasLoyalty, data, callback, err_7;
320
+ var _d;
321
+ var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
322
+ return __generator(this, function (_e) {
323
+ switch (_e.label) {
324
+ case 0:
325
+ _e.trys.push([0, 5, , 6]);
326
+ _c = getState(), config = _c.config, order = _c.order, checkout = _c.checkout;
327
+ orderId = order.orderId;
328
+ if (!orderId)
329
+ return [2 /*return*/];
330
+ api = config.api;
331
+ amount = getAmountDue(checkout.check);
332
+ tender = { tender_type: 'CREDIT', amount: amount };
333
+ return [4 /*yield*/, api.postCreditTender(orderId, tender)];
334
+ case 1:
335
+ response = _e.sent();
336
+ console.log(response);
337
+ card_token = null;
338
+ hasLoyalty = (_d = config.store) === null || _d === void 0 ? void 0 : _d.has_loyalty;
339
+ if (!(hasLoyalty && card_token && !checkout.customer)) return [3 /*break*/, 2];
340
+ data = { card_token: card_token };
341
+ callback = function () { return dispatch(validatePosOrder()); };
342
+ dispatch(identifyCustomer({ data: data, callback: callback }));
343
+ return [2 /*return*/];
344
+ case 2: return [4 /*yield*/, dispatch(validatePosOrder())];
345
+ case 3: return [2 /*return*/, _e.sent()];
346
+ case 4: return [3 /*break*/, 6];
347
+ case 5:
348
+ err_7 = _e.sent();
349
+ return [2 /*return*/, rejectWithValue(err_7)];
350
+ case 6: return [2 /*return*/];
351
+ }
352
+ });
353
+ }); });
317
354
  export var validatePosOrder = createAsyncThunk(CheckoutActionType.ValidatePosOrder, function (_1, _a) { return __awaiter(void 0, [_1, _a], void 0, function (_, _b) {
318
- var _c, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_7, errors, fields;
355
+ var _c, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_8, errors, fields;
319
356
  var _d;
320
357
  var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
321
358
  return __generator(this, function (_e) {
@@ -337,19 +374,19 @@ export var validatePosOrder = createAsyncThunk(CheckoutActionType.ValidatePosOrd
337
374
  toRemove === null || toRemove === void 0 ? void 0 : toRemove.forEach(function (id) { return dispatch(removeDiscount({ id: id })); });
338
375
  return [2 /*return*/, check];
339
376
  case 2:
340
- err_7 = _e.sent();
341
- errors = handleRespError(err_7).errors;
377
+ err_8 = _e.sent();
378
+ errors = handleRespError(err_8).errors;
342
379
  fields = errors ? Object.keys(errors) : [];
343
380
  if (fields.includes('order_uuid')) {
344
381
  dispatch(setOrderId(uuidv4()));
345
382
  }
346
- return [2 /*return*/, rejectWithValue(err_7)];
383
+ return [2 /*return*/, rejectWithValue(err_8)];
347
384
  case 3: return [2 /*return*/];
348
385
  }
349
386
  });
350
387
  }); });
351
388
  export var submitPosOrder = createAsyncThunk(CheckoutActionType.SubmitPosOrder, function (_1, _a) { return __awaiter(void 0, [_1, _a], void 0, function (_, _b) {
352
- var _c, config, order, checkout, preparedOrder, response, err_8, errors, fields;
389
+ var _c, config, order, checkout, preparedOrder, response, err_9, errors, fields;
353
390
  var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
354
391
  return __generator(this, function (_d) {
355
392
  switch (_d.label) {
@@ -365,19 +402,19 @@ export var submitPosOrder = createAsyncThunk(CheckoutActionType.SubmitPosOrder,
365
402
  dispatch(setLastOrderId(response.order_uuid || null));
366
403
  return [2 /*return*/, response];
367
404
  case 2:
368
- err_8 = _d.sent();
369
- errors = handleRespError(err_8).errors;
405
+ err_9 = _d.sent();
406
+ errors = handleRespError(err_9).errors;
370
407
  fields = errors ? Object.keys(errors) : [];
371
408
  if (fields.includes('order_uuid')) {
372
409
  dispatch(setOrderId(uuidv4()));
373
410
  }
374
- return [2 /*return*/, rejectWithValue(err_8)];
411
+ return [2 /*return*/, rejectWithValue(err_9)];
375
412
  case 3: return [2 /*return*/];
376
413
  }
377
414
  });
378
415
  }); });
379
416
  export var voidPosOrder = createAsyncThunk(CheckoutActionType.VoidPosOrder, function (_1, _a) { return __awaiter(void 0, [_1, _a], void 0, function (_, _b) {
380
- var _c, config, order, checkout, preparedOrder, err_9;
417
+ var _c, config, order, checkout, preparedOrder, err_10;
381
418
  var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
382
419
  return __generator(this, function (_d) {
383
420
  switch (_d.label) {
@@ -390,14 +427,14 @@ export var voidPosOrder = createAsyncThunk(CheckoutActionType.VoidPosOrder, func
390
427
  return [4 /*yield*/, config.api.deleteOrder(preparedOrder)];
391
428
  case 1: return [2 /*return*/, _d.sent()];
392
429
  case 2:
393
- err_9 = _d.sent();
394
- return [2 /*return*/, rejectWithValue(err_9)];
430
+ err_10 = _d.sent();
431
+ return [2 /*return*/, rejectWithValue(err_10)];
395
432
  case 3: return [2 /*return*/];
396
433
  }
397
434
  });
398
435
  }); });
399
436
  export var activateGiftCards = createAsyncThunk(CheckoutActionType.ActivateGiftCards, function (_1, _a) { return __awaiter(void 0, [_1, _a], void 0, function (_, _b) {
400
- var api_1, giftCards, requests, err_10;
437
+ var api_1, giftCards, requests, err_11;
401
438
  var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
402
439
  return __generator(this, function (_c) {
403
440
  switch (_c.label) {
@@ -414,8 +451,8 @@ export var activateGiftCards = createAsyncThunk(CheckoutActionType.ActivateGiftC
414
451
  return [4 /*yield*/, Promise.all(requests)];
415
452
  case 1: return [2 /*return*/, _c.sent()];
416
453
  case 2:
417
- err_10 = _c.sent();
418
- return [2 /*return*/, rejectWithValue(err_10)];
454
+ err_11 = _c.sent();
455
+ return [2 /*return*/, rejectWithValue(err_11)];
419
456
  case 3: return [2 /*return*/];
420
457
  }
421
458
  });
@@ -601,6 +638,17 @@ var checkoutSlice = createSlice({
601
638
  .addCase(completeChipDNA.rejected, function (state, action) {
602
639
  state.loading = 'idle';
603
640
  state.error = action.payload;
641
+ })
642
+ .addCase(addCreditTender.fulfilled, function (state) {
643
+ state.loading = 'idle';
644
+ state.error = null;
645
+ })
646
+ .addCase(addCreditTender.pending, function (state) {
647
+ state.loading = 'pending';
648
+ })
649
+ .addCase(addCreditTender.rejected, function (state, action) {
650
+ state.loading = 'idle';
651
+ state.error = action.payload;
604
652
  })
605
653
  .addCase(validatePosOrder.fulfilled, function (state, action) {
606
654
  state.check = action.payload || null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "1.1.162",
3
+ "version": "1.1.164",
4
4
  "description": "A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",