s-platform-landing-section 0.1.10-alpha.11 → 0.1.10-alpha.14

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,4 +1,4 @@
1
- import React__default, { useState, useRef, useEffect, createElement, forwardRef, useImperativeHandle, memo, useCallback } from 'react';
1
+ import React__default, { useState, useRef, useEffect, createElement, forwardRef, useImperativeHandle, memo } from 'react';
2
2
  import { IoCartOutline, IoChevronDownOutline, IoInformationCircleOutline, IoLogOutOutline, IoLocationOutline, IoChevronBackOutline, IoChevronForwardOutline, IoCallOutline } from 'react-icons/io5';
3
3
  import { FaUserCircle, FaPhone, FaChevronLeft, FaChevronRight, FaAngleUp, FaAngleDown, FaCheckCircle, FaArrowLeft, FaArrowRight as FaArrowRight$1, FaFacebookSquare, FaFacebookMessenger, FaFacebookF } from 'react-icons/fa';
4
4
  import { FiMenu } from 'react-icons/fi';
@@ -6,7 +6,7 @@ import { RxCross2 } from 'react-icons/rx';
6
6
  import { PiHandbagSimpleLight } from 'react-icons/pi';
7
7
  import { CiSearch } from 'react-icons/ci';
8
8
  import { BsFilterLeft, BsCurrencyDollar } from 'react-icons/bs';
9
- import { FaMinus, FaPlus, FaArrowsRotate, FaStar, FaRegStarHalfStroke, FaRegStar } from 'react-icons/fa6';
9
+ import { FaMinus, FaRegEyeSlash, FaPlus, FaArrowsRotate, FaStar, FaRegStarHalfStroke, FaRegStar } from 'react-icons/fa6';
10
10
  import { LuSearch } from 'react-icons/lu';
11
11
  import { IoMdCheckmark, IoIosHeartEmpty } from 'react-icons/io';
12
12
  import DatePicker from 'react-datepicker';
