ekm-ui 0.4.46 → 0.4.48

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.
@@ -10,7 +10,8 @@ Browserslist: caniuse-lite is outdated. Please run:
10
10
  npx update-browserslist-db@latest
11
11
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
12
12
  DTS Build start
13
- DTS ⚡️ Build success in 72079ms
13
+ "HiArchive", "HiCurrencyDollar", "HiInbox", "HiLogout", "HiOutlineTicket", "HiShoppingBag", "HiUserCircle", "HiUsers" and "HiViewGrid" are imported from external module "react-icons/hi" but never used in "dist/chunk-XXP5K6Y4.js".
14
+ DTS ⚡️ Build success in 72198ms
14
15
  DTS dist/index.d.ts 3.76 KB
15
16
  DTS dist/footer-heart-icon.d.ts 70.00 B
16
17
  DTS dist/accordion.d.ts 2.19 KB
@@ -90,26 +91,21 @@ Browserslist: caniuse-lite is outdated. Please run:
90
91
  DTS dist/featurePageComponents/mini-feature-block.d.ts 254.00 B
91
92
  DTS dist/file-picker/file-listing.d.ts 992.00 B
92
93
  DTS dist/product-picker/product-listing.d.ts 890.00 B
93
- "HiArchive", "HiCurrencyDollar", "HiInbox", "HiLogout", "HiOutlineTicket", "HiShoppingBag", "HiUserCircle", "HiUsers" and "HiViewGrid" are imported from external module "react-icons/hi" but never used in "dist/chunk-XXP5K6Y4.js".
94
- ESM dist/product-picker/product-modal.css 123.56 KB
95
- ESM dist/file-picker/file-picker.css 123.55 KB
96
- ESM dist/layout/layout.css 123.55 KB
97
- ESM dist/country-picker/country-modal.css 123.56 KB
98
94
  ESM dist/stacked-list-item.css 123.56 KB
99
95
  ESM dist/table-result-block.css 123.56 KB
100
96
  ESM dist/index.css 123.55 KB
101
97
  ESM dist/drag-and-drop.css 123.56 KB
102
98
  ESM dist/card-payment-block.css 123.56 KB
103
- ESM dist/product-picker/product-modal.css.map 175.51 KB
104
- ESM dist/file-picker/file-picker.css.map 175.51 KB
105
- ESM dist/layout/layout.css.map 175.51 KB
106
- ESM dist/country-picker/country-modal.css.map 175.51 KB
99
+ ESM dist/product-picker/product-modal.css 123.56 KB
100
+ ESM dist/file-picker/file-picker.css 123.55 KB
101
+ ESM dist/layout/layout.css 123.55 KB
102
+ ESM dist/country-picker/country-modal.css 123.56 KB
107
103
  ESM dist/stacked-list-item.css.map 175.51 KB
108
- ESM dist/table-result-block.css.map 175.51 KB
109
104
  ESM dist/index.css.map 175.51 KB
105
+ ESM dist/table-result-block.css.map 175.51 KB
110
106
  ESM dist/drag-and-drop.css.map 175.51 KB
111
- ESM dist/card-payment-block.css.map 175.51 KB
112
107
  ESM dist/chunk-Z4LPO673.js 1.34 KB
108
+ ESM dist/card-payment-block.css.map 175.51 KB
113
109
  ESM dist/product-picker/product-modal.js 2.31 KB
114
110
  ESM dist/search/search.js 180.00 B
115
111
  ESM dist/sidebar/sidebar.js 151.00 B
@@ -123,16 +119,13 @@ Browserslist: caniuse-lite is outdated. Please run:
123
119
  ESM dist/nbui/nbui-container.js 165.00 B
124
120
  ESM dist/nbui/nbui-footer.js 159.00 B
125
121
  ESM dist/nbui/nbui-page-layout.js 261.00 B
126
- ESM dist/product-picker/product-listing.js 252.00 B
127
122
  ESM dist/pagination/pagination.js 157.00 B
123
+ ESM dist/product-picker/product-listing.js 252.00 B
128
124
  ESM dist/file-picker/file-picker.js 2.30 KB
129
- ESM dist/navbar/navbar.js 180.00 B
130
125
  ESM dist/layout/layout.js 2.29 KB
126
+ ESM dist/navbar/navbar.js 180.00 B
131
127
  ESM dist/nbui/nbui-card-form.js 165.00 B
132
128
  ESM dist/nbui/nbui-card-image.js 167.00 B
133
- ESM dist/nbui/nbui-card-lg.js 164.00 B
134
- ESM dist/nbui/nbui-card-paragraphs-lg.js 186.00 B
135
- ESM dist/nbui/nbui-card-paragraphs.js 177.00 B
136
129
  ESM dist/video-modal.js 156.00 B
137
130
  ESM dist/country-picker/country-listing.js 259.00 B
138
131
  ESM dist/country-picker/country-modal.js 2.31 KB
@@ -140,6 +133,9 @@ Browserslist: caniuse-lite is outdated. Please run:
140
133
  ESM dist/feature-cards/staff-pick-card.js 165.00 B
141
134
  ESM dist/featurePageComponents/feature-page-group.js 171.00 B
142
135
  ESM dist/featurePageComponents/mini-feature-block.js 738.00 B
136
+ ESM dist/nbui/nbui-card-lg.js 164.00 B
137
+ ESM dist/nbui/nbui-card-paragraphs.js 177.00 B
138
+ ESM dist/nbui/nbui-card-paragraphs-lg.js 186.00 B
143
139
  ESM dist/file-picker/file-listing.js 218.00 B
144
140
  ESM dist/stacked-list-item.js 2.24 KB
145
141
  ESM dist/table-result-block.js 2.25 KB
@@ -185,11 +181,14 @@ Browserslist: caniuse-lite is outdated. Please run:
185
181
  ESM dist/chunk-XKE3VK6Z.js 759.00 B
186
182
  ESM dist/chunk-7Q6OMA2A.js 782.00 B
187
183
  ESM dist/chunk-GVNUAH45.js 347.00 B
188
- ESM dist/chunk-VTQTYLLT.js 6.72 KB
189
184
  ESM dist/chunk-JAR3LP2K.js 809.00 B
185
+ ESM dist/chunk-EK5I26TX.js 6.72 KB
190
186
  ESM dist/chunk-22RUXGYW.js 4.46 KB
191
- ESM dist/chunk-LWTESXND.js 1.57 KB
192
187
  ESM dist/chunk-XXP5K6Y4.js 10.39 KB
188
+ ESM dist/chunk-LWTESXND.js 1.57 KB
189
+ ESM dist/chunk-AN66H4D6.js 559.00 B
190
+ ESM dist/chunk-GWERJBUR.js 885.00 B
191
+ ESM dist/chunk-I2DMRDYJ.js 1.29 KB
193
192
  ESM dist/chunk-FTVJMY65.js 885.00 B
194
193
  ESM dist/chunk-Y5DEGGVQ.js 1.75 KB
195
194
  ESM dist/chunk-F7MTEILK.js 1.69 KB
@@ -219,11 +218,10 @@ Browserslist: caniuse-lite is outdated. Please run:
219
218
  ESM dist/chunk-M4UBHZDH.js 1.50 KB
220
219
  ESM dist/chunk-TMO76FWT.js 1.30 KB
221
220
  ESM dist/chunk-NDDDT4TO.js 1.63 KB
222
- ESM dist/chunk-QYKN3JZ5.js 3.46 KB
223
221
  ESM dist/chunk-SLIZ4TDR.js 1.68 KB
222
+ ESM dist/chunk-QYKN3JZ5.js 3.46 KB
224
223
  ESM dist/chunk-F3BF3KTV.js 723.00 B
225
224
  ESM dist/card.js 173.00 B
226
- ESM dist/checkbox.js 211.00 B
227
225
  ESM dist/chunk-ANU7OAPA.js 1.08 KB
228
226
  ESM dist/color-picker.js 188.00 B
229
227
  ESM dist/chunk-ISA6E23B.js 1.14 KB
@@ -236,31 +234,33 @@ Browserslist: caniuse-lite is outdated. Please run:
236
234
  ESM dist/chunk-E4USZ2Q3.js 655.00 B
237
235
  ESM dist/chunk-F47A36U7.js 438.00 B
238
236
  ESM dist/date-time-component.js 291.00 B
239
- ESM dist/chunk-JFL77JIP.js 5.27 KB
240
237
  ESM dist/date-time-picker.js 285.00 B
241
- ESM dist/chunk-RRNNHYSF.js 5.67 KB
238
+ ESM dist/chunk-UP4YN4XR.js 5.25 KB
242
239
  ESM dist/chunk-4FSPYK2A.js 3.40 KB
240
+ ESM dist/chunk-RRNNHYSF.js 5.67 KB
243
241
  ESM dist/accordion.js 271.00 B
244
242
  ESM dist/chunk-WLWG565K.js 2.61 KB
245
243
  ESM dist/alert-banner.js 188.00 B
246
244
  ESM dist/chunk-5SEJVYKM.js 3.01 KB
247
- ESM dist/alert.js 145.00 B
248
245
  ESM dist/chunk-MBACKGWE.js 937.00 B
249
- ESM dist/avatar.js 207.00 B
246
+ ESM dist/alert.js 145.00 B
250
247
  ESM dist/chunk-2OPJLYW6.js 1.69 KB
248
+ ESM dist/avatar.js 207.00 B
251
249
  ESM dist/badge.js 205.00 B
252
250
  ESM dist/chunk-P5IM3T4M.js 2.88 KB
253
- ESM dist/breadcrumb.js 227.00 B
254
251
  ESM dist/chunk-TRVGXTCI.js 1.58 KB
252
+ ESM dist/breadcrumb.js 227.00 B
255
253
  ESM dist/button-group-item.js 167.00 B
256
254
  ESM dist/chunk-XYGVDZRO.js 696.00 B
257
255
  ESM dist/button.js 207.00 B
258
256
  ESM dist/chunk-VOFMZ77E.js 3.86 KB
259
- ESM dist/chunk-TJMI4DH2.js 19.88 KB
260
257
  ESM dist/chunk-6LHL364H.js 15.70 KB
261
- ESM dist/chunk-I2DMRDYJ.js 1.29 KB
262
- ESM dist/chunk-GWERJBUR.js 885.00 B
263
- ESM dist/chunk-AN66H4D6.js 559.00 B
258
+ ESM dist/chunk-TJMI4DH2.js 19.88 KB
259
+ ESM dist/checkbox.js 211.00 B
260
+ ESM dist/product-picker/product-modal.css.map 175.51 KB
261
+ ESM dist/file-picker/file-picker.css.map 175.51 KB
262
+ ESM dist/layout/layout.css.map 175.51 KB
263
+ ESM dist/country-picker/country-modal.css.map 175.51 KB
264
264
  ESM dist/chunk-Z4LPO673.js.map 71.00 B
265
265
  ESM dist/product-picker/product-modal.js.map 51.00 B
266
266
  ESM dist/sidebar/sidebar.js.map 51.00 B
@@ -269,29 +269,29 @@ Browserslist: caniuse-lite is outdated. Please run:
269
269
  ESM dist/table-header/table-header.js.map 51.00 B
270
270
  ESM dist/toast/index.js.map 51.00 B
271
271
  ESM dist/nbui/nbui-card-sm.js.map 51.00 B
272
+ ESM dist/tooltip/tooltip.js.map 51.00 B
272
273
  ESM dist/nbui/nbui-card-table.js.map 51.00 B
273
274
  ESM dist/nbui/nbui-card.js.map 51.00 B
274
275
  ESM dist/nbui/nbui-container.js.map 51.00 B
275
276
  ESM dist/nbui/nbui-footer.js.map 51.00 B
276
277
  ESM dist/nbui/nbui-page-layout.js.map 51.00 B
277
- ESM dist/product-picker/product-listing.js.map 51.00 B
278
278
  ESM dist/pagination/pagination.js.map 51.00 B
279
+ ESM dist/product-picker/product-listing.js.map 51.00 B
279
280
  ESM dist/file-picker/file-picker.js.map 51.00 B
280
- ESM dist/navbar/navbar.js.map 51.00 B
281
281
  ESM dist/layout/layout.js.map 51.00 B
282
- ESM dist/nbui/nbui-card-image.js.map 51.00 B
282
+ ESM dist/navbar/navbar.js.map 51.00 B
283
283
  ESM dist/nbui/nbui-card-form.js.map 51.00 B
284
- ESM dist/nbui/nbui-card-lg.js.map 51.00 B
285
- ESM dist/nbui/nbui-card-paragraphs-lg.js.map 51.00 B
286
- ESM dist/nbui/nbui-card-paragraphs.js.map 51.00 B
284
+ ESM dist/nbui/nbui-card-image.js.map 51.00 B
287
285
  ESM dist/video-modal.js.map 51.00 B
288
- ESM dist/country-picker/country-modal.js.map 51.00 B
289
286
  ESM dist/country-picker/country-listing.js.map 51.00 B
290
- ESM dist/tooltip/tooltip.js.map 51.00 B
287
+ ESM dist/country-picker/country-modal.js.map 51.00 B
291
288
  ESM dist/feature-cards/feature-card.js.map 51.00 B
292
289
  ESM dist/feature-cards/staff-pick-card.js.map 51.00 B
293
290
  ESM dist/featurePageComponents/feature-page-group.js.map 51.00 B
294
291
  ESM dist/featurePageComponents/mini-feature-block.js.map 1.54 KB
