@app-studio/web 0.8.16 → 0.8.17

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.
@@ -13,6 +13,7 @@ export * from './Form/Checkbox/Checkbox';
13
13
  export * from './Form/CountryPicker/CountryPicker';
14
14
  export * from './Form/DatePicker/DatePicker';
15
15
  export * from './Form/Password/Password';
16
+ export * from './Form/ComboBox/ComboBox';
16
17
  export * from './Formik';
17
18
  export * from './Layout/Center/Center';
18
19
  export * from './Layout/Horizontal/Horizontal';
@@ -4850,7 +4850,270 @@ var PasswordComponent = _ref => {
4850
4850
  */
4851
4851
  var Password = PasswordComponent;
4852
4852
 
4853
- var _excluded$z = ["children", "autoFocus", "initFocus", "onChange"];
4853
+ // Defines the useComboBoxState hook with parameters for the list of items and optional placeholder texts.
4854
+ var useComboBoxState = (items, placeholder, searchPlaceholder) => {
4855
+ // State hook for filtered items with initial state set to the items passed to the hook.
4856
+ var [filteredItems, setFilteredItems] = React.useState(items);
4857
+ // State hook to track the selected item with an initial state based on the placeholder or the first item.
4858
+ var [selectedItem, setSelectedItem] = React.useState(placeholder ? {
4859
+ value: placeholder,
4860
+ label: placeholder
4861
+ } : items[0]);
4862
+ // State hook for highlighted index in the dropdown list, initialized to 0.
4863
+ var [highlightedIndex, setHighlightedIndex] = React.useState(0);
4864
+ // State hook for search query with an initial state based on the searchPlaceholder or empty string.
4865
+ var [searchQuery, setSearchQuery] = React.useState(searchPlaceholder != null ? searchPlaceholder : '');
4866
+ // State hook to manage dropdown visibility, starts as false (hidden).
4867
+ var [isDropdownVisible, setIsDropdownVisible] = React.useState(false);
4868
+ // Start of object returned by the useComboBoxState hook containing all state and state updater functions.
4869
+ return {
4870
+ filteredItems,
4871
+ setFilteredItems,
4872
+ selectedItem,
4873
+ setSelectedItem,
4874
+ highlightedIndex,
4875
+ setHighlightedIndex,
4876
+ searchQuery,
4877
+ setSearchQuery,
4878
+ isDropdownVisible,
4879
+ setIsDropdownVisible
4880
+ };
4881
+ };
4882
+
4883
+ var _excluded$z = ["size", "color"];
4884
+ var TickSvg = _ref => {
4885
+ var {
4886
+ size = 16,
4887
+ color = '#c0c0c0'
4888
+ } = _ref,
4889
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$z);
4890
+ return /*#__PURE__*/React__default.createElement(Center, {
4891
+ width: size + "px",
4892
+ height: size + "px"
4893
+ }, /*#__PURE__*/React__default.createElement("svg", Object.assign({
4894
+ width: size + "px",
4895
+ height: size + "px",
4896
+ viewBox: "0 -0.5 25 25",
4897
+ fill: "none",
4898
+ xmlns: "http://www.w3.org/2000/svg"
4899
+ }, props), /*#__PURE__*/React__default.createElement("g", {
4900
+ id: "SVGRepo_bgCarrier",
4901
+ strokeWidth: "0"
4902
+ }), /*#__PURE__*/React__default.createElement("g", {
4903
+ id: "SVGRepo_tracerCarrier",
4904
+ strokeLinecap: "round",
4905
+ strokeLinejoin: "round"
4906
+ }), /*#__PURE__*/React__default.createElement("g", {
4907
+ id: "SVGRepo_iconCarrier"
4908
+ }, ' ', /*#__PURE__*/React__default.createElement("path", {
4909
+ d: "M5.5 12.5L10.167 17L19.5 8",
4910
+ stroke: "#444444",
4911
+ strokeWidth: "1.5",
4912
+ strokeLinecap: "round",
4913
+ strokeLinejoin: "round"
4914
+ }), ' ')));
4915
+ };
4916
+
4917
+ var _excluded$A = ["size", "color"];
4918
+ var SearchLoopSvg = _ref => {
4919
+ var {
4920
+ size = 14,
4921
+ color = '#c0c0c0'
4922
+ } = _ref,
4923
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$A);
4924
+ return /*#__PURE__*/React__default.createElement(Center, {
4925
+ width: size + "px",
4926
+ height: size + "px"
4927
+ }, /*#__PURE__*/React__default.createElement("svg", Object.assign({
4928
+ fill: "#c0c0c0",
4929
+ width: size + "px",
4930
+ height: size + "px",
4931
+ version: "1.1",
4932
+ id: "Capa_1",
4933
+ xmlns: "http://www.w3.org/2000/svg",
4934
+ viewBox: "0 0 488.4 488.4",
4935
+ stroke: color
4936
+ }, props), /*#__PURE__*/React__default.createElement("g", {
4937
+ id: "SVGRepo_bgCarrier",
4938
+ strokeWidth: "9.279599999999999"
4939
+ }), /*#__PURE__*/React__default.createElement("g", {
4940
+ id: "SVGRepo_tracerCarrier",
4941
+ strokeLinecap: "round",
4942
+ strokeLinejoin: "round"
4943
+ }), /*#__PURE__*/React__default.createElement("g", {
4944
+ id: "SVGRepo_iconCarrier"
4945
+ }, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("path", {
4946
+ d: "M0,203.25c0,112.1,91.2,203.2,203.2,203.2c51.6,0,98.8-19.4,134.7-51.2l129.5,129.5c2.4,2.4,5.5,3.6,8.7,3.6 s6.3-1.2,8.7-3.6c4.8-4.8,4.8-12.5,0-17.3l-129.6-129.5c31.8-35.9,51.2-83,51.2-134.7c0-112.1-91.2-203.2-203.2-203.2 S0,91.15,0,203.25z M381.9,203.25c0,98.5-80.2,178.7-178.7,178.7s-178.7-80.2-178.7-178.7s80.2-178.7,178.7-178.7 S381.9,104.65,381.9,203.25z"
4947
+ }), ' ')))));
4948
+ };
4949
+
4950
+ var _excluded$B = ["placeholder", "items", "showTick", "onSelect", "searchEnabled", "left", "right", "label", "filteredItems", "setSelectedItem", "selectedItem", "highlightedIndex", "setHighlightedIndex", "searchQuery", "setSearchQuery", "setFilteredItems", "styles", "isDropdownVisible", "setIsDropdownVisible"];
4951
+ // Defines the functional component 'ComboBoxView' with destructured props.
4952
+ var ComboBoxView = _ref => {
4953
+ var {
4954
+ placeholder,
4955
+ items,
4956
+ showTick = true,
4957
+ onSelect,
4958
+ searchEnabled = true,
4959
+ left,
4960
+ right,
4961
+ label,
4962
+ filteredItems,
4963
+ setSelectedItem,
4964
+ selectedItem,
4965
+ highlightedIndex,
4966
+ setHighlightedIndex,
4967
+ searchQuery,
4968
+ setSearchQuery,
4969
+ setFilteredItems,
4970
+ styles,
4971
+ isDropdownVisible,
4972
+ setIsDropdownVisible
4973
+ // Collects all further props not destructured explicitly.
4974
+ } = _ref,
4975
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$B);
4976
+ // Sets up an effect to handle clicking outside the dropdown to close it.
4977
+ React.useEffect(() => {
4978
+ var handleClickOutside = event => {
4979
+ var path = event.composedPath();
4980
+ var isOutside = !path.some(element => (element == null ? void 0 : element.id) === 'combobox-dropdown');
4981
+ if (isOutside) {
4982
+ setIsDropdownVisible(false);
4983
+ }
4984
+ };
4985
+ document.addEventListener('mousedown', handleClickOutside);
4986
+ return () => document.removeEventListener('mousedown', handleClickOutside);
4987
+ }, []);
4988
+ // Defines 'handleSearch' to filter items based on the user's query.
4989
+ var handleSearch = query => {
4990
+ setSearchQuery(query);
4991
+ if (query === '') {
4992
+ setFilteredItems(items);
4993
+ } else {
4994
+ var filtered = items.filter(item => item.label.toLowerCase().includes(query.toLowerCase()));
4995
+ setFilteredItems(filtered);
4996
+ }
4997
+ setHighlightedIndex(0);
4998
+ };
4999
+ // Defines 'handleSelect' to handle item selection and close the dropdown.
5000
+ var handleSelect = item => {
5001
+ setSelectedItem(item);
5002
+ onSelect == null || onSelect(item);
5003
+ setIsDropdownVisible(false);
5004
+ };
5005
+ // Starts the JSX returned by the component representing the combobox.
5006
+ return /*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5007
+ role: "combobox",
5008
+ flexWrap: "nowrap",
5009
+ gap: 15,
5010
+ alignItems: "center",
5011
+ width: "100%"
5012
+ }, props), label && (/*#__PURE__*/React__default.createElement(Text, {
5013
+ styles: styles == null ? void 0 : styles.label,
5014
+ htmlFor: props.id
5015
+ }, label)), /*#__PURE__*/React__default.createElement(View, {
5016
+ position: "relative"
5017
+ }, /*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5018
+ cursor: "pointer",
5019
+ backgroundColor: "white",
5020
+ boxShadow: "rgba(0, 0, 0, 0.16) 0px 1px 4px",
5021
+ padding: "12px",
5022
+ display: "flex",
5023
+ alignItems: "center",
5024
+ borderRadius: "4px",
5025
+ justifyContent: "space-between",
5026
+ minWidth: 300,
5027
+ flexWrap: "nowrap"
5028
+ }, styles == null ? void 0 : styles.container), /*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5029
+ gap: 15,
5030
+ alignItems: "center",
5031
+ position: "relative",
5032
+ width: "100%",
5033
+ onClick: () => setIsDropdownVisible(!isDropdownVisible)
5034
+ }, styles == null ? void 0 : styles.labelContainer), left, /*#__PURE__*/React__default.createElement(Text, Object.assign({
5035
+ weight: "medium",
5036
+ flexGrow: 1
5037
+ }, styles == null ? void 0 : styles.label), selectedItem.label)), right, isDropdownVisible && (/*#__PURE__*/React__default.createElement(View, Object.assign({
5038
+ id: "combobox-dropdown",
5039
+ position: "absolute",
5040
+ backgroundColor: "white",
5041
+ boxShadow: "rgba(0, 0 ,0 ,0.16) 0px 1px 4px",
5042
+ width: "100%",
5043
+ overflowY: "auto",
5044
+ zIndex: 10000,
5045
+ bottom: -8,
5046
+ left: 0,
5047
+ transform: "translateY(100%)",
5048
+ marginTop: "4px",
5049
+ borderRadius: "4px"
5050
+ }, styles == null ? void 0 : styles.dropdown), searchEnabled && (/*#__PURE__*/React__default.createElement(TextFieldView, {
5051
+ id: props.id,
5052
+ name: props.name,
5053
+ width: "100%",
5054
+ type: "search",
5055
+ value: searchQuery,
5056
+ onChange: value => handleSearch(value),
5057
+ hint: placeholder,
5058
+ isClearable: false,
5059
+ leftChild: /*#__PURE__*/React__default.createElement(SearchLoopSvg, {
5060
+ size: 12
5061
+ }),
5062
+ styles: {
5063
+ box: Object.assign({
5064
+ width: '100%',
5065
+ padding: '6px 12px',
5066
+ borderBottom: filteredItems.length > 0 ? '1px solid #ccc' : '1px solid transparent'
5067
+ }, styles == null ? void 0 : styles.text)
5068
+ }
5069
+ })), filteredItems.length > 0 && (/*#__PURE__*/React__default.createElement(View, {
5070
+ margin: 0,
5071
+ padding: 4
5072
+ }, filteredItems.map((item, index) => (/*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5073
+ justifyContent: "space-between",
5074
+ key: item.value,
5075
+ padding: "12px",
5076
+ cursor: "pointer",
5077
+ borderRadius: 4,
5078
+ backgroundColor: index === highlightedIndex ? 'color.gray.100' : 'transparent',
5079
+ onMouseEnter: () => setHighlightedIndex(index),
5080
+ onClick: () => handleSelect(item)
5081
+ }, styles == null ? void 0 : styles.item), /*#__PURE__*/React__default.createElement(Text, null, item.label), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, item.icon && item.icon, item.value === selectedItem.value && showTick && !item.icon && /*#__PURE__*/React__default.createElement(TickSvg, null))))))))))));
5082
+ };
5083
+
5084
+ var _excluded$C = ["id", "name", "items", "placeholder", "searchPlaceholder"];
5085
+ // Defines the ComboBoxComponent functional component with ComboBoxProps
5086
+ var ComboBoxComponent = _ref => {
5087
+ var {
5088
+ // Destructures 'id' from component props
5089
+ id,
5090
+ // Destructures 'name' from component props
5091
+ name,
5092
+ // Destructures 'items' from component props, used to populate combobox
5093
+ items,
5094
+ // Destructures 'placeholder' from component props, displayed when no item selected
5095
+ placeholder,
5096
+ // Destructures 'searchPlaceholder' from component props, used as the search field placeholder
5097
+ searchPlaceholder
5098
+ // Destructures the rest of the props not explicitly defined
5099
+ } = _ref,
5100
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$C);
5101
+ // Initializes ComboBox state using custom hook with items and placeholders
5102
+ var state = useComboBoxState(items, placeholder, searchPlaceholder);
5103
+ return (
5104
+ /*#__PURE__*/
5105
+ // Render ComboBoxView with passed and state props
5106
+ React__default.createElement(ComboBoxView, Object.assign({
5107
+ id: id,
5108
+ name: name,
5109
+ items: items
5110
+ }, state, props))
5111
+ );
5112
+ };
5113
+ // Exports the ComboBoxComponent as ComboBox
5114
+ var ComboBox = ComboBoxComponent;
5115
+
5116
+ var _excluded$D = ["children", "autoFocus", "initFocus", "onChange"];
4854
5117
  var FocusContext = /*#__PURE__*/React.createContext({
4855
5118
  active: false,
4856
5119
  focusNextInput: () => {},
@@ -4866,7 +5129,7 @@ var FormikForm = _ref => {
4866
5129
  initFocus,
4867
5130
  onChange = () => {}
4868
5131
  } = _ref,
4869
- props = _objectWithoutPropertiesLoose(_ref, _excluded$z);
5132
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$D);
4870
5133
  var formik$1 = formik.useFormikContext();
4871
5134
  React.useEffect(() => {
4872
5135
  onChange(formik$1.values);
@@ -4914,7 +5177,7 @@ var FormikForm = _ref => {
4914
5177
  }, /*#__PURE__*/React__default.createElement(appStudio.Form, Object.assign({}, props), children));
4915
5178
  };
4916
5179
 
4917
- var _excluded$A = ["name", "type"];
5180
+ var _excluded$E = ["name", "type"];
4918
5181
  var getInputTypeProps = type => {
4919
5182
  switch (type) {
4920
5183
  case 'email':
@@ -4953,7 +5216,7 @@ var useFormikInput = _ref => {
4953
5216
  name,
4954
5217
  type
4955
5218
  } = _ref,
4956
- props = _objectWithoutPropertiesLoose(_ref, _excluded$A);
5219
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$E);
4957
5220
  var focus = useFormFocus();
4958
5221
  var {
4959
5222
  touched,
@@ -4997,13 +5260,13 @@ var useFormikInput = _ref => {
4997
5260
  } : {});
4998
5261
  };
4999
5262
 
5000
- var _excluded$B = ["value"];
5263
+ var _excluded$F = ["value"];
5001
5264
  var CheckboxComponent$1 = props => {
5002
5265
  var _useFormikInput = useFormikInput(props),
5003
5266
  {
5004
5267
  value
5005
5268
  } = _useFormikInput,
5006
- formProps = _objectWithoutPropertiesLoose(_useFormikInput, _excluded$B);
5269
+ formProps = _objectWithoutPropertiesLoose(_useFormikInput, _excluded$F);
5007
5270
  formProps.isChecked = value;
5008
5271
  var checkboxStates = useCheckboxState(props);
5009
5272
  return /*#__PURE__*/React__default.createElement(CheckboxView, Object.assign({}, checkboxStates, formProps));
@@ -5061,11 +5324,11 @@ var TextAreaComponent$1 = props => {
5061
5324
  */
5062
5325
  var FormikTextArea = TextAreaComponent$1;
5063
5326
 
5064
- var _excluded$C = ["value"];
5327
+ var _excluded$G = ["value"];
5065
5328
  var TextFieldComponent$1 = props => {
5066
5329
  var formProps = useFormikInput(props);
5067
5330
  var _useTextFieldState = useTextFieldState(props),
5068
- textFieldStates = _objectWithoutPropertiesLoose(_useTextFieldState, _excluded$C);
5331
+ textFieldStates = _objectWithoutPropertiesLoose(_useTextFieldState, _excluded$G);
5069
5332
  return /*#__PURE__*/React__default.createElement(TextFieldView, Object.assign({}, textFieldStates, formProps));
5070
5333
  };
5071
5334
  /**
@@ -5073,7 +5336,7 @@ var TextFieldComponent$1 = props => {
5073
5336
  */
5074
5337
  var FormikTextField = TextFieldComponent$1;
5075
5338
 
5076
- var _excluded$D = ["visibleIcon", "hiddenIcon"],
5339
+ var _excluded$H = ["visibleIcon", "hiddenIcon"],
5077
5340
  _excluded2$5 = ["isVisible", "setIsVisible"];
5078
5341
  var PasswordComponent$1 = _ref => {
5079
5342
  var {
@@ -5084,7 +5347,7 @@ var PasswordComponent$1 = _ref => {
5084
5347
  size: 14
5085
5348
  })
5086
5349
  } = _ref,
5087
- props = _objectWithoutPropertiesLoose(_ref, _excluded$D);
5350
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$H);
5088
5351
  var formProps = useFormikInput(props);
5089
5352
  var _usePasswordState = usePasswordState(formProps),
5090
5353
  {
@@ -5109,245 +5372,14 @@ var PasswordComponent$1 = _ref => {
5109
5372
  */
5110
5373
  var FormikPassword = PasswordComponent$1;
5111
5374
 
5112
- // Defines the useComboBoxState hook with parameters for the list of items and optional placeholder texts.
5113
- var useComboBoxState = (items, placeholder, searchPlaceholder) => {
5114
- // State hook for filtered items with initial state set to the items passed to the hook.
5115
- var [filteredItems, setFilteredItems] = React.useState(items);
5116
- // State hook to track the selected item with an initial state based on the placeholder or the first item.
5117
- var [selectedItem, setSelectedItem] = React.useState(placeholder ? {
5118
- value: placeholder,
5119
- label: placeholder
5120
- } : items[0]);
5121
- // State hook for highlighted index in the dropdown list, initialized to 0.
5122
- var [highlightedIndex, setHighlightedIndex] = React.useState(0);
5123
- // State hook for search query with an initial state based on the searchPlaceholder or empty string.
5124
- var [searchQuery, setSearchQuery] = React.useState(searchPlaceholder != null ? searchPlaceholder : '');
5125
- // State hook to manage dropdown visibility, starts as false (hidden).
5126
- var [isDropdownVisible, setIsDropdownVisible] = React.useState(false);
5127
- // Start of object returned by the useComboBoxState hook containing all state and state updater functions.
5128
- return {
5129
- filteredItems,
5130
- setFilteredItems,
5131
- selectedItem,
5132
- setSelectedItem,
5133
- highlightedIndex,
5134
- setHighlightedIndex,
5135
- searchQuery,
5136
- setSearchQuery,
5137
- isDropdownVisible,
5138
- setIsDropdownVisible
5139
- };
5140
- };
5141
-
5142
- var _excluded$E = ["size", "color"];
5143
- var TickSvg = _ref => {
5144
- var {
5145
- size = 16,
5146
- color = '#c0c0c0'
5147
- } = _ref,
5148
- props = _objectWithoutPropertiesLoose(_ref, _excluded$E);
5149
- return /*#__PURE__*/React__default.createElement(Center, {
5150
- width: size + "px",
5151
- height: size + "px"
5152
- }, /*#__PURE__*/React__default.createElement("svg", Object.assign({
5153
- width: size + "px",
5154
- height: size + "px",
5155
- viewBox: "0 -0.5 25 25",
5156
- fill: "none",
5157
- xmlns: "http://www.w3.org/2000/svg"
5158
- }, props), /*#__PURE__*/React__default.createElement("g", {
5159
- id: "SVGRepo_bgCarrier",
5160
- strokeWidth: "0"
5161
- }), /*#__PURE__*/React__default.createElement("g", {
5162
- id: "SVGRepo_tracerCarrier",
5163
- strokeLinecap: "round",
5164
- strokeLinejoin: "round"
5165
- }), /*#__PURE__*/React__default.createElement("g", {
5166
- id: "SVGRepo_iconCarrier"
5167
- }, ' ', /*#__PURE__*/React__default.createElement("path", {
5168
- d: "M5.5 12.5L10.167 17L19.5 8",
5169
- stroke: "#444444",
5170
- strokeWidth: "1.5",
5171
- strokeLinecap: "round",
5172
- strokeLinejoin: "round"
5173
- }), ' ')));
5174
- };
5175
-
5176
- var _excluded$F = ["size", "color"];
5177
- var SearchLoopSvg = _ref => {
5178
- var {
5179
- size = 14,
5180
- color = '#c0c0c0'
5181
- } = _ref,
5182
- props = _objectWithoutPropertiesLoose(_ref, _excluded$F);
5183
- return /*#__PURE__*/React__default.createElement(Center, {
5184
- width: size + "px",
5185
- height: size + "px"
5186
- }, /*#__PURE__*/React__default.createElement("svg", Object.assign({
5187
- fill: "#c0c0c0",
5188
- width: size + "px",
5189
- height: size + "px",
5190
- version: "1.1",
5191
- id: "Capa_1",
5192
- xmlns: "http://www.w3.org/2000/svg",
5193
- viewBox: "0 0 488.4 488.4",
5194
- stroke: color
5195
- }, props), /*#__PURE__*/React__default.createElement("g", {
5196
- id: "SVGRepo_bgCarrier",
5197
- strokeWidth: "9.279599999999999"
5198
- }), /*#__PURE__*/React__default.createElement("g", {
5199
- id: "SVGRepo_tracerCarrier",
5200
- strokeLinecap: "round",
5201
- strokeLinejoin: "round"
5202
- }), /*#__PURE__*/React__default.createElement("g", {
5203
- id: "SVGRepo_iconCarrier"
5204
- }, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("path", {
5205
- d: "M0,203.25c0,112.1,91.2,203.2,203.2,203.2c51.6,0,98.8-19.4,134.7-51.2l129.5,129.5c2.4,2.4,5.5,3.6,8.7,3.6 s6.3-1.2,8.7-3.6c4.8-4.8,4.8-12.5,0-17.3l-129.6-129.5c31.8-35.9,51.2-83,51.2-134.7c0-112.1-91.2-203.2-203.2-203.2 S0,91.15,0,203.25z M381.9,203.25c0,98.5-80.2,178.7-178.7,178.7s-178.7-80.2-178.7-178.7s80.2-178.7,178.7-178.7 S381.9,104.65,381.9,203.25z"
5206
- }), ' ')))));
5207
- };
5208
-
5209
- var _excluded$G = ["placeholder", "items", "showTick", "onSelect", "searchEnabled", "left", "right", "label", "filteredItems", "setSelectedItem", "selectedItem", "highlightedIndex", "setHighlightedIndex", "searchQuery", "setSearchQuery", "setFilteredItems", "styles", "isDropdownVisible", "setIsDropdownVisible"];
5210
- // Defines the functional component 'ComboBoxView' with destructured props.
5211
- var ComboBoxView = _ref => {
5212
- var {
5213
- placeholder,
5214
- items,
5215
- showTick = true,
5216
- onSelect,
5217
- searchEnabled = true,
5218
- left,
5219
- right,
5220
- label,
5221
- filteredItems,
5222
- setSelectedItem,
5223
- selectedItem,
5224
- highlightedIndex,
5225
- setHighlightedIndex,
5226
- searchQuery,
5227
- setSearchQuery,
5228
- setFilteredItems,
5229
- styles,
5230
- isDropdownVisible,
5231
- setIsDropdownVisible
5232
- // Collects all further props not destructured explicitly.
5233
- } = _ref,
5234
- props = _objectWithoutPropertiesLoose(_ref, _excluded$G);
5235
- // Sets up an effect to handle clicking outside the dropdown to close it.
5236
- React.useEffect(() => {
5237
- var handleClickOutside = event => {
5238
- var path = event.composedPath();
5239
- var isOutside = !path.some(element => (element == null ? void 0 : element.id) === 'combobox-dropdown');
5240
- if (isOutside) {
5241
- setIsDropdownVisible(false);
5242
- }
5243
- };
5244
- document.addEventListener('mousedown', handleClickOutside);
5245
- return () => document.removeEventListener('mousedown', handleClickOutside);
5246
- }, []);
5247
- // Defines 'handleSearch' to filter items based on the user's query.
5248
- var handleSearch = query => {
5249
- setSearchQuery(query);
5250
- if (query === '') {
5251
- setFilteredItems(items);
5252
- } else {
5253
- var filtered = items.filter(item => item.label.toLowerCase().includes(query.toLowerCase()));
5254
- setFilteredItems(filtered);
5255
- }
5256
- setHighlightedIndex(0);
5257
- };
5258
- // Defines 'handleSelect' to handle item selection and close the dropdown.
5259
- var handleSelect = item => {
5260
- setSelectedItem(item);
5261
- onSelect == null || onSelect(item);
5262
- setIsDropdownVisible(false);
5263
- };
5264
- // Starts the JSX returned by the component representing the combobox.
5265
- return /*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5266
- role: "combobox",
5267
- flexWrap: "nowrap",
5268
- gap: 15,
5269
- alignItems: "center",
5270
- width: "100%"
5271
- }, props), label && (/*#__PURE__*/React__default.createElement(Text, {
5272
- styles: styles == null ? void 0 : styles.label,
5273
- htmlFor: props.id
5274
- }, label)), /*#__PURE__*/React__default.createElement(View, {
5275
- position: "relative"
5276
- }, /*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5277
- cursor: "pointer",
5278
- backgroundColor: "white",
5279
- boxShadow: "rgba(0, 0, 0, 0.16) 0px 1px 4px",
5280
- padding: "12px",
5281
- display: "flex",
5282
- alignItems: "center",
5283
- borderRadius: "4px",
5284
- justifyContent: "space-between",
5285
- minWidth: 300,
5286
- flexWrap: "nowrap"
5287
- }, styles == null ? void 0 : styles.container), /*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5288
- gap: 15,
5289
- alignItems: "center",
5290
- position: "relative",
5291
- width: "100%",
5292
- onClick: () => setIsDropdownVisible(!isDropdownVisible)
5293
- }, styles == null ? void 0 : styles.labelContainer), left, /*#__PURE__*/React__default.createElement(Text, Object.assign({
5294
- weight: "medium",
5295
- flexGrow: 1
5296
- }, styles == null ? void 0 : styles.label), selectedItem.label)), right, isDropdownVisible && (/*#__PURE__*/React__default.createElement(View, Object.assign({
5297
- id: "combobox-dropdown",
5298
- position: "absolute",
5299
- backgroundColor: "white",
5300
- boxShadow: "rgba(0, 0 ,0 ,0.16) 0px 1px 4px",
5301
- width: "100%",
5302
- overflowY: "auto",
5303
- zIndex: 10000,
5304
- bottom: -8,
5305
- left: 0,
5306
- transform: "translateY(100%)",
5307
- marginTop: "4px",
5308
- borderRadius: "4px"
5309
- }, styles == null ? void 0 : styles.dropdown), searchEnabled && (/*#__PURE__*/React__default.createElement(TextFieldView, {
5310
- id: props.id,
5311
- name: props.name,
5312
- width: "100%",
5313
- type: "search",
5314
- value: searchQuery,
5315
- onChange: value => handleSearch(value),
5316
- hint: placeholder,
5317
- isClearable: false,
5318
- leftChild: /*#__PURE__*/React__default.createElement(SearchLoopSvg, {
5319
- size: 12
5320
- }),
5321
- styles: {
5322
- box: Object.assign({
5323
- width: '100%',
5324
- padding: '6px 12px',
5325
- borderBottom: filteredItems.length > 0 ? '1px solid #ccc' : '1px solid transparent'
5326
- }, styles == null ? void 0 : styles.text)
5327
- }
5328
- })), filteredItems.length > 0 && (/*#__PURE__*/React__default.createElement(View, {
5329
- margin: 0,
5330
- padding: 4
5331
- }, filteredItems.map((item, index) => (/*#__PURE__*/React__default.createElement(Horizontal, Object.assign({
5332
- justifyContent: "space-between",
5333
- key: item.value,
5334
- padding: "12px",
5335
- cursor: "pointer",
5336
- borderRadius: 4,
5337
- backgroundColor: index === highlightedIndex ? 'color.gray.100' : 'transparent',
5338
- onMouseEnter: () => setHighlightedIndex(index),
5339
- onClick: () => handleSelect(item)
5340
- }, styles == null ? void 0 : styles.item), /*#__PURE__*/React__default.createElement(Text, null, item.label), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, item.icon && item.icon, item.value === selectedItem.value && showTick && !item.icon && /*#__PURE__*/React__default.createElement(TickSvg, null))))))))))));
5341
- };
5342
-
5343
- var _excluded$H = ["items", "placeholder", "searchPlaceholder"];
5344
- var ComboBoxComponent = _ref => {
5375
+ var _excluded$I = ["items", "placeholder", "searchPlaceholder"];
5376
+ var ComboBoxComponent$1 = _ref => {
5345
5377
  var {
5346
5378
  items,
5347
5379
  placeholder,
5348
5380
  searchPlaceholder
5349
5381
  } = _ref,
5350
- props = _objectWithoutPropertiesLoose(_ref, _excluded$H);
5382
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$I);
5351
5383
  var formProps = useFormikInput(props);
5352
5384
  var ComboBoxStates = useComboBoxState(items, placeholder, searchPlaceholder);
5353
5385
  // Ensure the onChange function from formProps is being called when an item is selected
@@ -5361,7 +5393,7 @@ var ComboBoxComponent = _ref => {
5361
5393
  /**
5362
5394
  * ComboBox allows users to select one or more options from a list of choices.
5363
5395
  */
5364
- var FormikComboBox = ComboBoxComponent;
5396
+ var FormikComboBox = ComboBoxComponent$1;
5365
5397
 
5366
5398
  // Create your store with the initial state and actions.
5367
5399
  var useMessageStore = /*#__PURE__*/zustand.create(set => ({
@@ -5716,7 +5748,7 @@ var HeaderIconSizes = {
5716
5748
  xl: 28
5717
5749
  };
5718
5750
 
5719
- var _excluded$I = ["children", "blur", "isOpen", "isClosePrevented", "onClose", "position"],
5751
+ var _excluded$J = ["children", "blur", "isOpen", "isClosePrevented", "onClose", "position"],
5720
5752
  _excluded2$6 = ["children", "shadow", "isFullScreen", "shape"],
5721
5753
  _excluded3$3 = ["children", "buttonColor", "iconSize", "buttonPosition"],
5722
5754
  _excluded4$2 = ["children"],
@@ -5730,7 +5762,7 @@ var ModalOverlay = _ref => {
5730
5762
  onClose = () => {},
5731
5763
  position = 'center'
5732
5764
  } = _ref,
5733
- props = _objectWithoutPropertiesLoose(_ref, _excluded$I);
5765
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$J);
5734
5766
  var handleClick = () => {
5735
5767
  if (!isClosePrevented) onClose();
5736
5768
  };
@@ -6119,7 +6151,7 @@ var ToggleShapes = {
6119
6151
  pillShaped: 24
6120
6152
  };
6121
6153
 
6122
- var _excluded$J = ["children", "shape", "colorScheme", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle"];
6154
+ var _excluded$K = ["children", "shape", "colorScheme", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle"];
6123
6155
  var ToggleView = _ref => {
6124
6156
  var {
6125
6157
  children,
@@ -6133,7 +6165,7 @@ var ToggleView = _ref => {
6133
6165
  setIsToggled,
6134
6166
  onToggle
6135
6167
  } = _ref,
6136
- props = _objectWithoutPropertiesLoose(_ref, _excluded$J);
6168
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$K);
6137
6169
  var toggleColor = !isDisabled ? colorScheme : 'theme.disabled';
6138
6170
  var isActive = !!(isToggle || isHovered);
6139
6171
  var ToggleVariants = {
@@ -6175,7 +6207,7 @@ var ToggleView = _ref => {
6175
6207
  }, ToggleVariants[variant], props), children);
6176
6208
  };
6177
6209
 
6178
- var _excluded$K = ["children", "shape", "colorScheme", "variant", "isDisabled", "isToggled", "onToggle"];
6210
+ var _excluded$L = ["children", "shape", "colorScheme", "variant", "isDisabled", "isToggled", "onToggle"];
6179
6211
  // Destructuring properties from ToggleProps to be used within the ToggleComponent.
6180
6212
  var ToggleComponent = _ref => {
6181
6213
  var {
@@ -6188,7 +6220,7 @@ var ToggleComponent = _ref => {
6188
6220
  isToggled = false,
6189
6221
  onToggle
6190
6222
  } = _ref,
6191
- props = _objectWithoutPropertiesLoose(_ref, _excluded$K);
6223
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$L);
6192
6224
  // Initializing toggle state and set state functions using the custom hook useToggleState.
6193
6225
  var {
6194
6226
  isHovered,
@@ -6311,6 +6343,7 @@ exports.Bottom = Bottom;
6311
6343
  exports.Button = Button;
6312
6344
  exports.Center = Center;
6313
6345
  exports.Checkbox = Checkbox;
6346
+ exports.ComboBox = ComboBox;
6314
6347
  exports.CountryPicker = CountryPicker;
6315
6348
  exports.DatePicker = DatePicker;
6316
6349
  exports.FileImage = FileImage;