@algolia/satellite 1.0.0-beta.134 → 1.0.0-beta.135

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 (134) hide show
  1. package/cjs/AutoComplete/AutoComplete.js +3 -1
  2. package/cjs/DatePicker/components/Modal.js +5 -4
  3. package/cjs/Dropdown/Dropdown.js +5 -4
  4. package/cjs/Dropdown/components/DropdownButtonItem.js +2 -2
  5. package/cjs/Dropdown/components/DropdownLinkItem.js +0 -1
  6. package/cjs/Dropdown/useDropdownItemProps.d.ts +9 -1
  7. package/cjs/Dropdown/useDropdownItemProps.js +16 -7
  8. package/cjs/Flag/Flags.d.ts +1 -1
  9. package/cjs/Flag/Flags.js +5 -4
  10. package/cjs/Link/ButtonLink.js +1 -10
  11. package/cjs/Modal/Modal.d.ts +1 -1
  12. package/cjs/Modal/Modal.js +3 -4
  13. package/cjs/Satellite/Satellite.d.ts +1 -0
  14. package/cjs/Satellite/Satellite.js +3 -1
  15. package/cjs/Satellite/SatelliteContext.d.ts +1 -0
  16. package/cjs/Satellite/index.d.ts +1 -0
  17. package/cjs/Satellite/index.js +14 -0
  18. package/cjs/Satellite/locale.d.ts +5 -3
  19. package/cjs/Satellite/useCreatePortal.d.ts +4 -0
  20. package/cjs/Satellite/useCreatePortal.js +29 -0
  21. package/cjs/ScrollIndicator/ScrollIndicator.js +2 -1
  22. package/cjs/Sidebar/Sidebar.d.ts +33 -12
  23. package/cjs/Sidebar/Sidebar.js +48 -38
  24. package/cjs/Sidebar/SidebarButtonLink.d.ts +14 -0
  25. package/cjs/Sidebar/SidebarButtonLink.js +110 -0
  26. package/cjs/Sidebar/SidebarContext.d.ts +7 -8
  27. package/cjs/Sidebar/SidebarContext.js +10 -11
  28. package/cjs/Sidebar/SidebarHeader.d.ts +6 -0
  29. package/cjs/Sidebar/SidebarHeader.js +29 -0
  30. package/cjs/Sidebar/SidebarHeading.d.ts +6 -0
  31. package/cjs/Sidebar/SidebarHeading.js +35 -0
  32. package/cjs/Sidebar/SidebarLink.d.ts +8 -0
  33. package/cjs/Sidebar/SidebarLink.js +58 -0
  34. package/cjs/Sidebar/SidebarLinksGroup/ActiveLinkIndicator.d.ts +8 -0
  35. package/cjs/Sidebar/SidebarLinksGroup/ActiveLinkIndicator.js +47 -0
  36. package/cjs/Sidebar/SidebarLinksGroup/SidebarGroupLink.d.ts +7 -0
  37. package/cjs/Sidebar/{components/SidebarHeader.js → SidebarLinksGroup/SidebarGroupLink.js} +14 -23
  38. package/cjs/Sidebar/SidebarLinksGroup/SidebarLinksGroup.d.ts +23 -0
  39. package/cjs/Sidebar/SidebarLinksGroup/SidebarLinksGroup.js +120 -0
  40. package/cjs/Sidebar/SidebarLinksGroup/index.d.ts +2 -0
  41. package/cjs/Sidebar/SidebarLinksGroup/index.js +18 -0
  42. package/cjs/Sidebar/SidebarLinksGroup/types.d.ts +10 -0
  43. package/cjs/Sidebar/SidebarLinksGroup/types.js +5 -0
  44. package/cjs/Sidebar/SidebarNav.d.ts +9 -0
  45. package/cjs/Sidebar/SidebarNav.js +46 -0
  46. package/cjs/Sidebar/index.d.ts +7 -4
  47. package/cjs/Sidebar/index.js +61 -21
  48. package/cjs/Sidebar/types.d.ts +6 -2
  49. package/cjs/Tabs/Tabs.tailwind.js +8 -8
  50. package/cjs/Tabs/components/LinkTab.js +7 -9
  51. package/cjs/Tooltip/OverflowTooltipWrapper.js +5 -4
  52. package/cjs/Tooltip/TooltipWrapper.js +5 -4
  53. package/cjs/index.d.ts +0 -1
  54. package/cjs/index.js +0 -14
  55. package/cjs/styles/tailwind.config.js +1 -1
  56. package/cjs/utils/useLinkProps.d.ts +5 -2
  57. package/cjs/utils/useLinkProps.js +9 -2
  58. package/esm/AutoComplete/AutoComplete.js +3 -1
  59. package/esm/DatePicker/components/Modal.js +4 -3
  60. package/esm/Dropdown/Dropdown.js +4 -3
  61. package/esm/Dropdown/components/DropdownButtonItem.js +2 -2
  62. package/esm/Dropdown/components/DropdownLinkItem.js +0 -1
  63. package/esm/Dropdown/useDropdownItemProps.d.ts +9 -1
  64. package/esm/Dropdown/useDropdownItemProps.js +15 -7
  65. package/esm/Flag/Flags.d.ts +1 -1
  66. package/esm/Flag/Flags.js +4 -3
  67. package/esm/Link/ButtonLink.js +1 -10
  68. package/esm/Modal/Modal.d.ts +1 -1
  69. package/esm/Modal/Modal.js +4 -4
  70. package/esm/Satellite/Satellite.d.ts +1 -0
  71. package/esm/Satellite/Satellite.js +3 -1
  72. package/esm/Satellite/SatelliteContext.d.ts +1 -0
  73. package/esm/Satellite/index.d.ts +1 -0
  74. package/esm/Satellite/index.js +1 -0
  75. package/esm/Satellite/locale.d.ts +5 -3
  76. package/esm/Satellite/useCreatePortal.d.ts +4 -0
  77. package/esm/Satellite/useCreatePortal.js +16 -0
  78. package/esm/ScrollIndicator/ScrollIndicator.js +2 -1
  79. package/esm/Sidebar/Sidebar.d.ts +33 -12
  80. package/esm/Sidebar/Sidebar.js +44 -29
  81. package/esm/Sidebar/SidebarButtonLink.d.ts +14 -0
  82. package/esm/Sidebar/SidebarButtonLink.js +92 -0
  83. package/esm/Sidebar/SidebarContext.d.ts +7 -8
  84. package/esm/Sidebar/SidebarContext.js +9 -8
  85. package/esm/Sidebar/SidebarHeader.d.ts +6 -0
  86. package/esm/Sidebar/SidebarHeader.js +15 -0
  87. package/esm/Sidebar/SidebarHeading.d.ts +6 -0
  88. package/esm/Sidebar/SidebarHeading.js +20 -0
  89. package/esm/Sidebar/SidebarLink.d.ts +8 -0
  90. package/esm/Sidebar/SidebarLink.js +42 -0
  91. package/esm/Sidebar/SidebarLinksGroup/ActiveLinkIndicator.d.ts +8 -0
  92. package/esm/Sidebar/SidebarLinksGroup/ActiveLinkIndicator.js +32 -0
  93. package/esm/Sidebar/SidebarLinksGroup/SidebarGroupLink.d.ts +7 -0
  94. package/esm/Sidebar/{components/SidebarHeader.js → SidebarLinksGroup/SidebarGroupLink.js} +13 -19
  95. package/esm/Sidebar/SidebarLinksGroup/SidebarLinksGroup.d.ts +23 -0
  96. package/esm/Sidebar/SidebarLinksGroup/SidebarLinksGroup.js +100 -0
  97. package/esm/Sidebar/SidebarLinksGroup/index.d.ts +2 -0
  98. package/esm/Sidebar/SidebarLinksGroup/index.js +2 -0
  99. package/esm/Sidebar/SidebarLinksGroup/types.d.ts +10 -0
  100. package/esm/Sidebar/SidebarLinksGroup/types.js +1 -0
  101. package/esm/Sidebar/SidebarNav.d.ts +9 -0
  102. package/esm/Sidebar/SidebarNav.js +31 -0
  103. package/esm/Sidebar/index.d.ts +7 -4
  104. package/esm/Sidebar/index.js +7 -4
  105. package/esm/Sidebar/types.d.ts +6 -2
  106. package/esm/Tabs/Tabs.tailwind.js +8 -8
  107. package/esm/Tabs/components/LinkTab.js +7 -9
  108. package/esm/Tooltip/OverflowTooltipWrapper.js +4 -3
  109. package/esm/Tooltip/TooltipWrapper.js +4 -3
  110. package/esm/index.d.ts +0 -1
  111. package/esm/index.js +0 -1
  112. package/esm/styles/tailwind.config.js +1 -1
  113. package/esm/utils/useLinkProps.d.ts +5 -2
  114. package/esm/utils/useLinkProps.js +9 -2
  115. package/package.json +1 -1
  116. package/satellite.min.css +1 -1
  117. package/cjs/Banner/Banner.d.ts +0 -86
  118. package/cjs/Banner/Banner.js +0 -176
  119. package/cjs/Banner/index.d.ts +0 -2
  120. package/cjs/Banner/index.js +0 -32
  121. package/cjs/Sidebar/Sidebar.tailwind.d.ts +0 -5
  122. package/cjs/Sidebar/Sidebar.tailwind.js +0 -66
  123. package/cjs/Sidebar/components/SidebarHeader.d.ts +0 -5
  124. package/cjs/Sidebar/components/SidebarLink.d.ts +0 -10
  125. package/cjs/Sidebar/components/SidebarLink.js +0 -98
  126. package/esm/Banner/Banner.d.ts +0 -86
  127. package/esm/Banner/Banner.js +0 -161
  128. package/esm/Banner/index.d.ts +0 -2
  129. package/esm/Banner/index.js +0 -2
  130. package/esm/Sidebar/Sidebar.tailwind.d.ts +0 -5
  131. package/esm/Sidebar/Sidebar.tailwind.js +0 -64
  132. package/esm/Sidebar/components/SidebarHeader.d.ts +0 -5
  133. package/esm/Sidebar/components/SidebarLink.d.ts +0 -10
  134. package/esm/Sidebar/components/SidebarLink.js +0 -78
