ublo-lib 1.38.35 → 1.38.36

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.
Files changed (79) hide show
  1. package/es/esf/components/espace-prive/admin/client-links.d.ts +2 -0
  2. package/es/esf/components/espace-prive/admin/client-links.d.ts.map +1 -0
  3. package/es/esf/components/espace-prive/admin/client-links.js +34 -0
  4. package/es/esf/components/espace-prive/admin/client-links.module.css +42 -0
  5. package/es/esf/components/espace-prive/admin/config-field.d.ts +4 -0
  6. package/es/esf/components/espace-prive/admin/config-field.d.ts.map +1 -0
  7. package/es/esf/components/espace-prive/admin/config-field.js +41 -0
  8. package/es/esf/components/espace-prive/admin/config-field.module.css +30 -0
  9. package/es/esf/components/espace-prive/admin/config.d.ts +2 -0
  10. package/es/esf/components/espace-prive/admin/config.d.ts.map +1 -0
  11. package/es/esf/components/espace-prive/admin/config.js +17 -0
  12. package/es/esf/components/espace-prive/admin/config.module.css +40 -0
  13. package/es/esf/components/espace-prive/admin/link-form.d.ts +5 -0
  14. package/es/esf/components/espace-prive/admin/link-form.d.ts.map +1 -0
  15. package/es/esf/components/espace-prive/admin/link-form.js +97 -0
  16. package/es/esf/components/espace-prive/admin/link-form.module.css +60 -0
  17. package/es/esf/components/espace-prive/admin/link-row.d.ts +7 -0
  18. package/es/esf/components/espace-prive/admin/link-row.d.ts.map +1 -0
  19. package/es/esf/components/espace-prive/admin/link-row.js +29 -0
  20. package/es/esf/components/espace-prive/admin/link-row.module.css +59 -0
  21. package/es/esf/components/espace-prive/admin/mail-template.d.ts +2 -0
  22. package/es/esf/components/espace-prive/admin/mail-template.d.ts.map +1 -0
  23. package/es/esf/components/espace-prive/admin/mail-template.js +34 -0
  24. package/es/esf/components/espace-prive/admin/mail-template.module.css +33 -0
  25. package/es/esf/components/espace-prive/cart-link.d.ts +2 -0
  26. package/es/esf/components/espace-prive/cart-link.d.ts.map +1 -0
  27. package/es/esf/components/espace-prive/cart-link.js +14 -0
  28. package/es/esf/components/espace-prive/cart-link.module.css +2 -0
  29. package/es/esf/components/espace-prive/connexion.d.ts +4 -0
  30. package/es/esf/components/espace-prive/connexion.d.ts.map +1 -0
  31. package/es/esf/components/espace-prive/connexion.js +43 -0
  32. package/es/esf/components/espace-prive/connexion.module.css +79 -0
  33. package/es/esf/components/espace-prive/context.d.ts +6 -0
  34. package/es/esf/components/espace-prive/context.d.ts.map +1 -0
  35. package/es/esf/components/espace-prive/context.js +96 -0
  36. package/es/esf/components/espace-prive/custom-offers.d.ts +5 -0
  37. package/es/esf/components/espace-prive/custom-offers.d.ts.map +1 -0
  38. package/es/esf/components/espace-prive/custom-offers.js +8 -0
  39. package/es/esf/components/espace-prive/custom-offers.module.css +60 -0
  40. package/es/esf/components/espace-prive/discount-icon.svg +1 -0
  41. package/es/esf/components/espace-prive/index.d.ts +5 -0
  42. package/es/esf/components/espace-prive/index.d.ts.map +1 -0
  43. package/es/esf/components/espace-prive/index.js +6 -0
  44. package/es/esf/components/espace-prive/message.d.ts +6 -0
  45. package/es/esf/components/espace-prive/message.d.ts.map +1 -0
  46. package/es/esf/components/espace-prive/message.js +82 -0
  47. package/es/esf/components/espace-prive/panier.d.ts +2 -0
  48. package/es/esf/components/espace-prive/panier.d.ts.map +1 -0
  49. package/es/esf/components/espace-prive/panier.js +43 -0
  50. package/es/esf/components/espace-prive/partenaire.d.ts +6 -0
  51. package/es/esf/components/espace-prive/partenaire.d.ts.map +1 -0
  52. package/es/esf/components/espace-prive/partenaire.js +23 -0
  53. package/es/esf/components/espace-prive/partenaire.module.css +80 -0
  54. package/es/esf/components/espace-prive/services/config.d.ts +8 -0
  55. package/es/esf/components/espace-prive/services/config.d.ts.map +1 -0
  56. package/es/esf/components/espace-prive/services/config.js +76 -0
  57. package/es/esf/components/espace-prive/services/links.d.ts +5 -0
  58. package/es/esf/components/espace-prive/services/links.d.ts.map +1 -0
  59. package/es/esf/components/espace-prive/services/links.js +48 -0
  60. package/es/esf/components/espace-prive/services/mail.d.ts +2 -0
  61. package/es/esf/components/espace-prive/services/mail.d.ts.map +1 -0
  62. package/es/esf/components/espace-prive/services/mail.js +17 -0
  63. package/es/esf/components/espace-prive/tools.d.ts +4 -0
  64. package/es/esf/components/espace-prive/tools.d.ts.map +1 -0
  65. package/es/esf/components/espace-prive/tools.js +54 -0
  66. package/es/esf/components/espace-prive/tools.module.css +111 -0
  67. package/es/esf/components/espace-prive/tunnel.d.ts +2 -0
  68. package/es/esf/components/espace-prive/tunnel.d.ts.map +1 -0
  69. package/es/esf/components/espace-prive/tunnel.js +23 -0
  70. package/es/esf/components/espace-prive/utils/construct-link.d.ts +2 -0
  71. package/es/esf/components/espace-prive/utils/construct-link.d.ts.map +1 -0
  72. package/es/esf/components/espace-prive/utils/construct-link.js +3 -0
  73. package/es/esf/components/espace-prive/utils/path-includes-key.d.ts +2 -0
  74. package/es/esf/components/espace-prive/utils/path-includes-key.d.ts.map +1 -0
  75. package/es/esf/components/espace-prive/utils/path-includes-key.js +4 -0
  76. package/es/esf/components/espace-prive/utils/snackbar-message.d.ts +2 -0
  77. package/es/esf/components/espace-prive/utils/snackbar-message.d.ts.map +1 -0
  78. package/es/esf/components/espace-prive/utils/snackbar-message.js +14 -0
  79. package/package.json +1 -1
