@cashub/ui 0.43.10 → 0.44.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.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cashub/ui",
3
- "version": "0.43.10",
3
+ "version": "0.44.0",
4
4
  "private": false,
5
5
  "author": "CasHUB Team",
6
6
  "description": "CasHUB UI components library",
package/select/Select.js CHANGED
@@ -16,12 +16,15 @@ var _hooks = require("@cashub/hooks");
16
16
  var _utils = require("@cashub/utils");
17
17
  var _media = _interopRequireDefault(require("../styles/mixin/media"));
18
18
  var _SelectedSingle = _interopRequireDefault(require("./subComponent/SelectedSingle"));
19
- var _SelectedMultiple = _interopRequireDefault(require("./subComponent/SelectedMultiple"));
19
+ var _SelectedMultipleTags = _interopRequireDefault(require("./subComponent/SelectedMultipleTags"));
20
+ var _SelectedMultipleText = _interopRequireDefault(require("./subComponent/SelectedMultipleText"));
20
21
  var _ListBox = _interopRequireDefault(require("./subComponent/ListBox"));
21
22
  var _SearchBox = _interopRequireDefault(require("./subComponent/SearchBox"));
22
23
  var _Options = _interopRequireDefault(require("./subComponent/Options"));
23
24
  var _OptionGroup = _interopRequireDefault(require("./subComponent/OptionGroup"));
24
25
  var _Option = _interopRequireDefault(require("./subComponent/Option"));
26
+ var _Checkbox = _interopRequireDefault(require("./subComponent/Checkbox"));
27
+ var _Footer = _interopRequireDefault(require("./subComponent/Footer"));
25
28
  var _figure = require("../figure");
26
29
  var _image = require("../image");
27
30
  var _jsxRuntime = require("react/jsx-runtime");
@@ -41,6 +44,7 @@ const Select = _ref => {
41
44
  onSelect,
42
45
  onDeselect,
43
46
  multiple = false,
47
+ displayMode = 'tags',
44
48
  allowClear = false,
45
49
  allowSearch = true,
46
50
  disabled,
@@ -51,7 +55,8 @@ const Select = _ref => {
51
55
  fillReverse,
52
56
  onBlur,
53
57
  onSearch,
54
- flexGrow
58
+ flexGrow,
59
+ footer
55
60
  } = _ref;
56
61
  const {
57
62
  t
@@ -110,6 +115,12 @@ const Select = _ref => {
110
115
  }
111
116
  return parsedSelected;
112
117
  }, [multiple, enableSelectAll, newOptions.length, parsedSelected, allOptionId]);
118
+ const showCheckbox = (0, _react.useMemo)(() => {
119
+ if (multiple && displayMode === 'text') {
120
+ return true;
121
+ }
122
+ return false;
123
+ }, [displayMode, multiple]);
113
124
 
114
125
  // set focused option
