ekm-ui 0.3.74 → 0.3.78
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.
- package/.turbo/turbo-build.log +128 -128
- package/CHANGELOG.md +12 -0
- package/dist/accordion.d.ts +28 -21
- package/dist/accordion.mjs +1 -1
- package/dist/alert-banner.mjs +1 -1
- package/dist/avatar.mjs +1 -1
- package/dist/badge.mjs +1 -1
- package/dist/breadcrumb.mjs +1 -1
- package/dist/card-payment-block.css +1 -1
- package/dist/card-payment-block.css.map +1 -1
- package/dist/card-payment-block.mjs +46 -46
- package/dist/checkbox.mjs +1 -1
- package/dist/chunk-2OTVEVU7.mjs +11 -0
- package/dist/chunk-2OTVEVU7.mjs.map +1 -0
- package/dist/{chunk-47S6AX7M.mjs → chunk-2PW7KHXJ.mjs} +1 -1
- package/dist/chunk-2PW7KHXJ.mjs.map +1 -0
- package/dist/{chunk-CMA7TSQG.mjs → chunk-35VEFUPA.mjs} +4 -4
- package/dist/chunk-35VEFUPA.mjs.map +1 -0
- package/dist/{chunk-ZWJSMASL.mjs → chunk-3AGRJPPN.mjs} +3 -3
- package/dist/chunk-3AGRJPPN.mjs.map +1 -0
- package/dist/{chunk-MRJOYGDD.mjs → chunk-3TAXDPV6.mjs} +2 -2
- package/dist/{chunk-MRJOYGDD.mjs.map → chunk-3TAXDPV6.mjs.map} +1 -1
- package/dist/{chunk-5DQUZENZ.mjs → chunk-6F3XKP3G.mjs} +2 -2
- package/dist/chunk-6F3XKP3G.mjs.map +1 -0
- package/dist/{chunk-HEKVJKLH.mjs → chunk-6UK5Y6KZ.mjs} +2 -2
- package/dist/{chunk-HEKVJKLH.mjs.map → chunk-6UK5Y6KZ.mjs.map} +1 -1
- package/dist/{chunk-EWNPNF2B.mjs → chunk-76V2THLN.mjs} +3 -3
- package/dist/chunk-76V2THLN.mjs.map +1 -0
- package/dist/chunk-7GLTVVKS.mjs +12 -0
- package/dist/chunk-7GLTVVKS.mjs.map +1 -0
- package/dist/{chunk-UUWBHZKH.mjs → chunk-7MH2LXFV.mjs} +4 -4
- package/dist/{chunk-UUWBHZKH.mjs.map → chunk-7MH2LXFV.mjs.map} +1 -1
- package/dist/{chunk-7YKZ7D7U.mjs → chunk-ATNP3Z6G.mjs} +2 -2
- package/dist/{chunk-25FJ277C.mjs → chunk-AYH56CFA.mjs} +3 -3
- package/dist/chunk-AYH56CFA.mjs.map +1 -0
- package/dist/{chunk-NEJOZRKV.mjs → chunk-BK5RX7N5.mjs} +2 -2
- package/dist/chunk-BK5RX7N5.mjs.map +1 -0
- package/dist/{chunk-F6ZWBNIM.mjs → chunk-CIUW5YZ7.mjs} +2 -2
- package/dist/chunk-CIUW5YZ7.mjs.map +1 -0
- package/dist/{chunk-WMFTYTMD.mjs → chunk-CZC4EJOD.mjs} +3 -3
- package/dist/chunk-CZC4EJOD.mjs.map +1 -0
- package/dist/{chunk-CEK5K5TU.mjs → chunk-D3VRYN5H.mjs} +4 -4
- package/dist/chunk-D3VRYN5H.mjs.map +1 -0
- package/dist/{chunk-W3DRXKTC.mjs → chunk-DBTYTFGU.mjs} +2 -2
- package/dist/chunk-DBTYTFGU.mjs.map +1 -0
- package/dist/{chunk-JCWSMIVA.mjs → chunk-E6KQBM7F.mjs} +2 -2
- package/dist/chunk-E6KQBM7F.mjs.map +1 -0
- package/dist/{chunk-5FPVCRAI.mjs → chunk-ECOC3JRK.mjs} +1 -1
- package/dist/{chunk-5FPVCRAI.mjs.map → chunk-ECOC3JRK.mjs.map} +1 -1
- package/dist/{chunk-3LINEESX.mjs → chunk-EH3ZVEVT.mjs} +1 -1
- package/dist/chunk-EH3ZVEVT.mjs.map +1 -0
- package/dist/{chunk-YJKULMWM.mjs → chunk-EX5FMSQL.mjs} +2 -2
- package/dist/chunk-EX5FMSQL.mjs.map +1 -0
- package/dist/{chunk-ASCPOK5F.mjs → chunk-FVUORQJX.mjs} +4 -4
- package/dist/chunk-FVUORQJX.mjs.map +1 -0
- package/dist/{chunk-WFRV27QA.mjs → chunk-G5A3E5IG.mjs} +3 -3
- package/dist/chunk-G5A3E5IG.mjs.map +1 -0
- package/dist/{chunk-2IL2LP47.mjs → chunk-HOCKBMTF.mjs} +3 -3
- package/dist/chunk-HOCKBMTF.mjs.map +1 -0
- package/dist/{chunk-FRIXS4BL.mjs → chunk-JPF3K5TD.mjs} +1 -1
- package/dist/chunk-JPF3K5TD.mjs.map +1 -0
- package/dist/{chunk-AYXC2DCM.mjs → chunk-K2G6O2LX.mjs} +3 -3
- package/dist/chunk-K2G6O2LX.mjs.map +1 -0
- package/dist/chunk-LVJYP46A.mjs +9 -0
- package/dist/chunk-LVJYP46A.mjs.map +1 -0
- package/dist/{chunk-VQ3MZS4J.mjs → chunk-MPIWXVKP.mjs} +2 -2
- package/dist/chunk-MPIWXVKP.mjs.map +1 -0
- package/dist/{chunk-DZABAR36.mjs → chunk-NJC2WLYK.mjs} +2 -2
- package/dist/chunk-NJC2WLYK.mjs.map +1 -0
- package/dist/{chunk-5CGIKL2Y.mjs → chunk-OG6UBKMG.mjs} +2 -2
- package/dist/chunk-OG6UBKMG.mjs.map +1 -0
- package/dist/chunk-PEODF7PL.mjs +34 -0
- package/dist/chunk-PEODF7PL.mjs.map +1 -0
- package/dist/{chunk-FAFXVD4P.mjs → chunk-PJZVMYPN.mjs} +4 -4
- package/dist/chunk-PJZVMYPN.mjs.map +1 -0
- package/dist/{chunk-KEIDXVZB.mjs → chunk-PT4IH2KW.mjs} +2 -2
- package/dist/chunk-PT4IH2KW.mjs.map +1 -0
- package/dist/{chunk-MXH3TZWM.mjs → chunk-QFECX4D6.mjs} +1 -1
- package/dist/chunk-QFECX4D6.mjs.map +1 -0
- package/dist/{chunk-5VH26DHQ.mjs → chunk-QMFUWXJJ.mjs} +1 -1
- package/dist/chunk-QMFUWXJJ.mjs.map +1 -0
- package/dist/chunk-R4A5DO7E.mjs +12 -0
- package/dist/chunk-R4A5DO7E.mjs.map +1 -0
- package/dist/{chunk-LQQDRIZN.mjs → chunk-RGCO6BCU.mjs} +3 -3
- package/dist/chunk-RGCO6BCU.mjs.map +1 -0
- package/dist/{chunk-PPMW7YAZ.mjs → chunk-SFSA2WUE.mjs} +28 -28
- package/dist/chunk-SFSA2WUE.mjs.map +1 -0
- package/dist/{chunk-XUXHB434.mjs → chunk-SM4TG5VI.mjs} +1 -1
- package/dist/chunk-SM4TG5VI.mjs.map +1 -0
- package/dist/{chunk-D6H235SZ.mjs → chunk-UPAA75QA.mjs} +1 -1
- package/dist/chunk-UPAA75QA.mjs.map +1 -0
- package/dist/{chunk-256SAVHD.mjs → chunk-W3XYS7M3.mjs} +1 -1
- package/dist/{chunk-256SAVHD.mjs.map → chunk-W3XYS7M3.mjs.map} +1 -1
- package/dist/chunk-X2JENUDV.mjs +16 -0
- package/dist/chunk-X2JENUDV.mjs.map +1 -0
- package/dist/chunk-XBWUYKZW.mjs +10 -0
- package/dist/chunk-XBWUYKZW.mjs.map +1 -0
- package/dist/{chunk-Q365BFES.mjs → chunk-YJINOUZ7.mjs} +1 -1
- package/dist/chunk-YJINOUZ7.mjs.map +1 -0
- package/dist/{chunk-4IKXV4FQ.mjs → chunk-Z5YZVKS5.mjs} +2 -2
- package/dist/{chunk-ZHCGY4YB.mjs → chunk-ZO5NWKNY.mjs} +2 -2
- package/dist/{chunk-ZHCGY4YB.mjs.map → chunk-ZO5NWKNY.mjs.map} +1 -1
- package/dist/color-picker.mjs +1 -1
- package/dist/dashboard-notification.mjs +1 -1
- package/dist/date-range-picker.mjs +4 -4
- package/dist/drag-and-drop.css +1 -1
- package/dist/drag-and-drop.css.map +1 -1
- package/dist/drag-and-drop.mjs +46 -46
- package/dist/draggable-stacked-list-item.mjs +2 -2
- package/dist/drawer.mjs +1 -1
- package/dist/dropdown.mjs +1 -1
- package/dist/feature-cards/feature-card.mjs +2 -2
- package/dist/featurePageComponents/feature-page-group.mjs +1 -1
- package/dist/file-picker/file-listing.d.ts +1 -1
- package/dist/file-picker/file-listing.mjs +2 -2
- package/dist/file-picker/file-picker.css +1 -1
- package/dist/file-picker/file-picker.css.map +1 -1
- package/dist/file-picker/file-picker.d.ts +2 -2
- package/dist/file-picker/file-picker.mjs +46 -46
- package/dist/fixed-alert.mjs +1 -1
- package/dist/footer-heart-icon.mjs +1 -1
- package/dist/form-row.mjs +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.mjs +46 -46
- package/dist/input-copy.mjs +2 -2
- package/dist/label.mjs +1 -1
- package/dist/layout/layout.css +1 -1
- package/dist/layout/layout.css.map +1 -1
- package/dist/layout/layout.mjs +46 -46
- package/dist/loading-button.mjs +1 -1
- package/dist/love-footer.mjs +2 -2
- package/dist/mini-feature-block.mjs +2 -2
- package/dist/modal.mjs +1 -1
- package/dist/navbar/navbar.mjs +1 -1
- package/dist/no-results-block.d.ts +1 -1
- package/dist/no-results-block.mjs +1 -1
- package/dist/page-header.mjs +2 -2
- package/dist/pagination/pagination.mjs +1 -1
- package/dist/product-picker/product-drawer.css +1 -1
- package/dist/product-picker/product-drawer.css.map +1 -1
- package/dist/product-picker/product-drawer.mjs +46 -46
- package/dist/product-picker/product-listing.d.ts +1 -1
- package/dist/product-picker/product-listing.mjs +2 -2
- package/dist/progress-bar.mjs +1 -1
- package/dist/radio.mjs +1 -1
- package/dist/rich-text-editor/index.mjs +1 -1
- package/dist/search/search.mjs +1 -1
- package/dist/select.mjs +1 -1
- package/dist/sort/sort.mjs +1 -1
- package/dist/spinner.mjs +1 -1
- package/dist/stacked-list-item.css +1 -1
- package/dist/stacked-list-item.css.map +1 -1
- package/dist/stacked-list-item.mjs +46 -46
- package/dist/table-header/table-header.mjs +3 -3
- package/dist/table-result-block.css +1 -1
- package/dist/table-result-block.css.map +1 -1
- package/dist/table-result-block.mjs +46 -46
- package/dist/text-row.mjs +1 -1
- package/dist/textarea.mjs +1 -1
- package/dist/textinput.mjs +1 -1
- package/dist/toast/index.mjs +1 -1
- package/dist/toggleswitch.mjs +1 -1
- package/dist/tooltip/tooltip.mjs +1 -1
- package/dist/video-dashboard-notification.mjs +1 -1
- package/dist/video-modal.mjs +1 -1
- package/package.json +4 -2
- package/src/accordion.tsx +120 -58
- package/src/alert-banner.tsx +78 -56
- package/src/avatar.tsx +71 -49
- package/src/badge.tsx +38 -30
- package/src/breadcrumb.tsx +28 -21
- package/src/checkbox.tsx +28 -20
- package/src/color-picker.tsx +2 -4
- package/src/dashboard-notification.tsx +1 -2
- package/src/date-range-picker.tsx +208 -139
- package/src/drag-and-drop.tsx +4 -4
- package/src/draggable-stacked-list-item.tsx +2 -2
- package/src/drawer.tsx +2 -2
- package/src/dropdown.tsx +91 -73
- package/src/featurePageComponents/feature-page-group.tsx +0 -1
- package/src/file-picker/file-listing.tsx +86 -38
- package/src/file-picker/file-picker.tsx +296 -212
- package/src/fixed-alert.tsx +2 -5
- package/src/footer-heart-icon.tsx +31 -7
- package/src/form-row.tsx +1 -1
- package/src/index.tsx +1 -1
- package/src/input-copy.tsx +1 -1
- package/src/label.tsx +12 -6
- package/src/layout/layout.tsx +2 -2
- package/src/loading-button.tsx +21 -21
- package/src/mini-feature-block.tsx +2 -6
- package/src/modal.tsx +46 -34
- package/src/navbar/navbar.tsx +1 -1
- package/src/no-results-block.tsx +7 -3
- package/src/page-header.tsx +13 -8
- package/src/pagination/pagination.tsx +1 -1
- package/src/product-picker/product-drawer.tsx +226 -144
- package/src/product-picker/product-listing.tsx +84 -45
- package/src/progress-bar.tsx +39 -25
- package/src/radio.tsx +11 -11
- package/src/rich-text-editor/headless-editor.ts +5 -5
- package/src/search/search.tsx +4 -4
- package/src/select.tsx +2 -3
- package/src/sort/sort.tsx +33 -31
- package/src/spinner.tsx +3 -3
- package/src/stacked-list-item.tsx +1 -1
- package/src/table-header/table-header.tsx +114 -90
- package/src/table-result-block.tsx +12 -10
- package/src/text-row.tsx +1 -1
- package/src/textarea.tsx +27 -24
- package/src/textinput.tsx +31 -28
- package/src/toast/index.tsx +4 -4
- package/src/toggleswitch.tsx +3 -1
- package/src/tooltip/tooltip.tsx +1 -1
- package/src/video-dashboard-notification.tsx +0 -2
- package/src/video-modal.tsx +2 -5
- package/dist/chunk-25FJ277C.mjs.map +0 -1
- package/dist/chunk-2IL2LP47.mjs.map +0 -1
- package/dist/chunk-3LINEESX.mjs.map +0 -1
- package/dist/chunk-47S6AX7M.mjs.map +0 -1
- package/dist/chunk-5CGIKL2Y.mjs.map +0 -1
- package/dist/chunk-5DQUZENZ.mjs.map +0 -1
- package/dist/chunk-5VH26DHQ.mjs.map +0 -1
- package/dist/chunk-ASCPOK5F.mjs.map +0 -1
- package/dist/chunk-AYXC2DCM.mjs.map +0 -1
- package/dist/chunk-CEK5K5TU.mjs.map +0 -1
- package/dist/chunk-CMA7TSQG.mjs.map +0 -1
- package/dist/chunk-CZNQ24DQ.mjs +0 -16
- package/dist/chunk-CZNQ24DQ.mjs.map +0 -1
- package/dist/chunk-D6H235SZ.mjs.map +0 -1
- package/dist/chunk-DZABAR36.mjs.map +0 -1
- package/dist/chunk-EWNPNF2B.mjs.map +0 -1
- package/dist/chunk-F6ZWBNIM.mjs.map +0 -1
- package/dist/chunk-FAFXVD4P.mjs.map +0 -1
- package/dist/chunk-FRIXS4BL.mjs.map +0 -1
- package/dist/chunk-HZTQAUGX.mjs +0 -34
- package/dist/chunk-HZTQAUGX.mjs.map +0 -1
- package/dist/chunk-JACXLYPD.mjs +0 -12
- package/dist/chunk-JACXLYPD.mjs.map +0 -1
- package/dist/chunk-JCWSMIVA.mjs.map +0 -1
- package/dist/chunk-KEIDXVZB.mjs.map +0 -1
- package/dist/chunk-LQQDRIZN.mjs.map +0 -1
- package/dist/chunk-MXH3TZWM.mjs.map +0 -1
- package/dist/chunk-NEJOZRKV.mjs.map +0 -1
- package/dist/chunk-PPMW7YAZ.mjs.map +0 -1
- package/dist/chunk-Q365BFES.mjs.map +0 -1
- package/dist/chunk-REFCK56T.mjs +0 -12
- package/dist/chunk-REFCK56T.mjs.map +0 -1
- package/dist/chunk-VPLCWU7T.mjs +0 -9
- package/dist/chunk-VPLCWU7T.mjs.map +0 -1
- package/dist/chunk-VQ3MZS4J.mjs.map +0 -1
- package/dist/chunk-W3DRXKTC.mjs.map +0 -1
- package/dist/chunk-WFRV27QA.mjs.map +0 -1
- package/dist/chunk-WLJEFSES.mjs +0 -10
- package/dist/chunk-WLJEFSES.mjs.map +0 -1
- package/dist/chunk-WMFTYTMD.mjs.map +0 -1
- package/dist/chunk-XUXHB434.mjs.map +0 -1
- package/dist/chunk-YJKULMWM.mjs.map +0 -1
- package/dist/chunk-ZJATBQ3X.mjs +0 -10
- package/dist/chunk-ZJATBQ3X.mjs.map +0 -1
- package/dist/chunk-ZWJSMASL.mjs.map +0 -1
- /package/dist/{chunk-7YKZ7D7U.mjs.map → chunk-ATNP3Z6G.mjs.map} +0 -0
- /package/dist/{chunk-4IKXV4FQ.mjs.map → chunk-Z5YZVKS5.mjs.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//@ts-nocheck
|
|
2
|
-
import { useState, useRef, useMemo, createContext } from 'react'
|
|
2
|
+
import { useState, useRef, useMemo, useEffect, createContext } from 'react'
|
|
3
3
|
//@ts-nocheck
|
|
4
4
|
import { Select } from './select'
|
|
5
5
|
import { Button } from './button'
|
|
@@ -13,120 +13,143 @@ const DropdownContext = createContext()
|
|
|
13
13
|
|
|
14
14
|
// BUTTON CLASSES
|
|
15
15
|
const buttonProps = variantProps({
|
|
16
|
-
base: '
|
|
16
|
+
base: 'focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium text-sm py-2.5 text-center inline-flex items-center dark:text-white w-full md:w-auto',
|
|
17
17
|
variants: {
|
|
18
18
|
color: {
|
|
19
|
-
blue:
|
|
20
|
-
gray:
|
|
21
|
-
lightGray:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
blue: "text-white bg-blue-700 hover:bg-blue-800 dark:bg-blue-600 dark:hover:bg-blue-700 focus:ring-blue-300",
|
|
20
|
+
gray: "text-white bg-gray-400 hover:bg-gray-600 dark:bg-gray-600 dark:hover:bg-gray-700 focus:ring-gray-300",
|
|
21
|
+
lightGray:
|
|
22
|
+
"text-slate-700 bg-white focus:ring-slate-300 border border-gray-300 dark:bg-gray-700 dark:border-gray-600 focus:ring-blue-300",
|
|
23
|
+
green:
|
|
24
|
+
"text-white bg-green-700 hover:bg-green-800 dark:bg-green-600 dark:hover:bg-green-700 focus:ring-green-300",
|
|
25
|
+
red: "text-white bg-red-700 hover:bg-red-800 dark:bg-red-600 dark:hover:bg-red-700 focus:ring-red-300",
|
|
26
|
+
yellow:
|
|
27
|
+
"text-white bg-yellow-700 hover:bg-yellow-800 dark:bg-yellow-600 dark:hover:bg-yellow-700 focus:ring-yellow-300",
|
|
25
28
|
},
|
|
26
29
|
size: {
|
|
27
|
-
sm:
|
|
28
|
-
md:
|
|
29
|
-
lg:
|
|
30
|
+
sm: "px-5 py-1.5",
|
|
31
|
+
md: "px-5 py-2.5",
|
|
32
|
+
lg: "px-5 py-3.5",
|
|
30
33
|
// WORKAROUND: Compound variants don't work with classname-variants/react (revisit later)
|
|
31
|
-
rsm:
|
|
32
|
-
rmd:
|
|
33
|
-
rlg:
|
|
34
|
+
rsm: "px-2.5 py-2.5",
|
|
35
|
+
rmd: "px-3.5 py-3.5",
|
|
36
|
+
rlg: "px-4.5 py-4.5",
|
|
34
37
|
},
|
|
35
38
|
type: {
|
|
36
|
-
rect:
|
|
37
|
-
round:
|
|
39
|
+
rect: "rounded-lg",
|
|
40
|
+
round: "rounded-full",
|
|
38
41
|
},
|
|
39
42
|
defaultVariants: {
|
|
40
|
-
color:
|
|
41
|
-
size:
|
|
42
|
-
type:
|
|
43
|
+
color: "blue",
|
|
44
|
+
size: "md",
|
|
45
|
+
type: "rect",
|
|
43
46
|
},
|
|
44
47
|
},
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
const DropdownState = Object.freeze({
|
|
48
|
-
OPEN: 'open',
|
|
49
|
-
CLOSED: 'closed',
|
|
50
|
-
})
|
|
48
|
+
});
|
|
51
49
|
|
|
52
50
|
const dateRangeType = Object.freeze({
|
|
53
|
-
SELECT: { value: 0, display:
|
|
54
|
-
TODAY: { value: 2, display:
|
|
55
|
-
WEEK: { value: 3, display:
|
|
56
|
-
MONTH: { value: 4, display:
|
|
57
|
-
THREE_MONTH: { value: 5, display:
|
|
58
|
-
YEAR: { value: 6, display:
|
|
59
|
-
CUSTOM: { value: 7, display:
|
|
60
|
-
})
|
|
51
|
+
SELECT: { value: 0, display: "Select Date Range" },
|
|
52
|
+
TODAY: { value: 2, display: "Today" },
|
|
53
|
+
WEEK: { value: 3, display: "Last Week" },
|
|
54
|
+
MONTH: { value: 4, display: "Last Month" },
|
|
55
|
+
THREE_MONTH: { value: 5, display: "Last 3 Months" },
|
|
56
|
+
YEAR: { value: 6, display: "Last Year" },
|
|
57
|
+
CUSTOM: { value: 7, display: "Custom Date Range" },
|
|
58
|
+
});
|
|
61
59
|
|
|
62
60
|
function getSelectOptions(currentValue) {
|
|
63
61
|
const options = [
|
|
64
62
|
{ value: dateRangeType.TODAY.value, display: dateRangeType.TODAY.display },
|
|
65
63
|
{ value: dateRangeType.WEEK.value, display: dateRangeType.WEEK.display },
|
|
66
64
|
{ value: dateRangeType.MONTH.value, display: dateRangeType.MONTH.display },
|
|
67
|
-
{
|
|
65
|
+
{
|
|
66
|
+
value: dateRangeType.THREE_MONTH.value,
|
|
67
|
+
display: dateRangeType.THREE_MONTH.display,
|
|
68
|
+
},
|
|
68
69
|
{ value: dateRangeType.YEAR.value, display: dateRangeType.YEAR.display },
|
|
69
|
-
{
|
|
70
|
-
|
|
70
|
+
{
|
|
71
|
+
value: dateRangeType.CUSTOM.value,
|
|
72
|
+
display: dateRangeType.CUSTOM.display,
|
|
73
|
+
},
|
|
74
|
+
];
|
|
71
75
|
|
|
72
|
-
if (currentValue === dateRangeType.SELECT.value)
|
|
73
|
-
|
|
76
|
+
if (currentValue === dateRangeType.SELECT.value)
|
|
77
|
+
options.unshift({
|
|
78
|
+
value: dateRangeType.SELECT.value,
|
|
79
|
+
display: dateRangeType.SELECT.display,
|
|
80
|
+
});
|
|
81
|
+
return options;
|
|
74
82
|
}
|
|
75
83
|
|
|
76
84
|
function dateRangeCalculation(dateType) {
|
|
77
|
-
var d = new Date()
|
|
78
|
-
let obj = { From: null, To: null }
|
|
85
|
+
var d = new Date();
|
|
86
|
+
let obj = { From: null, To: null };
|
|
79
87
|
switch (dateType) {
|
|
80
88
|
case dateRangeType.TODAY.value:
|
|
81
|
-
obj.From = new Date()
|
|
82
|
-
break
|
|
89
|
+
obj.From = new Date();
|
|
90
|
+
break;
|
|
83
91
|
case dateRangeType.WEEK.value:
|
|
84
|
-
d.setDate(d.getDate() - 7)
|
|
85
|
-
obj.From = d
|
|
86
|
-
break
|
|
92
|
+
d.setDate(d.getDate() - 7);
|
|
93
|
+
obj.From = d;
|
|
94
|
+
break;
|
|
87
95
|
case dateRangeType.MONTH.value:
|
|
88
|
-
d.setMonth(d.getMonth() - 1)
|
|
89
|
-
obj.From = d
|
|
90
|
-
break
|
|
96
|
+
d.setMonth(d.getMonth() - 1);
|
|
97
|
+
obj.From = d;
|
|
98
|
+
break;
|
|
91
99
|
case dateRangeType.THREE_MONTH.value:
|
|
92
|
-
d.setMonth(d.getMonth() - 3)
|
|
93
|
-
obj.From = d
|
|
94
|
-
break
|
|
100
|
+
d.setMonth(d.getMonth() - 3);
|
|
101
|
+
obj.From = d;
|
|
102
|
+
break;
|
|
95
103
|
case dateRangeType.YEAR.value:
|
|
96
|
-
d.setFullYear(d.getFullYear() - 1)
|
|
97
|
-
obj.From = d
|
|
98
|
-
break
|
|
104
|
+
d.setFullYear(d.getFullYear() - 1);
|
|
105
|
+
obj.From = d;
|
|
106
|
+
break;
|
|
99
107
|
|
|
100
108
|
default:
|
|
101
|
-
break
|
|
109
|
+
break;
|
|
102
110
|
}
|
|
103
111
|
|
|
104
|
-
if (!obj) return
|
|
112
|
+
if (!obj) return;
|
|
105
113
|
|
|
106
|
-
obj.From = obj.From
|
|
107
|
-
obj.To = new Date()
|
|
114
|
+
obj.From = obj.From;
|
|
115
|
+
obj.To = new Date();
|
|
108
116
|
|
|
109
|
-
return obj
|
|
117
|
+
return obj;
|
|
110
118
|
}
|
|
111
119
|
|
|
112
120
|
export function DateRangePicker({ id, className='', title = 'Date Range', type = 'rect', color = 'lightGray', align = 'left', size = 'sm', callback }) {
|
|
113
|
-
const [showDropdown, setShowDropdown] = useState(
|
|
121
|
+
const [showDropdown, setShowDropdown] = useState(false)
|
|
114
122
|
const handleShowDropdown = () => {
|
|
115
|
-
setShowDropdown(
|
|
123
|
+
setShowDropdown(true)
|
|
116
124
|
}
|
|
117
125
|
|
|
126
|
+
const ref = useRef(null)
|
|
127
|
+
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
const handleClickOutside = (e) => {
|
|
130
|
+
if (ref.current && !ref.current.contains(e.target)) {
|
|
131
|
+
setShowDropdown(false)
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
document.addEventListener('click', handleClickOutside, true)
|
|
136
|
+
return () => {
|
|
137
|
+
document.removeEventListener('click', handleClickOutside, true)
|
|
138
|
+
}
|
|
139
|
+
}, [])
|
|
140
|
+
|
|
118
141
|
const MinDate = useMemo(() => {
|
|
119
|
-
var d = new Date()
|
|
120
|
-
d.setDate(d.getDate() - 1)
|
|
121
|
-
return d
|
|
122
|
-
}, [new Date().getDay()])
|
|
142
|
+
var d = new Date();
|
|
143
|
+
d.setDate(d.getDate() - 1);
|
|
144
|
+
return d;
|
|
145
|
+
}, [new Date().getDay()]);
|
|
123
146
|
|
|
124
147
|
const MaxDate = useMemo(() => {
|
|
125
|
-
return new Date(new Date().setMinutes(0, 0, 0))
|
|
126
|
-
}, [new Date().getDay()])
|
|
148
|
+
return new Date(new Date().setMinutes(0, 0, 0));
|
|
149
|
+
}, [new Date().getDay()]);
|
|
127
150
|
|
|
128
|
-
const [err, setErr] = useState(false)
|
|
129
|
-
const [dateErr, setDateErr] = useState(false)
|
|
151
|
+
const [err, setErr] = useState(false);
|
|
152
|
+
const [dateErr, setDateErr] = useState(false);
|
|
130
153
|
|
|
131
154
|
const {
|
|
132
155
|
control,
|
|
@@ -136,90 +159,99 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
|
|
|
136
159
|
formState: { errors },
|
|
137
160
|
} = useForm({
|
|
138
161
|
defaultValues: {
|
|
139
|
-
start: MinDate.toISOString().split(
|
|
140
|
-
end: MaxDate.toISOString().split(
|
|
162
|
+
start: MinDate.toISOString().split("T")[0],
|
|
163
|
+
end: MaxDate.toISOString().split("T")[0],
|
|
141
164
|
dateSelect: dateRangeType.SELECT.value,
|
|
142
165
|
},
|
|
143
|
-
})
|
|
166
|
+
});
|
|
144
167
|
|
|
145
|
-
const watchDateType = watch(
|
|
168
|
+
const watchDateType = watch("dateSelect");
|
|
146
169
|
const debouncedExport = useRef(
|
|
147
170
|
debounce((data) => {
|
|
148
|
-
exportRequest(data)
|
|
149
|
-
}, 1000)
|
|
150
|
-
).current
|
|
171
|
+
exportRequest(data);
|
|
172
|
+
}, 1000)
|
|
173
|
+
).current;
|
|
151
174
|
|
|
152
175
|
const handleCancel = (e) => {
|
|
153
|
-
e.preventDefault()
|
|
154
|
-
setShowDropdown(false)
|
|
155
|
-
setDateErr(false)
|
|
156
|
-
reset()
|
|
157
|
-
}
|
|
176
|
+
e.preventDefault();
|
|
177
|
+
setShowDropdown(false);
|
|
178
|
+
setDateErr(false);
|
|
179
|
+
reset();
|
|
180
|
+
};
|
|
158
181
|
|
|
159
182
|
const onSubmit = (data) => {
|
|
160
|
-
debouncedExport(data)
|
|
161
|
-
}
|
|
183
|
+
debouncedExport(data);
|
|
184
|
+
};
|
|
162
185
|
|
|
163
186
|
const exportRequest = (data) => {
|
|
164
187
|
if (data.emptyChk) {
|
|
165
|
-
setErr(true)
|
|
166
|
-
return
|
|
188
|
+
setErr(true);
|
|
189
|
+
return;
|
|
167
190
|
}
|
|
168
191
|
|
|
169
|
-
const mode = getSelectOptions(parseInt(data.dateSelect)).find(
|
|
170
|
-
|
|
171
|
-
|
|
192
|
+
const mode = getSelectOptions(parseInt(data.dateSelect)).find(
|
|
193
|
+
(x) => x.value === parseInt(data.dateSelect)
|
|
194
|
+
);
|
|
195
|
+
let fromDate = new Date(data.start);
|
|
196
|
+
let toDate = new Date(data.end);
|
|
172
197
|
|
|
173
198
|
if (mode.value < dateRangeType.CUSTOM.value) {
|
|
174
|
-
let obj = dateRangeCalculation(mode.value)
|
|
175
|
-
fromDate = obj.From
|
|
176
|
-
toDate = obj.To
|
|
199
|
+
let obj = dateRangeCalculation(mode.value);
|
|
200
|
+
fromDate = obj.From;
|
|
201
|
+
toDate = obj.To;
|
|
177
202
|
}
|
|
178
203
|
|
|
179
|
-
fromDate.setUTCHours(0, 0, 0, 0)
|
|
204
|
+
fromDate.setUTCHours(0, 0, 0, 0);
|
|
180
205
|
|
|
181
|
-
toDate.setUTCHours(23, 59, 59, 59)
|
|
206
|
+
toDate.setUTCHours(23, 59, 59, 59);
|
|
182
207
|
|
|
183
208
|
if (toDate < fromDate) {
|
|
184
|
-
setDateErr(true)
|
|
185
|
-
return
|
|
209
|
+
setDateErr(true);
|
|
210
|
+
return;
|
|
186
211
|
}
|
|
187
|
-
|
|
212
|
+
|
|
188
213
|
callback({
|
|
189
214
|
Mode: mode,
|
|
190
215
|
From: fromDate,
|
|
191
216
|
To: toDate,
|
|
192
|
-
})
|
|
217
|
+
});
|
|
193
218
|
|
|
194
219
|
reset()
|
|
195
|
-
setShowDropdown(
|
|
220
|
+
setShowDropdown(false)
|
|
196
221
|
}
|
|
197
222
|
|
|
198
223
|
const onChanged = () => {
|
|
199
|
-
if (dateErr) setDateErr(false)
|
|
200
|
-
}
|
|
224
|
+
if (dateErr) setDateErr(false);
|
|
225
|
+
};
|
|
201
226
|
|
|
202
227
|
const renderContent = () => (
|
|
203
228
|
<div className={className}>
|
|
204
|
-
<FormRow
|
|
229
|
+
<FormRow
|
|
230
|
+
label="Date Range"
|
|
231
|
+
htmlFor="dateSelect"
|
|
232
|
+
className="mb-4"
|
|
233
|
+
helperText="Please choose date range from which you want to export."
|
|
234
|
+
>
|
|
205
235
|
<Controller
|
|
206
236
|
name="dateSelect"
|
|
207
237
|
control={control}
|
|
208
238
|
rules={{
|
|
209
|
-
required:
|
|
210
|
-
validate: {
|
|
239
|
+
required: "Please select a date range.",
|
|
240
|
+
validate: {
|
|
241
|
+
selected: (r) => r !== 0 || "Please select a date range.",
|
|
242
|
+
},
|
|
211
243
|
}}
|
|
212
244
|
render={({ field }) => (
|
|
213
245
|
<Select
|
|
214
246
|
id="dateSelect"
|
|
215
247
|
defaultValue={field.value}
|
|
216
248
|
onChange={(e) => {
|
|
217
|
-
field.onChange(e)
|
|
218
|
-
onChanged()
|
|
249
|
+
field.onChange(e);
|
|
250
|
+
onChanged();
|
|
219
251
|
}}
|
|
220
252
|
options={getSelectOptions(field.value)}
|
|
221
253
|
ref={field.ref}
|
|
222
|
-
color={errors.dateSelect ?
|
|
254
|
+
color={errors.dateSelect ? "failure" : "gray"}
|
|
223
255
|
/>
|
|
224
256
|
)}
|
|
225
257
|
/>
|
|
@@ -231,8 +263,12 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
|
|
|
231
263
|
name="start"
|
|
232
264
|
control={control}
|
|
233
265
|
rules={{
|
|
234
|
-
required:
|
|
235
|
-
validate: {
|
|
266
|
+
required: "A start date is required.",
|
|
267
|
+
validate: {
|
|
268
|
+
whitespace: (v) =>
|
|
269
|
+
(v?.toString().trim() || "").length > 0 ||
|
|
270
|
+
"A start date is required.",
|
|
271
|
+
},
|
|
236
272
|
}}
|
|
237
273
|
render={({ field }) => (
|
|
238
274
|
<div className="w-50 pr-1">
|
|
@@ -244,23 +280,31 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
|
|
|
244
280
|
name="start"
|
|
245
281
|
max={MinDate}
|
|
246
282
|
onChange={(e) => {
|
|
247
|
-
field.onChange(e)
|
|
248
|
-
onChanged()
|
|
283
|
+
field.onChange(e);
|
|
284
|
+
onChanged();
|
|
249
285
|
}}
|
|
250
|
-
className="block w-full
|
|
251
|
-
color={errors.start ?
|
|
286
|
+
className="mt-1 block w-full"
|
|
287
|
+
color={errors.start ? "failure" : "gray"}
|
|
252
288
|
/>
|
|
253
289
|
</div>
|
|
254
290
|
)}
|
|
255
291
|
/>
|
|
256
|
-
{errors.start &&
|
|
292
|
+
{errors.start && (
|
|
293
|
+
<div className="mt-1 text-sm text-red-600 dark:text-red-500">
|
|
294
|
+
{errors.start.message}
|
|
295
|
+
</div>
|
|
296
|
+
)}
|
|
257
297
|
|
|
258
298
|
<Controller
|
|
259
299
|
name="end"
|
|
260
300
|
control={control}
|
|
261
301
|
rules={{
|
|
262
|
-
required:
|
|
263
|
-
validate: {
|
|
302
|
+
required: "An end date is required.",
|
|
303
|
+
validate: {
|
|
304
|
+
whitespace: (v) =>
|
|
305
|
+
(v?.toString().trim() || "").length > 0 ||
|
|
306
|
+
"An end date is required.",
|
|
307
|
+
},
|
|
264
308
|
}}
|
|
265
309
|
render={({ field }) => (
|
|
266
310
|
<div className="w-50 pr-1">
|
|
@@ -272,11 +316,11 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
|
|
|
272
316
|
name="end"
|
|
273
317
|
max={MaxDate}
|
|
274
318
|
onChange={(e) => {
|
|
275
|
-
field.onChange(e)
|
|
276
|
-
onChanged()
|
|
319
|
+
field.onChange(e);
|
|
320
|
+
onChanged();
|
|
277
321
|
}}
|
|
278
|
-
className="block w-full
|
|
279
|
-
color={errors.end ?
|
|
322
|
+
className="mt-1 block w-full"
|
|
323
|
+
color={errors.end ? "failure" : "gray"}
|
|
280
324
|
/>
|
|
281
325
|
</div>
|
|
282
326
|
)}
|
|
@@ -285,11 +329,23 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
|
|
|
285
329
|
</>
|
|
286
330
|
)}
|
|
287
331
|
<div className="h-4">
|
|
288
|
-
{errors.end &&
|
|
289
|
-
|
|
290
|
-
|
|
332
|
+
{errors.end && (
|
|
333
|
+
<div className="mt-1 text-sm text-red-600 dark:text-red-500">
|
|
334
|
+
{errors.end.message}
|
|
335
|
+
</div>
|
|
336
|
+
)}
|
|
337
|
+
{errors.dateSelect && (
|
|
338
|
+
<div className=" z-50 text-sm text-red-600 dark:text-red-500 ">
|
|
339
|
+
{errors.dateSelect.message}
|
|
340
|
+
</div>
|
|
341
|
+
)}
|
|
342
|
+
{dateErr && (
|
|
343
|
+
<div className="mt-1 text-sm text-red-600 dark:text-red-500">
|
|
344
|
+
A valid custom date range is required.
|
|
345
|
+
</div>
|
|
346
|
+
)}
|
|
291
347
|
</div>
|
|
292
|
-
<div className="flex gap-4
|
|
348
|
+
<div className="flex justify-end gap-4">
|
|
293
349
|
<Button color="gray" size="sm" outline onClick={handleCancel}>
|
|
294
350
|
Cancel
|
|
295
351
|
</Button>
|
|
@@ -298,30 +354,36 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
|
|
|
298
354
|
</Button>
|
|
299
355
|
</div>
|
|
300
356
|
</div>
|
|
301
|
-
)
|
|
357
|
+
);
|
|
302
358
|
|
|
303
359
|
return (
|
|
304
360
|
<div id={`${id}-panel`} className="relative">
|
|
305
361
|
<DropdownContext.Provider value={{ showDropdown, setShowDropdown }}>
|
|
306
|
-
<button id={id}
|
|
307
|
-
{
|
|
308
|
-
{
|
|
362
|
+
<button id={id}
|
|
363
|
+
{...buttonProps({ color, size, type })}
|
|
364
|
+
data-dropdown-toggle={`${id}-dropdown`}
|
|
365
|
+
type="button"
|
|
366
|
+
onClick={handleShowDropdown}
|
|
367
|
+
>
|
|
368
|
+
<span className='flex-auto'>{title}</span>
|
|
369
|
+
{type === 'rect' && <span className='items-right flex justify-end'><BiChevronDown className="pointer-events-none" /></span>}
|
|
309
370
|
</button>
|
|
310
371
|
<div
|
|
311
372
|
id={`${id}-dropdown`}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
373
|
+
ref={ref}
|
|
374
|
+
className={`z-50 w-full md:w-80 mt-2 absolute ${
|
|
375
|
+
showDropdown ? '' : 'hidden'
|
|
376
|
+
} ${align === 'left' ? 'left-0' : 'right-0'} bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700`}
|
|
315
377
|
>
|
|
316
|
-
<div className="
|
|
378
|
+
<div className="py-2 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="dropdownDefaultButton">
|
|
317
379
|
<form className="space-y-6 p-3" onSubmit={handleSubmit(onSubmit)}>
|
|
318
|
-
{showDropdown
|
|
380
|
+
{showDropdown && renderContent()}
|
|
319
381
|
</form>
|
|
320
382
|
</div>
|
|
321
383
|
</div>
|
|
322
384
|
</DropdownContext.Provider>
|
|
323
385
|
</div>
|
|
324
|
-
)
|
|
386
|
+
);
|
|
325
387
|
}
|
|
326
388
|
|
|
327
389
|
DateRangePicker.propTypes = {
|
|
@@ -332,18 +394,25 @@ DateRangePicker.propTypes = {
|
|
|
332
394
|
/** This is the title for the DateRangePicker component defaults to 'Date Range'*/
|
|
333
395
|
title: PropTypes.string,
|
|
334
396
|
/** Type of button for the DateRangePicker component defaults to 'rect'*/
|
|
335
|
-
type: PropTypes.oneOf([
|
|
397
|
+
type: PropTypes.oneOf(["rect", "round"]),
|
|
336
398
|
/** Color of the button for the DateRangePicker component defaults to 'lightGray'*/
|
|
337
|
-
color: PropTypes.oneOf([
|
|
399
|
+
color: PropTypes.oneOf([
|
|
400
|
+
"blue",
|
|
401
|
+
"gray",
|
|
402
|
+
"lightGray",
|
|
403
|
+
"green",
|
|
404
|
+
"red",
|
|
405
|
+
"yellow",
|
|
406
|
+
]),
|
|
338
407
|
/** Aligns the dropdown protion of the DateRangePicker to either the left or right of the button. Defaults to align with the left side of the button*/
|
|
339
|
-
align: PropTypes.oneOf([
|
|
408
|
+
align: PropTypes.oneOf(["left", "right"]),
|
|
340
409
|
/** Size of the button for the DateRangePicker component defaults to 'sm'*/
|
|
341
|
-
size: PropTypes.oneOf([
|
|
410
|
+
size: PropTypes.oneOf(["sm", "md", "lg"]),
|
|
342
411
|
/** Callback function for the DateRangePicker component outputs the chosen date range in the following format eg:{From:"2024-03-03T00:00:00.000Z" To:"2024-05-03T00:00:00.000Z" Mode:{
|
|
343
412
|
"value": 7,
|
|
344
413
|
"display": "Custom Date Range"
|
|
345
414
|
}} */
|
|
346
415
|
callback: PropTypes.func.isRequired,
|
|
347
|
-
}
|
|
416
|
+
};
|
|
348
417
|
|
|
349
|
-
DateRangePicker.displayName = "DateRangePicker"
|
|
418
|
+
DateRangePicker.displayName = "DateRangePicker";
|
package/src/drag-and-drop.tsx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
+
import PropTypes from "prop-types";
|
|
2
3
|
import { useEffect, useState } from "react";
|
|
3
|
-
import { BsCloudUpload, BsFillCheckCircleFill } from "react-icons/bs";
|
|
4
4
|
import { BiSearch } from "react-icons/bi";
|
|
5
|
+
import { BsCloudUpload, BsFillCheckCircleFill } from "react-icons/bs";
|
|
5
6
|
import { FaTimesCircle } from "react-icons/fa";
|
|
6
7
|
import { Button } from "./index";
|
|
7
|
-
import PropTypes from "prop-types";
|
|
8
8
|
|
|
9
9
|
const DragStates = Object.freeze({
|
|
10
10
|
NONE: "none",
|
|
@@ -109,7 +109,7 @@ export function DragAndDrop({
|
|
|
109
109
|
<p className="text-xs text-gray-500 dark:text-gray-400">{subtitle}</p>
|
|
110
110
|
{pickerCallback && (
|
|
111
111
|
<div className="mt-5">
|
|
112
|
-
<Button color="
|
|
112
|
+
<Button color="default" onClick={handleLaunchFilePicker}>
|
|
113
113
|
<BiSearch className="mr-2" />
|
|
114
114
|
Browse File Manager
|
|
115
115
|
</Button>
|
|
@@ -227,4 +227,4 @@ DragAndDrop.propTypes = {
|
|
|
227
227
|
pickerCallback: PropTypes.func,
|
|
228
228
|
};
|
|
229
229
|
|
|
230
|
-
DragAndDrop.displayName = "DragAndDrop"
|
|
230
|
+
DragAndDrop.displayName = "DragAndDrop";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { ToggleSwitch } from "./toggleswitch";
|
|
3
|
-
import { HiEllipsisVertical } from "react-icons/hi2";
|
|
4
2
|
import { useSortable } from "@dnd-kit/sortable";
|
|
5
3
|
import { CSS } from "@dnd-kit/utilities";
|
|
4
|
+
import { HiEllipsisVertical } from "react-icons/hi2";
|
|
5
|
+
import { ToggleSwitch } from "./toggleswitch";
|
|
6
6
|
|
|
7
7
|
type Props = {
|
|
8
8
|
id: number;
|
package/src/drawer.tsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// THIS DRAWER IS FROM THE FLOWBITE LIBRARY PAGE
|
|
2
2
|
|
|
3
|
-
import { useEffect, useCallback, useState } from "react";
|
|
4
3
|
import type { DrawerInterface, DrawerOptions } from "flowbite";
|
|
5
4
|
import { Drawer as FBDrawer } from "flowbite";
|
|
5
|
+
import { useCallback, useEffect, useState } from "react";
|
|
6
6
|
import { HiXMark } from "react-icons/hi2";
|
|
7
7
|
|
|
8
8
|
type Props = {
|
|
@@ -75,4 +75,4 @@ export function Drawer({ show, onClose, children, title }: Props) {
|
|
|
75
75
|
);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
Drawer.displayName = "Drawer"
|
|
78
|
+
Drawer.displayName = "Drawer";
|