@dreamcommerce/aurora 3.0.0-263 → 3.0.0-265

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.
Files changed (93) hide show
  1. package/build/cjs/external/fast-equals/dist/esm/index.mjs.js +619 -0
  2. package/build/cjs/external/fast-equals/dist/esm/index.mjs.js.map +1 -0
  3. package/build/cjs/packages/aurora/src/components/controls/select_control/select_control.js +3 -3
  4. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_content.js +42 -26
  5. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_content.js.map +1 -1
  6. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_group_label.js +4 -4
  7. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_item.js +11 -7
  8. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_item.js.map +1 -1
  9. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_search.js +24 -0
  10. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_search.js.map +1 -0
  11. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_trigger.js +5 -8
  12. package/build/cjs/packages/aurora/src/components/multiselect/components/multiselect_trigger.js.map +1 -1
  13. package/build/cjs/packages/aurora/src/components/multiselect/hooks/use_multiselect_value.js +42 -0
  14. package/build/cjs/packages/aurora/src/components/multiselect/hooks/use_multiselect_value.js.map +1 -0
  15. package/build/cjs/packages/aurora/src/components/multiselect/multiselect.js +30 -40
  16. package/build/cjs/packages/aurora/src/components/multiselect/multiselect.js.map +1 -1
  17. package/build/cjs/packages/aurora/src/components/multiselect/multiselect_utils.js +48 -0
  18. package/build/cjs/packages/aurora/src/components/multiselect/multiselect_utils.js.map +1 -0
  19. package/build/cjs/packages/aurora/src/components/select/components/select_content.js +35 -43
  20. package/build/cjs/packages/aurora/src/components/select/components/select_content.js.map +1 -1
  21. package/build/cjs/packages/aurora/src/components/select/components/select_group_label.js +4 -4
  22. package/build/cjs/packages/aurora/src/components/select/components/select_item.js +12 -8
  23. package/build/cjs/packages/aurora/src/components/select/components/select_item.js.map +1 -1
  24. package/build/cjs/packages/aurora/src/components/select/components/select_search.js +36 -0
  25. package/build/cjs/packages/aurora/src/components/select/components/select_search.js.map +1 -0
  26. package/build/cjs/packages/aurora/src/components/select/components/select_trigger.js +7 -4
  27. package/build/cjs/packages/aurora/src/components/select/components/select_trigger.js.map +1 -1
  28. package/build/cjs/packages/aurora/src/components/select/hooks/use_prevent_search_blur.js +49 -0
  29. package/build/cjs/packages/aurora/src/components/select/hooks/use_prevent_search_blur.js.map +1 -0
  30. package/build/cjs/packages/aurora/src/components/select/hooks/use_select_value.js +39 -0
  31. package/build/cjs/packages/aurora/src/components/select/hooks/use_select_value.js.map +1 -0
  32. package/build/cjs/packages/aurora/src/components/select/select.js +56 -83
  33. package/build/cjs/packages/aurora/src/components/select/select.js.map +1 -1
  34. package/build/cjs/packages/aurora/src/components/select/select_utils.js +39 -0
  35. package/build/cjs/packages/aurora/src/components/select/select_utils.js.map +1 -0
  36. package/build/esm/external/fast-equals/dist/esm/index.mjs.js +606 -0
  37. package/build/esm/external/fast-equals/dist/esm/index.mjs.js.map +1 -0
  38. package/build/esm/packages/aurora/src/components/controls/select_control/select_control.js +3 -3
  39. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_content.d.ts +1 -1
  40. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_content.js +42 -26
  41. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_content.js.map +1 -1
  42. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_group_label.d.ts +2 -2
  43. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_group_label.js +4 -4
  44. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_item.js +11 -7
  45. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_item.js.map +1 -1
  46. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_search.d.ts +3 -0
  47. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_search.js +16 -0
  48. package/build/{cjs/packages/aurora/src/components/select/components/select_value.js.map → esm/packages/aurora/src/components/multiselect/components/multiselect_search.js.map} +1 -1
  49. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_trigger.js +5 -8
  50. package/build/esm/packages/aurora/src/components/multiselect/components/multiselect_trigger.js.map +1 -1
  51. package/build/esm/packages/aurora/src/components/multiselect/hooks/use_multiselect_value.d.ts +5 -0
  52. package/build/esm/packages/aurora/src/components/multiselect/hooks/use_multiselect_value.js +38 -0
  53. package/build/esm/packages/aurora/src/components/multiselect/hooks/use_multiselect_value.js.map +1 -0
  54. package/build/esm/packages/aurora/src/components/multiselect/multiselect.d.ts +2 -2
  55. package/build/esm/packages/aurora/src/components/multiselect/multiselect.js +32 -42
  56. package/build/esm/packages/aurora/src/components/multiselect/multiselect.js.map +1 -1
  57. package/build/esm/packages/aurora/src/components/multiselect/multiselect_types.d.ts +9 -4
  58. package/build/esm/packages/aurora/src/components/multiselect/multiselect_types.js.map +1 -1
  59. package/build/esm/packages/aurora/src/components/multiselect/multiselect_utils.d.ts +7 -0
  60. package/build/esm/packages/aurora/src/components/multiselect/multiselect_utils.js +44 -0
  61. package/build/esm/packages/aurora/src/components/multiselect/multiselect_utils.js.map +1 -0
  62. package/build/esm/packages/aurora/src/components/select/components/select_content.js +39 -47
  63. package/build/esm/packages/aurora/src/components/select/components/select_content.js.map +1 -1
  64. package/build/esm/packages/aurora/src/components/select/components/select_group_label.d.ts +2 -2
  65. package/build/esm/packages/aurora/src/components/select/components/select_group_label.js +4 -4
  66. package/build/esm/packages/aurora/src/components/select/components/select_item.js +13 -9
  67. package/build/esm/packages/aurora/src/components/select/components/select_item.js.map +1 -1
  68. package/build/esm/packages/aurora/src/components/select/components/select_search.d.ts +3 -0
  69. package/build/esm/packages/aurora/src/components/select/components/select_search.js +28 -0
  70. package/build/esm/packages/aurora/src/components/select/components/select_search.js.map +1 -0
  71. package/build/esm/packages/aurora/src/components/select/components/select_trigger.js +7 -4
  72. package/build/esm/packages/aurora/src/components/select/components/select_trigger.js.map +1 -1
  73. package/build/esm/packages/aurora/src/components/select/hooks/use_prevent_search_blur.d.ts +4 -0
  74. package/build/esm/packages/aurora/src/components/select/hooks/use_prevent_search_blur.js +45 -0
  75. package/build/esm/packages/aurora/src/components/select/hooks/use_prevent_search_blur.js.map +1 -0
  76. package/build/esm/packages/aurora/src/components/select/hooks/use_select_value.d.ts +5 -0
  77. package/build/esm/packages/aurora/src/components/select/hooks/use_select_value.js +35 -0
  78. package/build/esm/packages/aurora/src/components/select/hooks/use_select_value.js.map +1 -0
  79. package/build/esm/packages/aurora/src/components/select/select.d.ts +1 -1
  80. package/build/esm/packages/aurora/src/components/select/select.js +57 -84
  81. package/build/esm/packages/aurora/src/components/select/select.js.map +1 -1
  82. package/build/esm/packages/aurora/src/components/select/select_types.d.ts +23 -7
  83. package/build/esm/packages/aurora/src/components/select/select_types.js +1 -0
  84. package/build/esm/packages/aurora/src/components/select/select_types.js.map +1 -1
  85. package/build/esm/packages/aurora/src/components/select/select_utils.d.ts +6 -0
  86. package/build/esm/packages/aurora/src/components/select/select_utils.js +35 -0
  87. package/build/esm/packages/aurora/src/components/select/select_utils.js.map +1 -0
  88. package/build/index.css +1 -1
  89. package/package.json +2 -1
  90. package/build/cjs/packages/aurora/src/components/select/components/select_value.js +0 -10
  91. package/build/esm/packages/aurora/src/components/select/components/select_value.d.ts +0 -3
  92. package/build/esm/packages/aurora/src/components/select/components/select_value.js +0 -6
  93. package/build/esm/packages/aurora/src/components/select/components/select_value.js.map +0 -1
