@elliemae/ds-popover 2.3.0-alpha.9 → 2.3.0-next.3

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 (57) hide show
  1. package/cjs/Arrow.js +63 -0
  2. package/cjs/DSPopover.js +167 -0
  3. package/cjs/Popover.js +66 -0
  4. package/cjs/PopoverTrigger.js +68 -0
  5. package/cjs/index.js +23 -0
  6. package/cjs/usePopover.js +41 -0
  7. package/cjs/usePopoverProviderState.js +75 -0
  8. package/cjs/usePopper.js +123 -0
  9. package/esm/Arrow.js +55 -0
  10. package/esm/DSPopover.js +148 -0
  11. package/esm/Popover.js +57 -0
  12. package/esm/PopoverTrigger.js +58 -0
  13. package/esm/index.js +4 -0
  14. package/esm/usePopover.js +34 -0
  15. package/esm/usePopoverProviderState.js +69 -0
  16. package/esm/usePopper.js +116 -0
  17. package/package.json +35 -37
  18. package/{dist/types → types}/Arrow.d.ts +0 -0
  19. package/{dist/types → types}/DSPopover.d.ts +0 -0
  20. package/{dist/types → types}/Popover.d.ts +0 -0
  21. package/{dist/types → types}/PopoverTrigger.d.ts +0 -0
  22. package/{dist/types → types}/index.d.ts +0 -0
  23. package/{dist/types → types}/usePopover.d.ts +0 -0
  24. package/{dist/types → types}/usePopoverProviderState.d.ts +0 -0
  25. package/{dist/types → types}/usePopper.d.ts +0 -0
  26. package/dist/cjs/Arrow.js +0 -62
  27. package/dist/cjs/Arrow.js.map +0 -7
  28. package/dist/cjs/DSPopover.js +0 -155
  29. package/dist/cjs/DSPopover.js.map +0 -7
  30. package/dist/cjs/Popover.js +0 -73
  31. package/dist/cjs/Popover.js.map +0 -7
  32. package/dist/cjs/PopoverTrigger.js +0 -72
  33. package/dist/cjs/PopoverTrigger.js.map +0 -7
  34. package/dist/cjs/index.js +0 -36
  35. package/dist/cjs/index.js.map +0 -7
  36. package/dist/cjs/usePopover.js +0 -45
  37. package/dist/cjs/usePopover.js.map +0 -7
  38. package/dist/cjs/usePopoverProviderState.js +0 -85
  39. package/dist/cjs/usePopoverProviderState.js.map +0 -7
  40. package/dist/cjs/usePopper.js +0 -135
  41. package/dist/cjs/usePopper.js.map +0 -7
  42. package/dist/esm/Arrow.js +0 -33
  43. package/dist/esm/Arrow.js.map +0 -7
  44. package/dist/esm/DSPopover.js +0 -126
  45. package/dist/esm/DSPopover.js.map +0 -7
  46. package/dist/esm/Popover.js +0 -44
  47. package/dist/esm/Popover.js.map +0 -7
  48. package/dist/esm/PopoverTrigger.js +0 -43
  49. package/dist/esm/PopoverTrigger.js.map +0 -7
  50. package/dist/esm/index.js +0 -7
  51. package/dist/esm/index.js.map +0 -7
  52. package/dist/esm/usePopover.js +0 -16
  53. package/dist/esm/usePopover.js.map +0 -7
  54. package/dist/esm/usePopoverProviderState.js +0 -56
  55. package/dist/esm/usePopoverProviderState.js.map +0 -7
  56. package/dist/esm/usePopper.js +0 -106
  57. package/dist/esm/usePopper.js.map +0 -7
