@watermarkinsights/ripple 5.31.0-alpha.4 → 5.31.0-alpha.6

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.
Files changed (164) hide show
  1. package/dist/cjs/{app-globals-c5dc38bb.js → app-globals-090d85be.js} +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/ripple.cjs.js +1 -1
  4. package/dist/cjs/wm-action-menu_2.cjs.entry.js +1 -1
  5. package/dist/cjs/wm-chart-stack.cjs.entry.js +18 -11
  6. package/dist/collection/components/charts/wm-chart-stack/wm-chart-stack.js +26 -12
  7. package/dist/collection/components/wm-menuitem/wm-menuitem.js +41 -14
  8. package/dist/collection/dev/chart-stack.js +19 -0
  9. package/dist/docs/docs.json +15 -188
  10. package/dist/docs/skill/index.md +1 -0
  11. package/dist/docs/skill/wm-action-menu.md +6 -5
  12. package/dist/docs/skill/wm-button.md +3 -3
  13. package/dist/docs/skill/wm-chart-bar.md +9 -8
  14. package/dist/docs/skill/wm-chart-column.md +9 -8
  15. package/dist/docs/skill/wm-chart-legend.md +1 -1
  16. package/dist/docs/skill/wm-chart-stack.md +18 -10
  17. package/dist/docs/skill/wm-chart.md +9 -8
  18. package/dist/docs/skill/wm-date-range.md +5 -4
  19. package/dist/docs/skill/wm-datepicker.md +6 -5
  20. package/dist/docs/skill/wm-file-list.md +1 -1
  21. package/dist/docs/skill/wm-file.md +1 -1
  22. package/dist/docs/skill/wm-flyout.md +4 -3
  23. package/dist/docs/skill/wm-input.md +2 -2
  24. package/dist/docs/skill/wm-line-chart.md +9 -8
  25. package/dist/docs/skill/wm-menuitem.md +2 -15
  26. package/dist/docs/skill/wm-modal.md +6 -5
  27. package/dist/docs/skill/wm-navigation.md +4 -3
  28. package/dist/docs/skill/wm-navigator.md +6 -5
  29. package/dist/docs/skill/wm-nested-select.md +6 -5
  30. package/dist/docs/skill/wm-option.md +2 -2
  31. package/dist/docs/skill/wm-pagination.md +2 -2
  32. package/dist/docs/skill/wm-progress-indicator.md +1 -1
  33. package/dist/docs/skill/wm-progress-monitor.md +1 -1
  34. package/dist/docs/skill/wm-search.md +6 -5
  35. package/dist/docs/skill/wm-select.md +7 -6
  36. package/dist/docs/skill/wm-snackbar.md +4 -3
  37. package/dist/docs/skill/wm-tab-list.md +7 -6
  38. package/dist/docs/skill/wm-tag-input.md +12 -12
  39. package/dist/docs/skill/wm-textarea.md +1 -1
  40. package/dist/docs/skill/wm-timepicker.md +12 -13
  41. package/dist/docs/skill/wm-toggletip.md +7 -6
  42. package/dist/docs/skill/wm-uploader.md +3 -3
  43. package/dist/esm/{app-globals-ca904322.js → app-globals-7bf0ccc7.js} +1 -1
  44. package/dist/esm/loader.js +1 -1
  45. package/dist/esm/ripple.js +1 -1
  46. package/dist/esm/wm-action-menu_2.entry.js +1 -1
  47. package/dist/esm/wm-chart-stack.entry.js +18 -11
  48. package/dist/esm-es5/{app-globals-ca904322.js → app-globals-7bf0ccc7.js} +1 -1
  49. package/dist/esm-es5/loader.js +1 -1
  50. package/dist/esm-es5/ripple.js +1 -1
  51. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  52. package/dist/esm-es5/wm-chart-stack.entry.js +1 -1
  53. package/dist/ripple/{p-056ab0e7.system.js → p-2e053253.system.js} +1 -1
  54. package/dist/ripple/p-79175cd4.entry.js +1 -0
  55. package/dist/ripple/{p-58d21abe.system.entry.js → p-9bbe78c8.system.entry.js} +1 -1
  56. package/dist/ripple/{p-913e276b.system.js → p-a3d106b2.system.js} +1 -1
  57. package/dist/ripple/{p-ad07f974.entry.js → p-db74df09.entry.js} +1 -1
  58. package/dist/ripple/{p-9b82ebf5.js → p-e2bb7798.js} +1 -1
  59. package/dist/ripple/{p-4bbd4fad.system.entry.js → p-e97166ce.system.entry.js} +1 -1
  60. package/dist/ripple/ripple.esm.js +1 -1
  61. package/dist/ripple/ripple.js +1 -1
  62. package/dist/types/components/charts/wm-chart-stack/wm-chart-stack.d.ts +9 -1
  63. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +10 -3
  64. package/dist/types/components.d.ts +24 -26
  65. package/package.json +3 -3
  66. package/dist/cjs/app-globals-f310dc82.js +0 -103
  67. package/dist/cjs/chartFunctions-351edf56.js +0 -906
  68. package/dist/cjs/functions-05cd64e3.js +0 -10682
  69. package/dist/cjs/interfaces-082b6d42.js +0 -72
  70. package/dist/cjs/intl-140f6bea.js +0 -283
  71. package/dist/esm/app-globals-0d90343d.js +0 -101
  72. package/dist/esm/chartFunctions-295d929a.js +0 -881
  73. package/dist/esm/functions-438e60c4.js +0 -10640
  74. package/dist/esm/interfaces-09fe24c4.js +0 -67
  75. package/dist/esm/intl-25f6dfb9.js +0 -277
  76. package/dist/esm-es5/app-globals-0d90343d.js +0 -1
  77. package/dist/esm-es5/chartFunctions-295d929a.js +0 -1
  78. package/dist/esm-es5/functions-438e60c4.js +0 -1
  79. package/dist/esm-es5/interfaces-09fe24c4.js +0 -1
  80. package/dist/esm-es5/intl-25f6dfb9.js +0 -1
  81. package/dist/ripple/p-007facdc.system.entry.js +0 -1
  82. package/dist/ripple/p-012bd307.system.entry.js +0 -1
  83. package/dist/ripple/p-03ff4f41.entry.js +0 -1
  84. package/dist/ripple/p-07250e35.system.entry.js +0 -1
  85. package/dist/ripple/p-09a44b14.system.entry.js +0 -1
  86. package/dist/ripple/p-09a5dd33.entry.js +0 -1
  87. package/dist/ripple/p-09cd7075.system.entry.js +0 -1
  88. package/dist/ripple/p-0b0d8610.system.entry.js +0 -1
  89. package/dist/ripple/p-0b465dfa.system.entry.js +0 -1
  90. package/dist/ripple/p-131d57c3.entry.js +0 -1
  91. package/dist/ripple/p-178ba906.js +0 -1
  92. package/dist/ripple/p-18362e55.entry.js +0 -1
  93. package/dist/ripple/p-1b4208ea.entry.js +0 -1
  94. package/dist/ripple/p-1c69ebe2.entry.js +0 -1
  95. package/dist/ripple/p-1f051611.system.js +0 -1
  96. package/dist/ripple/p-237388c5.system.entry.js +0 -1
  97. package/dist/ripple/p-263f0213.entry.js +0 -1
  98. package/dist/ripple/p-26f2c47b.system.js +0 -1
  99. package/dist/ripple/p-2dbf9636.entry.js +0 -1
  100. package/dist/ripple/p-2f297bf8.js +0 -1
  101. package/dist/ripple/p-314d6c66.entry.js +0 -1
  102. package/dist/ripple/p-381a793b.system.entry.js +0 -1
  103. package/dist/ripple/p-3e8bfc68.system.entry.js +0 -1
  104. package/dist/ripple/p-40e52740.entry.js +0 -1
  105. package/dist/ripple/p-41285b81.entry.js +0 -1
  106. package/dist/ripple/p-43e8d384.system.entry.js +0 -1
  107. package/dist/ripple/p-44321d7f.system.entry.js +0 -1
  108. package/dist/ripple/p-45548587.entry.js +0 -1
  109. package/dist/ripple/p-4584bda0.entry.js +0 -1
  110. package/dist/ripple/p-483e17ad.entry.js +0 -1
  111. package/dist/ripple/p-55436579.entry.js +0 -1
  112. package/dist/ripple/p-562aa1ce.entry.js +0 -1
  113. package/dist/ripple/p-567b153f.entry.js +0 -1
  114. package/dist/ripple/p-56e1a71d.system.entry.js +0 -1
  115. package/dist/ripple/p-5819b53d.system.entry.js +0 -1
  116. package/dist/ripple/p-5afc108c.js +0 -1
  117. package/dist/ripple/p-623fe4bb.system.entry.js +0 -1
  118. package/dist/ripple/p-629b6253.entry.js +0 -1
  119. package/dist/ripple/p-66fd3a06.system.entry.js +0 -1
  120. package/dist/ripple/p-6a7b26a1.system.js +0 -1
  121. package/dist/ripple/p-6e661bdc.system.entry.js +0 -1
  122. package/dist/ripple/p-72200b5c.system.entry.js +0 -1
  123. package/dist/ripple/p-739f756d.system.entry.js +0 -1
  124. package/dist/ripple/p-73a2389d.entry.js +0 -1
  125. package/dist/ripple/p-7422f2a6.system.entry.js +0 -1
  126. package/dist/ripple/p-7e421ae4.system.entry.js +0 -1
  127. package/dist/ripple/p-8c331805.entry.js +0 -1
  128. package/dist/ripple/p-93601bda.entry.js +0 -1
  129. package/dist/ripple/p-950f6b3c.system.entry.js +0 -1
  130. package/dist/ripple/p-956cb6a9.system.js +0 -1
  131. package/dist/ripple/p-9dfa683b.system.entry.js +0 -1
  132. package/dist/ripple/p-a7df5021.system.entry.js +0 -1
  133. package/dist/ripple/p-a96e7dc7.system.entry.js +0 -1
  134. package/dist/ripple/p-a9c92e3a.system.entry.js +0 -1
  135. package/dist/ripple/p-aac8581f.entry.js +0 -1
  136. package/dist/ripple/p-acb04e6e.entry.js +0 -1
  137. package/dist/ripple/p-ad980ba4.system.entry.js +0 -1
  138. package/dist/ripple/p-af35e358.entry.js +0 -1
  139. package/dist/ripple/p-b2624d8f.system.entry.js +0 -1
  140. package/dist/ripple/p-b4792634.entry.js +0 -1
  141. package/dist/ripple/p-b6bd8810.entry.js +0 -1
  142. package/dist/ripple/p-b75e9e5f.entry.js +0 -1
  143. package/dist/ripple/p-b9596bfc.system.entry.js +0 -1
  144. package/dist/ripple/p-bd365c44.system.entry.js +0 -1
  145. package/dist/ripple/p-bdce7e33.system.entry.js +0 -1
  146. package/dist/ripple/p-bff5c1d5.js +0 -1
  147. package/dist/ripple/p-c62f8d3f.system.entry.js +0 -1
  148. package/dist/ripple/p-c7bd2b6b.js +0 -1
  149. package/dist/ripple/p-c9799501.system.entry.js +0 -1
  150. package/dist/ripple/p-cd496e63.entry.js +0 -1
  151. package/dist/ripple/p-d11e5029.entry.js +0 -1
  152. package/dist/ripple/p-d898d864.system.entry.js +0 -1
  153. package/dist/ripple/p-de4e69ec.entry.js +0 -1
  154. package/dist/ripple/p-e1d6e91c.entry.js +0 -1
  155. package/dist/ripple/p-e66fbbb7.entry.js +0 -1
  156. package/dist/ripple/p-e6704efd.system.js +0 -1
  157. package/dist/ripple/p-e6b07df6.entry.js +0 -1
  158. package/dist/ripple/p-e7b1c2dc.entry.js +0 -1
  159. package/dist/ripple/p-ed3db4b5.system.entry.js +0 -1
  160. package/dist/ripple/p-eda49f0e.entry.js +0 -1
  161. package/dist/ripple/p-f0ee3616.entry.js +0 -1
  162. package/dist/ripple/p-f7fc6350.system.js +0 -1
  163. package/dist/ripple/p-fc905b2f.system.entry.js +0 -1
  164. package/dist/ripple/p-fec9fc30.entry.js +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index-bb947bd5.js');
