@cashub/ui-elv 1.0.2 → 1.0.3

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 (309) hide show
  1. package/datetimePicker/index.js +2 -37
  2. package/esm/Tab/Tab.js +21 -0
  3. package/esm/Tab/TabList.js +160 -0
  4. package/esm/Tab/TabPanel.js +42 -0
  5. package/esm/Tab/TabTab.js +98 -0
  6. package/esm/Tab/index.js +23 -0
  7. package/esm/Tab/subComponent/TabContext.js +3 -0
  8. package/esm/Tab/subComponent/TabListV2.js +18 -0
  9. package/esm/Tab/subComponent/TabPanelV2.js +45 -0
  10. package/esm/Tab/subComponent/TabTabV2.js +56 -0
  11. package/esm/VerticalTab/TabList.js +20 -0
  12. package/esm/VerticalTab/TabPanel.js +45 -0
  13. package/esm/VerticalTab/TabTab.js +63 -0
  14. package/esm/VerticalTab/VerticalTab.js +34 -0
  15. package/esm/VerticalTab/index.js +9 -0
  16. package/esm/VerticalTab/subComponent/TabContext.js +3 -0
  17. package/esm/alert/Alert.js +22 -0
  18. package/esm/alert/index.js +1 -0
  19. package/esm/animate/Collapse.js +65 -0
  20. package/esm/animate/Loader.js +51 -0
  21. package/esm/animate/NumberCounter.js +45 -0
  22. package/esm/animate/PulseRing.js +26 -0
  23. package/esm/animate/Spinner.js +11 -0
  24. package/esm/animate/index.js +5 -0
  25. package/esm/assets/css/autocomplete.css +16 -0
  26. package/esm/assets/css/font.css +4 -0
  27. package/esm/assets/css/global.css +2 -0
  28. package/esm/assets/font/helvetica/Helvetica.ttf +0 -0
  29. package/esm/assets/font/nanumGothic/NanumGothic-Bold.ttf +0 -0
  30. package/esm/assets/font/nanumGothic/NanumGothic-ExtraBold.ttf +0 -0
  31. package/esm/assets/font/nanumGothic/NanumGothic-Regular.ttf +0 -0
  32. package/esm/assets/icons/app-management.png +0 -0
  33. package/esm/assets/icons/burger-black.png +0 -0
  34. package/esm/assets/icons/burger-white.png +0 -0
  35. package/esm/assets/icons/burger.png +0 -0
  36. package/esm/assets/icons/file.svg +1 -0
  37. package/esm/assets/icons/map_icon1.png +0 -0
  38. package/esm/assets/icons/map_icon4.png +0 -0
  39. package/esm/assets/images/bg-aside.png +0 -0
  40. package/esm/assets/images/bg-chart-circle.png +0 -0
  41. package/esm/assets/images/bg-chart-triangle.png +0 -0
  42. package/esm/assets/images/cashub-logo-only.png +0 -0
  43. package/esm/assets/images/default-user.jpg +0 -0
  44. package/esm/assets/images/logo-cashub.png +0 -0
  45. package/esm/assets/images/map.png +0 -0
  46. package/esm/assets/images/qrcode.png +0 -0
  47. package/esm/backdrop/BaseBackdrop.js +11 -0
  48. package/esm/backdrop/LoadingBackdrop.js +10 -0
  49. package/esm/backdrop/ModalBackdrop.js +8 -0
  50. package/esm/backdrop/index.js +3 -0
  51. package/esm/badge/Badge.js +19 -0
  52. package/esm/badge/BadgeDot.js +11 -0
  53. package/esm/badge/BadgeFill.js +42 -0
  54. package/esm/badge/BadgeFillTriangle.js +138 -0
  55. package/esm/badge/BadgeWithText.js +24 -0
  56. package/esm/badge/index.js +5 -0
  57. package/esm/billing/BarChart.js +45 -0
  58. package/esm/billing/Grid.js +38 -0
  59. package/esm/billing/Header2.js +19 -0
  60. package/esm/billing/Header3.js +31 -0
  61. package/esm/billing/Paragraph.js +27 -0
  62. package/esm/billing/ParagraphGroup.js +16 -0
  63. package/esm/billing/ParagraphText.js +20 -0
  64. package/esm/billing/Section.js +44 -0
  65. package/esm/billing/SectionBody.js +11 -0
  66. package/esm/billing/SectionHeader.js +20 -0
  67. package/esm/billing/__stories__/BarChart.stories.js_bak +46 -0
  68. package/esm/billing/__stories__/Grid.stories.js_bak +57 -0
  69. package/esm/billing/__stories__/Header2.stories.js_bak +62 -0
  70. package/esm/billing/__stories__/Header3.stories.js_bak +69 -0
  71. package/esm/billing/__stories__/Paragraph.stories.js_bak +84 -0
  72. package/esm/billing/__stories__/ParagraphGroup.stories.js_bak +68 -0
  73. package/esm/billing/__stories__/ParagraphText.stories.js_bak +64 -0
  74. package/esm/billing/__stories__/Section.stories.js_bak +115 -0
  75. package/esm/billing/__stories__/SectionBody.stories.js_bak +62 -0
  76. package/esm/billing/__stories__/SectionHeader.stories.js-bak +68 -0
  77. package/esm/breadcrumb/Breadcrumb.js +71 -0
  78. package/esm/breadcrumb/index.js +1 -0
  79. package/esm/button/Button.js +145 -0
  80. package/esm/button/ButtonGroup.js +54 -0
  81. package/esm/button/IconButton.js +64 -0
  82. package/esm/button/ScrollToTopButton.js +47 -0
  83. package/esm/button/index.js +4 -0
  84. package/esm/callout/Callout.js +45 -0
  85. package/esm/callout/index.js +1 -0
  86. package/esm/chart/BarChart.js +147 -0
  87. package/esm/chart/DoughnutChart.js +110 -0
  88. package/esm/chart/LineChart.js +140 -0
  89. package/esm/chart/SingleBarChart.js +35 -0
  90. package/esm/chart/index.js +5 -0
  91. package/esm/chart/utils/centerTextPlugin.js +56 -0
  92. package/esm/chart/utils/customTooltip.js +84 -0
  93. package/esm/chart/utils/customTooltipLifecyclePlugin.js +16 -0
  94. package/esm/chart/utils/htmlLegendPlugin.js +83 -0
  95. package/esm/chart/utils/index.js +3 -0
  96. package/esm/chart/utils/padEmptyChartBar.js +47 -0
  97. package/esm/chart/utils/tooltipElement.js +17 -0
  98. package/esm/chart/utils/xAxisLabelTooltipPlugin.js +101 -0
  99. package/esm/chart/utils/yAxisTopTitlePlugin.js +43 -0
  100. package/esm/container/FlexContainer.js +33 -0
  101. package/esm/container/index.js +1 -0
  102. package/esm/cropper/Cropper.js +47 -0
  103. package/esm/cropper/CropperModalHandler.js +34 -0
  104. package/esm/cropper/index.js +2 -0
  105. package/esm/cropper/subComponent/CropImageModal.js +72 -0
  106. package/{datetimePicker/DatetimePicker.js → esm/datetimePicker/DatetimePickerV3.js} +63 -31
  107. package/esm/datetimePicker/TimeInput.js +49 -0
  108. package/esm/datetimePicker/TimePickerStyle.js +58 -0
  109. package/esm/datetimePicker/TimePickerV2.js +199 -0
  110. package/esm/datetimePicker/accordion/Month.js +245 -0
  111. package/esm/datetimePicker/accordion/Year.js +275 -0
  112. package/esm/datetimePicker/index.js +4 -0
  113. package/esm/datetimePicker/provider/constant.js +38 -0
  114. package/esm/datetimePicker/subComponent/DateTimePickerContext.js +3 -0
  115. package/esm/datetimePicker/utils/GMTDate.js +9 -0
  116. package/esm/datetimePicker/utils/pad.js +7 -0
  117. package/esm/datetimePicker/utils/toUTC0.js +7 -0
  118. package/esm/descriptionList/DescriptionDetail.js +21 -0
  119. package/esm/descriptionList/DescriptionList.js +18 -0
  120. package/esm/descriptionList/DescriptionTerm.js +7 -0
  121. package/esm/descriptionList/index.js +3 -0
  122. package/esm/divider/Divider.js +24 -0
  123. package/esm/divider/index.js +1 -0
  124. package/esm/dropdown/Dropdown.js +48 -0
  125. package/esm/dropdown/DropdownButtonOption.js +36 -0
  126. package/esm/dropdown/DropdownContent.js +83 -0
  127. package/esm/dropdown/DropdownDivOption.js +19 -0
  128. package/esm/dropdown/DropdownItem.js +19 -0
  129. package/esm/dropdown/DropdownLinkOption.js +17 -0
  130. package/esm/dropdown/DropdownToggle.js +31 -0
  131. package/esm/dropdown/index.js +11 -0
  132. package/esm/dropdown/subComponent/DropdownContext.js +3 -0
  133. package/esm/dropzone/FileDropzone.js +472 -0
  134. package/esm/dropzone/ImageDropzone.js +327 -0
  135. package/esm/dropzone/index.js +2 -0
  136. package/esm/dropzone/subComponent/Message.js +19 -0
  137. package/esm/figure/IconFigure.js +35 -0
  138. package/esm/figure/ImageFigure.js +31 -0
  139. package/esm/figure/index.js +2 -0
  140. package/esm/file/HiddenFileInput.js +8 -0
  141. package/esm/file/index.js +1 -0
  142. package/esm/form/Checkbox.js +157 -0
  143. package/esm/form/Fieldset.js +11 -0
  144. package/esm/form/FormItem.js +15 -0
  145. package/esm/form/Input.js +59 -0
  146. package/esm/form/Label.js +54 -0
  147. package/esm/form/MutedText.js +14 -0
  148. package/esm/form/PasswordInput.js +40 -0
  149. package/esm/form/RadioButton.js +94 -0
  150. package/esm/form/SearchSelect.js +174 -0
  151. package/esm/form/Searchbox.js +91 -0
  152. package/esm/form/Slider.js +39 -0
  153. package/esm/form/SwitchButton.js +97 -0
  154. package/esm/form/Textarea.js +34 -0
  155. package/esm/form/TreeView.js +66 -0
  156. package/esm/form/index.js +14 -0
  157. package/esm/grid/Column.js +39 -0
  158. package/esm/grid/Grid.js +28 -0
  159. package/esm/grid/index.js +2 -0
  160. package/esm/heading/Heading1.js +14 -0
  161. package/esm/heading/Heading2.js +21 -0
  162. package/esm/heading/Heading3.js +42 -0
  163. package/esm/heading/index.js +3 -0
  164. package/esm/helmet/Helmet.js +17 -0
  165. package/esm/helmet/index.js +2 -0
  166. package/esm/iconbox/ApplicationIconBox.js +74 -0
  167. package/esm/iconbox/IconBox.js +60 -0
  168. package/esm/iconbox/IconBoxV2.js +63 -0
  169. package/esm/iconbox/index.js +3 -0
  170. package/esm/iconbox/subComponent/IconBoxFigure.js +43 -0
  171. package/esm/iconbox/subComponent/IconBoxImage.js +35 -0
  172. package/esm/image/ImageFluid.js +10 -0
  173. package/esm/image/UploadImage.js +243 -0
  174. package/esm/image/index.js +2 -0
  175. package/esm/index.js +47 -0
  176. package/esm/keyframe/Pulse.js +15 -0
  177. package/esm/keyframe/Spin.js +7 -0
  178. package/esm/layout/Aside.js +39 -0
  179. package/esm/layout/AsideHeader.jsx +27 -0
  180. package/esm/layout/Backdrop.js +16 -0
  181. package/esm/layout/Container.js +30 -0
  182. package/esm/layout/Footer.js +36 -0
  183. package/esm/layout/Header.jsx +55 -0
  184. package/esm/layout/Layout.jsx +84 -0
  185. package/esm/layout/Logo.jsx +17 -0
  186. package/esm/layout/MenuIcon.jsx +27 -0
  187. package/esm/layout/Sidebar.jsx +271 -0
  188. package/esm/layout/index.js +1 -0
  189. package/esm/link/LinkSpan.js +62 -0
  190. package/esm/link/index.js +1 -0
  191. package/esm/map/GoogleMap.js +439 -0
  192. package/esm/map/GoogleReverseGeolocation.js +193 -0
  193. package/esm/map/LeafletMap.js +224 -0
  194. package/esm/map/LeafletReverseGeolocation.js +94 -0
  195. package/esm/map/index.js +4 -0
  196. package/esm/map/subComponent/BasicLeafletMap.js +27 -0
  197. package/esm/map/subComponent/GoogleMapContainer.js +22 -0
  198. package/esm/map/subComponent/GoogleMapPopup.js +103 -0
  199. package/esm/map/subComponent/GoogleMapWrapper.js +34 -0
  200. package/esm/map/subComponent/LeafletDrawControl.js +116 -0
  201. package/esm/map/subComponent/LeafletMapContainer.js +166 -0
  202. package/esm/map/subComponent/MapSearchBoxControl.js +47 -0
  203. package/esm/modal/StateModal.js +169 -0
  204. package/esm/modal/TitleModal.js +241 -0
  205. package/esm/modal/index.js +2 -0
  206. package/esm/page/Disclaimer.js +121 -0
  207. package/esm/page/index.js +1 -0
  208. package/esm/paginate/Paginate.js +129 -0
  209. package/esm/paginate/index.js +1 -0
  210. package/esm/popover/Popover.js +82 -0
  211. package/esm/popover/index.js +1 -0
  212. package/esm/qrcode/QRCode.js +51 -0
  213. package/esm/qrcode/QRCodeContainter.js +27 -0
  214. package/esm/qrcode/index.js +2 -0
  215. package/esm/ribbon/Ribbon.js +35 -0
  216. package/esm/ribbon/index.js +1 -0
  217. package/esm/section/Section.js +126 -0
  218. package/esm/section/SectionBody.js +43 -0
  219. package/esm/section/SectionHeader.js +61 -0
  220. package/esm/section/SectionToolbar.js +11 -0
  221. package/esm/section/SectionToolbarItem.js +10 -0
  222. package/esm/section/index.js +5 -0
  223. package/esm/select/InputSelect.js +263 -0
  224. package/esm/select/Select.js +811 -0
  225. package/esm/select/index.js +2 -0
  226. package/esm/select/subComponent/Checkbox.js +40 -0
  227. package/esm/select/subComponent/Footer.js +6 -0
  228. package/esm/select/subComponent/ListBox.js +23 -0
  229. package/esm/select/subComponent/Option.js +37 -0
  230. package/esm/select/subComponent/OptionGroup.js +16 -0
  231. package/esm/select/subComponent/Options.js +25 -0
  232. package/esm/select/subComponent/SearchBox.js +51 -0
  233. package/esm/select/subComponent/SelectedMultipleCount.js +32 -0
  234. package/esm/select/subComponent/SelectedMultipleTags.js +47 -0
  235. package/esm/select/subComponent/SelectedMultipleText.js +63 -0
  236. package/esm/select/subComponent/SelectedSingle.js +10 -0
  237. package/esm/styles/GlobalStyle.js +328 -0
  238. package/esm/styles/config/breakpoint.style.js +7 -0
  239. package/esm/styles/config/header.style.js +4 -0
  240. package/esm/styles/config/sidebar.style.js +11 -0
  241. package/esm/styles/index.js +2 -0
  242. package/esm/styles/mixin/backgroundColor.js +38 -0
  243. package/esm/styles/mixin/borderColor.js +31 -0
  244. package/esm/styles/mixin/color.js +31 -0
  245. package/esm/styles/mixin/colorOnBackground.js +31 -0
  246. package/esm/styles/mixin/inputPlaceholder.js +24 -0
  247. package/esm/styles/mixin/media.js +15 -0
  248. package/esm/styles/mixin/rounded.js +24 -0
  249. package/esm/styles/mixin/scrollbar.js +26 -0
  250. package/esm/styles/theme/dark.theme.js +91 -0
  251. package/esm/styles/theme/light.theme.js +91 -0
  252. package/esm/styles/theme/white.theme.js +91 -0
  253. package/esm/styles/themes.js +9 -0
  254. package/esm/table/GridTable.js +329 -0
  255. package/esm/table/ImageBox.js +38 -0
  256. package/esm/table/InfiniteGridTable.js +396 -0
  257. package/esm/table/PermissionTable.js +57 -0
  258. package/esm/table/SimpleGridTable.js +136 -0
  259. package/esm/table/Table.js +559 -0
  260. package/esm/table/__mock__/columns.js +64 -0
  261. package/esm/table/__mock__/data.js +530 -0
  262. package/esm/table/hooks/index.js +2 -0
  263. package/esm/table/hooks/useCalculateDataRange.js +22 -0
  264. package/esm/table/hooks/useGenerateSort.js +32 -0
  265. package/esm/table/index.js +6 -0
  266. package/esm/table/subComponent/BaseTableHeadCell.js +54 -0
  267. package/esm/table/subComponent/GridTableFooter.js +17 -0
  268. package/esm/table/subComponent/GridTableHeadCell.js +13 -0
  269. package/esm/table/subComponent/Resizer.js +70 -0
  270. package/esm/table/subComponent/TableFooter.js +24 -0
  271. package/esm/table/subComponent/TableFooterInfo.js +6 -0
  272. package/esm/table/subComponent/TableFooterPager.js +26 -0
  273. package/esm/table/subComponent/TableHeadCell.js +12 -0
  274. package/esm/table/subComponent/TableSort.js +31 -0
  275. package/esm/tagify/TagifyStyle.js +54 -0
  276. package/esm/tagify/Tags.js +49 -0
  277. package/esm/tagify/index.js +3 -0
  278. package/esm/tagify/templates/getCreateButtonTemplate.js +12 -0
  279. package/esm/text/Paragraph.js +79 -0
  280. package/esm/text/index.js +1 -0
  281. package/esm/timeline/Timeline.js +132 -0
  282. package/esm/timeline/index.js +1 -0
  283. package/esm/toast/CustomToastContainer.js +38 -0
  284. package/esm/toast/MessageContainer.js +44 -0
  285. package/esm/toast/index.js +3 -0
  286. package/esm/toast/show.js +29 -0
  287. package/esm/toast/style.css +1 -0
  288. package/esm/tooltip/Tooltip.js +133 -0
  289. package/esm/tooltip/index.js +1 -0
  290. package/esm/treeView/TreeViewV2.js +32 -0
  291. package/esm/treeView/TreeflexStyle.js +43 -0
  292. package/esm/treeView/index.js +2 -0
  293. package/esm/wizard/Wizard.js +244 -0
  294. package/esm/wizard/index.js +1 -0
  295. package/index.js +0 -12
  296. package/layout/Sidebar.jsx +1 -1
  297. package/package.json +5 -4
  298. package/datetimePicker/DatePicker.js +0 -363
  299. package/datetimePicker/DatePickerV2.js +0 -407
  300. package/datetimePicker/DatetimePickerV2.js +0 -395
  301. package/datetimePicker/TimePicker.js +0 -317
  302. package/datetimePicker/hooks/index.js +0 -27
  303. package/datetimePicker/hooks/useChangeNumber.js +0 -42
  304. package/datetimePicker/hooks/useDecrease.js +0 -38
  305. package/datetimePicker/hooks/useIncrease.js +0 -38
  306. package/datetimePicker/subComponent/Accordion.js +0 -373
  307. package/datetimePicker/subComponent/CustomTimeInput.js +0 -47
  308. package/jsoneditor/JsonEditor.js +0 -142
  309. package/jsoneditor/index.js +0 -13