@@ -0,0 +1,76 @@
1
+ export const getIntermediary = async (apiURL, site, partnerID, cmsToken) => {
2
+ const res = await fetch(`${apiURL}/config/intermediary?site=${site}&partnerID=${partnerID}`, {
3
+ headers: {
4
+ Authorization: cmsToken,
5
+ },
6
+ });
7
+ const data = await res.json();
8
+ return data?.intermediary || "";
9
+ };
10
+ export const setIntermediary = async (apiURL, site, partnerID, intermediary, cmsToken) => {
11
+ try {
12
+ await fetch(`${apiURL}/config/intermediary?site=${site}&partnerID=${partnerID}&intermediary=${intermediary}`, {
13
+ method: "PATCH",
14
+ headers: {
15
+ Authorization: cmsToken,
16
+ },
17
+ });
18
+ }
19
+ catch {
20
+ throw new Error("Error updating intermediary");
21
+ }
22
+ };
23
+ export const getMailTemplate = async (apiURL, site, partnerID, cmsToken) => {
24
+ const res = await fetch(`${apiURL}/config/mail-template?site=${site}&partnerID=${partnerID}`, {
25
+ headers: {
26
+ Authorization: cmsToken,
27
+ },
28
+ });
29
+ const data = await res.json();
30
+ return data?.mail_template || "";
31
+ };
32
+ export const setMailTemplate = async (apiURL, site, partnerID, text, cmsToken) => {
33
+ try {
34
+ await fetch(`${apiURL}/config/mail-template?site=${site}&partnerID=${partnerID}`, {
35
+ method: "PATCH",
36
+ headers: {
37
+ Authorization: cmsToken,
38
+ },
39
+ body: JSON.stringify({ text }),
40
+ });
41
+ }
42
+ catch {
43
+ throw new Error("Error updating mail template");
44
+ }
45
+ };
46
+ export const getReplyTo = async (apiURL, site, partnerID, cmsToken) => {
47
+ const res = await fetch(`${apiURL}/config/reply-to?site=${site}&partnerID=${partnerID}`, {
48
+ headers: {
49
+ Authorization: cmsToken,
50
+ },
51
+ });
52
+ const data = await res.json();
53
+ return data?.reply_to || "";
54
+ };
55
+ export const setReplyTo = async (apiURL, site, partnerID, reply_to, cmsToken) => {
56
+ try {
57
+ await fetch(`${apiURL}/config/reply-to?site=${site}&partnerID=${partnerID}`, {
58
+ method: "PATCH",
59
+ headers: {
60
+ Authorization: cmsToken,
61
+ },
62
+ body: JSON.stringify({ reply_to }),
63
+ });
64
+ }
65
+ catch {
66
+ throw new Error("Error updating mail reply to");
67
+ }
68
+ };
69
+ export const getMode = async (apiURL, site, partnerID, cmsToken) => {
70
+ const res = await fetch(`${apiURL}/config/mode?site=${site}&partnerID=${partnerID}`, {
71
+ headers: {
72
+ Authorization: cmsToken,
73
+ },
74
+ });
75
+ return await res.json();
76
+ };
@@ -0,0 +1,5 @@
1
+ export function getLinks(apiURL: any, partnerID: any, cmsToken: any): Promise<any>;
2
+ export function createLink(apiURL: any, email: any, partnerID: any, site: any, cmsToken: any): Promise<any>;
3
+ export function deleteLink(apiURL: any, id: any, cmsToken: any): Promise<any>;
4
+ export function setLinkUsed(apiURL: any, id: any, cmsToken: any): Promise<any>;
5
+ //# sourceMappingURL=links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/espace-prive/services/links.js"],"names":[],"mappings":"AAAO,mFASN;AAEM,4GAeN;AAEM,8EAaN;AAEM,+EASN"}
@@ -0,0 +1,48 @@
1
+ export const getLinks = async (apiURL, partnerID, cmsToken) => {
2
+ const url = `${apiURL}/links?partnerID=${partnerID}`;
3
+ const res = await fetch(url, {
4
+ headers: {
5
+ Authorization: cmsToken,
6
+ },
7
+ });
8
+ const data = await res.json();
9
+ return data?.links || [];
10
+ };
11
+ export const createLink = async (apiURL, email, partnerID, site, cmsToken) => {
12
+ const url = `${apiURL}/links`;
13
+ const body = JSON.stringify({ email, partnerID, site });
14
+ const res = await fetch(url, {
15
+ method: "POST",
16
+ body,
17
+ headers: {
18
+ Authorization: cmsToken,
19
+ },
20
+ });
21
+ if (res.status === 401)
22
+ throw new Error("Unauthorized");
23
+ const data = await res.json();
24
+ return data?.hash || "";
25
+ };
26
+ export const deleteLink = async (apiURL, id, cmsToken) => {
27
+ const url = `${apiURL}/links/${id}`;
28
+ const res = await fetch(url, {
29
+ method: "DELETE",
30
+ headers: {
31
+ Authorization: cmsToken,
32
+ },
33
+ });
34
+ if (res.status === 401)
35
+ throw new Error("Unauthorized");
36
+ const data = await res.json();
37
+ return data;
38
+ };
39
+ export const setLinkUsed = async (apiURL, id, cmsToken) => {
40
+ const res = await fetch(`${apiURL}/links/used?id=${id}`, {
41
+ method: "PATCH",
42
+ headers: {
43
+ Authorization: cmsToken,
44
+ },
45
+ });
46
+ const data = await res.json();
47
+ return data?.links || [];
48
+ };
@@ -0,0 +1,2 @@
1
+ export function sendMail(apiURL: any, site: any, to: any, reply_to: any, text: any, link: any, cmsToken: any): Promise<any>;
2
+ //# sourceMappingURL=mail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/espace-prive/services/mail.js"],"names":[],"mappings":"AAAO,4HAwBN"}
@@ -0,0 +1,17 @@
1
+ export const sendMail = async (apiURL, site, to, reply_to, text, link, cmsToken) => {
2
+ const res = await fetch(`${apiURL}/mail`, {
3
+ method: "POST",
4
+ body: JSON.stringify({
5
+ site,
6
+ to,
7
+ reply_to,
8
+ text,
9
+ link,
10
+ }),
11
+ headers: {
12
+ Authorization: cmsToken,
13
+ },
14
+ });
15
+ const data = await res.json();
16
+ return data?.message || "";
17
+ };
@@ -0,0 +1,4 @@
1
+ export default function Tools({ tools }: {
2
+ tools: any;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/espace-prive/tools.js"],"names":[],"mappings":"AAgBA;;4CAqFC"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { useUbloContext } from "ublo/with-ublo";
4
+ import Link from "ublo/link";
5
+ import Dialog from "dt-design-system/es/dialog";
6
+ import Levels from "ublo-lib/es/esf/components/levels";
7
+ import styles from "./tools.module.css";
8
+ const EXCLUSIONS = ["book-moniteurs"];
9
+ const LEVEL_PAGES = [
10
+ "evaluez-votre-niveau",
11
+ "evaluer-votre-niveau",
12
+ "evaluer-mon-niveau",
13
+ "evaluez-mon-niveau",
14
+ "quel-est-mon-niveau",
15
+ ];
16
+ export default function Tools({ tools }) {
17
+ const [loading, setLoading] = React.useState(false);
18
+ const [content, setContent] = React.useState();
19
+ const [levelsVisible, setLevelsVisible] = React.useState(false);
20
+ const { lang, cmsMode, config } = useUbloContext();
21
+ const { ubloApi, site } = config;
22
+ const close = () => {
23
+ setContent(undefined);
24
+ };
25
+ return (_jsxs("div", { className: styles.tools, children: [tools.map(({ name, title, shortTitle, subs }) => {
26
+ if (EXCLUSIONS.includes(name) || !subs)
27
+ return null;
28
+ return (_jsxs("div", { className: styles.tool, tabIndex: 0, children: [_jsx("div", { className: styles.title, dangerouslySetInnerHTML: { __html: shortTitle || title } }), _jsx("div", { className: styles.inner, children: _jsx("ul", { className: styles.subs, children: subs.map(({ name, title, shortTitle, page, path }) => {
29
+ const isLevels = LEVEL_PAGES.includes(name);
30
+ const openTool = async (e) => {
31
+ if (cmsMode !== undefined)
32
+ return;
33
+ e.preventDefault();
34
+ if (page === undefined) {
35
+ window.open(path, "_blank");
36
+ }
37
+ else {
38
+ setLoading(true);
39
+ const url = `${ubloApi}/api/zone?site=${site}&lang=${lang}&path=${path}&id=content`;
40
+ const req = await fetch(url);
41
+ const data = await req.text();
42
+ setContent(data);
43
+ setLevelsVisible(isLevels);
44
+ setLoading(false);
45
+ window.refreshEditableMap?.();
46
+ }
47
+ };
48
+ const subTitle = shortTitle || title;
49
+ return (_jsx("li", { className: styles.sub, children: _jsx(Link, { className: styles.link, href: path, onClick: openTool, children: _jsx("div", { dangerouslySetInnerHTML: {
50
+ __html: subTitle,
51
+ } }) }, name) }, name));
52
+ }) }) })] }, name));
53
+ }), _jsxs(Dialog, { className: styles.dialog, close: close, isOpened: loading || content !== undefined, loading: loading, container: null, children: [_jsx("div", { className: styles.dialogInner, dangerouslySetInnerHTML: { __html: content } }), levelsVisible && (_jsx("div", { className: styles.levels, children: _jsx(Levels, {}) }))] })] }));
54
+ }
@@ -0,0 +1,111 @@
1
+ .tools {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ width: 100%;
6
+ gap: 30px;
7
+ }
8
+
9
+ @media (min-width: 620px) {
10
+ .tools {
11
+ flex-direction: row;
12
+ }
13
+ }
14
+
15
+ .tools__item {
16
+ position: relative;
17
+ display: flex;
18
+ flex-direction: column;
19
+ width: 100%;
20
+ }
21
+
22
+ @media (min-width: 800px) {
23
+ .tools__item {
24
+ margin: 0;
25
+ }
26
+ }
27
+
28
+ .title {
29
+ color: var(--ds-grey-700, #262626);
30
+ font-size: 32px;
31
+ font-weight: bold;
32
+ }
33
+
34
+ .inner {
35
+ display: flex;
36
+ flex-direction: column;
37
+ height: auto;
38
+ align-items: flex-start;
39
+ justify-content: flex-start;
40
+ }
41
+
42
+ @media (min-width: 800px) {
43
+ .inner {
44
+ z-index: 0;
45
+ }
46
+ }
47
+
48
+ .subs {
49
+ display: flex;
50
+ flex-direction: column;
51
+ align-items: stretch;
52
+ padding: 10px 0 20px 0;
53
+ }
54
+
55
+ @media (min-width: 700px) {
56
+ .subs {
57
+ padding: 20px 0 0 0;
58
+ }
59
+ }
60
+
61
+ .sub {
62
+ position: relative;
63
+ display: flex;
64
+ align-items: center;
65
+ padding: 8px 0 8px 15px;
66
+ font-size: var(--p);
67
+ transition: color 160ms var(--transition-easing);
68
+ }
69
+
70
+ @media (min-width: 800px) {
71
+ .sub {
72
+ padding: 6px 0 6px 15px;
73
+ }
74
+ }
75
+
76
+ .dialog {
77
+ width: 100%;
78
+ }
79
+
80
+ @media (min-width: 1000px) {
81
+ .dialog {
82
+ max-width: 1000px;
83
+ }
84
+ }
85
+
86
+ .dialogInner {
87
+ display: grid;
88
+ gap: 16px 20px;
89
+ padding: 26px;
90
+ }
91
+
92
+ .levels {
93
+ padding: 0 16px 16px 16px;
94
+ }
95
+
96
+ /* @media (min-width: 500px) {
97
+ .dialogInner {
98
+ grid-template-columns: repeat(2, 1fr);
99
+ }
100
+ }
101
+ @media (min-width: 680px) {
102
+ .dialogInner {
103
+ grid-template-columns: repeat(3, 1fr);
104
+ gap: 20px 24px;
105
+ }
106
+ }
107
+ @media (min-width: 830px) {
108
+ .dialogInner {
109
+ grid-template-columns: repeat(4, 1fr);
110
+ }
111
+ } */
@@ -0,0 +1,2 @@
1
+ export default function Tunnel(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=tunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/espace-prive/tunnel.js"],"names":[],"mappings":"AAQA,0EAkCC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import * as MseM from "ublo-lib/es/future/components/msem";
4
+ import { useUbloContext } from "ublo/with-ublo";
5
+ import Loader from "dt-design-system/es/loader";
6
+ import Message from "./message";
7
+ import ClientLinks from "./admin/client-links";
8
+ import { useContext } from "./context";
9
+ export default function Tunnel() {
10
+ const { lang, config, cmsMode } = useUbloContext();
11
+ const { channel, resort } = config;
12
+ const { intermediary, error } = useContext();
13
+ const renderLoader = !intermediary && !error;
14
+ const renderError = error && !intermediary;
15
+ return (_jsxs("div", { children: [renderLoader && _jsx(Loader, {}), renderError && (_jsx("div", { style: { textAlign: "center", color: "var(--ds-red-300, #f26464)" }, children: _jsx(Message, { id: "intermediary-error" }) })), !renderLoader && !renderError && (_jsx(MseM.Esf, { options: {
16
+ lang,
17
+ channel,
18
+ resort,
19
+ groundedTo: "#msem-esf",
20
+ intermediary,
21
+ facet: 0,
22
+ }, children: _jsx("div", { id: "msem-esf" }) })), cmsMode && _jsx(ClientLinks, {})] }));
23
+ }
@@ -0,0 +1,2 @@
1
+ export function constructLink(path: any, key: any): string;
2
+ //# sourceMappingURL=construct-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct-link.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/espace-prive/utils/construct-link.js"],"names":[],"mappings":"AAAO,2DAEN"}
@@ -0,0 +1,3 @@
1
+ export const constructLink = (path, key) => {
2
+ return `${path}?id=${key}`;
3
+ };
@@ -0,0 +1,2 @@
1
+ export function pathIncludesKey(path: any, key: any): boolean;
2
+ //# sourceMappingURL=path-includes-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-includes-key.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/espace-prive/utils/path-includes-key.js"],"names":[],"mappings":"AAAO,8DAGN"}
@@ -0,0 +1,4 @@
1
+ export const pathIncludesKey = (path, key) => {
2
+ const regex = new RegExp(`^/espace-prive/.*/${key}$`);
3
+ return regex.test(path);
4
+ };
@@ -0,0 +1,2 @@
1
+ export function snackbarMessage(snackbar: any, lang: any, id: any, type: any): any;
2
+ //# sourceMappingURL=snackbar-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snackbar-message.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/espace-prive/utils/snackbar-message.js"],"names":[],"mappings":"AAEO,mFAYN"}
@@ -0,0 +1,14 @@
1
+ import { message } from "../message";
2
+ export const snackbarMessage = (snackbar, lang, id, type) => {
3
+ return snackbar.show({
4
+ message: message(lang, id),
5
+ type,
6
+ style: {
7
+ position: "fixed",
8
+ top: 10,
9
+ left: "50%",
10
+ height: "fit-content",
11
+ zIndex: 10,
12
+ },
13
+ });
14
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ublo-lib",
3
- "version": "1.38.35",
3
+ "version": "1.38.36",
4
4
  "peerDependencies": {
5
5
  "dt-design-system": "^3.10.8",
6
6
  "leaflet": "^1.9.1",