@altinn/altinn-components 0.50.7 → 0.50.8
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/dist/assets/FloatingDropdown.css +1 -1
- package/dist/components/ContextMenu/ContextMenu.js +4 -4
- package/dist/components/Dropdown/FloatingDropdown.js +81 -49
- package/dist/types/lib/components/Button/ButtonBase.d.ts +1 -0
- package/dist/types/lib/components/Dropdown/FloatingDropdown.d.ts +2 -1
- package/dist/types/lib/stories/Inbox.stories.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._container_dqumv_1{position:fixed;bottom:0;right:0;margin:1rem;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}._button_dqumv_13{--dsc-button-size: var(--ds-size-14);width:var(--ds-button-size);height:var(--ds-button-size);border-radius:50%;flex-shrink:0}._dropdown_dqumv_21{display:flex;flex-direction:column;gap:0;border-radius:.5rem;padding:.5rem;box-shadow:var(--ds-shadow-md);min-width:16rem;overflow:hidden;color:#fff}._dropdown_dqumv_21[data-color=company]{background-color:var(--ds-color-company-base-default)}._dropdown_dqumv_21[data-color=person]{background-color:var(--ds-color-person-base-default)}._dropdown_dqumv_21[data-color=neutral]{background-color:var(--ds-color-neutral-base-default)}._dropdownItem_dqumv_45{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:transparent;border:none;cursor:pointer;text-align:left;color:inherit;border-radius:.25rem;transition:background-color .2s ease;font-size:1rem;font-weight:400;line-height:1.5}._dropdownItem_dqumv_45:hover{background-color:#ffffff1a}._dropdownItem_dqumv_45:focus-visible{outline:2px solid currentColor;outline-offset:-2px}._dropdownItem_dqumv_45[data-active=true]{background-color:#fff3}._itemTitle_dqumv_75{flex:1;white-space:nowrap}
|
|
@@ -6,8 +6,8 @@ import { useClickOutside as E } from "../../hooks/useClickOutside.js";
|
|
|
6
6
|
import { useEnterKey as _ } from "../../hooks/useEnterKey.js";
|
|
7
7
|
import { IconButton as C } from "../Button/IconButton.js";
|
|
8
8
|
import { DropdownBase as M } from "../Dropdown/DropdownBase.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { useRootContext as j } from "../RootProvider/RootProvider.js";
|
|
10
|
+
import { MenuItems as R } from "../Menu/MenuItems.js";
|
|
11
11
|
import "../Snackbar/useSnackbar.js";
|
|
12
12
|
import { u as P } from "../../useId-BVFxCjkq.js";
|
|
13
13
|
import '../../assets/ContextMenu.css';var T = function(e, s) {
|
|
@@ -37,7 +37,7 @@ const A = w((e, s) => {
|
|
|
37
37
|
className: o,
|
|
38
38
|
items: i
|
|
39
39
|
}) => {
|
|
40
|
-
const { currentId: v, toggleId: p, closeAll: a } =
|
|
40
|
+
const { currentId: v, toggleId: p, closeAll: a } = j(), d = O(null), g = "context-menu-" + e, x = () => p(e), u = v === e;
|
|
41
41
|
E(d, () => {
|
|
42
42
|
u && p(e);
|
|
43
43
|
});
|
|
@@ -74,7 +74,7 @@ const A = w((e, s) => {
|
|
|
74
74
|
onBlurCapture: h
|
|
75
75
|
}
|
|
76
76
|
),
|
|
77
|
-
u && /* @__PURE__ */ f(M, { placement: r, open: u, children: /* @__PURE__ */ f(
|
|
77
|
+
u && /* @__PURE__ */ f(M, { placement: r, open: u, children: /* @__PURE__ */ f(R, { groups: t, items: b, keyboardEvents: !0 }) })
|
|
78
78
|
] });
|
|
79
79
|
};
|
|
80
80
|
export {
|
|
@@ -1,61 +1,93 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import {
|
|
4
|
-
import { useClickOutside as
|
|
5
|
-
import {
|
|
6
|
-
import { Icon as
|
|
2
|
+
import { jsxs as _, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import { useRef as b, useEffect as M } from "react";
|
|
4
|
+
import { useClickOutside as N } from "../../hooks/useClickOutside.js";
|
|
5
|
+
import { useMenu as R } from "../../hooks/useMenu.js";
|
|
6
|
+
import { Icon as T } from "../Icon/Icon.js";
|
|
7
7
|
import "../../index-L8X2o7IH.js";
|
|
8
|
-
import { ButtonBase as
|
|
9
|
-
import { ButtonIcon as
|
|
10
|
-
import "../RootProvider/RootProvider.js";
|
|
8
|
+
import { ButtonBase as B } from "../Button/ButtonBase.js";
|
|
9
|
+
import { ButtonIcon as j } from "../Button/ButtonIcon.js";
|
|
10
|
+
import { useRootContext as z } from "../RootProvider/RootProvider.js";
|
|
11
11
|
import "../Snackbar/useSnackbar.js";
|
|
12
|
-
import '../../assets/FloatingDropdown.css';const
|
|
13
|
-
container:
|
|
14
|
-
button:
|
|
15
|
-
dropdown:
|
|
16
|
-
dropdownItem:
|
|
17
|
-
itemTitle:
|
|
18
|
-
},
|
|
19
|
-
variant:
|
|
20
|
-
size:
|
|
21
|
-
icon:
|
|
22
|
-
iconOpen:
|
|
23
|
-
iconSize:
|
|
24
|
-
iconAltText:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
12
|
+
import '../../assets/FloatingDropdown.css';const D = "_container_dqumv_1", F = "_button_dqumv_13", L = "_dropdown_dqumv_21", A = "_dropdownItem_dqumv_45", S = "_itemTitle_dqumv_75", n = {
|
|
13
|
+
container: D,
|
|
14
|
+
button: F,
|
|
15
|
+
dropdown: L,
|
|
16
|
+
dropdownItem: A,
|
|
17
|
+
itemTitle: S
|
|
18
|
+
}, X = ({
|
|
19
|
+
variant: w = "solid",
|
|
20
|
+
size: g,
|
|
21
|
+
icon: h,
|
|
22
|
+
iconOpen: a,
|
|
23
|
+
iconSize: x,
|
|
24
|
+
iconAltText: I,
|
|
25
|
+
id: r = "floatingDropdown",
|
|
26
|
+
color: l = "company",
|
|
27
|
+
items: C,
|
|
28
|
+
dataTestId: k
|
|
28
29
|
}) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
30
|
+
var v;
|
|
31
|
+
const { currentId: q, toggleId: i } = z(), t = q === r, s = b(null), u = b(null), m = () => {
|
|
32
|
+
var o;
|
|
33
|
+
(o = u.current) == null || o.focus();
|
|
34
|
+
}, y = (o) => (d) => {
|
|
35
|
+
o(d), i(r), m();
|
|
36
|
+
}, { menu: E, setActiveIndex: p } = R({
|
|
37
|
+
items: C,
|
|
38
|
+
groups: { ungrouped: {} },
|
|
39
|
+
keyboardEvents: t,
|
|
40
|
+
onSelect: m,
|
|
41
|
+
ref: s
|
|
42
|
+
});
|
|
43
|
+
M(() => {
|
|
44
|
+
t && p(0);
|
|
45
|
+
}, [t, p]), N(s, () => {
|
|
46
|
+
t && i(r);
|
|
47
|
+
});
|
|
48
|
+
const f = t && a ? a : h;
|
|
49
|
+
return /* @__PURE__ */ _("div", { className: n.container, ref: s, children: [
|
|
50
|
+
t && /* @__PURE__ */ e("div", { className: n.dropdown, "data-color": l, role: "menu", "aria-labelledby": "floating-dropdown-button", children: (v = E[0]) == null ? void 0 : v.items.map((o, d) => {
|
|
51
|
+
const c = o.props;
|
|
52
|
+
return /* @__PURE__ */ _(
|
|
53
|
+
"button",
|
|
54
|
+
{
|
|
55
|
+
className: n.dropdownItem,
|
|
56
|
+
onClick: y(c.onClick),
|
|
57
|
+
type: "button",
|
|
58
|
+
role: "menuitem",
|
|
59
|
+
tabIndex: o.active ? 0 : -1,
|
|
60
|
+
"data-active": o.active,
|
|
61
|
+
onMouseEnter: o.onMouseEnter,
|
|
62
|
+
onMouseLeave: o.onMouseLeave,
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ e(T, { svgElement: c.icon, size: "md", color: "inherit" }),
|
|
65
|
+
/* @__PURE__ */ e("span", { className: n.itemTitle, children: c.title })
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
d
|
|
69
|
+
);
|
|
70
|
+
}) }),
|
|
71
|
+
/* @__PURE__ */ e(
|
|
72
|
+
B,
|
|
45
73
|
{
|
|
46
74
|
className: n.button,
|
|
47
|
-
variant:
|
|
48
|
-
color:
|
|
49
|
-
size:
|
|
50
|
-
onClick:
|
|
51
|
-
"data-testid":
|
|
52
|
-
"aria-label":
|
|
53
|
-
"aria-expanded":
|
|
54
|
-
|
|
75
|
+
variant: w,
|
|
76
|
+
color: l,
|
|
77
|
+
size: g,
|
|
78
|
+
onClick: () => i(r),
|
|
79
|
+
"data-testid": k,
|
|
80
|
+
"aria-label": I,
|
|
81
|
+
"aria-expanded": t,
|
|
82
|
+
"aria-haspopup": "menu",
|
|
83
|
+
id: "floating-dropdown-button",
|
|
84
|
+
ref: u,
|
|
85
|
+
autoFocus: !1,
|
|
86
|
+
children: f && /* @__PURE__ */ e(j, { icon: f, size: x })
|
|
55
87
|
}
|
|
56
88
|
)
|
|
57
89
|
] });
|
|
58
90
|
};
|
|
59
91
|
export {
|
|
60
|
-
|
|
92
|
+
X as FloatingDropdown
|
|
61
93
|
};
|
|
@@ -21,5 +21,6 @@ export interface ButtonBaseProps extends React.ButtonHTMLAttributes<HTMLButtonEl
|
|
|
21
21
|
children?: ReactNode;
|
|
22
22
|
ariaLabel?: string;
|
|
23
23
|
dataTestId?: string;
|
|
24
|
+
ref?: React.Ref<HTMLElement>;
|
|
24
25
|
}
|
|
25
26
|
export declare const ButtonBase: ({ as, color, className, children, disabled, ariaLabel, size, selected, variant, reverse, rounded, tabIndex, dataTestId, ...rest }: ButtonBaseProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -16,5 +16,6 @@ export interface FloatingDropdownProps {
|
|
|
16
16
|
size?: ButtonSize;
|
|
17
17
|
variant?: ButtonVariant;
|
|
18
18
|
dataTestId?: string;
|
|
19
|
+
id?: string;
|
|
19
20
|
}
|
|
20
|
-
export declare const FloatingDropdown: ({ variant, size, icon, iconOpen, iconSize, iconAltText, color, items, dataTestId, }: FloatingDropdownProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare const FloatingDropdown: ({ variant, size, icon, iconOpen, iconSize, iconAltText, id, color, items, dataTestId, }: FloatingDropdownProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -10,6 +10,10 @@ export default meta;
|
|
|
10
10
|
export declare const InboxPage: () => import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
export declare const InboxEmptyPage: () => import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
export declare const InboxWithGlobalSearch: () => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
/**
|
|
14
|
+
* Example showing how to use the FloatingDropdown with custom options
|
|
15
|
+
*/
|
|
16
|
+
export declare const InboxFloatingDropdown: () => import("react/jsx-runtime").JSX.Element;
|
|
13
17
|
export declare const SearchPage: () => import("react/jsx-runtime").JSX.Element;
|
|
14
18
|
export declare const SearchEmptyPage: () => import("react/jsx-runtime").JSX.Element;
|
|
15
19
|
export declare const DraftsPage: () => import("react/jsx-runtime").JSX.Element;
|