292
+ ESM dist/nbui/nbui-card-lg.js.map 51.00 B
293
+ ESM dist/nbui/nbui-card-paragraphs.js.map 51.00 B
294
+ ESM dist/nbui/nbui-card-paragraphs-lg.js.map 51.00 B
295
295
  ESM dist/file-picker/file-listing.js.map 51.00 B
296
296
  ESM dist/stacked-list-item.js.map 51.00 B
297
297
  ESM dist/table-result-block.js.map 51.00 B
@@ -308,8 +308,8 @@ Browserslist: caniuse-lite is outdated. Please run:
308
308
  ESM dist/progress-bar.js.map 51.00 B
309
309
  ESM dist/radio.js.map 51.00 B
310
310
  ESM dist/select.js.map 51.00 B
311
- ESM dist/image-thumbnail.js.map 51.00 B
312
311
  ESM dist/spinner.js.map 51.00 B
312
+ ESM dist/image-thumbnail.js.map 51.00 B
313
313
  ESM dist/index.js.map 51.00 B
314
314
  ESM dist/input-addon.js.map 51.00 B
315
315
  ESM dist/input-copy.js.map 51.00 B
@@ -326,7 +326,6 @@ Browserslist: caniuse-lite is outdated. Please run:
326
326
  ESM dist/footer-heart-icon.js.map 57.05 KB
327
327
  ESM dist/form-row.js.map 51.00 B
328
328
  ESM dist/card-payment-block.js.map 51.00 B
329
- ESM dist/chunk-UHSXJRCR.js.map 81.55 KB
330
329
  ESM dist/chunk-LQKVFBLU.js.map 10.01 KB
331
330
  ESM dist/chunk-HVNLAQA6.js.map 5.19 KB
332
331
  ESM dist/chunk-HW7AZG2V.js.map 4.63 KB
@@ -336,11 +335,14 @@ Browserslist: caniuse-lite is outdated. Please run:
336
335
  ESM dist/chunk-XKE3VK6Z.js.map 1.08 KB
337
336
  ESM dist/chunk-7Q6OMA2A.js.map 1.28 KB
338
337
  ESM dist/chunk-GVNUAH45.js.map 525.00 B
339
- ESM dist/chunk-VTQTYLLT.js.map 14.11 KB
340
338
  ESM dist/chunk-JAR3LP2K.js.map 1.89 KB
339
+ ESM dist/chunk-EK5I26TX.js.map 14.11 KB
341
340
  ESM dist/chunk-22RUXGYW.js.map 9.89 KB
342
- ESM dist/chunk-LWTESXND.js.map 2.48 KB
343
341
  ESM dist/chunk-XXP5K6Y4.js.map 24.62 KB
342
+ ESM dist/chunk-LWTESXND.js.map 2.48 KB
343
+ ESM dist/chunk-AN66H4D6.js.map 873.00 B
344
+ ESM dist/chunk-GWERJBUR.js.map 1.29 KB
345
+ ESM dist/chunk-I2DMRDYJ.js.map 1.98 KB
344
346
  ESM dist/chunk-FTVJMY65.js.map 1.30 KB
345
347
  ESM dist/chunk-Y5DEGGVQ.js.map 3.34 KB
346
348
  ESM dist/chunk-F7MTEILK.js.map 4.07 KB
@@ -370,11 +372,10 @@ Browserslist: caniuse-lite is outdated. Please run:
370
372
  ESM dist/chunk-M4UBHZDH.js.map 3.33 KB
371
373
  ESM dist/chunk-TMO76FWT.js.map 2.48 KB
372
374
  ESM dist/chunk-NDDDT4TO.js.map 3.64 KB
373
- ESM dist/chunk-QYKN3JZ5.js.map 8.04 KB
374
375
  ESM dist/chunk-SLIZ4TDR.js.map 2.43 KB
376
+ ESM dist/chunk-QYKN3JZ5.js.map 8.04 KB
375
377
  ESM dist/chunk-F3BF3KTV.js.map 1.48 KB
376
378
  ESM dist/card.js.map 51.00 B
377
- ESM dist/checkbox.js.map 51.00 B
378
379
  ESM dist/chunk-ANU7OAPA.js.map 2.27 KB
379
380
  ESM dist/color-picker.js.map 51.00 B
380
381
  ESM dist/chunk-ISA6E23B.js.map 3.32 KB
@@ -387,30 +388,29 @@ Browserslist: caniuse-lite is outdated. Please run:
387
388
  ESM dist/chunk-E4USZ2Q3.js.map 1.57 KB
388
389
  ESM dist/chunk-F47A36U7.js.map 768.00 B
389
390
  ESM dist/date-time-component.js.map 51.00 B
390
- ESM dist/chunk-JFL77JIP.js.map 17.93 KB
391
- ESM dist/date-time-picker.js.map 51.00 B
392
- ESM dist/chunk-RRNNHYSF.js.map 15.80 KB
393
391
  ESM dist/chunk-4FSPYK2A.js.map 21.34 KB
392
+ ESM dist/chunk-RRNNHYSF.js.map 15.80 KB
394
393
  ESM dist/accordion.js.map 51.00 B
395
394
  ESM dist/chunk-WLWG565K.js.map 7.81 KB
396
395
  ESM dist/alert-banner.js.map 51.00 B
396
+ ESM dist/date-time-picker.js.map 51.00 B
397
+ ESM dist/chunk-UP4YN4XR.js.map 17.89 KB
397
398
  ESM dist/chunk-5SEJVYKM.js.map 6.15 KB
398
- ESM dist/alert.js.map 51.00 B
399
- ESM dist/chunk-MBACKGWE.js.map 2.14 KB
400
- ESM dist/avatar.js.map 51.00 B
401
399
  ESM dist/chunk-2OPJLYW6.js.map 4.13 KB
400
+ ESM dist/avatar.js.map 51.00 B
401
+ ESM dist/badge.js.map 51.00 B
402
+ ESM dist/chunk-P5IM3T4M.js.map 4.20 KB
402
403
  ESM dist/chunk-TRVGXTCI.js.map 3.33 KB
404
+ ESM dist/breadcrumb.js.map 51.00 B
403
405
  ESM dist/button-group-item.js.map 51.00 B
404
406
  ESM dist/chunk-XYGVDZRO.js.map 1.25 KB
405
407
  ESM dist/button.js.map 51.00 B
406
408
  ESM dist/chunk-VOFMZ77E.js.map 7.27 KB
407
- ESM dist/chunk-TJMI4DH2.js.map 117.04 KB
408
409
  ESM dist/chunk-6LHL364H.js.map 62.53 KB
409
- ESM dist/badge.js.map 51.00 B
410
- ESM dist/chunk-P5IM3T4M.js.map 4.20 KB
411
- ESM dist/breadcrumb.js.map 51.00 B
410
+ ESM dist/chunk-MBACKGWE.js.map 2.14 KB
411
+ ESM dist/alert.js.map 51.00 B
412
+ ESM dist/chunk-TJMI4DH2.js.map 117.04 KB
413
+ ESM dist/checkbox.js.map 51.00 B
412
414
  ESM dist/chunk-HE5X7TRV.js.map 711.41 KB
413
- ESM dist/chunk-I2DMRDYJ.js.map 1.98 KB
414
- ESM dist/chunk-GWERJBUR.js.map 1.29 KB
415
- ESM dist/chunk-AN66H4D6.js.map 873.00 B
416
- ESM ⚡️ Build success in 78099ms
415
+ ESM dist/chunk-UHSXJRCR.js.map 81.55 KB
416
+ ESM ⚡️ Build success in 74511ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # ekm-ui
2
2
 
3
+ ## 0.4.48
4
+
5
+ ### Patch Changes
6
+
7
+ - 9f4486be: Fix time format in component
8
+
9
+ ## 0.4.47
10
+
11
+ ### Patch Changes
12
+
13
+ - 874f7878: Correct pagination id
14
+
3
15
  ## 0.4.46
4
16
 
5
17
  ### Patch Changes
@@ -10,7 +10,7 @@ import './chunk-XKE3VK6Z.js';
10
10
  import './chunk-7Q6OMA2A.js';
11
11
  import './chunk-GVNUAH45.js';
12
12
  import './chunk-JAR3LP2K.js';
13
- import './chunk-VTQTYLLT.js';
13
+ import './chunk-EK5I26TX.js';
14
14
  import './chunk-22RUXGYW.js';
15
15
  import './chunk-XXP5K6Y4.js';
16
16
  import './chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import './chunk-D5TS3JJH.js';
57
57
  import './chunk-DSJ5TRZW.js';
58
58
  import './chunk-E4USZ2Q3.js';
59
59
  import './chunk-F47A36U7.js';
60
- import './chunk-JFL77JIP.js';
60
+ import './chunk-UP4YN4XR.js';
61
61
  import './chunk-RRNNHYSF.js';
62
62
  import './chunk-4FSPYK2A.js';
63
63
  import './chunk-WLWG565K.js';
@@ -2,8 +2,8 @@ import s from 'clsx';
2
2
  import { useMemo } from 'react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
 
5
- function b(t,d=0){return [...Array(t).keys()].map(r=>r+d)}function k({pageSize:t,total:d,current:r,onChange:l,loading:h}){let y=Math.min((r-1)*t+1,d),p=Math.min(y+t-1,d),a=Math.ceil(d/t),v=useMemo(()=>a>5&&r>=4,[a,r]),x=useMemo(()=>a>5&&r<a-3,[a,r]),n=[];return a<=5?n=b(a,1):x?n=b(5,Math.max(r-2,1)):n=b(5,a-4),jsx("div",{id:"paginationControl",className:"w-full",children:jsx("div",{className:"relative overflow-hidden rounded-b-lg bg-white dark:bg-gray-800",children:jsxs("nav",{className:" flex flex-wrap items-start justify-between gap-x-4 gap-y-2 md:items-center","aria-label":"Table navigation",children:[jsxs("div",{className:"flex w-full justify-between md:hidden",children:[jsxs("button",{id:"btnPreviousM",disabled:r===1,className:s(r===1&&"cursor-not-allowed","ml-0 flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(r-1,t),children:[jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",clipRule:"evenodd"})}),jsx("span",{className:"leading-none",children:"Previous"})]}),jsxs("button",{id:"btnNextM",disabled:r===a,className:s(r===a&&"cursor-not-allowed","flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(r+1,t),children:[jsx("span",{children:"Next"}),jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})]})]}),jsxs("div",{id:"rowsPerPageSection",className:"hidden items-center space-x-3 md:flex",children:[jsx("label",{htmlFor:"rows",className:"text-sm font-normal text-gray-500 dark:text-gray-400 mb-0",children:"Rows per page"}),jsxs("select",{id:"rows",className:"block rounded-lg border border-gray-300 bg-gray-50 py-1.5 pl-3.5 pr-6 text-sm text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-primary-500 dark:focus:ring-primary-500",onChange:i=>l(1,Number(i.target.value)),value:t,children:[jsx("option",{value:10,children:"10"}),jsx("option",{value:25,children:"25"}),jsx("option",{value:50,children:"50"}),jsx("option",{value:100,children:"100"})]}),jsx("span",{className:"text-sm font-normal text-gray-500 dark:text-gray-400",children:!h&&jsxs(Fragment,{children:[jsxs("span",{className:"font-semibold text-gray-900 dark:text-white",children:["Showing ",jsx(Fragment,{children:d===0?0:y})," to ",jsx(Fragment,{children:p})]})," ","of"," ",jsx("span",{className:"font-semibold text-gray-900 dark:text-white",children:d})]})})]}),jsxs("ul",{className:"hidden items-stretch -space-x-px md:inline-flex",children:[jsx("li",{children:jsxs("button",{id:"btnPrevious",disabled:r===1,className:s(r===1&&"cursor-not-allowed","ml-0 flex h-full items-center justify-center rounded-l-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(r-1,t),children:[jsx("span",{className:"sr-only",children:"Previous"}),jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",clipRule:"evenodd"})})]})}),v&&jsxs(Fragment,{children:[jsx("li",{children:jsx("button",{id:"btnLast",className:s(r===1&&"cursor-not-allowed","flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(1,t),children:"1"})}),jsx("li",{className:"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400",children:"..."})]}),n.map(i=>jsx("li",{children:jsx("button",{id:`btnPage${i}`,onClick:()=>l(i,t),className:s("flex items-center justify-center border px-3 py-2 text-sm leading-tight",i===r?"z-10 border-primary-300 bg-primary-50 text-primary-600 hover:bg-primary-100 hover:text-primary-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white st-pageCurrent":"border-gray-300 bg-white text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),children:i})},i)),x&&jsxs(Fragment,{children:[jsx("li",{className:"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400",children:"..."}),jsx("li",{children:jsx("button",{id:"btnLast",className:"flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white",onClick:()=>l(a,t),children:a})})]}),jsx("li",{children:jsxs("button",{id:"btnNext",disabled:r===a,onClick:()=>l(r+1,t),className:s(r===a&&"cursor-not-allowed","flex h-full items-center justify-center rounded-r-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),children:[jsx("span",{className:"sr-only",children:"Next"}),jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})]})})]})]})})})}
5
+ function b(t,d=0){return [...Array(t).keys()].map(r=>r+d)}function k({pageSize:t,total:d,current:r,onChange:l,loading:h}){let y=Math.min((r-1)*t+1,d),p=Math.min(y+t-1,d),a=Math.ceil(d/t),v=useMemo(()=>a>5&&r>=4,[a,r]),x=useMemo(()=>a>5&&r<a-3,[a,r]),n=[];return a<=5?n=b(a,1):x?n=b(5,Math.max(r-2,1)):n=b(5,a-4),jsx("div",{id:"paginationControl",className:"w-full",children:jsx("div",{className:"relative overflow-hidden rounded-b-lg bg-white dark:bg-gray-800",children:jsxs("nav",{className:" flex flex-wrap items-start justify-between gap-x-4 gap-y-2 md:items-center","aria-label":"Table navigation",children:[jsxs("div",{className:"flex w-full justify-between md:hidden",children:[jsxs("button",{id:"btnPreviousM",disabled:r===1,className:s(r===1&&"cursor-not-allowed","ml-0 flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(r-1,t),children:[jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",clipRule:"evenodd"})}),jsx("span",{className:"leading-none",children:"Previous"})]}),jsxs("button",{id:"btnNextM",disabled:r===a,className:s(r===a&&"cursor-not-allowed","flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(r+1,t),children:[jsx("span",{children:"Next"}),jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})]})]}),jsxs("div",{id:"rowsPerPageSection",className:"hidden items-center space-x-3 md:flex",children:[jsx("label",{htmlFor:"rows",className:"text-sm font-normal text-gray-500 dark:text-gray-400 mb-0",children:"Rows per page"}),jsxs("select",{id:"rows",className:"block rounded-lg border border-gray-300 bg-gray-50 py-1.5 pl-3.5 pr-6 text-sm text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-primary-500 dark:focus:ring-primary-500",onChange:i=>l(1,Number(i.target.value)),value:t,children:[jsx("option",{value:10,children:"10"}),jsx("option",{value:25,children:"25"}),jsx("option",{value:50,children:"50"}),jsx("option",{value:100,children:"100"})]}),jsx("span",{className:"text-sm font-normal text-gray-500 dark:text-gray-400",children:!h&&jsxs(Fragment,{children:[jsxs("span",{className:"font-semibold text-gray-900 dark:text-white",children:["Showing ",jsx(Fragment,{children:d===0?0:y})," to ",jsx(Fragment,{children:p})]})," ","of"," ",jsx("span",{className:"font-semibold text-gray-900 dark:text-white",children:d})]})})]}),jsxs("ul",{className:"hidden items-stretch -space-x-px md:inline-flex",children:[jsx("li",{children:jsxs("button",{id:"btnPrevious",disabled:r===1,className:s(r===1&&"cursor-not-allowed","ml-0 flex h-full items-center justify-center rounded-l-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(r-1,t),children:[jsx("span",{className:"sr-only",children:"Previous"}),jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",clipRule:"evenodd"})})]})}),v&&jsxs(Fragment,{children:[jsx("li",{children:jsx("button",{id:"btnPage1",className:s(r===1&&"cursor-not-allowed","flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),onClick:()=>l(1,t),children:"1"})}),jsx("li",{className:"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400",children:"..."})]}),n.map(i=>jsx("li",{children:jsx("button",{id:`btnPage${i}`,onClick:()=>l(i,t),className:s("flex items-center justify-center border px-3 py-2 text-sm leading-tight",i===r?"z-10 border-primary-300 bg-primary-50 text-primary-600 hover:bg-primary-100 hover:text-primary-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white st-pageCurrent":"border-gray-300 bg-white text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),children:i})},i)),x&&jsxs(Fragment,{children:[jsx("li",{className:"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400",children:"..."}),jsx("li",{children:jsx("button",{id:"btnLast",className:"flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white",onClick:()=>l(a,t),children:a})})]}),jsx("li",{children:jsxs("button",{id:"btnNext",disabled:r===a,onClick:()=>l(r+1,t),className:s(r===a&&"cursor-not-allowed","flex h-full items-center justify-center rounded-r-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"),children:[jsx("span",{className:"sr-only",children:"Next"}),jsx("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})]})})]})]})})})}
6
6
 
