@unbxd-ui/unbxd-react-components 0.2.139 → 0.2.141

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.
@@ -48,11 +48,15 @@ var AccordianItem = function AccordianItem(props) {
48
48
  return item === id;
49
49
  }) ? true : false;
50
50
  var onItemClick = function onItemClick() {
51
- var newList = [id];
51
+ var newList = [];
52
52
  if (!allowOneOpen) {
53
53
  newList = isOpen ? openedItems.filter(function (item) {
54
54
  return item !== id;
55
55
  }) : [].concat(_toConsumableArray(openedItems), [id]);
56
+ } else {
57
+ if (!openedItems.includes(id)) {
58
+ newList = [id];
59
+ }
56
60
  }
57
61
  setOpenedItems(newList);
58
62
  };
@@ -11,7 +11,7 @@ var _Form = require("./Form");
11
11
  var _FormElementWrapper = _interopRequireDefault(require("./FormElementWrapper"));
12
12
  var _Validators = _interopRequireDefault(require("../../core/Validators"));
13
13
  var _utils = _interopRequireDefault(require("../../core/utils"));
14
- var _excluded = ["label", "name", "type", "className", "value", "defaultValue", "placeholder", "appearance", "onChange", "validations", "autoComplete", "showLabel"];
14
+ var _excluded = ["label", "name", "type", "className", "value", "defaultValue", "placeholder", "appearance", "language", "onChange", "validations", "autoComplete", "showLabel"];
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
16
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -41,6 +41,7 @@ var Input = function Input(props, ref) {
41
41
  defaultValue = props.defaultValue,
42
42
  placeholder = props.placeholder,
43
43
  appearance = props.appearance,
44
+ language = props.language,
44
45
  onChange = props.onChange,
45
46
  validations = props.validations,
46
47
  autoComplete = props.autoComplete,
@@ -48,6 +49,10 @@ var Input = function Input(props, ref) {
48
49
  restProps = _objectWithoutProperties(props, _excluded);
49
50
  var _useContext = (0, _react.useContext)(_Form.FormContext),
50
51
  onValueChange = _useContext.onValueChange;
52
+ var _useState3 = (0, _react.useState)(language === "ar" ? 'rtl' : 'ltr'),
53
+ _useState4 = _slicedToArray(_useState3, 2),
54
+ textDirection = _useState4[0],
55
+ setTextDirection = _useState4[1];
51
56
  var postFormValueChange = function postFormValueChange(value, error) {
52
57
  typeof onValueChange === "function" && onValueChange(name, value, error);
53
58
  };
@@ -61,6 +66,11 @@ var Input = function Input(props, ref) {
61
66
  } else {
62
67
  setError(error);
63
68
  }
69
+ if (language === "ar" && _utils["default"].isRTL(value, language)) {
70
+ setTextDirection("rtl");
71
+ } else {
72
+ setTextDirection("ltr");
73
+ }
64
74
  if (typeof onChange === "function") {
65
75
  onChange(value, error);
66
76
  }
@@ -81,7 +91,7 @@ var Input = function Input(props, ref) {
81
91
  defaultValue: defaultValue,
82
92
  placeholder: placeholder,
83
93
  autoComplete: autoComplete,
84
- className: "RCB-form-el",
94
+ className: "RCB-form-el ".concat(error ? "error" : "", " ").concat(textDirection),
85
95
  onChange: onInputChange,
86
96
  ref: ref
87
97
  }, restProps);
@@ -96,7 +106,7 @@ var Input = function Input(props, ref) {
96
106
  className: "RCB-form-el-label",
97
107
  htmlFor: name
98
108
  }, label), /*#__PURE__*/_react["default"].createElement("input", inputProps), error && /*#__PURE__*/_react["default"].createElement("div", {
99
- className: "RCB-form-error"
109
+ className: "RCB-form-error ".concat(textDirection)
100
110
  }, error));
101
111
  };
102
112
  Input = /*#__PURE__*/(0, _react.forwardRef)(Input);
@@ -9,7 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _Form = require("./Form");
11
11
  var _FormElementWrapper = _interopRequireDefault(require("./FormElementWrapper"));
