@cloudscape-design/components-themeable 3.0.352 → 3.0.353

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.
Files changed (83) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/internal/components/cartesian-chart/styles.scss +38 -3
  3. package/lib/internal/scss/internal/components/chart-wrapper/styles.scss +17 -0
  4. package/lib/internal/scss/mixed-line-bar-chart/styles.scss +0 -1
  5. package/lib/internal/scss/pie-chart/styles.scss +22 -0
  6. package/lib/internal/template/area-chart/chart-container.d.ts +3 -1
  7. package/lib/internal/template/area-chart/chart-container.d.ts.map +1 -1
  8. package/lib/internal/template/area-chart/chart-container.js +3 -2
  9. package/lib/internal/template/area-chart/chart-container.js.map +1 -1
  10. package/lib/internal/template/area-chart/internal.d.ts +1 -1
  11. package/lib/internal/template/area-chart/internal.d.ts.map +1 -1
  12. package/lib/internal/template/area-chart/internal.js +3 -2
  13. package/lib/internal/template/area-chart/internal.js.map +1 -1
  14. package/lib/internal/template/area-chart/model/index.d.ts +1 -0
  15. package/lib/internal/template/area-chart/model/index.d.ts.map +1 -1
  16. package/lib/internal/template/area-chart/model/index.js.map +1 -1
  17. package/lib/internal/template/area-chart/model/use-chart-model.d.ts +2 -1
  18. package/lib/internal/template/area-chart/model/use-chart-model.d.ts.map +1 -1
  19. package/lib/internal/template/area-chart/model/use-chart-model.js +8 -2
  20. package/lib/internal/template/area-chart/model/use-chart-model.js.map +1 -1
  21. package/lib/internal/template/internal/analytics/index.d.ts.map +1 -1
  22. package/lib/internal/template/internal/analytics/index.js +1 -0
  23. package/lib/internal/template/internal/analytics/index.js.map +1 -1
  24. package/lib/internal/template/internal/analytics/interfaces.d.ts +13 -2
  25. package/lib/internal/template/internal/analytics/interfaces.d.ts.map +1 -1
  26. package/lib/internal/template/internal/analytics/interfaces.js.map +1 -1
  27. package/lib/internal/template/internal/components/cartesian-chart/chart-container.d.ts +2 -0
  28. package/lib/internal/template/internal/components/cartesian-chart/chart-container.d.ts.map +1 -1
  29. package/lib/internal/template/internal/components/cartesian-chart/chart-container.js +16 -3
  30. package/lib/internal/template/internal/components/cartesian-chart/chart-container.js.map +1 -1
  31. package/lib/internal/template/internal/components/cartesian-chart/interfaces.d.ts +5 -0
  32. package/lib/internal/template/internal/components/cartesian-chart/interfaces.d.ts.map +1 -1
  33. package/lib/internal/template/internal/components/cartesian-chart/interfaces.js.map +1 -1
  34. package/lib/internal/template/internal/components/cartesian-chart/styles.css.js +27 -23
  35. package/lib/internal/template/internal/components/cartesian-chart/styles.scoped.css +54 -27
  36. package/lib/internal/template/internal/components/cartesian-chart/styles.selectors.js +27 -23
  37. package/lib/internal/template/internal/components/chart-plot/index.d.ts +2 -2
  38. package/lib/internal/template/internal/components/chart-plot/index.d.ts.map +1 -1
  39. package/lib/internal/template/internal/components/chart-plot/index.js +3 -1
  40. package/lib/internal/template/internal/components/chart-plot/index.js.map +1 -1
  41. package/lib/internal/template/internal/components/chart-wrapper/index.d.ts +1 -0
  42. package/lib/internal/template/internal/components/chart-wrapper/index.d.ts.map +1 -1
  43. package/lib/internal/template/internal/components/chart-wrapper/index.js +21 -6
  44. package/lib/internal/template/internal/components/chart-wrapper/index.js.map +1 -1
  45. package/lib/internal/template/internal/components/chart-wrapper/styles.css.js +9 -6
  46. package/lib/internal/template/internal/components/chart-wrapper/styles.scoped.css +20 -6
  47. package/lib/internal/template/internal/components/chart-wrapper/styles.selectors.js +9 -6
  48. package/lib/internal/template/internal/environment.js +1 -1
  49. package/lib/internal/template/mixed-line-bar-chart/chart-container.d.ts +2 -1
  50. package/lib/internal/template/mixed-line-bar-chart/chart-container.d.ts.map +1 -1
  51. package/lib/internal/template/mixed-line-bar-chart/chart-container.js +8 -2
  52. package/lib/internal/template/mixed-line-bar-chart/chart-container.js.map +1 -1
  53. package/lib/internal/template/mixed-line-bar-chart/internal.d.ts +1 -1
  54. package/lib/internal/template/mixed-line-bar-chart/internal.d.ts.map +1 -1
  55. package/lib/internal/template/mixed-line-bar-chart/internal.js +3 -3
  56. package/lib/internal/template/mixed-line-bar-chart/internal.js.map +1 -1
  57. package/lib/internal/template/pie-chart/index.d.ts +1 -1
  58. package/lib/internal/template/pie-chart/index.d.ts.map +1 -1
  59. package/lib/internal/template/pie-chart/index.js +10 -3
  60. package/lib/internal/template/pie-chart/index.js.map +1 -1
  61. package/lib/internal/template/pie-chart/interfaces.d.ts +5 -0
  62. package/lib/internal/template/pie-chart/interfaces.d.ts.map +1 -1
  63. package/lib/internal/template/pie-chart/interfaces.js.map +1 -1
  64. package/lib/internal/template/pie-chart/labels.d.ts +3 -2
  65. package/lib/internal/template/pie-chart/labels.d.ts.map +1 -1
  66. package/lib/internal/template/pie-chart/labels.js +4 -4
  67. package/lib/internal/template/pie-chart/labels.js.map +1 -1
  68. package/lib/internal/template/pie-chart/pie-chart.d.ts +2 -1
  69. package/lib/internal/template/pie-chart/pie-chart.d.ts.map +1 -1
  70. package/lib/internal/template/pie-chart/pie-chart.js +18 -14
  71. package/lib/internal/template/pie-chart/pie-chart.js.map +1 -1
  72. package/lib/internal/template/pie-chart/segments.d.ts +3 -2
  73. package/lib/internal/template/pie-chart/segments.d.ts.map +1 -1
  74. package/lib/internal/template/pie-chart/segments.js +2 -6
  75. package/lib/internal/template/pie-chart/segments.js.map +1 -1
  76. package/lib/internal/template/pie-chart/styles.css.js +27 -23
  77. package/lib/internal/template/pie-chart/styles.scoped.css +58 -38
  78. package/lib/internal/template/pie-chart/styles.selectors.js +27 -23
  79. package/lib/internal/template/pie-chart/utils.d.ts +12 -2
  80. package/lib/internal/template/pie-chart/utils.d.ts.map +1 -1
  81. package/lib/internal/template/pie-chart/utils.js +37 -9
  82. package/lib/internal/template/pie-chart/utils.js.map +1 -1
  83. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"lib/default/","sources":["mixed-line-bar-chart/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport ChartStatusContainer, { getChartStatus } from '../internal/components/chart-status-container';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ChartDataTypes, MixedLineBarChartProps } from './interfaces';\nimport InternalChartLegend from './chart-legend';\nimport ChartContainer from './chart-container';\nimport styles from './styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { isDevelopment } from '../internal/is-development';\nimport createCategoryColorScale from '../internal/utils/create-category-color-scale';\nimport { ScaledPoint } from './make-scaled-series';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { SomeRequired } from '../internal/types';\nimport { chartLegendMap, isXThreshold, isYThreshold } from './utils';\nimport { nodeBelongs } from '../internal/utils/node-belongs';\nimport Filter from '../internal/components/chart-filter';\nimport { ChartWrapper } from '../internal/components/chart-wrapper';\n\ntype InternalMixedLineBarChartProps<T extends ChartDataTypes> = SomeRequired<\n MixedLineBarChartProps<T>,\n | 'series'\n | 'height'\n | 'xScaleType'\n | 'yScaleType'\n | 'stackedBars'\n | 'horizontalBars'\n | 'statusType'\n | 'detailPopoverSize'\n | 'emphasizeBaselineAxis'\n> &\n InternalBaseComponentProps;\n\nexport default function InternalMixedLineBarChart<T extends number | string | Date>({\n height,\n xScaleType,\n yScaleType,\n xDomain,\n yDomain,\n xTickFormatter,\n yTickFormatter,\n highlightedSeries: controlledHighlightedSeries,\n visibleSeries: controlledVisibleSeries,\n series: externalSeries,\n onFilterChange,\n onHighlightChange: controlledOnHighlightChange,\n i18nStrings,\n ariaLabel,\n ariaLabelledby,\n ariaDescription,\n xTitle,\n yTitle,\n stackedBars,\n horizontalBars,\n hideFilter,\n additionalFilters,\n hideLegend,\n legendTitle,\n statusType,\n detailPopoverSize,\n detailPopoverFooter,\n emphasizeBaselineAxis,\n empty,\n noMatch,\n errorText,\n loadingText,\n recoveryText,\n onRecoveryClick,\n __internalRootRef = null,\n ...props\n}: InternalMixedLineBarChartProps<T>) {\n const baseProps = getBaseProps(props);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const gotBarSeries = externalSeries.some(s => s.type === 'bar');\n const gotLineSeries = externalSeries.some(s => s.type === 'line');\n\n if (xScaleType !== 'categorical' && gotBarSeries) {\n warnOnce(\n 'MixedLineBarChart',\n `Bar series cannot be used with a ${xScaleType} scale. Use a categorical x axis instead.`\n );\n }\n\n if (horizontalBars && gotLineSeries) {\n warnOnce(\n 'MixedLineBarChart',\n `Property horizontalBars can only be used with charts that contain only bar or threshold series.`\n );\n }\n\n for (const s of externalSeries) {\n if (s.type === 'threshold' && s.x !== undefined && s.y !== undefined) {\n warnOnce('MixedLineBarChart', `Series of type \"threshold\" must contain either x or y property.`);\n }\n if (s.type === 'threshold' && s.x === undefined && s.y === undefined) {\n warnOnce('MixedLineBarChart', `Series of type \"threshold\" must contain either x or y property.`);\n }\n }\n }, [xScaleType, horizontalBars, externalSeries]);\n\n const series = useMemo(() => {\n // Generate series colors if not explicitly provided.\n // The thresholds use a dedicated colour scale.\n const colors = createCategoryColorScale(\n externalSeries,\n it => isYThreshold(it) || isXThreshold(it),\n it => it.color || null\n );\n\n return externalSeries.map((s, i) => ({ index: i, color: colors[i], series: s }));\n }, [externalSeries]);\n\n const [highlightedPoint, setHighlightedPoint] = useState<ScaledPoint<T> | null>(null);\n const [highlightedGroupIndex, setHighlightedGroupIndex] = useState<number | null>(null);\n const [highlightedSeries = null, setHighlightedSeries] = useControllable(\n controlledHighlightedSeries,\n controlledOnHighlightChange,\n null,\n {\n componentName: 'MixedLineBarChart',\n controlledProp: 'highlightedSeries',\n changeHandler: 'onHighlightChange',\n }\n );\n const [legendSeries, setLegendSeries] = useState<MixedLineBarChartProps.ChartSeries<T> | null>(highlightedSeries);\n useEffect(() => {\n setLegendSeries(controlledHighlightedSeries || null);\n }, [controlledHighlightedSeries]);\n\n const [externalVisibleSeries, setExternalVisibleSeries] = useControllable(\n controlledVisibleSeries,\n onFilterChange,\n externalSeries,\n {\n componentName: 'MixedLineBarChart',\n controlledProp: 'visibleSeries',\n changeHandler: 'onFilterChange',\n }\n );\n\n if (isDevelopment) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const previousSeries = usePrevious(externalSeries);\n\n const hasPrevious = !!(previousSeries && previousSeries.length);\n const hasCurrent = !!externalSeries.length;\n\n if (hasPrevious && hasCurrent && externalSeries !== previousSeries && !controlledVisibleSeries && !hideFilter) {\n warnOnce(\n 'MixedLineBarChart',\n 'The `series` value passed into the component changed. ' +\n 'This may cause problems with filtering - we recommend that you make the `series` value constant, ' +\n 'or provide a `visibleSeries` value that derives from the current `series` value.'\n );\n }\n }\n\n const visibleSeries = useMemo(\n () => series.filter(s => externalVisibleSeries?.indexOf(s.series) !== -1),\n [series, externalVisibleSeries]\n );\n\n const filterChange = (selectedSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>) => {\n setExternalVisibleSeries(selectedSeries);\n fireNonCancelableEvent(onFilterChange, {\n visibleSeries: selectedSeries,\n });\n };\n\n const onHighlightChange = (series: MixedLineBarChartProps.ChartSeries<T> | null) => {\n setHighlightedSeries(series);\n fireNonCancelableEvent(controlledOnHighlightChange, {\n highlightedSeries: series,\n });\n setLegendSeries(series);\n };\n\n const onBlur = (event: React.FocusEvent) => {\n if (event.relatedTarget && !nodeBelongs(containerRef.current, event.relatedTarget)) {\n highlightedSeries && onHighlightChange(highlightedSeries);\n setHighlightedPoint(null);\n setHighlightedGroupIndex(null);\n setLegendSeries(null);\n }\n };\n\n const { isEmpty, isNoMatch, showChart } = getChartStatus({\n externalData: externalSeries,\n visibleData: visibleSeries || [],\n statusType,\n });\n const showFilters = statusType === 'finished' && (!isEmpty || isNoMatch) && (additionalFilters || !hideFilter);\n const showLegend = !hideLegend && !isEmpty && statusType === 'finished';\n const reserveLegendSpace = !showChart && !hideLegend;\n const reserveFilterSpace = !showChart && !isNoMatch && (!hideFilter || additionalFilters);\n const mergedRef = useMergeRefs(containerRef, __internalRootRef);\n\n const filterItems = series.map(({ series, color }) => ({\n label: series.title,\n type: chartLegendMap[series.type],\n color,\n datum: series,\n }));\n\n return (\n <ChartWrapper\n ref={mergedRef}\n {...baseProps}\n className={clsx(baseProps.className, styles.root)}\n contentMinHeight={height}\n defaultFilter={\n showFilters && !hideFilter ? (\n <Filter\n series={filterItems}\n onChange={filterChange}\n selectedSeries={externalVisibleSeries || []}\n i18nStrings={i18nStrings}\n />\n ) : null\n }\n additionalFilters={showFilters ? additionalFilters : null}\n reserveFilterSpace={!!reserveFilterSpace}\n reserveLegendSpace={!!reserveLegendSpace}\n chartStatus={\n <ChartStatusContainer\n isEmpty={isEmpty}\n isNoMatch={isNoMatch}\n showChart={showChart}\n statusType={statusType}\n empty={empty}\n noMatch={noMatch}\n loadingText={loadingText}\n errorText={errorText}\n recoveryText={recoveryText}\n onRecoveryClick={onRecoveryClick}\n />\n }\n chart={\n showChart ? (\n <ChartContainer\n height={height}\n xScaleType={xScaleType}\n yScaleType={yScaleType}\n xDomain={xDomain}\n yDomain={yDomain}\n xTickFormatter={xTickFormatter ?? i18nStrings?.xTickFormatter}\n yTickFormatter={yTickFormatter ?? i18nStrings?.yTickFormatter}\n emphasizeBaselineAxis={emphasizeBaselineAxis}\n stackedBars={stackedBars}\n horizontalBars={horizontalBars}\n series={series}\n visibleSeries={visibleSeries}\n highlightedSeries={highlightedSeries}\n onHighlightChange={onHighlightChange}\n highlightedPoint={highlightedPoint}\n setHighlightedPoint={setHighlightedPoint}\n highlightedGroupIndex={highlightedGroupIndex}\n setHighlightedGroupIndex={setHighlightedGroupIndex}\n detailPopoverSize={detailPopoverSize}\n detailPopoverFooter={detailPopoverFooter}\n xTitle={xTitle}\n yTitle={yTitle}\n ariaLabel={ariaLabel}\n ariaLabelledby={ariaLabelledby}\n ariaDescription={ariaDescription}\n i18nStrings={i18nStrings}\n plotContainerRef={containerRef}\n />\n ) : null\n }\n legend={\n showLegend ? (\n <InternalChartLegend\n series={series}\n visibleSeries={externalVisibleSeries || []}\n highlightedSeries={legendSeries}\n onHighlightChange={onHighlightChange}\n legendTitle={legendTitle}\n ariaLabel={i18nStrings?.legendAriaLabel}\n plotContainerRef={containerRef}\n />\n ) : null\n }\n onBlur={onBlur}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"lib/default/","sources":["mixed-line-bar-chart/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport ChartStatusContainer, { getChartStatus } from '../internal/components/chart-status-container';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ChartDataTypes, MixedLineBarChartProps } from './interfaces';\nimport InternalChartLegend from './chart-legend';\nimport ChartContainer from './chart-container';\nimport styles from './styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { isDevelopment } from '../internal/is-development';\nimport createCategoryColorScale from '../internal/utils/create-category-color-scale';\nimport { ScaledPoint } from './make-scaled-series';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { SomeRequired } from '../internal/types';\nimport { chartLegendMap, isXThreshold, isYThreshold } from './utils';\nimport { nodeBelongs } from '../internal/utils/node-belongs';\nimport Filter from '../internal/components/chart-filter';\nimport { ChartWrapper } from '../internal/components/chart-wrapper';\n\ntype InternalMixedLineBarChartProps<T extends ChartDataTypes> = SomeRequired<\n MixedLineBarChartProps<T>,\n | 'series'\n | 'height'\n | 'xScaleType'\n | 'yScaleType'\n | 'stackedBars'\n | 'horizontalBars'\n | 'statusType'\n | 'detailPopoverSize'\n | 'emphasizeBaselineAxis'\n> &\n InternalBaseComponentProps;\n\nexport default function InternalMixedLineBarChart<T extends number | string | Date>({\n fitHeight,\n height,\n xScaleType,\n yScaleType,\n xDomain,\n yDomain,\n xTickFormatter,\n yTickFormatter,\n highlightedSeries: controlledHighlightedSeries,\n visibleSeries: controlledVisibleSeries,\n series: externalSeries,\n onFilterChange,\n onHighlightChange: controlledOnHighlightChange,\n i18nStrings,\n ariaLabel,\n ariaLabelledby,\n ariaDescription,\n xTitle,\n yTitle,\n stackedBars,\n horizontalBars,\n hideFilter,\n additionalFilters,\n hideLegend,\n legendTitle,\n statusType,\n detailPopoverSize,\n detailPopoverFooter,\n emphasizeBaselineAxis,\n empty,\n noMatch,\n errorText,\n loadingText,\n recoveryText,\n onRecoveryClick,\n __internalRootRef = null,\n ...props\n}: InternalMixedLineBarChartProps<T>) {\n const baseProps = getBaseProps(props);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const gotBarSeries = externalSeries.some(s => s.type === 'bar');\n const gotLineSeries = externalSeries.some(s => s.type === 'line');\n\n if (xScaleType !== 'categorical' && gotBarSeries) {\n warnOnce(\n 'MixedLineBarChart',\n `Bar series cannot be used with a ${xScaleType} scale. Use a categorical x axis instead.`\n );\n }\n\n if (horizontalBars && gotLineSeries) {\n warnOnce(\n 'MixedLineBarChart',\n `Property horizontalBars can only be used with charts that contain only bar or threshold series.`\n );\n }\n\n for (const s of externalSeries) {\n if (s.type === 'threshold' && s.x !== undefined && s.y !== undefined) {\n warnOnce('MixedLineBarChart', `Series of type \"threshold\" must contain either x or y property.`);\n }\n if (s.type === 'threshold' && s.x === undefined && s.y === undefined) {\n warnOnce('MixedLineBarChart', `Series of type \"threshold\" must contain either x or y property.`);\n }\n }\n }, [xScaleType, horizontalBars, externalSeries]);\n\n const series = useMemo(() => {\n // Generate series colors if not explicitly provided.\n // The thresholds use a dedicated colour scale.\n const colors = createCategoryColorScale(\n externalSeries,\n it => isYThreshold(it) || isXThreshold(it),\n it => it.color || null\n );\n\n return externalSeries.map((s, i) => ({ index: i, color: colors[i], series: s }));\n }, [externalSeries]);\n\n const [highlightedPoint, setHighlightedPoint] = useState<ScaledPoint<T> | null>(null);\n const [highlightedGroupIndex, setHighlightedGroupIndex] = useState<number | null>(null);\n const [highlightedSeries = null, setHighlightedSeries] = useControllable(\n controlledHighlightedSeries,\n controlledOnHighlightChange,\n null,\n {\n componentName: 'MixedLineBarChart',\n controlledProp: 'highlightedSeries',\n changeHandler: 'onHighlightChange',\n }\n );\n const [legendSeries, setLegendSeries] = useState<MixedLineBarChartProps.ChartSeries<T> | null>(highlightedSeries);\n useEffect(() => {\n setLegendSeries(controlledHighlightedSeries || null);\n }, [controlledHighlightedSeries]);\n\n const [externalVisibleSeries, setExternalVisibleSeries] = useControllable(\n controlledVisibleSeries,\n onFilterChange,\n externalSeries,\n {\n componentName: 'MixedLineBarChart',\n controlledProp: 'visibleSeries',\n changeHandler: 'onFilterChange',\n }\n );\n\n if (isDevelopment) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const previousSeries = usePrevious(externalSeries);\n\n const hasPrevious = !!(previousSeries && previousSeries.length);\n const hasCurrent = !!externalSeries.length;\n\n if (hasPrevious && hasCurrent && externalSeries !== previousSeries && !controlledVisibleSeries && !hideFilter) {\n warnOnce(\n 'MixedLineBarChart',\n 'The `series` value passed into the component changed. ' +\n 'This may cause problems with filtering - we recommend that you make the `series` value constant, ' +\n 'or provide a `visibleSeries` value that derives from the current `series` value.'\n );\n }\n }\n\n const visibleSeries = useMemo(\n () => series.filter(s => externalVisibleSeries?.indexOf(s.series) !== -1),\n [series, externalVisibleSeries]\n );\n\n const filterChange = (selectedSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>) => {\n setExternalVisibleSeries(selectedSeries);\n fireNonCancelableEvent(onFilterChange, {\n visibleSeries: selectedSeries,\n });\n };\n\n const onHighlightChange = (series: MixedLineBarChartProps.ChartSeries<T> | null) => {\n setHighlightedSeries(series);\n fireNonCancelableEvent(controlledOnHighlightChange, {\n highlightedSeries: series,\n });\n setLegendSeries(series);\n };\n\n const onBlur = (event: React.FocusEvent) => {\n if (event.relatedTarget && !nodeBelongs(containerRef.current, event.relatedTarget)) {\n highlightedSeries && onHighlightChange(highlightedSeries);\n setHighlightedPoint(null);\n setHighlightedGroupIndex(null);\n setLegendSeries(null);\n }\n };\n\n const { isEmpty, isNoMatch, showChart } = getChartStatus({\n externalData: externalSeries,\n visibleData: visibleSeries || [],\n statusType,\n });\n const showFilters = statusType === 'finished' && (!isEmpty || isNoMatch) && (additionalFilters || !hideFilter);\n const showLegend = !hideLegend && !isEmpty && statusType === 'finished';\n const reserveLegendSpace = !showChart && !hideLegend;\n const reserveFilterSpace = !showChart && !isNoMatch && (!hideFilter || additionalFilters);\n const mergedRef = useMergeRefs(containerRef, __internalRootRef);\n\n const filterItems = series.map(({ series, color }) => ({\n label: series.title,\n type: chartLegendMap[series.type],\n color,\n datum: series,\n }));\n\n return (\n <ChartWrapper\n ref={mergedRef}\n {...baseProps}\n className={clsx(baseProps.className, styles.root)}\n fitHeight={!!fitHeight}\n contentMinHeight={height}\n defaultFilter={\n showFilters && !hideFilter ? (\n <Filter\n series={filterItems}\n onChange={filterChange}\n selectedSeries={externalVisibleSeries || []}\n i18nStrings={i18nStrings}\n />\n ) : null\n }\n additionalFilters={showFilters ? additionalFilters : null}\n reserveFilterSpace={!!reserveFilterSpace}\n reserveLegendSpace={!!reserveLegendSpace}\n chartStatus={\n <ChartStatusContainer\n isEmpty={isEmpty}\n isNoMatch={isNoMatch}\n showChart={showChart}\n statusType={statusType}\n empty={empty}\n noMatch={noMatch}\n loadingText={loadingText}\n errorText={errorText}\n recoveryText={recoveryText}\n onRecoveryClick={onRecoveryClick}\n />\n }\n chart={\n showChart ? (\n <ChartContainer\n fitHeight={fitHeight}\n height={height}\n xScaleType={xScaleType}\n yScaleType={yScaleType}\n xDomain={xDomain}\n yDomain={yDomain}\n xTickFormatter={xTickFormatter ?? i18nStrings?.xTickFormatter}\n yTickFormatter={yTickFormatter ?? i18nStrings?.yTickFormatter}\n emphasizeBaselineAxis={emphasizeBaselineAxis}\n stackedBars={stackedBars}\n horizontalBars={horizontalBars}\n series={series}\n visibleSeries={visibleSeries}\n highlightedSeries={highlightedSeries}\n onHighlightChange={onHighlightChange}\n highlightedPoint={highlightedPoint}\n setHighlightedPoint={setHighlightedPoint}\n highlightedGroupIndex={highlightedGroupIndex}\n setHighlightedGroupIndex={setHighlightedGroupIndex}\n detailPopoverSize={detailPopoverSize}\n detailPopoverFooter={detailPopoverFooter}\n xTitle={xTitle}\n yTitle={yTitle}\n ariaLabel={ariaLabel}\n ariaLabelledby={ariaLabelledby}\n ariaDescription={ariaDescription}\n i18nStrings={i18nStrings}\n plotContainerRef={containerRef}\n />\n ) : null\n }\n legend={\n showLegend ? (\n <InternalChartLegend\n series={series}\n visibleSeries={externalVisibleSeries || []}\n highlightedSeries={legendSeries}\n onHighlightChange={onHighlightChange}\n legendTitle={legendTitle}\n ariaLabel={i18nStrings?.legendAriaLabel}\n plotContainerRef={containerRef}\n />\n ) : null\n }\n onBlur={onBlur}\n />\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { PieChartProps } from './interfaces';
