@heartlandone/vega 2.82.0 → 2.83.0

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 (119) hide show
  1. package/dist/cjs/{app-globals-3350d580.js → app-globals-40b1b1b2.js} +1 -1
  2. package/dist/cjs/{dto-renderer-manager-ae5fcbba.js → dto-renderer-manager-7eb5c5ce.js} +42 -2
  3. package/dist/cjs/{element-appender-slimmer-dedd3a34.js → element-appender-slimmer-52c2b455.js} +84 -8
  4. package/dist/cjs/index.cjs.js +2 -2
  5. package/dist/cjs/loader.cjs.js +4 -4
  6. package/dist/cjs/{token-extension-9b213b6b.js → token-extension-361273fb.js} +77 -20
  7. package/dist/cjs/vega-banner.cjs.entry.js +13 -2
  8. package/dist/cjs/vega-checkbox_2.cjs.entry.js +37 -4
  9. package/dist/cjs/vega-date-picker_2.cjs.entry.js +1 -1
  10. package/dist/cjs/vega-dialog_2.cjs.entry.js +27 -5
  11. package/dist/cjs/vega-dropdown_5.cjs.entry.js +1 -1
  12. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  13. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +1 -1
  14. package/dist/cjs/vega-pagination.cjs.entry.js +1 -1
  15. package/dist/cjs/vega-popover_2.cjs.entry.js +1 -1
  16. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +8 -9
  17. package/dist/cjs/vega-rich-text-content.cjs.entry.js +1 -1
  18. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +54 -9
  19. package/dist/cjs/vega-text.cjs.entry.js +10 -0
  20. package/dist/cjs/vega-time-picker_2.cjs.entry.js +1 -1
  21. package/dist/cjs/vega-tooltip_2.cjs.entry.js +1 -1
  22. package/dist/cjs/vega.cjs.js +4 -4
  23. package/dist/collection/components/vega-banner/slimmers/renderers/vega-banner-renderer.js +11 -2
  24. package/dist/collection/components/vega-banner/vega-banner.js +3 -1
  25. package/dist/collection/components/vega-checkbox/vega-checkbox.css +19 -14
  26. package/dist/collection/components/vega-checkbox/vega-checkbox.js +57 -3
  27. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.js +9 -3
  28. package/dist/collection/components/vega-modal/slimmers/controllers/vega-nested-modal-controller.js +17 -2
  29. package/dist/collection/components/vega-pagination/internal/vega-pagination-go-to.js +1 -1
  30. package/dist/collection/components/vega-pagination/vega-pagination-page-selector-mobile/slimmers/renderers/page-selector-mobile-renderer.js +1 -1
  31. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +12 -10
  32. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +28 -3
  33. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +24 -6
  34. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +23 -8
  35. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +2 -2
  36. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +18 -1
  37. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +1 -1
  38. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +5 -3
  39. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +8 -3
  40. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +47 -0
  41. package/dist/collection/components/vega-text/slimmers/renderers/vega-text-tooltip-renderer.js +10 -0
  42. package/dist/collection/helpers/rte-manager/dto-renderer-manager.js +42 -2
  43. package/dist/collection/helpers/slimmers/element-appender/body-positioned-wrapper/third-party-dialog-wrapper.js +73 -0
  44. package/dist/collection/helpers/slimmers/element-appender/element-appender-container-controller.js +6 -0
  45. package/dist/esm/{app-globals-0b7e8b50.js → app-globals-f67d0eaf.js} +1 -1
  46. package/dist/esm/{dto-renderer-manager-12bc9121.js → dto-renderer-manager-abc7eb5f.js} +42 -2
  47. package/dist/esm/{element-appender-slimmer-5aca1bca.js → element-appender-slimmer-29c94a18.js} +84 -8
  48. package/dist/esm/index.js +2 -2
  49. package/dist/esm/loader.js +4 -4
  50. package/dist/esm/{token-extension-9d717a35.js → token-extension-0710dbc5.js} +77 -20
  51. package/dist/esm/vega-banner.entry.js +13 -2
  52. package/dist/esm/vega-checkbox_2.entry.js +37 -4
  53. package/dist/esm/vega-date-picker_2.entry.js +1 -1
  54. package/dist/esm/vega-dialog_2.entry.js +27 -5
  55. package/dist/esm/vega-dropdown_5.entry.js +1 -1
  56. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  57. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +1 -1
  58. package/dist/esm/vega-pagination.entry.js +1 -1
  59. package/dist/esm/vega-popover_2.entry.js +1 -1
  60. package/dist/esm/vega-progress-tracker_2.entry.js +8 -9
  61. package/dist/esm/vega-rich-text-content.entry.js +1 -1
  62. package/dist/esm/vega-rich-text-editor_4.entry.js +54 -9
  63. package/dist/esm/vega-text.entry.js +10 -0
  64. package/dist/esm/vega-time-picker_2.entry.js +1 -1
  65. package/dist/esm/vega-tooltip_2.entry.js +1 -1
  66. package/dist/esm/vega.js +4 -4
  67. package/dist/sri/vega-sri-manifest.json +70 -70
  68. package/dist/types/components/vega-banner/slimmers/renderers/vega-banner-renderer.d.ts +6 -0
  69. package/dist/types/components/vega-banner/vega-banner.d.ts +2 -0
  70. package/dist/types/components/vega-checkbox/vega-checkbox.d.ts +22 -1
  71. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.d.ts +1 -0
  72. package/dist/types/components/vega-modal/slimmers/controllers/vega-nested-modal-controller.d.ts +3 -2
  73. package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +8 -9
  74. package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +20 -2
  75. package/dist/types/components/vega-rich-text-editor/extensions/languages/language-extension.d.ts +13 -2
  76. package/dist/types/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.d.ts +15 -4
  77. package/dist/types/components/vega-rich-text-editor/extensions/table/table-extension.d.ts +1 -1
  78. package/dist/types/components/vega-rich-text-editor/interface.d.ts +4 -0
  79. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/extension-controller.d.ts +7 -0
  80. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +1 -0
  81. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.d.ts +4 -3
  82. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +14 -1
  83. package/dist/types/components/vega-text/slimmers/renderers/vega-text-tooltip-renderer.d.ts +1 -0
  84. package/dist/types/components.d.ts +29 -5
  85. package/dist/types/helpers/rte-manager/dto-renderer-manager.d.ts +26 -1
  86. package/dist/types/helpers/slimmers/element-appender/body-positioned-wrapper/third-party-dialog-wrapper.d.ts +45 -0
  87. package/dist/types/helpers/slimmers/element-appender/element-appender-container-controller.d.ts +2 -0
  88. package/dist/types/types/components.type.d.ts +1 -0
  89. package/dist/vega/index.esm.js +1 -1
  90. package/dist/vega/p-0bcb2945.entry.js +1 -0
  91. package/dist/vega/{p-a30ae8a1.js → p-0bf8743f.js} +1 -1
  92. package/dist/vega/p-142f371b.entry.js +1 -0
  93. package/dist/vega/p-158c6a9f.entry.js +1 -0
  94. package/dist/vega/p-1b48e8a5.entry.js +1 -0
  95. package/dist/vega/p-380abceb.entry.js +1 -0
  96. package/dist/vega/{p-3505f7cc.entry.js → p-54ba35e3.entry.js} +1 -1
  97. package/dist/vega/p-5be546c5.js +1 -0
  98. package/dist/vega/p-5f377954.js +1 -1
  99. package/dist/vega/{p-246eb001.entry.js → p-608f234f.entry.js} +1 -1
  100. package/dist/vega/p-81a11dc6.entry.js +1 -0
  101. package/dist/vega/{p-23c840dc.entry.js → p-8559e36f.entry.js} +1 -1
  102. package/dist/vega/p-90cb665e.entry.js +1 -0
  103. package/dist/vega/{p-88b6184c.entry.js → p-a4738b70.entry.js} +1 -1
  104. package/dist/vega/p-b6c3ce6d.js +1 -0
  105. package/dist/vega/p-b9728ca8.js +1 -0
  106. package/dist/vega/{p-7faaa5e1.entry.js → p-cc00135a.entry.js} +1 -1
  107. package/dist/vega/{p-97f36f4e.entry.js → p-e00fb667.entry.js} +1 -1
  108. package/dist/vega/vega.esm.js +1 -1
  109. package/package.json +1 -1
  110. package/dist/vega/p-1dd6ba67.js +0 -1
  111. package/dist/vega/p-1efb47fe.entry.js +0 -1
  112. package/dist/vega/p-4f938ee4.entry.js +0 -1
  113. package/dist/vega/p-6d95390b.entry.js +0 -1
  114. package/dist/vega/p-a5bd3ecd.entry.js +0 -1
  115. package/dist/vega/p-c366e7f7.entry.js +0 -1
  116. package/dist/vega/p-d872beb1.entry.js +0 -1
  117. package/dist/vega/p-d9d5c693.entry.js +0 -1
  118. package/dist/vega/p-dd6211cd.js +0 -1
  119. package/dist/vega/p-fcabf0dc.js +0 -1