12
- var _excluded = ["label", "name", "className", "value", "defaultValue", "placeholder", "appearance", "onChange"];
12
+ var _utils = _interopRequireDefault(require("../../core/utils"));
13
+ var _excluded = ["label", "name", "className", "value", "defaultValue", "placeholder", "appearance", "onChange", "language"];
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -18,6 +19,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
18
19
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
19
20
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
20
21
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
22
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
23
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
25
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
27
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
21
28
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
22
29
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
23
30
  var Textarea = function Textarea(props) {
@@ -29,9 +36,14 @@ var Textarea = function Textarea(props) {
29
36
  placeholder = props.placeholder,
30
37
  appearance = props.appearance,
31
38
  onChange = props.onChange,
39
+ language = props.language,
32
40
  restProps = _objectWithoutProperties(props, _excluded);
33
41
  var _useContext = (0, _react.useContext)(_Form.FormContext),
34
42
  onValueChange = _useContext.onValueChange;
43
+ var _useState = (0, _react.useState)(language === "ar" ? 'rtl' : 'ltr'),
44
+ _useState2 = _slicedToArray(_useState, 2),
45
+ textDirection = _useState2[0],
46
+ setTextDirection = _useState2[1];
35
47
  var postFormValueChange = function postFormValueChange(value) {
36
48
  typeof onValueChange === "function" && onValueChange(name, value);
37
49
  };
@@ -43,6 +55,11 @@ var Textarea = function Textarea(props) {
43
55
  if (typeof onChange === "function") {
44
56
  onChange(value);
45
57
  }
58
+ if (language === "ar" && _utils["default"].isRTL(value, language)) {
59
+ setTextDirection("rtl");
60
+ } else {
61
+ setTextDirection("ltr");
62
+ }
46
63
  postFormValueChange(value);
47
64
  };
48
65
  (0, _react.useEffect)(function () {
@@ -56,7 +73,7 @@ var Textarea = function Textarea(props) {
56
73
  id: name,
57
74
  defaultValue: defaultValue,
58
75
  placeholder: placeholder,
59
- className: "RCB-form-el",
76
+ className: "RCB-form-el ".concat(textDirection),
60
77
  onChange: onInputChange
61
78
  }, restProps);
62
79
  if (typeof onChange === "function") {
@@ -39,6 +39,8 @@ var Tooltip = function Tooltip(props, ref) {
39
39
  _useState4 = _slicedToArray(_useState3, 2),
40
40
  isOpen = _useState4[0],
41
41
  setIsOpen = _useState4[1];
42
+ var tooltipBodyRef = (0, _react.useRef)(null);
43
+ var tooltipRef = (0, _react.useRef)(null);
42
44
  var dirClassName = "RCB-tooltip-right";
43
45
  switch (direction) {
44
46
  case "bottom":
@@ -73,6 +75,39 @@ var Tooltip = function Tooltip(props, ref) {
73
75
  var hideToolTip = function hideToolTip() {
74
76
  setIsOpen(false);
75
77
  };
78
+ var changeModalState = function changeModalState(newState) {
79
+ setIsOpen(newState);
80
+ };
81
+ var onBodyClick = function onBodyClick(e) {
82
+ var eventTarget = e.target;
83
+ var inlineModalNode = tooltipRef.current;
84
+ var eventPathNodes = e.composedPath();
85
+ var isWithinModal = false;
86
+ if (inlineModalNode.contains(eventTarget)) {
87
+ isWithinModal = true;
88
+ } else {
89
+ for (var i = 0; i < eventPathNodes.length; i++) {
90
+ var node = eventPathNodes[i];
91
+ if (node !== window && inlineModalNode.contains(node)) {
92
+ isWithinModal = true;
93
+ break;
94
+ }
95
+ }
96
+ }
97
+ if (!isWithinModal) {
98
+ /* outside click -> close modal */
99
+ changeModalState(false);
100
+ }
101
+ };
102
+ (0, _react.useEffect)(function () {
103
+ /* add when mounted */
104
+ document.addEventListener("click", onBodyClick);
105
+
106
+ /* return function to be called when unmounted */
107
+ return function () {
108
+ document.removeEventListener("click", onBodyClick);
109
+ };
110
+ }, []);
76
111
  var eventProps = activatorAction === "click" ? {
77
112
  onClick: showToolTipClick
78
113
  } : {
@@ -80,11 +115,13 @@ var Tooltip = function Tooltip(props, ref) {
80
115
  onMouseLeave: hideToolTip
81
116
  };
82
117
  return /*#__PURE__*/_react["default"].createElement("div", {
83
- className: "RCB-tooltip ".concat(className)
118
+ className: "RCB-tooltip ".concat(className),
119
+ ref: tooltipRef
84
120
  }, /*#__PURE__*/_react["default"].createElement("div", _extends({
85
121
  className: "RCB-tooltip-btn"
86
122
  }, eventProps), /*#__PURE__*/_react["default"].createElement(TooltipActivator, restProps)), isOpen && /*#__PURE__*/_react["default"].createElement("div", {
87
- className: "RCB-tooltip-body ".concat(dirClassName, " ").concat(actionClassName)
123
+ className: "RCB-tooltip-body ".concat(dirClassName, " ").concat(actionClassName),
124
+ ref: tooltipBodyRef
88
125
  }, children));
89
126
  };
90
127
  Tooltip = /*#__PURE__*/(0, _react.forwardRef)(Tooltip);
package/core/utils.js CHANGED
@@ -98,6 +98,11 @@ var utils = {
98
98
  },
99
99
  isArray: function isArray(value) {
100
100
  return Object.prototype.toString.call(value) === "[object Array]";
101
+ },
102
+ isRTL: function isRTL(text, language) {
103
+ // check if the first non-digit character is RTL
104
+ var rtlRegex = /[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/;
105
+ return rtlRegex.test(text) || text === "" && language === "ar"; // along with fallback check for default direction
101
106
  }
102
107
  };
103
108
  var _default = exports["default"] = utils;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbxd-ui/unbxd-react-components",
3
- "version": "0.2.139",
3
+ "version": "0.2.141",
4
4
  "description": "React components library",
5
5
  "keywords": [
6
6
  "react components",