UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

40 lines (39 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCurbside = void 0; const react_1 = require("react"); const utils_1 = require("../utils"); const useCurbside = (orderId, fulfillment, loading, error, update, settings, showAllFields = false) => { const [data, setData] = (0, react_1.useState)({}); const [submitting, setSubmitting] = (0, react_1.useState)(false); const errors = error || {}; const empty = Object.values(fulfillment).every(i => !i); const fields = !empty && !showAllFields ? settings === null || settings === void 0 ? void 0 : settings.fields.filter(i => i.name.startsWith('arrival')) : settings === null || settings === void 0 ? void 0 : settings.fields; (0, react_1.useEffect)(() => { if (loading === 'idle') setSubmitting(false); }, [loading]); (0, react_1.useEffect)(() => { if (!(0, utils_1.isEmpty)(fulfillment)) setData(fulfillment); }, [fulfillment]); const handleChange = (name, value) => { setData(Object.assign(Object.assign({}, data), { [name]: value })); }; const handleSubmit = (evt) => { evt === null || evt === void 0 ? void 0 : evt.preventDefault(); setSubmitting(true); update(orderId, Object.assign(Object.assign({}, data), { has_arrived: true })); }; return { fields, data, errors, submitting, handleChange, handleSubmit }; }; exports.useCurbside = useCurbside;