fixed DatePicker size issue

This commit is contained in:
pramod.mahajan 2025-11-07 16:47:51 +05:30
parent 7b2bb4d59a
commit dcbb4a3997
3 changed files with 34 additions and 43 deletions

View File

@ -81,13 +81,13 @@ const ExpenseAnalysis = () => {
<> <>
<div className="card-header d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center gap-2"> <div className="card-header d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center gap-2">
<div className="text-start w-100"> <div className="text-start ">
<h5 className="mb-1 card-title">Expense Breakdown</h5> <h5 className="mb-1 card-title">Expense Breakdown</h5>
{/* <p className="card-subtitle mb-0">Category Wise Expense Breakdown</p> */} {/* <p className="card-subtitle mb-0">Category Wise Expense Breakdown</p> */}
<p className="card-subtitle m-0">{projectName}</p> <p className="card-subtitle m-0">{projectName}</p>
</div> </div>
<div className="text-start text-sm-end w-75"> <div className="text-end text-sm-end ">
<FormProvider {...methods}> <FormProvider {...methods}>
<DateRangePicker1 /> <DateRangePicker1 />
</FormProvider> </FormProvider>

View File

@ -47,7 +47,7 @@ const DatePicker = ({
const displayValue = value ? flatpickr.formatDate(new Date(value), "d-m-Y") : ""; const displayValue = value ? flatpickr.formatDate(new Date(value), "d-m-Y") : "";
return ( return (
<div className={`position-relative ${className}`}> <div className={`position-relative ${className} w-max `}>
<input <input
type="text" type="text"
className="form-control form-control-sm" className="form-control form-control-sm"

View File

@ -3,8 +3,8 @@ import { useController, useFormContext, useWatch } from "react-hook-form";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
const DateRangePicker = ({ const DateRangePicker = ({
md=12, md,
sm=6, sm,
onRangeChange, onRangeChange,
DateDifference = 7, DateDifference = 7,
endDateMode = "yesterday", endDateMode = "yesterday",
@ -33,7 +33,7 @@ const DateRangePicker = ({
startDate.setHours(0, 0, 0, 0); startDate.setHours(0, 0, 0, 0);
} }
const fp = flatpickr(inputRef.current, { const fp = flatpickr(inputRef.current, {
mode: "range", mode: "range",
dateFormat: "Y-m-d", dateFormat: "Y-m-d",
altInput: true, altInput: true,
@ -63,31 +63,27 @@ const DateRangePicker = ({
}; };
return ( return (
<div className={`position-relative w-auto justify-content-center`}> <div className={`position-relative w-max `}>
<input <input
type="text" type="text"
className="form-control form-control-sm w-100 pe-8 " className="form-control form-control-sm ps-2 pe-3 me-2 cursor-pointer fw-medium"
placeholder="From to End" placeholder="From to End"
id="flatpickr-range" id="flatpickr-range"
ref={inputRef} ref={inputRef}
/> />
<i
className="bx bx-calendar calendar-icon cursor-pointer position-absolute ms-n6 top-50 end-30 translate-middle-y me-2 "
onClick={handleIconClick}
/>
</div>
<span
className="position-absolute top-50 end-0 pe-1 translate-middle-y cursor-pointer"
onClick={handleIconClick}
>
<i className="bx bx-calendar bx-sm fs-5 text-muted"></i>
</span>
</div>
); );
}; };
export default DateRangePicker; export default DateRangePicker;
export const DateRangePicker1 = ({ export const DateRangePicker1 = ({
startField = "startDate", startField = "startDate",
endField = "endDate", endField = "endDate",
@ -97,7 +93,6 @@ export const DateRangePicker1 = ({
resetSignal, resetSignal,
defaultRange = true, defaultRange = true,
maxDate = null, maxDate = null,
howManyDay = 6,
...rest ...rest
}) => { }) => {
const inputRef = useRef(null); const inputRef = useRef(null);
@ -107,13 +102,12 @@ export const DateRangePicker1 = ({
field: { ref }, field: { ref },
} = useController({ name: startField, control }); } = useController({ name: startField, control });
// Apply default range
const applyDefaultDates = () => { const applyDefaultDates = () => {
const today = new Date(); const today = new Date();
const past = new Date(today.getTime()); const past = new Date();
past.setDate(today.getDate() - howManyDay); past.setDate(today.getDate() - 6);
const format = (d) => window.flatpickr.formatDate(d, "d-m-Y"); const format = (d) => flatpickr.formatDate(d, "d-m-Y");
const formattedStart = format(past); const formattedStart = format(past);
const formattedEnd = format(today); const formattedEnd = format(today);
@ -128,11 +122,7 @@ export const DateRangePicker1 = ({
useEffect(() => { useEffect(() => {
if (!inputRef.current || inputRef.current._flatpickr) return; if (!inputRef.current || inputRef.current._flatpickr) return;
if (defaultRange && !getValues(startField) && !getValues(endField)) { const instance = flatpickr(inputRef.current, {
applyDefaultDates();
}
const instance = window.flatpickr(inputRef.current, {
mode: "range", mode: "range",
dateFormat: "d-m-Y", dateFormat: "d-m-Y",
allowInput: allowText, allowInput: allowText,
@ -140,7 +130,7 @@ export const DateRangePicker1 = ({
onChange: (selectedDates) => { onChange: (selectedDates) => {
if (selectedDates.length === 2) { if (selectedDates.length === 2) {
const [start, end] = selectedDates; const [start, end] = selectedDates;
const format = (d) => window.flatpickr.formatDate(d, "d-m-Y"); const format = (d) => flatpickr.formatDate(d, "d-m-Y");
setValue(startField, format(start), { shouldValidate: true }); setValue(startField, format(start), { shouldValidate: true });
setValue(endField, format(end), { shouldValidate: true }); setValue(endField, format(end), { shouldValidate: true });
} else { } else {
@ -153,10 +143,12 @@ export const DateRangePicker1 = ({
const currentStart = getValues(startField); const currentStart = getValues(startField);
const currentEnd = getValues(endField); const currentEnd = getValues(endField);
if (currentStart && currentEnd) { if (defaultRange && !currentStart && !currentEnd) {
applyDefaultDates();
} else if (currentStart && currentEnd) {
instance.setDate([ instance.setDate([
window.flatpickr.parseDate(currentStart, "d-m-Y"), flatpickr.parseDate(currentStart, "d-m-Y"),
window.flatpickr.parseDate(currentEnd, "d-m-Y"), flatpickr.parseDate(currentEnd, "d-m-Y"),
]); ]);
} }
@ -183,12 +175,12 @@ export const DateRangePicker1 = ({
const formattedValue = start && end ? `${start} To ${end}` : ""; const formattedValue = start && end ? `${start} To ${end}` : "";
return ( return (
<div className={`position-relative ${className}`}> <div className={`position-relative ${className} w-max `}>
<input <input
type="text" type="text"
className="form-control form-control-sm" className="form-control form-control-sm ps-2 pe-3 me-4 cursor-pointer"
placeholder={placeholder} placeholder={placeholder}
value={formattedValue} defaultValue={formattedValue}
ref={(el) => { ref={(el) => {
inputRef.current = el; inputRef.current = el;
ref(el); ref(el);
@ -205,4 +197,3 @@ export const DateRangePicker1 = ({
</div> </div>
); );
}; };