@multiplatform.one/forms 7.80.0 → 7.81.1
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.
- package/dist/cjs/AdaptivePopup/index.cjs +2 -1
- package/dist/cjs/AdaptivePopup/index.native.js +2 -1
- package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
- package/dist/cjs/Button/index.cjs +12 -5
- package/dist/cjs/Button/index.native.js +14 -6
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/PanelHeader.cjs +3 -8
- package/dist/cjs/FloatingPanel/PanelHeader.native.js +3 -8
- package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/coverRect.cjs +0 -8
- package/dist/cjs/FloatingPanel/coverRect.native.js +0 -8
- package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/echoContext.cjs +5 -27
- package/dist/cjs/FloatingPanel/echoContext.native.js +5 -28
- package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.cjs +49 -131
- package/dist/cjs/FloatingPanel/index.native.js +216 -135
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.cjs +3 -10
- package/dist/cjs/fields/Combobox/index.native.js +3 -10
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/InlineChoices.cjs +4 -8
- package/dist/cjs/fields/Select/InlineChoices.native.js +4 -8
- package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +65 -201
- package/dist/cjs/fields/Select/index.native.js +74 -209
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.cjs +2 -2
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +2 -2
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/index.native.js +4 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/shared/CheckGlyph.cjs +40 -0
- package/dist/cjs/shared/CheckGlyph.native.js +44 -0
- package/dist/cjs/shared/CheckGlyph.native.js.map +1 -0
- package/dist/cjs/shared/checkedOnField.cjs +104 -0
- package/dist/cjs/shared/checkedOnField.native.js +117 -0
- package/dist/cjs/shared/checkedOnField.native.js.map +1 -0
- package/dist/cjs/shared/floatingList.cjs +12 -5
- package/dist/cjs/shared/floatingList.native.js +15 -7
- package/dist/cjs/shared/floatingList.native.js.map +1 -1
- package/dist/esm/AdaptivePopup/index.mjs +3 -2
- package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
- package/dist/esm/AdaptivePopup/index.native.js +3 -2
- package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
- package/dist/esm/Button/index.mjs +12 -5
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +14 -6
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/PanelHeader.mjs +3 -8
- package/dist/esm/FloatingPanel/PanelHeader.mjs.map +1 -1
- package/dist/esm/FloatingPanel/PanelHeader.native.js +3 -8
- package/dist/esm/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/esm/FloatingPanel/coverRect.mjs +1 -8
- package/dist/esm/FloatingPanel/coverRect.mjs.map +1 -1
- package/dist/esm/FloatingPanel/coverRect.native.js +1 -8
- package/dist/esm/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/esm/FloatingPanel/echoContext.mjs +4 -24
- package/dist/esm/FloatingPanel/echoContext.mjs.map +1 -1
- package/dist/esm/FloatingPanel/echoContext.native.js +4 -25
- package/dist/esm/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +53 -135
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +180 -99
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/fields/Combobox/index.mjs +4 -11
- package/dist/esm/fields/Combobox/index.mjs.map +1 -1
- package/dist/esm/fields/Combobox/index.native.js +4 -11
- package/dist/esm/fields/Combobox/index.native.js.map +1 -1
- package/dist/esm/fields/Select/InlineChoices.mjs +2 -6
- package/dist/esm/fields/Select/InlineChoices.mjs.map +1 -1
- package/dist/esm/fields/Select/InlineChoices.native.js +2 -6
- package/dist/esm/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +68 -204
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +77 -212
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/shared/CheckGlyph.mjs +15 -0
- package/dist/esm/shared/CheckGlyph.mjs.map +1 -0
- package/dist/esm/shared/CheckGlyph.native.js +16 -0
- package/dist/esm/shared/CheckGlyph.native.js.map +1 -0
- package/dist/esm/shared/checkedOnField.mjs +76 -0
- package/dist/esm/shared/checkedOnField.mjs.map +1 -0
- package/dist/esm/shared/checkedOnField.native.js +86 -0
- package/dist/esm/shared/checkedOnField.native.js.map +1 -0
- package/dist/esm/shared/floatingList.mjs +9 -5
- package/dist/esm/shared/floatingList.mjs.map +1 -1
- package/dist/esm/shared/floatingList.native.js +12 -7
- package/dist/esm/shared/floatingList.native.js.map +1 -1
- package/dist/jsx/AdaptivePopup/index.mjs +3 -2
- package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js +2 -1
- package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
- package/dist/jsx/Button/index.mjs +12 -5
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +14 -6
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/PanelHeader.mjs +3 -8
- package/dist/jsx/FloatingPanel/PanelHeader.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/PanelHeader.native.js +3 -8
- package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/coverRect.mjs +1 -8
- package/dist/jsx/FloatingPanel/coverRect.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/coverRect.native.js +0 -8
- package/dist/jsx/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/echoContext.mjs +4 -24
- package/dist/jsx/FloatingPanel/echoContext.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/echoContext.native.js +5 -28
- package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +53 -135
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +216 -135
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.mjs +4 -11
- package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +3 -10
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/InlineChoices.mjs +2 -6
- package/dist/jsx/fields/Select/InlineChoices.mjs.map +1 -1
- package/dist/jsx/fields/Select/InlineChoices.native.js +4 -8
- package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +68 -204
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +74 -209
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +2 -2
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/jsx/index.js +3 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +3 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +4 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/CheckGlyph.mjs +15 -0
- package/dist/jsx/shared/CheckGlyph.mjs.map +1 -0
- package/dist/jsx/shared/CheckGlyph.native.js +44 -0
- package/dist/jsx/shared/CheckGlyph.native.js.map +1 -0
- package/dist/jsx/shared/checkedOnField.mjs +76 -0
- package/dist/jsx/shared/checkedOnField.mjs.map +1 -0
- package/dist/jsx/shared/checkedOnField.native.js +117 -0
- package/dist/jsx/shared/checkedOnField.native.js.map +1 -0
- package/dist/jsx/shared/floatingList.mjs +9 -5
- package/dist/jsx/shared/floatingList.mjs.map +1 -1
- package/dist/jsx/shared/floatingList.native.js +15 -7
- package/dist/jsx/shared/floatingList.native.js.map +1 -1
- package/package.json +8 -8
- package/src/AdaptivePopup/index.tsx +6 -3
- package/src/Button/Button.iconButton.spec.tsx +39 -0
- package/src/Button/index.tsx +20 -8
- package/src/FloatingPanel/FloatingPanel.iconCover.spec.tsx +279 -0
- package/src/FloatingPanel/FloatingPanel.menuFace.native.spec.tsx +78 -69
- package/src/FloatingPanel/FloatingPanel.seamlessCover.spec.tsx +12 -0
- package/src/FloatingPanel/PanelHeader.tsx +4 -12
- package/src/FloatingPanel/coverRect.ts +2 -15
- package/src/FloatingPanel/echoContext.ts +6 -40
- package/src/FloatingPanel/index.native.tsx +209 -144
- package/src/FloatingPanel/index.tsx +71 -187
- package/src/FloatingPanel/pointAnchor.spec.ts +1 -1
- package/src/FloatingPanel/pointAnchor.ts +4 -4
- package/src/FloatingPanel/sheetGrabber.spec.tsx +53 -0
- package/src/fields/Combobox/index.tsx +4 -9
- package/src/fields/Select/InlineChoices.tsx +2 -2
- package/src/fields/Select/Select.containingBlock.spec.tsx +131 -130
- package/src/fields/Select/Select.popUp.native.spec.tsx +276 -0
- package/src/fields/Select/Select.stories.tsx +26 -0
- package/src/fields/Select/index.tsx +84 -255
- package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +3 -3
- package/src/index.ts +2 -1
- package/src/shared/CheckGlyph.tsx +12 -0
- package/src/shared/checkedOnField.ts +116 -0
- package/src/shared/floatingList.spec.tsx +154 -1
- package/src/shared/floatingList.tsx +18 -9
- package/types/AdaptivePopup/index.d.ts.map +1 -1
- package/types/Button/index.d.ts.map +1 -1
- package/types/FloatingPanel/PanelHeader.d.ts +1 -6
- package/types/FloatingPanel/PanelHeader.d.ts.map +1 -1
- package/types/FloatingPanel/coverRect.d.ts +2 -11
- package/types/FloatingPanel/coverRect.d.ts.map +1 -1
- package/types/FloatingPanel/echoContext.d.ts +5 -22
- package/types/FloatingPanel/echoContext.d.ts.map +1 -1
- package/types/FloatingPanel/index.d.ts +22 -9
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts +8 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/FloatingPanel/pointAnchor.d.ts +4 -4
- package/types/fields/Combobox/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/shared/CheckGlyph.d.ts +10 -0
- package/types/shared/CheckGlyph.d.ts.map +1 -0
- package/types/shared/checkedOnField.d.ts +54 -0
- package/types/shared/checkedOnField.d.ts.map +1 -0
- package/types/shared/floatingList.d.ts +5 -2
- package/types/shared/floatingList.d.ts.map +1 -1
- package/dist/cjs/FloatingPanel/iconEcho.cjs +0 -106
- package/dist/cjs/FloatingPanel/iconEcho.native.js +0 -116
- package/dist/cjs/FloatingPanel/iconEcho.native.js.map +0 -1
- package/dist/esm/FloatingPanel/iconEcho.mjs +0 -79
- package/dist/esm/FloatingPanel/iconEcho.mjs.map +0 -1
- package/dist/esm/FloatingPanel/iconEcho.native.js +0 -86
- package/dist/esm/FloatingPanel/iconEcho.native.js.map +0 -1
- package/dist/jsx/FloatingPanel/iconEcho.mjs +0 -79
- package/dist/jsx/FloatingPanel/iconEcho.mjs.map +0 -1
- package/dist/jsx/FloatingPanel/iconEcho.native.js +0 -116
- package/dist/jsx/FloatingPanel/iconEcho.native.js.map +0 -1
- package/src/FloatingPanel/FloatingPanel.iconEcho.spec.tsx +0 -357
- package/src/FloatingPanel/iconEcho.tsx +0 -124
- package/types/FloatingPanel/iconEcho.d.ts +0 -29
- package/types/FloatingPanel/iconEcho.d.ts.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { IconSlot, useTouchSurface } from "@multiplatform.one/theme";
|
|
3
|
+
import { CheckGlyph } from "../../shared/CheckGlyph.native.js";
|
|
3
4
|
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, memo } from "react";
|
|
4
|
-
import { CaretDownIcon, CaretRightIcon
|
|
5
|
+
import { CaretDownIcon, CaretRightIcon } from "@phosphor-icons/react";
|
|
5
6
|
import { useClick, useDismiss, useInteractions, useListNavigation, useRole, useTypeahead, FloatingFocusManager } from "@floating-ui/react";
|
|
6
7
|
import { ensureKeyboardModalityTracking, keyboardFocusRingProps, useMenuRowCheckInk, menuRowChecked, menuRowFrame, sizeRecipeForToken, useGlyphColor, wasKeyboardFocus, transitionProps, Text as HouseText } from "@multiplatform.one/theme";
|
|
7
8
|
import * as ReactNative from "react-native";
|
|
@@ -16,8 +17,8 @@ import { Input as InputParts, FocusContext } from "../../InputParts/index.native
|
|
|
16
17
|
import { formCommonColors, formInputColors } from "../../shared/colorRamps.native.js";
|
|
17
18
|
import { warnSelectTooFewOptions } from "../../shared/devWarn.native.js";
|
|
18
19
|
import { getFieldError, getFieldHeight, mergeFieldHandler, useFormField, useResolvedValidators } from "../../shared/utils.native.js";
|
|
19
|
-
import { ScrollArrow } from "../../shared/floatingList.native.js";
|
|
20
|
-
import { FloatingPanel,
|
|
20
|
+
import { growOnScroll, placeCheckedOnField, ScrollArrow, scrollArrowBand } from "../../shared/floatingList.native.js";
|
|
21
|
+
import { FloatingPanel, useFloatingPanel, panelViewportPadding, useViewportGtSm } from "../../FloatingPanel/index.native.js";
|
|
21
22
|
import { pickerCompactFace, resolveCompactFace } from "../../FloatingPanel/compactFace.native.js";
|
|
22
23
|
import { PanelPortal } from "../../FloatingPanel/PanelPortal.native.js";
|
|
23
24
|
import { fixedContainingBlockOrigin } from "../../FloatingPanel/containingBlock.native.js";
|
|
@@ -430,11 +431,7 @@ var SelectItem = /* @__PURE__ */memo(function SelectItem2(param) {
|
|
|
430
431
|
numberOfLines: 1,
|
|
431
432
|
flex: 1,
|
|
432
433
|
children: option.label
|
|
433
|
-
}), isSelected && /* @__PURE__ */_jsx(
|
|
434
|
-
size: 14,
|
|
435
|
-
weight: "bold",
|
|
436
|
-
color: ctx.markColor
|
|
437
|
-
})]
|
|
434
|
+
}), isSelected && /* @__PURE__ */_jsx(CheckGlyph, {})]
|
|
438
435
|
});
|
|
439
436
|
});
|
|
440
437
|
function FloatingSelectCore(param) {
|
|
@@ -455,8 +452,8 @@ function FloatingSelectCore(param) {
|
|
|
455
452
|
dismissible,
|
|
456
453
|
panelWidth
|
|
457
454
|
} = param;
|
|
458
|
-
var _ref, _ref1, _ref2, _panel_x
|
|
459
|
-
var _overlayStyle_current
|
|
455
|
+
var _ref, _ref1, _ref2, _panel_x;
|
|
456
|
+
var _overlayStyle_current;
|
|
460
457
|
var overlayZIndex = useOverlayZIndex("dropdown");
|
|
461
458
|
var {
|
|
462
459
|
style: elevatedSurfaceStyle,
|
|
@@ -564,38 +561,23 @@ function FloatingSelectCore(param) {
|
|
|
564
561
|
sortedOptionsRef.current = orderOptionsBySelected(options, selected, selectedOrder);
|
|
565
562
|
}, [options, value, multiple, selectedOrder]);
|
|
566
563
|
var programmaticScrollRef = useRef(0);
|
|
567
|
-
var pinnedTopRef = useRef(0);
|
|
568
|
-
var pinnedHeightRef = useRef(0);
|
|
569
|
-
var grownRef = useRef(false);
|
|
570
|
-
var growUpOnlyRef = useRef(false);
|
|
571
|
-
var growDownOnlyRef = useRef(false);
|
|
572
564
|
var lastScrollTopRef = useRef(0);
|
|
573
|
-
var
|
|
574
|
-
var
|
|
575
|
-
var
|
|
576
|
-
var coverTrimRef = useRef(0);
|
|
577
|
-
var echoed = !beside && !coverScroll;
|
|
565
|
+
var onFieldRef = useRef(null);
|
|
566
|
+
var opensUpRef = useRef(false);
|
|
567
|
+
var arrowBand = scrollArrowBand(knobProps.menuRow.minHeight);
|
|
578
568
|
var repositionRef = useRef(null);
|
|
579
569
|
var panel = useFloatingPanel({
|
|
580
570
|
open,
|
|
581
571
|
onOpenChange: setOpen,
|
|
582
572
|
disabled,
|
|
583
573
|
repositionRef,
|
|
584
|
-
wheelGrowRef: selectedIndex >= 0 ? grownRef : void 0,
|
|
585
574
|
onBeforeOpen: function onBeforeOpen() {
|
|
586
575
|
computeSortedOptions();
|
|
587
576
|
overlayStyle.current = null;
|
|
588
|
-
pinnedTopRef.current = 0;
|
|
589
|
-
pinnedHeightRef.current = 0;
|
|
590
|
-
grownRef.current = false;
|
|
591
|
-
growUpOnlyRef.current = false;
|
|
592
|
-
growDownOnlyRef.current = false;
|
|
593
577
|
lastScrollTopRef.current = 0;
|
|
594
578
|
programmaticScrollRef.current = 0;
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
coverTrimRef.current = 0;
|
|
598
|
-
setCoverScroll(false);
|
|
579
|
+
onFieldRef.current = null;
|
|
580
|
+
opensUpRef.current = false;
|
|
599
581
|
},
|
|
600
582
|
panelWidth
|
|
601
583
|
});
|
|
@@ -658,10 +640,6 @@ function FloatingSelectCore(param) {
|
|
|
658
640
|
if (!selectedItem) return;
|
|
659
641
|
var isInitial1 = panel.initializingRef.current;
|
|
660
642
|
if (isInitial1) dropdownElement.style.transition = "none";
|
|
661
|
-
if (pinnedTopRef.current === 0 && pinnedHeightRef.current === 0) {
|
|
662
|
-
programmaticScrollRef.current++;
|
|
663
|
-
dropdownElement.scrollTop = 0;
|
|
664
|
-
}
|
|
665
643
|
var triggerBounds = trigger.getBoundingClientRect();
|
|
666
644
|
var viewportHeight = window.innerHeight;
|
|
667
645
|
var originTop = fixedContainingBlockOrigin(dropdownElement).top;
|
|
@@ -670,164 +648,54 @@ function FloatingSelectCore(param) {
|
|
|
670
648
|
var borderBottomWidth = parseFloat(computedStyle.borderBottomWidth) || 0;
|
|
671
649
|
var totalBorderWidth = borderTopWidth + borderBottomWidth;
|
|
672
650
|
var scrollContentHeight = dropdownElement.scrollHeight;
|
|
673
|
-
var
|
|
674
|
-
var
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
if (!overlayStyle.current || overlayStyle.current.top !== top1 - originTop || overlayStyle.current.maxHeight !== height) {
|
|
696
|
-
dropdownElement.style.top = `${top1 - originTop}px`;
|
|
697
|
-
dropdownElement.style.maxHeight = `${height}px`;
|
|
698
|
-
dropdownElement.style.height = "";
|
|
699
|
-
overlayStyle.current = {
|
|
700
|
-
top: top1 - originTop,
|
|
701
|
-
maxHeight: height
|
|
702
|
-
};
|
|
703
|
-
void dropdownElement.offsetHeight;
|
|
704
|
-
}
|
|
705
|
-
pinnedTopRef.current = top1;
|
|
706
|
-
pinnedHeightRef.current = height;
|
|
707
|
-
if (grown && previousTop > top1 && dropdownElement.scrollTop > 0) {
|
|
708
|
-
programmaticScrollRef.current++;
|
|
709
|
-
dropdownElement.scrollTop = Math.max(0, dropdownElement.scrollTop - (previousTop - top1));
|
|
710
|
-
}
|
|
711
|
-
if (echoRow) return;
|
|
712
|
-
var rowHeight = selectedItem.offsetHeight || 1;
|
|
713
|
-
if (isInitial1 && selectedIndex >= 0) {
|
|
714
|
-
var maxScrollTop = dropdownElement.scrollHeight - dropdownElement.clientHeight;
|
|
715
|
-
var scrollTop;
|
|
716
|
-
if (growsUpRef.current) {
|
|
717
|
-
scrollTop = selectedItem.offsetTop + rowHeight - (triggerBounds.bottom - top1);
|
|
718
|
-
} else {
|
|
719
|
-
var short = Math.max(0, selectedItem.offsetTop - maxScrollTop - 2);
|
|
720
|
-
scrollTop = selectedItem.offsetTop - Math.ceil(short / rowHeight) * rowHeight;
|
|
721
|
-
}
|
|
722
|
-
programmaticScrollRef.current++;
|
|
723
|
-
dropdownElement.scrollTop = Math.min(maxScrollTop, Math.max(0, scrollTop));
|
|
724
|
-
}
|
|
725
|
-
if (isInitial1 && !grown) {
|
|
726
|
-
var firstRow = listItemsRef.current[0];
|
|
727
|
-
var visibleBottom = dropdownElement.scrollTop + dropdownElement.clientHeight;
|
|
728
|
-
if (firstRow && visibleBottom < dropdownElement.scrollHeight - 2) {
|
|
729
|
-
var cut = (visibleBottom - firstRow.offsetTop) % rowHeight;
|
|
730
|
-
if (cut > 3 && cut < rowHeight - 3) {
|
|
731
|
-
coverTrimRef.current = cut;
|
|
732
|
-
var trimmedHeight = height - cut;
|
|
733
|
-
var trimmedTop = growsUpRef.current ? top1 + cut : top1;
|
|
734
|
-
dropdownElement.style.top = `${trimmedTop - originTop}px`;
|
|
735
|
-
dropdownElement.style.maxHeight = `${trimmedHeight}px`;
|
|
736
|
-
overlayStyle.current = {
|
|
737
|
-
top: trimmedTop - originTop,
|
|
738
|
-
maxHeight: trimmedHeight
|
|
739
|
-
};
|
|
740
|
-
pinnedTopRef.current = trimmedTop;
|
|
741
|
-
pinnedHeightRef.current = trimmedHeight;
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
panel.initializingRef.current = false;
|
|
746
|
-
void dropdownElement.offsetHeight;
|
|
747
|
-
if (isInitial1) dropdownElement.style.transition = panel.panelTransition;
|
|
748
|
-
requestAnimationFrame(function () {
|
|
749
|
-
if (dropdownElement) panel.updateArrows(dropdownElement);
|
|
651
|
+
var boundsTop = panelViewportPadding + borderTopWidth;
|
|
652
|
+
var boundsBottom = viewportHeight - panelViewportPadding - borderBottomWidth;
|
|
653
|
+
if (!onFieldRef.current) {
|
|
654
|
+
var fit = placeCheckedOnField({
|
|
655
|
+
fieldTop: triggerBounds.top,
|
|
656
|
+
fieldBottom: triggerBounds.bottom,
|
|
657
|
+
rowTop: selectedItem.offsetTop,
|
|
658
|
+
rowHeight: selectedItem.offsetHeight || 1,
|
|
659
|
+
contentHeight: scrollContentHeight,
|
|
660
|
+
boundsTop,
|
|
661
|
+
boundsBottom,
|
|
662
|
+
band: arrowBand
|
|
663
|
+
});
|
|
664
|
+
onFieldRef.current = fit;
|
|
665
|
+
opensUpRef.current = fit.top + fit.height / 2 < (triggerBounds.top + triggerBounds.bottom) / 2;
|
|
666
|
+
} else if (!isInitial1) {
|
|
667
|
+
onFieldRef.current = growOnScroll({
|
|
668
|
+
...onFieldRef.current,
|
|
669
|
+
scrollTop: dropdownElement.scrollTop,
|
|
670
|
+
contentHeight: scrollContentHeight,
|
|
671
|
+
boundsTop,
|
|
672
|
+
boundsBottom
|
|
750
673
|
});
|
|
751
|
-
return;
|
|
752
|
-
}
|
|
753
|
-
var idealTop = triggerBounds.top;
|
|
754
|
-
var idealBottom = idealTop + totalContentHeight;
|
|
755
|
-
var pinnedTop = Math.max(panelViewportPadding, idealTop);
|
|
756
|
-
var pinnedBottom = Math.min(viewportHeight - panelViewportPadding, idealBottom);
|
|
757
|
-
var pinnedHeight = Math.max(120, pinnedBottom - pinnedTop);
|
|
758
|
-
if (firstPlacement) {
|
|
759
|
-
pinnedTopRef.current = pinnedTop;
|
|
760
|
-
pinnedHeightRef.current = pinnedHeight;
|
|
761
|
-
}
|
|
762
|
-
var top2 = pinnedTopRef.current;
|
|
763
|
-
var height1 = pinnedHeightRef.current;
|
|
764
|
-
if (grownRef.current) {
|
|
765
|
-
var canGrowDown = Math.max(0, viewportHeight - panelViewportPadding - (top2 + height1));
|
|
766
|
-
height1 += canGrowDown;
|
|
767
|
-
var canGrowUp = Math.max(0, top2 - panelViewportPadding);
|
|
768
|
-
top2 -= canGrowUp;
|
|
769
|
-
height1 += canGrowUp;
|
|
770
|
-
}
|
|
771
|
-
if (growUpOnlyRef.current) {
|
|
772
|
-
var canGrowUp1 = Math.max(0, top2 - panelViewportPadding);
|
|
773
|
-
top2 -= canGrowUp1;
|
|
774
|
-
height1 += canGrowUp1;
|
|
775
|
-
}
|
|
776
|
-
if (growDownOnlyRef.current) {
|
|
777
|
-
var canGrowDown1 = Math.max(0, viewportHeight - panelViewportPadding - (top2 + height1));
|
|
778
|
-
height1 += canGrowDown1;
|
|
779
|
-
}
|
|
780
|
-
height1 = Math.min(height1, viewportHeight - top2 - panelViewportPadding);
|
|
781
|
-
height1 = Math.min(height1, totalContentHeight);
|
|
782
|
-
height1 = Math.max(120, height1);
|
|
783
|
-
var availableViewport = viewportHeight - 2 * panelViewportPadding;
|
|
784
|
-
if ((grownRef.current || growUpOnlyRef.current || growDownOnlyRef.current) && height1 < availableViewport) {
|
|
785
|
-
if (panel.placement.startsWith("top")) {
|
|
786
|
-
top2 = panelViewportPadding;
|
|
787
|
-
} else {
|
|
788
|
-
top2 = viewportHeight - panelViewportPadding - height1;
|
|
789
|
-
}
|
|
790
674
|
}
|
|
791
|
-
var
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
675
|
+
var placed = onFieldRef.current;
|
|
676
|
+
var top1 = placed.top - borderTopWidth;
|
|
677
|
+
var height = placed.height + totalBorderWidth;
|
|
678
|
+
if (!overlayStyle.current || overlayStyle.current.top !== top1 - originTop || overlayStyle.current.maxHeight !== height) {
|
|
679
|
+
dropdownElement.style.top = `${top1 - originTop}px`;
|
|
680
|
+
dropdownElement.style.maxHeight = `${height}px`;
|
|
795
681
|
dropdownElement.style.height = "";
|
|
796
682
|
overlayStyle.current = {
|
|
797
|
-
top:
|
|
798
|
-
maxHeight:
|
|
683
|
+
top: top1 - originTop,
|
|
684
|
+
maxHeight: height
|
|
799
685
|
};
|
|
800
686
|
void dropdownElement.offsetHeight;
|
|
801
687
|
}
|
|
802
|
-
if (
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
var maxScrollTop1 = dropdownElement.scrollHeight - dropdownElement.clientHeight;
|
|
806
|
-
programmaticScrollRef.current++;
|
|
807
|
-
dropdownElement.scrollTop = Math.max(0, Math.min(selectedItem.offsetTop - echoHeight, maxScrollTop1));
|
|
808
|
-
}
|
|
688
|
+
if (Math.abs(dropdownElement.scrollTop - placed.scrollTop) >= 0.5) {
|
|
689
|
+
programmaticScrollRef.current++;
|
|
690
|
+
dropdownElement.scrollTop = placed.scrollTop;
|
|
809
691
|
}
|
|
810
|
-
placeEchoOverTrigger(dropdownElement, {
|
|
811
|
-
triggerLeft: triggerBounds.left,
|
|
812
|
-
triggerRight: triggerBounds.right,
|
|
813
|
-
panelLeft: dropdownElement.getBoundingClientRect().left,
|
|
814
|
-
panelWidth: dropdownElement.offsetWidth,
|
|
815
|
-
rtl: getComputedStyle(trigger).direction === "rtl"
|
|
816
|
-
}, {
|
|
817
|
-
stretch: panelWidth !== void 0
|
|
818
|
-
});
|
|
819
692
|
panel.initializingRef.current = false;
|
|
820
693
|
void dropdownElement.offsetHeight;
|
|
821
694
|
if (isInitial1) dropdownElement.style.transition = panel.panelTransition;
|
|
822
695
|
requestAnimationFrame(function () {
|
|
823
|
-
if (dropdownElement)
|
|
824
|
-
panel.updateArrows(dropdownElement);
|
|
825
|
-
requestAnimationFrame(function () {
|
|
826
|
-
if (dropdownElement) panel.updateArrows(dropdownElement);
|
|
827
|
-
});
|
|
828
|
-
}
|
|
696
|
+
if (dropdownElement) panel.updateArrows(dropdownElement);
|
|
829
697
|
});
|
|
830
|
-
}, [selectedIndex, panel.refs, panel.updateArrows, panel.
|
|
698
|
+
}, [selectedIndex, panel.refs, panel.updateArrows, panel.panelTransition, options.length, beside, arrowBand]);
|
|
831
699
|
repositionRef.current = repositionOverlay;
|
|
832
700
|
useLayoutEffect(function () {
|
|
833
701
|
if (!open || !panel.mounted) return;
|
|
@@ -1021,23 +889,10 @@ function FloatingSelectCore(param) {
|
|
|
1021
889
|
return;
|
|
1022
890
|
}
|
|
1023
891
|
var arrowDir = panel.arrowScrollDirRef.current;
|
|
1024
|
-
if (arrowDir)
|
|
1025
|
-
panel.arrowScrollDirRef.current = null;
|
|
1026
|
-
lastScrollTopRef.current = el.scrollTop;
|
|
1027
|
-
if (arrowDir === "down") {
|
|
1028
|
-
growUpOnlyRef.current = true;
|
|
1029
|
-
} else {
|
|
1030
|
-
growDownOnlyRef.current = true;
|
|
1031
|
-
}
|
|
1032
|
-
repositionOverlay();
|
|
1033
|
-
return;
|
|
1034
|
-
}
|
|
892
|
+
if (arrowDir) panel.arrowScrollDirRef.current = null;
|
|
1035
893
|
var delta = el.scrollTop - lastScrollTopRef.current;
|
|
1036
894
|
lastScrollTopRef.current = el.scrollTop;
|
|
1037
|
-
if (delta !== 0)
|
|
1038
|
-
grownRef.current = true;
|
|
1039
|
-
repositionOverlay();
|
|
1040
|
-
}
|
|
895
|
+
if (delta !== 0) repositionOverlay();
|
|
1041
896
|
}, [panel.updateArrows, repositionOverlay]);
|
|
1042
897
|
return /* @__PURE__ */_jsxs(_Fragment, {
|
|
1043
898
|
children: [/* @__PURE__ */_jsxs(InputParts.Box, {
|
|
@@ -1154,7 +1009,7 @@ function FloatingSelectCore(param) {
|
|
|
1154
1009
|
opacity: panel.visible ? 1 : 0,
|
|
1155
1010
|
transform: panel.visible ? "scale(1)" : "scale(0.96)",
|
|
1156
1011
|
transition: panel.panelTransition,
|
|
1157
|
-
transformOrigin:
|
|
1012
|
+
transformOrigin: opensUpRef.current ? "bottom left" : "top left",
|
|
1158
1013
|
...dragProps.style
|
|
1159
1014
|
},
|
|
1160
1015
|
onPointerDown: dragProps.onPointerDown,
|
|
@@ -1198,19 +1053,12 @@ function FloatingSelectCore(param) {
|
|
|
1198
1053
|
"data-testid": "select-dropdown",
|
|
1199
1054
|
paddingVertical: 0,
|
|
1200
1055
|
paddingBottom: panel.coverCornerInset || 0,
|
|
1201
|
-
children: [
|
|
1202
|
-
sourceRef: panel.triggerRef,
|
|
1203
|
-
source: (_ref3 = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _ref3 !== void 0 ? _ref3 : placeholder,
|
|
1204
|
-
onPress: function onPress() {
|
|
1205
|
-
return setOpen(false);
|
|
1206
|
-
},
|
|
1207
|
-
presentational: true
|
|
1208
|
-
}) : null, /* @__PURE__ */_jsx(ScrollArrow, {
|
|
1056
|
+
children: [/* @__PURE__ */_jsx(ScrollArrow, {
|
|
1209
1057
|
direction: "up",
|
|
1210
1058
|
scrollRef: panel.refs.floating,
|
|
1211
1059
|
visible: panel.arrowUp,
|
|
1212
1060
|
arrowScrollDirRef: panel.arrowScrollDirRef,
|
|
1213
|
-
|
|
1061
|
+
band: arrowBand
|
|
1214
1062
|
}), groupLabel && /* @__PURE__ */_jsx(GroupHeader, {
|
|
1215
1063
|
color: textColor,
|
|
1216
1064
|
paddingHorizontal: knobProps.panelPadding.padding,
|
|
@@ -1247,7 +1095,8 @@ function FloatingSelectCore(param) {
|
|
|
1247
1095
|
direction: "down",
|
|
1248
1096
|
scrollRef: panel.refs.floating,
|
|
1249
1097
|
visible: panel.arrowDown,
|
|
1250
|
-
arrowScrollDirRef: panel.arrowScrollDirRef
|
|
1098
|
+
arrowScrollDirRef: panel.arrowScrollDirRef,
|
|
1099
|
+
band: arrowBand
|
|
1251
1100
|
})]
|
|
1252
1101
|
})
|
|
1253
1102
|
})
|
|
@@ -1277,6 +1126,7 @@ function NativeSelectCore(param) {
|
|
|
1277
1126
|
var insideOverlay = useInsideOverlay();
|
|
1278
1127
|
var compactFace = pickerCompactFace(options.length);
|
|
1279
1128
|
var asMenu = resolveCompactFace(compactFace, insideOverlay) === "menu";
|
|
1129
|
+
var beside = asMenu && insideOverlay && opensBesideTrigger(options.length);
|
|
1280
1130
|
var hydrationTouch = useTouchSurface();
|
|
1281
1131
|
var describedBy = useFieldDescribedBy();
|
|
1282
1132
|
var fieldA11y = useFieldA11y();
|
|
@@ -1368,6 +1218,10 @@ function NativeSelectCore(param) {
|
|
|
1368
1218
|
});
|
|
1369
1219
|
}
|
|
1370
1220
|
}, [open, selectedIndex]);
|
|
1221
|
+
var [onFieldRow, setOnFieldRow] = useState(null);
|
|
1222
|
+
useEffect(function () {
|
|
1223
|
+
if (!open) setOnFieldRow(null);
|
|
1224
|
+
}, [open]);
|
|
1371
1225
|
var handleSelect = useCallback(function (optionValue) {
|
|
1372
1226
|
if (multiple) {
|
|
1373
1227
|
var current = Array.isArray(value) ? value : value ? [value] : [];
|
|
@@ -1492,11 +1346,7 @@ function NativeSelectCore(param) {
|
|
|
1492
1346
|
numberOfLines: 1,
|
|
1493
1347
|
flex: 1,
|
|
1494
1348
|
children: option.label
|
|
1495
|
-
}), selected && /* @__PURE__ */_jsx(
|
|
1496
|
-
size: 14,
|
|
1497
|
-
weight: "bold",
|
|
1498
|
-
color: markColor
|
|
1499
|
-
})]
|
|
1349
|
+
}), selected && /* @__PURE__ */_jsx(CheckGlyph, {})]
|
|
1500
1350
|
}, isWeb ? option.value : void 0);
|
|
1501
1351
|
if (isWeb) return row;
|
|
1502
1352
|
return /* @__PURE__ */_jsx(RNPressable, {
|
|
@@ -1508,6 +1358,17 @@ function NativeSelectCore(param) {
|
|
|
1508
1358
|
accessibilityState: {
|
|
1509
1359
|
selected
|
|
1510
1360
|
},
|
|
1361
|
+
onLayout: i === Math.max(selectedIndex, 0) ? function (param2) {
|
|
1362
|
+
var {
|
|
1363
|
+
nativeEvent: {
|
|
1364
|
+
layout
|
|
1365
|
+
}
|
|
1366
|
+
} = param2;
|
|
1367
|
+
return setOnFieldRow({
|
|
1368
|
+
top: layout.y,
|
|
1369
|
+
height: layout.height
|
|
1370
|
+
});
|
|
1371
|
+
} : void 0,
|
|
1511
1372
|
children: row
|
|
1512
1373
|
}, option.value);
|
|
1513
1374
|
})]
|
|
@@ -1596,10 +1457,14 @@ function NativeSelectCore(param) {
|
|
|
1596
1457
|
// sheet at page level and opens as a menu inside another overlay (FZ-7830).
|
|
1597
1458
|
compactFace,
|
|
1598
1459
|
panelWidth,
|
|
1599
|
-
...(
|
|
1460
|
+
...(beside ? {
|
|
1600
1461
|
anchorMode: "attach",
|
|
1601
1462
|
triggerEcho: false
|
|
1602
|
-
} : null
|
|
1463
|
+
} : isWeb || displayOptions.length === 0 ? null : {
|
|
1464
|
+
popUp: {
|
|
1465
|
+
row: onFieldRow
|
|
1466
|
+
}
|
|
1467
|
+
}),
|
|
1603
1468
|
triggerA11y: {
|
|
1604
1469
|
label: ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : fieldA11y === null || fieldA11y === void 0 ? void 0 : fieldA11y.label,
|
|
1605
1470
|
value: triggerValueText,
|