@hitachivantara/uikit-react-pentaho 0.1.4 → 0.3.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/cjs/Canvas/BottomPanel/BottomPanel.cjs +70 -31
- package/dist/cjs/Canvas/BottomPanel/BottomPanel.styles.cjs +15 -8
- package/dist/cjs/Canvas/PanelTab/PanelTab.cjs +18 -0
- package/dist/cjs/Canvas/{Tab/Tab.styles.cjs → PanelTab/PanelTab.styles.cjs} +1 -1
- package/dist/cjs/Canvas/PanelTabs/PanelTabs.cjs +30 -0
- package/dist/cjs/Canvas/PanelTabs/PanelTabs.styles.cjs +16 -0
- package/dist/cjs/Canvas/SidePanel/SidePanel.cjs +9 -15
- package/dist/cjs/Canvas/SidePanel/SidePanel.styles.cjs +0 -10
- package/dist/cjs/Card/Card.cjs +18 -0
- package/dist/cjs/Card/Card.styles.cjs +16 -0
- package/dist/cjs/Card/CardMedia/CardMedia.cjs +33 -0
- package/dist/cjs/{Canvas/Tabs/Tabs.styles.cjs → Card/CardMedia/CardMedia.styles.cjs} +4 -5
- package/dist/cjs/Card/CardSection/CardSection.cjs +19 -0
- package/dist/cjs/Card/CardSection/CardSection.styles.cjs +10 -0
- package/dist/cjs/index.cjs +28 -16
- package/dist/esm/Canvas/BottomPanel/BottomPanel.js +71 -32
- package/dist/esm/Canvas/BottomPanel/BottomPanel.js.map +1 -1
- package/dist/esm/Canvas/BottomPanel/BottomPanel.styles.js +16 -9
- package/dist/esm/Canvas/BottomPanel/BottomPanel.styles.js.map +1 -1
- package/dist/esm/Canvas/PanelTab/PanelTab.js +19 -0
- package/dist/esm/Canvas/PanelTab/PanelTab.js.map +1 -0
- package/dist/esm/Canvas/{Tab/Tab.styles.js → PanelTab/PanelTab.styles.js} +1 -1
- package/dist/esm/Canvas/PanelTab/PanelTab.styles.js.map +1 -0
- package/dist/esm/Canvas/PanelTabs/PanelTabs.js +31 -0
- package/dist/esm/Canvas/PanelTabs/PanelTabs.js.map +1 -0
- package/dist/esm/Canvas/PanelTabs/PanelTabs.styles.js +16 -0
- package/dist/esm/Canvas/PanelTabs/PanelTabs.styles.js.map +1 -0
- package/dist/esm/Canvas/SidePanel/SidePanel.js +11 -17
- package/dist/esm/Canvas/SidePanel/SidePanel.js.map +1 -1
- package/dist/esm/Canvas/SidePanel/SidePanel.styles.js +1 -11
- package/dist/esm/Canvas/SidePanel/SidePanel.styles.js.map +1 -1
- package/dist/esm/Card/Card.js +19 -0
- package/dist/esm/Card/Card.js.map +1 -0
- package/dist/esm/Card/Card.styles.js +16 -0
- package/dist/esm/Card/Card.styles.js.map +1 -0
- package/dist/esm/Card/CardMedia/CardMedia.js +34 -0
- package/dist/esm/Card/CardMedia/CardMedia.js.map +1 -0
- package/dist/esm/Card/CardMedia/CardMedia.styles.js +12 -0
- package/dist/esm/Card/CardMedia/CardMedia.styles.js.map +1 -0
- package/dist/esm/Card/CardSection/CardSection.js +20 -0
- package/dist/esm/Card/CardSection/CardSection.js.map +1 -0
- package/dist/esm/Card/CardSection/CardSection.styles.js +10 -0
- package/dist/esm/Card/CardSection/CardSection.styles.js.map +1 -0
- package/dist/esm/index.js +28 -16
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +181 -65
- package/package.json +4 -4
- package/dist/cjs/Canvas/Tab/Tab.cjs +0 -20
- package/dist/cjs/Canvas/Tabs/Tabs.cjs +0 -32
- package/dist/esm/Canvas/Tab/Tab.js +0 -21
- package/dist/esm/Canvas/Tab/Tab.js.map +0 -1
- package/dist/esm/Canvas/Tab/Tab.styles.js.map +0 -1
- package/dist/esm/Canvas/Tabs/Tabs.js +0 -33
- package/dist/esm/Canvas/Tabs/Tabs.js.map +0 -1
- package/dist/esm/Canvas/Tabs/Tabs.styles.js +0 -13
- package/dist/esm/Canvas/Tabs/Tabs.styles.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef, useMemo } from "react";
|
|
3
3
|
import { useResizeDetector } from "react-resize-detector";
|
|
4
|
-
import { useDefaultProps, useUniqueId, useControlled, HvActionsGeneric, HvPanel } from "@hitachivantara/uikit-react-core";
|
|
4
|
+
import { useDefaultProps, useUniqueId, useControlled, theme, HvActionsGeneric, HvPanel } from "@hitachivantara/uikit-react-core";
|
|
5
5
|
import { useClasses } from "./BottomPanel.styles.js";
|
|
6
6
|
import { staticClasses } from "./BottomPanel.styles.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { HvCanvasPanelTabs } from "../PanelTabs/PanelTabs.js";
|
|
8
|
+
import { HvCanvasPanelTab } from "../PanelTab/PanelTab.js";
|
|
9
9
|
const HvCanvasBottomPanel = forwardRef((props, ref) => {
|
|
10
10
|
const {
|
|
11
11
|
id: idProp,
|
|
@@ -16,7 +16,8 @@ const HvCanvasBottomPanel = forwardRef((props, ref) => {
|
|
|
16
16
|
minimize,
|
|
17
17
|
leftActions,
|
|
18
18
|
rightActions,
|
|
19
|
-
|
|
19
|
+
overflowActions,
|
|
20
|
+
selectedTabId: selectedTabIdProp,
|
|
20
21
|
classes: classesProp,
|
|
21
22
|
onTabChange,
|
|
22
23
|
onAction,
|
|
@@ -47,11 +48,11 @@ const HvCanvasBottomPanel = forwardRef((props, ref) => {
|
|
|
47
48
|
}
|
|
48
49
|
});
|
|
49
50
|
const overflowing = useMemo(() => {
|
|
50
|
-
const
|
|
51
|
-
return
|
|
52
|
-
}, [
|
|
51
|
+
const availableWidth = tabWidth - (leftActions ? leftActionWidth : 0) - (rightActions ? rightActionWidth : 0);
|
|
52
|
+
return availableWidth < 60;
|
|
53
|
+
}, [leftActionWidth, leftActions, rightActionWidth, rightActions, tabWidth]);
|
|
53
54
|
const [selectedTab, setSelectedTab] = useControlled(
|
|
54
|
-
|
|
55
|
+
selectedTabIdProp,
|
|
55
56
|
tabs[0].id
|
|
56
57
|
);
|
|
57
58
|
const handleTabChange = (event, tabId) => {
|
|
@@ -77,29 +78,30 @@ const HvCanvasBottomPanel = forwardRef((props, ref) => {
|
|
|
77
78
|
children: [
|
|
78
79
|
/* @__PURE__ */ jsxs("div", { className: classes.tabsRoot, children: [
|
|
79
80
|
/* @__PURE__ */ jsx(
|
|
80
|
-
|
|
81
|
+
HvCanvasPanelTabs,
|
|
81
82
|
{
|
|
82
83
|
style: {
|
|
83
84
|
// @ts-ignore
|
|
84
|
-
"--left-actions-width":
|
|
85
|
-
"--right-actions-width":
|
|
85
|
+
"--left-actions-width": overflowing || !leftActions ? theme.space.sm : `calc(${leftActionWidth}px + ${theme.space.xs})`,
|
|
86
|
+
"--right-actions-width": !rightActions || overflowing && !overflowActions ? theme.space.sm : `calc(${overflowing ? 32 : rightActionWidth}px + ${theme.space.xs})`
|
|
86
87
|
},
|
|
87
88
|
onChange: handleTabChange,
|
|
88
89
|
value: selectedTab,
|
|
89
90
|
children: tabs.map((tab, index) => /* @__PURE__ */ jsx(
|
|
90
|
-
|
|
91
|
+
HvCanvasPanelTab,
|
|
91
92
|
{
|
|
92
93
|
ref: index === 0 ? tabRef : void 0,
|
|
93
94
|
id: `${id}-${tab.id}`,
|
|
94
95
|
value: tab.id,
|
|
95
96
|
className: classes.tab,
|
|
96
|
-
|
|
97
|
+
tabIndex: 0,
|
|
98
|
+
children: /* @__PURE__ */ jsx("div", { className: classes.tabTitle, children: typeof tab.title === "function" ? tab.title(overflowing) : tab.title })
|
|
97
99
|
},
|
|
98
100
|
tab.id
|
|
99
101
|
))
|
|
100
102
|
}
|
|
101
103
|
),
|
|
102
|
-
|
|
104
|
+
leftActions || rightActions || overflowActions ? tabs.map((tab, index) => {
|
|
103
105
|
const btnsDisabled = selectedTab !== tab.id && !minimize;
|
|
104
106
|
return /* @__PURE__ */ jsxs(
|
|
105
107
|
"div",
|
|
@@ -111,28 +113,65 @@ const HvCanvasBottomPanel = forwardRef((props, ref) => {
|
|
|
111
113
|
"--left": `calc(${index} * var(--tab-width))`
|
|
112
114
|
},
|
|
113
115
|
children: [
|
|
114
|
-
leftActions &&
|
|
115
|
-
|
|
116
|
+
leftActions && !overflowing && /* @__PURE__ */ jsx(
|
|
117
|
+
"div",
|
|
116
118
|
{
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
ref: leftActionRef,
|
|
120
|
+
className: cx(classes.leftActions, {
|
|
121
|
+
[classes.actionsDisabled]: btnsDisabled
|
|
122
|
+
}),
|
|
123
|
+
children: /* @__PURE__ */ jsx(
|
|
124
|
+
HvActionsGeneric,
|
|
125
|
+
{
|
|
126
|
+
maxVisibleActions: 1,
|
|
127
|
+
actions: leftActions,
|
|
128
|
+
disabled: btnsDisabled,
|
|
129
|
+
onAction: (event, action) => onAction?.(event, action, tab.id),
|
|
130
|
+
variant: "secondaryGhost",
|
|
131
|
+
iconOnly: true
|
|
132
|
+
}
|
|
133
|
+
)
|
|
123
134
|
}
|
|
124
|
-
)
|
|
125
|
-
rightActions &&
|
|
126
|
-
|
|
135
|
+
),
|
|
136
|
+
rightActions && !overflowing && /* @__PURE__ */ jsx(
|
|
137
|
+
"div",
|
|
127
138
|
{
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
139
|
+
ref: rightActionRef,
|
|
140
|
+
className: cx(classes.rightActions, {
|
|
141
|
+
[classes.actionsDisabled]: btnsDisabled
|
|
142
|
+
}),
|
|
143
|
+
children: /* @__PURE__ */ jsx(
|
|
144
|
+
HvActionsGeneric,
|
|
145
|
+
{
|
|
146
|
+
maxVisibleActions: 2,
|
|
147
|
+
actions: rightActions,
|
|
148
|
+
disabled: btnsDisabled,
|
|
149
|
+
onAction: (event, action) => onAction?.(event, action, tab.id),
|
|
150
|
+
variant: "secondaryGhost",
|
|
151
|
+
iconOnly: true
|
|
152
|
+
}
|
|
153
|
+
)
|
|
134
154
|
}
|
|
135
|
-
)
|
|
155
|
+
),
|
|
156
|
+
overflowActions && overflowing && /* @__PURE__ */ jsx(
|
|
157
|
+
"div",
|
|
158
|
+
{
|
|
159
|
+
className: cx(classes.rightActions, {
|
|
160
|
+
[classes.actionsDisabled]: btnsDisabled
|
|
161
|
+
}),
|
|
162
|
+
children: /* @__PURE__ */ jsx(
|
|
163
|
+
HvActionsGeneric,
|
|
164
|
+
{
|
|
165
|
+
maxVisibleActions: 0,
|
|
166
|
+
actions: overflowActions,
|
|
167
|
+
disabled: btnsDisabled,
|
|
168
|
+
onAction: (event, action) => onAction?.(event, action, tab.id),
|
|
169
|
+
variant: "secondaryGhost",
|
|
170
|
+
iconOnly: true
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
}
|
|
174
|
+
)
|
|
136
175
|
]
|
|
137
176
|
},
|
|
138
177
|
tab.id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomPanel.js","sources":["../../../../src/Canvas/BottomPanel/BottomPanel.tsx"],"sourcesContent":["import { forwardRef, useMemo } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport {\n ExtractNames,\n HvActionGeneric,\n HvActionsGeneric,\n HvActionsGenericProps,\n HvBaseProps,\n HvPanel,\n useControlled,\n useDefaultProps,\n useUniqueId,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { HvCanvasTab } from \"../Tab\";\nimport { HvCanvasTabs, HvCanvasTabsProps } from \"../Tabs\";\nimport { staticClasses, useClasses } from \"./BottomPanel.styles\";\n\nexport { staticClasses as canvasBottomPanelClasses };\n\nexport type HvCanvasBottomPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCanvasBottomPanelProps extends HvBaseProps {\n /** Open state of the bottom panel. */\n open?: boolean;\n /** Minimize state of the bottom panel tabs'. */\n minimize?: boolean;\n /** List of tabs visible on the panel. */\n tabs: {\n id: string | number;\n title: React.ReactNode;\n }[];\n /** Id of the selected tab if it needs to be controlled. */\n tab?: string | number;\n /** Callback triggered when a tab changes/is clicked. */\n onTabChange?: (\n event: React.SyntheticEvent | null,\n tabId: string | number | null,\n ) => void;\n /** Actions to be rendered in the left side of a tab. If more than one action is provided, a dropdown menu will be used. */\n leftActions?: HvActionsGenericProps[\"actions\"];\n /** Actions to be rendered in the right side of a tab.If more than two actions are provided, a dropdown menu will be used to add the remaining actions. */\n rightActions?: HvActionsGenericProps[\"actions\"];\n /** Callback triggered when a right or left action is clicked. */\n onAction?: (\n event: React.SyntheticEvent,\n action: HvActionGeneric,\n tabId: string | number,\n ) => void;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasBottomPanelClasses;\n}\n\n/**\n * A bottom panel component to use in a canvas context.\n */\nexport const HvCanvasBottomPanel = forwardRef<\n HTMLDivElement,\n HvCanvasBottomPanelProps\n>((props, ref) => {\n const {\n id: idProp,\n className,\n children,\n open,\n tabs,\n minimize,\n leftActions,\n rightActions,\n tab: tabProp,\n classes: classesProp,\n onTabChange,\n onAction,\n ...others\n } = useDefaultProps(\"HvCanvasBottomPanel\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const id = useUniqueId(idProp);\n\n // Tab resize detector: to position tab actions and set the panel top right border radius\n const { width: tabWidth = 0, ref: tabRef } = useResizeDetector({\n handleHeight: false,\n });\n // Tab panel resize detector: to set the panel top right border radius\n const { width: panelWidth = 0, ref: panelRef } = useResizeDetector({\n handleHeight: false,\n });\n\n // Left actions resize detector: to position tab title according with actions\n const { width: leftActionWidth = 32, ref: leftActionRef } = useResizeDetector(\n {\n handleHeight: false,\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n },\n );\n // Right actions resize detector: to position tab title according with actions\n const { width: rightActionWidth = 32, ref: rightActionRef } =\n useResizeDetector({\n handleHeight: false,\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n });\n\n const overflowing = useMemo(() => {\n const scrollWidth = tabRef.current?.scrollWidth ?? 0;\n return scrollWidth - tabWidth >= 1;\n }, [tabRef, tabWidth]);\n\n const [selectedTab, setSelectedTab] = useControlled<string | number | null>(\n tabProp,\n tabs[0].id,\n );\n\n const handleTabChange: HvCanvasTabsProps[\"onChange\"] = (event, tabId) => {\n setSelectedTab(tabId);\n onTabChange?.(event, tabId);\n };\n\n return (\n <div\n id={id}\n ref={ref}\n className={cx(\n classes.root,\n {\n [classes.closed]: !open,\n [classes.minimized]: minimize,\n [classes.multipleTabs]: tabs.length > 1,\n [classes.overflowing]: overflowing,\n },\n className,\n )}\n {...others}\n >\n <div className={classes.tabsRoot}>\n <HvCanvasTabs\n style={{\n // @ts-ignore\n \"--left-actions-width\": `${leftActionWidth}px`,\n \"--right-actions-width\": `${rightActionWidth}px`,\n }}\n onChange={handleTabChange}\n value={selectedTab}\n >\n {tabs.map((tab, index) => (\n <HvCanvasTab\n ref={index === 0 ? tabRef : undefined}\n key={tab.id}\n id={`${id}-${tab.id}`}\n value={tab.id}\n className={classes.tab}\n >\n <div className={classes.tabTitle}>{tab.title}</div>\n </HvCanvasTab>\n ))}\n </HvCanvasTabs>\n {/* For accessibility purposes, these buttons cannot be children of a tablist so they are rendered as HvCanvasTabs sibling. */}\n {(leftActions || rightActions) && !overflowing\n ? tabs.map((tab, index) => {\n const btnsDisabled = selectedTab !== tab.id && !minimize;\n return (\n <div\n key={tab.id}\n style={{\n // @ts-ignore\n \"--tab-width\": `${tabWidth}px`,\n \"--right\": `calc((${index} + 1) * var(--tab-width))`,\n \"--left\": `calc(${index} * var(--tab-width))`,\n }}\n >\n {leftActions && (\n <div ref={leftActionRef} className={classes.leftActions}>\n <HvActionsGeneric\n maxVisibleActions={1}\n actions={leftActions}\n disabled={btnsDisabled}\n onAction={(event, action) =>\n onAction?.(event, action, tab.id)\n }\n variant=\"secondaryGhost\"\n iconOnly\n />\n </div>\n )}\n {rightActions && (\n <div ref={rightActionRef} className={classes.rightActions}>\n <HvActionsGeneric\n maxVisibleActions={2}\n actions={rightActions}\n disabled={btnsDisabled}\n onAction={(event, action) =>\n onAction?.(event, action, tab.id)\n }\n variant=\"secondaryGhost\"\n iconOnly\n />\n </div>\n )}\n </div>\n );\n })\n : null}\n </div>\n <HvPanel\n ref={panelRef}\n role=\"tabpanel\"\n aria-labelledby={`${id}-${selectedTab}`}\n className={classes.content}\n style={{\n // @ts-ignore\n \"--right-border-radius\":\n tabWidth * tabs.length >= panelWidth ? \"0px\" : \"16px\",\n }}\n >\n {children}\n </HvPanel>\n </div>\n );\n});\n"],"names":[],"mappings":";;;;;;;;AAwDO,MAAM,sBAAsB,WAGjC,CAAC,OAAO,QAAQ;AACV,QAAA;AAAA,IACJ,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,uBAAuB,KAAK;AAEhD,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,KAAK,YAAY,MAAM;AAG7B,QAAM,EAAE,OAAO,WAAW,GAAG,KAAK,WAAW,kBAAkB;AAAA,IAC7D,cAAc;AAAA,EAAA,CACf;AAED,QAAM,EAAE,OAAO,aAAa,GAAG,KAAK,aAAa,kBAAkB;AAAA,IACjE,cAAc;AAAA,EAAA,CACf;AAGD,QAAM,EAAE,OAAO,kBAAkB,IAAI,KAAK,kBAAkB;AAAA,IAC1D;AAAA,MACE,cAAc;AAAA,MACd,aAAa;AAAA,MACb,gBAAgB;AAAA,QACd,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,EAAE,OAAO,mBAAmB,IAAI,KAAK,mBACzC,kBAAkB;AAAA,IAChB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,EAAA,CACD;AAEG,QAAA,cAAc,QAAQ,MAAM;AAC1B,UAAA,cAAc,OAAO,SAAS,eAAe;AACnD,WAAO,cAAc,YAAY;AAAA,EAAA,GAChC,CAAC,QAAQ,QAAQ,CAAC;AAEf,QAAA,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC;AAAA,IACA,KAAK,CAAC,EAAE;AAAA,EAAA;AAGJ,QAAA,kBAAiD,CAAC,OAAO,UAAU;AACvE,mBAAe,KAAK;AACpB,kBAAc,OAAO,KAAK;AAAA,EAAA;AAI1B,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,UACE,CAAC,QAAQ,MAAM,GAAG,CAAC;AAAA,UACnB,CAAC,QAAQ,SAAS,GAAG;AAAA,UACrB,CAAC,QAAQ,YAAY,GAAG,KAAK,SAAS;AAAA,UACtC,CAAC,QAAQ,WAAW,GAAG;AAAA,QACzB;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAC,qBAAA,OAAA,EAAI,WAAW,QAAQ,UACtB,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA;AAAA,gBAEL,wBAAwB,GAAG,eAAe;AAAA,gBAC1C,yBAAyB,GAAG,gBAAgB;AAAA,cAC9C;AAAA,cACA,UAAU;AAAA,cACV,OAAO;AAAA,cAEN,UAAK,KAAA,IAAI,CAAC,KAAK,UACd;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,KAAK,UAAU,IAAI,SAAS;AAAA,kBAE5B,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE;AAAA,kBACnB,OAAO,IAAI;AAAA,kBACX,WAAW,QAAQ;AAAA,kBAEnB,8BAAC,OAAI,EAAA,WAAW,QAAQ,UAAW,cAAI,OAAM;AAAA,gBAAA;AAAA,gBALxC,IAAI;AAAA,cAAA,CAOZ;AAAA,YAAA;AAAA,UACH;AAAA,WAEE,eAAe,iBAAiB,CAAC,cAC/B,KAAK,IAAI,CAAC,KAAK,UAAU;AACvB,kBAAM,eAAe,gBAAgB,IAAI,MAAM,CAAC;AAE9C,mBAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OAAO;AAAA;AAAA,kBAEL,eAAe,GAAG,QAAQ;AAAA,kBAC1B,WAAW,SAAS,KAAK;AAAA,kBACzB,UAAU,QAAQ,KAAK;AAAA,gBACzB;AAAA,gBAEC,UAAA;AAAA,kBAAA,mCACE,OAAI,EAAA,KAAK,eAAe,WAAW,QAAQ,aAC1C,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,mBAAmB;AAAA,sBACnB,SAAS;AAAA,sBACT,UAAU;AAAA,sBACV,UAAU,CAAC,OAAO,WAChB,WAAW,OAAO,QAAQ,IAAI,EAAE;AAAA,sBAElC,SAAQ;AAAA,sBACR,UAAQ;AAAA,oBAAA;AAAA,kBAAA,GAEZ;AAAA,kBAED,gBACE,oBAAA,OAAA,EAAI,KAAK,gBAAgB,WAAW,QAAQ,cAC3C,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,mBAAmB;AAAA,sBACnB,SAAS;AAAA,sBACT,UAAU;AAAA,sBACV,UAAU,CAAC,OAAO,WAChB,WAAW,OAAO,QAAQ,IAAI,EAAE;AAAA,sBAElC,SAAQ;AAAA,sBACR,UAAQ;AAAA,oBAAA;AAAA,kBAAA,GAEZ;AAAA,gBAAA;AAAA,cAAA;AAAA,cAlCG,IAAI;AAAA,YAAA;AAAA,UAsCd,CAAA,IACD;AAAA,QAAA,GACN;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,MAAK;AAAA,YACL,mBAAiB,GAAG,EAAE,IAAI,WAAW;AAAA,YACrC,WAAW,QAAQ;AAAA,YACnB,OAAO;AAAA;AAAA,cAEL,yBACE,WAAW,KAAK,UAAU,aAAa,QAAQ;AAAA,YACnD;AAAA,YAEC;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
|
|
1
|
+
{"version":3,"file":"BottomPanel.js","sources":["../../../../src/Canvas/BottomPanel/BottomPanel.tsx"],"sourcesContent":["import { forwardRef, useMemo } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport {\n ExtractNames,\n HvActionGeneric,\n HvActionsGeneric,\n HvActionsGenericProps,\n HvBaseProps,\n HvPanel,\n theme,\n useControlled,\n useDefaultProps,\n useUniqueId,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { HvCanvasPanelTab } from \"../PanelTab\";\nimport { HvCanvasPanelTabs, HvCanvasPanelTabsProps } from \"../PanelTabs\";\nimport { staticClasses, useClasses } from \"./BottomPanel.styles\";\n\nexport { staticClasses as canvasBottomPanelClasses };\n\nexport type HvCanvasBottomPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCanvasBottomPanelProps extends HvBaseProps {\n /** Open state of the bottom panel. */\n open?: boolean;\n /** Minimize state of the bottom panel tabs'. */\n minimize?: boolean;\n /** List of tabs visible on the panel. */\n tabs: {\n id: string | number;\n title: React.ReactNode | ((overflowing: boolean) => React.ReactNode);\n }[];\n /** Id of the selected tab if it needs to be controlled. */\n selectedTabId?: string | number;\n /** Callback triggered when a tab changes/is clicked. */\n onTabChange?: (\n event: React.SyntheticEvent | null,\n tabId: string | number | null,\n ) => void;\n /**\n * Actions to be rendered in the left side of a tab.\n * If more than one action is provided, a dropdown menu will be used.\n * These actions are not shown when the tab content is overflowing.\n */\n leftActions?: HvActionsGenericProps[\"actions\"];\n /**\n * Actions to be rendered in the right side of a tab.\n * If more than two actions are provided, a dropdown menu will be used to display the remaining actions.\n * These actions are not shown when the tab content is overflowing.\n */\n rightActions?: HvActionsGenericProps[\"actions\"];\n /**\n * Actions to be rendered in the right side of a tab when the tab content is overflowing.\n * These actions will replace both `leftActions` and `rightActions`.\n */\n overflowActions?: HvActionsGenericProps[\"actions\"];\n /** Callback triggered when an action is clicked. */\n onAction?: (\n event: React.SyntheticEvent,\n action: HvActionGeneric,\n tabId: string | number,\n ) => void;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasBottomPanelClasses;\n}\n\n/**\n * A bottom panel component to use in a canvas context.\n */\nexport const HvCanvasBottomPanel = forwardRef<\n HTMLDivElement,\n HvCanvasBottomPanelProps\n>((props, ref) => {\n const {\n id: idProp,\n className,\n children,\n open,\n tabs,\n minimize,\n leftActions,\n rightActions,\n overflowActions,\n selectedTabId: selectedTabIdProp,\n classes: classesProp,\n onTabChange,\n onAction,\n ...others\n } = useDefaultProps(\"HvCanvasBottomPanel\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const id = useUniqueId(idProp);\n\n // Tab resize detector: to position tab actions and set the panel top right border radius\n const { width: tabWidth = 0, ref: tabRef } = useResizeDetector({\n handleHeight: false,\n });\n // Tab panel resize detector: to set the panel top right border radius\n const { width: panelWidth = 0, ref: panelRef } = useResizeDetector({\n handleHeight: false,\n });\n\n // Left actions resize detector: to position tab title according with actions\n const { width: leftActionWidth = 32, ref: leftActionRef } = useResizeDetector(\n {\n handleHeight: false,\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n },\n );\n // Right actions resize detector: to position tab title according with actions\n const { width: rightActionWidth = 32, ref: rightActionRef } =\n useResizeDetector({\n handleHeight: false,\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n });\n\n const overflowing = useMemo(() => {\n const availableWidth =\n tabWidth -\n (leftActions ? leftActionWidth : 0) -\n (rightActions ? rightActionWidth : 0);\n\n return availableWidth < 60;\n }, [leftActionWidth, leftActions, rightActionWidth, rightActions, tabWidth]);\n\n const [selectedTab, setSelectedTab] = useControlled<string | number | null>(\n selectedTabIdProp,\n tabs[0].id,\n );\n\n const handleTabChange: HvCanvasPanelTabsProps[\"onChange\"] = (\n event,\n tabId,\n ) => {\n setSelectedTab(tabId);\n onTabChange?.(event, tabId);\n };\n\n return (\n <div\n id={id}\n ref={ref}\n className={cx(\n classes.root,\n {\n [classes.closed]: !open,\n [classes.minimized]: minimize,\n [classes.multipleTabs]: tabs.length > 1,\n [classes.overflowing]: overflowing,\n },\n className,\n )}\n {...others}\n >\n <div className={classes.tabsRoot}>\n <HvCanvasPanelTabs\n style={{\n // @ts-ignore\n \"--left-actions-width\":\n overflowing || !leftActions\n ? theme.space.sm\n : `calc(${leftActionWidth}px + ${theme.space.xs})`,\n \"--right-actions-width\":\n !rightActions || (overflowing && !overflowActions)\n ? theme.space.sm\n : `calc(${overflowing ? 32 : rightActionWidth}px + ${theme.space.xs})`,\n }}\n onChange={handleTabChange}\n value={selectedTab}\n >\n {tabs.map((tab, index) => (\n <HvCanvasPanelTab\n ref={index === 0 ? tabRef : undefined}\n key={tab.id}\n id={`${id}-${tab.id}`}\n value={tab.id}\n className={classes.tab}\n tabIndex={0}\n >\n <div className={classes.tabTitle}>\n {typeof tab.title === \"function\"\n ? tab.title(overflowing)\n : tab.title}\n </div>\n </HvCanvasPanelTab>\n ))}\n </HvCanvasPanelTabs>\n {/* For accessibility purposes, these buttons cannot be children of a tablist so they are rendered as HvCanvasTabs sibling. */}\n {leftActions || rightActions || overflowActions\n ? tabs.map((tab, index) => {\n const btnsDisabled = selectedTab !== tab.id && !minimize;\n return (\n <div\n key={tab.id}\n style={{\n // @ts-ignore\n \"--tab-width\": `${tabWidth}px`,\n \"--right\": `calc((${index} + 1) * var(--tab-width))`,\n \"--left\": `calc(${index} * var(--tab-width))`,\n }}\n >\n {leftActions && !overflowing && (\n <div\n ref={leftActionRef}\n className={cx(classes.leftActions, {\n [classes.actionsDisabled]: btnsDisabled,\n })}\n >\n <HvActionsGeneric\n maxVisibleActions={1}\n actions={leftActions}\n disabled={btnsDisabled}\n onAction={(event, action) =>\n onAction?.(event, action, tab.id)\n }\n variant=\"secondaryGhost\"\n iconOnly\n />\n </div>\n )}\n {rightActions && !overflowing && (\n <div\n ref={rightActionRef}\n className={cx(classes.rightActions, {\n [classes.actionsDisabled]: btnsDisabled,\n })}\n >\n <HvActionsGeneric\n maxVisibleActions={2}\n actions={rightActions}\n disabled={btnsDisabled}\n onAction={(event, action) =>\n onAction?.(event, action, tab.id)\n }\n variant=\"secondaryGhost\"\n iconOnly\n />\n </div>\n )}\n {overflowActions && overflowing && (\n <div\n className={cx(classes.rightActions, {\n [classes.actionsDisabled]: btnsDisabled,\n })}\n >\n <HvActionsGeneric\n maxVisibleActions={0}\n actions={overflowActions}\n disabled={btnsDisabled}\n onAction={(event, action) =>\n onAction?.(event, action, tab.id)\n }\n variant=\"secondaryGhost\"\n iconOnly\n />\n </div>\n )}\n </div>\n );\n })\n : null}\n </div>\n <HvPanel\n ref={panelRef}\n role=\"tabpanel\"\n aria-labelledby={`${id}-${selectedTab}`}\n className={classes.content}\n style={{\n // @ts-ignore\n \"--right-border-radius\":\n tabWidth * tabs.length >= panelWidth ? \"0px\" : \"16px\",\n }}\n >\n {children}\n </HvPanel>\n </div>\n );\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createClasses, theme } from "@hitachivantara/uikit-react-core";
|
|
1
|
+
import { createClasses, theme, buttonClasses } from "@hitachivantara/uikit-react-core";
|
|
2
2
|
const { staticClasses, useClasses } = createClasses(
|
|
3
3
|
"HvCanvasBottomPanel",
|
|
4
4
|
{
|
|
@@ -32,12 +32,7 @@ const { staticClasses, useClasses } = createClasses(
|
|
|
32
32
|
right: `calc(100% - var(--right) + ${theme.space.xs})`
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
|
-
overflowing: {
|
|
36
|
-
"& $tabTitle": {
|
|
37
|
-
paddingLeft: theme.space.sm,
|
|
38
|
-
paddingRight: theme.space.sm
|
|
39
|
-
}
|
|
40
|
-
},
|
|
35
|
+
overflowing: {},
|
|
41
36
|
tab: {
|
|
42
37
|
display: "flex",
|
|
43
38
|
alignItems: "center",
|
|
@@ -48,8 +43,8 @@ const { staticClasses, useClasses } = createClasses(
|
|
|
48
43
|
display: "flex",
|
|
49
44
|
width: "100%",
|
|
50
45
|
padding: theme.space.sm,
|
|
51
|
-
paddingLeft:
|
|
52
|
-
paddingRight:
|
|
46
|
+
paddingLeft: "var(--left-actions-width)",
|
|
47
|
+
paddingRight: "var(--right-actions-width)"
|
|
53
48
|
},
|
|
54
49
|
tabsRoot: {
|
|
55
50
|
position: "relative"
|
|
@@ -64,6 +59,18 @@ const { staticClasses, useClasses } = createClasses(
|
|
|
64
59
|
right: theme.space.xs,
|
|
65
60
|
top: 8
|
|
66
61
|
},
|
|
62
|
+
actionsDisabled: {
|
|
63
|
+
pointerEvents: "none",
|
|
64
|
+
[`&& .${buttonClasses.disabled}`]: {
|
|
65
|
+
pointerEvents: "none",
|
|
66
|
+
backgroundColor: "transparent",
|
|
67
|
+
borderColor: "transparent",
|
|
68
|
+
":hover": {
|
|
69
|
+
backgroundColor: "transparent",
|
|
70
|
+
borderColor: "transparent"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
67
74
|
content: { borderTopRightRadius: "var(--right-border-radius)" }
|
|
68
75
|
}
|
|
69
76
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomPanel.styles.js","sources":["../../../../src/Canvas/BottomPanel/BottomPanel.styles.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"BottomPanel.styles.js","sources":["../../../../src/Canvas/BottomPanel/BottomPanel.styles.tsx"],"sourcesContent":["import {\n buttonClasses,\n createClasses,\n theme,\n} from \"@hitachivantara/uikit-react-core\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvCanvasBottomPanel\",\n {\n root: {\n position: \"absolute\",\n display: \"flex\",\n flexDirection: \"column\",\n right: 0,\n bottom: 0,\n width: \"100%\",\n maxHeight: \"500px\",\n visibility: \"visible\",\n transition: \"visibility 0.3s ease, max-height 0.3s ease, width 0.3s ease\",\n },\n closed: {\n maxHeight: 0,\n visibility: \"hidden\",\n },\n minimized: {\n \"& $content\": {\n display: \"none\",\n },\n \"& $tab\": {\n backgroundColor: theme.colors.atmo1,\n ...theme.typography.label,\n },\n },\n multipleTabs: {\n \"& $tab\": { maxWidth: \"288px\" },\n \"& $rightActions\": {\n right: `calc(100% - var(--right) + ${theme.space.xs})`,\n },\n },\n overflowing: {},\n tab: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n tabTitle: {\n display: \"flex\",\n width: \"100%\",\n padding: theme.space.sm,\n paddingLeft: \"var(--left-actions-width)\",\n paddingRight: \"var(--right-actions-width)\",\n },\n tabsRoot: {\n position: \"relative\",\n },\n leftActions: {\n position: \"absolute\",\n left: `calc(var(--left) + ${theme.space.xs})`,\n top: 8,\n },\n rightActions: {\n position: \"absolute\",\n right: theme.space.xs,\n top: 8,\n },\n actionsDisabled: {\n pointerEvents: \"none\",\n [`&& .${buttonClasses.disabled}`]: {\n pointerEvents: \"none\",\n backgroundColor: \"transparent\",\n borderColor: \"transparent\",\n \":hover\": {\n backgroundColor: \"transparent\",\n borderColor: \"transparent\",\n },\n },\n },\n content: { borderTopRightRadius: \"var(--right-border-radius)\" },\n },\n);\n"],"names":[],"mappings":";AAMa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,SAAS;AAAA,MACT,eAAe;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA,IACA,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,WAAW;AAAA,MACT,cAAc;AAAA,QACZ,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR,iBAAiB,MAAM,OAAO;AAAA,QAC9B,GAAG,MAAM,WAAW;AAAA,MACtB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,UAAU,EAAE,UAAU,QAAQ;AAAA,MAC9B,mBAAmB;AAAA,QACjB,OAAO,8BAA8B,MAAM,MAAM,EAAE;AAAA,MACrD;AAAA,IACF;AAAA,IACA,aAAa,CAAC;AAAA,IACd,KAAK;AAAA,MACH,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS,MAAM,MAAM;AAAA,MACrB,aAAa;AAAA,MACb,cAAc;AAAA,IAChB;AAAA,IACA,UAAU;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,aAAa;AAAA,MACX,UAAU;AAAA,MACV,MAAM,sBAAsB,MAAM,MAAM,EAAE;AAAA,MAC1C,KAAK;AAAA,IACP;AAAA,IACA,cAAc;AAAA,MACZ,UAAU;AAAA,MACV,OAAO,MAAM,MAAM;AAAA,MACnB,KAAK;AAAA,IACP;AAAA,IACA,iBAAiB;AAAA,MACf,eAAe;AAAA,MACf,CAAC,OAAO,cAAc,QAAQ,EAAE,GAAG;AAAA,QACjC,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,UAAU;AAAA,UACR,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,EAAE,sBAAsB,6BAA6B;AAAA,EAChE;AACF;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { Tab } from "@mui/base/Tab";
|
|
4
|
+
import { useDefaultProps } from "@hitachivantara/uikit-react-core";
|
|
5
|
+
import { useClasses } from "./PanelTab.styles.js";
|
|
6
|
+
import { staticClasses } from "./PanelTab.styles.js";
|
|
7
|
+
const HvCanvasPanelTab = forwardRef((props, ref) => {
|
|
8
|
+
const {
|
|
9
|
+
classes: classesProp,
|
|
10
|
+
className,
|
|
11
|
+
...others
|
|
12
|
+
} = useDefaultProps("HvCanvasPanelTab", props);
|
|
13
|
+
const { classes, cx } = useClasses(classesProp);
|
|
14
|
+
return /* @__PURE__ */ jsx(Tab, { ref, className: cx(classes.root, className), ...others });
|
|
15
|
+
});
|
|
16
|
+
export {
|
|
17
|
+
HvCanvasPanelTab,
|
|
18
|
+
staticClasses as canvasPanelTabClasses
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelTab.js","sources":["../../../../src/Canvas/PanelTab/PanelTab.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { Tab, TabProps } from \"@mui/base/Tab\";\nimport {\n ExtractNames,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./PanelTab.styles\";\n\nexport { staticClasses as canvasPanelTabClasses };\n\nexport type HvCanvasPanelTabClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCanvasPanelTabProps extends TabProps {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasPanelTabClasses;\n}\n\n/**\n * The tab component to use inside `HvCanvasPanelTabs`.\n */\nexport const HvCanvasPanelTab = forwardRef<\n HTMLButtonElement,\n HvCanvasPanelTabProps\n>((props, ref) => {\n const {\n classes: classesProp,\n className,\n ...others\n } = useDefaultProps(\"HvCanvasPanelTab\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n return <Tab ref={ref} className={cx(classes.root, className)} {...others} />;\n});\n"],"names":[],"mappings":";;;;;;AAqBO,MAAM,mBAAmB,WAG9B,CAAC,OAAO,QAAQ;AACV,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,oBAAoB,KAAK;AAE7C,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAEvC,SAAA,oBAAC,KAAI,EAAA,KAAU,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,OAAQ,CAAA;AAC5E,CAAC;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tabClasses } from "@mui/base/Tab";
|
|
2
2
|
import { createClasses, theme, outlineStyles } from "@hitachivantara/uikit-react-core";
|
|
3
|
-
const { staticClasses, useClasses } = createClasses("
|
|
3
|
+
const { staticClasses, useClasses } = createClasses("HvCanvasPanelTab", {
|
|
4
4
|
root: {
|
|
5
5
|
height: "100%",
|
|
6
6
|
display: "flex",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelTab.styles.js","sources":["../../../../src/Canvas/PanelTab/PanelTab.styles.tsx"],"sourcesContent":["import { tabClasses } from \"@mui/base/Tab\";\nimport {\n createClasses,\n outlineStyles,\n theme,\n} from \"@hitachivantara/uikit-react-core\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCanvasPanelTab\", {\n root: {\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n borderRadius: \"16px 16px 0 0\",\n backgroundColor: theme.colors.atmo2,\n color: theme.colors.secondary_60,\n overflow: \"hidden\",\n width: \"100%\",\n boxShadow: \"0px -2px 8px 0px #4141410F\",\n paddingInlineEnd: 0,\n paddingInlineStart: 0,\n \"& svg .color0\": {\n fill: \"currentcolor\",\n },\n \"&:hover\": {\n cursor: \"pointer\",\n },\n \"&:focus\": {\n backgroundColor: theme.colors.atmo1,\n },\n [`&.${tabClasses.selected}`]: {\n backgroundColor: theme.colors.atmo1,\n ...theme.typography.label,\n },\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n },\n});\n"],"names":[],"mappings":";;AAOO,MAAM,EAAE,eAAe,eAAe,cAAc,oBAAoB;AAAA,EAC7E,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,cAAc;AAAA,IACd,iBAAiB,MAAM,OAAO;AAAA,IAC9B,OAAO,MAAM,OAAO;AAAA,IACpB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,WAAW;AAAA,MACT,iBAAiB,MAAM,OAAO;AAAA,IAChC;AAAA,IACA,CAAC,KAAK,WAAW,QAAQ,EAAE,GAAG;AAAA,MAC5B,iBAAiB,MAAM,OAAO;AAAA,MAC9B,GAAG,MAAM,WAAW;AAAA,IACtB;AAAA,IACA,mBAAmB;AAAA,MACjB,GAAG;AAAA,IACL;AAAA,EACF;AACF,CAAC;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { Tabs } from "@mui/base/Tabs";
|
|
4
|
+
import { TabsList } from "@mui/base/TabsList";
|
|
5
|
+
import { useDefaultProps } from "@hitachivantara/uikit-react-core";
|
|
6
|
+
import { useClasses } from "./PanelTabs.styles.js";
|
|
7
|
+
import { staticClasses } from "./PanelTabs.styles.js";
|
|
8
|
+
const HvCanvasPanelTabs = forwardRef((props, ref) => {
|
|
9
|
+
const {
|
|
10
|
+
selectionFollowsFocus = true,
|
|
11
|
+
children,
|
|
12
|
+
className,
|
|
13
|
+
classes: classesProp,
|
|
14
|
+
...others
|
|
15
|
+
} = useDefaultProps("HvCanvasPanelTabs", props);
|
|
16
|
+
const { classes, cx } = useClasses(classesProp);
|
|
17
|
+
return /* @__PURE__ */ jsx(
|
|
18
|
+
Tabs,
|
|
19
|
+
{
|
|
20
|
+
ref,
|
|
21
|
+
className: cx(classes.root, className),
|
|
22
|
+
selectionFollowsFocus,
|
|
23
|
+
...others,
|
|
24
|
+
children: /* @__PURE__ */ jsx(TabsList, { className: classes.list, children })
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
export {
|
|
29
|
+
HvCanvasPanelTabs,
|
|
30
|
+
staticClasses as canvasPanelTabsClasses
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelTabs.js","sources":["../../../../src/Canvas/PanelTabs/PanelTabs.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { Tabs, TabsProps } from \"@mui/base/Tabs\";\nimport { TabsList } from \"@mui/base/TabsList\";\nimport {\n ExtractNames,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./PanelTabs.styles\";\n\nexport { staticClasses as canvasPanelTabsClasses };\n\nexport type HvCanvasPanelTabsClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCanvasPanelTabsProps extends TabsProps {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasPanelTabsClasses;\n}\n\n/**\n * A tabs component to use in a canvas context.\n */\nexport const HvCanvasPanelTabs = forwardRef<\n HTMLDivElement,\n HvCanvasPanelTabsProps\n>((props, ref) => {\n const {\n selectionFollowsFocus = true,\n children,\n className,\n classes: classesProp,\n ...others\n } = useDefaultProps(\"HvCanvasPanelTabs\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <Tabs\n ref={ref}\n className={cx(classes.root, className)}\n selectionFollowsFocus={selectionFollowsFocus}\n {...others}\n >\n <TabsList className={classes.list}>{children}</TabsList>\n </Tabs>\n );\n});\n"],"names":[],"mappings":";;;;;;;AAsBO,MAAM,oBAAoB,WAG/B,CAAC,OAAO,QAAQ;AACV,QAAA;AAAA,IACJ,wBAAwB;AAAA,IACxB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,GAAG;AAAA,EAAA,IACD,gBAAgB,qBAAqB,KAAK;AAE9C,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAG5C,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,QAAQ,MAAM,SAAS;AAAA,MACrC;AAAA,MACC,GAAG;AAAA,MAEJ,UAAC,oBAAA,UAAA,EAAS,WAAW,QAAQ,MAAO,UAAS;AAAA,IAAA;AAAA,EAAA;AAGnD,CAAC;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createClasses } from "@hitachivantara/uikit-react-core";
|
|
2
|
+
const { staticClasses, useClasses } = createClasses(
|
|
3
|
+
"HvCanvasPanelTabs",
|
|
4
|
+
{
|
|
5
|
+
root: {},
|
|
6
|
+
list: {
|
|
7
|
+
display: "flex",
|
|
8
|
+
width: "100%",
|
|
9
|
+
height: 48
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
);
|
|
13
|
+
export {
|
|
14
|
+
staticClasses,
|
|
15
|
+
useClasses
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelTabs.styles.js","sources":["../../../../src/Canvas/PanelTabs/PanelTabs.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-core\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvCanvasPanelTabs\",\n {\n root: {},\n list: {\n display: \"flex\",\n width: \"100%\",\n height: 48,\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM,CAAC;AAAA,IACP,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AACF;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
|
-
import { useDefaultProps, useUniqueId, useLabels, useControlled, HvPanel } from "@hitachivantara/uikit-react-core";
|
|
4
|
-
import {
|
|
3
|
+
import { useDefaultProps, useUniqueId, useLabels, useControlled, HvPanel, HvIconButton } from "@hitachivantara/uikit-react-core";
|
|
4
|
+
import { End } from "@hitachivantara/uikit-react-icons";
|
|
5
5
|
import { useClasses } from "./SidePanel.styles.js";
|
|
6
6
|
import { staticClasses } from "./SidePanel.styles.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { HvCanvasPanelTabs } from "../PanelTabs/PanelTabs.js";
|
|
8
|
+
import { HvCanvasPanelTab } from "../PanelTab/PanelTab.js";
|
|
9
9
|
const DEFAULT_LABELS = {
|
|
10
10
|
open: "Open",
|
|
11
11
|
close: "Close"
|
|
@@ -54,13 +54,13 @@ const HvCanvasSidePanel = forwardRef((props, ref) => {
|
|
|
54
54
|
...others,
|
|
55
55
|
children: [
|
|
56
56
|
tabs && /* @__PURE__ */ jsx(
|
|
57
|
-
|
|
57
|
+
HvCanvasPanelTabs,
|
|
58
58
|
{
|
|
59
59
|
className: classes.tabs,
|
|
60
60
|
value: selectedTab,
|
|
61
61
|
onChange: handleTabChange,
|
|
62
62
|
children: tabs.map((tab) => /* @__PURE__ */ jsx(
|
|
63
|
-
|
|
63
|
+
HvCanvasPanelTab,
|
|
64
64
|
{
|
|
65
65
|
id: `${id}-${tab.id}`,
|
|
66
66
|
value: tab.id,
|
|
@@ -84,22 +84,16 @@ const HvCanvasSidePanel = forwardRef((props, ref) => {
|
|
|
84
84
|
}
|
|
85
85
|
),
|
|
86
86
|
/* @__PURE__ */ jsx(
|
|
87
|
-
|
|
87
|
+
HvIconButton,
|
|
88
88
|
{
|
|
89
|
+
variant: "primaryGhost",
|
|
90
|
+
title: open ? labels.close : labels.open,
|
|
91
|
+
onClick: handleTogglePanel,
|
|
89
92
|
className: cx(classes.handle, {
|
|
90
93
|
[classes.handleOpen]: open,
|
|
91
94
|
[classes.handleClose]: !open
|
|
92
95
|
}),
|
|
93
|
-
|
|
94
|
-
role: "button",
|
|
95
|
-
tabIndex: 0,
|
|
96
|
-
onKeyDown: (e) => {
|
|
97
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
98
|
-
handleTogglePanel(e);
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
"aria-label": open ? labels.close : labels.open,
|
|
102
|
-
children: /* @__PURE__ */ jsx("div", { className: classes.handleButton, children: open ? /* @__PURE__ */ jsx(Start, { color: ["primary"] }) : /* @__PURE__ */ jsx(End, { color: ["primary"] }) })
|
|
96
|
+
children: /* @__PURE__ */ jsx(End, { style: { rotate: open ? "180deg" : void 0 } })
|
|
103
97
|
}
|
|
104
98
|
)
|
|
105
99
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidePanel.js","sources":["../../../../src/Canvas/SidePanel/SidePanel.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n ExtractNames,\n HvBaseProps,\n HvPanel,\n useControlled,\n useDefaultProps,\n useLabels,\n useUniqueId,\n} from \"@hitachivantara/uikit-react-core\";\nimport { End
|
|
1
|
+
{"version":3,"file":"SidePanel.js","sources":["../../../../src/Canvas/SidePanel/SidePanel.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n ExtractNames,\n HvBaseProps,\n HvIconButton,\n HvPanel,\n useControlled,\n useDefaultProps,\n useLabels,\n useUniqueId,\n} from \"@hitachivantara/uikit-react-core\";\nimport { End } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvCanvasPanelTab } from \"../PanelTab\";\nimport { HvCanvasPanelTabs, HvCanvasPanelTabsProps } from \"../PanelTabs\";\nimport { staticClasses, useClasses } from \"./SidePanel.styles\";\n\nexport { staticClasses as canvasSidePanelClasses };\n\nexport type HvCanvasSidePanelClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n open: \"Open\",\n close: \"Close\",\n};\n\nexport interface HvCanvasSidePanelProps\n extends HvBaseProps<HTMLDivElement, \"onToggle\"> {\n /** When controlled, defines id the panel is open or not. */\n open?: boolean;\n /** When uncontrolled, defines the initial state of the panel. */\n defaultOpen?: boolean;\n /** List of tabs visible on the panel. */\n tabs?: {\n id: string | number;\n content: React.ReactNode;\n }[];\n /** Id of the selected tab if it needs to be controlled. */\n tab?: string | number;\n /** Callback triggered whenever the panel toggles. */\n onToggle?: (\n event: React.MouseEvent | React.KeyboardEvent,\n open: boolean,\n ) => void;\n /** Callback triggered when a tab changes/is clicked. */\n onTabChange?: (\n event: React.SyntheticEvent | null,\n tabId: string | number | null,\n ) => void;\n /** An object containing all the labels. */\n labels?: Partial<typeof DEFAULT_LABELS>;\n /** The content that will be rendered within the canvas panel. */\n children?: React.ReactNode;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasSidePanelClasses;\n}\n\n/**\n * A side panel component to use in a canvas context.\n */\nexport const HvCanvasSidePanel = forwardRef<\n HTMLDivElement,\n HvCanvasSidePanelProps\n>((props, ref) => {\n const {\n id: idProp,\n tab: tabProp,\n open: openProp,\n defaultOpen = false,\n tabs,\n onToggle,\n onTabChange,\n labels: labelsProp,\n className,\n children,\n classes: classesProp,\n ...others\n } = useDefaultProps(\"HvCanvasSidePanel\", props);\n\n const id = useUniqueId(idProp);\n\n const { classes, cx } = useClasses(classesProp);\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const [open, setOpen] = useControlled(openProp, Boolean(defaultOpen));\n const [selectedTab, setSelectedTab] = useControlled<string | number | null>(\n tabProp,\n tabs?.[0]?.id ?? \"none\",\n );\n\n const handleTogglePanel = (event: React.MouseEvent | React.KeyboardEvent) => {\n setOpen((prev) => !prev);\n onToggle?.(event, !open);\n };\n\n const handleTabChange: HvCanvasPanelTabsProps[\"onChange\"] = (\n event,\n tabId,\n ) => {\n setSelectedTab(tabId);\n onTabChange?.(event, tabId);\n };\n\n return (\n <>\n <div\n ref={ref}\n id={id}\n className={cx(classes.root, className, {\n [classes.open]: open,\n [classes.close]: !open,\n })}\n {...others}\n >\n {tabs && (\n <HvCanvasPanelTabs\n className={classes.tabs}\n value={selectedTab}\n onChange={handleTabChange}\n >\n {tabs.map((tab) => (\n <HvCanvasPanelTab\n key={tab.id}\n id={`${id}-${tab.id}`}\n value={tab.id}\n tabIndex={0}\n >\n {tab.content}\n </HvCanvasPanelTab>\n ))}\n </HvCanvasPanelTabs>\n )}\n <HvPanel\n role={tabs ? \"tabpanel\" : undefined}\n aria-labelledby={tabs ? `${id}-${selectedTab}` : undefined}\n className={classes.content}\n >\n {children}\n </HvPanel>\n </div>\n <HvIconButton\n variant=\"primaryGhost\"\n title={open ? labels.close : labels.open}\n onClick={handleTogglePanel}\n className={cx(classes.handle, {\n [classes.handleOpen]: open,\n [classes.handleClose]: !open,\n })}\n >\n <End style={{ rotate: open ? \"180deg\" : undefined }} />\n </HvIconButton>\n </>\n );\n});\n"],"names":[],"mappings":";;;;;;;;AAqBA,MAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AACT;AAoCO,MAAM,oBAAoB,WAG/B,CAAC,OAAO,QAAQ;AACV,QAAA;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,MAAM;AAAA,IACN,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,GAAG;AAAA,EAAA,IACD,gBAAgB,qBAAqB,KAAK;AAExC,QAAA,KAAK,YAAY,MAAM;AAE7B,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,SAAS,UAAU,gBAAgB,UAAU;AAE7C,QAAA,CAAC,MAAM,OAAO,IAAI,cAAc,UAAU,QAAQ,WAAW,CAAC;AAC9D,QAAA,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC;AAAA,IACA,OAAO,CAAC,GAAG,MAAM;AAAA,EAAA;AAGb,QAAA,oBAAoB,CAAC,UAAkD;AACnE,YAAA,CAAC,SAAS,CAAC,IAAI;AACZ,eAAA,OAAO,CAAC,IAAI;AAAA,EAAA;AAGnB,QAAA,kBAAsD,CAC1D,OACA,UACG;AACH,mBAAe,KAAK;AACpB,kBAAc,OAAO,KAAK;AAAA,EAAA;AAG5B,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAW,GAAG,QAAQ,MAAM,WAAW;AAAA,UACrC,CAAC,QAAQ,IAAI,GAAG;AAAA,UAChB,CAAC,QAAQ,KAAK,GAAG,CAAC;AAAA,QAAA,CACnB;AAAA,QACA,GAAG;AAAA,QAEH,UAAA;AAAA,UACC,QAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,QAAQ;AAAA,cACnB,OAAO;AAAA,cACP,UAAU;AAAA,cAET,UAAA,KAAK,IAAI,CAAC,QACT;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE;AAAA,kBACnB,OAAO,IAAI;AAAA,kBACX,UAAU;AAAA,kBAET,UAAI,IAAA;AAAA,gBAAA;AAAA,gBALA,IAAI;AAAA,cAAA,CAOZ;AAAA,YAAA;AAAA,UACH;AAAA,UAEF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM,OAAO,aAAa;AAAA,cAC1B,mBAAiB,OAAO,GAAG,EAAE,IAAI,WAAW,KAAK;AAAA,cACjD,WAAW,QAAQ;AAAA,cAElB;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAO,OAAO,OAAO,QAAQ,OAAO;AAAA,QACpC,SAAS;AAAA,QACT,WAAW,GAAG,QAAQ,QAAQ;AAAA,UAC5B,CAAC,QAAQ,UAAU,GAAG;AAAA,UACtB,CAAC,QAAQ,WAAW,GAAG,CAAC;AAAA,QAAA,CACzB;AAAA,QAED,UAAA,oBAAC,OAAI,OAAO,EAAE,QAAQ,OAAO,WAAW,UAAa;AAAA,MAAA;AAAA,IACvD;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createClasses, theme
|
|
1
|
+
import { createClasses, theme } from "@hitachivantara/uikit-react-core";
|
|
2
2
|
const { staticClasses, useClasses } = createClasses(
|
|
3
3
|
"HvCanvasSidePanel",
|
|
4
4
|
{
|
|
@@ -40,18 +40,8 @@ const { staticClasses, useClasses } = createClasses(
|
|
|
40
40
|
},
|
|
41
41
|
"&$handleClose": {
|
|
42
42
|
left: 0
|
|
43
|
-
},
|
|
44
|
-
"&:hover": {
|
|
45
|
-
cursor: "pointer"
|
|
46
|
-
},
|
|
47
|
-
"&:focus-visible": {
|
|
48
|
-
...outlineStyles
|
|
49
43
|
}
|
|
50
44
|
},
|
|
51
|
-
handleButton: {
|
|
52
|
-
top: "calc(50% - 16px)",
|
|
53
|
-
position: "absolute"
|
|
54
|
-
},
|
|
55
45
|
open: {},
|
|
56
46
|
close: {},
|
|
57
47
|
handleOpen: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidePanel.styles.js","sources":["../../../../src/Canvas/SidePanel/SidePanel.styles.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"SidePanel.styles.js","sources":["../../../../src/Canvas/SidePanel/SidePanel.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvCanvasSidePanel\",\n {\n root: {\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n left: 0,\n boxShadow:\n \"4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)\",\n backgroundColor: \"transparent\",\n transition: \"visibility 0.3s ease, width 0.3s ease\",\n overflow: \"hidden\",\n \"&$open\": {\n width: 320,\n visibility: \"visible\",\n },\n \"&$close\": {\n width: 0,\n visibility: \"hidden\",\n },\n },\n tabs: {},\n content: {\n height: \"100%\",\n },\n handle: {\n height: \"172px\",\n width: \"35px\",\n display: \"flex\",\n justifyContent: \"center\",\n boxShadow:\n \"4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)\",\n backgroundColor: theme.colors.atmo1,\n borderRadius: \"0px 16px 16px 0px\",\n position: \"absolute\",\n transition: \"left 0.3s ease\",\n top: \"calc(50% - 86px)\",\n \"&$handleOpen\": {\n left: 320,\n },\n \"&$handleClose\": {\n left: 0,\n },\n },\n open: {},\n close: {},\n handleOpen: {},\n handleClose: {},\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WACE;AAAA,MACF,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,QACR,OAAO;AAAA,QACP,YAAY;AAAA,MACd;AAAA,MACA,WAAW;AAAA,QACT,OAAO;AAAA,QACP,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,MAAM,CAAC;AAAA,IACP,SAAS;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,WACE;AAAA,MACF,iBAAiB,MAAM,OAAO;AAAA,MAC9B,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,gBAAgB;AAAA,QACd,MAAM;AAAA,MACR;AAAA,MACA,iBAAiB;AAAA,QACf,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM,CAAC;AAAA,IACP,OAAO,CAAC;AAAA,IACR,YAAY,CAAC;AAAA,IACb,aAAa,CAAC;AAAA,EAChB;AACF;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { fixedForwardRef, useDefaultProps } from "@hitachivantara/uikit-react-core";
|
|
3
|
+
import { useClasses } from "./Card.styles.js";
|
|
4
|
+
import { staticClasses } from "./Card.styles.js";
|
|
5
|
+
const HvCard = fixedForwardRef(function HvCard2(props, ref) {
|
|
6
|
+
const {
|
|
7
|
+
classes: classesProp,
|
|
8
|
+
className,
|
|
9
|
+
component: Component = "div",
|
|
10
|
+
children,
|
|
11
|
+
...others
|
|
12
|
+
} = useDefaultProps("HvCard", props);
|
|
13
|
+
const { classes, cx } = useClasses(classesProp);
|
|
14
|
+
return /* @__PURE__ */ jsx(Component, { ref, className: cx(classes.root, className), ...others, children });
|
|
15
|
+
});
|
|
16
|
+
export {
|
|
17
|
+
HvCard,
|
|
18
|
+
staticClasses as cardClasses
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../src/Card/Card.tsx"],"sourcesContent":["import {\n ExtractNames,\n fixedForwardRef,\n PolymorphicComponentRef,\n PolymorphicRef,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./Card.styles\";\n\nexport { staticClasses as cardClasses };\n\nexport type HvCardClasses = ExtractNames<typeof useClasses>;\n\nexport type HvCardProps<C extends React.ElementType = \"div\"> =\n PolymorphicComponentRef<\n C,\n {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCardClasses;\n }\n >;\n\n/**\n * The Pentaho Card component.\n */\nexport const HvCard = fixedForwardRef(function HvCard<\n C extends React.ElementType = \"div\",\n>(props: HvCardProps<C>, ref: PolymorphicRef<C>) {\n const {\n classes: classesProp,\n className,\n component: Component = \"div\",\n children,\n ...others\n } = useDefaultProps(\"HvCard\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <Component ref={ref} className={cx(classes.root, className)} {...others}>\n {children}\n </Component>\n );\n});\n"],"names":["HvCard"],"mappings":";;;;AA0BO,MAAM,SAAS,gBAAgB,SAASA,QAE7C,OAAuB,KAAwB;AACzC,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA,WAAW,YAAY;AAAA,IACvB;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,UAAU,KAAK;AAEnC,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAG5C,SAAA,oBAAC,WAAU,EAAA,KAAU,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,QAC9D,SACH,CAAA;AAEJ,CAAC;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createClasses, theme } from "@hitachivantara/uikit-react-core";
|
|
2
|
+
const { staticClasses, useClasses } = createClasses("HvCard", {
|
|
3
|
+
root: {
|
|
4
|
+
position: "relative",
|
|
5
|
+
display: "block",
|
|
6
|
+
overflow: "hidden",
|
|
7
|
+
backgroundColor: theme.colors.atmo1,
|
|
8
|
+
borderRadius: theme.space.sm,
|
|
9
|
+
border: `1px solid ${theme.colors.atmo3}`,
|
|
10
|
+
boxShadow: "0 4px 6px 0 rgba(65,65,65,0.06)"
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export {
|
|
14
|
+
staticClasses,
|
|
15
|
+
useClasses
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.styles.js","sources":["../../../src/Card/Card.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCard\", {\n root: {\n position: \"relative\",\n display: \"block\",\n overflow: \"hidden\",\n backgroundColor: theme.colors.atmo1,\n borderRadius: theme.space.sm,\n border: `1px solid ${theme.colors.atmo3}`,\n boxShadow: \"0 4px 6px 0 rgba(65,65,65,0.06)\",\n },\n});\n"],"names":[],"mappings":";AAEO,MAAM,EAAE,eAAe,eAAe,cAAc,UAAU;AAAA,EACnE,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AAAA,IACV,iBAAiB,MAAM,OAAO;AAAA,IAC9B,cAAc,MAAM,MAAM;AAAA,IAC1B,QAAQ,aAAa,MAAM,OAAO,KAAK;AAAA,IACvC,WAAW;AAAA,EACb;AACF,CAAC;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { useDefaultProps } from "@hitachivantara/uikit-react-core";
|
|
4
|
+
import { useClasses } from "./CardMedia.styles.js";
|
|
5
|
+
import { staticClasses } from "./CardMedia.styles.js";
|
|
6
|
+
const HvCardMedia = forwardRef(
|
|
7
|
+
(props, ref) => {
|
|
8
|
+
const {
|
|
9
|
+
src,
|
|
10
|
+
alt = "",
|
|
11
|
+
height = 160,
|
|
12
|
+
className,
|
|
13
|
+
classes: classesProp,
|
|
14
|
+
children,
|
|
15
|
+
...others
|
|
16
|
+
} = useDefaultProps("HvCardMedia", props);
|
|
17
|
+
const { classes, cx } = useClasses(classesProp);
|
|
18
|
+
return /* @__PURE__ */ jsx("div", { className: cx(classes.root, className), children: /* @__PURE__ */ jsx(
|
|
19
|
+
"img",
|
|
20
|
+
{
|
|
21
|
+
ref,
|
|
22
|
+
height,
|
|
23
|
+
className: classes.image,
|
|
24
|
+
src,
|
|
25
|
+
alt,
|
|
26
|
+
...others
|
|
27
|
+
}
|
|
28
|
+
) });
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
export {
|
|
32
|
+
HvCardMedia,
|
|
33
|
+
staticClasses as cardMediaClasses
|
|
34
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardMedia.js","sources":["../../../../src/Card/CardMedia/CardMedia.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n ExtractNames,\n HvBaseProps,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./CardMedia.styles\";\n\nexport { staticClasses as cardMediaClasses };\n\nexport type HvCardMediaClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCardMediaProps extends HvBaseProps<HTMLImageElement> {\n /** The source for the image to use in the card. */\n src: string;\n /** The height of the image container. */\n height?: number;\n /** A text alternative to the image. */\n alt?: string;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCardMediaClasses;\n}\n\n/**\n * A subcomponent to be used within the `HvCard` component. This component is used to display an image within the card.\n */\nexport const HvCardMedia = forwardRef<HTMLImageElement, HvCardMediaProps>(\n (props, ref) => {\n const {\n src,\n alt = \"\",\n height = 160,\n className,\n classes: classesProp,\n children,\n ...others\n } = useDefaultProps(\"HvCardMedia\", props);\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <div className={cx(classes.root, className)}>\n <img\n ref={ref}\n height={height}\n className={classes.image}\n src={src}\n alt={alt}\n {...others}\n />\n </div>\n );\n },\n);\n"],"names":[],"mappings":";;;;;AA2BO,MAAM,cAAc;AAAA,EACzB,CAAC,OAAO,QAAQ;AACR,UAAA;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,GAAG;AAAA,IAAA,IACD,gBAAgB,eAAe,KAAK;AACxC,UAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAE9C,+BACG,OAAI,EAAA,WAAW,GAAG,QAAQ,MAAM,SAAS,GACxC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAER,EAAA,CAAA;AAAA,EAEJ;AACF;"}
|