@open-tender/store 1.1.151 → 1.1.153

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,16 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var utils_1 = require("@open-tender/utils");
4
+ var react_1 = require("react");
4
5
  var hooks_1 = require("../app/hooks");
5
6
  var slices_1 = require("../slices");
6
7
  var CartUpsellItem = function (_a) {
7
8
  var item = _a.item, callback = _a.callback, isLast = _a.isLast, children = _a.children;
8
9
  var dispatch = (0, hooks_1.useAppDispatch)();
10
+ var _b = (0, react_1.useState)(false), hasSize = _b[0], setHasSize = _b[1];
9
11
  var apiUrl = (0, hooks_1.useAppSelector)(slices_1.selectKioskApi);
10
12
  var config = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig).cartUpsellItem;
11
13
  var display_cals = (0, hooks_1.useAppSelector)(slices_1.selectStoreSettings).display_cals;
12
- var builtItem = (0, utils_1.useBuilder)(item).item;
14
+ var _c = (0, utils_1.useBuilder)(item), builtItem = _c.item, toggleOption = _c.toggleOption;
13
15
  var quantity = builtItem.quantity, groups = builtItem.groups;
16
+ var sizeGroup = groups === null || groups === void 0 ? void 0 : groups.find(function (i) { return i.isSize; });
14
17
  var groupsBelowMin = (0, utils_1.hasGroupsBelowMin)(null, groups);
15
18
  var isIncomplete = "".concat(quantity) === '' || quantity === 0 || groupsBelowMin;
16
19
  var add = function () {
@@ -20,14 +23,31 @@ var CartUpsellItem = function (_a) {
20
23
  callback();
21
24
  }
22
25
  };
23
- var handlers = { add: add };
26
+ var addSize = function (optionId) {
27
+ if (sizeGroup) {
28
+ toggleOption([[sizeGroup.id, optionId]]);
29
+ setHasSize(true);
30
+ }
31
+ };
32
+ (0, react_1.useEffect)(function () {
33
+ if (hasSize && !isIncomplete) {
34
+ dispatch((0, slices_1.addItemToCart)(builtItem));
35
+ dispatch((0, slices_1.showNotification)("".concat(builtItem.name, " added to cart!")));
36
+ if (callback)
37
+ callback();
38
+ }
39
+ }, [hasSize, isIncomplete, builtItem, callback, dispatch]);
40
+ var handlers = { add: add, addSize: addSize };
41
+ if (isIncomplete && !sizeGroup)
42
+ return null;
24
43
  return children({
25
44
  config: config,
26
45
  handlers: handlers,
27
46
  item: item,
28
47
  isLast: isLast,
29
48
  apiUrl: apiUrl,
30
- displayCals: display_cals
49
+ displayCals: display_cals,
50
+ sizeGroup: sizeGroup
31
51
  });
32
52
  };
33
53
  exports.default = CartUpsellItem;
@@ -1,13 +1,14 @@
1
- import { ErrorMessageProps, KeypadProps, SignInOptionsModalProps, SignInPhoneProps, SignInQrProps } from '@open-tender/ui';
1
+ import { ErrorMessageProps, KeypadProps, SignInOptionsModalProps, SignInPhoneProps, SignInQrProps, SignUpProps } from '@open-tender/ui';
2
2
  import React, { ReactNode } from 'react';
3
3
  import { ScanListener } from '../hooks/types';
