@open-tender/store 1.1.136 → 1.1.138
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/cjs/app/hooks.d.ts +1 -0
- package/dist/cjs/app/store.d.ts +4 -0
- package/dist/cjs/app/store.js +2 -1
- package/dist/cjs/components/IdleModal.d.ts +12 -0
- package/dist/cjs/components/IdleModal.js +31 -0
- package/dist/cjs/components/Keypad.js +3 -2
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/middlewares/idleMiddleware.d.ts +2 -0
- package/dist/cjs/middlewares/idleMiddleware.js +27 -0
- package/dist/cjs/middlewares/index.d.ts +1 -0
- package/dist/cjs/middlewares/index.js +4 -0
- package/dist/cjs/slices/customer.d.ts +1 -0
- package/dist/cjs/slices/idle.d.ts +8 -0
- package/dist/cjs/slices/idle.js +27 -0
- package/dist/cjs/slices/index.d.ts +1 -0
- package/dist/cjs/slices/index.js +1 -0
- package/dist/cjs/slices/kiosk.d.ts +7 -0
- package/dist/cjs/slices/menuPages.d.ts +1 -0
- package/dist/cjs/slices/order.d.ts +4 -0
- package/dist/cjs/slices/types.d.ts +2 -1
- package/dist/cjs/slices/types.js +1 -0
- package/dist/esm/app/hooks.d.ts +1 -0
- package/dist/esm/app/store.d.ts +4 -0
- package/dist/esm/app/store.js +3 -2
- package/dist/esm/components/IdleModal.d.ts +12 -0
- package/dist/esm/components/IdleModal.js +29 -0
- package/dist/esm/components/Keypad.js +3 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/middlewares/idleMiddleware.d.ts +2 -0
- package/dist/esm/middlewares/idleMiddleware.js +23 -0
- package/dist/esm/middlewares/index.d.ts +1 -0
- package/dist/esm/middlewares/index.js +1 -0
- package/dist/esm/slices/customer.d.ts +1 -0
- package/dist/esm/slices/idle.d.ts +8 -0
- package/dist/esm/slices/idle.js +23 -0
- package/dist/esm/slices/index.d.ts +1 -0
- package/dist/esm/slices/index.js +1 -0
- package/dist/esm/slices/kiosk.d.ts +7 -0
- package/dist/esm/slices/menuPages.d.ts +1 -0
- package/dist/esm/slices/order.d.ts +4 -0
- package/dist/esm/slices/types.d.ts +2 -1
- package/dist/esm/slices/types.js +1 -0
- package/package.json +3 -3
package/dist/cjs/app/hooks.d.ts
CHANGED
|
@@ -27,5 +27,6 @@ export declare const useAppDispatch: () => import("redux-thunk").ThunkDispatch<{
|
|
|
27
27
|
sidebar: import("..").SidebarState;
|
|
28
28
|
surcharges: import("..").SurchargesState;
|
|
29
29
|
taxes: import("..").TaxesState;
|
|
30
|
+
idle: import("..").IdleState;
|
|
30
31
|
}, undefined, import("redux").UnknownAction> & import("redux").Dispatch<import("redux").Action>;
|
|
31
32
|
export declare const useAppSelector: TypedUseSelectorHook<RootState>;
|
package/dist/cjs/app/store.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare const appReducer: import("redux").Reducer<{
|
|
|
26
26
|
sidebar: import("../slices").SidebarState;
|
|
27
27
|
surcharges: import("../slices").SurchargesState;
|
|
28
28
|
taxes: import("../slices").TaxesState;
|
|
29
|
+
idle: import("../slices").IdleState;
|
|
29
30
|
}, import("redux").UnknownAction, Partial<{
|
|
30
31
|
alerts: import("@open-tender/types").Alerts | undefined;
|
|
31
32
|
arrivals: import("../slices").ArrivalsState | undefined;
|
|
@@ -53,6 +54,7 @@ export declare const appReducer: import("redux").Reducer<{
|
|
|
53
54
|
sidebar: import("../slices").SidebarState | undefined;
|
|
54
55
|
surcharges: import("../slices").SurchargesState | undefined;
|
|
55
56
|
taxes: import("../slices").TaxesState | undefined;
|
|
57
|
+
idle: import("../slices").IdleState | undefined;
|
|
56
58
|
}>>;
|
|
57
59
|
export type AppState = ReturnType<typeof appReducer>;
|
|
58
60
|
declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
@@ -82,6 +84,7 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
|
82
84
|
sidebar: import("../slices").SidebarState;
|
|
83
85
|
surcharges: import("../slices").SurchargesState;
|
|
84
86
|
taxes: import("../slices").TaxesState;
|
|
87
|
+
idle: import("../slices").IdleState;
|
|
85
88
|
}, Action, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
|
|
86
89
|
dispatch: import("redux-thunk").ThunkDispatch<{
|
|
87
90
|
alerts: import("@open-tender/types").Alerts;
|
|
@@ -110,6 +113,7 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
|
110
113
|
sidebar: import("../slices").SidebarState;
|
|
111
114
|
surcharges: import("../slices").SurchargesState;
|
|
112
115
|
taxes: import("../slices").TaxesState;
|
|
116
|
+
idle: import("../slices").IdleState;
|
|
113
117
|
}, undefined, import("redux").UnknownAction>;
|
|
114
118
|
}>, import("redux").StoreEnhancer]>>;
|
|
115
119
|
export type AppDispatch = typeof store.dispatch;
|
package/dist/cjs/app/store.js
CHANGED
|
@@ -29,7 +29,8 @@ exports.appReducer = (0, toolkit_1.combineReducers)({
|
|
|
29
29
|
settings: slices_1.settingsReducer,
|
|
30
30
|
sidebar: slices_1.sidebarReducer,
|
|
31
31
|
surcharges: slices_1.surchargesReducer,
|
|
32
|
-
taxes: slices_1.taxesReducer
|
|
32
|
+
taxes: slices_1.taxesReducer,
|
|
33
|
+
idle: slices_1.idleReducer
|
|
33
34
|
});
|
|
34
35
|
var rootReducer = function (state, action) {
|
|
35
36
|
if (action.type === 'clearState') {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Handlers, ScreenConfig } from '@open-tender/ui';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
declare const IdleModal: ({ close, navigate, children }: {
|
|
4
|
+
close: () => void;
|
|
5
|
+
navigate: (route: string) => void;
|
|
6
|
+
children: (props: {
|
|
7
|
+
config: ScreenConfig;
|
|
8
|
+
modalContentConfig: ScreenConfig;
|
|
9
|
+
handlers: Handlers;
|
|
10
|
+
}) => ReactNode;
|
|
11
|
+
}) => ReactNode;
|
|
12
|
+
export default IdleModal;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
var hooks_1 = require("../app/hooks");
|
|
5
|
+
var slices_1 = require("../slices");
|
|
6
|
+
var WAITING_TIME_IN_SECONDS = 15;
|
|
7
|
+
var IdleModal = function (_a) {
|
|
8
|
+
var close = _a.close, navigate = _a.navigate, children = _a.children;
|
|
9
|
+
var dispatch = (0, hooks_1.useAppDispatch)();
|
|
10
|
+
var _b = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), config = _b.idleModal, modalContentConfig = _b.modalContent;
|
|
11
|
+
var handleInactivity = (0, react_1.useCallback)(function () {
|
|
12
|
+
dispatch((0, slices_1.resetPosCheckout)());
|
|
13
|
+
dispatch((0, slices_1.setOrderId)(null));
|
|
14
|
+
dispatch((0, slices_1.resetCart)());
|
|
15
|
+
dispatch((0, slices_1.resetCustomerIdentify)());
|
|
16
|
+
dispatch((0, slices_1.resetCustomer)());
|
|
17
|
+
dispatch((0, slices_1.resetMenu)());
|
|
18
|
+
close();
|
|
19
|
+
navigate('/');
|
|
20
|
+
}, [dispatch, navigate, close]);
|
|
21
|
+
var handlers = (0, react_1.useMemo)(function () { return ({ close: close }); }, [close]);
|
|
22
|
+
(0, react_1.useEffect)(function () {
|
|
23
|
+
var timeout = setTimeout(handleInactivity, WAITING_TIME_IN_SECONDS * 1000);
|
|
24
|
+
return function () { return clearTimeout(timeout); };
|
|
25
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
|
+
}, []);
|
|
27
|
+
if (!config)
|
|
28
|
+
return null;
|
|
29
|
+
return children({ config: config, modalContentConfig: modalContentConfig, handlers: handlers });
|
|
30
|
+
};
|
|
31
|
+
exports.default = IdleModal;
|
|
@@ -7,8 +7,9 @@ var utils_1 = require("../utils");
|
|
|
7
7
|
var Keypad = function (_a) {
|
|
8
8
|
var children = _a.children, maxLength = _a.maxLength, type = _a.type, value = _a.value, handlers = _a.handlers;
|
|
9
9
|
var _b = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), keypad = _b.keypad, numpad = _b.numpad;
|
|
10
|
-
var
|
|
11
|
-
var
|
|
10
|
+
var isDollar = type === 'dollar';
|
|
11
|
+
var config = type === 'numeric' || isDollar ? numpad : keypad;
|
|
12
|
+
var handleOnKeyPress = (0, react_1.useCallback)(function (key) { return handlers.change((0, utils_1.getKeyboardValue)(key, value, maxLength)); }, [handlers, value, maxLength]);
|
|
12
13
|
var viewHandlers = (0, react_1.useMemo)(function () { return ({ keyPress: handleOnKeyPress }); }, [handleOnKeyPress]);
|
|
13
14
|
if (!config)
|
|
14
15
|
return null;
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -10,3 +10,4 @@ tslib_1.__exportStar(require("./components"), exports);
|
|
|
10
10
|
tslib_1.__exportStar(require("./hooks"), exports);
|
|
11
11
|
tslib_1.__exportStar(require("./slices"), exports);
|
|
12
12
|
tslib_1.__exportStar(require("./utils"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./middlewares"), exports);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.idleMiddleware = void 0;
|
|
4
|
+
var slices_1 = require("../slices");
|
|
5
|
+
var types_1 = require("../slices/types");
|
|
6
|
+
var DEFAULT_PAGE_TIMEOUT = 60;
|
|
7
|
+
var idleMiddleware = function (store) { return function (next) { return function (action) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
var result = next(action);
|
|
10
|
+
if (action.type === "".concat(types_1.ReducerType.Idle, "/setIsIdle") ||
|
|
11
|
+
action.type === "".concat(types_1.ReducerType.Idle, "/setIdleTimerId")) {
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
var state = store.getState();
|
|
15
|
+
var isIdle = state.idle.isIdle;
|
|
16
|
+
if (isIdle)
|
|
17
|
+
store.dispatch((0, slices_1.setIsIdle)(false));
|
|
18
|
+
var prevTimerId = state.idle.timerId;
|
|
19
|
+
clearTimeout(prevTimerId);
|
|
20
|
+
var pageTimeout = (_b = (_a = state.kiosk.store) === null || _a === void 0 ? void 0 : _a.page_timeout) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_TIMEOUT * 1000;
|
|
21
|
+
var timerId = setTimeout(function () {
|
|
22
|
+
store.dispatch((0, slices_1.setIsIdle)(true));
|
|
23
|
+
}, pageTimeout);
|
|
24
|
+
store.dispatch((0, slices_1.setIdleTimerId)(timerId));
|
|
25
|
+
return result;
|
|
26
|
+
}; }; };
|
|
27
|
+
exports.idleMiddleware = idleMiddleware;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './idleMiddleware';
|
|
@@ -62,6 +62,7 @@ export declare const selectCustomerLoyalty: ((state: {
|
|
|
62
62
|
sidebar: import("./sidebar").SidebarState;
|
|
63
63
|
surcharges: import("./surcharges").SurchargesState;
|
|
64
64
|
taxes: import("./taxes").TaxesState;
|
|
65
|
+
idle: import("./idle").IdleState;
|
|
65
66
|
}) => LoyaltyProgramSummary | null) & {
|
|
66
67
|
clearCache: () => void;
|
|
67
68
|
resultsCount: () => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AppState } from '../app';
|
|
2
|
+
export interface IdleState {
|
|
3
|
+
timerId: number | undefined;
|
|
4
|
+
isIdle: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const resetIdleState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"idle/resetIdleState">, setIdleTimerId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "idle/setIdleTimerId">, setIsIdle: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "idle/setIsIdle">;
|
|
7
|
+
export declare const selectIdleState: (state: AppState) => IdleState;
|
|
8
|
+
export declare const idleReducer: import("redux").Reducer<IdleState>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.idleReducer = exports.selectIdleState = exports.setIsIdle = exports.setIdleTimerId = exports.resetIdleState = void 0;
|
|
5
|
+
var toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
+
var types_1 = require("./types");
|
|
7
|
+
var initialState = {
|
|
8
|
+
timerId: undefined,
|
|
9
|
+
isIdle: false
|
|
10
|
+
};
|
|
11
|
+
var idleSlice = (0, toolkit_1.createSlice)({
|
|
12
|
+
name: types_1.ReducerType.Idle,
|
|
13
|
+
initialState: initialState,
|
|
14
|
+
reducers: {
|
|
15
|
+
resetIdleState: function () { return initialState; },
|
|
16
|
+
setIdleTimerId: function (state, action) {
|
|
17
|
+
state.timerId = action.payload;
|
|
18
|
+
},
|
|
19
|
+
setIsIdle: function (state, action) {
|
|
20
|
+
state.isIdle = action.payload;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
exports.resetIdleState = (_a = idleSlice.actions, _a.resetIdleState), exports.setIdleTimerId = _a.setIdleTimerId, exports.setIsIdle = _a.setIsIdle;
|
|
25
|
+
var selectIdleState = function (state) { return state.idle; };
|
|
26
|
+
exports.selectIdleState = selectIdleState;
|
|
27
|
+
exports.idleReducer = idleSlice.reducer;
|
package/dist/cjs/slices/index.js
CHANGED
|
@@ -27,3 +27,4 @@ tslib_1.__exportStar(require("./settings"), exports);
|
|
|
27
27
|
tslib_1.__exportStar(require("./sidebar"), exports);
|
|
28
28
|
tslib_1.__exportStar(require("./surcharges"), exports);
|
|
29
29
|
tslib_1.__exportStar(require("./taxes"), exports);
|
|
30
|
+
tslib_1.__exportStar(require("./idle"), exports);
|
|
@@ -69,6 +69,7 @@ export declare const selectStoreSettings: ((state: {
|
|
|
69
69
|
sidebar: import("./sidebar").SidebarState;
|
|
70
70
|
surcharges: import("./surcharges").SurchargesState;
|
|
71
71
|
taxes: import("./taxes").TaxesState;
|
|
72
|
+
idle: import("./idle").IdleState;
|
|
72
73
|
}) => Store) & {
|
|
73
74
|
clearCache: () => void;
|
|
74
75
|
resultsCount: () => number;
|
|
@@ -117,6 +118,7 @@ export declare const selectKioskTerminal: ((state: {
|
|
|
117
118
|
sidebar: import("./sidebar").SidebarState;
|
|
118
119
|
surcharges: import("./surcharges").SurchargesState;
|
|
119
120
|
taxes: import("./taxes").TaxesState;
|
|
121
|
+
idle: import("./idle").IdleState;
|
|
120
122
|
}) => import("@open-tender/types").PosTerminal | null) & {
|
|
121
123
|
clearCache: () => void;
|
|
122
124
|
resultsCount: () => number;
|
|
@@ -165,6 +167,7 @@ export declare const selectKioskHasPrinter: ((state: {
|
|
|
165
167
|
sidebar: import("./sidebar").SidebarState;
|
|
166
168
|
surcharges: import("./surcharges").SurchargesState;
|
|
167
169
|
taxes: import("./taxes").TaxesState;
|
|
170
|
+
idle: import("./idle").IdleState;
|
|
168
171
|
}) => boolean) & {
|
|
169
172
|
clearCache: () => void;
|
|
170
173
|
resultsCount: () => number;
|
|
@@ -213,6 +216,7 @@ export declare const selectKioskHasScanner: ((state: {
|
|
|
213
216
|
sidebar: import("./sidebar").SidebarState;
|
|
214
217
|
surcharges: import("./surcharges").SurchargesState;
|
|
215
218
|
taxes: import("./taxes").TaxesState;
|
|
219
|
+
idle: import("./idle").IdleState;
|
|
216
220
|
}) => boolean) & {
|
|
217
221
|
clearCache: () => void;
|
|
218
222
|
resultsCount: () => number;
|
|
@@ -261,6 +265,7 @@ export declare const selectKioskApi: ((state: {
|
|
|
261
265
|
sidebar: import("./sidebar").SidebarState;
|
|
262
266
|
surcharges: import("./surcharges").SurchargesState;
|
|
263
267
|
taxes: import("./taxes").TaxesState;
|
|
268
|
+
idle: import("./idle").IdleState;
|
|
264
269
|
}) => string) & {
|
|
265
270
|
clearCache: () => void;
|
|
266
271
|
resultsCount: () => number;
|
|
@@ -309,6 +314,7 @@ export declare const selectKioskConfig: ((state: {
|
|
|
309
314
|
sidebar: import("./sidebar").SidebarState;
|
|
310
315
|
surcharges: import("./surcharges").SurchargesState;
|
|
311
316
|
taxes: import("./taxes").TaxesState;
|
|
317
|
+
idle: import("./idle").IdleState;
|
|
312
318
|
}) => AppConfig) & {
|
|
313
319
|
clearCache: () => void;
|
|
314
320
|
resultsCount: () => number;
|
|
@@ -357,6 +363,7 @@ export declare const selectKioskConfigScreen: (screen: string) => ((state: {
|
|
|
357
363
|
sidebar: import("./sidebar").SidebarState;
|
|
358
364
|
surcharges: import("./surcharges").SurchargesState;
|
|
359
365
|
taxes: import("./taxes").TaxesState;
|
|
366
|
+
idle: import("./idle").IdleState;
|
|
360
367
|
}) => import("@open-tender/ui").ScreenConfig | null) & {
|
|
361
368
|
clearCache: () => void;
|
|
362
369
|
resultsCount: () => number;
|
|
@@ -47,6 +47,7 @@ export declare const selectMenuPagesFiltered: ((state: {
|
|
|
47
47
|
sidebar: import("./sidebar").SidebarState;
|
|
48
48
|
surcharges: import("./surcharges").SurchargesState;
|
|
49
49
|
taxes: import("./taxes").TaxesState;
|
|
50
|
+
idle: import("./idle").IdleState;
|
|
50
51
|
}) => {
|
|
51
52
|
order_type: import("@open-tender/types").FullOrderType;
|
|
52
53
|
name: string;
|
|
@@ -90,6 +90,7 @@ export declare const selectCartIds: ((state: {
|
|
|
90
90
|
sidebar: import("./sidebar").SidebarState;
|
|
91
91
|
surcharges: import("./surcharges").SurchargesState;
|
|
92
92
|
taxes: import("./taxes").TaxesState;
|
|
93
|
+
idle: import("./idle").IdleState;
|
|
93
94
|
}) => number[]) & {
|
|
94
95
|
clearCache: () => void;
|
|
95
96
|
resultsCount: () => number;
|
|
@@ -138,6 +139,7 @@ export declare const selectCartQuantity: ((state: {
|
|
|
138
139
|
sidebar: import("./sidebar").SidebarState;
|
|
139
140
|
surcharges: import("./surcharges").SurchargesState;
|
|
140
141
|
taxes: import("./taxes").TaxesState;
|
|
142
|
+
idle: import("./idle").IdleState;
|
|
141
143
|
}) => number) & {
|
|
142
144
|
clearCache: () => void;
|
|
143
145
|
resultsCount: () => number;
|
|
@@ -186,6 +188,7 @@ export declare const selectCartTotal: ((state: {
|
|
|
186
188
|
sidebar: import("./sidebar").SidebarState;
|
|
187
189
|
surcharges: import("./surcharges").SurchargesState;
|
|
188
190
|
taxes: import("./taxes").TaxesState;
|
|
191
|
+
idle: import("./idle").IdleState;
|
|
189
192
|
}) => number) & {
|
|
190
193
|
clearCache: () => void;
|
|
191
194
|
resultsCount: () => number;
|
|
@@ -234,6 +237,7 @@ export declare const selectCartTotals: ((state: {
|
|
|
234
237
|
sidebar: import("./sidebar").SidebarState;
|
|
235
238
|
surcharges: import("./surcharges").SurchargesState;
|
|
236
239
|
taxes: import("./taxes").TaxesState;
|
|
240
|
+
idle: import("./idle").IdleState;
|
|
237
241
|
}) => {
|
|
238
242
|
count: number;
|
|
239
243
|
total: number;
|
package/dist/cjs/slices/types.js
CHANGED
package/dist/esm/app/hooks.d.ts
CHANGED
|
@@ -27,5 +27,6 @@ export declare const useAppDispatch: () => import("redux-thunk").ThunkDispatch<{
|
|
|
27
27
|
sidebar: import("..").SidebarState;
|
|
28
28
|
surcharges: import("..").SurchargesState;
|
|
29
29
|
taxes: import("..").TaxesState;
|
|
30
|
+
idle: import("..").IdleState;
|
|
30
31
|
}, undefined, import("redux").UnknownAction> & import("redux").Dispatch<import("redux").Action>;
|
|
31
32
|
export declare const useAppSelector: TypedUseSelectorHook<RootState>;
|
package/dist/esm/app/store.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare const appReducer: import("redux").Reducer<{
|
|
|
26
26
|
sidebar: import("../slices").SidebarState;
|
|
27
27
|
surcharges: import("../slices").SurchargesState;
|
|
28
28
|
taxes: import("../slices").TaxesState;
|
|
29
|
+
idle: import("../slices").IdleState;
|
|
29
30
|
}, import("redux").UnknownAction, Partial<{
|
|
30
31
|
alerts: import("@open-tender/types").Alerts | undefined;
|
|
31
32
|
arrivals: import("../slices").ArrivalsState | undefined;
|
|
@@ -53,6 +54,7 @@ export declare const appReducer: import("redux").Reducer<{
|
|
|
53
54
|
sidebar: import("../slices").SidebarState | undefined;
|
|
54
55
|
surcharges: import("../slices").SurchargesState | undefined;
|
|
55
56
|
taxes: import("../slices").TaxesState | undefined;
|
|
57
|
+
idle: import("../slices").IdleState | undefined;
|
|
56
58
|
}>>;
|
|
57
59
|
export type AppState = ReturnType<typeof appReducer>;
|
|
58
60
|
declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
@@ -82,6 +84,7 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
|
82
84
|
sidebar: import("../slices").SidebarState;
|
|
83
85
|
surcharges: import("../slices").SurchargesState;
|
|
84
86
|
taxes: import("../slices").TaxesState;
|
|
87
|
+
idle: import("../slices").IdleState;
|
|
85
88
|
}, Action, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
|
|
86
89
|
dispatch: import("redux-thunk").ThunkDispatch<{
|
|
87
90
|
alerts: import("@open-tender/types").Alerts;
|
|
@@ -110,6 +113,7 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
|
110
113
|
sidebar: import("../slices").SidebarState;
|
|
111
114
|
surcharges: import("../slices").SurchargesState;
|
|
112
115
|
taxes: import("../slices").TaxesState;
|
|
116
|
+
idle: import("../slices").IdleState;
|
|
113
117
|
}, undefined, import("redux").UnknownAction>;
|
|
114
118
|
}>, import("redux").StoreEnhancer]>>;
|
|
115
119
|
export type AppDispatch = typeof store.dispatch;
|
package/dist/esm/app/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
2
|
-
import { alertsReducer, arrivalsReducer, cartSummaryReducer, checkoutReducer, configReducer, customerReducer, customerIdentifyReducer, dealsReducer, discountsReducer, errorAlertsReducer, kdsReducer, kioskReducer, menuReducer, menuPagesReducer, modalReducer, notificationsReducer, offlineAuthsReducer, orderReducer, posReducer, punchesReducer, refundReducer, sendReceiptReducer, settingsReducer, sidebarReducer, surchargesReducer, taxesReducer } from '../slices';
|
|
2
|
+
import { alertsReducer, arrivalsReducer, cartSummaryReducer, checkoutReducer, configReducer, customerReducer, customerIdentifyReducer, dealsReducer, discountsReducer, errorAlertsReducer, kdsReducer, kioskReducer, menuReducer, menuPagesReducer, modalReducer, notificationsReducer, offlineAuthsReducer, orderReducer, posReducer, punchesReducer, refundReducer, sendReceiptReducer, settingsReducer, sidebarReducer, surchargesReducer, taxesReducer, idleReducer } from '../slices';
|
|
3
3
|
export var appReducer = combineReducers({
|
|
4
4
|
alerts: alertsReducer,
|
|
5
5
|
arrivals: arrivalsReducer,
|
|
@@ -26,7 +26,8 @@ export var appReducer = combineReducers({
|
|
|
26
26
|
settings: settingsReducer,
|
|
27
27
|
sidebar: sidebarReducer,
|
|
28
28
|
surcharges: surchargesReducer,
|
|
29
|
-
taxes: taxesReducer
|
|
29
|
+
taxes: taxesReducer,
|
|
30
|
+
idle: idleReducer
|
|
30
31
|
});
|
|
31
32
|
var rootReducer = function (state, action) {
|
|
32
33
|
if (action.type === 'clearState') {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Handlers, ScreenConfig } from '@open-tender/ui';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
declare const IdleModal: ({ close, navigate, children }: {
|
|
4
|
+
close: () => void;
|
|
5
|
+
navigate: (route: string) => void;
|
|
6
|
+
children: (props: {
|
|
7
|
+
config: ScreenConfig;
|
|
8
|
+
modalContentConfig: ScreenConfig;
|
|
9
|
+
handlers: Handlers;
|
|
10
|
+
}) => ReactNode;
|
|
11
|
+
}) => ReactNode;
|
|
12
|
+
export default IdleModal;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo } from 'react';
|
|
2
|
+
import { useAppDispatch, useAppSelector } from '../app/hooks';
|
|
3
|
+
import { resetCart, resetCustomer, resetCustomerIdentify, resetMenu, resetPosCheckout, selectKioskConfig, setOrderId } from '../slices';
|
|
4
|
+
var WAITING_TIME_IN_SECONDS = 15;
|
|
5
|
+
var IdleModal = function (_a) {
|
|
6
|
+
var close = _a.close, navigate = _a.navigate, children = _a.children;
|
|
7
|
+
var dispatch = useAppDispatch();
|
|
8
|
+
var _b = useAppSelector(selectKioskConfig), config = _b.idleModal, modalContentConfig = _b.modalContent;
|
|
9
|
+
var handleInactivity = useCallback(function () {
|
|
10
|
+
dispatch(resetPosCheckout());
|
|
11
|
+
dispatch(setOrderId(null));
|
|
12
|
+
dispatch(resetCart());
|
|
13
|
+
dispatch(resetCustomerIdentify());
|
|
14
|
+
dispatch(resetCustomer());
|
|
15
|
+
dispatch(resetMenu());
|
|
16
|
+
close();
|
|
17
|
+
navigate('/');
|
|
18
|
+
}, [dispatch, navigate, close]);
|
|
19
|
+
var handlers = useMemo(function () { return ({ close: close }); }, [close]);
|
|
20
|
+
useEffect(function () {
|
|
21
|
+
var timeout = setTimeout(handleInactivity, WAITING_TIME_IN_SECONDS * 1000);
|
|
22
|
+
return function () { return clearTimeout(timeout); };
|
|
23
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
}, []);
|
|
25
|
+
if (!config)
|
|
26
|
+
return null;
|
|
27
|
+
return children({ config: config, modalContentConfig: modalContentConfig, handlers: handlers });
|
|
28
|
+
};
|
|
29
|
+
export default IdleModal;
|
|
@@ -5,8 +5,9 @@ import { getKeyboardValue } from '../utils';
|
|
|
5
5
|
var Keypad = function (_a) {
|
|
6
6
|
var children = _a.children, maxLength = _a.maxLength, type = _a.type, value = _a.value, handlers = _a.handlers;
|
|
7
7
|
var _b = useAppSelector(selectKioskConfig), keypad = _b.keypad, numpad = _b.numpad;
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var isDollar = type === 'dollar';
|
|
9
|
+
var config = type === 'numeric' || isDollar ? numpad : keypad;
|
|
10
|
+
var handleOnKeyPress = useCallback(function (key) { return handlers.change(getKeyboardValue(key, value, maxLength)); }, [handlers, value, maxLength]);
|
|
10
11
|
var viewHandlers = useMemo(function () { return ({ keyPress: handleOnKeyPress }); }, [handleOnKeyPress]);
|
|
11
12
|
if (!config)
|
|
12
13
|
return null;
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { setIdleTimerId, setIsIdle } from '../slices';
|
|
2
|
+
import { ReducerType } from '../slices/types';
|
|
3
|
+
var DEFAULT_PAGE_TIMEOUT = 60;
|
|
4
|
+
export var idleMiddleware = function (store) { return function (next) { return function (action) {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
var result = next(action);
|
|
7
|
+
if (action.type === "".concat(ReducerType.Idle, "/setIsIdle") ||
|
|
8
|
+
action.type === "".concat(ReducerType.Idle, "/setIdleTimerId")) {
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
var state = store.getState();
|
|
12
|
+
var isIdle = state.idle.isIdle;
|
|
13
|
+
if (isIdle)
|
|
14
|
+
store.dispatch(setIsIdle(false));
|
|
15
|
+
var prevTimerId = state.idle.timerId;
|
|
16
|
+
clearTimeout(prevTimerId);
|
|
17
|
+
var pageTimeout = (_b = (_a = state.kiosk.store) === null || _a === void 0 ? void 0 : _a.page_timeout) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_TIMEOUT * 1000;
|
|
18
|
+
var timerId = setTimeout(function () {
|
|
19
|
+
store.dispatch(setIsIdle(true));
|
|
20
|
+
}, pageTimeout);
|
|
21
|
+
store.dispatch(setIdleTimerId(timerId));
|
|
22
|
+
return result;
|
|
23
|
+
}; }; };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './idleMiddleware';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './idleMiddleware';
|
|
@@ -62,6 +62,7 @@ export declare const selectCustomerLoyalty: ((state: {
|
|
|
62
62
|
sidebar: import("./sidebar").SidebarState;
|
|
63
63
|
surcharges: import("./surcharges").SurchargesState;
|
|
64
64
|
taxes: import("./taxes").TaxesState;
|
|
65
|
+
idle: import("./idle").IdleState;
|
|
65
66
|
}) => LoyaltyProgramSummary | null) & {
|
|
66
67
|
clearCache: () => void;
|
|
67
68
|
resultsCount: () => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AppState } from '../app';
|
|
2
|
+
export interface IdleState {
|
|
3
|
+
timerId: number | undefined;
|
|
4
|
+
isIdle: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const resetIdleState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"idle/resetIdleState">, setIdleTimerId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "idle/setIdleTimerId">, setIsIdle: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "idle/setIsIdle">;
|
|
7
|
+
export declare const selectIdleState: (state: AppState) => IdleState;
|
|
8
|
+
export declare const idleReducer: import("redux").Reducer<IdleState>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
import { ReducerType } from './types';
|
|
4
|
+
var initialState = {
|
|
5
|
+
timerId: undefined,
|
|
6
|
+
isIdle: false
|
|
7
|
+
};
|
|
8
|
+
var idleSlice = createSlice({
|
|
9
|
+
name: ReducerType.Idle,
|
|
10
|
+
initialState: initialState,
|
|
11
|
+
reducers: {
|
|
12
|
+
resetIdleState: function () { return initialState; },
|
|
13
|
+
setIdleTimerId: function (state, action) {
|
|
14
|
+
state.timerId = action.payload;
|
|
15
|
+
},
|
|
16
|
+
setIsIdle: function (state, action) {
|
|
17
|
+
state.isIdle = action.payload;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
export var resetIdleState = (_a = idleSlice.actions, _a.resetIdleState), setIdleTimerId = _a.setIdleTimerId, setIsIdle = _a.setIsIdle;
|
|
22
|
+
export var selectIdleState = function (state) { return state.idle; };
|
|
23
|
+
export var idleReducer = idleSlice.reducer;
|
package/dist/esm/slices/index.js
CHANGED
|
@@ -69,6 +69,7 @@ export declare const selectStoreSettings: ((state: {
|
|
|
69
69
|
sidebar: import("./sidebar").SidebarState;
|
|
70
70
|
surcharges: import("./surcharges").SurchargesState;
|
|
71
71
|
taxes: import("./taxes").TaxesState;
|
|
72
|
+
idle: import("./idle").IdleState;
|
|
72
73
|
}) => Store) & {
|
|
73
74
|
clearCache: () => void;
|
|
74
75
|
resultsCount: () => number;
|
|
@@ -117,6 +118,7 @@ export declare const selectKioskTerminal: ((state: {
|
|
|
117
118
|
sidebar: import("./sidebar").SidebarState;
|
|
118
119
|
surcharges: import("./surcharges").SurchargesState;
|
|
119
120
|
taxes: import("./taxes").TaxesState;
|
|
121
|
+
idle: import("./idle").IdleState;
|
|
120
122
|
}) => import("@open-tender/types").PosTerminal | null) & {
|
|
121
123
|
clearCache: () => void;
|
|
122
124
|
resultsCount: () => number;
|
|
@@ -165,6 +167,7 @@ export declare const selectKioskHasPrinter: ((state: {
|
|
|
165
167
|
sidebar: import("./sidebar").SidebarState;
|
|
166
168
|
surcharges: import("./surcharges").SurchargesState;
|
|
167
169
|
taxes: import("./taxes").TaxesState;
|
|
170
|
+
idle: import("./idle").IdleState;
|
|
168
171
|
}) => boolean) & {
|
|
169
172
|
clearCache: () => void;
|
|
170
173
|
resultsCount: () => number;
|
|
@@ -213,6 +216,7 @@ export declare const selectKioskHasScanner: ((state: {
|
|
|
213
216
|
sidebar: import("./sidebar").SidebarState;
|
|
214
217
|
surcharges: import("./surcharges").SurchargesState;
|
|
215
218
|
taxes: import("./taxes").TaxesState;
|
|
219
|
+
idle: import("./idle").IdleState;
|
|
216
220
|
}) => boolean) & {
|
|
217
221
|
clearCache: () => void;
|
|
218
222
|
resultsCount: () => number;
|
|
@@ -261,6 +265,7 @@ export declare const selectKioskApi: ((state: {
|
|
|
261
265
|
sidebar: import("./sidebar").SidebarState;
|
|
262
266
|
surcharges: import("./surcharges").SurchargesState;
|
|
263
267
|
taxes: import("./taxes").TaxesState;
|
|
268
|
+
idle: import("./idle").IdleState;
|
|
264
269
|
}) => string) & {
|
|
265
270
|
clearCache: () => void;
|
|
266
271
|
resultsCount: () => number;
|
|
@@ -309,6 +314,7 @@ export declare const selectKioskConfig: ((state: {
|
|
|
309
314
|
sidebar: import("./sidebar").SidebarState;
|
|
310
315
|
surcharges: import("./surcharges").SurchargesState;
|
|
311
316
|
taxes: import("./taxes").TaxesState;
|
|
317
|
+
idle: import("./idle").IdleState;
|
|
312
318
|
}) => AppConfig) & {
|
|
313
319
|
clearCache: () => void;
|
|
314
320
|
resultsCount: () => number;
|
|
@@ -357,6 +363,7 @@ export declare const selectKioskConfigScreen: (screen: string) => ((state: {
|
|
|
357
363
|
sidebar: import("./sidebar").SidebarState;
|
|
358
364
|
surcharges: import("./surcharges").SurchargesState;
|
|
359
365
|
taxes: import("./taxes").TaxesState;
|
|
366
|
+
idle: import("./idle").IdleState;
|
|
360
367
|
}) => import("@open-tender/ui").ScreenConfig | null) & {
|
|
361
368
|
clearCache: () => void;
|
|
362
369
|
resultsCount: () => number;
|
|
@@ -47,6 +47,7 @@ export declare const selectMenuPagesFiltered: ((state: {
|
|
|
47
47
|
sidebar: import("./sidebar").SidebarState;
|
|
48
48
|
surcharges: import("./surcharges").SurchargesState;
|
|
49
49
|
taxes: import("./taxes").TaxesState;
|
|
50
|
+
idle: import("./idle").IdleState;
|
|
50
51
|
}) => {
|
|
51
52
|
order_type: import("@open-tender/types").FullOrderType;
|
|
52
53
|
name: string;
|
|
@@ -90,6 +90,7 @@ export declare const selectCartIds: ((state: {
|
|
|
90
90
|
sidebar: import("./sidebar").SidebarState;
|
|
91
91
|
surcharges: import("./surcharges").SurchargesState;
|
|
92
92
|
taxes: import("./taxes").TaxesState;
|
|
93
|
+
idle: import("./idle").IdleState;
|
|
93
94
|
}) => number[]) & {
|
|
94
95
|
clearCache: () => void;
|
|
95
96
|
resultsCount: () => number;
|
|
@@ -138,6 +139,7 @@ export declare const selectCartQuantity: ((state: {
|
|
|
138
139
|
sidebar: import("./sidebar").SidebarState;
|
|
139
140
|
surcharges: import("./surcharges").SurchargesState;
|
|
140
141
|
taxes: import("./taxes").TaxesState;
|
|
142
|
+
idle: import("./idle").IdleState;
|
|
141
143
|
}) => number) & {
|
|
142
144
|
clearCache: () => void;
|
|
143
145
|
resultsCount: () => number;
|
|
@@ -186,6 +188,7 @@ export declare const selectCartTotal: ((state: {
|
|
|
186
188
|
sidebar: import("./sidebar").SidebarState;
|
|
187
189
|
surcharges: import("./surcharges").SurchargesState;
|
|
188
190
|
taxes: import("./taxes").TaxesState;
|
|
191
|
+
idle: import("./idle").IdleState;
|
|
189
192
|
}) => number) & {
|
|
190
193
|
clearCache: () => void;
|
|
191
194
|
resultsCount: () => number;
|
|
@@ -234,6 +237,7 @@ export declare const selectCartTotals: ((state: {
|
|
|
234
237
|
sidebar: import("./sidebar").SidebarState;
|
|
235
238
|
surcharges: import("./surcharges").SurchargesState;
|
|
236
239
|
taxes: import("./taxes").TaxesState;
|
|
240
|
+
idle: import("./idle").IdleState;
|
|
237
241
|
}) => {
|
|
238
242
|
count: number;
|
|
239
243
|
total: number;
|
package/dist/esm/slices/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-tender/store",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.138",
|
|
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",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"@emotion/react": "^11.11.1",
|
|
64
|
-
"@open-tender/types": "^0.4.
|
|
65
|
-
"@open-tender/ui": "^0.3.
|
|
64
|
+
"@open-tender/types": "^0.4.67",
|
|
65
|
+
"@open-tender/ui": "^0.3.100",
|
|
66
66
|
"@open-tender/utils": "^0.4.39",
|
|
67
67
|
"@reduxjs/toolkit": "^2.0.1",
|
|
68
68
|
"date-fns": "2.30.0",
|