@shoppexio/storefront-react 0.1.4 → 0.1.5
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/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/dist/account.js +93 -58
- package/dist/account.js.map +1 -1
- package/dist/index.d.ts +94 -11
- package/dist/index.js +88 -18
- package/dist/index.js.map +1 -1
- package/eject/account/account-page.tsx +8 -2
- package/eject/account/account-warranties.ts +9 -0
- package/eject/account/messages/ar.json +2 -1
- package/eject/account/messages/de.json +2 -1
- package/eject/account/messages/en.json +2 -1
- package/eject/account/messages/es.json +2 -1
- package/eject/account/messages/fi.json +2 -1
- package/eject/account/messages/fr.json +2 -1
- package/eject/account/messages/hi.json +2 -1
- package/eject/account/messages/it.json +2 -1
- package/eject/account/messages/lt.json +2 -1
- package/eject/account/messages/nl.json +2 -1
- package/eject/account/messages/pl.json +2 -1
- package/eject/account/messages/pt.json +2 -1
- package/eject/account/messages/ru.json +2 -1
- package/eject/account/messages/tr.json +2 -1
- package/eject/account/messages/uk.json +2 -1
- package/eject/account/messages/zh.json +2 -1
- package/eject/account/orders.tsx +6 -1
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
type AccountSignInPrefill,
|
|
21
21
|
} from './account-signin-link';
|
|
22
22
|
import { callCustomerApi } from './customer-account';
|
|
23
|
-
import { t } from './i18n';
|
|
23
|
+
import { getActiveLocale, isRightToLeft, t } from './i18n';
|
|
24
24
|
import {
|
|
25
25
|
AccountShellProvider,
|
|
26
26
|
useAccountAvailability,
|
|
@@ -216,7 +216,13 @@ export function AccountPage({ frame: Frame, notFound }: AccountPageProps) {
|
|
|
216
216
|
|
|
217
217
|
return (
|
|
218
218
|
<Frame>
|
|
219
|
-
<
|
|
219
|
+
{/* The storefront sets only <html lang>; the account sets its own
|
|
220
|
+
direction so an Arabic account reads right to left. */}
|
|
221
|
+
<section
|
|
222
|
+
className="sx-account sxa:space-y-8 sxa:py-6 sxa:md:py-8"
|
|
223
|
+
dir={isRightToLeft(getActiveLocale()) ? 'rtl' : 'ltr'}
|
|
224
|
+
data-sx-account-session={session.status}
|
|
225
|
+
>
|
|
220
226
|
<div className="sx-account-header sxa:flex sxa:flex-wrap sxa:items-end sxa:justify-between sxa:gap-4">
|
|
221
227
|
<h1 className="sx-account-title sxa:font-heading sxa:text-h1">
|
|
222
228
|
{t('account.title')}
|
|
@@ -112,6 +112,15 @@ export const WARRANTY_CLAIM_MESSAGE_MAX = 2000;
|
|
|
112
112
|
* as omitting it: it stores a blank message the shop then reads as "the buyer
|
|
113
113
|
* had nothing to say" rather than "the buyer did not write anything".
|
|
114
114
|
*/
|
|
115
|
+
/**
|
|
116
|
+
* Whether a claim is over the producer's limit, measured on what would be sent
|
|
117
|
+
* (trimmed). The form refuses it and names the limit; clipping it with
|
|
118
|
+
* `maxLength` would send a claim the buyer never wrote and report success.
|
|
119
|
+
*/
|
|
120
|
+
export function isWarrantyClaimTooLong(input: string): boolean {
|
|
121
|
+
return input.trim().length > WARRANTY_CLAIM_MESSAGE_MAX;
|
|
122
|
+
}
|
|
123
|
+
|
|
115
124
|
export function warrantyClaimMessage(input: string): string | undefined {
|
|
116
125
|
const message = input.trim();
|
|
117
126
|
return message.length === 0 ? undefined : message;
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "إرسال الطلب",
|
|
159
159
|
"warrantyClaimSending": "جارٍ الإرسال…",
|
|
160
160
|
"warrantyClaimDone": "وصل طلبك إلى المتجر. سيردّون عبر البريد الإلكتروني.",
|
|
161
|
-
"warrantyClaimFailed": "تعذّر إرسال طلبك."
|
|
161
|
+
"warrantyClaimFailed": "تعذّر إرسال طلبك.",
|
|
162
|
+
"warrantyClaimTooLong": "لا يمكن أن يتجاوز طلبك {max} حرف."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "جارٍ تحميل تنزيلاتك",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Fall senden",
|
|
159
159
|
"warrantyClaimSending": "Wird gesendet…",
|
|
160
160
|
"warrantyClaimDone": "Der Shop hat deinen Fall erhalten. Die Antwort kommt per E-Mail.",
|
|
161
|
-
"warrantyClaimFailed": "Dein Fall konnte nicht gesendet werden."
|
|
161
|
+
"warrantyClaimFailed": "Dein Fall konnte nicht gesendet werden.",
|
|
162
|
+
"warrantyClaimTooLong": "Dein Fall darf höchstens {max} Zeichen lang sein."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Deine Downloads werden geladen",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Send claim",
|
|
159
159
|
"warrantyClaimSending": "Sending…",
|
|
160
160
|
"warrantyClaimDone": "The store has your claim. They reply by email.",
|
|
161
|
-
"warrantyClaimFailed": "Your claim could not be sent."
|
|
161
|
+
"warrantyClaimFailed": "Your claim could not be sent.",
|
|
162
|
+
"warrantyClaimTooLong": "Your claim can be at most {max} characters."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Loading your downloads",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Enviar reclamación",
|
|
159
159
|
"warrantyClaimSending": "Enviando…",
|
|
160
160
|
"warrantyClaimDone": "La tienda ha recibido tu reclamación. Te responderán por correo.",
|
|
161
|
-
"warrantyClaimFailed": "No se ha podido enviar tu reclamación."
|
|
161
|
+
"warrantyClaimFailed": "No se ha podido enviar tu reclamación.",
|
|
162
|
+
"warrantyClaimTooLong": "Tu reclamación no puede superar los {max} caracteres."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Cargando tus descargas",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Lähetä vaatimus",
|
|
159
159
|
"warrantyClaimSending": "Lähetetään…",
|
|
160
160
|
"warrantyClaimDone": "Kauppa sai vaatimuksesi. He vastaavat sähköpostitse.",
|
|
161
|
-
"warrantyClaimFailed": "Vaatimustasi ei voitu lähettää."
|
|
161
|
+
"warrantyClaimFailed": "Vaatimustasi ei voitu lähettää.",
|
|
162
|
+
"warrantyClaimTooLong": "Vaatimuksessa saa olla enintään {max} merkkiä."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Ladataan latauksiasi",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Envoyer la demande",
|
|
159
159
|
"warrantyClaimSending": "Envoi en cours…",
|
|
160
160
|
"warrantyClaimDone": "La boutique a bien reçu votre demande. Elle répond par e-mail.",
|
|
161
|
-
"warrantyClaimFailed": "Votre demande n'a pas pu être envoyée."
|
|
161
|
+
"warrantyClaimFailed": "Votre demande n'a pas pu être envoyée.",
|
|
162
|
+
"warrantyClaimTooLong": "Votre demande ne peut pas dépasser {max} caractères."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Chargement de vos téléchargements",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "दावा भेजें",
|
|
159
159
|
"warrantyClaimSending": "भेजा जा रहा है…",
|
|
160
160
|
"warrantyClaimDone": "स्टोर को आपका दावा मिल गया। जवाब ईमेल से आएगा।",
|
|
161
|
-
"warrantyClaimFailed": "आपका दावा नहीं भेजा जा सका।"
|
|
161
|
+
"warrantyClaimFailed": "आपका दावा नहीं भेजा जा सका।",
|
|
162
|
+
"warrantyClaimTooLong": "आपका दावा {max} वर्णों से अधिक नहीं हो सकता।"
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "आपके डाउनलोड लोड हो रहे हैं",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Invia richiesta",
|
|
159
159
|
"warrantyClaimSending": "Invio in corso…",
|
|
160
160
|
"warrantyClaimDone": "Il negozio ha ricevuto la tua richiesta. Ti rispondono via e-mail.",
|
|
161
|
-
"warrantyClaimFailed": "Non è stato possibile inviare la richiesta."
|
|
161
|
+
"warrantyClaimFailed": "Non è stato possibile inviare la richiesta.",
|
|
162
|
+
"warrantyClaimTooLong": "La richiesta non può superare i {max} caratteri."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Caricamento dei tuoi download",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Siųsti prašymą",
|
|
159
159
|
"warrantyClaimSending": "Siunčiama…",
|
|
160
160
|
"warrantyClaimDone": "Parduotuvė gavo jūsų prašymą. Atsakymas ateis el. paštu.",
|
|
161
|
-
"warrantyClaimFailed": "Jūsų prašymo išsiųsti nepavyko."
|
|
161
|
+
"warrantyClaimFailed": "Jūsų prašymo išsiųsti nepavyko.",
|
|
162
|
+
"warrantyClaimTooLong": "Prašymas negali viršyti {max} simbolių."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Įkeliami jūsų atsisiuntimai",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Melding versturen",
|
|
159
159
|
"warrantyClaimSending": "Versturen…",
|
|
160
160
|
"warrantyClaimDone": "De winkel heeft je melding ontvangen. Ze antwoorden per e-mail.",
|
|
161
|
-
"warrantyClaimFailed": "Je melding kon niet worden verstuurd."
|
|
161
|
+
"warrantyClaimFailed": "Je melding kon niet worden verstuurd.",
|
|
162
|
+
"warrantyClaimTooLong": "Je melding mag maximaal {max} tekens bevatten."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Je downloads worden geladen",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Wyślij zgłoszenie",
|
|
159
159
|
"warrantyClaimSending": "Wysyłanie…",
|
|
160
160
|
"warrantyClaimDone": "Sklep otrzymał Twoje zgłoszenie. Odpowiedź przyjdzie e-mailem.",
|
|
161
|
-
"warrantyClaimFailed": "Nie udało się wysłać zgłoszenia."
|
|
161
|
+
"warrantyClaimFailed": "Nie udało się wysłać zgłoszenia.",
|
|
162
|
+
"warrantyClaimTooLong": "Zgłoszenie może mieć najwyżej {max} znaków."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Wczytujemy Twoje pliki",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Enviar pedido",
|
|
159
159
|
"warrantyClaimSending": "A enviar…",
|
|
160
160
|
"warrantyClaimDone": "A loja recebeu o teu pedido. Respondem por e-mail.",
|
|
161
|
-
"warrantyClaimFailed": "Não foi possível enviar o teu pedido."
|
|
161
|
+
"warrantyClaimFailed": "Não foi possível enviar o teu pedido.",
|
|
162
|
+
"warrantyClaimTooLong": "O teu pedido não pode ter mais de {max} caracteres."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "A carregar as tuas transferências",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Отправить обращение",
|
|
159
159
|
"warrantyClaimSending": "Отправляем…",
|
|
160
160
|
"warrantyClaimDone": "Магазин получил ваше обращение. Ответ придёт на почту.",
|
|
161
|
-
"warrantyClaimFailed": "Не удалось отправить обращение."
|
|
161
|
+
"warrantyClaimFailed": "Не удалось отправить обращение.",
|
|
162
|
+
"warrantyClaimTooLong": "Обращение не должно превышать {max} символов."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Загружаем ваши файлы",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Talebi gönder",
|
|
159
159
|
"warrantyClaimSending": "Gönderiliyor…",
|
|
160
160
|
"warrantyClaimDone": "Mağaza talebinizi aldı. E-posta ile yanıt verirler.",
|
|
161
|
-
"warrantyClaimFailed": "Talebiniz gönderilemedi."
|
|
161
|
+
"warrantyClaimFailed": "Talebiniz gönderilemedi.",
|
|
162
|
+
"warrantyClaimTooLong": "Talebiniz en fazla {max} karakter olabilir."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "İndirmeleriniz yükleniyor",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "Надіслати звернення",
|
|
159
159
|
"warrantyClaimSending": "Надсилаємо…",
|
|
160
160
|
"warrantyClaimDone": "Магазин отримав ваше звернення. Відповідь надійде на пошту.",
|
|
161
|
-
"warrantyClaimFailed": "Не вдалося надіслати звернення."
|
|
161
|
+
"warrantyClaimFailed": "Не вдалося надіслати звернення.",
|
|
162
|
+
"warrantyClaimTooLong": "Звернення не має перевищувати {max} символів."
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "Завантажуємо ваші файли",
|
|
@@ -158,7 +158,8 @@
|
|
|
158
158
|
"warrantyClaimSend": "提交申请",
|
|
159
159
|
"warrantyClaimSending": "提交中…",
|
|
160
160
|
"warrantyClaimDone": "商店已收到你的申请,他们会通过邮件回复。",
|
|
161
|
-
"warrantyClaimFailed": "申请提交失败。"
|
|
161
|
+
"warrantyClaimFailed": "申请提交失败。",
|
|
162
|
+
"warrantyClaimTooLong": "申请内容不能超过 {max} 个字符。"
|
|
162
163
|
},
|
|
163
164
|
"downloads": {
|
|
164
165
|
"loading": "正在加载你的下载内容",
|
package/eject/account/orders.tsx
CHANGED
|
@@ -18,6 +18,7 @@ import { Link } from 'react-router-dom';
|
|
|
18
18
|
import { paymentMethodLabel } from './account-payment-method';
|
|
19
19
|
import { accountOrderHref, accountTabHref } from '@shoppexio/storefront-react';
|
|
20
20
|
import {
|
|
21
|
+
isWarrantyClaimTooLong,
|
|
21
22
|
WARRANTY_CLAIM_MESSAGE_MAX,
|
|
22
23
|
canClaimWarranty,
|
|
23
24
|
warrantiesForOrder,
|
|
@@ -525,6 +526,10 @@ function WarrantyRow({
|
|
|
525
526
|
const fieldId = `warranty-claim-${warranty.uniqid}`;
|
|
526
527
|
|
|
527
528
|
const send = async () => {
|
|
529
|
+
if (isWarrantyClaimTooLong(message)) {
|
|
530
|
+
setError(t('orders.warrantyClaimTooLong', { max: WARRANTY_CLAIM_MESSAGE_MAX }));
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
528
533
|
setSending(true);
|
|
529
534
|
setError(null);
|
|
530
535
|
const response = await callCustomerApi((sdk) => sdk.claimWarranty(
|
|
@@ -589,7 +594,7 @@ function WarrantyRow({
|
|
|
589
594
|
rows={3}
|
|
590
595
|
value={message}
|
|
591
596
|
disabled={sending}
|
|
592
|
-
|
|
597
|
+
aria-invalid={error !== null || undefined}
|
|
593
598
|
onChange={(event) => {
|
|
594
599
|
setMessage(event.target.value);
|
|
595
600
|
setError(null);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shoppexio/storefront-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "React hooks, models and a customer account for Shoppex code storefronts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://docs.shoppex.io/storefront/code-storefront-development",
|