@@ -2,12 +2,13 @@ import React from 'react';
2
2
  import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2 } from '../../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
3
  import { cn } from '../../../utilities/cn.js';
4
4
  import { Content } from '@radix-ui/react-dropdown-menu';
5
- import { Input } from '../../input/input.js';
6
- import { SearchLineIcon } from '../../../assets/icons/search_icon.js';
5
+ import { Root, Viewport, Scrollbar, Thumb } from '../../../../../../external/@radix-ui/react-scroll-area/dist/index.mjs.js';
7
6
  import { MultiSelectGroupLabel } from './multiselect_group_label.js';
8
7
  import { MultiSelectItem } from './multiselect_item.js';
8
+ import { MultiSelectSearch } from './multiselect_search.js';
9
+ import { MultiSelectUtils } from '../multiselect_utils.js';
9
10
 
10
- var _excluded = ["options", "selectedOptions", "toggleOption", "triggerWidth", "hasSearch", "searchPlaceholder", "className"];
11
+ var _excluded = ["options", "selectedOptions", "toggleOption", "triggerWidth", "hasSearch", "searchPlaceholder", "className", "searchNotFoundContent"];
11
12
  var MultiSelectContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
12
13
  var options = _ref.options,
13
14
  selectedOptions = _ref.selectedOptions,
