@jigowatts/jigowatts-ui 1.2.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/assets/index8.css +1 -1
  2. package/dist/components/Button/index.cjs.js.map +1 -1
  3. package/dist/components/Button/index.es.js.map +1 -1
  4. package/dist/components/Button/index.test.cjs.js +1 -1
  5. package/dist/components/Button/index.test.cjs.js.map +1 -1
  6. package/dist/components/Button/index.test.es.js +1 -1
  7. package/dist/components/Button/index.test.es.js.map +1 -1
  8. package/dist/components/Card/index.cjs.js.map +1 -1
  9. package/dist/components/Card/index.es.js.map +1 -1
  10. package/dist/components/Card/index.test.cjs.js +1 -1
  11. package/dist/components/Card/index.test.cjs.js.map +1 -1
  12. package/dist/components/Card/index.test.es.js +1 -1
  13. package/dist/components/Card/index.test.es.js.map +1 -1
  14. package/dist/components/CardWithTitle/index.cjs.js +1 -1
  15. package/dist/components/CardWithTitle/index.cjs.js.map +1 -1
  16. package/dist/components/CardWithTitle/index.d.ts +6 -0
  17. package/dist/components/CardWithTitle/index.es.js +20 -13
  18. package/dist/components/CardWithTitle/index.es.js.map +1 -1
  19. package/dist/components/CardWithTitle/index.test.cjs.js +1 -1
  20. package/dist/components/CardWithTitle/index.test.cjs.js.map +1 -1
  21. package/dist/components/CardWithTitle/index.test.es.js +2 -2
  22. package/dist/components/CardWithTitle/index.test.es.js.map +1 -1
  23. package/dist/components/CustomLink/index.cjs.js.map +1 -1
  24. package/dist/components/CustomLink/index.es.js.map +1 -1
  25. package/dist/components/CustomLink/index.test.cjs.js +1 -1
  26. package/dist/components/CustomLink/index.test.cjs.js.map +1 -1
  27. package/dist/components/CustomLink/index.test.es.js +2 -2
  28. package/dist/components/CustomLink/index.test.es.js.map +1 -1
  29. package/dist/components/DataTable/index.cjs.js.map +1 -1
  30. package/dist/components/DataTable/index.es.js.map +1 -1
  31. package/dist/components/DataTable/index.test.cjs.js +1 -1
  32. package/dist/components/DataTable/index.test.cjs.js.map +1 -1
  33. package/dist/components/DataTable/index.test.es.js +3 -3
  34. package/dist/components/DataTable/index.test.es.js.map +1 -1
  35. package/dist/components/DatePickerController/index.cjs.js.map +1 -1
  36. package/dist/components/DatePickerController/index.d.ts +1 -0
  37. package/dist/components/DatePickerController/index.es.js.map +1 -1
  38. package/dist/components/DatePickerController/index.test.cjs.js +1 -1
  39. package/dist/components/DatePickerController/index.test.cjs.js.map +1 -1
  40. package/dist/components/DatePickerController/index.test.es.js +1 -1
  41. package/dist/components/DatePickerController/index.test.es.js.map +1 -1
  42. package/dist/components/ErrorMessage/index.cjs.js.map +1 -1
  43. package/dist/components/ErrorMessage/index.es.js.map +1 -1
  44. package/dist/components/ErrorMessage/index.test.cjs.js +1 -1
  45. package/dist/components/ErrorMessage/index.test.cjs.js.map +1 -1
  46. package/dist/components/ErrorMessage/index.test.es.js +2 -2
  47. package/dist/components/ErrorMessage/index.test.es.js.map +1 -1
  48. package/dist/components/EvseStateLabel/index.cjs.js.map +1 -1
  49. package/dist/components/EvseStateLabel/index.es.js.map +1 -1
  50. package/dist/components/FlexButtons/index.cjs.js.map +1 -1
  51. package/dist/components/FlexButtons/index.es.js.map +1 -1
  52. package/dist/components/FlexButtons/index.test.cjs.js +1 -1
  53. package/dist/components/FlexButtons/index.test.cjs.js.map +1 -1
  54. package/dist/components/FlexButtons/index.test.es.js +2 -2
  55. package/dist/components/FlexButtons/index.test.es.js.map +1 -1
  56. package/dist/components/Form/index.cjs.js.map +1 -1
  57. package/dist/components/Form/index.es.js.map +1 -1
  58. package/dist/components/Form/index.test.cjs.js +1 -1
  59. package/dist/components/Form/index.test.cjs.js.map +1 -1
  60. package/dist/components/Form/index.test.es.js +2 -2
  61. package/dist/components/Form/index.test.es.js.map +1 -1
  62. package/dist/components/FormItem/index.cjs.js.map +1 -1
  63. package/dist/components/FormItem/index.es.js.map +1 -1
  64. package/dist/components/FormItem/index.test.cjs.js +1 -1
  65. package/dist/components/FormItem/index.test.cjs.js.map +1 -1
  66. package/dist/components/FormItem/index.test.es.js +2 -2
  67. package/dist/components/FormItem/index.test.es.js.map +1 -1
  68. package/dist/components/FormTitle/index.cjs.js.map +1 -1
  69. package/dist/components/FormTitle/index.es.js.map +1 -1
  70. package/dist/components/FormTitle/index.test.cjs.js +1 -1
  71. package/dist/components/FormTitle/index.test.cjs.js.map +1 -1
  72. package/dist/components/FormTitle/index.test.es.js +2 -2
  73. package/dist/components/FormTitle/index.test.es.js.map +1 -1
  74. package/dist/components/HStack/index.cjs.js.map +1 -1
  75. package/dist/components/HStack/index.es.js.map +1 -1
  76. package/dist/components/HStack/index.test.cjs.js +1 -1
  77. package/dist/components/HStack/index.test.cjs.js.map +1 -1
  78. package/dist/components/HStack/index.test.es.js +2 -2
  79. package/dist/components/HStack/index.test.es.js.map +1 -1
  80. package/dist/components/HtmlRenderer/index.cjs.js +1 -1
  81. package/dist/components/HtmlRenderer/index.es.js +1 -1
  82. package/dist/components/HtmlRenderer/index.test.cjs.js +1 -1
  83. package/dist/components/HtmlRenderer/index.test.cjs.js.map +1 -1
  84. package/dist/components/HtmlRenderer/index.test.es.js +2 -2
  85. package/dist/components/HtmlRenderer/index.test.es.js.map +1 -1
  86. package/dist/components/Input/index.cjs.js.map +1 -1
  87. package/dist/components/Input/index.es.js.map +1 -1
  88. package/dist/components/Input/index.test.cjs.js +1 -1
  89. package/dist/components/Input/index.test.cjs.js.map +1 -1
  90. package/dist/components/Input/index.test.es.js +1 -1
  91. package/dist/components/Input/index.test.es.js.map +1 -1
  92. package/dist/components/InputController/index.cjs.js.map +1 -1
  93. package/dist/components/InputController/index.es.js.map +1 -1
  94. package/dist/components/InputController/index.test.cjs.js +1 -1
  95. package/dist/components/InputController/index.test.cjs.js.map +1 -1
  96. package/dist/components/InputController/index.test.es.js +1 -1
  97. package/dist/components/InputController/index.test.es.js.map +1 -1
  98. package/dist/components/InputGroup/index.cjs.js.map +1 -1
  99. package/dist/components/InputGroup/index.es.js.map +1 -1
  100. package/dist/components/InputGroup/index.test.cjs.js +1 -1
  101. package/dist/components/InputGroup/index.test.cjs.js.map +1 -1
  102. package/dist/components/InputGroup/index.test.es.js +2 -2
  103. package/dist/components/InputGroup/index.test.es.js.map +1 -1
  104. package/dist/components/Label/index.cjs.js.map +1 -1
  105. package/dist/components/Label/index.es.js.map +1 -1
  106. package/dist/components/Label/index.test.cjs.js +1 -1
  107. package/dist/components/Label/index.test.cjs.js.map +1 -1
  108. package/dist/components/Label/index.test.es.js +2 -2
  109. package/dist/components/Label/index.test.es.js.map +1 -1
  110. package/dist/components/LabeledContent/index.cjs.js.map +1 -1
  111. package/dist/components/LabeledContent/index.es.js.map +1 -1
  112. package/dist/components/LabeledContent/index.test.cjs.js +1 -1
  113. package/dist/components/LabeledContent/index.test.cjs.js.map +1 -1
  114. package/dist/components/LabeledContent/index.test.es.js +1 -1
  115. package/dist/components/LabeledContent/index.test.es.js.map +1 -1
  116. package/dist/components/LoadingOverlay/index.cjs.js.map +1 -1
  117. package/dist/components/LoadingOverlay/index.es.js.map +1 -1
  118. package/dist/components/LoadingOverlay/index.test.cjs.js +1 -1
  119. package/dist/components/LoadingOverlay/index.test.cjs.js.map +1 -1
  120. package/dist/components/LoadingOverlay/index.test.es.js +2 -2
  121. package/dist/components/LoadingOverlay/index.test.es.js.map +1 -1
  122. package/dist/components/Map/index.cjs.js +2 -2
  123. package/dist/components/Map/index.cjs.js.map +1 -1
  124. package/dist/components/Map/index.es.js +709 -716
  125. package/dist/components/Map/index.es.js.map +1 -1
  126. package/dist/components/MaxWidthContainer/index.cjs.js.map +1 -1
  127. package/dist/components/MaxWidthContainer/index.es.js.map +1 -1
  128. package/dist/components/MaxWidthContainer/index.test.cjs.js +1 -1
  129. package/dist/components/MaxWidthContainer/index.test.cjs.js.map +1 -1
  130. package/dist/components/MaxWidthContainer/index.test.es.js +2 -2
  131. package/dist/components/MaxWidthContainer/index.test.es.js.map +1 -1
  132. package/dist/components/NumericFieldController/index.cjs.js.map +1 -1
  133. package/dist/components/NumericFieldController/index.d.ts +1 -0
  134. package/dist/components/NumericFieldController/index.es.js.map +1 -1
  135. package/dist/components/NumericFieldController/index.test.cjs.js +1 -1
  136. package/dist/components/NumericFieldController/index.test.cjs.js.map +1 -1
  137. package/dist/components/NumericFieldController/index.test.es.js +1 -1
  138. package/dist/components/NumericFieldController/index.test.es.js.map +1 -1
  139. package/dist/components/OfflineLabel/index.cjs.js.map +1 -1
  140. package/dist/components/OfflineLabel/index.es.js.map +1 -1
  141. package/dist/components/PageSizeSelector/index.cjs.js.map +1 -1
  142. package/dist/components/PageSizeSelector/index.es.js.map +1 -1
  143. package/dist/components/Pagination/index.cjs.js +2 -2
  144. package/dist/components/Pagination/index.cjs.js.map +1 -1
  145. package/dist/components/Pagination/index.es.js +17 -17
  146. package/dist/components/Pagination/index.es.js.map +1 -1
  147. package/dist/components/Pagination/index.test.cjs.js +1 -1
  148. package/dist/components/Pagination/index.test.cjs.js.map +1 -1
  149. package/dist/components/Pagination/index.test.es.js +1 -1
  150. package/dist/components/Pagination/index.test.es.js.map +1 -1
  151. package/dist/components/PasswordInputController/index.cjs.js.map +1 -1
  152. package/dist/components/PasswordInputController/index.es.js.map +1 -1
  153. package/dist/components/PasswordInputController/index.test.cjs.js +1 -1
  154. package/dist/components/PasswordInputController/index.test.cjs.js.map +1 -1
  155. package/dist/components/PasswordInputController/index.test.es.js +1 -1
  156. package/dist/components/PasswordInputController/index.test.es.js.map +1 -1
  157. package/dist/components/RadioButton/index.test.cjs.js +1 -1
  158. package/dist/components/RadioButton/index.test.cjs.js.map +1 -1
  159. package/dist/components/RadioButton/index.test.es.js +2 -2
  160. package/dist/components/RadioButton/index.test.es.js.map +1 -1
  161. package/dist/components/RadioGroupController/index.cjs.js.map +1 -1
  162. package/dist/components/RadioGroupController/index.es.js.map +1 -1
  163. package/dist/components/RadioGroupController/index.test.cjs.js +1 -1
  164. package/dist/components/RadioGroupController/index.test.cjs.js.map +1 -1
  165. package/dist/components/RadioGroupController/index.test.es.js +1 -1
  166. package/dist/components/RadioGroupController/index.test.es.js.map +1 -1
  167. package/dist/components/RangeDatePicker/index.cjs.js.map +1 -1
  168. package/dist/components/RangeDatePicker/index.es.js.map +1 -1
  169. package/dist/components/RangeDatePickerController/index.cjs.js.map +1 -1
  170. package/dist/components/RangeDatePickerController/index.es.js.map +1 -1
  171. package/dist/components/RangeDatePickerController/index.test.cjs.js +1 -1
  172. package/dist/components/RangeDatePickerController/index.test.cjs.js.map +1 -1
  173. package/dist/components/RangeDatePickerController/index.test.es.js +1 -1
  174. package/dist/components/RangeDatePickerController/index.test.es.js.map +1 -1
  175. package/dist/components/ReportCard/index.cjs.js.map +1 -1
  176. package/dist/components/ReportCard/index.es.js.map +1 -1
  177. package/dist/components/ReportCard/index.test.cjs.js +1 -1
  178. package/dist/components/ReportCard/index.test.cjs.js.map +1 -1
  179. package/dist/components/ReportCard/index.test.es.js +1 -1
  180. package/dist/components/ReportCard/index.test.es.js.map +1 -1
  181. package/dist/components/ReportChart/index.cjs.js +1 -1
  182. package/dist/components/ReportChart/index.cjs.js.map +1 -1
  183. package/dist/components/ReportChart/index.es.js +26 -33
  184. package/dist/components/ReportChart/index.es.js.map +1 -1
  185. package/dist/components/ReportChartMulti/index.cjs.js.map +1 -1
  186. package/dist/components/ReportChartMulti/index.es.js.map +1 -1
  187. package/dist/components/ReportChartMulti/index.test.cjs.js +1 -1
  188. package/dist/components/ReportChartMulti/index.test.cjs.js.map +1 -1
  189. package/dist/components/ReportChartMulti/index.test.es.js +1 -1
  190. package/dist/components/ReportChartMulti/index.test.es.js.map +1 -1
  191. package/dist/components/ScrollableDialog/index.cjs.js.map +1 -1
  192. package/dist/components/ScrollableDialog/index.es.js.map +1 -1
  193. package/dist/components/ScrollableDialog/index.test.cjs.js +1 -1
  194. package/dist/components/ScrollableDialog/index.test.cjs.js.map +1 -1
  195. package/dist/components/ScrollableDialog/index.test.es.js +1 -1
  196. package/dist/components/ScrollableDialog/index.test.es.js.map +1 -1
  197. package/dist/components/SearchForm/index.cjs.js.map +1 -1
  198. package/dist/components/SearchForm/index.es.js.map +1 -1
  199. package/dist/components/SelectBox/index.test.cjs.js +1 -1
  200. package/dist/components/SelectBox/index.test.cjs.js.map +1 -1
  201. package/dist/components/SelectBox/index.test.es.js +1 -1
  202. package/dist/components/SelectBox/index.test.es.js.map +1 -1
  203. package/dist/components/SelectBoxController/index.cjs.js.map +1 -1
  204. package/dist/components/SelectBoxController/index.es.js.map +1 -1
  205. package/dist/components/SelectBoxController/index.test.cjs.js +1 -1
  206. package/dist/components/SelectBoxController/index.test.cjs.js.map +1 -1
  207. package/dist/components/SelectBoxController/index.test.es.js +1 -1
  208. package/dist/components/SelectBoxController/index.test.es.js.map +1 -1
  209. package/dist/components/SideMenu/index.cjs.js.map +1 -1
  210. package/dist/components/SideMenu/index.es.js.map +1 -1
  211. package/dist/components/SideMenu/index.test.cjs.js +1 -1
  212. package/dist/components/SideMenu/index.test.cjs.js.map +1 -1
  213. package/dist/components/SideMenu/index.test.es.js +3 -3
  214. package/dist/components/SideMenu/index.test.es.js.map +1 -1
  215. package/dist/components/SpinnerButton/index.cjs.js.map +1 -1
  216. package/dist/components/SpinnerButton/index.es.js.map +1 -1
  217. package/dist/components/SpinnerButton/index.test.cjs.js +1 -1
  218. package/dist/components/SpinnerButton/index.test.cjs.js.map +1 -1
  219. package/dist/components/SpinnerButton/index.test.es.js +2 -2
  220. package/dist/components/SpinnerButton/index.test.es.js.map +1 -1
  221. package/dist/components/SubMenu/index.cjs.js.map +1 -1
  222. package/dist/components/SubMenu/index.es.js.map +1 -1
  223. package/dist/components/SubMenu/index.test.cjs.js +1 -1
  224. package/dist/components/SubMenu/index.test.cjs.js.map +1 -1
  225. package/dist/components/SubMenu/index.test.es.js +1 -1
  226. package/dist/components/SubMenu/index.test.es.js.map +1 -1
  227. package/dist/components/Tabs/index.cjs.js.map +1 -1
  228. package/dist/components/Tabs/index.d.ts +1 -1
  229. package/dist/components/Tabs/index.es.js.map +1 -1
  230. package/dist/components/Tabs/index.test.cjs.js +1 -1
  231. package/dist/components/Tabs/index.test.cjs.js.map +1 -1
  232. package/dist/components/Tabs/index.test.es.js +2 -2
  233. package/dist/components/Tabs/index.test.es.js.map +1 -1
  234. package/dist/components/Textarea/index.cjs.js.map +1 -1
  235. package/dist/components/Textarea/index.es.js.map +1 -1
  236. package/dist/components/Textarea/index.test.cjs.js +1 -1
  237. package/dist/components/Textarea/index.test.cjs.js.map +1 -1
  238. package/dist/components/Textarea/index.test.es.js +2 -2
  239. package/dist/components/Textarea/index.test.es.js.map +1 -1
  240. package/dist/components/Title/index.cjs.js +1 -1
  241. package/dist/components/Title/index.cjs.js.map +1 -1
  242. package/dist/components/Title/index.d.ts +2 -0
  243. package/dist/components/Title/index.es.js +9 -9
  244. package/dist/components/Title/index.es.js.map +1 -1
  245. package/dist/components/Title/index.test.cjs.js +1 -1
  246. package/dist/components/Title/index.test.cjs.js.map +1 -1
  247. package/dist/components/Title/index.test.es.js +2 -2
  248. package/dist/components/Title/index.test.es.js.map +1 -1
  249. package/dist/components/ToggleButton/index.cjs.js.map +1 -1
  250. package/dist/components/ToggleButton/index.es.js.map +1 -1
  251. package/dist/components/ToggleButton/index.test.cjs.js +1 -1
  252. package/dist/components/ToggleButton/index.test.cjs.js.map +1 -1
  253. package/dist/components/ToggleButton/index.test.es.js +1 -1
  254. package/dist/components/ToggleButton/index.test.es.js.map +1 -1
  255. package/dist/components/VStack/index.cjs.js.map +1 -1
  256. package/dist/components/VStack/index.es.js.map +1 -1
  257. package/dist/components/VStack/index.test.cjs.js +1 -1
  258. package/dist/components/VStack/index.test.cjs.js.map +1 -1
  259. package/dist/components/VStack/index.test.es.js +2 -2
  260. package/dist/components/VStack/index.test.es.js.map +1 -1
  261. package/dist/{index-D5b3AasF.js → index--uHewOkd.js} +2 -2
  262. package/dist/{index-D5b3AasF.js.map → index--uHewOkd.js.map} +1 -1
  263. package/dist/index-9p9q0wxE.cjs +39 -0
  264. package/dist/index-9p9q0wxE.cjs.map +1 -0
  265. package/dist/index-B663CLQ0.cjs.map +1 -1
  266. package/dist/{index-C50NsnJO.cjs → index-Bbj4TMfJ.cjs} +2 -2
  267. package/dist/{index-C50NsnJO.cjs.map → index-Bbj4TMfJ.cjs.map} +1 -1
  268. package/dist/{index-ZP4xL6Dt.js → index-Bt_ypxrX.js} +7373 -6726
  269. package/dist/index-Bt_ypxrX.js.map +1 -0
  270. package/dist/index-C9Dbd7MM.cjs +4 -0
  271. package/dist/index-C9Dbd7MM.cjs.map +1 -0
  272. package/dist/index-CCbJ_2yU.cjs.map +1 -1
  273. package/dist/index-CSiE_l9r.js.map +1 -1
  274. package/dist/index-CaEC29Xt.cjs +96 -0
  275. package/dist/index-CaEC29Xt.cjs.map +1 -0
  276. package/dist/{index-DCSLk6pp.js → index-Cj9ZvtM1.js} +1890 -2721
  277. package/dist/index-Cj9ZvtM1.js.map +1 -0
  278. package/dist/index-pr0ncuNy.js.map +1 -1
  279. package/dist/{index-BqN32Ptm.js → index-zix1zlkq.js} +628 -602
  280. package/dist/index-zix1zlkq.js.map +1 -0
  281. package/dist/index.cjs.js +1 -1
  282. package/dist/index.es.js +1 -1
  283. package/dist/{react.esm-CiMn0Rnx.cjs → react.esm-BcRJ42eI.cjs} +31 -31
  284. package/dist/react.esm-BcRJ42eI.cjs.map +1 -0
  285. package/dist/{react.esm-2FJSSo-S.js → react.esm-DVhZgPrH.js} +629 -608
  286. package/dist/react.esm-DVhZgPrH.js.map +1 -0
  287. package/package.json +21 -18
  288. package/dist/browser-BCVsA9bD.cjs +0 -2
  289. package/dist/browser-BCVsA9bD.cjs.map +0 -1
  290. package/dist/browser-BYxLWVDg.js +0 -654
  291. package/dist/browser-BYxLWVDg.js.map +0 -1
  292. package/dist/index-BHsZ5xlA.cjs +0 -96
  293. package/dist/index-BHsZ5xlA.cjs.map +0 -1
  294. package/dist/index-BoNIpBs7.cjs +0 -4
  295. package/dist/index-BoNIpBs7.cjs.map +0 -1
  296. package/dist/index-BpMSrIOq.cjs +0 -43
  297. package/dist/index-BpMSrIOq.cjs.map +0 -1
  298. package/dist/index-BqN32Ptm.js.map +0 -1
  299. package/dist/index-DCSLk6pp.js.map +0 -1
  300. package/dist/index-ZP4xL6Dt.js.map +0 -1
  301. package/dist/react.esm-2FJSSo-S.js.map +0 -1
  302. package/dist/react.esm-CiMn0Rnx.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/components/ReportChartMulti/index.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n CategoryScale,\n Chart as ChartJS,\n Tooltip as ChartJSTooltip,\n ChartOptions,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n TooltipItem,\n} from \"chart.js\";\n\nimport \"chartjs-adapter-date-fns\";\n\nimport { endOfDay, format, startOfDay } from \"date-fns\";\nimport { Line as LineChartJS } from \"react-chartjs-2\";\n\nimport { CardWithTitle } from \"../CardWithTitle\";\nimport styles from \"./index.module.scss\";\n\nexport type datasetType = {\n label: string;\n data: { date: string; value: number }[];\n borderColor: string;\n backgroundColor?: string;\n borderWidth?: number;\n fill?: boolean | number | string;\n stack?: string;\n skipEmptyData?: boolean;\n};\n\ntype Props = {\n datasets: datasetType[];\n xLabel: string;\n yLabel: string;\n dataIntervalMin?: number;\n xType: \"day\" | \"week\" | \"month\" | \"year\";\n chartMargin?: ChartMargin;\n tooltipFormatter?: CustomToolTipFormatter;\n isLoading?: boolean;\n title: string; // Add title prop\n precision?: number; // Y軸の小数点以下の桁数を指定\n};\n\ntype ChartMargin = {\n top: number;\n right: number;\n bottom: number;\n left: number;\n};\n\ntype CustomToolTipFormatter = (value: unknown, label: string) => string[];\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Filler,\n LineController,\n Title,\n ChartJSTooltip,\n Legend,\n TimeScale, // TimeScaleを登録\n);\n\n// グラフで利用する標準色を定義\nexport const chartColors = {\n red: \"rgb(255, 99, 132)\",\n orange: \"rgb(255, 184, 76)\",\n yellow: \"rgb(255, 205, 86)\",\n green: \"rgb(102, 187, 106)\",\n blue: \"rgb(41, 182, 246)\",\n purple: \"rgb(153, 102, 255)\",\n grey: \"rgb(201, 203, 207)\",\n // 透過色(塗りつぶしに利用)\n redTransparent: \"rgba(255, 99, 132, 0.5)\",\n orangeTransparent: \"rgba(255, 184, 76, 0.5)\",\n yellowTransparent: \"rgba(255, 205, 86, 0.5)\",\n greenTransparent: \"rgba(102, 187, 106, 0.5)\",\n blueTransparent: \"rgba(41, 182, 246, 0.5)\",\n purpleTransparent: \"rgba(153, 102, 255, 0.5)\",\n greyTransparent: \"rgba(201, 203, 207, 0.5)\",\n};\n\nexport const ReportChartMulti = (props: Props) => {\n const {\n datasets,\n xLabel = \"\",\n yLabel = \"\",\n xType = \"day\",\n dataIntervalMin = 5,\n chartMargin = { top: 0, right: 20, bottom: 20, left: 10 },\n tooltipFormatter = (value: unknown, label: string) => [\n String(value),\n String(label),\n ],\n isLoading,\n title, // Destructure title from props\n precision,\n } = props;\n\n const chartRef = useRef(null);\n\n // stackにグループを追加している場合は、積み上げグラフとなる\n const isStacked = datasets.some((dataset) => dataset.stack !== undefined);\n\n // 時間の範囲を描画する基準として利用するダミーデータをdatasetsに追加\n // TODO:現状はxTypeがdayの場合のみ対応している\n if (xType === \"day\") {\n const startDate = format(\n startOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n const endDate = format(\n endOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n\n const rangeOfDate = [\n { date: startDate, value: 0 },\n { date: endDate, value: 0 },\n ];\n\n datasets.unshift({\n label: \"\",\n data: rangeOfDate,\n borderColor: \"rgba(0, 0, 0, 0)\", // 透明色\n });\n }\n\n const dayScaleOptions = {\n type: \"time\",\n time: {\n unit: \"minute\",\n displayFormats: {\n minute: \"HH:mm\",\n },\n tooltipFormat: \"HH:mm\",\n },\n title: {\n display: true,\n text: xLabel,\n },\n ticks: {\n source: \"auto\",\n autoSkip: true,\n maxTicksLimit: 24,\n callback: function (value: string | number): string {\n const dateValue =\n typeof value === \"string\" ? new Date(value) : new Date(value);\n const hours = dateValue.getHours();\n return `${hours}時`;\n },\n },\n };\n\n const otherScaleOptions = {\n title: {\n display: true,\n text: xLabel,\n },\n };\n\n const options: ChartOptions<\"line\"> = {\n interaction: {\n intersect: false,\n },\n responsive: true,\n aspectRatio: 2,\n maintainAspectRatio: false,\n animation: false,\n transitions: {\n resize: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n show: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n },\n layout: {\n padding: {\n left: chartMargin.left,\n right: chartMargin.right,\n top: chartMargin.top,\n bottom: chartMargin.bottom,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: \"top\" as const,\n },\n title: {\n display: false,\n },\n tooltip: {\n callbacks: {\n label: (context: TooltipItem<\"line\">) => {\n // 時間基準データはツールチップに表示させない\n if (context.dataset.label === \"\") {\n return \"\";\n }\n const label = context.dataset.label\n ? `${context.dataset.label}`\n : \"\";\n const ar = tooltipFormatter(context.parsed.y, label);\n const str = ar.reverse().join(\":\");\n return str;\n },\n },\n },\n },\n scales: {\n x: xType === \"day\" ? dayScaleOptions : otherScaleOptions, // 実際使うTypeが増えたらここを改修\n y: {\n stacked: isStacked,\n beginAtZero: true,\n title: {\n display: true,\n text: yLabel,\n },\n ticks: {\n precision: precision,\n },\n },\n },\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const skipped = (ctx: any, value: any): any =>\n ctx.p0.skip || ctx.p1.skip ? value : undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const down = (ctx: any, value: any): any =>\n ctx.p0.parsed.y > ctx.p1.parsed.y ? value : undefined;\n\n const fillGaps = (data: { date: string; value: number | null }[]) => {\n const filledData: { date: string; value: number | null }[] = [...data];\n\n if (data.length > 1) {\n const lastTime = new Date(data[data.length - 1].date).getTime();\n const secondLastTime = new Date(data[data.length - 2].date).getTime();\n const finalTimeDifference = (lastTime - secondLastTime) / (1000 * 60);\n\n // 最後のデータポイントが大きなギャップを持つ場合にNaNを挿入\n if (finalTimeDifference > dataIntervalMin) {\n filledData.splice(filledData.length - 1, 0, {\n date: new Date(secondLastTime + 1).toISOString(),\n value: NaN,\n });\n }\n }\n return filledData;\n };\n\n // データセットの整形\n const formattedDatasets = datasets.map((dataset) => {\n const dataWithGaps = dataset.skipEmptyData\n ? fillGaps(dataset.data)\n : dataset.data;\n return {\n label: dataset.label,\n data: dataWithGaps.map((item) => {\n const date = new Date(item.date);\n return { x: date, y: item.value };\n }),\n borderColor: dataset.borderColor,\n backgroundColor: dataset.backgroundColor || dataset.borderColor,\n tension: 0.4,\n borderWidth: dataset.borderWidth || undefined,\n fill: dataset.fill || false,\n stack: dataset.stack || undefined,\n pointRadius: 0,\n spanGaps: dataset.skipEmptyData ? true : false,\n segment: dataset.skipEmptyData\n ? {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderColor: (ctx: any) =>\n skipped(ctx, \"rgba(0,0,0,0.2)\") || down(ctx, dataset.borderColor),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderDash: (ctx: any) => skipped(ctx, [6, 6]),\n }\n : undefined,\n };\n });\n\n const chartJsData = {\n datasets: formattedDatasets,\n };\n\n const ChartData = () => {\n if (isLoading) {\n return <div className={styles.nodata}>loading...</div>;\n } else if (\n datasets.length === 0 ||\n (datasets.length === 1 && datasets[0].label === \"\")\n ) {\n return <div className={styles.nodata}>NO DATA</div>;\n } else {\n return (\n <LineChartJS ref={chartRef} options={options} data={chartJsData} />\n );\n }\n };\n\n return (\n <div className={styles.reportChart}>\n <CardWithTitle title={title} spacingFromTitle={0}>\n <Box className={styles.reportBox}>\n <div className={styles.chart}>\n <ChartData />\n </div>\n </Box>\n </CardWithTitle>\n </div>\n );\n};\n\nexport default ReportChartMulti;"],"names":["ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Filler","LineController","Title","ChartJSTooltip","Legend","TimeScale","chartColors","ReportChartMulti","props","datasets","xLabel","yLabel","xType","dataIntervalMin","chartMargin","tooltipFormatter","value","label","isLoading","title","precision","chartRef","useRef","isStacked","dataset","startDate","format","startOfDay","endDate","endOfDay","rangeOfDate","dayScaleOptions","otherScaleOptions","options","context","skipped","ctx","down","fillGaps","data","filledData","lastTime","secondLastTime","chartJsData","dataWithGaps","item","ChartData","jsx","styles","LineChartJS","CardWithTitle","Box"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/components/ReportChartMulti/index.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n CategoryScale,\n Chart as ChartJS,\n Tooltip as ChartJSTooltip,\n ChartOptions,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n TooltipItem,\n} from \"chart.js\";\n\nimport \"chartjs-adapter-date-fns\";\n\nimport { endOfDay, format, startOfDay } from \"date-fns\";\nimport { Line as LineChartJS } from \"react-chartjs-2\";\n\nimport { CardWithTitle } from \"../CardWithTitle\";\nimport styles from \"./index.module.scss\";\n\nexport type datasetType = {\n label: string;\n data: { date: string; value: number }[];\n borderColor: string;\n backgroundColor?: string;\n borderWidth?: number;\n fill?: boolean | number | string;\n stack?: string;\n skipEmptyData?: boolean;\n};\n\ntype Props = {\n datasets: datasetType[];\n xLabel: string;\n yLabel: string;\n dataIntervalMin?: number;\n xType: \"day\" | \"week\" | \"month\" | \"year\";\n chartMargin?: ChartMargin;\n tooltipFormatter?: CustomToolTipFormatter;\n isLoading?: boolean;\n title: string; // Add title prop\n precision?: number; // Y軸の小数点以下の桁数を指定\n};\n\ntype ChartMargin = {\n top: number;\n right: number;\n bottom: number;\n left: number;\n};\n\ntype CustomToolTipFormatter = (value: unknown, label: string) => string[];\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Filler,\n LineController,\n Title,\n ChartJSTooltip,\n Legend,\n TimeScale, // TimeScaleを登録\n);\n\n// グラフで利用する標準色を定義\nexport const chartColors = {\n red: \"rgb(255, 99, 132)\",\n orange: \"rgb(255, 184, 76)\",\n yellow: \"rgb(255, 205, 86)\",\n green: \"rgb(102, 187, 106)\",\n blue: \"rgb(41, 182, 246)\",\n purple: \"rgb(153, 102, 255)\",\n grey: \"rgb(201, 203, 207)\",\n // 透過色(塗りつぶしに利用)\n redTransparent: \"rgba(255, 99, 132, 0.5)\",\n orangeTransparent: \"rgba(255, 184, 76, 0.5)\",\n yellowTransparent: \"rgba(255, 205, 86, 0.5)\",\n greenTransparent: \"rgba(102, 187, 106, 0.5)\",\n blueTransparent: \"rgba(41, 182, 246, 0.5)\",\n purpleTransparent: \"rgba(153, 102, 255, 0.5)\",\n greyTransparent: \"rgba(201, 203, 207, 0.5)\",\n};\n\nexport const ReportChartMulti = (props: Props) => {\n const {\n datasets,\n xLabel = \"\",\n yLabel = \"\",\n xType = \"day\",\n dataIntervalMin = 5,\n chartMargin = { top: 0, right: 20, bottom: 20, left: 10 },\n tooltipFormatter = (value: unknown, label: string) => [\n String(value),\n String(label),\n ],\n isLoading,\n title, // Destructure title from props\n precision,\n } = props;\n\n const chartRef = useRef(null);\n\n // stackにグループを追加している場合は、積み上げグラフとなる\n const isStacked = datasets.some((dataset) => dataset.stack !== undefined);\n\n // 時間の範囲を描画する基準として利用するダミーデータをdatasetsに追加\n // TODO:現状はxTypeがdayの場合のみ対応している\n if (xType === \"day\") {\n const startDate = format(\n startOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n const endDate = format(\n endOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n\n const rangeOfDate = [\n { date: startDate, value: 0 },\n { date: endDate, value: 0 },\n ];\n\n datasets.unshift({\n label: \"\",\n data: rangeOfDate,\n borderColor: \"rgba(0, 0, 0, 0)\", // 透明色\n });\n }\n\n const dayScaleOptions = {\n type: \"time\",\n time: {\n unit: \"minute\",\n displayFormats: {\n minute: \"HH:mm\",\n },\n tooltipFormat: \"HH:mm\",\n },\n title: {\n display: true,\n text: xLabel,\n },\n ticks: {\n source: \"auto\",\n autoSkip: true,\n maxTicksLimit: 24,\n callback: function (value: string | number): string {\n const dateValue =\n typeof value === \"string\" ? new Date(value) : new Date(value);\n const hours = dateValue.getHours();\n return `${hours}時`;\n },\n },\n };\n\n const otherScaleOptions = {\n title: {\n display: true,\n text: xLabel,\n },\n };\n\n const options: ChartOptions<\"line\"> = {\n interaction: {\n intersect: false,\n },\n responsive: true,\n aspectRatio: 2,\n maintainAspectRatio: false,\n animation: false,\n transitions: {\n resize: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n show: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n },\n layout: {\n padding: {\n left: chartMargin.left,\n right: chartMargin.right,\n top: chartMargin.top,\n bottom: chartMargin.bottom,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: \"top\" as const,\n },\n title: {\n display: false,\n },\n tooltip: {\n callbacks: {\n label: (context: TooltipItem<\"line\">) => {\n // 時間基準データはツールチップに表示させない\n if (context.dataset.label === \"\") {\n return \"\";\n }\n const label = context.dataset.label\n ? `${context.dataset.label}`\n : \"\";\n const ar = tooltipFormatter(context.parsed.y, label);\n const str = ar.reverse().join(\":\");\n return str;\n },\n },\n },\n },\n scales: {\n x: xType === \"day\" ? dayScaleOptions : otherScaleOptions, // 実際使うTypeが増えたらここを改修\n y: {\n stacked: isStacked,\n beginAtZero: true,\n title: {\n display: true,\n text: yLabel,\n },\n ticks: {\n precision: precision,\n },\n },\n },\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const skipped = (ctx: any, value: any): any =>\n ctx.p0.skip || ctx.p1.skip ? value : undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const down = (ctx: any, value: any): any =>\n ctx.p0.parsed.y > ctx.p1.parsed.y ? value : undefined;\n\n const fillGaps = (data: { date: string; value: number | null }[]) => {\n const filledData: { date: string; value: number | null }[] = [...data];\n\n if (data.length > 1) {\n const lastTime = new Date(data[data.length - 1].date).getTime();\n const secondLastTime = new Date(data[data.length - 2].date).getTime();\n const finalTimeDifference = (lastTime - secondLastTime) / (1000 * 60);\n\n // 最後のデータポイントが大きなギャップを持つ場合にNaNを挿入\n if (finalTimeDifference > dataIntervalMin) {\n filledData.splice(filledData.length - 1, 0, {\n date: new Date(secondLastTime + 1).toISOString(),\n value: NaN,\n });\n }\n }\n return filledData;\n };\n\n // データセットの整形\n const formattedDatasets = datasets.map((dataset) => {\n const dataWithGaps = dataset.skipEmptyData\n ? fillGaps(dataset.data)\n : dataset.data;\n return {\n label: dataset.label,\n data: dataWithGaps.map((item) => {\n const date = new Date(item.date);\n return { x: date, y: item.value };\n }),\n borderColor: dataset.borderColor,\n backgroundColor: dataset.backgroundColor || dataset.borderColor,\n tension: 0.4,\n borderWidth: dataset.borderWidth || undefined,\n fill: dataset.fill || false,\n stack: dataset.stack || undefined,\n pointRadius: 0,\n spanGaps: dataset.skipEmptyData ? true : false,\n segment: dataset.skipEmptyData\n ? {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderColor: (ctx: any) =>\n skipped(ctx, \"rgba(0,0,0,0.2)\") || down(ctx, dataset.borderColor),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderDash: (ctx: any) => skipped(ctx, [6, 6]),\n }\n : undefined,\n };\n });\n\n const chartJsData = {\n datasets: formattedDatasets,\n };\n\n const ChartData = () => {\n if (isLoading) {\n return <div className={styles.nodata}>loading...</div>;\n } else if (\n datasets.length === 0 ||\n (datasets.length === 1 && datasets[0].label === \"\")\n ) {\n return <div className={styles.nodata}>NO DATA</div>;\n } else {\n return (\n <LineChartJS ref={chartRef} options={options} data={chartJsData} />\n );\n }\n };\n\n return (\n <div className={styles.reportChart}>\n <CardWithTitle title={title} spacingFromTitle={0}>\n <Box className={styles.reportBox}>\n <div className={styles.chart}>\n <ChartData />\n </div>\n </Box>\n </CardWithTitle>\n </div>\n );\n};\n\nexport default ReportChartMulti;\n"],"names":["ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Filler","LineController","Title","ChartJSTooltip","Legend","TimeScale","chartColors","ReportChartMulti","props","datasets","xLabel","yLabel","xType","dataIntervalMin","chartMargin","tooltipFormatter","value","label","isLoading","title","precision","chartRef","useRef","isStacked","dataset","startDate","format","startOfDay","endDate","endOfDay","rangeOfDate","dayScaleOptions","otherScaleOptions","options","context","skipped","ctx","down","fillGaps","data","filledData","lastTime","secondLastTime","chartJsData","dataWithGaps","item","ChartData","jsx","styles","LineChartJS","CardWithTitle","Box"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/components/ReportChartMulti/index.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n CategoryScale,\n Chart as ChartJS,\n Tooltip as ChartJSTooltip,\n ChartOptions,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n TooltipItem,\n} from \"chart.js\";\n\nimport \"chartjs-adapter-date-fns\";\n\nimport { endOfDay, format, startOfDay } from \"date-fns\";\nimport { Line as LineChartJS } from \"react-chartjs-2\";\n\nimport { CardWithTitle } from \"../CardWithTitle\";\nimport styles from \"./index.module.scss\";\n\nexport type datasetType = {\n label: string;\n data: { date: string; value: number }[];\n borderColor: string;\n backgroundColor?: string;\n borderWidth?: number;\n fill?: boolean | number | string;\n stack?: string;\n skipEmptyData?: boolean;\n};\n\ntype Props = {\n datasets: datasetType[];\n xLabel: string;\n yLabel: string;\n dataIntervalMin?: number;\n xType: \"day\" | \"week\" | \"month\" | \"year\";\n chartMargin?: ChartMargin;\n tooltipFormatter?: CustomToolTipFormatter;\n isLoading?: boolean;\n title: string; // Add title prop\n precision?: number; // Y軸の小数点以下の桁数を指定\n};\n\ntype ChartMargin = {\n top: number;\n right: number;\n bottom: number;\n left: number;\n};\n\ntype CustomToolTipFormatter = (value: unknown, label: string) => string[];\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Filler,\n LineController,\n Title,\n ChartJSTooltip,\n Legend,\n TimeScale, // TimeScaleを登録\n);\n\n// グラフで利用する標準色を定義\nexport const chartColors = {\n red: \"rgb(255, 99, 132)\",\n orange: \"rgb(255, 184, 76)\",\n yellow: \"rgb(255, 205, 86)\",\n green: \"rgb(102, 187, 106)\",\n blue: \"rgb(41, 182, 246)\",\n purple: \"rgb(153, 102, 255)\",\n grey: \"rgb(201, 203, 207)\",\n // 透過色(塗りつぶしに利用)\n redTransparent: \"rgba(255, 99, 132, 0.5)\",\n orangeTransparent: \"rgba(255, 184, 76, 0.5)\",\n yellowTransparent: \"rgba(255, 205, 86, 0.5)\",\n greenTransparent: \"rgba(102, 187, 106, 0.5)\",\n blueTransparent: \"rgba(41, 182, 246, 0.5)\",\n purpleTransparent: \"rgba(153, 102, 255, 0.5)\",\n greyTransparent: \"rgba(201, 203, 207, 0.5)\",\n};\n\nexport const ReportChartMulti = (props: Props) => {\n const {\n datasets,\n xLabel = \"\",\n yLabel = \"\",\n xType = \"day\",\n dataIntervalMin = 5,\n chartMargin = { top: 0, right: 20, bottom: 20, left: 10 },\n tooltipFormatter = (value: unknown, label: string) => [\n String(value),\n String(label),\n ],\n isLoading,\n title, // Destructure title from props\n precision,\n } = props;\n\n const chartRef = useRef(null);\n\n // stackにグループを追加している場合は、積み上げグラフとなる\n const isStacked = datasets.some((dataset) => dataset.stack !== undefined);\n\n // 時間の範囲を描画する基準として利用するダミーデータをdatasetsに追加\n // TODO:現状はxTypeがdayの場合のみ対応している\n if (xType === \"day\") {\n const startDate = format(\n startOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n const endDate = format(\n endOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n\n const rangeOfDate = [\n { date: startDate, value: 0 },\n { date: endDate, value: 0 },\n ];\n\n datasets.unshift({\n label: \"\",\n data: rangeOfDate,\n borderColor: \"rgba(0, 0, 0, 0)\", // 透明色\n });\n }\n\n const dayScaleOptions = {\n type: \"time\",\n time: {\n unit: \"minute\",\n displayFormats: {\n minute: \"HH:mm\",\n },\n tooltipFormat: \"HH:mm\",\n },\n title: {\n display: true,\n text: xLabel,\n },\n ticks: {\n source: \"auto\",\n autoSkip: true,\n maxTicksLimit: 24,\n callback: function (value: string | number): string {\n const dateValue =\n typeof value === \"string\" ? new Date(value) : new Date(value);\n const hours = dateValue.getHours();\n return `${hours}時`;\n },\n },\n };\n\n const otherScaleOptions = {\n title: {\n display: true,\n text: xLabel,\n },\n };\n\n const options: ChartOptions<\"line\"> = {\n interaction: {\n intersect: false,\n },\n responsive: true,\n aspectRatio: 2,\n maintainAspectRatio: false,\n animation: false,\n transitions: {\n resize: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n show: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n },\n layout: {\n padding: {\n left: chartMargin.left,\n right: chartMargin.right,\n top: chartMargin.top,\n bottom: chartMargin.bottom,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: \"top\" as const,\n },\n title: {\n display: false,\n },\n tooltip: {\n callbacks: {\n label: (context: TooltipItem<\"line\">) => {\n // 時間基準データはツールチップに表示させない\n if (context.dataset.label === \"\") {\n return \"\";\n }\n const label = context.dataset.label\n ? `${context.dataset.label}`\n : \"\";\n const ar = tooltipFormatter(context.parsed.y, label);\n const str = ar.reverse().join(\":\");\n return str;\n },\n },\n },\n },\n scales: {\n x: xType === \"day\" ? dayScaleOptions : otherScaleOptions, // 実際使うTypeが増えたらここを改修\n y: {\n stacked: isStacked,\n beginAtZero: true,\n title: {\n display: true,\n text: yLabel,\n },\n ticks: {\n precision: precision,\n },\n },\n },\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const skipped = (ctx: any, value: any): any =>\n ctx.p0.skip || ctx.p1.skip ? value : undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const down = (ctx: any, value: any): any =>\n ctx.p0.parsed.y > ctx.p1.parsed.y ? value : undefined;\n\n const fillGaps = (data: { date: string; value: number | null }[]) => {\n const filledData: { date: string; value: number | null }[] = [...data];\n\n if (data.length > 1) {\n const lastTime = new Date(data[data.length - 1].date).getTime();\n const secondLastTime = new Date(data[data.length - 2].date).getTime();\n const finalTimeDifference = (lastTime - secondLastTime) / (1000 * 60);\n\n // 最後のデータポイントが大きなギャップを持つ場合にNaNを挿入\n if (finalTimeDifference > dataIntervalMin) {\n filledData.splice(filledData.length - 1, 0, {\n date: new Date(secondLastTime + 1).toISOString(),\n value: NaN,\n });\n }\n }\n return filledData;\n };\n\n // データセットの整形\n const formattedDatasets = datasets.map((dataset) => {\n const dataWithGaps = dataset.skipEmptyData\n ? fillGaps(dataset.data)\n : dataset.data;\n return {\n label: dataset.label,\n data: dataWithGaps.map((item) => {\n const date = new Date(item.date);\n return { x: date, y: item.value };\n }),\n borderColor: dataset.borderColor,\n backgroundColor: dataset.backgroundColor || dataset.borderColor,\n tension: 0.4,\n borderWidth: dataset.borderWidth || undefined,\n fill: dataset.fill || false,\n stack: dataset.stack || undefined,\n pointRadius: 0,\n spanGaps: dataset.skipEmptyData ? true : false,\n segment: dataset.skipEmptyData\n ? {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderColor: (ctx: any) =>\n skipped(ctx, \"rgba(0,0,0,0.2)\") || down(ctx, dataset.borderColor),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderDash: (ctx: any) => skipped(ctx, [6, 6]),\n }\n : undefined,\n };\n });\n\n const chartJsData = {\n datasets: formattedDatasets,\n };\n\n const ChartData = () => {\n if (isLoading) {\n return <div className={styles.nodata}>loading...</div>;\n } else if (\n datasets.length === 0 ||\n (datasets.length === 1 && datasets[0].label === \"\")\n ) {\n return <div className={styles.nodata}>NO DATA</div>;\n } else {\n return (\n <LineChartJS ref={chartRef} options={options} data={chartJsData} />\n );\n }\n };\n\n return (\n <div className={styles.reportChart}>\n <CardWithTitle title={title} spacingFromTitle={0}>\n <Box className={styles.reportBox}>\n <div className={styles.chart}>\n <ChartData />\n </div>\n </Box>\n </CardWithTitle>\n </div>\n );\n};\n\nexport default ReportChartMulti;"],"names":["ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Filler","LineController","Title","ChartJSTooltip","Legend","TimeScale","chartColors","ReportChartMulti","props","datasets","xLabel","yLabel","xType","dataIntervalMin","chartMargin","tooltipFormatter","value","label","isLoading","title","precision","chartRef","useRef","isStacked","dataset","startDate","format","startOfDay","endDate","endOfDay","rangeOfDate","dayScaleOptions","otherScaleOptions","options","context","skipped","ctx","down","fillGaps","data","filledData","lastTime","secondLastTime","chartJsData","dataWithGaps","item","ChartData","jsx","styles","LineChartJS","CardWithTitle","Box"],"mappings":";;;;;;;;;;;;;;AA2DAA,EAAQ;AAAA,EACNC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAAA,EACAC;AAAA,EACAC;AAAA;AACF;AAGO,MAAMC,KAAc;AAAA,EACzB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA;AAAA,EAEN,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,iBAAiB;AACnB,GAEaC,KAAmB,CAACC,MAAiB;AAC1C,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,QAAAC,IAAS;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,iBAAAC,IAAkB;AAAA,IAClB,aAAAC,IAAc,EAAE,KAAK,GAAG,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAG;AAAA,IACxD,kBAAAC,IAAmB,CAACC,GAAgBC,MAAkB;AAAA,MACpD,OAAOD,CAAK;AAAA,MACZ,OAAOC,CAAK;AAAA,IACd;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA;AAAA,IACA,WAAAC;AAAA,EAAA,IACEZ,GAEEa,IAAWC,EAAO,IAAI,GAGtBC,IAAYd,EAAS,KAAK,CAACe,MAAYA,EAAQ,UAAU,MAAS;AAIxE,MAAIZ,MAAU,OAAO;AACnB,UAAMa,IAAYC;AAAA,MAChBC,EAAe,oBAAA,MAAM;AAAA,MACrB;AAAA,IACF,GACMC,IAAUF;AAAA,MACdG,EAAa,oBAAA,MAAM;AAAA,MACnB;AAAA,IACF,GAEMC,IAAc;AAAA,MAClB,EAAE,MAAML,GAAW,OAAO,EAAE;AAAA,MAC5B,EAAE,MAAMG,GAAS,OAAO,EAAE;AAAA,IAC5B;AAEA,IAAAnB,EAAS,QAAQ;AAAA,MACf,OAAO;AAAA,MACP,MAAMqB;AAAA,MACN,aAAa;AAAA;AAAA,IAAA,CACd;AAAA,EAAA;AAGH,QAAMC,IAAkB;AAAA,IACtB,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,gBAAgB;AAAA,QACd,QAAQ;AAAA,MACV;AAAA,MACA,eAAe;AAAA,IACjB;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAMrB;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,eAAe;AAAA,MACf,UAAU,SAAUM,GAAgC;AAIlD,eAAO,IAFL,OAAOA,KAAU,WAAW,IAAI,KAAKA,CAAK,IAAI,IAAI,KAAKA,CAAK,GACtC,SAAS,CAClB;AAAA,MAAA;AAAA,IACjB;AAAA,EAEJ,GAEMgB,IAAoB;AAAA,IACxB,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAMtB;AAAA,IAAA;AAAA,EAEV,GAEMuB,IAAgC;AAAA,IACpC,aAAa;AAAA,MACX,WAAW;AAAA,IACb;AAAA,IACA,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,aAAa;AAAA,MACX,QAAQ;AAAA,QACN,YAAY;AAAA,UACV,GAAG;AAAA,YACD,MAAM;AAAA,UACR;AAAA,UACA,GAAG;AAAA,YACD,MAAM;AAAA,UAAA;AAAA,QACR;AAAA,MAEJ;AAAA,MACA,MAAM;AAAA,QACJ,YAAY;AAAA,UACV,GAAG;AAAA,YACD,MAAM;AAAA,UACR;AAAA,UACA,GAAG;AAAA,YACD,MAAM;AAAA,UAAA;AAAA,QACR;AAAA,MACF;AAAA,IAEJ;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,MAAMnB,EAAY;AAAA,QAClB,OAAOA,EAAY;AAAA,QACnB,KAAKA,EAAY;AAAA,QACjB,QAAQA,EAAY;AAAA,MAAA;AAAA,IAExB;AAAA,IACA,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,UACT,OAAO,CAACoB,MAAiC;AAEnC,gBAAAA,EAAQ,QAAQ,UAAU;AACrB,qBAAA;AAEH,kBAAAjB,IAAQiB,EAAQ,QAAQ,QAC1B,GAAGA,EAAQ,QAAQ,KAAK,KACxB;AAGG,mBAFInB,EAAiBmB,EAAQ,OAAO,GAAGjB,CAAK,EACpC,QAAQ,EAAE,KAAK,GAAG;AAAA,UAC1B;AAAA,QACT;AAAA,MACF;AAAA,IAEJ;AAAA,IACA,QAAQ;AAAA,MACN,GAAGL,MAAU,QAAQmB,IAAkBC;AAAA;AAAA,MACvC,GAAG;AAAA,QACD,SAAST;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAMZ;AAAA,QACR;AAAA,QACA,OAAO;AAAA,UACL,WAAAS;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EAEJ,GAEMe,IAAU,CAACC,GAAUpB,MACzBoB,EAAI,GAAG,QAAQA,EAAI,GAAG,OAAOpB,IAAQ,QAEjCqB,IAAO,CAACD,GAAUpB,MACtBoB,EAAI,GAAG,OAAO,IAAIA,EAAI,GAAG,OAAO,IAAIpB,IAAQ,QAExCsB,IAAW,CAACC,MAAmD;AAC7D,UAAAC,IAAuD,CAAC,GAAGD,CAAI;AAEjE,QAAAA,EAAK,SAAS,GAAG;AACb,YAAAE,IAAW,IAAI,KAAKF,EAAKA,EAAK,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,GACxDG,IAAiB,IAAI,KAAKH,EAAKA,EAAK,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ;AAIpE,OAH6BE,IAAWC,MAAmB,MAAO,MAGxC7B,KACxB2B,EAAW,OAAOA,EAAW,SAAS,GAAG,GAAG;AAAA,QAC1C,MAAM,IAAI,KAAKE,IAAiB,CAAC,EAAE,YAAY;AAAA,QAC/C,OAAO;AAAA,MAAA,CACR;AAAA,IACH;AAEK,WAAAF;AAAA,EACT,GAiCMG,IAAc;AAAA,IAClB,UA/BwBlC,EAAS,IAAI,CAACe,MAAY;AAClD,YAAMoB,IAAepB,EAAQ,gBACzBc,EAASd,EAAQ,IAAI,IACrBA,EAAQ;AACL,aAAA;AAAA,QACL,OAAOA,EAAQ;AAAA,QACf,MAAMoB,EAAa,IAAI,CAACC,OAEf,EAAE,GADI,IAAI,KAAKA,EAAK,IAAI,GACb,GAAGA,EAAK,MAAM,EACjC;AAAA,QACD,aAAarB,EAAQ;AAAA,QACrB,iBAAiBA,EAAQ,mBAAmBA,EAAQ;AAAA,QACpD,SAAS;AAAA,QACT,aAAaA,EAAQ,eAAe;AAAA,QACpC,MAAMA,EAAQ,QAAQ;AAAA,QACtB,OAAOA,EAAQ,SAAS;AAAA,QACxB,aAAa;AAAA,QACb,UAAU,EAAAA,EAAQ;AAAA,QAClB,SAASA,EAAQ,gBACb;AAAA;AAAA,UAEE,aAAa,CAACY,MACZD,EAAQC,GAAK,iBAAiB,KAAKC,EAAKD,GAAKZ,EAAQ,WAAW;AAAA;AAAA,UAElE,YAAY,CAACY,MAAaD,EAAQC,GAAK,CAAC,GAAG,CAAC,CAAC;AAAA,QAAA,IAE/C;AAAA,MACN;AAAA,IAAA,CACD;AAAA,EAID,GAEMU,IAAY,MACZ5B,IACM,gBAAA6B,EAAA,OAAA,EAAI,WAAWC,EAAO,QAAQ,UAAU,cAAA,IAEhDvC,EAAS,WAAW,KACnBA,EAAS,WAAW,KAAKA,EAAS,CAAC,EAAE,UAAU,KAExC,gBAAAsC,EAAA,OAAA,EAAI,WAAWC,EAAO,QAAQ,UAAO,WAAA,sBAG1CC,GAAY,EAAA,KAAK5B,GAAU,SAAAY,GAAkB,MAAMU,GAAa;AAMrE,SAAA,gBAAAI,EAAC,OAAI,EAAA,WAAWC,EAAO,aACrB,4BAACE,GAAc,EAAA,OAAA/B,GAAc,kBAAkB,GAC7C,UAAC,gBAAA4B,EAAAI,GAAA,EAAI,WAAWH,EAAO,WACrB,UAAC,gBAAAD,EAAA,OAAA,EAAI,WAAWC,EAAO,OACrB,UAAA,gBAAAD,EAACD,GAAU,CAAA,CAAA,EACb,CAAA,EACF,CAAA,EACF,CAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/components/ReportChartMulti/index.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n CategoryScale,\n Chart as ChartJS,\n Tooltip as ChartJSTooltip,\n ChartOptions,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n TooltipItem,\n} from \"chart.js\";\n\nimport \"chartjs-adapter-date-fns\";\n\nimport { endOfDay, format, startOfDay } from \"date-fns\";\nimport { Line as LineChartJS } from \"react-chartjs-2\";\n\nimport { CardWithTitle } from \"../CardWithTitle\";\nimport styles from \"./index.module.scss\";\n\nexport type datasetType = {\n label: string;\n data: { date: string; value: number }[];\n borderColor: string;\n backgroundColor?: string;\n borderWidth?: number;\n fill?: boolean | number | string;\n stack?: string;\n skipEmptyData?: boolean;\n};\n\ntype Props = {\n datasets: datasetType[];\n xLabel: string;\n yLabel: string;\n dataIntervalMin?: number;\n xType: \"day\" | \"week\" | \"month\" | \"year\";\n chartMargin?: ChartMargin;\n tooltipFormatter?: CustomToolTipFormatter;\n isLoading?: boolean;\n title: string; // Add title prop\n precision?: number; // Y軸の小数点以下の桁数を指定\n};\n\ntype ChartMargin = {\n top: number;\n right: number;\n bottom: number;\n left: number;\n};\n\ntype CustomToolTipFormatter = (value: unknown, label: string) => string[];\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Filler,\n LineController,\n Title,\n ChartJSTooltip,\n Legend,\n TimeScale, // TimeScaleを登録\n);\n\n// グラフで利用する標準色を定義\nexport const chartColors = {\n red: \"rgb(255, 99, 132)\",\n orange: \"rgb(255, 184, 76)\",\n yellow: \"rgb(255, 205, 86)\",\n green: \"rgb(102, 187, 106)\",\n blue: \"rgb(41, 182, 246)\",\n purple: \"rgb(153, 102, 255)\",\n grey: \"rgb(201, 203, 207)\",\n // 透過色(塗りつぶしに利用)\n redTransparent: \"rgba(255, 99, 132, 0.5)\",\n orangeTransparent: \"rgba(255, 184, 76, 0.5)\",\n yellowTransparent: \"rgba(255, 205, 86, 0.5)\",\n greenTransparent: \"rgba(102, 187, 106, 0.5)\",\n blueTransparent: \"rgba(41, 182, 246, 0.5)\",\n purpleTransparent: \"rgba(153, 102, 255, 0.5)\",\n greyTransparent: \"rgba(201, 203, 207, 0.5)\",\n};\n\nexport const ReportChartMulti = (props: Props) => {\n const {\n datasets,\n xLabel = \"\",\n yLabel = \"\",\n xType = \"day\",\n dataIntervalMin = 5,\n chartMargin = { top: 0, right: 20, bottom: 20, left: 10 },\n tooltipFormatter = (value: unknown, label: string) => [\n String(value),\n String(label),\n ],\n isLoading,\n title, // Destructure title from props\n precision,\n } = props;\n\n const chartRef = useRef(null);\n\n // stackにグループを追加している場合は、積み上げグラフとなる\n const isStacked = datasets.some((dataset) => dataset.stack !== undefined);\n\n // 時間の範囲を描画する基準として利用するダミーデータをdatasetsに追加\n // TODO:現状はxTypeがdayの場合のみ対応している\n if (xType === \"day\") {\n const startDate = format(\n startOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n const endDate = format(\n endOfDay(new Date()),\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\",\n );\n\n const rangeOfDate = [\n { date: startDate, value: 0 },\n { date: endDate, value: 0 },\n ];\n\n datasets.unshift({\n label: \"\",\n data: rangeOfDate,\n borderColor: \"rgba(0, 0, 0, 0)\", // 透明色\n });\n }\n\n const dayScaleOptions = {\n type: \"time\",\n time: {\n unit: \"minute\",\n displayFormats: {\n minute: \"HH:mm\",\n },\n tooltipFormat: \"HH:mm\",\n },\n title: {\n display: true,\n text: xLabel,\n },\n ticks: {\n source: \"auto\",\n autoSkip: true,\n maxTicksLimit: 24,\n callback: function (value: string | number): string {\n const dateValue =\n typeof value === \"string\" ? new Date(value) : new Date(value);\n const hours = dateValue.getHours();\n return `${hours}時`;\n },\n },\n };\n\n const otherScaleOptions = {\n title: {\n display: true,\n text: xLabel,\n },\n };\n\n const options: ChartOptions<\"line\"> = {\n interaction: {\n intersect: false,\n },\n responsive: true,\n aspectRatio: 2,\n maintainAspectRatio: false,\n animation: false,\n transitions: {\n resize: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n show: {\n animations: {\n x: {\n from: 0,\n },\n y: {\n from: 0,\n },\n },\n },\n },\n layout: {\n padding: {\n left: chartMargin.left,\n right: chartMargin.right,\n top: chartMargin.top,\n bottom: chartMargin.bottom,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: \"top\" as const,\n },\n title: {\n display: false,\n },\n tooltip: {\n callbacks: {\n label: (context: TooltipItem<\"line\">) => {\n // 時間基準データはツールチップに表示させない\n if (context.dataset.label === \"\") {\n return \"\";\n }\n const label = context.dataset.label\n ? `${context.dataset.label}`\n : \"\";\n const ar = tooltipFormatter(context.parsed.y, label);\n const str = ar.reverse().join(\":\");\n return str;\n },\n },\n },\n },\n scales: {\n x: xType === \"day\" ? dayScaleOptions : otherScaleOptions, // 実際使うTypeが増えたらここを改修\n y: {\n stacked: isStacked,\n beginAtZero: true,\n title: {\n display: true,\n text: yLabel,\n },\n ticks: {\n precision: precision,\n },\n },\n },\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const skipped = (ctx: any, value: any): any =>\n ctx.p0.skip || ctx.p1.skip ? value : undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const down = (ctx: any, value: any): any =>\n ctx.p0.parsed.y > ctx.p1.parsed.y ? value : undefined;\n\n const fillGaps = (data: { date: string; value: number | null }[]) => {\n const filledData: { date: string; value: number | null }[] = [...data];\n\n if (data.length > 1) {\n const lastTime = new Date(data[data.length - 1].date).getTime();\n const secondLastTime = new Date(data[data.length - 2].date).getTime();\n const finalTimeDifference = (lastTime - secondLastTime) / (1000 * 60);\n\n // 最後のデータポイントが大きなギャップを持つ場合にNaNを挿入\n if (finalTimeDifference > dataIntervalMin) {\n filledData.splice(filledData.length - 1, 0, {\n date: new Date(secondLastTime + 1).toISOString(),\n value: NaN,\n });\n }\n }\n return filledData;\n };\n\n // データセットの整形\n const formattedDatasets = datasets.map((dataset) => {\n const dataWithGaps = dataset.skipEmptyData\n ? fillGaps(dataset.data)\n : dataset.data;\n return {\n label: dataset.label,\n data: dataWithGaps.map((item) => {\n const date = new Date(item.date);\n return { x: date, y: item.value };\n }),\n borderColor: dataset.borderColor,\n backgroundColor: dataset.backgroundColor || dataset.borderColor,\n tension: 0.4,\n borderWidth: dataset.borderWidth || undefined,\n fill: dataset.fill || false,\n stack: dataset.stack || undefined,\n pointRadius: 0,\n spanGaps: dataset.skipEmptyData ? true : false,\n segment: dataset.skipEmptyData\n ? {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderColor: (ctx: any) =>\n skipped(ctx, \"rgba(0,0,0,0.2)\") || down(ctx, dataset.borderColor),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderDash: (ctx: any) => skipped(ctx, [6, 6]),\n }\n : undefined,\n };\n });\n\n const chartJsData = {\n datasets: formattedDatasets,\n };\n\n const ChartData = () => {\n if (isLoading) {\n return <div className={styles.nodata}>loading...</div>;\n } else if (\n datasets.length === 0 ||\n (datasets.length === 1 && datasets[0].label === \"\")\n ) {\n return <div className={styles.nodata}>NO DATA</div>;\n } else {\n return (\n <LineChartJS ref={chartRef} options={options} data={chartJsData} />\n );\n }\n };\n\n return (\n <div className={styles.reportChart}>\n <CardWithTitle title={title} spacingFromTitle={0}>\n <Box className={styles.reportBox}>\n <div className={styles.chart}>\n <ChartData />\n </div>\n </Box>\n </CardWithTitle>\n </div>\n );\n};\n\nexport default ReportChartMulti;\n"],"names":["ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Filler","LineController","Title","ChartJSTooltip","Legend","TimeScale","chartColors","ReportChartMulti","props","datasets","xLabel","yLabel","xType","dataIntervalMin","chartMargin","tooltipFormatter","value","label","isLoading","title","precision","chartRef","useRef","isStacked","dataset","startDate","format","startOfDay","endDate","endOfDay","rangeOfDate","dayScaleOptions","otherScaleOptions","options","context","skipped","ctx","down","fillGaps","data","filledData","lastTime","secondLastTime","chartJsData","dataWithGaps","item","ChartData","jsx","styles","LineChartJS","CardWithTitle","Box"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("react/jsx-runtime"),e=require("../../react.esm-CiMn0Rnx.cjs"),a=require("./index.cjs.js");require("chartjs-adapter-date-fns");jest.mock("react-chartjs-2",()=>({Line:()=>t.jsx("canvas",{"data-testid":"chartjs-line"})}));const i=[{label:"Dataset 1",data:[{date:"2024-07-10T00:00:00+09:00",value:70},{date:"2024-07-10T00:05:00+09:00",value:75},{date:"2024-07-10T00:10:00+09:00",value:80}],borderColor:"red",skipEmptyData:!0},{label:"Dataset 2",data:[{date:"2024-07-10T01:00:00+09:00",value:60},{date:"2024-07-10T01:05:00+09:00",value:65},{date:"2024-07-10T01:10:00+09:00",value:70}],borderColor:"blue",skipEmptyData:!1}],r={datasets:i,title:"Test Chart",xLabel:"Time",yLabel:"Value",xType:"day",dataIntervalMin:5,chartMargin:{top:0,right:20,bottom:20,left:10},isLoading:!1,precision:void 0};describe("ReportChartMulti",()=>{it("renders the chart with the given title",()=>{e.render(t.jsx(a.ReportChartMulti,{...r})),expect(e.screen.getByText("Test Chart")).toBeInTheDocument()}),it("renders the chart with NO DATA when datasets are empty",()=>{e.render(t.jsx(a.ReportChartMulti,{...r,datasets:[]})),expect(e.screen.getByText("NO DATA")).toBeInTheDocument()}),it("renders the chart with loading message when isLoading is true",()=>{e.render(t.jsx(a.ReportChartMulti,{...r,isLoading:!0})),expect(e.screen.getByText("loading...")).toBeInTheDocument()}),it("renders the chart with the correct datasets",()=>{e.render(t.jsx(a.ReportChartMulti,{...r}));const s=e.screen.getByTestId("chartjs-line");expect(s).toBeInTheDocument()})});
1
+ "use strict";const t=require("react/jsx-runtime"),e=require("../../react.esm-BcRJ42eI.cjs"),a=require("./index.cjs.js");require("chartjs-adapter-date-fns");jest.mock("react-chartjs-2",()=>({Line:()=>t.jsx("canvas",{"data-testid":"chartjs-line"})}));const i=[{label:"Dataset 1",data:[{date:"2024-07-10T00:00:00+09:00",value:70},{date:"2024-07-10T00:05:00+09:00",value:75},{date:"2024-07-10T00:10:00+09:00",value:80}],borderColor:"red",skipEmptyData:!0},{label:"Dataset 2",data:[{date:"2024-07-10T01:00:00+09:00",value:60},{date:"2024-07-10T01:05:00+09:00",value:65},{date:"2024-07-10T01:10:00+09:00",value:70}],borderColor:"blue",skipEmptyData:!1}],r={datasets:i,title:"Test Chart",xLabel:"Time",yLabel:"Value",xType:"day",dataIntervalMin:5,chartMargin:{top:0,right:20,bottom:20,left:10},isLoading:!1,precision:void 0};describe("ReportChartMulti",()=>{it("renders the chart with the given title",()=>{e.render(t.jsx(a.ReportChartMulti,{...r})),expect(e.screen.getByText("Test Chart")).toBeInTheDocument()}),it("renders the chart with NO DATA when datasets are empty",()=>{e.render(t.jsx(a.ReportChartMulti,{...r,datasets:[]})),expect(e.screen.getByText("NO DATA")).toBeInTheDocument()}),it("renders the chart with loading message when isLoading is true",()=>{e.render(t.jsx(a.ReportChartMulti,{...r,isLoading:!0})),expect(e.screen.getByText("loading...")).toBeInTheDocument()}),it("renders the chart with the correct datasets",()=>{e.render(t.jsx(a.ReportChartMulti,{...r}));const s=e.screen.getByTestId("chartjs-line");expect(s).toBeInTheDocument()})});
2
2
  //# sourceMappingURL=index.test.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.cjs.js","sources":["../../../src/components/ReportChartMulti/index.test.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { render, screen } from \"@testing-library/react\";\n\nimport { ReportChartMulti } from \".\";\n\nimport \"chartjs-adapter-date-fns\";\n\njest.mock(\"react-chartjs-2\", () => ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Line: () => <canvas data-testid=\"chartjs-line\" />,\n}));\n\nconst mockDatasets = [\n {\n label: \"Dataset 1\",\n data: [\n { date: \"2024-07-10T00:00:00+09:00\", value: 70 },\n { date: \"2024-07-10T00:05:00+09:00\", value: 75 },\n { date: \"2024-07-10T00:10:00+09:00\", value: 80 },\n ],\n borderColor: \"red\",\n skipEmptyData: true,\n },\n {\n label: \"Dataset 2\",\n data: [\n { date: \"2024-07-10T01:00:00+09:00\", value: 60 },\n { date: \"2024-07-10T01:05:00+09:00\", value: 65 },\n { date: \"2024-07-10T01:10:00+09:00\", value: 70 },\n ],\n borderColor: \"blue\",\n skipEmptyData: false,\n },\n];\n\nconst defaultProps = {\n datasets: mockDatasets,\n title: \"Test Chart\",\n xLabel: \"Time\",\n yLabel: \"Value\",\n xType: \"day\" as const,\n dataIntervalMin: 5,\n chartMargin: { top: 0, right: 20, bottom: 20, left: 10 },\n isLoading: false,\n precision: undefined,\n};\n\ndescribe(\"ReportChartMulti\", () => {\n it(\"renders the chart with the given title\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n expect(screen.getByText(\"Test Chart\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with NO DATA when datasets are empty\", () => {\n render(<ReportChartMulti {...defaultProps} datasets={[]} />);\n expect(screen.getByText(\"NO DATA\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with loading message when isLoading is true\", () => {\n render(<ReportChartMulti {...defaultProps} isLoading={true} />);\n expect(screen.getByText(\"loading...\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with the correct datasets\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n const chart = screen.getByTestId(\"chartjs-line\");\n expect(chart).toBeInTheDocument();\n });\n});\n"],"names":["jsx","mockDatasets","defaultProps","render","ReportChartMulti","screen","chart"],"mappings":"4JAOA,KAAK,KAAK,kBAAmB,KAAO,CAElC,KAAM,IAAOA,EAAA,IAAA,SAAA,CAAO,cAAY,cAAe,CAAA,CACjD,EAAE,EAEF,MAAMC,EAAe,CACnB,CACE,MAAO,YACP,KAAM,CACJ,CAAE,KAAM,4BAA6B,MAAO,EAAG,EAC/C,CAAE,KAAM,4BAA6B,MAAO,EAAG,EAC/C,CAAE,KAAM,4BAA6B,MAAO,EAAG,CACjD,EACA,YAAa,MACb,cAAe,EACjB,EACA,CACE,MAAO,YACP,KAAM,CACJ,CAAE,KAAM,4BAA6B,MAAO,EAAG,EAC/C,CAAE,KAAM,4BAA6B,MAAO,EAAG,EAC/C,CAAE,KAAM,4BAA6B,MAAO,EAAG,CACjD,EACA,YAAa,OACb,cAAe,EAAA,CAEnB,EAEMC,EAAe,CACnB,SAAUD,EACV,MAAO,aACP,OAAQ,OACR,OAAQ,QACR,MAAO,MACP,gBAAiB,EACjB,YAAa,CAAE,IAAK,EAAG,MAAO,GAAI,OAAQ,GAAI,KAAM,EAAG,EACvD,UAAW,GACX,UAAW,MACb,EAEA,SAAS,mBAAoB,IAAM,CACjC,GAAG,yCAA0C,IAAM,CACjDE,EAAAA,OAAQH,EAAAA,IAAAI,EAAAA,iBAAA,CAAkB,GAAGF,CAAc,CAAA,CAAE,EAC7C,OAAOG,EAAAA,OAAO,UAAU,YAAY,CAAC,EAAE,kBAAkB,CAAA,CAC1D,EAED,GAAG,yDAA0D,IAAM,CACjEF,EAAA,aAAQC,mBAAkB,CAAA,GAAGF,EAAc,SAAU,GAAI,CAAE,EAC3D,OAAOG,EAAAA,OAAO,UAAU,SAAS,CAAC,EAAE,kBAAkB,CAAA,CACvD,EAED,GAAG,gEAAiE,IAAM,CACxEF,EAAA,aAAQC,mBAAkB,CAAA,GAAGF,EAAc,UAAW,GAAM,CAAE,EAC9D,OAAOG,EAAAA,OAAO,UAAU,YAAY,CAAC,EAAE,kBAAkB,CAAA,CAC1D,EAED,GAAG,8CAA+C,IAAM,CACtDF,EAAAA,OAAQH,EAAAA,IAAAI,EAAAA,iBAAA,CAAkB,GAAGF,CAAc,CAAA,CAAE,EACvC,MAAAI,EAAQD,EAAAA,OAAO,YAAY,cAAc,EACxC,OAAAC,CAAK,EAAE,kBAAkB,CAAA,CACjC,CACH,CAAC"}
1
+ {"version":3,"file":"index.test.cjs.js","sources":["../../../src/components/ReportChartMulti/index.test.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { render, screen } from \"@testing-library/react\";\n\nimport { ReportChartMulti } from \".\";\n\nimport \"chartjs-adapter-date-fns\";\n\njest.mock(\"react-chartjs-2\", () => ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Line: () => <canvas data-testid=\"chartjs-line\" />,\n}));\n\nconst mockDatasets = [\n {\n label: \"Dataset 1\",\n data: [\n { date: \"2024-07-10T00:00:00+09:00\", value: 70 },\n { date: \"2024-07-10T00:05:00+09:00\", value: 75 },\n { date: \"2024-07-10T00:10:00+09:00\", value: 80 },\n ],\n borderColor: \"red\",\n skipEmptyData: true,\n },\n {\n label: \"Dataset 2\",\n data: [\n { date: \"2024-07-10T01:00:00+09:00\", value: 60 },\n { date: \"2024-07-10T01:05:00+09:00\", value: 65 },\n { date: \"2024-07-10T01:10:00+09:00\", value: 70 },\n ],\n borderColor: \"blue\",\n skipEmptyData: false,\n },\n];\n\nconst defaultProps = {\n datasets: mockDatasets,\n title: \"Test Chart\",\n xLabel: \"Time\",\n yLabel: \"Value\",\n xType: \"day\" as const,\n dataIntervalMin: 5,\n chartMargin: { top: 0, right: 20, bottom: 20, left: 10 },\n isLoading: false,\n precision: undefined,\n};\n\ndescribe(\"ReportChartMulti\", () => {\n it(\"renders the chart with the given title\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n expect(screen.getByText(\"Test Chart\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with NO DATA when datasets are empty\", () => {\n render(<ReportChartMulti {...defaultProps} datasets={[]} />);\n expect(screen.getByText(\"NO DATA\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with loading message when isLoading is true\", () => {\n render(<ReportChartMulti {...defaultProps} isLoading={true} />);\n expect(screen.getByText(\"loading...\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with the correct datasets\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n const chart = screen.getByTestId(\"chartjs-line\");\n expect(chart).toBeInTheDocument();\n });\n});\n"],"names":["jsx","mockDatasets","defaultProps","render","ReportChartMulti","screen","chart"],"mappings":"4JAOA,KAAK,KAAK,kBAAmB,KAAO,CAElC,KAAM,IAAMA,EAAAA,IAAC,SAAA,CAAO,cAAY,cAAA,CAAe,CACjD,EAAE,EAEF,MAAMC,EAAe,CACnB,CACE,MAAO,YACP,KAAM,CACJ,CAAE,KAAM,4BAA6B,MAAO,EAAA,EAC5C,CAAE,KAAM,4BAA6B,MAAO,EAAA,EAC5C,CAAE,KAAM,4BAA6B,MAAO,EAAA,CAAG,EAEjD,YAAa,MACb,cAAe,EAAA,EAEjB,CACE,MAAO,YACP,KAAM,CACJ,CAAE,KAAM,4BAA6B,MAAO,EAAA,EAC5C,CAAE,KAAM,4BAA6B,MAAO,EAAA,EAC5C,CAAE,KAAM,4BAA6B,MAAO,EAAA,CAAG,EAEjD,YAAa,OACb,cAAe,EAAA,CAEnB,EAEMC,EAAe,CACnB,SAAUD,EACV,MAAO,aACP,OAAQ,OACR,OAAQ,QACR,MAAO,MACP,gBAAiB,EACjB,YAAa,CAAE,IAAK,EAAG,MAAO,GAAI,OAAQ,GAAI,KAAM,EAAA,EACpD,UAAW,GACX,UAAW,MACb,EAEA,SAAS,mBAAoB,IAAM,CACjC,GAAG,yCAA0C,IAAM,CACjDE,EAAAA,OAAOH,EAAAA,IAACI,EAAAA,iBAAA,CAAkB,GAAGF,CAAA,CAAc,CAAE,EAC7C,OAAOG,EAAAA,OAAO,UAAU,YAAY,CAAC,EAAE,kBAAA,CACzC,CAAC,EAED,GAAG,yDAA0D,IAAM,CACjEF,EAAAA,aAAQC,mBAAA,CAAkB,GAAGF,EAAc,SAAU,CAAA,EAAI,CAAE,EAC3D,OAAOG,EAAAA,OAAO,UAAU,SAAS,CAAC,EAAE,kBAAA,CACtC,CAAC,EAED,GAAG,gEAAiE,IAAM,CACxEF,EAAAA,aAAQC,mBAAA,CAAkB,GAAGF,EAAc,UAAW,GAAM,CAAE,EAC9D,OAAOG,EAAAA,OAAO,UAAU,YAAY,CAAC,EAAE,kBAAA,CACzC,CAAC,EAED,GAAG,8CAA+C,IAAM,CACtDF,EAAAA,OAAOH,EAAAA,IAACI,EAAAA,iBAAA,CAAkB,GAAGF,CAAA,CAAc,CAAE,EAC7C,MAAMI,EAAQD,EAAAA,OAAO,YAAY,cAAc,EAC/C,OAAOC,CAAK,EAAE,kBAAA,CAChB,CAAC,CACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { r as e, s as a } from "../../react.esm-2FJSSo-S.js";
2
+ import { r as e, s as a } from "../../react.esm-DVhZgPrH.js";
3
3
  import { ReportChartMulti as r } from "./index.es.js";
4
4
  import "chartjs-adapter-date-fns";
5
5
  jest.mock("react-chartjs-2", () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.es.js","sources":["../../../src/components/ReportChartMulti/index.test.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { render, screen } from \"@testing-library/react\";\n\nimport { ReportChartMulti } from \".\";\n\nimport \"chartjs-adapter-date-fns\";\n\njest.mock(\"react-chartjs-2\", () => ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Line: () => <canvas data-testid=\"chartjs-line\" />,\n}));\n\nconst mockDatasets = [\n {\n label: \"Dataset 1\",\n data: [\n { date: \"2024-07-10T00:00:00+09:00\", value: 70 },\n { date: \"2024-07-10T00:05:00+09:00\", value: 75 },\n { date: \"2024-07-10T00:10:00+09:00\", value: 80 },\n ],\n borderColor: \"red\",\n skipEmptyData: true,\n },\n {\n label: \"Dataset 2\",\n data: [\n { date: \"2024-07-10T01:00:00+09:00\", value: 60 },\n { date: \"2024-07-10T01:05:00+09:00\", value: 65 },\n { date: \"2024-07-10T01:10:00+09:00\", value: 70 },\n ],\n borderColor: \"blue\",\n skipEmptyData: false,\n },\n];\n\nconst defaultProps = {\n datasets: mockDatasets,\n title: \"Test Chart\",\n xLabel: \"Time\",\n yLabel: \"Value\",\n xType: \"day\" as const,\n dataIntervalMin: 5,\n chartMargin: { top: 0, right: 20, bottom: 20, left: 10 },\n isLoading: false,\n precision: undefined,\n};\n\ndescribe(\"ReportChartMulti\", () => {\n it(\"renders the chart with the given title\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n expect(screen.getByText(\"Test Chart\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with NO DATA when datasets are empty\", () => {\n render(<ReportChartMulti {...defaultProps} datasets={[]} />);\n expect(screen.getByText(\"NO DATA\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with loading message when isLoading is true\", () => {\n render(<ReportChartMulti {...defaultProps} isLoading={true} />);\n expect(screen.getByText(\"loading...\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with the correct datasets\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n const chart = screen.getByTestId(\"chartjs-line\");\n expect(chart).toBeInTheDocument();\n });\n});\n"],"names":["jsx","mockDatasets","defaultProps","render","ReportChartMulti","screen","chart"],"mappings":";;;;AAOA,KAAK,KAAK,mBAAmB,OAAO;AAAA;AAAA,EAElC,MAAM,MAAO,gBAAAA,EAAA,UAAA,EAAO,eAAY,eAAe,CAAA;AACjD,EAAE;AAEF,MAAMC,IAAe;AAAA,EACnB;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,EAAE,MAAM,6BAA6B,OAAO,GAAG;AAAA,MAC/C,EAAE,MAAM,6BAA6B,OAAO,GAAG;AAAA,MAC/C,EAAE,MAAM,6BAA6B,OAAO,GAAG;AAAA,IACjD;AAAA,IACA,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,EAAE,MAAM,6BAA6B,OAAO,GAAG;AAAA,MAC/C,EAAE,MAAM,6BAA6B,OAAO,GAAG;AAAA,MAC/C,EAAE,MAAM,6BAA6B,OAAO,GAAG;AAAA,IACjD;AAAA,IACA,aAAa;AAAA,IACb,eAAe;AAAA,EAAA;AAEnB,GAEMC,IAAe;AAAA,EACnB,UAAUD;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,aAAa,EAAE,KAAK,GAAG,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAG;AAAA,EACvD,WAAW;AAAA,EACX,WAAW;AACb;AAEA,SAAS,oBAAoB,MAAM;AACjC,KAAG,0CAA0C,MAAM;AACjD,IAAAE,EAAQ,gBAAAH,EAAAI,GAAA,EAAkB,GAAGF,EAAc,CAAA,CAAE,GAC7C,OAAOG,EAAO,UAAU,YAAY,CAAC,EAAE,kBAAkB;AAAA,EAAA,CAC1D,GAED,GAAG,0DAA0D,MAAM;AACjE,IAAAF,oBAAQC,GAAkB,EAAA,GAAGF,GAAc,UAAU,IAAI,CAAE,GAC3D,OAAOG,EAAO,UAAU,SAAS,CAAC,EAAE,kBAAkB;AAAA,EAAA,CACvD,GAED,GAAG,iEAAiE,MAAM;AACxE,IAAAF,oBAAQC,GAAkB,EAAA,GAAGF,GAAc,WAAW,IAAM,CAAE,GAC9D,OAAOG,EAAO,UAAU,YAAY,CAAC,EAAE,kBAAkB;AAAA,EAAA,CAC1D,GAED,GAAG,+CAA+C,MAAM;AACtD,IAAAF,EAAQ,gBAAAH,EAAAI,GAAA,EAAkB,GAAGF,EAAc,CAAA,CAAE;AACvC,UAAAI,IAAQD,EAAO,YAAY,cAAc;AACxC,WAAAC,CAAK,EAAE,kBAAkB;AAAA,EAAA,CACjC;AACH,CAAC;"}
1
+ {"version":3,"file":"index.test.es.js","sources":["../../../src/components/ReportChartMulti/index.test.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { render, screen } from \"@testing-library/react\";\n\nimport { ReportChartMulti } from \".\";\n\nimport \"chartjs-adapter-date-fns\";\n\njest.mock(\"react-chartjs-2\", () => ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Line: () => <canvas data-testid=\"chartjs-line\" />,\n}));\n\nconst mockDatasets = [\n {\n label: \"Dataset 1\",\n data: [\n { date: \"2024-07-10T00:00:00+09:00\", value: 70 },\n { date: \"2024-07-10T00:05:00+09:00\", value: 75 },\n { date: \"2024-07-10T00:10:00+09:00\", value: 80 },\n ],\n borderColor: \"red\",\n skipEmptyData: true,\n },\n {\n label: \"Dataset 2\",\n data: [\n { date: \"2024-07-10T01:00:00+09:00\", value: 60 },\n { date: \"2024-07-10T01:05:00+09:00\", value: 65 },\n { date: \"2024-07-10T01:10:00+09:00\", value: 70 },\n ],\n borderColor: \"blue\",\n skipEmptyData: false,\n },\n];\n\nconst defaultProps = {\n datasets: mockDatasets,\n title: \"Test Chart\",\n xLabel: \"Time\",\n yLabel: \"Value\",\n xType: \"day\" as const,\n dataIntervalMin: 5,\n chartMargin: { top: 0, right: 20, bottom: 20, left: 10 },\n isLoading: false,\n precision: undefined,\n};\n\ndescribe(\"ReportChartMulti\", () => {\n it(\"renders the chart with the given title\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n expect(screen.getByText(\"Test Chart\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with NO DATA when datasets are empty\", () => {\n render(<ReportChartMulti {...defaultProps} datasets={[]} />);\n expect(screen.getByText(\"NO DATA\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with loading message when isLoading is true\", () => {\n render(<ReportChartMulti {...defaultProps} isLoading={true} />);\n expect(screen.getByText(\"loading...\")).toBeInTheDocument();\n });\n\n it(\"renders the chart with the correct datasets\", () => {\n render(<ReportChartMulti {...defaultProps} />);\n const chart = screen.getByTestId(\"chartjs-line\");\n expect(chart).toBeInTheDocument();\n });\n});\n"],"names":["jsx","mockDatasets","defaultProps","render","ReportChartMulti","screen","chart"],"mappings":";;;;AAOA,KAAK,KAAK,mBAAmB,OAAO;AAAA;AAAA,EAElC,MAAM,MAAM,gBAAAA,EAAC,UAAA,EAAO,eAAY,eAAA,CAAe;AACjD,EAAE;AAEF,MAAMC,IAAe;AAAA,EACnB;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,EAAE,MAAM,6BAA6B,OAAO,GAAA;AAAA,MAC5C,EAAE,MAAM,6BAA6B,OAAO,GAAA;AAAA,MAC5C,EAAE,MAAM,6BAA6B,OAAO,GAAA;AAAA,IAAG;AAAA,IAEjD,aAAa;AAAA,IACb,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,EAAE,MAAM,6BAA6B,OAAO,GAAA;AAAA,MAC5C,EAAE,MAAM,6BAA6B,OAAO,GAAA;AAAA,MAC5C,EAAE,MAAM,6BAA6B,OAAO,GAAA;AAAA,IAAG;AAAA,IAEjD,aAAa;AAAA,IACb,eAAe;AAAA,EAAA;AAEnB,GAEMC,IAAe;AAAA,EACnB,UAAUD;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,aAAa,EAAE,KAAK,GAAG,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AAAA,EACpD,WAAW;AAAA,EACX,WAAW;AACb;AAEA,SAAS,oBAAoB,MAAM;AACjC,KAAG,0CAA0C,MAAM;AACjD,IAAAE,EAAO,gBAAAH,EAACI,GAAA,EAAkB,GAAGF,EAAA,CAAc,CAAE,GAC7C,OAAOG,EAAO,UAAU,YAAY,CAAC,EAAE,kBAAA;AAAA,EACzC,CAAC,GAED,GAAG,0DAA0D,MAAM;AACjE,IAAAF,oBAAQC,GAAA,EAAkB,GAAGF,GAAc,UAAU,CAAA,GAAI,CAAE,GAC3D,OAAOG,EAAO,UAAU,SAAS,CAAC,EAAE,kBAAA;AAAA,EACtC,CAAC,GAED,GAAG,iEAAiE,MAAM;AACxE,IAAAF,oBAAQC,GAAA,EAAkB,GAAGF,GAAc,WAAW,IAAM,CAAE,GAC9D,OAAOG,EAAO,UAAU,YAAY,CAAC,EAAE,kBAAA;AAAA,EACzC,CAAC,GAED,GAAG,+CAA+C,MAAM;AACtD,IAAAF,EAAO,gBAAAH,EAACI,GAAA,EAAkB,GAAGF,EAAA,CAAc,CAAE;AAC7C,UAAMI,IAAQD,EAAO,YAAY,cAAc;AAC/C,WAAOC,CAAK,EAAE,kBAAA;AAAA,EAChB,CAAC;AACH,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/components/ScrollableDialog/index.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n DialogProps as MuiDialogProps,\n} from \"@mui/material\";\n\nexport type ConfirmDialogResult = \"confirm\" | \"cancel\";\n\ntype Props = {\n /** ダイアログのタイトル */\n dialogTitle: ReactNode;\n /** ダイアログの内容 */\n dialogContent: ReactNode;\n /** ダイアログの処理ボタン(複数可) */\n dialogActions: ReactNode;\n /** ダイアログの表示状態 */\n open: boolean;\n /** 閉じた時のhandler */\n onCloseDialog: (result: ConfirmDialogResult) => void;\n} & MuiDialogProps;\n\n/** MuiDialogを継承したコンテントのスクロール可能なDialogです。 */\nexport const ScrollableDialog = (props: Props) => {\n const {\n dialogTitle,\n dialogContent,\n dialogActions,\n open,\n onCloseDialog,\n ...dialogProps\n } = props;\n\n return (\n <Dialog\n {...dialogProps}\n open={open}\n onClose={() => onCloseDialog(\"cancel\")}\n scroll={\"paper\"}\n aria-labelledby=\"scroll-dialog-title\"\n aria-describedby=\"scroll-dialog-description\"\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n gap: \"5px\",\n alignItems: \"center\",\n }}\n >\n {dialogTitle}\n </DialogTitle>\n <DialogContent dividers={true}>\n <DialogContentText tabIndex={-1}>{dialogContent}</DialogContentText>\n </DialogContent>\n <DialogActions sx={{ gap: \"10px\" }}>{dialogActions}</DialogActions>\n </Dialog>\n );\n};\n\nexport default ScrollableDialog;\n"],"names":["ScrollableDialog","props","dialogTitle","dialogContent","dialogActions","open","onCloseDialog","dialogProps","jsxs","Dialog","jsx","DialogTitle","DialogContent","DialogContentText","DialogActions"],"mappings":"4KA0BaA,EAAoBC,GAAiB,CAC1C,KAAA,CACJ,YAAAC,EACA,cAAAC,EACA,cAAAC,EACA,KAAAC,EACA,cAAAC,EACA,GAAGC,CAAA,EACDN,EAGF,OAAAO,EAAA,KAACC,EAAA,OAAA,CACE,GAAGF,EACJ,KAAAF,EACA,QAAS,IAAMC,EAAc,QAAQ,EACrC,OAAQ,QACR,kBAAgB,sBAChB,mBAAiB,4BAEjB,SAAA,CAAAI,EAAA,IAACC,EAAA,YAAA,CACC,GAAI,CACF,QAAS,OACT,IAAK,MACL,WAAY,QACd,EAEC,SAAAT,CAAA,CACH,EACAQ,EAAAA,IAACE,EAAAA,eAAc,SAAU,GACvB,eAACC,oBAAkB,CAAA,SAAU,GAAK,SAAAV,CAAA,CAAc,CAClD,CAAA,QACCW,EAAAA,cAAc,CAAA,GAAI,CAAE,IAAK,QAAW,SAAcV,CAAA,CAAA,CAAA,CAAA,CACrD,CAEJ"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/components/ScrollableDialog/index.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n DialogProps as MuiDialogProps,\n} from \"@mui/material\";\n\nexport type ConfirmDialogResult = \"confirm\" | \"cancel\";\n\ntype Props = {\n /** ダイアログのタイトル */\n dialogTitle: ReactNode;\n /** ダイアログの内容 */\n dialogContent: ReactNode;\n /** ダイアログの処理ボタン(複数可) */\n dialogActions: ReactNode;\n /** ダイアログの表示状態 */\n open: boolean;\n /** 閉じた時のhandler */\n onCloseDialog: (result: ConfirmDialogResult) => void;\n} & MuiDialogProps;\n\n/** MuiDialogを継承したコンテントのスクロール可能なDialogです。 */\nexport const ScrollableDialog = (props: Props) => {\n const {\n dialogTitle,\n dialogContent,\n dialogActions,\n open,\n onCloseDialog,\n ...dialogProps\n } = props;\n\n return (\n <Dialog\n {...dialogProps}\n open={open}\n onClose={() => onCloseDialog(\"cancel\")}\n scroll={\"paper\"}\n aria-labelledby=\"scroll-dialog-title\"\n aria-describedby=\"scroll-dialog-description\"\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n gap: \"5px\",\n alignItems: \"center\",\n }}\n >\n {dialogTitle}\n </DialogTitle>\n <DialogContent dividers={true}>\n <DialogContentText tabIndex={-1}>{dialogContent}</DialogContentText>\n </DialogContent>\n <DialogActions sx={{ gap: \"10px\" }}>{dialogActions}</DialogActions>\n </Dialog>\n );\n};\n\nexport default ScrollableDialog;\n"],"names":["ScrollableDialog","props","dialogTitle","dialogContent","dialogActions","open","onCloseDialog","dialogProps","jsxs","Dialog","jsx","DialogTitle","DialogContent","DialogContentText","DialogActions"],"mappings":"4KA0BaA,EAAoBC,GAAiB,CAChD,KAAM,CACJ,YAAAC,EACA,cAAAC,EACA,cAAAC,EACA,KAAAC,EACA,cAAAC,EACA,GAAGC,CAAA,EACDN,EAEJ,OACEO,EAAAA,KAACC,EAAAA,OAAA,CACE,GAAGF,EACJ,KAAAF,EACA,QAAS,IAAMC,EAAc,QAAQ,EACrC,OAAQ,QACR,kBAAgB,sBAChB,mBAAiB,4BAEjB,SAAA,CAAAI,EAAAA,IAACC,EAAAA,YAAA,CACC,GAAI,CACF,QAAS,OACT,IAAK,MACL,WAAY,QAAA,EAGb,SAAAT,CAAA,CAAA,EAEHQ,EAAAA,IAACE,EAAAA,eAAc,SAAU,GACvB,eAACC,oBAAA,CAAkB,SAAU,GAAK,SAAAV,CAAA,CAAc,CAAA,CAClD,QACCW,EAAAA,cAAA,CAAc,GAAI,CAAE,IAAK,MAAA,EAAW,SAAAV,CAAA,CAAc,CAAA,CAAA,CAAA,CAGzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/components/ScrollableDialog/index.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n DialogProps as MuiDialogProps,\n} from \"@mui/material\";\n\nexport type ConfirmDialogResult = \"confirm\" | \"cancel\";\n\ntype Props = {\n /** ダイアログのタイトル */\n dialogTitle: ReactNode;\n /** ダイアログの内容 */\n dialogContent: ReactNode;\n /** ダイアログの処理ボタン(複数可) */\n dialogActions: ReactNode;\n /** ダイアログの表示状態 */\n open: boolean;\n /** 閉じた時のhandler */\n onCloseDialog: (result: ConfirmDialogResult) => void;\n} & MuiDialogProps;\n\n/** MuiDialogを継承したコンテントのスクロール可能なDialogです。 */\nexport const ScrollableDialog = (props: Props) => {\n const {\n dialogTitle,\n dialogContent,\n dialogActions,\n open,\n onCloseDialog,\n ...dialogProps\n } = props;\n\n return (\n <Dialog\n {...dialogProps}\n open={open}\n onClose={() => onCloseDialog(\"cancel\")}\n scroll={\"paper\"}\n aria-labelledby=\"scroll-dialog-title\"\n aria-describedby=\"scroll-dialog-description\"\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n gap: \"5px\",\n alignItems: \"center\",\n }}\n >\n {dialogTitle}\n </DialogTitle>\n <DialogContent dividers={true}>\n <DialogContentText tabIndex={-1}>{dialogContent}</DialogContentText>\n </DialogContent>\n <DialogActions sx={{ gap: \"10px\" }}>{dialogActions}</DialogActions>\n </Dialog>\n );\n};\n\nexport default ScrollableDialog;\n"],"names":["ScrollableDialog","props","dialogTitle","dialogContent","dialogActions","open","onCloseDialog","dialogProps","jsxs","Dialog","jsx","DialogTitle","DialogContent","DialogContentText","DialogActions"],"mappings":";;AA0Ba,MAAAA,IAAmB,CAACC,MAAiB;AAC1C,QAAA;AAAA,IACJ,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,MAAAC;AAAA,IACA,eAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDN;AAGF,SAAA,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,MAAAF;AAAA,MACA,SAAS,MAAMC,EAAc,QAAQ;AAAA,MACrC,QAAQ;AAAA,MACR,mBAAgB;AAAA,MAChB,oBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,KAAK;AAAA,cACL,YAAY;AAAA,YACd;AAAA,YAEC,UAAAT;AAAA,UAAA;AAAA,QACH;AAAA,QACA,gBAAAQ,EAACE,KAAc,UAAU,IACvB,4BAACC,GAAkB,EAAA,UAAU,IAAK,UAAAV,EAAA,CAAc,EAClD,CAAA;AAAA,0BACCW,GAAc,EAAA,IAAI,EAAE,KAAK,UAAW,UAAcV,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACrD;AAEJ;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/components/ScrollableDialog/index.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n DialogProps as MuiDialogProps,\n} from \"@mui/material\";\n\nexport type ConfirmDialogResult = \"confirm\" | \"cancel\";\n\ntype Props = {\n /** ダイアログのタイトル */\n dialogTitle: ReactNode;\n /** ダイアログの内容 */\n dialogContent: ReactNode;\n /** ダイアログの処理ボタン(複数可) */\n dialogActions: ReactNode;\n /** ダイアログの表示状態 */\n open: boolean;\n /** 閉じた時のhandler */\n onCloseDialog: (result: ConfirmDialogResult) => void;\n} & MuiDialogProps;\n\n/** MuiDialogを継承したコンテントのスクロール可能なDialogです。 */\nexport const ScrollableDialog = (props: Props) => {\n const {\n dialogTitle,\n dialogContent,\n dialogActions,\n open,\n onCloseDialog,\n ...dialogProps\n } = props;\n\n return (\n <Dialog\n {...dialogProps}\n open={open}\n onClose={() => onCloseDialog(\"cancel\")}\n scroll={\"paper\"}\n aria-labelledby=\"scroll-dialog-title\"\n aria-describedby=\"scroll-dialog-description\"\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n gap: \"5px\",\n alignItems: \"center\",\n }}\n >\n {dialogTitle}\n </DialogTitle>\n <DialogContent dividers={true}>\n <DialogContentText tabIndex={-1}>{dialogContent}</DialogContentText>\n </DialogContent>\n <DialogActions sx={{ gap: \"10px\" }}>{dialogActions}</DialogActions>\n </Dialog>\n );\n};\n\nexport default ScrollableDialog;\n"],"names":["ScrollableDialog","props","dialogTitle","dialogContent","dialogActions","open","onCloseDialog","dialogProps","jsxs","Dialog","jsx","DialogTitle","DialogContent","DialogContentText","DialogActions"],"mappings":";;AA0BO,MAAMA,IAAmB,CAACC,MAAiB;AAChD,QAAM;AAAA,IACJ,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,MAAAC;AAAA,IACA,eAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDN;AAEJ,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,MAAAF;AAAA,MACA,SAAS,MAAMC,EAAc,QAAQ;AAAA,MACrC,QAAQ;AAAA,MACR,mBAAgB;AAAA,MAChB,oBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,KAAK;AAAA,cACL,YAAY;AAAA,YAAA;AAAA,YAGb,UAAAT;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,gBAAAQ,EAACE,KAAc,UAAU,IACvB,4BAACC,GAAA,EAAkB,UAAU,IAAK,UAAAV,EAAA,CAAc,EAAA,CAClD;AAAA,0BACCW,GAAA,EAAc,IAAI,EAAE,KAAK,OAAA,GAAW,UAAAV,EAAA,CAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGzD;"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("react/jsx-runtime"),s=require("react"),t=require("../../react.esm-CiMn0Rnx.cjs"),c=require("./index.cjs.js");describe("ScrollableDialog",()=>{it("renders correctly",()=>{const o="Test Title",n="Test Content",l=e.jsx("button",{children:"Test Action"}),{getByText:i}=t.render(e.jsx(c.ScrollableDialog,{dialogTitle:o,dialogContent:n,dialogActions:l,open:!0,onCloseDialog:()=>{}}));expect(i(o)).toBeInTheDocument(),expect(i(n)).toBeInTheDocument(),expect(i("Test Action")).toBeInTheDocument()}),it('calls onClose with "cancel" when the dialog is closed',()=>{const o=jest.fn();t.render(e.jsx(c.ScrollableDialog,{open:!0,dialogTitle:"Test Dialog",dialogContent:"This is a test dialog.",dialogActions:e.jsx("button",{onClick:()=>o("cancel"),children:"Cancel"}),onCloseDialog:o}));const n=t.screen.getByRole("button",{name:/cancel/i});t.fireEvent.click(n),expect(o).toHaveBeenCalledWith("cancel")}),it("displays the dialog when the open button is clicked",()=>{const o=()=>{const[n,l]=s.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>l(!0),children:"Open!"}),e.jsx(c.ScrollableDialog,{open:n,dialogTitle:"Test Dialog",dialogContent:"This is a test dialog.",dialogActions:e.jsx("button",{onClick:()=>{},children:"Close"}),onCloseDialog:()=>{}})]})};t.render(e.jsx(o,{})),expect(t.screen.queryByText("This is a test dialog.")).not.toBeInTheDocument(),t.fireEvent.click(t.screen.getByText("Open!")),expect(t.screen.getByText("This is a test dialog.")).toBeInTheDocument()})});
1
+ "use strict";const e=require("react/jsx-runtime"),s=require("react"),t=require("../../react.esm-BcRJ42eI.cjs"),c=require("./index.cjs.js");describe("ScrollableDialog",()=>{it("renders correctly",()=>{const o="Test Title",n="Test Content",l=e.jsx("button",{children:"Test Action"}),{getByText:i}=t.render(e.jsx(c.ScrollableDialog,{dialogTitle:o,dialogContent:n,dialogActions:l,open:!0,onCloseDialog:()=>{}}));expect(i(o)).toBeInTheDocument(),expect(i(n)).toBeInTheDocument(),expect(i("Test Action")).toBeInTheDocument()}),it('calls onClose with "cancel" when the dialog is closed',()=>{const o=jest.fn();t.render(e.jsx(c.ScrollableDialog,{open:!0,dialogTitle:"Test Dialog",dialogContent:"This is a test dialog.",dialogActions:e.jsx("button",{onClick:()=>o("cancel"),children:"Cancel"}),onCloseDialog:o}));const n=t.screen.getByRole("button",{name:/cancel/i});t.fireEvent.click(n),expect(o).toHaveBeenCalledWith("cancel")}),it("displays the dialog when the open button is clicked",()=>{const o=()=>{const[n,l]=s.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>l(!0),children:"Open!"}),e.jsx(c.ScrollableDialog,{open:n,dialogTitle:"Test Dialog",dialogContent:"This is a test dialog.",dialogActions:e.jsx("button",{onClick:()=>{},children:"Close"}),onCloseDialog:()=>{}})]})};t.render(e.jsx(o,{})),expect(t.screen.queryByText("This is a test dialog.")).not.toBeInTheDocument(),t.fireEvent.click(t.screen.getByText("Open!")),expect(t.screen.getByText("This is a test dialog.")).toBeInTheDocument()})});
2
2
  //# sourceMappingURL=index.test.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.cjs.js","sources":["../../../src/components/ScrollableDialog/index.test.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\n\nimport { ScrollableDialog } from \".\";\n\ndescribe(\"ScrollableDialog\", () => {\n it(\"renders correctly\", () => {\n const title = \"Test Title\";\n const content = \"Test Content\";\n const dialogActions = <button>Test Action</button>;\n\n const { getByText } = render(\n <ScrollableDialog\n dialogTitle={title}\n dialogContent={content}\n dialogActions={dialogActions}\n open={true}\n onCloseDialog={() => {}}\n />,\n );\n\n expect(getByText(title)).toBeInTheDocument();\n expect(getByText(content)).toBeInTheDocument();\n expect(getByText(\"Test Action\")).toBeInTheDocument();\n });\n\n it('calls onClose with \"cancel\" when the dialog is closed', () => {\n const handleClose = jest.fn();\n render(\n <ScrollableDialog\n open={true}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={\n <button onClick={() => handleClose(\"cancel\")}>Cancel</button>\n }\n onCloseDialog={handleClose}\n />,\n );\n\n const cancelButton = screen.getByRole(\"button\", { name: /cancel/i });\n fireEvent.click(cancelButton);\n\n expect(handleClose).toHaveBeenCalledWith(\"cancel\");\n });\n\n it(\"displays the dialog when the open button is clicked\", () => {\n const TestComponent = () => {\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <button onClick={() => setOpen(true)}>Open!</button>\n <ScrollableDialog\n open={open}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={<button onClick={() => {}}>Close</button>}\n onCloseDialog={() => {}}\n />\n </>\n );\n };\n render(<TestComponent />);\n\n // ダイアログがまだ表示されていないことを確認\n expect(\n screen.queryByText(\"This is a test dialog.\"),\n ).not.toBeInTheDocument();\n\n // Open! ボタンをクリック\n fireEvent.click(screen.getByText(\"Open!\"));\n\n // ダイアログが表示されていることを確認\n expect(screen.getByText(\"This is a test dialog.\")).toBeInTheDocument();\n });\n});\n"],"names":["title","content","dialogActions","jsx","getByText","render","ScrollableDialog","handleClose","cancelButton","screen","fireEvent","TestComponent","open","setOpen","useState","jsxs","Fragment"],"mappings":"2IAKA,SAAS,mBAAoB,IAAM,CACjC,GAAG,oBAAqB,IAAM,CAC5B,MAAMA,EAAQ,aACRC,EAAU,eACVC,EAAiBC,EAAAA,IAAA,SAAA,CAAO,SAAW,aAAA,CAAA,EAEnC,CAAE,UAAAC,GAAcC,EAAA,OACpBF,EAAA,IAACG,EAAA,iBAAA,CACC,YAAaN,EACb,cAAeC,EACf,cAAAC,EACA,KAAM,GACN,cAAe,IAAM,CAAA,CAAC,CAAA,CAE1B,EAEA,OAAOE,EAAUJ,CAAK,CAAC,EAAE,kBAAkB,EAC3C,OAAOI,EAAUH,CAAO,CAAC,EAAE,kBAAkB,EAC7C,OAAOG,EAAU,aAAa,CAAC,EAAE,kBAAkB,CAAA,CACpD,EAED,GAAG,wDAAyD,IAAM,CAC1D,MAAAG,EAAc,KAAK,GAAG,EAC5BF,EAAA,OACEF,EAAA,IAACG,EAAA,iBAAA,CACC,KAAM,GACN,YAAY,cACZ,cAAc,yBACd,oBACG,SAAO,CAAA,QAAS,IAAMC,EAAY,QAAQ,EAAG,SAAM,SAAA,EAEtD,cAAeA,CAAA,CAAA,CAEnB,EAEA,MAAMC,EAAeC,EAAAA,OAAO,UAAU,SAAU,CAAE,KAAM,UAAW,EACnEC,EAAA,UAAU,MAAMF,CAAY,EAErB,OAAAD,CAAW,EAAE,qBAAqB,QAAQ,CAAA,CAClD,EAED,GAAG,sDAAuD,IAAM,CAC9D,MAAMI,EAAgB,IAAM,CAC1B,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAEtC,OAEIC,EAAA,KAAAC,WAAA,CAAA,SAAA,CAAAb,MAAC,UAAO,QAAS,IAAMU,EAAQ,EAAI,EAAG,SAAK,QAAA,EAC3CV,EAAA,IAACG,EAAA,iBAAA,CACC,KAAAM,EACA,YAAY,cACZ,cAAc,yBACd,cAAeT,EAAA,IAAC,SAAO,CAAA,QAAS,IAAM,CAAA,EAAI,SAAK,QAAA,EAC/C,cAAe,IAAM,CAAA,CAAC,CAAA,CACxB,EACF,CAEJ,EACOE,EAAAA,OAAAF,EAAA,IAACQ,IAAc,CAAE,EAGxB,OACEF,EAAA,OAAO,YAAY,wBAAwB,CAAA,EAC3C,IAAI,kBAAkB,EAGxBC,EAAAA,UAAU,MAAMD,EAAAA,OAAO,UAAU,OAAO,CAAC,EAGzC,OAAOA,EAAAA,OAAO,UAAU,wBAAwB,CAAC,EAAE,kBAAkB,CAAA,CACtE,CACH,CAAC"}