@@ -571,6 +571,8 @@ var AutoComplete = /*#__PURE__*/function (_Component) {
571
571
  });
572
572
  });
573
573
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderSelect", function (autocompleteHelpers, fieldState) {
574
+ var _this$context$portalT;
575
+
574
576
  var _this$props5 = _this.props,
575
577
  className = _this$props5.className,
576
578
  options = _this$props5.options,
@@ -588,7 +590,7 @@ var AutoComplete = /*#__PURE__*/function (_Component) {
588
590
 
589
591
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
590
592
  className: className,
591
- children: [_this.renderInput(results, autocompleteHelpers, fieldState), _this.inputContainerRef && /*#__PURE__*/(0, _reactDom.createPortal)(_this.renderMenu(results, autocompleteHelpers), document.body)]
593
+ children: [_this.renderInput(results, autocompleteHelpers, fieldState), _this.inputContainerRef && /*#__PURE__*/(0, _reactDom.createPortal)(_this.renderMenu(results, autocompleteHelpers), (_this$context$portalT = _this.context["portalTarget"]) !== null && _this$context$portalT !== void 0 ? _this$context$portalT : document.body)]
592
594
  });
593
595
  });
594
596
  return _this;
@@ -19,12 +19,12 @@ var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
20
  var _react = require("react");
