@altinn/altinn-components 0.19.1 → 0.19.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- ._list_qqtoj_1{display:flex;width:100%;row-gap:.5rem;flex-direction:column;list-style:none;padding:0;margin:0}@media (min-width: 1024px){._list_qqtoj_1{flex-direction:row;align-items:center;justify-content:start;column-gap:.5rem;width:auto}}._item_qqtoj_21{margin:0;border-top:2px solid;border-bottom:2px solid;border-color:transparent}._item_qqtoj_21[aria-selected=true]{background-color:transparent;border-bottom-color:var(--ds-color-base-default)}
1
+ ._list_gp6cp_1{display:flex;width:100%;row-gap:.5rem;flex-direction:column;list-style:none;padding:0;margin:0}@media (min-width: 1024px){._list_gp6cp_1{flex-direction:row;align-items:center;justify-content:start;column-gap:.5rem;width:auto}}._item_gp6cp_21{margin:0;border-top:2px solid;border-bottom:2px solid;border-color:transparent}._item_gp6cp_21[data-selected=true]{background-color:transparent;border-bottom-color:var(--ds-color-base-default)}
@@ -1,28 +1,29 @@
1
- import { jsx as c } from "react/jsx-runtime";
1
+ import { jsx as f } from "react/jsx-runtime";
2
2
  import { createElement as t } from "react";
3
3
  import "../../index-L8X2o7IH.js";
4
- import { useMenu as f } from "../../hooks/useMenu.js";
4
+ import { useMenu as l } from "../../hooks/useMenu.js";
5
5
  import "../RootProvider/RootProvider.js";
6
- import { DialogListGroup as l } from "./DialogListGroup.js";
7
- import { DialogListItem as y } from "./DialogListItem.js";
6
+ import { DialogListGroup as y } from "./DialogListGroup.js";
7
+ import { DialogListItem as d } from "./DialogListItem.js";
8
8
  import "../Search/AutocompleteBase.js";
9
9
  import "../Snackbar/useSnackbar.js";
