CHANGELOG
4.0.3 (2026-07-06)
Bug Fixes
* security: escape attribute context in text background filter (ff22a37)
4.0.2 (2026-07-06)
Bug Fixes
* canvas: skip line points in subchart (3831ec6)
* legend: prevent hidden legend hover from dimming visible legends on canvas (3ae8438), closes #4158 #4159
* tooltip: fix focus point and tooltip for single x-axis (d7cba7f), closes #3968 #4156
4.0.1 (2026-06-16)
Bug Fixes
* types: add canvas subpath mapping (a6b180a)
4.0.0 (2026-06-16)
Bug Fixes
* background: Correct background image position in canvas (34009de)
* boost: Correct rootSelector typo in CSS scope initialization (a0673ee), closes #4123
* boost: Reuse Worker and Object URL to prevent memory leak (fc812fb), closes #3720
* canvas: address canvas render review issues (70df3f6)
* canvas: align candlestick labels with wick endpoints (b328da4)
* canvas: align rendering and touch interaction parity (5944cab)
* data: Add type check before 'in' operator in JSON dot-notation path resolver (67c00b9), closes #4116
* data: Handle non-array value for data.json (dc5d04c), closes #4103
* types: Add file extensions to types (02c7bf6), closes #4097
* types: Export shape option types from main entry point (#4109) (f4a236a), closes #4104
* util: camelCase SVG tag/attribute matching in sanitizer (631ddc5), closes #4078 #4106
* util: update sanitization function (#4105) (d492644)
* zoom: fix drag zoom boundary release and circle transition desync (00f6859), closes #4131 #4131
Features
* canvas: add canvas rendering mode (200c99e)
* esm: tree-shakable grid, regions, category modules (678e761)
* funnel: Rotate and spline option (7a7bf25), closes #4024
* plugin-tableview: add numberFormat configuration option (2abe355), closes #4140 #4141
BREAKING CHANGES
* esm: chart.export() and chart.flow() are no longer
included automatically in the ESM build. Explicit import required:
import bb, { bar, exportApi, flow } from "billboard.js";
bb.generate({ ...bar(), ...exportApi(), ...flow(), data: { ... } });
UMD bundle users are not affected.
* refactor(esm): remove prototype stubs for export and flow modules
Remove the stub implementations and delete calls that were added as
fallbacks — they are unnecessary now that the resolver pattern handles
lazy loading directly without stub cleanup.
* feat(esm): make grid, regions, category APIs tree-shakable
- Introduce grid(), regions(), category() resolver modules for opt-in ESM import
- Remove apiGrid, apiRegion, apiCategory from axis resolver
- Remove internal grid/region renderers from axis resolver
- Extend Chart/api/stubs with xgrids/ygrids/regions/category/categories stubs
- Add optional chaining in redraw/eventrect/flow/ChartInternal for grid/region methods
- Update UMD entry to auto-invoke new resolvers
- Update ESM entry to export new resolvers
- Point runtime error docs to new MODULE_IMPORTS.md guide
- Add tests for new optional modules
Add CHANGELOG-v4.md for release notes and MODULE_IMPORTS.md as the
canonical module import guide referenced from runtime error messages.
* esm: In ESM builds, chart.xgrids()/ygrids(), chart.regions(),
chart.category()/categories() now require explicit import:
import bb, {bar, grid, regions, category} from "billboard.js";
grid(); regions(); category(); // run once per app
UMD bundle users are not affected — the UMD entry auto-invokes all resolvers.
3.18.0 (2026-01-23)
Bug Fixes
* color: Fix color update on gradient (9d6d392), closes #4048
* data: Handle undefined values in total calculation (18a5b9b), closes #4073
* interaction: Fix data.onover call in touch event (5fe448c), closes #4076
* load: Update call sequence to be after data are unloaded (f9f4a86), closes #4052
* text: Fix multiline data labels vertial position (6b5580a), closes #4062
* text: Fix text alignment to center (9f2960d), closes #4081
* util: update sanitization function (#4085) (49e079c), closes #4078
Features
* arc: Intent to ship Arc's annotation (c740a3b), closes #3602
* data: Intent to ship data.stack.normalize.perGroup (c879c25), closes #4060
* treemap: Enhance label formatter to include tile size (71c0d06), closes #4066
3.17.4 (2026-01-14)
Bug Fixes
* all: Enforce script sanitization (ffd9f6f), closes #4078
3.17.3 (2026-01-13)
Bug Fixes
* all: Enforce on security vulnerability (c69320a), closes #4078
3.17.3 (2026-01-13)
Bug Fixes
* all: Enforce on security vulnerability (c69320a), closes #4078
3.17.3 (2026-01-13)
Bug Fixes
* all: Enforce on security vulnerability (c69320a), closes #4078
3.17.2 (2025-10-22)
Bug Fixes
* worker: Exclude empty data ran on Worker thread (a2e0f6e), closes #4044
3.17.1 (2025-10-20)
Bug Fixes
* load: Fix possible context loss (a40fd41), closes #4044
3.17.0 (2025-09-24)
Bug Fixes
* axis: Fix axis text position (b9f491b), closes #4017
* worker: Exclude empty data ran on Worker thread (4fbc2e8), closes #4041 #4042
Features
* axis: Intent to ship tick.inner (db1de3e), closes #4033
* data: Enhance data.labels.backgroundColors ran as function (0211d19), closes #4016
* label: Intent to ship label border (dd1d70e), closes #4021
* labels: Intent to ship data.labels.image (#4035) (487548a)
3.16.0 (2025-06-27)
Bug Fixes
* area-range: Fix line drawn when combining Area Range with regions (4a86e55), closes #3982 #3983
* axis: adjust tick generation logic for rotated axes (67c54aa), closes #3991
* core: Fix potential security vulnerability (a114a31), closes #3975
* data: Filter nullish data from rendering (02939b8), closes #3973
* domain: handle NaN values in data label calculations (bdd3589), closes #3985
* types: update type definitions for elements (591f6a6), closes #3969
* zoom: maintain zoom state during chart resize (2da91de), closes #3992
Features
* axis: Enhance axis.evalTextSize per axis (7fa445e), closes #4002
* axis: Intent to ship axis' tick.culling.reverse (1496d91), closes #3967
* bar: Intent to ship bar.connectLine (7dd7200), closes #3988 #4000
3.15.1 (2025-04-22)
Bug Fixes
* core: Fix potential security vulnerability (82ea7ac), closes #3975
3.15.0 (2025-03-20)
Bug Fixes
* axis: Fix axis tooltip visibility (c1c39e7), closes #3948
Features
* region: Enhance regions accept category range (904e35b), closes #3920
* regions: Intent to ship regions.label.center (31722d9), closes #3960
* resize: Container based auto resize (#3956) (fa3b751), closes #3955
3.14.3 (2025-01-07)
Bug Fixes
* tooltip: Fix tooltip interaction on viewBox (9deee8f), closes #3925
3.14.2 (2024-11-26)
Bug Fixes
* axis: Fix x axis extent to work (4d73834), closes #3768
* tooltip: Fix tooltip position on viewBox resizing (582feb4), closes #3917
3.14.1 (2024-11-18)
Bug Fixes
* point: fix data.onclick working with sensitivity function (587d71e), closes #3912
* tooltip: Hide tooltip on redraw when unexpected error (3540640), closes #3909 #3910
3.14.0 (2024-10-25)
Bug Fixes
* axis: fix error when showing tick only (705947f), closes #3881
* bar: fix representation of radius for small data (91b5dca), closes #3903
* event: Fix interaction with viewBox (243bf3c), closes #3414
* input: Fix touch/mouse input detection (3d4392a), closes #3854
* point: fix sensitivity error when blank area is clicked (0060786), closes #3900
* scale: Fix non-shape's element positioned accurately (216141b), closes #3907
* size: Fix legend overflows with padding fit mode (8357d11), closes #3872
* zoom: Fix unzoom after dynamic data load (385907e), closes #3878
* zoom: Prevent error for out of range (6f69e97), closes #3895
Features
* axis: Intent to ship axis.evalTextSize (87048e9), closes #3889
* interaction: Intent to ship interaction.onout (9c668e6), closes #3887
* legend: Pass visibility state to legend item's event callback (ba71911), closes #3897
* render: Add forced init option on lazy rendering (218ce46), closes #3106
* resize: Intent to ship resize.auto='viewBox' (db21387), closes #3893
3.13.0 (2024-08-23)
Bug Fixes
* regions: Mitigate broken dashed lines rendering (d1df575), closes #3790
* zoom: Fix zoom wheel interaction (81ea359), closes #3856
Features
* bar: Enhance bar width to adjust from callback (4ce74fc), closes #3820
* legend: Provide original data id in format callback (5ce41c7), closes #3663
* regions: Enhance regions rendering (567b323), closes #3830 #3790
* shape: Intent to ship area-step-range type (03b9a7d), closes #3776
* types: Add area-step-range chart type (2a763d2)
3.12.4 (2024-06-13)
Bug Fixes
* class: Fix to handle contorl/extended ascii for data names (7059779), closes #3804
* types: Missing tick.text.inner type added for xAxis (5c1a6a4), closes #3802
3.12.3 (2024-06-10)
Bug Fixes
* util: Update inputtype determination code (f6201ad), closes #3798
* zoom: Remove unused wheel listener (0b0e8f8), closes #3791
3.12.2 (2024-05-28)
Bug Fixes
* funnel: Fix padding and unload (945251b), closes #3787
3.12.1 (2024-05-27)
Bug Fixes
* treemap: Fix generation w/non-exist node (#3781) (eb53a12), closes #3777
3.12.0 (2024-05-27)
Bug Fixes
* api: Fix scatter type loading (413812d), closes #3740
* treemap: Fix generation w/non-exist node (02987ab), closes #3777
* treemap: Fix missing element arg on data.onover/out (22428dc), closes #3766
* types: Add missing arc.needle.value (e0a30fe), closes #3697
* types: Add missing region.label option (e03057c), closes #3732
* types: Correct typo in BarOptions (a0ad93a), closes #3749
* types: Fix missing polar type (7f5d5b0), closes #3778
Features
* axis: Intent to ship axis.tooltip (54e77cb), closes #3603
* axis: Intent to ship axis.x.forceAsSingle (6ad0554), closes #3764
* bundler: Migrate babel -> esbuild (ff0a98c), closes #3601
* funnel: Intent to ship funnel type (e4cdda1), closes #3449
3.11.3 (2024-03-18)
Bug Fixes
* clip: Remove setting full domain url (83bbd10), closes #3684
* legend: Fix legend title to show data.names if set (e8fa131), closes #3662
* tooltip: Fix tooltip y coordinate with arc.rangeText (d28258e), closes #3673
3.11.2 (2024-02-23)
Bug Fixes
* legend: Remove def element added on unload (cd79502), closes #3660
* point: Make point.pattern legend available for any chart type (143282b), closes #3653
* radar: Fix working on esm (5104d9c), closes #3658
3.11.1 (2024-02-22)
Bug Fixes
* bar: Fix bar's width update with x axis min/max (170d836), closes #3636
* types: Specify d3 types as dependency (dc381ea), closes #2954 #issuecomment-1949187551
3.11.0 (2024-02-15)
Bug Fixes
* Axis: Correct x axis height calculation for autorotated x axis tick texts (d5b5d09), closes #3584 #3585
* axis: Fix x Axis tick height calculation (ac26f11), closes #3643
* axis: Fixed x axis tick texts rotation when legend is positioned right (ed4703e), closes #3570 #3571
* packages: Fix build error with moduleResolution:bundler (9c17eea), closes #3541
* radar: Fix axes texts exclusion on resize (3a814a5), closes #3126
* regions: Fix applying regions class (7e4fa71), closes #3611
* tooltip: Fix tooltip position from interference (9d28cbb), closes #3575
* tooltip: Fix wrong tooltip selection on browser scroll change (#3593) (8f80637), closes #3592
* zoom: Fix zoom state on data load (967207b), closes #3422
Features
* arc: Intent to ship arc.rangeText (e887baf), closes #2120
* axis: Add x.tick.text.inner option (cfc856c), closes #3552
* gauge: Intent to ship gauge.enforceMinMax (c277201), closes #2125
* gauge: Intent to ship gauge.label.ratio (d4e49ba), closes #3633
* legend: Itent to ship legend.format, legend.tooltip (aecff2f), closes #3533
3.10.3 (2023-11-08)
Bug Fixes
* axis: Fix x axis autorotate option applies (e45eaf7), closes #3433 #3499
* labels: Fix data.labels rendering for ranged data (a8ebdef), closes #3495
* option: Fix rotated top padding (048c4e2), closes #3433
* tooltip: Fix tooltip.format.value arg for bar range data (c0f445e), closes #3507
3.10.2 (2023-10-27)
Bug Fixes
* module: Fix getFallback() uninitialized variable (57c140d), closes #3489
3.10.1 (2023-10-26)
Bug Fixes
* tooltip: Fix tooltip error on Arc type (5e80d9d), closes #3475 /github.com/naver/billboard.js/issues/3473#issuecomment-1781091685
3.10.0 (2023-10-25)
Bug Fixes
* api: Fix to return indexed categories (1209138), closes #3365
* axis: Fix axis.x.height=0 to be applied (0c562c3), closes #3424
* axis: Fix x axis tick text overlap with legend (796671f), closes #3485
* bar: Fix stacking bar position on multiple xs (674bad1), closes #3372
* candlestick: Fix rendering on rotated axis (fe4c04b), closes #3387
* clip: Fix x axis hide on title.bottom (d00052c), closes #3364
* domain: fix trimXDomain not trimming min (bacc287), closes #3420
* labels: Fix index argument for nullish value (13d1077), closes #3547
* option: Fix inconsistency of padding (694aa34), closes #3426
* point: Fix data.onclick not called when point.senstivity is radius (83b0206), closes #3466
* point: Fix pointFucusOnly check error (f9b65ac), closes #3407 #3456
* point: Fix rendering error when point.focus.only=true is set (787fd15), closes #3406
* shape: Fix circleY() undefined error (d245853), closes #3388
* subchart, zoom: Fix returning domain value (321510b), closes #3347
* subchart: Fix handlebar position (83ef6d0), closes #3358
* title: fix title text center align (b0fc214), closes #3363
* tooltip: Fix tooltip.format.value call (2e88484), closes #3371
* tooltip: Fix tootip display on tooltip.init (52083bf), closes #3369
* tooltip: Fix wrong .tooltip.show() on rotated axis (9b90c81), closes #3476
* tooltip: Fix wrong tooltip position with padding option (041e144), closes #3473
* zoom: Fix initial error empty data with zoom (a94d09c), closes #3470
Features
* api: Intent to ship subchart method (ac9e229), closes #3342
* plugin: Add nullString option (29bdb0c), closes #3412 #3413
* point: Intent to ship point.radialGradient (7b51fd6), closes #3405
* regions: Intent to ship regions.label (0496ec6), closes #3319
* theme: Add new modern theme (b0f1aa7)
* tooltip: Provide y position for tooltip position callback (a793a2e), closes #3434
3.9.4 (2023-09-04)
Bug Fixes
* tooltip: Fix error throw when tooltip.show=false is set (4081a90), closes #3396
3.9.3 (2023-08-09)
Bug Fixes
* arc: Fix shape rendering when data id equivalent of color string (047d1db), closes #3321
3.9.2 (2023-08-04)
Bug Fixes
* line: Fix step line path rendering on Windows (b2633b2), closes #3295
* load: Enhance tooltip update on dynamic load (1df1bd9), closes #3305
3.9.1 (2023-07-17)
Bug Fixes
* point: Fix point sensitivity pointe (a47e091), closes #3293
* tooltip: Fix tooltip positioning (cfec99f), closes #3291
3.9.0 (2023-07-03)
Bug Fixes
* export: Fix Plugin class import (24c0976), closes #3221
* shape: Fix shape rendering issue on Windows (cf1b484), closes #3222
* tooltip: Fix tooltip overflow when right side edge is hovered (9ce900d), closes #3254
Features
* arc: Intent to ship arc.needle (04e90aa), closes #3205
* bar: Intent to ship bar.front (f7e0d80), closes #2965
* data: Intent to ship data.labels.position function (59be3ec), closes #3237
* legend: Intent to ship legend.item.interaction.dblclick (18f5c4a), closes #1404
* legend: Intent to ship legent.item.interaction (af87d10), closes #1598
* point: Enhance point.sensitivity (a537201), closes #2568
* theme: Intent to ship dark theme (252a28e), closes #3229
3.8.2 (2023-05-18)
Bug Fixes
* api: fix classname setting for eventRect element (0a2fbde), closes #3203 #3218
3.8.1 (2023-05-04)
Bug Fixes
* api: fix tooltip work for .load() with xs key (13b9da7), closes #3194
* api: Fix tooltip.show() to work zoomed with xs option (cf82289), closes #3187
3.8.0 (2023-04-13)
Bug Fixes
* data: fix break when whole dataseries are null (#3134) (5d12c45), closes #3124
* grid: fix redundant <rect> appends (1039363), closes #3147
* options: Fix handling for falsy data.types (5eb731a), closes #3125
* sparkline: Fix to work point.focus.only option (65b3c1c), closes #3171
Features
* api: Enhance resizeAfter for .load/unload APIs (33bbca4), closes #3157
* axis: Intent to ship axis.x.inverted (e193c0f), closes #3137
* package: extends root div interface for styling (0a1fe08), closes #3162 #3163
* padding: Intent to ship padding='fit' (d760a63), closes #3118
3.7.5 (2023-03-06)
Bug Fixes
* bar: Fix broken bar shape transition with grouped radius option (600df46), closes #2642
* data: Fix tooltip event bound when data.xSort=false set (aa4afc3), closes #3100
* data: mitigate bar/bubble ranged data to handle data length than needed (51603ec), closes #3096
3.7.4 (2023-02-06)
Bug Fixes
* gauge: fix when has no data (efe7435), closes #3066
* react: Fix props argument handlling (fb38d30), closes #3075
* type: fix to export option type definition (e4f3a2f), closes #3077
3.7.3 (2023-01-26)
Bug Fixes
* bar: Fix bar radius on inverted axis (21b7004), closes #3054
* data: Fix ratio calculation (519cd0d), closes #3055
* type: align grid api with option interface (b89b74a), closes #3037
3.7.2 (2023-01-19)
Bug Fixes
* api: Fix tooltip.hide() error call for Arc types (163495b), closes #3038
* bar: Fix drawing on inverted axis (d25bf31), closes #3049
* type: fix wrong .grid() API param type (0ef8a51), closes #3037
3.7.1 (2023-01-13)
Bug Fixes
* internals: Fix unexpected initClip() call (162fbf7), closes #3012 #3035
3.7.0 (2023-01-11)
Bug Fixes
* axis: Fix axis label overlap when has no data (643357b), closes #2974
* axis: fix axis.y/y2.tick.format context error (54ee419), closes #2976
* domain: Fix wrong domain range setting (b55b153), closes #2962
* options: Fix data.regions path rendering for category axis (249d0ac), closes #2950
* plugin: Fix stanford scale to accept 0 as min value (02c4270), closes #2999
* selection: Fix selection w/point.focus.only=true & selection.multiple=false (af93a8a), closes #2928 #3013
* types: Add missing param definition for gauge.label.format (d663532), closes #2946
* types: Fix to referenced but missing d3 types (0b57454), closes #2954 #2961
* types: Support dual module type.d in TS >= 4.7 (143e491), closes #2952 #2953
Features
* api: Enhance .export() to preserve fontStyle (0809ae7), closes #2892
* arc: Intent to ship arc.cornerRadius (e8320cf), closes #2936
* tooltip: Enhance passing ratio value for stacked area/bar (9e7ff01), closes #2921
* treemap: Intent to ship treemap type (9809ef1), closes #123 #3002 #3004 #3006 #3007 #3008
3.6.3 (2022-10-28)
Bug Fixes
* axis: Fix translate NaN error (b8396a0), closes #2924
* interaction: Fix unset focused state (14f6de6), closes #2927
3.6.2 (2022-10-26)
Bug Fixes
* eventrect: Fix eventReceiver coordinates (6526c9e), closes #2913
3.6.1 (2022-10-21)
Bug Fixes
* interaction: Fix incorrect data.onover/out event call (1389d85), closes #2901
* tooltip: fix redundant onxxx callback calls (85cdf36), closes #2901
* type: add missing svg.classname type definition (72e5c84), closes #2893
3.6.0 (2022-09-29)
Bug Fixes
* area: Fix unnecessary area element generation (d43a1a7), closes #2826
* axis: fix undefined error reading generatedTicks (4f3c101), closes #2786
* data: Fix idConverter error (98f7103), closes #2808
* gauge: Fix size mismatch w/o gauge multi label text is hidden (6ee8a1e), closes #2799
* grid: Remove grid.y.ticks default value (4818e44), closes #2809
* legend: Add default for legend.contents.template (55fbb02), closes #2780
* type: Add missing polar module export (a950abd), closes #2833
* typescript: update entry point in tsconfig (ab4d98d), closes #2855
* types: Fix legend.item.tile.type literal type typo (de9781f)
* types: Fix the type declarations for the y tick format (1d378e0), closes #2790
* types: Fix the type declarations for the y tick format (#2865) (2e38dee)
Features
* api: Enhance .config() to return generation options (455944e), closes #2864
* options: Intent to ship bar.linearGradient (3a9989f), closes #397
* options: Intent to ship bar.overlap (046aedb), closes #2839
* options: Intent to ship data.groupsZeroAs (3de8e7a), closes #2813
* options: Intent to ship legend.item.tile.type (c379c9f), closes #2874
* packages: Intent to ship React wrapper (4cef6ad), closes #2838
3.5.1 (2022-07-14)
Bug Fixes
* options: Fix possible memory leak for boost.useWorker (394d1c3), closes #2778
* types: Fix the signature of the tick format callback for timeseries (fb246bc), closes #2769
3.5.0 (2022-06-30)
Bug Fixes
* bar: fix bar radius for zero value (9aa7579), closes #2642
* build: Fix this keyword transpile (b65531a), closes #2671 #2664 #2665 #2666 #2667
* data: Fix data label position on inverted axis (b024d83), closes #2700
* grid: Fix y grid to show for log axis type (d0b8cbd), closes #2710
* option: Fix onresize/onresized call context (3ef9684), closes #2726
* plugin, type: fix TextOverlap type definition (80cc3b7)
* plugin: fix sparkline dimension & tooltip (79e1ab7), closes #2682
* plugin: fix stanford tooltip formatting (9a87464), closes #2657
* resize: Fix legend resize (7df949b), closes #2650
* scale: fix getting tickOffset (3091677), closes #2669
* size.axis: fix truncated axis when has no data (40f4b66), closes #2675
* types: Fix Chart.load({ json }) typing (1bd4f4a), closes #2711
* types: Fix the signature of the tick format callback for timeseries (c9c76e5), closes #2676
* types: Fix the type for options.data.names (e64f6bd), closes #2677
* types: Fix types for the tooltip contents callback (a0c0355), closes #2693
* zoom: fix wheel zoom feeling "stuck" when panning past the edge (50ed640), closes #2588 #2648
Features
* area: add option to render area below line (cf60291), closes #2740 #2741
* data: Intent to ship data.labels.rotate (7b7ee08), closes #2662
* option: Intent to ship boost.useCssRule (4a060d6), closes #2716
* option: Intent to ship boost.useWorker (eeaf8bd)
* resize: Intent to ship resize.timer (#2712) (0a07de0), closes #2650
3.4.1 (2022-04-14)
Bug Fixes
* point,util: fix syntax to work on legacy browser (77798af), closes #2637
3.4.0 (2022-03-31)
Bug Fixes
* api: Fix flow on indexed/category axis type (4aba436), closes #2595
* axis: Fix culling visibility on dynamic loading (4c79daf), closes #2582
* axis: fix hidden axis rescale on dynamic load (5418853), closes #2523 #2571
* generator: Prevent possible infinite loop when tab isn't visible (bafdb17), closes #2606
* option: Fix data.hide not working for bubble/scatter type (64ae74b), closes #2609
* util: Check if agent has mouse (d42adaa), closes #2550 #2585
* util: Enhance parsing date string (8d9f422), closes #1714
Features
* api: Implement axis range reset (6c9d99e), closes #2398
* option: Intent to ship onclick (63c5a53), closes #2587
* polar: Intent to ship polar type (feca715), closes #2462
3.3.3 (2022-02-24)
Bug Fixes
* axis: Fix error when tick text isn't accessible (3dd15c9), closes #2556
* build: Fix incorrect versioning on build (c7102bf), closes #2560
3.3.2 (2022-02-14)
Bug Fixes
* subchart: Fix axis position on subchart.hide() call (2ad65fd), closes #2536 #2534
* tooltip: revert tooltip.contents' defaultValueFormat (333ccad), closes #2542
* zoom: Fix unzoom after appending regions (de64c4e), closes #2531
3.3.1 (2022-01-28)
Bug Fixes
* axis: Fix bar draw for inverted y/y2 axes (9d0fb70), closes #1323 #2503
* domain: Fix incorrect domain updates (a697b69), closes #2523
3.3.0 (2022-01-14)
Bug Fixes
* api: Ensure svg nodes to be removed from memory (f49ed83), closes #2489
* event: fix touch event handling on arc (d3d2e05), closes #2477
* text: Fix text position with candlestick type combination (f84ab3e), closes #2436
* tooltip: fix candlestick tooltip display with xs option (0278067), closes #2434
* types: Fix axis types definition (92fb033), closes #2499
* types: Fix plugin's type definition (f3690f9), closes #2483
Features
* axis: alow user to hide tick lines while using culling (aad8c45), closes #2478 #2480
* bar: add non zero based bar chart (3588abe), closes #2408 #2438
* bar: Implement stacking bar radius (8f14d1a), closes #2428
* bar: Intent to ship bar.indices.removeNull (b16605d), closes #1687
* option: Enhance padding to be removed completely (2052a19), closes #2367
3.2.2 (2021-11-19)
Bug Fixes
* api: Fix zoom reset for regions(), grids() api call (679ce73), closes #2411
* bar: fix bar radius rendering with clipPath=false option (80bf491), closes #2421
* legend: Fix usePoint option work for spaced data name (275c1cc), closes #2425
* types: fix candlestick data type (ccac60d), closes #2422
3.2.1 (2021-10-22)
Bug Fixes
* build: fix packaged build for ie (5ebcd80), closes #2375
3.2.0 (2021-10-07)
Bug Fixes
* axis: fix y axis stepSize value (18f6f27), closes #2294
* bar: fix data label to be shown for 0 values (f3634ee), closes #2251
* event: make consistent tooltip position on step-after (5d3a5ed), closes #2287
* gauge: fix error when interaction=false (cc4a5e7), closes #2351
* grid: Make grid elements pass through pointer events (4db1bcd), closes #2355
* grid: pPrevent error throw (8fcf61c), closes #2310
* plugin: fix textoverlap plugin (5e486b5), closes #1144
* subchart: fix subchart esm import failure (ba6c2b5), closes #2255
* tooltip: fix tooltip.position call context (b78a48d), closes #2265
* types: Allow string dates for zoom() domain (9cae479), closes #2316 #2333
* types: fix data.onshown/hidden types (3721c4c), closes #2270 #2275
* types: Fix type definition for load().json (25ebb78), closes #2334
* types: Fix wrong type definition (5f7779b), closes #2316
* zoom: Fix error throw on drag zoom interaction (f1dcb27), closes #2343
* zoom: fix zoom event triggering for drag type (0a0f039), closes #2254
* zoom: Fix zoomend call on .zoom() (9515565), closes #2217 #2254
Features
* axis: Enhance padding to accept px value (769ec8f), closes #2246
* error: Enhance error logging for ESM import (4b5119c), closes #2311
* event: add option for step-before/step-after charts for tooltip to match step behavior (5f664ba), closes #2332
* module: Support dual CJS/ESM package (ddd8977), closes #2202
* plugin: Intent to ship sparkline (091284e), closes #2285
* plugin: Intent to ship TableView plugin (6f07e94), closes #1873
* Subchart: add subchart x axis tick format option (da2f3ff), closes #2314
* tooltip: Enhance tooltip.position passing curr pos (ec783e9), closes #2267
3.1.5 (2021-08-17)
Bug Fixes
* subchart: fix subchart esm import failure (9eede10), closes #2255
* tooltip: fix tooltip.position call context (37278e2), closes #2265
* zoom: fix zoom event triggering for drag type (f2a049e), closes #2254
3.1.4 (2021-08-11)
Bug Fixes
* api: unbind drag zoom owhen subchart is shown (f1a34c6), closes #2201
* browser: add requestIdleCallback fallback (ec6d120), closes #2247
3.1.3 (2021-07-28)
Bug Fixes
* api: fix subchart APIs usage with zoom reset button (982f6ee), closes #2201
* axis: fix bar type tick.fit=false throwing error (083f5c7), closes #2210
* axis: fix handling x axis localtime (1d2ce8f), closes #2186
* Axis: fix transition on flow (a656fe5), closes #2189
* shape: fix incorrect shape offset (d2be8c0), closes #2187
* types: fix wrong legend.item callbacks args types (1196bbf), closes #2203
* zoom: fix inconsistent zoom on .zoom() -> wheel (4eee2d8), closes #2194
3.1.2 (2021-07-12)
Bug Fixes
* module: fix module compatibility (#2182) (3785a19), closes #2181
3.1.1 (2021-06-28)
Bug Fixes
* data: Handle spaced data name for label bg color (4ffb654), closes #2160
3.1.0 (2021-06-25)
Bug Fixes
* Chart: Handle nullish properties from API extendings safely (6cbf64a), closes #2132 #2134
* data: Fix duplicated data.onclick call (b4c5dc2), closes #2104
* data: Fix nullish data filtering for grouped data (af19370), closes #2096
* gauge: Fix incorrect rendering when gauge.min is given (31fc981), closes #2123
* point: Fix custom point for nullish data (8c198f2), closes #2107
* region: fix region append position (2b50443), closes #2067
* size: enhance applying height value (0664a60), closes #2086
* tooltip: Correct the type of selectedData (05b694d), closes #2056 #2058
* zoom: Fix incorrect tooltip position (689bfdf), closes #2095
* zoom,grid: fix grid line pos during zoom (e84a4f1), closes #2156
Features
* all: contain inline css prop setting (fde6a89), closes #2076
* api: Intent to ship append load (8076795), closes #2140
* data: Intent to ship data.onshown/onhidden (af98eb7), closes #2146
* data.labels: Intent to ship data.labels.backgroundColors (e0b2fed), closes #1954
* subchart: Intent to ship subchart.init.range option (967bf1b), closes #2037
* subchart: Intent to ship subchart.showHandle (219bff3), closes #2044
3.0.3 (2021-04-16)
Bug Fixes
* axis: Fix axis.x.padding value setting (a8ec411), closes #2038
* axis: fix handling x padding value (0a42768), closes #2038
* candlestick: fix to set expand state (1e6a10d), closes #2036
* types: fix missing candlestick export (ab778b2), closes #2007
* types: updated bar/candlestick options types (0a48fd6), closes #2043
3.0.2 (2021-03-31)
Bug Fixes
* type: filter nullish data (857bbca), closes #2020
3.0.1 (2021-03-26)
Bug Fixes
* axis: calculate x axis height correctly for negative tick rotation settings (fe42e64), closes #1994 #1995
* candlestick: fix exporting candlestick module (1a9b75b), closes #2007
* deploy: fix deploying gh-pages (baec455)
3.0.0 (2021-03-26)
Bug Fixes
* axis: fix axis.x.max error throw (de06361), closes #1981
* axis: fix axis.x.tick.tooltip on rotated axis (eed2f86), closes #1990
* subchart: fix duplicated node generation on data load (d9a5d9a), closes #2003
* zoom: fix zoom on latest chrome (37edc9b), closes /github.com/d3/d3-zoom/issues/231#issuecomment-802305692 #1992
Features
* all: update for d3 v6 (2752e55), closes #1641
* api: Enhance .export() option to specify size (3c2de80), closes #815 #1969
* api: Intent to ship subchart APIs (5572dc9), closes #1993
* candlestick: Intent to ship candlestick (8d37bd8), closes #76 #1167
* candlestick: Intent to ship candlestick type (42307cb)
BREAKING CHANGES
* all: - Update to work on d3 v6
- Added getPoint() to get event's position coordinate
https://github.com/d3/d3/blob/master/CHANGES.md
https://observablehq.com/d/f91cccf0cad5e9cb
3.0.0-next.1 (2021-02-08)
Features
* all: update for d3 v6 (2752e55), closes #1641
BREAKING CHANGES
* all: - Update to work on d3 v6
- Added getPoint() to get event's position coordinate
2.2.6 (2021-03-11)
Bug Fixes
* tooltip: fix linked tooltip recursive call (b6af8ec), closes #1979
2.2.5 (2021-03-05)
Bug Fixes
* axis: remove x axis transition during resize (a938681), closes #1949
2.2.4 (2021-03-04)
Bug Fixes
* legend: fix hiding via .hide() (c489a77), closes #1950
* zoom: fix x Axis tick transition during zoom (3f08b11), closes #1949
>>>>>>> master
2.2.3 (2021-02-16)
Bug Fixes
* api: fix loading area-line-range (fe46492), closes #1938
* legend: legend.inset.anchor is working again (b5ba930), closes #1935 #1936
2.2.2 (2021-02-05)
Bug Fixes
* grid: fix rendering when interaction is disabled (d194a83), closes #1924
* shape: retrieve raw x scale value (38ac0a7), closes #1927
2.2.1 (2021-02-01)
Bug Fixes
* build: suport for legacy browser (594d18e), closes /webpack.js.org/migrate/5/#need-to-support-an-older-browser-like-ie-11 #1913
* gauge: units position if fullCircle (62cd79e), closes #1914
2.2.0 (2021-01-26)
Bug Fixes
* api: fix incorrect legend text positioning (f1ede3f), closes #1888
* api: fix zoom for timesries axis (0421a50), closes #1868
* arc: fix setting color value (fad9e86), closes #1857 #1847
* axis: fix incorrect tick interval calculation (1a96f3e), closes #1896
* axis: rotated horizontal xAxisHeight is calculated correctly after loading new data (ef2754f), closes #1786 #1787
* bar: fix bar width on zoom (25e987a), closes #1907
* bar: fix bar width rendering for 'total' data key (eacaecb), closes #1818
* browser: fix referencing global order (8f84cb3), closes #1778
* browser: fix retrieving global (3474ac0), closes #1826
* color: fix color callback mismatch (86ef214), closes #1847
* data: fix data.order to work for arc types (3a716a0), closes #1863
* eventrect: fix resizing event rect element after .load() (12bf547), closes #1864
* eventRect: fix data.onclick work for scatter/bubble (109c87d), closes #1795
* point: fix usePoint defs id value (6df4653), closes #1887
* radar: fix data label text position (c69d674), closes #1871
* text: data labels are working in Internet Explorer again (865224e), closes #1877
* tooltip: fix arc's tooltip interaction (a8586a3), closes #1859
* types: fix .load() data type (7108e7b), closes #1848
Features
* api: make return values for axis.labels() (efa5174), closes #1865
* data: Intent to ship data.label multiline (8903aa6), closes #1784
* data.labels.colors: Add callback support (ac1affa), closes #1845
* gauge: added support for drawing gauge from 'startingAngle' to 'arcLength' (25954ad), closes #1633 #1803 #1849
* gauge: Intent to ship gauge.background (632c600), closes #1804
* pie: Intent to ship pie.outerRadius (ca67418), closes #1825
* point: Intent to ship point.opacity (fc5ad35), closes #1867
2.1.4 (2020-11-11)
Bug Fixes
* api: fix tooltip showing when lesser data loaded (74320cf), closes #1761
* event: fix referencing event element (38568c1), closes #1752
* gauge: fix to be consistent max label value (0c2006f), closes #1759
* radar: fix labels showing on esm usage (d56ff52), closes #1765
* shape: shape not showing on ie11 (d1366d1), closes #1758
* tooltip: fix to reset pending events from .show() (ce8210c), closes #1753
* zoom: fix throwing TypeError during zoom (f2787fa), closes #1760
2.1.3 (2020-10-23)
Bug Fixes
* event: Fix handling for single x Axis data (84eaa6b), closes #1737
* point: fix error when data has spaced name (6ff9aec), closes #1739
2.1.2 (2020-10-12)
Bug Fixes
* api: fix resizing event element (6c12241), closes #1695
* tooltip: fix error throwing for tootip.show=false (5164346), closes #1715
* zoom: fix to work on point.focus.only (af1dbd7), closes #1703
2.1.1 (2020-09-25)
Bug Fixes
* interaction: Fix wrong tooltip event coordinate (b892515), closes #1695 #1642
2.1.0 (2020-09-25)
Bug Fixes
* api: prevent TypeError when chart already destroyed (ce42768), closes #1613
* axis: fix y axis clip-path coordinates (bdf7694), closes #1572
* bar: Fix not firing data.onclick (62e7a10), closes #1619 #1620
* bar: fix on bar tooglip grouped false (4bd69be), closes /github.com/naver/billboard.js/issues/1663#issuecomment-690991679
* grid: Fix grid text position update (056b565), closes #1592
* interaction: bind touch event only for rect element (12da3e4), closes #1650
* upgrade d3-ease from 1.0.6 to 1.0.7 (#1617) (4f78533)
* interaction: correct draggable selection functionality (160f873), closes #1642
* upgrade d3-brush from 1.1.5 to 1.1.6 (#1605) (624f044)
* interaction: fix for data point click on mobile (727c26f), closes #1651
* interaction: fix retrieving event rect position (6fc449e), closes #1670
* legend: Fix error for color.threshold option (6e06629), closes #1604 #1611
* legend: Make legend blurry after click (319d608), closes #1599
* shape: fix possible condition removal by transpiler (781fb61), closes #1663
* step: Fix rendering nullish data (dbe7b9b), closes #1637
* types: Fix donut option types (1917169), closes #1615
* types: Specify context for callbacks (f3b9f26), closes #1551
Features
* area: Intent to ship area.front (fe315dc), closes #1543
* axis: Improve log scale to handle 0 (ca6cf62), closes #1578
* axis: Intent to ship axis.y2.type (a94c25e), closes #1575
* interaction: avoid multiple <rect> generation (97df63a), closes #1642
* plugin: Add JS Plugin class file (4a20480), closes #1665
* theme: Add new 'datalab' theme (aba20d4), closes #241
2.0.2 (2020-07-24)
Bug Fixes
* arc: wrong right padding calculation (f5a8602), closes #1545
* area: Fix dynamic area loading (9d6e1e0), closes #1547
2.0.1 (2020-07-20)
Bug Fixes
* types: add missing named exports (5dc77b5), closes #1520
2.0.0 (2020-07-16)
Bug Fixes
* all: Fix test cases (2e1ad79)
* arc: fix applying data.labels.colors (#1448) (c128fad), closes #1440
* axis: fix incorrect clip node handling (a8c6f96), closes #1449
* axis: make axis clip-path to fit real axis size (7419f44), closes #1449
* bar: fix bar width scale on zoom (59073bd), closes #1476
* data: fix for data.labels=false (b7a0972), closes #1444
* data.selection: fix selection.isselectable value check (9d41a04)
* gauge: fixed wrong bottom padding calculation (0542586), closes #1441 #1471
* legend: Don't bind event when interaction is false (4546c00)
* point: Correct focus.only to work in mobile env (67eea16)
* point: Correct point.focus.only (1686594)
* point: update point generation (da63e39)
* subchar: correct subchart rendering (44ed216), closes #1458
Code Refactoring
* all: v2 updates (e23998f), closes #758 #757 #756 #36
* module: implement ESM index (85caf71)
Features
* axis: Intent to ship log scale (6fdf3e4), closes #1351
* bar: Intent to ship bar.label.threshold (72a7b7f), closes #1427
* gauge: Intent to ship gauge.label.threshold (#1443) (9a0807e), closes #1439
* interaction: split selection, subchart & zoom (ba1e4f2)
* point: Intent to ship point.focus.only (bb70347)
BREAKING CHANGES
* all: v2 updates
* module: new index for ESM build
- split Axis releated size from size.ts --> size.axis.ts
- split common main option from Options.ts --> ./common/main.ts
- Instead export Axis class, add .getAxisInstance() to make beneficial
from tree-shaking
2.0.0-next.9 (2020-07-08)
Features
* interaction: split selection, subchart & zoom (ba1e4f2)
2.0.0-next.8 (2020-07-02)
Bug Fixes
* bar: fix bar width scale on zoom (59073bd), closes #1476
Features
* axis: Intent to ship log scale (6fdf3e4), closes #1351
2.0.0-next.7 (2020-06-26)
Bug Fixes
* gauge: fixed wrong bottom padding calculation (0542586), closes #1441 #1471
2.0.0-next.6 (2020-06-23)
Bug Fixes
* subchar: correct subchart rendering (44ed216), closes #1458
2.0.0-next.5 (2020-06-19)
Bug Fixes
* axis: fix incorrect clip node handling (a8c6f96), closes #1449
* axis: make axis clip-path to fit real axis size (7419f44), closes #1449
2.0.0-next.4 (2020-06-17)
Bug Fixes
* arc: fix applying data.labels.colors (#1448) (c128fad), closes #1440
* data: fix for data.labels=false (b7a0972), closes #1444
* legend: Don't bind event when interaction is false (4546c00)
2.0.0-next.3 (2020-06-15)
Features
* bar: Intent to ship bar.label.threshold (72a7b7f), closes #1427
* gauge: Intent to ship gauge.label.threshold (#1443) (9a0807e), closes #1439
2.0.0-next.2 (2020-06-11)
Bug Fixes
* point: update point generation (da63e39)
2.0.0-next.1 (2020-06-08)
Bug Fixes
* all: Fix test cases (2e1ad79)
* point: Correct focus.only to work in mobile env (67eea16)
* point: Correct point.focus.only (1686594)
Code Refactoring
* all: v2 updates (e23998f), closes #758 #757 #756 #36
* module: implement ESM index (85caf71)
Features
* point: Intent to ship point.focus.only (bb70347)
BREAKING CHANGES
* all: v2 updates
* module: new index for ESM build
- split Axis releated size from size.ts --> size.axis.ts
- split common main option from Options.ts --> ./common/main.ts
- Instead export Axis class, add .getAxisInstance() to make beneficial
from tree-shaking
1.12.0-next.5 (2020-03-11)
Bug Fixes
* axis: Fix adding duplicated <title> element (8d45075), closes #1271
* axis: Fix axis label text position (68b6b86), closes #1270
* axis: Fix axis tick rotate translate (1bc3f20), closes #1250 #1278
* axis: Fix for multi axes data bound (3f8afba), closes /github.com/naver/billboard.js/pull/1233#issuecomment-595675546
* grid: Fix focus grid to be maintained on resize (01ba388), closes #1239
Features
* axis: Autorotate x axis tick texts on type "category" and "timeseries" (8c51d02), closes #1236 #1250
1.12.0-next.4 (2020-03-03)
Bug Fixes
* arc: Fix overwriting gauge_max in MultiArcGauge with totalSum (8b2c28e), closes #1259 #1260
* axis: Correct y Axis tick padding (145b960), closes #1251
* callbacks: Fix triggering in lazy rendering (3e73fdf), closes #1254
* tooltip: Auto pos adjustion for tooltip (c54f731), closes #1243 #1239
* tooltip: Fix tooltip position on overlapping data point (8dba213), closes #1267
* tooltip,interaction: Correct tooltip behaves for touch environment (7090fa9), closes #1253
Features
* axis: Intent to ship axis.x.min/max.fit (1650955), closes #7
1.12.0-next.3 (2020-02-20)
Bug Fixes
* radar: Correct text label not showing (9109fd5), closes #1241
Features
* tooltip: Intent to ship tooltip.position.unit (ac078a7), closes #1239
1.12.0-next.2 (2020-02-07)
Features
* axis: Clone y/y2-axis domain if no data is bound to one of them (96ac5c7), closes #1231 #1233
* axis: Intent to ship y Axes stepSize (429c6ec), closes #1098
* tooltip: Enhancement on callback options (30a7718), closes #1216
1.12.0-next.1 (2020-01-16)
Bug Fixes
* arc: Fix handling spaced data name (4824a47), closes #1168
* bar: Bar's width resize according the zoom scale (93184a2), closes #1185
* core: Fix onrendered firing time (8b8665c), closes #1194
* gauge: fixed wrong ratio calculation in 'gauge.type = "single"' (9020246), closes #1205
* interaction: Fix null data point interaction (901da84), closes #1199
* line: Fix nullish data rendering with regions (d0ca937), closes #1172
* tooltip: Revert on pointer-events css prop (c74c27a), closes #1124 #1155
Features
* axis: Intent to ship axis.y2.tick.rotate (98992f3), closes #1157 #1158
* gauge: more than one arc are possible for gauges (7a80e02), closes #787 #1071 #1163
* grid: Intent to ship grid.focus.y (13d65d1), closes #1154
* line: Intent to ship bubble/line/scatter zerobased (e45fb33), closes #1149 #1150
* options: Intent to ship Arc's expand.rate (7d6f32f), closes #1189
* plugin: Intent to ship bubblecompare plugin (49704e0), closes #1153
* zoom: Intent to ship zoom.reseteButton.onclick (694cbcb), closes #1171
1.11.0-next.7 (2019-11-21)
Bug Fixes
* tooltip: Remove 'pointer-events:none' inline set (baa7bc6), closes #1124
Features
* arc: Intent to ship pie/donut.startingAngle (b84be8e), closes #1128
* axis: Intent to ship axes.domain (355b0bd), closes #1090
* data: Intent to ship data.labels.position dataset (dd5ba44), closes #1126
* options: Intent to ship background (493c2a3), closes #1131
1.11.0-next.6 (2019-11-19)
Bug Fixes
* zoom: Correct Axis culling on zoom (c319302), closes #1106
1.11.0-next.5 (2019-11-15)
Bug Fixes
* shape: Fix shape position on multiple xs (6ce784a), closes #1115
* zoom: Fix to pass domain arg on onzoom (e1daae6), closes #1109
1.11.0-next.4 (2019-11-13)
Features
* data: Pass element arg for data callbacks (bb9f952), closes #1100
1.11.0-next.3 (2019-09-25)
Bug Fixes
* axis: Correct on tick count display (d4c8eb1), closes #1077
* gauge: Fix to not align background startingAngle from option (862156f), closes #1073
1.11.0-next.2 (2019-09-10)
Bug Fixes
* axis: Correct subchart x axis culling (8478dd9), closes #1068
1.11.0-next.1 (2019-09-03)
Bug Fixes
* all: Fix possible IE9 style value (950c335), closes /github.com/naver/billboard.js/commit/54631506721bc64476d5c8fd64a2a681f3b340c1#diff-851f1a6e431d0ae7dc68b646d27821a8R90-R93 #1059
* api: Fix .data() to return exact data (12bdc54), closes #1035
* data: Fix header option setting (82461b3), closes #1031
* interaction: Fix on eventRect rederaw (dc5f67a), closes #1028 #1019 #963
* text: Fix data label y position when all data are 0 (4b423a5), closes #1026
* tooltip: Fix tooltip work on touch zoom (5d98187), closes #1056
Features
* data: Intent to ship data.labels.overlap (90792fa), closes #977
* options: Intent to ship render option (b6af77f), closes #1015
* plugin: Intent to ship TextOverlap (728e879), closes #1048
1.10.1 (2019-08-09)
Bug Fixes
* interaction: Fix on eventRect generation (3dd9439), closes #1019
1.10.0 (2019-08-07)
Bug Fixes
* axis: Correct label text position (9beacfe), closes #1011
* chart: Correct the order to set '$' node values (b97558c), closes #994
* color: Correct to not set stroke (f18aa35), closes #754 #872
* event: Update determination condition (736ba56), closes #967
* flow: Fix data points removal (5463150), closes #1006
* radar: Correct display of indexed axis (9bac296), closes #997
* text: Correct text vertical align (6debb55), closes #982
* tooltip: Correct tooltip on dynamic loading (c24bddb), closes #963
* tooltip: Fix on contents template (419144f), closes #972
Features
* axis: Intent to ship y/y2 axis culling (44c6c4c), closes #915
* bubble: Intent to ship dimension (27df7c3), closes #484
* options: Pass instance arg to callbacks (61cf047), closes #989
* radar: Intent to ship axis.text.position (1720ec2), closes #998
1.9.5 (2019-07-03)
Bug Fixes
* stats: Remove stats (29d6edc), closes #934 #964
1.9.3 (2019-06-28)
Bug Fixes
* color: Fix on color.threshold.values handling (841b316), closes #950
* radar: Fix radar positioning (612d93f), closes #953
* radar: Make data points stay over radar (4db457d), closes #952
1.9.2 (2019-06-20)
Bug Fixes
* tooltip: Correct condition of making tooltip text (a3675eb), closes #940 #941
* tooltip: Correct condition of making tooltip text (c0df6c5), closes #940 #941
1.9.1 (2019-06-20)
Bug Fixes
* arc: Fix to generate arc when data is zero (04a4dd8), closes #935
* line: Fix gradient with dataname starting w/no (fe31102), closes #936
---
CONTRIBUTING
How to contribute to billboard.js
billboard.js is open to everyone, and we welcome any kind of contribution.
We believe that our project can grow with your interest in helping others' needs.
Style Guide
billboard.js has several style guidelines that you must follow.
Before you start, please read the below instructions carefully.
Linting and Code Convention
To maintain the code style and quality, we adopted ESLint.
The rules are based on the Airbnb JavaScript Style Guide with some modifications.
Commit Log Guidelines
billboard.js follows formatted commit logs based on Conventional Commits for many different purposes (like creating CHANGELOG, ease history searching, etc.).
To avoid breaking the current format, please follow our commit log guidelines.
Before your commit/push, make sure to follow our commit log guidelines.
The outline is as below:
<type>[optional scope]: <description>[optional body]
[optional footer]
- #### Types
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code. Such as white-space, formatting, missing semi-colons, etc.
- refactor: A code change that neither fixes a bug nor adds a feature
- test: Adding missing tests. Changing tests.
- chore: Changes to the build process or tools and libraries such as documentation generation
- skip: For commits made after the 1st commit. Usually for applying code review changes.
- #### Description
A short description of the commit.
fix(Axis): Correct tick rendering Example commit applying code review (after the 1st commit)
> Note: Commit log starting with skip: type will be ignored by commit hook constraint.
skip: Applied the review- #### Body
A short descriptive message part of the commit.
Example commit of fixing a bug:
<type>(<module>): <subject> Update condition of tick to avoid unnecessary tick rendering
<footer>
> BREAKING CHANGE: a commit that has the text 'BREAKING CHANGE:' at the beginning of its optional body or footer section introduces a breaking API change.
- #### Footer
Related github issue number referenced by Ref #ISSUE-NO.
ex) When the commit is about issue number 20, then
Ref #20- #### Example
fix(Axis): Correct tick rendering Update condition of tick to avoid unnecessary tick rendering
Ref #20
feat(tooltip): Intent to ship tooltip.contents.template
- Implementation of tooltip.contents.template
- Update legend template processing with util's .tplProcess() Ref #813
feat(browser): Drop support for IE 11 Drop support for IE 11.
Ref #31
BREAKING CHANGE: Internet Explorer 11 is a burden to support and at EOL.
How to submit Pull Requests
Steps to submit your pull request:
1. Fork billboard.js to your repository
2. Create a new branch from your billboard.js master branch (and be sure it is always up-to-date)
3. Do your work
4. Create test code for your work (when possible)
5. Run pnpm run lint for linting and code style check. (update until there are no errors or warnings)
6. Run test code by pnpm test.
Make sure all tests pass at least on the latest version of Chrome (mobile/desktop).
7. Write a commit log following convention and push to your repository branch.
8. Create a new PR from your branch to billboard.js/master branch.
9. Wait for reviews.
When your contribution is ready to be accepted, then it will be merged to our branch.
10. All done!
License
By contributing to billboard.js, you're agreeing that your contributions will be licensed under its MIT license.
---
README
<picture>
<source srcset="https://naver.github.io/billboard.js/img/logo/billboard.js-white.svg" media="(prefers-color-scheme: dark)">
<img src="https://naver.github.io/billboard.js/img/logo/billboard.js.svg" width="350" alt="billboard.js"><br>
</picture>
[![Latest Version][badge-latest]][link-version] [![Next version][badge-next]][link-version]<br>
[![semantic-release][badge-semantic-release]][link-semantic-release] ![React][badge-react]
[![download][badge-download]][link-download] [![download][badge-download-weekly]][link-download] [![jsDelivr][badge-jsDelivr]][link-jsDelivr] [![jsDelivr][badge-jsDelivr-weekly]][link-jsDelivr]<br>
![CI Status][badge-ci-status] [![Coverage Status][badge-coverage]][link-coverage] [![Known Vulnerabilities][badge-snyk]][link-snyk] [![gzip size][badge-gzip-size]][link-gzip-size]
billboard.js is a re-usable, easy interface JavaScript chart library based on D3.js, with SVG and Canvas rendering support.
The name "billboard" comes from the famous billboard chart which everybody knows.<br>- Why we decided to start billboard.js?
Documents
- API Documentation
- Examples
- Roadmap
- Contribution Guide
- Development Guide
- Comparison table with other libraries
- Migration guide from C3.js
- Third Party Applications
- Who's using billboard.js
- Benchmark
- Technicals:
- How to bundle for legacy browsers?
- How to generate chart image in Node.js environment?
- find out more at Wiki page.
- v2 updates:
- v2 CHANGELOG
- Migration Guide to v2
- v3 updates:
- billboard.js 3.0 release: D3.js v6 support & new candlestick type!
- v4 updates:
- v4 CHANGELOG
- Canvas rendering mode
Questions?
If you have any questions, check out the previous posts or create a new one at:
- Stack Overflow: billboard.js tagged posts
- Issue with 'question' label
Supported chart types
<img src="https://naver.github.io/billboard.js/img/chart-types.png?v=15" width=800>
v4 adds an opt-in canvas rendering mode for high-density axis charts. See the
Canvas rendering mode notes for supported chart types,
ESM import usage, interactions and SVG parity scope.
Download and Installation
Download dist files from the repo directly or install it with pnpm.
<details>
<summary>Dist file list from the repo. (click to expand)</summary>
For development (Uncompressed)
You can download the uncompressed files for development
#### Latest
- https://naver.github.io/billboard.js/release/latest/dist/billboard.js
- https://naver.github.io/billboard.js/release/latest/dist/billboard.css
#### Specific version
- https://naver.github.io/billboard.js/release/[VERSION]/dist/billboard.js
- https://naver.github.io/billboard.js/release/[VERSION]/dist/billboard.css
For production (Compressed)
You can download the compressed files for production
#### Latest
- https://naver.github.io/billboard.js/release/latest/dist/billboard.min.js
- https://naver.github.io/billboard.js/release/latest/dist/billboard.min.css
#### Specific version
- https://naver.github.io/billboard.js/release/[VERSION]/dist/billboard.min.js
- https://naver.github.io/billboard.js/release/[VERSION]/dist/billboard.min.css
Packaged version (with D3.js inclusion)
⚠️ Packaged version is not an official distribution.
It's to provide an easy way to load 'billboard.js' with dependencies.
- Latest
- https://naver.github.io/billboard.js/release/latest/dist/billboard.pkgd.js
- https://naver.github.io/billboard.js/release/latest/dist/billboard.pkgd.min.js
- Specific version
- https://naver.github.io/billboard.js/release/[VERSION]/dist/billboard.pkgd.js
- https://naver.github.io/billboard.js/release/[VERSION]/dist/billboard.pkgd.min.js
</details>
Themes
If you want to apply themes, simply load one of the theme css files provided instead of the default css file.
- Screenshot Preview
<details>
<summary>Dist theme file list from the repo. (click to expand)</summary>
#### datalab
- https://naver.github.io/billboard.js/release/latest/dist/theme/datalab.css
- https://naver.github.io/billboard.js/release/latest/dist/theme/datalab.min.css
#### dark
- https://naver.github.io/billboard.js/release/latest/dist/theme/dark.css
- https://naver.github.io/billboard.js/release/latest/dist/theme/dark.min.css
#### insight
- https://naver.github.io/billboard.js/release/latest/dist/theme/insight.css
- https://naver.github.io/billboard.js/release/latest/dist/theme/insight.min.css
#### graph
- https://naver.github.io/billboard.js/release/latest/dist/theme/graph.css
- https://naver.github.io/billboard.js/release/latest/dist/theme/graph.min.css
#### modern
- https://naver.github.io/billboard.js/release/latest/dist/theme/modern.css
- https://naver.github.io/billboard.js/release/latest/dist/theme/modern.min.css
</details>
Nightly version
Nightly version is the latest build from the master branch.
With nightly, you can try upcoming changes prior to the official release.
- https://github.com/naver/billboard.js/tree/nightly/dist
The version info will be given as the build datetime: x.x.x-nightly-yyyymmddhhmmss
There are two ways to install from the nightly branch directly.
// Specify on 'package.json' file
"dependencies": {
...
"billboard.js": "naver/billboard.js#nightly"
},Run install command from shell
$ pnpm add git+https://github.com/naver/billboard.js.git#nightlyNext (Release Candidate) version
Next version is the 'release candidate' build, prior to the latest official release.
Run install command from shell
$ pnpm add billboard.js@nextInstallation with pnpm
$ pnpm add billboard.jsReact
The React component is available from the billboard.js/react subpath. The billboard namespace is
passed in through the bb prop, so importing the React subpath never pulls the root bundle into a
non-React bundle.
import bb, {line} from "billboard.js";
import BillboardJS from "billboard.js/react";<BillboardJS
bb={bb}
options={{
data: {
columns: [["data1", 30, 120, 80]],
type: line()
}
}}
/>;
Without a bundler, load dist/billboard.react.js. It is a UMD build exposing the BillboardReact
global, which holds the component as both .Chart and .default:
<script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script><link rel="stylesheet" href="$YOUR_PATH/billboard.css">
<script src="$YOUR_PATH/billboard.pkgd.js"></script>
<script src="$YOUR_PATH/billboard.react.js"></script>
<div id="root"></div>
<script>
const {Chart} = BillboardReact;
ReactDOM.createRoot(document.getElementById("root")).render(
React.createElement(Chart, {
bb,
options: {
data: {
columns: [["data1", 30, 120, 80]],
type: "line"
}
}
})
);
</script>
- billboard.react.js treats react as an external, so React must already be on the page. It
does not bundle billboard.js either — loadbillboard.js/billboard.pkgd.jsfirst and hand
the bb global to the component.- On React 19+ there is no UMD build of React to load. Use a bundler, or import both packages
as ESM in the browser through an import map.
- The packaged build registers every chart type, so string types (type: "line") work as-is. Withthe ESM entry, pass the module instead (type: line()) or through thetypeprop.
For local visual testing of the React component, run:
$ pnpm run storybookTo verify the Storybook bundle, run:
$ pnpm run build:storybookUsing CDN
If you want to use 'billboard.js' without installation, load files directly from one of the CDN providers.
- cdnjs: https://cdnjs.com/libraries/billboard.js
- jsDelivr: https://cdn.jsdelivr.net/npm/billboard.js/dist/
- unpkg: https://unpkg.com/billboard.js/dist/
Supported Browsers
- Basically will work on all SVG and ES6+ supported browsers.
- Canvas rendering mode additionally requires browser Canvas 2D API support.
- <sup>*</sup>Notes for legacy browsers:
- Recommended to use thepackagedbuild or construct your own build followingHow to bundle for legacy browsers?instructions.
- D3.js has dropped support for legacy browsers since v6.
- Support isn't fully guaranteed.
Dependency by version
D3.js (required)| billboard.js
:---: | :---:
4.x ~ 5.x | 1.x ~ 2.x
6.x+ | 3.x+
Getting Started
Load billboard.js after D3.js.
<script src="https://d3js.org/d3.v6.min.js"></script>
<link rel="stylesheet" href="$YOUR_PATH/billboard.css">
<script src="$YOUR_PATH/billboard.js"></script>
<link rel="stylesheet" href="$YOUR_PATH/billboard.css">
<script src="$YOUR_PATH/billboard.pkgd.js"></script>
<script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<script src="$YOUR_PATH/billboard.react.js"></script>
Loading billboard.js exposes the bb global, and billboard.react.js exposes BillboardReact.
See React for a full example.
or by importing ESM.
📌 Also check: How to load as ESM directly from the browser?
// 1) import billboard.js
// as named import with desired shapes and interaction modules
// https://github.com/naver/billboard.js/wiki/CHANGELOG-v2#modularization-by-its-functionality
import {bb, area, bar, zoom} from "billboard.js";// or as importing default
import bb, {area, bar, zoom} from "billboard.js";
// 2) import css if your dev-env supports. If don't, include them via <link>
import "billboard.js/dist/billboard.css";
// or theme style. Find more themes from 'theme' folder
import "billboard.js/dist/theme/insight.css"
For canvas rendering mode, import from the /canvas ESM entry and set render.mode withcanvas().
import bb, {bar, canvas} from "billboard.js/canvas";bb.generate({
render: {
mode: canvas()
},
data: {
columns: [
["data1", 30, 200, 100, 400]
],
type: bar()
}
});
- For migration from C3.js, check out the migration guide.
- If you have an issue bundling for legacy browsers, check out "How to bundle for legacy browsers?".
Basic usage example
#### 1) Create chart holder element
<div id="chart"></div>#### 2) Generate a chart with options
// generate the chart
var chart = bb.generate({
bindto: "#chart",
data: {
// for ESM import usage, import 'line' module and execute it as
// type: line(),
type: "line",
columns: [
["data1", 30, 200, 100, 400, 150, 250]
]
},
zoom: {
// for ESM import usage, import 'zoom' module and execute it as
// enabled: zoom()
enabled: true
}
});// call some API
chart.load( ... );
License
billboard.js is released under the MIT license.
Copyright (c) 2017 ~ present NAVER Corp.Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
[badge-download]: https://img.shields.io/npm/dm/billboard.js.svg?style=flat
[badge-download-weekly]: https://img.shields.io/npm/dw/billboard.js
[badge-jsDelivr]: https://data.jsdelivr.com/v1/package/npm/billboard.js/badge?style=rounded
[badge-jsDelivr-weekly]: https://img.shields.io/jsdelivr/npm/hw/billboard.js
[badge-ci-status]: https://github.com/naver/billboard.js/workflows/CI/badge.svg
[badge-coverage]: https://coveralls.io/repos/github/naver/billboard.js/badge.svg?branch=master&v1
[badge-snyk]: https://snyk.io/test/github/naver/billboard.js/badge.svg?targetFile=package.json
[badge-gzip-size]: https://img.badgesize.io/https://unpkg.com/billboard.js/dist/billboard.min.js?compression=gzip
[badge-latest]: https://img.shields.io/npm/v/billboard.js/latest.svg
[badge-next]: https://img.shields.io/npm/v/billboard.js/next.svg
[badge-semantic-release]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[badge-react]: https://img.shields.io/badge/React-20232A?style=flat&logo=react&logoColor=fff&labelColor=grey&color=62d9fb
[link-download]: https://npm-stat.com/charts.html?package=billboard.js&from=2017-06-08
[link-jsDelivr]: https://www.jsdelivr.com/package/npm/billboard.js
[link-version]: https://www.npmjs.com/package/billboard.js
[link-coverage]: https://coveralls.io/github/naver/billboard.js?branch=master
[link-snyk]: https://snyk.io/test/github/naver/billboard.js?targetFile=package.json
[link-gzip-size]: https://unpkg.com/billboard.js/dist/billboard.min.js
[link-semantic-release]: https://github.com/semantic-release/semantic-release
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fnaver%2Fbillboard.js?ref=badge_large)
---