21
21
 
22
- var _reactDom = require("react-dom");
23
-
24
22
  var _reactPopper = require("react-popper");
25
23
 
26
24
  var _ClickAwayContainer = require("../../ClickAwayContainer");
27
25
 
26
+ var _Satellite = require("../../Satellite");
27
+
28
28
  var _satellitePrefixer = _interopRequireDefault(require("../../styles/helpers/satellitePrefixer"));
29
29
 
30
30
  var _jsxRuntime = require("react/jsx-runtime");
@@ -53,6 +53,7 @@ var Modal = function Modal(_ref) {
53
53
  _ref$modifiers = _ref.modifiers,
54
54
  modifiers = _ref$modifiers === void 0 ? [] : _ref$modifiers,
55
55
  className = _ref.className;
56
+ var createPortal = (0, _Satellite.useCreatePortal)();
56
57
 
57
58
  var _useState = (0, _react.useState)(null),
58
59
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -71,7 +72,7 @@ var Modal = function Modal(_ref) {
71
72
  return null;
72
73
  }
73
74
 
74
- return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickAwayContainer.ClickAwayContainer, {
75
+ return createPortal( /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickAwayContainer.ClickAwayContainer, {
75
76
  element: datePickerElement,
76
77
  onClickAway: function onClickAway(evt) {
77
78
  return _onClickAway === null || _onClickAway === void 0 ? void 0 : _onClickAway(evt);
@@ -83,7 +84,7 @@ var Modal = function Modal(_ref) {
83
84
  style: styles.popper,
84
85
  children: children
85
86
  }))
86
- }), document.body);
87
+ }));
87
88
  };
88
89
 
89
90
  var _default = Modal;
@@ -19,14 +19,14 @@ var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
20
  var _react = require("react");
21
21
 
22
- var _reactDom = require("react-dom");
23
-
24
22
  var _reactPopper = require("react-popper");
25
23
 
26
24
  var _Card = _interopRequireDefault(require("../Card"));
27
25
 
28
26
  var _ClickAwayContainer = require("../ClickAwayContainer");
29
27
 
28
+ var _Satellite = require("../Satellite");
29
+
30
30
  var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
31
31
 
32
32
  var _DropdownButtonItem = _interopRequireDefault(require("./components/DropdownButtonItem"));
