@navikt/ds-react 4.7.4 → 4.9.0
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/_docs.json +389 -1
- package/cjs/index.js +1 -0
- package/cjs/layout/stack/HStack.js +51 -0
- package/cjs/layout/stack/Spacer.js +21 -0
- package/cjs/layout/stack/Stack.js +51 -0
- package/cjs/layout/stack/VStack.js +51 -0
- package/cjs/layout/stack/index.js +9 -0
- package/cjs/layout/stack/package.json +6 -0
- package/cjs/layout/utilities/css.js +17 -0
- package/cjs/table/ExpandableRow.js +20 -8
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/layout/stack/HStack.d.ts +24 -0
- package/esm/layout/stack/HStack.js +26 -0
- package/esm/layout/stack/HStack.js.map +1 -0
- package/esm/layout/stack/Spacer.d.ts +14 -0
- package/esm/layout/stack/Spacer.js +15 -0
- package/esm/layout/stack/Spacer.js.map +1 -0
- package/esm/layout/stack/Stack.d.ts +26 -0
- package/esm/layout/stack/Stack.js +23 -0
- package/esm/layout/stack/Stack.js.map +1 -0
- package/esm/layout/stack/VStack.d.ts +24 -0
- package/esm/layout/stack/VStack.js +26 -0
- package/esm/layout/stack/VStack.js.map +1 -0
- package/esm/layout/stack/index.d.ts +3 -0
- package/esm/layout/stack/index.js +4 -0
- package/esm/layout/stack/index.js.map +1 -0
- package/esm/layout/utilities/css.d.ts +10 -0
- package/esm/layout/utilities/css.js +14 -0
- package/esm/layout/utilities/css.js.map +1 -0
- package/esm/table/ExpandableRow.d.ts +6 -1
- package/esm/table/ExpandableRow.js +20 -8
- package/esm/table/ExpandableRow.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/layout/stack/HStack.tsx +30 -0
- package/src/layout/stack/Spacer.tsx +15 -0
- package/src/layout/stack/Stack.tsx +76 -0
- package/src/layout/stack/VStack.tsx +30 -0
- package/src/layout/stack/index.ts +3 -0
- package/src/layout/stack/stack.stories.tsx +161 -0
- package/src/layout/utilities/css.ts +56 -0
- package/src/table/ExpandableRow.tsx +28 -8
- package/src/table/stories/table-expandable.stories.tsx +62 -1
package/esm/index.d.ts
CHANGED
package/esm/index.js
CHANGED
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OverridableComponent } from "../../util/OverridableComponent";
|
|
2
|
+
import { StackProps } from "./Stack";
|
|
3
|
+
export type HStackProps = Omit<StackProps, "direction">;
|
|
4
|
+
/**
|
|
5
|
+
* Layout-primitive for horizontal flexbox
|
|
6
|
+
*
|
|
7
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
8
|
+
* @see 🏷️ {@link HStackProps}
|
|
9
|
+
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <HStack gap="8">
|
|
13
|
+
* <MyComponent />
|
|
14
|
+
* <MyComponent />
|
|
15
|
+
* </HStack>
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Responsive gap
|
|
19
|
+
* <HStack gap={{xs: "2", md: "6"}}>
|
|
20
|
+
* <MyComponent />
|
|
21
|
+
* <MyComponent />
|
|
22
|
+
* </HStack>
|
|
23
|
+
*/
|
|
24
|
+
export declare const HStack: OverridableComponent<HStackProps, HTMLDivElement>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { Stack } from "./Stack";
|
|
3
|
+
/**
|
|
4
|
+
* Layout-primitive for horizontal flexbox
|
|
5
|
+
*
|
|
6
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
7
|
+
* @see 🏷️ {@link HStackProps}
|
|
8
|
+
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <HStack gap="8">
|
|
12
|
+
* <MyComponent />
|
|
13
|
+
* <MyComponent />
|
|
14
|
+
* </HStack>
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Responsive gap
|
|
18
|
+
* <HStack gap={{xs: "2", md: "6"}}>
|
|
19
|
+
* <MyComponent />
|
|
20
|
+
* <MyComponent />
|
|
21
|
+
* </HStack>
|
|
22
|
+
*/
|
|
23
|
+
export const HStack = forwardRef((props, ref) => {
|
|
24
|
+
return React.createElement(Stack, Object.assign({}, props, { ref: ref, direction: "row" }));
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=HStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HStack.js","sourceRoot":"","sources":["../../../src/layout/stack/HStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAc,KAAK,EAAE,MAAM,SAAS,CAAC;AAI5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACxB,OAAO,oBAAC,KAAK,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,KAAK,IAAG,CAAC;AACxD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Layout-primitive for auto-spacing between elements
|
|
4
|
+
*
|
|
5
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <HStack gap="8">
|
|
9
|
+
* <MyComponent />
|
|
10
|
+
* <Spacer />
|
|
11
|
+
* <MyComponent />
|
|
12
|
+
* </HStack>
|
|
13
|
+
*/
|
|
14
|
+
export declare const Spacer: () => React.JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Layout-primitive for auto-spacing between elements
|
|
4
|
+
*
|
|
5
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <HStack gap="8">
|
|
9
|
+
* <MyComponent />
|
|
10
|
+
* <Spacer />
|
|
11
|
+
* <MyComponent />
|
|
12
|
+
* </HStack>
|
|
13
|
+
*/
|
|
14
|
+
export const Spacer = () => React.createElement("div", { className: "navds-stack__spacer" });
|
|
15
|
+
//# sourceMappingURL=Spacer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spacer.js","sourceRoot":"","sources":["../../../src/layout/stack/Spacer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,6BAAK,SAAS,EAAC,qBAAqB,GAAG,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { HTMLAttributes } from "react";
|
|
2
|
+
import { OverridableComponent } from "../../util/OverridableComponent";
|
|
3
|
+
import { ResponsiveProp, SpacingScale } from "../utilities/css";
|
|
4
|
+
export interface StackProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Justify-content
|
|
8
|
+
*/
|
|
9
|
+
justify?: "start" | "center" | "end" | "space-around" | "space-between" | "space-evenly";
|
|
10
|
+
/**
|
|
11
|
+
* Align-items
|
|
12
|
+
*/
|
|
13
|
+
align?: "start" | "center" | "end" | "baseline" | "stretch";
|
|
14
|
+
/**
|
|
15
|
+
* flex-wrap
|
|
16
|
+
*/
|
|
17
|
+
wrap?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* @example
|
|
20
|
+
* gap='4'
|
|
21
|
+
* gap={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
|
|
22
|
+
*/
|
|
23
|
+
gap?: ResponsiveProp<SpacingScale>;
|
|
24
|
+
direction: "row" | "column";
|
|
25
|
+
}
|
|
26
|
+
export declare const Stack: OverridableComponent<StackProps, HTMLDivElement>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import cl from "clsx";
|
|
13
|
+
import React, { forwardRef } from "react";
|
|
14
|
+
import { getResponsiveProps, } from "../utilities/css";
|
|
15
|
+
export const Stack = forwardRef((_a, ref) => {
|
|
16
|
+
var { as: Component = "div", className, align, justify, wrap = true, gap, style: _style, direction } = _a, rest = __rest(_a, ["as", "className", "align", "justify", "wrap", "gap", "style", "direction"]);
|
|
17
|
+
const style = Object.assign(Object.assign({ "--ac-stack-direction": direction, "--ac-stack-align": align, "--ac-stack-justify": justify, "--ac-stack-wrap": wrap ? "wrap" : "nowrap" }, getResponsiveProps(`stack`, "gap", "spacing", gap)), _style);
|
|
18
|
+
return (React.createElement(Component, Object.assign({}, rest, { ref: ref, style: style, className: cl("navds-stack", className, {
|
|
19
|
+
"navds-vstack": direction === "column",
|
|
20
|
+
"navds-hstack": direction === "row",
|
|
21
|
+
}) })));
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=Stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../../src/layout/stack/Stack.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAE1D,OAAO,EACL,kBAAkB,GAGnB,MAAM,kBAAkB,CAAC;AA+B1B,MAAM,CAAC,MAAM,KAAK,GAChB,UAAU,CACR,CACE,EAUC,EACD,GAAG,EACH,EAAE;QAZF,EACE,EAAE,EAAE,SAAS,GAAG,KAAK,EACrB,SAAS,EACT,KAAK,EACL,OAAO,EACP,IAAI,GAAG,IAAI,EACX,GAAG,EACH,KAAK,EAAE,MAAM,EACb,SAAS,OAEV,EADI,IAAI,cATT,4EAUC,CADQ;IAIT,MAAM,KAAK,GAAG,8BACZ,sBAAsB,EAAE,SAAS,EACjC,kBAAkB,EAAE,KAAK,EACzB,oBAAoB,EAAE,OAAO,EAC7B,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IACxC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,GAClD,MAAM,CACa,CAAC;IAEzB,OAAO,CACL,oBAAC,SAAS,oBACJ,IAAI,IACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE;YACtC,cAAc,EAAE,SAAS,KAAK,QAAQ;YACtC,cAAc,EAAE,SAAS,KAAK,KAAK;SACpC,CAAC,IACF,CACH,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OverridableComponent } from "../../util/OverridableComponent";
|
|
2
|
+
import { StackProps } from "./Stack";
|
|
3
|
+
export type VStackProps = Omit<StackProps, "direction" | "wrap">;
|
|
4
|
+
/**
|
|
5
|
+
* Layout-primitive for vetical flexbox
|
|
6
|
+
*
|
|
7
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
8
|
+
* @see 🏷️ {@link VStackProps}
|
|
9
|
+
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <VStack gap="8">
|
|
13
|
+
* <MyComponent />
|
|
14
|
+
* <MyComponent />
|
|
15
|
+
* </VStack>
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Responsive gap
|
|
19
|
+
* <VStack gap={{xs: "2", md: "6"}}>
|
|
20
|
+
* <MyComponent />
|
|
21
|
+
* <MyComponent />
|
|
22
|
+
* </VStack>
|
|
23
|
+
*/
|
|
24
|
+
export declare const VStack: OverridableComponent<VStackProps, HTMLDivElement>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { Stack } from "./Stack";
|
|
3
|
+
/**
|
|
4
|
+
* Layout-primitive for vetical flexbox
|
|
5
|
+
*
|
|
6
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
7
|
+
* @see 🏷️ {@link VStackProps}
|
|
8
|
+
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <VStack gap="8">
|
|
12
|
+
* <MyComponent />
|
|
13
|
+
* <MyComponent />
|
|
14
|
+
* </VStack>
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Responsive gap
|
|
18
|
+
* <VStack gap={{xs: "2", md: "6"}}>
|
|
19
|
+
* <MyComponent />
|
|
20
|
+
* <MyComponent />
|
|
21
|
+
* </VStack>
|
|
22
|
+
*/
|
|
23
|
+
export const VStack = forwardRef((props, ref) => {
|
|
24
|
+
return React.createElement(Stack, Object.assign({}, props, { ref: ref, direction: "column", wrap: false }));
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=VStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VStack.js","sourceRoot":"","sources":["../../../src/layout/stack/VStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAc,KAAK,EAAE,MAAM,SAAS,CAAC;AAI5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACxB,OAAO,oBAAC,KAAK,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AACxE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layout/stack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type BreakpointsAlias = "xs" | "sm" | "md" | "lg" | "xl";
|
|
2
|
+
export type SpacingScale = "0" | "05" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "14" | "16" | "18" | "20" | "24" | "32";
|
|
3
|
+
export type ResponsiveProp<T> = T | {
|
|
4
|
+
[Breakpoint in BreakpointsAlias]?: T;
|
|
5
|
+
};
|
|
6
|
+
export declare function getResponsiveProps(componentName: string, componentProp: string, tokenSubgroup: string, responsiveProp?: string | {
|
|
7
|
+
[Breakpoint in BreakpointsAlias]?: string;
|
|
8
|
+
}): {
|
|
9
|
+
[x: string]: string;
|
|
10
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function getResponsiveProps(componentName, componentProp, tokenSubgroup, responsiveProp) {
|
|
2
|
+
if (!responsiveProp)
|
|
3
|
+
return {};
|
|
4
|
+
if (typeof responsiveProp === "string") {
|
|
5
|
+
return {
|
|
6
|
+
[`--ac-${componentName}-${componentProp}-xs`]: `var(--a-${tokenSubgroup}-${responsiveProp})`,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
return Object.fromEntries(Object.entries(responsiveProp).map(([breakpointAlias, aliasOrScale]) => [
|
|
10
|
+
`--ac-${componentName}-${componentProp}-${breakpointAlias}`,
|
|
11
|
+
`var(--a-${tokenSubgroup}-${aliasOrScale})`,
|
|
12
|
+
]));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../../../src/layout/utilities/css.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,kBAAkB,CAChC,aAAqB,EACrB,aAAqB,EACrB,aAAqB,EACrB,cAKK;IAEL,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAE/B,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;QACtC,OAAO;YACL,CAAC,QAAQ,aAAa,IAAI,aAAa,KAAK,CAAC,EAAE,WAAW,aAAa,IAAI,cAAc,GAAG;SAC7F,CAAC;KACH;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;QACtE,QAAQ,aAAa,IAAI,aAAa,IAAI,eAAe,EAAE;QAC3D,WAAW,aAAa,IAAI,YAAY,GAAG;KAC5C,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -25,10 +25,15 @@ export interface ExpandableRowProps extends Omit<RowProps, "content"> {
|
|
|
25
25
|
*/
|
|
26
26
|
onOpenChange?: (open: boolean) => void;
|
|
27
27
|
/**
|
|
28
|
-
* Disable
|
|
28
|
+
* Disable expansion. shadeOnHover will not be visible.
|
|
29
29
|
* @default false
|
|
30
30
|
*/
|
|
31
31
|
expansionDisabled?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Makes the whole row clickable
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
expandOnRowClick?: boolean;
|
|
32
37
|
/**
|
|
33
38
|
* The width of the expanded row's internal cell
|
|
34
39
|
* @default 999
|
|
@@ -17,23 +17,35 @@ import DataCell from "./DataCell";
|
|
|
17
17
|
import Row from "./Row";
|
|
18
18
|
import { ChevronDownIcon } from "@navikt/aksel-icons";
|
|
19
19
|
export const ExpandableRow = forwardRef((_a, ref) => {
|
|
20
|
-
var { className, children, content, togglePlacement = "left", defaultOpen = false, open, onOpenChange, expansionDisabled = false, colSpan = 999 } = _a, rest = __rest(_a, ["className", "children", "content", "togglePlacement", "defaultOpen", "open", "onOpenChange", "expansionDisabled", "colSpan"]);
|
|
20
|
+
var { className, children, content, togglePlacement = "left", defaultOpen = false, open, onOpenChange, expansionDisabled = false, expandOnRowClick = false, colSpan = 999 } = _a, rest = __rest(_a, ["className", "children", "content", "togglePlacement", "defaultOpen", "open", "onOpenChange", "expansionDisabled", "expandOnRowClick", "colSpan"]);
|
|
21
21
|
const [internalOpen, setInternalOpen] = useState(defaultOpen);
|
|
22
22
|
const id = useId();
|
|
23
23
|
const isOpen = open !== null && open !== void 0 ? open : internalOpen;
|
|
24
|
+
const expansionHandler = (e) => {
|
|
25
|
+
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(!isOpen);
|
|
26
|
+
if (open === undefined) {
|
|
27
|
+
setInternalOpen((open) => !open);
|
|
28
|
+
}
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
};
|
|
31
|
+
const onRowClick = (e) => {
|
|
32
|
+
if (e.target.nodeName === "TD" || e.target.nodeName === "TH") {
|
|
33
|
+
expansionHandler(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
24
36
|
return (React.createElement(React.Fragment, null,
|
|
25
37
|
React.createElement(Row, Object.assign({}, rest, { ref: ref, className: cl("navds-table__expandable-row", className, {
|
|
26
38
|
"navds-table__expandable-row--open": isOpen,
|
|
27
|
-
|
|
39
|
+
"navds-table__expandable-row--expansion-disabled": expansionDisabled,
|
|
40
|
+
}), onClick: (e) => {
|
|
41
|
+
var _a;
|
|
42
|
+
!expansionDisabled && expandOnRowClick && onRowClick(e);
|
|
43
|
+
(_a = rest === null || rest === void 0 ? void 0 : rest.onClick) === null || _a === void 0 ? void 0 : _a.call(rest, e);
|
|
44
|
+
} }),
|
|
28
45
|
togglePlacement === "right" && children,
|
|
29
46
|
React.createElement(DataCell, { className: cl("navds-table__toggle-expand-cell", {
|
|
30
47
|
"navds-table__toggle-expand-cell--open": isOpen,
|
|
31
|
-
}) }, !expansionDisabled && (React.createElement("button", { type: "button", className: "navds-table__toggle-expand-button", "aria-controls": id, "aria-expanded": isOpen, onClick:
|
|
32
|
-
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(!isOpen);
|
|
33
|
-
if (open === undefined) {
|
|
34
|
-
setInternalOpen((open) => !open);
|
|
35
|
-
}
|
|
36
|
-
} },
|
|
48
|
+
}) }, !expansionDisabled && (React.createElement("button", { type: "button", className: "navds-table__toggle-expand-button", "aria-controls": id, "aria-expanded": isOpen, onClick: expansionHandler },
|
|
37
49
|
React.createElement(ChevronDownIcon, { className: "navds-table__expandable-icon", title: isOpen ? "Vis mindre" : "Vis mer" })))),
|
|
38
50
|
togglePlacement === "left" && children),
|
|
39
51
|
React.createElement("tr", { className: "navds-table__expanded-row", "aria-hidden": !isOpen, id: id },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableRow.js","sourceRoot":"","sources":["../../src/table/ExpandableRow.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAC3B,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,GAAiB,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ExpandableRow.js","sourceRoot":"","sources":["../../src/table/ExpandableRow.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@navikt/ds-react",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.9.0",
|
|
4
4
|
"description": "Aksel react-components for NAV designsystem",
|
|
5
5
|
"author": "Aksel | NAV designsystem team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@floating-ui/react": "0.24.1",
|
|
41
|
-
"@navikt/aksel-icons": "^4.
|
|
41
|
+
"@navikt/aksel-icons": "^4.9.0",
|
|
42
42
|
"@radix-ui/react-tabs": "1.0.0",
|
|
43
43
|
"@radix-ui/react-toggle-group": "1.0.0",
|
|
44
44
|
"clsx": "^1.2.1",
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { OverridableComponent } from "../../util/OverridableComponent";
|
|
3
|
+
import { StackProps, Stack } from "./Stack";
|
|
4
|
+
|
|
5
|
+
export type HStackProps = Omit<StackProps, "direction">;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Layout-primitive for horizontal flexbox
|
|
9
|
+
*
|
|
10
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
11
|
+
* @see 🏷️ {@link HStackProps}
|
|
12
|
+
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <HStack gap="8">
|
|
16
|
+
* <MyComponent />
|
|
17
|
+
* <MyComponent />
|
|
18
|
+
* </HStack>
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Responsive gap
|
|
22
|
+
* <HStack gap={{xs: "2", md: "6"}}>
|
|
23
|
+
* <MyComponent />
|
|
24
|
+
* <MyComponent />
|
|
25
|
+
* </HStack>
|
|
26
|
+
*/
|
|
27
|
+
export const HStack: OverridableComponent<HStackProps, HTMLDivElement> =
|
|
28
|
+
forwardRef((props, ref) => {
|
|
29
|
+
return <Stack {...props} ref={ref} direction="row" />;
|
|
30
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Layout-primitive for auto-spacing between elements
|
|
5
|
+
*
|
|
6
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <HStack gap="8">
|
|
10
|
+
* <MyComponent />
|
|
11
|
+
* <Spacer />
|
|
12
|
+
* <MyComponent />
|
|
13
|
+
* </HStack>
|
|
14
|
+
*/
|
|
15
|
+
export const Spacer = () => <div className="navds-stack__spacer" />;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import cl from "clsx";
|
|
2
|
+
import React, { forwardRef, HTMLAttributes } from "react";
|
|
3
|
+
import { OverridableComponent } from "../../util/OverridableComponent";
|
|
4
|
+
import {
|
|
5
|
+
getResponsiveProps,
|
|
6
|
+
ResponsiveProp,
|
|
7
|
+
SpacingScale,
|
|
8
|
+
} from "../utilities/css";
|
|
9
|
+
|
|
10
|
+
export interface StackProps extends HTMLAttributes<HTMLDivElement> {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Justify-content
|
|
14
|
+
*/
|
|
15
|
+
justify?:
|
|
16
|
+
| "start"
|
|
17
|
+
| "center"
|
|
18
|
+
| "end"
|
|
19
|
+
| "space-around"
|
|
20
|
+
| "space-between"
|
|
21
|
+
| "space-evenly";
|
|
22
|
+
/**
|
|
23
|
+
* Align-items
|
|
24
|
+
*/
|
|
25
|
+
align?: "start" | "center" | "end" | "baseline" | "stretch";
|
|
26
|
+
/**
|
|
27
|
+
* flex-wrap
|
|
28
|
+
*/
|
|
29
|
+
wrap?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* @example
|
|
32
|
+
* gap='4'
|
|
33
|
+
* gap={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
|
|
34
|
+
*/
|
|
35
|
+
gap?: ResponsiveProp<SpacingScale>;
|
|
36
|
+
direction: "row" | "column";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const Stack: OverridableComponent<StackProps, HTMLDivElement> =
|
|
40
|
+
forwardRef(
|
|
41
|
+
(
|
|
42
|
+
{
|
|
43
|
+
as: Component = "div",
|
|
44
|
+
className,
|
|
45
|
+
align,
|
|
46
|
+
justify,
|
|
47
|
+
wrap = true,
|
|
48
|
+
gap,
|
|
49
|
+
style: _style,
|
|
50
|
+
direction,
|
|
51
|
+
...rest
|
|
52
|
+
},
|
|
53
|
+
ref
|
|
54
|
+
) => {
|
|
55
|
+
const style = {
|
|
56
|
+
"--ac-stack-direction": direction,
|
|
57
|
+
"--ac-stack-align": align,
|
|
58
|
+
"--ac-stack-justify": justify,
|
|
59
|
+
"--ac-stack-wrap": wrap ? "wrap" : "nowrap",
|
|
60
|
+
...getResponsiveProps(`stack`, "gap", "spacing", gap),
|
|
61
|
+
..._style,
|
|
62
|
+
} as React.CSSProperties;
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<Component
|
|
66
|
+
{...rest}
|
|
67
|
+
ref={ref}
|
|
68
|
+
style={style}
|
|
69
|
+
className={cl("navds-stack", className, {
|
|
70
|
+
"navds-vstack": direction === "column",
|
|
71
|
+
"navds-hstack": direction === "row",
|
|
72
|
+
})}
|
|
73
|
+
/>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { OverridableComponent } from "../../util/OverridableComponent";
|
|
3
|
+
import { StackProps, Stack } from "./Stack";
|
|
4
|
+
|
|
5
|
+
export type VStackProps = Omit<StackProps, "direction" | "wrap">;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Layout-primitive for vetical flexbox
|
|
9
|
+
*
|
|
10
|
+
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/Stack)
|
|
11
|
+
* @see 🏷️ {@link VStackProps}
|
|
12
|
+
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <VStack gap="8">
|
|
16
|
+
* <MyComponent />
|
|
17
|
+
* <MyComponent />
|
|
18
|
+
* </VStack>
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Responsive gap
|
|
22
|
+
* <VStack gap={{xs: "2", md: "6"}}>
|
|
23
|
+
* <MyComponent />
|
|
24
|
+
* <MyComponent />
|
|
25
|
+
* </VStack>
|
|
26
|
+
*/
|
|
27
|
+
export const VStack: OverridableComponent<VStackProps, HTMLDivElement> =
|
|
28
|
+
forwardRef((props, ref) => {
|
|
29
|
+
return <Stack {...props} ref={ref} direction="column" wrap={false} />;
|
|
30
|
+
});
|