package/cjs/Arrow.js ADDED
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ require('core-js/modules/esnext.async-iterator.filter.js');
4
+ require('core-js/modules/esnext.iterator.constructor.js');
5
+ require('core-js/modules/esnext.iterator.filter.js');
6
+ require('core-js/modules/esnext.async-iterator.for-each.js');
7
+ require('core-js/modules/esnext.iterator.for-each.js');
8
+ var _jsx = require('@babel/runtime/helpers/jsx');
9
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
10
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
11
+ var react = require('react');
12
+ var dsClassnames = require('@elliemae/ds-classnames');
13
+ var dsPopper = require('@elliemae/ds-popper');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
19
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
20
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
21
+
22
+ var _svg;
23
+
24
+ const _excluded = ["style", "className", "innerRef", "blockName", "placement"];
25
+
26
+ 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; }
27
+
28
+ 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) { _defineProperty__default["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; }
29
+ const ArrowWrapper = dsClassnames.aggregatedClasses('span')('popover', 'arrow');
30
+
31
+ function Arrow(_ref) {
32
+ let {
33
+ style,
34
+ className,
35
+ innerRef,
36
+ blockName = 'popover',
37
+ placement
38
+ } = _ref,
39
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded);
40
+
41
+ return /*#__PURE__*/jsxRuntime.jsx(ArrowWrapper, _objectSpread(_objectSpread({
42
+ className: className,
43
+ "data-placement": placement
44
+ }, otherProps), {}, {
45
+ innerRef: innerRef,
46
+ style: _objectSpread(_objectSpread({}, style), dsPopper.getArrowStylesBySize(placement, 25)),
47
+ children: _svg || (_svg = /*#__PURE__*/_jsx__default["default"]("svg", {
48
+ viewBox: "0 0 30 30"
49
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("path", {
50
+ className: "stroke",
51
+ d: "M23.7,27.1L17,19.9C16.5,19.3,15.8,19,15,19s-1.6,0.3-2.1,0.9l-6.6,7.2C5.3,28.1,3.4,29,2,29h26 C26.7,29,24.6,28.1,23.7,27.1z"
52
+ }), /*#__PURE__*/_jsx__default["default"]("path", {
53
+ className: "fill",
54
+ d: "M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"
55
+ })))
56
+ }));
57
+ }
58
+
59
+ var Arrow$1 = /*#__PURE__*/react.forwardRef((props, ref) => /*#__PURE__*/jsxRuntime.jsx(Arrow, _objectSpread(_objectSpread({}, props), {}, {
60
+ innerRef: ref || props.innerRef
61
+ })));
62
+
63
+ module.exports = Arrow$1;
@@ -0,0 +1,167 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ require('core-js/modules/web.dom-collections.iterator.js');
8
+ require('core-js/modules/esnext.async-iterator.filter.js');
9
+ require('core-js/modules/esnext.iterator.constructor.js');
10
+ require('core-js/modules/esnext.iterator.filter.js');
11
+ require('core-js/modules/esnext.async-iterator.for-each.js');
12
+ require('core-js/modules/esnext.iterator.for-each.js');
13
+ require('react');
14
+ var reactDesc = require('react-desc');
15
+ var dsUtilities = require('@elliemae/ds-utilities');
16
+ var dsHidden = require('@elliemae/ds-hidden');
17
+ var Popover = require('./Popover.js');
18
+ var usePopper = require('./usePopper.js');
19
+ var Arrow = require('./Arrow.js');
20
+ var usePopoverProviderState = require('./usePopoverProviderState.js');
21
+ var jsxRuntime = require('react/jsx-runtime');
22
+ var dsPopper = require('@elliemae/ds-popper');
23
+
24
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
+
26
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
27
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
28
+
29
+ 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; }
30
+
31
+ 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) { _defineProperty__default["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; }
32
+ const Interaction = {
33
+ CLICK: 'click',
34
+ HOVER: 'hover'
35
+ };
36
+ /* Unstable Popover, not yet fully working */
37
+
38
+ const DSPopover = _ref => {
39
+ let {
40
+ containerProps,
41
+ content,
42
+ // react component inside the popover to render its content
43
+ renderer,
44
+ // function to render the popover component, ex: (popoverProps) => (<div {...popoverProps}></div>)
45
+ visible: visibleProp,
46
+ offset,
47
+ showArrow,
48
+ // popper props options
49
+ placement,
50
+ boundaries,
51
+ // scrollParent | window | viewport
52
+ modifiers,
53
+ referenceEl,
54
+ renderTrigger,
55
+ onClickOutside,
56
+ destroyOnHidden,
57
+ interactionType,
58
+ isOpen,
59
+ style
60
+ } = _ref;
61
+ const {
62
+ visible,
63
+ onShow,
64
+ onHide,
65
+ onToggle
66
+ } = dsHidden.useHiddenController(visibleProp);
67
+ const {
68
+ reference,
69
+ popper,
70
+ arrow,
71
+ popperData
72
+ } = usePopper({
73
+ placement,
74
+ showArrow,
75
+ boundaries,
76
+ modifiers,
77
+ offset,
78
+ referenceEl,
79
+ eventsEnabled: visible,
80
+ isOpen
81
+ });
82
+ const hoverHandlers = dsUtilities.useHoverHandlersDelay({
83
+ onMouseOver: onShow,
84
+ onMouseLeave: onHide
85
+ });
86
+ const isPopoverVisible = visible || isOpen;
87
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
88
+ children: [renderTrigger(_objectSpread(_objectSpread({}, reference), {}, {
89
+ handlers: interactionType === 'click' ? {
90
+ onClick: onToggle
91
+ } : hoverHandlers,
92
+ onShow,
93
+ onToggle,
94
+ onHide,
95
+ 'aria-haspopup': true,
96
+ 'aria-expanded': visible
97
+ })), isPopoverVisible && reference.ref && /*#__PURE__*/_jsx__default["default"](Popover, {
98
+ containerProps: containerProps,
99
+ destroyOnHidden: destroyOnHidden,
100
+ interactionType: interactionType,
101
+ isOpen: isOpen,
102
+ onClickOutside: function () {
103
+ onClickOutside(...arguments);
104
+ if (interactionType === 'click') onHide();
105
+ },
106
+ popperProps: popper,
107
+ renderer: renderer && (props => renderer(_objectSpread(_objectSpread({}, props), {}, {
108
+ onShow,
109
+ onToggle,
110
+ onHide
111
+ }))),
112
+ style: style,
113
+ visible: isPopoverVisible
114
+ }, void 0, showArrow && /*#__PURE__*/jsxRuntime.jsx(Arrow, _objectSpread(_objectSpread({}, arrow), {}, {
115
+ placement: popperData.placement
116
+ })), isPopoverVisible && content)]
117
+ });
118
+ };
119
+
120
+ DSPopover.defaultProps = {
121
+ containerProps: {},
122
+ renderer: undefined,
123
+ visible: undefined,
124
+ offset: undefined,
125
+ showArrow: false,
126
+ placement: 'top',
127
+ modifiers: {},
128
+ renderTrigger: () => null,
129
+ onClickOutside: () => null,
130
+ destroyOnHidden: true,
131
+ isOpen: undefined
132
+ };
133
+ const popoverProps = {
134
+ containerProps: reactDesc.PropTypes.shape({}).description('Set of Properties attached to the main container'),
135
+ destroyOnHidden: reactDesc.PropTypes.bool.description('destroy popover on hidden or not').defaultValue(true),
136
+ renderer: reactDesc.PropTypes.func.description('custom renderer'),
137
+ popperProps: reactDesc.PropTypes.object.description('Popper props attached to container'),
138
+ visible: reactDesc.PropTypes.bool.description('is visible or not').defaultValue(false),
139
+ content: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.element, reactDesc.PropTypes.string]).description('popover content'),
140
+ onClickOutside: reactDesc.PropTypes.func.description('function called on click outside'),
141
+ interaction: reactDesc.PropTypes.string.description('interaction type: hover, click'),
142
+ offset: reactDesc.PropTypes.object.description('offset'),
143
+ showArrow: reactDesc.PropTypes.bool.description('show tooltip arrow or not'),
144
+ placement: reactDesc.PropTypes.string.description('popover placement: top, bottom, right, left'),
145
+ boundaries: reactDesc.PropTypes.string.description('popover boundaries'),
146
+ modifiers: reactDesc.PropTypes.object.description('modifiers'),
147
+ style: reactDesc.PropTypes.object.description('css style object'),
148
+ referenceEl: reactDesc.PropTypes.element.description('reference element'),
149
+ renderTrigger: reactDesc.PropTypes.func.description('render trigger element'),
150
+ interactionType: reactDesc.PropTypes.string.description('interaction type'),
151
+ isOpen: reactDesc.PropTypes.bool.description('open or not').defaultValue(false)
152
+ };
153
+ const PopoverWithSchema = reactDesc.describe(DSPopover);
154
+ PopoverWithSchema.propTypes = popoverProps;
155
+
156
+ exports.usePopper = usePopper;
157
+ exports.usePopoverProviderState = usePopoverProviderState;
158
+ exports.DSPopover = DSPopover;
159
+ exports.Interaction = Interaction;
160
+ exports.PopoverWithSchema = PopoverWithSchema;
161
+ exports["default"] = DSPopover;
162
+ Object.keys(dsPopper).forEach(function (k) {
163
+ if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
164
+ enumerable: true,
165
+ get: function () { return dsPopper[k]; }
166
+ });
167
+ });
package/cjs/Popover.js ADDED
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ require('core-js/modules/esnext.async-iterator.filter.js');
4
+ require('core-js/modules/esnext.iterator.constructor.js');
5
+ require('core-js/modules/esnext.iterator.filter.js');
6
+ require('core-js/modules/esnext.async-iterator.for-each.js');
7
+ require('core-js/modules/esnext.iterator.for-each.js');
8
+ var _jsx = require('@babel/runtime/helpers/jsx');
9
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
10
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
11
+ var react = require('react');
12
+ var lodash = require('lodash');
13
+ var dsClassnames = require('@elliemae/ds-classnames');
14
+ var dsUtilities = require('@elliemae/ds-utilities');
15
+ var dsHidden = require('@elliemae/ds-hidden');
16
+ var DSPortal = require('@elliemae/ds-portal');
17
+ var jsxRuntime = require('react/jsx-runtime');
18
+
19
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
+
21
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
22
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
23
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
24
+ var DSPortal__default = /*#__PURE__*/_interopDefaultLegacy(DSPortal);
25
+
26
+ const _excluded = ["containerProps", "destroyOnHidden", "renderer", "popperProps", "visible", "content", "onClickOutside", "style"];
27
+
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
+
30
+ 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) { _defineProperty__default["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; }
31
+ const blockName = 'popover';
32
+ const PopoverComponent = dsClassnames.aggregatedClasses('div')(blockName);
33
+
34
+ function Popover(_ref) {
35
+ let {
36
+ containerProps,
37
+ destroyOnHidden = true,
38
+ renderer = undefined,
39
+ popperProps = {},
40
+ visible = false,
41
+ content = undefined,
42
+ onClickOutside = () => null,
43
+ style
44
+ } = _ref,
45
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded);
46
+
47
+ const popoverRef = react.useRef();
48
+ const hiddenTransitionProps = dsHidden.useHiddenTransition({
49
+ visible
50
+ });
51
+ const popoverProps = dsUtilities.removeUndefinedProperties(_objectSpread(_objectSpread({
52
+ containerprops: containerProps,
53
+ content,
54
+ ref: popoverRef
55
+ }, otherProps), hiddenTransitionProps));
56
+ dsUtilities.useOnClickOutside(popoverRef, onClickOutside);
57
+ const wrapStyle = lodash.omit(style, 'zIndex') || {};
58
+ return destroyOnHidden && !hiddenTransitionProps.destroyed && /*#__PURE__*/_jsx__default["default"](DSPortal__default["default"], {}, void 0, /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, popperProps), {}, {
59
+ style: _objectSpread(_objectSpread({}, style), popperProps.style),
60
+ children: dsUtilities.isFunction(renderer) ? renderer(popoverProps) : /*#__PURE__*/jsxRuntime.jsx(PopoverComponent, _objectSpread(_objectSpread({}, popoverProps), {}, {
61
+ style: wrapStyle
62
+ }))
63
+ })));
64
+ }
65
+
66
+ module.exports = Popover;
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
11
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
+ require('react');
13
+ var jsxRuntime = require('react/jsx-runtime');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
18
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
19
+
20
+ const _excluded = ["as"];
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) { _defineProperty__default["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
+ const Interaction = {
26
+ CLICK: 'click',
27
+ HOVER: 'hover'
28
+ };
29
+
30
+ const noop = () => {};
31
+
32
+ function useHiddenTrigger(_ref) {
33
+ let {
34
+ hiddenId,
35
+ visible = false,
36
+ interaction = 'click',
37
+ onToggle = noop,
38
+ onShow = noop,
39
+ onHide = noop
40
+ } = _ref;
41
+ const handlers = {
42
+ [Interaction.CLICK]: {
43
+ onClick: onToggle
44
+ },
45
+ [Interaction.HOVER]: {
46
+ onMouseEnter: onShow,
47
+ onMouseLeave: onHide
48
+ }
49
+ };
50
+ return _objectSpread(_objectSpread({
51
+ 'aria-expanded': visible
52
+ }, handlers[interaction]), {}, {
53
+ 'aria-controls': hiddenId
54
+ });
55
+ }
56
+
57
+ function PopoverTrigger(_ref2) {
58
+ let {
59
+ as: Component
60
+ } = _ref2,
61
+ props = _objectWithoutProperties__default["default"](_ref2, _excluded);
62
+
63
+ const hiddenTriggerProps = useHiddenTrigger(props);
64
+ return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, hiddenTriggerProps));
65
+ }
66
+
67
+ exports.Interaction = Interaction;
68
+ exports["default"] = PopoverTrigger;
package/cjs/index.js ADDED
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var DSPopover = require('./DSPopover.js');
6
+ var dsPopper = require('@elliemae/ds-popper');
7
+ var usePopper = require('./usePopper.js');
8
+ var usePopoverProviderState = require('./usePopoverProviderState.js');
9
+
10
+
11
+
12
+ exports.DSPopover = DSPopover.DSPopover;
13
+ exports.Interaction = DSPopover.Interaction;
14
+ exports.PopoverWithSchema = DSPopover.PopoverWithSchema;
15
+ exports["default"] = DSPopover.DSPopover;
16
+ exports.usePopper = usePopper;
17
+ exports.usePopoverProviderState = usePopoverProviderState;
18
+ Object.keys(dsPopper).forEach(function (k) {
19
+ if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
20
+ enumerable: true,
21
+ get: function () { return dsPopper[k]; }
22
+ });
23
+ });
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ require('core-js/modules/esnext.async-iterator.filter.js');
4
+ require('core-js/modules/esnext.iterator.constructor.js');
5
+ require('core-js/modules/esnext.iterator.filter.js');
6
+ require('core-js/modules/esnext.async-iterator.for-each.js');
7
+ require('core-js/modules/esnext.iterator.for-each.js');
8
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
9
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
10
+ var usePopper = require('./usePopper.js');
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
15
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
16
+
17
+ const _excluded = ["reference", "popper", "arrow"];
18
+
19
+ 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; }
20
+
21
+ 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) { _defineProperty__default["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; }
22
+
23
+ function usePopover(_ref) {
24
+ let otherProps = Object.assign({}, _ref);
25
+
26
+ const _usePopper = usePopper(otherProps),
27
+ {
28
+ reference,
29
+ popper,
30
+ arrow
31
+ } = _usePopper,
32
+ popperProps = _objectWithoutProperties__default["default"](_usePopper, _excluded);
33
+
34
+ return _objectSpread({
35
+ triggerProps: _objectSpread({}, reference),
36
+ popoverProps: _objectSpread({}, popper),
37
+ arrowProps: _objectSpread({}, arrow)
38
+ }, popperProps);
39
+ }
40
+
41
+ module.exports = usePopover;
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ require('core-js/modules/web.dom-collections.iterator.js');
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var react = require('react');
11
+ var lodash = require('lodash');
12
+ var dsUtilities = require('@elliemae/ds-utilities');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
17
+
18
+ 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; }
19
+
20
+ 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) { _defineProperty__default["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; }
21
+
22
+ function usePopoverProviderState(_ref) {
23
+ let {
24
+ initialState = {
25
+ reference: null,
26
+ visible: false,
27
+ value: '',
28
+ options: {}
29
+ },
30
+ delay
31
+ } = _ref;
32
+ const triggerRef = react.useRef();
33
+ const [tooltipState, setTooltipState] = react.useState(initialState);
34
+
35
+ const show = state => {
36
+ setTooltipState(prevState => _objectSpread(_objectSpread(_objectSpread({}, prevState), state), {}, {
37
+ visible: true
38
+ }));
39
+ };
40
+
41
+ const hide = state => {
42
+ setTooltipState(prevState => _objectSpread(_objectSpread(_objectSpread({}, prevState), state), {}, {
43
+ visible: false
44
+ }));
45
+ };
46
+
47
+ const [showTooltip, hideTooltip] = dsUtilities.useExecutionTimer(show, hide, delay);
48
+
49
+ const handleShowTooltip = (state, e) => {
50
+ triggerRef.current = e.target;
51
+ showTooltip(_objectSpread(_objectSpread({}, state), {}, {
52
+ reference: e.target
53
+ }));
54
+ };
55
+
56
+ const handleHideTooltip = state => {
57
+ hideTooltip(state);
58
+ };
59
+
60
+ react.useEffect(() => {
61
+ window.addEventListener('scroll', lodash.throttle(handleHideTooltip, 300), true);
62
+ window.addEventListener('click', handleHideTooltip, true);
63
+ return () => {
64
+ window.removeEventListener('scroll', lodash.throttle(handleHideTooltip, 300), true);
65
+ window.addEventListener('click', handleHideTooltip, true);
66
+ };
67
+ }, [tooltipState.reference]);
68
+ return {
69
+ show: handleShowTooltip,
70
+ hide: handleHideTooltip,
71
+ state: tooltipState
72
+ };
73
+ }
74
+
75
+ module.exports = usePopoverProviderState;
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ require('core-js/modules/web.dom-collections.iterator.js');
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var Popper = require('popper.js');
11
+ var react = require('react');
12
+
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
16
+ var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);
17
+
18
+ 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; }
19
+
20
+ 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) { _defineProperty__default["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; }
21
+
22
+ function calculateOffset(_ref) {
23
+ let {
24
+ offset,
25
+ showArrow
26
+ } = _ref;
27
+ const arrowSize = 10;
28
+ const defaultPadding = 3;
29
+ return {
30
+ enabled: showArrow || offset,
31
+ offset: Array.isArray(offset) ? "".concat(offset[0], ", ").concat((offset[1] || offset[0]) + arrowSize + defaultPadding) : "0, ".concat(arrowSize + defaultPadding)
32
+ };
33
+ }
34
+
35
+ function usePopper(_ref2) {
36
+ let {
37
+ offset,
38
+ showArrow,
39
+ placement,
40
+ isOpen,
41
+ modifiers,
42
+ eventsEnabled = true,
43
+ positionFixed,
44
+ boundaries = 'scrollParent',
45
+ referenceEl: refEl
46
+ } = _ref2;
47
+ const [popperData, setPopperData] = react.useState({}); // this is util for deferred rendering like with portals
48
+
49
+ const [dynamicPopperNode, setPopperNode] = react.useState(null);
50
+ const referenceRef = react.useRef();
51
+ const popperRef = react.useRef();
52
+ const arrowRef = react.useRef();
53
+ const popper = react.useRef(); // initialize popper with refs and options
54
+
55
+ react.useEffect(() => {
56
+ const referenceEl = refEl || referenceRef.current;
57
+ const popperEl = dynamicPopperNode || popperRef.current;
58
+ const arrowEl = arrowRef.current;
59
+ popper.current = referenceEl && popperEl && new Popper__default["default"](referenceEl, popperEl, {
60
+ placement,
61
+ isOpen,
62
+ eventsEnabled,
63
+ positionFixed,
64
+ modifiers: _objectSpread(_objectSpread({
65
+ preventOverflow: _objectSpread({
66
+ padding: 0,
67
+ boundariesElement: boundaries
68
+ }, modifiers.preventOverflow),
69
+ offset: calculateOffset({
70
+ offset,
71
+ showArrow
72
+ })
73
+ }, modifiers), {}, {
74
+ arrow: {
75
+ enabled: !!arrowEl,
76
+ element: arrowEl
77
+ },
78
+ applyStyle: {
79
+ enabled: false
80
+ },
81
+ updateStateModifier: {
82
+ order: 900,
83
+ enabled: true,
84
+ fn: data => {
85
+ setPopperData(data);
86
+ return data;
87
+ }
88
+ }
89
+ })
90
+ });
91
+ return () => {
92
+ if (popper.current) popper.current.destroy();
93
+ };
94
+ }, [refEl, dynamicPopperNode, placement, showArrow, offset, popperRef, eventsEnabled]); // update popper instance after initialization
95
+
96
+ react.useEffect(() => {
97
+ if (!popper.current) return;
98
+ popper.current.update();
99
+ }, [popper.current]);
100
+ const arrow = {
101
+ ref: arrowRef,
102
+ style: popperData.arrowStyles
103
+ };
104
+ const popperProps = {
105
+ style: popperData.styles,
106
+ ref: setPopperNode,
107
+ placement: popperData.placement,
108
+ 'data-testid': 'popover-container'
109
+ };
110
+ const reference = {
111
+ ref: referenceRef
112
+ };
113
+ return {
114
+ popperInstance: popper.current,
115
+ popper: popperProps,
116
+ arrow,
117
+ reference,
118
+ // setPopperNode,
119
+ popperData
120
+ };
121
+ }
122
+
123
+ module.exports = usePopper;