@@ -16,42 +17,49 @@ var MultiSelectContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16
17
  hasSearch = _ref.hasSearch,
17
18
  searchPlaceholder = _ref.searchPlaceholder,
18
19
  className = _ref.className,
20
+ searchNotFoundContent = _ref.searchNotFoundContent,
19
21
  props = _objectWithoutProperties(_ref, _excluded);
20
22
  var _React$useState = React.useState(''),
21
23
  _React$useState2 = _slicedToArray(_React$useState, 2),
22
- searchTerm = _React$useState2[0],
23
- setSearchTerm = _React$useState2[1];
24
- var filteredOptions = options.filter(function (option) {
25
- var _searchTerm$toLowerCa;
26
- return option.text.toLowerCase().includes((_searchTerm$toLowerCa = searchTerm === null || searchTerm === void 0 ? void 0 : searchTerm.toLowerCase()) !== null && _searchTerm$toLowerCa !== void 0 ? _searchTerm$toLowerCa : '');
27
- });
24
+ search = _React$useState2[0],
25
+ setSearch = _React$useState2[1];
26
+ var searchVisibleItems = 0;
28
27
  return /*#__PURE__*/React.createElement(Content, _objectSpread2(_objectSpread2({
29
- className: cn("aurora-z-50 aurora-bg aurora-flex aurora-flex-col aurora-gap-1 aurora-mt-1 aurora-overflow-hidden aurora-rounded-8 aurora-border aurora-p-3 aurora-shadow-m data-[state=open]:aurora-animate-in data-[state=closed]:aurora-animate-out data-[state=closed]:aurora-fade-out-0 data-[state=open]:aurora-fade-in-0 data-[state=closed]:aurora-zoom-out-95 data-[state=open]:aurora-zoom-in-95 data-[side=bottom]:aurora-slide-in-from-top-2 data-[side=left]:aurora-slide-in-from-right-2 data-[side=right]:aurora-slide-in-from-left-2 data-[side=top]:aurora-slide-in-from-bottom-2", className)
28
+ className: cn("aurora-w-[--radix-dropdown-menu-trigger-width] aurora-min-w-[20rem] aurora-max-h-96 aurora-z-50 aurora-bg aurora-flex aurora-flex-col aurora-gap-1 aurora-mt-1 aurora-overflow-hidden aurora-rounded-8 aurora-border aurora-p-1 aurora-shadow-m data-[state=open]:aurora-animate-in data-[state=closed]:aurora-animate-out data-[state=closed]:aurora-fade-out-0 data-[state=open]:aurora-fade-in-0 data-[state=closed]:aurora-zoom-out-95 data-[state=open]:aurora-zoom-in-95 data-[side=bottom]:aurora-slide-in-from-top-2 data-[side=left]:aurora-slide-in-from-right-2 data-[side=right]:aurora-slide-in-from-left-2 data-[side=top]:aurora-slide-in-from-bottom-2 js__aurora-select-dropdown aurora-group", className)
30
29
  }, props), {}, {
31
- ref: ref,
32
- style: {
33
- width: "".concat(triggerWidth, "px")
34
- }
35
- }), hasSearch && (/*#__PURE__*/React.createElement("div", {
30
+ ref: ref
31
+ }), /*#__PURE__*/React.createElement(Root, {
32
+ type: "auto",
33
+ className: "aurora-w-full aurora-max-h-60 relative"
34
+ }, /*#__PURE__*/React.createElement(Viewport, {
35
+ className: cn('aurora-p-1 aurora-max-h-60 aurora-w-full')
36
+ }, hasSearch && (/*#__PURE__*/React.createElement("div", {
36
37
  className: "aurora-p-2"
37
- }, /*#__PURE__*/React.createElement(Input, {
38
- type: "text",
39
- preElement: /*#__PURE__*/React.createElement(SearchLineIcon, {
40
- className: "aurora-h-4 aurora-w-4 aurora-text-inverse-subtle-light"
41
- }),
42
- value: searchTerm,
38
+ }, /*#__PURE__*/React.createElement(MultiSelectSearch, {
39
+ value: search,
43
40
  tabIndex: 0,
44
41
  onChange: function onChange(e) {
45
42
  e.stopPropagation();
46
- setSearchTerm(e.target.value);
43
+ setSearch(e.target.value);
47
44
  },
48
45
  onKeyDown: function onKeyDown(e) {
49
46
  e.stopPropagation();
50
47
  },
51
48
  placeholder: searchPlaceholder
52
- }))), filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.map(function (option) {
49
+ }))), /*#__PURE__*/React.createElement("div", {
50
+ className: "aurora-flex aurora-flex-col aurora-gap-1"
51
+ }, options === null || options === void 0 ? void 0 : options.map(function (option, index) {
52
+ var visible = true;
53
+ if (hasSearch && search && !option.isHeader) {
54
+ visible = MultiSelectUtils.isOptionVisible(option, search);
55
+ if (visible) searchVisibleItems++;
56
+ }
57
+ if (hasSearch && search && option.isHeader) {
58
+ visible = MultiSelectUtils.isHeaderVisible(search, options, index);
59
+ }
53
60
  return option.isHeader ? (/*#__PURE__*/React.createElement(MultiSelectGroupLabel, {
54
- key: option.text
61
+ key: option.text,
62
+ className: cn(!visible && 'aurora-hidden')
55
63
  }, option.text)) : (/*#__PURE__*/React.createElement(MultiSelectItem, {
56
64
  key: "select-item-".concat(option.value),
57
65
  option: option,
@@ -60,9 +68,17 @@ var MultiSelectContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
60
68
  isSelected: selectedOptions.some(function (selected) {
61
69
  return selected.value === option.value;
62
70
  }),
63
- toggleOption: toggleOption
71
+ toggleOption: toggleOption,
72
+ className: cn(!visible && 'aurora-hidden')
64
73
  }, option.text));
65
- }));
74
+ }), !!hasSearch && !!search && !searchVisibleItems && !!searchNotFoundContent && (/*#__PURE__*/React.createElement("div", {
75
+ className: "aurora-p-2"
76
+ }, searchNotFoundContent)))), /*#__PURE__*/React.createElement(Scrollbar, {
77
+ orientation: "vertical",
78
+ className: cn('aurora-w-2 aurora-absolute aurora-right-0 aurora-top-0 aurora-bottom-0 aurora-py-1 aurora-pr-[2px] aurora-transition-opacity aurora-duration-200 aurora-opacity-0 group-hover:aurora-opacity-75')
79
+ }, /*#__PURE__*/React.createElement(Thumb, {
80
+ className: "aurora-bg-neutral-700 aurora-rounded-full"
81
+ }))));
66
82
  });
