@cashub/ui 0.9.2 → 0.9.4

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.
@@ -39,8 +39,14 @@ var DatetimePicker = function DatetimePicker(_ref) {
39
39
  maxDate = _ref.maxDate,
40
40
  showTimeInput = _ref.showTimeInput,
41
41
  readOnly = _ref.readOnly,
42
- disabled = _ref.disabled;
42
+ disabled = _ref.disabled,
43
+ onBlur = _ref.onBlur;
43
44
  var datepickerRef = (0, _react.useRef)(null);
45
+
46
+ var handleOnBlur = function handleOnBlur() {
47
+ onBlur();
48
+ };
49
+
44
50
  var datePickerProps = {
45
51
  dateFormat: dateFormat,
46
52
  disabled: disabled,
@@ -57,6 +63,10 @@ var DatetimePicker = function DatetimePicker(_ref) {
57
63
  });
58
64
  }
59
65
 
66
+ if (onBlur) {
67
+ datePickerProps.onCalendarClose = handleOnBlur;
68
+ }
69
+
60
70
  (0, _react.useEffect)(function () {
61
71
  // set input to readonly
62
72
  if (datepickerRef && datepickerRef.current && readOnly) {
@@ -56,7 +56,8 @@ var ImageDropzone = function ImageDropzone(_ref) {
56
56
  onAddedFile = _ref.onAddedFile,
57
57
  onRemovedFile = _ref.onRemovedFile,
58
58
  setDropzoneFunc = _ref.setDropzoneFunc,
59
- cropper = _ref.cropper;
59
+ cropper = _ref.cropper,
60
+ onBlur = _ref.onBlur;
60
61
  var inputRef = (0, _react.useRef)(null);
61
62
 
62
63
  var _useState = (0, _react.useState)([]),
@@ -74,8 +75,16 @@ var ImageDropzone = function ImageDropzone(_ref) {
74
75
  addedFiles = _useState6[0],
75
76
  setAddedFiles = _useState6[1];
76
77
 
78
+ var refWrapper = (0, _react.useRef)(null);
79
+
80
+ var _useState7 = (0, _react.useState)(false),
81
+ _useState8 = _slicedToArray(_useState7, 2),
82
+ focus = _useState8[0],
83
+ setFocus = _useState8[1];
84
+
77
85
  var handleClick = function handleClick() {
78
86
  if (files.length >= maxFiles) return;
87
+ setFocus(false);
79
88
  inputRef.current.click();
80
89
  };
81
90
 
@@ -157,6 +166,7 @@ var ImageDropzone = function ImageDropzone(_ref) {
157
166
  }, [handleAddFiles]);
158
167
  var handleCrop = (0, _react.useCallback)(function (event, index, file) {
159
168
  event.stopPropagation();
169
+ setFocus(false);
160
170
  cropper.handler({
161
171
  file: file,
162
172
  src: file.url,
@@ -212,6 +222,14 @@ var ImageDropzone = function ImageDropzone(_ref) {
212
222
  var remove = (0, _react.useCallback)(function (index) {
213
223
  handleRemoveFile(null, index);
214
224
  }, [handleRemoveFile]);
225
+
226
+ var handleBlur = function handleBlur() {
227
+ if (focus) {
228
+ onBlur();
229
+ setFocus(false);
230
+ }
231
+ };
232
+
215
233
  (0, _react.useEffect)(function () {
216
234
  if (addedFiles.length > 0 && onAddedFile) {
217
235
  var startIndex = files.length - addedFiles.length;
@@ -244,6 +262,12 @@ var ImageDropzone = function ImageDropzone(_ref) {
244
262
  onDragOver: handleDragOver,
245
263
  onDrop: handleDrop,
246
264
  reachedLimit: files.length >= maxFiles,
265
+ onBlur: handleBlur,
266
+ onFocus: function onFocus() {
267
+ setFocus(true);
268
+ },
269
+ ref: refWrapper,
270
+ tabIndex: "-1",
247
271
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_HiddenFileInput.default, {
248
272
  multiple: true,
249
273
  ref: inputRef,
@@ -48,6 +48,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
48
48
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
49
49
 
50
50
  var UploadImage = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
51
+ var _ref$current, _ref$current$files;
52
+
51
53
  var id = _ref.id,
52
54
  src = _ref.src,
53
55
  _ref$alt = _ref.alt,
@@ -55,7 +57,10 @@ var UploadImage = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
55
57
  _ref$roundedCircle = _ref.roundedCircle,
56
58
  roundedCircle = _ref$roundedCircle === void 0 ? false : _ref$roundedCircle,
57
59
  cropperHandler = _ref.cropperHandler,
58
- onBlur = _ref.onBlur;
60
+ onBlur = _ref.onBlur,
61
+ onClear = _ref.onClear,
62
+ _ref$allowClear = _ref.allowClear,
63
+ allowClear = _ref$allowClear === void 0 ? false : _ref$allowClear;
59
64
 
60
65
  var _useTranslation = (0, _reactI18next.useTranslation)(),
61
66
  t = _useTranslation.t;
@@ -160,7 +165,8 @@ var UploadImage = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
160
165
 
161
166
  var handleBlur = function handleBlur(e) {
162
167
  e.preventDefault();
163
- e.stopPropagation();
168
+ e.stopPropagation(); // if click figure,after click button
169
+
164
170
  if (refWrapper.current.contains(e.relatedTarget)) return;
165
171
 
166
172
  if (e.target === refWrapper.current && onBlur) {
@@ -216,6 +222,10 @@ var UploadImage = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
216
222
  onClick: handleAvatarRemove,
217
223
  roundedCircle: roundedCircle,
218
224
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_fa.FaTimes, {})
225
+ }), allowClear && src && !(ref !== null && ref !== void 0 && (_ref$current = ref.current) !== null && _ref$current !== void 0 && (_ref$current$files = _ref$current.files) !== null && _ref$current$files !== void 0 && _ref$current$files.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(RemoveIcon, {
226
+ onClick: onClear,
227
+ roundedCircle: roundedCircle,
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_fa.FaTimes, {})
219
229
  })]
220
230
  });
221
231
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cashub/ui",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "private": false,
5
5
  "author": "CASHUB Team",
6
6
  "description": "CASHUB UI components library",
package/select/Select.js CHANGED
@@ -90,7 +90,8 @@ var Select = function Select(_ref) {
90
90
  fullWidth = _ref.fullWidth,
91
91
  large = _ref.large,
92
92
  fill = _ref.fill,
93
- fillReverse = _ref.fillReverse;
93
+ fillReverse = _ref.fillReverse,
94
+ onBlur = _ref.onBlur;
94
95
 
95
96
  var _useState = (0, _react.useState)((0, _lodash.default)('select-')),
96
97
  _useState2 = _slicedToArray(_useState, 1),
@@ -129,20 +130,25 @@ var Select = function Select(_ref) {
129
130
  focusedOption = _useState14[0],
130
131
  setFocusedOption = _useState14[1];
131
132
 
132
- var _useState15 = (0, _react.useState)([]),
133
+ var _useState15 = (0, _react.useState)(false),
133
134
  _useState16 = _slicedToArray(_useState15, 2),
134
- selectedOptions = _useState16[0],
135
- setSelectedOptions = _useState16[1];
135
+ isFocusCombobox = _useState16[0],
136
+ setIsFocusCombobox = _useState16[1];
136
137
 
137
- var _useState17 = (0, _react.useState)(options),
138
+ var _useState17 = (0, _react.useState)([]),
138
139
  _useState18 = _slicedToArray(_useState17, 2),
139
- filteredOptions = _useState18[0],
140
- setFilteredOptions = _useState18[1];
140
+ selectedOptions = _useState18[0],
141
+ setSelectedOptions = _useState18[1];
141
142
 
142
- var _useState19 = (0, _react.useState)(''),
143
+ var _useState19 = (0, _react.useState)(options),
143
144
  _useState20 = _slicedToArray(_useState19, 2),
144
- search = _useState20[0],
145
- setSearch = _useState20[1];
145
+ filteredOptions = _useState20[0],
146
+ setFilteredOptions = _useState20[1];
147
+
148
+ var _useState21 = (0, _react.useState)(''),
149
+ _useState22 = _slicedToArray(_useState21, 2),
150
+ search = _useState22[0],
151
+ setSearch = _useState22[1];
146
152
 
147
153
  var _useCustomPopper = (0, _hooks.useCustomPopper)(listBoxElement, dropdownElement),
148
154
  styles = _useCustomPopper.styles,
@@ -229,9 +235,10 @@ var Select = function Select(_ref) {
229
235
  event.stopPropagation();
230
236
  if (disabled === true) return;
231
237
  onSelect(value);
238
+ listBoxElement.focus();
232
239
  setSearch('');
233
240
  setDisplay(false);
234
- }, [disabled, onSelect]);
241
+ }, [disabled, onSelect, listBoxElement]);
235
242
  var handleOnDeselect = (0, _react.useCallback)(function (event, value) {
236
243
  event.stopPropagation();
237
244
  if (disabled === true) return;
@@ -407,6 +414,12 @@ var Select = function Select(_ref) {
407
414
 
408
415
  var handleSearchChange = function handleSearchChange(event) {
409
416
  setSearch(event.target.value);
417
+ };
418
+
419
+ var handleFocus = function handleFocus(e) {
420
+ e.preventDefault();
421
+ e.stopPropagation();
422
+ setIsFocusCombobox(true);
410
423
  }; // determine selected option(s)
411
424
 
412
425
 
@@ -541,7 +554,10 @@ var Select = function Select(_ref) {
541
554
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactOutsideClickHandler.default, {
542
555
  onOutsideClick: function onOutsideClick() {
543
556
  setDisplay(false);
557
+ if (onBlur) onBlur();
558
+ setIsFocusCombobox(false);
544
559
  },
560
+ disabled: !isFocusCombobox,
545
561
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Combobox, {
546
562
  role: "combobox",
547
563
  tabIndex: "0",
@@ -558,6 +574,7 @@ var Select = function Select(_ref) {
558
574
  large: large,
559
575
  $fill: fill,
560
576
  fillReverse: fillReverse,
577
+ onFocus: handleFocus,
561
578
  children: [selectedItem, selectedOptions.length > 0 && !multiple && !disabled && allowClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(CloseButton, {
562
579
  onClick: function onClick() {
563
580
  onSelect('');
@@ -23,6 +23,7 @@ var SelectedMultiple = function SelectedMultiple(_ref) {
23
23
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Selected, {
24
24
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
25
25
  onClick: onClick,
26
+ "data-testid": "removeOption",
26
27
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_fa.FaTimes, {})
27
28
  }), content]
28
29
  });
package/tagify/Tags.js CHANGED
@@ -49,7 +49,7 @@ var Tags = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
49
49
  });
50
50
  });
51
51
 
52
- var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .tagify {\n --tags-disabled-bg: var(--font-on-mute);\n --tags-border-color: var(--border-color);\n --tags-hover-border-color: var(--border-color);\n --tags-focus-border-color: var(--color-primary);\n --tag-invalid-color: var(--color-danger);\n --tag-remove-btn-bg--hover: var(--color-danger);\n --input-color: var(--font-on-background);\n\n border-radius: var(--border-radius-l);\n\n .tagify__tag {\n > div::before {\n border-radius: var(--border-radius-l);\n }\n }\n }\n"])));
52
+ var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .tagify {\n --tags-disabled-bg: var(--font-on-mute);\n --tags-border-color: var(--border-color);\n --tags-hover-border-color: var(--border-color);\n --tags-focus-border-color: var(--color-primary);\n --tag-invalid-color: var(--color-danger);\n --tag-remove-btn-bg--hover: var(--color-danger);\n --input-color: var(--font-on-background);\n\n border-radius: var(--border-radius-l);\n width: 100%;\n\n .tagify__tag {\n > div::before {\n border-radius: var(--border-radius-l);\n }\n }\n }\n"])));
53
53
 
54
54
  var _default = Tags;
55
55
  exports.default = _default;