@@ -12,7 +12,7 @@ const internalTranslationController = require('./internal-translation-controller
12
12
  const contentState = require('./content-state-648652b4.js');
13
13
  const codeBlock = require('./code-block-b1f8aded.js');
14
14
  const typeGuard = require('./type-guard-3ec852d7.js');
15
- const dtoRendererManager = require('./dto-renderer-manager-ae5fcbba.js');
15
+ const dtoRendererManager = require('./dto-renderer-manager-7eb5c5ce.js');
16
16
  const baseRenderer = require('./base-renderer-0a3b62b7.js');
17
17
  const internalIconManager = require('./internal-icon-manager-c989189a.js');
18
18
  const vegaNonceManager = require('./vega-nonce-manager-df69d3ed.js');
@@ -1232,12 +1232,26 @@ class VegaRTEExtension {
1232
1232
  static registerFilterStylesStrategy(blockOrNodeClassName, strategy) {
1233
1233
  codeBlock.RTEFilterStylesStrategyRegistry.register(blockOrNodeClassName, strategy);
1234
1234
  }
1235
+ /**
1236
+ * Lifecycle hook called by the rich text editor before the first render
1237
+ * (during `componentWillLoad`). Override this method to perform per-host
1238
+ * pre-render setup — for example, registering a host-specific toolbar button
1239
+ * renderer via {@link registerToolbarButtonRenderer} so that each editor on
1240
+ * the page gets its own isolated renderer instance.
1241
+ *
1242
+ * The default implementation is a no-op; subclasses may override selectively.
1243
+ *
1244
+ * @typedef HTMLVegaRichTextEditorElement - The type of the host rich text editor element.
1245
+ * @param {HTMLVegaRichTextEditorElement} host - The host rich text editor element that is about to load.
1246
+ */
1247
+ prepareBeforeLoad(host) {
1248
+ }
1235
1249
  /**
1236
1250
  * Initializes the RTE extension with the provided context.
1237
1251
  *
1238
1252
  * @param {RTEExtensionContext} context - The context of the RTE extension.
1239
1253
  */
1240
- initialExtension(context) {
1254
+ initialExtensionAfterLoad(context) {
1241
1255
  this.extensionContext = context;
1242
1256
  RTEExtensionContextManager$1.setExtensionContext(context);
1243
1257
  }
@@ -1285,12 +1299,22 @@ class VegaRTEExtension {
1285
1299
  }
1286
1300
  /**
1287
1301
  * Register a toolbar button renderer for the extension.
1302
+ * When a `host` element is provided the renderer is registered in the per-host map
1303
+ * (via {@link RTEDTORendererManager#registerRTEToolbarButtonRendererForHost}), giving
1304
+ * that host an isolated renderer instance that takes precedence over the global singleton.
1305
+ * Omit `host` to fall back to the global registration (backwards-compatible default).
1288
1306
  *
1289
1307
  * @param {string} type - The type of the toolbar button.
1290
1308
  * @param {VegaRTEToolbarButtonRenderer} renderer - The renderer to register.
1309
+ * @param {HTMLVegaRichTextEditorElement} [host] - Optional host element for per-host isolation.
1291
1310
  */
1292
- registerToolbarButtonRenderer(type, renderer) {
1293
- dtoRendererManager.RTEDTORendererManager.registerRTEToolbarButtonRenderer(type, renderer);
1311
+ registerToolbarButtonRenderer(type, renderer, host) {
1312
+ if (host) {
1313
+ dtoRendererManager.RTEDTORendererManager.registerRTEToolbarButtonRendererForHost(host, type, renderer);
1314
+ }
1315
+ else {
1316
+ dtoRendererManager.RTEDTORendererManager.registerRTEToolbarButtonRenderer(type, renderer);
1317
+ }
1294
1318
  }
1295
1319
  /**
1296
1320
  * This is a helper method that utilizes RTEUtils to register common strategies.
@@ -1777,30 +1801,41 @@ class RTETokenNodeRenderer extends VegaRTEExtensionRenderer {
1777
1801
 
1778
1802
  /**
1779
1803
  * Toolbar button renderer for language selection in Vega Rich Text Editor.
1804
+ *
1805
+ * Each {@link HTMLVegaRichTextEditorElement} that uses a language extension receives its
1806
+ * **own** instance of this renderer, registered in the per-host map inside
1807
+ * {@link RTEDTORendererManager} via {@link VegaRTEExtension#prepareBeforeLoad}. Because
1808
+ * every editor has a dedicated renderer, all state (label DOM ref, selected language, and
1809
+ * the language-change callback) is held in plain instance fields — no WeakMaps or shared
1810
+ * singletons are required.
1780
1811
  */
1781
1812
  class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1782
- constructor(languageList, languageChangeCallback, selectedLanguage) {
1813
+ constructor(languageList, languageChangeCallback, selectedLanguage = '') {
1783
1814
  super();
1784
1815
  this.languageList = [];
1785
- this.selectedLanguage = 'Select Language';
1816
+ this.languageChangeCallback = null;
1817
+ this.selectedLanguage = '';
1786
1818
  this.labelRef = null;
1787
1819
  /**
1788
1820
  * Handles the language selection event.
1821
+ * Because each editor has its own renderer instance, the language-change callback
1822
+ * is stored directly on this instance — no indirect context lookup is needed.
1789
1823
  *
1790
1824
  * @param {string} itemKey - The key of the selected language item.
1791
1825
  */
1792
1826
  this.handleDropdownClick = (itemKey) => {
1793
1827
  this.setSelectedLanguage(itemKey);
1794
1828
  if (typeof this.languageChangeCallback === 'function') {
1795
- this.languageChangeCallback(this.selectedLanguage);
1829
+ this.languageChangeCallback(itemKey);
1796
1830
  }
1797
1831
  };
1798
1832
  this.languageList = languageList;
1799
- this.selectedLanguage = selectedLanguage;
1800
1833
  this.languageChangeCallback = languageChangeCallback;
1834
+ this.selectedLanguage = selectedLanguage;
1801
1835
  }
1802
1836
  /**
1803
- * Public method to set the selected language.
1837
+ * Updates the selected language and refreshes the button label text in-place,
1838
+ * without requiring a full re-render of the toolbar.
1804
1839
  *
1805
1840
  * @param {string} language The language key to set as selected.
1806
1841
  */
@@ -1830,7 +1865,8 @@ class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1830
1865
  ]);
1831
1866
  }
1832
1867
  /**
1833
- * Override to render the button label with custom behavior.
1868
+ * Override to capture the rendered label element ref so that
1869
+ * {@link setSelectedLanguage} can update the button text without a full re-render.
1834
1870
  *
1835
1871
  * @inheritDoc
1836
1872
  */
@@ -1840,7 +1876,9 @@ class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1840
1876
  variant: 'font-field-label-sm',
1841
1877
  color: isDisabled ? 'text-disabled' : 'text-primary',
1842
1878
  // eslint-disable-next-line jsdoc/require-jsdoc
1843
- ref: (el) => (this.labelRef = el),
1879
+ ref: (el) => {
1880
+ this.labelRef = el;
1881
+ },
1844
1882
  }, label);
