@soyfri/shared-library 1.5.0 → 2.0.0-beta.1

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 (284) hide show
  1. package/build.js +75 -38
  2. package/dist/components/ActionMenu/ActionMenu.cjs +107 -0
  3. package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -0
  4. package/dist/components/ActionMenu/ActionMenu.d.ts +60 -0
  5. package/dist/components/ActionMenu/ActionMenu.js +107 -0
  6. package/dist/components/ActionMenu/ActionMenu.js.map +1 -0
  7. package/dist/components/ActionMenu/index.d.ts +2 -0
  8. package/dist/components/ActionMenu.d.ts +6 -0
  9. package/dist/components/AppBar/AppBar.cjs +346 -0
  10. package/dist/components/AppBar/AppBar.cjs.map +1 -0
  11. package/dist/components/AppBar/AppBar.d.ts +55 -0
  12. package/dist/components/AppBar/AppBar.js +346 -0
  13. package/dist/components/AppBar/AppBar.js.map +1 -0
  14. package/dist/components/AppBar/AppBar.sx.d.ts +12 -0
  15. package/dist/components/AppBar/AppBarBrand.d.ts +31 -0
  16. package/dist/components/AppBar/AppBarContext.d.ts +18 -0
  17. package/dist/components/AppBar/AppBarMenuToggle.d.ts +39 -0
  18. package/dist/components/AppBar/AppBarUserMenu.d.ts +65 -0
  19. package/dist/components/AppBar/index.d.ts +12 -0
  20. package/dist/components/AppBar.d.ts +6 -0
  21. package/dist/components/Autocomplete/Autocomplete.cjs +259 -54
  22. package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -1
  23. package/dist/components/Autocomplete/Autocomplete.d.ts +64 -9
  24. package/dist/components/Autocomplete/Autocomplete.definitions.d.ts +6 -0
  25. package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +18 -0
  26. package/dist/components/Autocomplete/Autocomplete.js +261 -56
  27. package/dist/components/Autocomplete/Autocomplete.js.map +1 -1
  28. package/dist/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
  29. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -0
  30. package/dist/components/Autocomplete/_parts/AutocompleteChips.d.ts +19 -0
  31. package/dist/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
  32. package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +19 -0
  33. package/dist/components/Autocomplete/index.d.ts +2 -1
  34. package/dist/components/Autocomplete.d.ts +4 -0
  35. package/dist/components/Avatar/Avatar.cjs +116 -79
  36. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  37. package/dist/components/Avatar/Avatar.d.ts +16 -2
  38. package/dist/components/Avatar/Avatar.definitions.d.ts +11 -0
  39. package/dist/components/Avatar/Avatar.js +117 -80
  40. package/dist/components/Avatar/Avatar.js.map +1 -1
  41. package/dist/components/Card/Card.cjs +168 -9
  42. package/dist/components/Card/Card.cjs.map +1 -1
  43. package/dist/components/Card/Card.d.ts +78 -8
  44. package/dist/components/Card/Card.js +170 -11
  45. package/dist/components/Card/Card.js.map +1 -1
  46. package/dist/components/Card/Card.sx.d.ts +17 -0
  47. package/dist/components/Card/index.d.ts +4 -1
  48. package/dist/components/Card.d.ts +4 -0
  49. package/dist/components/DatePicker/DatePicker.cjs +201 -3
  50. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  51. package/dist/components/DatePicker/DatePicker.d.ts +47 -9
  52. package/dist/components/DatePicker/DatePicker.definitions.d.ts +1 -0
  53. package/dist/components/DatePicker/DatePicker.helpers.d.ts +7 -0
  54. package/dist/components/DatePicker/DatePicker.js +200 -2
  55. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  56. package/dist/components/DatePicker/DatePicker.sx.d.ts +9 -0
  57. package/dist/components/DatePicker/DatePicker.types.d.ts +1 -0
  58. package/dist/components/DatePicker/index.d.ts +2 -1
  59. package/dist/components/DatePicker.d.ts +4 -0
  60. package/dist/components/DateTimePicker/DateTimePicker.cjs +152 -138
  61. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  62. package/dist/components/DateTimePicker/DateTimePicker.d.ts +46 -9
  63. package/dist/components/DateTimePicker/DateTimePicker.definitions.d.ts +1 -0
  64. package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +11 -0
  65. package/dist/components/DateTimePicker/DateTimePicker.js +152 -138
  66. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  67. package/dist/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
  68. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +1 -0
  69. package/dist/components/DateTimePicker/index.d.ts +2 -1
  70. package/dist/components/DateTimePicker.d.ts +4 -0
  71. package/dist/components/Drawer/Drawer.cjs +271 -0
  72. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  73. package/dist/components/Drawer/Drawer.d.ts +51 -0
  74. package/dist/components/Drawer/Drawer.js +271 -0
  75. package/dist/components/Drawer/Drawer.js.map +1 -0
  76. package/dist/components/Drawer/Drawer.sx.d.ts +23 -0
  77. package/dist/components/Drawer/DrawerContext.d.ts +18 -0
  78. package/dist/components/Drawer/DrawerItem.d.ts +35 -0
  79. package/dist/components/Drawer/index.d.ts +6 -0
  80. package/dist/components/Drawer.d.ts +6 -0
  81. package/dist/components/Icon/Icon.cjs +44 -3
  82. package/dist/components/Icon/Icon.cjs.map +1 -1
  83. package/dist/components/Icon/Icon.d.ts +34 -1
  84. package/dist/components/Icon/Icon.js +44 -3
  85. package/dist/components/Icon/Icon.js.map +1 -1
  86. package/dist/components/Input/Input.cjs +173 -3
  87. package/dist/components/Input/Input.cjs.map +1 -1
  88. package/dist/components/Input/Input.d.ts +20 -15
  89. package/dist/components/Input/Input.definitions.d.ts +5 -2
  90. package/dist/components/Input/Input.helpers.d.ts +14 -0
  91. package/dist/components/Input/Input.js +172 -2
  92. package/dist/components/Input/Input.js.map +1 -1
  93. package/dist/components/Input/Input.sx.d.ts +8 -0
  94. package/dist/components/Input/Input.types.d.ts +1 -0
  95. package/dist/components/Input/index.d.ts +2 -1
  96. package/dist/components/Input.d.ts +4 -0
  97. package/dist/components/InputGroup/InputGroup.cjs +104 -91
  98. package/dist/components/InputGroup/InputGroup.cjs.map +1 -1
  99. package/dist/components/InputGroup/InputGroup.d.ts +37 -1
  100. package/dist/components/InputGroup/InputGroup.definitions.d.ts +6 -0
  101. package/dist/components/InputGroup/InputGroup.js +106 -93
  102. package/dist/components/InputGroup/InputGroup.js.map +1 -1
  103. package/dist/components/Modal/Modal.cjs +226 -116
  104. package/dist/components/Modal/Modal.cjs.map +1 -1
  105. package/dist/components/Modal/Modal.d.ts +38 -2
  106. package/dist/components/Modal/Modal.js +227 -117
  107. package/dist/components/Modal/Modal.js.map +1 -1
  108. package/dist/components/Modal/ModalFooter.d.ts +9 -1
  109. package/dist/components/Modal/index.d.ts +5 -0
  110. package/dist/components/PageLoader/PageLoader.cjs +61 -0
  111. package/dist/components/PageLoader/PageLoader.cjs.map +1 -0
  112. package/dist/components/PageLoader/PageLoader.d.ts +38 -0
  113. package/dist/components/PageLoader/PageLoader.js +61 -0
  114. package/dist/components/PageLoader/PageLoader.js.map +1 -0
  115. package/dist/components/PageLoader/index.d.ts +2 -0
  116. package/dist/components/PageLoader.d.ts +6 -0
  117. package/dist/components/ScrollTopButton/ScrollTopButton.cjs +79 -0
  118. package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +1 -0
  119. package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +48 -0
  120. package/dist/components/ScrollTopButton/ScrollTopButton.js +79 -0
  121. package/dist/components/ScrollTopButton/ScrollTopButton.js.map +1 -0
  122. package/dist/components/ScrollTopButton/index.d.ts +4 -0
  123. package/dist/components/ScrollTopButton/scrollToTop.d.ts +29 -0
  124. package/dist/components/ScrollTopButton.d.ts +6 -0
  125. package/dist/components/Select/Select.cjs +446 -4
  126. package/dist/components/Select/Select.cjs.map +1 -1
  127. package/dist/components/Select/Select.d.ts +33 -13
  128. package/dist/components/Select/Select.definitions.d.ts +3 -0
  129. package/dist/components/Select/Select.helpers.d.ts +28 -0
  130. package/dist/components/Select/Select.js +445 -3
  131. package/dist/components/Select/Select.js.map +1 -1
  132. package/dist/components/Select/Select.sx.d.ts +7 -0
  133. package/dist/components/Select/Select.types.d.ts +1 -0
  134. package/dist/components/Select/_parts/SelectMenuItem.d.ts +20 -0
  135. package/dist/components/Select/_parts/SelectSearchHeader.d.ts +15 -0
  136. package/dist/components/Select/_parts/SelectValue.d.ts +22 -0
  137. package/dist/components/Select/index.d.ts +2 -1
  138. package/dist/components/Select.d.ts +4 -0
  139. package/dist/components/Stat/Stat.cjs +1 -1
  140. package/dist/components/Stat/Stat.js +1 -1
  141. package/dist/components/Stepper/Stepper.cjs +4 -1
  142. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  143. package/dist/components/Stepper/Stepper.d.ts +5 -0
  144. package/dist/components/Stepper/Stepper.js +4 -1
  145. package/dist/components/Stepper/Stepper.js.map +1 -1
  146. package/dist/components/_shared/formField.sx.d.ts +33 -0
  147. package/dist/components/_shared/resolvePreset.d.ts +18 -0
  148. package/dist/formField.sx-CQ1mbk9M.cjs +76 -0
  149. package/dist/formField.sx-CQ1mbk9M.cjs.map +1 -0
  150. package/dist/formField.sx-DfVbMe0V.js +77 -0
  151. package/dist/formField.sx-DfVbMe0V.js.map +1 -0
  152. package/dist/hooks/Wizard/Wizard.cjs +7 -0
  153. package/dist/hooks/Wizard/Wizard.cjs.map +1 -0
  154. package/dist/hooks/Wizard/Wizard.js +7 -0
  155. package/dist/hooks/Wizard/Wizard.js.map +1 -0
  156. package/dist/hooks/Wizard/WizardContext.d.ts +67 -0
  157. package/dist/hooks/Wizard/index.d.ts +3 -0
  158. package/dist/hooks/Wizard/useWizard.d.ts +9 -0
  159. package/dist/hooks/Wizard.d.ts +2 -0
  160. package/dist/index.cjs +99 -1
  161. package/dist/index.cjs.map +1 -1
  162. package/dist/index.d.ts +3 -0
  163. package/dist/index.js +31 -2
  164. package/dist/index.js.map +1 -1
  165. package/dist/mui.d.ts +5 -0
  166. package/dist/resolvePreset-B-IB0ehH.js +15 -0
  167. package/dist/resolvePreset-B-IB0ehH.js.map +1 -0
  168. package/dist/resolvePreset-CT3kU-K2.cjs +14 -0
  169. package/dist/resolvePreset-CT3kU-K2.cjs.map +1 -0
  170. package/dist/styles.css +3 -112
  171. package/dist/theme/componentStyles.d.ts +32 -0
  172. package/dist/theme/tokens.d.ts +28 -0
  173. package/dist/useWizard-CWdIxZzX.cjs +94 -0
  174. package/dist/useWizard-CWdIxZzX.cjs.map +1 -0
  175. package/dist/useWizard-CWq--C3o.js +95 -0
  176. package/dist/useWizard-CWq--C3o.js.map +1 -0
  177. package/package.json +1 -1
  178. package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
  179. package/src/components/ActionMenu/ActionMenu.tsx +174 -0
  180. package/src/components/ActionMenu/index.ts +2 -0
  181. package/src/components/AppBar/AppBar.stories.tsx +272 -0
  182. package/src/components/AppBar/AppBar.sx.ts +32 -0
  183. package/src/components/AppBar/AppBar.tsx +123 -0
  184. package/src/components/AppBar/AppBarBrand.tsx +120 -0
  185. package/src/components/AppBar/AppBarContext.ts +25 -0
  186. package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
  187. package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
  188. package/src/components/AppBar/index.ts +25 -0
  189. package/src/components/Autocomplete/Autocomplete.definitions.ts +223 -0
  190. package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
  191. package/src/components/Autocomplete/Autocomplete.stories.tsx +363 -2
  192. package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
  193. package/src/components/Autocomplete/Autocomplete.tsx +312 -90
  194. package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
  195. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
  196. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
  197. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
  198. package/src/components/Autocomplete/index.ts +12 -1
  199. package/src/components/Avatar/Avatar.definitions.ts +162 -0
  200. package/src/components/Avatar/Avatar.stories.tsx +205 -1
  201. package/src/components/Avatar/Avatar.tsx +166 -103
  202. package/src/components/Card/Card.stories.tsx +205 -16
  203. package/src/components/Card/Card.sx.ts +104 -0
  204. package/src/components/Card/Card.tsx +191 -35
  205. package/src/components/Card/index.ts +9 -1
  206. package/src/components/DatePicker/DatePicker.definitions.ts +24 -1
  207. package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
  208. package/src/components/DatePicker/DatePicker.stories.tsx +29 -2
  209. package/src/components/DatePicker/DatePicker.sx.ts +33 -0
  210. package/src/components/DatePicker/DatePicker.tsx +163 -139
  211. package/src/components/DatePicker/DatePicker.types.ts +10 -0
  212. package/src/components/DatePicker/index.ts +9 -1
  213. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +24 -0
  214. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
  215. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +29 -1
  216. package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
  217. package/src/components/DateTimePicker/DateTimePicker.tsx +200 -166
  218. package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
  219. package/src/components/DateTimePicker/index.ts +9 -1
  220. package/src/components/Drawer/Drawer.stories.tsx +270 -0
  221. package/src/components/Drawer/Drawer.sx.ts +106 -0
  222. package/src/components/Drawer/Drawer.tsx +214 -0
  223. package/src/components/Drawer/DrawerContext.ts +26 -0
  224. package/src/components/Drawer/DrawerItem.tsx +110 -0
  225. package/src/components/Drawer/index.ts +10 -0
  226. package/src/components/Flyout/Flyout.stories.tsx +26 -18
  227. package/src/components/Icon/Icon.stories.tsx +68 -1
  228. package/src/components/Icon/Icon.tsx +87 -6
  229. package/src/components/Input/Input.definitions.ts +74 -2
  230. package/src/components/Input/Input.helpers.ts +49 -0
  231. package/src/components/Input/Input.stories.tsx +116 -4
  232. package/src/components/Input/Input.sx.ts +42 -0
  233. package/src/components/Input/Input.tsx +117 -162
  234. package/src/components/Input/Input.types.ts +10 -0
  235. package/src/components/Input/index.ts +9 -1
  236. package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
  237. package/src/components/InputGroup/InputGroup.stories.tsx +159 -28
  238. package/src/components/InputGroup/InputGroup.tsx +159 -116
  239. package/src/components/Modal/Modal.stories.tsx +434 -6
  240. package/src/components/Modal/Modal.tsx +303 -121
  241. package/src/components/Modal/ModalFooter.tsx +22 -12
  242. package/src/components/Modal/index.ts +6 -1
  243. package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
  244. package/src/components/PageLoader/PageLoader.tsx +96 -0
  245. package/src/components/PageLoader/index.ts +2 -0
  246. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
  247. package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
  248. package/src/components/ScrollTopButton/index.ts +8 -0
  249. package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
  250. package/src/components/Select/Select.definitions.ts +114 -0
  251. package/src/components/Select/Select.helpers.ts +71 -0
  252. package/src/components/Select/Select.stories.tsx +126 -8
  253. package/src/components/Select/Select.sx.ts +14 -0
  254. package/src/components/Select/Select.tsx +246 -285
  255. package/src/components/Select/Select.types.ts +15 -0
  256. package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
  257. package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
  258. package/src/components/Select/_parts/SelectValue.tsx +96 -0
  259. package/src/components/Select/index.ts +14 -1
  260. package/src/components/Stepper/Stepper.tsx +17 -1
  261. package/src/components/Tooltip/Tooltip.stories.tsx +15 -3
  262. package/src/components/_shared/formField.sx.ts +118 -0
  263. package/src/components/_shared/resolvePreset.ts +35 -0
  264. package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
  265. package/src/hooks/Wizard/WizardContext.tsx +166 -0
  266. package/src/hooks/Wizard/index.ts +6 -0
  267. package/src/hooks/Wizard/useWizard.ts +13 -0
  268. package/src/index.ts +17 -1
  269. package/src/mui.ts +44 -0
  270. package/src/theme/componentStyles.ts +47 -0
  271. package/src/theme/tokens.ts +43 -0
  272. package/dist/DatePicker-BSNboVhN.js +0 -201
  273. package/dist/DatePicker-BSNboVhN.js.map +0 -1
  274. package/dist/DatePicker-BoqxWAhj.cjs +0 -200
  275. package/dist/DatePicker-BoqxWAhj.cjs.map +0 -1
  276. package/dist/Input-DFHs7cJ_.js +0 -171
  277. package/dist/Input-DFHs7cJ_.js.map +0 -1
  278. package/dist/Input-c8MwNNPg.cjs +0 -170
  279. package/dist/Input-c8MwNNPg.cjs.map +0 -1
  280. package/dist/Select-BO2N56sm.cjs +0 -411
  281. package/dist/Select-BO2N56sm.cjs.map +0 -1
  282. package/dist/Select-BcLkyHSE.js +0 -412
  283. package/dist/Select-BcLkyHSE.js.map +0 -1
  284. package/dist/index.css +0 -3