@@ -85,6 +85,7 @@ var Dropdown = function Dropdown(_ref) {
85
85
  renderTarget = _ref.renderTarget,
86
86
  renderFooter = _ref.renderFooter,
87
87
  children = _ref.children;
88
+ var createPortal = (0, _Satellite.useCreatePortal)();
88
89
 
89
90
  var _useState = (0, _react.useState)(false),
90
91
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -130,7 +131,7 @@ var Dropdown = function Dropdown(_ref) {
130
131
  className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["inline-block leading-none"]))),
131
132
  ref: setTargetEl,
132
133
  children: target
133
- }), showMenu && targetEl && /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickAwayContainer.ClickAwayContainer, {
134
+ }), showMenu && targetEl && createPortal( /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickAwayContainer.ClickAwayContainer, {
134
135
  element: menuContainerEl,
135
136
  onClickAway: function onClickAway(evt) {
136
137
  var isContainedInTarget = targetEl === null || targetEl === void 0 ? void 0 : targetEl.contains(evt.target);
@@ -152,7 +153,7 @@ var Dropdown = function Dropdown(_ref) {
152
153
  }) : null]
153
154
  })
154
155
  }))
155
- }), document.body)]
156
+ }))]
156
157
  })
157
158
  });
158
159
  };
@@ -23,7 +23,7 @@ var _jsxRuntime = require("react/jsx-runtime");
23
23
 
24
24
  var _templateObject, _templateObject2, _templateObject3;
25
25
 
26
- var _excluded = ["children", "variant", "toggle", "startIcon"];
26
+ var _excluded = ["toggle", "children", "variant", "startIcon"];
27
27
 
28
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
29
 
@@ -33,9 +33,9 @@ var DropdownButtonItem = function DropdownButtonItem(props) {
33
33
  var dropdownItemProps = (0, _useDropdownItemProps["default"])(props);
34
34
 
35
35
  var _props$dropdownItemPr = _objectSpread(_objectSpread({}, props), dropdownItemProps),
36
+ toggle = _props$dropdownItemPr.toggle,
36
37
  children = _props$dropdownItemPr.children,
37
38
  variant = _props$dropdownItemPr.variant,
38
- toggle = _props$dropdownItemPr.toggle,
39
39
  StartIcon = _props$dropdownItemPr.startIcon,
40
40
  mergedProps = (0, _objectWithoutProperties2["default"])(_props$dropdownItemPr, _excluded);
41
41
 
@@ -44,7 +44,6 @@ var DropdownLinkItem = function DropdownLinkItem(props) {
44
44
  mergedProps = (0, _objectWithoutProperties2["default"])(_props$dropdownItemPr, _excluded);
45
45
 
46
46
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("a", _objectSpread(_objectSpread({
47
- tabIndex: disabled ? -1 : undefined,
48
47
  className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["flex items-center"]))), className)
49
48
  }, mergedProps), {}, {
50
49
  children: [StartIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(StartIcon, {
@@ -6,8 +6,16 @@ export interface DropdownBaseItemProps<T extends HTMLElement = HTMLElement> {
6
6
  onClick?: EventHandler<MouseEvent<T>>;
7
7
  }
8
8
  export declare const useDropdownItemProps: <T extends HTMLElement = HTMLElement>(props: DropdownBaseItemProps<T>) => {
9
+ disabled: boolean;
10
+ "aria-disabled": boolean;
11
+ tabIndex: number;
12
+ onClick: undefined;
9
13
  className: string;
14
+ } | {
15
+ disabled?: undefined;
16
+ "aria-disabled"?: undefined;
17
+ tabIndex?: undefined;
10
18
  onClick: (evt: MouseEvent<T, globalThis.MouseEvent>) => void;
11
- disabled: boolean | undefined;
19
+ className: string;
12
20
  };
13
21
  export default useDropdownItemProps;
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.useDropdownItemProps = exports["default"] = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
13
 
12
14
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -17,16 +19,24 @@ var _DropdownContext = require("./DropdownContext");
17
19
 
18
20
  var _templateObject;
19
21
 
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
+
20
26
  var useDropdownItemProps = function useDropdownItemProps(props) {
21
27
  var _useDropdownContext = (0, _DropdownContext.useDropdownContext)(),
22
28
  showMenu = _useDropdownContext.showMenu;
23
29
 
24
30
  var className = (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n flex items-center\n min-h-10 px-4 text-left\n focus:no-underline hover:no-underline\n ", "\n "])), props.disabled ? "text-grey-300 cursor-not-allowed" : "text-inherit hover:bg-grey-100 focus:bg-grey-100 focus:outline-none cursor-pointer"), props.className);
25
- return {
31
+ var disabledProps = props.disabled ? {
32
+ disabled: true,
33
+ "aria-disabled": true,
34
+ tabIndex: -1,
35
+ onClick: undefined
36
+ } : {};
37
+ return _objectSpread({
26
38
  className: className,
27
- onClick: props.disabled ? function (evt) {
28
- return evt.preventDefault();
29
- } : function (evt) {
39
+ onClick: function onClick(evt) {
30
40
  if (props.onClick) {
31
41
  props.onClick(evt);
32
42
  }
@@ -34,9 +44,8 @@ var useDropdownItemProps = function useDropdownItemProps(props) {
34
44
  if (!evt.defaultPrevented && props.toggle) {
35
45
  showMenu(false);
36
46
  }
37
- },
38
- disabled: props.disabled
39
- };
47
+ }
48
+ }, disabledProps);
40
49
  };
41
50
 
42
51
  exports.useDropdownItemProps = useDropdownItemProps;
@@ -44,5 +44,5 @@ export interface FlagsProps {
44
44
  *
45
45
  * When there are multiple flags, they will stack on top of one another with the most recent flag on top. When a user dismisses a flag, any older flags 'below' will come to the top. Careful consideration should be taken to take into account the ordering and priority of flags in the stack. Never use dismissible and non-dismissible flags in a stack as flags that automatically dismiss can do so and not be visible to the user.
46
46
  */
47
- export declare const Flags: ({ notifications }: FlagsProps) => import("react").ReactPortal;
47
+ export declare const Flags: ({ notifications }: FlagsProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
48
48
  export default Flags;
package/cjs/Flag/Flags.js CHANGED
@@ -13,10 +13,10 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _reactDom = require("react-dom");
17
-
18
16
  var _reactTransitionGroup = require("react-transition-group");
19
17
 
18
+ var _Satellite = require("../Satellite");
19
+
20
20
  var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
21
21
 
22
22
  var _Flag = _interopRequireDefault(require("./Flag"));
@@ -73,7 +73,8 @@ var TRANSITION_TIMEOUT = 500;
73
73
  var Flags = function Flags(_ref) {
74
74
  var _ref$notifications = _ref.notifications,
75
75
  notifications = _ref$notifications === void 0 ? [] : _ref$notifications;
76
- return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactTransitionGroup.TransitionGroup, {
76
+ var createPortal = (0, _Satellite.useCreatePortal)();
77
+ return createPortal( /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactTransitionGroup.TransitionGroup, {
77
78
  className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["z-notification bottom-0 right-0 fixed flex flex-col items-end p-4"]))),
78
79
  component: "ul",
79
80
  children: notifications.map(function (_ref2) {
@@ -97,7 +98,7 @@ var Flags = function Flags(_ref) {
97
98
  })
98
99
  }, id);
99
100
  })
100
- }), document.body);
101
+ }));
101
102
  };
