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