ublo-lib 1.47.89 → 1.47.91-rc0

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.
@@ -1,36 +1,27 @@
1
1
  .carousel {
2
- --carousel-width: var(--content-width);
3
- --carousel-wheel-height: calc(var(--carousel-item-height) + 150px);
4
- --carousel-scale-height: calc(var(--carousel-item-height) + 100px);
5
- --carousel-padding-top: 60px;
6
- --carousel-button-width: 48px;
7
- --carousel-button-background: hsl(0, 0%, 100%);
8
- --carousel-button-hover-background: hsl(0, 0%, 100%);
9
- --carousel-left-button-glow: transparent;
10
- --carousel-right-button-glow: transparent;
11
- --carousel-button-radius: 50%;
12
- --carousel-button-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
13
- --carousel-button-icon-size: 16px;
14
- --carousel-button-icon-color: #081527;
15
- --carousel-before-background: transparent;
16
- --carousel-after-background: transparent;
17
-
2
+ /* Variables avec valeurs par défaut (fallback) */
18
3
  position: relative;
19
4
  display: flex;
20
5
  justify-content: center;
21
6
  /* 2px viennent des pseudo-elements after des boutons de control */
22
7
  width: calc(100vw - var(--scrollbar-size) - 2px);
23
- max-width: var(--carousel-width);
8
+ max-width: var(--carousel-width, var(--content-width));
24
9
  margin: 0 auto;
25
- padding-top: var(--carousel-padding-top);
10
+ padding-top: var(--carousel-padding-top, 60px);
26
11
  }
27
12
 
28
13
  .carousel--wheel {
29
- --carousel-height: var(--carousel-wheel-height);
14
+ --carousel-height: var(
15
+ --carousel-wheel-height,
16
+ calc(var(--carousel-item-height, 300px) + 150px)
17
+ );
30
18
  }
31
19
 
32
20
  .carousel--scale {
33
- --carousel-height: var(--carousel-scale-height);
21
+ --carousel-height: var(
22
+ --carousel-scale-height,
23
+ calc(var(--carousel-item-height, 300px) + 100px)
24
+ );
34
25
  }
35
26
 
36
27
  /* ----- FALLBACK : Cas où il n'y a pas de logique de carousel ----- */
@@ -46,7 +37,7 @@
46
37
 
