@toptal/picasso-popper 2.0.1-alpha-1757603192867.0 → 2.0.1-alpha-1757603777486.0

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.
@@ -0,0 +1,87 @@
1
+ import type { ReactNode } from 'react';
2
+ import React from 'react';
3
+ import type { ReferenceObject, PopperOptions } from 'popper.js';
4
+ import type PopperJs from 'popper.js';
5
+ import type { BaseProps } from '@toptal/picasso-shared';
6
+ export declare type PopperPlacementType = 'bottom-end' | 'bottom-start' | 'bottom' | 'left-end' | 'left-start' | 'left' | 'right-end' | 'right-start' | 'right' | 'top-end' | 'top-start' | 'top';
7
+ export interface Props extends BaseProps {
8
+ children?: ReactNode;
9
+ /** if true, the popper is visible */
10
+ open: boolean;
11
+ /** Disable the portal behavior. The children stay within it's parent DOM hierarchy */
12
+ disablePortal?: boolean;
13
+ /** Popper placement */
14
+ placement?: PopperPlacementType;
15
+ /** Options provided to the popper.js instance */
16
+ popperOptions?: PopperOptions;
17
+ /** Always keep Popper's children in the DOM */
18
+ keepMounted?: boolean;
19
+ /**
20
+ * A node, component instance, or function that returns either.
21
+ * The `container` will have the portal children appended to it.
22
+ * By default, it uses the picasso root node
23
+ */
24
+ container?: HTMLElement | (() => HTMLElement);
25
+ /**
26
+ * HTML Element instance or a referenceObject
27
+ * https://popper.js.org/popper-documentation.html#referenceObject
28
+ */
29
+ anchorEl: null | ReferenceObject | (() => ReferenceObject);
30
+ /** Popper automatically resize to anchor element width */
31
+ autoWidth?: boolean;
32
+ /** Popper width */
33
+ width?: string;
34
+ /** Take full window width on small and medium screens */
35
+ enableCompactMode?: boolean;
36
+ }
37
+ export declare const getPopperOptions: (popperOptions: PopperOptions, isInsideModal?: boolean) => {
38
+ modifiers: {
39
+ flip: {
40
+ order?: number | undefined;
41
+ enabled: boolean;
42
+ fn?: PopperJs.ModifierFn | undefined;
43
+ behavior?: PopperJs.Behavior | PopperJs.Position[] | undefined;
44
+ padding?: number | PopperJs.Padding | undefined;
45
+ boundariesElement?: Element | PopperJs.Boundary | undefined;
46
+ flipVariations?: boolean | undefined;
47
+ flipVariationsByContent?: boolean | undefined;
48
+ };
49
+ preventOverflow: {
50
+ order?: number | undefined;
51
+ enabled: boolean;
52
+ fn?: PopperJs.ModifierFn | undefined;
53
+ priority?: PopperJs.Position[] | undefined;
54
+ padding: number | PopperJs.Padding;
55
+ boundariesElement: string | Element;
56
+ escapeWithReference?: boolean | undefined;
57
+ };
58
+ shift?: PopperJs.BaseModifier | undefined;
59
+ offset?: (PopperJs.BaseModifier & {
60
+ offset?: string | number | undefined;
61
+ }) | undefined;
62
+ keepTogether?: PopperJs.BaseModifier | undefined;
63
+ arrow?: (PopperJs.BaseModifier & {
64
+ element?: string | Element | undefined;
65
+ }) | undefined;
66
+ inner?: PopperJs.BaseModifier | undefined;
67
+ hide?: PopperJs.BaseModifier | undefined;
68
+ applyStyle?: (PopperJs.BaseModifier & {
69
+ onLoad?: Function | undefined;
70
+ gpuAcceleration?: boolean | undefined;
71
+ }) | undefined;
72
+ computeStyle?: (PopperJs.BaseModifier & {
73
+ gpuAcceleration?: boolean | undefined;
74
+ x?: "bottom" | "top" | undefined;
75
+ y?: "left" | "right" | undefined;
76
+ }) | undefined;
77
+ };
78
+ placement?: PopperJs.Placement | undefined;
79
+ positionFixed?: boolean | undefined;
80
+ eventsEnabled?: boolean | undefined;
81
+ removeOnDestroy?: boolean | undefined;
82
+ onCreate?(data: PopperJs.Data): void;
83
+ onUpdate?(data: PopperJs.Data): void;
84
+ };
85
+ export declare const Popper: React.ForwardRefExoticComponent<Props & React.RefAttributes<PopperJs>>;
86
+ export default Popper;
87
+ //# sourceMappingURL=Popper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../../src/Popper/Popper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAiC,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAOvD,oBAAY,mBAAmB,GAC3B,YAAY,GACZ,cAAc,GACd,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,MAAM,GACN,WAAW,GACX,aAAa,GACb,OAAO,GACP,SAAS,GACT,WAAW,GACX,KAAK,CAAA;AAET,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAA;IACb,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,uBAAuB;IACvB,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B,iDAAiD;IACjD,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAA;IAC7C;;;OAGG;IACH,QAAQ,EAAE,IAAI,GAAG,eAAe,GAAG,CAAC,MAAM,eAAe,CAAC,CAAA;IAC1D,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAoBD,eAAO,MAAM,gBAAgB,kBACZ,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB5B,CAAA;AAqBF,eAAO,MAAM,MAAM,wEAkEjB,CAAA;AAYF,eAAe,MAAM,CAAA"}
@@ -0,0 +1,76 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React, { forwardRef, useContext } from 'react';
13
+ import { Popper as MUIPopper } from '@material-ui/core';
14
+ import { useIsomorphicLayoutEffect } from '@toptal/picasso-shared';
15
+ import { usePicassoRoot, useBreakpoint } from '@toptal/picasso-provider';
16
+ import { useWidthOf } from '@toptal/picasso-utils';
17
+ import ModalContext from '@toptal/picasso-modal-context';
18
+ import { twMerge } from '@toptal/picasso-tailwind-merge';
19
+ const getAnchorEl = (anchorEl) => (typeof anchorEl === 'function' ? anchorEl() : anchorEl);
20
+ const getPreventOverflowOptions = (isInsideModal) => {
21
+ if (isInsideModal) {
22
+ return {
23
+ boundariesElement: 'scrollParent',
24
+ padding: 0,
25
+ };
26
+ }
27
+ return {
28
+ boundariesElement: 'viewport',
29
+ padding: 5,
30
+ };
31
+ };
32
+ export const getPopperOptions = (popperOptions, isInsideModal = false) => {
33
+ var _a, _b;
34
+ return (Object.assign(Object.assign({}, popperOptions), { modifiers: Object.assign(Object.assign({}, popperOptions.modifiers), { flip: Object.assign({ enabled: true }, (_a = popperOptions.modifiers) === null || _a === void 0 ? void 0 : _a.flip), preventOverflow: Object.assign(Object.assign({ enabled: true }, getPreventOverflowOptions(isInsideModal)), (_b = popperOptions.modifiers) === null || _b === void 0 ? void 0 : _b.preventOverflow) }) }));
35
+ };
36
+ const useWidthStyle = ({ anchorEl, autoWidth, width, }) => {
37
+ const resolvedAnchorEl = getAnchorEl(anchorEl);
38
+ const anchorElWidth = useWidthOf(resolvedAnchorEl);
39
+ if (width) {
40
+ return { width };
41
+ }
42
+ if (autoWidth) {
43
+ return { width: anchorElWidth };
44
+ }
45
+ return {};
46
+ };
47
+ export const Popper = forwardRef(function Popper(props, ref) {
48
+ const { children, open, anchorEl, className, container, popperOptions = {}, keepMounted, autoWidth, width, enableCompactMode, disablePortal, style } = props, rest = __rest(props, ["children", "open", "anchorEl", "className", "container", "popperOptions", "keepMounted", "autoWidth", "width", "enableCompactMode", "disablePortal", "style"]);
49
+ const picassoRootContainer = usePicassoRoot();
50
+ const isInsideModal = useContext(ModalContext);
51
+ const isCompactLayoutResolution = useBreakpoint(['xs', 'sm', 'md']);
52
+ const isCompactLayout = enableCompactMode && isCompactLayoutResolution;
53
+ const widthStyle = useWidthStyle({ autoWidth, width, anchorEl });
54
+ const anchorElWidthStyle = !isCompactLayout && widthStyle;
55
+ useIsomorphicLayoutEffect(() => {
56
+ if (isCompactLayout && open && document.body.style.overflow !== 'clip') {
57
+ const prev = document.body.style.overflow;
58
+ document.body.style.overflow = 'clip';
59
+ return () => {
60
+ document.body.style.overflow = prev;
61
+ };
62
+ }
63
+ }, [isCompactLayout, open]);
64
+ const memoizedPopperOptions = React.useMemo(() => getPopperOptions(popperOptions, isInsideModal), [popperOptions, isInsideModal]);
65
+ return (React.createElement(MUIPopper, Object.assign({ open: open, container: container || picassoRootContainer, anchorEl: anchorEl, className: twMerge('z-modal', 'xs:max-md:w-screen xs:max-md:max-w-screen xs:max-md:p-0 xs:max-md:m-0', '[&[x-out-of-boundaries]]:hidden', className), popperRef: ref, popperOptions: memoizedPopperOptions, disablePortal: disablePortal, keepMounted: keepMounted, style: Object.assign(Object.assign({}, style), anchorElWidthStyle) }, rest), children));
66
+ });
67
+ Popper.defaultProps = {
68
+ open: false,
69
+ disablePortal: false,
70
+ placement: 'bottom',
71
+ popperOptions: {},
72
+ autoWidth: true,
73
+ };
74
+ Popper.displayName = 'Popper';
75
+ export default Popper;
76
+ //# sourceMappingURL=Popper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popper.js","sourceRoot":"","sources":["../../../src/Popper/Popper.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { OmitInternalProps } from '@toptal/picasso-shared';
2
+ import type { Props } from './Popper';
3
+ export { default as Popper } from './Popper';
4
+ export declare type PopperProps = OmitInternalProps<Props>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Popper/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAErC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,oBAAY,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default as Popper } from './Popper';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Popper/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './Popper';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './Popper';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-popper",
3
- "version": "2.0.1-alpha-1757603192867.0",
3
+ "version": "2.0.1-alpha-1757603777486.0",
4
4
  "description": "Toptal UI components library - Popper",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -23,19 +23,19 @@
