@cloudscape-design/chart-components 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/chart-api/chart-extra-tooltip.d.ts +3 -0
- package/core/chart-api/chart-extra-tooltip.js +10 -0
- package/core/chart-api/chart-extra-tooltip.js.map +1 -1
- package/core/chart-api/index.d.ts +1 -0
- package/core/chart-api/index.js +8 -0
- package/core/chart-api/index.js.map +1 -1
- package/core/components/core-tooltip.js +25 -6
- package/core/components/core-tooltip.js.map +1 -1
- package/core/interfaces.d.ts +3 -0
- package/core/interfaces.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/generated/styles/tokens.d.ts +2 -0
- package/internal/generated/styles/tokens.js +2 -0
- package/internal/generated/theming/index.cjs +45 -0
- package/internal/generated/theming/index.cjs.d.ts +9 -0
- package/internal/generated/theming/index.d.ts +9 -0
- package/internal/generated/theming/index.js +45 -0
- package/internal/manifest.json +1 -1
- package/package.json +1 -1
- package/pie-chart/chart-pie-internal.js +1 -1
- package/pie-chart/chart-pie-internal.js.map +1 -1
|
@@ -51,7 +51,7 @@ export const InternalPieChart = forwardRef(({ series: originalSeries, tooltip, .
|
|
|
51
51
|
};
|
|
52
52
|
const transformSlotProps = (props) => {
|
|
53
53
|
const point = props.items[0].point;
|
|
54
|
-
return transformDetailsProps({ point });
|
|
54
|
+
return transformDetailsProps({ point, hideTooltip: props.hideTooltip });
|
|
55
55
|
};
|
|
56
56
|
return {
|
|
57
57
|
header: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.header) ? (props) => tooltip.header(transformSlotProps(props)) : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-pie-internal.js","sourceRoot":"","sources":["../../../src/pie-chart/chart-pie-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\n\nimport { forwardRef, useImperativeHandle, useRef } from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport type Highcharts from \"highcharts\";\n\nimport { useControllableState } from \"@cloudscape-design/component-toolkit\";\n\nimport { InternalCoreChart } from \"../core/chart-core\";\nimport { CoreChartProps } from \"../core/interfaces\";\nimport { getOptionsId } from \"../core/utils\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport * as Styles from \"../internal/chart-styles\";\nimport { fireNonCancelableEvent } from \"../internal/events\";\nimport { SomeRequired, Writeable } from \"../internal/utils/utils\";\nimport { useInnerArea } from \"./chart-inner-area\";\nimport { PieChartProps } from \"./interfaces\";\n\nimport testClasses from \"./test-classes/styles.css.js\";\n\ninterface InternalPieChartProps extends InternalBaseComponentProps, Omit<PieChartProps, \"series\"> {\n series: readonly PieChartProps.SeriesOptions[];\n tooltip: SomeRequired<PieChartProps.TooltipOptions, \"enabled\" | \"size\">;\n legend: SomeRequired<PieChartProps.LegendOptions, \"enabled\">;\n}\n\nexport const InternalPieChart = forwardRef(\n ({ series: originalSeries, tooltip, ...props }: InternalPieChartProps, ref: React.Ref<PieChartProps.Ref>) => {\n const apiRef = useRef<null | CoreChartProps.ChartAPI>(null);\n\n // When visibleSegments and onVisibleSegmentsChange are provided - the segments visibility can be controlled from the outside.\n // Otherwise - the component handles segments visibility using its internal state.\n useControllableState(props.visibleSegments, props.onVisibleSegmentsChange, undefined, {\n componentName: \"PieChart\",\n propertyName: \"visibleSegments\",\n changeHandlerName: \"onVisibleSegmentsChange\",\n });\n const allSegmentIds = originalSeries.flatMap((s) => s.data.map((d) => getOptionsId(d)));\n const onVisibleSegmentsChange: CoreChartProps[\"onVisibleItemsChange\"] = ({ detail: { items } }) => {\n const visibleSegments = items.filter((i) => i.visible).map((i) => i.id);\n fireNonCancelableEvent(props.onVisibleSegmentsChange, { visibleSegments });\n };\n\n // Converting donut series to Highcharts pie series.\n const series: Highcharts.SeriesOptionsType[] = originalSeries.map((s) => {\n const data = s.data as Writeable<PieChartProps.PieSegmentOptions[]>;\n const style = s.type === \"pie\" ? Styles.pieSeries : Styles.donutSeries;\n return { ...s, type: \"pie\", data, ...style };\n });\n\n // Pie chart imperative API.\n useImperativeHandle(ref, () => ({\n setVisibleSegments: (visibleSegmentsIds) => apiRef.current?.setItemsVisible(visibleSegmentsIds),\n showAllSegments: () => apiRef.current?.setItemsVisible(allSegmentIds),\n }));\n\n // Get inner area title and description for donut chart.\n const innerArea = useInnerArea(originalSeries, props);\n\n // We convert pie tooltip options to the core chart's getTooltipContent callback,\n // ensuring no internal types are exposed to the consumer-defined render functions.\n const getTooltipContent: CoreChartProps[\"getTooltipContent\"] = () => {\n const transformDetailsProps = ({\n point,\n }: CoreChartProps.TooltipDetailsProps): PieChartProps.TooltipDetailsRenderProps => {\n return {\n totalValue: point.total ?? 0,\n segmentValue: point.y ?? 0,\n segmentId: getOptionsId(point.options),\n segmentName: point.name ?? \"\",\n };\n };\n const transformSlotProps = (props: CoreChartProps.TooltipSlotProps): PieChartProps.TooltipDetailsRenderProps => {\n const point = props.items[0].point;\n return transformDetailsProps({ point });\n };\n return {\n header: tooltip?.header ? (props) => tooltip.header!(transformSlotProps(props)) : undefined,\n details: tooltip?.details ? (props) => tooltip.details!(transformDetailsProps(props)) : undefined,\n body: tooltip?.body ? (props) => tooltip.body!(transformSlotProps(props)) : undefined,\n footer: tooltip?.footer ? (props) => tooltip.footer!(transformSlotProps(props)) : undefined,\n };\n };\n\n // Convert pie segment props to Highcharts segment data labels.\n const segmentDataLabels:\n | Highcharts.SeriesPieDataLabelsOptionsObject\n | Highcharts.SeriesPieDataLabelsOptionsObject[] = {\n position: \"left\",\n formatter() {\n const { segmentTitle, segmentDescription } = props;\n const segmentProps = {\n // For pie series, we expect y, total, and name to be always present, and y to be non-null for any visible segment.\n // However, these are optional in Highcharts types, so we need to do a fallback.\n totalValue: this.total ?? 0,\n segmentValue: this.y ?? 0,\n segmentId: this.options.id,\n segmentName: this.options.name ?? \"\",\n };\n const title = segmentTitle ? segmentTitle(segmentProps) : this.name;\n const description = segmentDescription?.(segmentProps);\n if (title || description) {\n return renderToStaticMarkup(\n <text>\n {title ? <tspan>{title}</tspan> : null}\n <br />\n {description ? <tspan style={Styles.segmentDescriptionCss}>{description}</tspan> : null}\n </text>,\n );\n }\n return null;\n },\n useHTML: false,\n };\n\n const highchartsOptions: Highcharts.Options = {\n chart: {\n events: {\n render(event) {\n innerArea.onChartRender.call(this, event);\n },\n },\n },\n plotOptions: {\n pie: {\n dataLabels: segmentDataLabels,\n },\n },\n series,\n };\n\n return (\n <InternalCoreChart\n {...props}\n callback={(api) => (apiRef.current = api)}\n options={highchartsOptions}\n tooltip={tooltip}\n getTooltipContent={getTooltipContent}\n visibleItems={props.visibleSegments}\n onVisibleItemsChange={onVisibleSegmentsChange}\n className={testClasses.root}\n />\n );\n },\n);\n"]}
|
|
1
|
+
{"version":3,"file":"chart-pie-internal.js","sourceRoot":"","sources":["../../../src/pie-chart/chart-pie-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\n\nimport { forwardRef, useImperativeHandle, useRef } from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport type Highcharts from \"highcharts\";\n\nimport { useControllableState } from \"@cloudscape-design/component-toolkit\";\n\nimport { InternalCoreChart } from \"../core/chart-core\";\nimport { CoreChartProps } from \"../core/interfaces\";\nimport { getOptionsId } from \"../core/utils\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport * as Styles from \"../internal/chart-styles\";\nimport { fireNonCancelableEvent } from \"../internal/events\";\nimport { SomeRequired, Writeable } from \"../internal/utils/utils\";\nimport { useInnerArea } from \"./chart-inner-area\";\nimport { PieChartProps } from \"./interfaces\";\n\nimport testClasses from \"./test-classes/styles.css.js\";\n\ninterface InternalPieChartProps extends InternalBaseComponentProps, Omit<PieChartProps, \"series\"> {\n series: readonly PieChartProps.SeriesOptions[];\n tooltip: SomeRequired<PieChartProps.TooltipOptions, \"enabled\" | \"size\">;\n legend: SomeRequired<PieChartProps.LegendOptions, \"enabled\">;\n}\n\nexport const InternalPieChart = forwardRef(\n ({ series: originalSeries, tooltip, ...props }: InternalPieChartProps, ref: React.Ref<PieChartProps.Ref>) => {\n const apiRef = useRef<null | CoreChartProps.ChartAPI>(null);\n\n // When visibleSegments and onVisibleSegmentsChange are provided - the segments visibility can be controlled from the outside.\n // Otherwise - the component handles segments visibility using its internal state.\n useControllableState(props.visibleSegments, props.onVisibleSegmentsChange, undefined, {\n componentName: \"PieChart\",\n propertyName: \"visibleSegments\",\n changeHandlerName: \"onVisibleSegmentsChange\",\n });\n const allSegmentIds = originalSeries.flatMap((s) => s.data.map((d) => getOptionsId(d)));\n const onVisibleSegmentsChange: CoreChartProps[\"onVisibleItemsChange\"] = ({ detail: { items } }) => {\n const visibleSegments = items.filter((i) => i.visible).map((i) => i.id);\n fireNonCancelableEvent(props.onVisibleSegmentsChange, { visibleSegments });\n };\n\n // Converting donut series to Highcharts pie series.\n const series: Highcharts.SeriesOptionsType[] = originalSeries.map((s) => {\n const data = s.data as Writeable<PieChartProps.PieSegmentOptions[]>;\n const style = s.type === \"pie\" ? Styles.pieSeries : Styles.donutSeries;\n return { ...s, type: \"pie\", data, ...style };\n });\n\n // Pie chart imperative API.\n useImperativeHandle(ref, () => ({\n setVisibleSegments: (visibleSegmentsIds) => apiRef.current?.setItemsVisible(visibleSegmentsIds),\n showAllSegments: () => apiRef.current?.setItemsVisible(allSegmentIds),\n }));\n\n // Get inner area title and description for donut chart.\n const innerArea = useInnerArea(originalSeries, props);\n\n // We convert pie tooltip options to the core chart's getTooltipContent callback,\n // ensuring no internal types are exposed to the consumer-defined render functions.\n const getTooltipContent: CoreChartProps[\"getTooltipContent\"] = () => {\n const transformDetailsProps = ({\n point,\n }: CoreChartProps.TooltipDetailsProps): PieChartProps.TooltipDetailsRenderProps => {\n return {\n totalValue: point.total ?? 0,\n segmentValue: point.y ?? 0,\n segmentId: getOptionsId(point.options),\n segmentName: point.name ?? \"\",\n };\n };\n const transformSlotProps = (props: CoreChartProps.TooltipSlotProps): PieChartProps.TooltipDetailsRenderProps => {\n const point = props.items[0].point;\n return transformDetailsProps({ point, hideTooltip: props.hideTooltip });\n };\n return {\n header: tooltip?.header ? (props) => tooltip.header!(transformSlotProps(props)) : undefined,\n details: tooltip?.details ? (props) => tooltip.details!(transformDetailsProps(props)) : undefined,\n body: tooltip?.body ? (props) => tooltip.body!(transformSlotProps(props)) : undefined,\n footer: tooltip?.footer ? (props) => tooltip.footer!(transformSlotProps(props)) : undefined,\n };\n };\n\n // Convert pie segment props to Highcharts segment data labels.\n const segmentDataLabels:\n | Highcharts.SeriesPieDataLabelsOptionsObject\n | Highcharts.SeriesPieDataLabelsOptionsObject[] = {\n position: \"left\",\n formatter() {\n const { segmentTitle, segmentDescription } = props;\n const segmentProps = {\n // For pie series, we expect y, total, and name to be always present, and y to be non-null for any visible segment.\n // However, these are optional in Highcharts types, so we need to do a fallback.\n totalValue: this.total ?? 0,\n segmentValue: this.y ?? 0,\n segmentId: this.options.id,\n segmentName: this.options.name ?? \"\",\n };\n const title = segmentTitle ? segmentTitle(segmentProps) : this.name;\n const description = segmentDescription?.(segmentProps);\n if (title || description) {\n return renderToStaticMarkup(\n <text>\n {title ? <tspan>{title}</tspan> : null}\n <br />\n {description ? <tspan style={Styles.segmentDescriptionCss}>{description}</tspan> : null}\n </text>,\n );\n }\n return null;\n },\n useHTML: false,\n };\n\n const highchartsOptions: Highcharts.Options = {\n chart: {\n events: {\n render(event) {\n innerArea.onChartRender.call(this, event);\n },\n },\n },\n plotOptions: {\n pie: {\n dataLabels: segmentDataLabels,\n },\n },\n series,\n };\n\n return (\n <InternalCoreChart\n {...props}\n callback={(api) => (apiRef.current = api)}\n options={highchartsOptions}\n tooltip={tooltip}\n getTooltipContent={getTooltipContent}\n visibleItems={props.visibleSegments}\n onVisibleItemsChange={onVisibleSegmentsChange}\n className={testClasses.root}\n />\n );\n },\n);\n"]}
|