@adamjanicki/ui-extended 1.1.8 → 1.1.9
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/components/Autocomplete.d.ts +4 -4
- package/components/Autocomplete.js +22 -19
- package/components/Popover.d.ts +1 -1
- package/components/Popover.js +2 -3
- package/components/Tooltip.d.ts +1 -1
- package/components/Tooltip.js +2 -3
- package/package.json +2 -2
- package/style.css +0 -29
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import Popover from "./Popover";
|
|
3
|
-
import { IconInput } from "@adamjanicki/ui";
|
|
3
|
+
import { IconInput, ui } from "@adamjanicki/ui";
|
|
4
4
|
type Props<T> = {
|
|
5
5
|
/**
|
|
6
6
|
* The value of the input field
|
|
@@ -59,7 +59,7 @@ type Props<T> = {
|
|
|
59
59
|
/**
|
|
60
60
|
* Allow free text input
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
customize?: boolean;
|
|
63
63
|
/**
|
|
64
64
|
* Props for the input field
|
|
65
65
|
*/
|
|
@@ -71,11 +71,11 @@ type Props<T> = {
|
|
|
71
71
|
/**
|
|
72
72
|
* Props for the list element
|
|
73
73
|
*/
|
|
74
|
-
listProps?: React.ComponentProps<
|
|
74
|
+
listProps?: React.ComponentProps<typeof ui.ul>;
|
|
75
75
|
/**
|
|
76
76
|
* Props for the list item elements
|
|
77
77
|
*/
|
|
78
|
-
listItemProps?: React.ComponentProps<
|
|
78
|
+
listItemProps?: React.ComponentProps<typeof ui.li>;
|
|
79
79
|
/**
|
|
80
80
|
* Footer node to render at the bottom of the popover
|
|
81
81
|
*/
|
|
@@ -20,15 +20,15 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
}
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
|
-
import { jsx as _jsx,
|
|
23
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
24
|
import React from "react";
|
|
25
25
|
import Popover from "./Popover";
|
|
26
|
-
import { Box, ClickOutside, IconInput } from "@adamjanicki/ui";
|
|
26
|
+
import { Box, ClickOutside, IconInput, ui } from "@adamjanicki/ui";
|
|
27
27
|
import { classNames } from "@adamjanicki/ui/functions";
|
|
28
|
-
var defaultRenderOption = function (option) { return (_jsx(Box, {
|
|
28
|
+
var defaultRenderOption = function (option) { return (_jsx(Box, { vfx: { padding: "s" }, children: "".concat(option) })); };
|
|
29
29
|
var Autocomplete = function (props) {
|
|
30
30
|
var _a, _b;
|
|
31
|
-
var options = props.options, _c = props.renderOption, renderOption = _c === void 0 ? defaultRenderOption : _c, _d = props.filterOption, filterOption = _d === void 0 ? function () { return true; } : _d, groupBy = props.groupBy, renderGroup = props.renderGroup, noOptionsNode = props.noOptionsNode, _e = props.InputProps, InputProps = _e === void 0 ? {} : _e, _f = props.
|
|
31
|
+
var options = props.options, _c = props.renderOption, renderOption = _c === void 0 ? defaultRenderOption : _c, _d = props.filterOption, filterOption = _d === void 0 ? function () { return true; } : _d, groupBy = props.groupBy, renderGroup = props.renderGroup, noOptionsNode = props.noOptionsNode, _e = props.InputProps, InputProps = _e === void 0 ? {} : _e, _f = props.customize, customize = _f === void 0 ? false : _f, value = props.value, onInputChange = props.onInputChange, onSelect = props.onSelect, popoverProps = props.popoverProps, footer = props.footer, _g = props.listItemProps, listItemProps = _g === void 0 ? {} : _g, _h = props.listProps, listProps = _h === void 0 ? {} : _h, onUnselectedEnter = props.onUnselectedEnter, _j = props.closeOnFooterClick, closeOnFooterClick = _j === void 0 ? true : _j, _k = props.remainOpenOnSelectOrEnter, remainOpenOnSelectOrEnter = _k === void 0 ? false : _k, rest = __rest(props, ["options", "renderOption", "filterOption", "groupBy", "renderGroup", "noOptionsNode", "InputProps", "customize", "value", "onInputChange", "onSelect", "popoverProps", "footer", "listItemProps", "listProps", "onUnselectedEnter", "closeOnFooterClick", "remainOpenOnSelectOrEnter"]);
|
|
32
32
|
var inputContainerRef = React.useRef(null);
|
|
33
33
|
var inputRef = React.useRef(null);
|
|
34
34
|
var onRef = React.useRef(null);
|
|
@@ -54,7 +54,7 @@ var Autocomplete = function (props) {
|
|
|
54
54
|
})
|
|
55
55
|
.flat();
|
|
56
56
|
}
|
|
57
|
-
if (
|
|
57
|
+
if (customize && value.length > 0 && filteredOptions.length === 0) {
|
|
58
58
|
filteredOptions.push(value);
|
|
59
59
|
}
|
|
60
60
|
var focusInput = function () { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); };
|
|
@@ -84,11 +84,9 @@ var Autocomplete = function (props) {
|
|
|
84
84
|
var current = onRef.current;
|
|
85
85
|
if (current) {
|
|
86
86
|
// Horrible heuristic to handle links
|
|
87
|
-
// It's terrible, but
|
|
87
|
+
// It's terrible, but speedy
|
|
88
88
|
var child = current.firstChild;
|
|
89
|
-
|
|
90
|
-
(_b = child.click) === null || _b === void 0 ? void 0 : _b.call(child);
|
|
91
|
-
current.click();
|
|
89
|
+
(_b = child === null || child === void 0 ? void 0 : child.click) === null || _b === void 0 ? void 0 : _b.call(child);
|
|
92
90
|
}
|
|
93
91
|
else if (onUnselectedEnter) {
|
|
94
92
|
onUnselectedEnter();
|
|
@@ -126,15 +124,20 @@ var Autocomplete = function (props) {
|
|
|
126
124
|
if (!open) {
|
|
127
125
|
openMenu();
|
|
128
126
|
}
|
|
129
|
-
}, ref: inputRef, autoComplete: "off" }) })), _jsxs(Popover, __assign({}, popoverProps, { open: popoverOpen, triggerRef: inputContainerRef,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
127
|
+
}, ref: inputRef, autoComplete: "off" }) })), _jsxs(Popover, __assign({}, popoverProps, { open: popoverOpen, triggerRef: inputContainerRef, vfx: {
|
|
128
|
+
padding: "none",
|
|
129
|
+
margin: "none",
|
|
130
|
+
overflow: "hidden",
|
|
131
|
+
fontWeight: 4,
|
|
132
|
+
}, style: __assign(__assign({}, popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.style), { width: (_b = (_a = inputContainerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : 0 }), children: [_jsx(ui.ul, __assign({}, listProps, { vfx: __assign({ axis: "y", padding: "s", margin: "none", overflow: "scroll" }, listProps.vfx), style: __assign({ maxHeight: 300 }, listProps.style), tabIndex: -1, children: _jsx(_Fragment, { children: filteredOptions.length
|
|
133
|
+
? filteredOptions.map(function (option, index) {
|
|
134
|
+
var group = groupMap.get(index);
|
|
135
|
+
var ref = index === on ? onRef : undefined;
|
|
136
|
+
return (_jsxs(React.Fragment, { children: [group && ((renderGroup === null || renderGroup === void 0 ? void 0 : renderGroup(group)) || group), _jsx(ui.li, __assign({}, listItemProps, { vfx: __assign({ axis: "x", cursor: "pointer", radius: "rounded" }, listItemProps.vfx), ref: ref, onMouseEnter: function () { return setOn(index); }, className: classNames(on === index
|
|
137
|
+
? "aui-autocomplete-on-option"
|
|
138
|
+
: undefined, listItemProps.className), onClick: function () { return handleChange(option); }, children: _jsx(_Fragment, { children: renderOption(option) }) }))] }, index));
|
|
139
|
+
})
|
|
140
|
+
: !customize &&
|
|
141
|
+
(noOptionsNode || defaultRenderOption("No results found")) }) })), !!footer && (_jsx(Box, { onClick: closeOnFooterClick ? closeMenu : undefined, children: _jsx(_Fragment, { children: footer }) }))] }))] })) }));
|
|
139
142
|
};
|
|
140
143
|
export default Autocomplete;
|
package/components/Popover.d.ts
CHANGED
|
@@ -32,5 +32,5 @@ type Props = BoxProps & {
|
|
|
32
32
|
returnFocusOnEscape?: boolean;
|
|
33
33
|
};
|
|
34
34
|
export declare const UnstyledPopover: (props: Props) => import("react/jsx-runtime").JSX.Element | null;
|
|
35
|
-
declare const Popover: ({
|
|
35
|
+
declare const Popover: ({ vfx, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
36
36
|
export default Popover;
|
package/components/Popover.js
CHANGED
|
@@ -23,7 +23,6 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
23
23
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
24
24
|
import Box from "@adamjanicki/ui/components/Box/Box";
|
|
25
25
|
import { useFloating, autoUpdate, offset, useDismiss, useTransitionStyles, } from "@floating-ui/react";
|
|
26
|
-
import { classNames } from "@adamjanicki/ui";
|
|
27
26
|
export var UnstyledPopover = function (props) {
|
|
28
27
|
var triggerRef = props.triggerRef, open = props.open, _a = props.placement, placement = _a === void 0 ? "bottom" : _a, style = props.style, _b = props.offset, placementOffset = _b === void 0 ? 0 : _b, children = props.children, onClose = props.onClose, _c = props.returnFocusOnEscape, returnFocusOnEscape = _c === void 0 ? false : _c, rest = __rest(props, ["triggerRef", "open", "placement", "style", "offset", "children", "onClose", "returnFocusOnEscape"]);
|
|
29
28
|
var handleOnClose = function () {
|
|
@@ -51,7 +50,7 @@ export var UnstyledPopover = function (props) {
|
|
|
51
50
|
return isMounted ? (_jsx(Box, __assign({ ref: refs.setFloating, style: __assign(__assign(__assign({}, floatingStyles), transitionStyles), style) }, rest, { children: _jsx(_Fragment, { children: children }) }))) : null;
|
|
52
51
|
};
|
|
53
52
|
var Popover = function (_a) {
|
|
54
|
-
var
|
|
55
|
-
return (_jsx(UnstyledPopover, __assign({
|
|
53
|
+
var vfx = _a.vfx, rest = __rest(_a, ["vfx"]);
|
|
54
|
+
return (_jsx(UnstyledPopover, __assign({ vfx: __assign({ padding: "s", backgroundColor: "default", border: true, shadow: "floating", radius: "rounded", z: "floating" }, vfx) }, rest)));
|
|
56
55
|
};
|
|
57
56
|
export default Popover;
|
package/components/Tooltip.d.ts
CHANGED
|
@@ -32,5 +32,5 @@ type Props = Omit<BoxProps, "children" | "onMouseEnter" | "onMouseLeave"> & {
|
|
|
32
32
|
disabled?: boolean;
|
|
33
33
|
};
|
|
34
34
|
export declare const UnstyledTooltip: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
35
|
-
export declare const Tooltip: ({
|
|
35
|
+
export declare const Tooltip: ({ vfx, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
36
36
|
export default Tooltip;
|
package/components/Tooltip.js
CHANGED
|
@@ -24,7 +24,6 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
24
24
|
import { cloneElement, useState } from "react";
|
|
25
25
|
import Box from "@adamjanicki/ui/components/Box/Box";
|
|
26
26
|
import { useFloating, useHover, useInteractions, flip, safePolygon, autoUpdate, offset, useTransitionStyles, } from "@floating-ui/react";
|
|
27
|
-
import { classNames } from "@adamjanicki/ui";
|
|
28
27
|
export var UnstyledTooltip = function (props) {
|
|
29
28
|
var children = props.children, content = props.tooltipContent, _a = props.placement, placement = _a === void 0 ? "bottom" : _a, style = props.style, _b = props.offset, placementOffset = _b === void 0 ? 0 : _b, _c = props.disableFlip, disableFlip = _c === void 0 ? false : _c, _d = props.disabled, disabled = _d === void 0 ? false : _d, rest = __rest(props, ["children", "tooltipContent", "placement", "style", "offset", "disableFlip", "disabled"]);
|
|
30
29
|
var _e = useState(false), open = _e[0], setOpen = _e[1];
|
|
@@ -53,7 +52,7 @@ export var UnstyledTooltip = function (props) {
|
|
|
53
52
|
return (_jsxs(_Fragment, { children: [cloneElement(children, __assign({ ref: refs.setReference }, getReferenceProps())), isMounted && (_jsx(Box, __assign({ ref: refs.setFloating, style: __assign(__assign(__assign({}, floatingStyles), transitionStyles), style) }, { onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, rest, { children: _jsx(_Fragment, { children: content }) })))] }));
|
|
54
53
|
};
|
|
55
54
|
export var Tooltip = function (_a) {
|
|
56
|
-
var
|
|
57
|
-
return (_jsx(UnstyledTooltip, __assign({
|
|
55
|
+
var vfx = _a.vfx, rest = __rest(_a, ["vfx"]);
|
|
56
|
+
return (_jsx(UnstyledTooltip, __assign({ vfx: __assign({ padding: "s", backgroundColor: "default", border: true, shadow: "floating", radius: "rounded", z: "floating" }, vfx) }, rest)));
|
|
58
57
|
};
|
|
59
58
|
export default Tooltip;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adamjanicki/ui-extended",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9",
|
|
4
4
|
"description": "More advanced UI components and hooks for React in TypeScript",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"react-dom": ">=18"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@adamjanicki/ui": "^1.
|
|
25
|
+
"@adamjanicki/ui": "^1.7.1",
|
|
26
26
|
"@floating-ui/react": "^0.26.17"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
package/style.css
CHANGED
|
@@ -12,32 +12,3 @@
|
|
|
12
12
|
background-color: var(--aui-autocomplete-highlighted);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
.aui-autocomplete-popover {
|
|
17
|
-
font-weight: 400;
|
|
18
|
-
overflow: hidden;
|
|
19
|
-
padding: 0;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.aui-autocomplete-ul {
|
|
23
|
-
overflow: scroll;
|
|
24
|
-
max-height: 300px;
|
|
25
|
-
display: flex;
|
|
26
|
-
flex-direction: column;
|
|
27
|
-
outline: none;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.aui-autocomplete-li {
|
|
31
|
-
display: flex;
|
|
32
|
-
cursor: pointer;
|
|
33
|
-
border-radius: var(--aui-rounded-radius);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.aui-tooltip,
|
|
37
|
-
.aui-popover {
|
|
38
|
-
background-color: var(--aui-default-background);
|
|
39
|
-
border: 1px solid var(--aui-default-border);
|
|
40
|
-
box-shadow: var(--aui-floating-box-shadow);
|
|
41
|
-
border-radius: var(--aui-rounded-radius);
|
|
42
|
-
z-index: 1000;
|
|
43
|
-
}
|