67
83
  MultiSelectContent.displayName = 'MultiSelectContent';
68
84
 
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,iDAAiD,0EAA8E;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,6 +1,6 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { TDividerProps } from "../../divider/divider_types";
2
+ import { TBoxProps } from "../../box/box_types";
3
3
  export declare const MultiSelectGroupLabel: {
4
- ({ children, ...props }: PropsWithChildren<TDividerProps>): React.JSX.Element;
4
+ ({ children, ...props }: PropsWithChildren<TBoxProps>): React.JSX.Element;
5
5
  displayName: string;
6
6
  };
@@ -9,22 +9,22 @@ var _excluded = ["children"];
9
9
  var MultiSelectGroupLabel = function MultiSelectGroupLabel(_ref) {
10
10
  var children = _ref.children,
11
11
  props = _objectWithoutProperties(_ref, _excluded);
12
- return /*#__PURE__*/React.createElement(Box, {
12
+ return /*#__PURE__*/React.createElement(Box, _objectSpread2({
13
13
  paddings: {
14
14
  pl: '2',
15
15
  pt: '2',
16
16
  pb: '2',
17
17
  pr: '0'
18
18
  }
19
- }, /*#__PURE__*/React.createElement(Stack, {
19
+ }, props), /*#__PURE__*/React.createElement(Stack, {
20
20
  align: "center",
21
21
  spacing: "2.5"
22
22
  }, /*#__PURE__*/React.createElement(Typography, {
23
- className: "aurora-whitespace-nowrap",
23
+ className: "aurora-whitespace-nowrap first-letter:aurora-uppercase",
24
24
  size: "s",
25
25
  color: "subtle",
26
26
  weight: "bold"
27
- }, children), /*#__PURE__*/React.createElement(Divider, _objectSpread2({}, props))));
27
+ }, children), /*#__PURE__*/React.createElement(Divider, null)));
28
28
  };
29
29
  MultiSelectGroupLabel.displayName = 'MultiSelectGroupLabel';
30
30
 
@@ -3,7 +3,6 @@ import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _
3
3
  import { cn } from '../../../utilities/cn.js';
4
4
  import { Item } from '@radix-ui/react-dropdown-menu';
5
5
  import { Box } from '../../box/box.js';
6
- import { Typography } from '../../typography/typography.js';
7
6
  import { Checkbox } from '../../checkbox/checkbox.js';
8
7
 
9
8
  var _excluded = ["option", "isSelected", "isDisabled", "isReadonly", "toggleOption", "className"];
@@ -21,9 +20,13 @@ var MultiSelectItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
21
20
  };
