Skip to content

Releases

v0.19.4

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 06 Oct 20:47
ef5bea9

Adds

  • markersPossible on SeriesChart: the hint row keeps the room of the hint with markers, so the chart does not move when trades come and go.
  • SeriesHintRow: the same row for a loading stand-in, with the hint held unseen and hidden from screen readers.

Changes

  • The hint row holds its hint unseen under the readout, so inspecting a point no longer shortens it.
  • A chart whose plot fails to load keeps the held hint row.

v0.19.3

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 06 Oct 19:40
e1e7b16

Adds

  • seriesPlotStyle(height, { fixed, minHeight }) returns the exact style of a SeriesChart plot, for stand-ins inside a parent that has container-type: inline-size.
  • rangeButtonsFit, the test RangePicker uses to decide whether its buttons fit.
  • RangePicker collapses to its select whenever its buttons do not fit the space it is given, whatever the window width. collapseBelow still applies too.
  • --sui-range-picker-justify places the collapsed select; a Card header sets it to end.

Changes

  • SeriesChart's plot is always exactly its container's width, and its height follows that width. v0.19.2's aspect ratio with a minimum height could make the plot, and whatever held it, wider than a narrow container. Heights are unchanged.
  • RangePicker keeps one width and height in both states, shows the select until it has measured the buttons, and moves focus back to the selected button.
  • Card header actions take the room left beside the title, so they give up room before the title wraps.

v0.19.2

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 06 Oct 19:23
0460305

Adds

  • SeriesChart minHeight: a plot that scales with its width is never shorter than it, by default seriesMinHeight(height) (220px, or height when less).
  • An edge chip for levels: those beyond the top or bottom gather into one chip, "▲ 2 above" or "▼ 6 below", a button that lists each level's label and value under the chart.
  • Exports: SERIES_CHART_MIN_HEIGHT, seriesMinHeight, layoutLevelTags, levelGroupText, and the types LevelEdge, LevelTagLayout, LevelTagWant.

Changes

  • A narrow card no longer draws a plot under 100px tall.
  • Level tags that cannot all fit join an edge chip ("▲ 3 more") instead of being pushed off the plot.
  • A chip moves left of the latest price rather than cover it.
  • Far levels no longer get a pinned tag each.

v0.19.1

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 06 Oct 13:11
20fe643

Adds

  • SeriesChart failed prop (default "Could not load the chart.") shown when the plot's code fails to load, as offline.
  • SeriesChart onfailed callback, called once when that happens.

Changes

  • A plot that fails to load no longer shows the "not enough history" text, and keeps the plot's height and the readout row's space, so the page does not shift.

v0.19.0

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 06 Oct 04:26
d697971

SeriesChart now draws with LayerChart instead of Lightweight Charts, and can show order price lines.

Adds

  • levels prop on SeriesChart: labelled horizontal price lines (for example limit, stop, take profit, stop loss) with a tag at the right edge.
    • A level within 10% of the price range widens the scale to fit it; a farther one is pinned to the top or bottom edge with an arrow and its value.
    • Levels are announced to screen readers, and each tag names what it is, so colour is never the only signal.
    • Tags drop under the crosshair while inspecting and fade over the live price dot.
  • Pure helpers in /chart and the root: levelsInRange, boundsWithLevels, levelPin, placeLevels, levelText, levelsSummary, stackLabels, xAtTime, candleMarks, candleWidthByStep, with their types and constants.

Changes

  • The plot is drawn in SVG with layerchart 2.5.1 (pinned) and still loads lazily.
  • Candles narrower than 3px draw as lines; a flat candle draws as a short horizontal line.
  • With byTime, the x axis is a true time scale.
  • If the plot fails to load, the empty text shows instead.
  • Charts are 16px shorter: the attribution row is gone.

Breaking

  • lightweight-charts is removed, along with the TradingView attribution.
  • Removed exports: CHART_ATTRIBUTION_HEIGHT, TRADINGVIEW_NOTICE, TRADINGVIEW_CREDIT, TRADINGVIEW_URL, chartRows, ChartRow, chartSlots, slotAtTime, xAtSlot, colorWithAlpha, MAX_TIME_SLOTS.

v0.18.3

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 05 Oct 16:49
0ebc795

Fixes

  • SeriesChart fits a trade priced a little outside the series, up to 5% of its range, into the plot at its true price, so a fill just under a 1-minute candle's low no longer draws over the time axis or into the attribution row. Trades further off are still left out.

Adds

  • CHART_ATTRIBUTION_HEIGHT (16), the attribution row's height in pixels with its margins, exported from the package root and /chart, so a loading skeleton can reserve the same space under the plot.
  • markersInRange, boundsWithMarkers and MARKER_PRICE_TOLERANCE, the maths behind the fit.