4
4
 
5
- const version = "5.31.0-alpha.4";
5
+ const version = "5.31.0-alpha.6";
6
6
 
7
7
  // PRINT RIPPLE VERSION IN CONSOLE
8
8
  // test envs return 0 for plugin.length
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-bb947bd5.js');
6
- const appGlobals = require('./app-globals-c5dc38bb.js');
6
+ const appGlobals = require('./app-globals-090d85be.js');
7
7
 
8
8
  const defineCustomElements = async (win, options) => {
9
9
  if (typeof window === 'undefined') return undefined;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-bb947bd5.js');
6
- const appGlobals = require('./app-globals-c5dc38bb.js');
6
+ const appGlobals = require('./app-globals-090d85be.js');
7
7
 
8
8
  /*
9
9
  Stencil Client Patch Browser v4.21.0 | MIT Licensed | https://stenciljs.com
@@ -475,7 +475,7 @@ const Menuitem = class {
475
475
  }
476
476
  }
477
477
  render() {
478
- return (index.h(index.Host, { key: 'bba02970ceda1fe78026e8653bee4549b05698df', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, index.h("div", { key: '28b699ff8e174ce427ef1f31cab36ad1eed50ac7', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, index.h("div", { key: '8d93236530ede11b7fbdfecd75f98ba7b467240f', class: "main-text" }, this.icon && this.renderIcon(), this.el.textContent), this.description ? index.h("div", { class: "description" }, this.description) : "")));
478
+ return (index.h(index.Host, { key: '403704be13ca1f9c938e18a76f8442cbbaa4aab9', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, index.h("div", { key: 'c5818b2f8bd133a846abcd493f70c581b9d7113b', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, index.h("div", { key: '05f047e1ffad3376e1aaeffd060ed52a6a3e80bf', class: "main-text" }, this.icon && this.renderIcon(), this.el.textContent), this.description ? index.h("div", { class: "description" }, this.description) : "")));
479
479
  }
480
480
  get el() { return index.getElement(this); }
481
481
  static get watchers() { return {
@@ -65,6 +65,9 @@ const ChartStack = class {
65
65
  get flattenedData() {
66
66
  return [...this.processedStacks.values()].flat();
67
67
  }
68
+ get segmentWrappers() {
69
+ return this.el.shadowRoot.querySelectorAll(".segment-wrapper");
70
+ }
68
71
  getPatternClass(item) {
69
72
  var _a;
70
73
  return this.isPatternMode ? ((_a = interfaces.patternKey[item.color]) !== null && _a !== void 0 ? _a : "") : "";
@@ -101,6 +104,14 @@ const ChartStack = class {
101
104
  this.propagateExternalLegendData();
102
105
  this.measurePending = true; // re-measure label fit after this change renders
103
106
  }
107
+ else {
108
+ // config or data was unset — clear derived state so the chart renders empty
109
+ this.processedStacks = new Map();
110
+ this.stackTotals = new Map();
111
+ this.legendData = [];
112
+ this.propagateExternalLegendData();
113
+ this.hasHiddenValues = false;
114
+ }
104
115
  }
105
116
  buildProcessedStacks() {
106
117
  if (!this.data) {
@@ -162,7 +173,6 @@ const ChartStack = class {
162
173
  return result;
163
174
  }
164
175
  countStackTotals(processedStacks) {
165
- this.stackTotals = new Map();
166
176
  const stackTotals = new Map();
167
177
  processedStacks.forEach((segments, stackName) => {
168
178
  const stackTotal = segments.reduce((acc, s) => acc + s.amount, 0);
@@ -338,22 +348,20 @@ const ChartStack = class {
338
348
  highlightSegment(item) {
339
349
  var _a;
340
350
  const idx = this.flattenedData.indexOf(item);
341
- const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
351
+ const segmentWrappers = this.segmentWrappers;
342
352
  segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.add("faded"));
343
353
  (_a = segmentWrappers[idx]) === null || _a === void 0 ? void 0 : _a.classList.remove("faded");
344
354
  const legendIdx = this.legendData.findIndex((legendItem) => legendItem.barLegend === item.barLegend);
345
355
  this.wmChartStackHighlighted.emit({ idx: legendIdx });
346
356
  }
347
357
  highlightSegmentsByLegend(legend) {
348
- const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
349
- segmentWrappers.forEach((segmentWrapper, idx) => {
358
+ this.segmentWrappers.forEach((segmentWrapper, idx) => {
350
359
  var _a;
351
360
  segmentWrapper.classList.toggle("faded", ((_a = this.flattenedData[idx]) === null || _a === void 0 ? void 0 : _a.barLegend) !== legend);
352
361
  });
353
362
  }
354
363
  clearHighlights() {
355
- const wrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
356
- wrappers.forEach((wrapper) => wrapper.classList.remove("faded"));
364
+ this.segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.remove("faded"));
357
365
  this.wmChartStackHighlighted.emit({ idx: -1 });
358
366
  }
359
367
  clearFocus() {
@@ -367,9 +375,8 @@ const ChartStack = class {
367
375
  // #region Responsiveness
368
376
  ////////////////////////////////////////////////////////////
369
377
  updateHiddenValues() {
370
- const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
371
378
  let anyHidden = false;
372
- segmentWrappers.forEach((segmentWrapper) => {
379
+ this.segmentWrappers.forEach((segmentWrapper) => {
373
380
  const value = segmentWrapper.querySelector(".value");
374
381
  if (!value) {
375
382
  return;
@@ -393,7 +400,7 @@ const ChartStack = class {
393
400
  }
394
401
  renderSegment(item, stackIdx, segmentIdx) {
395
402
  var _a, _b;
396
- return (index.h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), index.h("div", { class: `segment ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
403
+ return (index.h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), index.h("div", { class: `segment horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
397
404
  }
398
405
  renderStacks() {
399
406
  const stackNames = [...this.processedStacks.keys()];
@@ -414,7 +421,7 @@ const ChartStack = class {
414
421
  const total = (_a = this.stackTotals.get(stackName)) !== null && _a !== void 0 ? _a : 0;
415
422
  return (index.h("div", { class: "print-table", "aria-hidden": "true" }, segments.map((item) => {
416
423
  var _a, _b, _c;
417
- return (index.h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, index.h("div", { class: "print-legend" }, index.h("div", { class: `swatch ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), index.h("span", { class: "print-legend-name" }, item.barLegend)), index.h("span", { class: "print-percent" }, item.displayValue), index.h("span", { class: "print-fraction" }, item.amount, "/", total), index.h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
424
+ return (index.h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, index.h("div", { class: "print-legend" }, index.h("div", { class: `swatch horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), index.h("span", { class: "print-legend-name" }, item.barLegend)), index.h("span", { class: "print-percent" }, item.displayValue), index.h("span", { class: "print-fraction" }, item.amount, "/", total), index.h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
418
425
  })));
419
426
  }
420
427
  renderLegend(orientation) {
@@ -426,7 +433,7 @@ const ChartStack = class {
426
433
  render() {
427
434
  var _a, _b, _c, _d;
428
435
  const gridLineRow = this.processedStacks.size * (this.isPrintMode ? 2 : 1) + 1;
429
- return (index.h(index.Host, { key: '08a9286be7f0a7998f9c3123fe3a912861dceefb' }, index.h("div", { key: 'e3334b5a9f9068f18f3abc83cd9b794bdec54fad', class: "popover-wrapper" }, index.h("priv-chart-popover", { key: '600b4f64af2d9c5dd255de169734ef2bb28ae92c', ref: (el) => (this.popoverEl = el), onIntChartPopoverToggled: (ev) => this.handlePopoverToggled(ev) })), index.h("div", { key: '89f0d279285152028135d1fe549dc0a97efca2ac', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.isPrintMode ? "print-mode" : ""} ${this.isPatternMode ? "pattern-mode" : ""}`, tabindex: "0", role: "application", onKeyDown: (ev) => this.handleChartKeyDown(ev), onBlur: (ev) => this.handleComponentBlur(ev), "aria-roledescription": intl.chartMessages.interactiveChart, "aria-describedby": "chart-instructions", "aria-label": (_a = this.config) === null || _a === void 0 ? void 0 : _a.label }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showLabel) !== null && _c !== void 0 ? _c : true) && (index.h("label", { key: 'a4916662c19423b550826466d274cf45ab756999', id: "label", class: "label" }, index.h("span", { key: 'e0fc771b28dbe8939a2e646da2efd61944b5c568', class: "label-text" }, (_d = this.config) === null || _d === void 0 ? void 0 : _d.label), this.subinfoText && index.h("span", { key: 'a86d83bd510e93f218172cc12656c40e6504f92d', class: "subinfo" }, this.subinfoText))), this.showLegend === "top" && this.renderLegend("horizontal"), index.h("div", { key: '1f763b406dcf30b8ab609ef2572d3ad594df1cd0', class: "chart-body" }, this.showLegend === "left" && this.renderLegend("vertical"), index.h("div", { key: 'a698d4cee5d253c756430243c80c720cb2d024b0', class: `stacks ${this.isKeying ? "user-is-keying" : ""} ${this.showGrid ? "show-grid" : ""} ${this.isSingleStack ? "single-stack" : ""}`, ref: (el) => (this.stacksEl = el), style: { "--grid-line-row": `${gridLineRow}` } }, this.showGrid && index.h("div", { key: 'a400672fe5a456b05630b9901fcae8be446bb787', class: "vertical-grid-line" }), this.renderStacks(), this.showGrid && (index.h("div", { key: '595f7c469fc14c48042835ed8449c0ffc963b36b', class: "x-axis" }, index.h("div", { key: 'fe22b1d101b1bc1eacd0780ed36af0f01fcdf66a', class: "x-axis-line" }), index.h("div", { key: '7798302e6f75cda9ae298dce265fa75888dd7d74', class: "x-axis-ticks" }, index.h("span", { key: '3da23e60bb716592c585626f2aaa2ebbb90c0108', class: "tick zero" }, "0%"), index.h("span", { key: 'bc691c467c51cb11ff8548f3f984bfdc1fb18a33', class: "tick end" }, "100%"))))), this.showLegend === "right" && this.renderLegend("vertical")), this.showLegend === "bottom" && this.renderLegend("horizontal"), !this.isPrintMode && (index.h("div", { key: '90d3793c69f6d080bd6ced9713ae052c1ebaa58c', class: `hidden-values-warning ${this.hasHiddenValues ? "" : "hidden"}` }, intl.stackChartMessages.hiddenValues)), chartFunctions.renderInstructionsText())));
436
+ return (index.h(index.Host, { key: 'a02be9b6a7e8a570d12fc471ab0899c1d6bff609' }, index.h("div", { key: '27a456aca42c248c767a3d44d4fca43e27342113', class: "popover-wrapper" }, index.h("priv-chart-popover", { key: '710e6b9ed574358949d86736991a94ff23033e1b', ref: (el) => (this.popoverEl = el), onIntChartPopoverToggled: (ev) => this.handlePopoverToggled(ev) })), index.h("div", { key: 'c696620647c3a4bf69b8cbfdfd88fe0d56c0e9e4', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.isPrintMode ? "print-mode" : ""} ${this.isPatternMode ? "pattern-mode" : ""}`, tabindex: "0", role: "application", onKeyDown: (ev) => this.handleChartKeyDown(ev), onBlur: (ev) => this.handleComponentBlur(ev), "aria-roledescription": intl.chartMessages.interactiveChart, "aria-describedby": "chart-instructions", "aria-label": (_a = this.config) === null || _a === void 0 ? void 0 : _a.label }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showLabel) !== null && _c !== void 0 ? _c : true) && (index.h("label", { key: '7bcc1cdcf20e17af7078d5ddec312accafb0ee2a', id: "label", class: "label" }, index.h("span", { key: '4b1e5090ccbaf485a5efd543575056f77ecc3af8', class: "label-text" }, (_d = this.config) === null || _d === void 0 ? void 0 : _d.label), this.subinfoText && index.h("span", { key: '4eba44204c943e58e16a0edd2787315d44ae2f23', class: "subinfo" }, this.subinfoText))), this.showLegend === "top" && this.renderLegend("horizontal"), index.h("div", { key: 'c11932585eb98bc5b12ead052e6965d954d28b0f', class: "chart-body" }, this.showLegend === "left" && this.renderLegend("vertical"), index.h("div", { key: '772c6c62d2ff5ef996ca6e72bd18f174a5357dc3', class: `stacks ${this.isKeying ? "user-is-keying" : ""} ${this.showGrid ? "show-grid" : ""} ${this.isSingleStack ? "single-stack" : ""}`, ref: (el) => (this.stacksEl = el), style: { "--grid-line-row": `${gridLineRow}` } }, this.showGrid && index.h("div", { key: '85170b43d60832f82fca6588c39e0ccbcc00cede', class: "vertical-grid-line" }), this.renderStacks(), this.showGrid && (index.h("div", { key: 'ac782af53cf46f6797bb1a564fdbbc221fd8ea43', class: "x-axis" }, index.h("div", { key: 'f6175cb9012164eda83c920edc9746c25753bc1e', class: "x-axis-line" }), index.h("div", { key: 'd218b9ce3d734dd6e218f16d944e93199ac52580', class: "x-axis-ticks" }, index.h("span", { key: 'eff3d60abf1a6ca2cbaf0247996d891d3cbfadad', class: "tick zero" }, "0%"), index.h("span", { key: '8767b56809d269272bdc1ef9ccd4d194e6c79070', class: "tick end" }, "100%"))))), this.showLegend === "right" && this.renderLegend("vertical")), this.showLegend === "bottom" && this.renderLegend("horizontal"), !this.isPrintMode && (index.h("div", { key: '1d9a5524f1669987d19daa5d5fff5dcde93fe4ba', class: `hidden-values-warning ${this.hasHiddenValues ? "" : "hidden"}` }, intl.stackChartMessages.hiddenValues)), chartFunctions.renderInstructionsText())));
430
437
  }
431
438
  static get delegatesFocus() { return true; }
432
439
  get el() { return index.getElement(this); }
@@ -9,6 +9,9 @@ import { isElOrChild } from "../../../global/functions";
9
9
  * Data and configuration are set via JavaScript properties (`chart.config` and `chart.data`) — not
10
10
  * HTML attributes.
11
11
  *
12
+ * @displayName Stack Chart
13
+ * @category Data Visualization
14
+ *
12
15
  * @keyboardInteraction
13
16
  * - **Tab**: Enters the chart wrapper.
14
17
  * - **Arrow Down / Right**: Focuses the first segment.
@@ -48,6 +51,10 @@ import { isElOrChild } from "../../../global/functions";
48
51
  * ];
49
52
  * </script>
50
53
  *
54
+ * @example {react} Single stack
55
+ * <WmChartStack ref={chartRef} />
56
+ * // In useEffect: chartRef.current.config = {...}; chartRef.current.data = [...];
57
+ *
51
58
  * @example {html} Grouped (multiple stacks)
52
59
  * <wm-chart-stack id="status-by-requirement"></wm-chart-stack>
53
60
  * <script>
@@ -61,7 +68,7 @@ import { isElOrChild } from "../../../global/functions";
61
68
  * ];
62
69
  * </script>
63
70
  *
64
- * @example {react} Stacked bar chart
71
+ * @example {react} Grouped (multiple stacks)
65
72
  * <WmChartStack ref={chartRef} />
66
73
  * // In useEffect: chartRef.current.config = {...}; chartRef.current.data = [...];
67
74
  */
@@ -117,6 +124,9 @@ export class ChartStack {
117
124
  get flattenedData() {
118
125
  return [...this.processedStacks.values()].flat();
119
126
  }
127
+ get segmentWrappers() {
128
+ return this.el.shadowRoot.querySelectorAll(".segment-wrapper");
129
+ }
120
130
  getPatternClass(item) {
121
131
  var _a;
122
132
  return this.isPatternMode ? ((_a = patternKey[item.color]) !== null && _a !== void 0 ? _a : "") : "";
@@ -153,6 +163,14 @@ export class ChartStack {
153
163
  this.propagateExternalLegendData();
154
164
  this.measurePending = true; // re-measure label fit after this change renders
155
165
  }
166
+ else {
167
+ // config or data was unset — clear derived state so the chart renders empty
168
+ this.processedStacks = new Map();
169
+ this.stackTotals = new Map();
170
+ this.legendData = [];
171
+ this.propagateExternalLegendData();
172
+ this.hasHiddenValues = false;
173
+ }
156
174
  }
157
175
  buildProcessedStacks() {
158
176
  if (!this.data) {
@@ -214,7 +232,6 @@ export class ChartStack {
214
232
  return result;
215
233
  }
216
234
  countStackTotals(processedStacks) {
217
- this.stackTotals = new Map();
218
235
  const stackTotals = new Map();
219
236
  processedStacks.forEach((segments, stackName) => {
220
237
  const stackTotal = segments.reduce((acc, s) => acc + s.amount, 0);
@@ -390,22 +407,20 @@ export class ChartStack {
390
407
  highlightSegment(item) {
391
408
  var _a;
392
409
  const idx = this.flattenedData.indexOf(item);
393
- const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
410
+ const segmentWrappers = this.segmentWrappers;
394
411
  segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.add("faded"));
395
412
  (_a = segmentWrappers[idx]) === null || _a === void 0 ? void 0 : _a.classList.remove("faded");
396
413
  const legendIdx = this.legendData.findIndex((legendItem) => legendItem.barLegend === item.barLegend);
397
414
  this.wmChartStackHighlighted.emit({ idx: legendIdx });
398
415
  }
399
416
  highlightSegmentsByLegend(legend) {
400
- const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
401
- segmentWrappers.forEach((segmentWrapper, idx) => {
417
+ this.segmentWrappers.forEach((segmentWrapper, idx) => {
402
418
  var _a;
403
419
  segmentWrapper.classList.toggle("faded", ((_a = this.flattenedData[idx]) === null || _a === void 0 ? void 0 : _a.barLegend) !== legend);
404
420
  });
405
421
  }
406
422
  clearHighlights() {
407
- const wrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
408
- wrappers.forEach((wrapper) => wrapper.classList.remove("faded"));
423
+ this.segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.remove("faded"));
409
424
  this.wmChartStackHighlighted.emit({ idx: -1 });
410
425
  }
411
426
  clearFocus() {
@@ -419,9 +434,8 @@ export class ChartStack {
419
434
  // #region Responsiveness
420
435
  ////////////////////////////////////////////////////////////
421
436
  updateHiddenValues() {
422
- const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
423
437
  let anyHidden = false;
424
- segmentWrappers.forEach((segmentWrapper) => {
438
+ this.segmentWrappers.forEach((segmentWrapper) => {
425
439
  const value = segmentWrapper.querySelector(".value");
426
440
  if (!value) {
427
441
  return;
@@ -445,7 +459,7 @@ export class ChartStack {
445
459
  }
446
460
  renderSegment(item, stackIdx, segmentIdx) {
447
461
  var _a, _b;
448
- return (h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), h("div", { class: `segment ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
462
+ return (h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), h("div", { class: `segment horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
449
463
  }
450
464
  renderStacks() {
451
465
  const stackNames = [...this.processedStacks.keys()];
@@ -466,7 +480,7 @@ export class ChartStack {
466
480
  const total = (_a = this.stackTotals.get(stackName)) !== null && _a !== void 0 ? _a : 0;
467
481
  return (h("div", { class: "print-table", "aria-hidden": "true" }, segments.map((item) => {
468
482
  var _a, _b, _c;
469
- return (h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, h("div", { class: "print-legend" }, h("div", { class: `swatch ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), h("span", { class: "print-legend-name" }, item.barLegend)), h("span", { class: "print-percent" }, item.displayValue), h("span", { class: "print-fraction" }, item.amount, "/", total), h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
483
+ return (h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, h("div", { class: "print-legend" }, h("div", { class: `swatch horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), h("span", { class: "print-legend-name" }, item.barLegend)), h("span", { class: "print-percent" }, item.displayValue), h("span", { class: "print-fraction" }, item.amount, "/", total), h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
470
484
  })));
471
485
  }
472
486
  renderLegend(orientation) {
@@ -478,7 +492,7 @@ export class ChartStack {
478
492
  render() {
479
493
  var _a, _b, _c, _d;
480
494
  const gridLineRow = this.processedStacks.size * (this.isPrintMode ? 2 : 1) + 1;
481
- return (h(Host, { key: '08a9286be7f0a7998f9c3123fe3a912861dceefb' }, h("div", { key: 'e3334b5a9f9068f18f3abc83cd9b794bdec54fad', class: "popover-wrapper" }, h("priv-chart-popover", { key: '600b4f64af2d9c5dd255de169734ef2bb28ae92c', ref: (el) => (this.popoverEl = el), onIntChartPopoverToggled: (ev) => this.handlePopoverToggled(ev) })), h("div", { key: '89f0d279285152028135d1fe549dc0a97efca2ac', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.isPrintMode ? "print-mode" : ""} ${this.isPatternMode ? "pattern-mode" : ""}`, tabindex: "0", role: "application", onKeyDown: (ev) => this.handleChartKeyDown(ev), onBlur: (ev) => this.handleComponentBlur(ev), "aria-roledescription": chartMessages.interactiveChart, "aria-describedby": "chart-instructions", "aria-label": (_a = this.config) === null || _a === void 0 ? void 0 : _a.label }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showLabel) !== null && _c !== void 0 ? _c : true) && (h("label", { key: 'a4916662c19423b550826466d274cf45ab756999', id: "label", class: "label" }, h("span", { key: 'e0fc771b28dbe8939a2e646da2efd61944b5c568', class: "label-text" }, (_d = this.config) === null || _d === void 0 ? void 0 : _d.label), this.subinfoText && h("span", { key: 'a86d83bd510e93f218172cc12656c40e6504f92d', class: "subinfo" }, this.subinfoText))), this.showLegend === "top" && this.renderLegend("horizontal"), h("div", { key: '1f763b406dcf30b8ab609ef2572d3ad594df1cd0', class: "chart-body" }, this.showLegend === "left" && this.renderLegend("vertical"), h("div", { key: 'a698d4cee5d253c756430243c80c720cb2d024b0', class: `stacks ${this.isKeying ? "user-is-keying" : ""} ${this.showGrid ? "show-grid" : ""} ${this.isSingleStack ? "single-stack" : ""}`, ref: (el) => (this.stacksEl = el), style: { "--grid-line-row": `${gridLineRow}` } }, this.showGrid && h("div", { key: 'a400672fe5a456b05630b9901fcae8be446bb787', class: "vertical-grid-line" }), this.renderStacks(), this.showGrid && (h("div", { key: '595f7c469fc14c48042835ed8449c0ffc963b36b', class: "x-axis" }, h("div", { key: 'fe22b1d101b1bc1eacd0780ed36af0f01fcdf66a', class: "x-axis-line" }), h("div", { key: '7798302e6f75cda9ae298dce265fa75888dd7d74', class: "x-axis-ticks" }, h("span", { key: '3da23e60bb716592c585626f2aaa2ebbb90c0108', class: "tick zero" }, "0%"), h("span", { key: 'bc691c467c51cb11ff8548f3f984bfdc1fb18a33', class: "tick end" }, "100%"))))), this.showLegend === "right" && this.renderLegend("vertical")), this.showLegend === "bottom" && this.renderLegend("horizontal"), !this.isPrintMode && (h("div", { key: '90d3793c69f6d080bd6ced9713ae052c1ebaa58c', class: `hidden-values-warning ${this.hasHiddenValues ? "" : "hidden"}` }, stackChartMessages.hiddenValues)), renderInstructionsText())));
495
+ return (h(Host, { key: 'a02be9b6a7e8a570d12fc471ab0899c1d6bff609' }, h("div", { key: '27a456aca42c248c767a3d44d4fca43e27342113', class: "popover-wrapper" }, h("priv-chart-popover", { key: '710e6b9ed574358949d86736991a94ff23033e1b', ref: (el) => (this.popoverEl = el), onIntChartPopoverToggled: (ev) => this.handlePopoverToggled(ev) })), h("div", { key: 'c696620647c3a4bf69b8cbfdfd88fe0d56c0e9e4', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.isPrintMode ? "print-mode" : ""} ${this.isPatternMode ? "pattern-mode" : ""}`, tabindex: "0", role: "application", onKeyDown: (ev) => this.handleChartKeyDown(ev), onBlur: (ev) => this.handleComponentBlur(ev), "aria-roledescription": chartMessages.interactiveChart, "aria-describedby": "chart-instructions", "aria-label": (_a = this.config) === null || _a === void 0 ? void 0 : _a.label }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showLabel) !== null && _c !== void 0 ? _c : true) && (h("label", { key: '7bcc1cdcf20e17af7078d5ddec312accafb0ee2a', id: "label", class: "label" }, h("span", { key: '4b1e5090ccbaf485a5efd543575056f77ecc3af8', class: "label-text" }, (_d = this.config) === null || _d === void 0 ? void 0 : _d.label), this.subinfoText && h("span", { key: '4eba44204c943e58e16a0edd2787315d44ae2f23', class: "subinfo" }, this.subinfoText))), this.showLegend === "top" && this.renderLegend("horizontal"), h("div", { key: 'c11932585eb98bc5b12ead052e6965d954d28b0f', class: "chart-body" }, this.showLegend === "left" && this.renderLegend("vertical"), h("div", { key: '772c6c62d2ff5ef996ca6e72bd18f174a5357dc3', class: `stacks ${this.isKeying ? "user-is-keying" : ""} ${this.showGrid ? "show-grid" : ""} ${this.isSingleStack ? "single-stack" : ""}`, ref: (el) => (this.stacksEl = el), style: { "--grid-line-row": `${gridLineRow}` } }, this.showGrid && h("div", { key: '85170b43d60832f82fca6588c39e0ccbcc00cede', class: "vertical-grid-line" }), this.renderStacks(), this.showGrid && (h("div", { key: 'ac782af53cf46f6797bb1a564fdbbc221fd8ea43', class: "x-axis" }, h("div", { key: 'f6175cb9012164eda83c920edc9746c25753bc1e', class: "x-axis-line" }), h("div", { key: 'd218b9ce3d734dd6e218f16d944e93199ac52580', class: "x-axis-ticks" }, h("span", { key: 'eff3d60abf1a6ca2cbaf0247996d891d3cbfadad', class: "tick zero" }, "0%"), h("span", { key: '8767b56809d269272bdc1ef9ccd4d194e6c79070', class: "tick end" }, "100%"))))), this.showLegend === "right" && this.renderLegend("vertical")), this.showLegend === "bottom" && this.renderLegend("horizontal"), !this.isPrintMode && (h("div", { key: '1d9a5524f1669987d19daa5d5fff5dcde93fe4ba', class: `hidden-values-warning ${this.hasHiddenValues ? "" : "hidden"}` }, stackChartMessages.hiddenValues)), renderInstructionsText())));
482
496
  }
483
497
  static get is() { return "wm-chart-stack"; }
484
498
  static get encapsulation() { return "shadow"; }
@@ -8,9 +8,6 @@ import { getIconCodeFromName } from "../../global/interfaces";
8
8
  *
9
9
  * @accessibility
10
10
  * - Rendered with `role="menuitem"` and `aria-disabled` when disabled.
11
- * - Keyboard events (Arrow keys, Home, End, Tab, Escape, character keys) are captured and
12
- * re-emitted as custom events consumed by the parent wm-action-menu to manage focus and
13
- * menu state — do not listen to these events directly in application code.
14
11
  *
15
12
  * @usageNotes
16
13
  * - `description` is limited to 100 characters and is incompatible with `icon`.
@@ -137,7 +134,7 @@ export class Menuitem {
137
134
  }
138
135
  }
139
136
  render() {
140
- return (h(Host, { key: 'bba02970ceda1fe78026e8653bee4549b05698df', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: '28b699ff8e174ce427ef1f31cab36ad1eed50ac7', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: '8d93236530ede11b7fbdfecd75f98ba7b467240f', class: "main-text" }, this.icon && this.renderIcon(), this.el.textContent), this.description ? h("div", { class: "description" }, this.description) : "")));
137
+ return (h(Host, { key: '403704be13ca1f9c938e18a76f8442cbbaa4aab9', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: 'c5818b2f8bd133a846abcd493f70c581b9d7113b', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: '05f047e1ffad3376e1aaeffd060ed52a6a3e80bf', class: "main-text" }, this.icon && this.renderIcon(), this.el.textContent), this.description ? h("div", { class: "description" }, this.description) : "")));
141
138
  }
142
139
  static get is() { return "wm-menuitem"; }
143
140
  static get encapsulation() { return "shadow"; }
@@ -252,7 +249,10 @@ export class Menuitem {
252
249
  "cancelable": true,
253
250
  "composed": true,
254
251
  "docs": {
255
- "tags": [],
252
+ "tags": [{
253
+ "name": "internal",
254
+ "text": undefined
255
+ }],
256
256
  "text": ""
257
257
  },
258
258
  "complexType": {
@@ -272,7 +272,10 @@ export class Menuitem {
272
272
  "cancelable": true,
273
273
  "composed": true,
274
274
  "docs": {
275
- "tags": [],
275
+ "tags": [{
276
+ "name": "internal",
277
+ "text": undefined
278
+ }],
276
279
  "text": ""
277
280
  },
278
281
  "complexType": {
@@ -292,7 +295,10 @@ export class Menuitem {
292
295
  "cancelable": true,
293
296
  "composed": true,
294
297
  "docs": {
295
- "tags": [],
298
+ "tags": [{
299
+ "name": "internal",
300
+ "text": undefined
301
+ }],
296
302
  "text": ""
297
303
  },
298
304
  "complexType": {
@@ -312,7 +318,10 @@ export class Menuitem {
312
318
  "cancelable": true,
313
319
  "composed": true,
314
320
  "docs": {
315
- "tags": [],
321
+ "tags": [{
322
+ "name": "internal",
323
+ "text": undefined
324
+ }],
316
325
  "text": ""
317
326
  },
318
327
  "complexType": {
@@ -332,7 +341,10 @@ export class Menuitem {
332
341
  "cancelable": true,
333
342
  "composed": true,
334
343
  "docs": {
335
- "tags": [],
344
+ "tags": [{
345
+ "name": "internal",
346
+ "text": undefined
347
+ }],
336
348
  "text": ""
337
349
  },
338
350
  "complexType": {
@@ -352,7 +364,10 @@ export class Menuitem {
352
364
  "cancelable": true,
353
365
  "composed": true,
354
366
  "docs": {
355
- "tags": [],
367
+ "tags": [{
368
+ "name": "internal",
369
+ "text": undefined
370
+ }],
356
371
  "text": ""
357
372
  },
358
373
  "complexType": {
@@ -372,7 +387,10 @@ export class Menuitem {
372
387
  "cancelable": true,
373
388
  "composed": true,
374
389
  "docs": {
375
- "tags": [],
390
+ "tags": [{
391
+ "name": "internal",
392
+ "text": undefined
393
+ }],
376
394
  "text": ""
377
395
  },
378
396
  "complexType": {
@@ -392,7 +410,10 @@ export class Menuitem {
392
410
  "cancelable": true,
393
411
  "composed": true,
394
412
  "docs": {
395
- "tags": [],
413
+ "tags": [{
414
+ "name": "internal",
415
+ "text": undefined
416
+ }],
396
417
  "text": ""
397
418
  },
398
419
  "complexType": {
@@ -412,7 +433,10 @@ export class Menuitem {
412
433
  "cancelable": true,
413
434
  "composed": true,
414
435
  "docs": {
415
- "tags": [],
436
+ "tags": [{
437
+ "name": "internal",
438
+ "text": undefined
439
+ }],
416
440
  "text": ""
417
441
  },
418
442
  "complexType": {
@@ -427,7 +451,10 @@ export class Menuitem {
427
451
  "cancelable": true,
428
452
  "composed": true,
429
453
  "docs": {
430
- "tags": [],
454
+ "tags": [{
455
+ "name": "internal",
456
+ "text": undefined
457
+ }],
431
458
  "text": ""
432
459
  },
433
460
  "complexType": {
@@ -106,6 +106,16 @@ document.getElementById("pattern-mode-checkbox").addEventListener("change", (ev)
106
106
  const dataJsonInput = document.getElementById("data-json-input");
107
107
 
108
108
  function setChartData(data) {
109
+ // Restore a config if it was cleared (e.g. via the Unset preset) so the chart re-renders.
110
+ if (!stackChart1.config) {
111
+ stackChart1.config = {
112
+ label: "Year 1 Cohort Submission Status by Requirement",
113
+ subinfo: "Progress of completion of licensure requirements",
114
+ colors: "semantic",
115
+ showLegend: "top",
116
+ valueFormat: "percentage",
117
+ };
118
+ }
109
119
  stackChart1.data = data;
110
120
  if (dataJsonInput) {
111
121
  dataJsonInput.value = JSON.stringify(data, null, 2);
@@ -178,6 +188,15 @@ document.getElementById("preset-popover").addEventListener("click", () => {
178
188
  ]);
179
189
  });
180
190
 
191
+ // Preset: Unset config and data (test the data -> no data transition)
192
+ document.getElementById("preset-unset").addEventListener("click", () => {
193
+ stackChart1.config = undefined;
194
+ stackChart1.data = undefined;
195
+ if (dataJsonInput) {
196
+ dataJsonInput.value = "";
197
+ }
198
+ });
199
+
181
200
  // Initialize JSON textarea with current data after chart loads
182
201
  setTimeout(() => {
183
202
  if (stackChart1 && stackChart1.data && dataJsonInput) {