@veracity/vui 1.1.1 → 1.1.2

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 (42) hide show
  1. package/dist/cjs/core/vuiProvider/vuiProvider.d.ts.map +1 -1
  2. package/dist/cjs/core/vuiProvider/vuiProvider.js +2 -0
  3. package/dist/cjs/modal/modal.d.ts.map +1 -1
  4. package/dist/cjs/modal/modal.js +3 -7
  5. package/dist/cjs/modal/modalManager.d.ts +1 -1
  6. package/dist/cjs/modal/modalManager.d.ts.map +1 -1
  7. package/dist/cjs/modal/modalManager.js +8 -2
  8. package/dist/cjs/modal/modalStyle.d.ts +3 -0
  9. package/dist/cjs/modal/modalStyle.d.ts.map +1 -0
  10. package/dist/cjs/modal/modalStyle.js +10 -0
  11. package/dist/cjs/tabs/tabs.d.ts +0 -1
  12. package/dist/cjs/tabs/tabs.d.ts.map +1 -1
  13. package/dist/cjs/tabs/tabs.js +3 -5
  14. package/dist/cjs/tabs/tabs.types.d.ts +0 -3
  15. package/dist/cjs/tabs/tabs.types.d.ts.map +1 -1
  16. package/dist/cjs/tabs/tabsNavBar.d.ts.map +1 -1
  17. package/dist/cjs/tabs/tabsNavBar.js +3 -3
  18. package/dist/esm/core/vuiProvider/vuiProvider.d.ts.map +1 -1
  19. package/dist/esm/core/vuiProvider/vuiProvider.js +2 -0
  20. package/dist/esm/modal/modal.d.ts.map +1 -1
  21. package/dist/esm/modal/modal.js +3 -7
  22. package/dist/esm/modal/modalManager.d.ts +1 -1
  23. package/dist/esm/modal/modalManager.d.ts.map +1 -1
  24. package/dist/esm/modal/modalManager.js +8 -2
  25. package/dist/esm/modal/modalStyle.d.ts +3 -0
  26. package/dist/esm/modal/modalStyle.d.ts.map +1 -0
  27. package/dist/esm/modal/modalStyle.js +8 -0
  28. package/dist/esm/tabs/tabs.d.ts +0 -1
  29. package/dist/esm/tabs/tabs.d.ts.map +1 -1
  30. package/dist/esm/tabs/tabs.js +3 -5
  31. package/dist/esm/tabs/tabs.types.d.ts +0 -3
  32. package/dist/esm/tabs/tabs.types.d.ts.map +1 -1
  33. package/dist/esm/tabs/tabsNavBar.d.ts.map +1 -1
  34. package/dist/esm/tabs/tabsNavBar.js +3 -3
  35. package/package.json +1 -2
  36. package/src/core/vuiProvider/vuiProvider.tsx +2 -0
  37. package/src/modal/modal.tsx +3 -13
  38. package/src/modal/modalManager.ts +6 -2
  39. package/src/modal/modalStyle.ts +9 -0
  40. package/src/tabs/tabs.tsx +4 -14
  41. package/src/tabs/tabs.types.ts +0 -3
  42. package/src/tabs/tabsNavBar.tsx +3 -5
@@ -1 +1 @@
1
- {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAIjC,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAIpD,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAgBrC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAKjC,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAIpD,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAiBrC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const styled_components_1 = require("styled-components");
8
+ const modalStyle_1 = __importDefault(require("../../modal/modalStyle"));
8
9
  const popoverStyle_1 = __importDefault(require("../../popover/popoverStyle"));
9
10
  const theme_1 = __importDefault(require("../../theme"));
10
11
  const globalStyle_1 = __importDefault(require("./globalStyle"));
@@ -15,6 +16,7 @@ const VuiProvider = ({ children, globalStyle = true, resetCSS = true, theme = th
15
16
  react_1.default.createElement(react_1.default.Fragment, null,
16
17
  resetCSS && react_1.default.createElement(resetCSS_1.default, null),
17
18
  react_1.default.createElement(globalStyle_1.default, { globalStyle: globalStyle }),
19
+ react_1.default.createElement(modalStyle_1.default, null),
18
20
  react_1.default.createElement(popoverStyle_1.default, null),
19
21
  children)));
20
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/modal/modal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,YAAY,EAAE,MAAM,SAAS,CAAA;AAK3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK;cAsGN,oBAAoB;aACrB,mBAAmB;CAC7B,CAAA;AAKD,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/modal/modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAO,YAAY,EAAE,MAAM,SAAS,CAAA;AAK3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK;cA6FN,oBAAoB;aACrB,mBAAmB;CAC7B,CAAA;AAKD,eAAe,KAAK,CAAA"}
@@ -39,7 +39,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Modal = void 0;
41
41
  const react_1 = __importStar(require("react"));
42
- const react_remove_scroll_1 = require("react-remove-scroll");
43
42
  const box_1 = __importDefault(require("../box"));
44
43
  const core_1 = require("../core");
45
44
  const portal_1 = __importDefault(require("../portal"));
@@ -60,7 +59,7 @@ exports.Modal = (0, core_1.vui)((props, ref) => {
60
59
  const { allowPinchZoom, children, className, contentProps, disableAutoFocus, disableBackdropClose, disableEscClose, disablePortal, disableReturnFocus, disableScrollLock, disableTrapFocus, finalFocusRef, hideBackdrop, initialFocusRef, isOpen, onBackdropClick: onBackdropClickProp, onClose, onEsc, preserveScrollBar, size, variant } = props, rest = __rest(props, ["allowPinchZoom", "children", "className", "contentProps", "disableAutoFocus", "disableBackdropClose", "disableEscClose", "disablePortal", "disableReturnFocus", "disableScrollLock", "disableTrapFocus", "finalFocusRef", "hideBackdrop", "initialFocusRef", "isOpen", "onBackdropClick", "onClose", "onEsc", "preserveScrollBar", "size", "variant"]);
61
60
  const modalRef = (0, react_1.useRef)(null);
62
61
  const mouseDownTarget = (0, react_1.useRef)(null);
63
- (0, modalManager_1.useModalManager)(modalRef, isOpen);
62
+ (0, modalManager_1.useModalManager)(modalRef, isOpen, disableScrollLock);
64
63
  if (!isOpen)
65
64
  return null;
66
65
  const onBackdropClick = (e) => {
@@ -80,9 +79,7 @@ exports.Modal = (0, core_1.vui)((props, ref) => {
80
79
  onEsc === null || onEsc === void 0 ? void 0 : onEsc();
81
80
  }
82
81
  };
83
- const onMouseDown = (e) => {
84
- mouseDownTarget.current = e.target;
85
- };
82
+ const onMouseDown = (e) => (mouseDownTarget.current = e.target);
86
83
  const childProps = {
87
84
  onClick: (e) => {
88
85
  var _a, _b;
@@ -97,8 +94,7 @@ exports.Modal = (0, core_1.vui)((props, ref) => {
97
94
  react_1.default.createElement(box_1.default, Object.assign({ className: (0, utils_1.cs)('vui-modal', className), ref: (0, utils_1.mergeRefs)(ref, modalRef) }, rest, { onKeyDown: (0, utils_1.callAll)(props.onKeyDown, onKeyDown), onMouseDown: (0, utils_1.callAll)(props.onMouseDown, onMouseDown) }),
98
95
  !hideBackdrop && react_1.default.createElement(modalBackdrop_1.default, null),
99
96
  react_1.default.createElement(focusLock_1.default, { autoFocus: !disableAutoFocus, finalFocusRef: finalFocusRef, initialFocusRef: initialFocusRef, isDisabled: disableTrapFocus, returnFocus: !disableReturnFocus },
100
- react_1.default.createElement(react_remove_scroll_1.RemoveScroll, { allowPinchZoom: allowPinchZoom, enabled: !disableScrollLock, forwardProps: true, removeScrollBar: !preserveScrollBar },
101
- react_1.default.createElement(modalContent_1.default, Object.assign({}, contentProps), (0, react_1.cloneElement)(children, childProps))))))));
97
+ react_1.default.createElement(modalContent_1.default, Object.assign({}, contentProps), (0, react_1.cloneElement)(children, childProps)))))));
102
98
  });
