@korsolutions/ui 0.0.59 → 0.0.60
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/module/components/menu/components/menu-checkbox-item.js +4 -4
- package/dist/module/components/menu/components/menu-checkbox-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-content.js +1 -1
- package/dist/module/components/menu/components/menu-radio-item.js +4 -4
- package/dist/module/components/menu/components/menu-radio-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-selection-indicator.js +29 -0
- package/dist/module/components/menu/components/menu-selection-indicator.js.map +1 -0
- package/dist/module/components/menu/variants/default.js +8 -17
- package/dist/module/components/menu/variants/default.js.map +1 -1
- package/dist/module/components/phone-input/components/country-picker.js +1 -1
- package/dist/module/components/popover/components/popover-content.js +2 -5
- package/dist/module/components/popover/components/popover-content.js.map +1 -1
- package/dist/module/components/portal/index.js +1 -0
- package/dist/module/components/portal/index.js.map +1 -1
- package/dist/module/components/portal/portal-offset.js +32 -0
- package/dist/module/components/portal/portal-offset.js.map +1 -0
- package/dist/module/components/portal/portal.js +39 -17
- package/dist/module/components/portal/portal.js.map +1 -1
- package/dist/module/components/select/components/select-content.js +3 -3
- package/dist/module/components/select/components/select-content.js.map +1 -1
- package/dist/module/components/textarea/variants/default.js +7 -0
- package/dist/module/components/textarea/variants/default.js.map +1 -1
- package/dist/module/hooks/use-relative-position.js +37 -28
- package/dist/module/hooks/use-relative-position.js.map +1 -1
- package/dist/module/themes/provider.js.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-checkbox-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-selection-indicator.d.ts +7 -0
- package/dist/typescript/src/components/menu/components/menu-selection-indicator.d.ts.map +1 -0
- package/dist/typescript/src/components/menu/types.d.ts +1 -3
- package/dist/typescript/src/components/menu/types.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/popover/components/popover-content.d.ts.map +1 -1
- package/dist/typescript/src/components/portal/index.d.ts +1 -0
- package/dist/typescript/src/components/portal/index.d.ts.map +1 -1
- package/dist/typescript/src/components/portal/portal-offset.d.ts +13 -0
- package/dist/typescript/src/components/portal/portal-offset.d.ts.map +1 -0
- package/dist/typescript/src/components/portal/portal.d.ts +3 -2
- package/dist/typescript/src/components/portal/portal.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-content.d.ts.map +1 -1
- package/dist/typescript/src/components/textarea/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-relative-position.d.ts +4 -7
- package/dist/typescript/src/hooks/use-relative-position.d.ts.map +1 -1
- package/dist/typescript/src/themes/provider.d.ts +3 -0
- package/dist/typescript/src/themes/provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/menu/components/menu-checkbox-item.tsx +3 -4
- package/src/components/menu/components/menu-content.tsx +1 -1
- package/src/components/menu/components/menu-radio-item.tsx +3 -7
- package/src/components/menu/components/menu-selection-indicator.tsx +26 -0
- package/src/components/menu/types.ts +1 -6
- package/src/components/menu/variants/default.tsx +7 -16
- package/src/components/phone-input/components/country-picker.tsx +1 -1
- package/src/components/popover/components/popover-content.tsx +1 -4
- package/src/components/portal/index.ts +1 -0
- package/src/components/portal/portal-offset.ts +28 -0
- package/src/components/portal/portal.tsx +54 -22
- package/src/components/select/components/select-content.tsx +14 -5
- package/src/components/textarea/variants/default.tsx +7 -0
- package/src/hooks/use-relative-position.ts +53 -41
- package/src/themes/provider.tsx +3 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useState } from "react";
|
|
4
|
-
import { Pressable
|
|
4
|
+
import { Pressable } from "react-native";
|
|
5
5
|
import { useMenu } from "../context.js";
|
|
6
6
|
import { useOrganizedChildren } from "../use-organized-children.js";
|
|
7
|
+
import { MenuSelectionIndicator } from "./menu-selection-indicator.js";
|
|
7
8
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
9
|
const calculateState = (isHovered, disabled) => {
|
|
9
10
|
if (disabled) return "disabled";
|
|
@@ -42,9 +43,8 @@ export function MenuCheckboxItem(props) {
|
|
|
42
43
|
disabled: props.disabled
|
|
43
44
|
},
|
|
44
45
|
style: composedStyle,
|
|
45
|
-
children: [organizedChildren, /*#__PURE__*/_jsx(
|
|
46
|
-
|
|
47
|
-
children: props.checked ? "✓" : " "
|
|
46
|
+
children: [organizedChildren, /*#__PURE__*/_jsx(MenuSelectionIndicator, {
|
|
47
|
+
isSelected: props.checked
|
|
48
48
|
})]
|
|
49
49
|
});
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useMenu","useOrganizedChildren","MenuSelectionIndicator","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","calculateState","isHovered","disabled","MenuCheckboxItem","props","menu","setIsHovered","state","composedStyle","styles","checkboxItem","default","style","handlePress","onCheckedChange","checked","closeOnPress","setIsOpen","organizedChildren","children","render","onPress","onPointerEnter","onPointerLeave","accessibilityRole","accessibilityState","isSelected"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-checkbox-item.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAwC,cAAc;AACxE,SAASC,OAAO,QAAQ,eAAY;AAEpC,SAASC,oBAAoB,QAAQ,8BAA2B;AAChE,SAASC,sBAAsB,QAAQ,+BAA4B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYpE,MAAMC,cAAc,GAAGA,CACrBC,SAAkB,EAClBC,QAAkB,KACQ;EAC1B,IAAIA,QAAQ,EAAE,OAAO,UAAU;EAC/B,IAAID,SAAS,EAAE,OAAO,SAAS;EAC/B,OAAO,SAAS;AAClB,CAAC;AAED,OAAO,SAASE,gBAAgBA,CAACC,KAA4B,EAAE;EAC7D,MAAMC,IAAI,GAAGd,OAAO,CAAC,CAAC;EACtB,MAAM,CAACU,SAAS,EAAEK,YAAY,CAAC,GAAGjB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMkB,KAAK,GAAGP,cAAc,CAACC,SAAS,EAAEG,KAAK,CAACF,QAAQ,CAAC;EAEvD,MAAMM,aAAa,GAAG,CACpBH,IAAI,CAACI,MAAM,EAAEC,YAAY,EAAEC,OAAO,EAClCN,IAAI,CAACI,MAAM,EAAEC,YAAY,GAAGH,KAAK,CAAC,EAClCH,KAAK,CAACQ,KAAK,CACZ;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIT,KAAK,CAACF,QAAQ,EAAE;IACpBE,KAAK,CAACU,eAAe,CAAC,CAACV,KAAK,CAACW,OAAO,CAAC;IACrC,IAAIX,KAAK,CAACY,YAAY,EAAE;MACtBX,IAAI,CAACY,SAAS,CAAC,KAAK,CAAC;IACvB;EACF,CAAC;EAED,MAAMC,iBAAiB,GAAG1B,oBAAoB,CAACY,KAAK,CAACe,QAAQ,CAAC;EAE9D,IAAIf,KAAK,CAACgB,MAAM,EAAE;IAChB,oBACEvB,IAAA,CAAAF,SAAA;MAAAwB,QAAA,EACGf,KAAK,CAACgB,MAAM,CAAC;QACZ,GAAGhB,KAAK;QACRe,QAAQ,EAAED;MACZ,CAAC;IAAC,CACF,CAAC;EAEP;EAEA,oBACEnB,KAAA,CAACT,SAAS;IACR+B,OAAO,EAAER,WAAY;IACrBS,cAAc,EAAEA,CAAA,KAAMhB,YAAY,CAAC,IAAI,CAAE;IACzCiB,cAAc,EAAEA,CAAA,KAAMjB,YAAY,CAAC,KAAK,CAAE;IAC1CJ,QAAQ,EAAEE,KAAK,CAACF,QAAS;IACzBsB,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEV,OAAO,EAAEX,KAAK,CAACW,OAAO;MAAEb,QAAQ,EAAEE,KAAK,CAACF;IAAS,CAAE;IACzEU,KAAK,EAAEJ,aAAc;IAAAW,QAAA,GAEpBD,iBAAiB,eAClBrB,IAAA,CAACJ,sBAAsB;MAACiC,UAAU,EAAEtB,KAAK,CAACW;IAAQ,CAAE,CAAC;EAAA,CAC5C,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ export function MenuContent(props) {
|
|
|
13
13
|
contentLayout: menu.contentLayout,
|
|
14
14
|
alignOffset: 0,
|
|
15
15
|
preferredSide: "bottom",
|
|
16
|
-
sideOffset:
|
|
16
|
+
sideOffset: 2
|
|
17
17
|
});
|
|
18
18
|
const composedStyle = [positionStyle, menu.styles?.content, props.style];
|
|
19
19
|
const Component = props.render ?? View;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useState } from "react";
|
|
4
|
-
import { Pressable
|
|
4
|
+
import { Pressable } from "react-native";
|
|
5
5
|
import { useMenu, useMenuRadioGroup } from "../context.js";
|
|
6
6
|
import { useOrganizedChildren } from "../use-organized-children.js";
|
|
7
|
+
import { MenuSelectionIndicator } from "./menu-selection-indicator.js";
|
|
7
8
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
9
|
const calculateState = (isHovered, isSelected, disabled) => {
|
|
9
10
|
if (disabled) return "disabled";
|
|
@@ -18,7 +19,6 @@ export function MenuRadioItem(props) {
|
|
|
18
19
|
const isSelected = radioGroup.value === props.value;
|
|
19
20
|
const state = calculateState(isHovered, isSelected, props.disabled);
|
|
20
21
|
const composedStyle = [menu.styles?.radioItem?.default, menu.styles?.radioItem?.[state], props.style];
|
|
21
|
-
const indicatorStyle = [menu.styles?.radioIndicator?.default, isSelected ? menu.styles?.radioIndicator?.selected : undefined];
|
|
22
22
|
const handlePress = () => {
|
|
23
23
|
if (props.disabled) return;
|
|
24
24
|
radioGroup.onValueChange(props.value);
|
|
@@ -46,8 +46,8 @@ export function MenuRadioItem(props) {
|
|
|
46
46
|
disabled: props.disabled
|
|
47
47
|
},
|
|
48
48
|
style: composedStyle,
|
|
49
|
-
children: [organizedChildren, /*#__PURE__*/_jsx(
|
|
50
|
-
|
|
49
|
+
children: [organizedChildren, /*#__PURE__*/_jsx(MenuSelectionIndicator, {
|
|
50
|
+
isSelected: isSelected
|
|
51
51
|
})]
|
|
52
52
|
});
|
|
53
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useMenu","useMenuRadioGroup","useOrganizedChildren","MenuSelectionIndicator","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","calculateState","isHovered","isSelected","disabled","MenuRadioItem","props","menu","radioGroup","setIsHovered","value","state","composedStyle","styles","radioItem","default","style","handlePress","onValueChange","closeOnPress","setIsOpen","organizedChildren","children","render","onPress","onPointerEnter","onPointerLeave","accessibilityRole","accessibilityState","checked"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-radio-item.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAwC,cAAc;AACxE,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,eAAY;AAEvD,SAASC,oBAAoB,QAAQ,8BAA2B;AAChE,SAASC,sBAAsB,QAAQ,+BAA4B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWpE,MAAMC,cAAc,GAAGA,CACrBC,SAAkB,EAClBC,UAAmB,EACnBC,QAAkB,KACK;EACvB,IAAIA,QAAQ,EAAE,OAAO,UAAU;EAC/B,IAAID,UAAU,EAAE,OAAO,UAAU;EACjC,IAAID,SAAS,EAAE,OAAO,SAAS;EAC/B,OAAO,SAAS;AAClB,CAAC;AAED,OAAO,SAASG,aAAaA,CAACC,KAAyB,EAAE;EACvD,MAAMC,IAAI,GAAGhB,OAAO,CAAC,CAAC;EACtB,MAAMiB,UAAU,GAAGhB,iBAAiB,CAAC,CAAC;EACtC,MAAM,CAACU,SAAS,EAAEO,YAAY,CAAC,GAAGpB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMc,UAAU,GAAGK,UAAU,CAACE,KAAK,KAAKJ,KAAK,CAACI,KAAK;EACnD,MAAMC,KAAK,GAAGV,cAAc,CAACC,SAAS,EAAEC,UAAU,EAAEG,KAAK,CAACF,QAAQ,CAAC;EAEnE,MAAMQ,aAAa,GAAG,CACpBL,IAAI,CAACM,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAC/BR,IAAI,CAACM,MAAM,EAAEC,SAAS,GAAGH,KAAK,CAAC,EAC/BL,KAAK,CAACU,KAAK,CACZ;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIX,KAAK,CAACF,QAAQ,EAAE;IACpBI,UAAU,CAACU,aAAa,CAACZ,KAAK,CAACI,KAAK,CAAC;IACrC,IAAIJ,KAAK,CAACa,YAAY,EAAE;MACtBZ,IAAI,CAACa,SAAS,CAAC,KAAK,CAAC;IACvB;EACF,CAAC;EAED,MAAMC,iBAAiB,GAAG5B,oBAAoB,CAACa,KAAK,CAACgB,QAAQ,CAAC;EAE9D,IAAIhB,KAAK,CAACiB,MAAM,EAAE;IAChB,oBACEzB,IAAA,CAAAF,SAAA;MAAA0B,QAAA,EACGhB,KAAK,CAACiB,MAAM,CAAC;QACZ,GAAGjB,KAAK;QACRgB,QAAQ,EAAED;MACZ,CAAC;IAAC,CACF,CAAC;EAEP;EAEA,oBACErB,KAAA,CAACV,SAAS;IACRkC,OAAO,EAAEP,WAAY;IACrBQ,cAAc,EAAEA,CAAA,KAAMhB,YAAY,CAAC,IAAI,CAAE;IACzCiB,cAAc,EAAEA,CAAA,KAAMjB,YAAY,CAAC,KAAK,CAAE;IAC1CL,QAAQ,EAAEE,KAAK,CAACF,QAAS;IACzBuB,iBAAiB,EAAC,OAAO;IACzBC,kBAAkB,EAAE;MAAEC,OAAO,EAAE1B,UAAU;MAAEC,QAAQ,EAAEE,KAAK,CAACF;IAAS,CAAE;IACtEY,KAAK,EAAEJ,aAAc;IAAAU,QAAA,GAEpBD,iBAAiB,eAClBvB,IAAA,CAACJ,sBAAsB;MAACS,UAAU,EAAEA;IAAW,CAAE,CAAC;EAAA,CACzC,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { Text, View } from "react-native";
|
|
5
|
+
import { useComponentsConfig } from "../../../themes/index.js";
|
|
6
|
+
import { useMenu } from "../context.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export function MenuSelectionIndicator({
|
|
9
|
+
isSelected
|
|
10
|
+
}) {
|
|
11
|
+
const config = useComponentsConfig();
|
|
12
|
+
const menu = useMenu();
|
|
13
|
+
const SelectionIcon = config?.menu?.selectionIcon;
|
|
14
|
+
if (!isSelected) {
|
|
15
|
+
return /*#__PURE__*/_jsx(View, {
|
|
16
|
+
style: menu.styles?.selectionIndicator
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
if (SelectionIcon) {
|
|
20
|
+
return /*#__PURE__*/_jsx(SelectionIcon, {
|
|
21
|
+
...menu.styles?.selectionIndicator
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
25
|
+
style: menu.styles?.selectionIndicator,
|
|
26
|
+
children: "\u2713"
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=menu-selection-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","View","useComponentsConfig","useMenu","jsx","_jsx","MenuSelectionIndicator","isSelected","config","menu","SelectionIcon","selectionIcon","style","styles","selectionIndicator","children"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-selection-indicator.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,0BAAiB;AACrD,SAASC,OAAO,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMrC,OAAO,SAASC,sBAAsBA,CAAC;EACrCC;AAC2B,CAAC,EAAE;EAC9B,MAAMC,MAAM,GAAGN,mBAAmB,CAAC,CAAC;EACpC,MAAMO,IAAI,GAAGN,OAAO,CAAC,CAAC;EACtB,MAAMO,aAAa,GAAGF,MAAM,EAAEC,IAAI,EAAEE,aAAa;EAEjD,IAAI,CAACJ,UAAU,EAAE;IACf,oBAAOF,IAAA,CAACJ,IAAI;MAACW,KAAK,EAAEH,IAAI,CAACI,MAAM,EAAEC;IAAmB,CAAE,CAAC;EACzD;EAEA,IAAIJ,aAAa,EAAE;IACjB,oBAAOL,IAAA,CAACK,aAAa;MAAA,GAAKD,IAAI,CAACI,MAAM,EAAEC;IAAkB,CAAG,CAAC;EAC/D;EAEA,oBAAOT,IAAA,CAACL,IAAI;IAACY,KAAK,EAAEH,IAAI,CAACI,MAAM,EAAEC,kBAAmB;IAAAC,QAAA,EAAC;EAAC,CAAM,CAAC;AAC/D","ignoreList":[]}
|
|
@@ -74,13 +74,16 @@ export const useMenuVariantDefault = () => {
|
|
|
74
74
|
opacity: 0.5
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
|
-
|
|
78
|
-
fontSize: fontSize * 0.75,
|
|
79
|
-
fontWeight: "bold",
|
|
77
|
+
selectionIndicator: {
|
|
80
78
|
color: colors.foreground,
|
|
79
|
+
fontSize: fontSize,
|
|
81
80
|
width: fontSize,
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
size: fontSize,
|
|
82
|
+
strokeWidth: 2,
|
|
83
|
+
marginLeft: "auto",
|
|
84
|
+
style: {
|
|
85
|
+
marginLeft: "auto"
|
|
86
|
+
}
|
|
84
87
|
},
|
|
85
88
|
radioItem: {
|
|
86
89
|
default: {
|
|
@@ -97,18 +100,6 @@ export const useMenuVariantDefault = () => {
|
|
|
97
100
|
opacity: 0.5
|
|
98
101
|
}
|
|
99
102
|
},
|
|
100
|
-
radioIndicator: {
|
|
101
|
-
default: {
|
|
102
|
-
width: 8,
|
|
103
|
-
height: 8,
|
|
104
|
-
borderRadius: 4,
|
|
105
|
-
backgroundColor: "transparent",
|
|
106
|
-
marginLeft: "auto"
|
|
107
|
-
},
|
|
108
|
-
selected: {
|
|
109
|
-
backgroundColor: colors.foreground
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
103
|
shortcut: {
|
|
113
104
|
fontSize: fontSize * 0.75,
|
|
114
105
|
fontFamily: fontFamily,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useThemedStyles","useMenuVariantDefault","colors","radius","fontFamily","fontSize","overlay","content","overflow","backgroundColor","surface","borderRadius","borderWidth","borderColor","border","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","item","default","flexDirection","alignItems","paddingVertical","paddingHorizontal","gap","hovered","muted","itemText","color","foreground","itemIcon","size","label","fontWeight","mutedForeground","separator","marginVertical","marginHorizontal","checkboxItem","disabled","opacity","
|
|
1
|
+
{"version":3,"names":["useThemedStyles","useMenuVariantDefault","colors","radius","fontFamily","fontSize","overlay","content","overflow","backgroundColor","surface","borderRadius","borderWidth","borderColor","border","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","item","default","flexDirection","alignItems","paddingVertical","paddingHorizontal","gap","hovered","muted","itemText","color","foreground","itemIcon","size","label","fontWeight","mutedForeground","separator","marginVertical","marginHorizontal","checkboxItem","disabled","opacity","selectionIndicator","strokeWidth","marginLeft","style","radioItem","shortcut"],"sourceRoot":"../../../../../src","sources":["components/menu/variants/default.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -45,7 +45,7 @@ export function CountryPicker() {
|
|
|
45
45
|
contentLayout,
|
|
46
46
|
alignOffset: 0,
|
|
47
47
|
preferredSide: "bottom",
|
|
48
|
-
sideOffset:
|
|
48
|
+
sideOffset: 2
|
|
49
49
|
});
|
|
50
50
|
const countryButtonStyles = StyleSheet.flatten([styles.countryButton?.default, styles.countryButton?.[state]]);
|
|
51
51
|
const countryButtonTextStyles = StyleSheet.flatten([styles.countryButtonText?.default, styles.countryButtonText?.[state]]);
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useRelativePosition } from "../../../hooks/use-relative-position.js";
|
|
4
|
-
import { useSafeAreaInsets } from "../../../safe-area/index.js";
|
|
5
3
|
import React from "react";
|
|
6
4
|
import { View } from "react-native";
|
|
5
|
+
import { useRelativePosition } from "../../../hooks/use-relative-position.js";
|
|
7
6
|
import { usePopover } from "../context.js";
|
|
8
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
8
|
export function PopoverContent(props) {
|
|
10
9
|
const popover = usePopover();
|
|
11
|
-
const insets = useSafeAreaInsets();
|
|
12
10
|
const positionStyle = useRelativePosition({
|
|
13
11
|
align: "start",
|
|
14
12
|
triggerPosition: popover.triggerPosition,
|
|
15
13
|
contentLayout: popover.contentLayout,
|
|
16
14
|
alignOffset: 0,
|
|
17
15
|
preferredSide: "bottom",
|
|
18
|
-
sideOffset: 0
|
|
19
|
-
insets
|
|
16
|
+
sideOffset: 0
|
|
20
17
|
});
|
|
21
18
|
const composedStyle = [positionStyle, popover.styles?.content, props.style];
|
|
22
19
|
const Component = props.render ?? View;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["React","View","useRelativePosition","usePopover","jsx","_jsx","PopoverContent","props","popover","positionStyle","align","triggerPosition","contentLayout","alignOffset","preferredSide","sideOffset","composedStyle","styles","content","style","Component","render","onLayout","e","setContentLayout","nativeEvent","layout","pointerEvents"],"sourceRoot":"../../../../../src","sources":["components/popover/components/popover-content.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAyBC,IAAI,QAAwB,cAAc;AACnE,SAASC,mBAAmB,QAAQ,yCAAsC;AAC1E,SAASC,UAAU,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUxC,OAAO,SAASC,cAAcA,CAACC,KAA0B,EAAE;EACzD,MAAMC,OAAO,GAAGL,UAAU,CAAC,CAAC;EAE5B,MAAMM,aAAa,GAAGP,mBAAmB,CAAC;IACxCQ,KAAK,EAAE,OAAO;IACdC,eAAe,EAAEH,OAAO,CAACG,eAAe;IACxCC,aAAa,EAAEJ,OAAO,CAACI,aAAa;IACpCC,WAAW,EAAE,CAAC;IACdC,aAAa,EAAE,QAAQ;IACvBC,UAAU,EAAE;EACd,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAG,CAACP,aAAa,EAAED,OAAO,CAACS,MAAM,EAAEC,OAAO,EAAEX,KAAK,CAACY,KAAK,CAAC;EAE3E,MAAMC,SAAS,GAAGb,KAAK,CAACc,MAAM,IAAIpB,IAAI;EACtC,oBACEI,IAAA,CAACe,SAAS;IAAA,GACJb,KAAK;IACTe,QAAQ,EAAGC,CAAC,IAAK;MACff,OAAO,CAACgB,gBAAgB,CAACD,CAAC,CAACE,WAAW,CAACC,MAAM,CAAC;IAChD,CAAE;IACFC,aAAa,EAAC,UAAU;IACxBR,KAAK,EAAEH;EAAc,CACtB,CAAC;AAEN","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/portal/index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,uBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/portal/index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,oBAAiB;AAC/B,cAAc,uBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
// null means the offset is not measure yet but will be
|
|
5
|
+
// undefined means the offset is not available and will never be (e.g. on web or ios when FullWindowOverlay is used)
|
|
6
|
+
export const PortalOffsetContext = /*#__PURE__*/createContext(undefined);
|
|
7
|
+
export function usePortalOffset() {
|
|
8
|
+
const value = useContext(PortalOffsetContext);
|
|
9
|
+
if (value === undefined) {
|
|
10
|
+
return {
|
|
11
|
+
value: {
|
|
12
|
+
x: 0,
|
|
13
|
+
y: 0
|
|
14
|
+
},
|
|
15
|
+
isLoaded: true
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (value === null) {
|
|
19
|
+
return {
|
|
20
|
+
value: {
|
|
21
|
+
x: 0,
|
|
22
|
+
y: 0
|
|
23
|
+
},
|
|
24
|
+
isLoaded: false
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
value,
|
|
29
|
+
isLoaded: true
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=portal-offset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","PortalOffsetContext","undefined","usePortalOffset","value","x","y","isLoaded"],"sourceRoot":"../../../../src","sources":["components/portal/portal-offset.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AASjD;AACA;AACA,OAAO,MAAMC,mBAAmB,gBAAGF,aAAa,CAAoBG,SAAS,CAAC;AAO9E,OAAO,SAASC,eAAeA,CAAA,EAA0B;EACvD,MAAMC,KAAK,GAAGJ,UAAU,CAACC,mBAAmB,CAAC;EAC7C,IAAIG,KAAK,KAAKF,SAAS,EAAE;IACvB,OAAO;MAAEE,KAAK,EAAE;QAAEC,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;MAAEC,QAAQ,EAAE;IAAK,CAAC;EAClD;EACA,IAAIH,KAAK,KAAK,IAAI,EAAE;IAClB,OAAO;MAAEA,KAAK,EAAE;QAAEC,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;MAAEC,QAAQ,EAAE;IAAM,CAAC;EACnD;EACA,OAAO;IAAEH,KAAK;IAAEG,QAAQ,EAAE;EAAK,CAAC;AAClC","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useEffect, useSyncExternalStore } from "react";
|
|
3
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
4
4
|
import { Platform, View } from "react-native";
|
|
5
|
+
import { PortalOffsetContext } from "./portal-offset.js";
|
|
5
6
|
import { DEFAULT_PORTAL_HOST } from "./portal.constants.js";
|
|
6
7
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
8
|
const store = {
|
|
@@ -36,29 +37,50 @@ function removePortal(hostName, name) {
|
|
|
36
37
|
store.map = next;
|
|
37
38
|
emit();
|
|
38
39
|
}
|
|
40
|
+
function DefaultContainer(props) {
|
|
41
|
+
const containerRef = useRef(null);
|
|
42
|
+
const [offset, setOffset] = useState(null);
|
|
43
|
+
const onLayout = useCallback(() => {
|
|
44
|
+
containerRef.current?.measureInWindow((pageX, pageY) => {
|
|
45
|
+
setOffset(prev => {
|
|
46
|
+
if (prev?.x === pageX && prev?.y === pageY) return prev;
|
|
47
|
+
return {
|
|
48
|
+
x: pageX,
|
|
49
|
+
y: pageY
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}, []);
|
|
54
|
+
return /*#__PURE__*/_jsx(View, {
|
|
55
|
+
ref: containerRef,
|
|
56
|
+
onLayout: onLayout,
|
|
57
|
+
style: {
|
|
58
|
+
position: "absolute",
|
|
59
|
+
top: 0,
|
|
60
|
+
left: 0,
|
|
61
|
+
right: 0,
|
|
62
|
+
bottom: 0,
|
|
63
|
+
elevation: 999,
|
|
64
|
+
zIndex: 999,
|
|
65
|
+
pointerEvents: "box-none"
|
|
66
|
+
},
|
|
67
|
+
children: /*#__PURE__*/_jsx(PortalOffsetContext.Provider, {
|
|
68
|
+
value: offset,
|
|
69
|
+
children: props.children
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
}
|
|
39
73
|
export function PortalHost({
|
|
40
74
|
name = DEFAULT_PORTAL_HOST,
|
|
41
75
|
container
|
|
42
76
|
}) {
|
|
43
77
|
const map = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
44
78
|
const portalMap = map.get(name) ?? new Map();
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
default: props => /*#__PURE__*/_jsx(View, {
|
|
48
|
-
...props,
|
|
49
|
-
style: {
|
|
50
|
-
position: "absolute",
|
|
51
|
-
top: 0,
|
|
52
|
-
left: 0,
|
|
53
|
-
right: 0,
|
|
54
|
-
bottom: 0,
|
|
55
|
-
elevation: 999,
|
|
56
|
-
zIndex: 999,
|
|
57
|
-
pointerEvents: "box-none"
|
|
58
|
-
}
|
|
59
|
-
}),
|
|
79
|
+
const Container = useMemo(() => Platform.select({
|
|
80
|
+
default: DefaultContainer,
|
|
60
81
|
...container
|
|
61
|
-
});
|
|
82
|
+
}), [container]);
|
|
83
|
+
if (portalMap.size === 0) return null;
|
|
62
84
|
return /*#__PURE__*/_jsx(Container, {
|
|
63
85
|
children: Array.from(portalMap.values())
|
|
64
86
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useSyncExternalStore","Platform","View","DEFAULT_PORTAL_HOST","jsx","_jsx","Fragment","_Fragment","store","map","Map","set","listeners","Set","emit","cb","getSnapshot","subscribe","add","delete","updatePortal","hostName","name","children","next","portal","get","removePortal","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","useSyncExternalStore","Platform","View","PortalOffsetContext","DEFAULT_PORTAL_HOST","jsx","_jsx","Fragment","_Fragment","store","map","Map","set","listeners","Set","emit","cb","getSnapshot","subscribe","add","delete","updatePortal","hostName","name","children","next","portal","get","removePortal","DefaultContainer","props","containerRef","offset","setOffset","onLayout","current","measureInWindow","pageX","pageY","prev","x","y","ref","style","position","top","left","right","bottom","elevation","zIndex","pointerEvents","Provider","value","PortalHost","container","portalMap","Container","select","default","size","Array","from","values","Portal"],"sourceRoot":"../../../../src","sources":["components/portal/portal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useRelativePosition } from "../../../hooks/use-relative-position.js";
|
|
4
|
-
import { calculateComposedStyles } from "../../../utils/calculate-styles.js";
|
|
5
3
|
import React from "react";
|
|
6
4
|
import { View } from "react-native";
|
|
5
|
+
import { useRelativePosition } from "../../../hooks/use-relative-position.js";
|
|
6
|
+
import { calculateComposedStyles } from "../../../utils/calculate-styles.js";
|
|
7
7
|
import { useSelect } from "../context.js";
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
9
|
export function SelectContent(props) {
|
|
@@ -15,7 +15,7 @@ export function SelectContent(props) {
|
|
|
15
15
|
contentLayout: select.contentLayout,
|
|
16
16
|
alignOffset: 0,
|
|
17
17
|
preferredSide: "bottom",
|
|
18
|
-
sideOffset:
|
|
18
|
+
sideOffset: 2
|
|
19
19
|
});
|
|
20
20
|
const Component = props.render ?? View;
|
|
21
21
|
return /*#__PURE__*/_jsx(Component, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["React","View","useRelativePosition","calculateComposedStyles","useSelect","jsx","_jsx","SelectContent","props","select","composedStyles","styles","state","style","positionStyle","align","triggerPosition","contentLayout","alignOffset","preferredSide","sideOffset","Component","render","width","onLayout","e","setContentLayout","nativeEvent","layout","pointerEvents","children"],"sourceRoot":"../../../../../src","sources":["components/select/components/select-content.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAyBC,IAAI,QAAwB,cAAc;AACnE,SAASC,mBAAmB,QAAQ,yCAAsC;AAC1E,SAASC,uBAAuB,QAAQ,oCAAiC;AACzE,SAASC,SAAS,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUvC,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAE;EACvD,MAAMC,MAAM,GAAGL,SAAS,CAAC,CAAC;EAC1B,MAAMM,cAAc,GAAGP,uBAAuB,CAC5CM,MAAM,CAACE,MAAM,EACbF,MAAM,CAACG,KAAK,EACZ,SAAS,EACTJ,KAAK,CAACK,KACR,CAAC;EAED,MAAMC,aAAa,GAAGZ,mBAAmB,CAAC;IACxCa,KAAK,EAAE,OAAO;IACdC,eAAe,EAAEP,MAAM,CAACO,eAAe;IACvCC,aAAa,EAAER,MAAM,CAACQ,aAAa;IACnCC,WAAW,EAAE,CAAC;IACdC,aAAa,EAAE,QAAQ;IACvBC,UAAU,EAAE;EACd,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGb,KAAK,CAACc,MAAM,IAAIrB,IAAI;EACtC,oBACEK,IAAA,CAACe,SAAS;IACRR,KAAK,EAAE,CACLC,aAAa,EACbJ,cAAc,EACd;MAAEa,KAAK,EAAEd,MAAM,CAACO,eAAe,CAACO;IAAM,CAAC,CACvC;IACFC,QAAQ,EAAGC,CAAC,IAAK;MACfhB,MAAM,CAACiB,gBAAgB,CAACD,CAAC,CAACE,WAAW,CAACC,MAAM,CAAC;IAC/C,CAAE;IACFC,aAAa,EAAC,UAAU;IAAAC,QAAA,EAEvBtB,KAAK,CAACsB;EAAQ,CACN,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { Platform } from "react-native";
|
|
3
4
|
import { useThemedStyles } from "../../../utils/use-themed-styles.js";
|
|
4
5
|
export function useTextareaVariantDefault() {
|
|
5
6
|
return useThemedStyles(({
|
|
@@ -19,6 +20,12 @@ export function useTextareaVariantDefault() {
|
|
|
19
20
|
paddingVertical: 12,
|
|
20
21
|
paddingHorizontal: 16,
|
|
21
22
|
outlineWidth: 0,
|
|
23
|
+
...Platform.select({
|
|
24
|
+
default: {},
|
|
25
|
+
web: {
|
|
26
|
+
outline: "none"
|
|
27
|
+
}
|
|
28
|
+
}),
|
|
22
29
|
fontFamily,
|
|
23
30
|
fontSize,
|
|
24
31
|
minHeight: 120,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useThemedStyles","useTextareaVariantDefault","colors","radius","fontFamily","fontSize","default","placeholderTextColor","mutedForeground","selectionColor","primary","style","borderWidth","borderColor","border","borderRadius","backgroundColor","surface","paddingVertical","paddingHorizontal","outlineWidth","minHeight","textAlignVertical","color","foreground","focused","disabled","muted"],"sourceRoot":"../../../../../src","sources":["components/textarea/variants/default.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["Platform","useThemedStyles","useTextareaVariantDefault","colors","radius","fontFamily","fontSize","default","placeholderTextColor","mutedForeground","selectionColor","primary","style","borderWidth","borderColor","border","borderRadius","backgroundColor","surface","paddingVertical","paddingHorizontal","outlineWidth","select","web","outline","minHeight","textAlignVertical","color","foreground","focused","disabled","muted"],"sourceRoot":"../../../../../src","sources":["components/textarea/variants/default.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,SAASC,eAAe,QAAQ,qCAAkC;AAElE,OAAO,SAASC,yBAAyBA,CAAA,EAAmB;EAC1D,OAAOD,eAAe,CACpB,CAAC;IAAEE,MAAM;IAAEC,MAAM;IAAEC,UAAU;IAAEC;EAAS,CAAC,MAAsB;IAC7DC,OAAO,EAAE;MACPC,oBAAoB,EAAEL,MAAM,CAACM,eAAe;MAC5CC,cAAc,EAAEP,MAAM,CAACQ,OAAO;MAC9BC,KAAK,EAAE;QACLC,WAAW,EAAE,CAAC;QACdC,WAAW,EAAEX,MAAM,CAACY,MAAM;QAC1BC,YAAY,EAAEZ,MAAM;QACpBa,eAAe,EAAEd,MAAM,CAACe,OAAO;QAC/BC,eAAe,EAAE,EAAE;QACnBC,iBAAiB,EAAE,EAAE;QACrBC,YAAY,EAAE,CAAC;QACf,GAAGrB,QAAQ,CAACsB,MAAM,CAAC;UACjBf,OAAO,EAAE,CAAC,CAAC;UACXgB,GAAG,EAAE;YACHC,OAAO,EAAE;UACX;QACF,CAAC,CAAC;QACFnB,UAAU;QACVC,QAAQ;QACRmB,SAAS,EAAE,GAAG;QACdC,iBAAiB,EAAE,KAAK;QACxBC,KAAK,EAAExB,MAAM,CAACyB;MAChB;IACF,CAAC;IACDC,OAAO,EAAE;MACPjB,KAAK,EAAE;QACLE,WAAW,EAAEX,MAAM,CAACQ;MACtB;IACF,CAAC;IACDmB,QAAQ,EAAE;MACRlB,KAAK,EAAE;QACLe,KAAK,EAAExB,MAAM,CAACM,eAAe;QAC7BQ,eAAe,EAAEd,MAAM,CAAC4B;MAC1B;IACF;EACF,CAAC,CACH,CAAC;AACH","ignoreList":[]}
|
|
@@ -2,18 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { useWindowDimensions } from "react-native";
|
|
5
|
+
import { usePortalOffset } from "../components/portal/index.js";
|
|
6
|
+
import { useSafeAreaInsets } from "../safe-area/index.js";
|
|
5
7
|
export function useRelativePosition({
|
|
6
8
|
align,
|
|
7
9
|
triggerPosition,
|
|
8
10
|
contentLayout,
|
|
9
11
|
alignOffset,
|
|
10
|
-
insets,
|
|
11
12
|
sideOffset,
|
|
12
13
|
preferredSide
|
|
13
14
|
}) {
|
|
14
15
|
const dimensions = useWindowDimensions();
|
|
16
|
+
const insets = useSafeAreaInsets();
|
|
17
|
+
const portalOffset = usePortalOffset();
|
|
15
18
|
return useMemo(() => {
|
|
16
|
-
|
|
19
|
+
const hasLayout = triggerPosition.width > 0 && triggerPosition.height > 0 && contentLayout.width > 0 && contentLayout.height > 0 && portalOffset.isLoaded;
|
|
20
|
+
if (!hasLayout) {
|
|
17
21
|
return {
|
|
18
22
|
position: "absolute",
|
|
19
23
|
opacity: 0,
|
|
@@ -21,18 +25,29 @@ export function useRelativePosition({
|
|
|
21
25
|
zIndex: -9999999
|
|
22
26
|
};
|
|
23
27
|
}
|
|
28
|
+
|
|
29
|
+
// Adjust trigger position to account for the portal container's
|
|
30
|
+
// offset from the window origin. measureInWindow returns window-relative
|
|
31
|
+
// coordinates, but the portal content is positioned relative to its
|
|
32
|
+
// container which may not be at the window origin (e.g. on Android
|
|
33
|
+
// where the status bar offsets the view hierarchy).
|
|
34
|
+
const adjustedTriggerPosition = {
|
|
35
|
+
...triggerPosition,
|
|
36
|
+
pageX: triggerPosition.pageX - portalOffset.value.x,
|
|
37
|
+
pageY: triggerPosition.pageY - portalOffset.value.y
|
|
38
|
+
};
|
|
24
39
|
const style = getContentStyle({
|
|
25
40
|
align,
|
|
26
41
|
contentLayout,
|
|
27
42
|
preferredSide,
|
|
28
|
-
triggerPosition,
|
|
43
|
+
triggerPosition: adjustedTriggerPosition,
|
|
29
44
|
alignOffset,
|
|
30
45
|
insets,
|
|
31
46
|
sideOffset,
|
|
32
47
|
dimensions
|
|
33
48
|
});
|
|
34
49
|
return style;
|
|
35
|
-
}, [align, preferredSide, alignOffset, insets, triggerPosition, contentLayout, dimensions.width, dimensions.height, sideOffset]);
|
|
50
|
+
}, [align, preferredSide, alignOffset, insets, triggerPosition, contentLayout, dimensions.width, dimensions.height, sideOffset, portalOffset]);
|
|
36
51
|
}
|
|
37
52
|
export const DEFAULT_LAYOUT = {
|
|
38
53
|
x: 0,
|
|
@@ -48,29 +63,28 @@ export const DEFAULT_POSITION = {
|
|
|
48
63
|
};
|
|
49
64
|
function getSide({
|
|
50
65
|
preferredSide,
|
|
51
|
-
|
|
52
|
-
insetBottom,
|
|
66
|
+
insets,
|
|
53
67
|
positionTop,
|
|
54
68
|
positionBottom,
|
|
55
69
|
contentLayout,
|
|
56
70
|
dimensions
|
|
57
71
|
}) {
|
|
58
72
|
if (preferredSide === "bottom") {
|
|
59
|
-
const spaceBelow = dimensions.height -
|
|
73
|
+
const spaceBelow = dimensions.height - insets.bottom - positionBottom;
|
|
60
74
|
if (spaceBelow >= contentLayout.height) {
|
|
61
75
|
return "bottom";
|
|
62
76
|
}
|
|
63
|
-
const spaceAbove = positionTop -
|
|
77
|
+
const spaceAbove = positionTop - insets.top;
|
|
64
78
|
if (spaceAbove > spaceBelow) {
|
|
65
79
|
return "top";
|
|
66
80
|
}
|
|
67
81
|
return "bottom";
|
|
68
82
|
}
|
|
69
|
-
const spaceAbove = positionTop -
|
|
83
|
+
const spaceAbove = positionTop - insets.top;
|
|
70
84
|
if (spaceAbove >= contentLayout.height) {
|
|
71
85
|
return "top";
|
|
72
86
|
}
|
|
73
|
-
const spaceBelow = dimensions.height -
|
|
87
|
+
const spaceBelow = dimensions.height - insets.bottom - positionBottom;
|
|
74
88
|
if (spaceBelow > spaceAbove) {
|
|
75
89
|
return "bottom";
|
|
76
90
|
}
|
|
@@ -84,14 +98,11 @@ function getSidePosition({
|
|
|
84
98
|
insets,
|
|
85
99
|
dimensions
|
|
86
100
|
}) {
|
|
87
|
-
const insetTop = insets?.top ?? 0;
|
|
88
|
-
const insetBottom = insets?.bottom ?? 0;
|
|
89
101
|
const positionTop = triggerPosition?.pageY - sideOffset - contentLayout.height;
|
|
90
102
|
const positionBottom = triggerPosition.pageY + triggerPosition.height + sideOffset;
|
|
91
103
|
const side = getSide({
|
|
92
104
|
preferredSide,
|
|
93
|
-
|
|
94
|
-
insetBottom,
|
|
105
|
+
insets,
|
|
95
106
|
positionTop,
|
|
96
107
|
positionBottom,
|
|
97
108
|
contentLayout,
|
|
@@ -99,11 +110,11 @@ function getSidePosition({
|
|
|
99
110
|
});
|
|
100
111
|
if (side === "top") {
|
|
101
112
|
return {
|
|
102
|
-
top: Math.min(Math.max(
|
|
113
|
+
top: Math.min(Math.max(insets.top, positionTop), dimensions.height - insets.bottom - contentLayout.height)
|
|
103
114
|
};
|
|
104
115
|
}
|
|
105
116
|
return {
|
|
106
|
-
top: Math.min(dimensions.height -
|
|
117
|
+
top: Math.min(dimensions.height - insets.bottom - contentLayout.height, positionBottom)
|
|
107
118
|
};
|
|
108
119
|
}
|
|
109
120
|
function getAlignPosition({
|
|
@@ -114,21 +125,19 @@ function getAlignPosition({
|
|
|
114
125
|
insets,
|
|
115
126
|
dimensions
|
|
116
127
|
}) {
|
|
117
|
-
const
|
|
118
|
-
const insetRight = insets?.right ?? 0;
|
|
119
|
-
const maxContentWidth = dimensions.width - insetLeft - insetRight;
|
|
128
|
+
const maxContentWidth = dimensions.width - insets.left - insets.right;
|
|
120
129
|
const contentWidth = Math.min(contentLayout.width, maxContentWidth);
|
|
121
|
-
let left = getLeftPosition(align, triggerPosition.pageX, triggerPosition.width, contentWidth, alignOffset,
|
|
122
|
-
const doesCollide = left <
|
|
130
|
+
let left = getLeftPosition(align, triggerPosition.pageX, triggerPosition.width, contentWidth, alignOffset, insets, dimensions);
|
|
131
|
+
const doesCollide = left < insets.left || left + contentWidth > dimensions.width - insets.right;
|
|
123
132
|
if (doesCollide) {
|
|
124
|
-
const spaceLeft = left -
|
|
125
|
-
const spaceRight = dimensions.width -
|
|
133
|
+
const spaceLeft = left - insets.left;
|
|
134
|
+
const spaceRight = dimensions.width - insets.right - (left + contentWidth);
|
|
126
135
|
if (spaceLeft > spaceRight && spaceLeft >= contentWidth) {
|
|
127
|
-
left =
|
|
136
|
+
left = insets.left;
|
|
128
137
|
} else if (spaceRight >= contentWidth) {
|
|
129
|
-
left = dimensions.width -
|
|
138
|
+
left = dimensions.width - insets.right - contentWidth;
|
|
130
139
|
} else {
|
|
131
|
-
const centeredPosition = Math.max(
|
|
140
|
+
const centeredPosition = Math.max(insets.left, (dimensions.width - contentWidth - insets.right) / 2);
|
|
132
141
|
left = centeredPosition;
|
|
133
142
|
}
|
|
134
143
|
}
|
|
@@ -137,7 +146,7 @@ function getAlignPosition({
|
|
|
137
146
|
maxWidth: maxContentWidth
|
|
138
147
|
};
|
|
139
148
|
}
|
|
140
|
-
function getLeftPosition(align, triggerPageX, triggerWidth, contentWidth, alignOffset,
|
|
149
|
+
function getLeftPosition(align, triggerPageX, triggerWidth, contentWidth, alignOffset, insets, dimensions) {
|
|
141
150
|
let left = 0;
|
|
142
151
|
if (align === "start") {
|
|
143
152
|
left = triggerPageX;
|
|
@@ -148,7 +157,7 @@ function getLeftPosition(align, triggerPageX, triggerWidth, contentWidth, alignO
|
|
|
148
157
|
if (align === "end") {
|
|
149
158
|
left = triggerPageX + triggerWidth - contentWidth;
|
|
150
159
|
}
|
|
151
|
-
return Math.max(
|
|
160
|
+
return Math.max(insets.left, Math.min(left + alignOffset, dimensions.width - contentWidth - insets.right));
|
|
152
161
|
}
|
|
153
162
|
function getContentStyle(args) {
|
|
154
163
|
return {
|