@luscii-healthtech/web-ui 30.11.0 → 31.1.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/dist/components/Breadcrumbs/BreadcrumbItem.d.ts +2 -2
- package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +7 -9
- package/dist/components/PageHeader/PageHeader.types.d.ts +10 -4
- package/dist/index.development.js +32 -18
- package/dist/index.development.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/web-ui.esm.js +1 -1
- package/dist/web-ui.esm.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { BreadcrumbDividerProps, Crumb } from "./Breadcrumbs.types";
|
|
3
|
-
export declare const BreadcrumbItem: React.FC<Crumb>;
|
|
2
|
+
import type { BreadcrumbDividerProps, Crumb, CrumbRenderProp } from "./Breadcrumbs.types";
|
|
3
|
+
export declare const BreadcrumbItem: React.FC<Crumb & CrumbRenderProp>;
|
|
4
4
|
export declare const BreadcrumbDividerItem: React.FC<BreadcrumbDividerProps>;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import Text from "../Text/Text";
|
|
3
|
-
type
|
|
3
|
+
export type RenderBreadcrumbProps = {
|
|
4
4
|
name: string;
|
|
5
5
|
link?: string;
|
|
6
6
|
textProps: React.ComponentProps<typeof Text>;
|
|
7
|
-
}
|
|
8
|
-
export type
|
|
7
|
+
};
|
|
8
|
+
export type RenderBreadcrumb = (props: RenderBreadcrumbProps) => React.ReactNode;
|
|
9
|
+
export type CrumbRenderProp = {
|
|
9
10
|
render: RenderBreadcrumb;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
link: never;
|
|
13
|
-
} | {
|
|
11
|
+
};
|
|
12
|
+
export type Crumb = {
|
|
14
13
|
name: string;
|
|
15
14
|
key?: string;
|
|
16
15
|
link?: string;
|
|
@@ -18,11 +17,10 @@ export type Crumb = {
|
|
|
18
17
|
export interface BreadcrumbProps {
|
|
19
18
|
crumbs: Crumb[];
|
|
20
19
|
truncateAfter?: number;
|
|
21
|
-
renderItem
|
|
20
|
+
renderItem: RenderBreadcrumb;
|
|
22
21
|
}
|
|
23
22
|
export type BreadcrumbDividerProps = {
|
|
24
23
|
onClick: () => void;
|
|
25
24
|
truncatedCrumbs: Crumb[];
|
|
26
25
|
};
|
|
27
26
|
export declare const isBreadcrumbDividerProps: (subject: unknown) => subject is BreadcrumbDividerProps;
|
|
28
|
-
export {};
|
|
@@ -16,20 +16,26 @@ type WithPageHeaderBanner = {
|
|
|
16
16
|
icon?: string | React.FunctionComponent<IconProps>;
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
+
type AllOrNone<T> = T | {
|
|
20
|
+
[K in keyof T]?: never;
|
|
21
|
+
};
|
|
22
|
+
type WithBreadcrumbProps = {
|
|
23
|
+
truncateBreadcrumbsAfter?: number;
|
|
24
|
+
} & AllOrNone<{
|
|
25
|
+
breadcrumbs: BreadcrumbProps["crumbs"];
|
|
26
|
+
renderBreadcrumbItem: BreadcrumbProps["renderItem"];
|
|
27
|
+
}>;
|
|
19
28
|
export type PageHeaderProps = {
|
|
20
29
|
/**
|
|
21
30
|
* These are props passed to the `Tabbar` component. The name
|
|
22
31
|
* `navigation` does not convey this well.
|
|
23
32
|
*/
|
|
24
33
|
navigation?: Omit<TabbarProps, "withoutPadding">;
|
|
25
|
-
breadcrumbs?: BreadcrumbProps["crumbs"];
|
|
26
|
-
truncateBreadcrumbsAfter?: number;
|
|
27
|
-
renderBreadcrumbItem?: BreadcrumbProps["renderItem"];
|
|
28
34
|
dataTestId?: string;
|
|
29
35
|
title: string | React.ReactNode;
|
|
30
36
|
isPolling?: boolean;
|
|
31
37
|
className?: string;
|
|
32
38
|
contained?: boolean;
|
|
33
39
|
accessories?: React.ReactNode;
|
|
34
|
-
} & WithPageHeaderBanner;
|
|
40
|
+
} & WithPageHeaderBanner & WithBreadcrumbProps;
|
|
35
41
|
export {};
|
|
@@ -4867,21 +4867,11 @@ const defaultTextProps = {
|
|
|
4867
4867
|
};
|
|
4868
4868
|
const BreadcrumbContent = (_a) => {
|
|
4869
4869
|
var { name, link } = _a, props = __rest(_a, ["name", "link"]);
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
}));
|
|
4876
|
-
}
|
|
4877
|
-
if (link) {
|
|
4878
|
-
return React__namespace.default.createElement(
|
|
4879
|
-
router.Link,
|
|
4880
|
-
{ to: link },
|
|
4881
|
-
React__namespace.default.createElement(Text, Object.assign({}, linkTextProps), name)
|
|
4882
|
-
);
|
|
4883
|
-
}
|
|
4884
|
-
return React__namespace.default.createElement(Text, Object.assign({}, defaultTextProps), name);
|
|
4870
|
+
return React__namespace.default.createElement(React__namespace.default.Fragment, null, props.render({
|
|
4871
|
+
name,
|
|
4872
|
+
link,
|
|
4873
|
+
textProps: link ? linkTextProps : defaultTextProps
|
|
4874
|
+
}));
|
|
4885
4875
|
};
|
|
4886
4876
|
const BreadcrumbDividerItem = ({ onClick, truncatedCrumbs }) => {
|
|
4887
4877
|
return React__namespace.default.createElement(
|
|
@@ -4890,12 +4880,32 @@ const BreadcrumbDividerItem = ({ onClick, truncatedCrumbs }) => {
|
|
|
4890
4880
|
React__namespace.default.createElement(
|
|
4891
4881
|
"button",
|
|
4892
4882
|
{ onClick, title: truncatedCrumbs.map((crumb) => crumb.name).join(" / "), className: "ui-px-1" },
|
|
4893
|
-
React__namespace.default.createElement(Text, { color: "blue-800",
|
|
4883
|
+
React__namespace.default.createElement(Text, { color: "blue-800", variant: "strong" }, "\u2026")
|
|
4894
4884
|
)
|
|
4895
4885
|
);
|
|
4896
4886
|
};
|
|
4897
4887
|
|
|
4898
|
-
const
|
|
4888
|
+
const renderBreadcrumbItem = ({ link, name, textProps }) => {
|
|
4889
|
+
if (typeof link !== "undefined" && link !== null) {
|
|
4890
|
+
return React__namespace.default.createElement(
|
|
4891
|
+
"a",
|
|
4892
|
+
{ href: link },
|
|
4893
|
+
React__namespace.default.createElement(Text, Object.assign({}, textProps), name)
|
|
4894
|
+
);
|
|
4895
|
+
}
|
|
4896
|
+
return React__namespace.default.createElement(Text, Object.assign({}, textProps), name);
|
|
4897
|
+
};
|
|
4898
|
+
const Breadcrumbs = ({
|
|
4899
|
+
crumbs,
|
|
4900
|
+
truncateAfter = Infinity,
|
|
4901
|
+
/**
|
|
4902
|
+
* `renderItem` is a required prop, but in Vitals not
|
|
4903
|
+
* everything is type-safe yet. Because of this we
|
|
4904
|
+
* supply a default value here, so we make absolutely
|
|
4905
|
+
* sure that the prop is always present and never breaks.
|
|
4906
|
+
*/
|
|
4907
|
+
renderItem = renderBreadcrumbItem
|
|
4908
|
+
}) => {
|
|
4899
4909
|
const [head, ...tail] = crumbs;
|
|
4900
4910
|
const [isTruncated, setIsTruncated] = React.useState(tail.length > truncateAfter);
|
|
4901
4911
|
const truncatedCrumbs = [];
|
|
@@ -5085,7 +5095,11 @@ const PageHeaderBlock = ({ header, title }) => {
|
|
|
5085
5095
|
);
|
|
5086
5096
|
}
|
|
5087
5097
|
if (header) {
|
|
5088
|
-
|
|
5098
|
+
if (header.breadcrumbs !== void 0 && header.renderBreadcrumbItem !== void 0) {
|
|
5099
|
+
pageHeaderComponent = React__namespace.default.createElement(PageHeader, Object.assign({}, header, { breadcrumbs: header.breadcrumbs, renderBreadcrumbItem: header.renderBreadcrumbItem }));
|
|
5100
|
+
} else {
|
|
5101
|
+
pageHeaderComponent = React__namespace.default.createElement(PageHeader, Object.assign({}, header, { breadcrumbs: void 0, renderBreadcrumbItem: void 0 }));
|
|
5102
|
+
}
|
|
5089
5103
|
}
|
|
5090
5104
|
return React__namespace.default.createElement(
|
|
5091
5105
|
React__namespace.default.Fragment,
|