@carbon/ibmdotcom-web-components 2.34.0 → 2.35.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 (41) hide show
  1. package/dist/dotcom-shell.js +1 -1
  2. package/dist/dotcom-shell.min.js +5 -5
  3. package/dist/ibmdotcom-web-components-dotcom-shell.js +1 -1
  4. package/dist/ibmdotcom-web-components-dotcom-shell.min.js +5 -5
  5. package/dist/{index-9364f006.js → index-4046820a.js} +4 -4
  6. package/dist/{index-476bb378.js → index-ccf47ae7.js} +7 -7
  7. package/dist/{left-nav-menu-66719baf.js → left-nav-menu-1778be74.js} +5 -5
  8. package/dist/{left-nav-menu-category-heading-48ca15b6.js → left-nav-menu-category-heading-9939b780.js} +5 -5
  9. package/dist/{left-nav-menu-category-heading-941c2902.js → left-nav-menu-category-heading-b23d7129.js} +1 -1
  10. package/dist/{left-nav-menu-00a7861a.js → left-nav-menu-eceb36da.js} +1 -1
  11. package/dist/{left-nav-menu-item-0c1b842c.js → left-nav-menu-item-0f079ba8.js} +1 -1
  12. package/dist/{left-nav-menu-item-4a05d057.js → left-nav-menu-item-a5470d1f.js} +5 -5
  13. package/dist/{left-nav-menu-section-71ac2076.js → left-nav-menu-section-721d4f30.js} +1 -1
  14. package/dist/{left-nav-menu-section-ee4784c7.js → left-nav-menu-section-e142e371.js} +5 -5
  15. package/dist/{left-nav-overlay-9492a908.js → left-nav-overlay-14c5100d.js} +1 -1
  16. package/dist/{left-nav-overlay-9333bf00.js → left-nav-overlay-6e6a4779.js} +5 -5
  17. package/dist/{megamenu-category-group-65101652.js → megamenu-category-group-4dbf5c33.js} +5 -5
  18. package/dist/{megamenu-category-group-24d990b2.js → megamenu-category-group-5221cc32.js} +1 -1
  19. package/dist/{megamenu-category-group-copy-694c54c7.js → megamenu-category-group-copy-849df575.js} +5 -5
  20. package/dist/{megamenu-category-group-copy-bcc2405f.js → megamenu-category-group-copy-8951122b.js} +1 -1
  21. package/dist/{megamenu-category-heading-f32a371d.js → megamenu-category-heading-a1268cb2.js} +1 -1
  22. package/dist/{megamenu-category-heading-4f5b35a1.js → megamenu-category-heading-b2fe8c9d.js} +5 -5
  23. package/dist/{megamenu-category-link-2d72586e.js → megamenu-category-link-356bdb9e.js} +9 -9
  24. package/dist/{megamenu-category-link-a388b7f7.js → megamenu-category-link-bfc83216.js} +1 -1
  25. package/dist/{megamenu-category-link-group-76e66c78.js → megamenu-category-link-group-1b78b889.js} +5 -5
  26. package/dist/{megamenu-category-link-group-6f6f7853.js → megamenu-category-link-group-378d3822.js} +1 -1
  27. package/dist/{megamenu-left-navigation-a0602dca.js → megamenu-left-navigation-0570753a.js} +1 -1
  28. package/dist/{megamenu-left-navigation-f4fad22c.js → megamenu-left-navigation-9b9eb85d.js} +5 -5
  29. package/dist/{megamenu-overlay-b4e2b3bb.js → megamenu-overlay-6696988b.js} +5 -5
  30. package/dist/{megamenu-overlay-a7f97ecf.js → megamenu-overlay-ea82d047.js} +1 -1
  31. package/dist/{megamenu-tab-5e7341e0.js → megamenu-tab-d7b95e9c.js} +1 -1
  32. package/dist/{megamenu-tab-01b7f34c.js → megamenu-tab-f1e08b5e.js} +5 -5
  33. package/es/components/pricing-table/pricing-table.d.ts +4 -8
  34. package/es/components/pricing-table/pricing-table.js +24 -1
  35. package/es/components/pricing-table/pricing-table.js.map +1 -1
  36. package/es/components/pricing-table/utils.d.ts +1 -1
  37. package/es/components/pricing-table/utils.js +27 -2
  38. package/es/components/pricing-table/utils.js.map +1 -1
  39. package/es/internal/vendor/@carbon/ibmdotcom-utilities/utilities/settings/settings.js +2 -2
  40. package/lib/internal/vendor/@carbon/ibmdotcom-utilities/utilities/settings/settings.js +2 -2
  41. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"pricing-table.js","names":["html","property","HostListenerMixin","HostListener","settings","StableSelectorMixin","C4DStructuredList","styles","C4DPricingTableHeaderCell","C4DPricingTableHead","C4DPricingTableHeaderRow","carbonElement","customElement","prefix","stablePrefix","c4dPrefix","C4DPricingTable","_decorate","_initialize","_HostListenerMixin","constructor","args","F","d","kind","decorators","reflect","attribute","key","value","_getHeaderElements","head","undefined","headerRow","headerCells","querySelector","Array","from","children","_renderHighlightLabel","highlightLabel","element","ownerDocument","createElement","innerText","_unhighlightCells","cells","highlightClass","forEach","cell","_cell$querySelector","classList","remove","style","marginTop","_highlightCells","add","firstCell","prepend","_setHighlightGap","_this$shadowRoot","wrapper","shadowRoot","getElementById","wrapperId","then","highlightGap","getBoundingClientRect","height","catch","updated","highlightColumn","querySelectorAll","connectedCallback","_newChildObserver","observe","childList","subtree","attributes","_resetIntersectionObserver","_superPropGet","disconnectedCallback","renderInner","sentinelClass","_t","_","static","eventSlotChange"],"sources":["components/pricing-table/pricing-table.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2022, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport HostListenerMixin from '@carbon/web-components/es/globals/mixins/host-listener.js';\nimport HostListener from '@carbon/web-components/es/globals/decorators/host-listener.js';\nimport settings from '@carbon/ibmdotcom-utilities/es/utilities/settings/settings.js';\nimport StableSelectorMixin from '../../globals/mixins/stable-selector';\nimport C4DStructuredList from '../structured-list/structured-list';\nimport styles from './pricing-table.scss';\nimport C4DPricingTableHeaderCell from './pricing-table-header-cell';\nimport C4DPricingTableHighlightLabel from './pricing-table-highlight-label';\nimport C4DPricingTableHead from './pricing-table-head';\nimport C4DPricingTableHeaderRow from './pricing-table-header-row';\nimport { carbonElement as customElement } from '@carbon/web-components/es/globals/decorators/carbon-element.js';\n\nconst { prefix, stablePrefix: c4dPrefix } = settings;\n\n/**\n * @element c4d-pricing-table\n * @csspart container - The table container. Usage `c4d-pricing-table::part(container)`\n * @csspart sentinel - A sentinel node. Usage `c4d-pricing-table::part(sentinel)`\n * @csspart start-sentinel - The start sentinel. Usage `c4d-pricing-table::part(start-sentinel)`\n * @csspart end-sentinel - The end sentinel. Usage `c4d-pricing-table::part(end-sentinel)`\n */\n\n@customElement(`${c4dPrefix}-pricing-table`)\nclass C4DPricingTable extends HostListenerMixin(\n StableSelectorMixin(C4DStructuredList)\n) {\n @property({ reflect: true, attribute: 'highlight-column' })\n highlightColumn?: number;\n\n @property({ reflect: true, attribute: 'highlight-label' })\n highlightLabel?: string;\n\n @property()\n highlightClass = 'highlighted';\n\n @property()\n highlightGap = 0;\n\n /**\n * This table's C4DPricingTableHead node.\n */\n public head?: C4DPricingTableHead;\n\n /**\n * This table's C4DPricingTableHeaderRow node.\n */\n public headerRow?: C4DPricingTableHeaderRow;\n\n /**\n * This table's C4DPricingTableHeaderCell nodes.\n */\n public headerCells?: C4DPricingTableHeaderCell[];\n\n /**\n * Collect and store references to current header elements.\n */\n protected _getHeaderElements() {\n this.head = undefined;\n this.headerRow = undefined;\n this.headerCells = undefined;\n\n const head = this.querySelector(`${c4dPrefix}-pricing-table-head`);\n if (head instanceof C4DPricingTableHead) {\n this.head = head;\n }\n\n const headerRow = head?.querySelector(\n `${c4dPrefix}-pricing-table-header-row`\n );\n if (headerRow instanceof C4DPricingTableHeaderRow) {\n this.headerRow = headerRow;\n this.headerCells = Array.from(\n headerRow.children\n ) as C4DPricingTableHeaderCell[];\n }\n }\n\n protected _renderHighlightLabel(): C4DPricingTableHighlightLabel {\n const { highlightLabel } = this;\n const element = this.ownerDocument.createElement(\n `${c4dPrefix}-pricing-table-highlight-label`\n ) as C4DPricingTableHighlightLabel;\n element.innerText = highlightLabel || '';\n return element;\n }\n\n protected _unhighlightCells(cells: NodeListOf<Element>): void {\n const { highlightClass } = this;\n cells.forEach((cell) => {\n cell.classList.remove(highlightClass);\n cell\n .querySelector(`${c4dPrefix}-pricing-table-highlight-label`)\n ?.remove();\n this.style.marginTop = '';\n });\n }\n\n protected _highlightCells(cells: NodeListOf<Element>): void {\n const { highlightLabel, highlightClass } = this;\n cells.forEach((cell) => cell.classList.add(highlightClass));\n if (highlightLabel) {\n const firstCell = cells[0];\n if (firstCell instanceof C4DPricingTableHeaderCell) {\n firstCell.prepend(this._renderHighlightLabel());\n }\n this._setHighlightGap();\n }\n }\n\n protected _setHighlightGap(): void {\n const wrapper =\n this.shadowRoot?.getElementById(C4DStructuredList.wrapperId) || this;\n (async () => {\n return this.querySelector(`${c4dPrefix}-pricing-table-highlight-label`);\n })()\n .then((value) => {\n this.highlightGap = value?.getBoundingClientRect().height || 0;\n wrapper.style.marginTop = `${this.highlightGap}px`;\n })\n .catch(() => {\n wrapper.style.marginTop = '';\n });\n }\n\n /**\n * Host listener for updating header element references when cells are\n * updated.\n *\n * @protected\n */\n @HostListener('document:eventHeaderRowSlotchange')\n protected _handleHeaderRowSlotChange = () => {\n this._getHeaderElements();\n };\n\n updated(): void {\n const { highlightColumn } = this;\n\n this._getHeaderElements();\n\n if (highlightColumn) {\n this._unhighlightCells(\n this.querySelectorAll(`\n ${c4dPrefix}-pricing-table-cell,\n ${c4dPrefix}-pricing-table-header-cell`)\n );\n this._highlightCells(\n this.querySelectorAll(`\n ${c4dPrefix}-pricing-table-cell:nth-child(${highlightColumn}),\n ${c4dPrefix}-pricing-table-header-cell:nth-child(${highlightColumn})\n `)\n );\n }\n }\n\n connectedCallback() {\n this._newChildObserver.observe(this, {\n childList: true,\n subtree: true,\n attributes: false,\n });\n\n this._resetIntersectionObserver();\n super.connectedCallback();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n renderInner() {\n const { sentinelClass } = this.constructor as typeof C4DPricingTable;\n\n return html`\n <section\n id=\"section\"\n class=\"${`${prefix}--structured-list`}\"\n part=\"container\">\n <span\n class=\"${sentinelClass}\"\n id=\"start-sentinel\"\n part=\"sentinel start-sentinel\"></span>\n <slot></slot>\n <span\n class=\"${sentinelClass}\"\n id=\"end-sentinel\"\n part=\"sentinel end-sentinel\"></span>\n </section>\n `;\n }\n\n static get stableSelector() {\n return `${c4dPrefix}--pricing-table`;\n }\n\n /**\n * The name of the custom event captured when the header row's slot changes.\n */\n static get eventHeaderRowSlotchange() {\n return C4DPricingTableHeaderRow.eventSlotChange;\n }\n\n static get sentinelClass() {\n return `${c4dPrefix}-pricing-table-sentinel`;\n }\n\n static get cellSelector() {\n return `${c4dPrefix}-pricing-table-cell, ${c4dPrefix}-pricing-table-header-cell`;\n }\n\n static styles = styles;\n}\n\nexport default C4DPricingTable;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"pricing-table.js","names":["html","property","HostListenerMixin","HostListener","settings","StableSelectorMixin","C4DStructuredList","styles","C4DPricingTableHeaderCell","C4DPricingTableHead","C4DPricingTableHeaderRow","carbonElement","customElement","prefix","stablePrefix","c4dPrefix","C4DPricingTable","_decorate","_initialize","_HostListenerMixin","constructor","args","F","d","kind","decorators","reflect","attribute","key","value","_getHeaderElements","head","undefined","headerRow","headerCells","querySelector","Array","from","children","_renderHighlightLabel","highlightLabel","element","ownerDocument","createElement","innerText","_unhighlightCells","cells","highlightClass","forEach","cell","_cell$querySelector","classList","remove","style","marginTop","_highlightCells","add","firstCell","prepend","_setHighlightGap","_this$shadowRoot","wrapper","shadowRoot","getElementById","wrapperId","then","highlightGap","getBoundingClientRect","height","catch","setAPIPricingTableWidth","parentHasApiCall","closest","replaceColSpanVars","styleAttr","getAttribute","newStyle","replace","setAttribute","updated","highlightColumn","querySelectorAll","connectedCallback","_newChildObserver","observe","childList","subtree","attributes","_resetIntersectionObserver","_superPropGet","disconnectedCallback","renderInner","sentinelClass","_t","_","static","eventSlotChange"],"sources":["components/pricing-table/pricing-table.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2022, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport HostListenerMixin from '@carbon/web-components/es/globals/mixins/host-listener.js';\nimport HostListener from '@carbon/web-components/es/globals/decorators/host-listener.js';\nimport settings from '@carbon/ibmdotcom-utilities/es/utilities/settings/settings.js';\nimport StableSelectorMixin from '../../globals/mixins/stable-selector';\nimport C4DStructuredList from '../structured-list/structured-list';\nimport styles from './pricing-table.scss';\nimport C4DPricingTableHeaderCell from './pricing-table-header-cell';\nimport C4DPricingTableHighlightLabel from './pricing-table-highlight-label';\nimport C4DPricingTableHead from './pricing-table-head';\nimport C4DPricingTableHeaderRow from './pricing-table-header-row';\nimport { carbonElement as customElement } from '@carbon/web-components/es/globals/decorators/carbon-element.js';\n\nconst { prefix, stablePrefix: c4dPrefix } = settings;\n\n/**\n * @element c4d-pricing-table\n * @csspart container - The table container. Usage `c4d-pricing-table::part(container)`\n * @csspart sentinel - A sentinel node. Usage `c4d-pricing-table::part(sentinel)`\n * @csspart start-sentinel - The start sentinel. Usage `c4d-pricing-table::part(start-sentinel)`\n * @csspart end-sentinel - The end sentinel. Usage `c4d-pricing-table::part(end-sentinel)`\n */\n\n@customElement(`${c4dPrefix}-pricing-table`)\nclass C4DPricingTable extends HostListenerMixin(\n StableSelectorMixin(C4DStructuredList)\n) {\n @property({ reflect: true, attribute: 'highlight-column' })\n highlightColumn?: number;\n\n @property({ reflect: true, attribute: 'highlight-label' })\n highlightLabel?: string;\n\n @property()\n highlightClass = 'highlighted';\n\n @property()\n highlightGap = 0;\n\n /**\n * This table's C4DPricingTableHead node.\n */\n public head?: C4DPricingTableHead;\n\n /**\n * This table's C4DPricingTableHeaderRow node.\n */\n public headerRow?: C4DPricingTableHeaderRow;\n\n /**\n * This table's C4DPricingTableHeaderCell nodes.\n */\n public headerCells?: C4DPricingTableHeaderCell[];\n\n /**\n * Collect and store references to current header elements.\n */\n protected _getHeaderElements() {\n this.head = undefined;\n this.headerRow = undefined;\n this.headerCells = undefined;\n\n const head = this.querySelector(`${c4dPrefix}-pricing-table-head`);\n if (head instanceof C4DPricingTableHead) {\n this.head = head;\n }\n\n const headerRow = head?.querySelector(\n `${c4dPrefix}-pricing-table-header-row`\n );\n if (headerRow instanceof C4DPricingTableHeaderRow) {\n this.headerRow = headerRow;\n this.headerCells = Array.from(\n headerRow.children\n ) as C4DPricingTableHeaderCell[];\n }\n }\n\n protected _renderHighlightLabel(): C4DPricingTableHighlightLabel {\n const { highlightLabel } = this;\n const element = this.ownerDocument.createElement(\n `${c4dPrefix}-pricing-table-highlight-label`\n ) as C4DPricingTableHighlightLabel;\n element.innerText = highlightLabel || '';\n return element;\n }\n\n protected _unhighlightCells(cells: NodeListOf<Element>): void {\n const { highlightClass } = this;\n cells.forEach((cell) => {\n cell.classList.remove(highlightClass);\n cell\n .querySelector(`${c4dPrefix}-pricing-table-highlight-label`)\n ?.remove();\n this.style.marginTop = '';\n });\n }\n\n protected _highlightCells(cells: NodeListOf<Element>): void {\n const { highlightLabel, highlightClass } = this;\n cells.forEach((cell) => cell.classList.add(highlightClass));\n if (highlightLabel) {\n const firstCell = cells[0];\n if (firstCell instanceof C4DPricingTableHeaderCell) {\n firstCell.prepend(this._renderHighlightLabel());\n }\n this._setHighlightGap();\n }\n }\n\n protected _setHighlightGap(): void {\n const wrapper =\n this.shadowRoot?.getElementById(C4DStructuredList.wrapperId) || this;\n (async () => {\n return this.querySelector(`${c4dPrefix}-pricing-table-highlight-label`);\n })()\n .then((value) => {\n this.highlightGap = value?.getBoundingClientRect().height || 0;\n wrapper.style.marginTop = `${this.highlightGap}px`;\n })\n .catch(() => {\n wrapper.style.marginTop = '';\n });\n }\n\n // Adjusting the col span of the pricing table that comes from the API call\n setAPIPricingTableWidth() {\n const parentHasApiCall = this.closest(\n 'div.tableProductPrice[isapicall=\"Api\"]'\n );\n\n if (parentHasApiCall) {\n this.replaceColSpanVars(this);\n }\n }\n\n replaceColSpanVars(element) {\n const styleAttr = element.getAttribute('style');\n if (!styleAttr) {\n return;\n }\n\n const newStyle = styleAttr.replace(\n /--col-span-(\\d+)\\s*:/g,\n '--col-span-lg-$1:'\n );\n\n element.setAttribute('style', newStyle);\n }\n\n /**\n * Host listener for updating header element references when cells are\n * updated.\n *\n * @protected\n */\n @HostListener('document:eventHeaderRowSlotchange')\n protected _handleHeaderRowSlotChange = () => {\n this._getHeaderElements();\n };\n\n updated(): void {\n const { highlightColumn } = this;\n\n this._getHeaderElements();\n\n if (highlightColumn) {\n this._unhighlightCells(\n this.querySelectorAll(`\n ${c4dPrefix}-pricing-table-cell,\n ${c4dPrefix}-pricing-table-header-cell`)\n );\n this._highlightCells(\n this.querySelectorAll(`\n ${c4dPrefix}-pricing-table-cell:nth-child(${highlightColumn}),\n ${c4dPrefix}-pricing-table-header-cell:nth-child(${highlightColumn})\n `)\n );\n }\n }\n\n connectedCallback() {\n this._newChildObserver.observe(this, {\n childList: true,\n subtree: true,\n attributes: false,\n });\n\n this._resetIntersectionObserver();\n super.connectedCallback();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n renderInner() {\n const { sentinelClass } = this.constructor as typeof C4DPricingTable;\n\n this.setAPIPricingTableWidth();\n\n return html`\n <section\n id=\"section\"\n class=\"${`${prefix}--structured-list`}\"\n part=\"container\">\n <span\n class=\"${sentinelClass}\"\n id=\"start-sentinel\"\n part=\"sentinel start-sentinel\"></span>\n <slot></slot>\n <span\n class=\"${sentinelClass}\"\n id=\"end-sentinel\"\n part=\"sentinel end-sentinel\"></span>\n </section>\n `;\n }\n\n static get stableSelector() {\n return `${c4dPrefix}--pricing-table`;\n }\n\n /**\n * The name of the custom event captured when the header row's slot changes.\n */\n static get eventHeaderRowSlotchange() {\n return C4DPricingTableHeaderRow.eventSlotChange;\n }\n\n static get sentinelClass() {\n return `${c4dPrefix}-pricing-table-sentinel`;\n }\n\n static get cellSelector() {\n return `${c4dPrefix}-pricing-table-cell, ${c4dPrefix}-pricing-table-header-cell`;\n }\n\n static styles = styles;\n}\n\nexport default C4DPricingTable;\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2022, 2023
4
+ * Copyright IBM Corp. 2022, 2025
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1,12 +1,28 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2022, 2023
4
+ * Copyright IBM Corp. 2022, 2025
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
9
 
10
+ import { breakpoints as BXBreakpoints } from '@carbon/layout';
11
+
12
+ /**
13
+ * Converts REM to PX
14
+ * Ex: '2rem' will output '32'
15
+ */
16
+ const remToPx = rem => rem.slice(0, -3) * parseFloat(getComputedStyle(document.documentElement).fontSize);
17
+
18
+ /**
19
+ * Checks if the screen resolution is Large or Greater
20
+ */
21
+ function isLargeOrGreater() {
22
+ const windowWidth = window.innerWidth;
23
+ return windowWidth >= remToPx(BXBreakpoints.lg.width);
24
+ }
25
+
10
26
  /**
11
27
  * Sets a CSS custom property on the given row that indicates the default
12
28
  * number of columns each of that row's cells row should span.
@@ -15,7 +31,9 @@ export const setColumnWidth = row => {
15
31
  const columnCount = row.children.length;
16
32
  let defaultColumnWidth;
17
33
  if (columnCount >= 6) {
18
- defaultColumnWidth = '2';
34
+ //If we have more 5 columns, we set 4 as the default column width in Large and greater resolutions
35
+ // to enable scroll and avoid content being squished by narrow coluns
36
+ defaultColumnWidth = isLargeOrGreater() ? '4' : '2';
19
37
  } else if (columnCount >= 4) {
20
38
  defaultColumnWidth = '3';
21
39
  } else {
@@ -23,6 +41,13 @@ export const setColumnWidth = row => {
23
41
  }
24
42
  row.style.setProperty('--default-cols', defaultColumnWidth);
25
43
  };
44
+ let resizeTimeout;
45
+ window.addEventListener('resize', () => {
46
+ clearTimeout(resizeTimeout);
47
+ resizeTimeout = window.setTimeout(() => {
48
+ document.querySelectorAll('c4d-pricing-table-header-row, c4d-pricing-table-row').forEach(row => setColumnWidth(row));
49
+ }, 150);
50
+ });
26
51
 
27
52
  /**
28
53
  * Animates an element hidden.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["setColumnWidth","row","columnCount","children","length","defaultColumnWidth","style","setProperty","slideHidden","element","height","scrollHeight","dataset","originalHeight","requestAnimationFrame","opacity","slideUnhidden","addEventListener","once","convertStyleToObject","styleString","split","reduce","acc","styleRule","pair","trim"],"sources":["components/pricing-table/utils.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2022, 2023\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport C4DPricingTableHeaderRow from './pricing-table-header-row';\nimport C4DPricingTableRow from './pricing-table-row';\n\n/**\n * Sets a CSS custom property on the given row that indicates the default\n * number of columns each of that row's cells row should span.\n */\nexport const setColumnWidth = (\n row: C4DPricingTableHeaderRow | C4DPricingTableRow\n) => {\n const columnCount = row.children.length;\n let defaultColumnWidth: string;\n if (columnCount >= 6) {\n defaultColumnWidth = '2';\n } else if (columnCount >= 4) {\n defaultColumnWidth = '3';\n } else {\n defaultColumnWidth = '4';\n }\n row.style.setProperty('--default-cols', defaultColumnWidth);\n};\n\n/**\n * Animates an element hidden.\n */\nexport const slideHidden = (element: HTMLElement) => {\n const height = element.scrollHeight;\n\n // Store height values set by other scripts.\n if (element.style.height) {\n element.dataset.originalHeight = element.style.height;\n }\n\n requestAnimationFrame(() => {\n element.style.height = `${height}px`;\n element.style.opacity = '1';\n\n requestAnimationFrame(() => {\n element.style.height = '0px';\n element.style.opacity = '0';\n });\n });\n};\n\n/**\n * Animates an element visible.\n */\nexport const slideUnhidden = (element: HTMLElement) => {\n const { originalHeight } = element.dataset;\n\n requestAnimationFrame(() => {\n element.style.height = originalHeight || `${element.scrollHeight}px`;\n element.style.opacity = '1';\n });\n\n element.addEventListener(\n 'transitionend',\n () => {\n element.style.height = originalHeight || '';\n element.style.opacity = '';\n },\n { once: true }\n );\n};\n\n/**\n * Splits a style attribute string into an object full of properties and values.\n */\nexport const convertStyleToObject = (styleString: string): object => {\n return styleString.split(';').reduce((acc, styleRule) => {\n if (styleRule !== '') {\n const pair = styleRule.split(':');\n acc[pair[0].trim()] = pair[1].trim();\n }\n return acc;\n }, {});\n};\n\nexport default setColumnWidth;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA,OAAO,MAAMA,cAAc,GACzBC,GAAkD,IAC/C;EACH,MAAMC,WAAW,GAAGD,GAAG,CAACE,QAAQ,CAACC,MAAM;EACvC,IAAIC,kBAA0B;EAC9B,IAAIH,WAAW,IAAI,CAAC,EAAE;IACpBG,kBAAkB,GAAG,GAAG;EAC1B,CAAC,MAAM,IAAIH,WAAW,IAAI,CAAC,EAAE;IAC3BG,kBAAkB,GAAG,GAAG;EAC1B,CAAC,MAAM;IACLA,kBAAkB,GAAG,GAAG;EAC1B;EACAJ,GAAG,CAACK,KAAK,CAACC,WAAW,CAAC,gBAAgB,EAAEF,kBAAkB,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMG,WAAW,GAAIC,OAAoB,IAAK;EACnD,MAAMC,MAAM,GAAGD,OAAO,CAACE,YAAY;;EAEnC;EACA,IAAIF,OAAO,CAACH,KAAK,CAACI,MAAM,EAAE;IACxBD,OAAO,CAACG,OAAO,CAACC,cAAc,GAAGJ,OAAO,CAACH,KAAK,CAACI,MAAM;EACvD;EAEAI,qBAAqB,CAAC,MAAM;IAC1BL,OAAO,CAACH,KAAK,CAACI,MAAM,GAAG,GAAGA,MAAM,IAAI;IACpCD,OAAO,CAACH,KAAK,CAACS,OAAO,GAAG,GAAG;IAE3BD,qBAAqB,CAAC,MAAM;MAC1BL,OAAO,CAACH,KAAK,CAACI,MAAM,GAAG,KAAK;MAC5BD,OAAO,CAACH,KAAK,CAACS,OAAO,GAAG,GAAG;IAC7B,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIP,OAAoB,IAAK;EACrD,MAAM;IAAEI;EAAe,CAAC,GAAGJ,OAAO,CAACG,OAAO;EAE1CE,qBAAqB,CAAC,MAAM;IAC1BL,OAAO,CAACH,KAAK,CAACI,MAAM,GAAGG,cAAc,IAAI,GAAGJ,OAAO,CAACE,YAAY,IAAI;IACpEF,OAAO,CAACH,KAAK,CAACS,OAAO,GAAG,GAAG;EAC7B,CAAC,CAAC;EAEFN,OAAO,CAACQ,gBAAgB,CACtB,eAAe,EACf,MAAM;IACJR,OAAO,CAACH,KAAK,CAACI,MAAM,GAAGG,cAAc,IAAI,EAAE;IAC3CJ,OAAO,CAACH,KAAK,CAACS,OAAO,GAAG,EAAE;EAC5B,CAAC,EACD;IAAEG,IAAI,EAAE;EAAK,CACf,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAIC,WAAmB,IAAa;EACnE,OAAOA,WAAW,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,SAAS,KAAK;IACvD,IAAIA,SAAS,KAAK,EAAE,EAAE;MACpB,MAAMC,IAAI,GAAGD,SAAS,CAACH,KAAK,CAAC,GAAG,CAAC;MACjCE,GAAG,CAACE,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;IACtC;IACA,OAAOH,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAED,eAAevB,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["breakpoints","BXBreakpoints","remToPx","rem","slice","parseFloat","getComputedStyle","document","documentElement","fontSize","isLargeOrGreater","windowWidth","window","innerWidth","lg","width","setColumnWidth","row","columnCount","children","length","defaultColumnWidth","style","setProperty","resizeTimeout","addEventListener","clearTimeout","setTimeout","querySelectorAll","forEach","slideHidden","element","height","scrollHeight","dataset","originalHeight","requestAnimationFrame","opacity","slideUnhidden","once","convertStyleToObject","styleString","split","reduce","acc","styleRule","pair","trim"],"sources":["components/pricing-table/utils.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2022, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport C4DPricingTableHeaderRow from './pricing-table-header-row';\nimport C4DPricingTableRow from './pricing-table-row';\nimport { breakpoints as BXBreakpoints } from '@carbon/layout';\n\n/**\n * Converts REM to PX\n * Ex: '2rem' will output '32'\n */\nconst remToPx = (rem) =>\n rem.slice(0, -3) *\n parseFloat(getComputedStyle(document.documentElement).fontSize);\n\n/**\n * Checks if the screen resolution is Large or Greater\n */\nfunction isLargeOrGreater() {\n const windowWidth = window.innerWidth;\n\n return windowWidth >= remToPx(BXBreakpoints.lg.width);\n}\n\n/**\n * Sets a CSS custom property on the given row that indicates the default\n * number of columns each of that row's cells row should span.\n */\nexport const setColumnWidth = (\n row: C4DPricingTableHeaderRow | C4DPricingTableRow\n) => {\n const columnCount = row.children.length;\n let defaultColumnWidth: string;\n if (columnCount >= 6) {\n //If we have more 5 columns, we set 4 as the default column width in Large and greater resolutions\n // to enable scroll and avoid content being squished by narrow coluns\n defaultColumnWidth = isLargeOrGreater() ? '4' : '2';\n } else if (columnCount >= 4) {\n defaultColumnWidth = '3';\n } else {\n defaultColumnWidth = '4';\n }\n row.style.setProperty('--default-cols', defaultColumnWidth);\n};\n\nlet resizeTimeout: number;\nwindow.addEventListener('resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = window.setTimeout(() => {\n document\n .querySelectorAll<C4DPricingTableHeaderRow | C4DPricingTableRow>(\n 'c4d-pricing-table-header-row, c4d-pricing-table-row'\n )\n .forEach((row) => setColumnWidth(row));\n }, 150);\n});\n\n/**\n * Animates an element hidden.\n */\nexport const slideHidden = (element: HTMLElement) => {\n const height = element.scrollHeight;\n\n // Store height values set by other scripts.\n if (element.style.height) {\n element.dataset.originalHeight = element.style.height;\n }\n\n requestAnimationFrame(() => {\n element.style.height = `${height}px`;\n element.style.opacity = '1';\n\n requestAnimationFrame(() => {\n element.style.height = '0px';\n element.style.opacity = '0';\n });\n });\n};\n\n/**\n * Animates an element visible.\n */\nexport const slideUnhidden = (element: HTMLElement) => {\n const { originalHeight } = element.dataset;\n\n requestAnimationFrame(() => {\n element.style.height = originalHeight || `${element.scrollHeight}px`;\n element.style.opacity = '1';\n });\n\n element.addEventListener(\n 'transitionend',\n () => {\n element.style.height = originalHeight || '';\n element.style.opacity = '';\n },\n { once: true }\n );\n};\n\n/**\n * Splits a style attribute string into an object full of properties and values.\n */\nexport const convertStyleToObject = (styleString: string): object => {\n return styleString.split(';').reduce((acc, styleRule) => {\n if (styleRule !== '') {\n const pair = styleRule.split(':');\n acc[pair[0].trim()] = pair[1].trim();\n }\n return acc;\n }, {});\n};\n\nexport default setColumnWidth;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,WAAW,IAAIC,aAAa,QAAQ,gBAAgB;;AAE7D;AACA;AACA;AACA;AACA,MAAMC,OAAO,GAAIC,GAAG,IAClBA,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAChBC,UAAU,CAACC,gBAAgB,CAACC,QAAQ,CAACC,eAAe,CAAC,CAACC,QAAQ,CAAC;;AAEjE;AACA;AACA;AACA,SAASC,gBAAgBA,CAAA,EAAG;EAC1B,MAAMC,WAAW,GAAGC,MAAM,CAACC,UAAU;EAErC,OAAOF,WAAW,IAAIT,OAAO,CAACD,aAAa,CAACa,EAAE,CAACC,KAAK,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GACzBC,GAAkD,IAC/C;EACH,MAAMC,WAAW,GAAGD,GAAG,CAACE,QAAQ,CAACC,MAAM;EACvC,IAAIC,kBAA0B;EAC9B,IAAIH,WAAW,IAAI,CAAC,EAAE;IACpB;IACA;IACAG,kBAAkB,GAAGX,gBAAgB,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;EACrD,CAAC,MAAM,IAAIQ,WAAW,IAAI,CAAC,EAAE;IAC3BG,kBAAkB,GAAG,GAAG;EAC1B,CAAC,MAAM;IACLA,kBAAkB,GAAG,GAAG;EAC1B;EACAJ,GAAG,CAACK,KAAK,CAACC,WAAW,CAAC,gBAAgB,EAAEF,kBAAkB,CAAC;AAC7D,CAAC;AAED,IAAIG,aAAqB;AACzBZ,MAAM,CAACa,gBAAgB,CAAC,QAAQ,EAAE,MAAM;EACtCC,YAAY,CAACF,aAAa,CAAC;EAC3BA,aAAa,GAAGZ,MAAM,CAACe,UAAU,CAAC,MAAM;IACtCpB,QAAQ,CACLqB,gBAAgB,CACf,qDACF,CAAC,CACAC,OAAO,CAAEZ,GAAG,IAAKD,cAAc,CAACC,GAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,GAAG,CAAC;AACT,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMa,WAAW,GAAIC,OAAoB,IAAK;EACnD,MAAMC,MAAM,GAAGD,OAAO,CAACE,YAAY;;EAEnC;EACA,IAAIF,OAAO,CAACT,KAAK,CAACU,MAAM,EAAE;IACxBD,OAAO,CAACG,OAAO,CAACC,cAAc,GAAGJ,OAAO,CAACT,KAAK,CAACU,MAAM;EACvD;EAEAI,qBAAqB,CAAC,MAAM;IAC1BL,OAAO,CAACT,KAAK,CAACU,MAAM,GAAG,GAAGA,MAAM,IAAI;IACpCD,OAAO,CAACT,KAAK,CAACe,OAAO,GAAG,GAAG;IAE3BD,qBAAqB,CAAC,MAAM;MAC1BL,OAAO,CAACT,KAAK,CAACU,MAAM,GAAG,KAAK;MAC5BD,OAAO,CAACT,KAAK,CAACe,OAAO,GAAG,GAAG;IAC7B,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIP,OAAoB,IAAK;EACrD,MAAM;IAAEI;EAAe,CAAC,GAAGJ,OAAO,CAACG,OAAO;EAE1CE,qBAAqB,CAAC,MAAM;IAC1BL,OAAO,CAACT,KAAK,CAACU,MAAM,GAAGG,cAAc,IAAI,GAAGJ,OAAO,CAACE,YAAY,IAAI;IACpEF,OAAO,CAACT,KAAK,CAACe,OAAO,GAAG,GAAG;EAC7B,CAAC,CAAC;EAEFN,OAAO,CAACN,gBAAgB,CACtB,eAAe,EACf,MAAM;IACJM,OAAO,CAACT,KAAK,CAACU,MAAM,GAAGG,cAAc,IAAI,EAAE;IAC3CJ,OAAO,CAACT,KAAK,CAACe,OAAO,GAAG,EAAE;EAC5B,CAAC,EACD;IAAEE,IAAI,EAAE;EAAK,CACf,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAIC,WAAmB,IAAa;EACnE,OAAOA,WAAW,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,SAAS,KAAK;IACvD,IAAIA,SAAS,KAAK,EAAE,EAAE;MACpB,MAAMC,IAAI,GAAGD,SAAS,CAACH,KAAK,CAAC,GAAG,CAAC;MACjCE,GAAG,CAACE,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;IACtC;IACA,OAAOH,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAED,eAAe5B,cAAc","ignoreList":[]}
@@ -12,10 +12,10 @@
12
12
  * @type {object} Settings object
13
13
  * @property {string} [stablePrefix=c4d] stable prefix
14
14
  * @property {string} [prefix=cds] core Carbon prefix
15
- * Carbon for IBM.com v2.34.0',
15
+ * Carbon for IBM.com v2.35.0',
16
16
  */
17
17
  var settings = {
18
- version: 'Carbon for IBM.com v2.34.0',
18
+ version: 'Carbon for IBM.com v2.35.0',
19
19
  stablePrefix: 'c4d',
20
20
  prefix: 'cds'
21
21
  };
@@ -18,10 +18,10 @@ exports.default = void 0;
18
18
  * @type {object} Settings object
19
19
  * @property {string} [stablePrefix=c4d] stable prefix
20
20
  * @property {string} [prefix=cds] core Carbon prefix
21
- * Carbon for IBM.com v2.34.0',
21
+ * Carbon for IBM.com v2.35.0',
22
22
  */
23
23
  var settings = {
24
- version: 'Carbon for IBM.com v2.34.0',
24
+ version: 'Carbon for IBM.com v2.35.0',
25
25
  stablePrefix: 'c4d',
26
26
  prefix: 'cds'
27
27
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon/ibmdotcom-web-components",
3
- "version": "2.34.0",
3
+ "version": "2.35.0",
4
4
  "description": "Carbon for IBM.com Web Components",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
@@ -93,9 +93,9 @@
93
93
  "cypress:verify": "cypress verify"
94
94
  },
95
95
  "dependencies": {
96
- "@carbon/ibmdotcom-services": "2.34.0",
97
- "@carbon/ibmdotcom-styles": "2.34.0",
98
- "@carbon/ibmdotcom-utilities": "2.34.0",
96
+ "@carbon/ibmdotcom-services": "2.35.0",
97
+ "@carbon/ibmdotcom-styles": "2.35.0",
98
+ "@carbon/ibmdotcom-utilities": "2.35.0",
99
99
  "@carbon/layout": "11.27.0",
100
100
  "@carbon/motion": "11.24.0",
101
101
  "@carbon/styles": "1.65.0",
@@ -244,5 +244,5 @@
244
244
  "web-component-analyzer": "1.2.0-next.0",
245
245
  "webpack": "^4.46.0"
246
246
  },
247
- "gitHead": "be72e8d88da429b046a4039571fd12c540902cf5"
247
+ "gitHead": "0ff83beb9b8ce84c0a363556f375aef2a1df87b2"
248
248
  }