7
7
  export { k as a };
8
8
  //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-VTQTYLLT.js.map
9
+ //# sourceMappingURL=chunk-EK5I26TX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pagination/pagination.tsx"],"names":["clsx","useMemo","Fragment","jsx","jsxs","range","size","startAt","i","Pagination","pageSize","total","current","onChange","loading","from","to","totalPages","showJumpPrev","showJumpNext","pages","e","page"],"mappings":"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","sourcesContent":["import clsx from \"clsx\";\nimport { useMemo } from \"react\";\n\nexport type PaginationProps = {\n pageSize: number;\n total: number;\n current: number;\n onChange: (page: number, pageSize: number) => void;\n loading?: boolean;\n};\n\nfunction range(size: number, startAt = 0): number[] {\n return [...Array(size).keys()].map((i) => i + startAt);\n}\n\nexport function Pagination({\n pageSize,\n total,\n current,\n onChange,\n loading,\n}: PaginationProps) {\n // Calculate the values that are displayed\n const from = Math.min((current - 1) * pageSize + 1, total);\n const to = Math.min(from + pageSize - 1, total);\n const totalPages = Math.ceil(total / pageSize);\n\n const showJumpPrev = useMemo(() => {\n return totalPages > 5 && current >= 4;\n }, [totalPages, current]);\n\n const showJumpNext = useMemo(() => {\n return totalPages > 5 && current < totalPages - 3;\n }, [totalPages, current]);\n\n let pages: number[] = [];\n\n if (totalPages <= 5) {\n pages = range(totalPages, 1);\n } else if (showJumpNext) {\n pages = range(5, Math.max(current - 2, 1));\n } else {\n pages = range(5, totalPages - 4);\n }\n\n return (\n <div id=\"paginationControl\" className=\"w-full\">\n <div className=\"relative overflow-hidden rounded-b-lg bg-white dark:bg-gray-800\">\n <nav\n className=\" flex flex-wrap items-start justify-between gap-x-4 gap-y-2 md:items-center\"\n aria-label=\"Table navigation\"\n >\n <div className=\"flex w-full justify-between md:hidden\">\n <button\n id=\"btnPreviousM\"\n disabled={current === 1}\n className={clsx(\n current === 1 && \"cursor-not-allowed\",\n \"ml-0 flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(current - 1, pageSize)}\n >\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <span className=\"leading-none\">Previous</span>\n </button>\n\n <button\n id=\"btnNextM\"\n disabled={current === totalPages}\n className={clsx(\n current === totalPages && \"cursor-not-allowed\",\n \"flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(current + 1, pageSize)}\n >\n <span>Next</span>\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </div>\n <div id=\"rowsPerPageSection\" className=\"hidden items-center space-x-3 md:flex\">\n <label\n htmlFor=\"rows\"\n className=\"text-sm font-normal text-gray-500 dark:text-gray-400 mb-0\"\n >\n Rows per page\n </label>\n <select\n id=\"rows\"\n className=\"block rounded-lg border border-gray-300 bg-gray-50 py-1.5 pl-3.5 pr-6 text-sm text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-primary-500 dark:focus:ring-primary-500\"\n onChange={(e) => onChange(1, Number(e.target.value))}\n value={pageSize}\n >\n <option value={10}>10</option>\n <option value={25}>25</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n <span className=\"text-sm font-normal text-gray-500 dark:text-gray-400\">\n {!loading && (\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Showing <>{total === 0 ? 0 : from}</> to <>{to}</>\n </span>{\" \"}\n of{\" \"}\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n {total}\n </span>\n </>\n )}\n </span>\n </div>\n <ul className=\"hidden items-stretch -space-x-px md:inline-flex\">\n <li>\n <button\n id=\"btnPrevious\"\n disabled={current === 1}\n className={clsx(\n current === 1 && \"cursor-not-allowed\",\n \"ml-0 flex h-full items-center justify-center rounded-l-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(current - 1, pageSize)}\n >\n <span className=\"sr-only\">Previous</span>\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </li>\n {showJumpPrev && (\n <>\n <li>\n <button\n id=\"btnLast\"\n className={clsx(\n current === 1 && \"cursor-not-allowed\",\n \"flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(1, pageSize)}\n >\n 1\n </button>\n </li>\n <li className=\"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400\">\n ...\n </li>\n </>\n )}\n {pages.map((page) => (\n <li key={page}>\n <button\n id={`btnPage${page}`}\n onClick={() => onChange(page, pageSize)}\n className={clsx(\n \"flex items-center justify-center border px-3 py-2 text-sm leading-tight\",\n page === current\n ? \"z-10 border-primary-300 bg-primary-50 text-primary-600 hover:bg-primary-100 hover:text-primary-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white st-pageCurrent\"\n : \"border-gray-300 bg-white text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n >\n {page}\n </button>\n </li>\n ))}\n {showJumpNext && (\n <>\n <li className=\"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400\">\n ...\n </li>\n <li>\n <button\n id=\"btnLast\"\n className=\"flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n onClick={() => onChange(totalPages, pageSize)}\n >\n {totalPages}\n </button>\n </li>\n </>\n )}\n <li>\n <button\n id=\"btnNext\"\n disabled={current === totalPages}\n onClick={() => onChange(current + 1, pageSize)}\n className={clsx(\n current === totalPages && \"cursor-not-allowed\",\n \"flex h-full items-center justify-center rounded-r-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n >\n <span className=\"sr-only\">Next</span>\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/pagination/pagination.tsx"],"names":["clsx","useMemo","Fragment","jsx","jsxs","range","size","startAt","i","Pagination","pageSize","total","current","onChange","loading","from","to","totalPages","showJumpPrev","showJumpNext","pages","e","page"],"mappings":"AAAA,OAAOA,MAAU,OACjB,OAAS,WAAAC,MAAe,QAoDZ,OAwEgB,YAAAC,EAxDZ,OAAAC,EAhBJ,QAAAC,MAAA,oBA1CZ,SAASC,EAAMC,EAAcC,EAAU,EAAa,CAClD,MAAO,CAAC,GAAG,MAAMD,CAAI,EAAE,KAAK,CAAC,EAAE,IAAKE,GAAMA,EAAID,CAAO,CACvD,CAEO,SAASE,EAAW,CACzB,SAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,QAAAC,CACF,EAAoB,CAElB,IAAMC,EAAO,KAAK,KAAKH,EAAU,GAAKF,EAAW,EAAGC,CAAK,EACnDK,EAAK,KAAK,IAAID,EAAOL,EAAW,EAAGC,CAAK,EACxCM,EAAa,KAAK,KAAKN,EAAQD,CAAQ,EAEvCQ,EAAejB,EAAQ,IACpBgB,EAAa,GAAKL,GAAW,EACnC,CAACK,EAAYL,CAAO,CAAC,EAElBO,EAAelB,EAAQ,IACpBgB,EAAa,GAAKL,EAAUK,EAAa,EAC/C,CAACA,EAAYL,CAAO,CAAC,EAEpBQ,EAAkB,CAAC,EAEvB,OAAIH,GAAc,EAChBG,EAAQf,EAAMY,EAAY,CAAC,EAClBE,EACTC,EAAQf,EAAM,EAAG,KAAK,IAAIO,EAAU,EAAG,CAAC,CAAC,EAEzCQ,EAAQf,EAAM,EAAGY,EAAa,CAAC,EAI/Bd,EAAC,OAAI,GAAG,oBAAoB,UAAU,SACpC,SAAAA,EAAC,OAAI,UAAU,mEACb,SAAAC,EAAC,OACC,UAAU,8EACV,aAAW,mBAEX,UAAAA,EAAC,OAAI,UAAU,wCACb,UAAAA,EAAC,UACC,GAAG,eACH,SAAUQ,IAAY,EACtB,UAAWZ,EACTY,IAAY,GAAK,qBACjB,+PACF,EACA,QAAS,IAAMC,EAASD,EAAU,EAAGF,CAAQ,EAE7C,UAAAP,EAAC,OACC,UAAU,UACV,cAAY,OACZ,KAAK,eACL,QAAQ,YACR,MAAM,6BAEN,SAAAA,EAAC,QACC,SAAS,UACT,EAAE,oHACF,SAAS,UACV,EACH,EACAA,EAAC,QAAK,UAAU,eAAe,oBAAQ,GACzC,EAEAC,EAAC,UACC,GAAG,WACH,SAAUQ,IAAYK,EACtB,UAAWjB,EACTY,IAAYK,GAAc,qBAC1B,wQACF,EACA,QAAS,IAAMJ,EAASD,EAAU,EAAGF,CAAQ,EAE7C,UAAAP,EAAC,QAAK,gBAAI,EACVA,EAAC,OACC,UAAU,UACV,cAAY,OACZ,KAAK,eACL,QAAQ,YACR,MAAM,6BAEN,SAAAA,EAAC,QACC,SAAS,UACT,EAAE,qHACF,SAAS,UACV,EACH,GACF,GACF,EACAC,EAAC,OAAI,GAAG,qBAAqB,UAAU,wCACrC,UAAAD,EAAC,SACC,QAAQ,OACR,UAAU,4DACX,yBAED,EACAC,EAAC,UACC,GAAG,OACH,UAAU,wRACV,SAAWiB,GAAMR,EAAS,EAAG,OAAOQ,EAAE,OAAO,KAAK,CAAC,EACnD,MAAOX,EAEP,UAAAP,EAAC,UAAO,MAAO,GAAI,cAAE,EACrBA,EAAC,UAAO,MAAO,GAAI,cAAE,EACrBA,EAAC,UAAO,MAAO,GAAI,cAAE,EACrBA,EAAC,UAAO,MAAO,IAAK,eAAG,GACzB,EACAA,EAAC,QAAK,UAAU,uDACb,UAACW,GACAV,EAAAF,EAAA,CACE,UAAAE,EAAC,QAAK,UAAU,8CAA8C,qBACpDD,EAAAD,EAAA,CAAG,SAAAS,IAAU,EAAI,EAAII,EAAK,EAAG,OAAIZ,EAAAD,EAAA,CAAG,SAAAc,EAAG,GACjD,EAAQ,IAAI,KACT,IACHb,EAAC,QAAK,UAAU,8CACb,SAAAQ,EACH,GACF,EAEJ,GACF,EACAP,EAAC,MAAG,UAAU,kDACZ,UAAAD,EAAC,MACC,SAAAC,EAAC,UACC,GAAG,cACH,SAAUQ,IAAY,EACtB,UAAWZ,EACTY,IAAY,GAAK,qBACjB,iQACF,EACA,QAAS,IAAMC,EAASD,EAAU,EAAGF,CAAQ,EAE7C,UAAAP,EAAC,QAAK,UAAU,UAAU,oBAAQ,EAClCA,EAAC,OACC,UAAU,UACV,cAAY,OACZ,KAAK,eACL,QAAQ,YACR,MAAM,6BAEN,SAAAA,EAAC,QACC,SAAS,UACT,EAAE,oHACF,SAAS,UACV,EACH,GACF,EACF,EACCe,GACCd,EAAAF,EAAA,CACE,UAAAC,EAAC,MACC,SAAAA,EAAC,UACC,GAAG,WACH,UAAWH,EACTY,IAAY,GAAK,qBACjB,4PACF,EACA,QAAS,IAAMC,EAAS,EAAGH,CAAQ,EACpC,aAED,EACF,EACAP,EAAC,MAAG,UAAU,yLAAyL,eAEvM,GACF,EAEDiB,EAAM,IAAKE,GACVnB,EAAC,MACC,SAAAA,EAAC,UACC,GAAI,UAAUmB,IACd,QAAS,IAAMT,EAASS,EAAMZ,CAAQ,EACtC,UAAWV,EACT,0EACAsB,IAASV,EACL,0KACA,oLACN,EAEC,SAAAU,EACH,GAZOA,CAaT,CACD,EACAH,GACCf,EAAAF,EAAA,CACE,UAAAC,EAAC,MAAG,UAAU,yLAAyL,eAEvM,EACAA,EAAC,MACC,SAAAA,EAAC,UACC,GAAG,UACH,UAAU,6PACV,QAAS,IAAMU,EAASI,EAAYP,CAAQ,EAE3C,SAAAO,EACH,EACF,GACF,EAEFd,EAAC,MACC,SAAAC,EAAC,UACC,GAAG,UACH,SAAUQ,IAAYK,EACtB,QAAS,IAAMJ,EAASD,EAAU,EAAGF,CAAQ,EAC7C,UAAWV,EACTY,IAAYK,GAAc,qBAC1B,0QACF,EAEA,UAAAd,EAAC,QAAK,UAAU,UAAU,gBAAI,EAC9BA,EAAC,OACC,UAAU,UACV,cAAY,OACZ,KAAK,eACL,QAAQ,YACR,MAAM,6BAEN,SAAAA,EAAC,QACC,SAAS,UACT,EAAE,qHACF,SAAS,UACV,EACH,GACF,EACF,GACF,GACF,EACF,EACF,CAEJ","sourcesContent":["import clsx from \"clsx\";\nimport { useMemo } from \"react\";\n\nexport type PaginationProps = {\n pageSize: number;\n total: number;\n current: number;\n onChange: (page: number, pageSize: number) => void;\n loading?: boolean;\n};\n\nfunction range(size: number, startAt = 0): number[] {\n return [...Array(size).keys()].map((i) => i + startAt);\n}\n\nexport function Pagination({\n pageSize,\n total,\n current,\n onChange,\n loading,\n}: PaginationProps) {\n // Calculate the values that are displayed\n const from = Math.min((current - 1) * pageSize + 1, total);\n const to = Math.min(from + pageSize - 1, total);\n const totalPages = Math.ceil(total / pageSize);\n\n const showJumpPrev = useMemo(() => {\n return totalPages > 5 && current >= 4;\n }, [totalPages, current]);\n\n const showJumpNext = useMemo(() => {\n return totalPages > 5 && current < totalPages - 3;\n }, [totalPages, current]);\n\n let pages: number[] = [];\n\n if (totalPages <= 5) {\n pages = range(totalPages, 1);\n } else if (showJumpNext) {\n pages = range(5, Math.max(current - 2, 1));\n } else {\n pages = range(5, totalPages - 4);\n }\n\n return (\n <div id=\"paginationControl\" className=\"w-full\">\n <div className=\"relative overflow-hidden rounded-b-lg bg-white dark:bg-gray-800\">\n <nav\n className=\" flex flex-wrap items-start justify-between gap-x-4 gap-y-2 md:items-center\"\n aria-label=\"Table navigation\"\n >\n <div className=\"flex w-full justify-between md:hidden\">\n <button\n id=\"btnPreviousM\"\n disabled={current === 1}\n className={clsx(\n current === 1 && \"cursor-not-allowed\",\n \"ml-0 flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(current - 1, pageSize)}\n >\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <span className=\"leading-none\">Previous</span>\n </button>\n\n <button\n id=\"btnNextM\"\n disabled={current === totalPages}\n className={clsx(\n current === totalPages && \"cursor-not-allowed\",\n \"flex h-full items-center justify-center rounded-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(current + 1, pageSize)}\n >\n <span>Next</span>\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </div>\n <div id=\"rowsPerPageSection\" className=\"hidden items-center space-x-3 md:flex\">\n <label\n htmlFor=\"rows\"\n className=\"text-sm font-normal text-gray-500 dark:text-gray-400 mb-0\"\n >\n Rows per page\n </label>\n <select\n id=\"rows\"\n className=\"block rounded-lg border border-gray-300 bg-gray-50 py-1.5 pl-3.5 pr-6 text-sm text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-primary-500 dark:focus:ring-primary-500\"\n onChange={(e) => onChange(1, Number(e.target.value))}\n value={pageSize}\n >\n <option value={10}>10</option>\n <option value={25}>25</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n <span className=\"text-sm font-normal text-gray-500 dark:text-gray-400\">\n {!loading && (\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Showing <>{total === 0 ? 0 : from}</> to <>{to}</>\n </span>{\" \"}\n of{\" \"}\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n {total}\n </span>\n </>\n )}\n </span>\n </div>\n <ul className=\"hidden items-stretch -space-x-px md:inline-flex\">\n <li>\n <button\n id=\"btnPrevious\"\n disabled={current === 1}\n className={clsx(\n current === 1 && \"cursor-not-allowed\",\n \"ml-0 flex h-full items-center justify-center rounded-l-lg border border-gray-300 bg-white px-3 py-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(current - 1, pageSize)}\n >\n <span className=\"sr-only\">Previous</span>\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </li>\n {showJumpPrev && (\n <>\n <li>\n <button\n id=\"btnPage1\"\n className={clsx(\n current === 1 && \"cursor-not-allowed\",\n \"flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n onClick={() => onChange(1, pageSize)}\n >\n 1\n </button>\n </li>\n <li className=\"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400\">\n ...\n </li>\n </>\n )}\n {pages.map((page) => (\n <li key={page}>\n <button\n id={`btnPage${page}`}\n onClick={() => onChange(page, pageSize)}\n className={clsx(\n \"flex items-center justify-center border px-3 py-2 text-sm leading-tight\",\n page === current\n ? \"z-10 border-primary-300 bg-primary-50 text-primary-600 hover:bg-primary-100 hover:text-primary-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white st-pageCurrent\"\n : \"border-gray-300 bg-white text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n >\n {page}\n </button>\n </li>\n ))}\n {showJumpNext && (\n <>\n <li className=\"flex cursor-default items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400\">\n ...\n </li>\n <li>\n <button\n id=\"btnLast\"\n className=\"flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n onClick={() => onChange(totalPages, pageSize)}\n >\n {totalPages}\n </button>\n </li>\n </>\n )}\n <li>\n <button\n id=\"btnNext\"\n disabled={current === totalPages}\n onClick={() => onChange(current + 1, pageSize)}\n className={clsx(\n current === totalPages && \"cursor-not-allowed\",\n \"flex h-full items-center justify-center rounded-r-lg border border-gray-300 bg-white px-3 py-1.5 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n )}\n >\n <span className=\"sr-only\">Next</span>\n <svg\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n );\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { a, c, b } from './chunk-4FSPYK2A.js';
2
+ import { a as a$2 } from './chunk-VOFMZ77E.js';
3
+ import { a as a$1 } from './chunk-6LHL364H.js';
4
+ import { e } from './chunk-Z4LPO673.js';
5
+ import { useState, useRef, useEffect, useMemo } from 'react';
6
+ import { HiOutlineCalendar } from 'react-icons/hi';
7
+ import { useForm, Controller } from 'react-hook-form';
8
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
9
+
10
+ var F=e(a(),1),g=e(a$1(),1);var Q=o=>{let t=new Date(Date.parse(o));return new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes()))},T=(o,t=!1)=>{let a=t?new Date(Date.parse(o)):Q(o),l=W(a.getHours(),a.getMinutes());return `${X(a.getFullYear(),a.getMonth(),a.getDate())} ${l}`};var W=(o,t)=>{let a=o>12?o-12:o,l=o>11?"PM":"AM";return `${a}:${t.toString().padStart(2,"0")} ${l}`},X=(o,t,a)=>`${a.toString().padStart(2,"0")}-${Z[t]}-${o}`;var Z=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var re=()=>{let o=[];for(let t=0;t<24;t++)for(let a=0;a<60;a+=15){let l=(t%12||12).toString(),u=a.toString().padStart(2,"0"),c=t<12?"AM":"PM",p=`${l}:${u} ${c}`;o.push(p);}return o};function H({id:o,dateValue:t,showError:a=!1,callback:l}){let[u,c$1]=useState(!1),p=re(),h=()=>{c$1(!0);},f=useRef(null);useEffect(()=>{let e=i=>{f.current&&!f.current.contains(i.target)&&c$1(!1);};return document.addEventListener("click",e,!0),()=>{document.removeEventListener("click",e,!0);}},[]),useEffect(()=>{if(t&&t instanceof Date){y("date",t.toISOString().split("T")[0]);let e=t.getHours(),i=t.getMinutes(),r=e===0?12:e>12?e-12:e,s=e<12?"AM":"PM",D=`${r.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")} ${s}`;y("time",D);}},[t]);let w=useMemo(()=>{var e=new Date;return e.setDate(e.getDate()-1),e},[new Date().getDay()]),{control:v,reset:ne,handleSubmit:E,watch:ae,setValue:y,formState:{errors:m}}=useForm({defaultValues:{date:w.toISOString().split("T")[0],time:"12:00 AM"}}),[se,P]=useState(!1),[x,M]=useState(!1),R=useRef((0, F.default)(e=>{I(e);},500)).current,J=e=>{e.preventDefault(),c$1(!1),M(!1);},L=e=>{R(e);};function G(e,i){i=i.trim();let r=i.match(/(\d+):(\d+)\s?(AM|PM)/i),s=parseInt(r[1],10),D=parseInt(r[2],10),C=r[3].toUpperCase();C==="PM"&&s!==12?s+=12:C==="AM"&&s===12&&(s=0);let[Y,j,z]=e.split("-");return new Date(Y,j-1,z,s,D,0,0)}let I=e=>{if(e.emptyChk){P(!0);return}let i=G(e.date,e.time);l(i),c$1(!1);},$=()=>{x&&M(!1);},U=()=>{var e,i;return jsxs("div",{children:[jsx(Fragment,{children:jsxs("div",{className:"grid grid-cols-2 pb-4",children:[jsx(Controller,{name:"date",control:v,rules:{required:"A date is required.",validate:{whitespace:r=>((r==null?void 0:r.toString().trim())||"").length>0||"A date is required."}},render:({field:r})=>jsxs("div",{className:"w-full pr-1",children:[jsx("label",{htmlFor:"date",children:"Date"}),jsx("input",{type:"date",id:"datePicker",value:r.value,name:"date",max:w,onChange:s=>{r.onChange(s),$();},className:`mt-1 block w-full rounded-md border-gray-300 text-xs ${m.date?c:b}`})]})}),jsx(Controller,{name:"time",control:v,rules:{required:"A time is required.",validate:{whitespace:r=>((r==null?void 0:r.toString().trim())||"").length>0||"A time is required."}},render:({field:r})=>jsxs("div",{className:"w-full pr-1",children:[jsx("label",{htmlFor:"time",children:"Time"}),jsx("select",{id:"time-select",onChange:s=>{r.onChange(s),$();},className:"mt-1 block w-full rounded-md border-gray-300 text-xs",value:r.value,children:p.map(s=>jsx("option",{value:s,children:s},`time-option-${s}`))})]})})]})}),(m.date||m.time||x)&&jsx("div",{className:"pb-4 text-sm text-red-600 dark:text-red-500",children:((e=m.date)==null?void 0:e.message)||((i=m.time)==null?void 0:i.message)||"A valid date time is required."}),jsxs("div",{className:"flex justify-end gap-4",children:[jsx(a$2,{color:"gray",size:"sm",outline:!0,onClick:J,children:"Cancel"}),jsx(a$2,{color:"default",size:"sm",type:"submit",children:"Apply"})]})]})};return jsxs("div",{id:`${o}-panel`,className:"relative",children:[jsxs("div",{className:"relative",children:[jsx("input",{id:`${o}-input`,placeholder:"11-Aug-2024 12:00 AM",value:T(t,!0),className:`block p-2.5 w-full text-sm border rounded-lg cursor-pointer ${a?"bg-red-50 border border-red-500 text-red-900 placeholder-red-700 text-sm focus:ring-red-500 dark:bg-gray-700 focus:border-red-500 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500":"text-gray-900 bg-gray-50 border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"}`,onClick:h,readOnly:!0}),jsx(HiOutlineCalendar,{className:"absolute right-2 top-3 cursor-pointer",onClick:h})]}),jsx("div",{id:`${o}-dropdown`,ref:f,className:`z-50 w-full mt-2 absolute ${u?"":"hidden"} left-0 bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700`,children:jsx("div",{className:"py-2 text-sm text-gray-700 dark:text-gray-200","aria-labelledby":"dropdownDefaultButton",children:jsx("form",{className:"space-y-6 p-3",onSubmit:E(L),children:u&&U()})})})]})}H.propTypes={id:g.default.string.isRequired,dateValue:g.default.instanceOf(Date).isRequired,showError:g.default.bool,callback:g.default.func.isRequired};H.displayName="DateTimeComponent";
11
+
12
+ export { H as a };
13
+ //# sourceMappingURL=out.js.map
14
+ //# sourceMappingURL=chunk-UP4YN4XR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/date-time-component.tsx","../src/helpers/datetime.js"],"names":["useState","useRef","useMemo","useEffect","HiOutlineCalendar","import_debounce","import_prop_types","useForm","Controller","ConvertUTCToLocal","utcTime","utcDate","GetDiscountDateTimeString","timeIsLocal","localDate","timeString","getTimeString","getDateString","hours","minutes","newHours","suffix","year","month","date","shortMonths","Fragment","jsx","jsxs","generateTimeOptions","times","i","j","hour","minute","period","time","DateTimeComponent","id","dateValue","showError","callback","showDropdown","setShowDropdown","timeOptions","handleShowDropdown","ref","handleClickOutside","e","setValue","mins","newTime","MinDate","d","control","reset","handleSubmit","watch","errors","err","setErr","dateErr","setDateErr","debouncedExport","debounce","data","exportRequest","handleCancel","onSubmit","convertToDate","timeParts","day","newDate","onChanged","renderContent","_a","_b","v","field","FAILURE_CONTROL","STANDARD_CONTROL","Button","PropTypes"],"mappings":"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","sourcesContent":["//@ts-nocheck\nimport { useState, useRef, useMemo, useEffect } from 'react'\nimport { HiOutlineCalendar } from 'react-icons/hi'\nimport { Button } from './button'\nimport { useForm, Controller } from 'react-hook-form'\nimport debounce from 'lodash/debounce'\nimport { variantProps } from 'classname-variants/react'\nimport { BiChevronDown } from 'react-icons/bi'\nimport PropTypes from 'prop-types'\nimport { GetDiscountDateTimeString } from './helpers/datetime'\nimport { STANDARD_CONTROL, FAILURE_CONTROL } from './helpers/colour'\n\n\nconst generateTimeOptions = () => {\n const times = [];\n for (let i = 0; i < 24; i++) {\n for (let j = 0; j < 60; j += 15) {\n const hour = (i % 12 || 12).toString(); // Convert 0 to 12 for 12 AM/PM and pad with zero\n const minute = j.toString().padStart(2, '0');\n const period = i < 12 ? 'AM' : 'PM';\n const time = `${hour}:${minute} ${period}`;\n times.push(time);\n }\n }\n return times;\n};\n\nexport function DateTimeComponent({ id, dateValue, showError=false, callback }) {\n const [showDropdown, setShowDropdown] = useState(false)\n const timeOptions = generateTimeOptions();\n\n const handleShowDropdown = () => {\n setShowDropdown(true)\n }\n\n const ref = useRef(null)\n\n useEffect(() => {\n const handleClickOutside = (e) => {\n if (ref.current && !ref.current.contains(e.target)) {\n setShowDropdown(false)\n }\n }\n\n document.addEventListener('click', handleClickOutside, true)\n return () => {\n document.removeEventListener('click', handleClickOutside, true)\n }\n }, [])\n\n useEffect(() => {\n if (dateValue && (dateValue instanceof Date)) {\n setValue('date', dateValue.toISOString().split(\"T\")[0])\n const hours = dateValue.getHours()\n const mins = dateValue.getMinutes()\n const newHours = hours === 0 ? 12 : hours > 12 ? hours - 12 : hours\n const suffix = hours < 12 ? 'AM' : 'PM'\n const newTime = `${newHours.toString().padStart(2, '0')}:${mins.toString().padStart(2, '0')} ${suffix}`\n setValue('time', newTime)\n }\n }, [dateValue])\n\n const MinDate = useMemo(() => {\n var d = new Date();\n d.setDate(d.getDate() - 1);\n return d;\n }, [new Date().getDay()]);\n\n const {\n control,\n reset,\n handleSubmit,\n watch,\n setValue,\n formState: { errors },\n } = useForm({\n defaultValues: {\n date: MinDate.toISOString().split(\"T\")[0],\n time: \"12:00 AM\"\n },\n });\n\n const [err, setErr] = useState(false);\n const [dateErr, setDateErr] = useState(false);\n\n\n\n const debouncedExport = useRef(\n debounce((data) => {\n exportRequest(data);\n }, 500)\n ).current;\n\n const handleCancel = (e) => {\n e.preventDefault();\n setShowDropdown(false);\n setDateErr(false);\n };\n\n const onSubmit = (data) => {\n debouncedExport(data);\n };\n\n function convertToDate(date, time) {\n time = time.trim(); \n const timeParts = time.match(/(\\d+):(\\d+)\\s?(AM|PM)/i);\n let hours = parseInt(timeParts[1], 10);\n const minutes = parseInt(timeParts[2], 10);\n const period = timeParts[3].toUpperCase();\n if (period === \"PM\" && hours !== 12) {\n hours += 12;\n } else if (period === \"AM\" && hours === 12) {\n hours = 0;\n }\n const [year, month, day] = date.split('-');\n const dateObj = new Date(year, month - 1, day, hours, minutes, 0, 0);\n return dateObj;\n }\n\n const exportRequest = (data) => {\n if (data.emptyChk) {\n setErr(true);\n return;\n }\n const newDate = convertToDate(data.date, data.time);\n callback(newDate);\n setShowDropdown(false)\n }\n\n const onChanged = () => {\n if (dateErr) setDateErr(false);\n };\n\n const renderContent = () => (\n <div>\n <>\n <div className=\"grid grid-cols-2 pb-4\">\n <Controller\n name=\"date\"\n control={control}\n rules={{\n required: \"A date is required.\",\n validate: {\n whitespace: (v) =>\n (v?.toString().trim() || \"\").length > 0 ||\n \"A date is required.\",\n },\n }}\n render={({ field }) => (\n <div className=\"w-full pr-1\">\n <label htmlFor=\"date\">Date</label>\n <input\n type=\"date\"\n id=\"datePicker\"\n value={field.value}\n name=\"date\"\n max={MinDate}\n onChange={(e) => {\n field.onChange(e);\n onChanged();\n }}\n className={`mt-1 block w-full rounded-md border-gray-300 text-xs ${errors.date ? FAILURE_CONTROL : STANDARD_CONTROL}`}\n />\n </div>\n )}\n />\n <Controller\n name=\"time\"\n control={control}\n rules={{\n required: \"A time is required.\",\n validate: {\n whitespace: (v) =>\n (v?.toString().trim() || \"\").length > 0 ||\n \"A time is required.\",\n },\n }}\n render={({ field }) => (\n <div className=\"w-full pr-1\">\n <label htmlFor=\"time\">Time</label>\n <select id=\"time-select\" onChange={(e) => {\n field.onChange(e);\n onChanged();\n }} \n className=\"mt-1 block w-full rounded-md border-gray-300 text-xs\"\n value={field.value}\n >\n {timeOptions.map((time) => (\n <option key={`time-option-${time}`} value={time}>{time}</option>\n ))}\n </select>\n </div>\n )}\n />\n </div>\n </>\n {(errors.date || errors.time || dateErr) &&\n <div className='pb-4 text-sm text-red-600 dark:text-red-500'>\n {errors.date?.message || errors.time?.message || 'A valid date time is required.'}\n </div>\n }\n <div className=\"flex justify-end gap-4\">\n <Button color=\"gray\" size=\"sm\" outline onClick={handleCancel}>\n Cancel\n </Button>\n <Button color=\"default\" size=\"sm\" type=\"submit\">\n Apply\n </Button>\n </div>\n </div>\n );\n\n return (\n <div id={`${id}-panel`} className=\"relative\">\n <div className='relative'>\n <input\n id={`${id}-input`}\n placeholder=\"11-Aug-2024 12:00 AM\"\n value={GetDiscountDateTimeString(dateValue, true)}\n className={`block p-2.5 w-full text-sm border rounded-lg cursor-pointer ${showError ? \n 'bg-red-50 border border-red-500 text-red-900 placeholder-red-700 text-sm focus:ring-red-500 dark:bg-gray-700 focus:border-red-500 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500' : \n 'text-gray-900 bg-gray-50 border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500'}`\n }\n onClick={handleShowDropdown}\n readOnly\n />\n <HiOutlineCalendar className='absolute right-2 top-3 cursor-pointer' onClick={handleShowDropdown}/>\n </div>\n <div\n id={`${id}-dropdown`}\n ref={ref}\n className={`z-50 w-full mt-2 absolute ${\n showDropdown ? '' : 'hidden'\n } left-0 bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700`}\n >\n <div className=\"py-2 text-sm text-gray-700 dark:text-gray-200\" aria-labelledby=\"dropdownDefaultButton\">\n <form className=\"space-y-6 p-3\" onSubmit={handleSubmit(onSubmit)}>\n {showDropdown && renderContent()}\n </form>\n </div>\n </div>\n </div>\n );\n}\n\nDateTimeComponent.propTypes = {\n /** This is the unique Id for the DateTimePicker component */\n id: PropTypes.string.isRequired,\n /** Date object containing date to display in input control. Date should already be converted to local time */\n dateValue: PropTypes.instanceOf(Date).isRequired,\n /** This is an optional boolean option which changes the background colour of the input control to red */\n showError: PropTypes.bool,\n /** Callback function for the DateTimecomponent outputs the chosen date time in form of Date object*/\n callback: PropTypes.func.isRequired,\n};\n\nDateTimeComponent.displayName = \"DateTimeComponent\";\n","// Takes a date time string in UTC time and returns a Date object in local time\nexport const ConvertUTCToLocal = (utcTime) => {\n const utcDate = new Date(Date.parse(utcTime))\n return new Date(Date.UTC(utcDate.getFullYear(), utcDate.getMonth(), utcDate.getDate(), utcDate.getHours(), utcDate.getMinutes()))\n}\n// Returns date in format of e.g 30-Jun-2022 10:00 AM\nexport const GetDiscountDateTimeString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n const timeString = getTimeString(localDate.getHours(), localDate.getMinutes())\n const dateString = getDateString(localDate.getFullYear(), localDate.getMonth(), localDate.getDate())\n return `${dateString} ${timeString}`\n}\n// Returns date in format of e.g 30-Jun-2022\nexport const GetDiscountDateString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n return getDateString(localDate.getFullYear(), localDate.getMonth(), localDate.getDate())\n}\n\nexport const GetBrowserControlDateTimeString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n return `${getBrowserDateString(localDate.getFullYear(),localDate.getMonth() + 1, localDate.getDate())}T${getBrowserTimeString(localDate.getHours(), localDate.getMinutes())}`\n}\n\nexport const GetBrowserControTimeString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n return getBrowserTimeString(localDate.getHours(), localDate.getMinutes())\n}\n// Converts the time string, e.g. '06:00', into a full Date object \nexport const ConvertBrowserTimeStringToDate = (timeString) => {\n const parts = timeString.split(':')\n if (parts.length === 2) {\n const hours = Number(parts[0])\n const minutes = Number(parts[1])\n if (!isNaN(hours) && !isNaN(minutes)) {\n return new Date().setHours(hours, minutes, 0, 0)\n }\n }\n return new Date().setHours(0,0,0,0)\n}\n\nconst getBrowserDateString = (year, month, date) => {\n return `${year}-${month.toString().padStart(2, 0)}-${date.toString().padStart(2,0)}`\n}\n\nconst getBrowserTimeString = (hours, minutes) => {\n return `${hours.toString().padStart(2,0)}:${minutes.toString().padStart(2, 0)}`\n}\n\nconst getTimeString = (hours, minutes) =>\n{\n const newHours = hours > 12 ? hours - 12 : hours\n const suffix = hours > 11 ? 'PM' : 'AM'\n return `${newHours}:${minutes.toString().padStart(2, '0')} ${suffix}`\n}\n\nconst getDateString = (year, month, date) =>\n{\n return `${date.toString().padStart(2, '0')}-${shortMonths[month]}-${year}`\n}\n\n// left this in for future use\nconst months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n]\n\nconst shortMonths = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n]\n"]}
@@ -10,7 +10,7 @@ import '../chunk-XKE3VK6Z.js';
10
10
  import '../chunk-7Q6OMA2A.js';
