@@ -23,6 +23,10 @@ export default function Playground() {
23
23
const [ containerClassName , setContainerClassName ] = useState ( "" ) ;
24
24
const [ displayFormat , setDisplayFormat ] = useState ( "YYYY-MM-DD" ) ;
25
25
const [ readOnly , setReadOnly ] = useState ( false ) ;
26
+ const [ minDate , setMinDate ] = useState ( "" ) ;
27
+ const [ maxDate , setMaxDate ] = useState ( "" ) ;
28
+ const [ disabledDates , setDisabledDates ] = useState ( [ ] ) ;
29
+ const [ newDisabledDates , setNewDisabledDates ] = useState ( { startDate : "" , endDate : "" } ) ;
26
30
const [ startFrom , setStartFrom ] = useState ( "2023-03-01" ) ;
27
31
const [ startWeekOn , setStartWeekOn ] = useState ( null ) ;
28
32
@@ -59,6 +63,9 @@ export default function Playground() {
59
63
containerClassName = { containerClassName }
60
64
displayFormat = { displayFormat }
61
65
readOnly = { readOnly }
66
+ minDate = { minDate }
67
+ maxDate = { maxDate }
68
+ disabledDates = { disabledDates }
62
69
startWeekOn = { startWeekOn }
63
70
/>
64
71
</ div >
@@ -209,6 +216,19 @@ export default function Playground() {
209
216
} }
210
217
/>
211
218
</ div >
219
+ < div className = "mb-2" >
220
+ < label className = "block" htmlFor = "minDate" >
221
+ Minimum Date
222
+ </ label >
223
+ < input
224
+ className = "rounded border px-4 py-2 w-full border-gray-200"
225
+ id = "minDate"
226
+ value = { minDate }
227
+ onChange = { e => {
228
+ setMinDate ( e . target . value ) ;
229
+ } }
230
+ />
231
+ </ div >
212
232
</ div >
213
233
< div className = "w-full sm:w-1/3 pr-2 flex flex-col" >
214
234
< div className = "mb-2" >
@@ -263,6 +283,19 @@ export default function Playground() {
263
283
} }
264
284
/>
265
285
</ div >
286
+ < div className = "mb-2" >
287
+ < label className = "block" htmlFor = "maxDate" >
288
+ Maximum Date
289
+ </ label >
290
+ < input
291
+ className = "rounded border px-4 py-2 w-full border-gray-200"
292
+ id = "maxDate"
293
+ value = { maxDate }
294
+ onChange = { e => {
295
+ setMaxDate ( e . target . value ) ;
296
+ } }
297
+ />
298
+ </ div >
266
299
< div className = "mb-2" >
267
300
< label className = "block" htmlFor = "startWeekOnClassName" >
268
301
Start Week On
@@ -272,11 +305,89 @@ export default function Playground() {
272
305
id = "startWeekOnClassName"
273
306
value = { startWeekOn }
274
307
onChange = { e => {
275
- setStartWeekOn ( e . target . value )
308
+ setStartWeekOn ( e . target . value ) ;
276
309
} }
277
310
/>
278
311
</ div >
279
312
</ div >
313
+ < div className = "w-full grid sm:grid-cols-3" >
314
+ < div className = "sm:col-start-2 sm:col-span-2 p-2 border-t grid grid-cols-2" >
315
+ < h1 className = "mb-2 text-lg font-semibold text-center col-span-3" >
316
+ Disable Dates
317
+ </ h1 >
318
+ < div className = "mb-2 sm:col-span-2 mr-2" >
319
+ < label className = "block" htmlFor = "startDate" >
320
+ Start Date
321
+ </ label >
322
+ < input
323
+ className = "rounded border px-4 py-2 border-gray-200 sm:w-full w-3/4"
324
+ id = "startDate"
325
+ value = { newDisabledDates . startDate }
326
+ onChange = { e => {
327
+ setNewDisabledDates ( prev => {
328
+ return {
329
+ ...prev ,
330
+ startDate : e . target . value
331
+ } ;
332
+ } ) ;
333
+ } }
334
+ />
335
+ </ div >
336
+ < div className = "mb-2" >
337
+ < label className = "block" htmlFor = "endDate" >
338
+ End Date
339
+ </ label >
340
+ < input
341
+ className = "rounded border px-4 py-2 border-gray-200 sm:w-full w-3/4"
342
+ id = "endDate"
343
+ value = { newDisabledDates . endDate }
344
+ onChange = { e => {
345
+ setNewDisabledDates ( prev => {
346
+ return {
347
+ ...prev ,
348
+ endDate : e . target . value
349
+ } ;
350
+ } ) ;
351
+ } }
352
+ />
353
+ </ div >
354
+ < div className = "mb-2 col-span-3" >
355
+ < button
356
+ onClick = { ( ) => {
357
+ if (
358
+ newDisabledDates . startDate !== "" &&
359
+ newDisabledDates . endDate !== ""
360
+ ) {
361
+ setDisabledDates ( prev => [ ...prev , newDisabledDates ] ) ;
362
+ setNewDisabledDates ( { startDate : "" , endDate : "" } ) ;
363
+ }
364
+ } }
365
+ className = "w-full bg-black text-white text-lg text-center p-2 rounded-lg"
366
+ >
367
+ Add
368
+ </ button >
369
+ </ div >
370
+ < div className = "mb-2 grid col-span-3 grid-col-2" >
371
+ { disabledDates . map ( ( range , index ) => (
372
+ < div className = "mb-2 p-2" key = { index } >
373
+ < button
374
+ className = "bg-red-500 text-white text-center rounded-xl p-2"
375
+ onClick = { ( ) => {
376
+ setDisabledDates (
377
+ disabledDates . filter ( r => r !== range )
378
+ ) ;
379
+ } }
380
+ >
381
+ Delete
382
+ </ button >
383
+ < span className = "pl-2" >
384
+ { range . startDate } - { range . endDate }
385
+ </ span >
386
+ </ div >
387
+ ) ) }
388
+ </ div >
389
+ </ div >
390
+ </ div >
280
391
</ div >
281
392
< div className = "flex flex-row flex-wrap items-center justify-center w-full" >
282
393
< a
0 commit comments