102
103
 
103
104
  exports.Flags = Flags;
@@ -36,16 +36,7 @@ var ButtonLink = function ButtonLink(_ref) {
36
36
 
37
37
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], _objectSpread(_objectSpread(_objectSpread({}, props), linkProps), {}, {
38
38
  endIcon: EndIcon,
39
- as: "a",
40
- onClick: function onClick(evt) {
41
- if (props.disabled) {
42
- evt.preventDefault();
43
- } else {
44
- var _linkProps$onClick;
45
-
46
- (_linkProps$onClick = linkProps.onClick) === null || _linkProps$onClick === void 0 ? void 0 : _linkProps$onClick.call(linkProps, evt);
47
- }
48
- }
39
+ as: "a"
49
40
  }));
50
41
  };
51
42
 
@@ -17,7 +17,7 @@ export interface ModalProps {
17
17
  locale?: ModalLocale;
18
18
  }
19
19
  export declare const Modal: {
20
- ({ title, className, children, open, fullBleed, onDismiss, animate, hideCloseIcon, size, centerY, locale: propsLocale, }: ModalProps): import("react").ReactPortal;
20
+ ({ title, className, children, open, fullBleed, onDismiss, animate, hideCloseIcon, size, centerY, locale: propsLocale, }: ModalProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
21
21
  Footer: import("react").FunctionComponent<import("./components/ModalFooter").ModalFooterProps>;
22
22
  };
23
23
  export default Modal;
@@ -17,8 +17,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
17
17
 
18
18
  var _react = require("react");
19
19
 
20
- var _reactDom = require("react-dom");
21
-
22
20
  var _reactFeather = require("react-feather");
23
21
 
24
22
  var _reactTransitionGroup = require("react-transition-group");
@@ -95,6 +93,7 @@ var Modal = function Modal(_ref) {
95
93
  _ref$centerY = _ref.centerY,
96
94
  centerY = _ref$centerY === void 0 ? false : _ref$centerY,
97
95
  propsLocale = _ref.locale;
96
+ var createPortal = (0, _Satellite.useCreatePortal)();
98
97
  var contextLocale = (0, _Satellite.useLocale)("modal");
99
98
 
100
99
  var locale = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_MODAL_LOCALE), contextLocale), propsLocale);