47
38
  .controls {
48
39
  position: absolute;
49
- top: var(--carousel-item-height);
40
+ top: var(--carousel-item-height, 300px);
50
41
  left: 0;
51
42
  width: 100%;
52
43
  margin: 0 auto;
@@ -59,25 +50,34 @@
59
50
 
60
51
  .carousel--wheel .controls {
61
52
  /* boutons au milieu de l'item central (item height / 2 - paddingtop carousel) */
62
- top: calc((var(--carousel-item-height) + var(--carousel-padding-top)) / 2);
53
+ top: calc(
54
+ (var(--carousel-item-height, 300px) + var(--carousel-padding-top, 60px)) / 2
55
+ );
63
56
  left: auto;
64
57
  /* largeur de la taille de l'item + des boutons + petit écart */
65
58
  width: calc(
66
- var(--carousel-item-width) + (var(--carousel-button-width) * 2) + 20px
59
+ var(--carousel-item-width, 400px) + (var(--carousel-button-width, 48px) * 2) +
60
+ 20px
67
61
  );
68
62
  transform: none;
69
63
  }
70
64
 
71
65
  .control {
72
- --ds-button-background: var(--carousel-button-background);
73
- --ds-button-hover-background: var(--carousel-button-hover-background);
74
- --ds-button-radius: var(--carousel-button-radius);
66
+ --ds-button-background: var(--carousel-button-background, hsl(0, 0%, 100%));
67
+ --ds-button-hover-background: var(
68
+ --carousel-button-hover-background,
69
+ hsl(0, 0%, 100%)
70
+ );
71
+ --ds-button-radius: var(--carousel-button-radius, 50%);
75
72
  --ds-button-border: var(--carousel-button-border);
76
- --ds-button-shadow: var(--carousel-button-shadow);
73
+ --ds-button-shadow: var(
74
+ --carousel-button-shadow,
75
+ 0 2px 8px rgba(0, 0, 0, 0.15)
76
+ );
77
77
 
78
78
  pointer-events: auto;
79
- width: var(--carousel-button-width);
80
- height: var(--carousel-button-width);
79
+ width: var(--carousel-button-width, 48px);
80
+ height: var(--carousel-button-width, 48px);
81
81
  display: flex;
82
82
  align-items: center;
83
83
  justify-content: center;
@@ -91,22 +91,22 @@
91
91
  left: -1px;
92
92
  height: 100%;
93
93
  width: 100%;
94
- background-image: var(--carousel-left-button-glow);
95
- border-radius: var(--carousel-button-radius);
94
+ background-image: var(--carousel-left-button-glow, transparent);
95
+ border-radius: var(--carousel-button-radius, 50%);
96
96
  z-index: -1;
97
97
  }
98
98
 
99
99
  .control + .control::after {
100
100
  left: auto;
101
101
  right: -1px;
102
- background-image: var(--carousel-right-button-glow);
102
+ background-image: var(--carousel-right-button-glow, transparent);
103
103
  z-index: -1;
104
104
  }
105
105
 
106
106
  .controlIcon {
107
- --size: var(--carousel-button-icon-size);
107
+ --size: var(--carousel-button-icon-size, 16px);
108
108
 
109
- fill: var(--carousel-button-icon-color);
109
+ fill: var(--carousel-button-icon-color, #081527);
110
110
  }
111
111
 
112
112
  .viewport {
@@ -123,8 +123,8 @@
123
123
  top: 0;
124
124
  left: 0;
125
125
  height: 100%;
126
- width: var(--carousel-item-width);
127
- background: var(--carousel-before-background);
126
+ width: var(--carousel-item-width, 400px);
127
+ background: var(--carousel-before-background, transparent);
128
128
  z-index: 1;
129
129
  }
130
130
 
@@ -134,8 +134,8 @@
134
134
  top: 0;
135
135
  right: 0;
136
136
  height: 100%;
137
- width: var(--carousel-item-width);
138
- background: var(--carousel-after-background);
137
+ width: var(--carousel-item-width, 400px);
138
+ background: var(--carousel-after-background, transparent);
139
139
  z-index: 1;
140
140
  }
141
141
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-search.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/instant-search/hooks/use-search.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;;EAU1E"}
1
+ {"version":3,"file":"use-search.d.ts","sourceRoot":"","sources":["../../../../../src/esf/components/instant-search/hooks/use-search.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;;EAgB1E"}
@@ -1,10 +1,17 @@
1
1
  import getConfig from "next/config";
2
2
  import useDebouncedSearch from "./use-debounced-search";
3
3
  import * as API from "../services/api";
4
+ import { sendEvent } from "../../../../future/components/event-analytics/instant-search";
4
5
  const { publicRuntimeConfig } = getConfig();
5
6
  const { site } = publicRuntimeConfig;
6
7
  export default function useSearch(lang, options = {}) {
7
8
  return useDebouncedSearch(async (query) => {
8
- return API.fetchResults(site, lang, query, options.queryBy, options.queryByWeights);
9
+ return API.fetchResults(site, lang, query, options.queryBy, options.queryByWeights).then((res) => {
10
+ sendEvent("esf", "search", {
11
+ query: query,
12
+ match_count: res?.result?.hits?.length,
13
+ });
14
+ return res;
15
+ });
9
16
  });
10
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instant-search.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/instant-search/instant-search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAK9D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,IAAI,EACJ,WAAW,EACX,SAAS,EACT,WAAW,EACX,OAAY,EACZ,cAAc,EACd,YAAY,GACb,EAAE,KAAK,2CAiIP"}
1
+ {"version":3,"file":"instant-search.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/instant-search/instant-search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAM9D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,IAAI,EACJ,WAAW,EACX,SAAS,EACT,WAAW,EACX,OAAY,EACZ,cAAc,EACd,YAAY,GACb,EAAE,KAAK,2CA8IP"}
@@ -11,6 +11,7 @@ import Results from "./results";
11
11
  import useSearch from "./hooks/use-search";
12
12
  import * as Plausible from "../../../future/components/plausible";
13
13
  import css from "./instant-search.module.css";
14
+ import { sendEvent } from "../../../future/components/event-analytics/instant-search";
14
15
  export default function InstantSearch({ lang, suggestions, className, ubloContext, options = {}, resultsOptions, productImage, }) {
15
16
  const [opened, setOpened] = React.useState(false);
16
17
  const [periodPickerOpened, setPeriodPickerOpened] = React.useState(false);
@@ -19,6 +20,7 @@ export default function InstantSearch({ lang, suggestions, className, ubloContex
19
20
  const classes = classNames(css.search, className);
20
21
  const openSearch = () => {
21
22
  setOpened(true);
23
+ sendEvent("esf", "load");
22
24
  };
23
25
  const closeSearch = (skipEvent) => {
24
26
  setOpened(false);
@@ -32,10 +34,23 @@ export default function InstantSearch({ lang, suggestions, className, ubloContex
32
34
  Plausible.sendGoal(event, {
33
35
  Terms: text,
34
36
  });
37
+ sendEvent("esf", event === "Search failed" ? "fail" : "cancel", {
38
+ query: text,
39
+ match_count: search?.result?.hits?.length,
40
+ });
41
+ }
42
+ else {
43
+ sendEvent("esf", "cancel");
35
44
  }
36
45
  }
37
46
  };
38
- const sendPlausibleGoal = (path) => () => {
47
+ const sendPlausibleGoal = (type) => (path) => () => {
48
+ sendEvent("esf", "success", {
49
+ query: text,
50
+ match_count: search?.result?.hits?.length,
51
+ path,
52
+ kind: type,
53
+ });
39
54
  Plausible.sendGoal("Search", {
40
55
  "Terms - Destination": `${text} - ${path}`,
41
56
  });
@@ -72,7 +72,7 @@ type Props = {
72
72
  };
73
73
  weekNumber: number | null;
74
74
  openPeriodPicker: () => void;
75
- sendPlausibleGoal: (path: string) => () => void;
75
+ sendPlausibleGoal: (type: string) => (path: string) => () => void;
76
76
  loading: boolean;
77
77
  resultsOptions?: ResultsOptions;
78
78
  productImage?: React.ComponentType<{
@@ -1 +1 @@
1
- {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/instant-search/results.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/instant-search/results.tsx"],"names":[],"mappings":"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"}
@@ -34,8 +34,8 @@ export default function Results({ lang, text, results, weekNumber, openPeriodPic
34
34
  instructors.length ||
35
35
  filteredFaqs.length ||
36
36
  information.length);
37
- return (_jsx("div", { className: css.results, children: (loading || text.length > 0) && (_jsxs("div", { className: css.inner, children: [_jsxs("div", { ref: ref, className: css.left, children: [_jsx(Links, { linksTitle: message(lang, "pages"), icon: "FileText", links: pages, loading: loading, sendPlausibleGoal: sendPlausibleGoal, linkOptions: resultsOptions.linkOptions }), _jsx(Links, { linksTitle: message(lang, "instructors"), icon: "User", links: instructors, loading: loading, sendPlausibleGoal: sendPlausibleGoal, linkOptions: resultsOptions.linkOptions }), _jsx(Links, { linksTitle: message(lang, "faqs"), icon: "Question", links: filteredFaqs, loading: loading, sendPlausibleGoal: sendPlausibleGoal, linkOptions: resultsOptions.linkOptions }), _jsx(Links, { linksTitle: message(lang, "information"), icon: "Info", links: information, loading: loading, sendPlausibleGoal: sendPlausibleGoal, linkOptions: {
37
+ return (_jsx("div", { className: css.results, children: (loading || text.length > 0) && (_jsxs("div", { className: css.inner, children: [_jsxs("div", { ref: ref, className: css.left, children: [_jsx(Links, { linksTitle: message(lang, "pages"), icon: "FileText", links: pages, loading: loading, sendPlausibleGoal: sendPlausibleGoal("pages"), linkOptions: resultsOptions.linkOptions }), _jsx(Links, { linksTitle: message(lang, "instructors"), icon: "User", links: instructors, loading: loading, sendPlausibleGoal: sendPlausibleGoal("instructors"), linkOptions: resultsOptions.linkOptions }), _jsx(Links, { linksTitle: message(lang, "faqs"), icon: "Question", links: filteredFaqs, loading: loading, sendPlausibleGoal: sendPlausibleGoal("faqs"), linkOptions: resultsOptions.linkOptions }), _jsx(Links, { linksTitle: message(lang, "information"), icon: "Info", links: information, loading: loading, sendPlausibleGoal: sendPlausibleGoal("information"), linkOptions: {
38
38
  ...resultsOptions.linkOptions,
39
39
  titleField: "pageTitle",
40
- } })] }), _jsxs("div", { className: css.right, children: [!loading && products.length > 0 && weekSystemEnabled && (_jsx(_Fragment, { children: showProductsTitle ? (_jsxs("div", { className: css.resultsWithWeekTitle, children: [message(lang, "productTitleWithWeek"), Dates.weekToLongDate(weekNumber, season.end, season.forceSeasonSwitch), _jsxs(Button, { onClick: openPeriodPicker, children: [_jsx(CalendarIcon, {}), message(lang, "updateWeek")] })] })) : (_jsxs("div", { className: css.resultsWithoutWeekTitle, children: [message(lang, "productTitleWithoutWeek"), _jsxs(Button, { onClick: openPeriodPicker, children: [_jsx(CalendarIcon, {}), message(lang, "chooseWeek")] })] })) })), _jsx(Products, { lang: lang, products: products, weekNumber: weekNumber, loading: loading, sendPlausibleGoal: sendPlausibleGoal, otherResultsRef: ref, isOtherResultsEmpty: isOtherResultsEmpty, productOptions: resultsOptions.productOptions, productImage: productImage })] })] })) }));
40
+ } })] }), _jsxs("div", { className: css.right, children: [!loading && products.length > 0 && weekSystemEnabled && (_jsx(_Fragment, { children: showProductsTitle ? (_jsxs("div", { className: css.resultsWithWeekTitle, children: [message(lang, "productTitleWithWeek"), Dates.weekToLongDate(weekNumber, season.end, season.forceSeasonSwitch), _jsxs(Button, { onClick: openPeriodPicker, children: [_jsx(CalendarIcon, {}), message(lang, "updateWeek")] })] })) : (_jsxs("div", { className: css.resultsWithoutWeekTitle, children: [message(lang, "productTitleWithoutWeek"), _jsxs(Button, { onClick: openPeriodPicker, children: [_jsx(CalendarIcon, {}), message(lang, "chooseWeek")] })] })) })), _jsx(Products, { lang: lang, products: products, weekNumber: weekNumber, loading: loading, sendPlausibleGoal: sendPlausibleGoal("product"), otherResultsRef: ref, isOtherResultsEmpty: isOtherResultsEmpty, productOptions: resultsOptions.productOptions, productImage: productImage })] })] })) }));
41
41
  }
@@ -0,0 +1,10 @@
1
+ type EventType = "load" | "search" | "success" | "fail" | "cancel";
2
+ export declare const sendEvent: (client: string, event: EventType, details?: {
3
+ query?: string;
4
+ match_count?: number;
5
+ path?: string;
6
+ kind?: string;
7
+ searchType?: string;
8
+ }) => void;
9
+ export {};
10
+ //# sourceMappingURL=instant-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instant-search.d.ts","sourceRoot":"","sources":["../../../../src/future/components/event-analytics/instant-search.ts"],"names":[],"mappings":"AAGA,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE,eAAO,MAAM,SAAS,WACZ,MAAM,SACP,SAAS,YACP;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,SA6CF,CAAC"}
@@ -0,0 +1,41 @@
1
+ const searchApi = "https://search.ublo.app/api";
2
+ const logApiUrl = `${searchApi}ublo-search/events/instant-search`;
3
+ let sessionIdGlobal = null;
4
+ export const sendEvent = (client, event, details = {}) => {
5
+ try {
6
+ if (event === "load") {
7
+ let dt = new Date().getTime();
8
+ const uuid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
9
+ const r = (dt + Math.random() * 16) % 16 | 0;
10
+ dt = Math.floor(dt / 16);
11
+ return (c === "x" ? r : (r & 0x3) | 0x8).toString(16);
12
+ });
13
+ sessionIdGlobal = uuid;
14
+ }
15
+ if (sessionIdGlobal === null) {
16
+ return;
17
+ }
18
+ fetch(logApiUrl, {
19
+ method: "POST",
20
+ headers: {
21
+ "Content-Type": "application/json",
22
+ },
23
+ body: JSON.stringify({
24
+ session: sessionIdGlobal,
25
+ client,
26
+ event,
27
+ ...details,
28
+ searchType: details.searchType || "instant-search",
29
+ mobile: typeof navigator !== "undefined"
30
+ ? navigator.userAgent.match(/Mobi/) !== null
31
+ : false,
32
+ hostname: typeof window !== "undefined" ? window.location.hostname : "server",
33
+ url: typeof window !== "undefined" ? window.location.href : "server",
34
+ userAgent: typeof navigator !== "undefined" ? navigator.userAgent : "server",
35
+ timestamp: new Date().toISOString(),
36
+ }),
37
+ });
38
+ }
39
+ catch (e) {
40
+ }
41
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ublo-lib",
3
- "version": "1.47.89",
3
+ "version": "1.47.91-rc0",
4
4
  "peerDependencies": {
5
5
  "classnames": "^2.5.1",
6
6
  "dt-design-system": "^3.12.0",