1845
1883
  }
1846
1884
  /* istanbul ignore next */
@@ -1858,8 +1896,9 @@ class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1858
1896
  * @returns {string} The label of the language, or the key if not found.
1859
1897
  */
1860
1898
  getLanguageLabelByKey(key) {
1899
+ var _a;
1861
1900
  const language = this.getListItemByKey(this.languageList, key);
1862
- return language.label;
1901
+ return (_a = language === null || language === void 0 ? void 0 : language.label) !== null && _a !== void 0 ? _a : 'Select Language';
1863
1902
  }
1864
1903
  }
1865
1904
 
@@ -1870,6 +1909,7 @@ class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1870
1909
  class VegaRTELanguageExtension extends VegaRTEExtension {
1871
1910
  constructor(languageList, languagesState) {
1872
1911
  super();
1912
+ this.languageToolbarButtonRenderer = null;
1873
1913
  this.languageState = {
1874
1914
  selectedLanguage: '',
1875
1915
  contentMap: {},
@@ -1887,24 +1927,39 @@ class VegaRTELanguageExtension extends VegaRTEExtension {
1887
1927
  this.languageState.selectedLanguage = selectedLanguage;
1888
1928
  this.applyLanguageContent(selectedLanguage, this.languageState.contentMap);
1889
1929
  };
1930
+ this.languageList = languageList;
1890
1931
  if (languagesState) {
1891
1932
  this.languageState = Object.assign(Object.assign({}, this.languageState), languagesState);
1892
1933
  }
1893
1934
  if (!this.languageState.selectedLanguage && languageList.length > 0) {
1894
1935
  this.languageState.selectedLanguage = languageList[0].key;
1895
1936
  }
1896
- this.languageToolbarButtonRenderer = new RTELanguageToolbarButtonRenderer(languageList, this.languageChangeCallBack, this.languageState.selectedLanguage);
1897
- this.registerToolbarButtonRenderer('languages', this.languageToolbarButtonRenderer);
1937
+ }
1938
+ /**
1939
+ * Called by the rich text editor during `componentWillLoad` (before the first render).
1940
+ * Creates a fresh {@link RTELanguageToolbarButtonRenderer} instance dedicated to this
1941
+ * host element and registers it in the per-host map inside {@link RTEDTORendererManager}.
1942
+ * This ensures that each editor on the page has its own isolated renderer — no shared
1943
+ * singleton state, no WeakMap indirection.
1944
+ *
1945
+ * @typedef HTMLVegaRichTextEditorElement - The type of the host rich text editor element.
1946
+ * @param {HTMLVegaRichTextEditorElement} host - The host rich text editor element.
1947
+ */
1948
+ prepareBeforeLoad(host) {
1949
+ this.languageToolbarButtonRenderer = new RTELanguageToolbarButtonRenderer(this.languageList, this.languageChangeCallBack, this.languageState.selectedLanguage);
1950
+ this.registerToolbarButtonRenderer('languages', this.languageToolbarButtonRenderer, host);
1898
1951
  }
1899
1952
  /**
1900
1953
  * Initializes the language extension.
1901
- * Applies the content for the selected language upon initialization.
1902
1954
  *
1903
1955
  * @param {RTEExtensionContext} context The extension context.
1904
1956
  */
1905
- initialExtension(context) {
1906
- super.initialExtension(context);
1957
+ initialExtensionAfterLoad(context) {
1958
+ super.initialExtensionAfterLoad(context);
1907
1959
  const { selectedLanguage, contentMap } = this.languageState;
1960
+ if (this.languageToolbarButtonRenderer) {
1961
+ this.languageToolbarButtonRenderer.setSelectedLanguage(selectedLanguage);
1962
+ }
1908
1963
  if (contentMap && contentMap[selectedLanguage]) {
1909
1964
  this.applyLanguageContent(this.languageState.selectedLanguage, this.languageState.contentMap);
1910
1965
  }
@@ -1916,7 +1971,9 @@ class VegaRTELanguageExtension extends VegaRTEExtension {
1916
1971
  */
1917
1972
  setState(state) {
1918
1973
  const { selectedLanguage, contentMap } = state;
1919
- this.languageToolbarButtonRenderer.setSelectedLanguage(selectedLanguage);
1974
+ if (this.languageToolbarButtonRenderer) {
1975
+ this.languageToolbarButtonRenderer.setSelectedLanguage(selectedLanguage);
1976
+ }
1920
1977
  this.languageState.selectedLanguage = selectedLanguage;
1921
1978
  this.languageState.contentMap = Object.assign({}, contentMap);
1922
1979
  this.applyLanguageContent(selectedLanguage, contentMap);
@@ -7415,10 +7472,10 @@ class VegaRTETableExtension extends VegaRTEExtension {
7415
7472
  *
7416
7473
  * @param {RTEExtensionContext} context - extension context
7417
7474
  */
7418
- initialExtension(context) {
7475
+ initialExtensionAfterLoad(context) {
7419
7476
  this.tableSelection.init(context);
7420
7477
  const tableExtensionContext = Object.assign(Object.assign({}, context), { tableSelection: this.tableSelection });
7421
- super.initialExtension(tableExtensionContext);
7478
+ super.initialExtensionAfterLoad(tableExtensionContext);
7422
7479
  }
7423
7480
  /**
7424
7481
  * @inheritDoc
@@ -69,15 +69,24 @@ class VegaBannerRenderer extends globalSlimmerRegistry.VegaSlimmer {
69
69
  * @returns {HTMLElement} the banner content element
70
70
  */
71
71
  renderBannerContent() {
72
+ const hasContentSlot = this.hasContentSlot();
72
73
  return (index.h("div", { class: {
73
74
  ['banner-content-container']: true,
74
- ['linear']: !this.isMobileDevice && (!this.content || !this.bannerTitle),
75
+ ['linear']: !this.isMobileDevice && ((!this.content && !hasContentSlot) || !this.bannerTitle),
75
76
  } },
76
77
  this.renderBannerTitle(),
77
78
  index.h("div", { class: "banner-content" },
78
- index.h("vega-font", { variant: this.isMobileDevice ? 'font-footnote1-long' : 'font-p2-short', color: this.type === 'error' ? 'text-primary' : 'text-black' }, this.content),
79
+ hasContentSlot ? (index.h("slot", { name: "content" })) : (index.h("vega-font", { variant: this.isMobileDevice ? 'font-footnote1-long' : 'font-p2-short', color: this.type === 'error' ? 'text-primary' : 'text-black' }, this.content)),
79
80
  this.isMobileDevice ? null : this.actionButtonRenderer.render())));
80
81
  }
82
+ /**
83
+ * Checks whether the host element contains a slotted element targeting the "content" slot.
84
+ *
85
+ * @returns {boolean} `true` if a child element with `slot="content"` exists, `false` otherwise.
86
+ */
87
+ hasContentSlot() {
88
+ return this.host.querySelector('[slot="content"]') !== null;
89
+ }
81
90
  /**
82
91
  * Get banner title element by property
83
92
  *
@@ -292,6 +301,8 @@ const VegaBanner = class {
292
301
  this.bannerTitle = '';
293
302
  /**
294
303
  * Specifies the content displayed within the banner.
304
+ * Also supports slot-based content: place a child element with `slot="content"` inside
305
+ * the banner to render rich HTML content. The slot takes precedence over this property.
295
306
  *
296
307
  * @vegaVersion 2.8.0
297
308
  */
@@ -96,7 +96,7 @@ __decorate$2([
96
96
  globalSlimmerRegistry.MapToComponentMethod('disconnectedCallback')
97
97
  ], VegaCheckboxShowErrorController.prototype, "disconnectedCallback", null);
98
98
 
99
- const vegaCheckboxCss = ":host{display:inline-block;vertical-align:middle}.vega-checkbox-container{position:relative;display:flex;-webkit-tap-highlight-color:transparent}.vega-checkbox-container>input[type=checkbox]{position:absolute;left:0px;top:0px;opacity:0;width:24px;height:24px;padding:0px;margin:0px}.vega-checkbox-container>.vega-checkbox-icon{display:inline-block;box-sizing:border-box;width:24px;height:24px;border-style:solid;border-width:2px;border-color:rgba(var(--v-border-color-action-active, 29, 65, 195, 1));position:relative;left:0px;background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));border:1px solid rgba(var(--v-border-input-field, 171, 198, 216, 1));border-radius:4px;min-width:24px;color:rgba(var(--v-text-inverted-primary, 252, 252, 252, 1))}.vega-checkbox-container>.vega-checkbox-icon:hover{border:1px solid rgba(var(--v-border-input-field-hover, 115, 160, 190, 1))}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon{background-color:rgba(var(--v-bg-action, 19, 98, 226, 1))}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon:hover{background-color:rgba(var(--v-bg-action-hover, 4, 112, 236, 1))}.vega-checkbox-container>input[type=checkbox]:focus-visible+.vega-checkbox-icon{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:3px}.vega-checkbox-container>.vega-checkbox-icon:active{border-width:1px;border-style:solid;border-color:rgba(var(--v-border-color-action-active, 29, 65, 195, 1))}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon:active{background-color:rgba(var(--v-bg-action-active, 29, 65, 195, 1))}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon{display:inline-flex;align-items:center;justify-content:center}:host(.disabled) .vega-checkbox-container{cursor:not-allowed}:host(:not(.disabled)) .vega-checkbox-container{cursor:pointer}.vega-checkbox-container .vega-require{color:rgba(var(--v-text-error, 189, 41, 71, 1));margin-left:4px;vertical-align:middle}.vega-checkbox-container.error>.vega-checkbox-icon{background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));border:1px solid rgba(var(--v-border-input-field-danger, 230, 50, 87, 1))}:host(.checked) .vega-checkbox-container.error>.vega-checkbox-icon{background-color:rgba(var(--v-bg-danger, 189, 41, 71, 1))}.vega-checkbox-container.error>.vega-checkbox-icon:hover{border:1px solid rgba(var(--v-border-input-field-danger-hover, 255, 87, 114, 1))}:host(.checked) .vega-checkbox-container.error>.vega-checkbox-icon:hover{background-color:rgba(var(--v-bg-danger-hover, 233, 71, 104, 1))}.vega-checkbox-container.error>input[type=checkbox]:focus-visible+.vega-checkbox-icon{outline:2px solid rgba(var(--v-border-color-danger, 230, 50, 87, 1));outline-offset:3px}:host(.checked) .vega-checkbox-container.error>.vega-checkbox-icon:active{background-color:rgba(var(--v-bg-danger-active, 230, 50, 87, 1))}.vega-checkbox-container.error>.vega-checkbox-icon:active{border-width:1px;border-style:solid;border-color:rgba(var(--v-border-color-danger-active, 189, 41, 71, 1))}:host(.disabled) .vega-checkbox-container>.vega-checkbox-icon{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1));border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host(.checked.disabled) .vega-checkbox-container>.vega-checkbox-icon{background-color:rgba(var(--v-bg-disabled, 176, 180, 181, 1));border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host(.checked.disabled) .vega-checkbox-container>.vega-checkbox-icon>vega-icon{color:rgba(var(--v-text-inverted-primary, 252, 252, 252, 1))}.vega-checkbox-container>.vega-checkbox-label-container{display:inline-block;margin-left:12px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-checkbox-container>.vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-checkbox-container>.vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-checkbox-container>.vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}:host(.disabled) .vega-checkbox-container>.vega-checkbox-label-container{color:rgba(var(--v-text-disabled, 176, 180, 181, 1))}.vega-error{display:block;margin-top:12px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-error, 189, 41, 71, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}.vega-checkbox-label-container.vega-hidden{display:none}.vega-hidden{display:none}.size-default input[type=checkbox]{width:24px;height:24px}.size-default .vega-checkbox-icon{width:24px;height:24px;min-width:24px;border-radius:4px}.size-default .vega-checkbox-label-container{margin-left:12px;font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}@media screen and (min-width: 768px) and (max-width: 1023px){.size-default .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.size-default .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.size-default .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}.size-small input[type=checkbox]{width:16px;height:16px}.size-small .vega-checkbox-icon{width:16px;height:16px;min-width:16px;border-radius:2px}.size-small .vega-checkbox-label-container{margin-left:8px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}@media screen and (min-width: 768px) and (max-width: 1023px){.size-small .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.size-small .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.size-small .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}";
99
+ const vegaCheckboxCss = ":host{display:inline-block;vertical-align:middle}.vega-checkbox-container{position:relative;display:flex;-webkit-tap-highlight-color:transparent}.vega-checkbox-container>input[type=checkbox]{position:absolute;left:0px;top:0px;opacity:0;width:24px;height:24px;padding:0px;margin:0px}.vega-checkbox-container>.vega-checkbox-icon{display:inline-block;box-sizing:border-box;width:24px;height:24px;border-style:solid;border-width:2px;border-color:rgba(var(--v-border-color-action-active, 29, 65, 195, 1));position:relative;left:0px;background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));border:1px solid rgba(var(--v-border-input-field, 171, 198, 216, 1));border-radius:4px;min-width:24px;color:rgba(var(--v-text-inverted-primary, 252, 252, 252, 1))}.vega-checkbox-container>.vega-checkbox-icon:hover{border:1px solid rgba(var(--v-border-input-field-hover, 115, 160, 190, 1))}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon,:host(.indeterminate) .vega-checkbox-container>.vega-checkbox-icon{background-color:rgba(var(--v-bg-action, 19, 98, 226, 1));display:inline-flex;align-items:center;justify-content:center}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon:hover,:host(.indeterminate) .vega-checkbox-container>.vega-checkbox-icon:hover{background-color:rgba(var(--v-bg-action-hover, 4, 112, 236, 1))}.vega-checkbox-container>input[type=checkbox]:focus-visible+.vega-checkbox-icon{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:3px}.vega-checkbox-container>.vega-checkbox-icon:active{border-width:1px;border-style:solid;border-color:rgba(var(--v-border-color-action-active, 29, 65, 195, 1))}:host(.checked) .vega-checkbox-container>.vega-checkbox-icon:active,:host(.indeterminate) .vega-checkbox-container>.vega-checkbox-icon:active{background-color:rgba(var(--v-bg-action-active, 29, 65, 195, 1))}:host(.disabled) .vega-checkbox-container{cursor:not-allowed}:host(:not(.disabled)) .vega-checkbox-container{cursor:pointer}.vega-checkbox-container .vega-require{color:rgba(var(--v-text-error, 189, 41, 71, 1));margin-left:4px;vertical-align:middle}.vega-checkbox-container.error>.vega-checkbox-icon{background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));border:1px solid rgba(var(--v-border-input-field-danger, 230, 50, 87, 1))}:host(.checked) .vega-checkbox-container.error>.vega-checkbox-icon,:host(.indeterminate) .vega-checkbox-container.error>.vega-checkbox-icon{background-color:rgba(var(--v-bg-danger, 189, 41, 71, 1))}.vega-checkbox-container.error>.vega-checkbox-icon:hover{border:1px solid rgba(var(--v-border-input-field-danger-hover, 255, 87, 114, 1))}:host(.checked) .vega-checkbox-container.error>.vega-checkbox-icon:hover,:host(.indeterminate) .vega-checkbox-container.error>.vega-checkbox-icon:hover{background-color:rgba(var(--v-bg-danger-hover, 233, 71, 104, 1))}.vega-checkbox-container.error>input[type=checkbox]:focus-visible+.vega-checkbox-icon{outline:2px solid rgba(var(--v-border-color-danger, 230, 50, 87, 1));outline-offset:3px}:host(.checked) .vega-checkbox-container.error>.vega-checkbox-icon:active,:host(.indeterminate) .vega-checkbox-container.error>.vega-checkbox-icon:active{background-color:rgba(var(--v-bg-danger-active, 230, 50, 87, 1))}.vega-checkbox-container.error>.vega-checkbox-icon:active{border-width:1px;border-style:solid;border-color:rgba(var(--v-border-color-danger-active, 189, 41, 71, 1))}:host(.disabled) .vega-checkbox-container>.vega-checkbox-icon{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1));border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host(.checked.disabled) .vega-checkbox-container>.vega-checkbox-icon,:host(.indeterminate.disabled) .vega-checkbox-container>.vega-checkbox-icon{background-color:rgba(var(--v-bg-disabled, 176, 180, 181, 1));border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host(.checked.disabled) .vega-checkbox-container>.vega-checkbox-icon>vega-icon,:host(.indeterminate.disabled) .vega-checkbox-container>.vega-checkbox-icon>vega-icon{color:rgba(var(--v-text-inverted-primary, 252, 252, 252, 1))}.vega-checkbox-container>.vega-checkbox-label-container{display:inline-block;margin-left:12px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-checkbox-container>.vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-checkbox-container>.vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-checkbox-container>.vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}:host(.disabled) .vega-checkbox-container>.vega-checkbox-label-container{color:rgba(var(--v-text-disabled, 176, 180, 181, 1))}.vega-error{display:block;margin-top:12px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-error, 189, 41, 71, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}.vega-checkbox-label-container.vega-hidden{display:none}.vega-hidden{display:none}.size-default input[type=checkbox]{width:24px;height:24px}.size-default .vega-checkbox-icon{width:24px;height:24px;min-width:24px;border-radius:4px}.size-default .vega-checkbox-label-container{margin-left:12px;font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}@media screen and (min-width: 768px) and (max-width: 1023px){.size-default .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.size-default .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.size-default .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}.size-small input[type=checkbox]{width:16px;height:16px}.size-small .vega-checkbox-icon{width:16px;height:16px;min-width:16px;border-radius:2px}.size-small .vega-checkbox-label-container{margin-left:8px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}@media screen and (min-width: 768px) and (max-width: 1023px){.size-small .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.size-small .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.size-small .vega-checkbox-label-container{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}";
100
100
 
101
101
  var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
102
102
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -176,6 +176,21 @@ const VegaCheckbox = class {
176
176
  * @vegaVersion 1.0.7
177
177
  */
178
178
  this.checked = false;
179
+ /**
180
+ * Specifies whether the checkbox is in an indeterminate state.
181
+ *
182
+ * The indeterminate state is a visual-only state typically used to represent
183
+ * a checkbox whose value is neither fully checked nor fully unchecked,
184
+ * such as a "select all" control where only some children are selected.
185
+ *
186
+ * Setting this property does not affect the `checked` or `value` properties.
187
+ * User interaction (clicking) will clear the indeterminate state and
188
+ * toggle `checked` as usual.
189
+ *
190
+ * @vegaVersion 2.83.0
191
+ */
192
+ /* eslint-disable-next-line @stencil/strict-mutable */
193
+ this.indeterminate = false;
179
194
  /**
180
195
  * Specifies whether the checkbox element is disabled.
181
196
  *
@@ -203,11 +218,14 @@ const VegaCheckbox = class {
203
218
  /* eslint-disable-next-line @stencil/strict-mutable */
204
219
  this.isValid = null;
205
220
  /**
206
- * The below method is e2e-test covered in
221
+ * Indeterminate-clearing behavior is unit-tested.
222
+ * The checked-state side of this method is e2e-test covered in
207
223
  * @see{module:vega-checkbox-change}
208
224
  */
209
- /* istanbul ignore next */
210
225
  this.onCheckBoxChange = (e) => {
226
+ if (this.indeterminate) {
227
+ this.indeterminate = false;
228
+ }
211
229
  this.checked = e.currentTarget.checked;
212
230
  };
213
231
  this.onSelectedIconClick = (e) => {
@@ -234,6 +252,7 @@ const VegaCheckbox = class {
234
252
  if (this.host.innerHTML.trim() === '') {
235
253
  this.labelElement.classList.add('vega-hidden');
236
254
  }
255
+ this.syncNativeIndeterminate();
237
256
  }
238
257
  /**
239
258
  * Invoke this method to set the value of the checkbox.
@@ -252,14 +271,18 @@ const VegaCheckbox = class {
252
271
  return component.sanitizeVegaComponent(index.h(index.Host, { class: {
253
272
  'vega-flex-shrink-0 v-min-w-min': isInsideCheckboxGroup,
254
273
  'checked': this.checked,
274
+ 'indeterminate': this.indeterminate,
255
275
  'disabled': this.isDisabled(),
256
276
  } }, index.h("label", { class: ui.arrayToClassString([
257
277
  'vega-checkbox-container',
258
278
  this.showError && 'error',
259
279
  this.size && `size-${this.size}`,
260
- ]), ref: (e) => (this.inputContainerRef = e) }, index.h("input", { ref: (e) => (this.inputRef = e), type: "checkbox", checked: this.checked, value: this.identifier, onChange: this.onCheckBoxChange, "aria-label": this.identifier || 'No label defined', disabled: this.isDisabled(), role: 'button', tabIndex: 0, onKeyDown: accessibility.createEnterKeyHandlerToTriggerClick() }), index.h("span", { class: "vega-checkbox-icon", onClick: this.onSelectedIconClick, tabIndex: -1 }, this.renderIconDom()), index.h("div", { class: "vega-checkbox-label-container", ref: (el) => (this.labelElement = el) }, this.renderLabelDom(), this.renderRequireDom()))), this.host);
280
+ ]), ref: (e) => (this.inputContainerRef = e) }, index.h("input", { ref: (e) => (this.inputRef = e), type: "checkbox", checked: this.checked, value: this.identifier, onChange: this.onCheckBoxChange, "aria-label": this.identifier || 'No label defined', "aria-checked": this.indeterminate ? 'mixed' : undefined, disabled: this.isDisabled(), tabIndex: 0, onKeyDown: accessibility.createEnterKeyHandlerToTriggerClick() }), index.h("span", { class: "vega-checkbox-icon", onClick: this.onSelectedIconClick, tabIndex: -1 }, this.renderIconDom()), index.h("div", { class: "vega-checkbox-label-container", ref: (el) => (this.labelElement = el) }, this.renderLabelDom(), this.renderRequireDom()))), this.host);
261
281
  }
262
282
  renderIconDom() {
283
+ if (this.indeterminate) {
284
+ return index.h("vega-icon", { icon: "minus-sign", size: this.size === 'small' ? 'size-12' : 'size-16' });
285
+ }
263
286
  return this.checked ? (index.h("vega-icon", { icon: "checkmark", size: this.size === 'small' ? 'size-12' : 'size-16' })) : null;
264
287
  }
265
288
  renderLabelDom() {
@@ -273,6 +296,16 @@ const VegaCheckbox = class {
273
296
  initValue() {
274
297
  this.value = this.identifier !== '' ? (this.checked ? this.identifier : '') : this.checked;
275
298
  }
299
+ /**
300
+ * Syncs the indeterminate property to the native input element.
301
+ * The HTML `indeterminate` attribute can only be set via JavaScript,
302
+ * so it must be applied imperatively after each render.
303
+ */
304
+ syncNativeIndeterminate() {
305
+ if (this.inputRef) {
306
+ this.inputRef.indeterminate = this.indeterminate;
307
+ }
308
+ }
276
309
  /**
277
310
  * indicating whether the component is disabled or not, single checkbox will take the self disabled value and the checkbox in group will take the self disabled and group disabled value
278
311
  *
@@ -30,7 +30,7 @@ const eventEmitSlimmer = require('./event-emit-slimmer-bcb458b2.js');
30
30
  const childNodesEventPreventSlimmer = require('./child-nodes-event-prevent-slimmer-9b7095a4.js');
31
31
  const translationSlimmer = require('./translation-slimmer-d0c77ad2.js');
32
32
  const dynamicSlimmer = require('./dynamic-slimmer-f31fdfd7.js');
33
- const elementAppenderSlimmer = require('./element-appender-slimmer-dedd3a34.js');
33
+ const elementAppenderSlimmer = require('./element-appender-slimmer-52c2b455.js');
34
34
  const synchronizeTaskQueue = require('./synchronize-task-queue-1ee80e94.js');
35
35
  const clickOutsideOnlyToDismissStrategy = require('./click-outside-only-to-dismiss-strategy-407f6d1e.js');
36
36
  const ariaDialogFocusableTrapSlimmer = require('./aria-dialog-focusable-trap-slimmer-5507f917.js');
@@ -18,6 +18,8 @@ const eventEmitSlimmer = require('./event-emit-slimmer-bcb458b2.js');
18
18
  const childNodesEventPreventSlimmer = require('./child-nodes-event-prevent-slimmer-9b7095a4.js');
19
19
  const componentGlobalStyleSlimmer = require('./component-global-style-slimmer-93c5fb50.js');
20
20
  const deprecatedPropertySlimmer = require('./deprecated-property-slimmer-300a3929.js');
21
+ const mutationObserverSlimmer = require('./mutation-observer-slimmer-749d5020.js');
22
+ const mutationObserverFilters = require('./mutation-observer-filters-38cebc6d.js');
21
23
  const misc = require('./misc-3d30df91.js');
22
24
  const accessibility = require('./accessibility-bfa227f6.js');
23
25
  const ui = require('./ui-32120990.js');
@@ -37,9 +39,10 @@ require('./vega-env-manager-23b8b23c.js');
37
39
  require('./vega-nonce-manager-df69d3ed.js');
38
40
  require('./index-592b4052.js');
39
41
  require('./object-b53e9416.js');
42
+ require('./array-249289f2.js');
43
+ require('./number-4816603d.js');
40
44
  require('./synchronize-task-queue-1ee80e94.js');
41
45
  require('./vega-internal-event-id-87014e4f.js');
42
- require('./number-4816603d.js');
43
46
 
44
47
  const vegaDialogCss = ":host vega-modal{padding-left:16px;padding-right:16px}@media (min-width: 768px){:host vega-modal{padding:0px}}:host .vega-dialog-actions-container{display:flex;justify-content:center;flex-direction:column;gap:12px}@media (min-width: 768px){:host .vega-dialog-actions-container{justify-content:flex-end;flex-direction:row}}:host .vega-dialog-modal-content{font-family:\"Inter\", sans-serif;font-size:18px;font-weight:500;line-height:30px;letter-spacing:0px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));word-break:break-word}@media screen and (min-width: 768px) and (max-width: 1023px){:host .vega-dialog-modal-content{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:500;line-height:28px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host .vega-dialog-modal-content{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:500;line-height:28px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host .vega-dialog-modal-content{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:500;line-height:28px;letter-spacing:0px}}";
45
48
 
@@ -185,7 +188,20 @@ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators,
185
188
  /**
186
189
  * Nested modal controller
187
190
  */
188
- class VegaNestedModalController extends globalSlimmerRegistry.VegaSlimmer {
191
+ class VegaNestedModalController extends mutationObserverSlimmer.MutationObserverSlimmer {
192
+ constructor() {
193
+ super({
194
+ mutationFilter: mutationObserverFilters.TagNameMutationFilter('VEGA-MODAL'),
195
+ options: {
196
+ childList: true,
197
+ subtree: true,
198
+ },
199
+ // eslint-disable-next-line jsdoc/require-jsdoc
200
+ callback: () => {
201
+ this.appendNestedModalToBody();
202
+ },
203
+ });
204
+ }
189
205
  /**
190
206
  * Component lifecycle - [connectedCallback]
191
207
  */
@@ -889,18 +905,23 @@ class VegaModalBackdropController extends globalSlimmerRegistry.VegaSlimmer {
889
905
  * Set backdrop of modal.
890
906
  */
891
907
  setBackdrop() {
908
+ var _a;
892
909
  if (this.backdrop === 'none')
893
910
  return;
894
911
  // eslint-disable-next-line no-restricted-globals
895
- let backdrop = document.querySelector('vega-backdrop.modal-backdrop');
912
+ let backdrop = document.querySelector(`vega-backdrop.${VegaModalBackdropController.modalBackdropClass}`);
896
913
  if (!backdrop) {
897
914
  // eslint-disable-next-line no-restricted-globals
898
915
  backdrop = document.createElement('vega-backdrop');
899
- backdrop.classList.add('modal-backdrop');
916
+ backdrop.classList.add(VegaModalBackdropController.modalBackdropClass);
900
917
  backdrop.color = VegaModalBackdropController.backdropColorMap[this.backdropColor];
901
918
  backdrop.visible = true;
919
+ // Append backdrop as a sibling of the modal host so it shares the same stacking context.
920
+ // - When vega-modal is in document.body (normal case), parentElement is document.body.
921
+ // - When vega-modal is inside a third-party dialog (e.g. Bootstrap modal), parentElement is the dialog container — keeping the backdrop inside the focus-trap root.
922
+ // - Falls back to document.body when parentElement is null (e.g. VegaDialog creates the vega-modal element before appending it to the DOM).
902
923
  // eslint-disable-next-line no-restricted-globals
903
- document.querySelector('body').append(backdrop);
924
+ ((_a = this.host.parentElement) !== null && _a !== void 0 ? _a : document.body).append(backdrop);
904
925
  }
905
926
  this.backdropRef = backdrop;
906
927
  }
@@ -911,6 +932,7 @@ class VegaModalBackdropController extends globalSlimmerRegistry.VegaSlimmer {
911
932
  this.backdropRef && this.backdropRef.remove();
912
933
  }
913
934
  }
935
+ VegaModalBackdropController.modalBackdropClass = 'vega-modal-backdrop';
914
936
  VegaModalBackdropController.backdropColorMap = {
915
937
  default: 'bg-backdrop-modal',
916
938
  semi: 'bg-backdrop-popover',
@@ -14,7 +14,7 @@ const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-facto
14
14
  const vegaEventId = require('./vega-event-id-c08ce3d3.js');
15
15
  const keyboardManagerSlimmer = require('./keyboard-manager-slimmer-879ff4f3.js');
16
16
  const dynamicSlimmer = require('./dynamic-slimmer-f31fdfd7.js');
17
- const elementAppenderSlimmer = require('./element-appender-slimmer-dedd3a34.js');
17
+ const elementAppenderSlimmer = require('./element-appender-slimmer-52c2b455.js');
18
18
  const ariaDialogFocusableTrapSlimmer = require('./aria-dialog-focusable-trap-slimmer-5507f917.js');
19
19
  const index$1 = require('./index-592b4052.js');
20
20
  const array = require('./array-249289f2.js');
@@ -11,9 +11,9 @@ exports.FrameworkEnum = void 0;
11
11
  /** The VegaEnvManager class manages vega environment parameters. */
12
12
  class VegaEnvManager {
13
13
  constructor() {
14
- // The `2.82.0` will be replaced to a version string when running publish script.
14
+ // The `2.83.0` will be replaced to a version string when running publish script.
15
15
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
16
- this.vegaVersion = '2.82.0';
16
+ this.vegaVersion = '2.83.0';
17
17
  this.framework = exports.FrameworkEnum.VanillaJs;
18
18
  }
19
19
  /**
@@ -58,7 +58,7 @@ class PageSelectorMobileRenderer extends globalSlimmerRegistry.VegaSlimmer {
58
58
  index.h("vega-form", { ref: (ref) => {
59
59
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaFormSubmit, this.handleChange);
60
60
  } },
61
- index.h("vega-input", { "data-vega-form": "pageSelectorMobile_goTo", size: "small", showClearIcon: false, style: { width: '54px' }, maskConfig: {
61
+ index.h("vega-input", { "data-vega-form": "pageSelectorMobile_goTo", size: "small", autocomplete: "on", showClearIcon: false, style: { width: '54px' }, maskConfig: {
62
62
  type: 'number',
63
63
  options: {
64
64
  allowNegative: false,
@@ -60,7 +60,7 @@ const VegaPaginationGoTo = ({ onChange, pageCount, translationSlimmer, }) => {
60
60
  ref: (ref) => {
61
61
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaFormSubmit, handleChange);
62
62
  } },
63
- index.h("vega-input", { "data-vega-form": "paginationGoTo", type: "number", size: "small", showClearIcon: false, style: { width: '60px' }, maskConfig: {
63
+ index.h("vega-input", { "data-vega-form": "paginationGoTo", type: "number", size: "small", autocomplete: "on", showClearIcon: false, style: { width: '60px' }, maskConfig: {
64
64
  type: 'number',
65
65
  options: {
66
66
  allowNegative: false,
@@ -10,7 +10,7 @@ const componentUsageRuntimeMetrics = require('./component-usage-runtime-metrics-
10
10
  const eventEmitSlimmer = require('./event-emit-slimmer-bcb458b2.js');
11
11
  const vegaEventId = require('./vega-event-id-c08ce3d3.js');
12
12
  const dynamicSlimmer = require('./dynamic-slimmer-f31fdfd7.js');
13
- const elementAppenderSlimmer = require('./element-appender-slimmer-dedd3a34.js');
13
+ const elementAppenderSlimmer = require('./element-appender-slimmer-52c2b455.js');
14
14
  const remoteInvocationRegistry = require('./remote-invocation-registry-fc22fdd0.js');
15
15
  const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-factory-9110cb94.js');
16
16
  const vegaInternalEventId = require('./vega-internal-event-id-87014e4f.js');
@@ -773,17 +773,16 @@ const VegaProgressTracker = class {
773
773
  */
774
774
  this.canClickStep = true;
775
775
  /**
776
- * When enabled, allows `current` to be set to `-1` to indicate
777
- * no highlighted/current step (e.g. all steps are pending or
778
- * the workflow has not started).
776
+ * When enabled, `current = -1` becomes a valid state that indicates
777
+ * no highlighted/current step (e.g. all steps are pending or the
778
+ * workflow has not started).
779
779
  *
780
- * Defaults to `false` to preserve backward-compatible behavior:
781
- * `current` is clamped to `[0, steps.length - 1]`.
780
+ * Two ways to enter this state:
781
+ * - Set the `current` prop to `-1`.
782
+ * - Call the `setCurrent(-1)` method.
782
783
  *
783
- * When enabled, `current = -1` is a valid state. The `prevStep()`
784
- * method still clamps at `0` — reaching `-1` is only possible
785
- * by explicitly setting `current = -1` via the prop or
786
- * `setCurrent(-1)`.
784
+ * @VegaHint `prevStep()` still clamps at `0` and will not take `current`
785
+ * into `-1`.
787
786
  *
788
787
  * @vegaVersion 2.82.0
789
788
  */
@@ -15,7 +15,7 @@ const accessibility = require('./accessibility-bfa227f6.js');
15
15
  const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-factory-9110cb94.js');
16
16
  const vegaEventId = require('./vega-event-id-c08ce3d3.js');
17
17
  const typeGuard = require('./type-guard-3ec852d7.js');
18
- const dtoRendererManager = require('./dto-renderer-manager-ae5fcbba.js');
18
+ const dtoRendererManager = require('./dto-renderer-manager-7eb5c5ce.js');
19
19
  const vegaInternalEventId = require('./vega-internal-event-id-87014e4f.js');
20
20
  const tryGetDocument = require('./try-get-document-c0ebd39a.js');
21
21
  const vegaNonceManager = require('./vega-nonce-manager-df69d3ed.js');