3
3
  export { PieChartProps };
4
- declare const PieChart: <T extends PieChartProps.Datum = PieChartProps.Datum>({ variant, size, hideTitles, hideDescriptions, hideLegend, hideFilter, statusType, data: externalData, i18nStrings, highlightedSegment: controlledHighlightedSegment, visibleSegments: controlledVisibleSegments, onHighlightChange: controlledOnHighlightChange, onFilterChange, additionalFilters, legendTitle, detailPopoverSize, ...props }: PieChartProps<T>) => JSX.Element;
4
+ declare const PieChart: <T extends PieChartProps.Datum = PieChartProps.Datum>({ fitHeight, variant, size, hideTitles, hideDescriptions, hideLegend, hideFilter, statusType, data: externalData, i18nStrings, highlightedSegment: controlledHighlightedSegment, visibleSegments: controlledVisibleSegments, onHighlightChange: controlledOnHighlightChange, onFilterChange, additionalFilters, legendTitle, detailPopoverSize, ...props }: PieChartProps<T>) => JSX.Element;
5
5
  export default PieChart;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/index.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAW7C,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,QAAA,MAAM,QAAQ,yaAyMb,CAAC;AAGF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/index.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAa7C,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,QAAA,MAAM,QAAQ,obAmNb,CAAC;AAGF,eAAe,QAAQ,CAAC"}