1
+ {"version":3,"file":"index.test.cjs.js","sources":["../../../src/components/ScrollableDialog/index.test.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\n\nimport { ScrollableDialog } from \".\";\n\ndescribe(\"ScrollableDialog\", () => {\n it(\"renders correctly\", () => {\n const title = \"Test Title\";\n const content = \"Test Content\";\n const dialogActions = <button>Test Action</button>;\n\n const { getByText } = render(\n <ScrollableDialog\n dialogTitle={title}\n dialogContent={content}\n dialogActions={dialogActions}\n open={true}\n onCloseDialog={() => {}}\n />,\n );\n\n expect(getByText(title)).toBeInTheDocument();\n expect(getByText(content)).toBeInTheDocument();\n expect(getByText(\"Test Action\")).toBeInTheDocument();\n });\n\n it('calls onClose with \"cancel\" when the dialog is closed', () => {\n const handleClose = jest.fn();\n render(\n <ScrollableDialog\n open={true}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={\n <button onClick={() => handleClose(\"cancel\")}>Cancel</button>\n }\n onCloseDialog={handleClose}\n />,\n );\n\n const cancelButton = screen.getByRole(\"button\", { name: /cancel/i });\n fireEvent.click(cancelButton);\n\n expect(handleClose).toHaveBeenCalledWith(\"cancel\");\n });\n\n it(\"displays the dialog when the open button is clicked\", () => {\n const TestComponent = () => {\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <button onClick={() => setOpen(true)}>Open!</button>\n <ScrollableDialog\n open={open}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={<button onClick={() => {}}>Close</button>}\n onCloseDialog={() => {}}\n />\n </>\n );\n };\n render(<TestComponent />);\n\n // ダイアログがまだ表示されていないことを確認\n expect(\n screen.queryByText(\"This is a test dialog.\"),\n ).not.toBeInTheDocument();\n\n // Open! ボタンをクリック\n fireEvent.click(screen.getByText(\"Open!\"));\n\n // ダイアログが表示されていることを確認\n expect(screen.getByText(\"This is a test dialog.\")).toBeInTheDocument();\n });\n});\n"],"names":["title","content","dialogActions","jsx","getByText","render","ScrollableDialog","handleClose","cancelButton","screen","fireEvent","TestComponent","open","setOpen","useState","jsxs","Fragment"],"mappings":"2IAKA,SAAS,mBAAoB,IAAM,CACjC,GAAG,oBAAqB,IAAM,CAC5B,MAAMA,EAAQ,aACRC,EAAU,eACVC,EAAgBC,EAAAA,IAAC,SAAA,CAAO,SAAA,aAAA,CAAW,EAEnC,CAAE,UAAAC,GAAcC,EAAAA,OACpBF,EAAAA,IAACG,EAAAA,iBAAA,CACC,YAAaN,EACb,cAAeC,EACf,cAAAC,EACA,KAAM,GACN,cAAe,IAAM,CAAC,CAAA,CAAA,CACxB,EAGF,OAAOE,EAAUJ,CAAK,CAAC,EAAE,kBAAA,EACzB,OAAOI,EAAUH,CAAO,CAAC,EAAE,kBAAA,EAC3B,OAAOG,EAAU,aAAa,CAAC,EAAE,kBAAA,CACnC,CAAC,EAED,GAAG,wDAAyD,IAAM,CAChE,MAAMG,EAAc,KAAK,GAAA,EACzBF,EAAAA,OACEF,EAAAA,IAACG,EAAAA,iBAAA,CACC,KAAM,GACN,YAAY,cACZ,cAAc,yBACd,oBACG,SAAA,CAAO,QAAS,IAAMC,EAAY,QAAQ,EAAG,SAAA,SAAM,EAEtD,cAAeA,CAAA,CAAA,CACjB,EAGF,MAAMC,EAAeC,EAAAA,OAAO,UAAU,SAAU,CAAE,KAAM,UAAW,EACnEC,EAAAA,UAAU,MAAMF,CAAY,EAE5B,OAAOD,CAAW,EAAE,qBAAqB,QAAQ,CACnD,CAAC,EAED,GAAG,sDAAuD,IAAM,CAC9D,MAAMI,EAAgB,IAAM,CAC1B,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAEtC,OACEC,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAb,MAAC,UAAO,QAAS,IAAMU,EAAQ,EAAI,EAAG,SAAA,QAAK,EAC3CV,EAAAA,IAACG,EAAAA,iBAAA,CACC,KAAAM,EACA,YAAY,cACZ,cAAc,yBACd,cAAeT,EAAAA,IAAC,SAAA,CAAO,QAAS,IAAM,CAAC,EAAG,SAAA,QAAK,EAC/C,cAAe,IAAM,CAAC,CAAA,CAAA,CACxB,EACF,CAEJ,EACAE,EAAAA,OAAOF,EAAAA,IAACQ,IAAc,CAAE,EAGxB,OACEF,EAAAA,OAAO,YAAY,wBAAwB,CAAA,EAC3C,IAAI,kBAAA,EAGNC,EAAAA,UAAU,MAAMD,EAAAA,OAAO,UAAU,OAAO,CAAC,EAGzC,OAAOA,EAAAA,OAAO,UAAU,wBAAwB,CAAC,EAAE,kBAAA,CACrD,CAAC,CACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as e, jsxs as r, Fragment as d } from "react/jsx-runtime";
2
2
  import { useState as g } from "react";
3
- import { r as c, s as n, f as a } from "../../react.esm-2FJSSo-S.js";
3
+ import { r as c, s as n, f as a } from "../../react.esm-DVhZgPrH.js";
4
4
  import { ScrollableDialog as s } from "./index.es.js";
5
5
  describe("ScrollableDialog", () => {
6
6
  it("renders correctly", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.es.js","sources":["../../../src/components/ScrollableDialog/index.test.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\n\nimport { ScrollableDialog } from \".\";\n\ndescribe(\"ScrollableDialog\", () => {\n it(\"renders correctly\", () => {\n const title = \"Test Title\";\n const content = \"Test Content\";\n const dialogActions = <button>Test Action</button>;\n\n const { getByText } = render(\n <ScrollableDialog\n dialogTitle={title}\n dialogContent={content}\n dialogActions={dialogActions}\n open={true}\n onCloseDialog={() => {}}\n />,\n );\n\n expect(getByText(title)).toBeInTheDocument();\n expect(getByText(content)).toBeInTheDocument();\n expect(getByText(\"Test Action\")).toBeInTheDocument();\n });\n\n it('calls onClose with \"cancel\" when the dialog is closed', () => {\n const handleClose = jest.fn();\n render(\n <ScrollableDialog\n open={true}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={\n <button onClick={() => handleClose(\"cancel\")}>Cancel</button>\n }\n onCloseDialog={handleClose}\n />,\n );\n\n const cancelButton = screen.getByRole(\"button\", { name: /cancel/i });\n fireEvent.click(cancelButton);\n\n expect(handleClose).toHaveBeenCalledWith(\"cancel\");\n });\n\n it(\"displays the dialog when the open button is clicked\", () => {\n const TestComponent = () => {\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <button onClick={() => setOpen(true)}>Open!</button>\n <ScrollableDialog\n open={open}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={<button onClick={() => {}}>Close</button>}\n onCloseDialog={() => {}}\n />\n </>\n );\n };\n render(<TestComponent />);\n\n // ダイアログがまだ表示されていないことを確認\n expect(\n screen.queryByText(\"This is a test dialog.\"),\n ).not.toBeInTheDocument();\n\n // Open! ボタンをクリック\n fireEvent.click(screen.getByText(\"Open!\"));\n\n // ダイアログが表示されていることを確認\n expect(screen.getByText(\"This is a test dialog.\")).toBeInTheDocument();\n });\n});\n"],"names":["title","content","dialogActions","jsx","getByText","render","ScrollableDialog","handleClose","cancelButton","screen","fireEvent","open","setOpen","useState","jsxs","Fragment"],"mappings":";;;;AAKA,SAAS,oBAAoB,MAAM;AACjC,KAAG,qBAAqB,MAAM;AAC5B,UAAMA,IAAQ,cACRC,IAAU,gBACVC,IAAiB,gBAAAC,EAAA,UAAA,EAAO,UAAW,cAAA,CAAA,GAEnC,EAAE,WAAAC,MAAcC;AAAA,MACpB,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,aAAaN;AAAA,UACb,eAAeC;AAAA,UACf,eAAAC;AAAA,UACA,MAAM;AAAA,UACN,eAAe,MAAM;AAAA,UAAA;AAAA,QAAC;AAAA,MAAA;AAAA,IAE1B;AAEA,WAAOE,EAAUJ,CAAK,CAAC,EAAE,kBAAkB,GAC3C,OAAOI,EAAUH,CAAO,CAAC,EAAE,kBAAkB,GAC7C,OAAOG,EAAU,aAAa,CAAC,EAAE,kBAAkB;AAAA,EAAA,CACpD,GAED,GAAG,yDAAyD,MAAM;AAC1D,UAAAG,IAAc,KAAK,GAAG;AAC5B,IAAAF;AAAA,MACE,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,iCACG,UAAO,EAAA,SAAS,MAAMC,EAAY,QAAQ,GAAG,UAAM,UAAA;AAAA,UAEtD,eAAeA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEnB;AAEA,UAAMC,IAAeC,EAAO,UAAU,UAAU,EAAE,MAAM,WAAW;AACnE,IAAAC,EAAU,MAAMF,CAAY,GAErB,OAAAD,CAAW,EAAE,qBAAqB,QAAQ;AAAA,EAAA,CAClD,GAED,GAAG,uDAAuD,MAAM;AAiBvD,IAAAF,EAAA,gBAAAF,EAhBe,MAAM;AAC1B,YAAM,CAACQ,GAAMC,CAAO,IAAIC,EAAS,EAAK;AAEtC,aAEI,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,QAAA,gBAAAZ,EAAC,YAAO,SAAS,MAAMS,EAAQ,EAAI,GAAG,UAAK,SAAA;AAAA,QAC3C,gBAAAT;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAAK;AAAA,YACA,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,eAAe,gBAAAR,EAAC,UAAO,EAAA,SAAS,MAAM;AAAA,YAAA,GAAI,UAAK,SAAA;AAAA,YAC/C,eAAe,MAAM;AAAA,YAAA;AAAA,UAAC;AAAA,QAAA;AAAA,MACxB,GACF;AAAA,IAEJ,KACsB,CAAE,GAGxB;AAAA,MACEM,EAAO,YAAY,wBAAwB;AAAA,IAAA,EAC3C,IAAI,kBAAkB,GAGxBC,EAAU,MAAMD,EAAO,UAAU,OAAO,CAAC,GAGzC,OAAOA,EAAO,UAAU,wBAAwB,CAAC,EAAE,kBAAkB;AAAA,EAAA,CACtE;AACH,CAAC;"}
1
+ {"version":3,"file":"index.test.es.js","sources":["../../../src/components/ScrollableDialog/index.test.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\n\nimport { ScrollableDialog } from \".\";\n\ndescribe(\"ScrollableDialog\", () => {\n it(\"renders correctly\", () => {\n const title = \"Test Title\";\n const content = \"Test Content\";\n const dialogActions = <button>Test Action</button>;\n\n const { getByText } = render(\n <ScrollableDialog\n dialogTitle={title}\n dialogContent={content}\n dialogActions={dialogActions}\n open={true}\n onCloseDialog={() => {}}\n />,\n );\n\n expect(getByText(title)).toBeInTheDocument();\n expect(getByText(content)).toBeInTheDocument();\n expect(getByText(\"Test Action\")).toBeInTheDocument();\n });\n\n it('calls onClose with \"cancel\" when the dialog is closed', () => {\n const handleClose = jest.fn();\n render(\n <ScrollableDialog\n open={true}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={\n <button onClick={() => handleClose(\"cancel\")}>Cancel</button>\n }\n onCloseDialog={handleClose}\n />,\n );\n\n const cancelButton = screen.getByRole(\"button\", { name: /cancel/i });\n fireEvent.click(cancelButton);\n\n expect(handleClose).toHaveBeenCalledWith(\"cancel\");\n });\n\n it(\"displays the dialog when the open button is clicked\", () => {\n const TestComponent = () => {\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <button onClick={() => setOpen(true)}>Open!</button>\n <ScrollableDialog\n open={open}\n dialogTitle=\"Test Dialog\"\n dialogContent=\"This is a test dialog.\"\n dialogActions={<button onClick={() => {}}>Close</button>}\n onCloseDialog={() => {}}\n />\n </>\n );\n };\n render(<TestComponent />);\n\n // ダイアログがまだ表示されていないことを確認\n expect(\n screen.queryByText(\"This is a test dialog.\"),\n ).not.toBeInTheDocument();\n\n // Open! ボタンをクリック\n fireEvent.click(screen.getByText(\"Open!\"));\n\n // ダイアログが表示されていることを確認\n expect(screen.getByText(\"This is a test dialog.\")).toBeInTheDocument();\n });\n});\n"],"names":["title","content","dialogActions","jsx","getByText","render","ScrollableDialog","handleClose","cancelButton","screen","fireEvent","open","setOpen","useState","jsxs","Fragment"],"mappings":";;;;AAKA,SAAS,oBAAoB,MAAM;AACjC,KAAG,qBAAqB,MAAM;AAC5B,UAAMA,IAAQ,cACRC,IAAU,gBACVC,IAAgB,gBAAAC,EAAC,UAAA,EAAO,UAAA,cAAA,CAAW,GAEnC,EAAE,WAAAC,MAAcC;AAAA,MACpB,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,aAAaN;AAAA,UACb,eAAeC;AAAA,UACf,eAAAC;AAAA,UACA,MAAM;AAAA,UACN,eAAe,MAAM;AAAA,UAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACxB;AAGF,WAAOE,EAAUJ,CAAK,CAAC,EAAE,kBAAA,GACzB,OAAOI,EAAUH,CAAO,CAAC,EAAE,kBAAA,GAC3B,OAAOG,EAAU,aAAa,CAAC,EAAE,kBAAA;AAAA,EACnC,CAAC,GAED,GAAG,yDAAyD,MAAM;AAChE,UAAMG,IAAc,KAAK,GAAA;AACzB,IAAAF;AAAA,MACE,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,iCACG,UAAA,EAAO,SAAS,MAAMC,EAAY,QAAQ,GAAG,UAAA,UAAM;AAAA,UAEtD,eAAeA;AAAA,QAAA;AAAA,MAAA;AAAA,IACjB;AAGF,UAAMC,IAAeC,EAAO,UAAU,UAAU,EAAE,MAAM,WAAW;AACnE,IAAAC,EAAU,MAAMF,CAAY,GAE5B,OAAOD,CAAW,EAAE,qBAAqB,QAAQ;AAAA,EACnD,CAAC,GAED,GAAG,uDAAuD,MAAM;AAiB9D,IAAAF,EAAO,gBAAAF,EAhBe,MAAM;AAC1B,YAAM,CAACQ,GAAMC,CAAO,IAAIC,EAAS,EAAK;AAEtC,aACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAZ,EAAC,YAAO,SAAS,MAAMS,EAAQ,EAAI,GAAG,UAAA,SAAK;AAAA,QAC3C,gBAAAT;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAAK;AAAA,YACA,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,eAAe,gBAAAR,EAAC,UAAA,EAAO,SAAS,MAAM;AAAA,YAAC,GAAG,UAAA,SAAK;AAAA,YAC/C,eAAe,MAAM;AAAA,YAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACxB,GACF;AAAA,IAEJ,KACsB,CAAE,GAGxB;AAAA,MACEM,EAAO,YAAY,wBAAwB;AAAA,IAAA,EAC3C,IAAI,kBAAA,GAGNC,EAAU,MAAMD,EAAO,UAAU,OAAO,CAAC,GAGzC,OAAOA,EAAO,UAAU,wBAAwB,CAAC,EAAE,kBAAA;AAAA,EACrD,CAAC;AACH,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Button,\n} from \"@mui/material\";\nimport { type FieldValues, type useForm } from \"react-hook-form\";\n\nimport { FlexButtons } from \"../FlexButtons\";\nimport styles from \"./index.module.scss\";\n\ntype Props<T extends FieldValues = FieldValues> = {\n headerTitle?: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n handleSubmit: ReturnType<typeof useForm<T>>[\"handleSubmit\"];\n onSubmitSearch: (data: T) => void;\n onClickClear?: () => void;\n};\n\nexport const SearchForm = <T extends FieldValues = FieldValues>({\n headerTitle,\n children,\n defaultExpanded,\n handleSubmit,\n onSubmitSearch,\n onClickClear,\n}: Props<T>) => {\n const handleClear = () => {\n if (onClickClear) {\n onClickClear();\n }\n };\n\n const handle = handleSubmit((data) => {\n onSubmitSearch(data);\n });\n\n return (\n <Accordion defaultExpanded={defaultExpanded} className={styles.container}>\n <AccordionSummary\n className={styles.header}\n aria-controls=\"panel-content\"\n expandIcon={<ExpandMore />}\n >\n {headerTitle || \"絞り込み\"}\n </AccordionSummary>\n <AccordionDetails className={styles.mainContent}>\n <form className={styles.searchForm} onSubmit={handle}>\n <div className={styles.inputItems}>{children}</div>\n <FlexButtons position=\"flex-end\">\n <Button\n onClick={handleClear}\n variant=\"outlined\"\n sx={{\n p: 1,\n background: \"white\",\n color: \"#6672e8\",\n borderBlockColor: \"#6672e8\",\n width: \"128px\",\n }}\n >\n クリア\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n startIcon={<Search />}\n sx={{\n background: \"#6672e8\",\n color: \"white\",\n \":hover\": { background: \"#6672e8\" },\n width: \"128px\",\n }}\n >\n 検索\n </Button>\n </FlexButtons>\n </form>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SearchForm;\n"],"names":["SearchForm","headerTitle","children","defaultExpanded","handleSubmit","onSubmitSearch","onClickClear","handleClear","handle","data","jsxs","Accordion","styles","jsx","AccordionSummary","ExpandMore","AccordionDetails","FlexButtons","Button","Search"],"mappings":"8aAsBaA,EAAa,CAAsC,CAC9D,YAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,aAAAC,EACA,eAAAC,EACA,aAAAC,CACF,IAAgB,CACd,MAAMC,EAAc,IAAM,CACpBD,GACWA,EAAA,CAEjB,EAEME,EAASJ,EAAcK,GAAS,CACpCJ,EAAeI,CAAI,CAAA,CACpB,EAED,OACGC,EAAAA,KAAAC,EAAAA,UAAA,CAAU,gBAAAR,EAAkC,UAAWS,EAAO,UAC7D,SAAA,CAAAC,EAAA,IAACC,EAAA,iBAAA,CACC,UAAWF,EAAO,OAClB,gBAAc,gBACd,iBAAaG,EAAW,WAAA,EAAA,EAEvB,SAAed,GAAA,MAAA,CAClB,EACAY,EAAA,IAACG,EAAiB,iBAAA,CAAA,UAAWJ,EAAO,YAClC,SAACF,EAAAA,KAAA,OAAA,CAAK,UAAWE,EAAO,WAAY,SAAUJ,EAC5C,SAAA,CAAAK,EAAA,IAAC,MAAI,CAAA,UAAWD,EAAO,WAAa,SAAAV,EAAS,EAC7CQ,EAAAA,KAACO,EAAAA,YAAY,CAAA,SAAS,WACpB,SAAA,CAAAJ,EAAA,IAACK,EAAA,OAAA,CACC,QAASX,EACT,QAAQ,WACR,GAAI,CACF,EAAG,EACH,WAAY,QACZ,MAAO,UACP,iBAAkB,UAClB,MAAO,OACT,EACD,SAAA,KAAA,CAED,EACAM,EAAA,IAACK,EAAA,OAAA,CACC,KAAK,SACL,QAAQ,YACR,gBAAYC,EAAO,OAAA,EAAA,EACnB,GAAI,CACF,WAAY,UACZ,MAAO,QACP,SAAU,CAAE,WAAY,SAAU,EAClC,MAAO,OACT,EACD,SAAA,IAAA,CAAA,CAED,CACF,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EACF,CAEJ"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Button,\n} from \"@mui/material\";\nimport { type FieldValues, type useForm } from \"react-hook-form\";\n\nimport { FlexButtons } from \"../FlexButtons\";\nimport styles from \"./index.module.scss\";\n\ntype Props<T extends FieldValues = FieldValues> = {\n headerTitle?: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n handleSubmit: ReturnType<typeof useForm<T>>[\"handleSubmit\"];\n onSubmitSearch: (data: T) => void;\n onClickClear?: () => void;\n};\n\nexport const SearchForm = <T extends FieldValues = FieldValues>({\n headerTitle,\n children,\n defaultExpanded,\n handleSubmit,\n onSubmitSearch,\n onClickClear,\n}: Props<T>) => {\n const handleClear = () => {\n if (onClickClear) {\n onClickClear();\n }\n };\n\n const handle = handleSubmit((data) => {\n onSubmitSearch(data);\n });\n\n return (\n <Accordion defaultExpanded={defaultExpanded} className={styles.container}>\n <AccordionSummary\n className={styles.header}\n aria-controls=\"panel-content\"\n expandIcon={<ExpandMore />}\n >\n {headerTitle || \"絞り込み\"}\n </AccordionSummary>\n <AccordionDetails className={styles.mainContent}>\n <form className={styles.searchForm} onSubmit={handle}>\n <div className={styles.inputItems}>{children}</div>\n <FlexButtons position=\"flex-end\">\n <Button\n onClick={handleClear}\n variant=\"outlined\"\n sx={{\n p: 1,\n background: \"white\",\n color: \"#6672e8\",\n borderBlockColor: \"#6672e8\",\n width: \"128px\",\n }}\n >\n クリア\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n startIcon={<Search />}\n sx={{\n background: \"#6672e8\",\n color: \"white\",\n \":hover\": { background: \"#6672e8\" },\n width: \"128px\",\n }}\n >\n 検索\n </Button>\n </FlexButtons>\n </form>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SearchForm;\n"],"names":["SearchForm","headerTitle","children","defaultExpanded","handleSubmit","onSubmitSearch","onClickClear","handleClear","handle","data","jsxs","Accordion","styles","jsx","AccordionSummary","ExpandMore","AccordionDetails","FlexButtons","Button","Search"],"mappings":"8aAsBaA,EAAa,CAAsC,CAC9D,YAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,aAAAC,EACA,eAAAC,EACA,aAAAC,CACF,IAAgB,CACd,MAAMC,EAAc,IAAM,CACpBD,GACFA,EAAA,CAEJ,EAEME,EAASJ,EAAcK,GAAS,CACpCJ,EAAeI,CAAI,CACrB,CAAC,EAED,OACEC,EAAAA,KAACC,EAAAA,UAAA,CAAU,gBAAAR,EAAkC,UAAWS,EAAO,UAC7D,SAAA,CAAAC,EAAAA,IAACC,EAAAA,iBAAA,CACC,UAAWF,EAAO,OAClB,gBAAc,gBACd,iBAAaG,EAAAA,WAAA,EAAW,EAEvB,SAAAd,GAAe,MAAA,CAAA,EAElBY,EAAAA,IAACG,EAAAA,iBAAA,CAAiB,UAAWJ,EAAO,YAClC,SAAAF,EAAAA,KAAC,OAAA,CAAK,UAAWE,EAAO,WAAY,SAAUJ,EAC5C,SAAA,CAAAK,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAO,WAAa,SAAAV,EAAS,EAC7CQ,EAAAA,KAACO,EAAAA,YAAA,CAAY,SAAS,WACpB,SAAA,CAAAJ,EAAAA,IAACK,EAAAA,OAAA,CACC,QAASX,EACT,QAAQ,WACR,GAAI,CACF,EAAG,EACH,WAAY,QACZ,MAAO,UACP,iBAAkB,UAClB,MAAO,OAAA,EAEV,SAAA,KAAA,CAAA,EAGDM,EAAAA,IAACK,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,YACR,gBAAYC,EAAAA,OAAA,EAAO,EACnB,GAAI,CACF,WAAY,UACZ,MAAO,QACP,SAAU,CAAE,WAAY,SAAA,EACxB,MAAO,OAAA,EAEV,SAAA,IAAA,CAAA,CAED,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Button,\n} from \"@mui/material\";\nimport { type FieldValues, type useForm } from \"react-hook-form\";\n\nimport { FlexButtons } from \"../FlexButtons\";\nimport styles from \"./index.module.scss\";\n\ntype Props<T extends FieldValues = FieldValues> = {\n headerTitle?: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n handleSubmit: ReturnType<typeof useForm<T>>[\"handleSubmit\"];\n onSubmitSearch: (data: T) => void;\n onClickClear?: () => void;\n};\n\nexport const SearchForm = <T extends FieldValues = FieldValues>({\n headerTitle,\n children,\n defaultExpanded,\n handleSubmit,\n onSubmitSearch,\n onClickClear,\n}: Props<T>) => {\n const handleClear = () => {\n if (onClickClear) {\n onClickClear();\n }\n };\n\n const handle = handleSubmit((data) => {\n onSubmitSearch(data);\n });\n\n return (\n <Accordion defaultExpanded={defaultExpanded} className={styles.container}>\n <AccordionSummary\n className={styles.header}\n aria-controls=\"panel-content\"\n expandIcon={<ExpandMore />}\n >\n {headerTitle || \"絞り込み\"}\n </AccordionSummary>\n <AccordionDetails className={styles.mainContent}>\n <form className={styles.searchForm} onSubmit={handle}>\n <div className={styles.inputItems}>{children}</div>\n <FlexButtons position=\"flex-end\">\n <Button\n onClick={handleClear}\n variant=\"outlined\"\n sx={{\n p: 1,\n background: \"white\",\n color: \"#6672e8\",\n borderBlockColor: \"#6672e8\",\n width: \"128px\",\n }}\n >\n クリア\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n startIcon={<Search />}\n sx={{\n background: \"#6672e8\",\n color: \"white\",\n \":hover\": { background: \"#6672e8\" },\n width: \"128px\",\n }}\n >\n 検索\n </Button>\n </FlexButtons>\n </form>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SearchForm;\n"],"names":["SearchForm","headerTitle","children","defaultExpanded","handleSubmit","onSubmitSearch","onClickClear","handleClear","handle","data","jsxs","Accordion","styles","jsx","AccordionSummary","ExpandMore","AccordionDetails","FlexButtons","Button","Search"],"mappings":";;;;;;;;;;GAsBaA,IAAa,CAAsC;AAAA,EAC9D,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,MAAgB;AACd,QAAMC,IAAc,MAAM;AACxB,IAAID,KACWA,EAAA;AAAA,EAEjB,GAEME,IAASJ,EAAa,CAACK,MAAS;AACpC,IAAAJ,EAAeI,CAAI;AAAA,EAAA,CACpB;AAED,SACG,gBAAAC,EAAAC,GAAA,EAAU,iBAAAR,GAAkC,WAAWS,EAAO,WAC7D,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAWF,EAAO;AAAA,QAClB,iBAAc;AAAA,QACd,8BAAaG,GAAW,EAAA;AAAA,QAEvB,UAAed,KAAA;AAAA,MAAA;AAAA,IAClB;AAAA,IACA,gBAAAY,EAACG,GAAiB,EAAA,WAAWJ,EAAO,aAClC,UAAC,gBAAAF,EAAA,QAAA,EAAK,WAAWE,EAAO,YAAY,UAAUJ,GAC5C,UAAA;AAAA,MAAA,gBAAAK,EAAC,OAAI,EAAA,WAAWD,EAAO,YAAa,UAAAV,GAAS;AAAA,MAC7C,gBAAAQ,EAACO,GAAY,EAAA,UAAS,YACpB,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,SAASX;AAAA,YACT,SAAQ;AAAA,YACR,IAAI;AAAA,cACF,GAAG;AAAA,cACH,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,kBAAkB;AAAA,cAClB,OAAO;AAAA,YACT;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAED;AAAA,QACA,gBAAAM;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,6BAAYC,GAAO,EAAA;AAAA,YACnB,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,UAAU,EAAE,YAAY,UAAU;AAAA,cAClC,OAAO;AAAA,YACT;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EACF,CAAA;AAAA,IAAA,EAAA,CACF,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Button,\n} from \"@mui/material\";\nimport { type FieldValues, type useForm } from \"react-hook-form\";\n\nimport { FlexButtons } from \"../FlexButtons\";\nimport styles from \"./index.module.scss\";\n\ntype Props<T extends FieldValues = FieldValues> = {\n headerTitle?: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n handleSubmit: ReturnType<typeof useForm<T>>[\"handleSubmit\"];\n onSubmitSearch: (data: T) => void;\n onClickClear?: () => void;\n};\n\nexport const SearchForm = <T extends FieldValues = FieldValues>({\n headerTitle,\n children,\n defaultExpanded,\n handleSubmit,\n onSubmitSearch,\n onClickClear,\n}: Props<T>) => {\n const handleClear = () => {\n if (onClickClear) {\n onClickClear();\n }\n };\n\n const handle = handleSubmit((data) => {\n onSubmitSearch(data);\n });\n\n return (\n <Accordion defaultExpanded={defaultExpanded} className={styles.container}>\n <AccordionSummary\n className={styles.header}\n aria-controls=\"panel-content\"\n expandIcon={<ExpandMore />}\n >\n {headerTitle || \"絞り込み\"}\n </AccordionSummary>\n <AccordionDetails className={styles.mainContent}>\n <form className={styles.searchForm} onSubmit={handle}>\n <div className={styles.inputItems}>{children}</div>\n <FlexButtons position=\"flex-end\">\n <Button\n onClick={handleClear}\n variant=\"outlined\"\n sx={{\n p: 1,\n background: \"white\",\n color: \"#6672e8\",\n borderBlockColor: \"#6672e8\",\n width: \"128px\",\n }}\n >\n クリア\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n startIcon={<Search />}\n sx={{\n background: \"#6672e8\",\n color: \"white\",\n \":hover\": { background: \"#6672e8\" },\n width: \"128px\",\n }}\n >\n 検索\n </Button>\n </FlexButtons>\n </form>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SearchForm;\n"],"names":["SearchForm","headerTitle","children","defaultExpanded","handleSubmit","onSubmitSearch","onClickClear","handleClear","handle","data","jsxs","Accordion","styles","jsx","AccordionSummary","ExpandMore","AccordionDetails","FlexButtons","Button","Search"],"mappings":";;;;;;;;;;GAsBaA,IAAa,CAAsC;AAAA,EAC9D,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,MAAgB;AACd,QAAMC,IAAc,MAAM;AACxB,IAAID,KACFA,EAAA;AAAA,EAEJ,GAEME,IAASJ,EAAa,CAACK,MAAS;AACpC,IAAAJ,EAAeI,CAAI;AAAA,EACrB,CAAC;AAED,SACE,gBAAAC,EAACC,GAAA,EAAU,iBAAAR,GAAkC,WAAWS,EAAO,WAC7D,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAWF,EAAO;AAAA,QAClB,iBAAc;AAAA,QACd,8BAAaG,GAAA,EAAW;AAAA,QAEvB,UAAAd,KAAe;AAAA,MAAA;AAAA,IAAA;AAAA,IAElB,gBAAAY,EAACG,GAAA,EAAiB,WAAWJ,EAAO,aAClC,UAAA,gBAAAF,EAAC,QAAA,EAAK,WAAWE,EAAO,YAAY,UAAUJ,GAC5C,UAAA;AAAA,MAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWD,EAAO,YAAa,UAAAV,GAAS;AAAA,MAC7C,gBAAAQ,EAACO,GAAA,EAAY,UAAS,YACpB,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,SAASX;AAAA,YACT,SAAQ;AAAA,YACR,IAAI;AAAA,cACF,GAAG;AAAA,cACH,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,kBAAkB;AAAA,cAClB,OAAO;AAAA,YAAA;AAAA,YAEV,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAM;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,6BAAYC,GAAA,EAAO;AAAA,YACnB,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,UAAU,EAAE,YAAY,UAAA;AAAA,cACxB,OAAO;AAAA,YAAA;AAAA,YAEV,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("react/jsx-runtime"),e=require("../../react.esm-CiMn0Rnx.cjs"),o=require("../../index-CCbJ_2yU.cjs");describe("SelectBox component",()=>{const r=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"}],c="test-selectbox",l="test-name";it("renders the select box with correct options",()=>{e.render(n.jsx(o.SelectBox,{id:c,name:l,values:r}));const t=e.screen.getByRole("combobox");expect(t).toHaveAttribute("id",c),expect(t).toHaveAttribute("name",l),r.forEach(({label:s,value:a})=>{const x=e.screen.getByText(s);expect(x).toBeInTheDocument(),expect(x).toHaveAttribute("value",a)})}),it("shows error message when provided",()=>{const t="Error message";e.render(n.jsx(o.SelectBox,{values:r,errorMessage:t}));const s=e.screen.getByText(t);expect(s).toBeInTheDocument()}),it("does not show error message when not provided",()=>{e.render(n.jsx(o.SelectBox,{values:r}));const t=e.screen.queryByText(/Error message/i);expect(t).not.toBeInTheDocument()}),it("applies the error class to select box when errorMessage is provided",()=>{e.render(n.jsx(o.SelectBox,{values:r,errorMessage:"Error message"}));const s=e.screen.getByRole("combobox");expect(s).toHaveClass(o.styles.error)}),it("does not apply the error class to select box when errorMessage is not provided",()=>{e.render(n.jsx(o.SelectBox,{values:r}));const t=e.screen.getByRole("combobox");expect(t).not.toHaveClass(o.styles.error)})});
1
+ "use strict";const n=require("react/jsx-runtime"),e=require("../../react.esm-BcRJ42eI.cjs"),o=require("../../index-CCbJ_2yU.cjs");describe("SelectBox component",()=>{const r=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"}],c="test-selectbox",l="test-name";it("renders the select box with correct options",()=>{e.render(n.jsx(o.SelectBox,{id:c,name:l,values:r}));const t=e.screen.getByRole("combobox");expect(t).toHaveAttribute("id",c),expect(t).toHaveAttribute("name",l),r.forEach(({label:s,value:a})=>{const x=e.screen.getByText(s);expect(x).toBeInTheDocument(),expect(x).toHaveAttribute("value",a)})}),it("shows error message when provided",()=>{const t="Error message";e.render(n.jsx(o.SelectBox,{values:r,errorMessage:t}));const s=e.screen.getByText(t);expect(s).toBeInTheDocument()}),it("does not show error message when not provided",()=>{e.render(n.jsx(o.SelectBox,{values:r}));const t=e.screen.queryByText(/Error message/i);expect(t).not.toBeInTheDocument()}),it("applies the error class to select box when errorMessage is provided",()=>{e.render(n.jsx(o.SelectBox,{values:r,errorMessage:"Error message"}));const s=e.screen.getByRole("combobox");expect(s).toHaveClass(o.styles.error)}),it("does not apply the error class to select box when errorMessage is not provided",()=>{e.render(n.jsx(o.SelectBox,{values:r}));const t=e.screen.getByRole("combobox");expect(t).not.toHaveClass(o.styles.error)})});
2
2
  //# sourceMappingURL=index.test.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.cjs.js","sources":["../../../src/components/SelectBox/index.test.tsx"],"sourcesContent":["import { render, screen } from \"@testing-library/react\";\n\n// import { axe, toHaveNoViolations } from 'jest-axe';\nimport { SelectBox } from \".\";\nimport styles from \"./index.module.scss\";\n\ndescribe(\"SelectBox component\", () => {\n const values = [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n ];\n\n const id = \"test-selectbox\";\n const name = \"test-name\";\n\n it(\"renders the select box with correct options\", () => {\n render(<SelectBox id={id} name={name} values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveAttribute(\"id\", id);\n expect(selectBox).toHaveAttribute(\"name\", name);\n\n values.forEach(({ label, value }) => {\n const option = screen.getByText(label);\n expect(option).toBeInTheDocument();\n expect(option).toHaveAttribute(\"value\", value);\n });\n });\n\n it(\"shows error message when provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const errorElement = screen.getByText(errorMessage);\n expect(errorElement).toBeInTheDocument();\n });\n\n it(\"does not show error message when not provided\", () => {\n render(<SelectBox values={values} />);\n\n const errorElement = screen.queryByText(/Error message/i);\n expect(errorElement).not.toBeInTheDocument();\n });\n\n it(\"applies the error class to select box when errorMessage is provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveClass(styles.error);\n });\n\n it(\"does not apply the error class to select box when errorMessage is not provided\", () => {\n render(<SelectBox values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).not.toHaveClass(styles.error);\n });\n\n // it('should be accessible', async () => {\n // const { container } = render(\n // <SelectBox id={id} name={name} values={values} />\n // );\n // const results = await axe(container);\n\n // expect.extend(toHaveNoViolations);\n // expect(results).toHaveNoViolations();\n // });\n});\n"],"names":["values","id","name","render","jsx","SelectBox","selectBox","screen","label","value","option","errorMessage","errorElement","styles"],"mappings":"kIAMA,SAAS,sBAAuB,IAAM,CACpC,MAAMA,EAAS,CACb,CAAE,MAAO,WAAY,MAAO,SAAU,EACtC,CAAE,MAAO,WAAY,MAAO,SAAU,CACxC,EAEMC,EAAK,iBACLC,EAAO,YAEb,GAAG,8CAA+C,IAAM,CACtDC,EAAA,OAAQC,EAAA,IAAAC,YAAA,CAAU,GAAAJ,EAAQ,KAAAC,EAAY,OAAAF,EAAgB,CAAE,EAElD,MAAAM,EAAYC,EAAAA,OAAO,UAAU,UAAU,EAC7C,OAAOD,CAAS,EAAE,gBAAgB,KAAML,CAAE,EAC1C,OAAOK,CAAS,EAAE,gBAAgB,OAAQJ,CAAI,EAE9CF,EAAO,QAAQ,CAAC,CAAE,MAAAQ,EAAO,MAAAC,KAAY,CAC7B,MAAAC,EAASH,EAAAA,OAAO,UAAUC,CAAK,EAC9B,OAAAE,CAAM,EAAE,kBAAkB,EACjC,OAAOA,CAAM,EAAE,gBAAgB,QAASD,CAAK,CAAA,CAC9C,CAAA,CACF,EAED,GAAG,oCAAqC,IAAM,CAC5C,MAAME,EAAe,gBACrBR,EAAA,OAAQC,EAAA,IAAAC,EAAA,UAAA,CAAU,OAAAL,EAAgB,aAAAW,CAA4B,CAAA,CAAE,EAE1D,MAAAC,EAAeL,EAAAA,OAAO,UAAUI,CAAY,EAC3C,OAAAC,CAAY,EAAE,kBAAkB,CAAA,CACxC,EAED,GAAG,gDAAiD,IAAM,CACjDT,EAAAA,OAAAC,EAAAA,IAACC,EAAAA,UAAU,CAAA,OAAAL,CAAgB,CAAA,CAAE,EAE9B,MAAAY,EAAeL,EAAAA,OAAO,YAAY,gBAAgB,EACjD,OAAAK,CAAY,EAAE,IAAI,kBAAkB,CAAA,CAC5C,EAED,GAAG,sEAAuE,IAAM,CAE9ET,EAAA,OAAQC,EAAA,IAAAC,EAAA,UAAA,CAAU,OAAAL,EAAgB,aADb,eACyC,CAAA,CAAE,EAE1D,MAAAM,EAAYC,EAAAA,OAAO,UAAU,UAAU,EAC7C,OAAOD,CAAS,EAAE,YAAYO,EAAAA,OAAO,KAAK,CAAA,CAC3C,EAED,GAAG,iFAAkF,IAAM,CAClFV,EAAAA,OAAAC,EAAAA,IAACC,EAAAA,UAAU,CAAA,OAAAL,CAAgB,CAAA,CAAE,EAE9B,MAAAM,EAAYC,EAAAA,OAAO,UAAU,UAAU,EAC7C,OAAOD,CAAS,EAAE,IAAI,YAAYO,EAAAA,OAAO,KAAK,CAAA,CAC/C,CAWH,CAAC"}
1
+ {"version":3,"file":"index.test.cjs.js","sources":["../../../src/components/SelectBox/index.test.tsx"],"sourcesContent":["import { render, screen } from \"@testing-library/react\";\n\n// import { axe, toHaveNoViolations } from 'jest-axe';\nimport { SelectBox } from \".\";\nimport styles from \"./index.module.scss\";\n\ndescribe(\"SelectBox component\", () => {\n const values = [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n ];\n\n const id = \"test-selectbox\";\n const name = \"test-name\";\n\n it(\"renders the select box with correct options\", () => {\n render(<SelectBox id={id} name={name} values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveAttribute(\"id\", id);\n expect(selectBox).toHaveAttribute(\"name\", name);\n\n values.forEach(({ label, value }) => {\n const option = screen.getByText(label);\n expect(option).toBeInTheDocument();\n expect(option).toHaveAttribute(\"value\", value);\n });\n });\n\n it(\"shows error message when provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const errorElement = screen.getByText(errorMessage);\n expect(errorElement).toBeInTheDocument();\n });\n\n it(\"does not show error message when not provided\", () => {\n render(<SelectBox values={values} />);\n\n const errorElement = screen.queryByText(/Error message/i);\n expect(errorElement).not.toBeInTheDocument();\n });\n\n it(\"applies the error class to select box when errorMessage is provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveClass(styles.error);\n });\n\n it(\"does not apply the error class to select box when errorMessage is not provided\", () => {\n render(<SelectBox values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).not.toHaveClass(styles.error);\n });\n\n // it('should be accessible', async () => {\n // const { container } = render(\n // <SelectBox id={id} name={name} values={values} />\n // );\n // const results = await axe(container);\n\n // expect.extend(toHaveNoViolations);\n // expect(results).toHaveNoViolations();\n // });\n});\n"],"names":["values","id","name","render","jsx","SelectBox","selectBox","screen","label","value","option","errorMessage","errorElement","styles"],"mappings":"kIAMA,SAAS,sBAAuB,IAAM,CACpC,MAAMA,EAAS,CACb,CAAE,MAAO,WAAY,MAAO,SAAA,EAC5B,CAAE,MAAO,WAAY,MAAO,SAAA,CAAU,EAGlCC,EAAK,iBACLC,EAAO,YAEb,GAAG,8CAA+C,IAAM,CACtDC,EAAAA,OAAOC,EAAAA,IAACC,YAAA,CAAU,GAAAJ,EAAQ,KAAAC,EAAY,OAAAF,EAAgB,CAAE,EAExD,MAAMM,EAAYC,EAAAA,OAAO,UAAU,UAAU,EAC7C,OAAOD,CAAS,EAAE,gBAAgB,KAAML,CAAE,EAC1C,OAAOK,CAAS,EAAE,gBAAgB,OAAQJ,CAAI,EAE9CF,EAAO,QAAQ,CAAC,CAAE,MAAAQ,EAAO,MAAAC,KAAY,CACnC,MAAMC,EAASH,EAAAA,OAAO,UAAUC,CAAK,EACrC,OAAOE,CAAM,EAAE,kBAAA,EACf,OAAOA,CAAM,EAAE,gBAAgB,QAASD,CAAK,CAC/C,CAAC,CACH,CAAC,EAED,GAAG,oCAAqC,IAAM,CAC5C,MAAME,EAAe,gBACrBR,EAAAA,OAAOC,EAAAA,IAACC,EAAAA,UAAA,CAAU,OAAAL,EAAgB,aAAAW,CAAA,CAA4B,CAAE,EAEhE,MAAMC,EAAeL,EAAAA,OAAO,UAAUI,CAAY,EAClD,OAAOC,CAAY,EAAE,kBAAA,CACvB,CAAC,EAED,GAAG,gDAAiD,IAAM,CACxDT,EAAAA,OAAOC,EAAAA,IAACC,EAAAA,UAAA,CAAU,OAAAL,CAAA,CAAgB,CAAE,EAEpC,MAAMY,EAAeL,EAAAA,OAAO,YAAY,gBAAgB,EACxD,OAAOK,CAAY,EAAE,IAAI,kBAAA,CAC3B,CAAC,EAED,GAAG,sEAAuE,IAAM,CAE9ET,EAAAA,OAAOC,EAAAA,IAACC,EAAAA,UAAA,CAAU,OAAAL,EAAgB,aADb,eACa,CAA4B,CAAE,EAEhE,MAAMM,EAAYC,EAAAA,OAAO,UAAU,UAAU,EAC7C,OAAOD,CAAS,EAAE,YAAYO,EAAAA,OAAO,KAAK,CAC5C,CAAC,EAED,GAAG,iFAAkF,IAAM,CACzFV,EAAAA,OAAOC,EAAAA,IAACC,EAAAA,UAAA,CAAU,OAAAL,CAAA,CAAgB,CAAE,EAEpC,MAAMM,EAAYC,EAAAA,OAAO,UAAU,UAAU,EAC7C,OAAOD,CAAS,EAAE,IAAI,YAAYO,EAAAA,OAAO,KAAK,CAChD,CAAC,CAWH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as s } from "react/jsx-runtime";
2
- import { r as n, s as t } from "../../react.esm-2FJSSo-S.js";
2
+ import { r as n, s as t } from "../../react.esm-DVhZgPrH.js";
3
3
  import { s as p, S as c } from "../../index-CSiE_l9r.js";
4
4
  describe("SelectBox component", () => {
5
5
  const o = [
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.es.js","sources":["../../../src/components/SelectBox/index.test.tsx"],"sourcesContent":["import { render, screen } from \"@testing-library/react\";\n\n// import { axe, toHaveNoViolations } from 'jest-axe';\nimport { SelectBox } from \".\";\nimport styles from \"./index.module.scss\";\n\ndescribe(\"SelectBox component\", () => {\n const values = [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n ];\n\n const id = \"test-selectbox\";\n const name = \"test-name\";\n\n it(\"renders the select box with correct options\", () => {\n render(<SelectBox id={id} name={name} values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveAttribute(\"id\", id);\n expect(selectBox).toHaveAttribute(\"name\", name);\n\n values.forEach(({ label, value }) => {\n const option = screen.getByText(label);\n expect(option).toBeInTheDocument();\n expect(option).toHaveAttribute(\"value\", value);\n });\n });\n\n it(\"shows error message when provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const errorElement = screen.getByText(errorMessage);\n expect(errorElement).toBeInTheDocument();\n });\n\n it(\"does not show error message when not provided\", () => {\n render(<SelectBox values={values} />);\n\n const errorElement = screen.queryByText(/Error message/i);\n expect(errorElement).not.toBeInTheDocument();\n });\n\n it(\"applies the error class to select box when errorMessage is provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveClass(styles.error);\n });\n\n it(\"does not apply the error class to select box when errorMessage is not provided\", () => {\n render(<SelectBox values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).not.toHaveClass(styles.error);\n });\n\n // it('should be accessible', async () => {\n // const { container } = render(\n // <SelectBox id={id} name={name} values={values} />\n // );\n // const results = await axe(container);\n\n // expect.extend(toHaveNoViolations);\n // expect(results).toHaveNoViolations();\n // });\n});\n"],"names":["values","id","name","render","jsx","SelectBox","selectBox","screen","label","value","option","errorMessage","errorElement","styles"],"mappings":";;;AAMA,SAAS,uBAAuB,MAAM;AACpC,QAAMA,IAAS;AAAA,IACb,EAAE,OAAO,YAAY,OAAO,UAAU;AAAA,IACtC,EAAE,OAAO,YAAY,OAAO,UAAU;AAAA,EACxC,GAEMC,IAAK,kBACLC,IAAO;AAEb,KAAG,+CAA+C,MAAM;AACtD,IAAAC,EAAQ,gBAAAC,EAAAC,GAAA,EAAU,IAAAJ,GAAQ,MAAAC,GAAY,QAAAF,GAAgB,CAAE;AAElD,UAAAM,IAAYC,EAAO,UAAU,UAAU;AAC7C,WAAOD,CAAS,EAAE,gBAAgB,MAAML,CAAE,GAC1C,OAAOK,CAAS,EAAE,gBAAgB,QAAQJ,CAAI,GAE9CF,EAAO,QAAQ,CAAC,EAAE,OAAAQ,GAAO,OAAAC,QAAY;AAC7B,YAAAC,IAASH,EAAO,UAAUC,CAAK;AAC9B,aAAAE,CAAM,EAAE,kBAAkB,GACjC,OAAOA,CAAM,EAAE,gBAAgB,SAASD,CAAK;AAAA,IAAA,CAC9C;AAAA,EAAA,CACF,GAED,GAAG,qCAAqC,MAAM;AAC5C,UAAME,IAAe;AACrB,IAAAR,EAAQ,gBAAAC,EAAAC,GAAA,EAAU,QAAAL,GAAgB,cAAAW,EAA4B,CAAA,CAAE;AAE1D,UAAAC,IAAeL,EAAO,UAAUI,CAAY;AAC3C,WAAAC,CAAY,EAAE,kBAAkB;AAAA,EAAA,CACxC,GAED,GAAG,iDAAiD,MAAM;AACjD,IAAAT,EAAA,gBAAAC,EAACC,GAAU,EAAA,QAAAL,EAAgB,CAAA,CAAE;AAE9B,UAAAY,IAAeL,EAAO,YAAY,gBAAgB;AACjD,WAAAK,CAAY,EAAE,IAAI,kBAAkB;AAAA,EAAA,CAC5C,GAED,GAAG,uEAAuE,MAAM;AAE9E,IAAAT,EAAQ,gBAAAC,EAAAC,GAAA,EAAU,QAAAL,GAAgB,cADb,gBACyC,CAAA,CAAE;AAE1D,UAAAM,IAAYC,EAAO,UAAU,UAAU;AAC7C,WAAOD,CAAS,EAAE,YAAYO,EAAO,KAAK;AAAA,EAAA,CAC3C,GAED,GAAG,kFAAkF,MAAM;AAClF,IAAAV,EAAA,gBAAAC,EAACC,GAAU,EAAA,QAAAL,EAAgB,CAAA,CAAE;AAE9B,UAAAM,IAAYC,EAAO,UAAU,UAAU;AAC7C,WAAOD,CAAS,EAAE,IAAI,YAAYO,EAAO,KAAK;AAAA,EAAA,CAC/C;AAWH,CAAC;"}
1
+ {"version":3,"file":"index.test.es.js","sources":["../../../src/components/SelectBox/index.test.tsx"],"sourcesContent":["import { render, screen } from \"@testing-library/react\";\n\n// import { axe, toHaveNoViolations } from 'jest-axe';\nimport { SelectBox } from \".\";\nimport styles from \"./index.module.scss\";\n\ndescribe(\"SelectBox component\", () => {\n const values = [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n ];\n\n const id = \"test-selectbox\";\n const name = \"test-name\";\n\n it(\"renders the select box with correct options\", () => {\n render(<SelectBox id={id} name={name} values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveAttribute(\"id\", id);\n expect(selectBox).toHaveAttribute(\"name\", name);\n\n values.forEach(({ label, value }) => {\n const option = screen.getByText(label);\n expect(option).toBeInTheDocument();\n expect(option).toHaveAttribute(\"value\", value);\n });\n });\n\n it(\"shows error message when provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const errorElement = screen.getByText(errorMessage);\n expect(errorElement).toBeInTheDocument();\n });\n\n it(\"does not show error message when not provided\", () => {\n render(<SelectBox values={values} />);\n\n const errorElement = screen.queryByText(/Error message/i);\n expect(errorElement).not.toBeInTheDocument();\n });\n\n it(\"applies the error class to select box when errorMessage is provided\", () => {\n const errorMessage = \"Error message\";\n render(<SelectBox values={values} errorMessage={errorMessage} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).toHaveClass(styles.error);\n });\n\n it(\"does not apply the error class to select box when errorMessage is not provided\", () => {\n render(<SelectBox values={values} />);\n\n const selectBox = screen.getByRole(\"combobox\");\n expect(selectBox).not.toHaveClass(styles.error);\n });\n\n // it('should be accessible', async () => {\n // const { container } = render(\n // <SelectBox id={id} name={name} values={values} />\n // );\n // const results = await axe(container);\n\n // expect.extend(toHaveNoViolations);\n // expect(results).toHaveNoViolations();\n // });\n});\n"],"names":["values","id","name","render","jsx","SelectBox","selectBox","screen","label","value","option","errorMessage","errorElement","styles"],"mappings":";;;AAMA,SAAS,uBAAuB,MAAM;AACpC,QAAMA,IAAS;AAAA,IACb,EAAE,OAAO,YAAY,OAAO,UAAA;AAAA,IAC5B,EAAE,OAAO,YAAY,OAAO,UAAA;AAAA,EAAU,GAGlCC,IAAK,kBACLC,IAAO;AAEb,KAAG,+CAA+C,MAAM;AACtD,IAAAC,EAAO,gBAAAC,EAACC,GAAA,EAAU,IAAAJ,GAAQ,MAAAC,GAAY,QAAAF,GAAgB,CAAE;AAExD,UAAMM,IAAYC,EAAO,UAAU,UAAU;AAC7C,WAAOD,CAAS,EAAE,gBAAgB,MAAML,CAAE,GAC1C,OAAOK,CAAS,EAAE,gBAAgB,QAAQJ,CAAI,GAE9CF,EAAO,QAAQ,CAAC,EAAE,OAAAQ,GAAO,OAAAC,QAAY;AACnC,YAAMC,IAASH,EAAO,UAAUC,CAAK;AACrC,aAAOE,CAAM,EAAE,kBAAA,GACf,OAAOA,CAAM,EAAE,gBAAgB,SAASD,CAAK;AAAA,IAC/C,CAAC;AAAA,EACH,CAAC,GAED,GAAG,qCAAqC,MAAM;AAC5C,UAAME,IAAe;AACrB,IAAAR,EAAO,gBAAAC,EAACC,GAAA,EAAU,QAAAL,GAAgB,cAAAW,EAAA,CAA4B,CAAE;AAEhE,UAAMC,IAAeL,EAAO,UAAUI,CAAY;AAClD,WAAOC,CAAY,EAAE,kBAAA;AAAA,EACvB,CAAC,GAED,GAAG,iDAAiD,MAAM;AACxD,IAAAT,EAAO,gBAAAC,EAACC,GAAA,EAAU,QAAAL,EAAA,CAAgB,CAAE;AAEpC,UAAMY,IAAeL,EAAO,YAAY,gBAAgB;AACxD,WAAOK,CAAY,EAAE,IAAI,kBAAA;AAAA,EAC3B,CAAC,GAED,GAAG,uEAAuE,MAAM;AAE9E,IAAAT,EAAO,gBAAAC,EAACC,GAAA,EAAU,QAAAL,GAAgB,cADb,gBACa,CAA4B,CAAE;AAEhE,UAAMM,IAAYC,EAAO,UAAU,UAAU;AAC7C,WAAOD,CAAS,EAAE,YAAYO,EAAO,KAAK;AAAA,EAC5C,CAAC,GAED,GAAG,kFAAkF,MAAM;AACzF,IAAAV,EAAO,gBAAAC,EAACC,GAAA,EAAU,QAAAL,EAAA,CAAgB,CAAE;AAEpC,UAAMM,IAAYC,EAAO,UAAU,UAAU;AAC7C,WAAOD,CAAS,EAAE,IAAI,YAAYO,EAAO,KAAK;AAAA,EAChD,CAAC;AAWH,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/components/SelectBoxController/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Clear } from \"@mui/icons-material\";\nimport {\n Box,\n FormControl,\n FormHelperText,\n IconButton,\n InputBaseComponentProps,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n FieldValues,\n PathValue,\n type Control,\n} from \"react-hook-form\";\n\nimport styles from \"./index.module.scss\";\n\nexport type SelectBoxOption = {\n readonly label: string;\n readonly value: string | number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n name: FieldPath<T>;\n options: SelectBoxOption[];\n defaultValue?: PathValue<T, FieldPath<T>>;\n emptyValue?: [] | string | null | undefined;\n isMulti: boolean;\n placeholder?: string;\n onChange?: (\n event: SelectChangeEvent<unknown>,\n child: React.ReactNode,\n ) => void;\n onClear?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n inputProps?: InputBaseComponentProps;\n};\n\nexport const SelectBoxController = <T extends FieldValues>(props: Props<T>) => {\n const {\n control,\n name,\n options,\n defaultValue,\n isMulti,\n placeholder,\n emptyValue = isMulti ? [] : \"\",\n onChange,\n onClear,\n inputProps,\n } = props;\n\n const existValue = (\n value: SelectBoxOption[\"value\"] | SelectBoxOption[] | null,\n ) => {\n return (Array.isArray(value) && value.length) || (!isMulti && value);\n };\n\n return (\n <Box display={\"grid\"}>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <Select\n {...field}\n onChange={(event, child) => {\n if (!isMulti && event.target.value === \"\") {\n field.onChange(undefined);\n } else {\n field.onChange(event);\n }\n onChange?.(event, child);\n }}\n multiple={isMulti}\n size=\"small\"\n value={field.value ?? emptyValue}\n displayEmpty\n inputProps={{ ...inputProps }}\n renderValue={() => {\n const value = field.value;\n if (isMulti && Array.isArray(value)) {\n if (value.length) {\n const labels = value.map(\n (val: SelectBoxOption[\"value\"]) =>\n options.find((option) => option.value === val)?.label,\n );\n return labels.join(\", \");\n }\n } else if (\n value &&\n (typeof value === \"string\" || typeof value === \"number\")\n ) {\n return options.find((option) => option.value === value)\n ?.label;\n }\n return (\n <span className={styles.placeholder}>{placeholder}</span>\n );\n }}\n endAdornment={\n <IconButton\n sx={{\n visibility: existValue(field.value) ? \"visible\" : \"hidden\",\n }}\n onClick={(event) => {\n field.onChange(\n isMulti ? [] : emptyValue === \"\" ? undefined : emptyValue,\n );\n onClear?.(event);\n }}\n >\n <Clear />\n </IconButton>\n }\n sx={{\n \"& .MuiSelect-iconOutlined\": {\n display: existValue(field.value) ? \"none\" : \"\",\n },\n \"&.Mui-focused .MuiIconButton-root\": {\n color: \"primary.main\",\n },\n \"& .MuiSelect-select \": {\n whiteSpace: \"break-spaces !important\",\n paddingRight: \"4px !important\",\n fontSize: {\n xs: \"1rem\",\n sm: \"0.875rem\",\n },\n paddingLeft: \"9.5px\",\n },\n paddingRight: \"4px !important\",\n }}\n >\n {options.map((m) => (\n <MenuItem value={m.value} key={m.value}>\n {\" \"}\n {m.label}{\" \"}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n </Box>\n );\n};\n\nexport default SelectBoxController;\n"],"names":["SelectBoxController","props","control","name","options","defaultValue","isMulti","placeholder","emptyValue","onChange","onClear","inputProps","existValue","value","jsx","Box","Controller","field","fieldState","jsxs","FormControl","Select","event","child","val","_a","option","styles","IconButton","Clear","m","MenuItem","FormHelperText"],"mappings":"qRA2CaA,EAA8CC,GAAoB,CACvE,KAAA,CACJ,QAAAC,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaF,EAAU,CAAA,EAAK,GAC5B,SAAAG,EACA,QAAAC,EACA,WAAAC,CAAA,EACEV,EAEEW,EACJC,GAEQ,MAAM,QAAQA,CAAK,GAAKA,EAAM,QAAY,CAACP,GAAWO,EAI9D,OAAAC,EAAAA,IAACC,EAAAA,IAAI,CAAA,QAAS,OACZ,SAAAD,EAAA,IAACE,EAAA,WAAA,CACC,QAAAd,EACA,KAAAC,EACA,aAAAE,EACA,OAAQ,CAAC,CAAE,MAAAY,EAAO,WAAAC,KACfC,OAAAA,OAAAA,EAAAA,KAAAC,EAAA,YAAA,CAAY,MAAOF,EAAW,QAC7B,SAAA,CAAAJ,EAAA,IAACO,EAAA,OAAA,CACE,GAAGJ,EACJ,SAAU,CAACK,EAAOC,IAAU,CACtB,CAACjB,GAAWgB,EAAM,OAAO,QAAU,GACrCL,EAAM,SAAS,MAAS,EAExBA,EAAM,SAASK,CAAK,EAEtBb,GAAA,MAAAA,EAAWa,EAAOC,EACpB,EACA,SAAUjB,EACV,KAAK,QACL,MAAOW,EAAM,OAAST,EACtB,aAAY,GACZ,WAAY,CAAE,GAAGG,CAAW,EAC5B,YAAa,IAAM,OACjB,MAAME,EAAQI,EAAM,MACpB,GAAIX,GAAW,MAAM,QAAQO,CAAK,GAChC,GAAIA,EAAM,OAKD,OAJQA,EAAM,IAClBW,UACC,OAAAC,EAAArB,EAAQ,KAAMsB,GAAWA,EAAO,QAAUF,CAAG,IAA7C,YAAAC,EAAgD,MACpD,EACc,KAAK,IAAI,UAGzBZ,IACC,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAE/C,OAAOY,EAAArB,EAAQ,KAAMsB,GAAWA,EAAO,QAAUb,CAAK,IAA/C,YAAAY,EACH,MAEN,OACGX,EAAA,IAAA,OAAA,CAAK,UAAWa,EAAO,YAAc,SAAYpB,EAAA,CAEtD,EACA,aACEO,EAAA,IAACc,EAAA,WAAA,CACC,GAAI,CACF,WAAYhB,EAAWK,EAAM,KAAK,EAAI,UAAY,QACpD,EACA,QAAUK,GAAU,CACZL,EAAA,SACJX,EAAU,CAAK,EAAAE,IAAe,GAAK,OAAYA,CACjD,EACAE,GAAA,MAAAA,EAAUY,EACZ,EAEA,eAACO,EAAAA,MAAM,CAAA,CAAA,CAAA,CACT,EAEF,GAAI,CACF,4BAA6B,CAC3B,QAASjB,EAAWK,EAAM,KAAK,EAAI,OAAS,EAC9C,EACA,oCAAqC,CACnC,MAAO,cACT,EACA,uBAAwB,CACtB,WAAY,0BACZ,aAAc,iBACd,SAAU,CACR,GAAI,OACJ,GAAI,UACN,EACA,YAAa,OACf,EACA,aAAc,gBAChB,EAEC,SAAAb,EAAQ,IAAK0B,UACXC,EAAS,SAAA,CAAA,MAAOD,EAAE,MAChB,SAAA,CAAA,IACAA,EAAE,MAAO,GAAA,CAFmB,EAAAA,EAAE,KAGjC,CACD,CAAA,CACH,EACChB,EAAA,IAAAkB,EAAA,eAAA,CAAgB,UAAWP,EAAAP,EAAA,QAAA,YAAAO,EAAO,OAAQ,CAAA,CAAA,CAC7C,CAAA,EAAA,CAAA,EAGN,CAEJ"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/components/SelectBoxController/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Clear } from \"@mui/icons-material\";\nimport {\n Box,\n FormControl,\n FormHelperText,\n IconButton,\n InputBaseComponentProps,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n FieldValues,\n PathValue,\n type Control,\n} from \"react-hook-form\";\n\nimport styles from \"./index.module.scss\";\n\nexport type SelectBoxOption = {\n readonly label: string;\n readonly value: string | number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n name: FieldPath<T>;\n options: SelectBoxOption[];\n defaultValue?: PathValue<T, FieldPath<T>>;\n emptyValue?: [] | string | null | undefined;\n isMulti: boolean;\n placeholder?: string;\n onChange?: (\n event: SelectChangeEvent<unknown>,\n child: React.ReactNode,\n ) => void;\n onClear?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n inputProps?: InputBaseComponentProps;\n};\n\nexport const SelectBoxController = <T extends FieldValues>(props: Props<T>) => {\n const {\n control,\n name,\n options,\n defaultValue,\n isMulti,\n placeholder,\n emptyValue = isMulti ? [] : \"\",\n onChange,\n onClear,\n inputProps,\n } = props;\n\n const existValue = (\n value: SelectBoxOption[\"value\"] | SelectBoxOption[] | null,\n ) => {\n return (Array.isArray(value) && value.length) || (!isMulti && value);\n };\n\n return (\n <Box display={\"grid\"}>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <Select\n {...field}\n onChange={(event, child) => {\n if (!isMulti && event.target.value === \"\") {\n field.onChange(undefined);\n } else {\n field.onChange(event);\n }\n onChange?.(event, child);\n }}\n multiple={isMulti}\n size=\"small\"\n value={field.value ?? emptyValue}\n displayEmpty\n inputProps={{ ...inputProps }}\n renderValue={() => {\n const value = field.value;\n if (isMulti && Array.isArray(value)) {\n if (value.length) {\n const labels = value.map(\n (val: SelectBoxOption[\"value\"]) =>\n options.find((option) => option.value === val)?.label,\n );\n return labels.join(\", \");\n }\n } else if (\n value &&\n (typeof value === \"string\" || typeof value === \"number\")\n ) {\n return options.find((option) => option.value === value)\n ?.label;\n }\n return (\n <span className={styles.placeholder}>{placeholder}</span>\n );\n }}\n endAdornment={\n <IconButton\n sx={{\n visibility: existValue(field.value) ? \"visible\" : \"hidden\",\n }}\n onClick={(event) => {\n field.onChange(\n isMulti ? [] : emptyValue === \"\" ? undefined : emptyValue,\n );\n onClear?.(event);\n }}\n >\n <Clear />\n </IconButton>\n }\n sx={{\n \"& .MuiSelect-iconOutlined\": {\n display: existValue(field.value) ? \"none\" : \"\",\n },\n \"&.Mui-focused .MuiIconButton-root\": {\n color: \"primary.main\",\n },\n \"& .MuiSelect-select \": {\n whiteSpace: \"break-spaces !important\",\n paddingRight: \"4px !important\",\n fontSize: {\n xs: \"1rem\",\n sm: \"0.875rem\",\n },\n paddingLeft: \"9.5px\",\n },\n paddingRight: \"4px !important\",\n }}\n >\n {options.map((m) => (\n <MenuItem value={m.value} key={m.value}>\n {\" \"}\n {m.label}{\" \"}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n </Box>\n );\n};\n\nexport default SelectBoxController;\n"],"names":["SelectBoxController","props","control","name","options","defaultValue","isMulti","placeholder","emptyValue","onChange","onClear","inputProps","existValue","value","jsx","Box","Controller","field","fieldState","jsxs","FormControl","Select","event","child","val","_a","option","styles","IconButton","Clear","m","MenuItem","FormHelperText"],"mappings":"qRA2CaA,EAA8CC,GAAoB,CAC7E,KAAM,CACJ,QAAAC,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaF,EAAU,CAAA,EAAK,GAC5B,SAAAG,EACA,QAAAC,EACA,WAAAC,CAAA,EACEV,EAEEW,EACJC,GAEQ,MAAM,QAAQA,CAAK,GAAKA,EAAM,QAAY,CAACP,GAAWO,EAGhE,OACEC,EAAAA,IAACC,EAAAA,IAAA,CAAI,QAAS,OACZ,SAAAD,EAAAA,IAACE,EAAAA,WAAA,CACC,QAAAd,EACA,KAAAC,EACA,aAAAE,EACA,OAAQ,CAAC,CAAE,MAAAY,EAAO,WAAAC,YAChBC,OAAAA,EAAAA,KAACC,EAAAA,YAAA,CAAY,MAAOF,EAAW,QAC7B,SAAA,CAAAJ,EAAAA,IAACO,EAAAA,OAAA,CACE,GAAGJ,EACJ,SAAU,CAACK,EAAOC,IAAU,CACtB,CAACjB,GAAWgB,EAAM,OAAO,QAAU,GACrCL,EAAM,SAAS,MAAS,EAExBA,EAAM,SAASK,CAAK,EAEtBb,GAAA,MAAAA,EAAWa,EAAOC,EACpB,EACA,SAAUjB,EACV,KAAK,QACL,MAAOW,EAAM,OAAST,EACtB,aAAY,GACZ,WAAY,CAAE,GAAGG,CAAA,EACjB,YAAa,IAAM,OACjB,MAAME,EAAQI,EAAM,MACpB,GAAIX,GAAW,MAAM,QAAQO,CAAK,GAChC,GAAIA,EAAM,OAKR,OAJeA,EAAM,IAClBW,UACC,OAAAC,EAAArB,EAAQ,KAAMsB,GAAWA,EAAO,QAAUF,CAAG,IAA7C,YAAAC,EAAgD,MAAA,EAEtC,KAAK,IAAI,UAGzBZ,IACC,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAE/C,OAAOY,EAAArB,EAAQ,KAAMsB,GAAWA,EAAO,QAAUb,CAAK,IAA/C,YAAAY,EACH,MAEN,OACEX,EAAAA,IAAC,OAAA,CAAK,UAAWa,EAAO,YAAc,SAAApB,EAAY,CAEtD,EACA,aACEO,EAAAA,IAACc,EAAAA,WAAA,CACC,GAAI,CACF,WAAYhB,EAAWK,EAAM,KAAK,EAAI,UAAY,QAAA,EAEpD,QAAUK,GAAU,CAClBL,EAAM,SACJX,EAAU,CAAA,EAAKE,IAAe,GAAK,OAAYA,CAAA,EAEjDE,GAAA,MAAAA,EAAUY,EACZ,EAEA,eAACO,EAAAA,MAAA,CAAA,CAAM,CAAA,CAAA,EAGX,GAAI,CACF,4BAA6B,CAC3B,QAASjB,EAAWK,EAAM,KAAK,EAAI,OAAS,EAAA,EAE9C,oCAAqC,CACnC,MAAO,cAAA,EAET,uBAAwB,CACtB,WAAY,0BACZ,aAAc,iBACd,SAAU,CACR,GAAI,OACJ,GAAI,UAAA,EAEN,YAAa,OAAA,EAEf,aAAc,gBAAA,EAGf,SAAAb,EAAQ,IAAK0B,UACXC,EAAAA,SAAA,CAAS,MAAOD,EAAE,MAChB,SAAA,CAAA,IACAA,EAAE,MAAO,GAAA,CAAA,EAFmBA,EAAE,KAGjC,CACD,CAAA,CAAA,EAEHhB,EAAAA,IAACkB,EAAAA,eAAA,CAAgB,UAAAP,EAAAP,EAAW,QAAX,YAAAO,EAAkB,OAAA,CAAQ,CAAA,CAAA,CAC7C,EAAA,CAAA,EAGN,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/components/SelectBoxController/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Clear } from \"@mui/icons-material\";\nimport {\n Box,\n FormControl,\n FormHelperText,\n IconButton,\n InputBaseComponentProps,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n FieldValues,\n PathValue,\n type Control,\n} from \"react-hook-form\";\n\nimport styles from \"./index.module.scss\";\n\nexport type SelectBoxOption = {\n readonly label: string;\n readonly value: string | number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n name: FieldPath<T>;\n options: SelectBoxOption[];\n defaultValue?: PathValue<T, FieldPath<T>>;\n emptyValue?: [] | string | null | undefined;\n isMulti: boolean;\n placeholder?: string;\n onChange?: (\n event: SelectChangeEvent<unknown>,\n child: React.ReactNode,\n ) => void;\n onClear?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n inputProps?: InputBaseComponentProps;\n};\n\nexport const SelectBoxController = <T extends FieldValues>(props: Props<T>) => {\n const {\n control,\n name,\n options,\n defaultValue,\n isMulti,\n placeholder,\n emptyValue = isMulti ? [] : \"\",\n onChange,\n onClear,\n inputProps,\n } = props;\n\n const existValue = (\n value: SelectBoxOption[\"value\"] | SelectBoxOption[] | null,\n ) => {\n return (Array.isArray(value) && value.length) || (!isMulti && value);\n };\n\n return (\n <Box display={\"grid\"}>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <Select\n {...field}\n onChange={(event, child) => {\n if (!isMulti && event.target.value === \"\") {\n field.onChange(undefined);\n } else {\n field.onChange(event);\n }\n onChange?.(event, child);\n }}\n multiple={isMulti}\n size=\"small\"\n value={field.value ?? emptyValue}\n displayEmpty\n inputProps={{ ...inputProps }}\n renderValue={() => {\n const value = field.value;\n if (isMulti && Array.isArray(value)) {\n if (value.length) {\n const labels = value.map(\n (val: SelectBoxOption[\"value\"]) =>\n options.find((option) => option.value === val)?.label,\n );\n return labels.join(\", \");\n }\n } else if (\n value &&\n (typeof value === \"string\" || typeof value === \"number\")\n ) {\n return options.find((option) => option.value === value)\n ?.label;\n }\n return (\n <span className={styles.placeholder}>{placeholder}</span>\n );\n }}\n endAdornment={\n <IconButton\n sx={{\n visibility: existValue(field.value) ? \"visible\" : \"hidden\",\n }}\n onClick={(event) => {\n field.onChange(\n isMulti ? [] : emptyValue === \"\" ? undefined : emptyValue,\n );\n onClear?.(event);\n }}\n >\n <Clear />\n </IconButton>\n }\n sx={{\n \"& .MuiSelect-iconOutlined\": {\n display: existValue(field.value) ? \"none\" : \"\",\n },\n \"&.Mui-focused .MuiIconButton-root\": {\n color: \"primary.main\",\n },\n \"& .MuiSelect-select \": {\n whiteSpace: \"break-spaces !important\",\n paddingRight: \"4px !important\",\n fontSize: {\n xs: \"1rem\",\n sm: \"0.875rem\",\n },\n paddingLeft: \"9.5px\",\n },\n paddingRight: \"4px !important\",\n }}\n >\n {options.map((m) => (\n <MenuItem value={m.value} key={m.value}>\n {\" \"}\n {m.label}{\" \"}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n </Box>\n );\n};\n\nexport default SelectBoxController;\n"],"names":["SelectBoxController","props","control","name","options","defaultValue","isMulti","placeholder","emptyValue","onChange","onClear","inputProps","existValue","value","jsx","Box","Controller","field","fieldState","jsxs","FormControl","Select","event","child","val","_a","option","styles","IconButton","Clear","m","MenuItem","FormHelperText"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/components/SelectBoxController/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Clear } from \"@mui/icons-material\";\nimport {\n Box,\n FormControl,\n FormHelperText,\n IconButton,\n InputBaseComponentProps,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n FieldValues,\n PathValue,\n type Control,\n} from \"react-hook-form\";\n\nimport styles from \"./index.module.scss\";\n\nexport type SelectBoxOption = {\n readonly label: string;\n readonly value: string | number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n name: FieldPath<T>;\n options: SelectBoxOption[];\n defaultValue?: PathValue<T, FieldPath<T>>;\n emptyValue?: [] | string | null | undefined;\n isMulti: boolean;\n placeholder?: string;\n onChange?: (\n event: SelectChangeEvent<unknown>,\n child: React.ReactNode,\n ) => void;\n onClear?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n inputProps?: InputBaseComponentProps;\n};\n\nexport const SelectBoxController = <T extends FieldValues>(props: Props<T>) => {\n const {\n control,\n name,\n options,\n defaultValue,\n isMulti,\n placeholder,\n emptyValue = isMulti ? [] : \"\",\n onChange,\n onClear,\n inputProps,\n } = props;\n\n const existValue = (\n value: SelectBoxOption[\"value\"] | SelectBoxOption[] | null,\n ) => {\n return (Array.isArray(value) && value.length) || (!isMulti && value);\n };\n\n return (\n <Box display={\"grid\"}>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <Select\n {...field}\n onChange={(event, child) => {\n if (!isMulti && event.target.value === \"\") {\n field.onChange(undefined);\n } else {\n field.onChange(event);\n }\n onChange?.(event, child);\n }}\n multiple={isMulti}\n size=\"small\"\n value={field.value ?? emptyValue}\n displayEmpty\n inputProps={{ ...inputProps }}\n renderValue={() => {\n const value = field.value;\n if (isMulti && Array.isArray(value)) {\n if (value.length) {\n const labels = value.map(\n (val: SelectBoxOption[\"value\"]) =>\n options.find((option) => option.value === val)?.label,\n );\n return labels.join(\", \");\n }\n } else if (\n value &&\n (typeof value === \"string\" || typeof value === \"number\")\n ) {\n return options.find((option) => option.value === value)\n ?.label;\n }\n return (\n <span className={styles.placeholder}>{placeholder}</span>\n );\n }}\n endAdornment={\n <IconButton\n sx={{\n visibility: existValue(field.value) ? \"visible\" : \"hidden\",\n }}\n onClick={(event) => {\n field.onChange(\n isMulti ? [] : emptyValue === \"\" ? undefined : emptyValue,\n );\n onClear?.(event);\n }}\n >\n <Clear />\n </IconButton>\n }\n sx={{\n \"& .MuiSelect-iconOutlined\": {\n display: existValue(field.value) ? \"none\" : \"\",\n },\n \"&.Mui-focused .MuiIconButton-root\": {\n color: \"primary.main\",\n },\n \"& .MuiSelect-select \": {\n whiteSpace: \"break-spaces !important\",\n paddingRight: \"4px !important\",\n fontSize: {\n xs: \"1rem\",\n sm: \"0.875rem\",\n },\n paddingLeft: \"9.5px\",\n },\n paddingRight: \"4px !important\",\n }}\n >\n {options.map((m) => (\n <MenuItem value={m.value} key={m.value}>\n {\" \"}\n {m.label}{\" \"}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n </Box>\n );\n};\n\nexport default SelectBoxController;\n"],"names":["SelectBoxController","props","control","name","options","defaultValue","isMulti","placeholder","emptyValue","onChange","onClear","inputProps","existValue","value","jsx","Box","Controller","field","fieldState","jsxs","FormControl","Select","event","child","val","_a","option","styles","IconButton","Clear","m","MenuItem","FormHelperText"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const u=require("react/jsx-runtime"),e=require("../../react.esm-CiMn0Rnx.cjs"),p=require("react-hook-form"),d=require("./index.cjs.js");describe("SelectBoxController component",()=>{it("renders select box with options and correct default value",()=>{const{result:l}=e.renderHook(()=>p.useForm()),{control:s}=l.current,r="TestSelect",n="Select an option",t=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"},{label:"Option 3",value:"option3"}],c=["option2"];e.render(u.jsx(d.SelectBoxController,{control:s,name:r,options:t,defaultValue:c,isMulti:!0,placeholder:n})),c.forEach(o=>{const a=t.find(x=>x.value===o);a&&expect(e.screen.getByText(a.label)).toBeInTheDocument()})}),it("renders select box with options and correct default value for single select",()=>{const{result:l}=e.renderHook(()=>p.useForm()),{control:s}=l.current,r="TestSelect",n=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"},{label:"Option 3",value:"option3"}],t="option2";e.render(u.jsx(d.SelectBoxController,{control:s,name:r,options:n,defaultValue:t,isMulti:!1}));const i=n.find(o=>o.value===t);if(i){const o=e.screen.getByText(i.label);expect(o).toBeInTheDocument()}})});
1
+ "use strict";const u=require("react/jsx-runtime"),e=require("../../react.esm-BcRJ42eI.cjs"),p=require("react-hook-form"),d=require("./index.cjs.js");describe("SelectBoxController component",()=>{it("renders select box with options and correct default value",()=>{const{result:l}=e.renderHook(()=>p.useForm()),{control:s}=l.current,r="TestSelect",n="Select an option",t=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"},{label:"Option 3",value:"option3"}],c=["option2"];e.render(u.jsx(d.SelectBoxController,{control:s,name:r,options:t,defaultValue:c,isMulti:!0,placeholder:n})),c.forEach(o=>{const a=t.find(x=>x.value===o);a&&expect(e.screen.getByText(a.label)).toBeInTheDocument()})}),it("renders select box with options and correct default value for single select",()=>{const{result:l}=e.renderHook(()=>p.useForm()),{control:s}=l.current,r="TestSelect",n=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"},{label:"Option 3",value:"option3"}],t="option2";e.render(u.jsx(d.SelectBoxController,{control:s,name:r,options:n,defaultValue:t,isMulti:!1}));const i=n.find(o=>o.value===t);if(i){const o=e.screen.getByText(i.label);expect(o).toBeInTheDocument()}})});
2
2
  //# sourceMappingURL=index.test.cjs.js.map