23
23
  },
24
24
  "homepage": "https://github.com/toptal/picasso/tree/master/packages/picasso#readme",
25
25
  "dependencies": {
26
- "@toptal/picasso-shared": "15.0.1-alpha-1757603192867.0",
27
- "@toptal/picasso-utils": "3.1.1-alpha-1757603192867.0",
28
- "@toptal/picasso-modal-context": "1.0.2-alpha-1757603192867.0"
26
+ "@toptal/picasso-shared": "15.0.1-alpha-1757603777486.0",
27
+ "@toptal/picasso-utils": "3.1.1-alpha-1757603777486.0",
28
+ "@toptal/picasso-modal-context": "1.0.2-alpha-1757603777486.0"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@material-ui/core": "4.12.4",
32
- "@toptal/picasso-provider": "5.0.2-alpha-1757603192867.0",
32
+ "@toptal/picasso-provider": "5.0.2-alpha-1757603777486.0",
33
33
  "react": ">=16.12.0 < 19.0.0",
34
- "@toptal/picasso-tailwind": "3.0.1-alpha-1757603192867.0",
35
- "@toptal/picasso-tailwind-merge": "^2.0.4-alpha-1757603192867.0"
34
+ "@toptal/picasso-tailwind": "3.0.1-alpha-1757603777486.0",
35
+ "@toptal/picasso-tailwind-merge": "^2.0.4-alpha-1757603777486.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@toptal/picasso-provider": "5.0.2-alpha-1757603192867.0",
38
+ "@toptal/picasso-provider": "5.0.2-alpha-1757603777486.0",
39
39
  "popper.js": "^1.16.1"
40
40
  },
41
41
  "exports": {