@carbon/charts 0.51.1 → 0.51.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,6 +10,8 @@ export declare class Toolbar extends Component {
10
10
  renderOverflowMenu(): void;
11
11
  isOverflowMenuOpen(): any;
12
12
  updateOverflowMenu(show: boolean): void;
13
+ focusOnPreviousEnabledToolbarItem(currentItemIndex: any): void;
14
+ focusOnNextEnabledToolbarItem(currentItemIndex: any): void;
13
15
  focusOnPreviousEnabledMenuItem(currentItemIndex: any): void;
14
16
  focusOnNextEnabledMenuItem(currentItemIndex: any): void;
15
17
  toggleOverflowMenu(event: any): void;
@@ -20,6 +22,7 @@ export declare class Toolbar extends Component {
20
22
  buttonList: any[];
21
23
  overflowMenuItemList: any[];
22
24
  };
25
+ getToolbarButtonItems(): any[];
23
26
  getOverflowMenuItems(): any[];
24
27
  getOverflowButtonConfig(): {
25
28
  id: string;
@@ -72,6 +72,7 @@ var Toolbar = /** @class */ (function (_super) {
72
72
  .append('div')
73
73
  .attr('class', 'toolbar-control bx--overflow-menu')
74
74
  .attr('role', 'button');
75
+ var self_1 = this;
75
76
  var allToolbarControls = enteringToolbarControls
76
77
  .merge(toolbarControls)
77
78
  .classed('disabled', function (d) {
@@ -82,16 +83,23 @@ var Toolbar = /** @class */ (function (_super) {
82
83
  })
83
84
  .attr('aria-label', function (d) { return d.title; })
84
85
  .html(function (d) { return "\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"" + _this.services.domUtils.generateElementIDString("control-" + d.id) + "\" aria-label=\"" + d.title + "\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: " + (d.iconWidth !== undefined ? d.iconWidth : '20px') + "; height: " + (d.iconWidth !== undefined ? d.iconHeight : '20px') + "\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t" + d.iconSVGContent + "\n\t\t\t\t</svg>\n\t\t\t</button>"; })
85
- .each(function (d) {
86
+ .each(function (d, index) {
86
87
  select(this)
87
88
  .select('button')
88
89
  .on('click', !d.shouldBeDisabled() ? d.clickFunction : null)
89
- .on('keyup', function (event) {
90
+ .on('keydown', function (event) {
90
91
  if ((event.key && event.key === 'Enter') ||
91
92
  event.key === ' ') {
92
93
  event.preventDefault();
93
94
  d.clickFunction();
94
95
  }
96
+ else if (event.key && event.key === 'ArrowLeft') {
97
+ self_1.focusOnPreviousEnabledToolbarItem(index);
98
+ }
99
+ else if (event.key &&
100
+ event.key === 'ArrowRight') {
101
+ self_1.focusOnNextEnabledToolbarItem(index);
102
+ }
95
103
  });
96
104
  });
97
105
  this.overflowButton = this.getComponentContainer().select("button.bx--overflow-menu__trigger#" + this.services.domUtils.generateElementIDString('control-toolbar-overflow-menu'));
@@ -145,6 +153,43 @@ var Toolbar = /** @class */ (function (_super) {
145
153
  this.services.events.dispatchEvent(Events.Toolbar.HIDE_OVERFLOW_MENU);
146
154
  }
147
155
  };
156
+ // Toolbar controllers
157
+ Toolbar.prototype.focusOnPreviousEnabledToolbarItem = function (currentItemIndex) {
158
+ var buttonList = this.getToolbarButtonItems();
159
+ var previousItemIndex = buttonList.length;
160
+ for (var i = currentItemIndex - 1; i >= 0; i--) {
161
+ var previousButtonItem = buttonList[i];
162
+ if (!previousButtonItem.shouldBeDisabled()) {
163
+ previousItemIndex = i;
164
+ break;
165
+ }
166
+ }
167
+ // only if previous enabled menu item found
168
+ if (previousItemIndex < buttonList.length) {
169
+ var previousItemNode = select("button#" + this.services.domUtils.generateElementIDString("control-" + buttonList[previousItemIndex].id)).node();
170
+ if ('focus' in previousItemNode) {
171
+ previousItemNode.focus();
172
+ }
173
+ }
174
+ };
175
+ Toolbar.prototype.focusOnNextEnabledToolbarItem = function (currentItemIndex) {
176
+ var buttonList = this.getToolbarButtonItems();
177
+ var nextItemIndex = -1;
178
+ for (var i = currentItemIndex + 1; i < buttonList.length; i++) {
179
+ var nextOverflowMenuItem = buttonList[i];
180
+ if (!nextOverflowMenuItem.shouldBeDisabled()) {
181
+ nextItemIndex = i;
182
+ break;
183
+ }
184
+ }
185
+ // only if next enabled menu item found
186
+ if (nextItemIndex > -1) {
187
+ var nextItemNode = select("button#" + this.services.domUtils.generateElementIDString("control-" + buttonList[nextItemIndex].id)).node();
188
+ if ('focus' in nextItemNode) {
189
+ nextItemNode.focus();
190
+ }
191
+ }
192
+ };
148
193
  Toolbar.prototype.focusOnPreviousEnabledMenuItem = function (currentItemIndex) {
149
194
  var overflowMenuItems = this.getOverflowMenuItems();
150
195
  var previousItemIndex = overflowMenuItems.length;
@@ -191,7 +236,7 @@ var Toolbar = /** @class */ (function (_super) {
191
236
  // show overflow menu
192
237
  this.updateOverflowMenu(true);
193
238
  // setup overflow menu item event listener
194
- var self_1 = this;
239
+ var self_2 = this;
195
240
  var overflowMenuItems = this.getOverflowMenuItems();
196
241
  overflowMenuItems.forEach(function (menuItem, index) {
197
242
  var element = select("#" + _this.services.domUtils.generateElementIDString("control-" + menuItem.id));
@@ -200,29 +245,37 @@ var Toolbar = /** @class */ (function (_super) {
200
245
  // call the specified function
201
246
  menuItem.clickFunction();
202
247
  // hide overflow menu
203
- self_1.updateOverflowMenu(false);
248
+ self_2.updateOverflowMenu(false);
204
249
  });
205
- element.on('keyup', function () {
206
- if (event.key === 'Enter') {
250
+ element.on('keydown', function (keyEvent) {
251
+ if (keyEvent && keyEvent.key === 'Enter') {
207
252
  // call the specified function
208
253
  menuItem.clickFunction();
209
254
  }
210
- else if (event.key === 'ArrowUp') {
255
+ else if (keyEvent && keyEvent.key === 'ArrowUp') {
211
256
  // focus on previous menu item
212
- self_1.focusOnPreviousEnabledMenuItem(index);
257
+ self_2.focusOnPreviousEnabledMenuItem(index);
213
258
  }
214
- else if (event.key === 'ArrowDown') {
259
+ else if (keyEvent && keyEvent.key === 'ArrowDown') {
215
260
  // focus on next menu item
216
- self_1.focusOnNextEnabledMenuItem(index);
261
+ self_2.focusOnNextEnabledMenuItem(index);
262
+ }
263
+ else if (keyEvent && keyEvent.key === 'Escape') {
264
+ self_2.updateOverflowMenu(false);
217
265
  }
218
266
  // Not hide overflow menu by keyboard arrow up/down event
267
+ // Prevent page from scrolling up/down
268
+ keyEvent.preventDefault();
219
269
  });
220
270
  }
221
271
  });
222
272
  // default to focus on the first enabled menu item
223
- self_1.focusOnNextEnabledMenuItem(-1);
273
+ self_2.focusOnNextEnabledMenuItem(-1);
274
+ }
275
+ // propogation should not be stopped for keyboard events
276
+ if (!!event) {
277
+ event.stopImmediatePropagation();
224
278
  }
225
- event.stopImmediatePropagation();
226
279
  };
227
280
  Toolbar.prototype.getControlConfigs = function () {
228
281
  var _this = this;
@@ -255,6 +308,16 @@ var Toolbar = /** @class */ (function (_super) {
255
308
  overflowMenuItemList: controlList.concat(overflowSpecificControls),
256
309
  };
257
310
  };
311
+ Toolbar.prototype.getToolbarButtonItems = function () {
312
+ var _a = this.getControlConfigs(), buttonList = _a.buttonList, overflowMenuItemList = _a.overflowMenuItemList;
313
+ if (!!overflowMenuItemList) {
314
+ buttonList.push(this.getOverflowButtonConfig());
315
+ }
316
+ if (!!buttonList) {
317
+ return buttonList;
318
+ }
319
+ return [];
320
+ };
258
321
  Toolbar.prototype.getOverflowMenuItems = function () {
259
322
  var overflowMenuItemList = this.getControlConfigs().overflowMenuItemList;
260
323
  if (!!overflowMenuItemList) {
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["toolbar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, RenderTypes, ToolbarControlTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Toolbar extends Component {\n\ttype = 'toolbar';\n\trenderType = RenderTypes.HTML;\n\n\t// overflow menu button to control background color\n\toverflowButton: any;\n\n\t// div options list element\n\toverflowMenu: any;\n\n\tinit() {\n\t\tconst bodyOnClickHandler = () => this.updateOverflowMenu(false);\n\n\t\t// Grab the tooltip element\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\tthis.renderOverflowMenu();\n\n\t\t\t\t// hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.addEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\n\t\t// listen to hide overflow menu event to hide the overflow menu\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\t// // hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.removeEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst container = this.getComponentContainer().attr('role', 'toolbar');\n\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tif (isDataLoading) {\n\t\t\tcontainer.html('');\n\t\t} else {\n\t\t\tif (!this.overflowMenu) {\n\t\t\t\tthis.overflowMenu = container\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\t'bx--overflow-menu-options bx--overflow-menu--flip'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('tabindex', -1)\n\t\t\t\t\t.attr('role', 'menu')\n\t\t\t\t\t.html(`<ul></ul>`);\n\t\t\t}\n\n\t\t\t// get the toolbar buttons\n\t\t\tconst {\n\t\t\t\tbuttonList,\n\t\t\t\toverflowMenuItemList,\n\t\t\t} = this.getControlConfigs();\n\n\t\t\t// overflow button is required only if overflow menu item list is valid\n\t\t\tif (!!overflowMenuItemList) {\n\t\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t\t}\n\n\t\t\tconst toolbarControls = container\n\t\t\t\t.selectAll('div.toolbar-control')\n\t\t\t\t.data(buttonList, (button) => button.id);\n\n\t\t\ttoolbarControls.exit().remove();\n\n\t\t\tconst enteringToolbarControls = toolbarControls\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'toolbar-control bx--overflow-menu')\n\t\t\t\t.attr('role', 'button');\n\n\t\t\tconst allToolbarControls = enteringToolbarControls\n\t\t\t\t.merge(toolbarControls)\n\t\t\t\t.classed('disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-label', (d) => d.title)\n\t\t\t\t.html(\n\t\t\t\t\t(d) => `\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)}\" aria-label=\"${d.title}\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: ${\n\t\t\t\t\td.iconWidth !== undefined ? d.iconWidth : '20px'\n\t\t\t\t}; height: ${\n\t\t\t\t\t\td.iconWidth !== undefined ? d.iconHeight : '20px'\n\t\t\t\t\t}\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t${d.iconSVGContent}\n\t\t\t\t</svg>\n\t\t\t</button>`\n\t\t\t\t)\n\t\t\t\t.each(function (d) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('button')\n\t\t\t\t\t\t.on('click', !d.shouldBeDisabled() ? d.clickFunction : null)\n\t\t\t\t\t\t.on('keyup', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(event.key && event.key === 'Enter') ||\n\t\t\t\t\t\t\t\tevent.key === ' '\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\td.clickFunction();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.overflowButton = this.getComponentContainer().select(\n\t\t\t\t`button.bx--overflow-menu__trigger#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t'control-toolbar-overflow-menu'\n\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderOverflowMenu() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\n\t\tconst overflowMenuControls = this.overflowMenu\n\t\t\t.select('ul')\n\t\t\t.selectAll('li.bx--overflow-menu-options__option')\n\t\t\t.data(overflowMenuItemList, (button) =>\n\t\t\t\tTools.getProperty(button, 'id')\n\t\t\t);\n\n\t\toverflowMenuControls.exit().remove();\n\n\t\tconst enteringOverflowMenuControls = overflowMenuControls\n\t\t\t.enter()\n\t\t\t.append('li')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'bx--overflow-menu-options__option')\n\t\t\t.attr('role', 'menuitem');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.append('button')\n\t\t\t.attr('class', 'bx--overflow-menu-options__btn');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.merge(overflowMenuControls)\n\t\t\t.classed('bx--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t.selectAll('button')\n\t\t\t.text((d) => d.text);\n\t}\n\n\tisOverflowMenuOpen() {\n\t\treturn this.overflowMenu.classed('is-open');\n\t}\n\n\t// show/hide overflow menu\n\tupdateOverflowMenu(show: boolean) {\n\t\tthis.overflowMenu.classed('is-open', show);\n\n\t\t// update overflow button background\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.attr('aria-expanded', show);\n\t\t\tselect(this.overflowButton.node().parentNode).classed(\n\t\t\t\t'bx--overflow-menu--open',\n\t\t\t\tshow\n\t\t\t);\n\t\t}\n\n\t\tif (show) {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU\n\t\t\t);\n\t\t} else {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU\n\t\t\t);\n\t\t}\n\t}\n\n\tfocusOnPreviousEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet previousItemIndex = overflowMenuItems.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!previousOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < overflowMenuItems.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[previousItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < overflowMenuItems.length; i++) {\n\t\t\tconst nextOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[nextItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOverflowMenu(event) {\n\t\tif (this.isOverflowMenuOpen()) {\n\t\t\t// hide overflow menu\n\t\t\tthis.updateOverflowMenu(false);\n\t\t} else {\n\t\t\t// show overflow menu\n\t\t\tthis.updateOverflowMenu(true);\n\n\t\t\t// setup overflow menu item event listener\n\t\t\tconst self = this;\n\t\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\t\toverflowMenuItems.forEach((menuItem, index) => {\n\t\t\t\tconst element = select(\n\t\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`control-${menuItem.id}`\n\t\t\t\t\t)}`\n\t\t\t\t);\n\t\t\t\tif (element !== null) {\n\t\t\t\t\telement.on('click', () => {\n\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\tmenuItem.clickFunction();\n\n\t\t\t\t\t\t// hide overflow menu\n\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t});\n\n\t\t\t\t\telement.on('keyup', () => {\n\t\t\t\t\t\tif (event.key === 'Enter') {\n\t\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\t\tmenuItem.clickFunction();\n\t\t\t\t\t\t} else if (event.key === 'ArrowUp') {\n\t\t\t\t\t\t\t// focus on previous menu item\n\t\t\t\t\t\t\tself.focusOnPreviousEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (event.key === 'ArrowDown') {\n\t\t\t\t\t\t\t// focus on next menu item\n\t\t\t\t\t\t\tself.focusOnNextEnabledMenuItem(index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Not hide overflow menu by keyboard arrow up/down event\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// default to focus on the first enabled menu item\n\t\t\tself.focusOnNextEnabledMenuItem(-1);\n\t\t}\n\t\tevent.stopImmediatePropagation();\n\t}\n\n\tgetControlConfigs() {\n\t\tconst numberOfIcons = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'numberOfIcons'\n\t\t);\n\t\tconst controls = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'controls'\n\t\t);\n\n\t\tconst controlList = [];\n\t\tconst overflowSpecificControls = [];\n\t\tcontrols.forEach((control) => {\n\t\t\tconst controlConfig = this.getControlConfigByType(control.type);\n\n\t\t\t// add to list if config is valid\n\t\t\tif (controlConfig) {\n\t\t\t\tcontrolConfig.text = control.text ? control.text : control.type;\n\n\t\t\t\tif (controlConfig.id.indexOf('toolbar-export') !== -1) {\n\t\t\t\t\toverflowSpecificControls.push(controlConfig);\n\t\t\t\t} else {\n\t\t\t\t\tcontrolList.push(controlConfig);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tcontrolList.length <= numberOfIcons &&\n\t\t\toverflowSpecificControls.length === 0\n\t\t) {\n\t\t\treturn {\n\t\t\t\tbuttonList: controlList,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t// leave one button for overflow button\n\t\t\tbuttonList: controlList.splice(0, numberOfIcons - 1),\n\t\t\toverflowMenuItemList: controlList.concat(overflowSpecificControls),\n\t\t};\n\t}\n\n\tgetOverflowMenuItems() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\treturn overflowMenuItemList;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// special button config for overflow button\n\tgetOverflowButtonConfig() {\n\t\treturn {\n\t\t\tid: 'toolbar-overflow-menu',\n\t\t\ttitle: 'More options',\n\t\t\tshouldBeDisabled: () => false,\n\t\t\ticonSVGContent: `<circle cx=\"16\" cy=\"8\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"16\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"24\" r=\"2\"></circle>`,\n\t\t\tclickFunction: (event) => this.toggleOverflowMenu(event),\n\t\t};\n\t}\n\n\tgetControlConfigByType(controlType: ToolbarControlTypes) {\n\t\tconst isZoomBarEnabled =\n\t\t\tthis.services.zoom &&\n\t\t\tthis.services.zoom.isZoomBarEnabled() &&\n\t\t\t!this.services.zoom.isEmptyState();\n\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tlet controlConfig;\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomIn',\n\t\t\t\t\t\ttitle: 'Zoom in',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMinZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomIn(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomOut',\n\t\t\t\t\t\ttitle: 'Zoom out',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomOut(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-resetZoom',\n\t\t\t\t\t\ttitle: 'Reset zoom',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\t\tthis.services.zoom.resetZoomDomain(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-makefullscreen',\n\t\t\t\t\ttitle: 'Make fullscreen',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\ticonWidth: '15px',\n\t\t\t\t\ticonHight: '15px',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\tclickFunction: () => {\n\t\t\t\t\t\tthis.services.domUtils.toggleFullscreen();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-showasdatatable',\n\t\t\t\t\ttitle: 'Show as table',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tshouldBeDisabled: () => displayData.length === 0,\n\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\tthis.services.events.dispatchEvent(Events.Modal.SHOW),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-CSV',\n\t\t\t\t\ttitle: 'Export as CSV',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.model.exportToCSV(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-PNG',\n\t\t\t\t\ttitle: 'Export as PNG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToPNG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-JPG',\n\t\t\t\t\ttitle: 'Export as JPG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToJPG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t// add more toolbar control configuration here\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t\treturn controlConfig;\n\t}\n\n\tgetControlIconByType(controlType: ToolbarControlTypes) {\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\treturn `<polygon points=\"19 13 15 13 15 9 13 9 13 13 9 13 9 15 13 15 13 19 15 19 15 15 19 15 19 13\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\treturn `<rect x=\"9\" y=\"13\" width=\"10\" height=\"2\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\treturn `<polygon points=\"21 2 21 4 26.59 4 17 13.58 18.41 15 28 5.41 28 11 30 11 30 2 21 2\"/><polygon points=\"15 18.42 13.59 17 4 26.59 4 21 2 21 2 30 11 30 11 28 5.41 28 15 18.42\"/>`;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\treturn `<rect x=\"4\" y=\"6\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"12\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"18\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"24\" width=\"18\" height=\"2\"/><rect x=\"26\" y=\"6\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"12\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"18\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"24\" width=\"2\" height=\"2\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`; // add more icons here\n\t\t\t// svg icon must be with 32x32 viewBox\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["toolbar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, RenderTypes, ToolbarControlTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Toolbar extends Component {\n\ttype = 'toolbar';\n\trenderType = RenderTypes.HTML;\n\n\t// overflow menu button to control background color\n\toverflowButton: any;\n\n\t// div options list element\n\toverflowMenu: any;\n\n\tinit() {\n\t\tconst bodyOnClickHandler = () => this.updateOverflowMenu(false);\n\n\t\t// Grab the tooltip element\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\tthis.renderOverflowMenu();\n\n\t\t\t\t// hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.addEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\n\t\t// listen to hide overflow menu event to hide the overflow menu\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\t// // hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.removeEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst container = this.getComponentContainer().attr('role', 'toolbar');\n\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tif (isDataLoading) {\n\t\t\tcontainer.html('');\n\t\t} else {\n\t\t\tif (!this.overflowMenu) {\n\t\t\t\tthis.overflowMenu = container\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\t'bx--overflow-menu-options bx--overflow-menu--flip'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('tabindex', -1)\n\t\t\t\t\t.attr('role', 'menu')\n\t\t\t\t\t.html(`<ul></ul>`);\n\t\t\t}\n\n\t\t\t// get the toolbar buttons\n\t\t\tconst {\n\t\t\t\tbuttonList,\n\t\t\t\toverflowMenuItemList,\n\t\t\t} = this.getControlConfigs();\n\n\t\t\t// overflow button is required only if overflow menu item list is valid\n\t\t\tif (!!overflowMenuItemList) {\n\t\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t\t}\n\n\t\t\tconst toolbarControls = container\n\t\t\t\t.selectAll('div.toolbar-control')\n\t\t\t\t.data(buttonList, (button) => button.id);\n\n\t\t\ttoolbarControls.exit().remove();\n\n\t\t\tconst enteringToolbarControls = toolbarControls\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'toolbar-control bx--overflow-menu')\n\t\t\t\t.attr('role', 'button');\n\n\t\t\tconst self = this;\n\t\t\tconst allToolbarControls = enteringToolbarControls\n\t\t\t\t.merge(toolbarControls)\n\t\t\t\t.classed('disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-label', (d) => d.title)\n\t\t\t\t.html(\n\t\t\t\t\t(d) => `\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)}\" aria-label=\"${d.title}\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: ${\n\t\t\t\t\td.iconWidth !== undefined ? d.iconWidth : '20px'\n\t\t\t\t}; height: ${\n\t\t\t\t\t\td.iconWidth !== undefined ? d.iconHeight : '20px'\n\t\t\t\t\t}\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t${d.iconSVGContent}\n\t\t\t\t</svg>\n\t\t\t</button>`\n\t\t\t\t)\n\t\t\t\t.each(function (d, index) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('button')\n\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t'click',\n\t\t\t\t\t\t\t!d.shouldBeDisabled() ? d.clickFunction : null\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(event.key && event.key === 'Enter') ||\n\t\t\t\t\t\t\t\tevent.key === ' '\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\td.clickFunction();\n\t\t\t\t\t\t\t} else if (event.key && event.key === 'ArrowLeft') {\n\t\t\t\t\t\t\t\tself.focusOnPreviousEnabledToolbarItem(index);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tevent.key &&\n\t\t\t\t\t\t\t\tevent.key === 'ArrowRight'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tself.focusOnNextEnabledToolbarItem(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.overflowButton = this.getComponentContainer().select(\n\t\t\t\t`button.bx--overflow-menu__trigger#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t'control-toolbar-overflow-menu'\n\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderOverflowMenu() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\n\t\tconst overflowMenuControls = this.overflowMenu\n\t\t\t.select('ul')\n\t\t\t.selectAll('li.bx--overflow-menu-options__option')\n\t\t\t.data(overflowMenuItemList, (button) =>\n\t\t\t\tTools.getProperty(button, 'id')\n\t\t\t);\n\n\t\toverflowMenuControls.exit().remove();\n\n\t\tconst enteringOverflowMenuControls = overflowMenuControls\n\t\t\t.enter()\n\t\t\t.append('li')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'bx--overflow-menu-options__option')\n\t\t\t.attr('role', 'menuitem');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.append('button')\n\t\t\t.attr('class', 'bx--overflow-menu-options__btn');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.merge(overflowMenuControls)\n\t\t\t.classed('bx--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t.selectAll('button')\n\t\t\t.text((d) => d.text);\n\t}\n\n\tisOverflowMenuOpen() {\n\t\treturn this.overflowMenu.classed('is-open');\n\t}\n\n\t// show/hide overflow menu\n\tupdateOverflowMenu(show: boolean) {\n\t\tthis.overflowMenu.classed('is-open', show);\n\n\t\t// update overflow button background\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.attr('aria-expanded', show);\n\t\t\tselect(this.overflowButton.node().parentNode).classed(\n\t\t\t\t'bx--overflow-menu--open',\n\t\t\t\tshow\n\t\t\t);\n\t\t}\n\n\t\tif (show) {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU\n\t\t\t);\n\t\t} else {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU\n\t\t\t);\n\t\t}\n\t}\n\n\t// Toolbar controllers\n\tfocusOnPreviousEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet previousItemIndex = buttonList.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousButtonItem = buttonList[i];\n\t\t\tif (!previousButtonItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < buttonList.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[previousItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < buttonList.length; i++) {\n\t\t\tconst nextOverflowMenuItem = buttonList[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[nextItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnPreviousEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet previousItemIndex = overflowMenuItems.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!previousOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < overflowMenuItems.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[previousItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < overflowMenuItems.length; i++) {\n\t\t\tconst nextOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[nextItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOverflowMenu(event) {\n\t\tif (this.isOverflowMenuOpen()) {\n\t\t\t// hide overflow menu\n\t\t\tthis.updateOverflowMenu(false);\n\t\t} else {\n\t\t\t// show overflow menu\n\t\t\tthis.updateOverflowMenu(true);\n\n\t\t\t// setup overflow menu item event listener\n\t\t\tconst self = this;\n\t\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\t\toverflowMenuItems.forEach((menuItem, index) => {\n\t\t\t\tconst element = select(\n\t\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`control-${menuItem.id}`\n\t\t\t\t\t)}`\n\t\t\t\t);\n\t\t\t\tif (element !== null) {\n\t\t\t\t\telement.on('click', () => {\n\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\tmenuItem.clickFunction();\n\n\t\t\t\t\t\t// hide overflow menu\n\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t});\n\n\t\t\t\t\telement.on('keydown', (keyEvent: KeyboardEvent) => {\n\t\t\t\t\t\tif (keyEvent && keyEvent.key === 'Enter') {\n\t\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\t\tmenuItem.clickFunction();\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowUp') {\n\t\t\t\t\t\t\t// focus on previous menu item\n\t\t\t\t\t\t\tself.focusOnPreviousEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowDown') {\n\t\t\t\t\t\t\t// focus on next menu item\n\t\t\t\t\t\t\tself.focusOnNextEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'Escape') {\n\t\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Not hide overflow menu by keyboard arrow up/down event\n\t\t\t\t\t\t// Prevent page from scrolling up/down\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// default to focus on the first enabled menu item\n\t\t\tself.focusOnNextEnabledMenuItem(-1);\n\t\t}\n\n\t\t// propogation should not be stopped for keyboard events\n\t\tif (!!event) {\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\t}\n\n\tgetControlConfigs() {\n\t\tconst numberOfIcons = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'numberOfIcons'\n\t\t);\n\t\tconst controls = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'controls'\n\t\t);\n\n\t\tconst controlList = [];\n\t\tconst overflowSpecificControls = [];\n\t\tcontrols.forEach((control) => {\n\t\t\tconst controlConfig = this.getControlConfigByType(control.type);\n\n\t\t\t// add to list if config is valid\n\t\t\tif (controlConfig) {\n\t\t\t\tcontrolConfig.text = control.text ? control.text : control.type;\n\n\t\t\t\tif (controlConfig.id.indexOf('toolbar-export') !== -1) {\n\t\t\t\t\toverflowSpecificControls.push(controlConfig);\n\t\t\t\t} else {\n\t\t\t\t\tcontrolList.push(controlConfig);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tcontrolList.length <= numberOfIcons &&\n\t\t\toverflowSpecificControls.length === 0\n\t\t) {\n\t\t\treturn {\n\t\t\t\tbuttonList: controlList,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t// leave one button for overflow button\n\t\t\tbuttonList: controlList.splice(0, numberOfIcons - 1),\n\t\t\toverflowMenuItemList: controlList.concat(overflowSpecificControls),\n\t\t};\n\t}\n\n\tgetToolbarButtonItems() {\n\t\tconst { buttonList, overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t}\n\t\tif (!!buttonList) {\n\t\t\treturn buttonList;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tgetOverflowMenuItems() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\treturn overflowMenuItemList;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// special button config for overflow button\n\tgetOverflowButtonConfig() {\n\t\treturn {\n\t\t\tid: 'toolbar-overflow-menu',\n\t\t\ttitle: 'More options',\n\t\t\tshouldBeDisabled: () => false,\n\t\t\ticonSVGContent: `<circle cx=\"16\" cy=\"8\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"16\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"24\" r=\"2\"></circle>`,\n\t\t\tclickFunction: (event) => this.toggleOverflowMenu(event),\n\t\t};\n\t}\n\n\tgetControlConfigByType(controlType: ToolbarControlTypes) {\n\t\tconst isZoomBarEnabled =\n\t\t\tthis.services.zoom &&\n\t\t\tthis.services.zoom.isZoomBarEnabled() &&\n\t\t\t!this.services.zoom.isEmptyState();\n\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tlet controlConfig;\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomIn',\n\t\t\t\t\t\ttitle: 'Zoom in',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMinZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomIn(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomOut',\n\t\t\t\t\t\ttitle: 'Zoom out',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomOut(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-resetZoom',\n\t\t\t\t\t\ttitle: 'Reset zoom',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\t\tthis.services.zoom.resetZoomDomain(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-makefullscreen',\n\t\t\t\t\ttitle: 'Make fullscreen',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\ticonWidth: '15px',\n\t\t\t\t\ticonHight: '15px',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\tclickFunction: () => {\n\t\t\t\t\t\tthis.services.domUtils.toggleFullscreen();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-showasdatatable',\n\t\t\t\t\ttitle: 'Show as table',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tshouldBeDisabled: () => displayData.length === 0,\n\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\tthis.services.events.dispatchEvent(Events.Modal.SHOW),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-CSV',\n\t\t\t\t\ttitle: 'Export as CSV',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.model.exportToCSV(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-PNG',\n\t\t\t\t\ttitle: 'Export as PNG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToPNG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-JPG',\n\t\t\t\t\ttitle: 'Export as JPG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToJPG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t// add more toolbar control configuration here\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t\treturn controlConfig;\n\t}\n\n\tgetControlIconByType(controlType: ToolbarControlTypes) {\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\treturn `<polygon points=\"19 13 15 13 15 9 13 9 13 13 9 13 9 15 13 15 13 19 15 19 15 15 19 15 19 13\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\treturn `<rect x=\"9\" y=\"13\" width=\"10\" height=\"2\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\treturn `<polygon points=\"21 2 21 4 26.59 4 17 13.58 18.41 15 28 5.41 28 11 30 11 30 2 21 2\"/><polygon points=\"15 18.42 13.59 17 4 26.59 4 21 2 21 2 30 11 30 11 28 5.41 28 15 18.42\"/>`;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\treturn `<rect x=\"4\" y=\"6\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"12\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"18\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"24\" width=\"18\" height=\"2\"/><rect x=\"26\" y=\"6\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"12\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"18\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"24\" width=\"2\" height=\"2\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`; // add more icons here\n\t\t\t// svg icon must be with 32x32 viewBox\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t}\n}\n"]}
@@ -379,11 +379,25 @@ var Legend = /** @class */ (function (_super) {
379
379
  hoveredElement: hoveredItem,
380
380
  });
381
381
  });
382
- svg.selectAll('div.legend-item div.checkbox').on('keyup', function (event, d) {
383
- if (event.key && (event.key === 'Enter' || event.key === ' ')) {
382
+ svg.selectAll('div.legend-item div.checkbox').on('keyup', function (event) {
383
+ if (event.key && event.key === 'Tab') {
384
+ // Higlight group
385
+ self.services.events.dispatchEvent(Events.Legend.ITEM_HOVER, {
386
+ hoveredElement: select(this),
387
+ });
388
+ }
389
+ });
390
+ svg.selectAll('div.legend-item div.checkbox').on('keydown', function (event, d) {
391
+ if (event.key && event.key === ' ') {
384
392
  event.preventDefault();
385
393
  self.model.toggleDataLabel(d.name);
386
394
  }
395
+ else if (event.key && event.key === 'Tab') {
396
+ // Unhiglight group
397
+ self.services.events.dispatchEvent(Events.Legend.ITEM_MOUSEOUT, {
398
+ hoveredElement: select(this),
399
+ });
400
+ }
387
401
  });
388
402
  svg.selectAll('g.additional-item').on('mouseover', function (event) {
389
403
  var hoveredItem = select(this);
@@ -1 +1 @@
1
- {"version":3,"file":"legend.js","sourceRoot":"","sources":["legend.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Tools } from '../../tools';\nimport {\n\tAlignments,\n\tColorClassNameTypes,\n\tLegendItemType,\n\tRenderTypes,\n\tRoles,\n\tEvents,\n\tTruncationTypes,\n} from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Legend extends Component {\n\ttype = 'legend';\n\trenderType = RenderTypes.HTML;\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst legendOptions = Tools.getProperty(options, 'legend');\n\t\tconst alignment = Tools.getProperty(legendOptions, 'alignment');\n\n\t\tconst legendOrientation = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'legend',\n\t\t\t'orientation'\n\t\t);\n\n\t\tlet dataGroups = this.model.getDataGroups();\n\n\t\t// Check if there are disabled legend items\n\t\tconst { DISABLED } = Configuration.legend.items.status;\n\t\tconst hasDeactivatedItems = dataGroups.some(\n\t\t\t(dataGroup) => dataGroup.status === DISABLED\n\t\t);\n\t\tconst userProvidedOrder = Tools.getProperty(legendOptions, 'order');\n\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.classed('center-aligned', alignment === Alignments.CENTER)\n\t\t\t.classed('right-aligned', alignment === Alignments.RIGHT)\n\t\t\t.classed(legendOrientation, true)\n\t\t\t.classed('has-deactivated-items', hasDeactivatedItems)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('aria-label', 'Data groups')\n\t\t\t.attr('data-name', 'legend-items');\n\n\t\tif (userProvidedOrder) {\n\t\t\tdataGroups = this.sortDataGroups(dataGroups, userProvidedOrder);\n\t\t}\n\n\t\tconst legendItems = svg\n\t\t\t.selectAll('div.legend-item')\n\t\t\t.data(dataGroups, (dataGroup) => dataGroup.name);\n\n\t\tconst addedLegendItems = legendItems\n\t\t\t.enter()\n\t\t\t.append('div')\n\t\t\t.attr('class', 'legend-item');\n\n\t\taddedLegendItems\n\t\t\t.merge(svg.selectAll('div.legend-item'))\n\t\t\t.classed('active', function (d, i) {\n\t\t\t\treturn d.status === Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\n\t\tconst legendClickable = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'legend',\n\t\t\t'clickable'\n\t\t);\n\t\tsvg.classed('clickable', legendClickable && dataGroups.length > 1);\n\n\t\tconst checkboxRadius = Configuration.legend.checkbox.radius;\n\n\t\tconst addedCheckboxes = addedLegendItems\n\t\t\t.append('div')\n\t\t\t.classed('checkbox', true);\n\n\t\tconst allCheckboxes = addedCheckboxes\n\t\t\t.merge(legendItems.select('div.checkbox'))\n\t\t\t.attr('role', Roles.CHECKBOX)\n\t\t\t.attr('tabindex', legendClickable ? 0 : -1)\n\t\t\t.attr('aria-labelledby', (d, i) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`legend-datagroup-${i}-title`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t'aria-checked',\n\t\t\t\t({ status }) =>\n\t\t\t\t\tstatus === Configuration.legend.items.status.ACTIVE\n\t\t\t)\n\t\t\t.attr('width', checkboxRadius * 2)\n\t\t\t.attr('height', checkboxRadius * 2)\n\t\t\t.attr('class', (d, i) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.BACKGROUND],\n\t\t\t\t\tdataGroupName: d.name,\n\t\t\t\t\toriginalClassName: 'checkbox',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('background', (d) =>\n\t\t\t\td.status === Configuration.legend.items.status.ACTIVE\n\t\t\t\t\t? this.model.getFillColor(d.name) ||\n\t\t\t\t\t this.model.getStrokeColor(d.name)\n\t\t\t\t\t: null\n\t\t\t)\n\t\t\t.classed('active', function (d, i) {\n\t\t\t\treturn d.status === Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\n\t\tconst addedCheckIcons = addedCheckboxes\n\t\t\t.append('svg')\n\t\t\t.attr('focusable', false)\n\t\t\t.attr('preserveAspectRatio', 'xMidYMid meet')\n\t\t\t.attr('xmlns', 'http://www.w3.org/2000/svg')\n\t\t\t.attr('width', '11')\n\t\t\t.attr('height', '11')\n\t\t\t.attr('viewBox', '0 0 31 28')\n\t\t\t.attr('aria-hidden', true)\n\t\t\t.style('will-change', 'transform')\n\t\t\t.append('path')\n\t\t\t.attr(\n\t\t\t\t'd',\n\t\t\t\t'M13 21.2l-7.1-7.1-1.4 1.4 7.1 7.1L13 24 27.1 9.9l-1.4-1.5z'\n\t\t\t);\n\n\t\tconst addedLegendItemsText = addedLegendItems\n\t\t\t.append('p')\n\t\t\t.merge(legendItems.select('p'));\n\n\t\tconst additionalItemsOption = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'legend',\n\t\t\t'additionalItems'\n\t\t);\n\n\t\t// add additional legend items\n\t\tif (additionalItemsOption && dataGroups.length) {\n\t\t\tconst self = this;\n\n\t\t\tconst additionalItems = svg\n\t\t\t\t.selectAll('div.additional-item')\n\t\t\t\t.data(additionalItemsOption);\n\n\t\t\tadditionalItems.exit().remove();\n\n\t\t\tconst addedAdditionalItems = additionalItems\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.merge(additionalItems)\n\t\t\t\t.classed('legend-item', true)\n\t\t\t\t.classed('additional', true)\n\t\t\t\t.attr('aria-labelledby', (d, i) =>\n\t\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`legend-datagroup-${allCheckboxes.size() + i}-title`\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t// remove nested child elements that no longer needed\n\t\t\taddedAdditionalItems.selectAll('*').remove();\n\n\t\t\t// get index of item with same type to assign distinct classname\n\t\t\tlet previousType;\n\t\t\tlet indexOfItem = 1;\n\n\t\t\t// add different type of legend items\n\t\t\taddedAdditionalItems\n\t\t\t\t.append('svg')\n\t\t\t\t.classed('icon', true)\n\t\t\t\t.each(function (d, i) {\n\t\t\t\t\tconst additionalItem = select(this);\n\n\t\t\t\t\tif (!previousType || previousType != d.type) {\n\t\t\t\t\t\tpreviousType = d.type;\n\t\t\t\t\t\tindexOfItem = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindexOfItem++;\n\t\t\t\t\t}\n\n\t\t\t\t\tself.addAdditionalItem(additionalItem, d, indexOfItem);\n\t\t\t\t});\n\n\t\t\tconst addedAdditionalItemsText = addedAdditionalItems\n\t\t\t\t.append('p')\n\t\t\t\t.merge(addedAdditionalItems.select('p'));\n\n\t\t\tthis.truncateLegendText();\n\t\t}\n\n\t\t// Remove old elements as needed.\n\t\tlegendItems\n\t\t\t.exit()\n\t\t\t.on('mouseover', null)\n\t\t\t.on('click', null)\n\t\t\t.on('mouseout', null)\n\t\t\t.remove();\n\n\t\tif (legendClickable && addedLegendItems.size() > 1) {\n\t\t\tthis.addEventListeners();\n\t\t}\n\t}\n\n\tsortDataGroups(dataGroups, legendOrder) {\n\t\t// Sort data in user defined order\n\t\tdataGroups.sort(\n\t\t\t(dataA, dataB) =>\n\t\t\t\tlegendOrder.indexOf(dataA.name) -\n\t\t\t\tlegendOrder.indexOf(dataB.name)\n\t\t);\n\n\t\t// If user only defined partial ordering, ordered items are placed before unordered ones\n\t\tif (legendOrder.length < dataGroups.length) {\n\t\t\tconst definedOrderIndex = dataGroups.length - legendOrder.length;\n\t\t\tconst definedOrder = dataGroups.slice(definedOrderIndex);\n\n\t\t\treturn definedOrder.concat(dataGroups.slice(0, definedOrderIndex));\n\t\t}\n\t\treturn dataGroups;\n\t}\n\n\taddAdditionalItem(additionalItem, itemConfig, indexOfItem) {\n\t\tconst { width, height } = Configuration.legend.area;\n\n\t\tif (itemConfig.type === LegendItemType.RADIUS) {\n\t\t\t// Circular icon\n\t\t\tadditionalItem\n\t\t\t\t.style('width', `${height}px`)\n\t\t\t\t.style('height', `${height}px`);\n\t\t} else {\n\t\t\tadditionalItem\n\t\t\t\t.style('width', `${width}px`)\n\t\t\t\t.style('height', `${height}px`);\n\t\t}\n\n\t\tif (itemConfig.type === LegendItemType.RADIUS) {\n\t\t\tconst { iconData, fill, stroke } = Configuration.legend.radius;\n\n\t\t\tconst circleEnter = additionalItem\n\t\t\t\t.attr('fill', 'none')\n\t\t\t\t.selectAll('circle')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\tcircleEnter\n\t\t\t\t.append('circle')\n\t\t\t\t.classed('radius', true)\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'radius')\n\t\t\t\t.attr('cx', (d) => d.cx)\n\t\t\t\t.attr('cy', (d) => d.cy)\n\t\t\t\t.attr('r', (d) => d.r)\n\t\t\t\t.style('fill', itemConfig.fill ? itemConfig.fill : fill)\n\t\t\t\t.style(\n\t\t\t\t\t'stroke',\n\t\t\t\t\titemConfig.stroke ? itemConfig.stroke : stroke\n\t\t\t\t);\n\t\t} else if (itemConfig.type === LegendItemType.LINE) {\n\t\t\tconst lineConfig = Configuration.legend.line;\n\n\t\t\tif (additionalItem.select('line.line').empty()) {\n\t\t\t\tadditionalItem\n\t\t\t\t\t.append('line')\n\t\t\t\t\t.classed(`line-${indexOfItem}`, true)\n\t\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t\t.attr('aria-label', 'line')\n\t\t\t\t\t.attr('x1', 0)\n\t\t\t\t\t.attr('y1', lineConfig.yPosition)\n\t\t\t\t\t.attr('x2', width)\n\t\t\t\t\t.attr('y2', lineConfig.yPosition)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'stroke',\n\t\t\t\t\t\titemConfig.stroke\n\t\t\t\t\t\t\t? itemConfig.stroke\n\t\t\t\t\t\t\t: lineConfig.stroke\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke-width', lineConfig.strokeWidth);\n\t\t\t}\n\t\t} else if (itemConfig.type === LegendItemType.AREA) {\n\t\t\tif (additionalItem.select('rect.area').empty()) {\n\t\t\t\tadditionalItem\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.classed(`area-${indexOfItem}`, true)\n\t\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t\t.attr('aria-label', 'area')\n\t\t\t\t\t.attr('width', width)\n\t\t\t\t\t.attr('height', height)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'fill',\n\t\t\t\t\t\tindexOfItem > 3 && !itemConfig.fill\n\t\t\t\t\t\t\t? Configuration.legend.area.fill\n\t\t\t\t\t\t\t: itemConfig.fill\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke', itemConfig.stroke);\n\t\t\t}\n\t\t} else if (itemConfig.type === LegendItemType.SIZE) {\n\t\t\tconst { iconData, fill, stroke } = Configuration.legend.size;\n\n\t\t\tconst sizeEnter = additionalItem\n\t\t\t\t.attr('fill', 'none')\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'size')\n\t\t\t\t.selectAll('rect')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\tsizeEnter\n\t\t\t\t.append('rect')\n\t\t\t\t.classed('size', true)\n\t\t\t\t.attr('width', (d) => d.width)\n\t\t\t\t.attr('height', (d) => d.height)\n\t\t\t\t.attr('y', (d) => 0)\n\t\t\t\t.style('fill', itemConfig.fill ? itemConfig.fill : fill)\n\t\t\t\t.style('stroke', itemConfig.stroke ? itemConfig.stroke : stroke)\n\t\t\t\t.style('stroke-width', 1);\n\t\t} else if (itemConfig.type === LegendItemType.QUARTILE) {\n\t\t\tconst { iconData } = Configuration.legend.quartile;\n\n\t\t\tconst quartileEnter = additionalItem\n\t\t\t\t.selectAll('rect')\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'quartile')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\tquartileEnter\n\t\t\t\t.append('rect')\n\t\t\t\t.attr(\n\t\t\t\t\t'class',\n\t\t\t\t\t(d, i) => `quartile-${i === 0 ? 'wrapper' : 'line'}`\n\t\t\t\t)\n\t\t\t\t.attr('x', (d) => d.x)\n\t\t\t\t.attr('y', (d) => d.y)\n\t\t\t\t.attr('width', (d) => d.width)\n\t\t\t\t.attr('height', (d) => d.height);\n\t\t} else if (itemConfig.type === LegendItemType.ZOOM) {\n\t\t\tconst { iconData, color } = Tools.getProperty(\n\t\t\t\tConfiguration,\n\t\t\t\t'legend',\n\t\t\t\t'zoom'\n\t\t\t);\n\n\t\t\tconst zoomEnter = additionalItem\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'zoom')\n\t\t\t\t.selectAll('g.icon')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\t// add '+' for the magnifying icon\n\t\t\tzoomEnter\n\t\t\t\t.append('g')\n\t\t\t\t.attr('x', (d) => d.x)\n\t\t\t\t.attr('y', (d) => d.y)\n\t\t\t\t.attr('width', (d) => d.width)\n\t\t\t\t.attr('height', (d) => d.height)\n\t\t\t\t.append('polygon')\n\t\t\t\t.attr(\n\t\t\t\t\t'points',\n\t\t\t\t\t'7.7 4.82 5.78 4.82 5.78 2.89 4.82 2.89 4.82 4.82 2.89 4.82 2.89 5.78 4.82 5.78 4.82 7.7 5.78 7.7 5.78 5.78 7.7 5.78 7.7 4.82'\n\t\t\t\t)\n\t\t\t\t.attr('fill', (d) =>\n\t\t\t\t\titemConfig.color ? itemConfig.color : color\n\t\t\t\t);\n\n\t\t\t// add the magnifying zoom icon handle/circle\n\t\t\tzoomEnter\n\t\t\t\t.append('path')\n\t\t\t\t.attr(\n\t\t\t\t\t'd',\n\t\t\t\t\t'M9.36,8.67A5.22,5.22,0,0,0,10.59,5.3,5.3,5.3,0,1,0,5.3,10.59,5.22,5.22,0,0,0,8.67,9.36L12.32,13l.68-.68Zm-4.06,1A4.34,4.34,0,1,1,9.63,5.3,4.33,4.33,0,0,1,5.3,9.63Z'\n\t\t\t\t)\n\t\t\t\t.attr('fill', (d) =>\n\t\t\t\t\titemConfig.color ? itemConfig.color : color\n\t\t\t\t);\n\t\t}\n\t}\n\n\ttruncateLegendText() {\n\t\tconst svg = this.getComponentContainer();\n\n\t\tconst truncationOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'legend',\n\t\t\t'truncation'\n\t\t);\n\t\t// Truncation\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(truncationOptions, 'type');\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\ttruncationOptions,\n\t\t\t'threshold'\n\t\t);\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\ttruncationOptions,\n\t\t\t'numCharacter'\n\t\t);\n\n\t\tconst addedLegendItemsText = svg.selectAll('div.legend-item p');\n\n\t\tconst self = this;\n\t\t// Add an ID for the checkbox to use through `aria-labelledby`\n\t\taddedLegendItemsText.attr('id', function (d, i) {\n\t\t\tconst elementToReference =\n\t\t\t\tthis.parentNode.querySelector('div.checkbox') ||\n\t\t\t\tthis.parentNode;\n\n\t\t\treturn elementToReference.getAttribute('aria-labelledby');\n\t\t});\n\n\t\t// truncate the legend label if it's too long\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\taddedLegendItemsText.html(function (d) {\n\t\t\t\tif (d.name.length > truncationThreshold) {\n\t\t\t\t\treturn Tools.truncateLabel(\n\t\t\t\t\t\td.name,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn d.name;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\taddedLegendItemsText.html((d) => d.name);\n\t\t}\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst legendOptions = Tools.getProperty(options, 'legend');\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\tlegendOptions,\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tsvg.selectAll('div.legend-item')\n\t\t\t.on('mouseover', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Legend.ITEM_HOVER, {\n\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t});\n\n\t\t\t\tconst hoveredItem = select(this);\n\t\t\t\thoveredItem.select('div.checkbox').classed('hovered', true);\n\n\t\t\t\tconst hoveredItemData = hoveredItem.datum() as any;\n\t\t\t\tif (hoveredItemData.name.length > truncationThreshold) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: hoveredItem,\n\t\t\t\t\t\tcontent: hoveredItemData.name,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mousemove', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function () {\n\t\t\t\tself.services.events.dispatchEvent(Events.Legend.ITEM_CLICK, {\n\t\t\t\t\tclickedElement: select(this),\n\t\t\t\t});\n\n\t\t\t\tconst clickedItem = select(this);\n\t\t\t\tconst clickedItemData = clickedItem.datum() as any;\n\n\t\t\t\tself.model.toggleDataLabel(clickedItemData.name);\n\t\t\t})\n\t\t\t.on('mouseout', function () {\n\t\t\t\tconst hoveredItem = select(this);\n\t\t\t\thoveredItem.select('div.checkbox').classed('hovered', false);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\thoveredElement: hoveredItem,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\n\t\tsvg.selectAll('div.legend-item div.checkbox').on(\n\t\t\t'keyup',\n\t\t\tfunction (event, d) {\n\t\t\t\tif (event.key && (event.key === 'Enter' || event.key === ' ')) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tself.model.toggleDataLabel(d.name);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tsvg.selectAll('g.additional-item').on('mouseover', function (event) {\n\t\t\tconst hoveredItem = select(this);\n\n\t\t\tconst hoveredItemData = hoveredItem.datum() as any;\n\t\t\tif (hoveredItemData.name.length > truncationThreshold) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: hoveredItem,\n\t\t\t\t\tcontent: hoveredItemData.name,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"legend.js","sourceRoot":"","sources":["legend.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Tools } from '../../tools';\nimport {\n\tAlignments,\n\tColorClassNameTypes,\n\tLegendItemType,\n\tRenderTypes,\n\tRoles,\n\tEvents,\n\tTruncationTypes,\n} from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Legend extends Component {\n\ttype = 'legend';\n\trenderType = RenderTypes.HTML;\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst legendOptions = Tools.getProperty(options, 'legend');\n\t\tconst alignment = Tools.getProperty(legendOptions, 'alignment');\n\n\t\tconst legendOrientation = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'legend',\n\t\t\t'orientation'\n\t\t);\n\n\t\tlet dataGroups = this.model.getDataGroups();\n\n\t\t// Check if there are disabled legend items\n\t\tconst { DISABLED } = Configuration.legend.items.status;\n\t\tconst hasDeactivatedItems = dataGroups.some(\n\t\t\t(dataGroup) => dataGroup.status === DISABLED\n\t\t);\n\t\tconst userProvidedOrder = Tools.getProperty(legendOptions, 'order');\n\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.classed('center-aligned', alignment === Alignments.CENTER)\n\t\t\t.classed('right-aligned', alignment === Alignments.RIGHT)\n\t\t\t.classed(legendOrientation, true)\n\t\t\t.classed('has-deactivated-items', hasDeactivatedItems)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('aria-label', 'Data groups')\n\t\t\t.attr('data-name', 'legend-items');\n\n\t\tif (userProvidedOrder) {\n\t\t\tdataGroups = this.sortDataGroups(dataGroups, userProvidedOrder);\n\t\t}\n\n\t\tconst legendItems = svg\n\t\t\t.selectAll('div.legend-item')\n\t\t\t.data(dataGroups, (dataGroup) => dataGroup.name);\n\n\t\tconst addedLegendItems = legendItems\n\t\t\t.enter()\n\t\t\t.append('div')\n\t\t\t.attr('class', 'legend-item');\n\n\t\taddedLegendItems\n\t\t\t.merge(svg.selectAll('div.legend-item'))\n\t\t\t.classed('active', function (d, i) {\n\t\t\t\treturn d.status === Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\n\t\tconst legendClickable = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'legend',\n\t\t\t'clickable'\n\t\t);\n\t\tsvg.classed('clickable', legendClickable && dataGroups.length > 1);\n\n\t\tconst checkboxRadius = Configuration.legend.checkbox.radius;\n\n\t\tconst addedCheckboxes = addedLegendItems\n\t\t\t.append('div')\n\t\t\t.classed('checkbox', true);\n\n\t\tconst allCheckboxes = addedCheckboxes\n\t\t\t.merge(legendItems.select('div.checkbox'))\n\t\t\t.attr('role', Roles.CHECKBOX)\n\t\t\t.attr('tabindex', legendClickable ? 0 : -1)\n\t\t\t.attr('aria-labelledby', (d, i) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`legend-datagroup-${i}-title`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t'aria-checked',\n\t\t\t\t({ status }) =>\n\t\t\t\t\tstatus === Configuration.legend.items.status.ACTIVE\n\t\t\t)\n\t\t\t.attr('width', checkboxRadius * 2)\n\t\t\t.attr('height', checkboxRadius * 2)\n\t\t\t.attr('class', (d, i) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.BACKGROUND],\n\t\t\t\t\tdataGroupName: d.name,\n\t\t\t\t\toriginalClassName: 'checkbox',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('background', (d) =>\n\t\t\t\td.status === Configuration.legend.items.status.ACTIVE\n\t\t\t\t\t? this.model.getFillColor(d.name) ||\n\t\t\t\t\t this.model.getStrokeColor(d.name)\n\t\t\t\t\t: null\n\t\t\t)\n\t\t\t.classed('active', function (d, i) {\n\t\t\t\treturn d.status === Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\n\t\tconst addedCheckIcons = addedCheckboxes\n\t\t\t.append('svg')\n\t\t\t.attr('focusable', false)\n\t\t\t.attr('preserveAspectRatio', 'xMidYMid meet')\n\t\t\t.attr('xmlns', 'http://www.w3.org/2000/svg')\n\t\t\t.attr('width', '11')\n\t\t\t.attr('height', '11')\n\t\t\t.attr('viewBox', '0 0 31 28')\n\t\t\t.attr('aria-hidden', true)\n\t\t\t.style('will-change', 'transform')\n\t\t\t.append('path')\n\t\t\t.attr(\n\t\t\t\t'd',\n\t\t\t\t'M13 21.2l-7.1-7.1-1.4 1.4 7.1 7.1L13 24 27.1 9.9l-1.4-1.5z'\n\t\t\t);\n\n\t\tconst addedLegendItemsText = addedLegendItems\n\t\t\t.append('p')\n\t\t\t.merge(legendItems.select('p'));\n\n\t\tconst additionalItemsOption = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'legend',\n\t\t\t'additionalItems'\n\t\t);\n\n\t\t// add additional legend items\n\t\tif (additionalItemsOption && dataGroups.length) {\n\t\t\tconst self = this;\n\n\t\t\tconst additionalItems = svg\n\t\t\t\t.selectAll('div.additional-item')\n\t\t\t\t.data(additionalItemsOption);\n\n\t\t\tadditionalItems.exit().remove();\n\n\t\t\tconst addedAdditionalItems = additionalItems\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.merge(additionalItems)\n\t\t\t\t.classed('legend-item', true)\n\t\t\t\t.classed('additional', true)\n\t\t\t\t.attr('aria-labelledby', (d, i) =>\n\t\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`legend-datagroup-${allCheckboxes.size() + i}-title`\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t// remove nested child elements that no longer needed\n\t\t\taddedAdditionalItems.selectAll('*').remove();\n\n\t\t\t// get index of item with same type to assign distinct classname\n\t\t\tlet previousType;\n\t\t\tlet indexOfItem = 1;\n\n\t\t\t// add different type of legend items\n\t\t\taddedAdditionalItems\n\t\t\t\t.append('svg')\n\t\t\t\t.classed('icon', true)\n\t\t\t\t.each(function (d, i) {\n\t\t\t\t\tconst additionalItem = select(this);\n\n\t\t\t\t\tif (!previousType || previousType != d.type) {\n\t\t\t\t\t\tpreviousType = d.type;\n\t\t\t\t\t\tindexOfItem = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindexOfItem++;\n\t\t\t\t\t}\n\n\t\t\t\t\tself.addAdditionalItem(additionalItem, d, indexOfItem);\n\t\t\t\t});\n\n\t\t\tconst addedAdditionalItemsText = addedAdditionalItems\n\t\t\t\t.append('p')\n\t\t\t\t.merge(addedAdditionalItems.select('p'));\n\n\t\t\tthis.truncateLegendText();\n\t\t}\n\n\t\t// Remove old elements as needed.\n\t\tlegendItems\n\t\t\t.exit()\n\t\t\t.on('mouseover', null)\n\t\t\t.on('click', null)\n\t\t\t.on('mouseout', null)\n\t\t\t.remove();\n\n\t\tif (legendClickable && addedLegendItems.size() > 1) {\n\t\t\tthis.addEventListeners();\n\t\t}\n\t}\n\n\tsortDataGroups(dataGroups, legendOrder) {\n\t\t// Sort data in user defined order\n\t\tdataGroups.sort(\n\t\t\t(dataA, dataB) =>\n\t\t\t\tlegendOrder.indexOf(dataA.name) -\n\t\t\t\tlegendOrder.indexOf(dataB.name)\n\t\t);\n\n\t\t// If user only defined partial ordering, ordered items are placed before unordered ones\n\t\tif (legendOrder.length < dataGroups.length) {\n\t\t\tconst definedOrderIndex = dataGroups.length - legendOrder.length;\n\t\t\tconst definedOrder = dataGroups.slice(definedOrderIndex);\n\n\t\t\treturn definedOrder.concat(dataGroups.slice(0, definedOrderIndex));\n\t\t}\n\t\treturn dataGroups;\n\t}\n\n\taddAdditionalItem(additionalItem, itemConfig, indexOfItem) {\n\t\tconst { width, height } = Configuration.legend.area;\n\n\t\tif (itemConfig.type === LegendItemType.RADIUS) {\n\t\t\t// Circular icon\n\t\t\tadditionalItem\n\t\t\t\t.style('width', `${height}px`)\n\t\t\t\t.style('height', `${height}px`);\n\t\t} else {\n\t\t\tadditionalItem\n\t\t\t\t.style('width', `${width}px`)\n\t\t\t\t.style('height', `${height}px`);\n\t\t}\n\n\t\tif (itemConfig.type === LegendItemType.RADIUS) {\n\t\t\tconst { iconData, fill, stroke } = Configuration.legend.radius;\n\n\t\t\tconst circleEnter = additionalItem\n\t\t\t\t.attr('fill', 'none')\n\t\t\t\t.selectAll('circle')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\tcircleEnter\n\t\t\t\t.append('circle')\n\t\t\t\t.classed('radius', true)\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'radius')\n\t\t\t\t.attr('cx', (d) => d.cx)\n\t\t\t\t.attr('cy', (d) => d.cy)\n\t\t\t\t.attr('r', (d) => d.r)\n\t\t\t\t.style('fill', itemConfig.fill ? itemConfig.fill : fill)\n\t\t\t\t.style(\n\t\t\t\t\t'stroke',\n\t\t\t\t\titemConfig.stroke ? itemConfig.stroke : stroke\n\t\t\t\t);\n\t\t} else if (itemConfig.type === LegendItemType.LINE) {\n\t\t\tconst lineConfig = Configuration.legend.line;\n\n\t\t\tif (additionalItem.select('line.line').empty()) {\n\t\t\t\tadditionalItem\n\t\t\t\t\t.append('line')\n\t\t\t\t\t.classed(`line-${indexOfItem}`, true)\n\t\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t\t.attr('aria-label', 'line')\n\t\t\t\t\t.attr('x1', 0)\n\t\t\t\t\t.attr('y1', lineConfig.yPosition)\n\t\t\t\t\t.attr('x2', width)\n\t\t\t\t\t.attr('y2', lineConfig.yPosition)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'stroke',\n\t\t\t\t\t\titemConfig.stroke\n\t\t\t\t\t\t\t? itemConfig.stroke\n\t\t\t\t\t\t\t: lineConfig.stroke\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke-width', lineConfig.strokeWidth);\n\t\t\t}\n\t\t} else if (itemConfig.type === LegendItemType.AREA) {\n\t\t\tif (additionalItem.select('rect.area').empty()) {\n\t\t\t\tadditionalItem\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.classed(`area-${indexOfItem}`, true)\n\t\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t\t.attr('aria-label', 'area')\n\t\t\t\t\t.attr('width', width)\n\t\t\t\t\t.attr('height', height)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'fill',\n\t\t\t\t\t\tindexOfItem > 3 && !itemConfig.fill\n\t\t\t\t\t\t\t? Configuration.legend.area.fill\n\t\t\t\t\t\t\t: itemConfig.fill\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke', itemConfig.stroke);\n\t\t\t}\n\t\t} else if (itemConfig.type === LegendItemType.SIZE) {\n\t\t\tconst { iconData, fill, stroke } = Configuration.legend.size;\n\n\t\t\tconst sizeEnter = additionalItem\n\t\t\t\t.attr('fill', 'none')\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'size')\n\t\t\t\t.selectAll('rect')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\tsizeEnter\n\t\t\t\t.append('rect')\n\t\t\t\t.classed('size', true)\n\t\t\t\t.attr('width', (d) => d.width)\n\t\t\t\t.attr('height', (d) => d.height)\n\t\t\t\t.attr('y', (d) => 0)\n\t\t\t\t.style('fill', itemConfig.fill ? itemConfig.fill : fill)\n\t\t\t\t.style('stroke', itemConfig.stroke ? itemConfig.stroke : stroke)\n\t\t\t\t.style('stroke-width', 1);\n\t\t} else if (itemConfig.type === LegendItemType.QUARTILE) {\n\t\t\tconst { iconData } = Configuration.legend.quartile;\n\n\t\t\tconst quartileEnter = additionalItem\n\t\t\t\t.selectAll('rect')\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'quartile')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\tquartileEnter\n\t\t\t\t.append('rect')\n\t\t\t\t.attr(\n\t\t\t\t\t'class',\n\t\t\t\t\t(d, i) => `quartile-${i === 0 ? 'wrapper' : 'line'}`\n\t\t\t\t)\n\t\t\t\t.attr('x', (d) => d.x)\n\t\t\t\t.attr('y', (d) => d.y)\n\t\t\t\t.attr('width', (d) => d.width)\n\t\t\t\t.attr('height', (d) => d.height);\n\t\t} else if (itemConfig.type === LegendItemType.ZOOM) {\n\t\t\tconst { iconData, color } = Tools.getProperty(\n\t\t\t\tConfiguration,\n\t\t\t\t'legend',\n\t\t\t\t'zoom'\n\t\t\t);\n\n\t\t\tconst zoomEnter = additionalItem\n\t\t\t\t.attr('role', Roles.IMG)\n\t\t\t\t.attr('aria-label', 'zoom')\n\t\t\t\t.selectAll('g.icon')\n\t\t\t\t.data(iconData)\n\t\t\t\t.enter();\n\n\t\t\t// add '+' for the magnifying icon\n\t\t\tzoomEnter\n\t\t\t\t.append('g')\n\t\t\t\t.attr('x', (d) => d.x)\n\t\t\t\t.attr('y', (d) => d.y)\n\t\t\t\t.attr('width', (d) => d.width)\n\t\t\t\t.attr('height', (d) => d.height)\n\t\t\t\t.append('polygon')\n\t\t\t\t.attr(\n\t\t\t\t\t'points',\n\t\t\t\t\t'7.7 4.82 5.78 4.82 5.78 2.89 4.82 2.89 4.82 4.82 2.89 4.82 2.89 5.78 4.82 5.78 4.82 7.7 5.78 7.7 5.78 5.78 7.7 5.78 7.7 4.82'\n\t\t\t\t)\n\t\t\t\t.attr('fill', (d) =>\n\t\t\t\t\titemConfig.color ? itemConfig.color : color\n\t\t\t\t);\n\n\t\t\t// add the magnifying zoom icon handle/circle\n\t\t\tzoomEnter\n\t\t\t\t.append('path')\n\t\t\t\t.attr(\n\t\t\t\t\t'd',\n\t\t\t\t\t'M9.36,8.67A5.22,5.22,0,0,0,10.59,5.3,5.3,5.3,0,1,0,5.3,10.59,5.22,5.22,0,0,0,8.67,9.36L12.32,13l.68-.68Zm-4.06,1A4.34,4.34,0,1,1,9.63,5.3,4.33,4.33,0,0,1,5.3,9.63Z'\n\t\t\t\t)\n\t\t\t\t.attr('fill', (d) =>\n\t\t\t\t\titemConfig.color ? itemConfig.color : color\n\t\t\t\t);\n\t\t}\n\t}\n\n\ttruncateLegendText() {\n\t\tconst svg = this.getComponentContainer();\n\n\t\tconst truncationOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'legend',\n\t\t\t'truncation'\n\t\t);\n\t\t// Truncation\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(truncationOptions, 'type');\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\ttruncationOptions,\n\t\t\t'threshold'\n\t\t);\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\ttruncationOptions,\n\t\t\t'numCharacter'\n\t\t);\n\n\t\tconst addedLegendItemsText = svg.selectAll('div.legend-item p');\n\n\t\tconst self = this;\n\t\t// Add an ID for the checkbox to use through `aria-labelledby`\n\t\taddedLegendItemsText.attr('id', function (d, i) {\n\t\t\tconst elementToReference =\n\t\t\t\tthis.parentNode.querySelector('div.checkbox') ||\n\t\t\t\tthis.parentNode;\n\n\t\t\treturn elementToReference.getAttribute('aria-labelledby');\n\t\t});\n\n\t\t// truncate the legend label if it's too long\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\taddedLegendItemsText.html(function (d) {\n\t\t\t\tif (d.name.length > truncationThreshold) {\n\t\t\t\t\treturn Tools.truncateLabel(\n\t\t\t\t\t\td.name,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn d.name;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\taddedLegendItemsText.html((d) => d.name);\n\t\t}\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst legendOptions = Tools.getProperty(options, 'legend');\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\tlegendOptions,\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tsvg.selectAll('div.legend-item')\n\t\t\t.on('mouseover', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Legend.ITEM_HOVER, {\n\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t});\n\n\t\t\t\tconst hoveredItem = select(this);\n\t\t\t\thoveredItem.select('div.checkbox').classed('hovered', true);\n\n\t\t\t\tconst hoveredItemData = hoveredItem.datum() as any;\n\t\t\t\tif (hoveredItemData.name.length > truncationThreshold) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: hoveredItem,\n\t\t\t\t\t\tcontent: hoveredItemData.name,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mousemove', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function () {\n\t\t\t\tself.services.events.dispatchEvent(Events.Legend.ITEM_CLICK, {\n\t\t\t\t\tclickedElement: select(this),\n\t\t\t\t});\n\n\t\t\t\tconst clickedItem = select(this);\n\t\t\t\tconst clickedItemData = clickedItem.datum() as any;\n\n\t\t\t\tself.model.toggleDataLabel(clickedItemData.name);\n\t\t\t})\n\t\t\t.on('mouseout', function () {\n\t\t\t\tconst hoveredItem = select(this);\n\t\t\t\thoveredItem.select('div.checkbox').classed('hovered', false);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\thoveredElement: hoveredItem,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\n\t\tsvg.selectAll('div.legend-item div.checkbox').on(\n\t\t\t'keyup',\n\t\t\tfunction (event) {\n\t\t\t\tif (event.key && event.key === 'Tab') {\n\t\t\t\t\t// Higlight group\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tsvg.selectAll('div.legend-item div.checkbox').on(\n\t\t\t'keydown',\n\t\t\tfunction (event, d) {\n\t\t\t\tif (event.key && event.key === ' ') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tself.model.toggleDataLabel(d.name);\n\t\t\t\t} else if (event.key && event.key === 'Tab') {\n\t\t\t\t\t// Unhiglight group\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tsvg.selectAll('g.additional-item').on('mouseover', function (event) {\n\t\t\tconst hoveredItem = select(this);\n\n\t\t\tconst hoveredItemData = hoveredItem.datum() as any;\n\t\t\tif (hoveredItemData.name.length > truncationThreshold) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: hoveredItem,\n\t\t\t\t\tcontent: hoveredItemData.name,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, ScaleTypes } from '../../interfaces';\n\n// Carbon modal\nimport { Modal as CarbonModalComponent } from 'carbon-components';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\n// date formatting\nimport { format } from 'date-fns';\n\nimport { get } from 'lodash-es';\n\nexport class Modal extends Component {\n\ttype = 'modal';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\tmodal: any;\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowModal = () => {\n\t\tthis.modal.html(this.getModalHTML());\n\t\tthis.modal\n\t\t\t.select('div.bx--modal-footer button.bx--btn')\n\t\t\t.on('click', () => this.model.exportToCSV());\n\n\t\tconst modalInstance = CarbonModalComponent.create(this.modal.node());\n\t\tmodalInstance.show();\n\t};\n\n\thandleHideModal = () => {};\n\n\taddEventListeners() {\n\t\t// listen to show-modal Custom Events to render the modal\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\n\t\t// listen to hide-modal Custom Events to hide the modal\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Modal.HIDE,\n\t\t\tthis.handleHideModal\n\t\t);\n\t}\n\n\tremoveEventListeners() {\n\t\t// remove show-modal Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\n\t\t// remove hide-modal Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Modal.HIDE,\n\t\t\tthis.handleHideModal\n\t\t);\n\t}\n\n\tgetModalHTML() {\n\t\tconst options = this.model.getOptions();\n\n\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\n\t\tconst tableArray = this.model.getTabularDataArray();\n\n\t\treturn `\n\t\t<div class=\"bx--modal-container\">\n\t\t\t<div class=\"bx--modal-header\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta\" id=\"modal-title\">Tabular representation</p>\n\t\t\t\t<p class=\"bx--modal-header__heading bx--type-beta\" id=\"modal-description\">${options.title}</p>\n\t\t\t\t<button class=\"bx--modal-close\" type=\"button\" data-modal-close aria-label=\"close modal\" data-modal-primary-focus>\n\t\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Close\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\" class=\"bx--modal-close__icon\">\n\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4 14.6 16 8 22.6 9.4 24 16 17.4 22.6 24 24 22.6 17.4 16 24 9.4z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-content\"><table class=\"bx--data-table bx--data-table--no-border\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t${get(tableArray, 0)\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(heading) => `<th scope=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"bx--table-header-label\">${heading}</div>\n\t\t\t\t\t\t\t</th>`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>${tableArray\n\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(row) => `\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t${row.map((column) => `<td>${column}</td>`).join('')}\n\t\t\t\t\t\t\t</tr>`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-footer\">\n\t\t\t <div class=\"${settings.prefix}--${chartprefix}-modal-footer-spacer\"></div>\n\t\t\t <button class=\"bx--btn bx--btn--primary\" type=\"button\" data-modal-primary-focus>Download as CSV</button>\n\t\t\t</div>\n\t\t</div>`;\n\t}\n\n\trender() {\n\t\tconst options = this.model.getOptions();\n\t\tif (!this.isEventListenerAdded) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.modal = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--modal`\n\t\t\t);\n\n\t\t\tthis.addEventListeners();\n\t\t\tthis.isEventListenerAdded = true;\n\t\t\tthis.modal\n\t\t\t\t.attr('data-modal', true)\n\t\t\t\t.attr('class', 'bx--modal')\n\t\t\t\t.attr('role', 'dialog')\n\t\t\t\t.attr('aria-modal', true)\n\t\t\t\t.attr('aria-labelledby', 'modal-title')\n\t\t\t\t.attr('aria-describedby', 'modal-description')\n\t\t\t\t.attr('tabindex', -1);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\t// remove tooltip eventListener\n\t\tthis.removeEventListeners();\n\t\tthis.isEventListenerAdded = false;\n\t}\n}\n"]}
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, ScaleTypes } from '../../interfaces';\n\n// Carbon modal\nimport { Modal as CarbonModalComponent } from 'carbon-components';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\n// date formatting\nimport { format } from 'date-fns';\n\nimport { get } from 'lodash-es';\n\nexport class Modal extends Component {\n\ttype = 'modal';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\tmodal: any;\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowModal = () => {\n\t\tthis.modal.html(this.getModalHTML());\n\t\tthis.modal\n\t\t\t.select('div.bx--modal-footer button.bx--btn')\n\t\t\t.on('click', () => this.model.exportToCSV());\n\n\t\tconst modalInstance = CarbonModalComponent.create(this.modal.node());\n\t\tmodalInstance.show();\n\t};\n\n\thandleHideModal = () => {};\n\n\taddEventListeners() {\n\t\t// listen to show-modal Custom Events to render the modal\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\n\t\t// listen to hide-modal Custom Events to hide the modal\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Modal.HIDE,\n\t\t\tthis.handleHideModal\n\t\t);\n\t}\n\n\tremoveEventListeners() {\n\t\t// remove show-modal Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\n\t\t// remove hide-modal Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Modal.HIDE,\n\t\t\tthis.handleHideModal\n\t\t);\n\t}\n\n\tgetModalHTML() {\n\t\tconst options = this.model.getOptions();\n\n\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\n\t\tconst tableArray = this.model.getTabularDataArray();\n\n\t\treturn `\n\t\t<div class=\"bx--modal-container\">\n\t\t\t<div class=\"bx--modal-header\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta\" id=\"modal-title\">Tabular representation</p>\n\t\t\t\t<p class=\"bx--modal-header__heading bx--type-beta\" id=\"modal-description\">${\n\t\t\t\t\toptions.title\n\t\t\t\t}</p>\n\t\t\t\t<button class=\"bx--modal-close\" type=\"button\" data-modal-close aria-label=\"close modal\" data-modal-primary-focus>\n\t\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Close\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\" class=\"bx--modal-close__icon\">\n\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4 14.6 16 8 22.6 9.4 24 16 17.4 22.6 24 24 22.6 17.4 16 24 9.4z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-content\"><table class=\"bx--data-table bx--data-table--no-border\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t${get(tableArray, 0)\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(heading) => `<th scope=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"bx--table-header-label\">${heading}</div>\n\t\t\t\t\t\t\t</th>`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>${tableArray\n\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(row) => `\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t${row.map((column) => `<td>${column}</td>`).join('')}\n\t\t\t\t\t\t\t</tr>`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-footer\">\n\t\t\t <div class=\"${settings.prefix}--${chartprefix}-modal-footer-spacer\"></div>\n\t\t\t <button class=\"bx--btn bx--btn--primary\" type=\"button\" data-modal-primary-focus>Download as CSV</button>\n\t\t\t</div>\n\t\t</div>`;\n\t}\n\n\trender() {\n\t\tconst options = this.model.getOptions();\n\t\tif (!this.isEventListenerAdded) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.modal = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--modal`\n\t\t\t);\n\n\t\t\tthis.addEventListeners();\n\t\t\tthis.isEventListenerAdded = true;\n\t\t\tthis.modal\n\t\t\t\t.attr('data-modal', true)\n\t\t\t\t.attr('class', 'bx--modal')\n\t\t\t\t.attr('role', 'dialog')\n\t\t\t\t.attr('aria-modal', true)\n\t\t\t\t.attr('aria-labelledby', 'modal-title')\n\t\t\t\t.attr('aria-describedby', 'modal-description')\n\t\t\t\t.attr('tabindex', -1);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\t// remove tooltip eventListener\n\t\tthis.removeEventListeners();\n\t\tthis.isEventListenerAdded = false;\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon/charts",
3
- "version": "0.51.1",
3
+ "version": "0.51.2",
4
4
  "description": "Carbon charting components",
5
5
  "main": "./bundle.js",
6
6
  "module": "./index.js",
@@ -270,11 +270,11 @@
270
270
  "signature": "958c5f71e7645df55230b1e48da7c37a8898e35bf7da3a3871463755e2506ea0"
271
271
  },
272
272
  "../src/components/essentials/legend.ts": {
273
- "version": "216880a6cf5af21e43617826ad183aef9858f8af18db9df439723c8315dcd003",
273
+ "version": "c288e68c090b56f1ab25318f6bc89111f5e2fa5767a8fe46cdb82ec67838cdb4",
274
274
  "signature": "160db3036e2ff4c5c4f97c06c0d3836952515c8a875ac06c1e6f86bd48b608fa"
275
275
  },
276
276
  "../src/components/essentials/modal.ts": {
277
- "version": "f4ca19740628514525301bd5ff0a5340f67b6052c616e0a45f1bdaef3783d3df",
277
+ "version": "c126e537964ab3cc7c0a0a7bf39df7a35447be4d6c0a7933e58e36d90ea1bfc0",
278
278
  "signature": "5d7d494f1601409cffba95c27390ef3cb540277c0d5a9785bc24376a811e970d"
279
279
  },
280
280
  "../../../node_modules/@carbon/utils-position/index.d.ts": {
@@ -474,8 +474,8 @@
474
474
  "signature": "d3eb371b7f7b9a5f928c5273da425542b5e479ba654216cd1df65d255c36c072"
475
475
  },
476
476
  "../src/components/axes/toolbar.ts": {
477
- "version": "806e802286f89483f4966ed2dd9615284c927e0c511790eea070c5ed74b5b341",
478
- "signature": "101846e916206c02ea7fee34357066b771ac7078e62cb469a9edcc56567f1c6b"
477
+ "version": "08fdfde156cb98dfdc0d709549b11ff033e01ada9e0f30b3ec11dae8a0f8b0dd",
478
+ "signature": "f21d3389796d77e9e987bb9f8145b254b53302a5663c9d291da326dcf97740e7"
479
479
  },
480
480
  "../src/components/axes/zero-line.ts": {
481
481
  "version": "6fe5bfbbd525b3992dd8c117675641e9290d54c2c583748845c8c685ad6fc6e7",