10
- import { Section as d } from "../Page/Section.js";
11
- const h = ({ items: i, groups: m = {} }) => {
12
- const { menu: r } = f({
10
+ import { Section as g } from "../Page/Section.js";
11
+ const j = ({ items: i, groups: m = {}, sortGroupBy: e }) => {
12
+ const { menu: r } = l({
13
13
  items: i,
14
14
  groups: m,
15
15
  groupByKey: "groupId",
16
- keyboardEvents: !1
16
+ keyboardEvents: !1,
17
+ sortGroupBy: e
17
18
  });
18
- return /* @__PURE__ */ c(d, { spacing: 3, margin: "section", children: r == null ? void 0 : r.map((o, e) => {
19
- const p = o.props || {};
20
- return /* @__PURE__ */ t(l, { ...p, key: e }, o == null ? void 0 : o.items.map((s, n) => {
21
- const a = s.props || {};
22
- return /* @__PURE__ */ t(y, { ...a, key: n });
19
+ return /* @__PURE__ */ f(g, { spacing: 3, margin: "section", children: r == null ? void 0 : r.map((o, p) => {
20
+ const s = o.props || {};
21
+ return /* @__PURE__ */ t(y, { ...s, key: p }, o == null ? void 0 : o.items.map((n, a) => {
22
+ const c = n.props || {};
23
+ return /* @__PURE__ */ t(d, { ...c, key: a });
23
24
  }));
24
25
  }) });
25
26
  };
26
27
  export {
27
- h as DialogList
28
+ j as DialogList
28
29
  };
@@ -2,14 +2,14 @@ import { jsx as t } from "react/jsx-runtime";
2
2
  import "../../index-L8X2o7IH.js";
3
3
  import "react";
4
4
  import "../RootProvider/RootProvider.js";
5
- import { MenuItem as l } from "../Menu/MenuItem.js";
5
+ import { MenuItem as p } from "../Menu/MenuItem.js";
6
6
  import "../Search/AutocompleteBase.js";
7
7
  import "../Snackbar/useSnackbar.js";
8
- import { Flex as n } from "./Flex.js";
9
- import '../../assets/PageTabs.css';const p = "_list_qqtoj_1", a = "_item_qqtoj_21", i = {
10
- list: p,
11
- item: a
12
- }, x = ({ theme: m = "transparent", color: o, items: e = [], padding: s = 0 }) => /* @__PURE__ */ t(n, { theme: m, color: o, padding: s, children: /* @__PURE__ */ t("ul", { className: i.list, children: e.map((r) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(l, { ...r, className: i.item }) }, r.id)) }) });
8
+ import { Flex as l } from "./Flex.js";
9
+ import '../../assets/PageTabs.css';const n = "_list_gp6cp_1", c = "_item_gp6cp_21", i = {
10
+ list: n,
11
+ item: c
12
+ }, N = ({ theme: m = "transparent", color: e, items: s = [], padding: o = 0 }) => /* @__PURE__ */ t(l, { theme: m, color: e, padding: o, children: /* @__PURE__ */ t("ul", { className: i.list, children: s.map((r) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(p, { ...r, className: i.item }) }, r.id)) }) });
13
13
  export {
14
- x as PageTabs
14
+ N as PageTabs
15
15
  };
@@ -1,12 +1,13 @@
1
1
  "use client";
2
- import { useState as h, useMemo as w, useCallback as x, useEffect as i } from "react";
3
- const v = ({
2
+ import { useState as w, useMemo as x, useCallback as i, useEffect as k } from "react";
3
+ const I = ({
4
4
  items: n,
5
5
  groups: f,
6
6
  groupByKey: u,
7
- keyboardEvents: a = !1
7
+ keyboardEvents: a = !1,
8
+ sortGroupBy: p
8
9
  }) => {
9
- const [l, d] = h(-1), p = w(() => {
10
+ const [l, d] = w(-1), h = x(() => {
10
11
  const r = n.reduce(
11
12
  (o, s) => {
12
13
  const e = u && s[u] ? s[u] : "ungrouped";
@@ -14,7 +15,7 @@ const v = ({
14
15
  },
15
16
  {}
16
17
  ), t = Object.values(r).flat();
17
- return Object.entries(r).map(([o, s]) => ({
18
+ return Object.entries(r).sort(p || (() => 0)).map(([o, s]) => ({
18
19
  items: s.map((e) => ({
19
20
  menuIndex: t.indexOf(e),
20
21
  active: l === t.indexOf(e),
@@ -22,19 +23,19 @@ const v = ({
22
23
  })),
23
24
  props: f[o] || {}
24
25
  }));
25
- }, [n, u, l, f]), c = x(
26
+ }, [n, u, l, f]), c = i(
26
27
  (r) => {
27
28
  r.key === "ArrowDown" ? d((t) => (t + 1) % n.length) : r.key === "ArrowUp" && d((t) => (t - 1 + n.length) % n.length);
28
29
  },
29
30
  [n.length]
30
31
  );
31
- return i(() => {
32
+ return k(() => {
32
33
  if (a)
33
34
  return d(0), document.addEventListener("keydown", c), () => {
34
35
  document.removeEventListener("keydown", c);
35
36
  };
36
- }, [c, a]), { menu: p, activeIndex: l, setActiveIndex: d };
37
+ }, [c, a]), { menu: h, activeIndex: l, setActiveIndex: d };
37
38
  };
38
39
  export {
39
- v as useMenu
40
+ I as useMenu
40
41
  };
@@ -2,5 +2,6 @@ import { DialogListGroupProps, DialogListItemProps } from '../';
2
2
  export interface DialogListProps {
3
3
  items: DialogListItemProps[];
4
4
  groups?: Record<string, DialogListGroupProps>;
5
+ sortGroupBy?: (a: [string, DialogListItemProps[]], b: [string, DialogListItemProps[]]) => number;
5
6
  }
6
- export declare const DialogList: ({ items, groups }: DialogListProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const DialogList: ({ items, groups, sortGroupBy }: DialogListProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { StoryObj } from '@storybook/react';
2
2
  declare const meta: {
3
3
  title: string;
4
- component: ({ items, groups }: import('./DialogList').DialogListProps) => import("react/jsx-runtime").JSX.Element;
4
+ component: ({ items, groups, sortGroupBy }: import('./DialogList').DialogListProps) => import("react/jsx-runtime").JSX.Element;
5
5
  tags: string[];
6
6
  parameters: {
7
7
  layout: string;
@@ -12,4 +12,5 @@ declare const meta: {
12
12
  };
13
13
  export default meta;
14
14
  type Story = StoryObj<typeof meta>;
15
- export declare const Grouped: Story;
15
+ export declare const GroupedByDate: Story;
16
+ export declare const GroupedByRoute: Story;
@@ -1,9 +1,8 @@
1
- import { MenuItemColor, MenuItemProps } from '..';
2
- export type PageTabsTheme = 'transparent' | 'base';
1
+ import { MenuItemColor, MenuItemProps, MenuTheme } from '..';
3
2
  export type PageTabsPadding = 0 | 2;
4
3
  export type PageTabsVariant = 'card' | undefined;
5
4
  export interface PageTabsProps {
6
- theme?: PageTabsTheme;
5
+ theme?: MenuTheme;
7
6
  color?: MenuItemColor;
8
7
  padding?: PageTabsPadding;
9
8
  items?: MenuItemProps[];
@@ -0,0 +1,23 @@
1
+ import { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ component: ({ theme, color, items, padding }: import('./PageTabs').PageTabsProps) => import("react/jsx-runtime").JSX.Element;
5
+ tags: string[];
6
+ parameters: {};
7
+ args: {
8
+ items: ({
9
+ id: string;
10
+ href: string;
11
+ title: string;
12
+ selected: true;
13
+ } | {
14
+ id: string;
15
+ href: string;
16
+ title: string;
17
+ selected?: undefined;
18
+ })[];
19
+ };
20
+ };
21
+ export default meta;
22
+ type Story = StoryObj<typeof meta>;
23
+ export declare const Default: Story;
@@ -17,5 +17,6 @@ export interface UseMenuInput<T, V> {
17
17
  groups: Record<string, V>;
18
18
  groupByKey?: keyof T;
19
19
  keyboardEvents?: boolean;
20
+ sortGroupBy?: (a: [string, T[]], b: [string, T[]]) => number;
20
21
  }
21
- export declare const useMenu: <T, V>({ items, groups, groupByKey, keyboardEvents, }: UseMenuInput<T, V>) => UseMenuOutput<T, V>;
22
+ export declare const useMenu: <T, V>({ items, groups, groupByKey, keyboardEvents, sortGroupBy, }: UseMenuInput<T, V>) => UseMenuOutput<T, V>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@altinn/altinn-components",
3
- "version": "0.19.1",
3
+ "version": "0.19.3",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist/",