myoperator-mcp 0.2.324 → 0.2.326

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.
Files changed (2) hide show
  1. package/dist/index.js +68 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2542,9 +2542,12 @@ const YEAR_RANGE_BEFORE = 100;
2542
2542
  const YEAR_RANGE_AFTER = 10;
2543
2543
  const CALENDAR_SELECT_CONTENT_SELECTOR =
2544
2544
  "[data-date-time-picker-calendar-select]";
2545
- const CALENDAR_SELECT_TRIGGER_CLASS = "!w-[90px] !gap-[6px]";
2545
+ const CALENDAR_SELECT_TRIGGER_SELECTOR =
2546
+ "[data-date-time-picker-calendar-select-trigger]";
2547
+ const CALENDAR_SELECT_TRIGGER_CLASS = "!w-[90px] !min-w-[90px] !gap-[6px] !px-3";
2546
2548
  const CALENDAR_SELECT_CONTENT_CLASS =
2547
2549
  "z-[10060] w-[var(--radix-select-trigger-width)] min-w-[var(--radix-select-trigger-width)] max-h-[min(16rem,var(--radix-select-content-available-height))]";
2550
+ type CalendarSelect = "month" | "year";
2548
2551
  const DATE_TIME_INPUT_SEGMENT_RANGES = {
2549
2552
  day: [0, 2],
2550
2553
  month: [3, 5],
@@ -3220,6 +3223,8 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3220
3223
  formatDateForDisplay(currentValue.date, currentValue.startTime)
3221
3224
  );
3222
3225
  const [isDateInputFocused, setIsDateInputFocused] = React.useState(false);
3226
+ const [openCalendarSelect, setOpenCalendarSelect] =
3227
+ React.useState<CalendarSelect | null>(null);
3223
3228
  const rootRef = React.useRef<HTMLDivElement | null>(null);
3224
3229
  const triggerRef = React.useRef<HTMLDivElement | null>(null);
3225
3230
  const popoverRef = React.useRef<HTMLDivElement | null>(null);
@@ -3290,11 +3295,39 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3290
3295
  setInternalOpen(nextOpen);
3291
3296
  }
3292
3297
 
3298
+ if (!nextOpen) {
3299
+ setOpenCalendarSelect(null);
3300
+ }
3301
+
3293
3302
  onOpenChange?.(nextOpen);
3294
3303
  },
3295
3304
  [isOpenControlled, onOpenChange]
3296
3305
  );
3297
3306
 
3307
+ const handleCalendarSelectOpenChange = React.useCallback(
3308
+ (select: CalendarSelect, nextOpen: boolean) => {
3309
+ setOpenCalendarSelect((currentSelect) => {
3310
+ if (nextOpen) return select;
3311
+
3312
+ return currentSelect === select ? null : currentSelect;
3313
+ });
3314
+ },
3315
+ []
3316
+ );
3317
+
3318
+ const handleCalendarSelectTriggerPointerDown = React.useCallback(
3319
+ (
3320
+ select: CalendarSelect,
3321
+ event: React.PointerEvent<HTMLButtonElement>
3322
+ ) => {
3323
+ if (openCalendarSelect !== select) return;
3324
+
3325
+ event.preventDefault();
3326
+ setOpenCalendarSelect(null);
3327
+ },
3328
+ [openCalendarSelect]
3329
+ );
3330
+
3298
3331
  const setTriggerRef = React.useCallback(
3299
3332
  (node: HTMLDivElement | null) => {
3300
3333
  triggerRef.current = node;
@@ -3323,6 +3356,12 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3323
3356
  }
3324
3357
  }, [displayValue, isDateInputFocused]);
3325
3358
 
