Skip to content

Commit 354af37

Browse files
committed
Implemented OrganizationOptions.hanging_side.
1 parent 432c3b5 commit 354af37

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

highcharts_core/options/plot_options/organization.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class OrganizationOptions(BarOptions):
3636
def __init__(self, **kwargs):
3737
self._hanging_indent = None
3838
self._hanging_indent_translation = None
39+
self._hanging_side = None
3940
self._levels = None
4041
self._link_color = None
4142
self._link_line_width = None
@@ -48,6 +49,7 @@ def __init__(self, **kwargs):
4849

4950
self.hanging_indent = kwargs.get('hanging_indent', None)
5051
self.hanging_indent_translation = kwargs.get('hanging_indent_translation', None)
52+
self.hanging_side = kwargs.get('hanging_side', None)
5153
self.levels = kwargs.get('levels', None)
5254
self.link_color = kwargs.get('link_color', None)
5355
self.link_line_width = kwargs.get('link_line_width', None)
@@ -138,6 +140,36 @@ def hanging_indent_translation(self, value):
138140

139141
self._hanging_indent_translation = value
140142

143+
@property
144+
def hanging_side(self) -> Optional[str]:
145+
"""Whether links connecting hanging nodes should be drawn on the left or right side.
146+
147+
Accepts ``'left'`` or ``'right'``. Defaults to ``'left'``.
148+
149+
.. tip::
150+
151+
Useful for RTL (Right-to-Left) layouts.
152+
153+
.. note::
154+
155+
Only affects inverted (vertical) charts.
156+
157+
:rtype: :class:`str <python:str>` or :obj:`None <python:None>`
158+
"""
159+
return self._hanging_side
160+
161+
@hanging_side.setter
162+
def hanging_side(self, value):
163+
if not value:
164+
self._hanging_side = None
165+
else:
166+
value = validators.string(value, allow_empty = False)
167+
value = value.lower()
168+
if value not in ['left', 'right']:
169+
raise errors.HighchartsValueError(f'hanging_side expects a value of "left", '
170+
f'or "right". Received: {value}')
171+
self._hanging_side = value
172+
141173
@property
142174
def levels(self) -> Optional[List[LevelOptions]]:
143175
"""Set options on specific levels. Takes precedence over series options, but not
@@ -380,6 +412,7 @@ def _get_kwargs_from_dict(cls, as_dict):
380412

381413
'hanging_indent': as_dict.get('hangingIndent', None),
382414
'hanging_indent_translation': as_dict.get('hangingIndentTranslation', None),
415+
'hanging_side': as_dict.get('hangingSide', None),
383416
'levels': as_dict.get('levels', None),
384417
'link_color': as_dict.get('linkColor', None),
385418
'link_line_width': as_dict.get('linkLineWidth', None),
@@ -397,6 +430,7 @@ def _to_untrimmed_dict(self, in_cls = None) -> dict:
397430
untrimmed = {
398431
'hangingIndent': self.hanging_indent,
399432
'hangingIndentTranslation': self.hanging_indent_translation,
433+
'hangingSide': self.hanging_side,
400434
'levels': self.levels,
401435
'linkColor': self.link_color,
402436
'linkLineWidth': self.link_line_width,

0 commit comments

Comments
 (0)