UNPKG

58.6 kBSource Map (JSON)View Raw
1{"version":3,"file":"Legend.js","sourceRoot":"","sources":["../../../../src/.internal/charts/Legend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Legend-related functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component, IComponentProperties, IComponentDataFields, IComponentAdapters, IComponentEvents } from \"../core/Component\";\r\nimport { DataItem, IDataItemEvents } from \"../core/DataItem\";\r\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\r\nimport { RoundedRectangle } from \"../core/elements/RoundedRectangle\";\r\nimport { Container } from \"../core/Container\";\r\nimport { Label } from \"../core/elements/Label\";\r\nimport { Optional } from \"../core/utils/Type\";\r\nimport { Preloader } from \"../core/elements/Preloader\";\r\nimport { keyboard } from \"../core/utils/Keyboard\";\r\nimport { registry } from \"../core/Registry\";\r\nimport { getInteraction } from \"../core/interaction/Interaction\";\r\nimport { percent, Percent } from \"../core/utils/Percent\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport { Color } from \"../core/utils/Color\";\r\nimport { RadialGradient } from \"../core/rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../core/rendering/fills/LinearGradient\";\r\nimport { Pattern } from \"../core/rendering/fills/Pattern\";\r\nimport * as $utils from \"../core/utils/Utils\";\r\nimport * as $type from \"../core/utils/Type\";\r\nimport * as $math from \"../core/utils/Math\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../core/Sprite\";\r\nimport { Disposer, IDisposer } from \"../core/utils/Disposer\";\r\nimport { MouseCursorStyle } from \"../core/interaction/Mouse\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\r\nimport { Scrollbar } from \"../core/elements/Scrollbar\";\r\n\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[Legend]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class LegendDataItem extends DataItem {\r\n\r\n\t/**\r\n\t * A container data item's elements will be placed in.\r\n\t */\r\n\tprotected _itemContainer: Container;\r\n\r\n\t/**\r\n\t * A [[Label]] element for the item label.\r\n\t */\r\n\tprotected _label: Label;\r\n\r\n\t/**\r\n\t * A [[Container]] for legend item marker.\r\n\t */\r\n\tprotected _marker: Container;\r\n\r\n\t/**\r\n\t * A [[Label]] element for the value label.\r\n\t */\r\n\tprotected _valueLabel: Label;\r\n\r\n\t/**\r\n\t * A data context for legend item.\r\n\t */\r\n\tpublic dataContext: any;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: Legend;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic childrenCreated: boolean = false;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic colorOrig: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"LegendDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * A legend item's [[Label]] element.\r\n\t *\r\n\t * @return Label\r\n\t */\r\n\tpublic get label(): Label {\r\n\t\tif (!this._label) {\r\n\t\t\tlet label = this.component.labels.create();\r\n\t\t\tthis._label = label;\r\n\t\t\tthis.addSprite(label);\r\n\t\t\tthis._disposers.push(label);\r\n\t\t\tlabel.parent = this.itemContainer;\r\n\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif ($type.hasValue(this.component)) {\r\n\t\t\t\t\tthis.component.labels.removeValue(label);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t}\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * Main color of legend data item.\r\n\t *\r\n\t * This is set by the target element this legend item represents, like\r\n\t * a Series or a Slice.\r\n\t *\r\n\t * It can be used to derive a color in legend's sub-items, like label:\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"legend\": {\r\n\t * // ...\r\n\t * \"labels\": {\r\n\t * \"text\": \"[{color}]{name}[/]\"\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/#Legend_labels} For more information about configuring legend labels.\r\n\t * @param value Main color\r\n\t */\r\n\tpublic set color(value: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>) {\r\n\t\tthis.setProperty(\"color\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Main color\r\n\t */\r\n\tpublic get color(): $type.Optional<Color | Pattern | LinearGradient | RadialGradient> {\r\n\t\treturn this.properties.color;\r\n\t}\r\n\r\n\t/**\r\n\t * A legend item's [[Label]] element for \"value label\".\r\n\t *\r\n\t * @return Label\r\n\t */\r\n\tpublic get valueLabel(): Label {\r\n\t\tif (!this._valueLabel) {\r\n\t\t\tlet valueLabel = this.component.valueLabels.create();\r\n\t\t\tthis._valueLabel = valueLabel;\r\n\r\n\t\t\tthis.addSprite(valueLabel);\r\n\t\t\tthis._disposers.push(valueLabel);\r\n\t\t\tvalueLabel.parent = this.itemContainer;\r\n\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif ($type.hasValue(this.component)) {\r\n\t\t\t\t\tthis.component.valueLabels.removeValue(valueLabel);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t}\r\n\t\treturn this._valueLabel;\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to the main [[Container]] that holds legend item's elements:\r\n\t * marker and labels.\r\n\t *\r\n\t * @return Item container\r\n\t */\r\n\tpublic get itemContainer(): Container {\r\n\t\tif (!this._itemContainer) {\r\n\r\n\t\t\tlet component = this.component;\r\n\r\n\t\t\tlet itemContainer = component.itemContainers.create();\r\n\t\t\titemContainer.parent = component;\r\n\t\t\t\r\n\t\t\tthis._itemContainer = itemContainer;\r\n\t\t\tthis.addSprite(itemContainer);\r\n\t\t\tthis._disposers.push(itemContainer);\r\n\r\n\t\t\t// Add click/tap event to toggle item\r\n\t\t\tif (itemContainer.togglable) {\r\n\t\t\t\titemContainer.events.on(\"toggled\", (ev) => {\r\n\t\t\t\t\tcomponent.toggleDataItem(<this>ev.target.dataItem);\r\n\t\t\t\t}, undefined, false);\r\n\t\t\t}\r\n\r\n\t\t\t// Add focus event so that we can track which object is currently in focus\r\n\t\t\t// for keyboard toggling\r\n\t\t\tif (itemContainer.focusable) {\r\n\t\t\t\titemContainer.events.on(\"hit\", (ev) => {\r\n\t\t\t\t\t// We need this here in order to reset focused item when it is clicked\r\n\t\t\t\t\t// normally so that it is not toggled by ENTER afterwards\r\n\t\t\t\t\tcomponent.focusedItem = undefined;\r\n\t\t\t\t}, undefined, false);\r\n\t\t\t\titemContainer.events.on(\"focus\", (ev) => {\r\n\t\t\t\t\tcomponent.focusedItem = <this>ev.target.dataItem;\r\n\t\t\t\t}, undefined, false);\r\n\t\t\t\titemContainer.events.on(\"blur\", (ev) => {\r\n\t\t\t\t\tcomponent.focusedItem = undefined;\r\n\t\t\t\t}, undefined, false);\r\n\t\t\t}\r\n\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif ($type.hasValue(this.component)) {\r\n\t\t\t\t\tthis.component.itemContainers.removeValue(itemContainer);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\r\n\t\t\tif (this.dataContext.uidAttr) {\r\n\t\t\t\titemContainer.readerControls = this.dataContext.uidAttr();\r\n\t\t\t\titemContainer.readerLabelledBy = this.dataContext.uidAttr();\r\n\t\t\t}\r\n\r\n\t\t\tlet sprite = <any>this.dataContext;\r\n\t\t\tif ((sprite instanceof DataItem || sprite instanceof Sprite) && !sprite.isDisposed()) {\r\n\t\t\t\tconst visibilitychanged = function(ev: AMEvent<Sprite | DataItem, ISpriteEvents & IDataItemEvents>[\"visibilitychanged\"]) {\r\n\t\t\t\t\titemContainer.readerChecked = ev.visible;\r\n\t\t\t\t\titemContainer.events.disableType(\"toggled\");\r\n\t\t\t\t\titemContainer.isActive = !ev.visible;\r\n\t\t\t\t\titemContainer.events.enableType(\"toggled\");\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsprite.addDisposer(new Disposer(() => {\r\n\t\t\t\t\tif (this.component) {\r\n\t\t\t\t\t\tthis.component.dataItems.remove(this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}))\r\n\r\n\t\t\t\tif (sprite instanceof Sprite) {\r\n\t\t\t\t\titemContainer.addDisposer(\r\n\t\t\t\t\t\tsprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\titemContainer.addDisposer(\r\n\t\t\t\t\t\tsprite.events.on(\"hidden\", (ev) => {\r\n\t\t\t\t\t\t\titemContainer.readerChecked = false;\r\n\t\t\t\t\t\t\titemContainer.events.disableType(\"toggled\");\r\n\t\t\t\t\t\t\titemContainer.isActive = true;\r\n\t\t\t\t\t\t\titemContainer.events.enableType(\"toggled\");\r\n\t\t\t\t\t\t}, undefined, false)\r\n\t\t\t\t\t)\r\n\t\t\t\t\titemContainer.addDisposer(\r\n\t\t\t\t\t\tsprite.events.on(\"shown\", (ev) => {\r\n\t\t\t\t\t\t\titemContainer.readerChecked = true;\r\n\t\t\t\t\t\t\titemContainer.events.disableType(\"toggled\");\r\n\t\t\t\t\t\t\titemContainer.isActive = false;\r\n\t\t\t\t\t\t\titemContainer.events.enableType(\"toggled\");\r\n\t\t\t\t\t\t}, undefined, false)\r\n\t\t\t\t\t)\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\titemContainer.addDisposer(\r\n\t\t\t\t\t\tsprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._itemContainer;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Container]] that holds legend item's marker element.\r\n\t *\r\n\t * @return Marker\r\n\t */\r\n\tpublic get marker(): Container {\r\n\t\tif (!this._marker) {\r\n\t\t\tlet marker = this.component.markers.create();\r\n\t\t\tthis._marker = marker;\r\n\t\t\tmarker.parent = this.itemContainer;\r\n\t\t\tthis.addSprite(marker);\r\n\t\t\tthis._disposers.push(marker);\r\n\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif ($type.hasValue(this.component)) {\r\n\t\t\t\t\tthis.component.markers.removeValue(marker);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t}\r\n\t\treturn this._marker;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a class that carries legend settings.\r\n *\r\n * A legend might change its settings dynamically. Legend can also be shared\r\n * by several elements, requiring different settings.\r\n *\r\n * Having legend's settings in a separate object is a good way to \"hot swap\"\r\n * a set of settings for the legend.\r\n */\r\nexport class LegendSettings {\r\n\r\n\t/**\r\n\t * [valueText description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tpublic valueText: string;\r\n\r\n\t/**\r\n\t * [labelText description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tpublic labelText: string;\r\n\r\n\t/**\r\n\t * A text template for the value part of the legend item.\r\n\t */\r\n\tpublic itemValueText: string;\r\n\r\n\t/**\r\n\t * A text template for the label part of the legend item.\r\n\t */\r\n\tpublic itemLabelText: string;\r\n\r\n\t/**\r\n\t * Should marker be created for each legend item.\r\n\t */\r\n\tpublic createMarker: boolean = true;\r\n}\r\n\r\n/**\r\n * Represents types available for Legend position. Not all charts will pay attention to this, like MapChart. You'll need to use legend.align and legend.valign properties to position legend on MapChart.\r\n */\r\nexport type LegendPosition = \"left\" | \"right\" | \"top\" | \"bottom\" | \"absolute\";\r\n\r\n/**\r\n * Defines data fields for [[Legend]].\r\n */\r\nexport interface ILegendDataFields extends IComponentDataFields {\r\n\r\n\t/**\r\n\t * A field name in the data item which holds name of the legend item.\r\n\t */\r\n\tname?: string;\r\n\r\n\t/**\r\n\t * A field name in data item which holds boolean value whether item should\r\n\t * be displayed in legend or not.\r\n\t */\r\n\tvisible?: string;\r\n}\r\n\r\n/**\r\n * Defines properties for [[Legend]].\r\n */\r\nexport interface ILegendProperties extends IComponentProperties {\r\n\r\n\t/**\r\n\t * Should legend use default marker?\r\n\t *\r\n\t * If set to `false`, the legend will try to mirror the look of the actual\r\n\t * item, like series.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tuseDefaultMarker?: boolean;\r\n\r\n\t/**\r\n\t * Position of the legend.\r\n\t *\r\n\t * Options: \"left\", \"right\", \"top\", \"bottom\" (default), or \"absolute\".\r\n\t *\r\n\t * @default \"bottom\"\r\n\t */\r\n\tposition?: LegendPosition;\r\n\r\n\t/**\r\n\t * If set to `true` the Legend will display a scrollbar if its contents do\r\n\t * not fit into its `maxHeight`.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.8.0\r\n\t */\r\n\tscrollable?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Legend]].\r\n */\r\nexport interface ILegendEvents extends IComponentEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Legend]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ILegendAdapters extends IComponentAdapters, ILegendProperties { }\r\n\r\nexport interface ILegendItemEvents {\r\n\tpropertychanged: {\r\n\t\t/**\r\n\t\t * Property key.\r\n\t\t */\r\n\t\tproperty: string;\r\n\t};\r\n}\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * [[Legend]] class is used to create legend for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for Legend documentation\r\n * @see {@link ILegendEvents} for a list of available events\r\n * @see {@link ILegendAdapters} for a list of available Adapters\r\n */\r\nexport class Legend extends Component {\r\n\r\n\t/**\r\n\t * Defines the type of the data fields.\r\n\t */\r\n\tpublic _dataFields: ILegendDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ILegendProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ILegendAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ILegendEvents;\r\n\r\n\t/**\r\n\t * Defines data item type.\r\n\t */\r\n\tpublic _dataItem: LegendDataItem;\r\n\r\n\t/**\r\n\t * List of legend Item containers. Legend item containers contain marker, title label and value label.\r\n\t */\r\n\tpublic itemContainers: ListTemplate<Container>;\r\n\r\n\t/**\r\n\t * List of legend item labels.\r\n\t */\r\n\tpublic labels: ListTemplate<Label>;\r\n\r\n\t/**\r\n\t * List of legend item markers.\r\n\t */\r\n\tpublic markers: ListTemplate<Container>;\r\n\r\n\t/**\r\n\t * List of legend item value labels.\r\n\t */\r\n\tpublic valueLabels: ListTemplate<Label>;\r\n\r\n\t/**\r\n\t * Currently focused legend item (for toggling via keyboard)\r\n\t */\r\n\tpublic focusedItem: Optional<this[\"_dataItem\"]>;\r\n\r\n\r\n\tpublic scrollbar: Scrollbar;\r\n\r\n\tprotected _mouseWheelDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Legend\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.layout = \"grid\";\r\n\t\tthis.setPropertyValue(\"useDefaultMarker\", false);\r\n\t\tthis.setPropertyValue(\"scrollable\", false);\r\n\t\tthis.setPropertyValue(\"contentAlign\", \"center\");\r\n\r\n\t\t// Create a template container and list for legend items\r\n\t\tlet itemContainer: Container = new Container();\r\n\t\titemContainer.applyOnClones = true;\r\n\t\titemContainer.padding(8, 0, 8, 0);\r\n\t\titemContainer.margin(0, 10, 0, 10);\r\n\t\titemContainer.layout = \"horizontal\";\r\n\t\titemContainer.clickable = true;\r\n\t\titemContainer.focusable = true;\r\n\t\titemContainer.role = \"switch\";\r\n\t\titemContainer.togglable = true;\r\n\t\titemContainer.cursorOverStyle = MouseCursorStyle.pointer;\r\n\t\titemContainer.background.fillOpacity = 0; // creates hit area\r\n\r\n\t\t// Create container list using item template we just created\r\n\t\tthis.itemContainers = new ListTemplate<Container>(itemContainer);\r\n\t\tthis._disposers.push(new ListDisposer(this.itemContainers));\r\n\t\tthis._disposers.push(this.itemContainers.template);\r\n\r\n\t\t// Set up global keyboard events for toggling elements\r\n\t\tthis._disposers.push(getInteraction().body.events.on(\"keyup\", (ev) => {\r\n\t\t\tif (keyboard.isKey(ev.event, \"enter\") && this.focusedItem) {\r\n\t\t\t\tconst focusedItem = this.focusedItem;\r\n\t\t\t\tconst target = focusedItem.itemContainer;\r\n\t\t\t\tif (target.togglable) {\r\n\t\t\t\t\tthis.toggleDataItem(focusedItem);\r\n\t\t\t\t}\r\n\t\t\t\telse if (target.clickable && target.events.isEnabled(\"hit\")) {\r\n\t\t\t\t\ttarget.dispatchImmediately(\"hit\", { event: ev });\r\n\r\n\t\t\t\t\t// We need this here because \"hit\" event resets `this.focusedItem`\r\n\t\t\t\t\t// And we need it here\r\n\t\t\t\t\tthis.focusedItem = focusedItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, this));\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Create a template container and list for the a marker\r\n\t\tlet marker: Container = new Container();\r\n\t\tmarker.width = 23;\r\n\t\tmarker.height = 23;\r\n\t\tmarker.interactionsEnabled = false;\r\n\t\tmarker.applyOnClones = true;\r\n\t\tmarker.setStateOnChildren = true;\r\n\t\tmarker.background.fillOpacity = 0;\r\n\t\tmarker.background.strokeOpacity = 0;\r\n\t\tmarker.propertyFields.fill = \"fill\";\r\n\t\tmarker.valign = \"middle\";\r\n\r\n\t\tlet disabledColor = interfaceColors.getFor(\"disabledBackground\");\r\n\r\n\t\tmarker.events.on(\"childadded\", (event) => {\r\n\t\t\tlet child = event.newValue;\r\n\t\t\tlet activeState = child.states.create(\"active\");\r\n\t\t\tactiveState.properties.stroke = disabledColor;\r\n\t\t\tactiveState.properties.fill = disabledColor;\r\n\t\t});\r\n\r\n\t\tthis.markers = new ListTemplate<Container>(marker);\r\n\t\tthis._disposers.push(new ListDisposer(this.markers));\r\n\t\tthis._disposers.push(this.markers.template);\r\n\r\n\t\t// Create a legend background element\r\n\t\tlet rectangle: RoundedRectangle = marker.createChild(RoundedRectangle);\r\n\t\trectangle.width = percent(100);\r\n\t\trectangle.height = percent(100);\r\n\t\trectangle.applyOnClones = true;\r\n\t\trectangle.propertyFields.fill = \"fill\"; //othrwise old edge doesn't like as the same pattern is set both on parent and child https://codepen.io/team/amcharts/pen/72d7a98f3fb811d3118795220ff63182\r\n\t\trectangle.strokeOpacity = 0;\r\n\r\n\t\t// Create a template container and list for item labels\r\n\t\tlet label: Label = new Label();\r\n\t\tlabel.text = \"{name}\";\r\n\t\tlabel.margin(0, 5, 0, 5);\r\n\t\tlabel.valign = \"middle\";\r\n\t\tlabel.applyOnClones = true;\r\n\t\tlabel.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\r\n\t\tthis.labels = new ListTemplate<Label>(label);\r\n\t\tthis._disposers.push(new ListDisposer(this.labels));\r\n\t\tthis._disposers.push(this.labels.template);\r\n\t\tlabel.interactionsEnabled = false;\r\n\t\tlabel.truncate = true;\r\n\t\tlabel.fullWords = false;\r\n\r\n\t\t// Create a template container and list for item value labels\r\n\t\tlet valueLabel: Label = new Label();\r\n\t\tvalueLabel.margin(0, 5, 0, 0);\r\n\t\tvalueLabel.valign = \"middle\";\r\n\t\tvalueLabel.width = 50; // to avoid rearranging legend entries when value changes.\r\n\t\tvalueLabel.align = \"right\";\r\n\t\tvalueLabel.textAlign = \"end\";\r\n\t\tvalueLabel.applyOnClones = true;\r\n\t\tvalueLabel.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\r\n\t\tvalueLabel.interactionsEnabled = false;\r\n\r\n\t\tthis.valueLabels = new ListTemplate<Label>(valueLabel);\r\n\t\tthis._disposers.push(new ListDisposer(this.valueLabels));\r\n\t\tthis._disposers.push(this.valueLabels.template);\r\n\r\n\t\tthis.position = \"bottom\"; // don't use setPropertyValue here!\r\n\r\n\t\t// Create a state for disabled legend items\r\n\t\titemContainer.states.create(\"active\");\r\n\t\titemContainer.setStateOnChildren = true;\r\n\r\n\t\t// Apply accessibility settings\r\n\t\tthis.role = \"group\";\r\n\r\n\t\tthis.events.on(\"layoutvalidated\", this.handleScrollbar, this, false);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Legend\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new LegendDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * [validateDataElements description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected validateDataElements() {\r\n\t\tif (this.scrollbar) {\r\n\t\t\tthis.scrollbar.start = 0;\r\n\t\t\tthis.scrollbar.end = 1;\r\n\t\t}\r\n\t\tsuper.validateDataElements();\r\n\t}\r\n\r\n\t/**\r\n\t * [validateDataElement description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t * @todo Description\r\n\t * @todo Figure out how to update appearance of legend item without losing focus\r\n\t * @todo Update legend marker appearance as apperance of related series changes\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"]): void {\r\n\t\tsuper.validateDataElement(dataItem);\r\n\t\t// Get data item (legend item's) container\r\n\t\tlet container = dataItem.itemContainer;\r\n\r\n\t\tlet marker = dataItem.marker;\r\n\r\n\t\t$utils.used(dataItem.label);\r\n\t\tlet valueLabel = dataItem.valueLabel;\r\n\r\n\t\t// Set parent and update current state\r\n\t\tcontainer.readerChecked = dataItem.dataContext.visible;\r\n\r\n\t\t// Tell series its legend data item\r\n\t\tdataItem.dataContext.legendDataItem = dataItem;\r\n\r\n\t\tlet tempMaxWidth = dataItem.label.maxWidth;\r\n\t\tif(!(dataItem.label.width instanceof Percent)){\r\n\t\t\tdataItem.label.width = undefined;\t\r\n\t\t}\r\n\t\t\r\n\t\tif (tempMaxWidth > 0) {\r\n\t\t\tdataItem.label.maxWidth = tempMaxWidth;\r\n\t\t}\r\n\t\tif (valueLabel.align == \"right\") {\r\n\t\t\tvalueLabel.width = undefined;\r\n\t\t}\r\n\r\n\t\tlet legendSettings = dataItem.dataContext.legendSettings;\r\n\r\n\t\t// If we are not using default markers, create a unique legend marker based\r\n\t\t// on the data item type\r\n\t\tlet dataContext = dataItem.dataContext;\r\n\r\n\t\tif (dataContext.createLegendMarker && (!this.useDefaultMarker || !(dataContext instanceof Sprite))) {\r\n\t\t\tif (!dataItem.childrenCreated) {\r\n\t\t\t\tdataContext.createLegendMarker(marker);\r\n\t\t\t\tdataItem.childrenCreated = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.markers.template.propertyFields.fill = undefined;\r\n\t\t}\r\n\r\n\t\tif (dataContext.updateLegendValue) {\r\n\t\t\tdataContext.updateLegendValue(); // this solves issue with external legend, as legend is created after chart updates legend values\r\n\t\t}\r\n\r\n\t\tif (dataContext.component && dataContext.component.updateLegendValue) {\r\n\t\t\tdataContext.component.updateLegendValue(dataContext);\r\n\t\t}\r\n\r\n\t\tif (valueLabel.invalid) {\r\n\t\t\tvalueLabel.validate();\r\n\t\t}\r\n\r\n\t\tif (valueLabel.text == \"\" || valueLabel.text == undefined) {\r\n\t\t\tvalueLabel.__disabled = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvalueLabel.__disabled = false;\r\n\t\t}\r\n\r\n\t\tif (legendSettings && (legendSettings.itemValueText != undefined || legendSettings.valueText != undefined)) {\r\n\t\t\tvalueLabel.__disabled = false;\r\n\t\t}\r\n\r\n\t\tlet visible = dataItem.dataContext.visible;\r\n\r\n\t\tif (visible === undefined) {\r\n\t\t\tvisible = true;\r\n\t\t}\r\n\t\tvisible = $type.toBoolean(visible);\r\n\t\tdataItem.dataContext.visible = visible;\r\n\r\n\t\tcontainer.events.disableType(\"toggled\");\r\n\r\n\t\tcontainer.isActive = !visible;\r\n\t\tif (container.isActive) {\r\n\t\t\tcontainer.setState(\"active\", 0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcontainer.setState(\"default\", 0);\r\n\t\t}\r\n\t\tcontainer.events.enableType(\"toggled\");\r\n\t}\r\n\r\n\r\n\tpublic afterDraw() {\r\n\t\tlet maxWidth = this.getPropertyValue(\"maxWidth\");\r\n\t\tlet maxLabelWidth = 0;\r\n\t\tthis.labels.each((label) => {\r\n\t\t\tif (label.invalid) {\r\n\t\t\t\tlabel.maxWidth = undefined;\r\n\t\t\t\tlabel.validate();\r\n\t\t\t}\r\n\t\t\tif (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxLabelWidth) {\r\n\t\t\t\tmaxLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\r\n\t\t\t}\r\n\r\n\t\t})\r\n\r\n\t\tlet maxValueLabelWidth = 0;\r\n\t\tthis.valueLabels.each((label) => {\r\n\t\t\tif (label.invalid) {\t\t\t\t\r\n\t\t\t\tlabel.validate();\r\n\t\t\t}\r\n\t\t\tif (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxValueLabelWidth) {\r\n\t\t\t\tmaxValueLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet maxMarkerWidth = 0;\r\n\t\tthis.markers.each((marker) => {\r\n\t\t\tif (marker.invalid) {\r\n\t\t\t\tmarker.validate();\r\n\t\t\t}\r\n\t\t\tif (marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight > maxMarkerWidth) {\r\n\t\t\t\tmaxMarkerWidth = marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight;\r\n\t\t\t}\r\n\t\t})\r\n\t\tlet itemContainer = this.itemContainers.template;\r\n\t\tlet margin = itemContainer.pixelMarginRight + itemContainer.pixelMarginLeft;\r\n\t\tlet maxAdjustedLabelWidth: number;\r\n\t\tlet trueMaxWidth = maxLabelWidth + maxValueLabelWidth + maxMarkerWidth;\r\n\t\tif (!$type.isNumber(maxWidth)) {\r\n\t\t\tmaxAdjustedLabelWidth = maxLabelWidth;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tmaxWidth = maxWidth - margin;\r\n\t\t\tif (maxWidth > trueMaxWidth) {\r\n\t\t\t\tmaxWidth = trueMaxWidth;\r\n\t\t\t}\r\n\t\t\tmaxAdjustedLabelWidth = maxWidth - maxMarkerWidth - maxValueLabelWidth;\r\n\t\t}\r\n\r\n\t\tthis.labels.each((label) => {\r\n\t\t\tif (this.valueLabels.template.align == \"right\" || label.measuredWidth > maxAdjustedLabelWidth) {\r\n\t\t\t\tif(!(label.width instanceof Percent)){\r\n\t\t\t\t\tlabel.width = Math.min(label.maxWidth, maxAdjustedLabelWidth - label.pixelMarginLeft - label.pixelMarginRight);\r\n\t\t\t\t\tlabel.maxWidth = label.width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\tif (this.valueLabels.template.align == \"right\") {\r\n\t\t\tthis.valueLabels.each((valueLabel) => {\r\n\t\t\t\tvalueLabel.width = maxValueLabelWidth - valueLabel.pixelMarginRight - valueLabel.pixelMarginLeft;\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tsuper.afterDraw();\r\n\t}\r\n\r\n\r\n\tprotected handleScrollbar() {\r\n\t\tlet scrollbar = this.scrollbar;\r\n\t\tif (this.scrollable && scrollbar) {\r\n\t\t\tscrollbar.height = this.measuredHeight;\r\n\t\t\tscrollbar.x = this.measuredWidth - scrollbar.pixelWidth - scrollbar.pixelMarginLeft;\r\n\r\n\t\t\tif (this.contentHeight > this.measuredHeight) {\r\n\t\t\t\tscrollbar.visible = true;\r\n\t\t\t\tscrollbar.thumb.height = scrollbar.height * this.measuredHeight / this.contentHeight;\r\n\t\t\t\tthis.paddingRight = scrollbar.pixelWidth + scrollbar.pixelMarginLeft + + scrollbar.pixelMarginRight;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscrollbar.visible = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateMasks();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Position of the legend.\r\n\t *\r\n\t * Options: \"left\", \"right\", \"top\", \"bottom\" (default), or \"absolute\".\r\n\t *\r\n\t * IMPORTANT: [[MapChart]] will ignore this setting, as it is using different\r\n\t * layout structure than other charts.\r\n\t *\r\n\t * To position legend in [[MapChart]] set legend's `align` (`\"left\"` or\r\n\t * `\"right\"`) and `valign` (`\"top\"` or `\"bottom\"`) properties instead.\r\n\t *\r\n\t * @default \"bottom\"\r\n\t * @param value Position\r\n\t */\r\n\tpublic set position(value: LegendPosition) {\r\n\t\tif (this.setPropertyValue(\"position\", value)) {\r\n\t\t\tif (value == \"left\" || value == \"right\") {\r\n\t\t\t\tthis.margin(10, 5, 10, 10);\r\n\t\t\t\tthis.valign = \"middle\";\r\n\t\t\t\tthis.contentAlign = \"none\";\r\n\t\t\t\tthis.valueLabels.template.align = \"right\";\r\n\r\n\t\t\t\tif (!$type.isNumber(this.maxColumns)) {\r\n\t\t\t\t\tthis.maxColumns = 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.width = undefined;\r\n\t\t\t\tthis.maxWidth = 220;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.maxColumns = undefined;\r\n\t\t\t\tthis.width = percent(100);\r\n\t\t\t\tthis.valueLabels.template.align = \"left\";\r\n\t\t\t}\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Position\r\n\t */\r\n\tpublic get position(): LegendPosition {\r\n\t\treturn this.getPropertyValue(\"position\");\r\n\t}\r\n\r\n\t/**\r\n\t * Should legend try to mirror the look of the related item when building\r\n\t * the marker for legend item?\r\n\t *\r\n\t * If set to `false` it will try to make the marker look like its related\r\n\t * item.\r\n\t *\r\n\t * E.g. if an item is for a Line Series, it will display a line of the\r\n\t * same thickness, color, and will use the same bullets if series have them.\r\n\t *\r\n\t * If set to `true`, all markers will be shown as squares, regardless of te\r\n\t * series type.\r\n\t *\r\n\t * @default false\r\n\t * @param value Use default marker?\r\n\t */\r\n\tpublic set useDefaultMarker(value: boolean) {\r\n\t\tthis.setPropertyValue(\"useDefaultMarker\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use default marker?\r\n\t */\r\n\tpublic get useDefaultMarker(): boolean {\r\n\t\treturn this.getPropertyValue(\"useDefaultMarker\");\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true` the Legend will display a scrollbar if its contents do\r\n\t * not fit into its `maxHeight`.\r\n\t *\r\n\t * Please note that `maxHeight` is automatically set for Legend when its\r\n\t * `position` is set to `\"left\"` or `\"right\"`.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.8.0\r\n\t * @param value Legend Scrollable?\r\n\t */\r\n\tpublic set scrollable(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"scrollable\", value, true)) {\r\n\t\t\tif (value) {\r\n\t\t\t\tlet scrollbar = this.createChild(Scrollbar);\r\n\t\t\t\tthis.scrollbar = scrollbar;\r\n\t\t\t\tscrollbar.isMeasured = false;\r\n\t\t\t\tscrollbar.orientation = \"vertical\";\r\n\t\t\t\tscrollbar.endGrip.__disabled = true;\r\n\t\t\t\tscrollbar.startGrip.__disabled = true;\r\n\t\t\t\tscrollbar.visible = false;\r\n\t\t\t\tscrollbar.marginLeft = 5;\r\n\r\n\t\t\t\tthis._mouseWheelDisposer = this.events.on(\"wheel\", this.handleWheel, this, false);\r\n\t\t\t\tthis._disposers.push(this._mouseWheelDisposer);\r\n\r\n\t\t\t\tthis._disposers.push(scrollbar.events.on(\"rangechanged\", this.updateMasks, this, false));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this._mouseWheelDisposer) {\r\n\t\t\t\t\tthis._mouseWheelDisposer.dispose();\r\n\t\t\t\t\tif (this.scrollbar) {\r\n\t\t\t\t\t\tthis.scrollbar.dispose();\r\n\t\t\t\t\t\tthis.scrollbar = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles mouse wheel scrolling of legend.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleWheel(event: AMEvent<Sprite, ISpriteEvents>[\"wheel\"]): void {\r\n\t\tlet shift = event.shift.y;\r\n\t\tlet scrollbar = this.scrollbar\r\n\t\tif (scrollbar) {\r\n\t\t\tlet ds = (shift / 1000 * this.measuredHeight / this.contentHeight);\r\n\t\t\tlet delta = scrollbar.end - scrollbar.start;\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\tscrollbar.start = $math.max(0, scrollbar.start - ds);\r\n\t\t\t\tscrollbar.end = scrollbar.start + delta;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscrollbar.end = $math.min(1, scrollbar.end - ds);\r\n\t\t\t\tscrollbar.start = scrollbar.end - delta;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected updateMasks(): void {\r\n\t\tif (this.scrollbar) {\r\n\t\t\tthis.itemContainers.each((itemContainer) => {\r\n\t\t\t\titemContainer.dy = -this.scrollbar.thumb.pixelY * this.contentHeight / this.measuredHeight;\r\n\t\t\t\titemContainer.maskRectangle = { x: 0, y: -itemContainer.dy, width: this.measuredWidth, height: this.measuredHeight }\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Legend Scrollable?\r\n\t */\r\n\tpublic get scrollable(): boolean {\r\n\t\treturn this.getPropertyValue(\"scrollable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles a legend item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param item Legend item\r\n\t * @todo Maybe do it with togglable instead\r\n\t */\r\n\tpublic toggleDataItem(item: this[\"_dataItem\"]): void {\r\n\t\tlet dataContext = item.dataContext;\r\n\r\n\t\tif (!dataContext.visible || dataContext.isHiding || (dataContext instanceof Sprite && dataContext.isHidden)) {\r\n\t\t\titem.color = item.colorOrig;\r\n\r\n\t\t\tdataContext.appeared = true;\r\n\t\t\titem.itemContainer.isActive = false;\r\n\r\n\t\t\tif (dataContext.hidden === true) {\r\n\t\t\t\tdataContext.hidden = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (dataContext.show) {\r\n\t\t\t\tdataContext.show();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdataContext.visible = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.svgContainer.readerAlert(this.language.translate(\"%1 shown\", this.language.locale, item.label.readerTitle));\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\titem.itemContainer.isActive = true;\r\n\t\t\tdataContext.appeared = true;\r\n\r\n\t\t\tif (dataContext.hide) {\r\n\t\t\t\tdataContext.hide();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdataContext.visible = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.svgContainer.readerAlert(this.language.translate(\"%1 hidden\", this.language.locale, item.label.readerTitle));\r\n\t\t\titem.color = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Override preloader method so that legend does not accidentally show its\r\n\t * own preloader.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Always `undefined`\r\n\t */\r\n\tpublic get preloader(): Optional<Preloader> {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemPropertyChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemPropertyChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\t\tdataItem.valueLabel.invalidate();\r\n\t\tdataItem.label.invalidate();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Legend\"] = Legend;\r\n\r\n\r\n/**\r\n * Add default responsive rules\r\n */\r\n\r\n/**\r\n * Move legend to below the chart if chart is narrow\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.widthXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof Legend && (target.position == \"left\" || target.position == \"right\")) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tstate.properties.position = \"bottom\";\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});\r\n\r\n/**\r\n * Move legend to the right if chart is very short\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.heightXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof Legend && (target.position == \"top\" || target.position == \"bottom\")) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tstate.properties.position = \"right\";\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});\r\n\r\n/**\r\n * Disable legend altogether on small charts\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.isXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof Legend) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tstate.properties.disabled = true;\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});\r\n"]}
\No newline at end of file