myoperator-mcp 0.2.324 → 0.2.325

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 +49 -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,26 @@ 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
+
3298
3318
  const setTriggerRef = React.useCallback(
3299
3319
  (node: HTMLDivElement | null) => {
3300
3320
  triggerRef.current = node;
@@ -3323,6 +3343,12 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3323
3343
  }
3324
3344
  }, [displayValue, isDateInputFocused]);
3325
3345
 
3346
+ React.useEffect(() => {
3347
+ if (!open) {
3348
+ setOpenCalendarSelect(null);
3349
+ }
3350
+ }, [open]);
3351
+
3326
3352
  React.useEffect(() => {
3327
3353
  if (!open) return;
3328
3354
 
@@ -3332,12 +3358,14 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3332
3358
  !isPointerInsideElement(event, popoverRef.current) &&
3333
3359
  !isPointerInsideSelector(event, CALENDAR_SELECT_CONTENT_SELECTOR)
3334
3360
  ) {
3361
+ setOpenCalendarSelect(null);
3335
3362
  setOpen(false);
3336
3363
  }
3337
3364
  };
3338
3365
 
3339
3366
  const handleKeyDown = (event: KeyboardEvent) => {
3340
3367
  if (event.key === "Escape") {
3368
+ setOpenCalendarSelect(null);
3341
3369
  setOpen(false);
3342
3370
  }
3343
3371
  };
@@ -3504,7 +3532,16 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3504
3532
  zIndex: 10050,
3505
3533
  visibility: isPositioned ? undefined : "hidden",
3506
3534
  }}
3507
- onPointerDown={(event) => event.stopPropagation()}
3535
+ onPointerDown={(event) => {
3536
+ if (
3537
+ event.target instanceof Element &&
3538
+ !event.target.closest(CALENDAR_SELECT_TRIGGER_SELECTOR)
3539
+ ) {
3540
+ setOpenCalendarSelect(null);
3541
+ }
3542
+
3543
+ event.stopPropagation();
3544
+ }}
3508
3545
  onMouseDown={(event) => event.stopPropagation()}
3509
3546
  onWheel={(event) => event.stopPropagation()}
3510
3547
  onTouchMove={(event) => event.stopPropagation()}
@@ -3524,6 +3561,10 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3524
3561
  Month
3525
3562
  </label>
3526
3563
  <Select
3564
+ open={openCalendarSelect === "month"}
3565
+ onOpenChange={(nextOpen) =>
3566
+ handleCalendarSelectOpenChange("month", nextOpen)
3567
+ }
3527
3568
  value={visibleMonth.getMonth().toString()}
3528
3569
  onValueChange={(nextMonth) =>
3529
3570
  updateVisibleMonth(
@@ -3537,6 +3578,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3537
3578
  >
3538
3579
  <SelectTrigger
3539
3580
  id={\`\${triggerId}-month\`}
3581
+ data-date-time-picker-calendar-select-trigger=""
3540
3582
  aria-label="Month"
3541
3583
  className={CALENDAR_SELECT_TRIGGER_CLASS}
3542
3584
  >
@@ -3573,6 +3615,10 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3573
3615
  Year
3574
3616
  </label>
3575
3617
  <Select
3618
+ open={openCalendarSelect === "year"}
3619
+ onOpenChange={(nextOpen) =>
3620
+ handleCalendarSelectOpenChange("year", nextOpen)
3621
+ }
3576
3622
  value={visibleMonth.getFullYear().toString()}
3577
3623
  onValueChange={(nextYear) =>
3578
3624
  updateVisibleMonth(
@@ -3586,6 +3632,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
3586
3632
  >
3587
3633
  <SelectTrigger
3588
3634
  id={\`\${triggerId}-year\`}
3635
+ data-date-time-picker-calendar-select-trigger=""
3589
3636
  aria-label="Year"
3590
3637
  className={CALENDAR_SELECT_TRIGGER_CLASS}
3591
3638
  >
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myoperator-mcp",
3
- "version": "0.2.324",
3
+ "version": "0.2.325",
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",