@cashub/ui-elv 1.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 (304) hide show
  1. package/Tab/Tab.js +28 -0
  2. package/Tab/TabList.js +167 -0
  3. package/Tab/TabPanel.js +49 -0
  4. package/Tab/TabTab.js +105 -0
  5. package/Tab/index.js +30 -0
  6. package/Tab/subComponent/TabContext.js +9 -0
  7. package/Tab/subComponent/TabListV2.js +25 -0
  8. package/Tab/subComponent/TabPanelV2.js +52 -0
  9. package/Tab/subComponent/TabTabV2.js +63 -0
  10. package/VerticalTab/TabList.js +27 -0
  11. package/VerticalTab/TabPanel.js +52 -0
  12. package/VerticalTab/TabTab.js +70 -0
  13. package/VerticalTab/VerticalTab.js +41 -0
  14. package/VerticalTab/index.js +16 -0
  15. package/VerticalTab/subComponent/TabContext.js +9 -0
  16. package/alert/Alert.js +29 -0
  17. package/alert/index.js +13 -0
  18. package/animate/Collapse.js +71 -0
  19. package/animate/Loader.js +58 -0
  20. package/animate/NumberCounter.js +51 -0
  21. package/animate/PulseRing.js +35 -0
  22. package/animate/Spinner.js +18 -0
  23. package/animate/index.js +41 -0
  24. package/assets/css/autocomplete.css +16 -0
  25. package/assets/css/font.css +4 -0
  26. package/assets/css/global.css +2 -0
  27. package/assets/font/helvetica/Helvetica.ttf +0 -0
  28. package/assets/font/nanumGothic/NanumGothic-Bold.ttf +0 -0
  29. package/assets/font/nanumGothic/NanumGothic-ExtraBold.ttf +0 -0
  30. package/assets/font/nanumGothic/NanumGothic-Regular.ttf +0 -0
  31. package/assets/icons/app-management.png +0 -0
  32. package/assets/icons/burger-black.png +0 -0
  33. package/assets/icons/burger-white.png +0 -0
  34. package/assets/icons/burger.png +0 -0
  35. package/assets/icons/file.svg +1 -0
  36. package/assets/icons/map_icon1.png +0 -0
  37. package/assets/icons/map_icon4.png +0 -0
  38. package/assets/images/bg-aside.png +0 -0
  39. package/assets/images/bg-chart-circle.png +0 -0
  40. package/assets/images/bg-chart-triangle.png +0 -0
  41. package/assets/images/cashub-logo-only.png +0 -0
  42. package/assets/images/default-user.jpg +0 -0
  43. package/assets/images/logo-cashub.png +0 -0
  44. package/assets/images/map.png +0 -0
  45. package/assets/images/qrcode.png +0 -0
  46. package/backdrop/BaseBackdrop.js +18 -0
  47. package/backdrop/LoadingBackdrop.js +17 -0
  48. package/backdrop/ModalBackdrop.js +15 -0
  49. package/backdrop/index.js +27 -0
  50. package/badge/Badge.js +26 -0
  51. package/badge/BadgeDot.js +18 -0
  52. package/badge/BadgeFill.js +49 -0
  53. package/badge/BadgeFillTriangle.js +147 -0
  54. package/badge/BadgeWithText.js +31 -0
  55. package/badge/index.js +41 -0
  56. package/billing/BarChart.js +51 -0
  57. package/billing/Grid.js +45 -0
  58. package/billing/Header2.js +25 -0
  59. package/billing/Header3.js +37 -0
  60. package/billing/Paragraph.js +33 -0
  61. package/billing/ParagraphGroup.js +22 -0
  62. package/billing/ParagraphText.js +26 -0
  63. package/billing/Section.js +50 -0
  64. package/billing/SectionBody.js +17 -0
  65. package/billing/SectionHeader.js +26 -0
  66. package/billing/__stories__/BarChart.stories.js_bak +46 -0
  67. package/billing/__stories__/Grid.stories.js_bak +57 -0
  68. package/billing/__stories__/Header2.stories.js_bak +62 -0
  69. package/billing/__stories__/Header3.stories.js_bak +69 -0
  70. package/billing/__stories__/Paragraph.stories.js_bak +84 -0
  71. package/billing/__stories__/ParagraphGroup.stories.js_bak +68 -0
  72. package/billing/__stories__/ParagraphText.stories.js_bak +64 -0
  73. package/billing/__stories__/Section.stories.js_bak +115 -0
  74. package/billing/__stories__/SectionBody.stories.js_bak +62 -0
  75. package/billing/__stories__/SectionHeader.stories.js-bak +68 -0
  76. package/breadcrumb/Breadcrumb.js +78 -0
  77. package/breadcrumb/index.js +13 -0
  78. package/button/Button.js +154 -0
  79. package/button/ButtonGroup.js +61 -0
  80. package/button/IconButton.js +72 -0
  81. package/button/ScrollToTopButton.js +54 -0
  82. package/button/index.js +34 -0
  83. package/callout/Callout.js +52 -0
  84. package/callout/index.js +13 -0
  85. package/chart/BarChart.js +148 -0
  86. package/chart/DoughnutChart.js +118 -0
  87. package/chart/LineChart.js +146 -0
  88. package/chart/SingleBarChart.js +42 -0
  89. package/chart/index.js +52 -0
  90. package/chart/utils/centerTextPlugin.js +62 -0
  91. package/chart/utils/customTooltip.js +94 -0
  92. package/chart/utils/htmlLegendPlugin.js +89 -0
  93. package/chart/utils/index.js +27 -0
  94. package/chart/utils/padEmptyChartBar.js +53 -0
  95. package/chart/utils/yAxisTopTitlePlugin.js +49 -0
  96. package/container/FlexContainer.js +40 -0
  97. package/container/index.js +13 -0
  98. package/cropper/Cropper.js +54 -0
  99. package/cropper/CropperModalHandler.js +41 -0
  100. package/cropper/index.js +20 -0
  101. package/cropper/subComponent/CropImageModal.js +79 -0
  102. package/datetimePicker/DatePicker.js +363 -0
  103. package/datetimePicker/DatePickerV2.js +407 -0
  104. package/datetimePicker/DatetimePicker.js +240 -0
  105. package/datetimePicker/DatetimePickerV2.js +395 -0
  106. package/datetimePicker/DatetimePickerV3.js +279 -0
  107. package/datetimePicker/TimeInput.js +56 -0
  108. package/datetimePicker/TimePicker.js +317 -0
  109. package/datetimePicker/TimePickerStyle.js +64 -0
  110. package/datetimePicker/TimePickerV2.js +208 -0
  111. package/datetimePicker/accordion/Month.js +254 -0
  112. package/datetimePicker/accordion/Year.js +284 -0
  113. package/datetimePicker/hooks/index.js +27 -0
  114. package/datetimePicker/hooks/useChangeNumber.js +42 -0
  115. package/datetimePicker/hooks/useDecrease.js +38 -0
  116. package/datetimePicker/hooks/useIncrease.js +38 -0
  117. package/datetimePicker/index.js +69 -0
  118. package/datetimePicker/provider/constant.js +43 -0
  119. package/datetimePicker/subComponent/Accordion.js +373 -0
  120. package/datetimePicker/subComponent/CustomTimeInput.js +47 -0
  121. package/datetimePicker/subComponent/DateTimePickerContext.js +9 -0
  122. package/datetimePicker/utils/GMTDate.js +15 -0
  123. package/datetimePicker/utils/pad.js +13 -0
  124. package/datetimePicker/utils/toUTC0.js +13 -0
  125. package/descriptionList/DescriptionDetail.js +28 -0
  126. package/descriptionList/DescriptionList.js +25 -0
  127. package/descriptionList/DescriptionTerm.js +14 -0
  128. package/descriptionList/index.js +27 -0
  129. package/divider/Divider.js +31 -0
  130. package/divider/index.js +13 -0
  131. package/dropdown/Dropdown.js +55 -0
  132. package/dropdown/DropdownButtonOption.js +43 -0
  133. package/dropdown/DropdownContent.js +90 -0
  134. package/dropdown/DropdownDivOption.js +26 -0
  135. package/dropdown/DropdownItem.js +26 -0
  136. package/dropdown/DropdownLinkOption.js +24 -0
  137. package/dropdown/DropdownToggle.js +38 -0
  138. package/dropdown/index.js +42 -0
  139. package/dropdown/subComponent/DropdownContext.js +9 -0
  140. package/dropzone/FileDropzone.js +479 -0
  141. package/dropzone/ImageDropzone.js +334 -0
  142. package/dropzone/index.js +20 -0
  143. package/dropzone/subComponent/Message.js +26 -0
  144. package/figure/IconFigure.js +42 -0
  145. package/figure/ImageFigure.js +38 -0
  146. package/figure/index.js +20 -0
  147. package/file/HiddenFileInput.js +15 -0
  148. package/file/index.js +13 -0
  149. package/form/Checkbox.js +166 -0
  150. package/form/Fieldset.js +18 -0
  151. package/form/FormItem.js +22 -0
  152. package/form/Input.js +66 -0
  153. package/form/Label.js +61 -0
  154. package/form/MutedText.js +21 -0
  155. package/form/PasswordInput.js +47 -0
  156. package/form/RadioButton.js +103 -0
  157. package/form/SearchSelect.js +181 -0
  158. package/form/Searchbox.js +98 -0
  159. package/form/Slider.js +46 -0
  160. package/form/SwitchButton.js +105 -0
  161. package/form/Textarea.js +41 -0
  162. package/form/TreeView.js +73 -0
  163. package/form/index.js +104 -0
  164. package/grid/Column.js +46 -0
  165. package/grid/Grid.js +35 -0
  166. package/grid/index.js +20 -0
  167. package/heading/Heading1.js +21 -0
  168. package/heading/Heading2.js +28 -0
  169. package/heading/Heading3.js +49 -0
  170. package/heading/index.js +27 -0
  171. package/helmet/Helmet.js +23 -0
  172. package/helmet/index.js +20 -0
  173. package/iconbox/ApplicationIconBox.js +81 -0
  174. package/iconbox/IconBox.js +67 -0
  175. package/iconbox/IconBoxV2.js +72 -0
  176. package/iconbox/index.js +27 -0
  177. package/iconbox/subComponent/IconBoxFigure.js +50 -0
  178. package/iconbox/subComponent/IconBoxImage.js +42 -0
  179. package/image/ImageFluid.js +17 -0
  180. package/image/UploadImage.js +250 -0
  181. package/image/index.js +20 -0
  182. package/index.js +568 -0
  183. package/jsoneditor/JsonEditor.js +142 -0
  184. package/jsoneditor/index.js +13 -0
  185. package/keyframe/Pulse.js +21 -0
  186. package/keyframe/Spin.js +13 -0
  187. package/layout/Aside.js +48 -0
  188. package/layout/AsideHeader.jsx +27 -0
  189. package/layout/Backdrop.js +23 -0
  190. package/layout/Container.js +39 -0
  191. package/layout/Footer.js +45 -0
  192. package/layout/Header.jsx +55 -0
  193. package/layout/Layout.jsx +84 -0
  194. package/layout/Logo.jsx +17 -0
  195. package/layout/MenuIcon.jsx +27 -0
  196. package/layout/Sidebar.jsx +271 -0
  197. package/layout/index.js +13 -0
  198. package/link/LinkSpan.js +69 -0
  199. package/link/index.js +13 -0
  200. package/map/GoogleMap.js +448 -0
  201. package/map/GoogleReverseGeolocation.js +200 -0
  202. package/map/LeafletMap.js +231 -0
  203. package/map/LeafletReverseGeolocation.js +101 -0
  204. package/map/index.js +34 -0
  205. package/map/subComponent/BasicLeafletMap.js +34 -0
  206. package/map/subComponent/GoogleMapContainer.js +29 -0
  207. package/map/subComponent/GoogleMapPopup.js +109 -0
  208. package/map/subComponent/GoogleMapWrapper.js +40 -0
  209. package/map/subComponent/LeafletDrawControl.js +127 -0
  210. package/map/subComponent/LeafletMapContainer.js +173 -0
  211. package/map/subComponent/MapSearchBoxControl.js +54 -0
  212. package/modal/StateModal.js +178 -0
  213. package/modal/TitleModal.js +250 -0
  214. package/modal/index.js +20 -0
  215. package/package.json +54 -0
  216. package/page/Disclaimer.js +128 -0
  217. package/page/index.js +13 -0
  218. package/paginate/Paginate.js +137 -0
  219. package/paginate/index.js +13 -0
  220. package/popover/Popover.js +91 -0
  221. package/popover/index.js +13 -0
  222. package/qrcode/QRCode.js +58 -0
  223. package/qrcode/QRCodeContainter.js +34 -0
  224. package/qrcode/index.js +20 -0
  225. package/ribbon/Ribbon.js +42 -0
  226. package/ribbon/index.js +13 -0
  227. package/section/Section.js +133 -0
  228. package/section/SectionBody.js +52 -0
  229. package/section/SectionHeader.js +70 -0
  230. package/section/SectionToolbar.js +18 -0
  231. package/section/SectionToolbarItem.js +17 -0
  232. package/section/index.js +41 -0
  233. package/select/InputSelect.js +270 -0
  234. package/select/Select.js +818 -0
  235. package/select/index.js +20 -0
  236. package/select/subComponent/Checkbox.js +48 -0
  237. package/select/subComponent/Footer.js +13 -0
  238. package/select/subComponent/ListBox.js +30 -0
  239. package/select/subComponent/Option.js +45 -0
  240. package/select/subComponent/OptionGroup.js +23 -0
  241. package/select/subComponent/Options.js +32 -0
  242. package/select/subComponent/SearchBox.js +58 -0
  243. package/select/subComponent/SelectedMultipleCount.js +39 -0
  244. package/select/subComponent/SelectedMultipleTags.js +54 -0
  245. package/select/subComponent/SelectedMultipleText.js +70 -0
  246. package/select/subComponent/SelectedSingle.js +17 -0
  247. package/styles/GlobalStyle.js +334 -0
  248. package/styles/config/breakpoint.style.js +13 -0
  249. package/styles/config/header.style.js +10 -0
  250. package/styles/config/sidebar.style.js +17 -0
  251. package/styles/index.js +20 -0
  252. package/styles/mixin/backgroundColor.js +44 -0
  253. package/styles/mixin/borderColor.js +37 -0
  254. package/styles/mixin/color.js +37 -0
  255. package/styles/mixin/colorOnBackground.js +37 -0
  256. package/styles/mixin/inputPlaceholder.js +30 -0
  257. package/styles/mixin/media.js +21 -0
  258. package/styles/mixin/rounded.js +30 -0
  259. package/styles/mixin/scrollbar.js +32 -0
  260. package/styles/theme/dark.theme.js +97 -0
  261. package/styles/theme/light.theme.js +97 -0
  262. package/styles/theme/white.theme.js +97 -0
  263. package/styles/themes.js +16 -0
  264. package/table/GridTable.js +336 -0
  265. package/table/ImageBox.js +45 -0
  266. package/table/InfiniteGridTable.js +403 -0
  267. package/table/PermissionTable.js +64 -0
  268. package/table/SimpleGridTable.js +143 -0
  269. package/table/Table.js +568 -0
  270. package/table/__mock__/columns.js +70 -0
  271. package/table/__mock__/data.js +536 -0
  272. package/table/hooks/index.js +20 -0
  273. package/table/hooks/useCalculateDataRange.js +28 -0
  274. package/table/hooks/useGenerateSort.js +39 -0
  275. package/table/index.js +48 -0
  276. package/table/subComponent/BaseTableHeadCell.js +62 -0
  277. package/table/subComponent/GridTableFooter.js +24 -0
  278. package/table/subComponent/GridTableHeadCell.js +20 -0
  279. package/table/subComponent/Resizer.js +77 -0
  280. package/table/subComponent/TableFooter.js +31 -0
  281. package/table/subComponent/TableFooterInfo.js +13 -0
  282. package/table/subComponent/TableFooterPager.js +33 -0
  283. package/table/subComponent/TableHeadCell.js +19 -0
  284. package/table/subComponent/TableSort.js +38 -0
  285. package/tagify/TagifyStyle.js +60 -0
  286. package/tagify/Tags.js +56 -0
  287. package/tagify/index.js +27 -0
  288. package/tagify/templates/getCreateButtonTemplate.js +18 -0
  289. package/text/Paragraph.js +86 -0
  290. package/text/index.js +13 -0
  291. package/timeline/Timeline.js +139 -0
  292. package/timeline/index.js +13 -0
  293. package/toast/CustomToastContainer.js +45 -0
  294. package/toast/MessageContainer.js +51 -0
  295. package/toast/index.js +36 -0
  296. package/toast/show.js +39 -0
  297. package/toast/style.css +1 -0
  298. package/tooltip/Tooltip.js +140 -0
  299. package/tooltip/index.js +13 -0
  300. package/treeView/TreeViewV2.js +38 -0
  301. package/treeView/TreeflexStyle.js +49 -0
  302. package/treeView/index.js +20 -0
  303. package/wizard/Wizard.js +251 -0
  304. package/wizard/index.js +13 -0