3359
+ React.useEffect(() => {
3360
+ if (!open) {
3361
+ setOpenCalendarSelect(null);
3362
+ }
3363
+ }, [open]);
3364
+
3326
3365
  React.useEffect(() => {
3327
3366
  if (!open) return;
3328
3367
 
@@ -3332,12 +3371,14 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3332
3371
  !isPointerInsideElement(event, popoverRef.current) &&
3333
3372
  !isPointerInsideSelector(event, CALENDAR_SELECT_CONTENT_SELECTOR)
3334
3373
  ) {
3374
+ setOpenCalendarSelect(null);
3335
3375
  setOpen(false);
3336
3376
  }
3337
3377
  };
3338
3378
 
3339
3379
  const handleKeyDown = (event: KeyboardEvent) => {
3340
3380
  if (event.key === "Escape") {
3381
+ setOpenCalendarSelect(null);
3341
3382
  setOpen(false);
3342
3383
  }
3343
3384
  };
@@ -3504,7 +3545,16 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3504
3545
  zIndex: 10050,
3505
3546
  visibility: isPositioned ? undefined : "hidden",
3506
3547
  }}
3507
- onPointerDown={(event) => event.stopPropagation()}
3548
+ onPointerDown={(event) => {
3549
+ if (
3550
+ event.target instanceof Element &&
3551
+ !event.target.closest(CALENDAR_SELECT_TRIGGER_SELECTOR)
3552
+ ) {
3553
+ setOpenCalendarSelect(null);
3554
+ }
3555
+
3556
+ event.stopPropagation();
3557
+ }}
3508
3558
  onMouseDown={(event) => event.stopPropagation()}
3509
3559
  onWheel={(event) => event.stopPropagation()}
3510
3560
  onTouchMove={(event) => event.stopPropagation()}
@@ -3524,6 +3574,10 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3524
3574
  Month
3525
3575
  </label>
3526
3576
  <Select
3577
+ open={openCalendarSelect === "month"}
3578
+ onOpenChange={(nextOpen) =>
3579
+ handleCalendarSelectOpenChange("month", nextOpen)
3580
+ }
3527
3581
  value={visibleMonth.getMonth().toString()}
3528
3582
  onValueChange={(nextMonth) =>
3529
3583
  updateVisibleMonth(
@@ -3537,8 +3591,12 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3537
3591
  >
3538
3592
  <SelectTrigger
3539
3593
  id={\`\${triggerId}-month\`}
3594
+ data-date-time-picker-calendar-select-trigger=""
3540
3595
  aria-label="Month"
3541
3596
  className={CALENDAR_SELECT_TRIGGER_CLASS}
3597
+ onPointerDown={(event) =>
3598
+ handleCalendarSelectTriggerPointerDown("month", event)
3599
+ }
3542
3600
  >
3543
3601
  <SelectValue />
3544
3602
  </SelectTrigger>
@@ -3573,6 +3631,10 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3573
3631
  Year
3574
3632
  </label>
3575
3633
  <Select
3634
+ open={openCalendarSelect === "year"}
3635
+ onOpenChange={(nextOpen) =>
3636
+ handleCalendarSelectOpenChange("year", nextOpen)
3637
+ }
3576
3638
  value={visibleMonth.getFullYear().toString()}
3577
3639
  onValueChange={(nextYear) =>
3578
3640
  updateVisibleMonth(
@@ -3586,8 +3648,12 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3586
3648
  >
3587
3649
  <SelectTrigger
3588
3650
  id={\`\${triggerId}-year\`}
3651
+ data-date-time-picker-calendar-select-trigger=""
3589
3652
  aria-label="Year"
3590
3653
  className={CALENDAR_SELECT_TRIGGER_CLASS}
3654
+ onPointerDown={(event) =>
3655
+ handleCalendarSelectTriggerPointerDown("year", event)
3656
+ }
3591
3657
  >
3592
3658
  <SelectValue />
3593
3659
  </SelectTrigger>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myoperator-mcp",
3
- "version": "0.2.324",
3
+ "version": "0.2.326",
4
4
  "description": "MCP server for myOperator UI components - enables AI assistants to access component metadata, examples, and design tokens",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",