11
11
  import '../chunk-GVNUAH45.js';
12
12
  import '../chunk-JAR3LP2K.js';
13
- import '../chunk-VTQTYLLT.js';
13
+ import '../chunk-EK5I26TX.js';
14
14
  import '../chunk-22RUXGYW.js';
15
15
  import '../chunk-XXP5K6Y4.js';
16
16
  import '../chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import '../chunk-D5TS3JJH.js';
57
57
  import '../chunk-DSJ5TRZW.js';
58
58
  import '../chunk-E4USZ2Q3.js';
59
59
  import '../chunk-F47A36U7.js';
60
- import '../chunk-JFL77JIP.js';
60
+ import '../chunk-UP4YN4XR.js';
61
61
  import '../chunk-RRNNHYSF.js';
62
62
  import '../chunk-4FSPYK2A.js';
63
63
  import '../chunk-WLWG565K.js';
@@ -1,4 +1,4 @@
1
- export { a as DateTimeComponent } from './chunk-JFL77JIP.js';
1
+ export { a as DateTimeComponent } from './chunk-UP4YN4XR.js';
2
2
  import './chunk-4FSPYK2A.js';
3
3
  import './chunk-VOFMZ77E.js';
4
4
  import './chunk-TJMI4DH2.js';
@@ -10,7 +10,7 @@ import './chunk-XKE3VK6Z.js';
10
10
  import './chunk-7Q6OMA2A.js';