115
126
  const handleFocusItem = (0, _react.useCallback)(element => {
@@ -227,15 +238,30 @@ const Select = _ref => {
227
238
  const selectedItem = (0, _react.useMemo)(() => {
228
239
  if (selectedOptions.length > 0) {
229
240
  if (multiple) {
241
+ if (displayMode === 'text') {
242
+ let text;
243
+ if (selectedOptions[0].id === allOptionId) {
244
+ [{
245
+ text
246
+ }] = selectedOptions;
247
+ } else {
248
+ text = selectedOptions.map(value => {
249
+ return value.text;
250
+ }).join(', ');
251
+ }
252
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultipleText.default, {
253
+ children: text
254
+ });
255
+ }
230
256
  if (selectedOptions[0].id === allOptionId) {
231
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultiple.default, {
257
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultipleTags.default, {
232
258
  content: selectedOptions[0].text,
233
259
  onClick: event => handleOnDeselect(event, selectedOptions[0].id),
234
260
  disabled: disabled
235
261
  }, selectedOptions[0].id);
236
262
  }
237
263
  return selectedOptions.map(value => {
238
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultiple.default, {
264
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultipleTags.default, {
239
265
  content: value.text,
240
266
  onClick: event => handleOnDeselect(event, value.id),
241
267
  disabled: disabled
@@ -249,7 +275,7 @@ const Select = _ref => {
249
275
  });
250
276
  }
251
277
  return placeholder;
252
- }, [placeholder, handleOnDeselect, multiple, selectedOptions, disabled, allOptionId]);
278
+ }, [placeholder, handleOnDeselect, multiple, displayMode, selectedOptions, disabled, allOptionId]);
253
279
  const optionItem = (0, _react.useMemo)(() => {
254
280
  if (optionList.length <= 0) return null;
255
281
  return optionList.map(option => {
@@ -282,12 +308,14 @@ const Select = _ref => {
282
308
  focus: focusedOption && focusedOption.id === option.id.toString(),
283
309
  selected: option.selected,
284
310
  "aria-selected": option.selected,
285
- children: [option.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, {
311
+ children: [showCheckbox && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.default, {
312
+ selected: option.selected
313
+ }), option.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, {
286
314
  src: option.icon
287
315
  }), option.text]
288
316
  }, option.id);
289
317
  });
290
- }, [optionList, focusedOption, handleOnSelect]);
318
+ }, [optionList, focusedOption, handleOnSelect, showCheckbox]);
291
319
 
292
320
  // show or hide listbox
293
321
  // and set listbox width according to combobox current width
@@ -558,6 +586,8 @@ const Select = _ref => {
558
586
  children: optionItem || /*#__PURE__*/(0, _jsxRuntime.jsx)(Message, {
559
587
  children: "No results found"
560
588
  })
589
+ }), footer && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Footer.default, {
590
+ children: footer
561
591
  })]
562
592
  })), document.body)]
563
593
  })
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
8
+ var _md = require("react-icons/md");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ var _templateObject, _templateObject2;
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ 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; }
13
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
14
+ const Checkbox = _ref => {
15
+ let {
16
+ selected
17
+ } = _ref;
18
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
19
+ selected: selected,
20
+ children: selected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_md.MdDone, {})
21
+ });
22
+ };
23
+ const Container = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n width: 24px;\n height: 24px;\n border: var(--border-width) solid var(--border-color);\n margin-right: var(--spacing-xs);\n border-radius: 4px;\n\n ", "\n\n > svg {\n position: absolute;\n color: var(--font-on-primary);\n font-size: var(--font-h3);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n"])), _ref2 => {
24
+ let {
25
+ selected
26
+ } = _ref2;
27
+ return selected && (0, _styledComponents.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: var(--color-primary);\n border-color: var(--color-primary);\n "])));
28
+ });
29
+ var _default = exports.default = Checkbox;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject;
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
11
+ const Footer = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: var(--spacing-s);\n border-top: 1px solid var(--border-color);\n"])));
12
+ var _default = exports.default = Footer;
@@ -10,7 +10,7 @@ var _jsxRuntime = require("react/jsx-runtime");
10
10
  var _templateObject;
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
13
- const SelectedMultiple = _ref => {
13
+ const SelectedMultipleTags = _ref => {
14
14
  let {
15
15
  content,
16
16
  onClick,
@@ -25,4 +25,4 @@ const SelectedMultiple = _ref => {
25
25
  });
26
26
  };
27
27
  const Selected = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n align-items: center;\n display: flex;\n background: var(--color-background3);\n border-radius: var(--border-radius-l);\n padding: 0.25rem calc(var(--spacing-xs) + 4px);\n margin: 4px 10px 4px 0;\n color: var(--font-on-background);\n font-weight: var(--font-normal);\n word-break: break-all;\n\n > span {\n display: flex;\n align-items: center;\n\n > svg {\n margin-right: var(--spacing-xs);\n color: var(--font-on-background);\n }\n }\n"])));
28
- var _default = exports.default = SelectedMultiple;
28
+ var _default = exports.default = SelectedMultipleTags;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject;
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
11
+ const SelectedMultipleText = _styledComponents.default.span(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])));
12
+ var _default = exports.default = SelectedMultipleText;