package/table/Table.js ADDED
@@ -0,0 +1,568 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
+ var _media = _interopRequireDefault(require("../styles/mixin/media"));
10
+ var _hooks = require("./hooks");
11
+ var _TableHeadCell = _interopRequireDefault(require("./subComponent/TableHeadCell"));
12
+ var _TableFooter = _interopRequireDefault(require("./subComponent/TableFooter"));
13
+ var _TableFooterInfo = _interopRequireDefault(require("./subComponent/TableFooterInfo"));
14
+ var _TableFooterPager = _interopRequireDefault(require("./subComponent/TableFooterPager"));
15
+ var _Paginate = _interopRequireDefault(require("../paginate/Paginate"));
16
+ var _Select = _interopRequireDefault(require("../select/Select"));
17
+ var _Popover = _interopRequireDefault(require("../popover/Popover"));
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
+ const Table = _ref => {
23
+ let {
24
+ columns,
25
+ data,
26
+ currentPage,
27
+ limit,
28
+ total,
29
+ onPageChange,
30
+ onLimitChange,
31
+ sortColumn,
32
+ sortType,
33
+ onSortChange,
34
+ select,
35
+ selected,
36
+ onRowClick,
37
+ enableRowDrag,
38
+ onRowDragEnter,
39
+ onRowDragLeave,
40
+ onRowDragOver,
41
+ onRowDrop,
42
+ backgroundReverse,
43
+ translation,
44
+ beforeCreateRow,
45
+ popoverContainer,
46
+ centerFooter = false,
47
+ showPager = true
48
+ } = _ref;
49
+ const tableRef = (0, _react.useRef)(null);
50
+ const {
51
+ start,
52
+ end
53
+ } = (0, _hooks.useCalculateDataRange)(currentPage, limit, total);
54
+ const texts = (0, _react.useMemo)(() => {
55
+ const defaultTexts = {
56
+ info: 'Showing _START_ to _END_ of _TOTAL_ entries',
57
+ empty: 'No data available in table'
58
+ };
59
+ return {
60
+ ...defaultTexts,
61
+ ...translation
62
+ };
63
+ }, [translation]);
64
+ const handleSortChange = (0, _react.useCallback)(columnName => {
65
+ if (onSortChange) {
66
+ onSortChange(columnName);
67
+ }
68
+ }, [onSortChange]);
69
+ const handleRowClick = (0, _react.useCallback)((event, rowData) => {
70
+ if (onRowClick) {
71
+ onRowClick(event, rowData);
72
+ }
73
+ }, [onRowClick]);
74
+ const handleRowDragEnter = (0, _react.useCallback)((event, rowData) => {
75
+ if (onRowDragEnter) {
76
+ onRowDragEnter(event, rowData);
77
+ }
78
+ }, [onRowDragEnter]);
79
+ const handleRowDragLeave = (0, _react.useCallback)((event, rowData) => {
80
+ if (onRowDragLeave) {
81
+ onRowDragLeave(event, rowData);
82
+ }
83
+ }, [onRowDragLeave]);
84
+ const handleRowDragOver = (0, _react.useCallback)((event, rowData) => {
85
+ if (onRowDragOver) {
86
+ onRowDragOver(event, rowData);
87
+ }
88
+ }, [onRowDragOver]);
89
+ const handleRowDrop = (0, _react.useCallback)((event, rowData) => {
90
+ if (onRowDrop) {
91
+ onRowDrop(event, rowData);
92
+ }
93
+ }, [onRowDrop]);
94
+ const showFullValue = (0, _react.useCallback)((event, customContent) => {
95
+ let {
96
+ id
97
+ } = event.target;
98
+ if (!id) {
99
+ ({
100
+ id
101
+ } = event.currentTarget);
102
+ event.target.id = id;
103
+ }
104
+ const {
105
+ offsetWidth,
106
+ scrollWidth,
107
+ innerText
108
+ } = event.target;
109
+ if ((scrollWidth >= offsetWidth || customContent) && innerText) {
110
+ event.stopPropagation();
111
+ (0, _Popover.default)({
112
+ id,
113
+ container: popoverContainer,
114
+ target: event.target,
115
+ content: customContent ? customContent : innerText,
116
+ boundary: tableRef.current
117
+ });
118
+ }
119
+ }, [popoverContainer]);
120
+
121
+ // generate sort icon area
122
+ const generateSort = (0, _hooks.useGenerateSort)(sortColumn, sortType);
123
+ const tableHeads = (0, _react.useMemo)(() => {
124
+ return columns.map((column, index) => {
125
+ const {
126
+ title,
127
+ fieldName,
128
+ width,
129
+ sortable,
130
+ align
131
+ } = column;
132
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableHeadCell.default, {
133
+ width: width,
134
+ sortable: sortable,
135
+ onClick: () => {
136
+ sortable && handleSortChange(fieldName);
137
+ },
138
+ align: align,
139
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
140
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
141
+ id: fieldName,
142
+ onClick: showFullValue,
143
+ children: title
144
+ }), sortable && generateSort(fieldName)]
145
+ })
146
+ }, `TH${index}`);
147
+ });
148
+ }, [columns, handleSortChange, generateSort, showFullValue]);
149
+ const tableRows = (0, _react.useMemo)(() => {
150
+ if (data.length === 0) {
151
+ return null;
152
+ }
153
+ const {
154
+ matcher,
155
+ type
156
+ } = select || {};
157
+ return data.map((row, rowIndex) => {
158
+ let active = false;
159
+ let rowConfig = {};
160
+ if (beforeCreateRow) {
161
+ rowConfig = beforeCreateRow(row) || {};
162
+ }
163
+
164
+ // row data cell
165
+ const tds = columns.map((column, columnIndex) => {
166
+ const {
167
+ title,
168
+ fieldName,
169
+ render,
170
+ custom,
171
+ customPop,
172
+ ...props
173
+ } = column;
174
+ const key = rowIndex + columnIndex.toString();
175
+ let value = row[fieldName];
176
+
177
+ // 如果有matcher,比對當前 column 的 fieldName 是不是等於 matcher
178
+ if (matcher && fieldName === matcher) {
179
+ if (type === 'single' && selected === value) {
180
+ active = true;
181
+ }
182
+ if (type === 'multiple' && selected.includes(value)) {
183
+ active = true;
184
+ }
185
+ }
186
+
187
+ // convert to an empty string
188
+ if (value === null || value === undefined) {
189
+ value = '';
190
+ }
191
+ let isCustom = false;
192
+ let renderedData = null;
193
+ const customContent = customPop ? customPop(row) : null;
194
+ if (custom && render) {
195
+ // call render function to get custom data(fully)
196
+ isCustom = true;
197
+ renderedData = render(row);
198
+ } else {
199
+ // call render function to get custom data(part)
200
+ renderedData = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
201
+ id: key,
202
+ onClick: event => showFullValue(event, customContent),
203
+ children: render ? render(value, row) : String(value)
204
+ });
205
+ }
206
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(TableDataCell, {
207
+ "data-label": title,
208
+ enableRowDrag: columnIndex === columns.length - 1 && enableRowDrag,
209
+ backgroundReverse: backgroundReverse,
210
+ border: rowConfig.border,
211
+ custom: isCustom,
212
+ ...props,
213
+ children: [renderedData, enableRowDrag && columnIndex === columns.length - 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(DragHandle, {
214
+ draggable: true,
215
+ onDragStart: event => {
216
+ event.dataTransfer.setData('fromRow', JSON.stringify(row));
217
+ },
218
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
219
+ stroke: "currentColor",
220
+ fill: "currentColor",
221
+ "stroke-width": "0",
222
+ viewBox: "0 0 24 24",
223
+ height: "1em",
224
+ width: "1em",
225
+ xmlns: "http://www.w3.org/2000/svg",
226
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
227
+ fill: "none",
228
+ d: "M0 0h24v24H0V0z"
229
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
230
+ d: "M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
231
+ })]
232
+ })
233
+ })]
234
+ }, columnIndex);
235
+ });
236
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BodyTR, {
237
+ clickable: onRowClick,
238
+ active: active,
239
+ primary: rowConfig.primary,
240
+ border: rowConfig.border,
241
+ backgroundReverse: backgroundReverse,
242
+ onClick: event => {
243
+ handleRowClick(event, row);
244
+ },
245
+ onDragEnter: event => {
246
+ event.preventDefault();
247
+ event.stopPropagation();
248
+ handleRowDragEnter(event, row);
249
+ },
250
+ onDragLeave: event => {
251
+ event.preventDefault();
252
+ event.stopPropagation();
253
+ handleRowDragLeave(event, row);
254
+ },
255
+ onDragOver: event => {
256
+ event.preventDefault();
257
+ event.stopPropagation();
258
+ handleRowDragOver(event, row);
259
+ },
260
+ onDrop: event => {
261
+ handleRowDrop(event, row);
262
+ },
263
+ children: tds
264
+ }, rowIndex);
265
+ });
266
+ }, [backgroundReverse, beforeCreateRow, columns, data, handleRowClick, handleRowDragEnter, handleRowDragLeave, handleRowDragOver, handleRowDrop, onRowClick, enableRowDrag, select, selected, showFullValue]);
267
+ const generateEmptyMessage = (0, _react.useCallback)(() => {
268
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BodyTR, {
269
+ noData: true,
270
+ backgroundReverse: backgroundReverse,
271
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TableDataCell, {
272
+ noData: true,
273
+ center: true,
274
+ colSpan: columns.length,
275
+ backgroundReverse: backgroundReverse,
276
+ children: texts.empty
277
+ })
278
+ });
279
+ }, [backgroundReverse, columns, texts]);
280
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
281
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ResponsiveTable, {
282
+ ref: tableRef,
283
+ enableRowDrag: enableRowDrag,
284
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(TableHead, {
285
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("tr", {
286
+ children: tableHeads
287
+ })
288
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("tbody", {
289
+ children: tableRows || generateEmptyMessage()
290
+ })]
291
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_TableFooter.default, {
292
+ center: centerFooter,
293
+ enableRowDrag: enableRowDrag,
294
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TableFooterInfo.default, {
295
+ children: texts.info.replace('_START_', start).replace('_END_', end).replace('_TOTAL_', total)
296
+ }), showPager && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_TableFooterPager.default, {
297
+ center: centerFooter,
298
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Paginate.default, {
299
+ currentPage: currentPage,
300
+ totalCount: total,
301
+ pageSize: limit,
302
+ onPageChange: onPageChange
303
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
304
+ fill: true,
305
+ fillReverse: backgroundReverse,
306
+ allowSearch: false,
307
+ options: [{
308
+ id: 10,
309
+ text: '10'
310
+ }, {
311
+ id: 20,
312
+ text: '20'
313
+ }, {
314
+ id: 30,
315
+ text: '30'
316
+ }, {
317
+ id: 40,
318
+ text: '40'
319
+ }, {
320
+ id: 50,
321
+ text: '50'
322
+ }],
323
+ selected: limit,
324
+ onSelect: onLimitChange
325
+ })]
326
+ })]
327
+ })]
328
+ });
329
+ };
330
+ const ResponsiveTable = _styledComponents.default.table`
331
+ width: 100%;
332
+ border-collapse: separate;
333
+ margin-top: calc(var(--spacing-s) * -1);
334
+ border-spacing: 0 var(--spacing-s);
335
+ color: var(--font-on-background);
336
+ table-layout: fixed;
337
+
338
+ ${_ref2 => {
339
+ let {
340
+ enableRowDrag
341
+ } = _ref2;
342
+ return enableRowDrag && 'padding-right: calc(1.5rem + 0.5rem);';
343
+ }}
344
+ `;
345
+ const TableHead = _styledComponents.default.thead`
346
+ ${_media.default.mobile`
347
+ display: none;
348
+ `}
349
+ `;
350
+ const BodyTR = _styledComponents.default.tr`
351
+ &:hover {
352
+ > td {
353
+ border-color: var(--color-primary);
354
+ border-width: var(--border-width);
355
+ }
356
+ }
357
+
358
+ ${_ref3 => {
359
+ let {
360
+ active,
361
+ primary
362
+ } = _ref3;
363
+ return (active || primary) && (0, _styledComponents.css)`
364
+ > td {
365
+ background: var(--color-background3);
366
+ }
367
+ `;
368
+ }}
369
+
370
+ ${_ref4 => {
371
+ let {
372
+ clickable
373
+ } = _ref4;
374
+ return clickable && 'pointer: cursor;';
375
+ }}
376
+
377
+ ${_media.default.mobile`
378
+ overflow: hidden;
379
+ position: relative;
380
+ transition: .3s;
381
+ display: block;
382
+ margin-bottom: 0.75rem;
383
+ padding: var(--spacing-xs) var(--spacing-s);
384
+ background: var(
385
+ --color-background${_ref5 => {
386
+ let {
387
+ backgroundReverse
388
+ } = _ref5;
389
+ return backgroundReverse ? 1 : 2;
390
+ }}
391
+ );
392
+ border-radius: var(--border-radius);
393
+ transition: .3s;
394
+ border: 1px solid transparent;
395
+
396
+ &:hover {
397
+ border: var(--border-width) solid var(--color-primary);
398
+ }
399
+
400
+ ${_ref6 => {
401
+ let {
402
+ active,
403
+ primary
404
+ } = _ref6;
405
+ return (active || primary) && (0, _styledComponents.css)`
406
+ background: var(--color-background3);
407
+ `;
408
+ }}
409
+
410
+ ${_ref7 => {
411
+ let {
412
+ border
413
+ } = _ref7;
414
+ return border && (0, _styledComponents.css)`
415
+ border-color: var(--font-on-background);
416
+ border-width: 3px;
417
+ `;
418
+ }}
419
+
420
+ ${_ref8 => {
421
+ let {
422
+ noData
423
+ } = _ref8;
424
+ return noData && (0, _styledComponents.css)`
425
+ height: 168px;
426
+
427
+ > td {
428
+ &:first-child:before {
429
+ display: none;
430
+ }
431
+ }
432
+ `;
433
+ }}
434
+ `}
435
+ `;
436
+ const TableDataCell = _styledComponents.default.td.attrs(_ref9 => {
437
+ let {
438
+ border
439
+ } = _ref9;
440
+ return {
441
+ borderWidth: border ? '3px' : 'var(--border-width)',
442
+ borderColor: border ? 'var(--font-on-background)' : 'transparent'
443
+ };
444
+ })`
445
+ height: 48px;
446
+ background: ${_ref10 => {
447
+ let {
448
+ backgroundReverse
449
+ } = _ref10;
450
+ return backgroundReverse ? 'var(--color-background1)' : 'var(--color-background2)';
451
+ }};
452
+ padding: 0 var(--spacing-xs);
453
+ max-width: 0px;
454
+ text-align: ${_ref11 => {
455
+ let {
456
+ center
457
+ } = _ref11;
458
+ return center ? 'center' : 'left';
459
+ }};
460
+ vertical-align: middle;
461
+ transition: border-color 0.3s;
462
+
463
+ ${_ref12 => {
464
+ let {
465
+ borderWidth,
466
+ borderColor
467
+ } = _ref12;
468
+ return (0, _styledComponents.css)`
469
+ border-top: ${borderWidth} solid ${borderColor};
470
+ border-bottom: ${borderWidth} solid ${borderColor};
471
+ &:first-child {
472
+ border-left: ${borderWidth} solid ${borderColor};
473
+ border-top-left-radius: var(--border-radius-l);
474
+ border-bottom-left-radius: var(--border-radius-l);
475
+ padding-left: var(--spacing);
476
+ }
477
+
478
+ &:last-child {
479
+ border-right: ${borderWidth} solid ${borderColor};
480
+ border-top-right-radius: var(--border-radius-l);
481
+ border-bottom-right-radius: var(--border-radius-l);
482
+ padding-right: var(--spacing);
483
+ }
484
+ `;
485
+ }}
486
+ > span {
487
+ display: inline-block;
488
+ width: 100%;
489
+ overflow: hidden;
490
+ white-space: pre;
491
+ text-overflow: ellipsis;
492
+ }
493
+
494
+ ${_ref13 => {
495
+ let {
496
+ noData
497
+ } = _ref13;
498
+ return noData && (0, _styledComponents.css)`
499
+ padding: 20px 0;
500
+ `;
501
+ }}
502
+
503
+ ${_ref14 => {
504
+ let {
505
+ enableRowDrag
506
+ } = _ref14;
507
+ return enableRowDrag && 'position: relative;';
508
+ }}
509
+
510
+ ${_media.default.mobile`
511
+ display: flex;
512
+ height: auto;
513
+ margin-bottom: var(--spacing-xs);
514
+ background: transparent !important;
515
+ border: none !important;
516
+ min-width: 100%;
517
+
518
+ &:first-child {
519
+ padding: var(--spacing-xs) 0 0 var(--spacing-xs);
520
+ }
521
+
522
+ &:last-child {
523
+ padding-right: var(--spacing-xs);
524
+ }
525
+
526
+ &:before {
527
+ content: attr(data-label) ": ";
528
+ font-weight: bold;
529
+ padding-right: var(--spacing-xs);
530
+ }
531
+
532
+ > span {
533
+ flex: 1;
534
+ }
535
+
536
+ ${_ref15 => {
537
+ let {
538
+ custom
539
+ } = _ref15;
540
+ return custom && (0, _styledComponents.css)`
541
+ &:last-child:before {
542
+ display: none;
543
+ }
544
+
545
+ &:last-child {
546
+ padding: 0;
547
+ position: absolute;
548
+ right: 0.75rem;
549
+ top: var(--spacing-xs);
550
+ justify-content: flex-end;
551
+ }
552
+ `;
553
+ }}
554
+ `}
555
+ `;
556
+ const DragHandle = _styledComponents.default.div`
557
+ display: flex;
558
+ align-items: center;
559
+ justify-content: center;
560
+ width: var(--spacing);
561
+ height: var(--spacing);
562
+ position: absolute;
563
+ left: calc(100% + var(--spacing-xs));
564
+ cursor: grab;
565
+ top: 50%;
566
+ transform: translateY(-50%);
567
+ `;
568
+ var _default = exports.default = Table;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _badge = require("../../badge");
8
+ var _bs = require("react-icons/bs");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ const columns = [{
11
+ title: 'Name',
12
+ fieldName: 'name',
13
+ sortable: true,
14
+ width: '400px'
15
+ }, {
16
+ title: 'Tag',
17
+ fieldName: 'tag',
18
+ sortable: false,
19
+ width: '150px',
20
+ render(data) {
21
+ return data.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_badge.Badge, {
22
+ style: {
23
+ margin: '0'
24
+ },
25
+ success: true,
26
+ children: `${data.length} ${data.length > 1 ? 'Tags' : 'Tag'}`
27
+ });
28
+ },
29
+ customPop(_ref) {
30
+ let {
31
+ tag
32
+ } = _ref;
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
34
+ style: {
35
+ display: 'grid',
36
+ gap: 'var(--spacing-xs)'
37
+ },
38
+ children: tag.map(_ref2 => {
39
+ let {
40
+ name,
41
+ tag_id: id
42
+ } = _ref2;
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
44
+ style: {
45
+ display: 'flex',
46
+ alignItems: 'center',
47
+ gap: 'var(--spacing-xs)'
48
+ },
49
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_bs.BsFillTagFill, {}), "\xA0", name]
50
+ }, id);
51
+ })
52
+ });
53
+ }
54
+ }, {
55
+ title: 'Contact Name',
56
+ fieldName: 'contact',
57
+ sortable: true,
58
+ width: '400px'
59
+ }, {
60
+ title: 'Contact Email',
61
+ fieldName: 'contactEmail',
62
+ sortable: false,
63
+ width: '500px'
64
+ }, {
65
+ title: 'telephone',
66
+ fieldName: 'telephone',
67
+ sortable: false,
68
+ width: '400px'
69
+ }];
70
+ var _default = exports.default = columns;