@neo4j-ndl/react 3.8.10 → 3.8.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/spotlight/Spotlight.js +56 -26
- package/lib/cjs/spotlight/Spotlight.js.map +1 -1
- package/lib/cjs/spotlight/SpotlightProvider.js +21 -18
- package/lib/cjs/spotlight/SpotlightProvider.js.map +1 -1
- package/lib/cjs/spotlight/SpotlightTarget.js +16 -10
- package/lib/cjs/spotlight/SpotlightTarget.js.map +1 -1
- package/lib/cjs/spotlight/use-indicator.js +3 -10
- package/lib/cjs/spotlight/use-indicator.js.map +1 -1
- package/lib/cjs/spotlight/use-spotlight.js +89 -0
- package/lib/cjs/spotlight/use-spotlight.js.map +1 -0
- package/lib/esm/spotlight/Spotlight.js +48 -18
- package/lib/esm/spotlight/Spotlight.js.map +1 -1
- package/lib/esm/spotlight/SpotlightProvider.js +12 -9
- package/lib/esm/spotlight/SpotlightProvider.js.map +1 -1
- package/lib/esm/spotlight/SpotlightTarget.js +16 -10
- package/lib/esm/spotlight/SpotlightTarget.js.map +1 -1
- package/lib/esm/spotlight/use-indicator.js +3 -10
- package/lib/esm/spotlight/use-indicator.js.map +1 -1
- package/lib/esm/spotlight/use-spotlight.js +86 -0
- package/lib/esm/spotlight/use-spotlight.js.map +1 -0
- package/lib/types/spotlight/SpotlightProvider.d.ts +2 -0
- package/lib/types/spotlight/SpotlightTarget.d.ts +2 -0
- package/lib/types/spotlight/use-indicator.d.ts +1 -1
- package/lib/types/spotlight/use-spotlight.d.ts +41 -0
- package/package.json +2 -2
|
@@ -59,14 +59,18 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
59
59
|
* You should have received a copy of the GNU General Public License
|
|
60
60
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
61
61
|
*/
|
|
62
|
+
const react_1 = require("@floating-ui/react");
|
|
62
63
|
const classnames_1 = __importDefault(require("classnames"));
|
|
63
|
-
const
|
|
64
|
+
const react_2 = __importStar(require("react"));
|
|
64
65
|
const button_1 = require("../button");
|
|
66
|
+
const dialog_1 = require("../dialog");
|
|
65
67
|
const label_1 = require("../label");
|
|
66
68
|
const popover_1 = require("../popover");
|
|
69
|
+
const theme_1 = require("../theme");
|
|
67
70
|
const typography_1 = require("../typography");
|
|
68
71
|
const SpotlightProvider_1 = require("./SpotlightProvider");
|
|
69
|
-
const
|
|
72
|
+
const use_spotlight_1 = require("./use-spotlight");
|
|
73
|
+
const SpotlightActions = react_2.default.forwardRef(function SpotlightActions(_a, ref) {
|
|
70
74
|
var { label, fill, as, style, className, htmlAttributes } = _a, restProps = __rest(_a, ["label", "fill", "as", "style", "className", "htmlAttributes"]);
|
|
71
75
|
if (fill === 'text') {
|
|
72
76
|
return ((0, jsx_runtime_1.jsx)(button_1.Button, Object.assign({}, restProps, { fill: "text", size: "medium", as: as !== null && as !== void 0 ? as : 'button', ref: ref, style: style, className: className, htmlAttributes: htmlAttributes, children: label })));
|
|
@@ -75,57 +79,83 @@ const SpotlightActions = react_1.default.forwardRef(function SpotlightActions(_a
|
|
|
75
79
|
return ((0, jsx_runtime_1.jsx)(button_1.Button, Object.assign({}, restProps, { fill: "outlined", size: "medium", as: as !== null && as !== void 0 ? as : 'button', ref: ref, style: style, className: className, htmlAttributes: htmlAttributes, children: label })));
|
|
76
80
|
}
|
|
77
81
|
});
|
|
78
|
-
const SpotlightHeader =
|
|
82
|
+
const SpotlightHeader = react_2.default.forwardRef(function SpotlightHeader({ children, className, as, style, htmlAttributes, }, ref) {
|
|
79
83
|
(0, SpotlightProvider_1.useSpotlightContext)();
|
|
80
84
|
const classes = (0, classnames_1.default)('ndl-spotlight-header', className);
|
|
81
85
|
return ((0, jsx_runtime_1.jsx)(typography_1.Typography, Object.assign({ variant: "h6", ref: ref, as: as !== null && as !== void 0 ? as : 'div', className: classes, style: style }, htmlAttributes, { children: children })));
|
|
82
86
|
});
|
|
83
|
-
const SpotlightBody =
|
|
87
|
+
const SpotlightBody = react_2.default.forwardRef(function SpotlightBody({ children, className, as, style, htmlAttributes, }, ref) {
|
|
84
88
|
(0, SpotlightProvider_1.useSpotlightContext)();
|
|
85
89
|
const classes = (0, classnames_1.default)('ndl-spotlight-body', className);
|
|
86
90
|
return ((0, jsx_runtime_1.jsx)(typography_1.Typography, Object.assign({ variant: "body-medium", className: classes, as: as !== null && as !== void 0 ? as : 'div', style: style, ref: ref }, htmlAttributes, { children: children })));
|
|
87
91
|
});
|
|
88
|
-
const SpotlightLabel =
|
|
92
|
+
const SpotlightLabel = react_2.default.forwardRef(function SpotlightLabel({ className, children, hasIcon, as, style, htmlAttributes, }, ref) {
|
|
89
93
|
(0, SpotlightProvider_1.useSpotlightContext)();
|
|
90
94
|
const classes = (0, classnames_1.default)('ndl-spotlight-label', className);
|
|
91
95
|
return ((0, jsx_runtime_1.jsx)(label_1.Label, Object.assign({ fill: "semi-filled", color: "discovery", hasIcon: hasIcon, ref: ref, as: as, className: classes, style: style }, htmlAttributes, { children: children })));
|
|
92
96
|
});
|
|
93
|
-
const SpotlightImage =
|
|
97
|
+
const SpotlightImage = react_2.default.forwardRef(function Image({ src, alt, className, style, htmlAttributes }, ref) {
|
|
94
98
|
(0, SpotlightProvider_1.useSpotlightContext)();
|
|
95
99
|
const classes = (0, classnames_1.default)('ndl-spotlight-image n-body-medium', className);
|
|
96
100
|
return ((0, jsx_runtime_1.jsx)("img", Object.assign({ src: src, alt: alt, ref: ref, className: classes, style: style }, htmlAttributes)));
|
|
97
101
|
});
|
|
98
|
-
const SpotlightIconWrapper =
|
|
102
|
+
const SpotlightIconWrapper = react_2.default.forwardRef(function SpotlightIconWrapper({ children, className, as, style, htmlAttributes, }, ref) {
|
|
99
103
|
(0, SpotlightProvider_1.useSpotlightContext)();
|
|
100
104
|
const classes = (0, classnames_1.default)('ndl-spotlight-icon-wrapper', className);
|
|
101
|
-
const Component = as
|
|
105
|
+
const Component = as !== null && as !== void 0 ? as : 'div';
|
|
102
106
|
return ((0, jsx_runtime_1.jsx)(Component, Object.assign({ ref: ref, className: classes, style: style }, htmlAttributes, { children: children })));
|
|
103
107
|
});
|
|
104
|
-
const SpotlightComponent =
|
|
105
|
-
const
|
|
106
|
-
const
|
|
107
|
-
const
|
|
108
|
-
|
|
108
|
+
const SpotlightComponent = react_2.default.forwardRef(function SpotlightComponent({ target, actions = [], beforeActions, initialFocus, onClose, placement, hasAnchorPortal: hasAnchorPortalProp, children, className, style, htmlAttributes, closeOnClickOutside = false, onOpen, strategy: strategyProp, }, ref) {
|
|
109
|
+
const [targetElement, setTargetElement] = (0, react_2.useState)(null);
|
|
110
|
+
const { isActiveSpotlight, isOpen, setActiveSpotlight, setIsOpen, registeredTargets, hasOverlay, } = (0, SpotlightProvider_1.useSpotlightContext)();
|
|
111
|
+
const onOpenChange = (isOpen, event) => {
|
|
112
|
+
if (!isOpen) {
|
|
113
|
+
if (event instanceof PointerEvent) {
|
|
114
|
+
onClose === null || onClose === void 0 ? void 0 : onClose('clickOutside');
|
|
115
|
+
}
|
|
116
|
+
else if (event instanceof KeyboardEvent) {
|
|
117
|
+
onClose === null || onClose === void 0 ? void 0 : onClose('escapeKeyDown');
|
|
118
|
+
}
|
|
119
|
+
setActiveSpotlight(null);
|
|
120
|
+
setIsOpen(false);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const isInsideDialog = (0, dialog_1.useIsInsideDialog)();
|
|
124
|
+
const strategy = isInsideDialog ? 'fixed' : 'absolute';
|
|
125
|
+
const hasAnchorPortal = isInsideDialog;
|
|
126
|
+
const spotlight = (0, use_spotlight_1.useSpotlight)({
|
|
127
|
+
anchorElement: targetElement,
|
|
128
|
+
anchorElementAsPortalAnchor: !!targetElement && (hasAnchorPortalProp !== null && hasAnchorPortalProp !== void 0 ? hasAnchorPortalProp : hasAnchorPortal),
|
|
129
|
+
closeOnClickOutside,
|
|
130
|
+
initialFocus,
|
|
131
|
+
isOpen: isActiveSpotlight(target) && isOpen && !!targetElement,
|
|
132
|
+
onOpenChange,
|
|
133
|
+
placement: placement ? popover_1.placementTranslation[placement] : undefined,
|
|
134
|
+
strategy: strategyProp !== null && strategyProp !== void 0 ? strategyProp : strategy,
|
|
135
|
+
});
|
|
136
|
+
const mergedRef = (0, react_1.useMergeRefs)([spotlight.refs.setFloating, ref]);
|
|
137
|
+
const { themeClassName } = (0, theme_1.useNeedleTheme)();
|
|
138
|
+
const classes = (0, classnames_1.default)('ndl-spotlight', themeClassName, className);
|
|
139
|
+
(0, react_2.useEffect)(() => {
|
|
109
140
|
var _a;
|
|
110
141
|
setTargetElement((_a = registeredTargets[target]) === null || _a === void 0 ? void 0 : _a.current);
|
|
111
142
|
}, [target, registeredTargets]);
|
|
112
|
-
(0,
|
|
143
|
+
(0, react_2.useEffect)(() => {
|
|
113
144
|
if (isOpen && isActiveSpotlight(target)) {
|
|
114
145
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
115
146
|
}
|
|
116
147
|
}, [isOpen, onOpen, isActiveSpotlight, target]);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}, initialFocus: initialFocus, placement: placement, strategy: strategy, children: (0, jsx_runtime_1.jsxs)(popover_1.Popover.Content, { ref: ref, className: classes, style: style, htmlAttributes: htmlAttributes, children: [(0, jsx_runtime_1.jsx)("div", { children: children }), (Boolean(beforeActions) || !!(actions === null || actions === void 0 ? void 0 : actions.length)) && ((0, jsx_runtime_1.jsxs)("div", { className: "ndl-spotlight-footer", children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: "body-medium", children: beforeActions }), !!(actions === null || actions === void 0 ? void 0 : actions.length) && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-spotlight-actions", children: actions.map((action, index) => ((0, jsx_runtime_1.jsx)(SpotlightActions, Object.assign({}, action), index))) }))] }))] }) }));
|
|
148
|
+
if (!spotlight.context.open)
|
|
149
|
+
return null;
|
|
150
|
+
return ((0, jsx_runtime_1.jsx)(react_1.FloatingPortal, { root: spotlight.anchorElementAsPortalAnchor === true
|
|
151
|
+
? spotlight.refs.reference.current
|
|
152
|
+
: null, children: (0, jsx_runtime_1.jsx)(react_1.FloatingFocusManager, { context: spotlight.context, modal: true, initialFocus: spotlight.initialFocus, children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [hasOverlay === true && spotlight.context.open && ((0, jsx_runtime_1.jsx)(react_1.FloatingOverlay, { className: "ndl-spotlight-overlay ndl-spotlight-overlay-top", onPointerDown: (e) => {
|
|
153
|
+
e.stopPropagation();
|
|
154
|
+
e.preventDefault();
|
|
155
|
+
}, onTouchStart: (e) => {
|
|
156
|
+
e.stopPropagation();
|
|
157
|
+
e.preventDefault();
|
|
158
|
+
} })), (0, jsx_runtime_1.jsxs)("div", Object.assign({ ref: mergedRef, className: classes, style: Object.assign(Object.assign(Object.assign({}, spotlight.floatingStyles), spotlight.transitionStyles), style) }, spotlight.getFloatingProps(Object.assign({}, htmlAttributes)), { children: [(0, jsx_runtime_1.jsx)("div", { children: children }), (Boolean(beforeActions) || !!(actions === null || actions === void 0 ? void 0 : actions.length)) && ((0, jsx_runtime_1.jsxs)("div", { className: "ndl-spotlight-footer", children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: "body-medium", children: beforeActions }), !!(actions === null || actions === void 0 ? void 0 : actions.length) && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-spotlight-actions", children: actions.map((action, index) => ((0, jsx_runtime_1.jsx)(SpotlightActions, Object.assign({}, action), index))) }))] }))] }))] }) }) }));
|
|
129
159
|
});
|
|
130
160
|
SpotlightComponent.displayName = 'Spotlight';
|
|
131
161
|
const Spotlight = Object.assign(SpotlightComponent, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spotlight.js","sourceRoot":"","sources":["../../../src/spotlight/Spotlight.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,4DAAoC;AACpC,+CAAmD;AASnD,sCAAmC;AACnC,oCAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"Spotlight.js","sourceRoot":"","sources":["../../../src/spotlight/Spotlight.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8CAK4B;AAC5B,4DAAoC;AACpC,+CAAmD;AASnD,sCAAmC;AACnC,sCAA8C;AAC9C,oCAA2D;AAC3D,wCAAqE;AACrE,oCAA0C;AAC1C,8CAA2C;AAC3C,2DAA0D;AAC1D,mDAA+C;AAqB/C,MAAM,gBAAgB,GAGlB,eAAK,CAAC,UAAU,CAAC,SAAS,gBAAgB,CAG5C,EAQuD,EACvD,GAAsB;QATtB,EACE,KAAK,EACL,IAAI,EACJ,EAAE,EACF,KAAK,EACL,SAAS,EACT,cAAc,OAEuC,EADlD,SAAS,cAPd,+DAQC,CADa;IAId,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,CACL,uBAAC,eAAM,oBACD,SAAS,IACb,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,YAE7B,KAAK,IACC,CACV,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CACL,uBAAC,eAAM,oBACD,SAAS,IACb,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,YAE7B,KAAK,IACC,CACV,CAAC;IACJ,CAAC;AACH,CAAC,CAA0E,CAAC;AAM5E,MAAM,eAAe,GAGjB,eAAK,CAAC,UAAU,CAAC,SAAS,eAAe,CAG3C,EACE,QAAQ,EACR,SAAS,EACT,EAAE,EACF,KAAK,EACL,cAAc,GACsC,EACtD,GAAsB;IAEtB,IAAA,uCAAmB,GAAE,CAAC;IACtB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAE9D,OAAO,CACL,uBAAC,uBAAU,kBACT,OAAO,EAAC,IAAI,EACZ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,KAAK,EACf,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,cAAc,cAEjB,QAAQ,IACE,CACd,CAAC;AACJ,CAAC,CAAsE,CAAC;AAMxE,MAAM,aAAa,GAGf,eAAK,CAAC,UAAU,CAAC,SAAS,aAAa,CAGzC,EACE,QAAQ,EACR,SAAS,EACT,EAAE,EACF,KAAK,EACL,cAAc,GACoC,EACpD,GAAsB;IAEtB,IAAA,uCAAmB,GAAE,CAAC;IACtB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAE5D,OAAO,CACL,uBAAC,uBAAU,kBACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAE,OAAO,EAClB,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,KAAK,EACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,IACJ,cAAc,cAEjB,QAAQ,IACE,CACd,CAAC;AACJ,CAAC,CAAoE,CAAC;AAItE,MAAM,cAAc,GAGhB,eAAK,CAAC,UAAU,CAAC,SAAS,cAAc,CAG1C,EACE,SAAS,EACT,QAAQ,EACR,OAAO,EACP,EAAE,EACF,KAAK,EACL,cAAc,GACqC,EACrD,GAAsB;IAEtB,IAAA,uCAAmB,GAAE,CAAC;IACtB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAE7D,OAAO,CACL,uBAAC,aAAK,kBACJ,IAAI,EAAC,aAAa,EAClB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,cAAc,cAEjB,QAAQ,IACH,CACT,CAAC;AACJ,CAAC,CAAqE,CAAC;AAUvE,MAAM,cAAc,GAAG,eAAK,CAAC,UAAU,CACrC,SAAS,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG;IAChE,IAAA,uCAAmB,GAAE,CAAC;IACtB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;IAE3E,OAAO,CACL,8CACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,cAAc,EAClB,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAMF,MAAM,oBAAoB,GAGtB,eAAK,CAAC,UAAU,CAAC,SAAS,oBAAoB,CAGhD,EACE,QAAQ,EACR,SAAS,EACT,EAAE,EACF,KAAK,EACL,cAAc,GAC2C,EAC3D,GAAsB;IAEtB,IAAA,uCAAmB,GAAE,CAAC;IACtB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,KAAK,CAAC;IAE9B,OAAO,CACL,uBAAC,SAAS,kBAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAM,cAAc,cACtE,QAAQ,IACC,CACb,CAAC;AACJ,CAAC,CAA2E,CAAC;AA0B7E,MAAM,kBAAkB,GAAG,eAAK,CAAC,UAAU,CACzC,SAAS,kBAAkB,CACzB,EACE,MAAM,EACN,OAAO,GAAG,EAAE,EACZ,aAAa,EACb,YAAY,EACZ,OAAO,EACP,SAAS,EACT,eAAe,EAAE,mBAAmB,EACpC,QAAQ,EACR,SAAS,EACT,KAAK,EACL,cAAc,EACd,mBAAmB,GAAG,KAAK,EAC3B,MAAM,EACN,QAAQ,EAAE,YAAY,GACvB,EACD,GAAG;IAEH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAChD,IAAI,CACL,CAAC;IAEF,MAAM,EACJ,iBAAiB,EACjB,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACX,GAAG,IAAA,uCAAmB,GAAE,CAAC;IAE1B,MAAM,YAAY,GAAG,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,cAAc,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;gBAC1C,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,eAAe,CAAC,CAAC;YAC7B,CAAC;YACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,0BAAiB,GAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,MAAM,eAAe,GAAG,cAAc,CAAC;IAEvC,MAAM,SAAS,GAAG,IAAA,4BAAY,EAAC;QAC7B,aAAa,EAAE,aAAa;QAC5B,2BAA2B,EACzB,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,eAAe,CAAC;QAC7D,mBAAmB;QACnB,YAAY;QACZ,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,aAAa;QAC9D,YAAY;QACZ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,8BAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAClE,QAAQ,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,QAAQ;KACnC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAElE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,sBAAc,GAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,eAAe,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAEvE,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACb,gBAAgB,CAAC,MAAA,iBAAiB,CAAC,MAAM,CAAC,0CAAE,OAAO,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEhC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAC;QACb,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEzC,OAAO,CACL,uBAAC,sBAAc,IACb,IAAI,EACF,SAAS,CAAC,2BAA2B,KAAK,IAAI;YAC5C,CAAC,CAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAA8B;YAC1D,CAAC,CAAC,IAAI,YAGV,uBAAC,4BAAoB,IACnB,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,KAAK,EAAE,IAAI,EACX,YAAY,EAAE,SAAS,CAAC,YAAY,YAEpC,6DACG,UAAU,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAChD,uBAAC,uBAAe,IACd,SAAS,EAAC,iDAAiD,EAC3D,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;4BACnB,CAAC,CAAC,eAAe,EAAE,CAAC;4BACpB,CAAC,CAAC,cAAc,EAAE,CAAC;wBACrB,CAAC,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;4BAClB,CAAC,CAAC,eAAe,EAAE,CAAC;4BACpB,CAAC,CAAC,cAAc,EAAE,CAAC;wBACrB,CAAC,GACD,CACH,EACD,+CACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,OAAO,EAClB,KAAK,gDACA,SAAS,CAAC,cAAc,GACxB,SAAS,CAAC,gBAAgB,GAC1B,KAAK,KAEN,SAAS,CAAC,gBAAgB,mBAAM,cAAc,EAAG,eAErD,0CAAM,QAAQ,GAAO,EACpB,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,CAAC,IAAI,CAChD,iCAAK,SAAS,EAAC,sBAAsB,aACnC,uBAAC,uBAAU,IAAC,OAAO,EAAC,aAAa,YAAE,aAAa,GAAc,EAC7D,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,IAAI,CACpB,gCAAK,SAAS,EAAC,uBAAuB,YAElC,OAID,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACvB,uBAAC,gBAAgB,oBAAiB,MAAM,GAAjB,KAAK,CAAgB,CAC7C,CAAC,GACE,CACP,IACG,CACP,KACG,IACL,GACkB,GACR,CAClB,CAAC;AACJ,CAAC,CAC6D,CAAC;AACjE,kBAAkB,CAAC,WAAW,GAAG,WAAW,CAAC;AAE7C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;IAClD,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,oBAAoB;IACjC,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,cAAc;CACtB,CAAC,CAAC;AAEM,8BAAS"}
|
|
@@ -25,11 +25,12 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
25
25
|
* You should have received a copy of the GNU General Public License
|
|
26
26
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
27
27
|
*/
|
|
28
|
+
const react_1 = require("@floating-ui/react");
|
|
28
29
|
const classnames_1 = __importDefault(require("classnames"));
|
|
29
|
-
const
|
|
30
|
-
const SpotlightContext = (0,
|
|
30
|
+
const react_2 = require("react");
|
|
31
|
+
const SpotlightContext = (0, react_2.createContext)(null);
|
|
31
32
|
const useSpotlightContext = () => {
|
|
32
|
-
const context = (0,
|
|
33
|
+
const context = (0, react_2.useContext)(SpotlightContext);
|
|
33
34
|
if (context === null) {
|
|
34
35
|
throw new Error('Spotlight components must be wrapped in <SpotlightProvider />');
|
|
35
36
|
}
|
|
@@ -37,13 +38,13 @@ const useSpotlightContext = () => {
|
|
|
37
38
|
};
|
|
38
39
|
exports.useSpotlightContext = useSpotlightContext;
|
|
39
40
|
const SpotlightProvider = ({ children, hasOverlay = true, isOverlayTransparent = false, }) => {
|
|
40
|
-
const [active, setActive] = (0,
|
|
41
|
-
const [isOpen, setIsOpen] = (0,
|
|
42
|
-
const [targets, setTargets] = (0,
|
|
43
|
-
const registerTarget = (0,
|
|
41
|
+
const [active, setActive] = (0, react_2.useState)(null);
|
|
42
|
+
const [isOpen, setIsOpen] = (0, react_2.useState)(false);
|
|
43
|
+
const [targets, setTargets] = (0, react_2.useState)({});
|
|
44
|
+
const registerTarget = (0, react_2.useCallback)((id, ref) => {
|
|
44
45
|
setTargets((prev) => (Object.assign(Object.assign({}, prev), { [id]: ref })));
|
|
45
46
|
}, []);
|
|
46
|
-
const unregisterTarget = (0,
|
|
47
|
+
const unregisterTarget = (0, react_2.useCallback)((id) => {
|
|
47
48
|
setTargets((prev) => {
|
|
48
49
|
const newTargets = Object.assign({}, prev);
|
|
49
50
|
delete newTargets[id];
|
|
@@ -51,24 +52,26 @@ const SpotlightProvider = ({ children, hasOverlay = true, isOverlayTransparent =
|
|
|
51
52
|
});
|
|
52
53
|
}, []);
|
|
53
54
|
const contextValue = {
|
|
54
|
-
|
|
55
|
+
hasOverlay,
|
|
56
|
+
isActiveSpotlight: (0, react_2.useCallback)((target) => target === active, [active]),
|
|
55
57
|
isOpen,
|
|
56
58
|
registerTarget,
|
|
57
59
|
registeredTargets: targets,
|
|
58
|
-
setActiveSpotlight: (0,
|
|
59
|
-
setIsOpen: (0,
|
|
60
|
+
setActiveSpotlight: (0, react_2.useCallback)((target) => setActive(target), []),
|
|
61
|
+
setIsOpen: (0, react_2.useCallback)((open) => setIsOpen(open), []),
|
|
60
62
|
unregisterTarget,
|
|
61
63
|
};
|
|
62
64
|
const overlayClasses = (0, classnames_1.default)('ndl-spotlight-overlay', {
|
|
65
|
+
'ndl-spotlight-overlay-opaque': !isOverlayTransparent,
|
|
63
66
|
'ndl-spotlight-overlay-open': isOpen && active !== null,
|
|
64
|
-
'ndl-spotlight-overlay-transparent': isOverlayTransparent,
|
|
65
67
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
const overlayRootRef = (0, react_2.useRef)(null);
|
|
69
|
+
(0, react_2.useEffect)(() => {
|
|
70
|
+
if (active !== null) {
|
|
71
|
+
overlayRootRef.current = document.getElementById(active);
|
|
72
|
+
}
|
|
73
|
+
}, [active]);
|
|
74
|
+
return ((0, jsx_runtime_1.jsxs)(SpotlightContext.Provider, { value: contextValue, children: [hasOverlay && active !== null && isOpen && ((0, jsx_runtime_1.jsx)(react_1.FloatingPortal, { root: overlayRootRef.current, children: (0, jsx_runtime_1.jsx)(react_1.FloatingOverlay, { lockScroll: true, className: overlayClasses, "data-testid": "ndl-spotlight-overlay" }) })), children] }));
|
|
72
75
|
};
|
|
73
76
|
exports.SpotlightProvider = SpotlightProvider;
|
|
74
77
|
//# sourceMappingURL=SpotlightProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpotlightProvider.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightProvider.tsx"],"names":[],"mappings":";;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,4DAAoC;AAEpC,
|
|
1
|
+
{"version":3,"file":"SpotlightProvider.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -54,9 +54,9 @@ const react_2 = __importStar(require("react"));
|
|
|
54
54
|
const conditional_wrap_1 = require("../conditional-wrap");
|
|
55
55
|
const SpotlightProvider_1 = require("./SpotlightProvider");
|
|
56
56
|
const use_indicator_1 = require("./use-indicator");
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const { isActiveSpotlight, isOpen, setIsOpen, registerTarget, unregisterTarget, } = (0, SpotlightProvider_1.useSpotlightContext)();
|
|
57
|
+
exports.SpotlightTarget = react_2.default.forwardRef(function SpotlightTarget({ id, hasPulse = true, indicatorVariant = 'border', indicatorPlacement = 'top-right', backgroundColor, borderRadius, children, className, htmlAttributes, as, shouldFitToChildren = false, }, ref) {
|
|
58
|
+
const Component = as !== null && as !== void 0 ? as : 'div';
|
|
59
|
+
const { isActiveSpotlight, isOpen, setIsOpen, registerTarget, unregisterTarget, setActiveSpotlight, } = (0, SpotlightProvider_1.useSpotlightContext)();
|
|
60
60
|
const internalRef = react_2.default.useRef(null);
|
|
61
61
|
const mergedRefs = (0, react_1.useMergeRefs)([ref, internalRef]);
|
|
62
62
|
(0, react_2.useEffect)(() => {
|
|
@@ -66,7 +66,6 @@ exports.SpotlightTarget = react_2.default.forwardRef(function SpotlightTarget({
|
|
|
66
66
|
}, [id, registerTarget, unregisterTarget]);
|
|
67
67
|
const isActive = isActiveSpotlight(id);
|
|
68
68
|
const indicator = (0, use_indicator_1.useIndicator)({
|
|
69
|
-
hasAnchorPortal,
|
|
70
69
|
hasPulse,
|
|
71
70
|
indicatorPlacement,
|
|
72
71
|
indicatorVariant,
|
|
@@ -74,9 +73,13 @@ exports.SpotlightTarget = react_2.default.forwardRef(function SpotlightTarget({
|
|
|
74
73
|
targetRef: internalRef,
|
|
75
74
|
});
|
|
76
75
|
const classes = (0, classnames_1.default)('ndl-spotlight-target', {
|
|
76
|
+
'ndl-spotlight-target-fit-to-children': shouldFitToChildren,
|
|
77
77
|
'ndl-spotlight-target-open': isOpen && isActive,
|
|
78
78
|
}, className);
|
|
79
|
-
|
|
79
|
+
const inertClasses = (0, classnames_1.default)('ndl-spotlight-target-inert', {
|
|
80
|
+
'ndl-spotlight-target-inert-fit-to-children': shouldFitToChildren,
|
|
81
|
+
}, className);
|
|
82
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Component, Object.assign({ role: isActive ? 'button' : undefined, id: id, ref: mergedRefs, className: classes, onClick: (e) => {
|
|
80
83
|
if (isActive && !isOpen) {
|
|
81
84
|
setIsOpen(true);
|
|
82
85
|
e.preventDefault();
|
|
@@ -88,12 +91,15 @@ exports.SpotlightTarget = react_2.default.forwardRef(function SpotlightTarget({
|
|
|
88
91
|
setIsOpen(true);
|
|
89
92
|
e.preventDefault();
|
|
90
93
|
}
|
|
94
|
+
else if (e.code === 'Escape' && isActive) {
|
|
95
|
+
setActiveSpotlight(null);
|
|
96
|
+
}
|
|
91
97
|
}, tabIndex: isActive ? 0 : -1, "aria-label": "spotlight target" }, htmlAttributes, { children: (0, jsx_runtime_1.jsx)(conditional_wrap_1.ConditionalWrap, { shouldWrap: isActive,
|
|
92
98
|
// TODO v4: inert should be fixed in react 19? https://github.com/facebook/react/pull/24730#event-12109747640. inert="" is a workaround for now
|
|
93
|
-
wrap: (children) => (
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
wrap: (children) => ((0, jsx_runtime_1.jsx)("div", {
|
|
100
|
+
/* @ts-expect-error inert not allowed */
|
|
101
|
+
inert: "", "aria-disabled": true, className: inertClasses, children: children })), children: children }) })), (0, jsx_runtime_1.jsxs)(react_1.FloatingPortal, { root: indicator.context.refs.reference.current, children: [isActive && isOpen && ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(classes, 'ndl-spotlight-target-overlay'),
|
|
102
|
+
// @ts-expect-error inert not allowed
|
|
103
|
+
inert: "", children: children })), indicator.context.open && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("div", Object.assign({ className: indicator.indicatorClasses, ref: indicator.context.refs.setFloating, style: Object.assign(Object.assign({}, indicator.floatingStyles), indicator.style) }, indicator.getFloatingProps())) }))] })] }));
|
|
98
104
|
});
|
|
99
105
|
//# sourceMappingURL=SpotlightTarget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpotlightTarget.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightTarget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8CAAkE;AAClE,4DAAoC;AACpC,+CAAyC;AAOzC,0DAAsD;AACtD,2DAA0D;AAC1D,mDAIyB;
|
|
1
|
+
{"version":3,"file":"SpotlightTarget.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightTarget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ const calcOffset = (variant, placement, rects) => {
|
|
|
64
64
|
mainAxis,
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
|
-
function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPlacement = 'top-right', targetRef, hasPulse = true,
|
|
67
|
+
function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPlacement = 'top-right', targetRef, hasPulse = true, }) {
|
|
68
68
|
const data = (0, react_1.useFloating)({
|
|
69
69
|
elements: {
|
|
70
70
|
reference: targetRef === null || targetRef === void 0 ? void 0 : targetRef.current,
|
|
@@ -81,7 +81,7 @@ function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPlacement
|
|
|
81
81
|
const interactions = (0, react_1.useInteractions)([role]);
|
|
82
82
|
return (0, react_2.useMemo)(() => {
|
|
83
83
|
var _a, _b, _c, _d, _e, _f;
|
|
84
|
-
return (Object.assign(Object.assign(Object.assign({}, interactions), data), {
|
|
84
|
+
return (Object.assign(Object.assign(Object.assign({}, interactions), data), { indicatorClasses: (0, classnames_1.default)('ndl-spotlight-target-indicator', {
|
|
85
85
|
'ndl-spotlight-target-indicator-border': indicatorVariant === 'border',
|
|
86
86
|
'ndl-spotlight-target-indicator-point': indicatorVariant === 'point',
|
|
87
87
|
'ndl-spotlight-target-pulse': hasPulse,
|
|
@@ -96,13 +96,6 @@ function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPlacement
|
|
|
96
96
|
? `${(_f = (_e = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) === null || _e === void 0 ? void 0 : _e.clientWidth) !== null && _f !== void 0 ? _f : 0}px`
|
|
97
97
|
: '8px',
|
|
98
98
|
} }));
|
|
99
|
-
}, [
|
|
100
|
-
interactions,
|
|
101
|
-
data,
|
|
102
|
-
indicatorVariant,
|
|
103
|
-
targetRef,
|
|
104
|
-
hasPulse,
|
|
105
|
-
hasAnchorPortal,
|
|
106
|
-
]);
|
|
99
|
+
}, [interactions, data, indicatorVariant, targetRef, hasPulse]);
|
|
107
100
|
}
|
|
108
101
|
//# sourceMappingURL=use-indicator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-indicator.js","sourceRoot":"","sources":["../../../src/spotlight/use-indicator.tsx"],"names":[],"mappings":";;;;;AA2GA,
|
|
1
|
+
{"version":3,"file":"use-indicator.js","sourceRoot":"","sources":["../../../src/spotlight/use-indicator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSpotlight = useSpotlight;
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) "Neo4j"
|
|
7
|
+
* Neo4j Sweden AB [http://neo4j.com]
|
|
8
|
+
*
|
|
9
|
+
* This file is part of Neo4j.
|
|
10
|
+
*
|
|
11
|
+
* Neo4j is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* This program is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU General Public License
|
|
22
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
const react_1 = require("@floating-ui/react");
|
|
25
|
+
const base_1 = require("@neo4j-ndl/base");
|
|
26
|
+
const react_2 = require("react");
|
|
27
|
+
function useSpotlight({ isInitialOpen = false, placement = 'bottom', isOpen: controlledOpen, onOpenChange: setControlledOpen, anchorElement, anchorElementAsPortalAnchor, initialFocus, closeOnClickOutside, strategy = 'absolute', } = {}) {
|
|
28
|
+
var _a;
|
|
29
|
+
const [isOpenUncontrolled, setIsOpenUncontrolled] = (0, react_2.useState)(isInitialOpen);
|
|
30
|
+
const [labelId, setLabelId] = (0, react_2.useState)();
|
|
31
|
+
const [descriptionId, setDescriptionId] = (0, react_2.useState)();
|
|
32
|
+
const isOpen = controlledOpen !== null && controlledOpen !== void 0 ? controlledOpen : isOpenUncontrolled;
|
|
33
|
+
const setIsOpen = setControlledOpen !== null && setControlledOpen !== void 0 ? setControlledOpen : setIsOpenUncontrolled;
|
|
34
|
+
const data = (0, react_1.useFloating)({
|
|
35
|
+
elements: {
|
|
36
|
+
reference: anchorElement,
|
|
37
|
+
},
|
|
38
|
+
middleware: [
|
|
39
|
+
(0, react_1.offset)(10),
|
|
40
|
+
(0, react_1.flip)({
|
|
41
|
+
crossAxis: placement.includes('-'),
|
|
42
|
+
fallbackAxisSideDirection: 'end',
|
|
43
|
+
padding: 5,
|
|
44
|
+
}),
|
|
45
|
+
(0, react_1.shift)({ padding: 5 }),
|
|
46
|
+
],
|
|
47
|
+
onOpenChange: (open, event) => {
|
|
48
|
+
setIsOpen(open);
|
|
49
|
+
setControlledOpen === null || setControlledOpen === void 0 ? void 0 : setControlledOpen(open, event);
|
|
50
|
+
},
|
|
51
|
+
open: isOpen,
|
|
52
|
+
placement: placement,
|
|
53
|
+
strategy,
|
|
54
|
+
whileElementsMounted: react_1.autoUpdate,
|
|
55
|
+
});
|
|
56
|
+
const context = data.context;
|
|
57
|
+
const click = (0, react_1.useClick)(context, {
|
|
58
|
+
enabled: controlledOpen === undefined,
|
|
59
|
+
});
|
|
60
|
+
const dismiss = (0, react_1.useDismiss)(context, {
|
|
61
|
+
outsidePress: closeOnClickOutside,
|
|
62
|
+
});
|
|
63
|
+
const role = (0, react_1.useRole)(context, {
|
|
64
|
+
role: 'dialog',
|
|
65
|
+
});
|
|
66
|
+
const interactions = (0, react_1.useInteractions)([click, dismiss, role]);
|
|
67
|
+
const { styles: transitionStyles } = (0, react_1.useTransitionStyles)(context, {
|
|
68
|
+
duration: (_a = Number.parseInt(base_1.tokens.transitions.values.duration.quick, 10)) !== null && _a !== void 0 ? _a : 0,
|
|
69
|
+
});
|
|
70
|
+
return (0, react_2.useMemo)(() => (Object.assign(Object.assign(Object.assign({ isOpen,
|
|
71
|
+
setIsOpen }, interactions), data), { transitionStyles,
|
|
72
|
+
labelId,
|
|
73
|
+
descriptionId,
|
|
74
|
+
setLabelId,
|
|
75
|
+
setDescriptionId,
|
|
76
|
+
anchorElementAsPortalAnchor,
|
|
77
|
+
initialFocus })), [
|
|
78
|
+
isOpen,
|
|
79
|
+
setIsOpen,
|
|
80
|
+
interactions,
|
|
81
|
+
data,
|
|
82
|
+
transitionStyles,
|
|
83
|
+
labelId,
|
|
84
|
+
descriptionId,
|
|
85
|
+
anchorElementAsPortalAnchor,
|
|
86
|
+
initialFocus,
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=use-spotlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-spotlight.js","sourceRoot":"","sources":["../../../src/spotlight/use-spotlight.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
9
9
|
}
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
13
|
/**
|
|
14
14
|
*
|
|
15
15
|
* Copyright (c) "Neo4j"
|
|
@@ -30,13 +30,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
30
30
|
* You should have received a copy of the GNU General Public License
|
|
31
31
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
32
32
|
*/
|
|
33
|
+
import { FloatingFocusManager, FloatingOverlay, FloatingPortal, useMergeRefs, } from '@floating-ui/react';
|
|
33
34
|
import classNames from 'classnames';
|
|
34
35
|
import React, { useEffect, useState } from 'react';
|
|
35
36
|
import { Button } from '../button';
|
|
37
|
+
import { useIsInsideDialog } from '../dialog';
|
|
36
38
|
import { Label } from '../label';
|
|
37
|
-
import {
|
|
39
|
+
import { placementTranslation } from '../popover';
|
|
40
|
+
import { useNeedleTheme } from '../theme';
|
|
38
41
|
import { Typography } from '../typography';
|
|
39
42
|
import { useSpotlightContext } from './SpotlightProvider';
|
|
43
|
+
import { useSpotlight } from './use-spotlight';
|
|
40
44
|
const SpotlightActions = React.forwardRef(function SpotlightActions(_a, ref) {
|
|
41
45
|
var { label, fill, as, style, className, htmlAttributes } = _a, restProps = __rest(_a, ["label", "fill", "as", "style", "className", "htmlAttributes"]);
|
|
42
46
|
if (fill === 'text') {
|
|
@@ -69,13 +73,40 @@ const SpotlightImage = React.forwardRef(function Image({ src, alt, className, st
|
|
|
69
73
|
const SpotlightIconWrapper = React.forwardRef(function SpotlightIconWrapper({ children, className, as, style, htmlAttributes, }, ref) {
|
|
70
74
|
useSpotlightContext();
|
|
71
75
|
const classes = classNames('ndl-spotlight-icon-wrapper', className);
|
|
72
|
-
const Component = as
|
|
76
|
+
const Component = as !== null && as !== void 0 ? as : 'div';
|
|
73
77
|
return (_jsx(Component, Object.assign({ ref: ref, className: classes, style: style }, htmlAttributes, { children: children })));
|
|
74
78
|
});
|
|
75
|
-
const SpotlightComponent = React.forwardRef(function SpotlightComponent({ target, actions = [], beforeActions, initialFocus, onClose, placement, hasAnchorPortal, children, className, style, htmlAttributes, closeOnClickOutside = false,
|
|
76
|
-
const { isActiveSpotlight, isOpen, setActiveSpotlight, setIsOpen, registeredTargets, } = useSpotlightContext();
|
|
79
|
+
const SpotlightComponent = React.forwardRef(function SpotlightComponent({ target, actions = [], beforeActions, initialFocus, onClose, placement, hasAnchorPortal: hasAnchorPortalProp, children, className, style, htmlAttributes, closeOnClickOutside = false, onOpen, strategy: strategyProp, }, ref) {
|
|
77
80
|
const [targetElement, setTargetElement] = useState(null);
|
|
78
|
-
const
|
|
81
|
+
const { isActiveSpotlight, isOpen, setActiveSpotlight, setIsOpen, registeredTargets, hasOverlay, } = useSpotlightContext();
|
|
82
|
+
const onOpenChange = (isOpen, event) => {
|
|
83
|
+
if (!isOpen) {
|
|
84
|
+
if (event instanceof PointerEvent) {
|
|
85
|
+
onClose === null || onClose === void 0 ? void 0 : onClose('clickOutside');
|
|
86
|
+
}
|
|
87
|
+
else if (event instanceof KeyboardEvent) {
|
|
88
|
+
onClose === null || onClose === void 0 ? void 0 : onClose('escapeKeyDown');
|
|
89
|
+
}
|
|
90
|
+
setActiveSpotlight(null);
|
|
91
|
+
setIsOpen(false);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const isInsideDialog = useIsInsideDialog();
|
|
95
|
+
const strategy = isInsideDialog ? 'fixed' : 'absolute';
|
|
96
|
+
const hasAnchorPortal = isInsideDialog;
|
|
97
|
+
const spotlight = useSpotlight({
|
|
98
|
+
anchorElement: targetElement,
|
|
99
|
+
anchorElementAsPortalAnchor: !!targetElement && (hasAnchorPortalProp !== null && hasAnchorPortalProp !== void 0 ? hasAnchorPortalProp : hasAnchorPortal),
|
|
100
|
+
closeOnClickOutside,
|
|
101
|
+
initialFocus,
|
|
102
|
+
isOpen: isActiveSpotlight(target) && isOpen && !!targetElement,
|
|
103
|
+
onOpenChange,
|
|
104
|
+
placement: placement ? placementTranslation[placement] : undefined,
|
|
105
|
+
strategy: strategyProp !== null && strategyProp !== void 0 ? strategyProp : strategy,
|
|
106
|
+
});
|
|
107
|
+
const mergedRef = useMergeRefs([spotlight.refs.setFloating, ref]);
|
|
108
|
+
const { themeClassName } = useNeedleTheme();
|
|
109
|
+
const classes = classNames('ndl-spotlight', themeClassName, className);
|
|
79
110
|
useEffect(() => {
|
|
80
111
|
var _a;
|
|
81
112
|
setTargetElement((_a = registeredTargets[target]) === null || _a === void 0 ? void 0 : _a.current);
|
|
@@ -85,18 +116,17 @@ const SpotlightComponent = React.forwardRef(function SpotlightComponent({ target
|
|
|
85
116
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
86
117
|
}
|
|
87
118
|
}, [isOpen, onOpen, isActiveSpotlight, target]);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}, initialFocus: initialFocus, placement: placement, strategy: strategy, children: _jsxs(Popover.Content, { ref: ref, className: classes, style: style, htmlAttributes: htmlAttributes, children: [_jsx("div", { children: children }), (Boolean(beforeActions) || !!(actions === null || actions === void 0 ? void 0 : actions.length)) && (_jsxs("div", { className: "ndl-spotlight-footer", children: [_jsx(Typography, { variant: "body-medium", children: beforeActions }), !!(actions === null || actions === void 0 ? void 0 : actions.length) && (_jsx("div", { className: "ndl-spotlight-actions", children: actions.map((action, index) => (_jsx(SpotlightActions, Object.assign({}, action), index))) }))] }))] }) }));
|
|
119
|
+
if (!spotlight.context.open)
|
|
120
|
+
return null;
|
|
121
|
+
return (_jsx(FloatingPortal, { root: spotlight.anchorElementAsPortalAnchor === true
|
|
122
|
+
? spotlight.refs.reference.current
|
|
123
|
+
: null, children: _jsx(FloatingFocusManager, { context: spotlight.context, modal: true, initialFocus: spotlight.initialFocus, children: _jsxs(_Fragment, { children: [hasOverlay === true && spotlight.context.open && (_jsx(FloatingOverlay, { className: "ndl-spotlight-overlay ndl-spotlight-overlay-top", onPointerDown: (e) => {
|
|
124
|
+
e.stopPropagation();
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
}, onTouchStart: (e) => {
|
|
127
|
+
e.stopPropagation();
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
} })), _jsxs("div", Object.assign({ ref: mergedRef, className: classes, style: Object.assign(Object.assign(Object.assign({}, spotlight.floatingStyles), spotlight.transitionStyles), style) }, spotlight.getFloatingProps(Object.assign({}, htmlAttributes)), { children: [_jsx("div", { children: children }), (Boolean(beforeActions) || !!(actions === null || actions === void 0 ? void 0 : actions.length)) && (_jsxs("div", { className: "ndl-spotlight-footer", children: [_jsx(Typography, { variant: "body-medium", children: beforeActions }), !!(actions === null || actions === void 0 ? void 0 : actions.length) && (_jsx("div", { className: "ndl-spotlight-actions", children: actions.map((action, index) => (_jsx(SpotlightActions, Object.assign({}, action), index))) }))] }))] }))] }) }) }));
|
|
100
130
|
});
|
|
101
131
|
SpotlightComponent.displayName = 'Spotlight';
|
|
102
132
|
const Spotlight = Object.assign(SpotlightComponent, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spotlight.js","sourceRoot":"","sources":["../../../src/spotlight/Spotlight.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASnD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAA4B,KAAK,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Spotlight.js","sourceRoot":"","sources":["../../../src/spotlight/Spotlight.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) "Neo4j"
|
|
@@ -19,8 +19,9 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
19
19
|
* You should have received a copy of the GNU General Public License
|
|
20
20
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
21
21
|
*/
|
|
22
|
+
import { FloatingOverlay, FloatingPortal } from '@floating-ui/react';
|
|
22
23
|
import classNames from 'classnames';
|
|
23
|
-
import { createContext, useCallback, useContext, useState } from 'react';
|
|
24
|
+
import { createContext, useCallback, useContext, useEffect, useRef, useState, } from 'react';
|
|
24
25
|
const SpotlightContext = createContext(null);
|
|
25
26
|
export const useSpotlightContext = () => {
|
|
26
27
|
const context = useContext(SpotlightContext);
|
|
@@ -44,6 +45,7 @@ export const SpotlightProvider = ({ children, hasOverlay = true, isOverlayTransp
|
|
|
44
45
|
});
|
|
45
46
|
}, []);
|
|
46
47
|
const contextValue = {
|
|
48
|
+
hasOverlay,
|
|
47
49
|
isActiveSpotlight: useCallback((target) => target === active, [active]),
|
|
48
50
|
isOpen,
|
|
49
51
|
registerTarget,
|
|
@@ -53,14 +55,15 @@ export const SpotlightProvider = ({ children, hasOverlay = true, isOverlayTransp
|
|
|
53
55
|
unregisterTarget,
|
|
54
56
|
};
|
|
55
57
|
const overlayClasses = classNames('ndl-spotlight-overlay', {
|
|
58
|
+
'ndl-spotlight-overlay-opaque': !isOverlayTransparent,
|
|
56
59
|
'ndl-spotlight-overlay-open': isOpen && active !== null,
|
|
57
|
-
'ndl-spotlight-overlay-transparent': isOverlayTransparent,
|
|
58
60
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
const overlayRootRef = useRef(null);
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (active !== null) {
|
|
64
|
+
overlayRootRef.current = document.getElementById(active);
|
|
65
|
+
}
|
|
66
|
+
}, [active]);
|
|
67
|
+
return (_jsxs(SpotlightContext.Provider, { value: contextValue, children: [hasOverlay && active !== null && isOpen && (_jsx(FloatingPortal, { root: overlayRootRef.current, children: _jsx(FloatingOverlay, { lockScroll: true, className: overlayClasses, "data-testid": "ndl-spotlight-overlay" }) })), children] }));
|
|
65
68
|
};
|
|
66
69
|
//# sourceMappingURL=SpotlightProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpotlightProvider.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightProvider.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"SpotlightProvider.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,9 @@ import React, { useEffect } from 'react';
|
|
|
25
25
|
import { ConditionalWrap } from '../conditional-wrap';
|
|
26
26
|
import { useSpotlightContext } from './SpotlightProvider';
|
|
27
27
|
import { useIndicator, } from './use-indicator';
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const { isActiveSpotlight, isOpen, setIsOpen, registerTarget, unregisterTarget, } = useSpotlightContext();
|
|
28
|
+
export const SpotlightTarget = React.forwardRef(function SpotlightTarget({ id, hasPulse = true, indicatorVariant = 'border', indicatorPlacement = 'top-right', backgroundColor, borderRadius, children, className, htmlAttributes, as, shouldFitToChildren = false, }, ref) {
|
|
29
|
+
const Component = as !== null && as !== void 0 ? as : 'div';
|
|
30
|
+
const { isActiveSpotlight, isOpen, setIsOpen, registerTarget, unregisterTarget, setActiveSpotlight, } = useSpotlightContext();
|
|
31
31
|
const internalRef = React.useRef(null);
|
|
32
32
|
const mergedRefs = useMergeRefs([ref, internalRef]);
|
|
33
33
|
useEffect(() => {
|
|
@@ -37,7 +37,6 @@ export const SpotlightTarget = React.forwardRef(function SpotlightTarget({ id, h
|
|
|
37
37
|
}, [id, registerTarget, unregisterTarget]);
|
|
38
38
|
const isActive = isActiveSpotlight(id);
|
|
39
39
|
const indicator = useIndicator({
|
|
40
|
-
hasAnchorPortal,
|
|
41
40
|
hasPulse,
|
|
42
41
|
indicatorPlacement,
|
|
43
42
|
indicatorVariant,
|
|
@@ -45,9 +44,13 @@ export const SpotlightTarget = React.forwardRef(function SpotlightTarget({ id, h
|
|
|
45
44
|
targetRef: internalRef,
|
|
46
45
|
});
|
|
47
46
|
const classes = classNames('ndl-spotlight-target', {
|
|
47
|
+
'ndl-spotlight-target-fit-to-children': shouldFitToChildren,
|
|
48
48
|
'ndl-spotlight-target-open': isOpen && isActive,
|
|
49
49
|
}, className);
|
|
50
|
-
|
|
50
|
+
const inertClasses = classNames('ndl-spotlight-target-inert', {
|
|
51
|
+
'ndl-spotlight-target-inert-fit-to-children': shouldFitToChildren,
|
|
52
|
+
}, className);
|
|
53
|
+
return (_jsxs(_Fragment, { children: [_jsx(Component, Object.assign({ role: isActive ? 'button' : undefined, id: id, ref: mergedRefs, className: classes, onClick: (e) => {
|
|
51
54
|
if (isActive && !isOpen) {
|
|
52
55
|
setIsOpen(true);
|
|
53
56
|
e.preventDefault();
|
|
@@ -59,12 +62,15 @@ export const SpotlightTarget = React.forwardRef(function SpotlightTarget({ id, h
|
|
|
59
62
|
setIsOpen(true);
|
|
60
63
|
e.preventDefault();
|
|
61
64
|
}
|
|
65
|
+
else if (e.code === 'Escape' && isActive) {
|
|
66
|
+
setActiveSpotlight(null);
|
|
67
|
+
}
|
|
62
68
|
}, tabIndex: isActive ? 0 : -1, "aria-label": "spotlight target" }, htmlAttributes, { children: _jsx(ConditionalWrap, { shouldWrap: isActive,
|
|
63
69
|
// TODO v4: inert should be fixed in react 19? https://github.com/facebook/react/pull/24730#event-12109747640. inert="" is a workaround for now
|
|
64
|
-
wrap: (children) => (
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
wrap: (children) => (_jsx("div", {
|
|
71
|
+
/* @ts-expect-error inert not allowed */
|
|
72
|
+
inert: "", "aria-disabled": true, className: inertClasses, children: children })), children: children }) })), _jsxs(FloatingPortal, { root: indicator.context.refs.reference.current, children: [isActive && isOpen && (_jsx("div", { className: classNames(classes, 'ndl-spotlight-target-overlay'),
|
|
73
|
+
// @ts-expect-error inert not allowed
|
|
74
|
+
inert: "", children: children })), indicator.context.open && (_jsx(_Fragment, { children: _jsx("div", Object.assign({ className: indicator.indicatorClasses, ref: indicator.context.refs.setFloating, style: Object.assign(Object.assign({}, indicator.floatingStyles), indicator.style) }, indicator.getFloatingProps())) }))] })] }));
|
|
69
75
|
});
|
|
70
76
|
//# sourceMappingURL=SpotlightTarget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpotlightTarget.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightTarget.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAGL,YAAY,GACb,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"SpotlightTarget.js","sourceRoot":"","sources":["../../../src/spotlight/SpotlightTarget.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAGL,YAAY,GACb,MAAM,iBAAiB,CAAC;AAuBzB,MAAM,CAAC,MAAM,eAAe,GAGxB,KAAK,CAAC,UAAU,CAAC,SAAS,eAAe,CAG3C,EACE,EAAE,EACF,QAAQ,GAAG,IAAI,EACf,gBAAgB,GAAG,QAAQ,EAC3B,kBAAkB,GAAG,WAAW,EAChC,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,cAAc,EACd,EAAE,EACF,mBAAmB,GAAG,KAAK,GACyB,EACtD,GAAsB;IAEtB,MAAM,SAAS,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,KAAK,CAAC;IAE9B,MAAM,EACJ,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,GAAG,mBAAmB,EAAE,CAAC;IAE1B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,YAAY,CAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO;YAAE,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,YAAY,CAAC;QAC7B,QAAQ;QACR,kBAAkB;QAClB,gBAAgB;QAChB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;KACvB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,UAAU,CACxB,sBAAsB,EACtB;QACE,sCAAsC,EAAE,mBAAmB;QAC3D,2BAA2B,EAAE,MAAM,IAAI,QAAQ;KAChD,EACD,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,UAAU,CAC7B,4BAA4B,EAC5B;QACE,4CAA4C,EAAE,mBAAmB;KAClE,EACD,SAAS,CACV,CAAC;IAEF,OAAO,CACL,8BACE,KAAC,SAAS,kBACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACrC,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;wBACxB,SAAS,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACrB,CAAC;gBACH,CAAC,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,EACxC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,IACE,QAAQ;wBACR,CAAC,MAAM;wBACP,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAC1C,CAAC;wBACD,SAAS,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACrB,CAAC;yBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,EAAE,CAAC;wBAC3C,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC,EACD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAChB,kBAAkB,IACzB,cAAc,cAElB,KAAC,eAAe,IACd,UAAU,EAAE,QAAQ;oBACpB,+IAA+I;oBAC/I,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAClB;wBACE,wCAAwC;wBACxC,KAAK,EAAC,EAAE,yBAER,SAAS,EAAE,YAAY,YAEtB,QAAQ,GACL,CACP,YAEA,QAAQ,GACO,IACR,EAEZ,MAAC,cAAc,IACb,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAA6B,aAEnE,QAAQ,IAAI,MAAM,IAAI,CACrB,cACE,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,8BAA8B,CAAC;wBAC9D,qCAAqC;wBACrC,KAAK,EAAC,EAAE,YAEP,QAAQ,GACL,CACP,EAEA,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CACzB,4BACE,4BACE,SAAS,EAAE,SAAS,CAAC,gBAAgB,EACrC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EACvC,KAAK,kCAAO,SAAS,CAAC,cAAc,GAAK,SAAS,CAAC,KAAK,KACpD,SAAS,CAAC,gBAAgB,EAAE,EAC3B,GACN,CACJ,IACc,IAChB,CACJ,CAAC;AACJ,CAAC,CAAsE,CAAC"}
|
|
@@ -58,7 +58,7 @@ const calcOffset = (variant, placement, rects) => {
|
|
|
58
58
|
mainAxis,
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
|
-
export function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPlacement = 'top-right', targetRef, hasPulse = true,
|
|
61
|
+
export function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPlacement = 'top-right', targetRef, hasPulse = true, }) {
|
|
62
62
|
const data = useFloating({
|
|
63
63
|
elements: {
|
|
64
64
|
reference: targetRef === null || targetRef === void 0 ? void 0 : targetRef.current,
|
|
@@ -75,7 +75,7 @@ export function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPla
|
|
|
75
75
|
const interactions = useInteractions([role]);
|
|
76
76
|
return useMemo(() => {
|
|
77
77
|
var _a, _b, _c, _d, _e, _f;
|
|
78
|
-
return (Object.assign(Object.assign(Object.assign({}, interactions), data), {
|
|
78
|
+
return (Object.assign(Object.assign(Object.assign({}, interactions), data), { indicatorClasses: classNames('ndl-spotlight-target-indicator', {
|
|
79
79
|
'ndl-spotlight-target-indicator-border': indicatorVariant === 'border',
|
|
80
80
|
'ndl-spotlight-target-indicator-point': indicatorVariant === 'point',
|
|
81
81
|
'ndl-spotlight-target-pulse': hasPulse,
|
|
@@ -90,13 +90,6 @@ export function useIndicator({ isOpen, indicatorVariant = 'border', indicatorPla
|
|
|
90
90
|
? `${(_f = (_e = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) === null || _e === void 0 ? void 0 : _e.clientWidth) !== null && _f !== void 0 ? _f : 0}px`
|
|
91
91
|
: '8px',
|
|
92
92
|
} }));
|
|
93
|
-
}, [
|
|
94
|
-
interactions,
|
|
95
|
-
data,
|
|
96
|
-
indicatorVariant,
|
|
97
|
-
targetRef,
|
|
98
|
-
hasPulse,
|
|
99
|
-
hasAnchorPortal,
|
|
100
|
-
]);
|
|
93
|
+
}, [interactions, data, indicatorVariant, targetRef, hasPulse]);
|
|
101
94
|
}
|
|
102
95
|
//# sourceMappingURL=use-indicator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-indicator.js","sourceRoot":"","sources":["../../../src/spotlight/use-indicator.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACL,UAAU,EAEV,MAAM,EACN,WAAW,EACX,eAAe,EAEf,OAAO,GACR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAgChC,MAAM,aAAa,GAA2B;IAC5C,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,OAAyB,EACzB,SAA6B,EAC7B,KAAmB,EACnB,EAAE;IACF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,4DAA4D;QAC5D,OAAO;YACL,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;SAClE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE;;;SAGK;IAEL,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QACnC,kFAAkF;QAClF,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxC,CAAC;SAAM,IAAI,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QAC1C,gDAAgD;QAChD,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,iBAAiB,KAAK,KAAK,EAAE,CAAC;QACvC,+EAA+E;QAC/E,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,SAAS,EACP,aAAa,CAAC,kBAAkB,CAAC;YACjC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;QAC1D,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,gBAAgB,GAAG,QAAQ,EAC3B,kBAAkB,GAAG,WAAW,EAChC,SAAS,EACT,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"use-indicator.js","sourceRoot":"","sources":["../../../src/spotlight/use-indicator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Copyright (c) "Neo4j"
|
|
4
|
+
* Neo4j Sweden AB [http://neo4j.com]
|
|
5
|
+
*
|
|
6
|
+
* This file is part of Neo4j.
|
|
7
|
+
*
|
|
8
|
+
* Neo4j is free software: you can redistribute it and/or modify
|
|
9
|
+
* it under the terms of the GNU General Public License as published by
|
|
10
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
* (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* This program is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
* GNU General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU General Public License
|
|
19
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
*/
|
|
21
|
+
import { autoUpdate, flip, offset, shift, useClick, useDismiss, useFloating, useInteractions, useRole, useTransitionStyles, } from '@floating-ui/react';
|
|
22
|
+
import { tokens } from '@neo4j-ndl/base';
|
|
23
|
+
import { useMemo, useState } from 'react';
|
|
24
|
+
export function useSpotlight({ isInitialOpen = false, placement = 'bottom', isOpen: controlledOpen, onOpenChange: setControlledOpen, anchorElement, anchorElementAsPortalAnchor, initialFocus, closeOnClickOutside, strategy = 'absolute', } = {}) {
|
|
25
|
+
var _a;
|
|
26
|
+
const [isOpenUncontrolled, setIsOpenUncontrolled] = useState(isInitialOpen);
|
|
27
|
+
const [labelId, setLabelId] = useState();
|
|
28
|
+
const [descriptionId, setDescriptionId] = useState();
|
|
29
|
+
const isOpen = controlledOpen !== null && controlledOpen !== void 0 ? controlledOpen : isOpenUncontrolled;
|
|
30
|
+
const setIsOpen = setControlledOpen !== null && setControlledOpen !== void 0 ? setControlledOpen : setIsOpenUncontrolled;
|
|
31
|
+
const data = useFloating({
|
|
32
|
+
elements: {
|
|
33
|
+
reference: anchorElement,
|
|
34
|
+
},
|
|
35
|
+
middleware: [
|
|
36
|
+
offset(10),
|
|
37
|
+
flip({
|
|
38
|
+
crossAxis: placement.includes('-'),
|
|
39
|
+
fallbackAxisSideDirection: 'end',
|
|
40
|
+
padding: 5,
|
|
41
|
+
}),
|
|
42
|
+
shift({ padding: 5 }),
|
|
43
|
+
],
|
|
44
|
+
onOpenChange: (open, event) => {
|
|
45
|
+
setIsOpen(open);
|
|
46
|
+
setControlledOpen === null || setControlledOpen === void 0 ? void 0 : setControlledOpen(open, event);
|
|
47
|
+
},
|
|
48
|
+
open: isOpen,
|
|
49
|
+
placement: placement,
|
|
50
|
+
strategy,
|
|
51
|
+
whileElementsMounted: autoUpdate,
|
|
52
|
+
});
|
|
53
|
+
const context = data.context;
|
|
54
|
+
const click = useClick(context, {
|
|
55
|
+
enabled: controlledOpen === undefined,
|
|
56
|
+
});
|
|
57
|
+
const dismiss = useDismiss(context, {
|
|
58
|
+
outsidePress: closeOnClickOutside,
|
|
59
|
+
});
|
|
60
|
+
const role = useRole(context, {
|
|
61
|
+
role: 'dialog',
|
|
62
|
+
});
|
|
63
|
+
const interactions = useInteractions([click, dismiss, role]);
|
|
64
|
+
const { styles: transitionStyles } = useTransitionStyles(context, {
|
|
65
|
+
duration: (_a = Number.parseInt(tokens.transitions.values.duration.quick, 10)) !== null && _a !== void 0 ? _a : 0,
|
|
66
|
+
});
|
|
67
|
+
return useMemo(() => (Object.assign(Object.assign(Object.assign({ isOpen,
|
|
68
|
+
setIsOpen }, interactions), data), { transitionStyles,
|
|
69
|
+
labelId,
|
|
70
|
+
descriptionId,
|
|
71
|
+
setLabelId,
|
|
72
|
+
setDescriptionId,
|
|
73
|
+
anchorElementAsPortalAnchor,
|
|
74
|
+
initialFocus })), [
|
|
75
|
+
isOpen,
|
|
76
|
+
setIsOpen,
|
|
77
|
+
interactions,
|
|
78
|
+
data,
|
|
79
|
+
transitionStyles,
|
|
80
|
+
labelId,
|
|
81
|
+
descriptionId,
|
|
82
|
+
anchorElementAsPortalAnchor,
|
|
83
|
+
initialFocus,
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=use-spotlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-spotlight.js","sourceRoot":"","sources":["../../../src/spotlight/use-spotlight.tsx"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,8 @@ type SpotlightContextType = {
|
|
|
32
32
|
registerTarget: (id: string, ref: React.RefObject<HTMLElement>) => void;
|
|
33
33
|
unregisterTarget: (id: string) => void;
|
|
34
34
|
registeredTargets: Record<string, React.RefObject<HTMLElement>>;
|
|
35
|
+
/** If the spotlights should have an overlay */
|
|
36
|
+
hasOverlay?: boolean;
|
|
35
37
|
};
|
|
36
38
|
export declare const useSpotlightContext: () => SpotlightContextType;
|
|
37
39
|
type SpotlightProviderProps = {
|
|
@@ -39,6 +39,8 @@ type SpotlightTargetProps = {
|
|
|
39
39
|
hasAnchorPortal?: boolean;
|
|
40
40
|
className?: string;
|
|
41
41
|
children?: React.ReactNode;
|
|
42
|
+
/** Fit the target size to the children. */
|
|
43
|
+
shouldFitToChildren?: boolean;
|
|
42
44
|
};
|
|
43
45
|
export declare const SpotlightTarget: PolymorphicForwardRefExoticComponent<'div', SpotlightTargetProps>;
|
|
44
46
|
export {};
|
|
@@ -34,5 +34,5 @@ interface UseIndicatorReturn extends UseInteractionsReturn, ReturnType<typeof us
|
|
|
34
34
|
hasAnchorPortal?: boolean;
|
|
35
35
|
}
|
|
36
36
|
export type IndicatorPlacement = 'top-left' | 'top-middle' | 'top-right' | 'bottom-left' | 'bottom-middle' | 'bottom-right' | 'middle-left' | 'middle-middle' | 'middle-right';
|
|
37
|
-
export declare function useIndicator({ isOpen, indicatorVariant, indicatorPlacement, targetRef, hasPulse,
|
|
37
|
+
export declare function useIndicator({ isOpen, indicatorVariant, indicatorPlacement, targetRef, hasPulse, }: IndicatorOptions): UseIndicatorReturn;
|
|
38
38
|
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Copyright (c) "Neo4j"
|
|
4
|
+
* Neo4j Sweden AB [http://neo4j.com]
|
|
5
|
+
*
|
|
6
|
+
* This file is part of Neo4j.
|
|
7
|
+
*
|
|
8
|
+
* Neo4j is free software: you can redistribute it and/or modify
|
|
9
|
+
* it under the terms of the GNU General Public License as published by
|
|
10
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
* (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* This program is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
* GNU General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU General Public License
|
|
19
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
*/
|
|
21
|
+
import { type Placement, useFloating, type UseInteractionsReturn } from '@floating-ui/react';
|
|
22
|
+
export interface SpotlightOptions {
|
|
23
|
+
isInitialOpen?: boolean;
|
|
24
|
+
placement?: Placement;
|
|
25
|
+
isOpen?: boolean;
|
|
26
|
+
onOpenChange?: (open: boolean, event?: Event) => void;
|
|
27
|
+
anchorElement?: Element | null;
|
|
28
|
+
anchorElementAsPortalAnchor?: boolean;
|
|
29
|
+
initialFocus?: number | React.MutableRefObject<HTMLElement | null>;
|
|
30
|
+
closeOnClickOutside?: boolean;
|
|
31
|
+
strategy?: 'fixed' | 'absolute';
|
|
32
|
+
}
|
|
33
|
+
export interface UseSpotlightReturn extends UseInteractionsReturn, ReturnType<typeof useFloating> {
|
|
34
|
+
isOpen: boolean;
|
|
35
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
36
|
+
labelId: string | undefined;
|
|
37
|
+
transitionStyles: React.CSSProperties;
|
|
38
|
+
anchorElementAsPortalAnchor: boolean | undefined;
|
|
39
|
+
initialFocus: number | React.MutableRefObject<HTMLElement | null> | undefined;
|
|
40
|
+
}
|
|
41
|
+
export declare function useSpotlight({ isInitialOpen, placement, isOpen: controlledOpen, onOpenChange: setControlledOpen, anchorElement, anchorElementAsPortalAnchor, initialFocus, closeOnClickOutside, strategy, }?: SpotlightOptions): UseSpotlightReturn;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neo4j-ndl/react",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.11",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "React implementation of Neo4j Design System",
|
|
6
6
|
"keywords": [
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"@tanstack/react-table": "8.20.5",
|
|
73
73
|
"react": ">=16.8.0",
|
|
74
74
|
"react-dom": ">=16.8.0",
|
|
75
|
-
"@neo4j-ndl/base": "^3.7.
|
|
75
|
+
"@neo4j-ndl/base": "^3.7.6"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@dnd-kit/core": "6.1.0",
|