= ({
{/* Extra Block */}
0 ? titleLines.length * titleLineHeight : 0;
const actualSubtitleHeight =
subtitleLines.length > 0 ? subtitleLines.length * subtitleLineHeight + ELEMENT_PADDING : 0; // Subtitle padding top 5px
- const actualExtraHeight = breakpoints.extra ? extraHeight + ELEMENT_PADDING : 0; // Extra padding top 5px
+ const actualExtraHeight = breakpoints.extra ? extraHeight + extraPaddingTop : 0;
const nonValueElementsHeight =
actualTitleHeight + actualSubtitleHeight + actualExtraHeight + progressBarHeight + PADDING * 2;
diff --git a/packages/charts/src/utils/themes/theme.ts b/packages/charts/src/utils/themes/theme.ts
index e537d9c7f9..4c5ae6c201 100644
--- a/packages/charts/src/utils/themes/theme.ts
+++ b/packages/charts/src/utils/themes/theme.ts
@@ -327,7 +327,7 @@ export interface MetricStyle {
titlesTextAlign: Extract;
extraTextAlign: Extract;
valueTextAlign: Extract;
- valuePosition: 'top' | 'bottom';
+ valuePosition: 'top' | 'middle' | 'bottom';
iconAlign: Extract;
titleWeight: MetricFontWeight;
diff --git a/storybook/stories/metric/1_basic.story.tsx b/storybook/stories/metric/1_basic.story.tsx
index 69b9c677ed..3e2b9ccdca 100644
--- a/storybook/stories/metric/1_basic.story.tsx
+++ b/storybook/stories/metric/1_basic.story.tsx
@@ -81,7 +81,7 @@ export const Example: ChartsStory = (_, { title: storyTitle, description }) => {
const titlesTextAlign = getTextAlignKnob('title text-align', 'left');
const valueTextAlign = getTextAlignKnob('value text-align', 'right');
const extraTextAlign = getTextAlignKnob('extra text-align', 'right');
- const valuePosition = select('value position', { Bottom: 'bottom', Top: 'top' }, 'bottom');
+ const valuePosition = select('value position', { Bottom: 'bottom', Middle: 'middle', Top: 'top' }, 'bottom');
const iconAlign = select(
'icon align',
{
diff --git a/storybook/stories/metric/2_grid.story.tsx b/storybook/stories/metric/2_grid.story.tsx
index aab23bb65e..4df0807ff3 100644
--- a/storybook/stories/metric/2_grid.story.tsx
+++ b/storybook/stories/metric/2_grid.story.tsx
@@ -63,6 +63,7 @@ export const Example: ChartsStory = (_, { title, description }) => {
'default',
);
const valueFontSize = number('value font size (px)', 40, { min: 0, step: 10 });
+ const valuePosition = select('value position', { Bottom: 'bottom', Middle: 'middle', Top: 'top' }, 'bottom');
const data: (MetricDatum | undefined)[] = useMemo(
() => [
@@ -227,6 +228,7 @@ export const Example: ChartsStory = (_, { title, description }) => {
metric: {
emptyBackground,
valueFontSize: valueFontSizeMode === 'custom' ? valueFontSize : valueFontSizeMode,
+ valuePosition,
},
}}
baseTheme={useBaseTheme()}
diff --git a/storybook/stories/metric/3_body.story.tsx b/storybook/stories/metric/3_body.story.tsx
index 24a9edb13e..b30ae6fa04 100644
--- a/storybook/stories/metric/3_body.story.tsx
+++ b/storybook/stories/metric/3_body.story.tsx
@@ -53,6 +53,7 @@ export const Example: ChartsStory = (_, { title: storyTitle, description }) => {
const valueIconType = customKnobs.eui.getIconTypeKnob('EUI value icon glyph name', 'sortUp');
const showBody = boolean('show body contents', true);
const showBodyArea = boolean('show full body area', false);
+ const valuePosition = select('value position', { Bottom: 'bottom', Middle: 'middle', Top: 'top' }, 'bottom');
const getIcon =
(type: string) =>
({ width, height, color }: { width: number; height: number; color: string }) => (
@@ -112,6 +113,11 @@ export const Example: ChartsStory = (_, { title: storyTitle, description }) => {
return (
{
if (isMetricElementEvent(d)) {
diff --git a/storybook/stories/metric/7_layout.story.tsx b/storybook/stories/metric/7_layout.story.tsx
index 83e592df95..5c3efce3ac 100644
--- a/storybook/stories/metric/7_layout.story.tsx
+++ b/storybook/stories/metric/7_layout.story.tsx
@@ -243,7 +243,7 @@ export const Example: ChartsStory = (_, { title: storyTitle, description }) => {
// Value (primary metric)
const valuePosition = select(
'Primary metric position',
- { Bottom: 'bottom', Top: 'top' },
+ { Bottom: 'bottom', Middle: 'middle', Top: 'top' },
'top',
textConfigurationAndPositionGroup,
);