@reykjavik/hanna-react 0.10.80 → 0.10.81
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/CHANGELOG.md +9 -0
- package/MainMenu.d.ts +2 -2
- package/Tooltip.d.ts +7 -0
- package/Tooltip.js +61 -0
- package/_abstract/_TogglerInput.js +8 -9
- package/index.d.ts +1 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
- ... <!-- Add new lines here. -->
|
|
6
6
|
|
|
7
|
+
## 0.10.81
|
|
8
|
+
|
|
9
|
+
_2023-02-16_
|
|
10
|
+
|
|
11
|
+
- feat: Add component `Tooltip`
|
|
12
|
+
- fix(ts): Make `MainMenu` onClick handlers return `void`, not `undefined`
|
|
13
|
+
- fix: Suppress accidental dev-mode warnings for
|
|
14
|
+
`CheckboxButton`/`RadioButtonGroup`s
|
|
15
|
+
|
|
7
16
|
## 0.10.80
|
|
8
17
|
|
|
9
18
|
_2023-02-08_
|
package/MainMenu.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type MainMenuItem = {
|
|
|
22
22
|
* "Hamburger menu" (a.k.a. "Mobile menu")
|
|
23
23
|
* … unless the `onClick` function explicitly returns `false`.
|
|
24
24
|
*/
|
|
25
|
-
onClick?: (index: number, item: MainMenuItem) =>
|
|
25
|
+
onClick?: (index: number, item: MainMenuItem) => void | boolean;
|
|
26
26
|
controlsId?: string;
|
|
27
27
|
};
|
|
28
28
|
export type MainMenuSeparator = '---';
|
|
@@ -50,7 +50,7 @@ export type MainMenuProps = {
|
|
|
50
50
|
* "Hamburger menu" (a.k.a. "Mobile menu")
|
|
51
51
|
* … unless the `onItemClick` function explicitly returns `false`.
|
|
52
52
|
*/
|
|
53
|
-
onItemClick?: (index: number, item: MainMenuItem) =>
|
|
53
|
+
onItemClick?: (index: number, item: MainMenuItem) => void | boolean;
|
|
54
54
|
activePanelId?: string;
|
|
55
55
|
texts?: MainMenuI18n;
|
|
56
56
|
lang?: string;
|
package/Tooltip.d.ts
ADDED
package/Tooltip.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
const react_2 = require("@floating-ui/react");
|
|
6
|
+
const hooks_1 = require("@hugsmidjan/react/hooks");
|
|
7
|
+
const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
|
|
8
|
+
const getSide = (placement) => placement.split('-')[0];
|
|
9
|
+
const ToolTip = (props) => {
|
|
10
|
+
const { text, label, iconOnly } = props;
|
|
11
|
+
const arrowRef = (0, react_1.useRef)(null);
|
|
12
|
+
const [isOpen, setIsOpen] = (0, hooks_1.useLaggedState)(false, 300);
|
|
13
|
+
const { x, y, reference, floating, middlewareData, placement } = (0, react_2.useFloating)({
|
|
14
|
+
placement: 'top',
|
|
15
|
+
middleware: [(0, react_2.offset)(10), (0, react_2.flip)(), (0, react_2.shift)(), (0, react_2.arrow)({ element: arrowRef })],
|
|
16
|
+
whileElementsMounted: react_2.autoUpdate,
|
|
17
|
+
});
|
|
18
|
+
const { arrow } = middlewareData;
|
|
19
|
+
const arrowX = arrow === null || arrow === void 0 ? void 0 : arrow.x;
|
|
20
|
+
const arrowY = arrow === null || arrow === void 0 ? void 0 : arrow.y;
|
|
21
|
+
(0, hooks_1.useCallbackOnEsc)(() => {
|
|
22
|
+
setIsOpen(false);
|
|
23
|
+
});
|
|
24
|
+
return (react_1.default.createElement("details", { className: `Tooltip Tooltip--${getSide(placement)}`, open: isOpen, onMouseEnter: () => setIsOpen(true, 100), onFocus: () => {
|
|
25
|
+
if (isOpen) {
|
|
26
|
+
setIsOpen(true, 0);
|
|
27
|
+
}
|
|
28
|
+
}, onBlur: () => setIsOpen(false), onClick: (e) => {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
setIsOpen(!isOpen, 0);
|
|
31
|
+
}, onMouseDown: () => {
|
|
32
|
+
if (isOpen) {
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
setIsOpen(true, 0);
|
|
35
|
+
}, 100);
|
|
36
|
+
}
|
|
37
|
+
}, onMouseLeave: (e) => {
|
|
38
|
+
if (e.currentTarget.$contextClicked_firefox_fix) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
setIsOpen(false);
|
|
42
|
+
}, onContextMenu: (e) => {
|
|
43
|
+
const elm = e.currentTarget;
|
|
44
|
+
clearTimeout(elm.$contextClicked_firefox_fix);
|
|
45
|
+
elm.$contextClicked_firefox_fix = setTimeout(() => {
|
|
46
|
+
delete elm.$contextClicked_firefox_fix;
|
|
47
|
+
}, 300);
|
|
48
|
+
}, style: x == null
|
|
49
|
+
? undefined
|
|
50
|
+
: {
|
|
51
|
+
'--tooltip-content-pos-y': `${y}px`,
|
|
52
|
+
'--tooltip-content-pos-x': `${x}px`,
|
|
53
|
+
'--tooltip-arrow-pos-x': `${arrowX}px`,
|
|
54
|
+
'--tooltip-arrow-pos-y': `${arrowY}px`,
|
|
55
|
+
} },
|
|
56
|
+
react_1.default.createElement("summary", { className: (0, getBemClass_1.default)('Tooltip__trigger', iconOnly && 'icononly'), ref: reference }, label),
|
|
57
|
+
react_1.default.createElement("div", { className: "Tooltip__content", onClick: (e) => e.stopPropagation(), ref: floating },
|
|
58
|
+
x !== null && (react_1.default.createElement("div", { "data-floating-ui-hack-plz-ignore": "", style: { position: 'absolute', display: 'none' }, ref: arrowRef })),
|
|
59
|
+
text)));
|
|
60
|
+
};
|
|
61
|
+
exports.default = ToolTip;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TogglerInput = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const react_1 = tslib_1.
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
6
|
const hooks_1 = require("@hugsmidjan/react/hooks");
|
|
7
7
|
const getBemClass_1 = tslib_1.__importDefault(require("@hugsmidjan/react/utils/getBemClass"));
|
|
8
8
|
const TogglerInput = (props) => {
|
|
@@ -12,17 +12,16 @@ const TogglerInput = (props) => {
|
|
|
12
12
|
const reqStar = required && reqText !== false && (react_1.default.createElement("abbr", { className: bem + '__label__reqstar',
|
|
13
13
|
// TODO: add mo-better i18n thinking
|
|
14
14
|
title: (reqText || 'Þarf að haka í') + ': ' }, "*"));
|
|
15
|
-
const
|
|
15
|
+
const labelContent = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
16
|
+
' ',
|
|
17
|
+
reqStar,
|
|
18
|
+
" ",
|
|
19
|
+
label,
|
|
20
|
+
' '));
|
|
16
21
|
return (react_1.default.createElement(Wrapper, { className: (0, getBemClass_1.default)(bem, modifier, className) },
|
|
17
22
|
react_1.default.createElement("input", Object.assign({ className: bem + '__input', type: type, id: domid, "aria-invalid": invalid || !!errorMessage || undefined, "aria-describedby": errorId }, inputProps)),
|
|
18
23
|
' ',
|
|
19
|
-
react_1.default.createElement("label", { className: bem + '__label', htmlFor: domid },
|
|
20
|
-
react_1.default.createElement(InnerWrap, { className: bem + '__label__wrap' },
|
|
21
|
-
' ',
|
|
22
|
-
reqStar,
|
|
23
|
-
" ",
|
|
24
|
-
label,
|
|
25
|
-
' ')),
|
|
24
|
+
react_1.default.createElement("label", { className: bem + '__label', htmlFor: domid }, innerWrap ? (react_1.default.createElement("span", { className: bem + '__label__wrap' }, labelContent)) : (labelContent)),
|
|
26
25
|
errorMessage && (react_1.default.createElement("div", { className: bem + '__error', id: errorId }, errorMessage))));
|
|
27
26
|
};
|
|
28
27
|
exports.TogglerInput = TogglerInput;
|
package/index.d.ts
CHANGED
|
@@ -86,6 +86,7 @@
|
|
|
86
86
|
/// <reference path="./TextBlock.d.tsx" />
|
|
87
87
|
/// <reference path="./TextButton.d.tsx" />
|
|
88
88
|
/// <reference path="./TextInput.d.tsx" />
|
|
89
|
+
/// <reference path="./Tooltip.d.tsx" />
|
|
89
90
|
/// <reference path="./utils.d.ts" />
|
|
90
91
|
/// <reference path="./VerticalTabsTOC.d.tsx" />
|
|
91
92
|
/// <reference path="./VSpacer.d.tsx" />
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reykjavik/hanna-react",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.81",
|
|
4
4
|
"author": "Reykjavík (http://www.reykjavik.is)",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Hugsmiðjan ehf (http://www.hugsmidjan.is)",
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
"homepage": "https://github.com/rvk-utd/hanna/blob/main/modules/hanna-react/README.md",
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
|
+
"@floating-ui/react": "^0.19.2",
|
|
16
17
|
"@hugsmidjan/qj": "^4.10.2",
|
|
17
18
|
"@hugsmidjan/react": "^0.4.23",
|
|
18
19
|
"@reykjavik/hanna-css": "^0.3.13",
|
|
19
|
-
"@reykjavik/hanna-utils": "^0.2.
|
|
20
|
+
"@reykjavik/hanna-utils": "^0.2.3",
|
|
20
21
|
"@types/react": "^17.0.24",
|
|
21
22
|
"@types/react-autosuggest": "^10.1.0",
|
|
22
23
|
"@types/react-datepicker": "^4.8.0",
|