@@ -1,170 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var __objRest = (source, exclude) => {
22
- var target = {};
23
- for (var prop in source)
24
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
- target[prop] = source[prop];
26
- if (source != null && __getOwnPropSymbols)
27
- for (var prop of __getOwnPropSymbols(source)) {
28
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
- target[prop] = source[prop];
30
- }
31
- return target;
32
- };
33
- const jsxRuntime = require("react/jsx-runtime");
34
- const React = require("react");
35
- const material = require("@mui/material");
36
- const system = require("@mui/system");
37
- const reactHookForm = require("react-hook-form");
38
- const StyledTextField = system.styled(material.TextField)(({ theme }) => ({
39
- "& .MuiInputBase-root": {
40
- maxHeight: "34px",
41
- padding: "8px 10px",
42
- borderRadius: "10px",
43
- display: "flex",
44
- alignItems: "center",
45
- fontSize: "14px"
46
- },
47
- "& .MuiInputBase-input": {
48
- padding: "0 !important",
49
- height: "18px",
50
- display: "flex",
51
- alignItems: "center",
52
- marginTop: "-4px"
53
- },
54
- "& .MuiInputLabel-root": {
55
- top: "50%",
56
- transform: "translate(14px, -50%)",
57
- "&.MuiInputLabel-shrink": {
58
- transform: "translate(1px, -200%) scale(0.75)",
59
- fontSize: "16px !important",
60
- "> legend": {
61
- display: "none"
62
- }
63
- }
64
- },
65
- "& .MuiInputLabel-root.Mui-error": {
66
- top: "25%"
67
- },
68
- "& .MuiInputBase-root > fieldset > legend": {
69
- display: "none"
70
- },
71
- "& .MuiOutlinedInput-notchedOutline": {
72
- border: "0.7px solid",
73
- borderColor: "#e0e0e0"
74
- }
75
- }));
76
- const Input = React.forwardRef((_a, ref) => {
77
- var _b = _a, {
78
- type = "text",
79
- variant = "outlined",
80
- min,
81
- max,
82
- inputProps: customInputProps,
83
- slotProps: customSlotProps,
84
- value,
85
- onChange
86
- } = _b, rest = __objRest(_b, [
87
- "type",
88
- "variant",
89
- "min",
90
- "max",
91
- "inputProps",
92
- "slotProps",
93
- "value",
94
- "onChange"
95
- ]);
96
- const isRHFMode = "control" in rest && rest.control !== void 0;
97
- const htmlInputProps = __spreadValues({}, customInputProps);
98
- if (type === "number") {
99
- htmlInputProps.min = min !== void 0 ? min : Number.NEGATIVE_INFINITY;
100
- if (max !== void 0) {
101
- htmlInputProps.max = max;
102
- }
103
- }
104
- const finalSlotProps = __spreadProps(__spreadValues({}, customSlotProps), {
105
- htmlInput: __spreadValues(__spreadValues({}, customSlotProps == null ? void 0 : customSlotProps.htmlInput), htmlInputProps)
106
- });
107
- const handleChangeInternal = (event, rhfOnChange) => {
108
- const rawValue = event.target.value;
109
- let newValue;
110
- if (type === "number") {
111
- newValue = rawValue === "" || rawValue === "-" ? rawValue : parseFloat(rawValue);
112
- if (isNaN(newValue) && rawValue !== "" && rawValue !== "-") newValue = rawValue;
113
- } else {
114
- newValue = rawValue;
115
- }
116
- if (isRHFMode) {
117
- rhfOnChange == null ? void 0 : rhfOnChange(newValue);
118
- } else {
119
- onChange == null ? void 0 : onChange(newValue);
120
- }
121
- };
122
- if (isRHFMode) {
123
- const rhfProps = rest;
124
- return /* @__PURE__ */ jsxRuntime.jsx(
125
- reactHookForm.Controller,
126
- {
127
- name: rhfProps.name,
128
- control: rhfProps.control,
129
- rules: rhfProps.validation,
130
- render: ({ field, fieldState: { error } }) => {
131
- var _a2;
132
- return /* @__PURE__ */ jsxRuntime.jsx(
133
- StyledTextField,
134
- __spreadValues({
135
- fullWidth: true,
136
- value: (_a2 = field.value) != null ? _a2 : "",
137
- onChange: (e) => handleChangeInternal(e, field.onChange),
138
- onBlur: field.onBlur,
139
- type,
140
- variant,
141
- slotProps: finalSlotProps,
142
- inputRef: field.ref,
143
- error: !!error,
144
- helperText: error == null ? void 0 : error.message
145
- }, rest)
146
- );
147
- }
148
- }
149
- );
150
- } else {
151
- const standardProps = rest;
152
- return /* @__PURE__ */ jsxRuntime.jsx(
153
- StyledTextField,
154
- __spreadValues({
155
- fullWidth: true,
156
- name: standardProps.name,
157
- value: value != null ? value : "",
158
- onChange: (e) => handleChangeInternal(e),
159
- type,
160
- variant,
161
- slotProps: finalSlotProps,
162
- inputRef: ref,
163
- error: standardProps.error,
164
- helperText: standardProps.helperText
165
- }, rest)
166
- );
167
- }
168
- });
169
- exports.Input = Input;
170
- //# sourceMappingURL=Input-c8MwNNPg.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input-c8MwNNPg.cjs","sources":["../src/components/Input/Input.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { TextField, TextFieldProps } from '@mui/material';\nimport { styled } from '@mui/system';\nimport { Controller, Control, RegisterOptions } from 'react-hook-form';\n\n\n\n\ninterface BaseInputProps extends Omit<TextFieldProps, 'value' | 'onChange' | 'variant' | 'type' | 'inputProps' | 'slotProps' | 'error' | 'helperText'> {\n type?: 'text' | 'number' | 'email' | 'password' | 'tel' | 'url' | 'search' | 'date' | 'datetime-local' | 'month' | 'week' | 'time' | 'color';\n variant?: 'outlined' | 'filled' | 'standard';\n min?: number;\n max?: number;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>; \n slotProps?: TextFieldProps['slotProps']; \n disabled?: boolean;\n readOnly?: boolean;\n error?: boolean;\n helperText?: string;\n}\n\ninterface RHFInputProps extends BaseInputProps {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: string | number;\n onChange?: (value: string | number) => void;\n}\n\ninterface StandardInputPropsWithOptionalName extends BaseInputProps {\n name?: string; \n control?: never;\n validation?: never;\n value: string | number;\n onChange: (value: string | number) => void;\n}\n\nexport type InputProps = RHFInputProps | StandardInputPropsWithOptionalName;\n\n\nconst StyledTextField = styled(TextField)(({ theme }) => ({\n '& .MuiInputBase-root': {\n maxHeight: '34px',\n padding: '8px 10px',\n borderRadius: '10px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n },\n '& .MuiInputBase-input': {\n padding: '0 !important',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n marginTop: '-4px'\n },\n '& .MuiInputLabel-root': {\n top: '50%',\n transform: 'translate(14px, -50%)',\n '&.MuiInputLabel-shrink': {\n transform: 'translate(1px, -200%) scale(0.75)',\n fontSize: '16px !important',\n '> legend': {\n display: 'none',\n }\n }\n },\n '& .MuiInputLabel-root.Mui-error': {\n top: '25%'\n \n },\n '& .MuiInputBase-root > fieldset > legend':{\n display: 'none',\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: '0.7px solid',\n borderColor: '#e0e0e0',\n },\n}));\n\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(({\n type = 'text',\n variant = 'outlined',\n min,\n max,\n inputProps: customInputProps, \n slotProps: customSlotProps, \n \n value, \n onChange,\n ...rest \n}, ref) => {\n const isRHFMode = 'control' in rest && rest.control !== undefined;\n\n \n const htmlInputProps: React.InputHTMLAttributes<HTMLInputElement> = {\n ...customInputProps, \n };\n\n if (type === 'number') {\n htmlInputProps.min = min !== undefined ? min : Number.NEGATIVE_INFINITY;\n if (max !== undefined) {\n htmlInputProps.max = max;\n }\n }\n\n \n const finalSlotProps: TextFieldProps['slotProps'] = {\n ...customSlotProps,\n htmlInput: {\n ...customSlotProps?.htmlInput,\n ...htmlInputProps,\n },\n };\n\n \n const handleChangeInternal = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, rhfOnChange?: (...event: any[]) => void) => {\n const rawValue = event.target.value;\n let newValue: string | number;\n\n if (type === 'number') {\n newValue = rawValue === '' || rawValue === '-' ? rawValue : parseFloat(rawValue);\n \n if (isNaN(newValue as number) && rawValue !== '' && rawValue !== '-') newValue = rawValue;\n } else {\n newValue = rawValue;\n }\n\n if (isRHFMode) {\n rhfOnChange?.(newValue); \n } else {\n \n (onChange as (value: string | number) => void)?.(newValue); \n }\n };\n\n \n if (isRHFMode) {\n const rhfProps = rest as RHFInputProps;\n return (\n <Controller\n name={rhfProps.name}\n control={rhfProps.control}\n rules={rhfProps.validation}\n render={({ field, fieldState: { error } }) => {\n return (\n <StyledTextField\n fullWidth={true}\n value={field.value ?? ''}\n onChange={(e) => handleChangeInternal(e, field.onChange)} \n onBlur={field.onBlur}\n type={type}\n variant={variant}\n slotProps={finalSlotProps} \n inputRef={field.ref}\n error={!!error}\n helperText={error?.message}\n {...rest}\n />\n );\n }}\n />\n );\n } else {\n \n const standardProps = rest as StandardInputPropsWithOptionalName;\n return (\n <StyledTextField\n fullWidth={true}\n name={standardProps.name} \n value={value ?? ''} \n onChange={(e) => handleChangeInternal(e)} \n type={type}\n variant={variant}\n slotProps={finalSlotProps} \n inputRef={ref} \n error={standardProps.error}\n helperText={standardProps.helperText}\n {...rest} \n />\n );\n }\n});\n\nexport default Input;"],"names":["styled","TextField","forwardRef","jsx","Controller","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,kBAAkBA,OAAAA,OAAOC,SAAAA,SAAS,EAAE,CAAC,EAAE,aAAa;AAAA,EACxD,wBAAwB;AAAA,IACtB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA;AAAA,EAEZ,yBAAyB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,EAAA;AAAA,EAEb,yBAAyB;AAAA,IACvB,KAAK;AAAA,IACL,WAAW;AAAA,IACX,0BAA0B;AAAA,MACxB,WAAW;AAAA,MACX,UAAU;AAAA,MACV,YAAY;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEF,mCAAmC;AAAA,IACjC,KAAK;AAAA,EAAA;AAAA,EAGP,4CAA2C;AAAA,IACzC,SAAS;AAAA,EAAA;AAAA,EAEX,sCAAsC;AAAA,IACpC,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA;AAEjB,EAAE;AAGK,MAAM,QAAQC,MAAAA,WAAyC,CAAC,IAW5D,QAAQ;AAXoD,eAC7D;AAAA,WAAO;AAAA,IACP,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,WAAW;AAAA,IAEX;AAAA,IACA;AAAA,MAT6D,IAU1D,iBAV0D,IAU1D;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA;AAGA,QAAM,YAAY,aAAa,QAAQ,KAAK,YAAY;AAGxD,QAAM,iBAA8D,mBAC/D;AAGL,MAAI,SAAS,UAAU;AACrB,mBAAe,MAAM,QAAQ,SAAY,MAAM,OAAO;AACtD,QAAI,QAAQ,QAAW;AACrB,qBAAe,MAAM;AAAA,IACvB;AAAA,EACF;AAGA,QAAM,iBAA8C,iCAC/C,kBAD+C;AAAA,IAElD,WAAW,kCACN,mDAAiB,YACjB;AAAA,EACL;AAIF,QAAM,uBAAuB,CAAC,OAAkE,gBAA4C;AAC1I,UAAM,WAAW,MAAM,OAAO;AAC9B,QAAI;AAEJ,QAAI,SAAS,UAAU;AACrB,iBAAW,aAAa,MAAM,aAAa,MAAM,WAAW,WAAW,QAAQ;AAE/E,UAAI,MAAM,QAAkB,KAAK,aAAa,MAAM,aAAa,IAAK,YAAW;AAAA,IACnF,OAAO;AACL,iBAAW;AAAA,IACb;AAEA,QAAI,WAAW;AACb,iDAAc;AAAA,IAChB,OAAO;AAEJ,2CAAgD;AAAA,IACnD;AAAA,EACF;AAGA,MAAI,WAAW;AACb,UAAM,WAAW;AACjB,WACEC,2BAAAA;AAAAA,MAACC,cAAAA;AAAAA,MAAA;AAAA,QACC,MAAM,SAAS;AAAA,QACf,SAAS,SAAS;AAAA,QAClB,OAAO,SAAS;AAAA,QAChB,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,MAAA,QAAc;;AAC5C,iBACED,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,cACX,QAAOE,MAAA,MAAM,UAAN,OAAAA,MAAe;AAAA,cACtB,UAAU,CAAC,MAAM,qBAAqB,GAAG,MAAM,QAAQ;AAAA,cACvD,QAAQ,MAAM;AAAA,cACd;AAAA,cACA;AAAA,cACA,WAAW;AAAA,cACX,UAAU,MAAM;AAAA,cAChB,OAAO,CAAC,CAAC;AAAA,cACT,YAAY,+BAAO;AAAA,eACf;AAAA,UAAA;AAAA,QAGV;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN,OAAO;AAEL,UAAM,gBAAgB;AACtB,WACEF,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,MAAM,cAAc;AAAA,QACpB,OAAO,wBAAS;AAAA,QAChB,UAAU,CAAC,MAAM,qBAAqB,CAAC;AAAA,QACvC;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,UAAU;AAAA,QACV,OAAO,cAAc;AAAA,QACrB,YAAY,cAAc;AAAA,SACtB;AAAA,IAAA;AAAA,EAGV;AACF,CAAC;;"}
@@ -1,411 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var __objRest = (source, exclude) => {
22
- var target = {};
23
- for (var prop in source)
24
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
- target[prop] = source[prop];
26
- if (source != null && __getOwnPropSymbols)
27
- for (var prop of __getOwnPropSymbols(source)) {
28
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
- target[prop] = source[prop];
30
- }
31
- return target;
32
- };
33
- const jsxRuntime = require("react/jsx-runtime");
34
- const React = require("react");
35
- const material = require("@mui/material");
36
- const system = require("@mui/system");
37
- const ClearIcon = require("@mui/icons-material/Clear");
38
- const CheckIcon = require("@mui/icons-material/Check");
39
- const reactHookForm = require("react-hook-form");
40
- function Option(_props) {
41
- return null;
42
- }
43
- Option.displayName = "Option";
44
- const StyledSelect = system.styled(material.Select)(({ theme }) => ({
45
- "& .MuiInputBase-root": {
46
- maxHeight: "4px",
47
- padding: "8px 10px",
48
- borderRadius: "10px",
49
- display: "flex",
50
- alignItems: "center",
51
- fontSize: "14px"
52
- },
53
- "& .MuiSelect-select": {
54
- padding: "0 !important",
55
- height: "28px !important",
56
- display: "flex",
57
- alignItems: "center",
58
- marginLeft: "8px"
59
- },
60
- "& .MuiOutlinedInput-notchedOutline": {
61
- marginBottom: "-4px !important",
62
- borderRadius: "10px"
63
- },
64
- "& .MuiSelect-icon": {
65
- top: "50%",
66
- transform: "translateY(-50%)"
67
- },
68
- "& .MuiOutlinedInput-notchedOutline > legend": {
69
- display: "none"
70
- }
71
- }));
72
- const StyledLabel = system.styled(material.InputLabel)(({ theme }) => ({
73
- "&.MuiInputLabel-root": {
74
- top: "50%",
75
- transform: "translate(14px, -50%)"
76
- },
77
- "&.MuiInputLabel-shrink": {
78
- transform: "translate(1px, -200%) scale(0.75)",
79
- fontSize: "16px",
80
- "> legend": {
81
- display: "none"
82
- }
83
- },
84
- "&.MuiInputLabel-animated": {
85
- "&.MuiInputLabel-shrink": {
86
- display: "block"
87
- }
88
- }
89
- }));
90
- const StyledOutlinedInput = system.styled(material.OutlinedInput)(({ theme }) => ({
91
- "& .MuiInputBase-root": {
92
- maxHeight: "34px",
93
- padding: "8px 10px",
94
- borderRadius: "10px",
95
- display: "flex",
96
- alignItems: "center",
97
- fontSize: "14px",
98
- " & > .MuiAvatar-img": {
99
- width: "14px",
100
- height: "14px"
101
- }
102
- },
103
- "& .MuiInputBase-input": {
104
- padding: "0 !important",
105
- height: "18px",
106
- display: "flex",
107
- alignItems: "center"
108
- },
109
- "& .MuiOutlinedInput-notchedOutline": {
110
- border: "0.7px solid",
111
- borderColor: "#e0e0e0"
112
- }
113
- }));
114
- function Select(props) {
115
- const _a = props, {
116
- label,
117
- options = [],
118
- value,
119
- onChange,
120
- defaultValue,
121
- size = "medium",
122
- multiple = false,
123
- filterable = false,
124
- placeholder,
125
- children,
126
- maxHeight = 300,
127
- maxWidth,
128
- maxChipsToShow = 3,
129
- renderChipLabel,
130
- chipVariant = "outlined",
131
- loadOptions,
132
- loadingMessage = "Cargando opciones...",
133
- noOptionsMessage = "No hay opciones",
134
- debounceTimeout = 300,
135
- disabled = false,
136
- error = false,
137
- helperText
138
- } = _a, rest = __objRest(_a, [
139
- "label",
140
- "options",
141
- "value",
142
- "onChange",
143
- "defaultValue",
144
- "size",
145
- "multiple",
146
- "filterable",
147
- "placeholder",
148
- "children",
149
- "maxHeight",
150
- "maxWidth",
151
- "maxChipsToShow",
152
- "renderChipLabel",
153
- "chipVariant",
154
- "loadOptions",
155
- "loadingMessage",
156
- "noOptionsMessage",
157
- "debounceTimeout",
158
- "disabled",
159
- "error",
160
- "helperText"
161
- ]);
162
- const isRHFMode = "control" in rest && rest.control !== void 0;
163
- const customRender = React.useMemo(() => {
164
- var _a2;
165
- if (React.Children.count(children) === 1) {
166
- const child = React.Children.only(children);
167
- if (React.isValidElement(child) && ((_a2 = child.type) == null ? void 0 : _a2.displayName) === "Option") {
168
- return child.props.children;
169
- }
170
- }
171
- return null;
172
- }, [children]);
173
- const [search, setSearch] = React.useState("");
174
- const [asyncOptions, setAsyncOptions] = React.useState([]);
175
- const [loading, setLoading] = React.useState(false);
176
- const debounceTimerRef = React.useRef(null);
177
- const searchInputRef = React.useRef(null);
178
- const isAsync = typeof loadOptions === "function";
179
- const currentOptions = isAsync ? asyncOptions : options;
180
- React.useEffect(() => {
181
- if (isAsync) {
182
- if (debounceTimerRef.current) {
183
- clearTimeout(debounceTimerRef.current);
184
- }
185
- if (search) {
186
- setLoading(true);
187
- debounceTimerRef.current = window.setTimeout(() => {
188
- loadOptions(search).then((loadedOpts) => {
189
- setAsyncOptions(loadedOpts);
190
- }).finally(() => {
191
- setLoading(false);
192
- if (searchInputRef.current) {
193
- searchInputRef.current.focus();
194
- }
195
- });
196
- }, debounceTimeout);
197
- } else {
198
- setAsyncOptions([]);
199
- setLoading(false);
200
- if (searchInputRef.current) {
201
- searchInputRef.current.focus();
202
- }
203
- }
204
- }
205
- }, [search, isAsync, loadOptions, debounceTimeout]);
206
- const filteredOptions = React.useMemo(() => {
207
- if (isAsync) {
208
- return currentOptions;
209
- }
210
- if (!filterable || !search) return currentOptions;
211
- return currentOptions.filter(
212
- (opt) => opt.label.toLowerCase().includes(search.toLowerCase())
213
- );
214
- }, [search, filterable, currentOptions, isAsync]);
215
- const groupedOptions = React.useMemo(() => {
216
- const groups = {};
217
- filteredOptions.forEach((opt) => {
218
- const group = opt.group || "__default";
219
- if (!groups[group]) groups[group] = [];
220
- groups[group].push(opt);
221
- });
222
- return groups;
223
- }, [filteredOptions]);
224
- const renderValue = (selected) => {
225
- var _a2;
226
- if (!selected || Array.isArray(selected) && selected.length === 0) {
227
- return /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: { color: "text.disabled" }, children: placeholder || "" });
228
- }
229
- if (!multiple) {
230
- const item = currentOptions.find((opt) => opt.value === selected);
231
- return renderChipLabel && item ? renderChipLabel(item) : (_a2 = item == null ? void 0 : item.label) != null ? _a2 : String(selected);
232
- }
233
- const selectedValuesArray = selected;
234
- const displayedChips = selectedValuesArray.slice(0, maxChipsToShow);
235
- const hiddenChipsCount = selectedValuesArray.length - maxChipsToShow;
236
- return /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: { display: "flex", flexWrap: "wrap", gap: 0.5 }, children: [
237
- displayedChips.map((val) => {
238
- const item = currentOptions.find((o) => o.value === val);
239
- if (!item) return null;
240
- const handleDelete = (chipValue) => {
241
- const newSelected = value.filter((v) => v !== chipValue);
242
- onChange == null ? void 0 : onChange(newSelected);
243
- };
244
- return /* @__PURE__ */ jsxRuntime.jsx(
245
- material.Chip,
246
- {
247
- variant: chipVariant,
248
- color: "primary",
249
- label: renderChipLabel ? renderChipLabel(item) : item.label,
250
- avatar: item.img ? /* @__PURE__ */ jsxRuntime.jsx(
251
- material.Avatar,
252
- {
253
- sx: {
254
- "& > .MuiAvatar-root, .MuiChip-avatar": {
255
- backgroundColor: "red"
256
- }
257
- },
258
- src: item.img
259
- }
260
- ) : void 0,
261
- onDelete: () => handleDelete(val),
262
- deleteIcon: /* @__PURE__ */ jsxRuntime.jsx(ClearIcon, { sx: { fontSize: "12px !important" } }),
263
- sx: {
264
- height: "27px",
265
- marginTop: "1px"
266
- }
267
- },
268
- val
269
- );
270
- }),
271
- hiddenChipsCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
272
- material.Chip,
273
- {
274
- sx: {
275
- height: "27px",
276
- marginTop: "0px"
277
- },
278
- label: `+${hiddenChipsCount} más`,
279
- variant: chipVariant
280
- }
281
- )
282
- ] });
283
- };
284
- const menuItems = React.useMemo(() => {
285
- const items = [];
286
- if (filterable || isAsync) {
287
- items.push(
288
- /* @__PURE__ */ jsxRuntime.jsx(material.ListSubheader, { sx: { px: 2, pt: 1, pb: 1, backgroundColor: "background.paper", zIndex: 1, position: "sticky", top: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(
289
- material.TextField,
290
- {
291
- inputRef: searchInputRef,
292
- placeholder: "Buscar...",
293
- variant: "standard",
294
- size: "small",
295
- fullWidth: true,
296
- value: search,
297
- onChange: (e) => setSearch(e.target.value),
298
- inputProps: { autoFocus: true },
299
- onClick: (e) => e.stopPropagation(),
300
- onKeyDown: (e) => e.stopPropagation()
301
- }
302
- ) }, "search-header")
303
- );
304
- }
305
- if (loading) {
306
- items.push(
307
- /* @__PURE__ */ jsxRuntime.jsx(material.MenuItem, { disabled: true, children: /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
308
- /* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { size: 20 }),
309
- /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: loadingMessage })
310
- ] }) }, "loading-message")
311
- );
312
- } else if (Object.keys(groupedOptions).length === 0 || Object.keys(groupedOptions).length === 1 && groupedOptions["__default"] && groupedOptions["__default"].length === 0) {
313
- items.push(
314
- /* @__PURE__ */ jsxRuntime.jsx(material.MenuItem, { disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: noOptionsMessage }) }, "no-options-message")
315
- );
316
- } else {
317
- Object.entries(groupedOptions).forEach(([group, opts]) => {
318
- if (group !== "__default") {
319
- items.push(
320
- /* @__PURE__ */ jsxRuntime.jsx(material.ListSubheader, { disableSticky: true, children: group }, group)
321
- );
322
- }
323
- opts.forEach((opt) => {
324
- const isSelected = multiple ? value == null ? void 0 : value.includes(opt.value) : value === opt.value;
325
- items.push(
326
- /* @__PURE__ */ jsxRuntime.jsxs(material.MenuItem, { value: opt.value, disabled: opt.disabled, selected: isSelected, children: [
327
- /* @__PURE__ */ jsxRuntime.jsx(material.ListItemIcon, { sx: { minWidth: 32 }, children: isSelected && /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { sx: { color: "green" } }) }),
328
- customRender ? customRender(opt) : opt.label
329
- ] }, opt.value)
330
- );
331
- });
332
- });
333
- }
334
- return items;
335
- }, [groupedOptions, customRender, filterable, isAsync, search, loading, loadingMessage, noOptionsMessage, multiple, value]);
336
- const showLabel = label && !placeholder;
337
- const handleChangeInternal = (event, rhfOnChange) => {
338
- const newValue = event.target.value;
339
- if (isRHFMode) {
340
- rhfOnChange == null ? void 0 : rhfOnChange(newValue);
341
- } else {
342
- onChange == null ? void 0 : onChange(newValue);
343
- }
344
- };
345
- const isRHFModeRender = "control" in rest && rest.control !== void 0;
346
- const renderSelect = (selectValue, selectOnChange, onBlur, inputRef) => /* @__PURE__ */ jsxRuntime.jsxs(material.FormControl, { fullWidth: true, size, error, disabled, children: [
347
- showLabel && /* @__PURE__ */ jsxRuntime.jsx(StyledLabel, { children: label }),
348
- /* @__PURE__ */ jsxRuntime.jsxs(
349
- material.Box,
350
- {
351
- sx: {
352
- width: "100%",
353
- display: "grid",
354
- marginBottom: "10px",
355
- marginTop: "10px"
356
- },
357
- children: [
358
- /* @__PURE__ */ jsxRuntime.jsx(
359
- StyledSelect,
360
- __spreadProps(__spreadValues({
361
- label,
362
- value: selectValue != null ? selectValue : multiple ? [] : "",
363
- defaultValue,
364
- multiple,
365
- onChange: selectOnChange,
366
- onBlur,
367
- renderValue,
368
- displayEmpty: true,
369
- input: /* @__PURE__ */ jsxRuntime.jsx(StyledOutlinedInput, { label }),
370
- disabled,
371
- MenuProps: {
372
- PaperProps: {
373
- style: {
374
- maxHeight,
375
- maxWidth
376
- }
377
- }
378
- },
379
- inputRef
380
- }, rest), {
381
- children: menuItems
382
- })
383
- ),
384
- helperText && /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "caption", color: "error", sx: { mt: 1 }, children: helperText })
385
- ]
386
- }
387
- )
388
- ] });
389
- if (isRHFModeRender) {
390
- const rhfProps = rest;
391
- return /* @__PURE__ */ jsxRuntime.jsx(
392
- reactHookForm.Controller,
393
- {
394
- name: rhfProps.name,
395
- control: rhfProps.control,
396
- rules: rhfProps.validation,
397
- render: ({ field, fieldState: { error: error2 } }) => renderSelect(
398
- field.value,
399
- (e) => handleChangeInternal(e, field.onChange),
400
- field.onBlur,
401
- field.ref
402
- )
403
- }
404
- );
405
- } else {
406
- return renderSelect(value, (e) => handleChangeInternal(e));
407
- }
408
- }
409
- exports.Option = Option;
410
- exports.Select = Select;
411
- //# sourceMappingURL=Select-BO2N56sm.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select-BO2N56sm.cjs","sources":["../src/components/Select/Select.tsx"],"sourcesContent":["import React, { ReactElement, useMemo, useState, Children, isValidElement, useEffect, useRef } from 'react';\nimport {\n FormControl,\n InputLabel,\n MenuItem,\n Select as MuiSelect,\n Chip,\n Avatar,\n Box,\n Typography,\n OutlinedInput,\n TextField,\n ListSubheader,\n CircularProgress,\n ListItemIcon,\n SelectChangeEvent,\n} from '@mui/material';\nimport { styled } from '@mui/system';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { Controller, Control, RegisterOptions } from 'react-hook-form';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n img?: string;\n disabled?: boolean;\n group?: string;\n [key: string]: any;\n}\n\ntype RenderOptionItem = (item: SelectOption) => React.ReactNode;\ntype RenderChipLabel = (item: SelectOption) => React.ReactNode;\n\n// --- Definición de Props con Union Type ---\n\n// Props comunes para ambos modos\ninterface BaseSelectProps<TValue extends SelectOption['value'] = SelectOption['value']> {\n label?: string;\n options?: SelectOption[];\n defaultValue?: TValue | TValue[];\n size?: 'small' | 'medium';\n multiple?: boolean;\n filterable?: boolean;\n placeholder?: string;\n children?: ReactElement<{ children: RenderOptionItem }>;\n maxHeight?: number | string;\n maxWidth?: number | string;\n maxChipsToShow?: number;\n renderChipLabel?: RenderChipLabel;\n chipVariant?: 'outlined' | 'filled';\n loadOptions?: (inputValue: string) => Promise<SelectOption[]>;\n loadingMessage?: React.ReactNode;\n noOptionsMessage?: React.ReactNode;\n debounceTimeout?: number;\n disabled?: boolean;\n error?: boolean;\n helperText?: string;\n}\n\n// Props para el modo React Hook Form\ninterface RHFSelectProps<TValue extends SelectOption['value'] = SelectOption['value']> extends BaseSelectProps<TValue> {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: TValue | TValue[];\n onChange?: (val: TValue | TValue[]) => void;\n}\n\n// Props para el modo controlado estándar\ninterface StandardSelectProps<TValue extends SelectOption['value'] = SelectOption['value']> extends BaseSelectProps<TValue> {\n name?: string;\n control?: never;\n validation?: never;\n value: TValue | TValue[];\n onChange: (val: TValue | TValue[]) => void;\n}\n\nexport type SelectProps<TValue extends SelectOption['value'] = SelectOption['value']> = RHFSelectProps<TValue> | StandardSelectProps<TValue>;\n\nexport interface OptionProps {\n children: RenderOptionItem;\n}\n\nexport function Option(_props: OptionProps) {\n return null;\n}\nOption.displayName = 'Option';\n\nconst StyledSelect = styled(MuiSelect)(({ theme }) => ({\n '& .MuiInputBase-root': {\n maxHeight: '4px',\n padding: '8px 10px',\n borderRadius: '10px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n },\n '& .MuiSelect-select': {\n padding: '0 !important',\n height: '28px !important',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '8px'\n },\n '& .MuiOutlinedInput-notchedOutline': {\n marginBottom: '-4px !important',\n borderRadius: '10px',\n },\n '& .MuiSelect-icon': {\n top: '50%',\n transform: 'translateY(-50%)',\n },\n '& .MuiOutlinedInput-notchedOutline > legend':{\n display: 'none',\n },\n}));\n\nconst StyledLabel = styled(InputLabel)(({theme}) =>({\n '&.MuiInputLabel-root': {\n top: '50%',\n transform: 'translate(14px, -50%)',\n },\n '&.MuiInputLabel-shrink': {\n transform: 'translate(1px, -200%) scale(0.75)',\n fontSize: '16px',\n '> legend': {\n display: 'none',\n }\n },\n '&.MuiInputLabel-animated': {\n '&.MuiInputLabel-shrink': {\n display: 'block'\n }\n }\n}));\n\nconst StyledOutlinedInput = styled(OutlinedInput)(({ theme }) => ({\n '& .MuiInputBase-root': {\n maxHeight: '34px',\n padding: '8px 10px',\n borderRadius: '10px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n ' & > .MuiAvatar-img': {\n width: '14px',\n height: '14px',\n }\n },\n '& .MuiInputBase-input': {\n padding: '0 !important',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: '0.7px solid',\n borderColor: '#e0e0e0',\n },\n}));\n\nexport function Select<TValue extends SelectOption['value'] = SelectOption['value']>(props: SelectProps<TValue>) {\n const {\n label,\n options = [],\n value,\n onChange,\n defaultValue,\n size = 'medium',\n multiple = false,\n filterable = false,\n placeholder,\n children,\n maxHeight = 300,\n maxWidth,\n maxChipsToShow = 3,\n renderChipLabel,\n chipVariant = 'outlined',\n loadOptions,\n loadingMessage = 'Cargando opciones...',\n noOptionsMessage = 'No hay opciones',\n debounceTimeout = 300,\n disabled = false,\n error = false,\n helperText,\n ...rest\n } = props;\n\n const isRHFMode = 'control' in rest && rest.control !== undefined;\n\n const customRender: RenderOptionItem | null = useMemo(() => {\n if (React.Children.count(children) === 1) {\n const child = React.Children.only(children);\n if (isValidElement(child) && (child.type as any)?.displayName === 'Option') {\n return (child.props as OptionProps).children;\n }\n }\n return null;\n }, [children]);\n\n const [search, setSearch] = useState('');\n const [asyncOptions, setAsyncOptions] = useState<SelectOption[]>([]);\n const [loading, setLoading] = useState(false);\n const debounceTimerRef = useRef<number | null>(null);\n\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const isAsync = typeof loadOptions === 'function';\n const currentOptions = isAsync ? asyncOptions : options;\n\n useEffect(() => {\n if (isAsync) {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n\n if (search) {\n setLoading(true);\n debounceTimerRef.current = window.setTimeout(() => {\n loadOptions(search)\n .then(loadedOpts => {\n setAsyncOptions(loadedOpts);\n })\n .finally(() => {\n setLoading(false);\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n });\n }, debounceTimeout);\n } else {\n setAsyncOptions([]);\n setLoading(false);\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n }\n }, [search, isAsync, loadOptions, debounceTimeout]);\n\n const filteredOptions = useMemo(() => {\n if (isAsync) {\n return currentOptions;\n }\n if (!filterable || !search) return currentOptions;\n return currentOptions.filter(opt =>\n opt.label.toLowerCase().includes(search.toLowerCase())\n );\n }, [search, filterable, currentOptions, isAsync]);\n\n const groupedOptions = useMemo(() => {\n const groups: Record<string, SelectOption[]> = {};\n filteredOptions.forEach(opt => {\n const group = opt.group || '__default';\n if (!groups[group]) groups[group] = [];\n groups[group].push(opt);\n });\n return groups;\n }, [filteredOptions]);\n\n const renderValue = (selected: any) => {\n if (!selected || (Array.isArray(selected) && selected.length === 0)) {\n return <Typography sx={{ color: 'text.disabled' }}>{placeholder || ''}</Typography>;\n }\n\n if (!multiple) {\n const item = currentOptions.find((opt) => opt.value === selected);\n return renderChipLabel && item ? renderChipLabel(item) : (item?.label ?? String(selected));\n }\n\n const selectedValuesArray = selected as TValue[];\n const displayedChips = selectedValuesArray.slice(0, maxChipsToShow);\n const hiddenChipsCount = selectedValuesArray.length - maxChipsToShow;\n\n return (\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n {displayedChips.map((val) => {\n const item = currentOptions.find((o) => o.value === val);\n if (!item) return null;\n\n const handleDelete = (chipValue: TValue) => {\n const newSelected = (value as TValue[]).filter(v => v !== chipValue);\n (onChange as (val: TValue | TValue[]) => void)?.(newSelected);\n };\n\n return (\n <Chip\n variant={chipVariant}\n color=\"primary\"\n key={val}\n label={renderChipLabel ? renderChipLabel(item) : item.label}\n avatar={item.img ?\n <Avatar\n sx={\n {\n '& > .MuiAvatar-root, .MuiChip-avatar': {\n backgroundColor: 'red',\n }\n }\n }\n src={item.img}\n /> : undefined}\n onDelete={() => handleDelete(val)}\n deleteIcon={<ClearIcon sx={{ fontSize: '12px !important' }} />}\n sx={\n {\n height: '27px',\n marginTop: '1px',\n }\n }\n />\n );\n })}\n {hiddenChipsCount > 0 && (\n <Chip\n sx={{\n height: '27px',\n marginTop: '0px',\n }}\n label={`+${hiddenChipsCount} más`} variant={chipVariant} />\n )}\n </Box>\n );\n };\n\n const menuItems = useMemo(() => {\n const items: React.ReactNode[] = [];\n\n if (filterable || isAsync) {\n items.push(\n <ListSubheader key=\"search-header\" sx={{ px: 2, pt: 1, pb: 1, backgroundColor: 'background.paper', zIndex: 1, position: 'sticky', top: 0 }}>\n <TextField\n inputRef={searchInputRef}\n placeholder=\"Buscar...\"\n variant=\"standard\"\n size=\"small\"\n fullWidth\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n inputProps={{ autoFocus: true }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n />\n </ListSubheader>\n );\n }\n\n if (loading) {\n items.push(\n <MenuItem key=\"loading-message\" disabled>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <CircularProgress size={20} />\n <Typography>{loadingMessage}</Typography>\n </Box>\n </MenuItem>\n );\n } else if (Object.keys(groupedOptions).length === 0 || (Object.keys(groupedOptions).length === 1 && groupedOptions['__default'] && groupedOptions['__default'].length === 0)) {\n items.push(\n <MenuItem key=\"no-options-message\" disabled>\n <Typography>{noOptionsMessage}</Typography>\n </MenuItem>\n );\n } else {\n Object.entries(groupedOptions).forEach(([group, opts]) => {\n if (group !== '__default') {\n items.push(\n <ListSubheader key={group} disableSticky>{group}</ListSubheader>\n );\n }\n opts.forEach((opt) => {\n const isSelected = multiple\n ? (value as TValue[] | undefined)?.includes(opt.value as TValue)\n : value === opt.value;\n\n items.push(\n <MenuItem key={opt.value} value={opt.value} disabled={opt.disabled} selected={isSelected}>\n <ListItemIcon sx={{ minWidth: 32 }}>\n {isSelected && (\n <CheckIcon sx={{ color: 'green' }} />\n )}\n </ListItemIcon>\n {customRender ? customRender(opt) : opt.label}\n </MenuItem>\n );\n });\n });\n }\n return items;\n }, [groupedOptions, customRender, filterable, isAsync, search, loading, loadingMessage, noOptionsMessage, multiple, value]);\n\n const showLabel = label && !placeholder;\n\n // Lógica para manejar el cambio de valor\n const handleChangeInternal = (event: SelectChangeEvent<any>, rhfOnChange?: (...event: any[]) => void) => {\n const newValue = event.target.value;\n if (isRHFMode) {\n rhfOnChange?.(newValue);\n } else {\n (onChange as (val: TValue | TValue[]) => void)?.(newValue);\n }\n };\n\n // Renderizado condicional basado en el modo\n const isRHFModeRender = 'control' in rest && rest.control !== undefined;\n\n const renderSelect = (selectValue: any, selectOnChange: any, onBlur?: any, inputRef?: any) => (\n <FormControl fullWidth size={size} error={error} disabled={disabled}>\n {showLabel && <StyledLabel>{label}</StyledLabel>}\n <Box\n sx={{\n width: '100%',\n display: 'grid',\n marginBottom: '10px',\n marginTop: '10px'\n }}>\n <StyledSelect\n label={label}\n value={selectValue ?? (multiple ? [] : '')}\n defaultValue={defaultValue}\n multiple={multiple}\n onChange={selectOnChange}\n onBlur={onBlur}\n renderValue={renderValue}\n displayEmpty\n input={<StyledOutlinedInput label={label} />}\n disabled={disabled}\n MenuProps={{\n PaperProps: {\n style: {\n maxHeight: maxHeight,\n maxWidth: maxWidth,\n },\n },\n }}\n inputRef={inputRef}\n {...rest}\n >\n {menuItems}\n </StyledSelect>\n {helperText && <Typography variant=\"caption\" color=\"error\" sx={{ mt: 1 }}>{helperText}</Typography>}\n </Box>\n </FormControl>\n );\n\n if (isRHFModeRender) {\n const rhfProps = rest as RHFSelectProps<TValue>;\n return (\n <Controller\n name={rhfProps.name}\n control={rhfProps.control}\n rules={rhfProps.validation}\n render={({ field, fieldState: { error } }) => (\n renderSelect(\n field.value,\n (e: SelectChangeEvent<any>) => handleChangeInternal(e, field.onChange),\n field.onBlur,\n field.ref\n )\n )}\n />\n );\n } else {\n return renderSelect(value, (e: SelectChangeEvent<any>) => handleChangeInternal(e));\n }\n}\n\nexport default Select;"],"names":["styled","MuiSelect","InputLabel","OutlinedInput","useMemo","isValidElement","_a","useState","useRef","useEffect","jsx","Typography","jsxs","Box","Chip","Avatar","ListSubheader","TextField","MenuItem","CircularProgress","ListItemIcon","FormControl","Controller","error"],"mappings":"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"}