11
11
  import './chunk-GVNUAH45.js';
12
12
  import './chunk-JAR3LP2K.js';
13
- import './chunk-VTQTYLLT.js';
13
+ import './chunk-EK5I26TX.js';
14
14
  import './chunk-22RUXGYW.js';
15
15
  import './chunk-XXP5K6Y4.js';
16
16
  import './chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import './chunk-D5TS3JJH.js';
57
57
  import './chunk-DSJ5TRZW.js';
58
58
  import './chunk-E4USZ2Q3.js';
59
59
  import './chunk-F47A36U7.js';
60
- import './chunk-JFL77JIP.js';
60
+ import './chunk-UP4YN4XR.js';
61
61
  import './chunk-RRNNHYSF.js';
62
62
  import './chunk-4FSPYK2A.js';
63
63
  import './chunk-WLWG565K.js';
@@ -10,7 +10,7 @@ import '../chunk-XKE3VK6Z.js';
10
10
  import '../chunk-7Q6OMA2A.js';
11
11
  import '../chunk-GVNUAH45.js';
12
12
  import '../chunk-JAR3LP2K.js';
13
- import '../chunk-VTQTYLLT.js';
13
+ import '../chunk-EK5I26TX.js';
14
14
  import '../chunk-22RUXGYW.js';
