@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-cjs/index.js
CHANGED
|
@@ -509,6 +509,39 @@ var FORM$f = {
|
|
|
509
509
|
YES: "نعم",
|
|
510
510
|
NO: "لا"
|
|
511
511
|
};
|
|
512
|
+
var AGENT_ENTRIES$f = {
|
|
513
|
+
TITLE: "الحجوزات",
|
|
514
|
+
MY_BOOKINGS: "حجوزاتي",
|
|
515
|
+
NUMBER: "الرقم",
|
|
516
|
+
DEPARTURE_DATE: "تاريخ المغادرة",
|
|
517
|
+
STATUS: "الحالة",
|
|
518
|
+
CUSTOM_STATUS: "حالة مخصصة",
|
|
519
|
+
RETURN_DATE: "تاريخ العودة",
|
|
520
|
+
PROFIT: "الربح",
|
|
521
|
+
NETTO_SELLING_PRICE: "صافي سعر البيع",
|
|
522
|
+
YOUR_SURCHARGE: "رسومك الإضافية",
|
|
523
|
+
CREATED: "تاريخ الإنشاء",
|
|
524
|
+
CONTACT: "جهة الاتصال",
|
|
525
|
+
MAIN_BOOKER: "الحاجز الرئيسي",
|
|
526
|
+
PRODUCT: "المنتج",
|
|
527
|
+
TRAVELERS: "المسافرون",
|
|
528
|
+
ACTIONS: "الإجراءات",
|
|
529
|
+
DETAILS: "التفاصيل",
|
|
530
|
+
HIDE_DETAILS: "إخفاء التفاصيل",
|
|
531
|
+
PRINTS: "المطبوعات",
|
|
532
|
+
ALL: "الكل",
|
|
533
|
+
X_ITEMS: "{0} عناصر",
|
|
534
|
+
PAGE_SIZE: "عناصر لكل صفحة",
|
|
535
|
+
PREVIOUS: "السابق",
|
|
536
|
+
NEXT: "التالي",
|
|
537
|
+
PAGE_X_OF_Y: "الصفحة {0} من {1}",
|
|
538
|
+
LOADING: "جارٍ التحميل...",
|
|
539
|
+
NO_ITEMS: "لم يتم العثور على حجوزات.",
|
|
540
|
+
ERROR: "حدث خطأ أثناء تحميل حجوزاتك.",
|
|
541
|
+
PRINT_ERROR: "فشلت الطباعة، يرجى المحاولة مرة أخرى.",
|
|
542
|
+
NOT_LOGGED_IN: "سجّل الدخول كوكيل لعرض حجوزاتك.",
|
|
543
|
+
SESSION_EXPIRED: "انتهت صلاحية جلستك، يرجى تسجيل الدخول مرة أخرى."
|
|
544
|
+
};
|
|
512
545
|
var arJson = {
|
|
513
546
|
STEPS: STEPS$f,
|
|
514
547
|
INPUT: INPUT$f,
|
|
@@ -529,7 +562,8 @@ var arJson = {
|
|
|
529
562
|
QSM: QSM$g,
|
|
530
563
|
SRP: SRP$f,
|
|
531
564
|
ITINERARY: ITINERARY$f,
|
|
532
|
-
FORM: FORM$f
|
|
565
|
+
FORM: FORM$f,
|
|
566
|
+
AGENT_ENTRIES: AGENT_ENTRIES$f
|
|
533
567
|
};
|
|
534
568
|
|
|
535
569
|
var STEPS$e = {
|
|
@@ -982,6 +1016,39 @@ var FORM$e = {
|
|
|
982
1016
|
YES: "Ja",
|
|
983
1017
|
NO: "Nej"
|
|
984
1018
|
};
|
|
1019
|
+
var AGENT_ENTRIES$e = {
|
|
1020
|
+
TITLE: "Bookinger",
|
|
1021
|
+
MY_BOOKINGS: "Mine bookinger",
|
|
1022
|
+
NUMBER: "Nummer",
|
|
1023
|
+
DEPARTURE_DATE: "Afrejsedato",
|
|
1024
|
+
STATUS: "Status",
|
|
1025
|
+
CUSTOM_STATUS: "Tilpasset status",
|
|
1026
|
+
RETURN_DATE: "Hjemrejsedato",
|
|
1027
|
+
PROFIT: "Fortjeneste",
|
|
1028
|
+
NETTO_SELLING_PRICE: "Netto salgspris",
|
|
1029
|
+
YOUR_SURCHARGE: "Dit tillæg",
|
|
1030
|
+
CREATED: "Oprettet",
|
|
1031
|
+
CONTACT: "Kontakt",
|
|
1032
|
+
MAIN_BOOKER: "Hovedbooker",
|
|
1033
|
+
PRODUCT: "Produkt",
|
|
1034
|
+
TRAVELERS: "Rejsende",
|
|
1035
|
+
ACTIONS: "Handlinger",
|
|
1036
|
+
DETAILS: "Detaljer",
|
|
1037
|
+
HIDE_DETAILS: "Skjul detaljer",
|
|
1038
|
+
PRINTS: "Udskrifter",
|
|
1039
|
+
ALL: "Alle",
|
|
1040
|
+
X_ITEMS: "{0} elementer",
|
|
1041
|
+
PAGE_SIZE: "Elementer pr. side",
|
|
1042
|
+
PREVIOUS: "Forrige",
|
|
1043
|
+
NEXT: "Næste",
|
|
1044
|
+
PAGE_X_OF_Y: "Side {0} af {1}",
|
|
1045
|
+
LOADING: "Indlæser...",
|
|
1046
|
+
NO_ITEMS: "Ingen bookinger fundet.",
|
|
1047
|
+
ERROR: "Der opstod en fejl under indlæsning af dine bookinger.",
|
|
1048
|
+
PRINT_ERROR: "Udskrivning mislykkedes, prøv igen.",
|
|
1049
|
+
NOT_LOGGED_IN: "Log ind som agent for at se dine bookinger.",
|
|
1050
|
+
SESSION_EXPIRED: "Din session er udløbet, log ind igen."
|
|
1051
|
+
};
|
|
985
1052
|
var daJson = {
|
|
986
1053
|
STEPS: STEPS$e,
|
|
987
1054
|
INPUT: INPUT$e,
|
|
@@ -1002,7 +1069,8 @@ var daJson = {
|
|
|
1002
1069
|
QSM: QSM$f,
|
|
1003
1070
|
SRP: SRP$e,
|
|
1004
1071
|
ITINERARY: ITINERARY$e,
|
|
1005
|
-
FORM: FORM$e
|
|
1072
|
+
FORM: FORM$e,
|
|
1073
|
+
AGENT_ENTRIES: AGENT_ENTRIES$e
|
|
1006
1074
|
};
|
|
1007
1075
|
|
|
1008
1076
|
var STEPS$d = {
|
|
@@ -1455,6 +1523,39 @@ var FORM$d = {
|
|
|
1455
1523
|
YES: "Ja",
|
|
1456
1524
|
NO: "Nein"
|
|
1457
1525
|
};
|
|
1526
|
+
var AGENT_ENTRIES$d = {
|
|
1527
|
+
TITLE: "Buchungen",
|
|
1528
|
+
MY_BOOKINGS: "Meine Buchungen",
|
|
1529
|
+
NUMBER: "Nummer",
|
|
1530
|
+
DEPARTURE_DATE: "Abreisedatum",
|
|
1531
|
+
STATUS: "Status",
|
|
1532
|
+
CUSTOM_STATUS: "Benutzerdefinierter Status",
|
|
1533
|
+
RETURN_DATE: "Rückreisedatum",
|
|
1534
|
+
PROFIT: "Gewinn",
|
|
1535
|
+
NETTO_SELLING_PRICE: "Netto-Verkaufspreis",
|
|
1536
|
+
YOUR_SURCHARGE: "Ihr Aufschlag",
|
|
1537
|
+
CREATED: "Erstellt",
|
|
1538
|
+
CONTACT: "Kontakt",
|
|
1539
|
+
MAIN_BOOKER: "Hauptbucher",
|
|
1540
|
+
PRODUCT: "Produkt",
|
|
1541
|
+
TRAVELERS: "Reisende",
|
|
1542
|
+
ACTIONS: "Aktionen",
|
|
1543
|
+
DETAILS: "Details",
|
|
1544
|
+
HIDE_DETAILS: "Details ausblenden",
|
|
1545
|
+
PRINTS: "Drucke",
|
|
1546
|
+
ALL: "Alle",
|
|
1547
|
+
X_ITEMS: "{0} Einträge",
|
|
1548
|
+
PAGE_SIZE: "Einträge pro Seite",
|
|
1549
|
+
PREVIOUS: "Zurück",
|
|
1550
|
+
NEXT: "Weiter",
|
|
1551
|
+
PAGE_X_OF_Y: "Seite {0} von {1}",
|
|
1552
|
+
LOADING: "Wird geladen...",
|
|
1553
|
+
NO_ITEMS: "Keine Buchungen gefunden.",
|
|
1554
|
+
ERROR: "Beim Laden Ihrer Buchungen ist ein Fehler aufgetreten.",
|
|
1555
|
+
PRINT_ERROR: "Drucken fehlgeschlagen, bitte versuchen Sie es erneut.",
|
|
1556
|
+
NOT_LOGGED_IN: "Melden Sie sich als Agent an, um Ihre Buchungen zu sehen.",
|
|
1557
|
+
SESSION_EXPIRED: "Ihre Sitzung ist abgelaufen, bitte melden Sie sich erneut an."
|
|
1558
|
+
};
|
|
1458
1559
|
var deJson = {
|
|
1459
1560
|
STEPS: STEPS$d,
|
|
1460
1561
|
INPUT: INPUT$d,
|
|
@@ -1475,7 +1576,8 @@ var deJson = {
|
|
|
1475
1576
|
QSM: QSM$e,
|
|
1476
1577
|
SRP: SRP$d,
|
|
1477
1578
|
ITINERARY: ITINERARY$d,
|
|
1478
|
-
FORM: FORM$d
|
|
1579
|
+
FORM: FORM$d,
|
|
1580
|
+
AGENT_ENTRIES: AGENT_ENTRIES$d
|
|
1479
1581
|
};
|
|
1480
1582
|
|
|
1481
1583
|
var STEPS$c = {
|
|
@@ -1932,6 +2034,39 @@ var FORM$c = {
|
|
|
1932
2034
|
YES: "Yes",
|
|
1933
2035
|
NO: "No"
|
|
1934
2036
|
};
|
|
2037
|
+
var AGENT_ENTRIES$c = {
|
|
2038
|
+
TITLE: "Bookings",
|
|
2039
|
+
MY_BOOKINGS: "My bookings",
|
|
2040
|
+
NUMBER: "Number",
|
|
2041
|
+
DEPARTURE_DATE: "Departure date",
|
|
2042
|
+
STATUS: "Status",
|
|
2043
|
+
CUSTOM_STATUS: "Custom status",
|
|
2044
|
+
RETURN_DATE: "Return date",
|
|
2045
|
+
PROFIT: "Profit",
|
|
2046
|
+
NETTO_SELLING_PRICE: "Netto selling price",
|
|
2047
|
+
YOUR_SURCHARGE: "Your surcharge",
|
|
2048
|
+
CREATED: "Created",
|
|
2049
|
+
CONTACT: "Contact",
|
|
2050
|
+
MAIN_BOOKER: "Main booker",
|
|
2051
|
+
PRODUCT: "Product",
|
|
2052
|
+
TRAVELERS: "Travellers",
|
|
2053
|
+
ACTIONS: "Actions",
|
|
2054
|
+
DETAILS: "Details",
|
|
2055
|
+
HIDE_DETAILS: "Hide details",
|
|
2056
|
+
PRINTS: "Prints",
|
|
2057
|
+
ALL: "All",
|
|
2058
|
+
X_ITEMS: "{0} items",
|
|
2059
|
+
PAGE_SIZE: "Items per page",
|
|
2060
|
+
PREVIOUS: "Previous",
|
|
2061
|
+
NEXT: "Next",
|
|
2062
|
+
PAGE_X_OF_Y: "Page {0} of {1}",
|
|
2063
|
+
LOADING: "Loading...",
|
|
2064
|
+
NO_ITEMS: "No bookings found.",
|
|
2065
|
+
ERROR: "Something went wrong while loading your bookings.",
|
|
2066
|
+
PRINT_ERROR: "Printing failed, please try again.",
|
|
2067
|
+
NOT_LOGGED_IN: "Log in as an agent to see your bookings.",
|
|
2068
|
+
SESSION_EXPIRED: "Your session has expired, please log in again."
|
|
2069
|
+
};
|
|
1935
2070
|
var enJson = {
|
|
1936
2071
|
STEPS: STEPS$c,
|
|
1937
2072
|
INPUT: INPUT$c,
|
|
@@ -1952,7 +2087,8 @@ var enJson = {
|
|
|
1952
2087
|
QSM: QSM$d,
|
|
1953
2088
|
SRP: SRP$c,
|
|
1954
2089
|
ITINERARY: ITINERARY$c,
|
|
1955
|
-
FORM: FORM$c
|
|
2090
|
+
FORM: FORM$c,
|
|
2091
|
+
AGENT_ENTRIES: AGENT_ENTRIES$c
|
|
1956
2092
|
};
|
|
1957
2093
|
|
|
1958
2094
|
var STEPS$b = {
|
|
@@ -2405,6 +2541,39 @@ var FORM$b = {
|
|
|
2405
2541
|
YES: "Sí",
|
|
2406
2542
|
NO: "No"
|
|
2407
2543
|
};
|
|
2544
|
+
var AGENT_ENTRIES$b = {
|
|
2545
|
+
TITLE: "Reservas",
|
|
2546
|
+
MY_BOOKINGS: "Mis reservas",
|
|
2547
|
+
NUMBER: "Número",
|
|
2548
|
+
DEPARTURE_DATE: "Fecha de salida",
|
|
2549
|
+
STATUS: "Estado",
|
|
2550
|
+
CUSTOM_STATUS: "Estado personalizado",
|
|
2551
|
+
RETURN_DATE: "Fecha de regreso",
|
|
2552
|
+
PROFIT: "Beneficio",
|
|
2553
|
+
NETTO_SELLING_PRICE: "Precio de venta neto",
|
|
2554
|
+
YOUR_SURCHARGE: "Su recargo",
|
|
2555
|
+
CREATED: "Creado",
|
|
2556
|
+
CONTACT: "Contacto",
|
|
2557
|
+
MAIN_BOOKER: "Titular de la reserva",
|
|
2558
|
+
PRODUCT: "Producto",
|
|
2559
|
+
TRAVELERS: "Viajeros",
|
|
2560
|
+
ACTIONS: "Acciones",
|
|
2561
|
+
DETAILS: "Detalles",
|
|
2562
|
+
HIDE_DETAILS: "Ocultar detalles",
|
|
2563
|
+
PRINTS: "Impresiones",
|
|
2564
|
+
ALL: "Todos",
|
|
2565
|
+
X_ITEMS: "{0} elementos",
|
|
2566
|
+
PAGE_SIZE: "Elementos por página",
|
|
2567
|
+
PREVIOUS: "Anterior",
|
|
2568
|
+
NEXT: "Siguiente",
|
|
2569
|
+
PAGE_X_OF_Y: "Página {0} de {1}",
|
|
2570
|
+
LOADING: "Cargando...",
|
|
2571
|
+
NO_ITEMS: "No se encontraron reservas.",
|
|
2572
|
+
ERROR: "Se produjo un error al cargar sus reservas.",
|
|
2573
|
+
PRINT_ERROR: "La impresión ha fallado, inténtelo de nuevo.",
|
|
2574
|
+
NOT_LOGGED_IN: "Inicie sesión como agente para ver sus reservas.",
|
|
2575
|
+
SESSION_EXPIRED: "Su sesión ha caducado, inicie sesión de nuevo."
|
|
2576
|
+
};
|
|
2408
2577
|
var esJson = {
|
|
2409
2578
|
STEPS: STEPS$b,
|
|
2410
2579
|
INPUT: INPUT$b,
|
|
@@ -2425,7 +2594,8 @@ var esJson = {
|
|
|
2425
2594
|
QSM: QSM$c,
|
|
2426
2595
|
SRP: SRP$b,
|
|
2427
2596
|
ITINERARY: ITINERARY$b,
|
|
2428
|
-
FORM: FORM$b
|
|
2597
|
+
FORM: FORM$b,
|
|
2598
|
+
AGENT_ENTRIES: AGENT_ENTRIES$b
|
|
2429
2599
|
};
|
|
2430
2600
|
|
|
2431
2601
|
var STEPS$a = {
|
|
@@ -2882,6 +3052,39 @@ var FORM$a = {
|
|
|
2882
3052
|
YES: "Oui",
|
|
2883
3053
|
NO: "Non"
|
|
2884
3054
|
};
|
|
3055
|
+
var AGENT_ENTRIES$a = {
|
|
3056
|
+
TITLE: "Réservations",
|
|
3057
|
+
MY_BOOKINGS: "Mes réservations",
|
|
3058
|
+
NUMBER: "Numéro",
|
|
3059
|
+
DEPARTURE_DATE: "Date de départ",
|
|
3060
|
+
STATUS: "Statut",
|
|
3061
|
+
CUSTOM_STATUS: "Statut personnalisé",
|
|
3062
|
+
RETURN_DATE: "Date de retour",
|
|
3063
|
+
PROFIT: "Bénéfice",
|
|
3064
|
+
NETTO_SELLING_PRICE: "Prix de vente net",
|
|
3065
|
+
YOUR_SURCHARGE: "Votre supplément",
|
|
3066
|
+
CREATED: "Créé le",
|
|
3067
|
+
CONTACT: "Contact",
|
|
3068
|
+
MAIN_BOOKER: "Réservant principal",
|
|
3069
|
+
PRODUCT: "Produit",
|
|
3070
|
+
TRAVELERS: "Voyageurs",
|
|
3071
|
+
ACTIONS: "Actions",
|
|
3072
|
+
DETAILS: "Détails",
|
|
3073
|
+
HIDE_DETAILS: "Masquer les détails",
|
|
3074
|
+
PRINTS: "Impressions",
|
|
3075
|
+
ALL: "Tous",
|
|
3076
|
+
X_ITEMS: "{0} éléments",
|
|
3077
|
+
PAGE_SIZE: "Éléments par page",
|
|
3078
|
+
PREVIOUS: "Précédent",
|
|
3079
|
+
NEXT: "Suivant",
|
|
3080
|
+
PAGE_X_OF_Y: "Page {0} sur {1}",
|
|
3081
|
+
LOADING: "Chargement...",
|
|
3082
|
+
NO_ITEMS: "Aucune réservation trouvée.",
|
|
3083
|
+
ERROR: "Une erreur est survenue lors du chargement de vos réservations.",
|
|
3084
|
+
PRINT_ERROR: "L'impression a échoué, veuillez réessayer.",
|
|
3085
|
+
NOT_LOGGED_IN: "Connectez-vous en tant qu'agent pour voir vos réservations.",
|
|
3086
|
+
SESSION_EXPIRED: "Votre session a expiré, veuillez vous reconnecter."
|
|
3087
|
+
};
|
|
2885
3088
|
var frBeJson = {
|
|
2886
3089
|
STEPS: STEPS$a,
|
|
2887
3090
|
INPUT: INPUT$a,
|
|
@@ -2902,7 +3105,8 @@ var frBeJson = {
|
|
|
2902
3105
|
QSM: QSM$b,
|
|
2903
3106
|
SRP: SRP$a,
|
|
2904
3107
|
ITINERARY: ITINERARY$a,
|
|
2905
|
-
FORM: FORM$a
|
|
3108
|
+
FORM: FORM$a,
|
|
3109
|
+
AGENT_ENTRIES: AGENT_ENTRIES$a
|
|
2906
3110
|
};
|
|
2907
3111
|
|
|
2908
3112
|
var STEPS$9 = {
|
|
@@ -3355,6 +3559,39 @@ var FORM$9 = {
|
|
|
3355
3559
|
YES: "Oui",
|
|
3356
3560
|
NO: "Non"
|
|
3357
3561
|
};
|
|
3562
|
+
var AGENT_ENTRIES$9 = {
|
|
3563
|
+
TITLE: "Réservations",
|
|
3564
|
+
MY_BOOKINGS: "Mes réservations",
|
|
3565
|
+
NUMBER: "Numéro",
|
|
3566
|
+
DEPARTURE_DATE: "Date de départ",
|
|
3567
|
+
STATUS: "Statut",
|
|
3568
|
+
CUSTOM_STATUS: "Statut personnalisé",
|
|
3569
|
+
RETURN_DATE: "Date de retour",
|
|
3570
|
+
PROFIT: "Bénéfice",
|
|
3571
|
+
NETTO_SELLING_PRICE: "Prix de vente net",
|
|
3572
|
+
YOUR_SURCHARGE: "Votre supplément",
|
|
3573
|
+
CREATED: "Créé le",
|
|
3574
|
+
CONTACT: "Contact",
|
|
3575
|
+
MAIN_BOOKER: "Réservant principal",
|
|
3576
|
+
PRODUCT: "Produit",
|
|
3577
|
+
TRAVELERS: "Voyageurs",
|
|
3578
|
+
ACTIONS: "Actions",
|
|
3579
|
+
DETAILS: "Détails",
|
|
3580
|
+
HIDE_DETAILS: "Masquer les détails",
|
|
3581
|
+
PRINTS: "Impressions",
|
|
3582
|
+
ALL: "Tous",
|
|
3583
|
+
X_ITEMS: "{0} éléments",
|
|
3584
|
+
PAGE_SIZE: "Éléments par page",
|
|
3585
|
+
PREVIOUS: "Précédent",
|
|
3586
|
+
NEXT: "Suivant",
|
|
3587
|
+
PAGE_X_OF_Y: "Page {0} sur {1}",
|
|
3588
|
+
LOADING: "Chargement...",
|
|
3589
|
+
NO_ITEMS: "Aucune réservation trouvée.",
|
|
3590
|
+
ERROR: "Une erreur est survenue lors du chargement de vos réservations.",
|
|
3591
|
+
PRINT_ERROR: "L'impression a échoué, veuillez réessayer.",
|
|
3592
|
+
NOT_LOGGED_IN: "Connectez-vous en tant qu'agent pour voir vos réservations.",
|
|
3593
|
+
SESSION_EXPIRED: "Votre session a expiré, veuillez vous reconnecter."
|
|
3594
|
+
};
|
|
3358
3595
|
var frFrJson = {
|
|
3359
3596
|
STEPS: STEPS$9,
|
|
3360
3597
|
INPUT: INPUT$9,
|
|
@@ -3375,7 +3612,8 @@ var frFrJson = {
|
|
|
3375
3612
|
QSM: QSM$a,
|
|
3376
3613
|
SRP: SRP$9,
|
|
3377
3614
|
ITINERARY: ITINERARY$9,
|
|
3378
|
-
FORM: FORM$9
|
|
3615
|
+
FORM: FORM$9,
|
|
3616
|
+
AGENT_ENTRIES: AGENT_ENTRIES$9
|
|
3379
3617
|
};
|
|
3380
3618
|
|
|
3381
3619
|
var STEPS$8 = {
|
|
@@ -3828,6 +4066,39 @@ var FORM$8 = {
|
|
|
3828
4066
|
YES: "Já",
|
|
3829
4067
|
NO: "Nei"
|
|
3830
4068
|
};
|
|
4069
|
+
var AGENT_ENTRIES$8 = {
|
|
4070
|
+
TITLE: "Bókanir",
|
|
4071
|
+
MY_BOOKINGS: "Mínar bókanir",
|
|
4072
|
+
NUMBER: "Númer",
|
|
4073
|
+
DEPARTURE_DATE: "Brottfarardagur",
|
|
4074
|
+
STATUS: "Staða",
|
|
4075
|
+
CUSTOM_STATUS: "Sérsniðin staða",
|
|
4076
|
+
RETURN_DATE: "Heimkomudagur",
|
|
4077
|
+
PROFIT: "Hagnaður",
|
|
4078
|
+
NETTO_SELLING_PRICE: "Nettó söluverð",
|
|
4079
|
+
YOUR_SURCHARGE: "Þitt álag",
|
|
4080
|
+
CREATED: "Stofnað",
|
|
4081
|
+
CONTACT: "Tengiliður",
|
|
4082
|
+
MAIN_BOOKER: "Aðalbókandi",
|
|
4083
|
+
PRODUCT: "Vara",
|
|
4084
|
+
TRAVELERS: "Ferðalangar",
|
|
4085
|
+
ACTIONS: "Aðgerðir",
|
|
4086
|
+
DETAILS: "Nánar",
|
|
4087
|
+
HIDE_DETAILS: "Fela nánar",
|
|
4088
|
+
PRINTS: "Útprentanir",
|
|
4089
|
+
ALL: "Allt",
|
|
4090
|
+
X_ITEMS: "{0} atriði",
|
|
4091
|
+
PAGE_SIZE: "Atriði á síðu",
|
|
4092
|
+
PREVIOUS: "Fyrri",
|
|
4093
|
+
NEXT: "Næsta",
|
|
4094
|
+
PAGE_X_OF_Y: "Síða {0} af {1}",
|
|
4095
|
+
LOADING: "Hleður...",
|
|
4096
|
+
NO_ITEMS: "Engar bókanir fundust.",
|
|
4097
|
+
ERROR: "Eitthvað fór úrskeiðis við að hlaða bókunum þínum.",
|
|
4098
|
+
PRINT_ERROR: "Prentun mistókst, reyndu aftur.",
|
|
4099
|
+
NOT_LOGGED_IN: "Skráðu þig inn sem umboðsaðili til að sjá bókanir þínar.",
|
|
4100
|
+
SESSION_EXPIRED: "Lotan þín er útrunnin, skráðu þig inn aftur."
|
|
4101
|
+
};
|
|
3831
4102
|
var isJson = {
|
|
3832
4103
|
STEPS: STEPS$8,
|
|
3833
4104
|
INPUT: INPUT$8,
|
|
@@ -3848,7 +4119,8 @@ var isJson = {
|
|
|
3848
4119
|
QSM: QSM$9,
|
|
3849
4120
|
SRP: SRP$8,
|
|
3850
4121
|
ITINERARY: ITINERARY$8,
|
|
3851
|
-
FORM: FORM$8
|
|
4122
|
+
FORM: FORM$8,
|
|
4123
|
+
AGENT_ENTRIES: AGENT_ENTRIES$8
|
|
3852
4124
|
};
|
|
3853
4125
|
|
|
3854
4126
|
var STEPS$7 = {
|
|
@@ -4301,6 +4573,39 @@ var FORM$7 = {
|
|
|
4301
4573
|
YES: "Sì",
|
|
4302
4574
|
NO: "No"
|
|
4303
4575
|
};
|
|
4576
|
+
var AGENT_ENTRIES$7 = {
|
|
4577
|
+
TITLE: "Prenotazioni",
|
|
4578
|
+
MY_BOOKINGS: "Le mie prenotazioni",
|
|
4579
|
+
NUMBER: "Numero",
|
|
4580
|
+
DEPARTURE_DATE: "Data di partenza",
|
|
4581
|
+
STATUS: "Stato",
|
|
4582
|
+
CUSTOM_STATUS: "Stato personalizzato",
|
|
4583
|
+
RETURN_DATE: "Data di ritorno",
|
|
4584
|
+
PROFIT: "Profitto",
|
|
4585
|
+
NETTO_SELLING_PRICE: "Prezzo di vendita netto",
|
|
4586
|
+
YOUR_SURCHARGE: "Il tuo supplemento",
|
|
4587
|
+
CREATED: "Creato",
|
|
4588
|
+
CONTACT: "Contatto",
|
|
4589
|
+
MAIN_BOOKER: "Prenotante principale",
|
|
4590
|
+
PRODUCT: "Prodotto",
|
|
4591
|
+
TRAVELERS: "Viaggiatori",
|
|
4592
|
+
ACTIONS: "Azioni",
|
|
4593
|
+
DETAILS: "Dettagli",
|
|
4594
|
+
HIDE_DETAILS: "Nascondi dettagli",
|
|
4595
|
+
PRINTS: "Stampe",
|
|
4596
|
+
ALL: "Tutti",
|
|
4597
|
+
X_ITEMS: "{0} elementi",
|
|
4598
|
+
PAGE_SIZE: "Elementi per pagina",
|
|
4599
|
+
PREVIOUS: "Precedente",
|
|
4600
|
+
NEXT: "Successivo",
|
|
4601
|
+
PAGE_X_OF_Y: "Pagina {0} di {1}",
|
|
4602
|
+
LOADING: "Caricamento...",
|
|
4603
|
+
NO_ITEMS: "Nessuna prenotazione trovata.",
|
|
4604
|
+
ERROR: "Si è verificato un errore durante il caricamento delle prenotazioni.",
|
|
4605
|
+
PRINT_ERROR: "Stampa non riuscita, riprova.",
|
|
4606
|
+
NOT_LOGGED_IN: "Accedi come agente per vedere le tue prenotazioni.",
|
|
4607
|
+
SESSION_EXPIRED: "La sessione è scaduta, accedi di nuovo."
|
|
4608
|
+
};
|
|
4304
4609
|
var itJson = {
|
|
4305
4610
|
STEPS: STEPS$7,
|
|
4306
4611
|
INPUT: INPUT$7,
|
|
@@ -4321,7 +4626,8 @@ var itJson = {
|
|
|
4321
4626
|
QSM: QSM$8,
|
|
4322
4627
|
SRP: SRP$7,
|
|
4323
4628
|
ITINERARY: ITINERARY$7,
|
|
4324
|
-
FORM: FORM$7
|
|
4629
|
+
FORM: FORM$7,
|
|
4630
|
+
AGENT_ENTRIES: AGENT_ENTRIES$7
|
|
4325
4631
|
};
|
|
4326
4632
|
|
|
4327
4633
|
var STEPS$6 = {
|
|
@@ -4778,6 +5084,39 @@ var FORM$6 = {
|
|
|
4778
5084
|
YES: "Ja",
|
|
4779
5085
|
NO: "Nee"
|
|
4780
5086
|
};
|
|
5087
|
+
var AGENT_ENTRIES$6 = {
|
|
5088
|
+
TITLE: "Boekingen",
|
|
5089
|
+
MY_BOOKINGS: "Mijn boekingen",
|
|
5090
|
+
NUMBER: "Nummer",
|
|
5091
|
+
DEPARTURE_DATE: "Vertrekdatum",
|
|
5092
|
+
STATUS: "Status",
|
|
5093
|
+
CUSTOM_STATUS: "Aangepaste status",
|
|
5094
|
+
RETURN_DATE: "Terugkeerdatum",
|
|
5095
|
+
PROFIT: "Winst",
|
|
5096
|
+
NETTO_SELLING_PRICE: "Netto verkoopprijs",
|
|
5097
|
+
YOUR_SURCHARGE: "Jouw toeslag",
|
|
5098
|
+
CREATED: "Aangemaakt",
|
|
5099
|
+
CONTACT: "Contact",
|
|
5100
|
+
MAIN_BOOKER: "Hoofdboeker",
|
|
5101
|
+
PRODUCT: "Product",
|
|
5102
|
+
TRAVELERS: "Reizigers",
|
|
5103
|
+
ACTIONS: "Acties",
|
|
5104
|
+
DETAILS: "Details",
|
|
5105
|
+
HIDE_DETAILS: "Details verbergen",
|
|
5106
|
+
PRINTS: "Afdrukken",
|
|
5107
|
+
ALL: "Alle",
|
|
5108
|
+
X_ITEMS: "{0} items",
|
|
5109
|
+
PAGE_SIZE: "Items per pagina",
|
|
5110
|
+
PREVIOUS: "Vorige",
|
|
5111
|
+
NEXT: "Volgende",
|
|
5112
|
+
PAGE_X_OF_Y: "Pagina {0} van {1}",
|
|
5113
|
+
LOADING: "Laden...",
|
|
5114
|
+
NO_ITEMS: "Geen boekingen gevonden.",
|
|
5115
|
+
ERROR: "Er ging iets mis bij het laden van je boekingen.",
|
|
5116
|
+
PRINT_ERROR: "Afdrukken mislukt, probeer het opnieuw.",
|
|
5117
|
+
NOT_LOGGED_IN: "Log in als agent om je boekingen te zien.",
|
|
5118
|
+
SESSION_EXPIRED: "Je sessie is verlopen, log opnieuw in."
|
|
5119
|
+
};
|
|
4781
5120
|
var nlBeJson = {
|
|
4782
5121
|
STEPS: STEPS$6,
|
|
4783
5122
|
INPUT: INPUT$6,
|
|
@@ -4798,7 +5137,8 @@ var nlBeJson = {
|
|
|
4798
5137
|
QSM: QSM$7,
|
|
4799
5138
|
SRP: SRP$6,
|
|
4800
5139
|
ITINERARY: ITINERARY$6,
|
|
4801
|
-
FORM: FORM$6
|
|
5140
|
+
FORM: FORM$6,
|
|
5141
|
+
AGENT_ENTRIES: AGENT_ENTRIES$6
|
|
4802
5142
|
};
|
|
4803
5143
|
|
|
4804
5144
|
var STEPS$5 = {
|
|
@@ -5251,6 +5591,39 @@ var FORM$5 = {
|
|
|
5251
5591
|
YES: "Ja",
|
|
5252
5592
|
NO: "Nee"
|
|
5253
5593
|
};
|
|
5594
|
+
var AGENT_ENTRIES$5 = {
|
|
5595
|
+
TITLE: "Boekingen",
|
|
5596
|
+
MY_BOOKINGS: "Mijn boekingen",
|
|
5597
|
+
NUMBER: "Nummer",
|
|
5598
|
+
DEPARTURE_DATE: "Vertrekdatum",
|
|
5599
|
+
STATUS: "Status",
|
|
5600
|
+
CUSTOM_STATUS: "Aangepaste status",
|
|
5601
|
+
RETURN_DATE: "Terugkeerdatum",
|
|
5602
|
+
PROFIT: "Winst",
|
|
5603
|
+
NETTO_SELLING_PRICE: "Netto verkoopprijs",
|
|
5604
|
+
YOUR_SURCHARGE: "Jouw toeslag",
|
|
5605
|
+
CREATED: "Aangemaakt",
|
|
5606
|
+
CONTACT: "Contact",
|
|
5607
|
+
MAIN_BOOKER: "Hoofdboeker",
|
|
5608
|
+
PRODUCT: "Product",
|
|
5609
|
+
TRAVELERS: "Reizigers",
|
|
5610
|
+
ACTIONS: "Acties",
|
|
5611
|
+
DETAILS: "Details",
|
|
5612
|
+
HIDE_DETAILS: "Details verbergen",
|
|
5613
|
+
PRINTS: "Afdrukken",
|
|
5614
|
+
ALL: "Alle",
|
|
5615
|
+
X_ITEMS: "{0} items",
|
|
5616
|
+
PAGE_SIZE: "Items per pagina",
|
|
5617
|
+
PREVIOUS: "Vorige",
|
|
5618
|
+
NEXT: "Volgende",
|
|
5619
|
+
PAGE_X_OF_Y: "Pagina {0} van {1}",
|
|
5620
|
+
LOADING: "Laden...",
|
|
5621
|
+
NO_ITEMS: "Geen boekingen gevonden.",
|
|
5622
|
+
ERROR: "Er ging iets mis bij het laden van je boekingen.",
|
|
5623
|
+
PRINT_ERROR: "Afdrukken mislukt, probeer het opnieuw.",
|
|
5624
|
+
NOT_LOGGED_IN: "Log in als agent om je boekingen te zien.",
|
|
5625
|
+
SESSION_EXPIRED: "Je sessie is verlopen, log opnieuw in."
|
|
5626
|
+
};
|
|
5254
5627
|
var nlNlJson = {
|
|
5255
5628
|
STEPS: STEPS$5,
|
|
5256
5629
|
INPUT: INPUT$5,
|
|
@@ -5271,7 +5644,8 @@ var nlNlJson = {
|
|
|
5271
5644
|
QSM: QSM$6,
|
|
5272
5645
|
SRP: SRP$5,
|
|
5273
5646
|
ITINERARY: ITINERARY$5,
|
|
5274
|
-
FORM: FORM$5
|
|
5647
|
+
FORM: FORM$5,
|
|
5648
|
+
AGENT_ENTRIES: AGENT_ENTRIES$5
|
|
5275
5649
|
};
|
|
5276
5650
|
|
|
5277
5651
|
var STEPS$4 = {
|
|
@@ -5724,6 +6098,39 @@ var FORM$4 = {
|
|
|
5724
6098
|
YES: "Ja",
|
|
5725
6099
|
NO: "Nei"
|
|
5726
6100
|
};
|
|
6101
|
+
var AGENT_ENTRIES$4 = {
|
|
6102
|
+
TITLE: "Bestillinger",
|
|
6103
|
+
MY_BOOKINGS: "Mine bestillinger",
|
|
6104
|
+
NUMBER: "Nummer",
|
|
6105
|
+
DEPARTURE_DATE: "Avreisedato",
|
|
6106
|
+
STATUS: "Status",
|
|
6107
|
+
CUSTOM_STATUS: "Egendefinert status",
|
|
6108
|
+
RETURN_DATE: "Returdato",
|
|
6109
|
+
PROFIT: "Fortjeneste",
|
|
6110
|
+
NETTO_SELLING_PRICE: "Netto salgspris",
|
|
6111
|
+
YOUR_SURCHARGE: "Ditt tillegg",
|
|
6112
|
+
CREATED: "Opprettet",
|
|
6113
|
+
CONTACT: "Kontakt",
|
|
6114
|
+
MAIN_BOOKER: "Hovedbestiller",
|
|
6115
|
+
PRODUCT: "Produkt",
|
|
6116
|
+
TRAVELERS: "Reisende",
|
|
6117
|
+
ACTIONS: "Handlinger",
|
|
6118
|
+
DETAILS: "Detaljer",
|
|
6119
|
+
HIDE_DETAILS: "Skjul detaljer",
|
|
6120
|
+
PRINTS: "Utskrifter",
|
|
6121
|
+
ALL: "Alle",
|
|
6122
|
+
X_ITEMS: "{0} elementer",
|
|
6123
|
+
PAGE_SIZE: "Elementer per side",
|
|
6124
|
+
PREVIOUS: "Forrige",
|
|
6125
|
+
NEXT: "Neste",
|
|
6126
|
+
PAGE_X_OF_Y: "Side {0} av {1}",
|
|
6127
|
+
LOADING: "Laster...",
|
|
6128
|
+
NO_ITEMS: "Ingen bestillinger funnet.",
|
|
6129
|
+
ERROR: "Noe gikk galt under lasting av bestillingene dine.",
|
|
6130
|
+
PRINT_ERROR: "Utskrift mislyktes, prøv igjen.",
|
|
6131
|
+
NOT_LOGGED_IN: "Logg inn som agent for å se bestillingene dine.",
|
|
6132
|
+
SESSION_EXPIRED: "Økten din er utløpt, logg inn på nytt."
|
|
6133
|
+
};
|
|
5727
6134
|
var noJson = {
|
|
5728
6135
|
STEPS: STEPS$4,
|
|
5729
6136
|
INPUT: INPUT$4,
|
|
@@ -5744,7 +6151,8 @@ var noJson = {
|
|
|
5744
6151
|
QSM: QSM$5,
|
|
5745
6152
|
SRP: SRP$4,
|
|
5746
6153
|
ITINERARY: ITINERARY$4,
|
|
5747
|
-
FORM: FORM$4
|
|
6154
|
+
FORM: FORM$4,
|
|
6155
|
+
AGENT_ENTRIES: AGENT_ENTRIES$4
|
|
5748
6156
|
};
|
|
5749
6157
|
|
|
5750
6158
|
var STEPS$3 = {
|
|
@@ -6197,6 +6605,39 @@ var FORM$3 = {
|
|
|
6197
6605
|
YES: "Tak",
|
|
6198
6606
|
NO: "Nie"
|
|
6199
6607
|
};
|
|
6608
|
+
var AGENT_ENTRIES$3 = {
|
|
6609
|
+
TITLE: "Rezerwacje",
|
|
6610
|
+
MY_BOOKINGS: "Moje rezerwacje",
|
|
6611
|
+
NUMBER: "Numer",
|
|
6612
|
+
DEPARTURE_DATE: "Data wyjazdu",
|
|
6613
|
+
STATUS: "Status",
|
|
6614
|
+
CUSTOM_STATUS: "Status niestandardowy",
|
|
6615
|
+
RETURN_DATE: "Data powrotu",
|
|
6616
|
+
PROFIT: "Zysk",
|
|
6617
|
+
NETTO_SELLING_PRICE: "Cena sprzedaży netto",
|
|
6618
|
+
YOUR_SURCHARGE: "Twoja dopłata",
|
|
6619
|
+
CREATED: "Utworzono",
|
|
6620
|
+
CONTACT: "Kontakt",
|
|
6621
|
+
MAIN_BOOKER: "Główny rezerwujący",
|
|
6622
|
+
PRODUCT: "Produkt",
|
|
6623
|
+
TRAVELERS: "Podróżni",
|
|
6624
|
+
ACTIONS: "Akcje",
|
|
6625
|
+
DETAILS: "Szczegóły",
|
|
6626
|
+
HIDE_DETAILS: "Ukryj szczegóły",
|
|
6627
|
+
PRINTS: "Wydruki",
|
|
6628
|
+
ALL: "Wszystkie",
|
|
6629
|
+
X_ITEMS: "{0} pozycji",
|
|
6630
|
+
PAGE_SIZE: "Pozycji na stronę",
|
|
6631
|
+
PREVIOUS: "Poprzednia",
|
|
6632
|
+
NEXT: "Następna",
|
|
6633
|
+
PAGE_X_OF_Y: "Strona {0} z {1}",
|
|
6634
|
+
LOADING: "Ładowanie...",
|
|
6635
|
+
NO_ITEMS: "Nie znaleziono rezerwacji.",
|
|
6636
|
+
ERROR: "Wystąpił błąd podczas ładowania rezerwacji.",
|
|
6637
|
+
PRINT_ERROR: "Drukowanie nie powiodło się, spróbuj ponownie.",
|
|
6638
|
+
NOT_LOGGED_IN: "Zaloguj się jako agent, aby zobaczyć swoje rezerwacje.",
|
|
6639
|
+
SESSION_EXPIRED: "Twoja sesja wygasła, zaloguj się ponownie."
|
|
6640
|
+
};
|
|
6200
6641
|
var plJson = {
|
|
6201
6642
|
STEPS: STEPS$3,
|
|
6202
6643
|
INPUT: INPUT$3,
|
|
@@ -6217,7 +6658,8 @@ var plJson = {
|
|
|
6217
6658
|
QSM: QSM$4,
|
|
6218
6659
|
SRP: SRP$3,
|
|
6219
6660
|
ITINERARY: ITINERARY$3,
|
|
6220
|
-
FORM: FORM$3
|
|
6661
|
+
FORM: FORM$3,
|
|
6662
|
+
AGENT_ENTRIES: AGENT_ENTRIES$3
|
|
6221
6663
|
};
|
|
6222
6664
|
|
|
6223
6665
|
var STEPS$2 = {
|
|
@@ -6670,6 +7112,39 @@ var FORM$2 = {
|
|
|
6670
7112
|
YES: "Sim",
|
|
6671
7113
|
NO: "Não"
|
|
6672
7114
|
};
|
|
7115
|
+
var AGENT_ENTRIES$2 = {
|
|
7116
|
+
TITLE: "Reservas",
|
|
7117
|
+
MY_BOOKINGS: "As minhas reservas",
|
|
7118
|
+
NUMBER: "Número",
|
|
7119
|
+
DEPARTURE_DATE: "Data de partida",
|
|
7120
|
+
STATUS: "Estado",
|
|
7121
|
+
CUSTOM_STATUS: "Estado personalizado",
|
|
7122
|
+
RETURN_DATE: "Data de regresso",
|
|
7123
|
+
PROFIT: "Lucro",
|
|
7124
|
+
NETTO_SELLING_PRICE: "Preço de venda líquido",
|
|
7125
|
+
YOUR_SURCHARGE: "A sua sobretaxa",
|
|
7126
|
+
CREATED: "Criado",
|
|
7127
|
+
CONTACT: "Contacto",
|
|
7128
|
+
MAIN_BOOKER: "Titular da reserva",
|
|
7129
|
+
PRODUCT: "Produto",
|
|
7130
|
+
TRAVELERS: "Viajantes",
|
|
7131
|
+
ACTIONS: "Ações",
|
|
7132
|
+
DETAILS: "Detalhes",
|
|
7133
|
+
HIDE_DETAILS: "Ocultar detalhes",
|
|
7134
|
+
PRINTS: "Impressões",
|
|
7135
|
+
ALL: "Todos",
|
|
7136
|
+
X_ITEMS: "{0} itens",
|
|
7137
|
+
PAGE_SIZE: "Itens por página",
|
|
7138
|
+
PREVIOUS: "Anterior",
|
|
7139
|
+
NEXT: "Seguinte",
|
|
7140
|
+
PAGE_X_OF_Y: "Página {0} de {1}",
|
|
7141
|
+
LOADING: "A carregar...",
|
|
7142
|
+
NO_ITEMS: "Nenhuma reserva encontrada.",
|
|
7143
|
+
ERROR: "Ocorreu um erro ao carregar as suas reservas.",
|
|
7144
|
+
PRINT_ERROR: "A impressão falhou, tente novamente.",
|
|
7145
|
+
NOT_LOGGED_IN: "Inicie sessão como agente para ver as suas reservas.",
|
|
7146
|
+
SESSION_EXPIRED: "A sua sessão expirou, inicie sessão novamente."
|
|
7147
|
+
};
|
|
6673
7148
|
var ptJson = {
|
|
6674
7149
|
STEPS: STEPS$2,
|
|
6675
7150
|
INPUT: INPUT$2,
|
|
@@ -6690,7 +7165,8 @@ var ptJson = {
|
|
|
6690
7165
|
QSM: QSM$3,
|
|
6691
7166
|
SRP: SRP$2,
|
|
6692
7167
|
ITINERARY: ITINERARY$2,
|
|
6693
|
-
FORM: FORM$2
|
|
7168
|
+
FORM: FORM$2,
|
|
7169
|
+
AGENT_ENTRIES: AGENT_ENTRIES$2
|
|
6694
7170
|
};
|
|
6695
7171
|
|
|
6696
7172
|
var STEPS$1 = {
|
|
@@ -7143,6 +7619,39 @@ var FORM$1 = {
|
|
|
7143
7619
|
YES: "Ja",
|
|
7144
7620
|
NO: "Nej"
|
|
7145
7621
|
};
|
|
7622
|
+
var AGENT_ENTRIES$1 = {
|
|
7623
|
+
TITLE: "Bokningar",
|
|
7624
|
+
MY_BOOKINGS: "Mina bokningar",
|
|
7625
|
+
NUMBER: "Nummer",
|
|
7626
|
+
DEPARTURE_DATE: "Avresedatum",
|
|
7627
|
+
STATUS: "Status",
|
|
7628
|
+
CUSTOM_STATUS: "Anpassad status",
|
|
7629
|
+
RETURN_DATE: "Returdatum",
|
|
7630
|
+
PROFIT: "Vinst",
|
|
7631
|
+
NETTO_SELLING_PRICE: "Nettoförsäljningspris",
|
|
7632
|
+
YOUR_SURCHARGE: "Ditt tillägg",
|
|
7633
|
+
CREATED: "Skapad",
|
|
7634
|
+
CONTACT: "Kontakt",
|
|
7635
|
+
MAIN_BOOKER: "Huvudbokare",
|
|
7636
|
+
PRODUCT: "Produkt",
|
|
7637
|
+
TRAVELERS: "Resenärer",
|
|
7638
|
+
ACTIONS: "Åtgärder",
|
|
7639
|
+
DETAILS: "Detaljer",
|
|
7640
|
+
HIDE_DETAILS: "Dölj detaljer",
|
|
7641
|
+
PRINTS: "Utskrifter",
|
|
7642
|
+
ALL: "Alla",
|
|
7643
|
+
X_ITEMS: "{0} objekt",
|
|
7644
|
+
PAGE_SIZE: "Objekt per sida",
|
|
7645
|
+
PREVIOUS: "Föregående",
|
|
7646
|
+
NEXT: "Nästa",
|
|
7647
|
+
PAGE_X_OF_Y: "Sida {0} av {1}",
|
|
7648
|
+
LOADING: "Laddar...",
|
|
7649
|
+
NO_ITEMS: "Inga bokningar hittades.",
|
|
7650
|
+
ERROR: "Något gick fel när dina bokningar laddades.",
|
|
7651
|
+
PRINT_ERROR: "Utskriften misslyckades, försök igen.",
|
|
7652
|
+
NOT_LOGGED_IN: "Logga in som agent för att se dina bokningar.",
|
|
7653
|
+
SESSION_EXPIRED: "Din session har gått ut, logga in igen."
|
|
7654
|
+
};
|
|
7146
7655
|
var svJson = {
|
|
7147
7656
|
STEPS: STEPS$1,
|
|
7148
7657
|
INPUT: INPUT$1,
|
|
@@ -7163,7 +7672,8 @@ var svJson = {
|
|
|
7163
7672
|
QSM: QSM$2,
|
|
7164
7673
|
SRP: SRP$1,
|
|
7165
7674
|
ITINERARY: ITINERARY$1,
|
|
7166
|
-
FORM: FORM$1
|
|
7675
|
+
FORM: FORM$1,
|
|
7676
|
+
AGENT_ENTRIES: AGENT_ENTRIES$1
|
|
7167
7677
|
};
|
|
7168
7678
|
|
|
7169
7679
|
var STEPS = {
|
|
@@ -7616,6 +8126,39 @@ var FORM = {
|
|
|
7616
8126
|
YES: "はい",
|
|
7617
8127
|
NO: "いいえ"
|
|
7618
8128
|
};
|
|
8129
|
+
var AGENT_ENTRIES = {
|
|
8130
|
+
TITLE: "予約",
|
|
8131
|
+
MY_BOOKINGS: "マイ予約",
|
|
8132
|
+
NUMBER: "番号",
|
|
8133
|
+
DEPARTURE_DATE: "出発日",
|
|
8134
|
+
STATUS: "ステータス",
|
|
8135
|
+
CUSTOM_STATUS: "カスタムステータス",
|
|
8136
|
+
RETURN_DATE: "帰着日",
|
|
8137
|
+
PROFIT: "利益",
|
|
8138
|
+
NETTO_SELLING_PRICE: "正味販売価格",
|
|
8139
|
+
YOUR_SURCHARGE: "手数料",
|
|
8140
|
+
CREATED: "作成日",
|
|
8141
|
+
CONTACT: "連絡先",
|
|
8142
|
+
MAIN_BOOKER: "代表予約者",
|
|
8143
|
+
PRODUCT: "商品",
|
|
8144
|
+
TRAVELERS: "旅行者",
|
|
8145
|
+
ACTIONS: "操作",
|
|
8146
|
+
DETAILS: "詳細",
|
|
8147
|
+
HIDE_DETAILS: "詳細を隠す",
|
|
8148
|
+
PRINTS: "印刷",
|
|
8149
|
+
ALL: "すべて",
|
|
8150
|
+
X_ITEMS: "{0} 件",
|
|
8151
|
+
PAGE_SIZE: "1ページあたりの件数",
|
|
8152
|
+
PREVIOUS: "前へ",
|
|
8153
|
+
NEXT: "次へ",
|
|
8154
|
+
PAGE_X_OF_Y: "{0} / {1} ページ",
|
|
8155
|
+
LOADING: "読み込み中...",
|
|
8156
|
+
NO_ITEMS: "予約が見つかりません。",
|
|
8157
|
+
ERROR: "予約の読み込み中にエラーが発生しました。",
|
|
8158
|
+
PRINT_ERROR: "印刷に失敗しました。もう一度お試しください。",
|
|
8159
|
+
NOT_LOGGED_IN: "予約を表示するにはエージェントとしてログインしてください。",
|
|
8160
|
+
SESSION_EXPIRED: "セッションの有効期限が切れました。再度ログインしてください。"
|
|
8161
|
+
};
|
|
7619
8162
|
var jaJson = {
|
|
7620
8163
|
STEPS: STEPS,
|
|
7621
8164
|
INPUT: INPUT,
|
|
@@ -7636,7 +8179,8 @@ var jaJson = {
|
|
|
7636
8179
|
QSM: QSM$1,
|
|
7637
8180
|
SRP: SRP,
|
|
7638
8181
|
ITINERARY: ITINERARY,
|
|
7639
|
-
FORM: FORM
|
|
8182
|
+
FORM: FORM,
|
|
8183
|
+
AGENT_ENTRIES: AGENT_ENTRIES
|
|
7640
8184
|
};
|
|
7641
8185
|
|
|
7642
8186
|
exports.DepartureRange = void 0;
|
|
@@ -26555,7 +27099,7 @@ const LanguageSwitcher = ({ value = 'EN', languages = DEFAULT_LANGUAGES, onChang
|
|
|
26555
27099
|
React__default["default"].createElement("span", { className: "nav__subnav__languages__option__label" }, l.label)))))));
|
|
26556
27100
|
};
|
|
26557
27101
|
|
|
26558
|
-
const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, languages, onLanguageChange, onSearch, member, onLogin, onLogout }) => {
|
|
27102
|
+
const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, languages, onLanguageChange, onSearch, member, onLogin, onLogout, onMyBookings }) => {
|
|
26559
27103
|
const [menuOpen, setMenuOpen] = React.useState(false);
|
|
26560
27104
|
const [query, setQuery] = React.useState('');
|
|
26561
27105
|
const [activeMobileGroup, setActiveMobileGroup] = React.useState();
|
|
@@ -26649,6 +27193,12 @@ const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, lan
|
|
|
26649
27193
|
onLogout();
|
|
26650
27194
|
}
|
|
26651
27195
|
};
|
|
27196
|
+
const handleMyBookings = (event) => {
|
|
27197
|
+
event.preventDefault();
|
|
27198
|
+
if (onMyBookings) {
|
|
27199
|
+
onMyBookings();
|
|
27200
|
+
}
|
|
27201
|
+
};
|
|
26652
27202
|
const handleLogin = (event) => {
|
|
26653
27203
|
event.preventDefault();
|
|
26654
27204
|
if (onLogin) {
|
|
@@ -26662,7 +27212,9 @@ const Navbar = ({ currentPath, logo, onLogoClick, topLinks, items, language, lan
|
|
|
26662
27212
|
member && (React__default["default"].createElement("span", { className: "nav__subnav__member" },
|
|
26663
27213
|
translations.LOGIN.WELCOME_X,
|
|
26664
27214
|
member.name)),
|
|
26665
|
-
member ? (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
27215
|
+
member ? (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
27216
|
+
onMyBookings && (React__default["default"].createElement("a", { href: "#", className: "nav__subnav__link", onClick: handleMyBookings }, translations.AGENT_ENTRIES.MY_BOOKINGS)),
|
|
27217
|
+
onLogout && (React__default["default"].createElement("a", { href: "#", className: "nav__subnav__link", onClick: handleLogout }, translations.LOGIN.LOGOUT)))) : (React__default["default"].createElement(React__default["default"].Fragment, null, onLogin && (React__default["default"].createElement("a", { href: "#", className: "nav__subnav__link", onClick: handleLogin }, translations.LOGIN.LOGIN)))),
|
|
26666
27218
|
React__default["default"].createElement(LanguageSwitcher, { value: language.code, languages: languages, onChange: (lang) => {
|
|
26667
27219
|
console.log('Selected language:', lang);
|
|
26668
27220
|
onLanguageChange(lang);
|
|
@@ -29746,7 +30298,9 @@ const TrajectItinerary = ({ trajectEntry, packagingEntry, translations }) => {
|
|
|
29746
30298
|
.map((node) => {
|
|
29747
30299
|
const guids = node.lineGuids?.length ? node.lineGuids : [node.lineGuid];
|
|
29748
30300
|
const lines = guids.map((guid) => linesByGuid.get(guid)).filter((x) => !!x);
|
|
29749
|
-
|
|
30301
|
+
const groupKey = lines.length ? getLineGroupKey(lines[0]) : '';
|
|
30302
|
+
const active = groupKey ? getGroupLines(packagingEntry.lines ?? [], groupKey)[0] : undefined;
|
|
30303
|
+
return { node, lines: active ?? lines };
|
|
29750
30304
|
});
|
|
29751
30305
|
const claimed = new Set(nodes.flatMap((item) => item.lines.map((line) => line.guid)));
|
|
29752
30306
|
const extras = (packagingEntry.lines ?? []).filter((line) => !claimed.has(line.guid)).filter(isMeaningfulItineraryLine);
|
|
@@ -35696,6 +36250,25 @@ const BookPackagingEntry = ({ activeSearchSeed, isLoading, isConfirmationPage })
|
|
|
35696
36250
|
React__default["default"].createElement(WLSidebar, { activeSearchSeed: activeSearchSeed, packagingAccoResult: selectedPackagingAccoResult }))));
|
|
35697
36251
|
};
|
|
35698
36252
|
|
|
36253
|
+
// A horizontally scrolling row of cards whose selected cards sit first. Choosing a card moves it to the front of the row
|
|
36254
|
+
const TrajectCardRow = ({ selectionKey, children }) => {
|
|
36255
|
+
const ref = React.useRef(null);
|
|
36256
|
+
const previousKey = React.useRef(selectionKey);
|
|
36257
|
+
React.useEffect(() => {
|
|
36258
|
+
if (previousKey.current === selectionKey)
|
|
36259
|
+
return;
|
|
36260
|
+
previousKey.current = selectionKey;
|
|
36261
|
+
const row = ref.current;
|
|
36262
|
+
if (!row || row.scrollLeft === 0)
|
|
36263
|
+
return;
|
|
36264
|
+
if (typeof row.scrollTo === 'function')
|
|
36265
|
+
row.scrollTo({ left: 0, behavior: 'smooth' });
|
|
36266
|
+
else
|
|
36267
|
+
row.scrollLeft = 0;
|
|
36268
|
+
}, [selectionKey]);
|
|
36269
|
+
return (React__default["default"].createElement("div", { ref: ref, className: "search__results__cards search__results__cards--scroll" }, children));
|
|
36270
|
+
};
|
|
36271
|
+
|
|
35699
36272
|
const useTrajectDayActivities = () => {
|
|
35700
36273
|
const context = React.useContext(SearchResultsConfigurationContext);
|
|
35701
36274
|
const dispatch = reactRedux.useDispatch();
|
|
@@ -35897,7 +36470,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35897
36470
|
node.preferredAccommodationName,
|
|
35898
36471
|
" \u2014 ",
|
|
35899
36472
|
translations.SRP.NO_RESULTS))),
|
|
35900
|
-
React__default["default"].createElement(
|
|
36473
|
+
React__default["default"].createElement(TrajectCardRow, { selectionKey: selected.code }, [selected, ...configured, ...fill].map((result) => (React__default["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 })))),
|
|
35901
36474
|
remaining > 0 && !hideShowMoreResults && (React__default["default"].createElement("div", { className: "search__results__cards__actions" },
|
|
35902
36475
|
React__default["default"].createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => handleShowMore(item) },
|
|
35903
36476
|
translations.SRP.SHOW_MORE,
|
|
@@ -35944,6 +36517,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35944
36517
|
};
|
|
35945
36518
|
/** The lines a suggested activity put on the entry, which is also how we know it was added. */
|
|
35946
36519
|
const getAddedExcursionLines = (result) => (editablePackagingEntry?.lines ?? []).filter((line) => line.serviceType === EXCURSION_SERVICE_TYPE && line.productCode === result.code && dateFns.isSameDay(new Date(line.from), new Date(result.fromDate)));
|
|
36520
|
+
const isActivitySelected = ({ result, item }) => item ? trajectNodeAvailability[item.line.guid]?.selectedCode === result.code : getAddedExcursionLines(result).length > 0;
|
|
35947
36521
|
const handleToggleActivity = (result) => {
|
|
35948
36522
|
const added = getAddedExcursionLines(result);
|
|
35949
36523
|
if (added.length) {
|
|
@@ -35982,7 +36556,9 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
35982
36556
|
const renderDayActivities = (day) => {
|
|
35983
36557
|
const items = getDayExcursionItems(day.order);
|
|
35984
36558
|
const suggestions = trajectDaySuggestions[day.order];
|
|
35985
|
-
const
|
|
36559
|
+
const allCards = buildDayActivityCards(items, trajectNodeAvailability, suggestions?.results ?? []);
|
|
36560
|
+
const selectedCards = allCards.filter(isActivitySelected);
|
|
36561
|
+
const cards = [...selectedCards, ...allCards.filter((card) => !isActivitySelected(card))];
|
|
35986
36562
|
const nodesResolving = items.some((item) => (trajectNodeAvailability[item.line.guid]?.status ?? 'loading') === 'loading');
|
|
35987
36563
|
const isSearching = suggestions?.status === 'loading';
|
|
35988
36564
|
// A day is worth filling only if the party is staying somewhere that night. The day they fly
|
|
@@ -36001,7 +36577,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
36001
36577
|
React__default["default"].createElement("h3", null,
|
|
36002
36578
|
React__default["default"].createElement("strong", null, translations.SRP.ACTIVITIES)))),
|
|
36003
36579
|
(nodesResolving || isSearching) && !cards.length && React__default["default"].createElement(Spinner, { label: translations.SRP.LOADING_ACTIVITIES }),
|
|
36004
|
-
!!cards.length && React__default["default"].createElement(
|
|
36580
|
+
!!cards.length && (React__default["default"].createElement(TrajectCardRow, { selectionKey: selectedCards.map((card) => card.result.code).join('|') }, visible.map(renderActivityCard))),
|
|
36005
36581
|
!nodesResolving && !isSearching && !cards.length && (!!items.length || !!suggestions) && (React__default["default"].createElement("div", { className: "no-results" }, translations.SRP.NO_RESULTS)),
|
|
36006
36582
|
React__default["default"].createElement("div", { className: "search__results__cards__actions" },
|
|
36007
36583
|
awaitsRequest && (React__default["default"].createElement("button", { type: "button", className: "cta cta--secondary", onClick: () => loadDay(day) }, translations.SRP.SHOW_ACTIVITIES)),
|
|
@@ -36016,7 +36592,7 @@ const TrajectResults = ({ isLoading }) => {
|
|
|
36016
36592
|
* found for themselves is added to the trip or taken back off it.
|
|
36017
36593
|
*/
|
|
36018
36594
|
const renderActivityCard = ({ result, item }) => {
|
|
36019
|
-
const isSelected =
|
|
36595
|
+
const isSelected = isActivitySelected({ result, item });
|
|
36020
36596
|
const isBookedCard = !!item && bookedMode && matchesCode(result, item.node.code ?? '');
|
|
36021
36597
|
return (React__default["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 }));
|
|
36022
36598
|
};
|
|
@@ -40160,6 +40736,363 @@ const Login = ({ tideClientConfig, portalId, languageCode, imageSrc, logo, isMem
|
|
|
40160
40736
|
isMemberConfirmation && (React__default["default"].createElement(ConfirmComponent, { tideClientConfig: tideClientConfig, portalId: portalId, languageCode: languageCode, member: member, setMember: setMember, handleBackToHome: handleBackToHome, handleBackToLogin: handleBackToLogin }))))));
|
|
40161
40737
|
};
|
|
40162
40738
|
|
|
40739
|
+
/** Agent endpoints need the member token, fall back to the one the Login component stored. */
|
|
40740
|
+
const withAgentToken = (config) => ({
|
|
40741
|
+
...config,
|
|
40742
|
+
token: config.token ?? selectAgentToken()
|
|
40743
|
+
});
|
|
40744
|
+
/** False when the token is not a JWT or has expired. */
|
|
40745
|
+
const isAgentTokenValid = (token) => {
|
|
40746
|
+
if (!token)
|
|
40747
|
+
return false;
|
|
40748
|
+
try {
|
|
40749
|
+
const { exp } = jwtDecode(token);
|
|
40750
|
+
return !exp || exp * 1000 > Date.now();
|
|
40751
|
+
}
|
|
40752
|
+
catch {
|
|
40753
|
+
return false;
|
|
40754
|
+
}
|
|
40755
|
+
};
|
|
40756
|
+
// tide-client throws Error(statusText) without the status, and statusText is empty over HTTP/2,
|
|
40757
|
+
// so also treat any failure with an invalid/expired token as unauthorized.
|
|
40758
|
+
const isUnauthorizedError = (error, token) => (error instanceof Error && /unauthori[sz]ed|forbidden/i.test(error.message)) || !isAgentTokenValid(token);
|
|
40759
|
+
const fetchLookups = async (config, languageCode, signal) => {
|
|
40760
|
+
// A failing lookup should not block the list itself.
|
|
40761
|
+
const [entryStatuses, customEntryStatuses, printActions] = await Promise.allSettled([
|
|
40762
|
+
build.getEntryStatus(config, signal, languageCode),
|
|
40763
|
+
build.getCustomEntryStatus(config, signal, languageCode),
|
|
40764
|
+
build.getPrintActions(config, build.PrintActionGroup.Dossier, signal)
|
|
40765
|
+
]);
|
|
40766
|
+
return {
|
|
40767
|
+
entryStatuses: entryStatuses.status === 'fulfilled' ? entryStatuses.value ?? [] : [],
|
|
40768
|
+
customEntryStatuses: customEntryStatuses.status === 'fulfilled' ? customEntryStatuses.value ?? [] : [],
|
|
40769
|
+
printActions: printActions.status === 'fulfilled' ? printActions.value ?? [] : []
|
|
40770
|
+
};
|
|
40771
|
+
};
|
|
40772
|
+
/** Converts the raw filter inputs to the OData column filters understood by tide-client's createParams. */
|
|
40773
|
+
const buildFilterItem = (columns, filterValues, sort, page, take) => {
|
|
40774
|
+
const filterColumns = {};
|
|
40775
|
+
columns.forEach((column) => {
|
|
40776
|
+
const raw = filterValues[column.id]?.trim();
|
|
40777
|
+
if (!raw)
|
|
40778
|
+
return;
|
|
40779
|
+
switch (column.kind) {
|
|
40780
|
+
case 'text':
|
|
40781
|
+
filterColumns[column.id] = { type: 'text', value: raw };
|
|
40782
|
+
break;
|
|
40783
|
+
case 'number': {
|
|
40784
|
+
const value = parseFloat(raw.replace(',', '.'));
|
|
40785
|
+
if (!isNaN(value))
|
|
40786
|
+
filterColumns[column.id] = { type: 'number', value };
|
|
40787
|
+
break;
|
|
40788
|
+
}
|
|
40789
|
+
case 'date': {
|
|
40790
|
+
// <input type="date"> value: yyyy-MM-dd, createParams expects a 1-based month.
|
|
40791
|
+
const [year, month, day] = raw.split('-').map((x) => parseInt(x, 10));
|
|
40792
|
+
if (year && month && day)
|
|
40793
|
+
filterColumns[column.id] = { type: 'date', value: { year, month, day } };
|
|
40794
|
+
break;
|
|
40795
|
+
}
|
|
40796
|
+
case 'status':
|
|
40797
|
+
case 'customStatus':
|
|
40798
|
+
filterColumns[column.id] = { type: 'enum', value: parseInt(raw, 10) };
|
|
40799
|
+
break;
|
|
40800
|
+
}
|
|
40801
|
+
});
|
|
40802
|
+
return { take, page, sort, columns: filterColumns };
|
|
40803
|
+
};
|
|
40804
|
+
const fetchEntries = (config, filter, signal) => build.getEntryList(config, filter, undefined, signal);
|
|
40805
|
+
/** Prints the entry and returns an object url to the resulting pdf. */
|
|
40806
|
+
const printEntry = async (config, printActionId, entryId) => {
|
|
40807
|
+
// Same request as the agent portal: the print action and the entry (version) id.
|
|
40808
|
+
const request = { id: printActionId, entryId };
|
|
40809
|
+
const response = await build.print(config, request);
|
|
40810
|
+
if (!response.ok)
|
|
40811
|
+
throw new Error(response.statusText);
|
|
40812
|
+
const buffer = await response.arrayBuffer();
|
|
40813
|
+
return URL.createObjectURL(new Blob([buffer], { type: 'application/pdf' }));
|
|
40814
|
+
};
|
|
40815
|
+
|
|
40816
|
+
const PAGE_SIZES = [10, 20, 50, 100];
|
|
40817
|
+
const FILTER_DEBOUNCE_MS = 400;
|
|
40818
|
+
const EyeIcon = () => (React__default["default"].createElement("svg", { className: "agent-entries__icon", viewBox: "0 0 576 512", fill: "currentColor", "aria-hidden": "true" },
|
|
40819
|
+
React__default["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" })));
|
|
40820
|
+
const PrintIcon = () => (React__default["default"].createElement("svg", { className: "agent-entries__icon", viewBox: "0 0 512 512", fill: "currentColor", "aria-hidden": "true" },
|
|
40821
|
+
React__default["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" })));
|
|
40822
|
+
const SortIcon = ({ asc }) => (React__default["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" },
|
|
40823
|
+
React__default["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" })));
|
|
40824
|
+
const AgentEntries = ({ tideClientConfig, languageCode, title, pageSize, customTranslations, onLogin, onUnauthorized }) => {
|
|
40825
|
+
const translations = React.useMemo(() => getTranslations(languageCode ?? 'en-GB', customTranslations), [languageCode, customTranslations]);
|
|
40826
|
+
const t = translations.AGENT_ENTRIES;
|
|
40827
|
+
const config = React.useMemo(() => withAgentToken(tideClientConfig), [tideClientConfig.host, tideClientConfig.apiKey, tideClientConfig.token]);
|
|
40828
|
+
const isLoggedIn = !!config.token;
|
|
40829
|
+
const hasValidToken = isLoggedIn && isAgentTokenValid(config.token);
|
|
40830
|
+
const columns = React.useMemo(() => [
|
|
40831
|
+
{ id: 'number', kind: 'text', label: t.NUMBER },
|
|
40832
|
+
{ id: 'departureDate', kind: 'date', label: t.DEPARTURE_DATE },
|
|
40833
|
+
{ id: 'status', kind: 'status', label: t.STATUS },
|
|
40834
|
+
{ id: 'customEntryStatusId', kind: 'customStatus', label: t.CUSTOM_STATUS },
|
|
40835
|
+
{ id: 'returnDate', kind: 'date', label: t.RETURN_DATE },
|
|
40836
|
+
{ id: 'profit', kind: 'number', label: t.PROFIT },
|
|
40837
|
+
{ id: 'totalPrice', kind: 'number', label: t.NETTO_SELLING_PRICE },
|
|
40838
|
+
{ id: 'calculatedAgentSurchargeAmount', kind: 'number', label: t.YOUR_SURCHARGE },
|
|
40839
|
+
{ id: 'createdDate', kind: 'date', label: t.CREATED },
|
|
40840
|
+
{ id: 'contact', kind: 'text', label: t.CONTACT },
|
|
40841
|
+
{ id: 'travelerAddress', kind: 'text', label: t.MAIN_BOOKER }
|
|
40842
|
+
], [t]);
|
|
40843
|
+
const [lookups, setLookups] = React.useState({ entryStatuses: [], customEntryStatuses: [], printActions: [] });
|
|
40844
|
+
const [entries, setEntries] = React.useState([]);
|
|
40845
|
+
const [count, setCount] = React.useState();
|
|
40846
|
+
const [loadState, setLoadState] = React.useState('idle');
|
|
40847
|
+
const [filterInputs, setFilterInputs] = React.useState({});
|
|
40848
|
+
const [filterValues, setFilterValues] = React.useState({});
|
|
40849
|
+
const [sort, setSort] = React.useState({ name: 'number', asc: true });
|
|
40850
|
+
const [page, setPage] = React.useState(1);
|
|
40851
|
+
const [take, setTake] = React.useState(pageSize ?? 20);
|
|
40852
|
+
const [expandedId, setExpandedId] = React.useState();
|
|
40853
|
+
const [printingKey, setPrintingKey] = React.useState();
|
|
40854
|
+
const [printError, setPrintError] = React.useState(false);
|
|
40855
|
+
const handleError = (error) => {
|
|
40856
|
+
if (error instanceof DOMException && error.name === 'AbortError')
|
|
40857
|
+
return;
|
|
40858
|
+
if (isUnauthorizedError(error, config.token)) {
|
|
40859
|
+
setLoadState('unauthorized');
|
|
40860
|
+
onUnauthorized?.();
|
|
40861
|
+
}
|
|
40862
|
+
else {
|
|
40863
|
+
console.error(error);
|
|
40864
|
+
setLoadState('error');
|
|
40865
|
+
}
|
|
40866
|
+
};
|
|
40867
|
+
React.useEffect(() => {
|
|
40868
|
+
if (isLoggedIn && !hasValidToken)
|
|
40869
|
+
onUnauthorized?.();
|
|
40870
|
+
}, [isLoggedIn, hasValidToken]);
|
|
40871
|
+
// Lookups (statuses & print actions) only need to be fetched once.
|
|
40872
|
+
React.useEffect(() => {
|
|
40873
|
+
if (!hasValidToken)
|
|
40874
|
+
return;
|
|
40875
|
+
const controller = new AbortController();
|
|
40876
|
+
fetchLookups(config, languageCode, controller.signal)
|
|
40877
|
+
.then(setLookups)
|
|
40878
|
+
.catch(() => { });
|
|
40879
|
+
return () => controller.abort();
|
|
40880
|
+
}, [config, languageCode, hasValidToken]);
|
|
40881
|
+
// Debounce the typed filters, a selected dropdown/date is applied immediately.
|
|
40882
|
+
React.useEffect(() => {
|
|
40883
|
+
const handle = setTimeout(() => {
|
|
40884
|
+
if (lodash.isEqual(filterInputs, filterValues))
|
|
40885
|
+
return;
|
|
40886
|
+
setFilterValues(filterInputs);
|
|
40887
|
+
setPage(1);
|
|
40888
|
+
}, FILTER_DEBOUNCE_MS);
|
|
40889
|
+
return () => clearTimeout(handle);
|
|
40890
|
+
}, [filterInputs]);
|
|
40891
|
+
React.useEffect(() => {
|
|
40892
|
+
if (!hasValidToken)
|
|
40893
|
+
return;
|
|
40894
|
+
const controller = new AbortController();
|
|
40895
|
+
setLoadState('loading');
|
|
40896
|
+
fetchEntries(config, buildFilterItem(columns, filterValues, sort, page, take), controller.signal)
|
|
40897
|
+
.then((result) => {
|
|
40898
|
+
setEntries(result?.items ?? []);
|
|
40899
|
+
setCount(result?.count ?? undefined);
|
|
40900
|
+
setLoadState('loaded');
|
|
40901
|
+
})
|
|
40902
|
+
.catch(handleError);
|
|
40903
|
+
return () => controller.abort();
|
|
40904
|
+
}, [config, hasValidToken, columns, filterValues, sort, page, take]);
|
|
40905
|
+
const totalPages = count !== undefined ? Math.max(1, Math.ceil(count / take)) : undefined;
|
|
40906
|
+
const hasNextPage = totalPages !== undefined ? page < totalPages : entries.length === take;
|
|
40907
|
+
const handleSort = (columnId) => {
|
|
40908
|
+
setSort((current) => (current.name === columnId ? { name: columnId, asc: !current.asc } : { name: columnId, asc: true }));
|
|
40909
|
+
setPage(1);
|
|
40910
|
+
};
|
|
40911
|
+
const handleFilterChange = (columnId, value, immediate) => {
|
|
40912
|
+
const next = { ...filterInputs, [columnId]: value };
|
|
40913
|
+
setFilterInputs(next);
|
|
40914
|
+
if (immediate) {
|
|
40915
|
+
setFilterValues(next);
|
|
40916
|
+
setPage(1);
|
|
40917
|
+
}
|
|
40918
|
+
};
|
|
40919
|
+
const handlePrint = async (entry, printAction) => {
|
|
40920
|
+
// Open the tab synchronously, otherwise the popup blocker kicks in once the pdf arrives.
|
|
40921
|
+
const printWindow = window.open('', '_blank');
|
|
40922
|
+
setPrintingKey(`${entry.id}-${printAction.id}`);
|
|
40923
|
+
setPrintError(false);
|
|
40924
|
+
try {
|
|
40925
|
+
const url = await printEntry(config, printAction.id, entry.id);
|
|
40926
|
+
if (printWindow) {
|
|
40927
|
+
printWindow.location.href = url;
|
|
40928
|
+
}
|
|
40929
|
+
else {
|
|
40930
|
+
window.open(url, '_blank');
|
|
40931
|
+
}
|
|
40932
|
+
setTimeout(() => URL.revokeObjectURL(url), 60000);
|
|
40933
|
+
}
|
|
40934
|
+
catch (error) {
|
|
40935
|
+
printWindow?.close();
|
|
40936
|
+
if (isUnauthorizedError(error, config.token)) {
|
|
40937
|
+
handleError(error);
|
|
40938
|
+
}
|
|
40939
|
+
else {
|
|
40940
|
+
console.error(error);
|
|
40941
|
+
setPrintError(true);
|
|
40942
|
+
}
|
|
40943
|
+
}
|
|
40944
|
+
finally {
|
|
40945
|
+
setPrintingKey(undefined);
|
|
40946
|
+
}
|
|
40947
|
+
};
|
|
40948
|
+
const formatDate = (value) => {
|
|
40949
|
+
if (!value)
|
|
40950
|
+
return '';
|
|
40951
|
+
const date = new Date(value);
|
|
40952
|
+
if (isNaN(date.getTime()))
|
|
40953
|
+
return '';
|
|
40954
|
+
return new Intl.DateTimeFormat(languageCode, { day: '2-digit', month: '2-digit', year: 'numeric' }).format(date);
|
|
40955
|
+
};
|
|
40956
|
+
const formatNumber = (value) => {
|
|
40957
|
+
if (value === undefined || value === null)
|
|
40958
|
+
return '';
|
|
40959
|
+
return new Intl.NumberFormat(languageCode, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(value);
|
|
40960
|
+
};
|
|
40961
|
+
const getEntryStatusLabel = (status) => lookups.entryStatuses.find((x) => x.key === status)?.value ?? '';
|
|
40962
|
+
const getCustomEntryStatusLabel = (id) => lookups.customEntryStatuses.find((x) => x.id === id)?.name ?? '';
|
|
40963
|
+
const getPrintActionsForEntry = (entry) => lookups.printActions.filter((x) => x.validEntryStatuses?.includes(entry.status));
|
|
40964
|
+
const renderCell = (entry, column) => {
|
|
40965
|
+
const value = entry[column.id];
|
|
40966
|
+
switch (column.kind) {
|
|
40967
|
+
case 'date':
|
|
40968
|
+
return formatDate(value);
|
|
40969
|
+
case 'number':
|
|
40970
|
+
return formatNumber(value);
|
|
40971
|
+
case 'status':
|
|
40972
|
+
return getEntryStatusLabel(value);
|
|
40973
|
+
case 'customStatus':
|
|
40974
|
+
return getCustomEntryStatusLabel(value);
|
|
40975
|
+
default:
|
|
40976
|
+
return value ?? '';
|
|
40977
|
+
}
|
|
40978
|
+
};
|
|
40979
|
+
const renderFilter = (column) => {
|
|
40980
|
+
const value = filterInputs[column.id] ?? '';
|
|
40981
|
+
const className = 'agent-entries__filter';
|
|
40982
|
+
switch (column.kind) {
|
|
40983
|
+
case 'date':
|
|
40984
|
+
return (React__default["default"].createElement("input", { type: "date", className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value, true) }));
|
|
40985
|
+
case 'status':
|
|
40986
|
+
case 'customStatus': {
|
|
40987
|
+
const options = column.kind === 'status'
|
|
40988
|
+
? lookups.entryStatuses.filter((x) => x.key !== undefined && x.key !== null).map((x) => ({ key: x.key, value: x.value }))
|
|
40989
|
+
: lookups.customEntryStatuses.map((x) => ({ key: x.id, value: x.name }));
|
|
40990
|
+
return (React__default["default"].createElement("select", { className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value, true) },
|
|
40991
|
+
React__default["default"].createElement("option", { value: "" }, t.ALL),
|
|
40992
|
+
options.map((option) => (React__default["default"].createElement("option", { key: option.key, value: option.key }, option.value)))));
|
|
40993
|
+
}
|
|
40994
|
+
case 'number':
|
|
40995
|
+
return (React__default["default"].createElement("input", { type: "number", className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value) }));
|
|
40996
|
+
default:
|
|
40997
|
+
return (React__default["default"].createElement("input", { type: "text", className: className, value: value, "aria-label": column.label, onChange: (e) => handleFilterChange(column.id, e.target.value) }));
|
|
40998
|
+
}
|
|
40999
|
+
};
|
|
41000
|
+
const renderDetails = (entry) => {
|
|
41001
|
+
const printActions = getPrintActionsForEntry(entry);
|
|
41002
|
+
const travelers = entry.pax?.length ? entry.pax.map((p) => (p.isMainBooker ? `${p.name} (${t.MAIN_BOOKER.toLowerCase()})` : p.name)).join(', ') : '';
|
|
41003
|
+
const details = [
|
|
41004
|
+
{ label: t.NUMBER, value: entry.number },
|
|
41005
|
+
{ label: t.PRODUCT, value: entry.firstProductName },
|
|
41006
|
+
{ label: t.STATUS, value: getEntryStatusLabel(entry.status) },
|
|
41007
|
+
{ label: t.CUSTOM_STATUS, value: getCustomEntryStatusLabel(entry.customEntryStatusId) },
|
|
41008
|
+
{ label: t.DEPARTURE_DATE, value: formatDate(entry.departureDate) },
|
|
41009
|
+
{ label: t.RETURN_DATE, value: formatDate(entry.returnDate) },
|
|
41010
|
+
{ label: t.CREATED, value: formatDate(entry.createdDate) },
|
|
41011
|
+
{ label: t.CONTACT, value: entry.contact },
|
|
41012
|
+
{ label: t.MAIN_BOOKER, value: entry.travelerAddress },
|
|
41013
|
+
{ label: t.TRAVELERS, value: travelers || (entry.paxCount ? entry.paxCount : '') },
|
|
41014
|
+
{ label: t.NETTO_SELLING_PRICE, value: formatNumber(entry.totalPrice) },
|
|
41015
|
+
{ label: t.YOUR_SURCHARGE, value: formatNumber(entry.calculatedAgentSurchargeAmount) },
|
|
41016
|
+
{ label: t.PROFIT, value: formatNumber(entry.profit) }
|
|
41017
|
+
];
|
|
41018
|
+
return (React__default["default"].createElement("div", { className: "agent-entries__details" },
|
|
41019
|
+
React__default["default"].createElement("dl", { className: "agent-entries__details__list" }, details
|
|
41020
|
+
.filter((detail) => detail.value !== undefined && detail.value !== null && detail.value !== '')
|
|
41021
|
+
.map((detail) => (React__default["default"].createElement("div", { className: "agent-entries__details__item", key: detail.label },
|
|
41022
|
+
React__default["default"].createElement("dt", null, detail.label),
|
|
41023
|
+
React__default["default"].createElement("dd", null, detail.value))))),
|
|
41024
|
+
printActions.length > 0 && (React__default["default"].createElement("div", { className: "agent-entries__details__prints" },
|
|
41025
|
+
React__default["default"].createElement("span", { className: "agent-entries__details__prints__title" }, t.PRINTS),
|
|
41026
|
+
React__default["default"].createElement("div", { className: "agent-entries__details__prints__buttons" }, printActions.map((printAction) => (React__default["default"].createElement("button", { type: "button", key: printAction.id, className: "agent-entries__print-button", disabled: printingKey === `${entry.id}-${printAction.id}`, onClick: () => handlePrint(entry, printAction) },
|
|
41027
|
+
React__default["default"].createElement(PrintIcon, null),
|
|
41028
|
+
printAction.label))))))));
|
|
41029
|
+
};
|
|
41030
|
+
const renderLoginMessage = (message) => (React__default["default"].createElement("div", { className: "agent-entries__message" },
|
|
41031
|
+
React__default["default"].createElement("p", null, message),
|
|
41032
|
+
onLogin && (React__default["default"].createElement("button", { type: "button", className: "cta cta--primary", onClick: onLogin }, translations.LOGIN.LOGIN))));
|
|
41033
|
+
if (!isLoggedIn) {
|
|
41034
|
+
return (React__default["default"].createElement("div", { className: "agent-entries" },
|
|
41035
|
+
React__default["default"].createElement("h2", { className: "agent-entries__title" }, title ?? t.TITLE),
|
|
41036
|
+
renderLoginMessage(t.NOT_LOGGED_IN)));
|
|
41037
|
+
}
|
|
41038
|
+
if (!hasValidToken || loadState === 'unauthorized') {
|
|
41039
|
+
return (React__default["default"].createElement("div", { className: "agent-entries" },
|
|
41040
|
+
React__default["default"].createElement("h2", { className: "agent-entries__title" }, title ?? t.TITLE),
|
|
41041
|
+
renderLoginMessage(t.SESSION_EXPIRED)));
|
|
41042
|
+
}
|
|
41043
|
+
const columnCount = columns.length + 1;
|
|
41044
|
+
return (React__default["default"].createElement("div", { className: "agent-entries" },
|
|
41045
|
+
React__default["default"].createElement("h2", { className: "agent-entries__title" }, title ?? t.TITLE),
|
|
41046
|
+
printError && (React__default["default"].createElement("div", { className: "agent-entries__error", role: "alert" },
|
|
41047
|
+
t.PRINT_ERROR,
|
|
41048
|
+
React__default["default"].createElement("button", { type: "button", className: "agent-entries__error__close", "aria-label": "close", onClick: () => setPrintError(false) }, "\u00D7"))),
|
|
41049
|
+
React__default["default"].createElement("div", { className: buildClassName(['agent-entries__card', loadState === 'loading' && 'agent-entries__card--loading']) },
|
|
41050
|
+
React__default["default"].createElement("div", { className: "agent-entries__table-wrapper" },
|
|
41051
|
+
React__default["default"].createElement("table", { className: "agent-entries__table" },
|
|
41052
|
+
React__default["default"].createElement("thead", null,
|
|
41053
|
+
React__default["default"].createElement("tr", null,
|
|
41054
|
+
React__default["default"].createElement("th", { className: "agent-entries__actions-header" },
|
|
41055
|
+
React__default["default"].createElement("span", { className: "agent-entries__sr-only" }, t.ACTIONS)),
|
|
41056
|
+
columns.map((column) => (React__default["default"].createElement("th", { key: column.id, "aria-sort": sort.name === column.id ? (sort.asc ? 'ascending' : 'descending') : undefined },
|
|
41057
|
+
React__default["default"].createElement("button", { type: "button", className: "agent-entries__sort", onClick: () => handleSort(column.id) },
|
|
41058
|
+
column.label,
|
|
41059
|
+
sort.name === column.id && React__default["default"].createElement(SortIcon, { asc: sort.asc })))))),
|
|
41060
|
+
React__default["default"].createElement("tr", { className: "agent-entries__filter-row" },
|
|
41061
|
+
React__default["default"].createElement("th", null),
|
|
41062
|
+
columns.map((column) => (React__default["default"].createElement("th", { key: column.id }, renderFilter(column)))))),
|
|
41063
|
+
React__default["default"].createElement("tbody", null,
|
|
41064
|
+
loadState === 'error' && (React__default["default"].createElement("tr", null,
|
|
41065
|
+
React__default["default"].createElement("td", { colSpan: columnCount, className: "agent-entries__empty" }, t.ERROR))),
|
|
41066
|
+
loadState !== 'error' && entries.length === 0 && (React__default["default"].createElement("tr", null,
|
|
41067
|
+
React__default["default"].createElement("td", { colSpan: columnCount, className: "agent-entries__empty" }, loadState === 'loading' ? t.LOADING : t.NO_ITEMS))),
|
|
41068
|
+
loadState !== 'error' &&
|
|
41069
|
+
entries.map((entry) => {
|
|
41070
|
+
const isExpanded = expandedId === entry.id;
|
|
41071
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, { key: entry.id },
|
|
41072
|
+
React__default["default"].createElement("tr", { className: buildClassName(['agent-entries__row', isExpanded && 'agent-entries__row--expanded']) },
|
|
41073
|
+
React__default["default"].createElement("td", { className: "agent-entries__actions" },
|
|
41074
|
+
React__default["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) },
|
|
41075
|
+
React__default["default"].createElement(EyeIcon, null)),
|
|
41076
|
+
getPrintActionsForEntry(entry).map((printAction) => (React__default["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) },
|
|
41077
|
+
React__default["default"].createElement(PrintIcon, null))))),
|
|
41078
|
+
columns.map((column) => (React__default["default"].createElement("td", { key: column.id, className: `agent-entries__cell agent-entries__cell--${column.kind}` }, renderCell(entry, column))))),
|
|
41079
|
+
isExpanded && (React__default["default"].createElement("tr", { className: "agent-entries__details-row" },
|
|
41080
|
+
React__default["default"].createElement("td", { colSpan: columnCount }, renderDetails(entry))))));
|
|
41081
|
+
})))),
|
|
41082
|
+
React__default["default"].createElement("div", { className: "agent-entries__footer" },
|
|
41083
|
+
React__default["default"].createElement("select", { className: "agent-entries__page-size", value: take, "aria-label": t.PAGE_SIZE, onChange: (e) => {
|
|
41084
|
+
setTake(parseInt(e.target.value, 10));
|
|
41085
|
+
setPage(1);
|
|
41086
|
+
} }, Array.from(new Set([...PAGE_SIZES, take]))
|
|
41087
|
+
.sort((a, b) => a - b)
|
|
41088
|
+
.map((size) => (React__default["default"].createElement("option", { key: size, value: size }, size)))),
|
|
41089
|
+
count !== undefined && React__default["default"].createElement("span", { className: "agent-entries__count" }, format$1(t.X_ITEMS, [count])),
|
|
41090
|
+
React__default["default"].createElement("div", { className: "agent-entries__pager" },
|
|
41091
|
+
React__default["default"].createElement("button", { type: "button", className: "agent-entries__pager__button", disabled: page <= 1, onClick: () => setPage(page - 1) }, t.PREVIOUS),
|
|
41092
|
+
React__default["default"].createElement("span", { className: "agent-entries__pager__info" }, totalPages !== undefined ? format$1(t.PAGE_X_OF_Y, [page, totalPages]) : page),
|
|
41093
|
+
React__default["default"].createElement("button", { type: "button", className: "agent-entries__pager__button", disabled: !hasNextPage, onClick: () => setPage(page + 1) }, t.NEXT))))));
|
|
41094
|
+
};
|
|
41095
|
+
|
|
40163
41096
|
const ImageWithTextCard = ({ noCard, fullImage, reverse, imageSrc, imageAlt, title, section1Title, section1Text, section2Title, section2Text, buttonText, onButtonClick }) => {
|
|
40164
41097
|
let cardClassName = 'image-with-text__card';
|
|
40165
41098
|
if (noCard) {
|
|
@@ -44618,6 +45551,7 @@ var signalR = /*#__PURE__*/_mergeNamespaces({
|
|
|
44618
45551
|
'default': signalR$1
|
|
44619
45552
|
}, [signalR$1]);
|
|
44620
45553
|
|
|
45554
|
+
exports.AgentEntries = AgentEntries;
|
|
44621
45555
|
exports.BookingProduct = BookingProduct;
|
|
44622
45556
|
exports.BookingWizard = BookingWizard;
|
|
44623
45557
|
exports.Breadcrumbs = Breadcrumbs;
|