@@ -7347,13 +7347,21 @@ var Input = forwardRef(function (props, ref) {
7347
7347
  _props$min = props.min,
7348
7348
  min = _props$min === void 0 ? 0 : _props$min,
7349
7349
  _props$max = props.max,
7350
- max = _props$max === void 0 ? null : _props$max;
7350
+ max = _props$max === void 0 ? null : _props$max,
7351
+ _props$isHidden = props.isHidden,
7352
+ isHidden = _props$isHidden === void 0 ? false : _props$isHidden,
7353
+ icons = props.icons,
7354
+ _props$iconsClassName = props.iconsClassName,
7355
+ iconsClassName = _props$iconsClassName === void 0 ? "" : _props$iconsClassName;
7351
7356
  var _useState = useState(defaultValue),
7352
7357
  value = _useState[0],
7353
7358
  _setValue = _useState[1];
7354
7359
  var _useState2 = useState(""),
7355
7360
  error = _useState2[0],
7356
7361
  _setError = _useState2[1];
7362
+ var _useState3 = useState(type),
7363
+ typeInput = _useState3[0],
7364
+ setTypeInput = _useState3[1];
7357
7365
  var refInput = useRef();
7358
7366
  useImperativeHandle(ref, function () {
7359
7367
  return {
@@ -7374,7 +7382,7 @@ var Input = forwardRef(function (props, ref) {
7374
7382
  var _validateData = function _validateData() {
7375
7383
  var count = 0;
7376
7384
  for (var _iterator = _createForOfIteratorHelperLoose(rules), _step; !(_step = _iterator()).done;) {
7377
- var _e$pattern;
7385
+ var _e$pattern, _e$validate;
7378
7386
  var e = _step.value;
7379
7387
  if ((e === null || e === void 0 ? void 0 : e.type) === 'required' && value === '') {
7380
7388
  _setError(e === null || e === void 0 ? void 0 : e.message);
@@ -7384,6 +7392,10 @@ var Input = forwardRef(function (props, ref) {
7384
7392
  _setError(e === null || e === void 0 ? void 0 : e.message);
7385
7393
  count++;
7386
7394
  break;
7395
+ } else if ((e === null || e === void 0 ? void 0 : e.type) === "validate" && e !== null && e !== void 0 && e.validate && !(e !== null && e !== void 0 && (_e$validate = e.validate) !== null && _e$validate !== void 0 && _e$validate.call(e))) {
7396
+ _setError(e === null || e === void 0 ? void 0 : e.message);
7397
+ count++;
7398
+ break;
7387
7399
  }
7388
7400
  }
7389
7401
  if (count) {
@@ -7408,6 +7420,11 @@ var Input = forwardRef(function (props, ref) {
7408
7420
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
7409
7421
  }
7410
7422
  };
7423
+ var changeHidden = function changeHidden() {
7424
+ if (typeInput === "text") setTypeInput("password");else {
7425
+ setTypeInput("text");
7426
+ }
7427
+ };
7411
7428
  var _className = "h-10 py-1 px-2 border border-stroke rounded " + className;
7412
7429
  var _inputClassName = (isQuantity ? "text-center w-12" : "") + " focus:outline-none focus:ring-0 " + inputClassName;
7413
7430
  var required = !!(rules !== null && rules !== void 0 && rules.find(function (e) {
@@ -7426,8 +7443,13 @@ var Input = forwardRef(function (props, ref) {
7426
7443
  onClick: function onClick() {
7427
7444
  return changeQuantity(-1);
7428
7445
  }
7429
- }, /*#__PURE__*/React__default.createElement(FaMinus, null)) : null, /*#__PURE__*/React__default.createElement("input", {
7430
- type: type,
7446
+ }, /*#__PURE__*/React__default.createElement(FaMinus, null)) : null, icons ? /*#__PURE__*/React__default.createElement("div", {
7447
+ className: "object-cover\t " + iconsClassName,
7448
+ dangerouslySetInnerHTML: {
7449
+ __html: icons
7450
+ }
7451
+ }) : null, /*#__PURE__*/React__default.createElement("input", {
7452
+ type: typeInput,
7431
7453
  name: name,
7432
7454
  value: value,
7433
7455
  placeholder: placeholder,
@@ -7435,7 +7457,13 @@ var Input = forwardRef(function (props, ref) {
7435
7457
  required: required,
7436
7458
  className: _inputClassName,
7437
7459
  ref: refInput
7438
- }), isQuantity ? /*#__PURE__*/React__default.createElement("button", {
7460
+ }), isHidden ? /*#__PURE__*/React__default.createElement("button", {
7461
+ onClick: function onClick() {
7462
+ changeHidden();
7463
+ }
7464
+ }, /*#__PURE__*/React__default.createElement(FaRegEyeSlash, {
7465
+ className: "font-semibold"
7466
+ })) : null, isQuantity ? /*#__PURE__*/React__default.createElement("button", {
7439
7467
  onClick: function onClick() {
7440
7468
  return changeQuantity(1);
7441
7469
  }
@@ -7445,7 +7473,6 @@ var Input = forwardRef(function (props, ref) {
7445
7473
  });
7446
7474
 
7447
7475
  var Select = forwardRef(function (props, ref) {
7448
- var _Object$values;
7449
7476
  var _props$label = props.label,
7450
7477
  label = _props$label === void 0 ? "" : _props$label,
7451
7478
  _props$labelClassName = props.labelClassName,
@@ -7498,13 +7525,6 @@ var Select = forwardRef(function (props, ref) {
7498
7525
  dropdownPosition = _useState6[0],
7499
7526
  setDropdownPosition = _useState6[1];
7500
7527
  var inputRef = useRef(null);
7501
- useEffect(function () {
7502
- if (isMulti) return;else {
7503
- setIsOpen(false);
7504
- setInputSearch("");
7505
- setListOptions(options);
7506
- }
7507
- }, [value]);
7508
7528
  useEffect(function () {
7509
7529
  if (isMulti) setValue(defaultValue);
7510
7530
  }, [defaultValue]);
@@ -7616,7 +7636,10 @@ var Select = forwardRef(function (props, ref) {
7616
7636
  return (value === null || value === void 0 ? void 0 : value.value) == valueId;
7617
7637
  };
7618
7638
  var handleSelection = function handleSelection(item) {
7619
- if (!isMulti) setValue(item);
7639
+ if (!isMulti) {
7640
+ setValue(item);
7641
+ setIsOpen(false);
7642
+ }
7620
7643
  onClick === null || onClick === void 0 ? void 0 : onClick(item);
7621
7644
  };
7622
7645
  var handleDeleteSelection = function handleDeleteSelection(e, item) {
@@ -7644,14 +7667,12 @@ var Select = forwardRef(function (props, ref) {
7644
7667
  className: "flex justify-between items-center w-full"
7645
7668
  }, isEmpty(value) || isMulti ? /*#__PURE__*/React__default.createElement("div", {
7646
7669
  className: "text-gray3 line-clamp-1"
7647
- }, placeholder) : renderItem && !isEmpty(value) && !isMulti ? /*#__PURE__*/React__default.createElement("div", {
7648
- className: "w-full",
7670
+ }, placeholder) : /*#__PURE__*/React__default.createElement("div", {
7671
+ className: "w-full text-start pointer-events-none",
7649
7672
  dangerouslySetInnerHTML: {
7650
- __html: Object === null || Object === void 0 ? void 0 : (_Object$values = Object.values(value)) === null || _Object$values === void 0 ? void 0 : _Object$values[0]
7673
+ __html: value === null || value === void 0 ? void 0 : value.label
7651
7674
  }
7652
- }) : /*#__PURE__*/React__default.createElement("div", {
7653
- className: "line-clamp-1"
7654
- }, value === null || value === void 0 ? void 0 : value.label), isButtonDelete && !isEmpty(value) ? /*#__PURE__*/React__default.createElement("div", {
7675
+ }), isButtonDelete && !isEmpty(value) ? /*#__PURE__*/React__default.createElement("div", {
7655
7676
  onClick: function onClick(e) {
7656
7677
  handleDeleteSelection(e, value);
7657
7678
  }
@@ -7810,13 +7831,18 @@ var InputPhoneNumber = forwardRef(function (props, ref) {
7810
7831
  inputClassName = _props$inputClassName === void 0 ? "" : _props$inputClassName,
7811
7832
  _props$labelClassName = props.labelClassName,
7812
7833
  labelClassName = _props$labelClassName === void 0 ? "" : _props$labelClassName,
7813
- buttonClassName = props.buttonClassName;
7814
- var _useState = useState(defaultValue),
7834
+ _props$options = props.options,
7835
+ options = _props$options === void 0 ? [{
7836
+ label: "<svg width=\"20\" height=\"20\" viewBox=\"0 0 36 36\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--twemoji\" preserveAspectRatio=\"xMidYMid meet\"><path fill=\"#DA251D\" d=\"M32 5H4a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4V9a4 4 0 0 0-4-4z\"></path><path fill=\"#FF0\" d=\"M19.753 16.037L18 10.642l-1.753 5.395h-5.672l4.589 3.333l-1.753 5.395L18 21.431l4.589 3.334l-1.753-5.395l4.589-3.333z\"></path></svg>",
7837
+ country: "Việt Nam",
7838
+ value: "+84"
7839
+ }] : _props$options;
7840
+ var _useState = useState(""),
7815
7841
  value = _useState[0],
7816
7842
  _setValue = _useState[1];
7817
7843
  var _useState2 = useState({
7818
- icons: "<?xml version=\"1.0\" encoding=\"utf-8\"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 36 36\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--twemoji\" preserveAspectRatio=\"xMidYMid meet\"><path fill=\"#DA251D\" d=\"M32 5H4a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4V9a4 4 0 0 0-4-4z\"></path><path fill=\"#FF0\" d=\"M19.753 16.037L18 10.642l-1.753 5.395h-5.672l4.589 3.333l-1.753 5.395L18 21.431l4.589 3.334l-1.753-5.395l4.589-3.333z\"></path></svg>",
7819
- label: "Việt Nam",
7844
+ label: "<svg width=\"20\" height=\"20\" viewBox=\"0 0 36 36\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--twemoji\" preserveAspectRatio=\"xMidYMid meet\"><path fill=\"#DA251D\" d=\"M32 5H4a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4V9a4 4 0 0 0-4-4z\"></path><path fill=\"#FF0\" d=\"M19.753 16.037L18 10.642l-1.753 5.395h-5.672l4.589 3.333l-1.753 5.395L18 21.431l4.589 3.334l-1.753-5.395l4.589-3.333z\"></path></svg>",
7845
+ country: "Việt Nam",
7820
7846
  value: "+84"
7821
7847
  }),
7822
7848
  countryCode = _useState2[0],
@@ -7824,6 +7850,11 @@ var InputPhoneNumber = forwardRef(function (props, ref) {
7824
7850
  var _useState3 = useState(""),
7825
7851
  error = _useState3[0],
7826
7852
  _setError = _useState3[1];
7853
+ useEffect(function () {
7854
+ if (defaultValue) {
7855
+ _setValue("+" + defaultValue);
7856
+ }
7857
+ }, []);
7827
7858
  var handleOnChange = function handleOnChange(event) {
7828
7859
  var value = event.target.value;
7829
7860
  _setValue(value);
@@ -7838,8 +7869,10 @@ var InputPhoneNumber = forwardRef(function (props, ref) {
7838
7869
  return _setValue(text);
7839
7870
  },
7840
7871
  getValue: function getValue() {
7841
- var phoneNumber = (countryCode === null || countryCode === void 0 ? void 0 : countryCode.value) + (value === null || value === void 0 ? void 0 : value.slice(1));
7842
- return phoneNumber;
7872
+ if (!(value !== null && value !== void 0 && value.startsWith(countryCode === null || countryCode === void 0 ? void 0 : countryCode.value))) {
7873
+ return (countryCode === null || countryCode === void 0 ? void 0 : countryCode.value) + (value === null || value === void 0 ? void 0 : value.replace(/^0/, ''));
7874
+ }
7875
+ return value;
7843
7876
  },
7844
7877
  setError: function setError(err) {
7845
7878
  return _setError(err);
@@ -7875,40 +7908,36 @@ var InputPhoneNumber = forwardRef(function (props, ref) {
7875
7908
  className: "text-danger"
7876
7909
  }, " *") : null;
7877
7910
  var _inputClassName = "h-full w-full px-2 focus:outline-none focus:ring-0 " + inputClassName;
7878
- var data = useCallback([{
7879
- icons: "<?xml version=\"1.0\" encoding=\"utf-8\"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 36 36\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\" role=\"img\" class=\"iconify iconify--twemoji\" preserveAspectRatio=\"xMidYMid meet\"><path fill=\"#DA251D\" d=\"M32 5H4a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4V9a4 4 0 0 0-4-4z\"></path><path fill=\"#FF0\" d=\"M19.753 16.037L18 10.642l-1.753 5.395h-5.672l4.589 3.333l-1.753 5.395L18 21.431l4.589 3.334l-1.753-5.395l4.589-3.333z\"></path></svg>",
7880
- label: "Việt Nam",
7881
- value: "+84"
7882
- }], []);
7883
7911
  return /*#__PURE__*/React__default.createElement("div", {
7884
7912
  className: "flex flex-col " + wrapClassName
7885
7913
  }, label ? /*#__PURE__*/React__default.createElement("label", {
7886
7914
  className: "mb-1 " + labelClassName
7887
7915
  }, label, labelRequired) : null, /*#__PURE__*/React__default.createElement("div", {
7888
- className: "flex items-center h-10 rounded-lg border px-2 py-1 " + className
7916
+ className: "flex items-center h-10 rounded-lg border pr-2 py-1 " + className
7889
7917
  }, /*#__PURE__*/React__default.createElement("button", {
7890
- className: "flex items-center border-r-2 " + buttonClassName
7918
+ className: "border-r-2"
7891
7919
  }, /*#__PURE__*/React__default.createElement(Select$1, {
7892
7920
  className: 'w-max border-0',
7893
7921
  defaultValue: countryCode,
7894
- options: data,
7922
+ options: options,
7895
7923
  optionClassName: "w-max",
7896
7924
  placeholder: "+84",
7897
7925
  onClick: setCountryCode,
7898
- selectClassName: "ps-0 pr-1",
7926
+ selectClassName: "ps-2 pr-1",
7899
7927
  renderItem: function renderItem(item) {
7900
7928
  return /*#__PURE__*/React__default.createElement("div", {
7901
7929
  className: "flex gap-3 items-center w-full"
7902
7930
  }, /*#__PURE__*/React__default.createElement("div", {
7903
7931
  dangerouslySetInnerHTML: {
7904
- __html: item === null || item === void 0 ? void 0 : item.icons
7932
+ __html: item === null || item === void 0 ? void 0 : item.label
7905
7933
  }
7906
7934
  }), /*#__PURE__*/React__default.createElement("div", {
7907
7935
  className: "text-start flex-1 text-sm"
7908
- }, item === null || item === void 0 ? void 0 : item.label), /*#__PURE__*/React__default.createElement("div", {
7936
+ }, item === null || item === void 0 ? void 0 : item.country), /*#__PURE__*/React__default.createElement("div", {
7909
7937
  className: "text-gray3"
7910
7938
  }, item === null || item === void 0 ? void 0 : item.value));
7911
- }
7939
+ },
7940
+ wrapClassName: "w-full"
7912
7941
  })), /*#__PURE__*/React__default.createElement("input", {
7913
7942
  type: type,
7914
7943
  name: name,
@@ -7931,7 +7960,7 @@ var formatCurrency = function formatCurrency(amount) {
7931
7960
  return formattedAmount + " \u20AB";
7932
7961
  };
7933
7962
  var pattern = {
7934
- phoneNumberPattern: /^0[0-9]{9}$/
7963
+ phoneNumberPattern: /^(?:\+84|0)\d{9}$/
7935
7964
  };
7936
7965
  var numberPattern = /^\d+$/;
7937
7966