15
15
  import '../chunk-XXP5K6Y4.js';
16
16
  import '../chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import '../chunk-D5TS3JJH.js';
57
57
  import '../chunk-DSJ5TRZW.js';
58
58
  import '../chunk-E4USZ2Q3.js';
59
59
  import '../chunk-F47A36U7.js';
60
- import '../chunk-JFL77JIP.js';
60
+ import '../chunk-UP4YN4XR.js';
61
61
  import '../chunk-RRNNHYSF.js';
62
62
  import '../chunk-4FSPYK2A.js';
63
63
  import '../chunk-WLWG565K.js';
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ export { a as NBUI_Card } from './chunk-XKE3VK6Z.js';
10
10
  export { a as NBUI_Container } from './chunk-7Q6OMA2A.js';
11
11
  export { a as NBUI_Footer } from './chunk-GVNUAH45.js';
12
12
  export { a as NBUI_Page_Layout } from './chunk-JAR3LP2K.js';
13
- export { a as Pagination } from './chunk-VTQTYLLT.js';
13
+ export { a as Pagination } from './chunk-EK5I26TX.js';
14
14
  import './chunk-22RUXGYW.js';
15
15
  export { a as Navbar } from './chunk-XXP5K6Y4.js';
16
16
  export { a as NBUI_Card_Form } from './chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ export { a as DateRangePicker } from './chunk-D5TS3JJH.js';
57
57
  export { a as Select } from './chunk-DSJ5TRZW.js';
58
58
  export { a as FormRow } from './chunk-E4USZ2Q3.js';
59
59
  export { a as Label } from './chunk-F47A36U7.js';
60
- export { a as DateTimeComponent } from './chunk-JFL77JIP.js';
60
+ export { a as DateTimeComponent } from './chunk-UP4YN4XR.js';
61
61
  export { a as DateTimePicker } from './chunk-RRNNHYSF.js';
62
62
  import './chunk-4FSPYK2A.js';
63
63
  export { b as Accordion } from './chunk-WLWG565K.js';
@@ -10,7 +10,7 @@ import '../chunk-XKE3VK6Z.js';
10
10
  import '../chunk-7Q6OMA2A.js';
11
11
  import '../chunk-GVNUAH45.js';
12
12
  import '../chunk-JAR3LP2K.js';
13
- import '../chunk-VTQTYLLT.js';
13
+ import '../chunk-EK5I26TX.js';
14
14
  import '../chunk-22RUXGYW.js';
15
15
  import '../chunk-XXP5K6Y4.js';
16
16
  import '../chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import '../chunk-D5TS3JJH.js';
57
57
  import '../chunk-DSJ5TRZW.js';
58
58
  import '../chunk-E4USZ2Q3.js';
59
59
  import '../chunk-F47A36U7.js';
60
- import '../chunk-JFL77JIP.js';
60
+ import '../chunk-UP4YN4XR.js';
61
61
  import '../chunk-RRNNHYSF.js';
62
62
  import '../chunk-4FSPYK2A.js';
63
63
  import '../chunk-WLWG565K.js';
@@ -1,4 +1,4 @@
1
- export { a as Pagination } from '../chunk-VTQTYLLT.js';
1
+ export { a as Pagination } from '../chunk-EK5I26TX.js';
2
2
  import '../chunk-Z4LPO673.js';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=pagination.js.map
@@ -10,7 +10,7 @@ import '../chunk-XKE3VK6Z.js';
10
10
  import '../chunk-7Q6OMA2A.js';
11
11
  import '../chunk-GVNUAH45.js';
12
12
  import '../chunk-JAR3LP2K.js';
13
- import '../chunk-VTQTYLLT.js';
13
+ import '../chunk-EK5I26TX.js';
14
14
  import '../chunk-22RUXGYW.js';
15
15
  import '../chunk-XXP5K6Y4.js';
16
16
  import '../chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import '../chunk-D5TS3JJH.js';
57
57
  import '../chunk-DSJ5TRZW.js';
58
58
  import '../chunk-E4USZ2Q3.js';
59
59
  import '../chunk-F47A36U7.js';
60
- import '../chunk-JFL77JIP.js';
60
+ import '../chunk-UP4YN4XR.js';
61
61
  import '../chunk-RRNNHYSF.js';
62
62
  import '../chunk-4FSPYK2A.js';
63
63
  import '../chunk-WLWG565K.js';
@@ -10,7 +10,7 @@ import './chunk-XKE3VK6Z.js';
10
10
  import './chunk-7Q6OMA2A.js';
11
11
  import './chunk-GVNUAH45.js';
12
12
  import './chunk-JAR3LP2K.js';
13
- import './chunk-VTQTYLLT.js';
13
+ import './chunk-EK5I26TX.js';
14
14
  import './chunk-22RUXGYW.js';
15
15
  import './chunk-XXP5K6Y4.js';
16
16
  import './chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import './chunk-D5TS3JJH.js';
57
57
  import './chunk-DSJ5TRZW.js';
58
58
  import './chunk-E4USZ2Q3.js';
59
59
  import './chunk-F47A36U7.js';
60
- import './chunk-JFL77JIP.js';
60
+ import './chunk-UP4YN4XR.js';
61
61
  import './chunk-RRNNHYSF.js';
62
62
  import './chunk-4FSPYK2A.js';
63
63
  import './chunk-WLWG565K.js';
@@ -10,7 +10,7 @@ import './chunk-XKE3VK6Z.js';
10
10
  import './chunk-7Q6OMA2A.js';
11
11
  import './chunk-GVNUAH45.js';
12
12
  import './chunk-JAR3LP2K.js';
13
- import './chunk-VTQTYLLT.js';
13
+ import './chunk-EK5I26TX.js';
14
14
  import './chunk-22RUXGYW.js';
15
15
  import './chunk-XXP5K6Y4.js';
16
16
  import './chunk-LWTESXND.js';
@@ -57,7 +57,7 @@ import './chunk-D5TS3JJH.js';
57
57
  import './chunk-DSJ5TRZW.js';
58
58
  import './chunk-E4USZ2Q3.js';
59
59
  import './chunk-F47A36U7.js';
60
- import './chunk-JFL77JIP.js';
60
+ import './chunk-UP4YN4XR.js';
61
61
  import './chunk-RRNNHYSF.js';
62
62
  import './chunk-4FSPYK2A.js';
63
63
  import './chunk-WLWG565K.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ekm-ui",
3
- "version": "0.4.46",
3
+ "version": "0.4.48",
4
4
  "sideEffects": [
5
5
  "**/*.css"
6
6
  ],
