@ssa-ui-kit/core 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@ export interface GaugeBarProps {
21
21
  max?: number;
22
22
  }
23
23
  export interface BarGaugeChartProps {
24
- title?: string;
24
+ title?: React.ReactNode;
25
25
  widgetCardProps?: WidgetCardProps;
26
26
  bars?: GaugeBarProps[];
27
27
  features?: BarGaugeChartFeature[];
@@ -1,16 +1 @@
1
1
  export declare const FONT_FAMILY = "Manrope, sans-serif";
2
- export declare const TITLE_PADDING_LEFT: {
3
- mobile: number;
4
- md: number;
5
- other: number;
6
- };
7
- export declare const TITLE_PADDING_TOP: {
8
- mobile: number;
9
- md: number;
10
- other: number;
11
- };
12
- export declare const TITLE_FONT_SIZE: {
13
- mobile: number;
14
- md: number;
15
- other: number;
16
- };
@@ -15,7 +15,7 @@ export interface BarLineComplexChartProps extends Omit<PlotParams, 'layout'> {
15
15
  lineShape?: Plotly.ScatterLine['shape'];
16
16
  width?: string;
17
17
  height?: string;
18
- title?: string;
18
+ title?: React.ReactNode;
19
19
  maxVisibleBars?: number;
20
20
  maxVisibleLines?: number;
21
21
  container?: Element | DocumentFragment;
@@ -6,7 +6,7 @@ type Datum = LineSeries['data'][number];
6
6
  export interface BigNumberChartProps {
7
7
  data: Datum[];
8
8
  interactive?: boolean;
9
- title?: string;
9
+ title?: React.ReactNode;
10
10
  widgetCardProps?: WidgetCardProps;
11
11
  trendLineProps?: Omit<TrendLineProps, 'data' | 'height' | 'width'>;
12
12
  features?: BigNumberChartFeatures[];
@@ -5,7 +5,7 @@ export type CandlestickChartFeatures = 'header' | 'fullscreenMode';
5
5
  export interface CandlestickChartProps extends Partial<Omit<PlotParams, 'data' | 'style'>> {
6
6
  data: CandlestickChartData;
7
7
  style?: CandlestickStyle;
8
- title?: string;
8
+ title?: React.ReactNode;
9
9
  features?: CandlestickChartFeatures[];
10
10
  widgetCardProps?: WidgetCardProps;
11
11
  }
@@ -5,7 +5,7 @@ export interface GaugeChartProps extends Pick<GaugeChartLabelsProps, 'maxLabel'
5
5
  minValue: number;
6
6
  maxValue: number;
7
7
  value: number;
8
- title?: string;
8
+ title?: React.ReactNode;
9
9
  segments?: {
10
10
  value: number;
11
11
  id?: string;
@@ -4,7 +4,7 @@ declare const ResponsiveRadar: <D extends Record<string, unknown>>(props: import
4
4
  export type RadarChartFeatures = 'header' | 'fullscreenMode';
5
5
  type ResponsiveRadarProps<D extends Record<string, unknown>> = ComponentProps<typeof ResponsiveRadar<D>>;
6
6
  export interface RadarChartProps<D extends Record<string, unknown>> extends Omit<ResponsiveRadarProps<D>, 'legends'> {
7
- title?: string;
7
+ title?: React.ReactNode;
8
8
  legends?: Partial<NonNullable<ResponsiveRadarProps<D>['legends']>[number]>[];
9
9
  features?: RadarChartFeatures[];
10
10
  widgetCardProps?: WidgetCardProps;
@@ -10,7 +10,7 @@ export type TreeMapChartFeature = 'header' | 'fullscreenMode';
10
10
  type NivoTreeMapChartProps = React.ComponentProps<typeof ResponsiveTreeMap<TreeNode>>;
11
11
  export interface TreeMapChartProps extends Omit<NivoTreeMapChartProps, 'data'> {
12
12
  data: TreeNode;
13
- title?: string;
13
+ title?: React.ReactNode;
14
14
  fullScreen?: boolean;
15
15
  features?: TreeMapChartFeature[];
16
16
  widgetCardProps?: WidgetCardProps;
package/dist/index.js CHANGED
@@ -15239,7 +15239,7 @@ const TextareaBase = /*#__PURE__*/base_default()('textarea', true ? {
15239
15239
  status = 'basic'
15240
15240
  }) => getStatusBoxShadow(theme, status, 'rest'), ";color:", ({
15241
15241
  theme
15242
- }) => theme.colors.greyDarker, ";width:100%;min-height:114px;padding:14px;font-weight:400;font-size:0.875rem;line-height:1rem;&::placeholder{color:", ({
15242
+ }) => theme.colors.greyDarker, ";width:100%;max-width:100%;box-sizing:border-box;min-height:114px;padding:14px;font-weight:400;font-size:0.875rem;line-height:1rem;&::placeholder{color:", ({
15243
15243
  theme
15244
15244
  }) => theme.colors.greyDarker60, ";}&[readonly]{cursor:default;}&:disabled{color:", ({
15245
15245
  theme
@@ -15247,7 +15247,7 @@ const TextareaBase = /*#__PURE__*/base_default()('textarea', true ? {
15247
15247
  theme
15248
15248
  }) => `inset 0 0 1.5px 0 ${theme.colors.grey}`, ";background:", ({
15249
15249
  theme
15250
- }) => theme.colors.greyLighter, ";&::placeholder{color:", ({
15250
+ }) => theme.colors.greyLighter, ";resize:none;&::placeholder{color:", ({
15251
15251
  theme
15252
15252
  }) => theme.colors.grey, ";}}&:hover:not(:disabled, [readonly]){box-shadow:", ({
15253
15253
  theme,
@@ -15357,7 +15357,8 @@ const Textarea = /*#__PURE__*/external_react_default().forwardRef(function Texta
15357
15357
  onPaste,
15358
15358
  register,
15359
15359
  setCountChar,
15360
- status = 'basic'
15360
+ status = 'basic',
15361
+ ...rest
15361
15362
  }, ref) {
15362
15363
  (0,external_react_namespaceObject.useEffect)(() => {
15363
15364
  if (!register) {
@@ -15376,6 +15377,7 @@ const Textarea = /*#__PURE__*/external_react_default().forwardRef(function Texta
15376
15377
  onPaste: onPaste,
15377
15378
  title: title,
15378
15379
  status: status,
15380
+ ...rest,
15379
15381
  ...registerResult,
15380
15382
  onChange: (0,utils_namespaceObject.callAll)(setCountChar, onChange),
15381
15383
  ref: (0,external_floating_ui_react_namespaceObject.useMergeRefs)([registerResult?.ref, ref])
@@ -40385,21 +40387,6 @@ const BarLineComplexChartTooltip = /*#__PURE__*/(0,external_react_namespaceObjec
40385
40387
  });
40386
40388
  ;// ./src/components/Charts/BarLineComplexChart/constants.ts
40387
40389
  const FONT_FAMILY = 'Manrope, sans-serif';
40388
- const TITLE_PADDING_LEFT = {
40389
- mobile: 10,
40390
- md: 10,
40391
- other: 20
40392
- };
40393
- const TITLE_PADDING_TOP = {
40394
- mobile: 13,
40395
- md: 18,
40396
- other: 20
40397
- };
40398
- const TITLE_FONT_SIZE = {
40399
- mobile: 16,
40400
- md: 16,
40401
- other: 20
40402
- };
40403
40390
  ;// ./src/components/Charts/hooks/usePlotlyDefaultConfig.ts
40404
40391
 
40405
40392
  const usePlotlyDefaultConfig = () => {
@@ -40444,6 +40431,7 @@ function BarLineComplexChartView_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You
40444
40431
 
40445
40432
 
40446
40433
 
40434
+
40447
40435
  var BarLineComplexChartView_ref = true ? {
40448
40436
  name: "sj7adp",
40449
40437
  styles: "background:#fff;border-radius:8px;box-shadow:-2px 2px 8px 0px rgba(43, 45, 49, 0.24);padding:4px 8px"
@@ -40462,7 +40450,6 @@ const BarLineComplexChartView = ({
40462
40450
  const theme = (0,react_namespaceObject.useTheme)();
40463
40451
  const plotlyWrapperRef = (0,external_react_namespaceObject.useRef)(null);
40464
40452
  const plotlyDefaultLayoutConfig = usePlotlyDefaultConfig();
40465
- const deviceType = (0,hooks_namespaceObject.useDeviceType)();
40466
40453
  const {
40467
40454
  data
40468
40455
  } = useBarLineComplexChartContext();
@@ -40477,6 +40464,9 @@ const BarLineComplexChartView = ({
40477
40464
  const {
40478
40465
  setIsOpen
40479
40466
  } = useTooltipContext();
40467
+ const {
40468
+ features
40469
+ } = useBarLineComplexChartContext();
40480
40470
  const {
40481
40471
  layout = {},
40482
40472
  config = {},
@@ -40484,8 +40474,6 @@ const BarLineComplexChartView = ({
40484
40474
  } = props;
40485
40475
  const {
40486
40476
  margin = {},
40487
- title = {},
40488
- titlefont = {},
40489
40477
  yaxis = {},
40490
40478
  yaxis2 = {},
40491
40479
  xaxis = {},
@@ -40498,9 +40486,6 @@ const BarLineComplexChartView = ({
40498
40486
  size: isFullscreenMode ? 16 : 12,
40499
40487
  weight: 500
40500
40488
  };
40501
- if (typeof props.cardProps?.title === 'string' && typeof title !== 'string' && typeof title.text !== 'string') {
40502
- title.text = props.cardProps.title;
40503
- }
40504
40489
  const formattedTicks = timestamps.map((timestamp, index) => {
40505
40490
  const dateTime = new Date(timestamp);
40506
40491
  const monthYear = dateTime.toLocaleDateString('en-US', {
@@ -40570,11 +40555,15 @@ const BarLineComplexChartView = ({
40570
40555
  window.removeEventListener('resize', handleDebouncedFn, false);
40571
40556
  };
40572
40557
  }, []);
40558
+ // title is rendered as an absolutely positioned overlay so it shares the same
40559
+ // visual row as Plotly's mode bar buttons, matching the original Plotly title behavior.
40560
+ // Plotly does not support JSX in layout.title, so this DOM overlay is used instead.
40561
+ // The Wrapper is kept `position: relative` so the overlay coordinates are relative to the chart.
40573
40562
  return (0,jsx_runtime_namespaceObject.jsxs)(Wrapper_Wrapper, {
40574
40563
  className: "bar-line-complex-chart-wrapper",
40575
40564
  ref: plotlyWrapperRef,
40576
40565
  css: /*#__PURE__*/(0,react_namespaceObject.css)({
40577
- position: isFullscreenMode ? 'fixed' : 'static',
40566
+ position: isFullscreenMode ? 'fixed' : 'relative',
40578
40567
  top: isFullscreenMode ? '2.5%' : 'unset',
40579
40568
  left: isFullscreenMode ? '2.5%' : 'unset',
40580
40569
  width: isFullscreenMode ? '95%' : width,
@@ -40582,6 +40571,7 @@ const BarLineComplexChartView = ({
40582
40571
  borderRadius: 20,
40583
40572
  zIndex: isFullscreenMode ? 2 : 1,
40584
40573
  overflow: 'hidden',
40574
+ background: theme.colors.white,
40585
40575
  boxShadow: 'rgba(42, 48, 57, 0.08) 0px 10px 40px 0px',
40586
40576
  '& .plotly': {
40587
40577
  '& > div': isFullscreenMode && {
@@ -40595,7 +40585,28 @@ const BarLineComplexChartView = ({
40595
40585
  }
40596
40586
  }
40597
40587
  }, true ? "" : 0, true ? "" : 0),
40598
- children: [(0,jsx_runtime_namespaceObject.jsx)((external_react_plotly_js_default()), {
40588
+ children: [features?.includes('header') && props.cardProps?.title && (0,jsx_runtime_namespaceObject.jsx)(CardHeader_CardHeader, {
40589
+ css: /*#__PURE__*/(0,react_namespaceObject.css)({
40590
+ position: 'absolute',
40591
+ top: isFullscreenMode ? '13px' : '10px',
40592
+ left: '10px',
40593
+ width: 'auto',
40594
+ marginBottom: 0,
40595
+ zIndex: 1
40596
+ }, true ? "" : 0, true ? "" : 0),
40597
+ children: (0,jsx_runtime_namespaceObject.jsx)(WidgetCardTitle, {
40598
+ variant: "h3",
40599
+ weight: "bold",
40600
+ css: /*#__PURE__*/(0,react_namespaceObject.css)({
40601
+ flexDirection: 'row',
40602
+ fontSize: isFullscreenMode ? '24px' : '12px',
40603
+ [theme.mediaQueries.md]: {
40604
+ fontSize: isFullscreenMode ? '24px' : '16px'
40605
+ }
40606
+ }, true ? "" : 0, true ? "" : 0),
40607
+ children: props.cardProps.title
40608
+ })
40609
+ }), (0,jsx_runtime_namespaceObject.jsx)((external_react_plotly_js_default()), {
40599
40610
  divId: 'bar-line-complex-chart-graph',
40600
40611
  css: /*#__PURE__*/(0,react_namespaceObject.css)({
40601
40612
  width: isFullscreenMode ? '100%' : width,
@@ -40615,27 +40626,12 @@ const BarLineComplexChartView = ({
40615
40626
  orientation: 1,
40616
40627
  margin: {
40617
40628
  b: isFullscreenMode ? 15 : 0,
40618
- l: orientation === 'v' ? (0,utils_namespaceObject.propOr)(TITLE_PADDING_LEFT.other, deviceType)(TITLE_PADDING_LEFT) : isFullscreenMode ? 30 : 15,
40629
+ l: orientation === 'v' ? 10 : isFullscreenMode ? 30 : 15,
40619
40630
  r: orientation === 'v' ? 40 : 0,
40620
- t: (0,utils_namespaceObject.propOr)(TITLE_PADDING_TOP.other, deviceType)(TITLE_PADDING_TOP) + 25,
40631
+ t: features?.includes('header') && props.cardProps?.title ? isFullscreenMode ? 45 : 43 : 10,
40621
40632
  pad: 10,
40622
40633
  ...margin
40623
40634
  },
40624
- title: typeof title === 'string' ? title : {
40625
- x: 0,
40626
- y: 1,
40627
- font: {
40628
- size: isFullscreenMode ? 24 : (0,utils_namespaceObject.propOr)(TITLE_FONT_SIZE.other, deviceType)(TITLE_FONT_SIZE),
40629
- weight: 700,
40630
- family: FONT_FAMILY,
40631
- ...titlefont
40632
- },
40633
- pad: {
40634
- l: (0,utils_namespaceObject.propOr)(TITLE_PADDING_LEFT.other, deviceType)(TITLE_PADDING_LEFT),
40635
- t: (0,utils_namespaceObject.propOr)(TITLE_PADDING_TOP.other, deviceType)(TITLE_PADDING_TOP)
40636
- },
40637
- ...title
40638
- },
40639
40635
  barmode: 'group',
40640
40636
  autosize: false,
40641
40637
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -40785,6 +40781,8 @@ const BarLineComplexChartComponent = ({
40785
40781
  onFullscreenModeChange,
40786
40782
  ...rest
40787
40783
  }) => {
40784
+ const effectiveTitle = cardProps?.title ?? title;
40785
+ const effectiveFeatures = effectiveTitle && !features.includes('header') ? [...features, 'header'] : features;
40788
40786
  const tooltip = useTooltip();
40789
40787
  const {
40790
40788
  isFullscreenMode,
@@ -40807,14 +40805,14 @@ const BarLineComplexChartComponent = ({
40807
40805
  lineShape: lineShape,
40808
40806
  maxVisibleBars: maxVisibleBars,
40809
40807
  maxVisibleLines: maxVisibleLines,
40810
- features: features,
40808
+ features: effectiveFeatures,
40811
40809
  children: (0,jsx_runtime_namespaceObject.jsx)(TooltipContext.Provider, {
40812
40810
  value: tooltip,
40813
40811
  children: (0,jsx_runtime_namespaceObject.jsx)(BarLineComplexChartInternal, {
40814
40812
  ...rest,
40815
40813
  cardProps: {
40816
40814
  ...cardProps,
40817
- title: cardProps?.title || title
40815
+ title: effectiveTitle
40818
40816
  }
40819
40817
  })
40820
40818
  })
@@ -47802,6 +47800,7 @@ const getCandlestickPlotData = (style, data, increasingColor, decreasingColor) =
47802
47800
  }];
47803
47801
  };
47804
47802
  ;// ./src/components/Charts/CandlestickChart/CandlestickChart.tsx
47803
+
47805
47804
  function CandlestickChart_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
47806
47805
 
47807
47806
 
@@ -47812,14 +47811,23 @@ function CandlestickChart_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tr
47812
47811
 
47813
47812
 
47814
47813
 
47814
+
47815
47815
  var CandlestickChart_ref = true ? {
47816
+ name: "zxsb69",
47817
+ styles: "position:relative;width:100%;height:100%"
47818
+ } : 0;
47819
+ var CandlestickChart_ref2 = true ? {
47820
+ name: "1j8nx2m",
47821
+ styles: "position:absolute;top:1px;left:10px;width:auto;margin-bottom:0;z-index:1"
47822
+ } : 0;
47823
+ var CandlestickChart_ref3 = true ? {
47816
47824
  name: "w1atjl",
47817
47825
  styles: "width:100%;height:100%"
47818
47826
  } : 0;
47819
47827
  const CandlestickChartComponent = ({
47820
47828
  title,
47821
47829
  data,
47822
- features,
47830
+ features = [],
47823
47831
  widgetCardProps,
47824
47832
  style = 'hollow',
47825
47833
  ...plotParams
@@ -47851,57 +47859,66 @@ const CandlestickChartComponent = ({
47851
47859
  gravity: '1'
47852
47860
  });
47853
47861
  }
47854
- return (0,jsx_runtime_namespaceObject.jsx)(WithWidgetCard, {
47855
- features: features,
47856
- cardProps: {
47857
- ...widgetCardProps
47858
- },
47859
- children: (0,jsx_runtime_namespaceObject.jsx)((external_react_plotly_js_default()), {
47860
- layout: {
47861
- ...plotlyDefaultLayoutConfig.layout,
47862
- title: {
47863
- text: title,
47864
- x: 0,
47865
- y: 1,
47866
- pad: {
47867
- l: 10,
47868
- t: 5
47869
- },
47870
- font: {
47871
- size: 24,
47872
- weight: 700,
47873
- family: 'Manrope, sans-serif'
47874
- }
47875
- },
47876
- dragmode: 'zoom',
47877
- xaxis: {
47878
- rangeslider: {
47879
- visible: false
47880
- }
47881
- },
47882
- yaxis: {
47883
- side: 'right'
47884
- },
47885
- margin: {
47886
- t: 20,
47887
- b: 40,
47888
- l: 20,
47889
- r: 20
47890
- },
47891
- showlegend: false,
47892
- ...layout
47893
- },
47894
- css: CandlestickChart_ref,
47895
- useResizeHandler: true,
47896
- data: plotData,
47897
- config: {
47898
- ...plotlyDefaultLayoutConfig.config,
47899
- modeBarButtons: [extraModeBarButtons, ['zoom2d', 'pan2d', 'select2d', 'zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d']],
47900
- ...config
47862
+ return (
47863
+ // title is rendered as an absolutely positioned overlay so it shares the same
47864
+ // visual row as Plotly's mode bar buttons, matching the original Plotly title behavior.
47865
+ // Plotly does not support JSX in layout.title, so this DOM overlay is used instead.
47866
+ (0,jsx_runtime_namespaceObject.jsx)(WithWidgetCard, {
47867
+ features: features,
47868
+ cardProps: {
47869
+ ...widgetCardProps
47901
47870
  },
47902
- ...restPlotParams
47871
+ children: (0,jsx_runtime_namespaceObject.jsxs)("div", {
47872
+ css: CandlestickChart_ref,
47873
+ children: [title && (0,jsx_runtime_namespaceObject.jsx)(CardHeader_CardHeader, {
47874
+ css: CandlestickChart_ref2,
47875
+ children: (0,jsx_runtime_namespaceObject.jsx)(WidgetCardTitle, {
47876
+ variant: "h3",
47877
+ weight: "bold",
47878
+ css: /*#__PURE__*/(0,react_namespaceObject.css)({
47879
+ flexDirection: 'row',
47880
+ lineHeight: 1,
47881
+ fontSize: '24px',
47882
+ [theme.mediaQueries.md]: {
47883
+ fontSize: '24px'
47884
+ }
47885
+ }, true ? "" : 0, true ? "" : 0),
47886
+ children: title
47887
+ })
47888
+ }), (0,jsx_runtime_namespaceObject.jsx)((external_react_plotly_js_default()), {
47889
+ layout: {
47890
+ ...plotlyDefaultLayoutConfig.layout,
47891
+ dragmode: 'zoom',
47892
+ xaxis: {
47893
+ rangeslider: {
47894
+ visible: false
47895
+ }
47896
+ },
47897
+ yaxis: {
47898
+ side: 'right'
47899
+ },
47900
+ margin: {
47901
+ t: 20,
47902
+ b: 40,
47903
+ l: 20,
47904
+ r: 20
47905
+ },
47906
+ showlegend: false,
47907
+ ...layout
47908
+ },
47909
+ css: CandlestickChart_ref3,
47910
+ useResizeHandler: true,
47911
+ data: plotData,
47912
+ config: {
47913
+ ...plotlyDefaultLayoutConfig.config,
47914
+ modeBarButtons: [extraModeBarButtons, ['zoom2d', 'pan2d', 'select2d', 'zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d']],
47915
+ ...config
47916
+ },
47917
+ ...restPlotParams
47918
+ })]
47919
+ })
47903
47920
  })
47904
- });
47921
+ );
47905
47922
  };
47906
47923
  const CandlestickChart = WithFullscreenMode(CandlestickChartComponent);
47907
47924
  ;// ./src/components/Charts/CandlestickChart/index.ts