@@ -19,8 +19,10 @@ import useContainerWidth from '../internal/utils/use-container-width';
19
19
  import { nodeBelongs } from '../internal/utils/node-belongs';
20
20
  import { ChartWrapper } from '../internal/components/chart-wrapper';
21
21
  import ChartStatusContainer, { getChartStatus } from '../internal/components/chart-status-container';
22
+ import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
23
+ import { getDimensionsBySize } from './utils';
22
24
  const PieChart = function PieChart(_a) {
23
- var { variant = 'pie', size = 'medium', hideTitles = false, hideDescriptions = false, hideLegend = false, hideFilter = false, statusType = 'finished', data: externalData = [], i18nStrings = {}, highlightedSegment: controlledHighlightedSegment, visibleSegments: controlledVisibleSegments, onHighlightChange: controlledOnHighlightChange, onFilterChange, additionalFilters, legendTitle, detailPopoverSize = 'medium' } = _a, props = __rest(_a, ["variant", "size", "hideTitles", "hideDescriptions", "hideLegend", "hideFilter", "statusType", "data", "i18nStrings", "highlightedSegment", "visibleSegments", "onHighlightChange", "onFilterChange", "additionalFilters", "legendTitle", "detailPopoverSize"]);
25
+ var { fitHeight, variant = 'pie', size = 'medium', hideTitles = false, hideDescriptions = false, hideLegend = false, hideFilter = false, statusType = 'finished', data: externalData = [], i18nStrings = {}, highlightedSegment: controlledHighlightedSegment, visibleSegments: controlledVisibleSegments, onHighlightChange: controlledOnHighlightChange, onFilterChange, additionalFilters, legendTitle, detailPopoverSize = 'medium' } = _a, props = __rest(_a, ["fitHeight", "variant", "size", "hideTitles", "hideDescriptions", "hideLegend", "hideFilter", "statusType", "data", "i18nStrings", "highlightedSegment", "visibleSegments", "onHighlightChange", "onFilterChange", "additionalFilters", "legendTitle", "detailPopoverSize"]);
24
26
  const { __internalRootRef = null } = useBaseComponent('PieChart');
25
27
  const baseProps = getBaseProps(props);
26
28
  const containerRef = useRef(null);
@@ -92,9 +94,14 @@ const PieChart = function PieChart(_a) {
92
94
  const reserveLegendSpace = !showChart && !hideLegend;
93
95
  const reserveFilterSpace = statusType !== 'finished' && !isNoMatch && (!hideFilter || additionalFilters);
94
96
  const hasLabels = !(hideTitles && hideDescriptions);
95
- return (React.createElement(ChartWrapper, Object.assign({ ref: mergedRef }, baseProps, { className: clsx(baseProps.className, styles.root), contentClassName: clsx(styles.content, styles[`content--${size}`], {
97
+ const isRefresh = useVisualRefresh();
98
+ const defaultDimensions = getDimensionsBySize({ size, hasLabels, visualRefresh: isRefresh });
99
+ const radius = defaultDimensions.outerRadius;
100
+ const height = 2 * (radius + defaultDimensions.padding + (hasLabels ? defaultDimensions.paddingLabels : 0));
101
+ return (React.createElement(ChartWrapper, Object.assign({ ref: mergedRef, fitHeight: !!fitHeight }, baseProps, { className: clsx(baseProps.className, styles.root), contentClassName: clsx(styles.content, styles[`content--${defaultDimensions.size}`], {
96
102
  [styles['content--without-labels']]: !hasLabels,
97
- }), defaultFilter: showFilters && !hideFilter ? (React.createElement(Filter, { series: filterItems, onChange: filterChange, selectedSeries: visibleSegments, i18nStrings: i18nStrings })) : null, additionalFilters: showFilters ? additionalFilters : null, reserveFilterSpace: !!reserveFilterSpace, reserveLegendSpace: !!reserveLegendSpace, chartStatus: React.createElement(ChartStatusContainer, { isEmpty: isEmpty, isNoMatch: isNoMatch, showChart: showChart, statusType: statusType, empty: props.empty, noMatch: props.noMatch, loadingText: props.loadingText, errorText: props.errorText, recoveryText: props.recoveryText, onRecoveryClick: props.onRecoveryClick }), chart: showChart ? (React.createElement(InternalPieChart, Object.assign({}, props, { variant: variant, size: size, data: externalData, width: containerWidth, hideTitles: hideTitles, hideDescriptions: hideDescriptions, i18nStrings: i18nStrings, onHighlightChange: onHighlightChange, highlightedSegment: highlightedSegment, legendSegment: legendSegment, pinnedSegment: pinnedSegment, setPinnedSegment: setPinnedSegment, detailPopoverSize: detailPopoverSize, pieData: pieData, dataSum: dataSum }))) : null, legend: !hideLegend &&
103
+ [styles['content--fit-height']]: fitHeight,
104
+ }), defaultFilter: showFilters && !hideFilter ? (React.createElement(Filter, { series: filterItems, onChange: filterChange, selectedSeries: visibleSegments, i18nStrings: i18nStrings })) : null, additionalFilters: showFilters ? additionalFilters : null, reserveFilterSpace: !!reserveFilterSpace, reserveLegendSpace: !!reserveLegendSpace, chartStatus: React.createElement(ChartStatusContainer, { isEmpty: isEmpty, isNoMatch: isNoMatch, showChart: showChart, statusType: statusType, empty: props.empty, noMatch: props.noMatch, loadingText: props.loadingText, errorText: props.errorText, recoveryText: props.recoveryText, onRecoveryClick: props.onRecoveryClick }), chart: showChart ? (React.createElement(InternalPieChart, Object.assign({}, props, { variant: variant, size: size, height: height, fitHeight: fitHeight, data: externalData, width: containerWidth, hideTitles: hideTitles, hideDescriptions: hideDescriptions, i18nStrings: i18nStrings, onHighlightChange: onHighlightChange, highlightedSegment: highlightedSegment, legendSegment: legendSegment, pinnedSegment: pinnedSegment, setPinnedSegment: setPinnedSegment, detailPopoverSize: detailPopoverSize, pieData: pieData, dataSum: dataSum }))) : null, legend: !hideLegend &&
98
105
  !hasNoData &&
99
106
  statusType === 'finished' && (React.createElement(Legend, { series: legendItems, highlightedSeries: legendSegment, legendTitle: legendTitle, ariaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.legendAriaLabel, onHighlightChange: onHighlightChange, plotContainerRef: containerRef })), onBlur: onBlur })));
100
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"lib/default/","sources":["pie-chart/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport Legend, { ChartLegendProps } from '../internal/components/chart-legend';\nimport Filter, { ChartFilterProps } from '../internal/components/chart-filter';\nimport { pie } from 'd3-shape';\n\nimport InternalPieChart, { InternalChartDatum } from './pie-chart';\nimport { PieChartProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport createCategoryColorScale from '../internal/utils/create-category-color-scale';\nimport useContainerWidth from '../internal/utils/use-container-width';\nimport { nodeBelongs } from '../internal/utils/node-belongs';\nimport { ChartWrapper } from '../internal/components/chart-wrapper';\nimport ChartStatusContainer, { getChartStatus } from '../internal/components/chart-status-container';\n\nexport { PieChartProps };\n\nconst PieChart = function PieChart<T extends PieChartProps.Datum = PieChartProps.Datum>({\n variant = 'pie',\n size = 'medium',\n hideTitles = false,\n hideDescriptions = false,\n hideLegend = false,\n hideFilter = false,\n statusType = 'finished',\n data: externalData = [],\n i18nStrings = {},\n highlightedSegment: controlledHighlightedSegment,\n visibleSegments: controlledVisibleSegments,\n onHighlightChange: controlledOnHighlightChange,\n onFilterChange,\n additionalFilters,\n legendTitle,\n detailPopoverSize = 'medium',\n ...props\n}: PieChartProps<T>) {\n const { __internalRootRef = null } = useBaseComponent('PieChart');\n const baseProps = getBaseProps(props);\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, measureRef] = useContainerWidth();\n\n const data: ReadonlyArray<InternalChartDatum<T>> = useMemo(() => {\n const colors = createCategoryColorScale(externalData, undefined, it => it.color || null);\n\n return externalData.map((datum, i) => ({\n index: i,\n color: colors[i],\n datum,\n }));\n }, [externalData]);\n\n const [highlightedSegment = null, setHighlightedSegment] = useControllable(\n controlledHighlightedSegment,\n controlledOnHighlightChange,\n null,\n {\n componentName: 'PieChart',\n controlledProp: 'highlightedSegment',\n changeHandler: 'onHighlightChange',\n }\n );\n const [legendSegment, setLegendSegment] = useState<null | T>(highlightedSegment);\n useEffect(() => {\n setLegendSegment(controlledHighlightedSegment || null);\n }, [controlledHighlightedSegment]);\n\n const [visibleSegments, setVisibleSegments] = useControllable(\n controlledVisibleSegments,\n onFilterChange,\n externalData,\n {\n componentName: 'PieChart',\n controlledProp: 'visibleSegments',\n changeHandler: 'onFilterChange',\n }\n );\n\n const [pinnedSegment, setPinnedSegment] = useState<T | null>(null);\n\n const visibleData = useMemo(\n () => data.filter(d => visibleSegments?.indexOf(d.datum) !== -1),\n [data, visibleSegments]\n );\n\n const filterItems: ChartFilterProps<T>['series'] = data?.map(data => ({\n label: data.datum.title,\n color: data.color,\n type: 'rectangle',\n datum: data.datum,\n }));\n\n const legendItems: ChartLegendProps<T>['series'] = filterItems.filter(d => visibleSegments?.indexOf(d.datum) !== -1);\n\n const filterChange = useCallback(\n (selectedSeries: ReadonlyArray<T>) => {\n setVisibleSegments(selectedSeries);\n fireNonCancelableEvent(onFilterChange, {\n visibleSegments: selectedSeries,\n });\n },\n [setVisibleSegments, onFilterChange]\n );\n\n const onHighlightChange = useCallback(\n (segment: T | null) => {\n setLegendSegment(segment);\n setHighlightedSegment(segment);\n fireNonCancelableEvent(controlledOnHighlightChange, { highlightedSegment: segment });\n },\n [controlledOnHighlightChange, setHighlightedSegment]\n );\n\n const onBlur = (event: React.FocusEvent) => {\n if (event.relatedTarget && !nodeBelongs(containerRef.current, event.relatedTarget)) {\n highlightedSegment && onHighlightChange(null);\n setLegendSegment(null);\n }\n };\n\n const mergedRef = useMergeRefs(containerRef, measureRef, __internalRootRef);\n\n const { pieData, dataSum } = useMemo(() => {\n const dataSum = visibleData.reduce((sum, d) => sum + d.datum.value, 0);\n\n const pieFactory = pie<InternalChartDatum<T>>()\n // Minimum 1% segment size\n .value(d => (d.datum.value < dataSum / 100 ? dataSum / 100 : d.datum.value))\n .sort(null);\n\n // Filter out segments with value of zero or below\n const pieData = pieFactory(visibleData.filter(d => d.datum.value > 0));\n\n return { pieData, dataSum };\n }, [visibleData]);\n\n const hasNoData = !externalData || externalData.length === 0;\n const { isEmpty, showChart } = getChartStatus({ externalData: data, visibleData: pieData, statusType });\n // Pie charts have a special condition for empty/noMatch due to how zero-value segments are handled.\n const isNoMatch = isEmpty && visibleData.length !== data.length;\n const showFilters = statusType === 'finished' && !hasNoData && (additionalFilters || !hideFilter);\n const reserveLegendSpace = !showChart && !hideLegend;\n const reserveFilterSpace = statusType !== 'finished' && !isNoMatch && (!hideFilter || additionalFilters);\n const hasLabels = !(hideTitles && hideDescriptions);\n\n return (\n <ChartWrapper\n ref={mergedRef}\n {...baseProps}\n className={clsx(baseProps.className, styles.root)}\n contentClassName={clsx(styles.content, styles[`content--${size}`], {\n [styles['content--without-labels']]: !hasLabels,\n })}\n defaultFilter={\n showFilters && !hideFilter ? (\n <Filter\n series={filterItems}\n onChange={filterChange}\n selectedSeries={visibleSegments}\n i18nStrings={i18nStrings}\n />\n ) : null\n }\n additionalFilters={showFilters ? additionalFilters : null}\n reserveFilterSpace={!!reserveFilterSpace}\n reserveLegendSpace={!!reserveLegendSpace}\n chartStatus={\n <ChartStatusContainer\n isEmpty={isEmpty}\n isNoMatch={isNoMatch}\n showChart={showChart}\n statusType={statusType}\n empty={props.empty}\n noMatch={props.noMatch}\n loadingText={props.loadingText}\n errorText={props.errorText}\n recoveryText={props.recoveryText}\n onRecoveryClick={props.onRecoveryClick}\n />\n }\n chart={\n showChart ? (\n <InternalPieChart\n {...props}\n variant={variant}\n size={size}\n data={externalData}\n width={containerWidth}\n hideTitles={hideTitles}\n hideDescriptions={hideDescriptions}\n i18nStrings={i18nStrings}\n onHighlightChange={onHighlightChange}\n highlightedSegment={highlightedSegment}\n legendSegment={legendSegment}\n pinnedSegment={pinnedSegment}\n setPinnedSegment={setPinnedSegment}\n detailPopoverSize={detailPopoverSize}\n pieData={pieData}\n dataSum={dataSum}\n />\n ) : null\n }\n legend={\n !hideLegend &&\n !hasNoData &&\n statusType === 'finished' && (\n <Legend<T>\n series={legendItems}\n highlightedSeries={legendSegment}\n legendTitle={legendTitle}\n ariaLabel={i18nStrings?.legendAriaLabel}\n onHighlightChange={onHighlightChange}\n plotContainerRef={containerRef}\n />\n )\n }\n onBlur={onBlur}\n />\n );\n};\n\napplyDisplayName(PieChart, 'PieChart');\nexport default PieChart;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"lib/default/","sources":["pie-chart/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport Legend, { ChartLegendProps } from '../internal/components/chart-legend';\nimport Filter, { ChartFilterProps } from '../internal/components/chart-filter';\nimport { pie } from 'd3-shape';\n\nimport InternalPieChart, { InternalChartDatum } from './pie-chart';\nimport { PieChartProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport createCategoryColorScale from '../internal/utils/create-category-color-scale';\nimport useContainerWidth from '../internal/utils/use-container-width';\nimport { nodeBelongs } from '../internal/utils/node-belongs';\nimport { ChartWrapper } from '../internal/components/chart-wrapper';\nimport ChartStatusContainer, { getChartStatus } from '../internal/components/chart-status-container';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { getDimensionsBySize } from './utils';\n\nexport { PieChartProps };\n\nconst PieChart = function PieChart<T extends PieChartProps.Datum = PieChartProps.Datum>({\n fitHeight,\n variant = 'pie',\n size = 'medium',\n hideTitles = false,\n hideDescriptions = false,\n hideLegend = false,\n hideFilter = false,\n statusType = 'finished',\n data: externalData = [],\n i18nStrings = {},\n highlightedSegment: controlledHighlightedSegment,\n visibleSegments: controlledVisibleSegments,\n onHighlightChange: controlledOnHighlightChange,\n onFilterChange,\n additionalFilters,\n legendTitle,\n detailPopoverSize = 'medium',\n ...props\n}: PieChartProps<T>) {\n const { __internalRootRef = null } = useBaseComponent('PieChart');\n const baseProps = getBaseProps(props);\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, measureRef] = useContainerWidth();\n\n const data: ReadonlyArray<InternalChartDatum<T>> = useMemo(() => {\n const colors = createCategoryColorScale(externalData, undefined, it => it.color || null);\n\n return externalData.map((datum, i) => ({\n index: i,\n color: colors[i],\n datum,\n }));\n }, [externalData]);\n\n const [highlightedSegment = null, setHighlightedSegment] = useControllable(\n controlledHighlightedSegment,\n controlledOnHighlightChange,\n null,\n {\n componentName: 'PieChart',\n controlledProp: 'highlightedSegment',\n changeHandler: 'onHighlightChange',\n }\n );\n const [legendSegment, setLegendSegment] = useState<null | T>(highlightedSegment);\n useEffect(() => {\n setLegendSegment(controlledHighlightedSegment || null);\n }, [controlledHighlightedSegment]);\n\n const [visibleSegments, setVisibleSegments] = useControllable(\n controlledVisibleSegments,\n onFilterChange,\n externalData,\n {\n componentName: 'PieChart',\n controlledProp: 'visibleSegments',\n changeHandler: 'onFilterChange',\n }\n );\n\n const [pinnedSegment, setPinnedSegment] = useState<T | null>(null);\n\n const visibleData = useMemo(\n () => data.filter(d => visibleSegments?.indexOf(d.datum) !== -1),\n [data, visibleSegments]\n );\n\n const filterItems: ChartFilterProps<T>['series'] = data?.map(data => ({\n label: data.datum.title,\n color: data.color,\n type: 'rectangle',\n datum: data.datum,\n }));\n\n const legendItems: ChartLegendProps<T>['series'] = filterItems.filter(d => visibleSegments?.indexOf(d.datum) !== -1);\n\n const filterChange = useCallback(\n (selectedSeries: ReadonlyArray<T>) => {\n setVisibleSegments(selectedSeries);\n fireNonCancelableEvent(onFilterChange, {\n visibleSegments: selectedSeries,\n });\n },\n [setVisibleSegments, onFilterChange]\n );\n\n const onHighlightChange = useCallback(\n (segment: T | null) => {\n setLegendSegment(segment);\n setHighlightedSegment(segment);\n fireNonCancelableEvent(controlledOnHighlightChange, { highlightedSegment: segment });\n },\n [controlledOnHighlightChange, setHighlightedSegment]\n );\n\n const onBlur = (event: React.FocusEvent) => {\n if (event.relatedTarget && !nodeBelongs(containerRef.current, event.relatedTarget)) {\n highlightedSegment && onHighlightChange(null);\n setLegendSegment(null);\n }\n };\n\n const mergedRef = useMergeRefs(containerRef, measureRef, __internalRootRef);\n\n const { pieData, dataSum } = useMemo(() => {\n const dataSum = visibleData.reduce((sum, d) => sum + d.datum.value, 0);\n\n const pieFactory = pie<InternalChartDatum<T>>()\n // Minimum 1% segment size\n .value(d => (d.datum.value < dataSum / 100 ? dataSum / 100 : d.datum.value))\n .sort(null);\n\n // Filter out segments with value of zero or below\n const pieData = pieFactory(visibleData.filter(d => d.datum.value > 0));\n\n return { pieData, dataSum };\n }, [visibleData]);\n\n const hasNoData = !externalData || externalData.length === 0;\n const { isEmpty, showChart } = getChartStatus({ externalData: data, visibleData: pieData, statusType });\n // Pie charts have a special condition for empty/noMatch due to how zero-value segments are handled.\n const isNoMatch = isEmpty && visibleData.length !== data.length;\n const showFilters = statusType === 'finished' && !hasNoData && (additionalFilters || !hideFilter);\n const reserveLegendSpace = !showChart && !hideLegend;\n const reserveFilterSpace = statusType !== 'finished' && !isNoMatch && (!hideFilter || additionalFilters);\n const hasLabels = !(hideTitles && hideDescriptions);\n\n const isRefresh = useVisualRefresh();\n const defaultDimensions = getDimensionsBySize({ size, hasLabels, visualRefresh: isRefresh });\n const radius = defaultDimensions.outerRadius;\n const height = 2 * (radius + defaultDimensions.padding + (hasLabels ? defaultDimensions.paddingLabels : 0));\n\n return (\n <ChartWrapper\n ref={mergedRef}\n fitHeight={!!fitHeight}\n {...baseProps}\n className={clsx(baseProps.className, styles.root)}\n contentClassName={clsx(styles.content, styles[`content--${defaultDimensions.size}`], {\n [styles['content--without-labels']]: !hasLabels,\n [styles['content--fit-height']]: fitHeight,\n })}\n defaultFilter={\n showFilters && !hideFilter ? (\n <Filter\n series={filterItems}\n onChange={filterChange}\n selectedSeries={visibleSegments}\n i18nStrings={i18nStrings}\n />\n ) : null\n }\n additionalFilters={showFilters ? additionalFilters : null}\n reserveFilterSpace={!!reserveFilterSpace}\n reserveLegendSpace={!!reserveLegendSpace}\n chartStatus={\n <ChartStatusContainer\n isEmpty={isEmpty}\n isNoMatch={isNoMatch}\n showChart={showChart}\n statusType={statusType}\n empty={props.empty}\n noMatch={props.noMatch}\n loadingText={props.loadingText}\n errorText={props.errorText}\n recoveryText={props.recoveryText}\n onRecoveryClick={props.onRecoveryClick}\n />\n }\n chart={\n showChart ? (\n <InternalPieChart\n {...props}\n variant={variant}\n size={size}\n height={height}\n fitHeight={fitHeight}\n data={externalData}\n width={containerWidth}\n hideTitles={hideTitles}\n hideDescriptions={hideDescriptions}\n i18nStrings={i18nStrings}\n onHighlightChange={onHighlightChange}\n highlightedSegment={highlightedSegment}\n legendSegment={legendSegment}\n pinnedSegment={pinnedSegment}\n setPinnedSegment={setPinnedSegment}\n detailPopoverSize={detailPopoverSize}\n pieData={pieData}\n dataSum={dataSum}\n />\n ) : null\n }\n legend={\n !hideLegend &&\n !hasNoData &&\n statusType === 'finished' && (\n <Legend<T>\n series={legendItems}\n highlightedSeries={legendSegment}\n legendTitle={legendTitle}\n ariaLabel={i18nStrings?.legendAriaLabel}\n onHighlightChange={onHighlightChange}\n plotContainerRef={containerRef}\n />\n )\n }\n onBlur={onBlur}\n />\n );\n};\n\napplyDisplayName(PieChart, 'PieChart');\nexport default PieChart;\n"]}
@@ -30,6 +30,7 @@ export interface PieChartProps<T extends PieChartProps.Datum = PieChartProps.Dat
30
30
  data: ReadonlyArray<T>;
31
31
  /**
32
32
  * Specifies the size of the pie or donut chart.
33
+ * When used with `fitHeight`, this property defines the minimum size of the chart area.
33
34
  */
34
35
  size?: 'small' | 'medium' | 'large';
35
36
  /**
@@ -181,6 +182,10 @@ export interface PieChartProps<T extends PieChartProps.Datum = PieChartProps.Dat
181
182
  * @i18n
182
183
  */
183
184
  i18nStrings?: PieChartProps.I18nStrings;
185
+ /**
186
+ * Enable this property to make the chart fit into the available height of the parent container.
187
+ */
188
+ fitHeight?: boolean;
184
189
  }
185
190
  export declare namespace PieChartProps {
186
191
  interface Datum {
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"lib/default/","sources":["pie-chart/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { PopoverProps } from '../popover/interfaces';\n\nexport interface SeriesInfo {\n label: string;\n color: string;\n index: number;\n markerType: 'line' | 'rectangle';\n}\n\nexport interface ChartDetailPair {\n key: string;\n value: string | number;\n}\n\nexport interface PieChartProps<T extends PieChartProps.Datum = PieChartProps.Datum> extends BaseComponentProps {\n /**\n * An array that represents the source of data for the displayed segments.\n * Each element can have the following properties:\n *\n * * `title` (string) - A human-readable title for this data point.\n * * `value` (number) - Numeric value that determines the segment size.\n * A segment with a value of zero (0) or lower (negative number) won't have a segment.\n * * `color`: (string) - (Optional) Color value for this segment that takes priority over the automatically assigned color.\n * Can be any valid CSS color identifier.\n *\n * As long as your data object implements the properties above, you can also define additional properties\n * that are relevant to your data visualization.\n * The full data object will be passed down to events and properties like `detailPopoverContent`.\n */\n data: ReadonlyArray<T>;\n\n /**\n * Specifies the size of the pie or donut chart.\n */\n size?: 'small' | 'medium' | 'large';\n\n /**\n * Visual variant of the pie chart. Currently supports the default `pie` variant and the `donut` variant.\n * The donut variant provides a slot in the center of the chart that can contain additional information.\n * For more information, see `innerContent`.\n */\n variant?: 'pie' | 'donut';\n\n /**\n * A function that determines the details that are displayed in the popover when hovering over a segment.\n * The function is called with the data of the target segment and is expected to return an array of detail pairs.\n * By default, each segment displays two detail pairs: count and percentage.\n *\n * Each pair has the following properties:\n * * `key` (string) - Name of the detail or metric.\n * * `value` (string | number) - The value of this detail for the target segment.\n */\n detailPopoverContent?: PieChartProps.DetailPopoverContentFunction<T>;\n\n /**\n * Additional content that is displayed at the bottom of the detail popover.\n */\n detailPopoverFooter?: PieChartProps.DetailPopoverFooter<T>;\n\n /**\n * A function that determines the description of a segment that is displayed on the chart, unless `hideDescriptions` is set to `true`.\n * This is an optional description that explains the segment and is displayed underneath the label.\n * The function is called with the data object of each segment and is expected to return the description as a string.\n */\n segmentDescription?: PieChartProps.SegmentDescriptionFunction<T>;\n\n /**\n * Determines the maximum width of the popover.\n */\n detailPopoverSize?: PopoverProps.Size;\n\n /**\n * Hides legend beneath the chart when set to `true`.\n * We highly recommend that you leave this unspecified or set to `false`.\n */\n hideLegend?: boolean;\n\n /**\n * Hides label titles next to the chart segments when set to `true`.\n * We highly recommend that you leave this unspecified or set to `false`.\n */\n hideTitles?: boolean;\n\n /**\n * Hides the label descriptions next to the chart segments when set to `true`.\n */\n hideDescriptions?: boolean;\n\n /**\n * Hides the default filtering dropdown when set to `true`.\n * You can still display additional filters with the `additionalFilters` slot.\n */\n hideFilter?: boolean;\n\n /**\n * Additional metric number that's displayed in the center of the chart if `variant` is set to `donut`.\n */\n innerMetricValue?: string;\n\n /**\n * Additional description that's displayed in the center of the chart below `innerMetricValue` if `variant` is set to `donut`.\n * This is usually the unit of the `innerMetricValue`.\n */\n innerMetricDescription?: string;\n\n /**\n * Title for the legend.\n */\n legendTitle?: string;\n\n /**\n * Additional filters that you can add above the chart component.\n * Make sure you update the `data` property when any of your custom filters change the data that's displayed.\n */\n additionalFilters?: React.ReactNode;\n\n /**\n * Specifies the currently highlighted data segment. Highlighting is typically the result of\n * a user hovering over or selecting a segment in the chart or the legend.\n * A value of `null` means no segment is being highlighted.\n *\n * - If you don't set this property, segments are highlighted automatically when a user hovers over or selects one of the triggers (that is, uncontrolled behavior).\n * - If you explicitly set this property, you must set an `onHighlightChange` listener to update this property when a segment should be highlighted (that is, controlled behavior).\n */\n highlightedSegment?: T | null;\n\n /**\n * An array of data segment objects that determines which data segments are currently visible (that is, not filtered out).\n *\n * - If you don't set this property, segments are filtered automatically when using the default filtering of the component (that is, uncontrolled behavior).\n * - If you explicitly set this property, you must set an `onFilterChange` listener to update this property when the list of filtered segments changes (that is, controlled behavior).\n */\n visibleSegments?: ReadonlyArray<T>;\n\n /**\n * Specifies the current status of loading data.\n * * `loading` - Indicates that data fetching is in progress.\n * * `finished` - Indicates that data has loaded successfully.\n * * `error` - Indicates that an error occurred during fetch. You should provide an option to enable the user to recover.\n **/\n statusType?: 'loading' | 'finished' | 'error';\n\n /**\n * Content that's displayed when the data passed to the component is empty.\n */\n empty?: React.ReactNode;\n\n /**\n * Content that's displayed when there is no data to display because it doesn't match the specified filter.\n */\n noMatch?: React.ReactNode;\n\n /**\n * Text that's displayed when the chart is loading (that is, when `statusType` is set to `loading`).\n * @i18n\n */\n loadingText?: string;\n\n /**\n * Text that's displayed when the chart is in error state (that is, when `statusType` is set to `error`).\n * @i18n\n */\n errorText?: string;\n\n /**\n * Text for the recovery button that's displayed next to the error text.\n * @i18n\n **/\n recoveryText?: string;\n\n /**\n * Called when the user clicks the recovery button that appears when there is an error state.\n * Use this to enable the user to retry a failed request or provide another option for the user\n * to recover from the error.\n */\n onRecoveryClick?: NonCancelableEventHandler;\n\n /**\n * Called when the highlighted segmented changes because of a user interaction.\n */\n onHighlightChange?: NonCancelableEventHandler<PieChartProps.HighlightChangeDetail<T>>;\n\n /**\n * Called when the values of the internal filter component changes.\n * This isn't called for any custom filter components you've defined in `additionalFilters`.\n */\n onFilterChange?: NonCancelableEventHandler<PieChartProps.FilterChangeDetail<T>>;\n\n /**\n * ARIA label that's assigned to the chart. It should match the visible label on the page\n * (for example, in the container header). Use either `ariaLabel` or `ariaLabelledby` (you can't use both).\n */\n ariaLabel?: string;\n\n /**\n * Sets `aria-labelledby` on the chart. If there is a visible label for the chart on the page\n * (for example, in the container header), set this property to the ID of that header element.\n * Use either `ariaLabel` or `ariaLabelledby` (you can't use both).\n */\n ariaLabelledby?: string;\n\n /**\n * A description of the chart that assistive technologies can use (through `aria-describedby` and `<title>`).\n * Provide a concise summary of the data visualized in the chart.\n */\n ariaDescription?: string;\n\n /**\n * An object that contains all of the localized strings required by the component.\n * @i18n\n */\n i18nStrings?: PieChartProps.I18nStrings;\n}\n\nexport namespace PieChartProps {\n export interface Datum {\n title: string;\n value: number;\n color?: string;\n }\n\n export type PieChartData = ReadonlyArray<Datum>;\n\n export interface DetailPopoverContentFunction<T = Datum> {\n (segment: T, visibleDataSum: number): ReadonlyArray<ChartDetailPair>;\n }\n\n export interface DetailPopoverFooter<T> {\n (segment: T): React.ReactNode;\n }\n\n export interface SegmentDescriptionFunction<T = Datum> {\n (segment: T, visibleDataSum: number): string;\n }\n\n export interface HighlightChangeDetail<T> {\n highlightedSegment: T | null;\n }\n\n export interface FilterChangeDetail<T> {\n visibleSegments: ReadonlyArray<T>;\n }\n\n export interface I18nStrings {\n /** Name of the \"Value\" key that is displayed in the details popover by default */\n detailsValue?: string;\n\n /** Name of the \"Percentage\" key that is displayed in the details popover by default */\n detailsPercentage?: string;\n\n /** Visible label of the default filter */\n filterLabel?: string;\n\n /** Placeholder text of the default filter */\n filterPlaceholder?: string;\n\n /** ARIA label for the default filter which is appended to any option that is selected */\n filterSelectedAriaLabel?: string;\n\n /** ARIA label that is associated with the legend in case there is no visible `legendTitle` defined */\n legendAriaLabel?: string;\n\n /** ARIA label for details popover dismiss button */\n detailPopoverDismissAriaLabel?: string;\n\n /** Name of the ARIA role description of the chart, e.g. \"pie chart\" */\n chartAriaRoleDescription?: string;\n\n /** Name of the ARIA role description of each segment, e.g. \"segment\" */\n segmentAriaRoleDescription?: string;\n }\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"lib/default/","sources":["pie-chart/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { PopoverProps } from '../popover/interfaces';\n\nexport interface SeriesInfo {\n label: string;\n color: string;\n index: number;\n markerType: 'line' | 'rectangle';\n}\n\nexport interface ChartDetailPair {\n key: string;\n value: string | number;\n}\n\nexport interface PieChartProps<T extends PieChartProps.Datum = PieChartProps.Datum> extends BaseComponentProps {\n /**\n * An array that represents the source of data for the displayed segments.\n * Each element can have the following properties:\n *\n * * `title` (string) - A human-readable title for this data point.\n * * `value` (number) - Numeric value that determines the segment size.\n * A segment with a value of zero (0) or lower (negative number) won't have a segment.\n * * `color`: (string) - (Optional) Color value for this segment that takes priority over the automatically assigned color.\n * Can be any valid CSS color identifier.\n *\n * As long as your data object implements the properties above, you can also define additional properties\n * that are relevant to your data visualization.\n * The full data object will be passed down to events and properties like `detailPopoverContent`.\n */\n data: ReadonlyArray<T>;\n\n /**\n * Specifies the size of the pie or donut chart.\n * When used with `fitHeight`, this property defines the minimum size of the chart area.\n */\n size?: 'small' | 'medium' | 'large';\n\n /**\n * Visual variant of the pie chart. Currently supports the default `pie` variant and the `donut` variant.\n * The donut variant provides a slot in the center of the chart that can contain additional information.\n * For more information, see `innerContent`.\n */\n variant?: 'pie' | 'donut';\n\n /**\n * A function that determines the details that are displayed in the popover when hovering over a segment.\n * The function is called with the data of the target segment and is expected to return an array of detail pairs.\n * By default, each segment displays two detail pairs: count and percentage.\n *\n * Each pair has the following properties:\n * * `key` (string) - Name of the detail or metric.\n * * `value` (string | number) - The value of this detail for the target segment.\n */\n detailPopoverContent?: PieChartProps.DetailPopoverContentFunction<T>;\n\n /**\n * Additional content that is displayed at the bottom of the detail popover.\n */\n detailPopoverFooter?: PieChartProps.DetailPopoverFooter<T>;\n\n /**\n * A function that determines the description of a segment that is displayed on the chart, unless `hideDescriptions` is set to `true`.\n * This is an optional description that explains the segment and is displayed underneath the label.\n * The function is called with the data object of each segment and is expected to return the description as a string.\n */\n segmentDescription?: PieChartProps.SegmentDescriptionFunction<T>;\n\n /**\n * Determines the maximum width of the popover.\n */\n detailPopoverSize?: PopoverProps.Size;\n\n /**\n * Hides legend beneath the chart when set to `true`.\n * We highly recommend that you leave this unspecified or set to `false`.\n */\n hideLegend?: boolean;\n\n /**\n * Hides label titles next to the chart segments when set to `true`.\n * We highly recommend that you leave this unspecified or set to `false`.\n */\n hideTitles?: boolean;\n\n /**\n * Hides the label descriptions next to the chart segments when set to `true`.\n */\n hideDescriptions?: boolean;\n\n /**\n * Hides the default filtering dropdown when set to `true`.\n * You can still display additional filters with the `additionalFilters` slot.\n */\n hideFilter?: boolean;\n\n /**\n * Additional metric number that's displayed in the center of the chart if `variant` is set to `donut`.\n */\n innerMetricValue?: string;\n\n /**\n * Additional description that's displayed in the center of the chart below `innerMetricValue` if `variant` is set to `donut`.\n * This is usually the unit of the `innerMetricValue`.\n */\n innerMetricDescription?: string;\n\n /**\n * Title for the legend.\n */\n legendTitle?: string;\n\n /**\n * Additional filters that you can add above the chart component.\n * Make sure you update the `data` property when any of your custom filters change the data that's displayed.\n */\n additionalFilters?: React.ReactNode;\n\n /**\n * Specifies the currently highlighted data segment. Highlighting is typically the result of\n * a user hovering over or selecting a segment in the chart or the legend.\n * A value of `null` means no segment is being highlighted.\n *\n * - If you don't set this property, segments are highlighted automatically when a user hovers over or selects one of the triggers (that is, uncontrolled behavior).\n * - If you explicitly set this property, you must set an `onHighlightChange` listener to update this property when a segment should be highlighted (that is, controlled behavior).\n */\n highlightedSegment?: T | null;\n\n /**\n * An array of data segment objects that determines which data segments are currently visible (that is, not filtered out).\n *\n * - If you don't set this property, segments are filtered automatically when using the default filtering of the component (that is, uncontrolled behavior).\n * - If you explicitly set this property, you must set an `onFilterChange` listener to update this property when the list of filtered segments changes (that is, controlled behavior).\n */\n visibleSegments?: ReadonlyArray<T>;\n\n /**\n * Specifies the current status of loading data.\n * * `loading` - Indicates that data fetching is in progress.\n * * `finished` - Indicates that data has loaded successfully.\n * * `error` - Indicates that an error occurred during fetch. You should provide an option to enable the user to recover.\n **/\n statusType?: 'loading' | 'finished' | 'error';\n\n /**\n * Content that's displayed when the data passed to the component is empty.\n */\n empty?: React.ReactNode;\n\n /**\n * Content that's displayed when there is no data to display because it doesn't match the specified filter.\n */\n noMatch?: React.ReactNode;\n\n /**\n * Text that's displayed when the chart is loading (that is, when `statusType` is set to `loading`).\n * @i18n\n */\n loadingText?: string;\n\n /**\n * Text that's displayed when the chart is in error state (that is, when `statusType` is set to `error`).\n * @i18n\n */\n errorText?: string;\n\n /**\n * Text for the recovery button that's displayed next to the error text.\n * @i18n\n **/\n recoveryText?: string;\n\n /**\n * Called when the user clicks the recovery button that appears when there is an error state.\n * Use this to enable the user to retry a failed request or provide another option for the user\n * to recover from the error.\n */\n onRecoveryClick?: NonCancelableEventHandler;\n\n /**\n * Called when the highlighted segmented changes because of a user interaction.\n */\n onHighlightChange?: NonCancelableEventHandler<PieChartProps.HighlightChangeDetail<T>>;\n\n /**\n * Called when the values of the internal filter component changes.\n * This isn't called for any custom filter components you've defined in `additionalFilters`.\n */\n onFilterChange?: NonCancelableEventHandler<PieChartProps.FilterChangeDetail<T>>;\n\n /**\n * ARIA label that's assigned to the chart. It should match the visible label on the page\n * (for example, in the container header). Use either `ariaLabel` or `ariaLabelledby` (you can't use both).\n */\n ariaLabel?: string;\n\n /**\n * Sets `aria-labelledby` on the chart. If there is a visible label for the chart on the page\n * (for example, in the container header), set this property to the ID of that header element.\n * Use either `ariaLabel` or `ariaLabelledby` (you can't use both).\n */\n ariaLabelledby?: string;\n\n /**\n * A description of the chart that assistive technologies can use (through `aria-describedby` and `<title>`).\n * Provide a concise summary of the data visualized in the chart.\n */\n ariaDescription?: string;\n\n /**\n * An object that contains all of the localized strings required by the component.\n * @i18n\n */\n i18nStrings?: PieChartProps.I18nStrings;\n\n /**\n * Enable this property to make the chart fit into the available height of the parent container.\n */\n fitHeight?: boolean;\n}\n\nexport namespace PieChartProps {\n export interface Datum {\n title: string;\n value: number;\n color?: string;\n }\n\n export type PieChartData = ReadonlyArray<Datum>;\n\n export interface DetailPopoverContentFunction<T = Datum> {\n (segment: T, visibleDataSum: number): ReadonlyArray<ChartDetailPair>;\n }\n\n export interface DetailPopoverFooter<T> {\n (segment: T): React.ReactNode;\n }\n\n export interface SegmentDescriptionFunction<T = Datum> {\n (segment: T, visibleDataSum: number): string;\n }\n\n export interface HighlightChangeDetail<T> {\n highlightedSegment: T | null;\n }\n\n export interface FilterChangeDetail<T> {\n visibleSegments: ReadonlyArray<T>;\n }\n\n export interface I18nStrings {\n /** Name of the \"Value\" key that is displayed in the details popover by default */\n detailsValue?: string;\n\n /** Name of the \"Percentage\" key that is displayed in the details popover by default */\n detailsPercentage?: string;\n\n /** Visible label of the default filter */\n filterLabel?: string;\n\n /** Placeholder text of the default filter */\n filterPlaceholder?: string;\n\n /** ARIA label for the default filter which is appended to any option that is selected */\n filterSelectedAriaLabel?: string;\n\n /** ARIA label that is associated with the legend in case there is no visible `legendTitle` defined */\n legendAriaLabel?: string;\n\n /** ARIA label for details popover dismiss button */\n detailPopoverDismissAriaLabel?: string;\n\n /** Name of the ARIA role description of the chart, e.g. \"pie chart\" */\n chartAriaRoleDescription?: string;\n\n /** Name of the ARIA role description of each segment, e.g. \"segment\" */\n segmentAriaRoleDescription?: string;\n }\n}\n"]}
@@ -2,16 +2,17 @@ import React from 'react';
2
2
  import { PieArcDatum } from 'd3-shape';
3
3
  import { PieChartProps } from './interfaces';
4
4
  import { InternalChartDatum } from './pie-chart';
5
+ import { Dimension } from './utils';
5
6
  export interface LabelsProps<T> {
6
7
  pieData: PieArcDatum<InternalChartDatum<T>>[];
7
8
  visibleDataSum: number;
8
- size: NonNullable<PieChartProps['size']>;
9
+ dimensions: Dimension;
9
10
  hideTitles: boolean;
10
11
  hideDescriptions: boolean;
11
12
  highlightedSegment: PieChartProps.Datum | null;
12
13
  segmentDescription?: PieChartProps.SegmentDescriptionFunction<T>;
13
14
  containerRef: React.RefObject<HTMLDivElement>;
14
15
  }
15
- declare const _default: <T extends PieChartProps.Datum>({ pieData, size, highlightedSegment, segmentDescription, visibleDataSum, hideTitles, hideDescriptions, containerRef, }: LabelsProps<T>) => JSX.Element;
16
+ declare const _default: <T extends PieChartProps.Datum>({ pieData, dimensions, highlightedSegment, segmentDescription, visibleDataSum, hideTitles, hideDescriptions, containerRef, }: LabelsProps<T>) => JSX.Element;
16
17
  export default _default;
17
18
  //# sourceMappingURL=labels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"labels.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/labels.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAO,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKjD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IACjE,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;CAC/C;;AA+CD,wBAoGE"}
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/labels.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAO,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAqB,MAAM,SAAS,CAAC;AAIvD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IACjE,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;CAC/C;;AA+CD,wBAoGE"}
@@ -4,7 +4,7 @@ import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
4
4
  import clsx from 'clsx';
5
5
  import { arc } from 'd3-shape';
6
6
  import styles from './styles.css.js';
7
- import { dimensionsBySize, balanceLabelNodes } from './utils';
7
+ import { balanceLabelNodes } from './utils';
8
8
  import { useResizeObserver } from '../internal/hooks/container-queries';
9
9
  import ResponsiveText from './responsive-text';
10
10
  function LabelElement({ x, y, hideTitles, hideDescriptions, rightSide, title, description, containerBoundaries, }) {
@@ -15,10 +15,10 @@ function LabelElement({ x, y, hideTitles, hideDescriptions, rightSide, title, de
15
15
  !hideTitles && (React.createElement(ResponsiveText, { x: x, y: y, rightSide: rightSide, containerBoundaries: containerBoundaries }, title)),
16
16
  !hideDescriptions && description && (React.createElement(ResponsiveText, { x: x, y: y + (hideTitles ? 0 : 18), rightSide: rightSide, className: styles.label__description, containerBoundaries: containerBoundaries }, description))));
17
17
  }
18
- export default ({ pieData, size, highlightedSegment, segmentDescription, visibleDataSum, hideTitles, hideDescriptions, containerRef, }) => {
18
+ export default ({ pieData, dimensions, highlightedSegment, segmentDescription, visibleDataSum, hideTitles, hideDescriptions, containerRef, }) => {
19
19
  const containerBoundaries = useElementBoundaries(containerRef);
20
20
  const markers = useMemo(() => {
21
- const { outerRadius: radius, innerLabelPadding } = dimensionsBySize[size];
21
+ const { outerRadius: radius, innerLabelPadding } = dimensions;
22
22
  // More arc factories for the label positioning
23
23
  const arcMarkerStart = arc()
24
24
  .innerRadius(radius - 1)
@@ -50,7 +50,7 @@ export default ({ pieData, size, highlightedSegment, segmentDescription, visible
50
50
  datum,
51
51
  };
52
52
  });
53
- }, [pieData, size]);
53
+ }, [pieData, dimensions]);
54
54
  const rootRef = useRef(null);
55
55
  useLayoutEffect(() => {
56
56
  if (!rootRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sourceRoot":"lib/default/","sources":["pie-chart/labels.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAe,MAAM,UAAU,CAAC;AAG5C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAwB/C,SAAS,YAAY,CAAC,EACpB,CAAC,EACD,CAAC,EACD,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,WAAW,EACX,mBAAmB,GACD;IAClB,OAAO;IACL,mEAAmE;IACnE,2EAA2E;IAC3E,2BAAG,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,EAAC,EAAE,YAAS,CAAC,YAAU,CAAC;QAClE,CAAC,UAAU,IAAI,CACd,oBAAC,cAAc,IAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,IACvF,KAAK,CACS,CAClB;QACA,CAAC,gBAAgB,IAAI,WAAW,IAAI,CACnC,oBAAC,cAAc,IACb,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,CAAC,kBAAkB,EACpC,mBAAmB,EAAE,mBAAmB,IAEvC,WAAW,CACG,CAClB,CACC,CACL,CAAC;AACJ,CAAC;AAED,eAAe,CAAgC,EAC7C,OAAO,EACP,IAAI,EACJ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,YAAY,GACG,EAAE,EAAE;IACnB,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAE/D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE1E,+CAA+C;QAC/C,MAAM,cAAc,GAAG,GAAG,EAAoB;aAC3C,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;aACvB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE3B,MAAM,cAAc,GAAG,GAAG,EAAoB;aAC3C,WAAW,CAAC,MAAM,GAAG,iBAAiB,CAAC;aACvC,WAAW,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;QAE3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAE3F,yFAAyF;YACzF,cAAc,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC/E,cAAc,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC/E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAExD,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9C,OAAO;gBACL,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,IAAI;gBACJ,IAAI,EAAE,MAAM;gBACZ,KAAK;gBACL,KAAK,EAAE,MAAM;gBACb,SAAS;gBACT,KAAK;aACN,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE1C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO;SACR;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAc,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7F,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9C,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,2BAAG,SAAS,EAAE,MAAM,CAAC,OAAO,iBAAc,MAAM,EAAC,GAAG,EAAE,OAAO,IAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9F,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,WAAW,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAG,OAAO,EAAE,cAAc,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxE,OAAO,IAAI,CAAC;SACb;QACD,OAAO,CACL,2BACE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC5B,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,KAAK,OAAO;gBAC9D,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,KAAK,OAAO;gBACxF,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,SAAS;aAC3C,CAAC;YAEF,8BAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAI;YACxD,8BAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,GAAI;YACrF,oBAAC,YAAY,IACX,CAAC,EAAE,KAAK,EACR,CAAC,EAAE,KAAK,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,GACxC,CACA,CACL,CAAC;IACJ,CAAC,CAAC,CACA,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,oBAAoB,CAAC,GAAiC;IAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzD,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { arc, PieArcDatum } from 'd3-shape';\n\nimport { PieChartProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { InternalChartDatum } from './pie-chart';\nimport { dimensionsBySize, balanceLabelNodes } from './utils';\nimport { useResizeObserver } from '../internal/hooks/container-queries';\nimport ResponsiveText from './responsive-text';\n\nexport interface LabelsProps<T> {\n pieData: PieArcDatum<InternalChartDatum<T>>[];\n visibleDataSum: number;\n size: NonNullable<PieChartProps['size']>;\n hideTitles: boolean;\n hideDescriptions: boolean;\n highlightedSegment: PieChartProps.Datum | null;\n segmentDescription?: PieChartProps.SegmentDescriptionFunction<T>;\n containerRef: React.RefObject<HTMLDivElement>;\n}\n\ninterface LabelElementProps {\n x: number;\n y: number;\n rightSide: boolean;\n hideTitles: boolean;\n hideDescriptions: boolean;\n title: PieChartProps.Datum['title'];\n description?: string;\n containerBoundaries: null | { left: number; right: number };\n}\n\nfunction LabelElement({\n x,\n y,\n hideTitles,\n hideDescriptions,\n rightSide,\n title,\n description,\n containerBoundaries,\n}: LabelElementProps) {\n return (\n // Reset the transform property to prepare for `balanceLabelNodes`.\n // The dataset attributes are also needed in the function for IE11 support.\n <g className={styles['label-text']} transform=\"\" data-x={x} data-y={y}>\n {!hideTitles && (\n <ResponsiveText x={x} y={y} rightSide={rightSide} containerBoundaries={containerBoundaries}>\n {title}\n </ResponsiveText>\n )}\n {!hideDescriptions && description && (\n <ResponsiveText\n x={x}\n y={y + (hideTitles ? 0 : 18)}\n rightSide={rightSide}\n className={styles.label__description}\n containerBoundaries={containerBoundaries}\n >\n {description}\n </ResponsiveText>\n )}\n </g>\n );\n}\n\nexport default <T extends PieChartProps.Datum>({\n pieData,\n size,\n highlightedSegment,\n segmentDescription,\n visibleDataSum,\n hideTitles,\n hideDescriptions,\n containerRef,\n}: LabelsProps<T>) => {\n const containerBoundaries = useElementBoundaries(containerRef);\n\n const markers = useMemo(() => {\n const { outerRadius: radius, innerLabelPadding } = dimensionsBySize[size];\n\n // More arc factories for the label positioning\n const arcMarkerStart = arc<PieArcDatum<any>>()\n .innerRadius(radius - 1)\n .outerRadius(radius - 1);\n\n const arcMarkerBreak = arc<PieArcDatum<any>>()\n .innerRadius(radius + innerLabelPadding)\n .outerRadius(radius + innerLabelPadding);\n\n return pieData.map((datum, i) => {\n const labelDatum = pieData[i];\n const midAngle = labelDatum.startAngle + (labelDatum.endAngle - labelDatum.startAngle) / 2;\n\n // Make the marker line longer if the segment is closer to the top or bottom of the chart\n arcMarkerBreak.outerRadius(radius + 20 * (0.5 * Math.cos(2 * midAngle) + 0.5));\n arcMarkerBreak.innerRadius(radius + 20 * (0.5 * Math.cos(2 * midAngle) + 0.5));\n const [startX, startY] = arcMarkerStart.centroid(datum);\n const [breakX, breakY] = arcMarkerBreak.centroid(datum);\n\n const rightSide = midAngle < Math.PI;\n const endX = (radius + 20) * (rightSide ? 1 : -1);\n const textX = endX + 5 * (rightSide ? 1 : -1);\n\n return {\n startX,\n startY,\n breakX,\n breakY,\n endX,\n endY: breakY,\n textX,\n textY: breakY,\n rightSide,\n datum,\n };\n });\n }, [pieData, size]);\n\n const rootRef = useRef<SVGGElement>(null);\n\n useLayoutEffect(() => {\n if (!rootRef.current) {\n return;\n }\n\n // Relax labels that are overlapping\n const labelNodes = rootRef.current.querySelectorAll<SVGGElement>(`.${styles['label-text']}`);\n balanceLabelNodes(labelNodes, markers, false);\n balanceLabelNodes(labelNodes, markers, true);\n }, [markers, pieData]);\n\n return (\n <g className={styles.markers} aria-hidden=\"true\" ref={rootRef}>\n {markers.map(({ startX, startY, breakX, breakY, endX, endY, textX, textY, rightSide, datum }) => {\n const segment = datum.data.datum;\n const description = segmentDescription?.(segment, visibleDataSum);\n if ((hideTitles && !description) || (hideDescriptions && !segment.title)) {\n return null;\n }\n return (\n <g\n key={datum.data.index}\n className={clsx(styles.label, {\n [styles['label--highlighted']]: highlightedSegment === segment,\n [styles['label--dimmed']]: highlightedSegment !== null && highlightedSegment !== segment,\n [styles['label--align-right']]: !rightSide,\n })}\n >\n <line x1={startX} y1={startY} x2={breakX} y2={breakY} />\n <line x1={breakX} y1={breakY} x2={endX} y2={endY} className={styles['label-line']} />\n <LabelElement\n x={textX}\n y={textY}\n rightSide={rightSide}\n title={segment.title}\n description={description}\n hideTitles={hideTitles}\n hideDescriptions={hideDescriptions}\n containerBoundaries={containerBoundaries}\n />\n </g>\n );\n })}\n </g>\n );\n};\n\nfunction useElementBoundaries(ref: React.RefObject<HTMLElement>): { left: number; right: number } {\n const [state, setState] = useState({ left: 0, right: 0 });\n useResizeObserver(ref, entry => {\n const elementRect = entry.target.getBoundingClientRect();\n setState({ left: elementRect.left, right: elementRect.right });\n });\n return state;\n}\n"]}
1
+ {"version":3,"file":"labels.js","sourceRoot":"lib/default/","sources":["pie-chart/labels.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { arc, PieArcDatum } from 'd3-shape';\n\nimport { PieChartProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { InternalChartDatum } from './pie-chart';\nimport { Dimension, balanceLabelNodes } from './utils';\nimport { useResizeObserver } from '../internal/hooks/container-queries';\nimport ResponsiveText from './responsive-text';\n\nexport interface LabelsProps<T> {\n pieData: PieArcDatum<InternalChartDatum<T>>[];\n visibleDataSum: number;\n dimensions: Dimension;\n hideTitles: boolean;\n hideDescriptions: boolean;\n highlightedSegment: PieChartProps.Datum | null;\n segmentDescription?: PieChartProps.SegmentDescriptionFunction<T>;\n containerRef: React.RefObject<HTMLDivElement>;\n}\n\ninterface LabelElementProps {\n x: number;\n y: number;\n rightSide: boolean;\n hideTitles: boolean;\n hideDescriptions: boolean;\n title: PieChartProps.Datum['title'];\n description?: string;\n containerBoundaries: null | { left: number; right: number };\n}\n\nfunction LabelElement({\n x,\n y,\n hideTitles,\n hideDescriptions,\n rightSide,\n title,\n description,\n containerBoundaries,\n}: LabelElementProps) {\n return (\n // Reset the transform property to prepare for `balanceLabelNodes`.\n // The dataset attributes are also needed in the function for IE11 support.\n <g className={styles['label-text']} transform=\"\" data-x={x} data-y={y}>\n {!hideTitles && (\n <ResponsiveText x={x} y={y} rightSide={rightSide} containerBoundaries={containerBoundaries}>\n {title}\n </ResponsiveText>\n )}\n {!hideDescriptions && description && (\n <ResponsiveText\n x={x}\n y={y + (hideTitles ? 0 : 18)}\n rightSide={rightSide}\n className={styles.label__description}\n containerBoundaries={containerBoundaries}\n >\n {description}\n </ResponsiveText>\n )}\n </g>\n );\n}\n\nexport default <T extends PieChartProps.Datum>({\n pieData,\n dimensions,\n highlightedSegment,\n segmentDescription,\n visibleDataSum,\n hideTitles,\n hideDescriptions,\n containerRef,\n}: LabelsProps<T>) => {\n const containerBoundaries = useElementBoundaries(containerRef);\n\n const markers = useMemo(() => {\n const { outerRadius: radius, innerLabelPadding } = dimensions;\n\n // More arc factories for the label positioning\n const arcMarkerStart = arc<PieArcDatum<any>>()\n .innerRadius(radius - 1)\n .outerRadius(radius - 1);\n\n const arcMarkerBreak = arc<PieArcDatum<any>>()\n .innerRadius(radius + innerLabelPadding)\n .outerRadius(radius + innerLabelPadding);\n\n return pieData.map((datum, i) => {\n const labelDatum = pieData[i];\n const midAngle = labelDatum.startAngle + (labelDatum.endAngle - labelDatum.startAngle) / 2;\n\n // Make the marker line longer if the segment is closer to the top or bottom of the chart\n arcMarkerBreak.outerRadius(radius + 20 * (0.5 * Math.cos(2 * midAngle) + 0.5));\n arcMarkerBreak.innerRadius(radius + 20 * (0.5 * Math.cos(2 * midAngle) + 0.5));\n const [startX, startY] = arcMarkerStart.centroid(datum);\n const [breakX, breakY] = arcMarkerBreak.centroid(datum);\n\n const rightSide = midAngle < Math.PI;\n const endX = (radius + 20) * (rightSide ? 1 : -1);\n const textX = endX + 5 * (rightSide ? 1 : -1);\n\n return {\n startX,\n startY,\n breakX,\n breakY,\n endX,\n endY: breakY,\n textX,\n textY: breakY,\n rightSide,\n datum,\n };\n });\n }, [pieData, dimensions]);\n\n const rootRef = useRef<SVGGElement>(null);\n\n useLayoutEffect(() => {\n if (!rootRef.current) {\n return;\n }\n\n // Relax labels that are overlapping\n const labelNodes = rootRef.current.querySelectorAll<SVGGElement>(`.${styles['label-text']}`);\n balanceLabelNodes(labelNodes, markers, false);\n balanceLabelNodes(labelNodes, markers, true);\n }, [markers, pieData]);\n\n return (\n <g className={styles.markers} aria-hidden=\"true\" ref={rootRef}>\n {markers.map(({ startX, startY, breakX, breakY, endX, endY, textX, textY, rightSide, datum }) => {\n const segment = datum.data.datum;\n const description = segmentDescription?.(segment, visibleDataSum);\n if ((hideTitles && !description) || (hideDescriptions && !segment.title)) {\n return null;\n }\n return (\n <g\n key={datum.data.index}\n className={clsx(styles.label, {\n [styles['label--highlighted']]: highlightedSegment === segment,\n [styles['label--dimmed']]: highlightedSegment !== null && highlightedSegment !== segment,\n [styles['label--align-right']]: !rightSide,\n })}\n >\n <line x1={startX} y1={startY} x2={breakX} y2={breakY} />\n <line x1={breakX} y1={breakY} x2={endX} y2={endY} className={styles['label-line']} />\n <LabelElement\n x={textX}\n y={textY}\n rightSide={rightSide}\n title={segment.title}\n description={description}\n hideTitles={hideTitles}\n hideDescriptions={hideDescriptions}\n containerBoundaries={containerBoundaries}\n />\n </g>\n );\n })}\n </g>\n );\n};\n\nfunction useElementBoundaries(ref: React.RefObject<HTMLElement>): { left: number; right: number } {\n const [state, setState] = useState({ left: 0, right: 0 });\n useResizeObserver(ref, entry => {\n const elementRect = entry.target.getBoundingClientRect();\n setState({ left: elementRect.left, right: elementRect.right });\n });\n return state;\n}\n"]}
@@ -9,6 +9,7 @@ export interface InternalChartDatum<T> {
9
9
  }
10
10
  interface InternalPieChartProps<T extends PieChartProps.Datum> extends SomeRequired<Omit<PieChartProps<T>, 'onHighlightChange' | 'statusType'>, 'variant' | 'size' | 'i18nStrings' | 'hideTitles' | 'hideDescriptions'> {
11
11
  width: number;
12
+ height: number;
12
13
  highlightedSegment: T | null;
13
14
  onHighlightChange: (segment: null | T) => void;
14
15
  legendSegment: T | null;
@@ -22,6 +23,6 @@ export interface TooltipData<T> {
22
23
  trackRef: React.RefObject<SVGElement>;
23
24
  series: SeriesInfo;
24
25
  }
25
- declare const _default: <T extends PieChartProps.Datum>({ variant, size, i18nStrings, ariaLabel, ariaLabelledby, ariaDescription, innerMetricValue, innerMetricDescription, hideTitles, hideDescriptions, detailPopoverContent, detailPopoverSize, detailPopoverFooter, width, segmentDescription, highlightedSegment, onHighlightChange, legendSegment, pinnedSegment, setPinnedSegment, pieData, dataSum, }: InternalPieChartProps<T>) => JSX.Element;
26
+ declare const _default: <T extends PieChartProps.Datum>({ fitHeight, height: explicitHeight, variant, size, width, i18nStrings, ariaLabel, ariaLabelledby, ariaDescription, innerMetricValue, innerMetricDescription, hideTitles, hideDescriptions, detailPopoverContent, detailPopoverSize, detailPopoverFooter, segmentDescription, highlightedSegment, onHighlightChange, legendSegment, pinnedSegment, setPinnedSegment, pieData, dataSum, }: InternalPieChartProps<T>) => JSX.Element;
26
27
  export default _default;
27
28
  //# sourceMappingURL=pie-chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pie-chart.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/pie-chart.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAA4D,MAAM,OAAO,CAAC;AAUjF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAMzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACpB;AAED,UAAU,qBAAqB,CAAC,CAAC,SAAS,aAAa,CAAC,KAAK,CAC3D,SAAQ,YAAY,CAClB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAAC,EAC1D,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,kBAAkB,CACvE;IACD,KAAK,EAAE,MAAM,CAAC;IAEd,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC;IAE/C,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;IAExB,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAEjE,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;CACpB;;AAED,wBA2TE"}
1
+ {"version":3,"file":"pie-chart.d.ts","sourceRoot":"lib/default/","sources":["pie-chart/pie-chart.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAA4D,MAAM,OAAO,CAAC;AAUjF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACpB;AAED,UAAU,qBAAqB,CAAC,CAAC,SAAS,aAAa,CAAC,KAAK,CAC3D,SAAQ,YAAY,CAClB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAAC,EAC1D,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,kBAAkB,CACvE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC;IAE/C,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;IAExB,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAEjE,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;CACpB;;AAED,wBAuVE"}
@@ -7,26 +7,29 @@ import SeriesMarker from '../internal/components/chart-series-marker';
7
7
  import InternalBox from '../box/internal';
8
8
  import Labels from './labels';
9
9
  import styles from './styles.css.js';
10
- import { defaultDetails, dimensionsBySize, refreshDimensionsBySize } from './utils';
10
+ import { defaultDetails, getDimensionsBySize } from './utils';
11
11
  import Segments from './segments';
12
- import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
13
12
  import ChartPlot from '../internal/components/chart-plot';
14
13
  import { useInternalI18n } from '../internal/i18n/context';
15
14
  import { nodeBelongs } from '../internal/utils/node-belongs';
16
- export default ({ variant, size, i18nStrings, ariaLabel, ariaLabelledby, ariaDescription, innerMetricValue, innerMetricDescription, hideTitles, hideDescriptions, detailPopoverContent, detailPopoverSize, detailPopoverFooter, width, segmentDescription, highlightedSegment, onHighlightChange, legendSegment, pinnedSegment, setPinnedSegment, pieData, dataSum, }) => {
15
+ import clsx from 'clsx';
16
+ import { useResizeObserver } from '../internal/hooks/container-queries';
17
+ import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
18
+ export default ({ fitHeight, height: explicitHeight, variant, size, width, i18nStrings, ariaLabel, ariaLabelledby, ariaDescription, innerMetricValue, innerMetricDescription, hideTitles, hideDescriptions, detailPopoverContent, detailPopoverSize, detailPopoverFooter, segmentDescription, highlightedSegment, onHighlightChange, legendSegment, pinnedSegment, setPinnedSegment, pieData, dataSum, }) => {
17
19
  var _a;
18
20
  const plotRef = useRef(null);
19
21
  const containerRef = useRef(null);
20
22
  const focusedSegmentRef = useRef(null);
21
23
  const popoverTrackRef = useRef(null);
22
24
  const popoverRef = useRef(null);
23
- const isRefresh = useVisualRefresh();
24
- const dimensions = isRefresh ? refreshDimensionsBySize[size] : dimensionsBySize[size];
25
- const radius = dimensions.outerRadius;
26
25
  const hasLabels = !(hideTitles && hideDescriptions);
27
- const height = 2 * (radius + dimensions.padding + (hasLabels ? dimensions.paddingLabels : 0));
26
+ const isRefresh = useVisualRefresh();
27
+ const [measuredHeight, setHeight] = useState(0);
28
+ useResizeObserver(() => { var _a, _b; return (_b = (_a = plotRef.current) === null || _a === void 0 ? void 0 : _a.svg) !== null && _b !== void 0 ? _b : null; }, entry => fitHeight && setHeight(entry.borderBoxHeight));
29
+ const height = fitHeight ? measuredHeight : explicitHeight;
30
+ const dimensions = useMemo(() => getDimensionsBySize({ size: fitHeight ? Math.min(height, width) : size, hasLabels, visualRefresh: isRefresh }), [fitHeight, height, width, size, hasLabels, isRefresh]);
28
31
  // Inner content is only available for donut charts and the inner description is not displayed for small charts
29
- const hasInnerContent = variant === 'donut' && (innerMetricValue || (innerMetricDescription && size !== 'small'));
32
+ const hasInnerContent = variant === 'donut' && (innerMetricValue || (innerMetricDescription && dimensions.size !== 'small'));
30
33
  const innerMetricId = useUniqueId('awsui-pie-chart__inner');
31
34
  const [isTooltipOpen, setTooltipOpen] = useState(false);
32
35
  const [tooltipData, setTooltipData] = useState();
@@ -175,13 +178,14 @@ export default ({ variant, size, i18nStrings, ariaLabel, ariaLabelledby, ariaDes
175
178
  }
176
179
  clearHighlightedSegment();
177
180
  };
178
- return (React.createElement("div", { className: styles['chart-container'], ref: containerRef },
179
- React.createElement(ChartPlot, { ref: plotRef, width: width, height: height, transform: `translate(${width / 2} ${height / 2})`, isPrecise: true, isClickable: !isTooltipOpen, ariaLabel: ariaLabel, ariaLabelledby: ariaLabelledby, ariaDescription: ariaDescription, ariaDescribedby: hasInnerContent ? innerMetricId : undefined, ariaRoleDescription: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.chartAriaRoleDescription, ariaLiveRegion: tooltipContent, activeElementRef: focusedSegmentRef, activeElementKey: highlightedSegmentIndex === null || highlightedSegmentIndex === void 0 ? void 0 : highlightedSegmentIndex.toString(), onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onMouseOut: onMouseOut },
180
- React.createElement(Segments, { pieData: pieData, size: size, variant: variant, focusedSegmentRef: focusedSegmentRef, popoverTrackRef: popoverTrackRef, highlightedSegment: highlightedSegment, segmentAriaRoleDescription: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.segmentAriaRoleDescription, onMouseDown: onMouseDown, onMouseOver: onMouseOver, onMouseOut: onMouseOut }),
181
- hasLabels && (React.createElement(Labels, { pieData: pieData, size: size, segmentDescription: segmentDescription, visibleDataSum: dataSum, hideTitles: hideTitles, hideDescriptions: hideDescriptions, highlightedSegment: highlightedSegment, containerRef: containerRef }))),
181
+ return (React.createElement("div", { className: clsx(styles['chart-container'], fitHeight && styles['chart-container--fit-height']), ref: containerRef },
182
+ React.createElement("div", { className: clsx(styles['chart-container-chart-plot'], fitHeight && styles['chart-container-chart-plot--fit-height']) },
183
+ React.createElement(ChartPlot, { ref: plotRef, width: "100%", height: fitHeight ? '100%' : height, transform: `translate(${width / 2} ${height / 2})`, isPrecise: true, isClickable: !isTooltipOpen, ariaLabel: ariaLabel, ariaLabelledby: ariaLabelledby, ariaDescription: ariaDescription, ariaDescribedby: hasInnerContent ? innerMetricId : undefined, ariaRoleDescription: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.chartAriaRoleDescription, ariaLiveRegion: tooltipContent, activeElementRef: focusedSegmentRef, activeElementKey: highlightedSegmentIndex === null || highlightedSegmentIndex === void 0 ? void 0 : highlightedSegmentIndex.toString(), onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onMouseOut: onMouseOut },
184
+ React.createElement(Segments, { pieData: pieData, dimensions: dimensions, variant: variant, focusedSegmentRef: focusedSegmentRef, popoverTrackRef: popoverTrackRef, highlightedSegment: highlightedSegment, segmentAriaRoleDescription: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.segmentAriaRoleDescription, onMouseDown: onMouseDown, onMouseOver: onMouseOver, onMouseOut: onMouseOut }),
185
+ hasLabels && (React.createElement(Labels, { pieData: pieData, dimensions: dimensions, segmentDescription: segmentDescription, visibleDataSum: dataSum, hideTitles: hideTitles, hideDescriptions: hideDescriptions, highlightedSegment: highlightedSegment, containerRef: containerRef })))),
182
186
  hasInnerContent && (React.createElement("div", { className: styles['inner-content'], id: innerMetricId },
183
- innerMetricValue && (React.createElement(InternalBox, { variant: size === 'small' ? 'h3' : 'h1', tagOverride: "div", color: "inherit", padding: "n" }, innerMetricValue)),
184
- innerMetricDescription && size !== 'small' && (React.createElement(InternalBox, { variant: "h3", color: "text-body-secondary", tagOverride: "div", padding: "n" }, innerMetricDescription)))),
187
+ innerMetricValue && (React.createElement(InternalBox, { variant: dimensions.size === 'small' ? 'h3' : 'h1', tagOverride: "div", color: "inherit", padding: "n" }, innerMetricValue)),
188
+ innerMetricDescription && dimensions.size !== 'small' && (React.createElement(InternalBox, { variant: "h3", color: "text-body-secondary", tagOverride: "div", padding: "n" }, innerMetricDescription)))),
185
189
  isTooltipOpen && tooltipData && (React.createElement(ChartPopover, { ref: popoverRef, title: tooltipData.series && (React.createElement(InternalBox, { className: styles['popover-header'], variant: "strong" },
186
190
  React.createElement(SeriesMarker, { color: tooltipData.series.color, type: tooltipData.series.markerType }),
187
191
  ' ',