4
- declare const SignInOptionsModal: ({ listener, cameraScanner, close, children, SignInQrView, SignInPhoneView, KeypadView, ErrorMessageView, imageUrl }: {
4
+ declare const SignInOptionsModal: ({ listener, cameraScanner, close, children, SignInQrView, SignInPhoneView, SignUpView, KeypadView, ErrorMessageView, imageUrl }: {
5
5
  listener: ScanListener;
6
6
  cameraScanner: ScanListener;
7
7
  close: () => void;
8
8
  children: (props: SignInOptionsModalProps) => ReactNode;
9
9
  SignInQrView: (props: SignInQrProps) => ReactNode;
10
10
  SignInPhoneView: (props: SignInPhoneProps) => ReactNode;
11
+ SignUpView: (props: SignUpProps) => ReactNode;
11
12
  KeypadView: (props: KeypadProps) => ReactNode;
12
13
  ErrorMessageView: (props: ErrorMessageProps) => ReactNode;
13
14
  imageUrl?: string | null;
@@ -7,7 +7,7 @@ var slices_1 = require("../slices");
7
7
  var SignInPhone_1 = tslib_1.__importDefault(require("./SignInPhone"));
8
8
  var SignInQr_1 = tslib_1.__importDefault(require("./SignInQr"));
9
9
  var SignInOptionsModal = function (_a) {
10
- var listener = _a.listener, cameraScanner = _a.cameraScanner, close = _a.close, children = _a.children, SignInQrView = _a.SignInQrView, SignInPhoneView = _a.SignInPhoneView, KeypadView = _a.KeypadView, ErrorMessageView = _a.ErrorMessageView, imageUrl = _a.imageUrl;
10
+ var listener = _a.listener, cameraScanner = _a.cameraScanner, close = _a.close, children = _a.children, SignInQrView = _a.SignInQrView, SignInPhoneView = _a.SignInPhoneView, SignUpView = _a.SignUpView, KeypadView = _a.KeypadView, ErrorMessageView = _a.ErrorMessageView, imageUrl = _a.imageUrl;
11
11
  var _b = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), config = _b.signInOptions, modalContentConfig = _b.modalContent;
12
12
  var _c = (0, react_1.useState)(null), signInType = _c[0], setSignInType = _c[1];
13
13
  var terminal = (0, hooks_1.useAppSelector)(slices_1.selectKioskTerminal);
@@ -19,7 +19,7 @@ var SignInOptionsModal = function (_a) {
19
19
  setSignInType('PHONE');
20
20
  }, [hasScanner]);
21
21
  var renderSignInQr = (0, react_1.useCallback)(function (close) { return (react_1.default.createElement(SignInQr_1.default, { listener: listener, cameraScanner: cameraScanner, close: close, children: SignInQrView, type: scannerType, imageUrl: imageUrl })); }, [SignInQrView, cameraScanner, listener, scannerType, imageUrl]);
22
- var renderSignInPhone = (0, react_1.useCallback)(function (close) { return (react_1.default.createElement(SignInPhone_1.default, { ErrorMessageView: ErrorMessageView, KeypadView: KeypadView, close: close, children: SignInPhoneView })); }, [SignInPhoneView, KeypadView, ErrorMessageView]);
22
+ var renderSignInPhone = (0, react_1.useCallback)(function (close) { return (react_1.default.createElement(SignInPhone_1.default, { ErrorMessageView: ErrorMessageView, KeypadView: KeypadView, SignUpView: SignUpView, close: close, children: SignInPhoneView })); }, [SignInPhoneView, KeypadView, SignUpView, ErrorMessageView]);
23
23
  if (!config)
24
24
  return null;
25
25
  return children({
@@ -1,10 +1,11 @@
1
- import { SignInPhoneProps, ErrorMessageProps, KeypadProps } from '@open-tender/ui';
1
+ import { ErrorMessageProps, KeypadProps, SignInPhoneProps, SignUpProps } from '@open-tender/ui';
2
2
  import React, { ReactNode } from 'react';
3
- declare const SignInPhone: ({ close, callback, children, KeypadView, ErrorMessageView }: {
3
+ declare const SignInPhone: ({ close, callback, children, KeypadView, SignUpView, ErrorMessageView }: {
4
4
  close: () => void;
5
5
  callback?: () => void;
6
6
  children: (props: SignInPhoneProps) => ReactNode;
7
7
  KeypadView: (props: KeypadProps) => ReactNode;
8
+ SignUpView: (props: SignUpProps) => ReactNode;
8
9
  ErrorMessageView: (props: ErrorMessageProps) => ReactNode;
9
10
  }) => React.ReactNode;
10
11
  export default SignInPhone;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
- var ui_1 = require("@open-tender/ui");
5
4
  var utils_1 = require("@open-tender/utils");
6
5
  var react_1 = tslib_1.__importStar(require("react"));
7
6
  var hooks_1 = require("../app/hooks");
@@ -11,7 +10,7 @@ var ErrorMessage_1 = tslib_1.__importDefault(require("./ErrorMessage"));
11
10
  var Keypad_1 = tslib_1.__importDefault(require("./Keypad"));
12
11
  var SignUp_1 = tslib_1.__importDefault(require("./SignUp"));
13
12
  var SignInPhone = function (_a) {
14
- var close = _a.close, callback = _a.callback, children = _a.children, KeypadView = _a.KeypadView, ErrorMessageView = _a.ErrorMessageView;
13
+ var close = _a.close, callback = _a.callback, children = _a.children, KeypadView = _a.KeypadView, SignUpView = _a.SignUpView, ErrorMessageView = _a.ErrorMessageView;
15
14
  var dispatch = (0, hooks_1.useAppDispatch)();
16
15
  var _b = (0, react_1.useState)(''), phone = _b[0], setPhone = _b[1];
17
16
  var _c = (0, react_1.useState)(false), submitted = _c[0], setSubmitted = _c[1];
@@ -52,7 +51,7 @@ var SignInPhone = function (_a) {
52
51
  }); }, []);
53
52
  var renderKeypad = (0, react_1.useCallback)(function () { return (react_1.default.createElement(Keypad_1.default, { type: "numeric", handlers: keypadHandlers, value: phone, children: KeypadView })); }, [KeypadView, phone, keypadHandlers]);
54
53
  var renderErrorMessage = (0, react_1.useCallback)(function (errMsg) { return (react_1.default.createElement(ErrorMessage_1.default, { content: errMsg, children: ErrorMessageView })); }, [ErrorMessageView]);
55
- var renderSignUp = (0, react_1.useCallback)(function () { return react_1.default.createElement(SignUp_1.default, { children: ui_1.SignUp }); }, []);
54
+ var renderSignUp = (0, react_1.useCallback)(function () { return react_1.default.createElement(SignUp_1.default, { children: SignUpView }); }, [SignUpView]);
56
55
  (0, react_1.useEffect)(function () {
57
56
  if (errMsg) {
58
57
  setShowSignUp(true);
@@ -1,14 +1,17 @@
1
1
  import { hasGroupsBelowMin, useBuilder } from '@open-tender/utils';
2
+ import { useEffect, useState } from 'react';
2
3
  import { useAppDispatch, useAppSelector } from '../app/hooks';
3
- import { addItemToCart, selectKioskApi, selectKioskConfig, selectStoreSettings } from '../slices';
4
+ import { addItemToCart, selectKioskApi, selectKioskConfig, selectStoreSettings, showNotification } from '../slices';
4
5
  var CartUpsellItem = function (_a) {
5
6
  var item = _a.item, callback = _a.callback, isLast = _a.isLast, children = _a.children;
6
7
  var dispatch = useAppDispatch();
8
+ var _b = useState(false), hasSize = _b[0], setHasSize = _b[1];
7
9
  var apiUrl = useAppSelector(selectKioskApi);
8
10
  var config = useAppSelector(selectKioskConfig).cartUpsellItem;
9
11
  var display_cals = useAppSelector(selectStoreSettings).display_cals;
10
- var builtItem = useBuilder(item).item;
12
+ var _c = useBuilder(item), builtItem = _c.item, toggleOption = _c.toggleOption;
11
13
  var quantity = builtItem.quantity, groups = builtItem.groups;
14
+ var sizeGroup = groups === null || groups === void 0 ? void 0 : groups.find(function (i) { return i.isSize; });
12
15
  var groupsBelowMin = hasGroupsBelowMin(null, groups);
13
16
  var isIncomplete = "".concat(quantity) === '' || quantity === 0 || groupsBelowMin;
14
17
  var add = function () {
@@ -18,14 +21,31 @@ var CartUpsellItem = function (_a) {
18
21
  callback();
19
22
  }
20
23
  };
21
- var handlers = { add: add };
24
+ var addSize = function (optionId) {
25
+ if (sizeGroup) {
26
+ toggleOption([[sizeGroup.id, optionId]]);
27
+ setHasSize(true);
28
+ }
29
+ };
30
+ useEffect(function () {
31
+ if (hasSize && !isIncomplete) {
32
+ dispatch(addItemToCart(builtItem));
33
+ dispatch(showNotification("".concat(builtItem.name, " added to cart!")));
34
+ if (callback)
35
+ callback();
36
+ }
37
+ }, [hasSize, isIncomplete, builtItem, callback, dispatch]);
38
+ var handlers = { add: add, addSize: addSize };
39
+ if (isIncomplete && !sizeGroup)
40
+ return null;
22
41
  return children({
23
42
  config: config,
24
43
  handlers: handlers,
25
44
  item: item,
26
45
  isLast: isLast,
27
46
  apiUrl: apiUrl,
28
- displayCals: display_cals
47
+ displayCals: display_cals,
48
+ sizeGroup: sizeGroup
29
49
  });
30
50
  };
31
51
  export default CartUpsellItem;
@@ -1,13 +1,14 @@
1
- import { ErrorMessageProps, KeypadProps, SignInOptionsModalProps, SignInPhoneProps, SignInQrProps } from '@open-tender/ui';
1
+ import { ErrorMessageProps, KeypadProps, SignInOptionsModalProps, SignInPhoneProps, SignInQrProps, SignUpProps } from '@open-tender/ui';
2
2
  import React, { ReactNode } from 'react';
3
3
  import { ScanListener } from '../hooks/types';
4
- declare const SignInOptionsModal: ({ listener, cameraScanner, close, children, SignInQrView, SignInPhoneView, KeypadView, ErrorMessageView, imageUrl }: {
4
+ declare const SignInOptionsModal: ({ listener, cameraScanner, close, children, SignInQrView, SignInPhoneView, SignUpView, KeypadView, ErrorMessageView, imageUrl }: {
5
5
  listener: ScanListener;
6
6
  cameraScanner: ScanListener;
7
7
  close: () => void;
8
8
  children: (props: SignInOptionsModalProps) => ReactNode;
9
9
  SignInQrView: (props: SignInQrProps) => ReactNode;
10
10
  SignInPhoneView: (props: SignInPhoneProps) => ReactNode;
11
+ SignUpView: (props: SignUpProps) => ReactNode;
11
12
  KeypadView: (props: KeypadProps) => ReactNode;
12
13
  ErrorMessageView: (props: ErrorMessageProps) => ReactNode;
13
14
  imageUrl?: string | null;
@@ -4,7 +4,7 @@ import { selectKioskConfig, selectKioskHasScanner, selectKioskTerminal } from '.
4
4
  import { default as SignInPhoneContainer } from './SignInPhone';
5
5
  import { default as SignInQrContainer } from './SignInQr';
6
6
  var SignInOptionsModal = function (_a) {
7
- var listener = _a.listener, cameraScanner = _a.cameraScanner, close = _a.close, children = _a.children, SignInQrView = _a.SignInQrView, SignInPhoneView = _a.SignInPhoneView, KeypadView = _a.KeypadView, ErrorMessageView = _a.ErrorMessageView, imageUrl = _a.imageUrl;
7
+ var listener = _a.listener, cameraScanner = _a.cameraScanner, close = _a.close, children = _a.children, SignInQrView = _a.SignInQrView, SignInPhoneView = _a.SignInPhoneView, SignUpView = _a.SignUpView, KeypadView = _a.KeypadView, ErrorMessageView = _a.ErrorMessageView, imageUrl = _a.imageUrl;
8
8
  var _b = useAppSelector(selectKioskConfig), config = _b.signInOptions, modalContentConfig = _b.modalContent;
9
9
  var _c = useState(null), signInType = _c[0], setSignInType = _c[1];
10
10
  var terminal = useAppSelector(selectKioskTerminal);
@@ -16,7 +16,7 @@ var SignInOptionsModal = function (_a) {
16
16
  setSignInType('PHONE');
17
17
  }, [hasScanner]);
18
18
  var renderSignInQr = useCallback(function (close) { return (React.createElement(SignInQrContainer, { listener: listener, cameraScanner: cameraScanner, close: close, children: SignInQrView, type: scannerType, imageUrl: imageUrl })); }, [SignInQrView, cameraScanner, listener, scannerType, imageUrl]);
19
- var renderSignInPhone = useCallback(function (close) { return (React.createElement(SignInPhoneContainer, { ErrorMessageView: ErrorMessageView, KeypadView: KeypadView, close: close, children: SignInPhoneView })); }, [SignInPhoneView, KeypadView, ErrorMessageView]);
19
+ var renderSignInPhone = useCallback(function (close) { return (React.createElement(SignInPhoneContainer, { ErrorMessageView: ErrorMessageView, KeypadView: KeypadView, SignUpView: SignUpView, close: close, children: SignInPhoneView })); }, [SignInPhoneView, KeypadView, SignUpView, ErrorMessageView]);
20
20
  if (!config)
21
21
  return null;
22
22
  return children({
@@ -1,10 +1,11 @@
1
- import { SignInPhoneProps, ErrorMessageProps, KeypadProps } from '@open-tender/ui';
1
+ import { ErrorMessageProps, KeypadProps, SignInPhoneProps, SignUpProps } from '@open-tender/ui';
2
2
  import React, { ReactNode } from 'react';
3
- declare const SignInPhone: ({ close, callback, children, KeypadView, ErrorMessageView }: {
3
+ declare const SignInPhone: ({ close, callback, children, KeypadView, SignUpView, ErrorMessageView }: {
4
4
  close: () => void;
5
5
  callback?: () => void;
6
6
  children: (props: SignInPhoneProps) => ReactNode;
7
7
  KeypadView: (props: KeypadProps) => ReactNode;
8
+ SignUpView: (props: SignUpProps) => ReactNode;
8
9
  ErrorMessageView: (props: ErrorMessageProps) => ReactNode;
9
10
  }) => React.ReactNode;
10
11
  export default SignInPhone;
@@ -1,4 +1,3 @@
1
- import { SignUp } from '@open-tender/ui';
2
1
  import { handleRespError } from '@open-tender/utils';
3
2
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
4
3
  import { useAppDispatch, useAppSelector } from '../app/hooks';
@@ -8,7 +7,7 @@ import { default as ErrorMessageContainer } from './ErrorMessage';
8
7
  import { default as KeypadContainer } from './Keypad';
9
8
  import { default as SignUpContainer } from './SignUp';
10
9
  var SignInPhone = function (_a) {
11
- var close = _a.close, callback = _a.callback, children = _a.children, KeypadView = _a.KeypadView, ErrorMessageView = _a.ErrorMessageView;
10
+ var close = _a.close, callback = _a.callback, children = _a.children, KeypadView = _a.KeypadView, SignUpView = _a.SignUpView, ErrorMessageView = _a.ErrorMessageView;
12
11
  var dispatch = useAppDispatch();
13
12
  var _b = useState(''), phone = _b[0], setPhone = _b[1];
14
13
  var _c = useState(false), submitted = _c[0], setSubmitted = _c[1];
@@ -49,7 +48,7 @@ var SignInPhone = function (_a) {
49
48
  }); }, []);
50
49
  var renderKeypad = useCallback(function () { return (React.createElement(KeypadContainer, { type: "numeric", handlers: keypadHandlers, value: phone, children: KeypadView })); }, [KeypadView, phone, keypadHandlers]);
51
50
  var renderErrorMessage = useCallback(function (errMsg) { return (React.createElement(ErrorMessageContainer, { content: errMsg, children: ErrorMessageView })); }, [ErrorMessageView]);
52
- var renderSignUp = useCallback(function () { return React.createElement(SignUpContainer, { children: SignUp }); }, []);
51
+ var renderSignUp = useCallback(function () { return React.createElement(SignUpContainer, { children: SignUpView }); }, [SignUpView]);
53
52
  useEffect(function () {
54
53
  if (errMsg) {
55
54
  setShowSignUp(true);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "1.1.151",
3
+ "version": "1.1.153",
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",
@@ -62,8 +62,8 @@
62
62
  "peerDependencies": {
63
63
  "@emotion/react": "^11.11.1",
64
64
  "@open-tender/types": "^0.4.67",
65
- "@open-tender/ui": "^0.3.102",
66
- "@open-tender/utils": "^0.4.39",
65
+ "@open-tender/ui": "^0.3.103",
66
+ "@open-tender/utils": "^0.4.40",
67
67
  "@reduxjs/toolkit": "^2.0.1",
68
68
  "date-fns": "2.30.0",
69
69
  "date-fns-tz": "^2.0.0",