@asantemedia-org/edwardsvacuum-design-system 1.6.59 → 1.6.64

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/dist/index.js CHANGED
@@ -5,6 +5,7 @@ var reactFontawesome = require('@fortawesome/react-fontawesome');
5
5
  var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
6
6
  var uuid = require('uuid');
7
7
  var reactInternationalPhone = require('react-international-phone');
8
+ var friendlyChallenge = require('friendly-challenge');
8
9
 
9
10
  /******************************************************************************
10
11
  Copyright (c) Microsoft Corporation.
@@ -165,7 +166,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
165
166
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
166
167
  };
167
168
 
168
- var styles$2 = {"cmp-card":"card-module__cmp-card___45x9k","cmp-card__link":"card-module__cmp-card__link___OdszC","cmp-card__content-wrapper":"card-module__cmp-card__content-wrapper___gh335","cmp-card__content-category-wrapper":"card-module__cmp-card__content-category-wrapper___2vOjQ","cmp-card__content-category-wrapper__colour-edwards-red":"card-module__cmp-card__content-category-wrapper__colour-edwards-red___DYmt8","cmp-card__city-country":"card-module__cmp-card__city-country___dI13-","cmp-card__image-wrapper":"card-module__cmp-card__image-wrapper___IhPHw","placeholderImage":"card-module__placeholderImage___AXOh5","cmp-card--type-card-overlay":"card-module__cmp-card--type-card-overlay___344ul","cmp-card__title-wrapper":"card-module__cmp-card__title-wrapper___XHfZg","cmp-card__date":"card-module__cmp-card__date___7w-Ka","cmp-card__title":"card-module__cmp-card__title___cFKG8","cmp-card__footer":"card-module__cmp-card__footer___xcNXM","cmp-card--type-card-no-image":"card-module__cmp-card--type-card-no-image___G75ye","cmp-card--type-card-product":"card-module__cmp-card--type-card-product___IfqTr","cmp-card--type-card-product__wrapper":"card-module__cmp-card--type-card-product__wrapper___kulaR","cmp-card--type-card-product-no-image__wrapper":"card-module__cmp-card--type-card-product-no-image__wrapper___ot5Xe","cmp-card--type-card-product__image":"card-module__cmp-card--type-card-product__image___Bkb0A","cmp-card--type-card-product__meta":"card-module__cmp-card--type-card-product__meta___a7Tzc","cmp-card--type-card-product__title":"card-module__cmp-card--type-card-product__title___0JMQp","cmp-card--type-card-product__cta":"card-module__cmp-card--type-card-product__cta___qDSNo","cmp-card--type-card-product__prices":"card-module__cmp-card--type-card-product__prices___KWPS7","cmp-card--type-card-product__prices--login":"card-module__cmp-card--type-card-product__prices--login___gMhTo","show_prices":"card-module__show_prices___gjVhn","cmp-card--type-card-panel":"card-module__cmp-card--type-card-panel___95jYv","cmp-card__footer--color-malachite":"card-module__cmp-card__footer--color-malachite___jEnvy","cmp-card__footer--color-amethyst":"card-module__cmp-card__footer--color-amethyst___N55PL","cmp-card__footer--color-smokey-quartz-bright":"card-module__cmp-card__footer--color-smokey-quartz-bright___1mqyn","cmp-card__footer--color-olivine-bright":"card-module__cmp-card__footer--color-olivine-bright___O2urI","cmp-card--type-careers":"card-module__cmp-card--type-careers___Wqzcf","cmp-card--type-product_details":"card-module__cmp-card--type-product_details___vsNOc","cmp-card--type-product_details__product-info":"card-module__cmp-card--type-product_details__product-info___5L009","cmp-card--type-product_details__header":"card-module__cmp-card--type-product_details__header___Vb3-U","cmp-card--type-product_details__header__title":"card-module__cmp-card--type-product_details__header__title___4KSqX","cmp-card--type-product_details__header__product-code":"card-module__cmp-card--type-product_details__header__product-code___zf7yq","cmp-card--type-product_details__header__product-image":"card-module__cmp-card--type-product_details__header__product-image___Kyy35","cmp-card--type-product_details__spares-list":"card-module__cmp-card--type-product_details__spares-list___VQ31R","folding-spares-list":"card-module__folding-spares-list___ls5-n","folding-specification-list":"card-module__folding-specification-list___tIfSl","folding-specification-holder":"card-module__folding-specification-holder___OtcQQ","folding-spares-holder":"card-module__folding-spares-holder___OhMpO"};
169
+ var styles$3 = {"cmp-card":"card-module__cmp-card___45x9k","cmp-card__link":"card-module__cmp-card__link___OdszC","cmp-card__content-wrapper":"card-module__cmp-card__content-wrapper___gh335","cmp-card__content-category-wrapper":"card-module__cmp-card__content-category-wrapper___2vOjQ","cmp-card__content-category-wrapper__colour-edwards-red":"card-module__cmp-card__content-category-wrapper__colour-edwards-red___DYmt8","cmp-card__city-country":"card-module__cmp-card__city-country___dI13-","cmp-card__image-wrapper":"card-module__cmp-card__image-wrapper___IhPHw","placeholderImage":"card-module__placeholderImage___AXOh5","cmp-card--type-card-overlay":"card-module__cmp-card--type-card-overlay___344ul","cmp-card__title-wrapper":"card-module__cmp-card__title-wrapper___XHfZg","cmp-card__date":"card-module__cmp-card__date___7w-Ka","cmp-card__title":"card-module__cmp-card__title___cFKG8","cmp-card__footer":"card-module__cmp-card__footer___xcNXM","cmp-card--type-card-no-image":"card-module__cmp-card--type-card-no-image___G75ye","cmp-card--type-card-product":"card-module__cmp-card--type-card-product___IfqTr","cmp-card--type-card-product__wrapper":"card-module__cmp-card--type-card-product__wrapper___kulaR","cmp-card--type-card-product-no-image__wrapper":"card-module__cmp-card--type-card-product-no-image__wrapper___ot5Xe","cmp-card--type-card-product__image":"card-module__cmp-card--type-card-product__image___Bkb0A","cmp-card--type-card-product__meta":"card-module__cmp-card--type-card-product__meta___a7Tzc","cmp-card--type-card-product__title":"card-module__cmp-card--type-card-product__title___0JMQp","cmp-card--type-card-product__cta":"card-module__cmp-card--type-card-product__cta___qDSNo","cmp-card--type-card-product__prices":"card-module__cmp-card--type-card-product__prices___KWPS7","cmp-card--type-card-product__prices--login":"card-module__cmp-card--type-card-product__prices--login___gMhTo","show_prices":"card-module__show_prices___gjVhn","cmp-card--type-card-panel":"card-module__cmp-card--type-card-panel___95jYv","cmp-card__footer--color-malachite":"card-module__cmp-card__footer--color-malachite___jEnvy","cmp-card__footer--color-amethyst":"card-module__cmp-card__footer--color-amethyst___N55PL","cmp-card__footer--color-smokey-quartz-bright":"card-module__cmp-card__footer--color-smokey-quartz-bright___1mqyn","cmp-card__footer--color-olivine-bright":"card-module__cmp-card__footer--color-olivine-bright___O2urI","cmp-card--type-careers":"card-module__cmp-card--type-careers___Wqzcf","cmp-card--type-product_details":"card-module__cmp-card--type-product_details___vsNOc","cmp-card--type-product_details__product-info":"card-module__cmp-card--type-product_details__product-info___5L009","cmp-card--type-product_details__header":"card-module__cmp-card--type-product_details__header___Vb3-U","cmp-card--type-product_details__header__title":"card-module__cmp-card--type-product_details__header__title___4KSqX","cmp-card--type-product_details__header__product-code":"card-module__cmp-card--type-product_details__header__product-code___zf7yq","cmp-card--type-product_details__header__product-image":"card-module__cmp-card--type-product_details__header__product-image___Kyy35","cmp-card--type-product_details__spares-list":"card-module__cmp-card--type-product_details__spares-list___VQ31R","folding-spares-list":"card-module__folding-spares-list___ls5-n","folding-specification-list":"card-module__folding-specification-list___tIfSl","facet-value-list":"card-module__facet-value-list___HtnIT","facet-value-unit":"card-module__facet-value-unit___b722z","folding-specification-holder":"card-module__folding-specification-holder___OtcQQ","folding-spares-holder":"card-module__folding-spares-holder___OhMpO"};
169
170
 
170
171
  function getDefaultExportFromCjs (x) {
171
172
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
@@ -319,15 +320,123 @@ var AccordionSection = function (_a) {
319
320
 
320
321
  var placholderimg = "3697809e28f9e0fe.png";
321
322
 
322
- var PLACEHOLDER_INDICATOR = "?placeholder-storybook";
323
+ /**
324
+ * Parses delimited facet values into a structured format
325
+ *
326
+ * Input format: "pressure_psi|2.90#pressure_inHg|5.91#pressure_bar|0.200"
327
+ * Where:
328
+ * - `#` separates different unit entries
329
+ * - `|` separates the unit key from the value
330
+ */
331
+ /**
332
+ * Checks if a value is in the delimited facet format
333
+ */
334
+ var isDelimitedFacetValue = function (value) {
335
+ if (typeof value !== 'string') return false;
336
+ // Must contain both # (entry separator) and | (key-value separator)
337
+ return value.includes('#') && value.includes('|');
338
+ };
339
+ /**
340
+ * Extracts the display unit from a raw key
341
+ * e.g., "pressure_psi" -> "psi"
342
+ * e.g., "volumeFlowRate_l/s" -> "l/s"
343
+ * e.g., "power_kW" -> "kW"
344
+ */
345
+ var extractUnit = function (rawKey) {
346
+ var parts = rawKey.split('_');
347
+ if (parts.length > 1) {
348
+ // Return everything after the first underscore (handles units like "m/³h")
349
+ return parts.slice(1).join('_');
350
+ }
351
+ return rawKey;
352
+ };
353
+ /**
354
+ * Parses a delimited facet string into an array of entries
355
+ */
356
+ var parseDelimitedFacetValue = function (value) {
357
+ if (!isDelimitedFacetValue(value)) {
358
+ return [];
359
+ }
360
+ var entries = value.split('#');
361
+ return entries.map(function (entry) {
362
+ var _a = entry.split('|'),
363
+ rawKey = _a[0],
364
+ val = _a[1];
365
+ if (!rawKey || val === undefined) return null;
366
+ return {
367
+ unit: extractUnit(rawKey),
368
+ value: val,
369
+ rawKey: rawKey
370
+ };
371
+ }).filter(function (entry) {
372
+ return entry !== null;
373
+ });
374
+ };
375
+ /**
376
+ * Formats a delimited facet value into a human-readable string list
377
+ * Returns null if the value is not in delimited format
378
+ */
379
+ var formatFacetValueAsString = function (value) {
380
+ if (!isDelimitedFacetValue(value)) return null;
381
+ var entries = parseDelimitedFacetValue(value);
382
+ return entries.map(function (e) {
383
+ return "".concat(e.value, " ").concat(e.unit);
384
+ }).join(', ');
385
+ };
386
+
387
+ var styles$2 = {"facet-unit-selector":"FacetUnitSelector-module__facet-unit-selector___1Zdhx","facet-unit-selector__value":"FacetUnitSelector-module__facet-unit-selector__value___E-LAN","facet-unit-selector__unit":"FacetUnitSelector-module__facet-unit-selector__unit___TxIk7","facet-unit-selector__dropdown":"FacetUnitSelector-module__facet-unit-selector__dropdown___Xj3dK"};
388
+
323
389
  // Utility function to retrieve correct SCSS module class names