@@ -150,7 +149,7 @@ var Modal = function Modal(_ref) {
150
149
  "aria-label": "Modal"
151
150
  });
152
151
 
153
- return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/(0, _jsxRuntime.jsx)(ModalContainer, {
152
+ return createPortal( /*#__PURE__*/(0, _jsxRuntime.jsx)(ModalContainer, {
154
153
  "in": open,
155
154
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
156
155
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -184,7 +183,7 @@ var Modal = function Modal(_ref) {
184
183
  })
185
184
  }))]
186
185
  })
187
- }), document.body);
186
+ }));
188
187
  };
189
188
 
190
189
  exports.Modal = Modal;
@@ -4,6 +4,7 @@ import type { SatelliteRouter } from "./SatelliteRouter";
4
4
  export interface SatelliteProps {
5
5
  router?: SatelliteRouter;
6
6
  locales?: ComponentsLocales;
7
+ portalTarget?: HTMLElement;
7
8
  children: ReactNode;
8
9
  }
9
10
  export declare const Satellite: FunctionComponent<SatelliteProps>;
@@ -17,11 +17,13 @@ var Satellite = function Satellite(_ref) {
17
17
  var _ref$router = _ref.router,
18
18
  router = _ref$router === void 0 ? _SatelliteRouter.router : _ref$router,
19
19
  locales = _ref.locales,
20
+ portalTarget = _ref.portalTarget,
20
21
  children = _ref.children;
21
22
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SatelliteContext["default"].Provider, {
22
23
  value: {
23
24
  router: router,
24
- locales: locales
25
+ locales: locales,
26
+ portalTarget: portalTarget
25
27
  },
26
28
  children: children
27
29
  });
@@ -4,6 +4,7 @@ import { SatelliteRouter } from "./SatelliteRouter";
4
4
  export interface SatelliteContextType {
5
5
  router: SatelliteRouter;
6
6
  locales?: ComponentsLocales;
7
+ portalTarget?: HTMLElement;
7
8
  }
8
9
  export declare const SatelliteContext: import("react").Context<SatelliteContextType>;
9
10
  export declare const useSatelliteContext: () => SatelliteContextType;
@@ -2,4 +2,5 @@ export * from "./Satellite";
2
2
  export * from "./SatelliteContext";
3
3
  export * from "./SatelliteRouter";
4
4
  export * from "./locale";
5
+ export * from "./useCreatePortal";
5
6
  export { default } from "./Satellite";
@@ -69,6 +69,20 @@ Object.keys(_locale).forEach(function (key) {
69
69
  });
70
70
  });
71
71
 
72
+ var _useCreatePortal = require("./useCreatePortal");
73
+
74
+ Object.keys(_useCreatePortal).forEach(function (key) {
75
+ if (key === "default" || key === "__esModule") return;
76
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
77
+ if (key in exports && exports[key] === _useCreatePortal[key]) return;
78
+ Object.defineProperty(exports, key, {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _useCreatePortal[key];
82
+ }
83
+ });
84
+ });
85
+
72
86
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
73
87
 
74
88
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -8,20 +8,22 @@ import type { ModalLocale } from "../Modal";
8
8
  import type { PaginationLocale } from "../Pagination";
9
9
  import type { CompactPaginationLocale } from "../Pagination/CompactPagination";
10
10
  import type { DotPaginationLocale } from "../Pagination/DotPagination";
11
+ import type { SidebarLocale } from "../Sidebar";
11
12
  import type { DataTableLocale } from "../Tables/DataTable";
12
13
  import type { TagLocale } from "../Tag";
13
14
  export declare type ComponentsLocales = {
14
15
  announcementBadge?: AnnouncementBadgeLocale;
15
16
  autoComplete?: AutoCompleteLocale;
17
+ compactPagination?: CompactPaginationLocale;
18
+ dataTable?: DataTableLocale;
16
19
  datePicker?: DatePickerLocale;
20
+ dotPagination?: DotPaginationLocale;
17
21
  dropzone?: DropzoneLocale;
18
22
  flag?: FlagLocale;
19
23
  input?: InputPropsLocale;
20
24
  modal?: ModalLocale;
21
- compactPagination?: CompactPaginationLocale;
22
- dotPagination?: DotPaginationLocale;
23
25
  pagination?: PaginationLocale;
24
- dataTable?: DataTableLocale;
26
+ sidebar?: SidebarLocale;
25
27
  tag?: TagLocale;
26
28
  };
27
29
  export declare const useLocale: <ComponentKey extends keyof ComponentsLocales>(componentKey: ComponentKey) => ComponentsLocales[ComponentKey];