22
21
  return /*#__PURE__*/React.createElement(Item, _objectSpread2(_objectSpread2({
23
22
  onSelect: handleSelect,
24
- className: cn('aurora-relative aurora-flex aurora-w-full aurora-select-none aurora-rounded-sm aurora-p-2 aurora-outline-none focus:aurora-bg-accent data-[disabled]:aurora-pointer-events-none data-[disabled]:aurora-opacity-50 data-[state=checked]:aurora-font-semibold data-[highlighted]:aurora-font-semibold data-[highlighted]:aurora-bg-hover aurora-cursor-pointer aurora-rounded-6', {
25
- 'aurora-bg-hover': isSelected
23
+ className: cn('aurora-relative aurora-flex aurora-w-full aurora-rounded-6 aurora-cursor-default aurora-select-none aurora-items-center aurora-rounded-sm aurora-p-2 aurora-text-s aurora-outline-none aurora-break-words aurora-text-wrap focus:aurora-bg-hover focus:aurora-text-accent-foreground data-[disabled]:aurora-pointer-events-none data-[disabled]:aurora-opacity-50', {
24
+ 'aurora-bg-hover aurora-font-semibold': isSelected,
25
+ 'aurora-cursor-pointer active:aurora-bg-active': !isDisabled && !isReadonly
26
26
  }, className),
27
+ style: {
28
+ wordBreak: 'break-word'
29
+ },
27
30
  disabled: isDisabled || isReadonly
28
31
  }, props), {}, {
29
32
  ref: ref
@@ -33,10 +36,11 @@ var MultiSelectItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
33
36
  backgroundColor: "transparent"
34
37
  }, /*#__PURE__*/React.createElement(Checkbox, {
35
38
  checked: isSelected
36
- }), /*#__PURE__*/React.createElement(Typography, {
37
- size: "s",
38
- weight: "medium"
39
- }, option.text)));
39
+ }), /*#__PURE__*/React.createElement("div", {
40
+ className: "aurora-flex aurora-flex-col"
41
+ }, /*#__PURE__*/React.createElement("p", null, option.text), !!option.additionalInfo && /*#__PURE__*/React.createElement("p", {
42
+ className: "aurora-text-xs aurora-text-subtle-light"
43
+ }, option.additionalInfo))));
40
44
  });
41
45
  MultiSelectItem.displayName = 'MultiSelectItem';
42
46
 
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { TInputProps } from "../../input/input_types";
3
+ export declare const MultiSelectSearch: (props: TInputProps) => React.JSX.Element;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { objectSpread2 as _objectSpread2 } from '../../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
+ import { Input } from '../../input/input.js';
4
+ import { SearchLineIcon } from '../../../assets/icons/search_icon.js';
5
+
6
+ var MultiSelectSearch = function MultiSelectSearch(props) {
7
+ return /*#__PURE__*/React.createElement(Input, _objectSpread2({
8
+ type: "text",
9
+ preElement: /*#__PURE__*/React.createElement(SearchLineIcon, {
10
+ className: "aurora-h-4 aurora-w-4 aurora-text-inverse-subtle-light"
11
+ })
12
+ }, props));
13
+ };
14
+
15
+ export { MultiSelectSearch };
16
+ //# sourceMappingURL=multiselect_search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -3,24 +3,21 @@ import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _
3
3
  import { cn } from '../../../utilities/cn.js';
4
4
  import { Trigger } from '@radix-ui/react-dropdown-menu';
5
5
 
6
- var _excluded = ["selectedOptions", "placeholder", "hasErrors", "className"];
6
+ var _excluded = ["hasErrors", "className", "children"];
7
7
  var MultiSelectTrigger = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
8
- var selectedOptions = _ref.selectedOptions,
9
- placeholder = _ref.placeholder,
10
- hasErrors = _ref.hasErrors,
8
+ var hasErrors = _ref.hasErrors,
11
9
  className = _ref.className,
10
+ children = _ref.children,
12
11
  props = _objectWithoutProperties(_ref, _excluded);