Upgrading

  • No breaking changes. withinPlotHeight is still exported but SeriesChart no longer uses it.

v0.18.2

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 05 Oct 15:18
20c1377

An accessibility patch for SeriesChart's trade markers, summary and attribution (WCAG 2.2 AA).

Changes

  • A trade group's name starts with its visible count, "+5 more, 6 trades from ... to ...: 4 buys, 2 sells", so voice control finds it by what it shows.
  • Group markers are disclosures with aria-expanded and aria-controls on the list of picked trades; single trades keep aria-pressed.
  • A pick says "6 trades picked", and the readout speaks only when a press changes the pick, never again when focus moves on.
  • Markers no longer show a floating tooltip the pointer could not reach; the readout shows the trade.
  • The chart summary is in the reading order, so browse mode reads it.
  • The TradingView link is a 24px target that markers never cover; chart height is unchanged.
  • The pointer hint names the arrow keys: "Hover, drag or use arrow keys to see a price."

Install

"@firetailhosting/solscope-ui": "github:FiretailHosting/solscope-ui#v0.18.2"

v0.18.1

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 05 Oct 15:10
6477850

A patch for SeriesChart, the Lightweight Charts chart from v0.18.0.

Changes

  • TradingView's attribution is a small "Charts by TradingView" text link in its own row under the plot, in place of the logo that covered the lowest axis label and took about a third of a 96px chart.
  • The link opens https://www.tradingview.com/ in a new tab with rel="noopener noreferrer", so a click no longer sends the page URL as the Referer.
  • Each chart is 16px taller for that row; it renders with the page, so nothing moves when the chart loads.
  • New exports TRADINGVIEW_NOTICE, TRADINGVIEW_URL and TRADINGVIEW_CREDIT; show TRADINGVIEW_NOTICE once on a page your users can reach, as Lightweight Charts' license asks.
  • A trade group whose trades all read the same time says "6 trades at Oct 1, 2:00 AM: 4 buys, 2 sells" instead of "from Oct 1, 2:00 AM to Oct 1, 2:00 AM".
  • The chart's summary is read once: only the chart picture is described by it, not the keyboard slider too.

Install

"@firetailhosting/solscope-ui": "github:FiretailHosting/solscope-ui#v0.18.1"

v0.18.0

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 05 Oct 14:16
b565f81

Adds

  • RangePicker: a chart's range as segmented buttons, or a labelled native select below collapseBelow pixels of screen width (default 480). Options are RangeOption<Value> ({ value, label, disabled? }), values can be numbers.
  • Trader pictures on trade markers: SeriesMarker takes optional avatar (picture URL) and name (for initials). A side ring and an up or down badge keep buy and sell clear without colour; the picture falls back to initials, then to the buy or sell shape. Pictures load lazily, once per page.
  • Overlapping markers group into one button with a "+N" count, named with its trades or "N trades from ... to ...: N buys, N sells". A picked group lists its trades under the chart.
  • SeriesChart summary prop: the chart's description for screen readers; by default a sentence with its span, start, end, high and low.
  • Chart helpers in @firetailhosting/solscope-ui/chart and the main entry: chartSlots, chartRows, slotAtTime, xAtSlot, seriesSummary, colorWithAlpha, clusterMarkers, clusterLabel, clusterSide, markerLabel, markerFace, initials.

Changes

  • SeriesChart draws with Lightweight Charts 5.2.1 (Apache-2.0, TradingView) on a canvas, loaded in its own chunk once a chart mounts (about 62 kB gzipped). Props are unchanged.
  • The labels, crosshair, tooltip, keyboard slider, readout and markers stay DOM over the canvas, so keyboard and screen reader use work as in 0.17.0, including inspection kept through live ticks.
  • A new series wipes in from the left instead of drawing the line in; a live tick no longer replays it.
  • TradingView's attribution logo shows at the bottom left of each chart, above the time axis, as its license asks; it is a named link, last in the chart's tab order.
  • candleWidth and the along of markersInTime are no longer used by the chart but stay exported.

v0.17.0

Choose a tag to compare

@Ovi1kanobe Ovi1kanobe released this 05 Oct 03:56
5345f22

Adds

  • axisFormat on SeriesChart (defaults to format) for the guide, zero and level labels.
  • carriedIndex in the chart helpers.

Changes

  • A loading Button stays enabled and keeps focus: aria-disabled and aria-busy instead of native disabled, and presses are ignored, so a submit cannot repeat. disabled stays native.
  • SeriesChart keeps an inspected point through live ticks, by timestamp.
  • SeriesChart no longer reads its hint aloud on every tick; only inspection content is a live region.
  • The markers hint says "Select a marker to see the trade".