@@ -0,0 +1,4 @@
1
+ import { ReactElement, ReactNode } from "react";
2
+ declare type CreatePortal = (children: ReactNode) => ReactElement;
3
+ export declare const useCreatePortal: () => CreatePortal;
4
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCreatePortal = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _reactDom = require("react-dom");
11
+
12
+ var _SatelliteContext = require("./SatelliteContext");
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ var useCreatePortal = function useCreatePortal() {
17
+ var _useSatelliteContext = (0, _SatelliteContext.useSatelliteContext)(),
18
+ portalTarget = _useSatelliteContext.portalTarget; // SSR? Too bad! Abort, abort!
19
+
20
+
21
+ if (typeof document === "undefined") return function () {
22
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {});
23
+ };
24
+ return function (children) {
25
+ return /*#__PURE__*/(0, _reactDom.createPortal)(children, portalTarget !== null && portalTarget !== void 0 ? portalTarget : document.body);
26
+ };
27
+ };
28
+
29
+ exports.useCreatePortal = useCreatePortal;
@@ -100,7 +100,8 @@ var ScrollIndicator = function ScrollIndicator(_ref) {
100
100
  children: /*#__PURE__*/(0, _react.createElement)(tagName, {
101
101
  style: style,
102
102
  className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["scroll-indicator-content"]))), className),
103
- ref: setScrollIndicatorsRef
103
+ ref: setScrollIndicatorsRef,
104
+ tabIndex: 0
104
105
  }, children)
105
106
  });
106
107
  };