13
12
  return /*#__PURE__*/React.createElement(Trigger, _objectSpread2(_objectSpread2({
14
13
  asChild: true
15
14
  }, props), {}, {
16
15
  ref: ref
17
16
  }), /*#__PURE__*/React.createElement("button", {
18
- className: cn('aurora-flex aurora-h-10 aurora-w-full aurora-items-center aurora-justify-between aurora-rounded-8 aurora-border aurora-border-input aurora-bg-neutral-0 aurora-px-3 aurora-py-2 aurora-text-s hover:aurora-border-strong focus:focus disabled:aurora-cursor-not-allowed disabled:aurora-bg-subtle disabled:aurora-text-subtle-light disabled:aurora-border-subtle [&>span]:aurora-line-clamp-1 focus:aurora-border-active focus:aurora-border-2 active:aurora-border-active active:aurora-border-2', {
17
+ className: cn('aurora-flex aurora-h-10 aurora-w-full aurora-items-center aurora-justify-between aurora-rounded-8 aurora-border aurora-border-input aurora-bg-neutral-0 aurora-px-3 aurora-py-2 aurora-text-s hover:aurora-border-strong focus-visible:focus disabled:aurora-cursor-not-allowed disabled:aurora-bg-subtle disabled:aurora-text-subtle-light disabled:aurora-border-subtle [&>span]:aurora-text-ellipsis [&>span]:aurora-whitespace-nowrap [&>span]:aurora-overflow-hidden focus-visible:aurora-border-active -visible:aurora-border-2 data-[state=open]:aurora-border-active data-[state=open]:aurora-border-2', {
19
18
  '!aurora-border-danger aurora-border-2': hasErrors
20
19
  }, className)
21
- }, selectedOptions.length > 0 ? selectedOptions.map(function (option) {
22
- return option.text;
23
- }).join(', ') : placeholder !== null && placeholder !== void 0 ? placeholder : ''));
20
+ }, children));
24
21
  });
25
22
  MultiSelectTrigger.displayName = 'MultiSelectTrigger';
26
23
 
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,5 @@
1
+ import { Option, TUseMultiSelectValueProps } from "../multiselect_types";
2
+ export declare const useMultiSelectValue: ({ values, options }: TUseMultiSelectValueProps) => {
3
+ selectedOptions: Option[];
4
+ setSelectedOptions: (options: Option[]) => void;
5
+ };
@@ -0,0 +1,38 @@
1
+ import { useMemo, useState, useRef, useCallback, useEffect } from 'react';
2
+ import { slicedToArray as _slicedToArray } from '../../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
+ import { MultiSelectUtils } from '../multiselect_utils.js';
4
+
5
+ var useMultiSelectValue = function useMultiSelectValue(_ref) {
6
+ var values = _ref.values,
7
+ options = _ref.options;
8
+ // Przechowanie aktualnie wybranych opcji w razie jakby ktoras aktualna opcja zniknela z listy options
9
+ var _useState = useState(function () {
10
+ return MultiSelectUtils.findValuesInOptions(values, options);
11
+ }),
12
+ _useState2 = _slicedToArray(_useState, 2),
13
+ selectedOptions = _useState2[0],
14
+ _setSelectedOptions = _useState2[1];
15
+ var selectedOptionsRef = useRef(selectedOptions);
16
+ var setSelectedOptions = useCallback(function (options) {
17
+ selectedOptionsRef.current = options;
18
+ _setSelectedOptions(options);
19
+ }, []);
20
+ useEffect(function () {
21
+ if (MultiSelectUtils.areValuesEqual(values, selectedOptionsRef.current.map(function (o) {
22
+ return o.value;
23
+ }))) {
24
+ return;
25
+ }
26
+ var newOptions = MultiSelectUtils.findValuesInOptions(values, options);
27
+ setSelectedOptions(newOptions);
28
+ }, [options, setSelectedOptions, values]);
29
+ return useMemo(function () {
30
+ return {
31
+ selectedOptions: selectedOptions,
32
+ setSelectedOptions: setSelectedOptions
33
+ };
34
+ }, [selectedOptions, setSelectedOptions]);
35
+ };
36
+
37
+ export { useMultiSelectValue };
38
+ //# sourceMappingURL=use_multiselect_value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,6 +1,6 @@
1
- import { TMultiSelectProps } from './multiselect_types';
2
1
  import React, { PropsWithChildren } from 'react';
2
+ import { TMultiSelectProps } from './multiselect_types';
3
3
  export declare const MultiSelect: {
4
- ({ id, options, placeholder, disabled, hasSearch, searchPlaceholder, onValueChange, errors, ...props }: PropsWithChildren<TMultiSelectProps>): React.JSX.Element;
4
+ ({ id, options, placeholder, disabled, hasSearch, searchPlaceholder, onValueChange, errors, value, searchNotFoundContent, ...props }: PropsWithChildren<TMultiSelectProps>): React.JSX.Element;
5
5
  displayName: string;
6
6
  };
@@ -1,10 +1,12 @@
1
- import React, { useRef, useEffect } from 'react';
2
- import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
1
+ import React from 'react';
2
+ import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
+ import { cn } from '../../utilities/cn.js';
3
4
  import { Root, Portal } from '@radix-ui/react-dropdown-menu';
4
5
  import { MultiSelectContent } from './components/multiselect_content.js';
5
6
  import { MultiSelectTrigger } from './components/multiselect_trigger.js';
7
+ import { useMultiSelectValue } from './hooks/use_multiselect_value.js';
6
8
 