324
- var getStyle$1 = function (className) {
390
+ var getStyle$2 = function (className) {
325
391
  if (styles$2[className]) return styles$2[className];
326
392
  var nestedMatch = Object.keys(styles$2).find(function (key) {
327
393
  return key.includes(className);
328
394
  });
329
395
  return nestedMatch ? styles$2[nestedMatch] : "";
330
396
  };
397
+ var FacetUnitSelector = function (_a) {
398
+ var entries = _a.entries,
399
+ _b = _a.usePlainClasses,
400
+ usePlainClasses = _b === void 0 ? false : _b;
401
+ var _c = React.useState(0),
402
+ selectedIndex = _c[0],
403
+ setSelectedIndex = _c[1];
404
+ var getClassName = function (name) {
405
+ return usePlainClasses ? name : getStyle$2(name);
406
+ };
407
+ if (!entries || entries.length === 0) return null;
408
+ var selectedEntry = entries[selectedIndex];
409
+ var handleUnitChange = function (e) {
410
+ setSelectedIndex(Number(e.target.value));
411
+ };
412
+ return /*#__PURE__*/React.createElement("div", {
413
+ className: getClassName("facet-unit-selector")
414
+ }, /*#__PURE__*/React.createElement("span", {
415
+ className: getClassName("facet-unit-selector__value")
416
+ }, selectedEntry.value), entries.length > 1 ? /*#__PURE__*/React.createElement("select", {
417
+ className: getClassName("facet-unit-selector__dropdown"),
418
+ value: selectedIndex,
419
+ onChange: handleUnitChange,
420
+ "aria-label": "Select unit"
421
+ }, entries.map(function (entry, index) {
422
+ return /*#__PURE__*/React.createElement("option", {
423
+ key: entry.rawKey,
424
+ value: index
425
+ }, entry.unit);
426
+ })) : /*#__PURE__*/React.createElement("span", {
427
+ className: getClassName("facet-unit-selector__unit")
428
+ }, selectedEntry.unit));
429
+ };
430
+
431
+ var PLACEHOLDER_INDICATOR = "?placeholder-storybook";
432
+ // Utility function to retrieve correct SCSS module class names
433
+ var getStyle$1 = function (className) {
434
+ if (styles$3[className]) return styles$3[className];
435
+ var nestedMatch = Object.keys(styles$3).find(function (key) {
436
+ return key.includes(className);
437
+ });
438
+ return nestedMatch ? styles$3[nestedMatch] : "";
439
+ };
331
440
  var cardSizeMapping = function (size) {
332
441
  var classSrting;
333
442
  if (size === "small") {
@@ -529,13 +638,20 @@ var ProductDetailsCard = function (_a) {
529
638
  }, /*#__PURE__*/React.createElement("ul", {
530
639
  className: getClassName("folding-specification-list")
531
640
  }, facets && facets.map(function (facet) {
532
- return hit[facet.name] && /*#__PURE__*/React.createElement("li", {
641
+ var facetValue = hit[facet.name];
642
+ if (!facetValue) return null;
643
+ // Check if value is in delimited format (e.g., "pressure_psi|2.90#pressure_bar|0.200")
644
+ var isDelimited = isDelimitedFacetValue(facetValue);
645
+ return /*#__PURE__*/React.createElement("li", {
533
646
  key: facet.name
534
647
  }, /*#__PURE__*/React.createElement("strong", null, facet.label), /*#__PURE__*/React.createElement("br", null), facet.returnsHTML ? /*#__PURE__*/React.createElement("span", {
535
648
  dangerouslySetInnerHTML: {
536
- __html: hit[facet.name]
649
+ __html: facetValue
537
650
  }
538
- }) : hit[facet.name]);
651
+ }) : isDelimited ? /*#__PURE__*/React.createElement(FacetUnitSelector, {
652
+ entries: parseDelimitedFacetValue(facetValue),
653
+ usePlainClasses: usePlainClasses
654
+ }) : facetValue);
539
655
  })))), /*#__PURE__*/React.createElement("div", {
540
656
  className: getClassName("cmp-card--type-product_details__spares-list")
541
657
  }, (hit === null || hit === void 0 ? void 0 : hit.spares) && hit.spares.length > 0 && /*#__PURE__*/React.createElement(AccordionSection, {
@@ -738,7 +854,7 @@ var AlgoliaDynamicSearch = function (_a, useScopedStyles, styles) {
738
854
  var Component = Card$1;
739
855
  var title = hit.title;
740
856
  var cardStyle = "";
741
- var imageUrl = hit.imageUrl;
857
+ var imageUrl = hit.image;
742
858
  var hitUtm = new URLSearchParams({
743
859
  utm_source: "web",
744
860
  utm_medium: "alg",
@@ -1021,6 +1137,27 @@ var defaultQrFormTranslations = {
1021
1137
  consent_requiredMessage: "Please acknowledge this consent"
1022
1138
  };
1023
1139
 
1140
+ var FriendlyCaptcha = function (props) {
1141
+ React.useEffect(function () {
1142
+ console.log(props.element, "element");
1143
+ if (props.element) {
1144
+ var sdk = new friendlyChallenge.WidgetInstance(props.element, {
1145
+ startMode: "auto",
1146
+ doneCallback: function (solution) {
1147
+ if (props.onComplete) props.onComplete(solution);
1148
+ if (props.doneCallback) props.doneCallback();
1149
+ }
1150
+ });
1151
+ try {
1152
+ sdk.start();
1153
+ } catch (e) {
1154
+ console.error("FriendlyCaptcha initialization failed", e);
1155
+ }
1156
+ }
1157
+ }, [props.element]);
1158
+ return null;
1159
+ };
1160
+
1024
1161
  var QrForm = function (props) {
1025
1162
  var _a;
1026
1163
  var _b = React.useState(0),
@@ -1042,8 +1179,14 @@ var QrForm = function (props) {
1042
1179
  var _g = React.useState(true);
1043
1180
  _g[0];
1044
1181
  var setIsLoadingCountries = _g[1];
1182
+ var _h = React.useState(null),
1183
+ captchaElRef = _h[0],
1184
+ setCaptchaElRef = _h[1];
1045
1185
  // Use custom Button component if provided, otherwise use default
1046
1186
  var Button$1 = props.ButtonComponent || Button;
1187
+ var _j = React.useState(false),
1188
+ showSubmit = _j[0],
1189
+ setShowSubmit = _j[1];
1047
1190
  var i18n = __assign(__assign({}, defaultQrFormTranslations), props);
1048
1191
  var buttonProps = props;
1049
1192
  var consentFields = ((_a = props.consents) === null || _a === void 0 ? void 0 : _a.map(function (consent, index) {
@@ -1060,13 +1203,17 @@ var QrForm = function (props) {
1060
1203
  errorMessage: consent.policyMandatory ? i18n.consent_requiredMessage : ""
1061
1204
  };
1062
1205
  })) || [];
1206
+ React.useRef(null);
1063
1207
  React.useEffect(function () {
1064
1208
  var initialValues = {};
1065
1209
  props.fields.forEach(function (field) {
1066
1210
  initialValues[field.name] = field.value || '';
1067
1211
  });
1212
+ initialValues['portalId'] = props.hubspotAppId;
1213
+ initialValues['formId'] = props.hubspotId;
1214
+ initialValues['isChina'] = props.isChina ? "true" : "false";
1068
1215
  setFormValues(initialValues);
1069
- }, [props.fields]);
1216
+ }, [props.fields, props.hubspotAppId, props.hubspotId, props.isChina]);
1070
1217
  React.useEffect(function () {
1071
1218
  function loadCountries() {
1072
1219
  return __awaiter(this, void 0, void 0, function () {
@@ -1393,13 +1540,13 @@ var QrForm = function (props) {
1393
1540
  onClick: formNavigate,
1394
1541
  "data-page_target": pageIndex + 1,
1395
1542
  buttonStyle: "primary"
1396
- }) : /*#__PURE__*/React.createElement(Button$1, {
1543
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, (!props.captchaKey || showSubmit) && /*#__PURE__*/React.createElement(Button$1, {
1397
1544
  label: i18n === null || i18n === void 0 ? void 0 : i18n.submit,
1398
1545
  onClick: handleSubmit,
1399
1546
  buttonStyle: "primary",
1400
1547
  element: "button",
1401
1548
  type: "submit"
1402
- }));
1549
+ })));
1403
1550
  if (isPartial) {
1404
1551
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1405
1552
  className: "qr-form-fields"
@@ -1433,7 +1580,7 @@ var QrForm = function (props) {
1433
1580
  className: "bullet-point"
1434
1581
  }, /*#__PURE__*/React.createElement("span", null, index + 1)), /*#__PURE__*/React.createElement("h3", null, pageTitles[index]));
1435
1582
  }))), /*#__PURE__*/React.createElement("form", {
1436
- action: "".concat(props.formAction, "/").concat(props.hubspotAppId, "/").concat(props.hubspotId),
1583
+ action: "".concat(props.formAction),
1437
1584
  onSubmit: handleSubmit
1438
1585
  }, currentPage === 0 && /*#__PURE__*/React.createElement("section", {
1439
1586
  key: 1,
@@ -1462,10 +1609,36 @@ var QrForm = function (props) {
1462
1609
  }), renderFormSection({
1463
1610
  pageIndex: 3,
1464
1611
  sectionTitle: pageTitles[3]
1465
- }), /*#__PURE__*/React.createElement("input", {
1612
+ }), currentPage === pages.length - 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1613
+ id: "frc-widget",
1614
+ className: "vtba-friendly-captcha-react",
1615
+ "data-rad": "test",
1616
+ "data-sitekey": props.captchaKey,
1617
+ ref: function (el) {
1618
+ setCaptchaElRef(el);
1619
+ }
1620
+ }), !!props.captchaKey && captchaElRef && /*#__PURE__*/React.createElement(FriendlyCaptcha, {
1621
+ sitekey: props.captchaKey,
1622
+ doneCallback: function () {
1623
+ setShowSubmit(true);
1624
+ },
1625
+ element: captchaElRef
1626
+ })), /*#__PURE__*/React.createElement("input", {
1466
1627
  type: "hidden",
1467
1628
  name: "ip_location",
1468
1629
  value: formValues.ip_location || ''
1630
+ }), /*#__PURE__*/React.createElement("input", {
1631
+ type: "hidden",
1632
+ name: "portalId",
1633
+ value: props.hubspotAppId
1634
+ }), /*#__PURE__*/React.createElement("input", {
1635
+ type: "hidden",
1636
+ name: "formId",
1637
+ value: props.hubspotId
1638
+ }), /*#__PURE__*/React.createElement("input", {
1639
+ type: "hidden",
1640
+ name: "isChina",
1641
+ value: props.isChina ? "true" : "false"
1469
1642
  }))) : /*#__PURE__*/React.createElement("div", {
1470
1643
  className: "qr-form-thank-you-page"
1471
1644
  }, /*#__PURE__*/React.createElement("div", {
@@ -1484,7 +1657,12 @@ exports.AccordionSection = AccordionSection;
1484
1657
  exports.AlgoliaDynamicSearch = AlgoliaDynamicSearchEdwards;
1485
1658
  exports.AlgoliaDynamicSearchRaw = AlgoliaDynamicSearchRaw;
1486
1659
  exports.Card = Card;
1660
+ exports.FacetUnitSelector = FacetUnitSelector;
1661
+ exports.FriendlyCaptcha = FriendlyCaptcha;
1487
1662
  exports.ProductCard = ProductCard;
1488
1663
  exports.ProductDetailsCard = ProductDetailsCard;
1489
1664
  exports.QrForm = QrForm;
1665
+ exports.formatFacetValueAsString = formatFacetValueAsString;
1666
+ exports.isDelimitedFacetValue = isDelimitedFacetValue;
1667
+ exports.parseDelimitedFacetValue = parseDelimitedFacetValue;
1490
1668
  //# sourceMappingURL=index.js.map