103
99
  exports.Modal.Backdrop = modalBackdrop_1.default;
104
100
  exports.Modal.Content = modalContent_1.default;
@@ -8,6 +8,6 @@ declare class ModalManager {
8
8
  }
9
9
  export declare const manager: ModalManager;
10
10
  /** Refs of new modals will be automatically added/removed from the state when rendering. */
11
- export declare function useModalManager(ref: Ref<any>, isOpen?: boolean): void;
11
+ export declare function useModalManager(ref: Ref<any>, isOpen?: boolean, disableScrollLock?: boolean): void;
12
12
  export {};
13
13
  //# sourceMappingURL=modalManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modalManager.d.ts","sourceRoot":"","sources":["../../../src/modal/modalManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAEtC,0CAA0C;AAC1C,cAAM,YAAY;IAChB,MAAM,EAAE,GAAG,EAAE,CAAK;IAElB,GAAG,UAAW,GAAG,UAEhB;IAED,MAAM,UAAW,GAAG,UAEnB;IAED,UAAU,UAAW,GAAG,aAGvB;CACF;AAED,eAAO,MAAM,OAAO,cAAqB,CAAA;AAEzC,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,QAQ9D"}
1
+ {"version":3,"file":"modalManager.d.ts","sourceRoot":"","sources":["../../../src/modal/modalManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAEtC,0CAA0C;AAC1C,cAAM,YAAY;IAChB,MAAM,EAAE,GAAG,EAAE,CAAK;IAElB,GAAG,UAAW,GAAG,UAEhB;IAED,MAAM,UAAW,GAAG,UAEnB;IAED,UAAU,UAAW,GAAG,aAGvB;CACF;AAED,eAAO,MAAM,OAAO,cAAqB,CAAA;AAEzC,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,OAAO,QAY3F"}
@@ -20,11 +20,17 @@ class ModalManager {
20
20
  }
21
21
  exports.manager = new ModalManager();
22
22
  /** Refs of new modals will be automatically added/removed from the state when rendering. */
23
- function useModalManager(ref, isOpen) {
23
+ function useModalManager(ref, isOpen, disableScrollLock) {
24
24
  (0, react_1.useEffect)(() => {
25
- isOpen && exports.manager.add(ref);
25
+ if (isOpen) {
26
+ exports.manager.add(ref);
27
+ if (!disableScrollLock)
28
+ document.body.classList.add('no-scroll');
29
+ }
26
30
  return () => {
27
31
  exports.manager.remove(ref);
32
+ if (!disableScrollLock)
33
+ document.body.classList.remove('no-scroll');
28
34
  };
29
35
  }, [isOpen, ref]);
30
36
  }
@@ -0,0 +1,3 @@
1
+ declare const _default: import("styled-components").GlobalStyleComponent<{}, import("styled-components").DefaultTheme>;
2
+ export default _default;
3
+ //# sourceMappingURL=modalStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modalStyle.d.ts","sourceRoot":"","sources":["../../../src/modal/modalStyle.ts"],"names":[],"mappings":";AAEA,wBAMC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("../core");
4
+ exports.default = (0, core_1.createGlobalStyle) `
5
+
6
+ body.no-scroll {
7
+ overflow: hidden !important;
8
+ overscroll-behavior: contain;
9
+ }
10
+ `;
@@ -3,7 +3,6 @@ import { TabsProps } from './tabs.types';
3
3
  export declare const TabsBase: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("..").AnimationProps & import("..").BackgroundColorProps & import("..").BorderProps & import("..").BorderTopProps & import("..").BorderRightProps & import("..").BorderBottomProps & import("..").BorderLeftProps & import("..").BorderColorProps & import("..").BorderTopColorProps & import("..").BorderRightColorProps & import("..").BorderBottomColorProps & import("..").BorderLeftColorProps & import("..").BorderWidthProps & import("..").BorderTopWidthProps & import("..").BorderRightWidthProps & import("..").BorderBottomWidthProps & import("..").BorderLeftWidthProps & import("..").BorderStyleProps & import("..").BorderRadiusProps & import("..").OutlineProps & import("..").OutlineColorProps & import("..").OutlineWidthProps & import("..").OutlineStyleProps & import("..").DivideXProps & import("..").DivideYProps & import("..").DivideXReverseProps & import("..").DivideYReverseProps & import("..").DivideColorProps & import("..").DivideStyleProps & import("..").RingProps & import("..").RingColorProps & import("..").OpacityProps & import("..").BoxShadowProps & import("..").TextShadowProps & import("..").DisplayProps & import("..").AlignItemsProps & import("..").AlignContentProps & import("..").JustifyContentProps & import("..").JustifyItemsProps & import("..").FlexWrapProps & import("..").FlexGrowProps & import("..").FlexShrinkProps & import("..").FlexBasisProps & import("..").FlexDirectionProps & import("..").FlexProps & import("..").JustifySelfProps & import("..").AlignSelfProps & import("..").OrderProps & import("../system/flexboxGrids").RowProps & import("../system/flexboxGrids").ColProps & import("../system/grids").GapProps & import("../system/grids").ColumnGapProps & import("../system/grids").RowGapProps & import("../system/grids").GridColumnProps & import("../system/grids").GridRowProps & import("../system/grids").GridAutoFlowProps & import("../system/grids").GridAutoColumnsProps & import("../system/grids").GridAutoRowsProps & import("../system/grids").GridTemplateColumnsProps & import("../system/grids").GridTemplateRowsProps & import("../system/grids").GridTemplateAreasProps & import("../system/grids").GridAreaProps & import("..").AppearanceProps & import("..").CursorProps & import("..").PointerEventsProps & import("..").ResizeProps & import("..").UserSelectProps & import("..").IsTruncatedProps & import("..").FloatProps & import("..").BoxSizingProps & import("..").OverflowProps & import("..").OverflowXProps & import("..").OverflowYProps & import("..").PositionProps & import("..").ZIndexProps & import("..").TopProps & import("..").RightProps & import("..").BottomProps & import("..").LeftProps & import("..").VisibilityProps & import("..").OverscrollBehaviorProps & import("..").ObjectFitProps & import("..").MaxLinesProps & import("..").WidthProps & import("..").HeightProps & import("..").MaxWidthProps & import("..").MaxHeightProps & import("..").MinWidthProps & import("..").MinHeightProps & import("..").MarginProps & import("..").MarginTopProps & import("..").MarginRightProps & import("..").MarginBottomProps & import("..").MarginLeftProps & import("..").MarginXProps & import("..").MarginYProps & import("..").PaddingProps & import("..").PaddingTopProps & import("..").PaddingRightProps & import("..").PaddingBottomProps & import("..").PaddingLeftProps & import("..").PaddingXProps & import("..").PaddingYProps & import("..").SpaceXProps & import("..").SpaceYProps & import("..").SpaceXReverseProps & import("..").SpaceYReverseProps & import("../system/tables").BorderCollapseProps & import("../system/tables").TableLayoutProps & import("..").TransformProps & import("..").TransformOriginProps & import("..").TranslateXProps & import("..").TranslateYProps & import("..").RotateProps & import("..").SkewXProps & import("..").SkewYProps & import("..").ScaleProps & import("..").ScaleXProps & import("..").ScaleYProps & import("..").TransitionProps & import("..").TransitionPropertyProps & import("..").TransitionDurationProps & import("..").TransitionTimingFunctionProps & import("..").TransitionDelayProps & import("..").FontFamilyProps & import("..").FontSizeProps & import("..").FontStyleProps & import("..").FontWeightProps & import("..").LineHeightProps & import("..").ColorProps & import("..").TextTransformProps & import("..").TextDecorationProps & import("..").TextAlignProps & import("..").VerticalAlignProps & import("..").LetterSpacingProps & import("..").WhiteSpaceProps & import("..").TextOverflowProps & import("..").ListStyleTypeProps & import("..").ListStylePositionProps & import("..").WordBreakProps & import("..").ThemingProps<"Tabs"> & {
4
4
  activeTabId?: number | undefined;
5
5
  children?: React.ReactNode | React.ReactNode[];
6
- withPanel?: boolean | undefined;
7
6
  onTabClick?: ((id: number) => void) | undefined;
8
7
  }, never>;
9
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAA;AAOtD,OAAO,EAAY,SAAS,EAAE,MAAM,cAAc,CAAA;AAIlD,eAAO,MAAM,QAAQ;;;;;SAEpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,kDAmEf,CAAA;AAEF,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAA;AAMtD,OAAO,EAAY,SAAS,EAAE,MAAM,cAAc,CAAA;AAIlD,eAAO,MAAM,QAAQ;;;;SAEpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,kDA0Df,CAAA;AAEF,eAAe,IAAI,CAAA"}
@@ -41,7 +41,6 @@ exports.Tabs = exports.TabsBase = void 0;
41
41
  const react_1 = __importStar(require("react"));
42
42
  const core_1 = require("../core");
43
43
  const p_1 = require("../p");
44
- const panel_1 = require("../panel");
45
44
  const utils_1 = require("../utils");
46
45
  const tab_1 = __importDefault(require("./tab"));
47
46
  const tabsNavBar_1 = __importDefault(require("./tabsNavBar"));
@@ -53,7 +52,7 @@ exports.TabsBase = core_1.styled.divBox `
53
52
  * Implements Tabs navigation to switch between views.
54
53
  */
55
54
  exports.Tabs = (0, core_1.vui)((props, ref) => {
56
- const { activeTabId, children, className, size, withPanel, onTabClick } = props, rest = __rest(props, ["activeTabId", "children", "className", "size", "withPanel", "onTabClick"]);
55
+ const { activeTabId, children, className, size, onTabClick } = props, rest = __rest(props, ["activeTabId", "children", "className", "size", "onTabClick"]);
57
56
  const styles = (0, core_1.useStyleConfig)('Tabs', props);
58
57
  const { tabs, setTabs, activeTabIndex, setActiveTabIndex, animationDirection, setAnimationDirection } = (0, useTabsState_1.useTabsState)('fadeIn', activeTabId);
59
58
  (0, react_1.useEffect)(() => {
@@ -87,8 +86,7 @@ exports.Tabs = (0, core_1.vui)((props, ref) => {
87
86
  };
88
87
  const activeTab = tabs === null || tabs === void 0 ? void 0 : tabs[activeTabIndex];
89
88
  return (react_1.default.createElement(exports.TabsBase, Object.assign({ className: (0, utils_1.cs)('vui-tabs', className), ref: ref }, styles.container, rest),
90
- !!(tabs === null || tabs === void 0 ? void 0 : tabs.length) && (react_1.default.createElement(tabsNavBar_1.default, { activeNavItem: activeTabIndex, animationDirection: animationDirection, onNavItemClick: onNavItemClick, size: size, tabs: tabs, withPanel: withPanel })),
91
- (tabs === null || tabs === void 0 ? void 0 : tabs.length) ? (withPanel ? (react_1.default.createElement(panel_1.Panel, { display: "block", variant: "outlined", w: "100%" },
92
- react_1.default.createElement(tab_1.default, { onClick: activeTab === null || activeTab === void 0 ? void 0 : activeTab.onClick, title: activeTab === null || activeTab === void 0 ? void 0 : activeTab.title }, !(activeTab === null || activeTab === void 0 ? void 0 : activeTab.disabled) && (activeTab === null || activeTab === void 0 ? void 0 : activeTab.children)))) : (react_1.default.createElement(tab_1.default, { onClick: activeTab === null || activeTab === void 0 ? void 0 : activeTab.onClick, title: activeTab === null || activeTab === void 0 ? void 0 : activeTab.title }, !(activeTab === null || activeTab === void 0 ? void 0 : activeTab.disabled) && (activeTab === null || activeTab === void 0 ? void 0 : activeTab.children)))) : (react_1.default.createElement(p_1.P, { p: 2 }, "Please specify Tabs."))));
89
+ !!(tabs === null || tabs === void 0 ? void 0 : tabs.length) && (react_1.default.createElement(tabsNavBar_1.default, { activeNavItem: activeTabIndex, animationDirection: animationDirection, onNavItemClick: onNavItemClick, size: size, tabs: tabs })),
90
+ (tabs === null || tabs === void 0 ? void 0 : tabs.length) ? (react_1.default.createElement(tab_1.default, { onClick: activeTab === null || activeTab === void 0 ? void 0 : activeTab.onClick, title: activeTab === null || activeTab === void 0 ? void 0 : activeTab.title }, !(activeTab === null || activeTab === void 0 ? void 0 : activeTab.disabled) && (activeTab === null || activeTab === void 0 ? void 0 : activeTab.children))) : (react_1.default.createElement(p_1.P, { p: 2 }, "Please specify Tabs."))));
93
91
  });
94
92
  exports.default = exports.Tabs;
@@ -6,8 +6,6 @@ export declare type TabsSize = 'md' | 'sm' | 'lg' | 'xl';
6
6
  export declare type TabsProps = SystemProps & ThemingProps<'Tabs'> & {
7
7
  activeTabId?: number;
8
8
  children?: ReactNode | ReactNode[];
9
- /** Wraps up the tab content with an outlined panel. */
10
- withPanel?: boolean;
11
9
  onTabClick?: (id: number) => void;
12
10
  };
13
11
  export declare type TabProps = SystemProps & {
@@ -23,6 +21,5 @@ export declare type TabNavBarProps = {
23
21
  activeNavItem?: number;
24
22
  animationDirection?: AnimationDirection;
25
23
  size?: TabsSize;
26
- withPanel?: boolean;
27
24
  };
28
25
  //# sourceMappingURL=tabs.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.types.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEpE,oBAAY,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,oBAAY,SAAS,GAAG,WAAW,GACjC,YAAY,CAAC,MAAM,CAAC,GAAG;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IAClC,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAEH,oBAAY,QAAQ,GAAG,WAAW,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA"}
1
+ {"version":3,"file":"tabs.types.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEpE,oBAAY,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,oBAAY,SAAS,GAAG,WAAW,GACjC,YAAY,CAAC,MAAM,CAAC,GAAG;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IAClC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAEH,oBAAY,QAAQ,GAAG,WAAW,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabsNavBar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabsNavBar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,eAAO,MAAM,UAAU,uDA0CrB,CAAA;AAEF,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"tabsNavBar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabsNavBar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,eAAO,MAAM,UAAU,uDAwCrB,CAAA;AAEF,eAAe,UAAU,CAAA"}
@@ -11,9 +11,9 @@ const list_1 = require("../list");
11
11
  const utils_1 = require("../utils");
12
12
  exports.TabsNavBar = (0, core_1.vui)((props, ref) => {
13
13
  var _a;
14
- const { tabs, onNavItemClick, activeNavItem, animationDirection, size, withPanel } = props;
15
- return (react_1.default.createElement(list_1.List, { borderBottom: withPanel ? 'none' : '1px solid grey.40', className: (0, utils_1.cs)('vui-tabsNavBar'), display: "flex", isInteractive: true, mb: withPanel ? 0 : 2, ml: withPanel ? 1 : 0, ref: ref, size: size, w: 1 }, (_a = tabs === null || tabs === void 0 ? void 0 : tabs.map) === null || _a === void 0 ? void 0 : _a.call(tabs, tab => (react_1.default.createElement(list_1.ListItem, { className: `vui-tabsNavBarItem vui-tabsNavBarItem-${tab === null || tab === void 0 ? void 0 : tab.id}`, disabled: tab.disabled, display: "inline-flex", key: tab.id, onClick: () => (tab === null || tab === void 0 ? void 0 : tab.id) !== undefined && onNavItemClick(tab.id), position: "relative" },
14
+ const { tabs, onNavItemClick, activeNavItem, animationDirection, size } = props;
15
+ return (react_1.default.createElement(list_1.List, { borderBottom: "1px solid grey.40", className: (0, utils_1.cs)('vui-tabsNavBar'), display: "flex", isInteractive: true, ref: ref, size: size, w: 1 }, (_a = tabs === null || tabs === void 0 ? void 0 : tabs.map) === null || _a === void 0 ? void 0 : _a.call(tabs, tab => (react_1.default.createElement(list_1.ListItem, { className: `vui-tabsNavBarItem vui-tabsNavBarItem-${tab === null || tab === void 0 ? void 0 : tab.id}`, disabled: tab.disabled, display: "inline-flex", key: tab.id, onClick: () => (tab === null || tab === void 0 ? void 0 : tab.id) !== undefined && onNavItemClick(tab.id), position: "relative" },
16
16
  tab.title,
17
- !tab.disabled && tab.id === activeNavItem && (react_1.default.createElement(box_1.default, { animation: animationDirection, bg: "prussian.80", bottom: withPanel ? 0 : '-1px', h: `${size === 'sm' ? 2 : 4}px`, left: 0, position: "absolute", w: 1 }, "\u00A0")))))));
17
+ !tab.disabled && tab.id === activeNavItem && (react_1.default.createElement(box_1.default, { animation: animationDirection, bg: "prussian.80", bottom: "-1px", h: `${size === 'sm' ? 2 : 4}px`, left: 0, position: "absolute", w: 1 }, "\u00A0")))))));
18
18
  });
19
19
  exports.default = exports.TabsNavBar;
@@ -1 +1 @@
1
- {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAIjC,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAIpD,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAgBrC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAKjC,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAIpD,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAiBrC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ThemeProvider } from 'styled-components';
3
+ import ModalStyle from '../../modal/modalStyle';
3
4
  import PopoverStyle from '../../popover/popoverStyle';
4
5
  import defaultTheme from '../../theme';
5
6
  import GlobalStyle from './globalStyle';
@@ -10,6 +11,7 @@ const VuiProvider = ({ children, globalStyle = true, resetCSS = true, theme = de
10
11
  React.createElement(React.Fragment, null,
11
12
  resetCSS && React.createElement(ResetCSS, null),
12
13
  React.createElement(GlobalStyle, { globalStyle: globalStyle }),
14
+ React.createElement(ModalStyle, null),
13
15
  React.createElement(PopoverStyle, null),
14
16
  children)));
15
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/modal/modal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,YAAY,EAAE,MAAM,SAAS,CAAA;AAK3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK;cAsGN,oBAAoB;aACrB,mBAAmB;CAC7B,CAAA;AAKD,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/modal/modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAO,YAAY,EAAE,MAAM,SAAS,CAAA;AAK3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK;cA6FN,oBAAoB;aACrB,mBAAmB;CAC7B,CAAA;AAKD,eAAe,KAAK,CAAA"}
@@ -1,5 +1,4 @@
1
1
  import React, { cloneElement, useRef } from 'react';
2
- import { RemoveScroll } from 'react-remove-scroll';
3
2
  import Box from '../box';
4
3
  import { vui } from '../core';
5
4
  import Portal from '../portal';
@@ -19,7 +18,7 @@ export const Modal = vui((props, ref) => {
19
18
  const { allowPinchZoom, children, className, contentProps, disableAutoFocus, disableBackdropClose, disableEscClose, disablePortal, disableReturnFocus, disableScrollLock, disableTrapFocus, finalFocusRef, hideBackdrop, initialFocusRef, isOpen, onBackdropClick: onBackdropClickProp, onClose, onEsc, preserveScrollBar, size, variant, ...rest } = props;
20
19
  const modalRef = useRef(null);
21
20
  const mouseDownTarget = useRef(null);
22
- useModalManager(modalRef, isOpen);
21
+ useModalManager(modalRef, isOpen, disableScrollLock);
23
22
  if (!isOpen)
24
23
  return null;
25
24
  const onBackdropClick = (e) => {
@@ -39,9 +38,7 @@ export const Modal = vui((props, ref) => {
39
38
  onEsc?.();
40
39
  }
41
40
  };
42
- const onMouseDown = (e) => {
43
- mouseDownTarget.current = e.target;
44
- };
41
+ const onMouseDown = (e) => (mouseDownTarget.current = e.target);
45
42
  const childProps = {
46
43
  onClick: (e) => {
47
44
  e.stopPropagation();
@@ -55,8 +52,7 @@ export const Modal = vui((props, ref) => {
55
52
  React.createElement(Box, { className: cs('vui-modal', className), ref: mergeRefs(ref, modalRef), ...rest, onKeyDown: callAll(props.onKeyDown, onKeyDown), onMouseDown: callAll(props.onMouseDown, onMouseDown) },
56
53
  !hideBackdrop && React.createElement(ModalBackdrop, null),
57
54
  React.createElement(FocusLock, { autoFocus: !disableAutoFocus, finalFocusRef: finalFocusRef, initialFocusRef: initialFocusRef, isDisabled: disableTrapFocus, returnFocus: !disableReturnFocus },
58
- React.createElement(RemoveScroll, { allowPinchZoom: allowPinchZoom, enabled: !disableScrollLock, forwardProps: true, removeScrollBar: !preserveScrollBar },
59
- React.createElement(ModalContent, { ...contentProps }, cloneElement(children, childProps))))))));
55
+ React.createElement(ModalContent, { ...contentProps }, cloneElement(children, childProps)))))));
60
56
  });
61
57
  Modal.Backdrop = ModalBackdrop;
62
58
  Modal.Content = ModalContent;
@@ -8,6 +8,6 @@ declare class ModalManager {
8
8
  }
9
9
  export declare const manager: ModalManager;
10
10
  /** Refs of new modals will be automatically added/removed from the state when rendering. */
11
- export declare function useModalManager(ref: Ref<any>, isOpen?: boolean): void;
11
+ export declare function useModalManager(ref: Ref<any>, isOpen?: boolean, disableScrollLock?: boolean): void;
12
12
  export {};
13
13
  //# sourceMappingURL=modalManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modalManager.d.ts","sourceRoot":"","sources":["../../../src/modal/modalManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAEtC,0CAA0C;AAC1C,cAAM,YAAY;IAChB,MAAM,EAAE,GAAG,EAAE,CAAK;IAElB,GAAG,UAAW,GAAG,UAEhB;IAED,MAAM,UAAW,GAAG,UAEnB;IAED,UAAU,UAAW,GAAG,aAGvB;CACF;AAED,eAAO,MAAM,OAAO,cAAqB,CAAA;AAEzC,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,QAQ9D"}
1
+ {"version":3,"file":"modalManager.d.ts","sourceRoot":"","sources":["../../../src/modal/modalManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAEtC,0CAA0C;AAC1C,cAAM,YAAY;IAChB,MAAM,EAAE,GAAG,EAAE,CAAK;IAElB,GAAG,UAAW,GAAG,UAEhB;IAED,MAAM,UAAW,GAAG,UAEnB;IAED,UAAU,UAAW,GAAG,aAGvB;CACF;AAED,eAAO,MAAM,OAAO,cAAqB,CAAA;AAEzC,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,OAAO,QAY3F"}
@@ -17,11 +17,17 @@ class ModalManager {
17
17
  }
18
18
  export const manager = new ModalManager();
19
19
  /** Refs of new modals will be automatically added/removed from the state when rendering. */
20
- export function useModalManager(ref, isOpen) {
20
+ export function useModalManager(ref, isOpen, disableScrollLock) {
21
21
  useEffect(() => {
22
- isOpen && manager.add(ref);
22
+ if (isOpen) {
23
+ manager.add(ref);
24
+ if (!disableScrollLock)
25
+ document.body.classList.add('no-scroll');
26
+ }
23
27
  return () => {
24
28
  manager.remove(ref);
29
+ if (!disableScrollLock)
30
+ document.body.classList.remove('no-scroll');
25
31
  };
26
32
  }, [isOpen, ref]);
27
33
  }
@@ -0,0 +1,3 @@
1
+ declare const _default: import("styled-components").GlobalStyleComponent<{}, import("styled-components").DefaultTheme>;
2
+ export default _default;
3
+ //# sourceMappingURL=modalStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modalStyle.d.ts","sourceRoot":"","sources":["../../../src/modal/modalStyle.ts"],"names":[],"mappings":";AAEA,wBAMC"}
@@ -0,0 +1,8 @@
1
+ import { createGlobalStyle } from '../core';
2
+ export default createGlobalStyle `
3
+
4
+ body.no-scroll {
5
+ overflow: hidden !important;
6
+ overscroll-behavior: contain;
7
+ }
8
+ `;
@@ -3,7 +3,6 @@ import { TabsProps } from './tabs.types';
3
3
  export declare const TabsBase: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("..").AnimationProps & import("..").BackgroundColorProps & import("..").BorderProps & import("..").BorderTopProps & import("..").BorderRightProps & import("..").BorderBottomProps & import("..").BorderLeftProps & import("..").BorderColorProps & import("..").BorderTopColorProps & import("..").BorderRightColorProps & import("..").BorderBottomColorProps & import("..").BorderLeftColorProps & import("..").BorderWidthProps & import("..").BorderTopWidthProps & import("..").BorderRightWidthProps & import("..").BorderBottomWidthProps & import("..").BorderLeftWidthProps & import("..").BorderStyleProps & import("..").BorderRadiusProps & import("..").OutlineProps & import("..").OutlineColorProps & import("..").OutlineWidthProps & import("..").OutlineStyleProps & import("..").DivideXProps & import("..").DivideYProps & import("..").DivideXReverseProps & import("..").DivideYReverseProps & import("..").DivideColorProps & import("..").DivideStyleProps & import("..").RingProps & import("..").RingColorProps & import("..").OpacityProps & import("..").BoxShadowProps & import("..").TextShadowProps & import("..").DisplayProps & import("..").AlignItemsProps & import("..").AlignContentProps & import("..").JustifyContentProps & import("..").JustifyItemsProps & import("..").FlexWrapProps & import("..").FlexGrowProps & import("..").FlexShrinkProps & import("..").FlexBasisProps & import("..").FlexDirectionProps & import("..").FlexProps & import("..").JustifySelfProps & import("..").AlignSelfProps & import("..").OrderProps & import("../system/flexboxGrids").RowProps & import("../system/flexboxGrids").ColProps & import("../system/grids").GapProps & import("../system/grids").ColumnGapProps & import("../system/grids").RowGapProps & import("../system/grids").GridColumnProps & import("../system/grids").GridRowProps & import("../system/grids").GridAutoFlowProps & import("../system/grids").GridAutoColumnsProps & import("../system/grids").GridAutoRowsProps & import("../system/grids").GridTemplateColumnsProps & import("../system/grids").GridTemplateRowsProps & import("../system/grids").GridTemplateAreasProps & import("../system/grids").GridAreaProps & import("..").AppearanceProps & import("..").CursorProps & import("..").PointerEventsProps & import("..").ResizeProps & import("..").UserSelectProps & import("..").IsTruncatedProps & import("..").FloatProps & import("..").BoxSizingProps & import("..").OverflowProps & import("..").OverflowXProps & import("..").OverflowYProps & import("..").PositionProps & import("..").ZIndexProps & import("..").TopProps & import("..").RightProps & import("..").BottomProps & import("..").LeftProps & import("..").VisibilityProps & import("..").OverscrollBehaviorProps & import("..").ObjectFitProps & import("..").MaxLinesProps & import("..").WidthProps & import("..").HeightProps & import("..").MaxWidthProps & import("..").MaxHeightProps & import("..").MinWidthProps & import("..").MinHeightProps & import("..").MarginProps & import("..").MarginTopProps & import("..").MarginRightProps & import("..").MarginBottomProps & import("..").MarginLeftProps & import("..").MarginXProps & import("..").MarginYProps & import("..").PaddingProps & import("..").PaddingTopProps & import("..").PaddingRightProps & import("..").PaddingBottomProps & import("..").PaddingLeftProps & import("..").PaddingXProps & import("..").PaddingYProps & import("..").SpaceXProps & import("..").SpaceYProps & import("..").SpaceXReverseProps & import("..").SpaceYReverseProps & import("../system/tables").BorderCollapseProps & import("../system/tables").TableLayoutProps & import("..").TransformProps & import("..").TransformOriginProps & import("..").TranslateXProps & import("..").TranslateYProps & import("..").RotateProps & import("..").SkewXProps & import("..").SkewYProps & import("..").ScaleProps & import("..").ScaleXProps & import("..").ScaleYProps & import("..").TransitionProps & import("..").TransitionPropertyProps & import("..").TransitionDurationProps & import("..").TransitionTimingFunctionProps & import("..").TransitionDelayProps & import("..").FontFamilyProps & import("..").FontSizeProps & import("..").FontStyleProps & import("..").FontWeightProps & import("..").LineHeightProps & import("..").ColorProps & import("..").TextTransformProps & import("..").TextDecorationProps & import("..").TextAlignProps & import("..").VerticalAlignProps & import("..").LetterSpacingProps & import("..").WhiteSpaceProps & import("..").TextOverflowProps & import("..").ListStyleTypeProps & import("..").ListStylePositionProps & import("..").WordBreakProps & import("..").ThemingProps<"Tabs"> & {
4
4
  activeTabId?: number | undefined;
5
5
  children?: React.ReactNode | React.ReactNode[];
6
- withPanel?: boolean | undefined;
7
6
  onTabClick?: ((id: number) => void) | undefined;
8
7
  }, never>;
9
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAA;AAOtD,OAAO,EAAY,SAAS,EAAE,MAAM,cAAc,CAAA;AAIlD,eAAO,MAAM,QAAQ;;;;;SAEpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,kDAmEf,CAAA;AAEF,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAA;AAMtD,OAAO,EAAY,SAAS,EAAE,MAAM,cAAc,CAAA;AAIlD,eAAO,MAAM,QAAQ;;;;SAEpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,kDA0Df,CAAA;AAEF,eAAe,IAAI,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import React, { useEffect } from 'react';
2
2
  import { styled, useStyleConfig, vui } from '../core';
3
3
  import { P } from '../p';
4
- import { Panel } from '../panel';
5
4
  import { cs } from '../utils';
6
5
  import Tab from './tab';
7
6
  import TabsNavBar from './tabsNavBar';
@@ -13,7 +12,7 @@ export const TabsBase = styled.divBox `
13
12
  * Implements Tabs navigation to switch between views.
14
13
  */
15
14
  export const Tabs = vui((props, ref) => {
16
- const { activeTabId, children, className, size, withPanel, onTabClick, ...rest } = props;
15
+ const { activeTabId, children, className, size, onTabClick, ...rest } = props;
17
16
  const styles = useStyleConfig('Tabs', props);
18
17
  const { tabs, setTabs, activeTabIndex, setActiveTabIndex, animationDirection, setAnimationDirection } = useTabsState('fadeIn', activeTabId);
19
18
  useEffect(() => {
@@ -45,8 +44,7 @@ export const Tabs = vui((props, ref) => {
45
44
  };
46
45
  const activeTab = tabs?.[activeTabIndex];
47
46
  return (React.createElement(TabsBase, { className: cs('vui-tabs', className), ref: ref, ...styles.container, ...rest },
48
- !!tabs?.length && (React.createElement(TabsNavBar, { activeNavItem: activeTabIndex, animationDirection: animationDirection, onNavItemClick: onNavItemClick, size: size, tabs: tabs, withPanel: withPanel })),
49
- tabs?.length ? (withPanel ? (React.createElement(Panel, { display: "block", variant: "outlined", w: "100%" },
50
- React.createElement(Tab, { onClick: activeTab?.onClick, title: activeTab?.title }, !activeTab?.disabled && activeTab?.children))) : (React.createElement(Tab, { onClick: activeTab?.onClick, title: activeTab?.title }, !activeTab?.disabled && activeTab?.children))) : (React.createElement(P, { p: 2 }, "Please specify Tabs."))));
47
+ !!tabs?.length && (React.createElement(TabsNavBar, { activeNavItem: activeTabIndex, animationDirection: animationDirection, onNavItemClick: onNavItemClick, size: size, tabs: tabs })),
48
+ tabs?.length ? (React.createElement(Tab, { onClick: activeTab?.onClick, title: activeTab?.title }, !activeTab?.disabled && activeTab?.children)) : (React.createElement(P, { p: 2 }, "Please specify Tabs."))));
51
49
  });
52
50
  export default Tabs;
@@ -6,8 +6,6 @@ export declare type TabsSize = 'md' | 'sm' | 'lg' | 'xl';
6
6
  export declare type TabsProps = SystemProps & ThemingProps<'Tabs'> & {
7
7
  activeTabId?: number;
8
8
  children?: ReactNode | ReactNode[];
9
- /** Wraps up the tab content with an outlined panel. */
10
- withPanel?: boolean;
11
9
  onTabClick?: (id: number) => void;
12
10
  };
13
11
  export declare type TabProps = SystemProps & {
@@ -23,6 +21,5 @@ export declare type TabNavBarProps = {
23
21
  activeNavItem?: number;
24
22
  animationDirection?: AnimationDirection;
25
23
  size?: TabsSize;
26
- withPanel?: boolean;
27
24
  };
28
25
  //# sourceMappingURL=tabs.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.types.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEpE,oBAAY,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,oBAAY,SAAS,GAAG,WAAW,GACjC,YAAY,CAAC,MAAM,CAAC,GAAG;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IAClC,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAEH,oBAAY,QAAQ,GAAG,WAAW,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA"}
1
+ {"version":3,"file":"tabs.types.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEpE,oBAAY,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,oBAAY,SAAS,GAAG,WAAW,GACjC,YAAY,CAAC,MAAM,CAAC,GAAG;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IAClC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAEH,oBAAY,QAAQ,GAAG,WAAW,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabsNavBar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabsNavBar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,eAAO,MAAM,UAAU,uDA0CrB,CAAA;AAEF,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"tabsNavBar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tabsNavBar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,eAAO,MAAM,UAAU,uDAwCrB,CAAA;AAEF,eAAe,UAAU,CAAA"}
@@ -4,9 +4,9 @@ import { vui } from '../core';
4
4
  import { List, ListItem } from '../list';
5
5
  import { cs } from '../utils';
6
6
  export const TabsNavBar = vui((props, ref) => {
7
- const { tabs, onNavItemClick, activeNavItem, animationDirection, size, withPanel } = props;
8
- return (React.createElement(List, { borderBottom: withPanel ? 'none' : '1px solid grey.40', className: cs('vui-tabsNavBar'), display: "flex", isInteractive: true, mb: withPanel ? 0 : 2, ml: withPanel ? 1 : 0, ref: ref, size: size, w: 1 }, tabs?.map?.(tab => (React.createElement(ListItem, { className: `vui-tabsNavBarItem vui-tabsNavBarItem-${tab?.id}`, disabled: tab.disabled, display: "inline-flex", key: tab.id, onClick: () => tab?.id !== undefined && onNavItemClick(tab.id), position: "relative" },
7
+ const { tabs, onNavItemClick, activeNavItem, animationDirection, size } = props;
8
+ return (React.createElement(List, { borderBottom: "1px solid grey.40", className: cs('vui-tabsNavBar'), display: "flex", isInteractive: true, ref: ref, size: size, w: 1 }, tabs?.map?.(tab => (React.createElement(ListItem, { className: `vui-tabsNavBarItem vui-tabsNavBarItem-${tab?.id}`, disabled: tab.disabled, display: "inline-flex", key: tab.id, onClick: () => tab?.id !== undefined && onNavItemClick(tab.id), position: "relative" },
9
9
  tab.title,
10
- !tab.disabled && tab.id === activeNavItem && (React.createElement(Box, { animation: animationDirection, bg: "prussian.80", bottom: withPanel ? 0 : '-1px', h: `${size === 'sm' ? 2 : 4}px`, left: 0, position: "absolute", w: 1 }, "\u00A0")))))));
10
+ !tab.disabled && tab.id === activeNavItem && (React.createElement(Box, { animation: animationDirection, bg: "prussian.80", bottom: "-1px", h: `${size === 'sm' ? 2 : 4}px`, left: 0, position: "absolute", w: 1 }, "\u00A0")))))));
11
11
  });
12
12
  export default TabsNavBar;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veracity/vui",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
5
5
  "module": "./dist/esm/index.js",
6
6
  "main": "./dist/cjs/index.js",
@@ -26,7 +26,6 @@
26
26
  "@xstyled/system": "2.5.0",
27
27
  "@xstyled/util": "2.2.3",
28
28
  "react-focus-lock": "2.8.1",
29
- "react-remove-scroll": "2.4.3",
30
29
  "styled-components": "5.3.3",
31
30
  "tippy.js": "6.3.7"
32
31
  },
@@ -1,6 +1,7 @@
1
1
  import React, { FC } from 'react'
2
2
  import { ThemeProvider } from 'styled-components'
3
3
 
4
+ import ModalStyle from '../../modal/modalStyle'
4
5
  import PopoverStyle from '../../popover/popoverStyle'
5
6
  import defaultTheme, { VuiTheme } from '../../theme'
6
7
  import GlobalStyle from './globalStyle'
@@ -27,6 +28,7 @@ const VuiProvider: FC<VuiProviderProps> = ({
27
28
  <>
28
29
  {resetCSS && <ResetCSS />}
29
30
  <GlobalStyle globalStyle={globalStyle} />
31
+ <ModalStyle />
30
32
  <PopoverStyle />
31
33
  {children}
32
34
  </>
@@ -1,5 +1,4 @@
1
1
  import React, { cloneElement, useRef } from 'react'
2
- import { RemoveScroll } from 'react-remove-scroll'
3
2
 
4
3
  import Box from '../box'
5
4
  import { vui, VuiComponent } from '../core'
@@ -46,7 +45,7 @@ export const Modal = vui<'div', ModalProps>((props, ref) => {
46
45
  const modalRef = useRef<HTMLElement>(null)
47
46
  const mouseDownTarget = useRef<EventTarget | null>(null)
48
47
 
49
- useModalManager(modalRef, isOpen)
48
+ useModalManager(modalRef, isOpen, disableScrollLock)
50
49
 
51
50
  if (!isOpen) return null
52
51
 
@@ -73,9 +72,7 @@ export const Modal = vui<'div', ModalProps>((props, ref) => {
73
72
  }
74
73
  }
75
74
 
76
- const onMouseDown = (e: MouseEvent) => {
77
- mouseDownTarget.current = e.target
78
- }
75
+ const onMouseDown = (e: MouseEvent) => (mouseDownTarget.current = e.target)
79
76
 
80
77
  const childProps = {
81
78
  onClick: (e: any) => {
@@ -106,14 +103,7 @@ export const Modal = vui<'div', ModalProps>((props, ref) => {
106
103
  isDisabled={disableTrapFocus}
107
104
  returnFocus={!disableReturnFocus}
108
105
  >
109
- <RemoveScroll
110
- allowPinchZoom={allowPinchZoom}
111
- enabled={!disableScrollLock}
112
- forwardProps
113
- removeScrollBar={!preserveScrollBar}
114
- >
115
- <ModalContent {...contentProps}>{cloneElement(children, childProps)}</ModalContent>
116
- </RemoveScroll>
106
+ <ModalContent {...contentProps}>{cloneElement(children, childProps)}</ModalContent>
117
107
  </FocusLock>
118
108
  </Box>
119
109
  </Portal>
@@ -21,12 +21,16 @@ class ModalManager {
21
21
  export const manager = new ModalManager()
22
22
 
23
23
  /** Refs of new modals will be automatically added/removed from the state when rendering. */
24
- export function useModalManager(ref: Ref<any>, isOpen?: boolean) {
24
+ export function useModalManager(ref: Ref<any>, isOpen?: boolean, disableScrollLock?: boolean) {
25
25
  useEffect(() => {
26
- isOpen && manager.add(ref)
26
+ if (isOpen) {
27
+ manager.add(ref)
28
+ if (!disableScrollLock) document.body.classList.add('no-scroll')
29
+ }
27
30
 
28
31
  return () => {
29
32
  manager.remove(ref)
33
+ if (!disableScrollLock) document.body.classList.remove('no-scroll')
30
34
  }
31
35
  }, [isOpen, ref])
32
36
  }
@@ -0,0 +1,9 @@
1
+ import { createGlobalStyle } from '../core'
2
+
3
+ export default createGlobalStyle`
4
+
5
+ body.no-scroll {
6
+ overflow: hidden !important;
7
+ overscroll-behavior: contain;
8
+ }
9
+ `
package/src/tabs/tabs.tsx CHANGED
@@ -2,7 +2,6 @@ import React, { ReactElement, useEffect } from 'react'
2
2
 
3
3
  import { styled, useStyleConfig, vui } from '../core'
4
4
  import { P } from '../p'
5
- import { Panel } from '../panel'
6
5
  import { cs } from '../utils'
7
6
  import Tab from './tab'
8
7
  import { TabProps, TabsProps } from './tabs.types'
@@ -17,7 +16,7 @@ export const TabsBase = styled.divBox<TabsProps>`
17
16
  * Implements Tabs navigation to switch between views.
18
17
  */
19
18
  export const Tabs = vui<'div', TabsProps>((props, ref) => {
20
- const { activeTabId, children, className, size, withPanel, onTabClick, ...rest } = props
19
+ const { activeTabId, children, className, size, onTabClick, ...rest } = props
21
20
  const styles = useStyleConfig('Tabs', props)
22
21
  const { tabs, setTabs, activeTabIndex, setActiveTabIndex, animationDirection, setAnimationDirection } = useTabsState(
23
22
  'fadeIn',
@@ -63,21 +62,12 @@ export const Tabs = vui<'div', TabsProps>((props, ref) => {
63
62
  onNavItemClick={onNavItemClick}
64
63
  size={size}
65
64
  tabs={tabs}
66
- withPanel={withPanel}
67
65
  />
68
66
  )}
69
67
  {tabs?.length ? (
70
- withPanel ? (
71
- <Panel display="block" variant="outlined" w="100%">
72
- <Tab onClick={activeTab?.onClick} title={activeTab?.title}>
73
- {!activeTab?.disabled && activeTab?.children}
74
- </Tab>
75
- </Panel>
76
- ) : (
77
- <Tab onClick={activeTab?.onClick} title={activeTab?.title}>
78
- {!activeTab?.disabled && activeTab?.children}
79
- </Tab>
80
- )
68
+ <Tab onClick={activeTab?.onClick} title={activeTab?.title}>
69
+ {!activeTab?.disabled && activeTab?.children}
70
+ </Tab>
81
71
  ) : (
82
72
  <P p={2}>Please specify Tabs.</P>
83
73
  )}
@@ -11,8 +11,6 @@ export type TabsProps = SystemProps &
11
11
  ThemingProps<'Tabs'> & {
12
12
  activeTabId?: number
13
13
  children?: ReactNode | ReactNode[]
14
- /** Wraps up the tab content with an outlined panel. */
15
- withPanel?: boolean
16
14
  onTabClick?: (id: number) => void
17
15
  }
18
16
 
@@ -30,5 +28,4 @@ export type TabNavBarProps = {
30
28
  activeNavItem?: number
31
29
  animationDirection?: AnimationDirection
32
30
  size?: TabsSize
33
- withPanel?: boolean
34
31
  }
@@ -7,16 +7,14 @@ import { cs } from '../utils'
7
7
  import { TabNavBarProps } from './tabs.types'
8
8
 
9
9
  export const TabsNavBar = vui<'div', TabNavBarProps>((props, ref) => {
10
- const { tabs, onNavItemClick, activeNavItem, animationDirection, size, withPanel } = props
10
+ const { tabs, onNavItemClick, activeNavItem, animationDirection, size } = props
11
11
 
12
12
  return (
13
13
  <List
14
- borderBottom={withPanel ? 'none' : '1px solid grey.40'}
14
+ borderBottom="1px solid grey.40"
15
15
  className={cs('vui-tabsNavBar')}
16
16
  display="flex"
17
17
  isInteractive
18
- mb={withPanel ? 0 : 2}
19
- ml={withPanel ? 1 : 0}
20
18
  ref={ref}
21
19
  size={size}
22
20
  w={1}
@@ -35,7 +33,7 @@ export const TabsNavBar = vui<'div', TabNavBarProps>((props, ref) => {
35
33
  <Box
36
34
  animation={animationDirection}
37
35
  bg="prussian.80"
38
- bottom={withPanel ? 0 : '-1px'}
36
+ bottom="-1px"
39
37
  h={`${size === 'sm' ? 2 : 4}px`}
40
38
  left={0}
41
39
  position="absolute"