@@ -15,7 +15,7 @@ const generateTimeOptions = () => {
15
15
  const times = [];
16
16
  for (let i = 0; i < 24; i++) {
17
17
  for (let j = 0; j < 60; j += 15) {
18
- const hour = (i % 12 || 12).toString().padStart(2, '0'); // Convert 0 to 12 for 12 AM/PM and pad with zero
18
+ const hour = (i % 12 || 12).toString(); // Convert 0 to 12 for 12 AM/PM and pad with zero
19
19
  const minute = j.toString().padStart(2, '0');
20
20
  const period = i < 12 ? 'AM' : 'PM';
21
21
  const time = `${hour}:${minute} ${period}`;
@@ -50,7 +50,7 @@ const getTimeString = (hours, minutes) =>
50
50
  {
51
51
  const newHours = hours > 12 ? hours - 12 : hours
52
52
  const suffix = hours > 11 ? 'PM' : 'AM'
53
- return `${newHours}:${minutes.toString().padStart(2, '0')} ${suffix} `
53
+ return `${newHours}:${minutes.toString().padStart(2, '0')} ${suffix}`
54
54
  }
55
55
 
56
56
  const getDateString = (year, month, date) =>
@@ -164,7 +164,7 @@ export function Pagination({
164
164
  <>
165
165
  <li>
166
166
  <button
167
- id="btnLast"
167
+ id="btnPage1"
168
168
  className={clsx(
169
169
  current === 1 && "cursor-not-allowed",
170
170
  "flex items-center justify-center border border-gray-300 bg-white px-3 py-2 text-sm leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
@@ -1,14 +0,0 @@
1
- import { a, c, b } from './chunk-4FSPYK2A.js';
2
- import { a as a$2 } from './chunk-VOFMZ77E.js';
3
- import { a as a$1 } from './chunk-6LHL364H.js';
4
- import { e } from './chunk-Z4LPO673.js';
5
- import { useState, useRef, useEffect, useMemo } from 'react';
6
- import { HiOutlineCalendar } from 'react-icons/hi';
7
- import { useForm, Controller } from 'react-hook-form';
8
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
9
-
10
- var F=e(a(),1),g=e(a$1(),1);var Q=o=>{let t=new Date(Date.parse(o));return new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes()))},T=(o,t=!1)=>{let a=t?new Date(Date.parse(o)):Q(o),l=W(a.getHours(),a.getMinutes());return `${X(a.getFullYear(),a.getMonth(),a.getDate())} ${l}`};var W=(o,t)=>{let a=o>12?o-12:o,l=o>11?"PM":"AM";return `${a}:${t.toString().padStart(2,"0")} ${l} `},X=(o,t,a)=>`${a.toString().padStart(2,"0")}-${Z[t]}-${o}`;var Z=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var re=()=>{let o=[];for(let t=0;t<24;t++)for(let a=0;a<60;a+=15){let l=(t%12||12).toString().padStart(2,"0"),u=a.toString().padStart(2,"0"),c=t<12?"AM":"PM",p=`${l}:${u} ${c}`;o.push(p);}return o};function H({id:o,dateValue:t,showError:a=!1,callback:l}){let[u,c$1]=useState(!1),p=re(),h=()=>{c$1(!0);},f=useRef(null);useEffect(()=>{let e=i=>{f.current&&!f.current.contains(i.target)&&c$1(!1);};return document.addEventListener("click",e,!0),()=>{document.removeEventListener("click",e,!0);}},[]),useEffect(()=>{if(t&&t instanceof Date){y("date",t.toISOString().split("T")[0]);let e=t.getHours(),i=t.getMinutes(),r=e===0?12:e>12?e-12:e,s=e<12?"AM":"PM",D=`${r.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")} ${s}`;y("time",D);}},[t]);let w=useMemo(()=>{var e=new Date;return e.setDate(e.getDate()-1),e},[new Date().getDay()]),{control:v,reset:ne,handleSubmit:E,watch:ae,setValue:y,formState:{errors:m}}=useForm({defaultValues:{date:w.toISOString().split("T")[0],time:"12:00 AM"}}),[se,P]=useState(!1),[x,M]=useState(!1),R=useRef((0, F.default)(e=>{I(e);},500)).current,J=e=>{e.preventDefault(),c$1(!1),M(!1);},L=e=>{R(e);};function G(e,i){i=i.trim();let r=i.match(/(\d+):(\d+)\s?(AM|PM)/i),s=parseInt(r[1],10),D=parseInt(r[2],10),C=r[3].toUpperCase();C==="PM"&&s!==12?s+=12:C==="AM"&&s===12&&(s=0);let[Y,j,z]=e.split("-");return new Date(Y,j-1,z,s,D,0,0)}let I=e=>{if(e.emptyChk){P(!0);return}let i=G(e.date,e.time);l(i),c$1(!1);},$=()=>{x&&M(!1);},U=()=>{var e,i;return jsxs("div",{children:[jsx(Fragment,{children:jsxs("div",{className:"grid grid-cols-2 pb-4",children:[jsx(Controller,{name:"date",control:v,rules:{required:"A date is required.",validate:{whitespace:r=>((r==null?void 0:r.toString().trim())||"").length>0||"A date is required."}},render:({field:r})=>jsxs("div",{className:"w-full pr-1",children:[jsx("label",{htmlFor:"date",children:"Date"}),jsx("input",{type:"date",id:"datePicker",value:r.value,name:"date",max:w,onChange:s=>{r.onChange(s),$();},className:`mt-1 block w-full rounded-md border-gray-300 text-xs ${m.date?c:b}`})]})}),jsx(Controller,{name:"time",control:v,rules:{required:"A time is required.",validate:{whitespace:r=>((r==null?void 0:r.toString().trim())||"").length>0||"A time is required."}},render:({field:r})=>jsxs("div",{className:"w-full pr-1",children:[jsx("label",{htmlFor:"time",children:"Time"}),jsx("select",{id:"time-select",onChange:s=>{r.onChange(s),$();},className:"mt-1 block w-full rounded-md border-gray-300 text-xs",value:r.value,children:p.map(s=>jsx("option",{value:s,children:s},`time-option-${s}`))})]})})]})}),(m.date||m.time||x)&&jsx("div",{className:"pb-4 text-sm text-red-600 dark:text-red-500",children:((e=m.date)==null?void 0:e.message)||((i=m.time)==null?void 0:i.message)||"A valid date time is required."}),jsxs("div",{className:"flex justify-end gap-4",children:[jsx(a$2,{color:"gray",size:"sm",outline:!0,onClick:J,children:"Cancel"}),jsx(a$2,{color:"default",size:"sm",type:"submit",children:"Apply"})]})]})};return jsxs("div",{id:`${o}-panel`,className:"relative",children:[jsxs("div",{className:"relative",children:[jsx("input",{id:`${o}-input`,placeholder:"11-Aug-2024 12:00 AM",value:T(t,!0),className:`block p-2.5 w-full text-sm border rounded-lg cursor-pointer ${a?"bg-red-50 border border-red-500 text-red-900 placeholder-red-700 text-sm focus:ring-red-500 dark:bg-gray-700 focus:border-red-500 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500":"text-gray-900 bg-gray-50 border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"}`,onClick:h,readOnly:!0}),jsx(HiOutlineCalendar,{className:"absolute right-2 top-3 cursor-pointer",onClick:h})]}),jsx("div",{id:`${o}-dropdown`,ref:f,className:`z-50 w-full mt-2 absolute ${u?"":"hidden"} left-0 bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700`,children:jsx("div",{className:"py-2 text-sm text-gray-700 dark:text-gray-200","aria-labelledby":"dropdownDefaultButton",children:jsx("form",{className:"space-y-6 p-3",onSubmit:E(L),children:u&&U()})})})]})}H.propTypes={id:g.default.string.isRequired,dateValue:g.default.instanceOf(Date).isRequired,showError:g.default.bool,callback:g.default.func.isRequired};H.displayName="DateTimeComponent";
11
-
12
- export { H as a };
13
- //# sourceMappingURL=out.js.map
14
- //# sourceMappingURL=chunk-JFL77JIP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/date-time-component.tsx","../src/helpers/datetime.js"],"names":["useState","useRef","useMemo","useEffect","HiOutlineCalendar","import_debounce","import_prop_types","useForm","Controller","ConvertUTCToLocal","utcTime","utcDate","GetDiscountDateTimeString","timeIsLocal","localDate","timeString","getTimeString","getDateString","hours","minutes","newHours","suffix","year","month","date","shortMonths","Fragment","jsx","jsxs","generateTimeOptions","times","i","j","hour","minute","period","time","DateTimeComponent","id","dateValue","showError","callback","showDropdown","setShowDropdown","timeOptions","handleShowDropdown","ref","handleClickOutside","e","setValue","mins","newTime","MinDate","d","control","reset","handleSubmit","watch","errors","err","setErr","dateErr","setDateErr","debouncedExport","debounce","data","exportRequest","handleCancel","onSubmit","convertToDate","timeParts","day","newDate","onChanged","renderContent","_a","_b","v","field","FAILURE_CONTROL","STANDARD_CONTROL","Button","PropTypes"],"mappings":"8KACA,OAAS,YAAAA,EAAU,UAAAC,EAAQ,WAAAC,EAAS,aAAAC,MAAiB,QACrD,OAAS,qBAAAC,OAAyB,iBAGlC,IAAAC,EAAqB,SAGrBC,EAAsB,SAJtB,OAAS,WAAAC,GAAS,cAAAC,MAAkB,kBCH7B,IAAMC,EAAqBC,GAAY,CAC5C,IAAMC,EAAU,IAAI,KAAK,KAAK,MAAMD,CAAO,CAAC,EAC5C,OAAO,IAAI,KAAK,KAAK,IAAIC,EAAQ,YAAY,EAAGA,EAAQ,SAAS,EAAGA,EAAQ,QAAQ,EAAGA,EAAQ,SAAS,EAAGA,EAAQ,WAAW,CAAC,CAAC,CAClI,EAEaC,EAA4B,CAACF,EAASG,EAAc,KAAU,CACzE,IAAMC,EAAaD,EAAc,IAAI,KAAK,KAAK,MAAMH,CAAO,CAAC,EAAID,EAAkBC,CAAO,EACpFK,EAAaC,EAAcF,EAAU,SAAS,EAAGA,EAAU,WAAW,CAAC,EAE7E,MAAO,GADYG,EAAcH,EAAU,YAAY,EAAGA,EAAU,SAAS,EAAGA,EAAU,QAAQ,CAAC,KAC3EC,GAC1B,EAqCA,IAAMC,EAAgB,CAACE,EAAOC,IAC9B,CACE,IAAMC,EAAWF,EAAQ,GAAKA,EAAQ,GAAKA,EACrCG,EAASH,EAAQ,GAAK,KAAO,KACnC,MAAO,GAAGE,KAAYD,EAAQ,SAAS,EAAE,SAAS,EAAG,GAAG,KAAKE,IAC/D,EAEMJ,EAAgB,CAACK,EAAMC,EAAOC,IAE3B,GAAGA,EAAK,SAAS,EAAE,SAAS,EAAG,GAAG,KAAKC,EAAYF,CAAK,KAAKD,IAmBtE,IAAMG,EAAc,CAClB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACF,ED8CQ,mBAAAC,GAeU,OAAAC,EADF,QAAAC,MAdR,oBA1HR,IAAMC,GAAsB,IAAM,CAChC,IAAMC,EAAQ,CAAC,EACf,QAASC,EAAI,EAAGA,EAAI,GAAIA,IACtB,QAASC,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAAI,CAC/B,IAAMC,GAAQF,EAAI,IAAM,IAAI,SAAS,EAAE,SAAS,EAAG,GAAG,EAChDG,EAASF,EAAE,SAAS,EAAE,SAAS,EAAG,GAAG,EACrCG,EAASJ,EAAI,GAAK,KAAO,KACzBK,EAAO,GAAGH,KAAQC,KAAUC,IAClCL,EAAM,KAAKM,CAAI,EAGnB,OAAON,CACT,EAEO,SAASO,EAAkB,CAAE,GAAAC,EAAI,UAAAC,EAAW,UAAAC,EAAU,GAAO,SAAAC,CAAS,EAAG,CAC9E,GAAM,CAACC,EAAcC,CAAe,EAAI3C,EAAS,EAAK,EAChD4C,EAAcf,GAAoB,EAElCgB,EAAqB,IAAM,CAC/BF,EAAgB,EAAI,CACtB,EAEMG,EAAM7C,EAAO,IAAI,EAEvBE,EAAU,IAAM,CACd,IAAM4C,EAAsBC,GAAM,CAC5BF,EAAI,SAAW,CAACA,EAAI,QAAQ,SAASE,EAAE,MAAM,GAC/CL,EAAgB,EAAK,CAEzB,EAEA,gBAAS,iBAAiB,QAASI,EAAoB,EAAI,EACpD,IAAM,CACX,SAAS,oBAAoB,QAASA,EAAoB,EAAI,CAChE,CACF,EAAG,CAAC,CAAC,EAEL5C,EAAU,IAAM,CACd,GAAIoC,GAAcA,aAAqB,KAAO,CAC5CU,EAAS,OAAQV,EAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EACtD,IAAMrB,EAAQqB,EAAU,SAAS,EAC3BW,EAAOX,EAAU,WAAW,EAC5BnB,EAAWF,IAAU,EAAI,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EACxDG,EAASH,EAAQ,GAAK,KAAO,KAC7BiC,EAAU,GAAG/B,EAAS,SAAS,EAAE,SAAS,EAAG,GAAG,KAAK8B,EAAK,SAAS,EAAE,SAAS,EAAG,GAAG,KAAK7B,IAC/F4B,EAAS,OAAQE,CAAO,EAE5B,EAAG,CAACZ,CAAS,CAAC,EAEd,IAAMa,EAAUlD,EAAQ,IAAM,CAC5B,IAAImD,EAAI,IAAI,KACZ,OAAAA,EAAE,QAAQA,EAAE,QAAQ,EAAI,CAAC,EAClBA,CACT,EAAG,CAAC,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC,EAElB,CACJ,QAAAC,EACA,MAAAC,GACA,aAAAC,EACA,MAAAC,GACA,SAAAR,EACA,UAAW,CAAE,OAAAS,CAAO,CACtB,EAAInD,GAAQ,CACV,cAAe,CACb,KAAM6C,EAAQ,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,EACxC,KAAM,UACR,CACF,CAAC,EAEK,CAACO,GAAKC,CAAM,EAAI5D,EAAS,EAAK,EAC9B,CAAC6D,EAASC,CAAU,EAAI9D,EAAS,EAAK,EAItC+D,EAAkB9D,KACtB,EAAA+D,SAAUC,GAAS,CACjBC,EAAcD,CAAI,CACpB,EAAG,GAAG,CACR,EAAE,QAEIE,EAAgB,GAAM,CAC1B,EAAE,eAAe,EACjBxB,EAAgB,EAAK,EACrBmB,EAAW,EAAK,CAClB,EAEMM,EAAYH,GAAS,CACzBF,EAAgBE,CAAI,CACtB,EAEA,SAASI,EAAc7C,EAAMY,EAAM,CACjCA,EAAOA,EAAK,KAAK,EACjB,IAAMkC,EAAYlC,EAAK,MAAM,wBAAwB,EACjDlB,EAAQ,SAASoD,EAAU,CAAC,EAAG,EAAE,EAC/BnD,EAAU,SAASmD,EAAU,CAAC,EAAG,EAAE,EACnCnC,EAASmC,EAAU,CAAC,EAAE,YAAY,EACpCnC,IAAW,MAAQjB,IAAU,GAC/BA,GAAS,GACAiB,IAAW,MAAQjB,IAAU,KACtCA,EAAQ,GAEV,GAAM,CAACI,EAAMC,EAAOgD,CAAG,EAAI/C,EAAK,MAAM,GAAG,EAEzC,OADgB,IAAI,KAAKF,EAAMC,EAAQ,EAAGgD,EAAKrD,EAAOC,EAAS,EAAG,CAAC,CAErE,CAEA,IAAM+C,EAAiBD,GAAS,CAC9B,GAAIA,EAAK,SAAU,CACjBL,EAAO,EAAI,EACX,OAEF,IAAMY,EAAUH,EAAcJ,EAAK,KAAMA,EAAK,IAAI,EAClDxB,EAAS+B,CAAO,EAChB7B,EAAgB,EAAK,CACvB,EAEM8B,EAAY,IAAM,CAClBZ,GAASC,EAAW,EAAK,CAC/B,EAEMY,EAAgB,IAAG,CArI3B,IAAAC,EAAAC,EAsII,OAAAhD,EAAC,OACG,UAAAD,EAAAD,GAAA,CACE,SAAAE,EAAC,OAAI,UAAU,wBACb,UAAAD,EAACnB,EAAA,CACC,KAAK,OACL,QAAS8C,EACT,MAAO,CACL,SAAU,sBACV,SAAU,CACR,WAAauB,KACVA,GAAA,YAAAA,EAAG,WAAW,SAAU,IAAI,OAAS,GACtC,qBACJ,CACF,EACA,OAAQ,CAAC,CAAE,MAAAC,CAAM,IACflD,EAAC,OAAI,UAAU,cACb,UAAAD,EAAC,SAAM,QAAQ,OAAO,gBAAI,EAC1BA,EAAC,SACC,KAAK,OACL,GAAG,aACH,MAAOmD,EAAM,MACb,KAAK,OACL,IAAK1B,EACL,SAAWJ,GAAM,CACf8B,EAAM,SAAS9B,CAAC,EAChByB,EAAU,CACZ,EACA,UAAW,wDAAwDf,EAAO,KAAOqB,EAAkBC,IACrG,GACF,EAEJ,EACArD,EAACnB,EAAA,CACC,KAAK,OACL,QAAS8C,EACT,MAAO,CACL,SAAU,sBACV,SAAU,CACR,WAAauB,KACVA,GAAA,YAAAA,EAAG,WAAW,SAAU,IAAI,OAAS,GACtC,qBACJ,CACF,EACA,OAAQ,CAAC,CAAE,MAAAC,CAAM,IACflD,EAAC,OAAI,UAAU,cACb,UAAAD,EAAC,SAAM,QAAQ,OAAO,gBAAI,EAC1BA,EAAC,UAAO,GAAG,cAAc,SAAWqB,GAAM,CACtC8B,EAAM,SAAS9B,CAAC,EAChByB,EAAU,CACZ,EACA,UAAU,uDACV,MAAOK,EAAM,MAEZ,SAAAlC,EAAY,IAAKR,GAChBT,EAAC,UAAmC,MAAOS,EAAO,SAAAA,GAArC,eAAeA,GAA2B,CACxD,EACH,GACF,EAEJ,GACF,EACF,GACAsB,EAAO,MAAQA,EAAO,MAAQG,IAC9BlC,EAAC,OAAI,UAAU,8CACZ,WAAAgD,EAAAjB,EAAO,OAAP,YAAAiB,EAAa,YAAWC,EAAAlB,EAAO,OAAP,YAAAkB,EAAa,UAAW,iCACnD,EAEFhD,EAAC,OAAI,UAAU,yBACb,UAAAD,EAACsD,EAAA,CAAO,MAAM,OAAO,KAAK,KAAK,QAAO,GAAC,QAASd,EAAc,kBAE9D,EACAxC,EAACsD,EAAA,CAAO,MAAM,UAAU,KAAK,KAAK,KAAK,SAAS,iBAEhD,GACF,GACF,GAGF,OACErD,EAAC,OAAI,GAAI,GAAGU,UAAY,UAAU,WAChC,UAAAV,EAAC,OAAI,UAAU,WACb,UAAAD,EAAC,SACC,GAAI,GAAGW,UACP,YAAY,uBACZ,MAAO1B,EAA0B2B,EAAW,EAAI,EAChD,UAAW,+DAA+DC,EACxE,mMACA,2NAEF,QAASK,EACT,SAAQ,GACV,EACAlB,EAACvB,GAAA,CAAkB,UAAU,wCAAwC,QAASyC,EAAmB,GACnG,EACAlB,EAAC,OACG,GAAI,GAAGW,aACP,IAAKQ,EACL,UAAW,6BACTJ,EAAe,GAAK,uFAGtB,SAAAf,EAAC,OAAI,UAAU,gDAAgD,kBAAgB,wBAC7E,SAAAA,EAAC,QAAK,UAAU,gBAAgB,SAAU6B,EAAaY,CAAQ,EAC5D,SAAA1B,GAAgBgC,EAAc,EACjC,EACF,EACF,GACJ,CAEJ,CAEArC,EAAkB,UAAY,CAE5B,GAAI,EAAA6C,QAAU,OAAO,WAErB,UAAW,EAAAA,QAAU,WAAW,IAAI,EAAE,WAEtC,UAAW,EAAAA,QAAU,KAErB,SAAU,EAAAA,QAAU,KAAK,UAC3B,EAEA7C,EAAkB,YAAc","sourcesContent":["//@ts-nocheck\nimport { useState, useRef, useMemo, useEffect } from 'react'\nimport { HiOutlineCalendar } from 'react-icons/hi'\nimport { Button } from './button'\nimport { useForm, Controller } from 'react-hook-form'\nimport debounce from 'lodash/debounce'\nimport { variantProps } from 'classname-variants/react'\nimport { BiChevronDown } from 'react-icons/bi'\nimport PropTypes from 'prop-types'\nimport { GetDiscountDateTimeString } from './helpers/datetime'\nimport { STANDARD_CONTROL, FAILURE_CONTROL } from './helpers/colour'\n\n\nconst generateTimeOptions = () => {\n const times = [];\n for (let i = 0; i < 24; i++) {\n for (let j = 0; j < 60; j += 15) {\n const hour = (i % 12 || 12).toString().padStart(2, '0'); // Convert 0 to 12 for 12 AM/PM and pad with zero\n const minute = j.toString().padStart(2, '0');\n const period = i < 12 ? 'AM' : 'PM';\n const time = `${hour}:${minute} ${period}`;\n times.push(time);\n }\n }\n return times;\n};\n\nexport function DateTimeComponent({ id, dateValue, showError=false, callback }) {\n const [showDropdown, setShowDropdown] = useState(false)\n const timeOptions = generateTimeOptions();\n\n const handleShowDropdown = () => {\n setShowDropdown(true)\n }\n\n const ref = useRef(null)\n\n useEffect(() => {\n const handleClickOutside = (e) => {\n if (ref.current && !ref.current.contains(e.target)) {\n setShowDropdown(false)\n }\n }\n\n document.addEventListener('click', handleClickOutside, true)\n return () => {\n document.removeEventListener('click', handleClickOutside, true)\n }\n }, [])\n\n useEffect(() => {\n if (dateValue && (dateValue instanceof Date)) {\n setValue('date', dateValue.toISOString().split(\"T\")[0])\n const hours = dateValue.getHours()\n const mins = dateValue.getMinutes()\n const newHours = hours === 0 ? 12 : hours > 12 ? hours - 12 : hours\n const suffix = hours < 12 ? 'AM' : 'PM'\n const newTime = `${newHours.toString().padStart(2, '0')}:${mins.toString().padStart(2, '0')} ${suffix}`\n setValue('time', newTime)\n }\n }, [dateValue])\n\n const MinDate = useMemo(() => {\n var d = new Date();\n d.setDate(d.getDate() - 1);\n return d;\n }, [new Date().getDay()]);\n\n const {\n control,\n reset,\n handleSubmit,\n watch,\n setValue,\n formState: { errors },\n } = useForm({\n defaultValues: {\n date: MinDate.toISOString().split(\"T\")[0],\n time: \"12:00 AM\"\n },\n });\n\n const [err, setErr] = useState(false);\n const [dateErr, setDateErr] = useState(false);\n\n\n\n const debouncedExport = useRef(\n debounce((data) => {\n exportRequest(data);\n }, 500)\n ).current;\n\n const handleCancel = (e) => {\n e.preventDefault();\n setShowDropdown(false);\n setDateErr(false);\n };\n\n const onSubmit = (data) => {\n debouncedExport(data);\n };\n\n function convertToDate(date, time) {\n time = time.trim(); \n const timeParts = time.match(/(\\d+):(\\d+)\\s?(AM|PM)/i);\n let hours = parseInt(timeParts[1], 10);\n const minutes = parseInt(timeParts[2], 10);\n const period = timeParts[3].toUpperCase();\n if (period === \"PM\" && hours !== 12) {\n hours += 12;\n } else if (period === \"AM\" && hours === 12) {\n hours = 0;\n }\n const [year, month, day] = date.split('-');\n const dateObj = new Date(year, month - 1, day, hours, minutes, 0, 0);\n return dateObj;\n }\n\n const exportRequest = (data) => {\n if (data.emptyChk) {\n setErr(true);\n return;\n }\n const newDate = convertToDate(data.date, data.time);\n callback(newDate);\n setShowDropdown(false)\n }\n\n const onChanged = () => {\n if (dateErr) setDateErr(false);\n };\n\n const renderContent = () => (\n <div>\n <>\n <div className=\"grid grid-cols-2 pb-4\">\n <Controller\n name=\"date\"\n control={control}\n rules={{\n required: \"A date is required.\",\n validate: {\n whitespace: (v) =>\n (v?.toString().trim() || \"\").length > 0 ||\n \"A date is required.\",\n },\n }}\n render={({ field }) => (\n <div className=\"w-full pr-1\">\n <label htmlFor=\"date\">Date</label>\n <input\n type=\"date\"\n id=\"datePicker\"\n value={field.value}\n name=\"date\"\n max={MinDate}\n onChange={(e) => {\n field.onChange(e);\n onChanged();\n }}\n className={`mt-1 block w-full rounded-md border-gray-300 text-xs ${errors.date ? FAILURE_CONTROL : STANDARD_CONTROL}`}\n />\n </div>\n )}\n />\n <Controller\n name=\"time\"\n control={control}\n rules={{\n required: \"A time is required.\",\n validate: {\n whitespace: (v) =>\n (v?.toString().trim() || \"\").length > 0 ||\n \"A time is required.\",\n },\n }}\n render={({ field }) => (\n <div className=\"w-full pr-1\">\n <label htmlFor=\"time\">Time</label>\n <select id=\"time-select\" onChange={(e) => {\n field.onChange(e);\n onChanged();\n }} \n className=\"mt-1 block w-full rounded-md border-gray-300 text-xs\"\n value={field.value}\n >\n {timeOptions.map((time) => (\n <option key={`time-option-${time}`} value={time}>{time}</option>\n ))}\n </select>\n </div>\n )}\n />\n </div>\n </>\n {(errors.date || errors.time || dateErr) &&\n <div className='pb-4 text-sm text-red-600 dark:text-red-500'>\n {errors.date?.message || errors.time?.message || 'A valid date time is required.'}\n </div>\n }\n <div className=\"flex justify-end gap-4\">\n <Button color=\"gray\" size=\"sm\" outline onClick={handleCancel}>\n Cancel\n </Button>\n <Button color=\"default\" size=\"sm\" type=\"submit\">\n Apply\n </Button>\n </div>\n </div>\n );\n\n return (\n <div id={`${id}-panel`} className=\"relative\">\n <div className='relative'>\n <input\n id={`${id}-input`}\n placeholder=\"11-Aug-2024 12:00 AM\"\n value={GetDiscountDateTimeString(dateValue, true)}\n className={`block p-2.5 w-full text-sm border rounded-lg cursor-pointer ${showError ? \n 'bg-red-50 border border-red-500 text-red-900 placeholder-red-700 text-sm focus:ring-red-500 dark:bg-gray-700 focus:border-red-500 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500' : \n 'text-gray-900 bg-gray-50 border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500'}`\n }\n onClick={handleShowDropdown}\n readOnly\n />\n <HiOutlineCalendar className='absolute right-2 top-3 cursor-pointer' onClick={handleShowDropdown}/>\n </div>\n <div\n id={`${id}-dropdown`}\n ref={ref}\n className={`z-50 w-full mt-2 absolute ${\n showDropdown ? '' : 'hidden'\n } left-0 bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700`}\n >\n <div className=\"py-2 text-sm text-gray-700 dark:text-gray-200\" aria-labelledby=\"dropdownDefaultButton\">\n <form className=\"space-y-6 p-3\" onSubmit={handleSubmit(onSubmit)}>\n {showDropdown && renderContent()}\n </form>\n </div>\n </div>\n </div>\n );\n}\n\nDateTimeComponent.propTypes = {\n /** This is the unique Id for the DateTimePicker component */\n id: PropTypes.string.isRequired,\n /** Date object containing date to display in input control. Date should already be converted to local time */\n dateValue: PropTypes.instanceOf(Date).isRequired,\n /** This is an optional boolean option which changes the background colour of the input control to red */\n showError: PropTypes.bool,\n /** Callback function for the DateTimecomponent outputs the chosen date time in form of Date object*/\n callback: PropTypes.func.isRequired,\n};\n\nDateTimeComponent.displayName = \"DateTimeComponent\";\n","// Takes a date time string in UTC time and returns a Date object in local time\nexport const ConvertUTCToLocal = (utcTime) => {\n const utcDate = new Date(Date.parse(utcTime))\n return new Date(Date.UTC(utcDate.getFullYear(), utcDate.getMonth(), utcDate.getDate(), utcDate.getHours(), utcDate.getMinutes()))\n}\n// Returns date in format of e.g 30-Jun-2022 10:00 AM\nexport const GetDiscountDateTimeString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n const timeString = getTimeString(localDate.getHours(), localDate.getMinutes())\n const dateString = getDateString(localDate.getFullYear(), localDate.getMonth(), localDate.getDate())\n return `${dateString} ${timeString}`\n}\n// Returns date in format of e.g 30-Jun-2022\nexport const GetDiscountDateString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n return getDateString(localDate.getFullYear(), localDate.getMonth(), localDate.getDate())\n}\n\nexport const GetBrowserControlDateTimeString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n return `${getBrowserDateString(localDate.getFullYear(),localDate.getMonth() + 1, localDate.getDate())}T${getBrowserTimeString(localDate.getHours(), localDate.getMinutes())}`\n}\n\nexport const GetBrowserControTimeString = (utcTime, timeIsLocal = false) => {\n const localDate = timeIsLocal ? new Date(Date.parse(utcTime)) : ConvertUTCToLocal(utcTime)\n return getBrowserTimeString(localDate.getHours(), localDate.getMinutes())\n}\n// Converts the time string, e.g. '06:00', into a full Date object \nexport const ConvertBrowserTimeStringToDate = (timeString) => {\n const parts = timeString.split(':')\n if (parts.length === 2) {\n const hours = Number(parts[0])\n const minutes = Number(parts[1])\n if (!isNaN(hours) && !isNaN(minutes)) {\n return new Date().setHours(hours, minutes, 0, 0)\n }\n }\n return new Date().setHours(0,0,0,0)\n}\n\nconst getBrowserDateString = (year, month, date) => {\n return `${year}-${month.toString().padStart(2, 0)}-${date.toString().padStart(2,0)}`\n}\n\nconst getBrowserTimeString = (hours, minutes) => {\n return `${hours.toString().padStart(2,0)}:${minutes.toString().padStart(2, 0)}`\n}\n\nconst getTimeString = (hours, minutes) =>\n{\n const newHours = hours > 12 ? hours - 12 : hours\n const suffix = hours > 11 ? 'PM' : 'AM'\n return `${newHours}:${minutes.toString().padStart(2, '0')} ${suffix} `\n}\n\nconst getDateString = (year, month, date) =>\n{\n return `${date.toString().padStart(2, '0')}-${shortMonths[month]}-${year}`\n}\n\n// left this in for future use\nconst months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n]\n\nconst shortMonths = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n]\n"]}