@@ -3,34 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "DatePicker", {
7
- enumerable: true,
8
- get: function () {
9
- return _DatePicker.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "DatePickerV2", {
13
- enumerable: true,
14
- get: function () {
15
- return _DatePickerV.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "DatetimePicker", {
19
- enumerable: true,
20
- get: function () {
21
- return _DatetimePicker.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "DatetimePickerV2", {
25
- enumerable: true,
26
- get: function () {
27
- return _DatetimePickerV.default;
28
- }
29
- });
30
6
  Object.defineProperty(exports, "DatetimePickerV3", {
31
7
  enumerable: true,
32
8
  get: function () {
33
- return _DatetimePickerV2.default;
9
+ return _DatetimePickerV.default;
34
10
  }
35
11
  });
36
12
  Object.defineProperty(exports, "TimeInput", {
@@ -39,12 +15,6 @@ Object.defineProperty(exports, "TimeInput", {
39
15
  return _TimeInput.default;
40
16
  }
41
17
  });
42
- Object.defineProperty(exports, "TimePicker", {
43
- enumerable: true,
44
- get: function () {
45
- return _TimePicker.default;
46
- }
47
- });
48
18
  Object.defineProperty(exports, "TimePickerStyle", {
49
19
  enumerable: true,
50
20
  get: function () {
@@ -57,13 +27,8 @@ Object.defineProperty(exports, "TimePickerV2", {
57
27
  return _TimePickerV.default;
58
28
  }
59
29
  });
60
- var _DatePicker = _interopRequireDefault(require("./DatePicker"));
61
- var _DatePickerV = _interopRequireDefault(require("./DatePickerV2"));
62
- var _DatetimePicker = _interopRequireDefault(require("./DatetimePicker"));
63
- var _DatetimePickerV = _interopRequireDefault(require("./DatetimePickerV2"));
64
- var _DatetimePickerV2 = _interopRequireDefault(require("./DatetimePickerV3"));
30
+ var _DatetimePickerV = _interopRequireDefault(require("./DatetimePickerV3"));
65
31
  var _TimeInput = _interopRequireDefault(require("./TimeInput"));
66
- var _TimePicker = _interopRequireDefault(require("./TimePicker"));
67
32
  var _TimePickerV = _interopRequireDefault(require("./TimePickerV2"));
68
33
  var _TimePickerStyle = _interopRequireDefault(require("./TimePickerStyle"));
69
34
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
package/esm/Tab/Tab.js ADDED
@@ -0,0 +1,21 @@
1
+ import TabContext from './subComponent/TabContext';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const Tab = _ref => {
4
+ let {
5
+ children,
6
+ selected,
7
+ onChange,
8
+ mode = 'view',
9
+ onTitleChange
10
+ } = _ref;
11
+ return /*#__PURE__*/_jsx(TabContext.Provider, {
12
+ value: {
13
+ selected,
14
+ onChange,
15
+ mode,
16
+ onTitleChange
17
+ },
18
+ children: children
19
+ });
20
+ };
21
+ export default Tab;
@@ -0,0 +1,160 @@
1
+ import { useRef, useState, useCallback, useEffect } from 'react';
2
+ import styled from 'styled-components';
3
+ import { FaAngleLeft, FaAngleRight } from 'react-icons/fa/index.esm';
4
+ import { Button } from '../button';
5
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
6
+ const MAX_MOVE_PIXEL = 300;
7
+ const TabList = _ref => {
8
+ let {
9
+ children,
10
+ wrap = true,
11
+ ...props
12
+ } = _ref;
13
+ const wrapperRef = useRef(null);
14
+ const [exceedContainerWidth, setExceedContainerWidth] = useState(false);
15
+ const [hasPrevious, setHasPrevious] = useState(false);
16
+ const [hasNext, setHasNext] = useState(false);
17
+ const checkExceedContainerWidth = useCallback(() => {
18
+ if (wrapperRef.current) {
19
+ const {
20
+ offsetWidth,
21
+ scrollWidth
22
+ } = wrapperRef.current;
23
+ let {
24
+ marginLeft
25
+ } = getComputedStyle(wrapperRef.current);
26
+ const currentMarginLeft = Math.abs(parseInt(marginLeft));
27
+ setHasPrevious(currentMarginLeft > 0);
28
+ setHasNext(scrollWidth - offsetWidth > 0);
29
+ setExceedContainerWidth(scrollWidth > offsetWidth - currentMarginLeft);
30
+ }
31
+ }, []);
32
+ const handleResize = useCallback(() => {
33
+ checkExceedContainerWidth();
34
+ }, []);
35
+ const handleTransitionend = useCallback(event => {
36
+ // only allow margin-left transition event
37
+ if (event && event.propertyName !== 'margin-left') {
38
+ return;
39
+ }
40
+ checkExceedContainerWidth();
41
+ }, []);
42
+ const getMovePixel = offsetWidth => {
43
+ // move 1/3 pixel as default
44
+ const defaultMovePixel = Math.ceil(offsetWidth / 3);
45
+ return defaultMovePixel > MAX_MOVE_PIXEL ? MAX_MOVE_PIXEL : defaultMovePixel;
46
+ };
47
+ const updateScrollPosition = marginLeft => {
48
+ wrapperRef.current.style.marginLeft = marginLeft;
49
+ };
50
+ const handlePrevious = () => {
51
+ const {
52
+ offsetWidth
53
+ } = wrapperRef.current;
54
+ const {
55
+ marginLeft
56
+ } = getComputedStyle(wrapperRef.current);
57
+ const currentMarginLeft = Math.abs(parseInt(marginLeft));
58
+ const availableMovePixel = currentMarginLeft;
59
+ const movePixel = getMovePixel(offsetWidth - currentMarginLeft);
60
+ if (movePixel > availableMovePixel) {
61
+ // exceed edge, so move to edge only
62
+ updateScrollPosition('0px');
63
+ } else {
64
+ updateScrollPosition(`-${currentMarginLeft - movePixel}px`);
65
+ }
66
+ };
67
+ const handleNext = () => {
68
+ const {
69
+ offsetWidth,
70
+ scrollWidth
71
+ } = wrapperRef.current;
72
+ const {
73
+ marginLeft
74
+ } = getComputedStyle(wrapperRef.current);
75
+ const currentMarginLeft = Math.abs(parseInt(marginLeft));
76
+ const availableMovePixel = scrollWidth - offsetWidth;
77
+ const movePixel = getMovePixel(offsetWidth - currentMarginLeft);
78
+ if (movePixel > availableMovePixel) {
79
+ // exceed edge, so move to edge only
80
+ updateScrollPosition(`-${currentMarginLeft + availableMovePixel}px`);
81
+ } else {
82
+ updateScrollPosition(`-${currentMarginLeft + movePixel}px`);
83
+ }
84
+ };
85
+ useEffect(() => {
86
+ window.addEventListener('resize', handleResize);
87
+ handleResize();
88
+ return () => {
89
+ window.removeEventListener('resize', handleResize);
90
+ };
91
+ }, [wrap, children]);
92
+ useEffect(() => {
93
+ if (wrapperRef.current) {
94
+ wrapperRef.current.addEventListener('transitionend', handleTransitionend);
95
+ }
96
+ }, [wrap]);
97
+ return /*#__PURE__*/_jsx(Container, {
98
+ role: "tablist",
99
+ $wrap: wrap,
100
+ ...props,
101
+ children: wrap ? children : /*#__PURE__*/_jsxs(_Fragment, {
102
+ children: [/*#__PURE__*/_jsx(TabWrapper, {
103
+ ref: wrapperRef,
104
+ children: children
105
+ }), exceedContainerWidth && /*#__PURE__*/_jsxs(Paginate, {
106
+ children: [/*#__PURE__*/_jsx(Button, {
107
+ "aria-label": "Previous",
108
+ reverse: true,
109
+ onClick: handlePrevious,
110
+ iconOnly: true,
111
+ disabled: !hasPrevious,
112
+ children: /*#__PURE__*/_jsx(FaAngleLeft, {})
113
+ }), /*#__PURE__*/_jsx(Button, {
114
+ "aria-label": "Next",
115
+ reverse: true,
116
+ onClick: handleNext,
117
+ iconOnly: true,
118
+ disabled: !hasNext,
119
+ children: /*#__PURE__*/_jsx(FaAngleRight, {})
120
+ })]
121
+ })]
122
+ })
123
+ });
124
+ };
125
+ const Container = styled.div`
126
+ position: relative;
127
+ border-bottom: var(--border-width) solid var(--border-color);
128
+ margin-bottom: var(--spacing);
129
+
130
+ ${_ref2 => {
131
+ let {
132
+ $wrap
133
+ } = _ref2;
134
+ return !$wrap && 'white-space: nowrap;';
135
+ }}
136
+
137
+ ${_ref3 => {
138
+ let {
139
+ noMargin
140
+ } = _ref3;
141
+ return noMargin && 'margin-bottom: 0;';
142
+ }}
143
+ `;
144
+ const TabWrapper = styled.div`
145
+ margin-right: calc(1rem * 2 + 10px * 4 + var(--spacing-xs) * 2);
146
+ overflow: hidden;
147
+ margin-left: 0;
148
+ transition: margin-left 0.3s;
149
+ `;
150
+ const Paginate = styled.div`
151
+ display: flex;
152
+ position: absolute;
153
+ top: 0;
154
+ right: 0;
155
+
156
+ > :not(:last-child) {
157
+ margin-right: var(--spacing-xs);
158
+ }
159
+ `;
160
+ export default TabList;
@@ -0,0 +1,42 @@
1
+ import { useContext, useEffect, useState, useMemo } from 'react';
2
+ import styled from 'styled-components';
3
+ import TabContext from './subComponent/TabContext';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TabPanel = _ref => {
6
+ let {
7
+ children,
8
+ name,
9
+ ...props
10
+ } = _ref;
11
+ const {
12
+ selected
13
+ } = useContext(TabContext);
14
+ const [rendered, setRendered] = useState(false);
15
+ const tabContent = useMemo(() => {
16
+ if (rendered) {
17
+ return children;
18
+ }
19
+ return null;
20
+ }, [rendered, children]);
21
+ useEffect(() => {
22
+ if (name === selected) {
23
+ setRendered(true);
24
+ }
25
+ }, [selected, name]);
26
+ return /*#__PURE__*/_jsx(Panel, {
27
+ role: "tabpanel",
28
+ $display: selected === name,
29
+ ...props,
30
+ children: tabContent
31
+ });
32
+ };
33
+ const Panel = styled.div`
34
+ display: ${_ref2 => {
35
+ let {
36
+ $display
37
+ } = _ref2;
38
+ return $display ? 'block' : 'none';
39
+ }};
40
+ position: relative;
41
+ `;
42
+ export default TabPanel;
@@ -0,0 +1,98 @@
1
+ import { useContext, useState, useCallback } from 'react';
2
+ import { KEY_CODE } from '@cashub/utils';
3
+ import styled from 'styled-components';
4
+ import TabContext from './subComponent/TabContext';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const TabTab = _ref => {
7
+ let {
8
+ children,
9
+ name,
10
+ title,
11
+ onClick,
12
+ ...props
13
+ } = _ref;
14
+ const {
15
+ selected,
16
+ onChange,
17
+ mode,
18
+ onTitleChange
19
+ } = useContext(TabContext);
20
+ const [isModify, setIsModify] = useState(false);
21
+ const [currentTitle, setCurrentTitle] = useState(title);
22
+ const handleClick = useCallback(() => {
23
+ if (selected !== name) {
24
+ onChange(name);
25
+ }
26
+ if (onClick && typeof onClick === 'function') {
27
+ onClick();
28
+ }
29
+ }, [name, selected, onChange, onClick]);
30
+ const handleDoubleClick = () => {
31
+ if (mode !== 'modify') return;
32
+ setIsModify(true);
33
+ };
34
+ const handleBlur = () => {
35
+ onTitleChange(name, currentTitle);
36
+ setIsModify(false);
37
+ };
38
+ const handleKeyUp = event => {
39
+ const key = event.keyCode;
40
+ if (key === KEY_CODE.ENTER) {
41
+ onTitleChange(name, currentTitle);
42
+ setIsModify(false);
43
+ }
44
+ };
45
+ return isModify ? /*#__PURE__*/_jsx(InputTab, {
46
+ role: "tab",
47
+ type: "text",
48
+ value: currentTitle,
49
+ onChange: event => {
50
+ setCurrentTitle(event.target.value);
51
+ },
52
+ onBlur: handleBlur,
53
+ onKeyUp: handleKeyUp,
54
+ autoFocus: true
55
+ }) : /*#__PURE__*/_jsx(ButtonTab, {
56
+ role: "tab",
57
+ onClick: handleClick,
58
+ onDoubleClick: handleDoubleClick,
59
+ active: selected === name,
60
+ ...props,
61
+ children: children
62
+ });
63
+ };
64
+ const Tab = styled.div`
65
+ background: transparent;
66
+ padding: 10px var(--spacing-s);
67
+ border: none;
68
+ border-bottom: 4px solid transparent;
69
+ `;
70
+ const ButtonTab = styled(Tab).attrs({
71
+ as: 'button'
72
+ })`
73
+ color: var(--font-on-mute);
74
+ transition: color 0.3s, border 0.3s;
75
+ cursor: pointer;
76
+
77
+ &:hover {
78
+ color: var(--font-on-background);
79
+ }
80
+
81
+ ${_ref2 => {
82
+ let {
83
+ active
84
+ } = _ref2;
85
+ return active && `
86
+ border-color: var(--color-primary);
87
+ color: var(--font-on-background);
88
+ `;
89
+ }}
90
+ `;
91
+ const InputTab = styled(Tab).attrs({
92
+ as: 'input'
93
+ })`
94
+ color: var(--font-on-background);
95
+ border-color: var(--color-primary);
96
+ outline: none;
97
+ `;
98
+ export default TabTab;
@@ -0,0 +1,23 @@
1
+ import Tab from './Tab';
2
+ import TabList from './TabList';
3
+ import TabTab from './TabTab';
4
+ import TabPanel from './TabPanel';
5
+ import TabListV2 from './subComponent/TabListV2';
6
+ import TabTabV2 from './subComponent/TabTabV2';
7
+ import TabPanelV2 from './subComponent/TabPanelV2';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ export default Object.assign(Tab, {
10
+ List: TabList,
11
+ Tab: TabTab,
12
+ Panel: TabPanel
13
+ });
14
+ const TabV2Base = props => {
15
+ return /*#__PURE__*/_jsx(Tab, {
16
+ ...props
17
+ });
18
+ };
19
+ export const TabV2 = Object.assign(TabV2Base, {
20
+ List: TabListV2,
21
+ Tab: TabTabV2,
22
+ Panel: TabPanelV2
23
+ });
@@ -0,0 +1,3 @@
1
+ import { createContext } from 'react';
2
+ const TabContext = /*#__PURE__*/createContext(null);
3
+ export default TabContext;
@@ -0,0 +1,18 @@
1
+ import styled from 'styled-components';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const TabListV2 = _ref => {
4
+ let {
5
+ children,
6
+ ...props
7
+ } = _ref;
8
+ return /*#__PURE__*/_jsx(Container, {
9
+ role: "tablist",
10
+ ...props,
11
+ children: children
12
+ });
13
+ };
14
+ const Container = styled.div`
15
+ display: flex;
16
+ flex-wrap: wrap;
17
+ `;
18
+ export default TabListV2;
@@ -0,0 +1,45 @@
1
+ import { useContext, useEffect, useState, useMemo } from 'react';
2
+ import styled from 'styled-components';
3
+ import TabContext from './TabContext';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TabPanelV2 = _ref => {
6
+ let {
7
+ children,
8
+ name,
9
+ ...props
10
+ } = _ref;
11
+ const {
12
+ selected
13
+ } = useContext(TabContext);
14
+ const [rendered, setRendered] = useState(false);
15
+ const tabContent = useMemo(() => {
16
+ if (rendered) {
17
+ return children;
18
+ }
19
+ return null;
20
+ }, [rendered, children]);
21
+ useEffect(() => {
22
+ if (name === selected) {
23
+ setRendered(true);
24
+ }
25
+ }, [selected, name]);
26
+ return /*#__PURE__*/_jsx(Panel, {
27
+ role: "tabpanel",
28
+ $display: selected === name,
29
+ ...props,
30
+ children: tabContent
31
+ });
32
+ };
33
+ const Panel = styled.div`
34
+ display: ${_ref2 => {
35
+ let {
36
+ $display
37
+ } = _ref2;
38
+ return $display ? 'block' : 'none';
39
+ }};
40
+ position: relative;
41
+ background: var(--color-background2);
42
+ border-bottom-left-radius: var(--border-radius-s);
43
+ border-bottom-right-radius: var(--border-radius-s);
44
+ `;
45
+ export default TabPanelV2;
@@ -0,0 +1,56 @@
1
+ import { useContext, useCallback } from 'react';
2
+ import styled from 'styled-components';
3
+ import TabContext from './TabContext';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TabTabV2 = _ref => {
6
+ let {
7
+ children,
8
+ name,
9
+ ...props
10
+ } = _ref;
11
+ const {
12
+ selected,
13
+ onChange
14
+ } = useContext(TabContext);
15
+ const handleClick = useCallback(() => {
16
+ if (selected !== name) {
17
+ onChange(name);
18
+ }
19
+ }, [name, selected, onChange]);
20
+ return /*#__PURE__*/_jsx(Tab, {
21
+ role: "tab",
22
+ onClick: handleClick,
23
+ active: selected === name,
24
+ ...props,
25
+ children: children
26
+ });
27
+ };
28
+ const Tab = styled.button`
29
+ background: transparent;
30
+ color: var(--font-on-mute);
31
+ font-weight: bold;
32
+ padding: 10px var(--spacing-s);
33
+ border: none;
34
+ border-top-left-radius: var(--border-radius-s);
35
+ border-top-right-radius: var(--border-radius-s);
36
+ transition:
37
+ color 0.3s,
38
+ border 0.3s;
39
+ cursor: pointer;
40
+ flex: 1;
41
+
42
+ &:hover {
43
+ color: var(--font-on-background);
44
+ }
45
+
46
+ ${_ref2 => {
47
+ let {
48
+ active
49
+ } = _ref2;
50
+ return active && `
51
+ background: var(--color-background2);
52
+ color: var(--font-on-background);
53
+ `;
54
+ }}
55
+ `;
56
+ export default TabTabV2;
@@ -0,0 +1,20 @@
1
+ import styled from 'styled-components';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const TabList = _ref => {
4
+ let {
5
+ children,
6
+ ...props
7
+ } = _ref;
8
+ return /*#__PURE__*/_jsx(Container, {
9
+ role: "tablist",
10
+ ...props,
11
+ children: children
12
+ });
13
+ };
14
+ const Container = styled.div`
15
+ height: 100%;
16
+ width: 316px;
17
+ background: var(--color-background2);
18
+ overflow-y: auto;
19
+ `;
20
+ export default TabList;
@@ -0,0 +1,45 @@
1
+ import { useContext, useEffect, useState, useMemo } from 'react';
2
+ import styled from 'styled-components';
3
+ import TabContext from './subComponent/TabContext';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TabPanel = _ref => {
6
+ let {
7
+ children,
8
+ name,
9
+ ...props
10
+ } = _ref;
11
+ const {
12
+ selected
13
+ } = useContext(TabContext);
14
+ const [rendered, setRendered] = useState(false);
15
+ const tabContent = useMemo(() => {
16
+ if (rendered) {
17
+ return children;
18
+ }
19
+ return null;
20
+ }, [rendered, children]);
21
+ useEffect(() => {
22
+ if (name === selected) {
23
+ setRendered(true);
24
+ }
25
+ }, [selected, name]);
26
+ return /*#__PURE__*/_jsx(Panel, {
27
+ role: "tabpanel",
28
+ $display: selected === name,
29
+ ...props,
30
+ children: tabContent
31
+ });
32
+ };
33
+ const Panel = styled.div`
34
+ display: ${_ref2 => {
35
+ let {
36
+ $display
37
+ } = _ref2;
38
+ return $display ? 'block' : 'none';
39
+ }};
40
+ position: relative;
41
+ flex: 1;
42
+ padding: var(--spacing-s);
43
+ overflow-y: auto;
44
+ `;
45
+ export default TabPanel;
@@ -0,0 +1,63 @@
1
+ import { useContext, useCallback } from 'react';
2
+ import styled from 'styled-components';
3
+ import TabContext from './subComponent/TabContext';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TabTab = _ref => {
6
+ let {
7
+ children,
8
+ name,
9
+ ...props
10
+ } = _ref;
11
+ const {
12
+ selected,
13
+ onChange
14
+ } = useContext(TabContext);
15
+ const handleClick = useCallback(() => {
16
+ if (selected !== name) {
17
+ onChange(name);
18
+ }
19
+ }, [name, selected, onChange]);
20
+ return /*#__PURE__*/_jsx(Tab, {
21
+ role: "tab",
22
+ onClick: handleClick,
23
+ active: selected === name,
24
+ ...props,
25
+ children: children
26
+ });
27
+ };
28
+ const Tab = styled.button`
29
+ width: 100%;
30
+ padding: 12px var(--spacing-s);
31
+ border: none;
32
+ background: transparent;
33
+ text-align: left;
34
+ color: var(--font-on-background);
35
+ transition: 0.3s;
36
+ cursor: pointer;
37
+
38
+ &:hover {
39
+ background: var(--color-active);
40
+ color: var(--color-primary);
41
+ font-weight: var(--font-bold);
42
+
43
+ span {
44
+ color: var(--color-primary);
45
+ }
46
+ }
47
+
48
+ ${_ref2 => {
49
+ let {
50
+ active
51
+ } = _ref2;
52
+ return active && `
53
+ background: var(--color-active);
54
+ color: var(--color-primary);
55
+ font-weight: var(--font-bold);
56
+
57
+ span {
58
+ color: var(--color-primary);
59
+ }
60
+ `;
61
+ }}
62
+ `;
63
+ export default TabTab;
@@ -0,0 +1,34 @@
1
+ import styled from 'styled-components';
2
+ import TabContext from './subComponent/TabContext';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ const VerticalTab = _ref => {
5
+ let {
6
+ children,
7
+ height,
8
+ selected,
9
+ onChange
10
+ } = _ref;
11
+ return /*#__PURE__*/_jsx(TabContext.Provider, {
12
+ value: {
13
+ selected,
14
+ onChange
15
+ },
16
+ children: /*#__PURE__*/_jsx(Container, {
17
+ height: height,
18
+ children: children
19
+ })
20
+ });
21
+ };
22
+ const Container = styled.div`
23
+ display: flex;
24
+ height: ${_ref2 => {
25
+ let {
26
+ height
27
+ } = _ref2;
28
+ return height ? height : '100vh';
29
+ }};
30
+ border-radius: var(--border-radius-s);
31
+ background: var(--color-background3);
32
+ overflow: hidden;
33
+ `;
34
+ export default VerticalTab;