Skip to content

Commit b79dde2

Browse files
isubrotogitbutler-client
authored andcommitted
fix(combobox): Enhance autocomplete input with improved UX and positioning
Refactor Combobox component to provide a more intuitive and flexible autocomplete experience. Key improvements include: - Migrate to input-based trigger for better typing and search - Improve positioning and portal rendering - Optimize dropdown open/close behavior - Enhance accessibility and interaction patterns - Simplify search and selection mechanisms Specific changes: - Replace button trigger with input for direct typing - Improve dropdown positioning and width matching - Optimize click and focus handling - Update icon to ChevronsUpDown for better visual cue - Remove separate search input in favor of main input - Add more robust outside click detection
1 parent 7a0eb8b commit b79dde2

File tree

3 files changed

+209
-61
lines changed

3 files changed

+209
-61
lines changed

src/components/Calendar/Calendar.styles.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ const calendarVariants = cva(
1717
"before:absolute before:inset-0 before:bg-gradient-to-br",
1818
"before:from-primary/5 before:via-transparent before:to-accent/5",
1919
"before:opacity-50 before:transition-opacity before:duration-500",
20+
"before:pointer-events-none",
2021
],
2122
bordered: [
2223
"bg-card/90 shadow-sm backdrop-blur-sm",
2324
"before:absolute before:inset-0 before:bg-gradient-to-br",
2425
"before:from-primary/3 before:to-accent/3",
2526
"before:opacity-50 before:transition-opacity before:duration-500",
27+
"before:pointer-events-none",
2628
],
2729
glass: [
2830
"glass backdrop-blur-2xl",
@@ -31,6 +33,7 @@ const calendarVariants = cva(
3133
"before:absolute before:inset-0 before:bg-gradient-to-br",
3234
"before:from-white/5 before:to-transparent",
3335
"before:opacity-70 before:transition-opacity before:duration-500",
36+
"before:pointer-events-none",
3437
],
3538
"glass-strong": [
3639
"glass-strong backdrop-blur-3xl",
@@ -39,14 +42,17 @@ const calendarVariants = cva(
3942
"before:absolute before:inset-0 before:bg-gradient-to-br",
4043
"before:from-white/10 before:to-transparent",
4144
"before:opacity-80 before:transition-opacity before:duration-500",
45+
"before:pointer-events-none",
4246
],
4347
gradient: [
4448
"bg-gradient-to-br from-primary/20 via-background to-accent/20",
4549
"border-2 border-transparent relative",
4650
"before:absolute before:inset-0 before:-z-10",
4751
"before:bg-gradient-to-r before:from-primary before:via-accent before:to-secondary",
4852
"before:opacity-50 before:blur-xl",
53+
"before:pointer-events-none",
4954
"after:absolute after:inset-[2px] after:bg-background/95 after:rounded-[inherit]",
55+
"after:pointer-events-none",
5056
],
5157
},
5258
color: {

src/components/Calendar/index.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,11 @@ const Calendar = forwardRef<HTMLDivElement, CalendarProps>((props, ref) => {
467467
const isOutside = !isSameMonth(date, currentMonth);
468468
const inRange = mode === "range" ? isDateInRange(date, range) : false;
469469

470+
// Don't render dates from adjacent months
471+
if (isOutside) {
472+
return <div key={index} className="h-10 w-10" />;
473+
}
474+
470475
// Determine the state with proper range handling
471476
let state: any = "default";
472477
if (disabled) {

0 commit comments

Comments
 (0)