@qite/tide-components 1.0.14-preview.1 → 1.0.14-preview.3
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/build/build-cjs/index.js +957 -23
- package/build/build-cjs/src/content/agent-entries/agent-entries-services.d.ts +18 -0
- package/build/build-cjs/src/content/agent-entries/index.d.ts +4 -0
- package/build/build-cjs/src/content/agent-entries/types.d.ts +27 -0
- package/build/build-cjs/src/content/navbar/types.d.ts +1 -0
- package/build/build-cjs/src/index.d.ts +3 -1
- package/build/build-cjs/src/search-results/components/traject/traject-card-row.d.ts +7 -0
- package/build/build-esm/index.js +957 -24
- package/build/build-esm/src/content/agent-entries/agent-entries-services.d.ts +18 -0
- package/build/build-esm/src/content/agent-entries/index.d.ts +4 -0
- package/build/build-esm/src/content/agent-entries/types.d.ts +27 -0
- package/build/build-esm/src/content/navbar/types.d.ts +1 -0
- package/build/build-esm/src/index.d.ts +3 -1
- package/build/build-esm/src/search-results/components/traject/traject-card-row.d.ts +7 -0
- package/package.json +1 -1
- package/styles/components/_agent-entries.scss +336 -0
- package/styles/content-blocks.scss +1 -0
package/build/build-esm/index.js
CHANGED
|
@@ -480,6 +480,39 @@ var FORM$f = {
|
|
|
480
480
|
YES: "نعم",
|
|
481
481
|
NO: "لا"
|
|
482
482
|
};
|
|
483
|
+
var AGENT_ENTRIES$f = {
|
|
484
|
+
TITLE: "الحجوزات",
|
|
485
|
+
MY_BOOKINGS: "حجوزاتي",
|
|
486
|
+
NUMBER: "الرقم",
|
|
487
|
+
DEPARTURE_DATE: "تاريخ المغادرة",
|
|
488
|
+
STATUS: "الحالة",
|
|
489
|
+
CUSTOM_STATUS: "حالة مخصصة",
|
|
490
|
+
RETURN_DATE: "تاريخ العودة",
|
|
491
|
+
PROFIT: "الربح",
|
|
492
|
+
NETTO_SELLING_PRICE: "صافي سعر البيع",
|
|
493
|
+
YOUR_SURCHARGE: "رسومك الإضافية",
|
|
494
|
+
CREATED: "تاريخ الإنشاء",
|
|
495
|
+
CONTACT: "جهة الاتصال",
|
|
496
|
+
MAIN_BOOKER: "الحاجز الرئيسي",
|
|
497
|
+
PRODUCT: "المنتج",
|
|
498
|
+
TRAVELERS: "المسافرون",
|
|
499
|
+
ACTIONS: "الإجراءات",
|
|
500
|
+
DETAILS: "التفاصيل",
|
|
501
|
+
HIDE_DETAILS: "إخفاء التفاصيل",
|
|
502
|
+
PRINTS: "المطبوعات",
|
|
503
|
+
ALL: "الكل",
|
|
504
|
+
X_ITEMS: "{0} عناصر",
|
|
505
|
+
PAGE_SIZE: "عناصر لكل صفحة",
|
|
506
|
+
PREVIOUS: "السابق",
|
|
507
|
+
NEXT: "التالي",
|
|
508
|
+
PAGE_X_OF_Y: "الصفحة {0} من {1}",
|
|
509
|
+
LOADING: "جارٍ التحميل...",
|
|
510
|
+
NO_ITEMS: "لم يتم العثور على حجوزات.",
|
|
511
|
+
ERROR: "حدث خطأ أثناء تحميل حجوزاتك.",
|
|
512
|
+
PRINT_ERROR: "فشلت الطباعة، يرجى المحاولة مرة أخرى.",
|
|
513
|
+
NOT_LOGGED_IN: "سجّل الدخول كوكيل لعرض حجوزاتك.",
|
|
514
|
+
SESSION_EXPIRED: "انتهت صلاحية جلستك، يرجى تسجيل الدخول مرة أخرى."
|
|
515
|
+
};
|
|
483
516
|
var arJson = {
|
|
484
517
|
STEPS: STEPS$f,
|
|
485
518
|
INPUT: INPUT$f,
|
|
@@ -500,7 +533,8 @@ var arJson = {
|
|
|
500
533
|
QSM: QSM$g,
|
|
501
534
|
SRP: SRP$f,
|
|
502
535
|
ITINERARY: ITINERARY$f,
|
|
503
|
-
FORM: FORM$f
|
|
536
|
+
FORM: FORM$f,
|
|
537
|
+
AGENT_ENTRIES: AGENT_ENTRIES$f
|
|
504
538
|
};
|
|
505
539
|
|
|
506
540
|
var STEPS$e = {
|
|
@@ -953,6 +987,39 @@ var FORM$e = {
|
|
|
953
987
|
YES: "Ja",
|
|
954
988
|
NO: "Nej"
|
|
955
989
|
};
|
|
990
|
+
var AGENT_ENTRIES$e = {
|
|
991
|
+
TITLE: "Bookinger",
|
|
992
|
+
MY_BOOKINGS: "Mine bookinger",
|
|
993
|
+
NUMBER: "Nummer",
|
|
994
|
+
DEPARTURE_DATE: "Afrejsedato",
|
|
995
|
+
STATUS: "Status",
|
|
996
|
+
CUSTOM_STATUS: "Tilpasset status",
|
|
997
|
+
RETURN_DATE: "Hjemrejsedato",
|
|
998
|
+
PROFIT: "Fortjeneste",
|
|
999
|
+
NETTO_SELLING_PRICE: "Netto salgspris",
|
|
1000
|
+
YOUR_SURCHARGE: "Dit tillæg",
|
|
1001
|
+
CREATED: "Oprettet",
|
|
1002
|
+
CONTACT: "Kontakt",
|
|
1003
|
+
MAIN_BOOKER: "Hovedbooker",
|
|
1004
|
+
PRODUCT: "Produkt",
|
|
1005
|
+
TRAVELERS: "Rejsende",
|
|
1006
|
+
ACTIONS: "Handlinger",
|
|
1007
|
+
DETAILS: "Detaljer",
|
|
1008
|
+
HIDE_DETAILS: "Skjul detaljer",
|
|
1009
|
+
PRINTS: "Udskrifter",
|
|
1010
|
+
ALL: "Alle",
|
|
1011
|
+
X_ITEMS: "{0} elementer",
|
|
1012
|
+
PAGE_SIZE: "Elementer pr. side",
|
|
1013
|
+
PREVIOUS: "Forrige",
|
|
1014
|
+
NEXT: "Næste",
|
|
1015
|
+
PAGE_X_OF_Y: "Side {0} af {1}",
|
|
1016
|
+
LOADING: "Indlæser...",
|
|
1017
|
+
NO_ITEMS: "Ingen bookinger fundet.",
|
|
1018
|
+
ERROR: "Der opstod en fejl under indlæsning af dine bookinger.",
|
|
1019
|
+
PRINT_ERROR: "Udskrivning mislykkedes, prøv igen.",
|
|
1020
|
+
NOT_LOGGED_IN: "Log ind som agent for at se dine bookinger.",
|
|
1021
|
+
SESSION_EXPIRED: "Din session er udløbet, log ind igen."
|
|
1022
|
+
};
|
|
956
1023
|
var daJson = {
|
|
957
1024
|
STEPS: STEPS$e,
|
|
958
1025
|
INPUT: INPUT$e,
|
|
@@ -973,7 +1040,8 @@ var daJson = {
|
|
|
973
1040
|
QSM: QSM$f,
|
|
974
1041
|
SRP: SRP$e,
|
|
975
1042
|
ITINERARY: ITINERARY$e,
|
|
976
|
-
FORM: FORM$e
|
|
1043
|
+
FORM: FORM$e,
|
|
1044
|
+
AGENT_ENTRIES: AGENT_ENTRIES$e
|
|
977
1045
|
};
|
|
978
1046
|
|
|
979
1047
|
var STEPS$d = {
|
|
@@ -1426,6 +1494,39 @@ var FORM$d = {
|
|
|
1426
1494
|
YES: "Ja",
|
|
1427
1495
|
NO: "Nein"
|
|
1428
1496
|
};
|
|
1497
|
+
var AGENT_ENTRIES$d = {
|
|
1498
|
+
TITLE: "Buchungen",
|
|
1499
|
+
MY_BOOKINGS: "Meine Buchungen",
|
|
1500
|
+
NUMBER: "Nummer",
|
|
1501
|
+
DEPARTURE_DATE: "Abreisedatum",
|
|
1502
|
+
STATUS: "Status",
|
|
1503
|
+
CUSTOM_STATUS: "Benutzerdefinierter Status",
|
|
1504
|
+
RETURN_DATE: "Rückreisedatum",
|
|
1505
|
+
PROFIT: "Gewinn",
|
|
1506
|
+
NETTO_SELLING_PRICE: "Netto-Verkaufspreis",
|
|
1507
|
+
YOUR_SURCHARGE: "Ihr Aufschlag",
|
|
1508
|
+
CREATED: "Erstellt",
|
|
1509
|
+
CONTACT: "Kontakt",
|
|
1510
|
+
MAIN_BOOKER: "Hauptbucher",
|
|
1511
|
+
PRODUCT: "Produkt",
|
|
1512
|
+
TRAVELERS: "Reisende",
|
|
1513
|
+
ACTIONS: "Aktionen",
|
|
1514
|
+
DETAILS: "Details",
|
|
1515
|
+
HIDE_DETAILS: "Details ausblenden",
|
|
1516
|
+
PRINTS: "Drucke",
|
|
1517
|
+
ALL: "Alle",
|
|
1518
|
+
X_ITEMS: "{0} Einträge",
|
|
1519
|
+
PAGE_SIZE: "Einträge pro Seite",
|
|
1520
|
+
PREVIOUS: "Zurück",
|
|
1521
|
+
NEXT: "Weiter",
|
|
1522
|
+
PAGE_X_OF_Y: "Seite {0} von {1}",
|
|
1523
|
+
LOADING: "Wird geladen...",
|
|
1524
|
+
NO_ITEMS: "Keine Buchungen gefunden.",
|
|
1525
|
+
ERROR: "Beim Laden Ihrer Buchungen ist ein Fehler aufgetreten.",
|
|
1526
|
+
PRINT_ERROR: "Drucken fehlgeschlagen, bitte versuchen Sie es erneut.",
|
|
1527
|
+
NOT_LOGGED_IN: "Melden Sie sich als Agent an, um Ihre Buchungen zu sehen.",
|
|
1528
|
+
SESSION_EXPIRED: "Ihre Sitzung ist abgelaufen, bitte melden Sie sich erneut an."
|
|
1529
|
+
};
|
|
1429
1530
|
var deJson = {
|
|
1430
1531
|
STEPS: STEPS$d,
|
|
1431
1532
|
INPUT: INPUT$d,
|
|
@@ -1446,7 +1547,8 @@ var deJson = {
|
|
|
1446
1547
|
QSM: QSM$e,
|
|
1447
1548
|
SRP: SRP$d,
|
|
1448
1549
|
ITINERARY: ITINERARY$d,
|
|
1449
|
-
FORM: FORM$d
|
|
1550
|
+
FORM: FORM$d,
|
|
1551
|
+
AGENT_ENTRIES: AGENT_ENTRIES$d
|
|
1450
1552
|
};
|
|
1451
1553
|
|
|
1452
1554
|
var STEPS$c = {
|
|
@@ -1903,6 +2005,39 @@ var FORM$c = {
|
|
|
1903
2005
|
YES: "Yes",
|
|
1904
2006
|
NO: "No"
|
|
1905
2007
|
};
|
|
2008
|
+
var AGENT_ENTRIES$c = {
|
|
2009
|
+
TITLE: "Bookings",
|
|
2010
|
+
MY_BOOKINGS: "My bookings",
|
|
2011
|
+
NUMBER: "Number",
|
|
2012
|
+
DEPARTURE_DATE: "Departure date",
|
|
2013
|
+
STATUS: "Status",
|
|
2014
|
+
CUSTOM_STATUS: "Custom status",
|
|
2015
|
+
RETURN_DATE: "Return date",
|
|
2016
|
+
PROFIT: "Profit",
|
|
2017
|
+
NETTO_SELLING_PRICE: "Netto selling price",
|
|
2018
|
+
YOUR_SURCHARGE: "Your surcharge",
|
|
2019
|
+
CREATED: "Created",
|
|
2020
|
+
CONTACT: "Contact",
|
|
2021
|
+
MAIN_BOOKER: "Main booker",
|
|
2022
|
+
PRODUCT: "Product",
|
|
2023
|
+
TRAVELERS: "Travellers",
|
|
2024
|
+
ACTIONS: "Actions",
|
|
2025
|
+
DETAILS: "Details",
|
|
2026
|
+
HIDE_DETAILS: "Hide details",
|
|
2027
|
+
PRINTS: "Prints",
|
|
2028
|
+
ALL: "All",
|
|
2029
|
+
X_ITEMS: "{0} items",
|
|
2030
|
+
PAGE_SIZE: "Items per page",
|
|
2031
|
+
PREVIOUS: "Previous",
|
|
2032
|
+
NEXT: "Next",
|
|
2033
|
+
PAGE_X_OF_Y: "Page {0} of {1}",
|
|
2034
|
+
LOADING: "Loading...",
|
|
2035
|
+
NO_ITEMS: "No bookings found.",
|
|
2036
|
+
ERROR: "Something went wrong while loading your bookings.",
|
|
2037
|
+
PRINT_ERROR: "Printing failed, please try again.",
|
|
2038
|
+
NOT_LOGGED_IN: "Log in as an agent to see your bookings.",
|
|
2039
|
+
SESSION_EXPIRED: "Your session has expired, please log in again."
|
|
2040
|
+
};
|
|
1906
2041
|
var enJson = {
|
|
1907
2042
|
STEPS: STEPS$c,
|
|
1908
2043
|
INPUT: INPUT$c,
|
|
@@ -1923,7 +2058,8 @@ var enJson = {
|
|
|
1923
2058
|
QSM: QSM$d,
|
|
1924
2059
|
SRP: SRP$c,
|
|
1925
2060
|
ITINERARY: ITINERARY$c,
|
|
1926
|
-
FORM: FORM$c
|
|
2061
|
+
FORM: FORM$c,
|
|
2062
|
+
AGENT_ENTRIES: AGENT_ENTRIES$c
|
|
1927
2063
|
};
|
|
1928
2064
|
|
|
1929
2065
|
var STEPS$b = {
|
|
@@ -2376,6 +2512,39 @@ var FORM$b = {
|
|
|
2376
2512
|
YES: "Sí",
|
|
2377
2513
|
NO: "No"
|
|
2378
2514
|
};
|
|
2515
|
+
var AGENT_ENTRIES$b = {
|
|
2516
|
+
TITLE: "Reservas",
|
|
2517
|
+
MY_BOOKINGS: "Mis reservas",
|
|
2518
|
+
NUMBER: "Número",
|
|
2519
|
+
DEPARTURE_DATE: "Fecha de salida",
|
|
2520
|
+
STATUS: "Estado",
|
|
2521
|
+
CUSTOM_STATUS: "Estado personalizado",
|
|
2522
|
+
RETURN_DATE: "Fecha de regreso",
|
|
2523
|
+
PROFIT: "Beneficio",
|
|
2524
|
+
NETTO_SELLING_PRICE: "Precio de venta neto",
|
|
2525
|
+
YOUR_SURCHARGE: "Su recargo",
|
|
2526
|
+
CREATED: "Creado",
|
|
2527
|
+
CONTACT: "Contacto",
|
|
2528
|
+
MAIN_BOOKER: "Titular de la reserva",
|
|
2529
|
+
PRODUCT: "Producto",
|
|
2530
|
+
TRAVELERS: "Viajeros",
|
|
2531
|
+
ACTIONS: "Acciones",
|
|
2532
|
+
DETAILS: "Detalles",
|
|
2533
|
+
HIDE_DETAILS: "Ocultar detalles",
|
|
2534
|
+
PRINTS: "Impresiones",
|
|
2535
|
+
ALL: "Todos",
|
|
2536
|
+
X_ITEMS: "{0} elementos",
|
|
2537
|
+
PAGE_SIZE: "Elementos por página",
|
|
2538
|
+
PREVIOUS: "Anterior",
|
|
2539
|
+
NEXT: "Siguiente",
|
|
2540
|
+
PAGE_X_OF_Y: "Página {0} de {1}",
|
|
2541
|
+
LOADING: "Cargando...",
|
|
2542
|
+
NO_ITEMS: "No se encontraron reservas.",
|
|
2543
|
+
ERROR: "Se produjo un error al cargar sus reservas.",
|
|
2544
|
+
PRINT_ERROR: "La impresión ha fallado, inténtelo de nuevo.",
|
|
2545
|
+
NOT_LOGGED_IN: "Inicie sesión como agente para ver sus reservas.",
|
|
2546
|
+
SESSION_EXPIRED: "Su sesión ha caducado, inicie sesión de nuevo."
|
|
2547
|
+
};
|
|
2379
2548
|
var esJson = {
|
|
2380
2549
|
STEPS: STEPS$b,
|
|
2381
2550
|
INPUT: INPUT$b,
|
|
@@ -2396,7 +2565,8 @@ var esJson = {
|
|
|
2396
2565
|
QSM: QSM$c,
|
|
2397
2566
|
SRP: SRP$b,
|
|
2398
2567
|
ITINERARY: ITINERARY$b,
|
|
2399
|
-
FORM: FORM$b
|
|
2568
|
+
FORM: FORM$b,
|
|
2569
|
+
AGENT_ENTRIES: AGENT_ENTRIES$b
|
|
2400
2570
|
};
|
|
2401
2571
|
|
|
2402
2572
|
var STEPS$a = {
|
|
@@ -2853,6 +3023,39 @@ var FORM$a = {
|
|
|
2853
3023
|
YES: "Oui",
|
|
2854
3024
|
NO: "Non"
|
|
2855
3025
|
};
|
|
3026
|
+
var AGENT_ENTRIES$a = {
|
|
3027
|
+
TITLE: "Réservations",
|
|
3028
|
+
MY_BOOKINGS: "Mes réservations",
|
|
3029
|
+
NUMBER: "Numéro",
|
|
3030
|
+
DEPARTURE_DATE: "Date de départ",
|
|
3031
|
+
STATUS: "Statut",
|
|
3032
|
+
CUSTOM_STATUS: "Statut personnalisé",
|
|
3033
|
+
RETURN_DATE: "Date de retour",
|
|
3034
|
+
PROFIT: "Bénéfice",
|
|
3035
|
+
NETTO_SELLING_PRICE: "Prix de vente net",
|
|
3036
|
+
YOUR_SURCHARGE: "Votre supplément",
|
|
3037
|
+
CREATED: "Créé le",
|
|
3038
|
+
CONTACT: "Contact",
|
|
3039
|
+
MAIN_BOOKER: "Réservant principal",
|
|
3040
|
+
PRODUCT: "Produit",
|
|
3041
|
+
TRAVELERS: "Voyageurs",
|
|
3042
|
+
ACTIONS: "Actions",
|
|
3043
|
+
DETAILS: "Détails",
|
|
3044
|
+
HIDE_DETAILS: "Masquer les détails",
|
|
3045
|
+
PRINTS: "Impressions",
|
|
3046
|
+
ALL: "Tous",
|
|
3047
|
+
X_ITEMS: "{0} éléments",
|
|
3048
|
+
PAGE_SIZE: "Éléments par page",
|
|
3049
|
+
PREVIOUS: "Précédent",
|
|
3050
|
+
NEXT: "Suivant",
|
|
3051
|
+
PAGE_X_OF_Y: "Page {0} sur {1}",
|
|
3052
|
+
LOADING: "Chargement...",
|
|
3053
|
+
NO_ITEMS: "Aucune réservation trouvée.",
|
|
3054
|
+
ERROR: "Une erreur est survenue lors du chargement de vos réservations.",
|
|
3055
|
+
PRINT_ERROR: "L'impression a échoué, veuillez réessayer.",
|
|
3056
|
+
NOT_LOGGED_IN: "Connectez-vous en tant qu'agent pour voir vos réservations.",
|
|
3057
|
+
SESSION_EXPIRED: "Votre session a expiré, veuillez vous reconnecter."
|
|
3058
|
+
};
|
|
2856
3059
|
var frBeJson = {
|
|
2857
3060
|
STEPS: STEPS$a,
|
|
2858
3061
|
INPUT: INPUT$a,
|
|
@@ -2873,7 +3076,8 @@ var frBeJson = {
|
|
|
2873
3076
|
QSM: QSM$b,
|
|
2874
3077
|
SRP: SRP$a,
|
|
2875
3078
|
ITINERARY: ITINERARY$a,
|
|
2876
|
-
FORM: FORM$a
|
|
3079
|
+
FORM: FORM$a,
|
|
3080
|
+
AGENT_ENTRIES: AGENT_ENTRIES$a
|
|
2877
3081
|
};
|
|
2878
3082
|
|
|
2879
3083
|
var STEPS$9 = {
|
|
@@ -3326,6 +3530,39 @@ var FORM$9 = {
|
|
|
3326
3530
|
YES: "Oui",
|
|
3327
3531
|
NO: "Non"
|
|
3328
3532
|
};
|
|
3533
|
+
var AGENT_ENTRIES$9 = {
|
|
3534
|
+
TITLE: "Réservations",
|
|
3535
|
+
MY_BOOKINGS: "Mes réservations",
|
|
3536
|
+
NUMBER: "Numéro",
|
|
3537
|
+
DEPARTURE_DATE: "Date de départ",
|
|
3538
|
+
STATUS: "Statut",
|
|
3539
|
+
CUSTOM_STATUS: "Statut personnalisé",
|
|
3540
|
+
RETURN_DATE: "Date de retour",
|
|
3541
|
+
PROFIT: "Bénéfice",
|
|
3542
|
+
NETTO_SELLING_PRICE: "Prix de vente net",
|
|
3543
|
+
YOUR_SURCHARGE: "Votre supplément",
|
|
3544
|
+
CREATED: "Créé le",
|
|
3545
|
+
CONTACT: "Contact",
|
|
3546
|
+
MAIN_BOOKER: "Réservant principal",
|
|
3547
|
+
PRODUCT: "Produit",
|
|
3548
|
+
TRAVELERS: "Voyageurs",
|
|
3549
|
+
ACTIONS: "Actions",
|
|
3550
|
+
DETAILS: "Détails",
|
|
3551
|
+
HIDE_DETAILS: "Masquer les détails",
|
|
3552
|
+
PRINTS: "Impressions",
|
|
3553
|
+
ALL: "Tous",
|
|
3554
|
+
X_ITEMS: "{0} éléments",
|
|
3555
|
+
PAGE_SIZE: "Éléments par page",
|
|
3556
|
+
PREVIOUS: "Précédent",
|
|
3557
|
+
NEXT: "Suivant",
|
|
3558
|
+
PAGE_X_OF_Y: "Page {0} sur {1}",
|
|
3559
|
+
LOADING: "Chargement...",
|
|
3560
|
+
NO_ITEMS: "Aucune réservation trouvée.",
|
|
3561
|
+
ERROR: "Une erreur est survenue lors du chargement de vos réservations.",
|
|
3562
|
+
PRINT_ERROR: "L'impression a échoué, veuillez réessayer.",
|
|
3563
|
+
NOT_LOGGED_IN: "Connectez-vous en tant qu'agent pour voir vos réservations.",
|
|
3564
|
+
SESSION_EXPIRED: "Votre session a expiré, veuillez vous reconnecter."
|
|
3565
|
+
};
|
|
3329
3566
|
var frFrJson = {
|
|
3330
3567
|
STEPS: STEPS$9,
|
|
3331
3568
|
INPUT: INPUT$9,
|
|
@@ -3346,7 +3583,8 @@ var frFrJson = {
|
|
|
3346
3583
|
QSM: QSM$a,
|
|
3347
3584
|
SRP: SRP$9,
|
|
3348
3585
|
ITINERARY: ITINERARY$9,
|
|
3349
|
-
FORM: FORM$9
|
|
3586
|
+
FORM: FORM$9,
|
|
3587
|
+
AGENT_ENTRIES: AGENT_ENTRIES$9
|
|
3350
3588
|
};
|
|
3351
3589
|
|
|
3352
3590
|
var STEPS$8 = {
|
|
@@ -3799,6 +4037,39 @@ var FORM$8 = {
|
|
|
3799
4037
|
YES: "Já",
|
|
3800
4038
|
NO: "Nei"
|
|
3801
4039
|
};
|
|
4040
|
+
var AGENT_ENTRIES$8 = {
|
|
4041
|
+
TITLE: "Bókanir",
|
|
4042
|
+
MY_BOOKINGS: "Mínar bókanir",
|
|
4043
|
+
NUMBER: "Númer",
|
|
4044
|
+
DEPARTURE_DATE: "Brottfarardagur",
|
|
4045
|
+
STATUS: "Staða",
|
|
4046
|
+
CUSTOM_STATUS: "Sérsniðin staða",
|
|
4047
|
+
RETURN_DATE: "Heimkomudagur",
|
|
4048
|
+
PROFIT: "Hagnaður",
|
|
4049
|
+
NETTO_SELLING_PRICE: "Nettó söluverð",
|
|
4050
|
+
YOUR_SURCHARGE: "Þitt álag",
|
|
4051
|
+
CREATED: "Stofnað",
|
|
4052
|
+
CONTACT: "Tengiliður",
|
|
4053
|
+
MAIN_BOOKER: "Aðalbókandi",
|
|
4054
|
+
PRODUCT: "Vara",
|
|
4055
|
+
TRAVELERS: "Ferðalangar",
|
|
4056
|
+
ACTIONS: "Aðgerðir",
|
|
4057
|
+
DETAILS: "Nánar",
|
|
4058
|
+
HIDE_DETAILS: "Fela nánar",
|
|
4059
|
+
PRINTS: "Útprentanir",
|
|
4060
|
+
ALL: "Allt",
|
|
4061
|
+
X_ITEMS: "{0} atriði",
|
|
4062
|
+
PAGE_SIZE: "Atriði á síðu",
|
|
4063
|
+
PREVIOUS: "Fyrri",
|
|
4064
|
+
NEXT: "Næsta",
|
|
4065
|
+
PAGE_X_OF_Y: "Síða {0} af {1}",
|
|
4066
|
+
LOADING: "Hleður...",
|
|
4067
|
+
NO_ITEMS: "Engar bókanir fundust.",
|
|
4068
|
+
ERROR: "Eitthvað fór úrskeiðis við að hlaða bókunum þínum.",
|
|
4069
|
+
PRINT_ERROR: "Prentun mistókst, reyndu aftur.",
|
|
4070
|
+
NOT_LOGGED_IN: "Skráðu þig inn sem umboðsaðili til að sjá bókanir þínar.",
|
|
4071
|
+
SESSION_EXPIRED: "Lotan þín er útrunnin, skráðu þig inn aftur."
|
|
4072
|
+
};
|
|
3802
4073
|
var isJson = {
|
|
3803
4074
|
STEPS: STEPS$8,
|
|
3804
4075
|
INPUT: INPUT$8,
|
|
@@ -3819,7 +4090,8 @@ var isJson = {
|
|
|
3819
4090
|
QSM: QSM$9,
|
|
3820
4091
|
SRP: SRP$8,
|
|
3821
4092
|
ITINERARY: ITINERARY$8,
|
|
3822
|
-
FORM: FORM$8
|
|
4093
|
+
FORM: FORM$8,
|
|
4094
|
+
AGENT_ENTRIES: AGENT_ENTRIES$8
|
|
3823
4095
|
};
|
|
3824
4096
|
|
|
3825
4097
|
var STEPS$7 = {
|
|
@@ -4272,6 +4544,39 @@ var FORM$7 = {
|
|
|
4272
4544
|
YES: "Sì",
|
|
4273
4545
|
NO: "No"
|
|
4274
4546
|
};
|
|
4547
|
+
var AGENT_ENTRIES$7 = {
|
|
4548
|
+
TITLE: "Prenotazioni",
|
|
4549
|
+
MY_BOOKINGS: "Le mie prenotazioni",
|
|
4550
|
+
NUMBER: "Numero",
|
|
4551
|
+
DEPARTURE_DATE: "Data di partenza",
|
|
4552
|
+
STATUS: "Stato",
|
|
4553
|
+
CUSTOM_STATUS: "Stato personalizzato",
|
|
4554
|
+
RETURN_DATE: "Data di ritorno",
|
|
4555
|
+
PROFIT: "Profitto",
|
|
4556
|
+
NETTO_SELLING_PRICE: "Prezzo di vendita netto",
|
|
4557
|
+
YOUR_SURCHARGE: "Il tuo supplemento",
|
|
4558
|
+
CREATED: "Creato",
|
|
4559
|
+
CONTACT: "Contatto",
|
|
4560
|
+
MAIN_BOOKER: "Prenotante principale",
|
|
4561
|
+
PRODUCT: "Prodotto",
|
|
4562
|
+
TRAVELERS: "Viaggiatori",
|
|
4563
|
+
ACTIONS: "Azioni",
|
|
4564
|
+
DETAILS: "Dettagli",
|
|
4565
|
+
HIDE_DETAILS: "Nascondi dettagli",
|
|
4566
|
+
PRINTS: "Stampe",
|
|
4567
|
+
ALL: "Tutti",
|
|
4568
|
+
X_ITEMS: "{0} elementi",
|
|
4569
|
+
PAGE_SIZE: "Elementi per pagina",
|
|
4570
|
+
PREVIOUS: "Precedente",
|
|
4571
|
+
NEXT: "Successivo",
|
|
4572
|
+
PAGE_X_OF_Y: "Pagina {0} di {1}",
|
|
4573
|
+
LOADING: "Caricamento...",
|
|
4574
|
+
NO_ITEMS: "Nessuna prenotazione trovata.",
|
|
4575
|
+
ERROR: "Si è verificato un errore durante il caricamento delle prenotazioni.",
|
|
4576
|
+
PRINT_ERROR: "Stampa non riuscita, riprova.",
|
|
4577
|
+
NOT_LOGGED_IN: "Accedi come agente per vedere le tue prenotazioni.",
|
|
4578
|
+
SESSION_EXPIRED: "La sessione è scaduta, accedi di nuovo."
|
|
4579
|
+
};
|
|
4275
4580
|
var itJson = {
|
|
4276
4581
|
STEPS: STEPS$7,
|
|
4277
4582
|
INPUT: INPUT$7,
|
|
@@ -4292,7 +4597,8 @@ var itJson = {
|
|
|
4292
4597
|
QSM: QSM$8,
|
|
4293
4598
|
SRP: SRP$7,
|
|
4294
4599
|
ITINERARY: ITINERARY$7,
|
|
4295
|
-
FORM: FORM$7
|
|
4600
|
+
FORM: FORM$7,
|
|
4601
|
+
AGENT_ENTRIES: AGENT_ENTRIES$7
|
|
4296
4602
|
};
|
|
4297
4603
|
|
|
4298
4604
|
var STEPS$6 = {
|
|
@@ -4749,6 +5055,39 @@ var FORM$6 = {
|
|
|
4749
5055
|
YES: "Ja",
|
|
4750
5056
|
NO: "Nee"
|
|
4751
5057
|
};
|
|
5058
|
+
var AGENT_ENTRIES$6 = {
|
|
5059
|
+
TITLE: "Boekingen",
|
|
5060
|
+
MY_BOOKINGS: "Mijn boekingen",
|
|
5061
|
+
NUMBER: "Nummer",
|
|
5062
|
+
DEPARTURE_DATE: "Vertrekdatum",
|
|
5063
|
+
STATUS: "Status",
|
|
5064
|
+
CUSTOM_STATUS: "Aangepaste status",
|
|
5065
|
+
RETURN_DATE: "Terugkeerdatum",
|
|
5066
|
+
PROFIT: "Winst",
|
|
5067
|
+
NETTO_SELLING_PRICE: "Netto verkoopprijs",
|
|
5068
|
+
YOUR_SURCHARGE: "Jouw toeslag",
|
|
5069
|
+
CREATED: "Aangemaakt",
|
|
5070
|
+
CONTACT: "Contact",
|
|
5071
|
+
MAIN_BOOKER: "Hoofdboeker",
|
|
5072
|
+
PRODUCT: "Product",
|
|
5073
|
+
TRAVELERS: "Reizigers",
|
|
5074
|
+
ACTIONS: "Acties",
|
|
5075
|
+
DETAILS: "Details",
|
|
5076
|
+
HIDE_DETAILS: "Details verbergen",
|
|
5077
|
+
PRINTS: "Afdrukken",
|
|
5078
|
+
ALL: "Alle",
|
|
5079
|
+
X_ITEMS: "{0} items",
|
|
5080
|
+
PAGE_SIZE: "Items per pagina",
|
|
5081
|
+
PREVIOUS: "Vorige",
|
|
5082
|
+
NEXT: "Volgende",
|
|
5083
|
+
PAGE_X_OF_Y: "Pagina {0} van {1}",
|
|
5084
|
+
LOADING: "Laden...",
|
|
5085
|
+
NO_ITEMS: "Geen boekingen gevonden.",
|
|
5086
|
+
ERROR: "Er ging iets mis bij het laden van je boekingen.",
|
|
5087
|
+
PRINT_ERROR: "Afdrukken mislukt, probeer het opnieuw.",
|
|
5088
|
+
NOT_LOGGED_IN: "Log in als agent om je boekingen te zien.",
|
|
5089
|
+
SESSION_EXPIRED: "Je sessie is verlopen, log opnieuw in."
|
|
5090
|
+
};
|
|
4752
5091
|
var nlBeJson = {
|
|
4753
5092
|
STEPS: STEPS$6,
|
|
4754
5093
|
INPUT: INPUT$6,
|
|
@@ -4769,7 +5108,8 @@ var nlBeJson = {
|
|
|
4769
5108
|
QSM: QSM$7,
|
|
4770
5109
|
SRP: SRP$6,
|
|
4771
5110
|
ITINERARY: ITINERARY$6,
|
|
4772
|
-
FORM: FORM$6
|
|
5111
|
+
FORM: FORM$6,
|
|
5112
|
+
AGENT_ENTRIES: AGENT_ENTRIES$6
|
|
4773
5113
|
};
|
|
4774
5114
|
|
|
4775
5115
|
var STEPS$5 = {
|
|
@@ -5222,6 +5562,39 @@ var FORM$5 = {
|
|
|
5222
5562
|
YES: "Ja",
|
|
5223
5563
|
NO: "Nee"
|
|
5224
5564
|
};
|
|
5565
|
+
var AGENT_ENTRIES$5 = {
|
|
5566
|
+
TITLE: "Boekingen",
|
|
5567
|
+
MY_BOOKINGS: "Mijn boekingen",
|
|
5568
|
+
NUMBER: "Nummer",
|
|
5569
|
+
DEPARTURE_DATE: "Vertrekdatum",
|
|
5570
|
+
STATUS: "Status",
|
|
5571
|
+
CUSTOM_STATUS: "Aangepaste status",
|
|
5572
|
+
RETURN_DATE: "Terugkeerdatum",
|
|
5573
|
+
PROFIT: "Winst",
|
|
5574
|
+
NETTO_SELLING_PRICE: "Netto verkoopprijs",
|
|
5575
|
+
YOUR_SURCHARGE: "Jouw toeslag",
|
|
5576
|
+
CREATED: "Aangemaakt",
|
|
5577
|
+
CONTACT: "Contact",
|
|
5578
|
+
MAIN_BOOKER: "Hoofdboeker",
|
|
5579
|
+
PRODUCT: "Product",
|
|
5580
|
+
TRAVELERS: "Reizigers",
|
|
5581
|
+
ACTIONS: "Acties",
|
|
5582
|
+
DETAILS: "Details",
|
|
5583
|
+
HIDE_DETAILS: "Details verbergen",
|
|
5584
|
+
PRINTS: "Afdrukken",
|
|
5585
|
+
ALL: "Alle",
|
|
5586
|
+
X_ITEMS: "{0} items",
|
|
5587
|
+
PAGE_SIZE: "Items per pagina",
|
|
5588
|
+
PREVIOUS: "Vorige",
|
|
5589
|
+
NEXT: "Volgende",
|
|
5590
|
+
PAGE_X_OF_Y: "Pagina {0} van {1}",
|
|
5591
|
+
LOADING: "Laden...",
|
|
5592
|
+
NO_ITEMS: "Geen boekingen gevonden.",
|
|
5593
|
+
ERROR: "Er ging iets mis bij het laden van je boekingen.",
|
|
5594
|
+
PRINT_ERROR: "Afdrukken mislukt, probeer het opnieuw.",
|
|
5595
|
+
NOT_LOGGED_IN: "Log in als agent om je boekingen te zien.",
|
|
5596
|
+
SESSION_EXPIRED: "Je sessie is verlopen, log opnieuw in."
|
|
5597
|
+
};
|
|
5225
5598
|
var nlNlJson = {
|
|
5226
5599
|
STEPS: STEPS$5,
|
|
5227
5600
|
INPUT: INPUT$5,
|
|
@@ -5242,7 +5615,8 @@ var nlNlJson = {
|
|
|
5242
5615
|
QSM: QSM$6,
|
|
5243
5616
|
SRP: SRP$5,
|
|
5244
5617
|
ITINERARY: ITINERARY$5,
|
|
5245
|
-
FORM: FORM$5
|
|
5618
|
+
FORM: FORM$5,
|
|
5619
|
+
AGENT_ENTRIES: AGENT_ENTRIES$5
|
|
5246
5620
|
};
|
|
5247
5621
|
|
|
5248
5622
|
var STEPS$4 = {
|
|
@@ -5695,6 +6069,39 @@ var FORM$4 = {
|
|
|
5695
6069
|
YES: "Ja",
|
|
5696
6070
|
NO: "Nei"
|
|
5697
6071
|
};
|
|
6072
|
+
var AGENT_ENTRIES$4 = {
|
|
6073
|
+
TITLE: "Bestillinger",
|
|
6074
|
+
MY_BOOKINGS: "Mine bestillinger",
|
|
6075
|
+
NUMBER: "Nummer",
|
|
6076
|
+
DEPARTURE_DATE: "Avreisedato",
|
|
6077
|
+
STATUS: "Status",
|
|
6078
|
+
CUSTOM_STATUS: "Egendefinert status",
|
|
6079
|
+
RETURN_DATE: "Returdato",
|
|
6080
|
+
PROFIT: "Fortjeneste",
|
|
6081
|
+
NETTO_SELLING_PRICE: "Netto salgspris",
|
|
6082
|
+
YOUR_SURCHARGE: "Ditt tillegg",
|
|
6083
|
+
CREATED: "Opprettet",
|
|
6084
|
+
CONTACT: "Kontakt",
|
|
6085
|
+
MAIN_BOOKER: "Hovedbestiller",
|
|
6086
|
+
PRODUCT: "Produkt",
|
|
6087
|
+
TRAVELERS: "Reisende",
|
|
6088
|
+
ACTIONS: "Handlinger",
|
|
6089
|
+
DETAILS: "Detaljer",
|
|
6090
|
+
HIDE_DETAILS: "Skjul detaljer",
|
|
6091
|
+
PRINTS: "Utskrifter",
|
|
6092
|
+
ALL: "Alle",
|
|
6093
|
+
X_ITEMS: "{0} elementer",
|
|
6094
|
+
PAGE_SIZE: "Elementer per side",
|
|
6095
|
+
PREVIOUS: "Forrige",
|
|
6096
|
+
NEXT: "Neste",
|
|
6097
|
+
PAGE_X_OF_Y: "Side {0} av {1}",
|
|
6098
|
+
LOADING: "Laster...",
|
|
6099
|
+
NO_ITEMS: "Ingen bestillinger funnet.",
|
|
6100
|
+
ERROR: "Noe gikk galt under lasting av bestillingene dine.",
|
|
6101
|
+
PRINT_ERROR: "Utskrift mislyktes, prøv igjen.",
|
|
6102
|
+
NOT_LOGGED_IN: "Logg inn som agent for å se bestillingene dine.",
|
|
6103
|
+
SESSION_EXPIRED: "Økten din er utløpt, logg inn på nytt."
|
|
6104
|
+
};
|
|
5698
6105
|
var noJson = {
|
|
5699
6106
|
STEPS: STEPS$4,
|
|
5700
6107
|
INPUT: INPUT$4,
|
|
@@ -5715,7 +6122,8 @@ var noJson = {
|
|
|
5715
6122
|
QSM: QSM$5,
|
|
5716
6123
|
SRP: SRP$4,
|
|
5717
6124
|
ITINERARY: ITINERARY$4,
|
|
5718
|
-
FORM: FORM$4
|
|
6125
|
+
FORM: FORM$4,
|
|
6126
|
+
AGENT_ENTRIES: AGENT_ENTRIES$4
|
|
5719
6127
|
};
|
|
5720
6128
|
|
|
5721
6129
|
var STEPS$3 = {
|
|
@@ -6168,6 +6576,39 @@ var FORM$3 = {
|
|
|
6168
6576
|
YES: "Tak",
|
|
6169
6577
|
NO: "Nie"
|
|
6170
6578
|
};
|
|
6579
|
+
var AGENT_ENTRIES$3 = {
|
|
6580
|
+
TITLE: "Rezerwacje",
|
|
6581
|
+
MY_BOOKINGS: "Moje rezerwacje",
|
|
6582
|
+
NUMBER: "Numer",
|
|
6583
|
+
DEPARTURE_DATE: "Data wyjazdu",
|
|
6584
|
+
STATUS: "Status",
|
|
6585
|
+
CUSTOM_STATUS: "Status niestandardowy",
|
|
6586
|
+
RETURN_DATE: "Data powrotu",
|
|
6587
|
+
PROFIT: "Zysk",
|
|
6588
|
+
NETTO_SELLING_PRICE: "Cena sprzedaży netto",
|
|
6589
|
+
YOUR_SURCHARGE: "Twoja dopłata",
|
|
6590
|
+
CREATED: "Utworzono",
|
|
6591
|
+
CONTACT: "Kontakt",
|
|
6592
|
+
MAIN_BOOKER: "Główny rezerwujący",
|
|
6593
|
+
PRODUCT: "Produkt",
|
|
6594
|
+
TRAVELERS: "Podróżni",
|
|
6595
|
+
ACTIONS: "Akcje",
|
|
6596
|
+
DETAILS: "Szczegóły",
|
|
6597
|
+
HIDE_DETAILS: "Ukryj szczegóły",
|
|
6598
|
+
PRINTS: "Wydruki",
|
|
6599
|
+
ALL: "Wszystkie",
|
|
6600
|
+
X_ITEMS: "{0} pozycji",
|
|
6601
|
+
PAGE_SIZE: "Pozycji na stronę",
|
|
6602
|
+
PREVIOUS: "Poprzednia",
|
|
6603
|
+
NEXT: "Następna",
|
|
6604
|
+
PAGE_X_OF_Y: "Strona {0} z {1}",
|
|
6605
|
+
LOADING: "Ładowanie...",
|
|
6606
|
+
NO_ITEMS: "Nie znaleziono rezerwacji.",
|
|
6607
|
+
ERROR: "Wystąpił błąd podczas ładowania rezerwacji.",
|
|
6608
|
+
PRINT_ERROR: "Drukowanie nie powiodło się, spróbuj ponownie.",
|
|
6609
|
+
NOT_LOGGED_IN: "Zaloguj się jako agent, aby zobaczyć swoje rezerwacje.",
|
|
6610
|
+
SESSION_EXPIRED: "Twoja sesja wygasła, zaloguj się ponownie."
|
|
6611
|
+
};
|
|
6171
6612
|
var plJson = {
|
|
6172
6613
|
STEPS: STEPS$3,
|
|
6173
6614
|
INPUT: INPUT$3,
|
|
@@ -6188,7 +6629,8 @@ var plJson = {
|
|
|
6188
6629
|
QSM: QSM$4,
|
|
6189
6630
|
SRP: SRP$3,
|
|
6190
6631
|
ITINERARY: ITINERARY$3,
|
|
6191
|
-
FORM: FORM$3
|
|
6632
|
+
FORM: FORM$3,
|
|
6633
|
+
AGENT_ENTRIES: AGENT_ENTRIES$3
|
|
6192
6634
|
};
|
|
6193
6635
|
|
|
6194
6636
|
var STEPS$2 = {
|
|
@@ -6641,6 +7083,39 @@ var FORM$2 = {
|
|
|
6641
7083
|
YES: "Sim",
|
|
6642
7084
|
NO: "Não"
|
|
6643
7085
|
};
|
|
7086
|
+
var AGENT_ENTRIES$2 = {
|
|
7087
|
+
TITLE: "Reservas",
|
|
7088
|
+
MY_BOOKINGS: "As minhas reservas",
|
|
7089
|
+
NUMBER: "Número",
|
|
7090
|
+
DEPARTURE_DATE: "Data de partida",
|
|
7091
|
+
STATUS: "Estado",
|
|
7092
|
+
CUSTOM_STATUS: "Estado personalizado",
|
|
7093
|
+
RETURN_DATE: "Data de regresso",
|
|
7094
|
+
PROFIT: "Lucro",
|
|
7095
|
+
NETTO_SELLING_PRICE: "Preço de venda líquido",
|
|
7096
|
+
YOUR_SURCHARGE: "A sua sobretaxa",
|
|
7097
|
+
CREATED: "Criado",
|
|
7098
|
+
CONTACT: "Contacto",
|
|
7099
|
+
MAIN_BOOKER: "Titular da reserva",
|
|
7100
|
+
PRODUCT: "Produto",
|
|
7101
|
+
TRAVELERS: "Viajantes",
|
|
7102
|
+
ACTIONS: "Ações",
|
|
7103
|
+
DETAILS: "Detalhes",
|
|
7104
|
+
HIDE_DETAILS: "Ocultar detalhes",
|
|
7105
|
+
PRINTS: "Impressões",
|
|
7106
|
+
ALL: "Todos",
|
|
7107
|
+
X_ITEMS: "{0} itens",
|
|
7108
|
+
PAGE_SIZE: "Itens por página",
|
|
7109
|
+
PREVIOUS: "Anterior",
|
|
7110
|
+
NEXT: "Seguinte",
|
|
7111
|
+
PAGE_X_OF_Y: "Página {0} de {1}",
|
|
7112
|
+
LOADING: "A carregar...",
|
|
7113
|
+
NO_ITEMS: "Nenhuma reserva encontrada.",
|
|
7114
|
+
ERROR: "Ocorreu um erro ao carregar as suas reservas.",
|
|
7115
|
+
PRINT_ERROR: "A impressão falhou, tente novamente.",
|
|
7116
|
+
NOT_LOGGED_IN: "Inicie sessão como agente para ver as suas reservas.",
|
|
7117
|
+
SESSION_EXPIRED: "A sua sessão expirou, inicie sessão novamente."
|
|
7118
|
+
};
|
|
6644
7119
|
var ptJson = {
|
|
6645
7120
|
STEPS: STEPS$2,
|
|
6646
7121
|
INPUT: INPUT$2,
|
|
@@ -6661,7 +7136,8 @@ var ptJson = {
|
|
|
6661
7136
|
QSM: QSM$3,
|
|
6662
7137
|
SRP: SRP$2,
|
|
6663
7138
|
ITINERARY: ITINERARY$2,
|
|
6664
|
-
FORM: FORM$2
|
|
7139
|
+
FORM: FORM$2,
|
|
7140
|
+
AGENT_ENTRIES: AGENT_ENTRIES$2
|
|
6665
7141
|
};
|
|
6666
7142
|
|
|
6667
7143
|
var STEPS$1 = {
|
|
@@ -7114,6 +7590,39 @@ var FORM$1 = {
|
|
|
7114
7590
|
YES: "Ja",
|
|
7115
7591
|
NO: "Nej"
|
|
7116
7592
|
};
|
|
7593
|
+
var AGENT_ENTRIES$1 = {
|
|
7594
|
+
TITLE: "Bokningar",
|
|
7595
|
+
MY_BOOKINGS: "Mina bokningar",
|
|
7596
|
+
NUMBER: "Nummer",
|
|
7597
|
+
DEPARTURE_DATE: "Avresedatum",
|
|
7598
|
+
STATUS: "Status",
|
|
7599
|
+
CUSTOM_STATUS: "Anpassad status",
|
|
7600
|
+
RETURN_DATE: "Returdatum",
|
|
7601
|
+
PROFIT: "Vinst",
|
|
7602
|
+
NETTO_SELLING_PRICE: "Nettoförsäljningspris",
|
|
7603
|
+
YOUR_SURCHARGE: "Ditt tillägg",
|
|
7604
|
+
CREATED: "Skapad",
|
|
7605
|
+
CONTACT: "Kontakt",
|
|
7606
|
+
MAIN_BOOKER: "Huvudbokare",
|
|
7607
|
+
PRODUCT: "Produkt",
|
|
7608
|
+
TRAVELERS: "Resenärer",
|
|
7609
|
+
ACTIONS: "Åtgärder",
|
|
7610
|
+
DETAILS: "Detaljer",
|
|
7611
|
+
HIDE_DETAILS: "Dölj detaljer",
|
|
7612
|
+
PRINTS: "Utskrifter",
|
|
7613
|
+
ALL: "Alla",
|
|
7614
|
+
X_ITEMS: "{0} objekt",
|
|
7615
|
+
PAGE_SIZE: "Objekt per sida",
|
|
7616
|
+
PREVIOUS: "Föregående",
|
|
7617
|
+
NEXT: "Nästa",
|
|
7618
|
+
PAGE_X_OF_Y: "Sida {0} av {1}",
|
|
7619
|
+
LOADING: "Laddar...",
|
|
7620
|
+
NO_ITEMS: "Inga bokningar hittades.",
|
|
7621
|
+
ERROR: "Något gick fel när dina bokningar laddades.",
|
|
7622
|
+
PRINT_ERROR: "Utskriften misslyckades, försök igen.",
|
|
7623
|
+
NOT_LOGGED_IN: "Logga in som agent för att se dina bokningar.",
|
|
7624
|
+
SESSION_EXPIRED: "Din session har gått ut, logga in igen."
|
|
7625
|
+
};
|
|
7117
7626
|
var svJson = {
|
|
7118
7627
|
STEPS: STEPS$1,
|
|
7119
7628
|
INPUT: INPUT$1,
|
|
@@ -7134,7 +7643,8 @@ var svJson = {
|
|
|
7134
7643
|
QSM: QSM$2,
|
|
7135
7644
|
SRP: SRP$1,
|
|
7136
7645
|
ITINERARY: ITINERARY$1,
|
|
7137
|
-
FORM: FORM$1
|
|
7646
|
+
FORM: FORM$1,
|
|
7647
|
+
AGENT_ENTRIES: AGENT_ENTRIES$1
|
|
7138
7648
|
};
|
|
7139
7649
|
|
|
7140
7650
|
var STEPS = {
|
|
@@ -7587,6 +8097,39 @@ var FORM = {
|
|
|
7587
8097
|
YES: "はい",
|
|
7588
8098
|
NO: "いいえ"
|
|
7589
8099
|
};
|
|
8100
|
+
var AGENT_ENTRIES = {
|
|
8101
|
+
TITLE: "予約",
|
|
8102
|
+
MY_BOOKINGS: "マイ予約",
|
|
8103
|
+
NUMBER: "番号",
|
|
8104
|
+
DEPARTURE_DATE: "出発日",
|
|
8105
|
+
STATUS: "ステータス",
|
|
8106
|
+
CUSTOM_STATUS: "カスタムステータス",
|
|
8107
|
+
RETURN_DATE: "帰着日",
|
|
8108
|
+
PROFIT: "利益",
|
|
8109
|
+
NETTO_SELLING_PRICE: "正味販売価格",
|
|
8110
|
+
YOUR_SURCHARGE: "手数料",
|
|
8111
|
+
CREATED: "作成日",
|
|
8112
|
+
CONTACT: "連絡先",
|
|
8113
|
+
MAIN_BOOKER: "代表予約者",
|
|
8114
|
+
PRODUCT: "商品",
|
|
8115
|
+
TRAVELERS: "旅行者",
|
|
8116
|
+
ACTIONS: "操作",
|
|
8117
|
+
DETAILS: "詳細",
|
|
8118
|
+
HIDE_DETAILS: "詳細を隠す",
|
|
8119
|
+
PRINTS: "印刷",
|
|
8120
|
+
ALL: "すべて",
|
|
8121
|
+
X_ITEMS: "{0} 件",
|
|
8122
|
+
PAGE_SIZE: "1ページあたりの件数",
|
|
8123
|
+
PREVIOUS: "前へ",
|
|
8124
|
+
NEXT: "次へ",
|
|
8125
|
+
PAGE_X_OF_Y: "{0} / {1} ページ",
|
|
8126
|
+
LOADING: "読み込み中...",
|
|
8127
|
+
NO_ITEMS: "予約が見つかりません。",
|
|
8128
|
+
ERROR: "予約の読み込み中にエラーが発生しました。",
|
|
8129
|
+
PRINT_ERROR: "印刷に失敗しました。もう一度お試しください。",
|
|
8130
|
+
NOT_LOGGED_IN: "予約を表示するにはエージェントとしてログインしてください。",
|
|
8131
|
+
SESSION_EXPIRED: "セッションの有効期限が切れました。再度ログインしてください。"
|
|
8132
|
+
};
|
|
7590
8133
|
var jaJson = {
|
|
7591
8134
|
STEPS: STEPS,
|
|
7592
8135
|
INPUT: INPUT,
|
|
@@ -7607,7 +8150,8 @@ var jaJson = {
|
|
|
7607
8150
|
QSM: QSM$1,
|
|
7608
8151
|
SRP: SRP,
|
|
7609
8152
|
ITINERARY: ITINERARY,
|
|
7610
|
-
FORM: FORM
|
|
8153
|
+
FORM: FORM,
|
|
8154
|
+
AGENT_ENTRIES: AGENT_ENTRIES
|
|
7611
8155
|
};
|
|
7612
8156
|
|
|
7613
8157
|
var DepartureRange;
|
|
@@ -26526,7 +27070,7 @@ const LanguageSwitcher = ({ value = 'EN', languages = DEFAULT_LANGUAGES, onChang
|
|
|
26526
27070
|
React__default.createElement("span", { className: "nav__subnav__languages__option__label" }, l.label)))))));
|
|
26527
27071
|
};
|
|
26528
27072
|
|
|
26529
|
-
const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, languages, onLanguageChange, onSearch, member, onLogin, onLogout }) => {
|
|
27073
|
+
const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, languages, onLanguageChange, onSearch, member, onLogin, onLogout, onMyBookings }) => {
|
|
26530
27074
|
const [menuOpen, setMenuOpen] = useState(false);
|
|
26531
27075
|
const [query, setQuery] = useState('');
|
|
26532
27076
|
const [activeMobileGroup, setActiveMobileGroup] = useState();
|
|
@@ -26620,6 +27164,12 @@ const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, lan
|
|
|
26620
27164
|
onLogout();
|
|
26621
27165
|
}
|
|
26622
27166
|
};
|
|
27167
|
+
const handleMyBookings = (event) => {
|
|
27168
|
+
event.preventDefault();
|
|
27169
|
+
if (onMyBookings) {
|
|
27170
|
+
onMyBookings();
|
|
27171
|
+
}
|
|
27172
|
+
};
|
|
26623
27173
|
const handleLogin = (event) => {
|
|
26624
27174
|
event.preventDefault();
|
|
26625
27175
|
if (onLogin) {
|
|
@@ -26633,7 +27183,9 @@ const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, lan
|
|
|
26633
27183
|
member && (React__default.createElement("span", { className: "nav__subnav__member" },
|
|
26634
27184
|
translations.LOGIN.WELCOME_X,
|
|
26635
27185
|
member.name)),
|
|
26636
|
-
member ? (React__default.createElement(React__default.Fragment, null,
|
|
27186
|
+
member ? (React__default.createElement(React__default.Fragment, null,
|
|
27187
|
+
onMyBookings && (React__default.createElement("a", { href: "#", className: "nav__subnav__link", onClick: handleMyBookings }, translations.AGENT_ENTRIES.MY_BOOKINGS)),
|
|
27188
|
+
onLogout && (React__default.createElement("a", { href: "#", className: "nav__subnav__link", onClick: handleLogout }, translations.LOGIN.LOGOUT)))) : (React__default.createElement(React__default.Fragment, null, onLogin && (React__default.createElement("a", { href: "#", className: "nav__subnav__link", onClick: handleLogin }, translations.LOGIN.LOGIN)))),
|
|
26637
27189
|
React__default.createElement(LanguageSwitcher, { value: language.code, languages: languages, onChange: (lang) => {
|
|
26638
27190
|
console.log('Selected language:', lang);
|
|
26639
27191
|
onLanguageChange(lang);
|
|
@@ -29717,7 +30269,9 @@ const TrajectItinerary = ({ trajectEntry, packagingEntry, translations }) => {
|
|
|
29717
30269
|
.map((node) => {
|
|
29718
30270
|
const guids = node.lineGuids?.length ? node.lineGuids : [node.lineGuid];
|
|
29719
30271
|
const lines = guids.map((guid) => linesByGuid.get(guid)).filter((x) => !!x);
|
|
29720
|
-
|
|
30272
|
+
const groupKey = lines.length ? getLineGroupKey(lines[0]) : '';
|
|
30273
|
+
const active = groupKey ? getGroupLines(packagingEntry.lines ?? [], groupKey)[0] : undefined;
|
|
30274
|
+
return { node, lines: active ?? lines };
|
|
29721
30275
|
});
|
|
29722
30276
|
const claimed = new Set(nodes.flatMap((item) => item.lines.map((line) => line.guid)));
|
|
29723
30277
|
const extras = (packagingEntry.lines ?? []).filter((line) => !claimed.has(line.guid)).filter(isMeaningfulItineraryLine);
|
|
@@ -35667,6 +36221,25 @@ const BookPackagingEntry = ({ activeSearchSeed, isLoading, isConfirmationPage })
|
|
|
35667
36221
|
React__default.createElement(WLSidebar, { activeSearchSeed: activeSearchSeed, packagingAccoResult: selectedPackagingAccoResult }))));
|
|
35668
36222
|
};
|
|
35669
36223
|
|
|
36224
|
+
// A horizontally scrolling row of cards whose selected cards sit first. Choosing a card moves it to the front of the row
|
|
36225
|
+
const TrajectCardRow = ({ selectionKey, children }) => {
|
|
36226
|
+
const ref = useRef(null);
|
|
36227
|
+
const previousKey = useRef(selectionKey);
|
|
36228
|
+
useEffect(() => {
|
|
36229
|
+
if (previousKey.current === selectionKey)
|
|
36230
|
+
return;
|
|
36231
|
+
previousKey.current = selectionKey;
|
|
36232
|
+
const row = ref.current;
|
|
36233
|
+
if (!row || row.scrollLeft === 0)
|
|
36234
|
+
return;
|
|
36235
|
+
if (typeof row.scrollTo === 'function')
|
|
36236
|
+
row.scrollTo({ left: 0, behavior: 'smooth' });
|
|
36237
|
+
else
|
|
36238
|
+
row.scrollLeft = 0;
|
|
36239
|
+
}, [selectionKey]);
|
|
36240
|
+
return (React__default.createElement("div", { ref: ref, className: "search__results__cards search__results__cards--scroll" }, children));
|
|
36241
|
+
};
|
|
36242
|
+
|
|
35670
36243
|
const useTrajectDayActivities = () => {
|
|
35671
36244
|
const context = useContext(SearchResultsConfigurationContext);
|
|
35672
36245
|
const dispatch = useDispatch();
|
|
@@ -35868,7 +36441,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35868
36441
|
node.preferredAccommodationName,
|
|
35869
36442
|
" \u2014 ",
|
|
35870
36443
|
translations.SRP.NO_RESULTS))),
|
|
35871
|
-
React__default.createElement(
|
|
36444
|
+
React__default.createElement(TrajectCardRow, { selectionKey: selected.code }, [selected, ...configured, ...fill].map((result) => (React__default.createElement(TrajectNodeCard, { key: result.code, node: node, result: result, isSelected: result.code === selected.code, languageCode: context.languageCode, translations: translations, onSelect: () => handleSelect(item, result.code), onEditOptions: node.serviceType === ACCOMMODATION_SERVICE_TYPE ? () => handleEditOptions(item) : undefined, showNights: node.serviceType === ACCOMMODATION_SERVICE_TYPE })))),
|
|
35872
36445
|
remaining > 0 && !hideShowMoreResults && (React__default.createElement("div", { className: "search__results__cards__actions" },
|
|
35873
36446
|
React__default.createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMore(item) },
|
|
35874
36447
|
translations.SRP.SHOW_MORE,
|
|
@@ -35915,6 +36488,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35915
36488
|
};
|
|
35916
36489
|
/** The lines a suggested activity put on the entry, which is also how we know it was added. */
|
|
35917
36490
|
const getAddedExcursionLines = (result) => (editablePackagingEntry?.lines ?? []).filter((line) => line.serviceType === EXCURSION_SERVICE_TYPE && line.productCode === result.code && isSameDay(new Date(line.from), new Date(result.fromDate)));
|
|
36491
|
+
const isActivitySelected = ({ result, item }) => item ? trajectNodeAvailability[item.line.guid]?.selectedCode === result.code : getAddedExcursionLines(result).length > 0;
|
|
35918
36492
|
const handleToggleActivity = (result) => {
|
|
35919
36493
|
const added = getAddedExcursionLines(result);
|
|
35920
36494
|
if (added.length) {
|
|
@@ -35953,7 +36527,9 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35953
36527
|
const renderDayActivities = (day) => {
|
|
35954
36528
|
const items = getDayExcursionItems(day.order);
|
|
35955
36529
|
const suggestions = trajectDaySuggestions[day.order];
|
|
35956
|
-
const
|
|
36530
|
+
const allCards = buildDayActivityCards(items, trajectNodeAvailability, suggestions?.results ?? []);
|
|
36531
|
+
const selectedCards = allCards.filter(isActivitySelected);
|
|
36532
|
+
const cards = [...selectedCards, ...allCards.filter((card) => !isActivitySelected(card))];
|
|
35957
36533
|
const nodesResolving = items.some((item) => (trajectNodeAvailability[item.line.guid]?.status ?? 'loading') === 'loading');
|
|
35958
36534
|
const isSearching = suggestions?.status === 'loading';
|
|
35959
36535
|
// A day is worth filling only if the party is staying somewhere that night. The day they fly
|
|
@@ -35972,7 +36548,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35972
36548
|
React__default.createElement("h3", null,
|
|
35973
36549
|
React__default.createElement("strong", null, translations.SRP.ACTIVITIES)))),
|
|
35974
36550
|
(nodesResolving || isSearching) && !cards.length && React__default.createElement(Spinner, { label: translations.SRP.LOADING_ACTIVITIES }),
|
|
35975
|
-
!!cards.length && React__default.createElement(
|
|
36551
|
+
!!cards.length && (React__default.createElement(TrajectCardRow, { selectionKey: selectedCards.map((card) => card.result.code).join('|') }, visible.map(renderActivityCard))),
|
|
35976
36552
|
!nodesResolving && !isSearching && !cards.length && (!!items.length || !!suggestions) && (React__default.createElement("div", { className: "no-results" }, translations.SRP.NO_RESULTS)),
|
|
35977
36553
|
React__default.createElement("div", { className: "search__results__cards__actions" },
|
|
35978
36554
|
awaitsRequest && (React__default.createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => loadDay(day) }, translations.SRP.SHOW_ACTIVITIES)),
|
|
@@ -35987,7 +36563,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35987
36563
|
* found for themselves is added to the trip or taken back off it.
|
|
35988
36564
|
*/
|
|
35989
36565
|
const renderActivityCard = ({ result, item }) => {
|
|
35990
|
-
const isSelected =
|
|
36566
|
+
const isSelected = isActivitySelected({ result, item });
|
|
35991
36567
|
const isBookedCard = !!item && bookedMode && matchesCode(result, item.node.code ?? '');
|
|
35992
36568
|
return (React__default.createElement(TrajectNodeCard, { key: `activity-${result.code}`, node: item?.node, result: result, isSelected: isSelected, languageCode: context.languageCode, translations: translations, onSelect: () => (item ? handleSelect(item, result.code) : handleToggleActivity(result)), selectLabel: item ? undefined : translations.SRP.ADD, selectedLabel: item ? (isBookedCard ? translations.SHARED.BOOKED : undefined) : translations.SRP.REMOVE }));
|
|
35993
36569
|
};
|
|
@@ -40131,6 +40707,363 @@ const Login = ({ tideClientConfig, portalId, languageCode, imageSrc, logo, isMem
|
|
|
40131
40707
|
isMemberConfirmation && (React__default.createElement(ConfirmComponent, { tideClientConfig: tideClientConfig, portalId: portalId, languageCode: languageCode, member: member, setMember: setMember, handleBackToHome: handleBackToHome, handleBackToLogin: handleBackToLogin }))))));
|
|
40132
40708
|
};
|
|
40133
40709
|
|
|
40710
|
+
/** Agent endpoints need the member token, fall back to the one the Login component stored. */
|
|
40711
|
+
const withAgentToken = (config) => ({
|
|
40712
|
+
...config,
|
|
40713
|
+
token: config.token ?? selectAgentToken()
|
|
40714
|
+
});
|
|
40715
|
+
/** False when the token is not a JWT or has expired. */
|
|
40716
|
+
const isAgentTokenValid = (token) => {
|
|
40717
|
+
if (!token)
|
|
40718
|
+
return false;
|
|
40719
|
+
try {
|
|
40720
|
+
const { exp } = jwtDecode(token);
|
|
40721
|
+
return !exp || exp * 1000 > Date.now();
|
|
40722
|
+
}
|
|
40723
|
+
catch {
|
|
40724
|
+
return false;
|
|
40725
|
+
}
|
|
40726
|
+
};
|
|
40727
|
+
// tide-client throws Error(statusText) without the status, and statusText is empty over HTTP/2,
|
|
40728
|
+
// so also treat any failure with an invalid/expired token as unauthorized.
|
|
40729
|
+
const isUnauthorizedError = (error, token) => (error instanceof Error && /unauthori[sz]ed|forbidden/i.test(error.message)) || !isAgentTokenValid(token);
|
|
40730
|
+
const fetchLookups = async (config, languageCode, signal) => {
|
|
40731
|
+
// A failing lookup should not block the list itself.
|
|
40732
|
+
const [entryStatuses, customEntryStatuses, printActions] = await Promise.allSettled([
|
|
40733
|
+
build.getEntryStatus(config, signal, languageCode),
|
|
40734
|
+
build.getCustomEntryStatus(config, signal, languageCode),
|
|
40735
|
+
build.getPrintActions(config, build.PrintActionGroup.Dossier, signal)
|
|
40736
|
+
]);
|
|
40737
|
+
return {
|
|
40738
|
+
entryStatuses: entryStatuses.status === 'fulfilled' ? entryStatuses.value ?? [] : [],
|
|
40739
|
+
customEntryStatuses: customEntryStatuses.status === 'fulfilled' ? customEntryStatuses.value ?? [] : [],
|
|
40740
|
+
printActions: printActions.status === 'fulfilled' ? printActions.value ?? [] : []
|
|
40741
|
+
};
|
|
40742
|
+
};
|
|
40743
|
+
/** Converts the raw filter inputs to the OData column filters understood by tide-client's createParams. */
|
|
40744
|
+
const buildFilterItem = (columns, filterValues, sort, page, take) => {
|
|
40745
|
+
const filterColumns = {};
|
|
40746
|
+
columns.forEach((column) => {
|
|
40747
|
+
const raw = filterValues[column.id]?.trim();
|
|
40748
|
+
if (!raw)
|
|
40749
|
+
return;
|
|
40750
|
+
switch (column.kind) {
|
|
40751
|
+
case 'text':
|
|
40752
|
+
filterColumns[column.id] = { type: 'text', value: raw };
|
|
40753
|
+
break;
|
|
40754
|
+
case 'number': {
|
|
40755
|
+
const value = parseFloat(raw.replace(',', '.'));
|
|
40756
|
+
if (!isNaN(value))
|
|
40757
|
+
filterColumns[column.id] = { type: 'number', value };
|
|
40758
|
+
break;
|
|
40759
|
+
}
|
|
40760
|
+
case 'date': {
|
|
40761
|
+
// <input type="date"> value: yyyy-MM-dd, createParams expects a 1-based month.
|
|
40762
|
+
const [year, month, day] = raw.split('-').map((x) => parseInt(x, 10));
|
|
40763
|
+
if (year && month && day)
|
|
40764
|
+
filterColumns[column.id] = { type: 'date', value: { year, month, day } };
|
|
40765
|
+
break;
|
|
40766
|
+
}
|
|
40767
|
+
case 'status':
|
|
40768
|
+
case 'customStatus':
|
|
40769
|
+
filterColumns[column.id] = { type: 'enum', value: parseInt(raw, 10) };
|
|
40770
|
+
break;
|
|
40771
|
+
}
|
|
40772
|
+
});
|
|
40773
|
+
return { take, page, sort, columns: filterColumns };
|
|
40774
|
+
};
|
|
40775
|
+
const fetchEntries = (config, filter, signal) => build.getEntryList(config, filter, undefined, signal);
|
|
40776
|
+
/** Prints the entry and returns an object url to the resulting pdf. */
|
|
40777
|
+
const printEntry = async (config, printActionId, entryId) => {
|
|
40778
|
+
// Same request as the agent portal: the print action and the entry (version) id.
|
|
40779
|
+
const request = { id: printActionId, entryId };
|
|
40780
|
+
const response = await build.print(config, request);
|
|
40781
|
+
if (!response.ok)
|
|
40782
|
+
throw new Error(response.statusText);
|
|
40783
|
+
const buffer = await response.arrayBuffer();
|
|
40784
|
+
return URL.createObjectURL(new Blob([buffer], { type: 'application/pdf' }));
|
|
40785
|
+
};
|
|
40786
|
+
|
|
40787
|
+
const PAGE_SIZES = [10, 20, 50, 100];
|
|
40788
|
+
const FILTER_DEBOUNCE_MS = 400;
|
|
40789
|
+
const EyeIcon = () => (React__default.createElement("svg", { className: "agent-entries__icon", viewBox: "0 0 576 512", fill: "currentColor", "aria-hidden": "true" },
|
|
40790
|
+
React__default.createElement("path", { d: "M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4 142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1-288 0zm144-64c0 35.3-28.7 64-64 64-7.1 0-13.9-1.2-20.3-3.3-5.5-1.8-11.9 1.6-11.7 7.4.3 6.9 1.3 13.8 3.2 20.7 13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1-5.8-.2-9.2 6.1-7.4 11.7 2.1 6.4 3.3 13.2 3.3 20.3z" })));
|
|
40791
|
+
const PrintIcon = () => (React__default.createElement("svg", { className: "agent-entries__icon", viewBox: "0 0 512 512", fill: "currentColor", "aria-hidden": "true" },
|
|
40792
|
+
React__default.createElement("path", { d: "M128 0C92.7 0 64 28.7 64 64v96h64V64h226.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zm256 352v96H128v-96h256zm64 32h32c17.7 0 32-14.3 32-32v-96c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32h32v64c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64v-64zm-16-136a24 24 0 1 1 0 48 24 24 0 1 1 0-48z" })));
|
|
40793
|
+
const SortIcon = ({ asc }) => (React__default.createElement("svg", { className: buildClassName(['agent-entries__sort-icon', !asc && 'agent-entries__sort-icon--desc']), viewBox: "0 0 320 512", fill: "currentColor", "aria-hidden": "true" },
|
|
40794
|
+
React__default.createElement("path", { d: "M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9S19 320 32 320h256c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z" })));
|
|
40795
|
+
const AgentEntries = ({ tideClientConfig, languageCode, title, pageSize, customTranslations, onLogin, onUnauthorized }) => {
|
|
40796
|
+
const translations = useMemo(() => getTranslations(languageCode ?? 'en-GB', customTranslations), [languageCode, customTranslations]);
|
|
40797
|
+
const t = translations.AGENT_ENTRIES;
|
|
40798
|
+
const config = useMemo(() => withAgentToken(tideClientConfig), [tideClientConfig.host, tideClientConfig.apiKey, tideClientConfig.token]);
|
|
40799
|
+
const isLoggedIn = !!config.token;
|
|
40800
|
+
const hasValidToken = isLoggedIn && isAgentTokenValid(config.token);
|
|
40801
|
+
const columns = useMemo(() => [
|
|
40802
|
+
{ id: 'number', kind: 'text', label: t.NUMBER },
|
|
40803
|
+
{ id: 'departureDate', kind: 'date', label: t.DEPARTURE_DATE },
|
|
40804
|
+
{ id: 'status', kind: 'status', label: t.STATUS },
|
|
40805
|
+
{ id: 'customEntryStatusId', kind: 'customStatus', label: t.CUSTOM_STATUS },
|
|
40806
|
+
{ id: 'returnDate', kind: 'date', label: t.RETURN_DATE },
|
|
40807
|
+
{ id: 'profit', kind: 'number', label: t.PROFIT },
|
|
40808
|
+
{ id: 'totalPrice', kind: 'number', label: t.NETTO_SELLING_PRICE },
|
|
40809
|
+
{ id: 'calculatedAgentSurchargeAmount', kind: 'number', label: t.YOUR_SURCHARGE },
|
|
40810
|
+
{ id: 'createdDate', kind: 'date', label: t.CREATED },
|
|
40811
|
+
{ id: 'contact', kind: 'text', label: t.CONTACT },
|
|
40812
|
+
{ id: 'travelerAddress', kind: 'text', label: t.MAIN_BOOKER }
|
|
40813
|
+
], [t]);
|
|
40814
|
+
const [lookups, setLookups] = useState({ entryStatuses: [], customEntryStatuses: [], printActions: [] });
|
|
40815
|
+
const [entries, setEntries] = useState([]);
|
|
40816
|
+
const [count, setCount] = useState();
|
|
40817
|
+
const [loadState, setLoadState] = useState('idle');
|
|
40818
|
+
const [filterInputs, setFilterInputs] = useState({});
|
|
40819
|
+
const [filterValues, setFilterValues] = useState({});
|
|
40820
|
+
const [sort, setSort] = useState({ name: 'number', asc: true });
|
|
40821
|
+
const [page, setPage] = useState(1);
|
|
40822
|
+
const [take, setTake] = useState(pageSize ?? 20);
|
|
40823
|
+
const [expandedId, setExpandedId] = useState();
|
|
40824
|
+
const [printingKey, setPrintingKey] = useState();
|
|
40825
|
+
const [printError, setPrintError] = useState(false);
|
|
40826
|
+
const handleError = (error) => {
|
|
40827
|
+
if (error instanceof DOMException && error.name === 'AbortError')
|
|
40828
|
+
return;
|
|
40829
|
+
if (isUnauthorizedError(error, config.token)) {
|
|
40830
|
+
setLoadState('unauthorized');
|
|
40831
|
+
onUnauthorized?.();
|
|
40832
|
+
}
|
|
40833
|
+
else {
|
|
40834
|
+
console.error(error);
|
|
40835
|
+
setLoadState('error');
|
|
40836
|
+
}
|
|
40837
|
+
};
|
|
40838
|
+
useEffect(() => {
|
|
40839
|
+
if (isLoggedIn && !hasValidToken)
|
|
40840
|
+
onUnauthorized?.();
|
|
40841
|
+
}, [isLoggedIn, hasValidToken]);
|
|
40842
|
+
// Lookups (statuses & print actions) only need to be fetched once.
|
|
40843
|
+
useEffect(() => {
|
|
40844
|
+
if (!hasValidToken)
|
|
40845
|
+
return;
|
|
40846
|
+
const controller = new AbortController();
|
|
40847
|
+
fetchLookups(config, languageCode, controller.signal)
|
|
40848
|
+
.then(setLookups)
|
|
40849
|
+
.catch(() => { });
|
|
40850
|
+
return () => controller.abort();
|
|
40851
|
+
}, [config, languageCode, hasValidToken]);
|
|
40852
|
+
// Debounce the typed filters, a selected dropdown/date is applied immediately.
|
|
40853
|
+
useEffect(() => {
|
|
40854
|
+
const handle = setTimeout(() => {
|
|
40855
|
+
if (isEqual$1(filterInputs, filterValues))
|
|
40856
|
+
return;
|
|
40857
|
+
setFilterValues(filterInputs);
|
|
40858
|
+
setPage(1);
|
|
40859
|
+
}, FILTER_DEBOUNCE_MS);
|
|
40860
|
+
return () => clearTimeout(handle);
|
|
40861
|
+
}, [filterInputs]);
|
|
40862
|
+
useEffect(() => {
|
|
40863
|
+
if (!hasValidToken)
|
|
40864
|
+
return;
|
|
40865
|
+
const controller = new AbortController();
|
|
40866
|
+
setLoadState('loading');
|
|
40867
|
+
fetchEntries(config, buildFilterItem(columns, filterValues, sort, page, take), controller.signal)
|
|
40868
|
+
.then((result) => {
|
|
40869
|
+
setEntries(result?.items ?? []);
|
|
40870
|
+
setCount(result?.count ?? undefined);
|
|
40871
|
+
setLoadState('loaded');
|
|
40872
|
+
})
|
|
40873
|
+
.catch(handleError);
|
|
40874
|
+
return () => controller.abort();
|
|
40875
|
+
}, [config, hasValidToken, columns, filterValues, sort, page, take]);
|
|
40876
|
+
const totalPages = count !== undefined ? Math.max(1, Math.ceil(count / take)) : undefined;
|
|
40877
|
+
const hasNextPage = totalPages !== undefined ? page < totalPages : entries.length === take;
|
|
40878
|
+
const handleSort = (columnId) => {
|
|
40879
|
+
setSort((current) => (current.name === columnId ? { name: columnId, asc: !current.asc } : { name: columnId, asc: true }));
|
|
40880
|
+
setPage(1);
|
|
40881
|
+
};
|
|
40882
|
+
const handleFilterChange = (columnId, value, immediate) => {
|
|
40883
|
+
const next = { ...filterInputs, [columnId]: value };
|
|
40884
|
+
setFilterInputs(next);
|
|
40885
|
+
if (immediate) {
|
|
40886
|
+
setFilterValues(next);
|
|
40887
|
+
setPage(1);
|
|
40888
|
+
}
|
|
40889
|
+
};
|
|
40890
|
+
const handlePrint = async (entry, printAction) => {
|
|
40891
|
+
// Open the tab synchronously, otherwise the popup blocker kicks in once the pdf arrives.
|
|
40892
|
+
const printWindow = window.open('', '_blank');
|
|
40893
|
+
setPrintingKey(`${entry.id}-${printAction.id}`);
|
|
40894
|
+
setPrintError(false);
|
|
40895
|
+
try {
|
|
40896
|
+
const url = await printEntry(config, printAction.id, entry.id);
|
|
40897
|
+
if (printWindow) {
|
|
40898
|
+
printWindow.location.href = url;
|
|
40899
|
+
}
|
|
40900
|
+
else {
|
|
40901
|
+
window.open(url, '_blank');
|
|
40902
|
+
}
|
|
40903
|
+
setTimeout(() => URL.revokeObjectURL(url), 60000);
|
|
40904
|
+
}
|
|
40905
|
+
catch (error) {
|
|
40906
|
+
printWindow?.close();
|
|
40907
|
+
if (isUnauthorizedError(error, config.token)) {
|
|
40908
|
+
handleError(error);
|
|
40909
|
+
}
|
|
40910
|
+
else {
|
|
40911
|
+
console.error(error);
|
|
40912
|
+
setPrintError(true);
|
|
40913
|
+
}
|
|
40914
|
+
}
|
|
40915
|
+
finally {
|
|
40916
|
+
setPrintingKey(undefined);
|
|
40917
|
+
}
|
|
40918
|
+
};
|
|
40919
|
+
const formatDate = (value) => {
|
|
40920
|
+
if (!value)
|
|
40921
|
+
return '';
|
|
40922
|
+
const date = new Date(value);
|
|
40923
|
+
if (isNaN(date.getTime()))
|
|
40924
|
+
return '';
|
|
40925
|
+
return new Intl.DateTimeFormat(languageCode, { day: '2-digit', month: '2-digit', year: 'numeric' }).format(date);
|
|
40926
|
+
};
|
|
40927
|
+
const formatNumber = (value) => {
|
|
40928
|
+
if (value === undefined || value === null)
|
|
40929
|
+
return '';
|
|
40930
|
+
return new Intl.NumberFormat(languageCode, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(value);
|
|
40931
|
+
};
|
|
40932
|
+
const getEntryStatusLabel = (status) => lookups.entryStatuses.find((x) => x.key === status)?.value ?? '';
|
|
40933
|
+
const getCustomEntryStatusLabel = (id) => lookups.customEntryStatuses.find((x) => x.id === id)?.name ?? '';
|
|
40934
|
+
const getPrintActionsForEntry = (entry) => lookups.printActions.filter((x) => x.validEntryStatuses?.includes(entry.status));
|
|
40935
|
+
const renderCell = (entry, column) => {
|
|
40936
|
+
const value = entry[column.id];
|
|
40937
|
+
switch (column.kind) {
|
|
40938
|
+
case 'date':
|
|
40939
|
+
return formatDate(value);
|
|
40940
|
+
case 'number':
|
|
40941
|
+
return formatNumber(value);
|
|
40942
|
+
case 'status':
|
|
40943
|
+
return getEntryStatusLabel(value);
|
|
40944
|
+
case 'customStatus':
|
|
40945
|
+
return getCustomEntryStatusLabel(value);
|
|
40946
|
+
default:
|
|
40947
|
+
return value ?? '';
|
|
40948
|
+
}
|
|
40949
|
+
};
|
|
40950
|
+
const renderFilter = (column) => {
|
|
40951
|
+
const value = filterInputs[column.id] ?? '';
|
|
40952
|
+
const className = 'agent-entries__filter';
|
|
40953
|
+
switch (column.kind) {
|
|
40954
|
+
case 'date':
|
|
40955
|
+
return (React__default.createElement("input", { type: "date", className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value, true) }));
|
|
40956
|
+
case 'status':
|
|
40957
|
+
case 'customStatus': {
|
|
40958
|
+
const options = column.kind === 'status'
|
|
40959
|
+
? lookups.entryStatuses.filter((x) => x.key !== undefined && x.key !== null).map((x) => ({ key: x.key, value: x.value }))
|
|
40960
|
+
: lookups.customEntryStatuses.map((x) => ({ key: x.id, value: x.name }));
|
|
40961
|
+
return (React__default.createElement("select", { className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value, true) },
|
|
40962
|
+
React__default.createElement("option", { value: "" }, t.ALL),
|
|
40963
|
+
options.map((option) => (React__default.createElement("option", { key: option.key, value: option.key }, option.value)))));
|
|
40964
|
+
}
|
|
40965
|
+
case 'number':
|
|
40966
|
+
return (React__default.createElement("input", { type: "number", className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value) }));
|
|
40967
|
+
default:
|
|
40968
|
+
return (React__default.createElement("input", { type: "text", className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value) }));
|
|
40969
|
+
}
|
|
40970
|
+
};
|
|
40971
|
+
const renderDetails = (entry) => {
|
|
40972
|
+
const printActions = getPrintActionsForEntry(entry);
|
|
40973
|
+
const travelers = entry.pax?.length ? entry.pax.map((p) => (p.isMainBooker ? `${p.name} (${t.MAIN_BOOKER.toLowerCase()})` : p.name)).join(', ') : '';
|
|
40974
|
+
const details = [
|
|
40975
|
+
{ label: t.NUMBER, value: entry.number },
|
|
40976
|
+
{ label: t.PRODUCT, value: entry.firstProductName },
|
|
40977
|
+
{ label: t.STATUS, value: getEntryStatusLabel(entry.status) },
|
|
40978
|
+
{ label: t.CUSTOM_STATUS, value: getCustomEntryStatusLabel(entry.customEntryStatusId) },
|
|
40979
|
+
{ label: t.DEPARTURE_DATE, value: formatDate(entry.departureDate) },
|
|
40980
|
+
{ label: t.RETURN_DATE, value: formatDate(entry.returnDate) },
|
|
40981
|
+
{ label: t.CREATED, value: formatDate(entry.createdDate) },
|
|
40982
|
+
{ label: t.CONTACT, value: entry.contact },
|
|
40983
|
+
{ label: t.MAIN_BOOKER, value: entry.travelerAddress },
|
|
40984
|
+
{ label: t.TRAVELERS, value: travelers || (entry.paxCount ? entry.paxCount : '') },
|
|
40985
|
+
{ label: t.NETTO_SELLING_PRICE, value: formatNumber(entry.totalPrice) },
|
|
40986
|
+
{ label: t.YOUR_SURCHARGE, value: formatNumber(entry.calculatedAgentSurchargeAmount) },
|
|
40987
|
+
{ label: t.PROFIT, value: formatNumber(entry.profit) }
|
|
40988
|
+
];
|
|
40989
|
+
return (React__default.createElement("div", { className: "agent-entries__details" },
|
|
40990
|
+
React__default.createElement("dl", { className: "agent-entries__details__list" }, details
|
|
40991
|
+
.filter((detail) => detail.value !== undefined && detail.value !== null && detail.value !== '')
|
|
40992
|
+
.map((detail) => (React__default.createElement("div", { className: "agent-entries__details__item", key: detail.label },
|
|
40993
|
+
React__default.createElement("dt", null, detail.label),
|
|
40994
|
+
React__default.createElement("dd", null, detail.value))))),
|
|
40995
|
+
printActions.length > 0 && (React__default.createElement("div", { className: "agent-entries__details__prints" },
|
|
40996
|
+
React__default.createElement("span", { className: "agent-entries__details__prints__title" }, t.PRINTS),
|
|
40997
|
+
React__default.createElement("div", { className: "agent-entries__details__prints__buttons" }, printActions.map((printAction) => (React__default.createElement("button", { type: "button", key: printAction.id, className: "agent-entries__print-button", disabled: printingKey === `${entry.id}-${printAction.id}`, onClick: () => handlePrint(entry, printAction) },
|
|
40998
|
+
React__default.createElement(PrintIcon, null),
|
|
40999
|
+
printAction.label))))))));
|
|
41000
|
+
};
|
|
41001
|
+
const renderLoginMessage = (message) => (React__default.createElement("div", { className: "agent-entries__message" },
|
|
41002
|
+
React__default.createElement("p", null, message),
|
|
41003
|
+
onLogin && (React__default.createElement("button", { type: "button", className: "cta cta--primary", onClick: onLogin }, translations.LOGIN.LOGIN))));
|
|
41004
|
+
if (!isLoggedIn) {
|
|
41005
|
+
return (React__default.createElement("div", { className: "agent-entries" },
|
|
41006
|
+
React__default.createElement("h2", { className: "agent-entries__title" }, title ?? t.TITLE),
|
|
41007
|
+
renderLoginMessage(t.NOT_LOGGED_IN)));
|
|
41008
|
+
}
|
|
41009
|
+
if (!hasValidToken || loadState === 'unauthorized') {
|
|
41010
|
+
return (React__default.createElement("div", { className: "agent-entries" },
|
|
41011
|
+
React__default.createElement("h2", { className: "agent-entries__title" }, title ?? t.TITLE),
|
|
41012
|
+
renderLoginMessage(t.SESSION_EXPIRED)));
|
|
41013
|
+
}
|
|
41014
|
+
const columnCount = columns.length + 1;
|
|
41015
|
+
return (React__default.createElement("div", { className: "agent-entries" },
|
|
41016
|
+
React__default.createElement("h2", { className: "agent-entries__title" }, title ?? t.TITLE),
|
|
41017
|
+
printError && (React__default.createElement("div", { className: "agent-entries__error", role: "alert" },
|
|
41018
|
+
t.PRINT_ERROR,
|
|
41019
|
+
React__default.createElement("button", { type: "button", className: "agent-entries__error__close", "aria-label": "close", onClick: () => setPrintError(false) }, "\u00D7"))),
|
|
41020
|
+
React__default.createElement("div", { className: buildClassName(['agent-entries__card', loadState === 'loading' && 'agent-entries__card--loading']) },
|
|
41021
|
+
React__default.createElement("div", { className: "agent-entries__table-wrapper" },
|
|
41022
|
+
React__default.createElement("table", { className: "agent-entries__table" },
|
|
41023
|
+
React__default.createElement("thead", null,
|
|
41024
|
+
React__default.createElement("tr", null,
|
|
41025
|
+
React__default.createElement("th", { className: "agent-entries__actions-header" },
|
|
41026
|
+
React__default.createElement("span", { className: "agent-entries__sr-only" }, t.ACTIONS)),
|
|
41027
|
+
columns.map((column) => (React__default.createElement("th", { key: column.id, "aria-sort": sort.name === column.id ? (sort.asc ? 'ascending' : 'descending') : undefined },
|
|
41028
|
+
React__default.createElement("button", { type: "button", className: "agent-entries__sort", onClick: () => handleSort(column.id) },
|
|
41029
|
+
column.label,
|
|
41030
|
+
sort.name === column.id && React__default.createElement(SortIcon, { asc: sort.asc })))))),
|
|
41031
|
+
React__default.createElement("tr", { className: "agent-entries__filter-row" },
|
|
41032
|
+
React__default.createElement("th", null),
|
|
41033
|
+
columns.map((column) => (React__default.createElement("th", { key: column.id }, renderFilter(column)))))),
|
|
41034
|
+
React__default.createElement("tbody", null,
|
|
41035
|
+
loadState === 'error' && (React__default.createElement("tr", null,
|
|
41036
|
+
React__default.createElement("td", { colSpan: columnCount, className: "agent-entries__empty" }, t.ERROR))),
|
|
41037
|
+
loadState !== 'error' && entries.length === 0 && (React__default.createElement("tr", null,
|
|
41038
|
+
React__default.createElement("td", { colSpan: columnCount, className: "agent-entries__empty" }, loadState === 'loading' ? t.LOADING : t.NO_ITEMS))),
|
|
41039
|
+
loadState !== 'error' &&
|
|
41040
|
+
entries.map((entry) => {
|
|
41041
|
+
const isExpanded = expandedId === entry.id;
|
|
41042
|
+
return (React__default.createElement(React__default.Fragment, { key: entry.id },
|
|
41043
|
+
React__default.createElement("tr", { className: buildClassName(['agent-entries__row', isExpanded && 'agent-entries__row--expanded']) },
|
|
41044
|
+
React__default.createElement("td", { className: "agent-entries__actions" },
|
|
41045
|
+
React__default.createElement("button", { type: "button", className: "agent-entries__action agent-entries__action--primary", title: isExpanded ? t.HIDE_DETAILS : t.DETAILS, "aria-label": isExpanded ? t.HIDE_DETAILS : t.DETAILS, "aria-expanded": isExpanded, onClick: () => setExpandedId(isExpanded ? undefined : entry.id) },
|
|
41046
|
+
React__default.createElement(EyeIcon, null)),
|
|
41047
|
+
getPrintActionsForEntry(entry).map((printAction) => (React__default.createElement("button", { type: "button", key: printAction.id, className: "agent-entries__action", title: printAction.label, "aria-label": printAction.label, disabled: printingKey === `${entry.id}-${printAction.id}`, onClick: () => handlePrint(entry, printAction) },
|
|
41048
|
+
React__default.createElement(PrintIcon, null))))),
|
|
41049
|
+
columns.map((column) => (React__default.createElement("td", { key: column.id, className: `agent-entries__cell agent-entries__cell--${column.kind}` }, renderCell(entry, column))))),
|
|
41050
|
+
isExpanded && (React__default.createElement("tr", { className: "agent-entries__details-row" },
|
|
41051
|
+
React__default.createElement("td", { colSpan: columnCount }, renderDetails(entry))))));
|
|
41052
|
+
})))),
|
|
41053
|
+
React__default.createElement("div", { className: "agent-entries__footer" },
|
|
41054
|
+
React__default.createElement("select", { className: "agent-entries__page-size", value: take, "aria-label": t.PAGE_SIZE, onChange: (e) => {
|
|
41055
|
+
setTake(parseInt(e.target.value, 10));
|
|
41056
|
+
setPage(1);
|
|
41057
|
+
} }, Array.from(new Set([...PAGE_SIZES, take]))
|
|
41058
|
+
.sort((a, b) => a - b)
|
|
41059
|
+
.map((size) => (React__default.createElement("option", { key: size, value: size }, size)))),
|
|
41060
|
+
count !== undefined && React__default.createElement("span", { className: "agent-entries__count" }, format$1(t.X_ITEMS, [count])),
|
|
41061
|
+
React__default.createElement("div", { className: "agent-entries__pager" },
|
|
41062
|
+
React__default.createElement("button", { type: "button", className: "agent-entries__pager__button", disabled: page <= 1, onClick: () => setPage(page - 1) }, t.PREVIOUS),
|
|
41063
|
+
React__default.createElement("span", { className: "agent-entries__pager__info" }, totalPages !== undefined ? format$1(t.PAGE_X_OF_Y, [page, totalPages]) : page),
|
|
41064
|
+
React__default.createElement("button", { type: "button", className: "agent-entries__pager__button", disabled: !hasNextPage, onClick: () => setPage(page + 1) }, t.NEXT))))));
|
|
41065
|
+
};
|
|
41066
|
+
|
|
40134
41067
|
const ImageWithTextCard = ({ noCard, fullImage, reverse, imageSrc, imageAlt, title, section1Title, section1Text, section2Title, section2Text, buttonText, onButtonClick }) => {
|
|
40135
41068
|
let cardClassName = 'image-with-text__card';
|
|
40136
41069
|
if (noCard) {
|
|
@@ -44589,4 +45522,4 @@ var signalR = /*#__PURE__*/_mergeNamespaces({
|
|
|
44589
45522
|
'default': signalR$1
|
|
44590
45523
|
}, [signalR$1]);
|
|
44591
45524
|
|
|
44592
|
-
export { BookingProduct, BookingWizard, Breadcrumbs, DepartureRange, FAQ, FeaturedTrips, Footer, Header, ImageCardGrid, ImageWithTextSection, ItineraryMapView, Login, Navbar, PhotoGallery, QSM, SearchResults, Slider, Spinner, TideForm };
|
|
45525
|
+
export { AgentEntries, BookingProduct, BookingWizard, Breadcrumbs, DepartureRange, FAQ, FeaturedTrips, Footer, Header, ImageCardGrid, ImageWithTextSection, ItineraryMapView, Login, Navbar, PhotoGallery, QSM, SearchResults, Slider, Spinner, TideForm };
|