7
- var _excluded = ["id", "options", "placeholder", "disabled", "hasSearch", "searchPlaceholder", "onValueChange", "errors"];
9
+ var _excluded = ["id", "options", "placeholder", "disabled", "hasSearch", "searchPlaceholder", "onValueChange", "errors", "value", "searchNotFoundContent"];
8
10
  var MultiSelect = function MultiSelect(_ref) {
9
11
  var id = _ref.id,
10
12
  options = _ref.options,
@@ -14,54 +16,42 @@ var MultiSelect = function MultiSelect(_ref) {
14
16
  searchPlaceholder = _ref.searchPlaceholder,
15
17
  onValueChange = _ref.onValueChange,
16
18
  errors = _ref.errors,
19
+ value = _ref.value,
20
+ searchNotFoundContent = _ref.searchNotFoundContent,
17
21
  props = _objectWithoutProperties(_ref, _excluded);
18
- var _React$useState = React.useState([]),
19
- _React$useState2 = _slicedToArray(_React$useState, 2),
20
- selectedOptions = _React$useState2[0],
21
- setSelectedOptions = _React$useState2[1];
22
- var _React$useState3 = React.useState(0),
23
- _React$useState4 = _slicedToArray(_React$useState3, 2),
24
- triggerWidth = _React$useState4[0],
25
- settriggerWidth = _React$useState4[1];
26
- var triggerRef = useRef(null);
27
- useEffect(function () {
28
- if (triggerRef.current) settriggerWidth(triggerRef.current.offsetWidth);
29
- var handleResize = function handleResize() {
30
- if (triggerRef.current) {
31
- settriggerWidth(triggerRef.current.offsetWidth);
32
- }
33
- };
34
- window.addEventListener('resize', handleResize);
35
- return function () {
36
- window.removeEventListener('resize', handleResize);
37
- };
38
- }, []);
39
- useEffect(function () {
40
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(selectedOptions);
41
- }, [selectedOptions]);
42
- var toggleOption = function toggleOption(option) {
43
- setSelectedOptions(function (prev) {
44
- return prev.some(function (selected) {
45
- return selected.value === option.value;
46
- }) ? prev.filter(function (selected) {
47
- return selected.value !== option.value;
48
- }) : [].concat(_toConsumableArray(prev), [option]);
49
- });
22
+ var _useMultiSelectValue = useMultiSelectValue({
23
+ values: value,
24
+ options: options
25
+ }),
26
+ selectedOptions = _useMultiSelectValue.selectedOptions,
27
+ setSelectedOptions = _useMultiSelectValue.setSelectedOptions;
28
+ var handleChange = function handleChange(option) {
29
+ var newOptions = selectedOptions.some(function (selected) {
30
+ return selected.value === option.value;
31
+ }) ? selectedOptions.filter(function (selected) {
32
+ return selected.value !== option.value;
33
+ }) : [].concat(_toConsumableArray(selectedOptions), [option]);
34
+ setSelectedOptions(newOptions);
35
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(newOptions.map(function (o) {
36
+ return o.value;
37
+ }));
50
38
  };
39
+ var showPlaceholder = selectedOptions.length === 0;
51
40
  return /*#__PURE__*/React.createElement(Root, _objectSpread2({}, props), /*#__PURE__*/React.createElement(MultiSelectTrigger, {
52
41
  id: id,
53
- selectedOptions: selectedOptions,
54
- placeholder: placeholder,
55
42
  disabled: disabled,
56
- ref: triggerRef,
57
43
  hasErrors: !!(errors !== null && errors !== void 0 && errors.length)
58
- }), /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(MultiSelectContent, {
44
+ }, /*#__PURE__*/React.createElement("span", {
45
+ className: cn('aurora-pointer-events-none aurora-select-none', showPlaceholder && 'aurora-text-subtle')
46
+ }, !showPlaceholder ? selectedOptions.map(function (option) {
47
+ return option.text;
48
+ }).join(', ') : placeholder !== null && placeholder !== void 0 ? placeholder : '')), /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(MultiSelectContent, {
59
49
  options: options,
60
50
  selectedOptions: selectedOptions,
61
- toggleOption: toggleOption,
62
- triggerWidth: triggerWidth,
51
+ toggleOption: handleChange,
63
52
  hasSearch: hasSearch,
64
- searchPlaceholder: searchPlaceholder
53
+ searchPlaceholder: searchPlaceholder,
54
+ searchNotFoundContent: searchNotFoundContent
65
55
  })));
66
56
  };
67
57
  MultiSelect.displayName = 'MultiSelect';
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,5 +1,5 @@
1
1
  import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
2
- import React from 'react';
2
+ import React, { ReactNode } from 'react';
3
3
  export declare type Option = {
4
4
  text: string;
5
5
  value: string;
@@ -15,12 +15,12 @@ export interface TMultiSelectProps extends React.ComponentPropsWithoutRef<typeof
15
15
  disabled?: boolean;
16
16
  hasSearch?: boolean;
17
17
  searchPlaceholder?: string;
18
+ searchNotFoundContent?: ReactNode;
18
19
  errors?: string | string[];
19
- onValueChange?: (selectedOption: Option[]) => void;
20
+ onValueChange?: (value: string[]) => void;
21
+ value?: string[];
20
22
  }
21
23
  export interface TMultiSelectTriggerProps extends React.ComponentPropsWithoutRef<typeof DropdownMenu.Trigger> {
22
- selectedOptions: Option[];
23
- placeholder?: string;
24
24
  hasErrors?: boolean;
25
25
  }
26
26
  export interface TMultiSelectContentProps extends React.ComponentPropsWithoutRef<typeof DropdownMenu.Content> {
@@ -30,6 +30,7 @@ export interface TMultiSelectContentProps extends React.ComponentPropsWithoutRef
30
30
  triggerWidth?: number;
31
31
  hasSearch?: boolean;
32
32
  searchPlaceholder?: string;
33
+ searchNotFoundContent?: ReactNode;
33
34
  }
34
35
  export interface TMultiSelectItemProps extends React.ComponentPropsWithoutRef<typeof DropdownMenu.Item> {
35
36
  option: Option;
@@ -38,3 +39,7 @@ export interface TMultiSelectItemProps extends React.ComponentPropsWithoutRef<ty
38
39
  isDisabled?: boolean;
39
40
  isReadonly?: boolean;
40
41
  }
42
+ export interface TUseMultiSelectValueProps {
43
+ values?: string[];
44
+ options: Option[];
45
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"multiselect_types.js","sourceRoot":"","sources":["../../../../../../../src/components/multiselect/multiselect_types.ts"],"names":[],"mappings":"AAAA,OAA8B,+BAA+B,CAAC;AAE9D,OAAkB,OAAO,CAAC"}
1
+ {"version":3,"file":"multiselect_types.js","sourceRoot":"","sources":["../../../../../../../src/components/multiselect/multiselect_types.ts"],"names":[],"mappings":"AAAA,OAA8B,+BAA+B,CAAC;AAE9D,OAAiC,OAAO,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Option } from "./multiselect_types";
2
+ export declare class MultiSelectUtils {
3
+ static isOptionVisible: (option: Option, search: string) => boolean;
4
+ static isHeaderVisible: (search: string, options: Option[], index: number) => boolean;
5
+ static findValuesInOptions: (values: string[] | undefined, options: Option[]) => Option[];
6
+ static areValuesEqual: (oldValues?: string[], newValues?: string[]) => boolean | undefined;
7
+ }
@@ -0,0 +1,44 @@
1
+ import { createClass as _createClass, classCallCheck as _classCallCheck, defineProperty as _defineProperty } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ var _MultiSelectUtils;
4
+ var MultiSelectUtils = /*#__PURE__*/_createClass(function MultiSelectUtils() {
5
+ _classCallCheck(this, MultiSelectUtils);
6
+ });
7
+ _MultiSelectUtils = MultiSelectUtils;
8
+ _defineProperty(MultiSelectUtils, "isOptionVisible", function (option, search) {
9
+ return option.text.toLocaleLowerCase().includes(search.toLocaleLowerCase());
10
+ });
11
+ _defineProperty(MultiSelectUtils, "isHeaderVisible", function (search, options, index) {
12
+ var visible = false;
13
+ var i = index + 1;
14
+ while (options[i]) {
15
+ var curr = options[i];
16
+ if (curr.isHeader) {
17
+ break;
18
+ }
19
+ if (_MultiSelectUtils.isOptionVisible(curr, search)) {
20
+ visible = true;
21
+ break;
22
+ }
23
+ i++;
24
+ }
25
+ return visible;
26
+ });
27
+ _defineProperty(MultiSelectUtils, "findValuesInOptions", function (values, options) {
28
+ if (!(values !== null && values !== void 0 && values.length)) return [];
29
+ return options.filter(function (opt) {
30
+ return values.includes(opt.value);
31
+ });
32
+ });
33
+ _defineProperty(MultiSelectUtils, "areValuesEqual", function (oldValues, newValues) {
34
+ var oldSet = new Set(oldValues);
35
+ var newSet = new Set(newValues);
36
+ return (oldValues === null || oldValues === void 0 ? void 0 : oldValues.every(function (item) {
37
+ return newSet.has(item);
38
+ })) && (newValues === null || newValues === void 0 ? void 0 : newValues.every(function (item) {
39
+ return oldSet.has(item);
40
+ }));
41
+ });
42
+
43
+ export { MultiSelectUtils };
44
+ //# sourceMappingURL=multiselect_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}