@nuskin/nextgen-header 1.36.0 → 1.37.0
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/package-dist/index.js +60 -52
- package/package-dist/index.js.map +1 -1
- package/package-dist/index.mjs +111265 -0
- package/package-dist/index.mjs.map +1 -0
- package/package.json +1 -1
package/package-dist/index.js
CHANGED
|
@@ -101049,6 +101049,13 @@ var GTM_TRACKING_CONFIG = {
|
|
|
101049
101049
|
// Loyalty is always an anchor (`data-gtm-loyalty`); selector works for GTM delegation.
|
|
101050
101050
|
clickSelector: "[data-gtm-loyalty]"
|
|
101051
101051
|
},
|
|
101052
|
+
topRibbon: {
|
|
101053
|
+
componentName: "Top Ribbon",
|
|
101054
|
+
clickEvent: "top_ribbon_click",
|
|
101055
|
+
clickElement: "CTA Click",
|
|
101056
|
+
clickSelector: "a",
|
|
101057
|
+
extractClickData: true
|
|
101058
|
+
},
|
|
101052
101059
|
logo: {
|
|
101053
101060
|
componentName: "Logo",
|
|
101054
101061
|
clickEvent: "logo_click",
|
|
@@ -108118,13 +108125,6 @@ var isServer = typeof window === "undefined";
|
|
|
108118
108125
|
|
|
108119
108126
|
/** Stable reference — default `customFields = {}` in params creates a new object every render. */
|
|
108120
108127
|
var EMPTY_CUSTOM_FIELDS = {};
|
|
108121
|
-
function pageNameFromPathname(pathname) {
|
|
108122
|
-
var parts = String(pathname || "").split("/").filter(Boolean);
|
|
108123
|
-
if (parts.length <= 2) {
|
|
108124
|
-
return "";
|
|
108125
|
-
}
|
|
108126
|
-
return parts.slice(2).join("/");
|
|
108127
|
-
}
|
|
108128
108128
|
var GTMTracker = function GTMTracker(_ref) {
|
|
108129
108129
|
var componentName = _ref.componentName,
|
|
108130
108130
|
impressionEvent = _ref.impressionEvent,
|
|
@@ -108137,6 +108137,8 @@ var GTMTracker = function GTMTracker(_ref) {
|
|
|
108137
108137
|
clickSelector = _ref$clickSelector === void 0 ? "a" : _ref$clickSelector,
|
|
108138
108138
|
_ref$clickEventAction = _ref.clickEventAction,
|
|
108139
108139
|
clickEventAction = _ref$clickEventAction === void 0 ? "click" : _ref$clickEventAction,
|
|
108140
|
+
_ref$extractClickData = _ref.extractClickData,
|
|
108141
|
+
extractClickData = _ref$extractClickData === void 0 ? false : _ref$extractClickData,
|
|
108140
108142
|
customFields = _ref.customFields,
|
|
108141
108143
|
children = _ref.children;
|
|
108142
108144
|
// On the server, just render children — tracking is client-only.
|
|
@@ -108155,6 +108157,7 @@ var GTMTracker = function GTMTracker(_ref) {
|
|
|
108155
108157
|
clickTriggerType: clickTriggerType,
|
|
108156
108158
|
clickSelector: clickSelector,
|
|
108157
108159
|
clickEventAction: clickEventAction,
|
|
108160
|
+
extractClickData: extractClickData,
|
|
108158
108161
|
customFields: customFields !== null && customFields !== void 0 ? customFields : EMPTY_CUSTOM_FIELDS,
|
|
108159
108162
|
children: children
|
|
108160
108163
|
});
|
|
@@ -108171,11 +108174,12 @@ function GTMTrackerClient(_ref2) {
|
|
|
108171
108174
|
clickTriggerType = _ref2.clickTriggerType,
|
|
108172
108175
|
clickSelector = _ref2.clickSelector,
|
|
108173
108176
|
clickEventAction = _ref2.clickEventAction,
|
|
108177
|
+
extractClickData = _ref2.extractClickData,
|
|
108174
108178
|
customFields = _ref2.customFields,
|
|
108175
108179
|
children = _ref2.children;
|
|
108176
108180
|
var componentRef = (0,external_react_.useRef)(null);
|
|
108177
108181
|
var impressionTrackedRef = (0,external_react_.useRef)(false);
|
|
108178
|
-
var
|
|
108182
|
+
var pageUrl = typeof window !== "undefined" ? window.location.href : "";
|
|
108179
108183
|
(0,external_react_.useEffect)(function () {
|
|
108180
108184
|
if (!impressionEvent) return;
|
|
108181
108185
|
var observer = new IntersectionObserver(function (entries) {
|
|
@@ -108186,7 +108190,7 @@ function GTMTrackerClient(_ref2) {
|
|
|
108186
108190
|
component_name: componentName,
|
|
108187
108191
|
event: impressionEvent,
|
|
108188
108192
|
event_action: "view",
|
|
108189
|
-
|
|
108193
|
+
page_url: pageUrl
|
|
108190
108194
|
}, impressionElement && {
|
|
108191
108195
|
element: impressionElement
|
|
108192
108196
|
}), impressionTriggerType && {
|
|
@@ -108206,7 +108210,7 @@ function GTMTrackerClient(_ref2) {
|
|
|
108206
108210
|
observer.unobserve(el);
|
|
108207
108211
|
}
|
|
108208
108212
|
};
|
|
108209
|
-
}, [componentName, impressionEvent, customFields,
|
|
108213
|
+
}, [componentName, impressionEvent, customFields, pageUrl, impressionElement, impressionTriggerType]);
|
|
108210
108214
|
(0,external_react_.useEffect)(function () {
|
|
108211
108215
|
if (!clickEvent) return;
|
|
108212
108216
|
var el = componentRef.current;
|
|
@@ -108214,23 +108218,28 @@ function GTMTrackerClient(_ref2) {
|
|
|
108214
108218
|
var handleClick = function handleClick(e) {
|
|
108215
108219
|
var target = e.target.closest(clickSelector);
|
|
108216
108220
|
if (target) {
|
|
108217
|
-
|
|
108221
|
+
var _target$textContent;
|
|
108222
|
+
var dynamicData = extractClickData ? {
|
|
108223
|
+
text: (_target$textContent = target.textContent) === null || _target$textContent === void 0 ? void 0 : _target$textContent.trim(),
|
|
108224
|
+
url: target.href
|
|
108225
|
+
} : {};
|
|
108226
|
+
trackVisualBuilderEvent(GTMTracker_objectSpread(GTMTracker_objectSpread(GTMTracker_objectSpread(GTMTracker_objectSpread({
|
|
108218
108227
|
component_name: componentName,
|
|
108219
108228
|
event: clickEvent,
|
|
108220
108229
|
event_action: clickEventAction,
|
|
108221
|
-
|
|
108230
|
+
page_url: pageUrl
|
|
108222
108231
|
}, clickElement && {
|
|
108223
108232
|
element: clickElement
|
|
108224
108233
|
}), clickTriggerType && {
|
|
108225
108234
|
trigger_type: clickTriggerType
|
|
108226
|
-
}), customFields));
|
|
108235
|
+
}), customFields), dynamicData));
|
|
108227
108236
|
}
|
|
108228
108237
|
};
|
|
108229
108238
|
el.addEventListener("click", handleClick, true);
|
|
108230
108239
|
return function () {
|
|
108231
108240
|
return el.removeEventListener("click", handleClick, true);
|
|
108232
108241
|
};
|
|
108233
|
-
}, [componentName, clickEvent, clickElement, clickTriggerType, clickSelector, clickEventAction, customFields,
|
|
108242
|
+
}, [componentName, clickEvent, clickElement, clickTriggerType, clickSelector, clickEventAction, extractClickData, customFields, pageUrl]);
|
|
108234
108243
|
return /*#__PURE__*/(0,jsx_runtime_.jsx)(GTMTrackerRoot, {
|
|
108235
108244
|
ref: componentRef,
|
|
108236
108245
|
children: children
|
|
@@ -108246,6 +108255,7 @@ GTMTracker.propTypes = {
|
|
|
108246
108255
|
clickTriggerType: (external_prop_types_default()).string,
|
|
108247
108256
|
clickSelector: (external_prop_types_default()).string,
|
|
108248
108257
|
clickEventAction: (external_prop_types_default()).string,
|
|
108258
|
+
extractClickData: (external_prop_types_default()).bool,
|
|
108249
108259
|
customFields: (external_prop_types_default()).object,
|
|
108250
108260
|
children: (external_prop_types_default()).node.isRequired
|
|
108251
108261
|
};
|
|
@@ -108525,22 +108535,6 @@ var TopRibbon = function TopRibbon(_ref) {
|
|
|
108525
108535
|
return null;
|
|
108526
108536
|
}
|
|
108527
108537
|
var editing = isEditingMode();
|
|
108528
|
-
|
|
108529
|
-
/**
|
|
108530
|
-
* Fires a GTM dataLayer event when a link is clicked.
|
|
108531
|
-
* Does NOT call preventDefault — native target="_blank" behaviour is preserved.
|
|
108532
|
-
* SSR-safe: guarded behind typeof window check.
|
|
108533
|
-
*
|
|
108534
|
-
* @param {Object} item - The navigation item that was clicked
|
|
108535
|
-
*/
|
|
108536
|
-
var handleClick = function handleClick(item) {
|
|
108537
|
-
if (typeof window === "undefined" || !Array.isArray(window.dataLayer)) return;
|
|
108538
|
-
window.dataLayer.push(TopRibbon_objectSpread({
|
|
108539
|
-
event: "top_ribbon_click",
|
|
108540
|
-
link_text: item.label,
|
|
108541
|
-
link_url: item.url
|
|
108542
|
-
}, item.gtmEvent));
|
|
108543
|
-
};
|
|
108544
108538
|
return /*#__PURE__*/(0,jsx_runtime_.jsx)(StyledTopRibbon, {
|
|
108545
108539
|
className: className,
|
|
108546
108540
|
"data-testid": dataTestId,
|
|
@@ -108572,9 +108566,6 @@ var TopRibbon = function TopRibbon(_ref) {
|
|
|
108572
108566
|
href: linkHref,
|
|
108573
108567
|
target: "_blank",
|
|
108574
108568
|
rel: "noopener noreferrer",
|
|
108575
|
-
onClick: function onClick() {
|
|
108576
|
-
return handleClick(item);
|
|
108577
|
-
},
|
|
108578
108569
|
"aria-label": linkAriaLabel,
|
|
108579
108570
|
"data-testid": linkTestId,
|
|
108580
108571
|
children: /*#__PURE__*/(0,jsx_runtime_.jsx)("span", TopRibbon_objectSpread(TopRibbon_objectSpread({}, editing ? (_item$$ = item.$) === null || _item$$ === void 0 ? void 0 : _item$$.label : null), {}, {
|
|
@@ -111218,14 +111209,30 @@ function LoyaltyComponent(_ref3) {
|
|
|
111218
111209
|
LoyaltyComponent.propTypes = {
|
|
111219
111210
|
data: (external_prop_types_default()).object
|
|
111220
111211
|
};
|
|
111212
|
+
function TopRibbonComponent(_ref4) {
|
|
111213
|
+
var _data$top_ribbon_aria;
|
|
111214
|
+
var data = _ref4.data,
|
|
111215
|
+
_ref4$parentTags = _ref4.parentTags,
|
|
111216
|
+
parentTags = _ref4$parentTags === void 0 ? {} : _ref4$parentTags;
|
|
111217
|
+
if (!(data !== null && data !== void 0 && data.show_top_ribbon)) return null;
|
|
111218
|
+
return withTracking(/*#__PURE__*/(0,jsx_runtime_.jsx)("div", HeaderView_objectSpread(HeaderView_objectSpread(HeaderView_objectSpread({}, (parentTags === null || parentTags === void 0 ? void 0 : parentTags.top_ribbon) || {}), (parentTags === null || parentTags === void 0 ? void 0 : parentTags.top_ribbon__parent) || {}), {}, {
|
|
111219
|
+
children: /*#__PURE__*/(0,jsx_runtime_.jsx)(top_ribbon_TopRibbon, {
|
|
111220
|
+
links: [data],
|
|
111221
|
+
ariaLabel: (_data$top_ribbon_aria = data.top_ribbon_aria_label) !== null && _data$top_ribbon_aria !== void 0 ? _data$top_ribbon_aria : "Top Ribbon",
|
|
111222
|
+
dataTestId: "header-top-ribbon"
|
|
111223
|
+
})
|
|
111224
|
+
})), {
|
|
111225
|
+
componentType: "topRibbon"
|
|
111226
|
+
});
|
|
111227
|
+
}
|
|
111221
111228
|
function LogoComponent(props) {
|
|
111222
111229
|
return withTracking(/*#__PURE__*/(0,jsx_runtime_.jsx)(Brand, HeaderView_objectSpread({}, props)), {
|
|
111223
111230
|
componentType: "logo"
|
|
111224
111231
|
});
|
|
111225
111232
|
}
|
|
111226
|
-
function CartComponent(
|
|
111227
|
-
var data =
|
|
111228
|
-
parent$ =
|
|
111233
|
+
function CartComponent(_ref5) {
|
|
111234
|
+
var data = _ref5.data,
|
|
111235
|
+
parent$ = _ref5.parent$;
|
|
111229
111236
|
return withTracking(/*#__PURE__*/(0,jsx_runtime_.jsx)(HeaderCartRegion, {
|
|
111230
111237
|
data: data,
|
|
111231
111238
|
parent$: parent$
|
|
@@ -111237,14 +111244,14 @@ CartComponent.propTypes = {
|
|
|
111237
111244
|
data: (external_prop_types_default()).object,
|
|
111238
111245
|
parent$: (external_prop_types_default()).object
|
|
111239
111246
|
};
|
|
111240
|
-
function HeaderView(
|
|
111241
|
-
var _headerEntry$logo, _headerEntry$locale_s, _utilityLinksEntry$lo, _utilityLinksEntry$lo2, _headerEntry$cart, _storefrontParams$car, _headerEntry$$, _headerEntry$top_ribb, _headerEntry$market_s, _headerEntry$translat, _headerEntry$translat2,
|
|
111242
|
-
var country =
|
|
111243
|
-
language =
|
|
111244
|
-
locale =
|
|
111245
|
-
headerEntry =
|
|
111246
|
-
searchConfig =
|
|
111247
|
-
storefrontParams =
|
|
111247
|
+
function HeaderView(_ref6) {
|
|
111248
|
+
var _headerEntry$logo, _headerEntry$locale_s, _utilityLinksEntry$lo, _utilityLinksEntry$lo2, _headerEntry$cart, _storefrontParams$car, _headerEntry$$, _headerEntry$top_ribb, _headerEntry$market_s, _headerEntry$translat, _headerEntry$translat2, _headerEntry$$2, _ref7, _headerEntry$locale, _headerEntry$$3, _headerEntry$$4;
|
|
111249
|
+
var country = _ref6.country,
|
|
111250
|
+
language = _ref6.language,
|
|
111251
|
+
locale = _ref6.locale,
|
|
111252
|
+
headerEntry = _ref6.headerEntry,
|
|
111253
|
+
searchConfig = _ref6.searchConfig,
|
|
111254
|
+
storefrontParams = _ref6.storefrontParams;
|
|
111248
111255
|
var _useState = (0,external_react_.useState)(false),
|
|
111249
111256
|
_useState2 = HeaderView_slicedToArray(_useState, 2),
|
|
111250
111257
|
isMobileMenuOpen = _useState2[0],
|
|
@@ -111281,13 +111288,10 @@ function HeaderView(_ref5) {
|
|
|
111281
111288
|
"data-country": country,
|
|
111282
111289
|
"data-language": language,
|
|
111283
111290
|
"data-locale": locale,
|
|
111284
|
-
children: [
|
|
111285
|
-
|
|
111286
|
-
|
|
111287
|
-
|
|
111288
|
-
dataTestId: "header-top-ribbon"
|
|
111289
|
-
})
|
|
111290
|
-
})), /*#__PURE__*/(0,jsx_runtime_.jsxs)(TopHeaderRow, {
|
|
111291
|
+
children: [/*#__PURE__*/(0,jsx_runtime_.jsx)(TopRibbonComponent, {
|
|
111292
|
+
data: topRibbon,
|
|
111293
|
+
parentTags: $
|
|
111294
|
+
}), /*#__PURE__*/(0,jsx_runtime_.jsxs)(TopHeaderRow, {
|
|
111291
111295
|
children: [/*#__PURE__*/(0,jsx_runtime_.jsx)(MobileMenuButton, {
|
|
111292
111296
|
onClick: function onClick() {
|
|
111293
111297
|
return setIsMobileMenuOpen(true);
|
|
@@ -111324,7 +111328,7 @@ function HeaderView(_ref5) {
|
|
|
111324
111328
|
children: [/*#__PURE__*/(0,jsx_runtime_.jsx)(MarketSelector, {
|
|
111325
111329
|
data: marketSelector,
|
|
111326
111330
|
logo: logoData,
|
|
111327
|
-
locale: String((
|
|
111331
|
+
locale: String((_ref7 = (_headerEntry$locale = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.locale) !== null && _headerEntry$locale !== void 0 ? _headerEntry$locale : locale) !== null && _ref7 !== void 0 ? _ref7 : "").trim(),
|
|
111328
111332
|
parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$3 = headerEntry.$) === null || _headerEntry$$3 === void 0 ? void 0 : _headerEntry$$3.market_selector__0,
|
|
111329
111333
|
mobileTriggerMode: "drawerPortal",
|
|
111330
111334
|
drawerOpen: isMobileMenuOpen,
|
|
@@ -111382,6 +111386,10 @@ HeaderView.propTypes = {
|
|
|
111382
111386
|
customerData: (external_prop_types_default()).object
|
|
111383
111387
|
})
|
|
111384
111388
|
};
|
|
111389
|
+
TopRibbonComponent.propTypes = {
|
|
111390
|
+
data: (external_prop_types_default()).object,
|
|
111391
|
+
parentTags: (external_prop_types_default()).object
|
|
111392
|
+
};
|
|
111385
111393
|
;// ./src/styles/Main.styled.js
|
|
111386
111394
|
|
|
111387
111395
|
function Main_styled_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|