@@ -1,14 +1,35 @@
1
- import type { DetailedHTMLProps, HTMLAttributes } from "react";
2
- import type { SidebarCollapsed, SidebarVariant } from "./types";
3
- export interface SidebarProps extends DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement> {
4
- /** @default "dark" */
1
+ import type { FC, ReactNode } from "react";
2
+ import type { SidebarLocale, SidebarLocation, SidebarVariant } from "./types";
3
+ export interface SidebarProps {
4
+ id?: string;
5
+ className?: string;
6
+ label?: string;
7
+ locale?: SidebarLocale;
8
+ collapsed?: boolean;
9
+ /**
10
+ * As the name of the variants imply,
11
+ * - `primary` should be used for your first level of navigation
12
+ * - `secondary` should be used for your second level of navigation
13
+ */
5
14
  variant?: SidebarVariant;
6
- /** @default false */
7
- collapsed?: SidebarCollapsed;
15
+ /**
16
+ * Used to determine whether a link should be highlighted as "active"
17
+ * Ideally only one link should be shown as active at any given time.
18
+ *
19
+ * @example <caption>with a location of /foo/bar</caption>
20
+ * isLinkActive('/foo', location) // returns true
21
+ *
22
+ * @example <caption>with a location of /bar</caption>
23
+ * isLinkActive('/foo', location) // returns false
24
+ *
25
+ * */
26
+ isLinkActive?: (href: string, location: SidebarLocation) => boolean;
27
+ /**
28
+ * location is used in conjunction with `isLinkActive` to display active links properly.
29
+ * It is injected from outside so that it can work with different router libraries and
30
+ * re-render when necessary.
31
+ */
32
+ location: SidebarLocation;
33
+ children?: ReactNode;
8
34
  }
9
- export declare const Sidebar: {
10
- ({ className, variant, collapsed, children, ...navProps }: SidebarProps): JSX.Element;
11
- Header: ({ className, children, ...headingProps }: import("./components/SidebarHeader").SidebarHeaderProps) => JSX.Element;
12
- Link: import("react").FunctionComponent<import("./components/SidebarLink").SidebarLinkProps>;
13
- };
14
- export default Sidebar;
35
+ export declare const Sidebar: FC<SidebarProps>;
@@ -2,70 +2,80 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- exports["default"] = exports.Sidebar = void 0;
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+ exports.Sidebar = void 0;
13
9
 
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
11
 
16
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
13
 
18
14
  var _classnames = _interopRequireDefault(require("classnames"));
19
15
 
20
16
  var _react = require("react");
21
17
 
22
- var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
23
-
24
- var _SidebarHeader = _interopRequireDefault(require("./components/SidebarHeader"));
18
+ var _Satellite = require("../Satellite");
25
19
 
26
- var _SidebarLink = _interopRequireDefault(require("./components/SidebarLink"));
20
+ var _ScrollIndicator = _interopRequireDefault(require("../ScrollIndicator"));
27
21
 
28
- var _SidebarContext = _interopRequireWildcard(require("./SidebarContext"));
29
-
30
- var _jsxRuntime = require("react/jsx-runtime");
22
+ var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
31
23
 
32
- var _templateObject;
24
+ var _matchLocation = _interopRequireDefault(require("../utils/matchLocation"));
33
25
 
34
- var _excluded = ["className", "variant", "collapsed", "children"];
26
+ var _SidebarContext = require("./SidebarContext");
35
27
 
36
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
+ var _jsxRuntime = require("react/jsx-runtime");
37
29
 
38
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
+ var _templateObject, _templateObject2, _templateObject3;
39
31
 
40
32
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
33
 
42
34
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
43
35
 
36
+ var DEFAULT_SIDEBAR_LOCALE = {
37
+ primarySidebarLabel: "Primary Navigation Sidebar",
38
+ secondarySidebarLabel: "Secondary Navigation Sidebar"
39
+ };
40
+
44
41
  var Sidebar = function Sidebar(_ref) {
45
- var className = _ref.className,
42
+ var id = _ref.id,
43
+ className = _ref.className,
44
+ labelProp = _ref.label,
45
+ localeProp = _ref.locale,
46
46
  _ref$variant = _ref.variant,
47
- variant = _ref$variant === void 0 ? _SidebarContext.SIDEBAR_CONTEXT_DEFAULT.variant : _ref$variant,
47
+ variant = _ref$variant === void 0 ? "primary" : _ref$variant,
48
48
  _ref$collapsed = _ref.collapsed,
49
- collapsed = _ref$collapsed === void 0 ? _SidebarContext.SIDEBAR_CONTEXT_DEFAULT.collapsed : _ref$collapsed,
50
- children = _ref.children,
51
- navProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
52
- var sidebarContext = (0, _react.useMemo)(function () {
53
- return {
49
+ collapsed = _ref$collapsed === void 0 ? false : _ref$collapsed,
50
+ _ref$isLinkActive = _ref.isLinkActive,
51
+ isLinkActiveProp = _ref$isLinkActive === void 0 ? _matchLocation["default"] : _ref$isLinkActive,
52
+ location = _ref.location,
53
+ children = _ref.children;
54
+ var isLinkActive = (0, _react.useCallback)(function (href) {
55
+ return isLinkActiveProp(href, location);
56
+ }, [isLinkActiveProp, location]);
57
+ var contextLocale = (0, _Satellite.useLocale)("sidebar");
58
+
59
+ var locale = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_SIDEBAR_LOCALE), contextLocale), localeProp);
60
+
61
+ var label = typeof labelProp === "string" ? labelProp : variant === "primary" ? locale.primarySidebarLabel : locale.secondarySidebarLabel;
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SidebarContext.SidebarContext.Provider, {
63
+ value: {
64
+ collapsed: collapsed,
54
65
  variant: variant,
55
- collapsed: collapsed
56
- };
57
- }, [variant, collapsed]);
58
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SidebarContext["default"].Provider, {
59
- value: sidebarContext,
60
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("nav", _objectSpread(_objectSpread({}, navProps), {}, {
61
- className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["sidebar ", " ", " display-body"])), variant === "light" && "sidebar-light", collapsed && "sidebar-collapsed"), className),
62
- children: children
63
- }))
66
+ isLinkActive: isLinkActive
67
+ },
68
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("aside", {
69
+ id: id,
70
+ "aria-label": label,
71
+ className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display-body border-r border-grey-200/50\n ", "\n ", "\n "])), collapsed ? "w-14" : "w-56", variant === "primary" ? "bg-grey-100" : "bg-white"), className),
72
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollIndicator["default"], {
73
+ wrapperClassName: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["h-full"]))),
74
+ className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["relative px-3 pb-7 flex flex-col no-scrollbar"]))),
75
+ children: children
76
+ })
77
+ })
64
78
  });
65
79
  };
66
80
 
67
- exports.Sidebar = Sidebar;
68
- Sidebar.Header = _SidebarHeader["default"];
69
- Sidebar.Link = _SidebarLink["default"];
70
- var _default = Sidebar;
71
- exports["default"] = _default;
81
+ exports.Sidebar = Sidebar;
@@ -0,0 +1,14 @@
1
+ import type { FC, MouseEventHandler, ReactNode } from "react";
2
+ import type { IconComponentType } from "../types";
3
+ export declare type SidebarButtonLinkIcon = IconComponentType | {
4
+ active: IconComponentType;
5
+ inactive: IconComponentType;
6
+ };
7
+ export interface SidebarButtonLinkProps {
8
+ id?: string;
9
+ icon: SidebarButtonLinkIcon;
10
+ href: string;
11
+ children: ReactNode;
12
+ onClick?: MouseEventHandler<HTMLAnchorElement>;
13
+ }
14
+ export declare const SidebarButtonLink: FC<SidebarButtonLinkProps>;