@patternfly/elements 2.3.1 → 2.4.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 (195) hide show
  1. package/custom-elements.json +4399 -699
  2. package/package.json +11 -1
  3. package/pf-accordion/BaseAccordion.js +155 -220
  4. package/pf-accordion/BaseAccordion.js.map +1 -1
  5. package/pf-accordion/BaseAccordionHeader.d.ts +1 -0
  6. package/pf-accordion/BaseAccordionHeader.js +69 -71
  7. package/pf-accordion/BaseAccordionHeader.js.map +1 -1
  8. package/pf-accordion/BaseAccordionPanel.js +2 -2
  9. package/pf-accordion/BaseAccordionPanel.js.map +1 -1
  10. package/pf-accordion/pf-accordion-header.js +9 -4
  11. package/pf-accordion/pf-accordion-header.js.map +1 -1
  12. package/pf-accordion/pf-accordion-panel.js +1 -1
  13. package/pf-accordion/pf-accordion-panel.js.map +1 -1
  14. package/pf-accordion/pf-accordion.js +1 -1
  15. package/pf-accordion/pf-accordion.js.map +1 -1
  16. package/pf-avatar/BaseAvatar.js +1 -1
  17. package/pf-avatar/BaseAvatar.js.map +1 -1
  18. package/pf-avatar/pf-avatar.js +1 -1
  19. package/pf-avatar/pf-avatar.js.map +1 -1
  20. package/pf-badge/BaseBadge.js +1 -1
  21. package/pf-badge/BaseBadge.js.map +1 -1
  22. package/pf-badge/pf-badge.js +1 -1
  23. package/pf-badge/pf-badge.js.map +1 -1
  24. package/pf-banner/README.md +60 -0
  25. package/pf-banner/pf-banner.css +96 -0
  26. package/pf-banner/pf-banner.d.ts +52 -0
  27. package/pf-banner/pf-banner.js +85 -0
  28. package/pf-banner/pf-banner.js.map +1 -0
  29. package/pf-button/BaseButton.js +17 -16
  30. package/pf-button/BaseButton.js.map +1 -1
  31. package/pf-button/pf-button.js +1 -1
  32. package/pf-button/pf-button.js.map +1 -1
  33. package/pf-card/BaseCard.css +2 -2
  34. package/pf-card/BaseCard.js +2 -2
  35. package/pf-card/BaseCard.js.map +1 -1
  36. package/pf-card/pf-card.css +4 -4
  37. package/pf-card/pf-card.js +2 -2
  38. package/pf-card/pf-card.js.map +1 -1
  39. package/pf-clipboard-copy/BaseClipboardCopy.js +1 -1
  40. package/pf-clipboard-copy/BaseClipboardCopy.js.map +1 -1
  41. package/pf-clipboard-copy/pf-clipboard-copy.js +36 -33
  42. package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
  43. package/pf-code-block/BaseCodeBlock.js +1 -1
  44. package/pf-code-block/BaseCodeBlock.js.map +1 -1
  45. package/pf-code-block/pf-code-block.js +14 -11
  46. package/pf-code-block/pf-code-block.js.map +1 -1
  47. package/pf-icon/BaseIcon.js +39 -41
  48. package/pf-icon/BaseIcon.js.map +1 -1
  49. package/pf-icon/pf-icon.js +2 -2
  50. package/pf-icon/pf-icon.js.map +1 -1
  51. package/pf-jump-links/pf-jump-links-item.js +17 -14
  52. package/pf-jump-links/pf-jump-links-item.js.map +1 -1
  53. package/pf-jump-links/pf-jump-links-list.js +1 -1
  54. package/pf-jump-links/pf-jump-links-list.js.map +1 -1
  55. package/pf-jump-links/pf-jump-links.js +37 -34
  56. package/pf-jump-links/pf-jump-links.js.map +1 -1
  57. package/pf-label/BaseLabel.js +1 -1
  58. package/pf-label/BaseLabel.js.map +1 -1
  59. package/pf-label/pf-label.js +2 -2
  60. package/pf-label/pf-label.js.map +1 -1
  61. package/pf-modal/pf-modal.js +46 -45
  62. package/pf-modal/pf-modal.js.map +1 -1
  63. package/pf-panel/pf-panel.js +7 -6
  64. package/pf-panel/pf-panel.js.map +1 -1
  65. package/pf-popover/pf-popover.d.ts +2 -2
  66. package/pf-popover/pf-popover.js +67 -55
  67. package/pf-popover/pf-popover.js.map +1 -1
  68. package/pf-progress/README.md +33 -0
  69. package/pf-progress/pf-progress.css +210 -0
  70. package/pf-progress/pf-progress.d.ts +111 -0
  71. package/pf-progress/pf-progress.js +218 -0
  72. package/pf-progress/pf-progress.js.map +1 -0
  73. package/pf-progress-stepper/pf-progress-step.js +11 -10
  74. package/pf-progress-stepper/pf-progress-step.js.map +1 -1
  75. package/pf-progress-stepper/pf-progress-stepper.js +16 -13
  76. package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
  77. package/pf-spinner/BaseSpinner.js +1 -1
  78. package/pf-spinner/BaseSpinner.js.map +1 -1
  79. package/pf-spinner/pf-spinner.js +1 -1
  80. package/pf-spinner/pf-spinner.js.map +1 -1
  81. package/pf-switch/BaseSwitch.js +44 -47
  82. package/pf-switch/BaseSwitch.js.map +1 -1
  83. package/pf-switch/pf-switch.js +1 -1
  84. package/pf-switch/pf-switch.js.map +1 -1
  85. package/pf-table/README.md +43 -0
  86. package/pf-table/pf-caption.css +9 -0
  87. package/pf-table/pf-caption.d.ts +14 -0
  88. package/pf-table/pf-caption.js +22 -0
  89. package/pf-table/pf-caption.js.map +1 -0
  90. package/pf-table/pf-table.css +223 -0
  91. package/pf-table/pf-table.d.ts +663 -0
  92. package/pf-table/pf-table.js +767 -0
  93. package/pf-table/pf-table.js.map +1 -0
  94. package/pf-table/pf-tbody.css +16 -0
  95. package/pf-table/pf-tbody.d.ts +15 -0
  96. package/pf-table/pf-tbody.js +26 -0
  97. package/pf-table/pf-tbody.js.map +1 -0
  98. package/pf-table/pf-td.css +105 -0
  99. package/pf-table/pf-td.d.ts +18 -0
  100. package/pf-table/pf-td.js +52 -0
  101. package/pf-table/pf-td.js.map +1 -0
  102. package/pf-table/pf-th.css +93 -0
  103. package/pf-table/pf-th.d.ts +27 -0
  104. package/pf-table/pf-th.js +96 -0
  105. package/pf-table/pf-th.js.map +1 -0
  106. package/pf-table/pf-thead.css +19 -0
  107. package/pf-table/pf-thead.d.ts +16 -0
  108. package/pf-table/pf-thead.js +37 -0
  109. package/pf-table/pf-thead.js.map +1 -0
  110. package/pf-table/pf-tr.css +87 -0
  111. package/pf-table/pf-tr.d.ts +34 -0
  112. package/pf-table/pf-tr.js +164 -0
  113. package/pf-table/pf-tr.js.map +1 -0
  114. package/pf-tabs/BaseTab.d.ts +3 -0
  115. package/pf-tabs/BaseTab.js +32 -31
  116. package/pf-tabs/BaseTab.js.map +1 -1
  117. package/pf-tabs/BaseTabPanel.js +11 -5
  118. package/pf-tabs/BaseTabPanel.js.map +1 -1
  119. package/pf-tabs/BaseTabs.js +116 -135
  120. package/pf-tabs/BaseTabs.js.map +1 -1
  121. package/pf-tabs/pf-tab-panel.js +1 -1
  122. package/pf-tabs/pf-tab-panel.js.map +1 -1
  123. package/pf-tabs/pf-tab.d.ts +1 -1
  124. package/pf-tabs/pf-tab.js +2 -2
  125. package/pf-tabs/pf-tab.js.map +1 -1
  126. package/pf-tabs/pf-tabs.d.ts +2 -0
  127. package/pf-tabs/pf-tabs.js +6 -2
  128. package/pf-tabs/pf-tabs.js.map +1 -1
  129. package/pf-text-input/README.md +9 -0
  130. package/pf-text-input/pf-text-input.css +261 -0
  131. package/pf-text-input/pf-text-input.d.ts +174 -0
  132. package/pf-text-input/pf-text-input.js +262 -0
  133. package/pf-text-input/pf-text-input.js.map +1 -0
  134. package/pf-tile/pf-tile.js +1 -1
  135. package/pf-tile/pf-tile.js.map +1 -1
  136. package/pf-timestamp/pf-timestamp.js +15 -10
  137. package/pf-timestamp/pf-timestamp.js.map +1 -1
  138. package/pf-tooltip/BaseTooltip.css +1 -5
  139. package/pf-tooltip/BaseTooltip.d.ts +3 -0
  140. package/pf-tooltip/BaseTooltip.js +18 -9
  141. package/pf-tooltip/BaseTooltip.js.map +1 -1
  142. package/pf-tooltip/pf-tooltip.css +66 -4
  143. package/pf-tooltip/pf-tooltip.d.ts +25 -3
  144. package/pf-tooltip/pf-tooltip.js +144 -5
  145. package/pf-tooltip/pf-tooltip.js.map +1 -1
  146. package/pfe.min.js +257 -137
  147. package/pfe.min.js.map +4 -4
  148. package/react/pf-accordion/pf-accordion-header.d.ts +3 -5
  149. package/react/pf-accordion/pf-accordion-panel.d.ts +3 -5
  150. package/react/pf-accordion/pf-accordion.d.ts +3 -5
  151. package/react/pf-avatar/pf-avatar.d.ts +3 -5
  152. package/react/pf-badge/pf-badge.d.ts +3 -5
  153. package/react/pf-banner/pf-banner.d.ts +4 -0
  154. package/react/pf-banner/pf-banner.js +10 -0
  155. package/react/pf-button/pf-button.d.ts +3 -5
  156. package/react/pf-card/pf-card.d.ts +3 -5
  157. package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +3 -5
  158. package/react/pf-code-block/pf-code-block.d.ts +3 -5
  159. package/react/pf-icon/pf-icon.d.ts +3 -5
  160. package/react/pf-jump-links/pf-jump-links-item.d.ts +3 -5
  161. package/react/pf-jump-links/pf-jump-links-list.d.ts +3 -5
  162. package/react/pf-jump-links/pf-jump-links.d.ts +3 -5
  163. package/react/pf-label/pf-label.d.ts +3 -5
  164. package/react/pf-modal/pf-modal.d.ts +3 -5
  165. package/react/pf-panel/pf-panel.d.ts +3 -5
  166. package/react/pf-popover/pf-popover.d.ts +3 -5
  167. package/react/pf-progress/pf-progress.d.ts +4 -0
  168. package/react/pf-progress/pf-progress.js +10 -0
  169. package/react/pf-progress-stepper/pf-progress-step.d.ts +3 -5
  170. package/react/pf-progress-stepper/pf-progress-stepper.d.ts +3 -5
  171. package/react/pf-spinner/pf-spinner.d.ts +3 -5
  172. package/react/pf-switch/pf-switch.d.ts +3 -5
  173. package/react/pf-table/pf-caption.d.ts +4 -0
  174. package/react/pf-table/pf-caption.js +10 -0
  175. package/react/pf-table/pf-table.d.ts +4 -0
  176. package/react/pf-table/pf-table.js +10 -0
  177. package/react/pf-table/pf-tbody.d.ts +4 -0
  178. package/react/pf-table/pf-tbody.js +10 -0
  179. package/react/pf-table/pf-td.d.ts +4 -0
  180. package/react/pf-table/pf-td.js +10 -0
  181. package/react/pf-table/pf-th.d.ts +4 -0
  182. package/react/pf-table/pf-th.js +10 -0
  183. package/react/pf-table/pf-thead.d.ts +4 -0
  184. package/react/pf-table/pf-thead.js +10 -0
  185. package/react/pf-table/pf-tr.d.ts +4 -0
  186. package/react/pf-table/pf-tr.js +10 -0
  187. package/react/pf-tabs/pf-tab-panel.d.ts +3 -5
  188. package/react/pf-tabs/pf-tab.d.ts +3 -5
  189. package/react/pf-tabs/pf-tab.js +1 -1
  190. package/react/pf-tabs/pf-tabs.d.ts +3 -5
  191. package/react/pf-text-input/pf-text-input.d.ts +4 -0
  192. package/react/pf-text-input/pf-text-input.js +10 -0
  193. package/react/pf-tile/pf-tile.d.ts +3 -5
  194. package/react/pf-timestamp/pf-timestamp.d.ts +3 -5
  195. package/react/pf-tooltip/pf-tooltip.d.ts +3 -5
@@ -1,4 +1,5 @@
1
- import { __decorate } from "tslib";
1
+ var _PfJumpLinks_instances, _PfJumpLinks_initialized, _PfJumpLinks_rovingTabindexController, _PfJumpLinks_spy, _PfJumpLinks_updateItems, _PfJumpLinks_onSelect, _PfJumpLinks_onToggle;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
2
3
  import { html, LitElement } from 'lit';
3
4
  import { customElement } from 'lit/decorators/custom-element.js';
4
5
  import { property } from 'lit/decorators/property.js';
@@ -59,6 +60,7 @@ const style = css `[hidden]{display:none!important}:host{display:block}#containe
59
60
  let PfJumpLinks = class PfJumpLinks extends LitElement {
60
61
  constructor() {
61
62
  super(...arguments);
63
+ _PfJumpLinks_instances.add(this);
62
64
  /** Whether the element features a disclosure widget around the nav items */
63
65
  this.expandable = false;
64
66
  /** Whether the expandable element's disclosure widget is expanded */
@@ -69,65 +71,66 @@ let PfJumpLinks = class PfJumpLinks extends LitElement {
69
71
  this.centered = false;
70
72
  /** Offset to add to the scroll position, potentially for a masthead which content scrolls under. */
71
73
  this.offset = 0;
72
- this.#initialized = false;
73
- this.#rovingTabindexController = new RovingTabindexController(this);
74
- this.#spy = new ScrollSpyController(this, {
74
+ _PfJumpLinks_initialized.set(this, false);
75
+ _PfJumpLinks_rovingTabindexController.set(this, new RovingTabindexController(this));
76
+ _PfJumpLinks_spy.set(this, new ScrollSpyController(this, {
75
77
  rootMargin: `${this.offset}px 0px 0px 0px`,
76
78
  tagNames: ['pf-jump-links-item'],
77
- });
79
+ }));
78
80
  }
79
- static { this.styles = [style]; }
80
- #initialized;
81
- #rovingTabindexController;
82
- #spy;
83
81
  connectedCallback() {
84
82
  super.connectedCallback();
85
- this.addEventListener('select', this.#onSelect);
83
+ this.addEventListener('select', __classPrivateFieldGet(this, _PfJumpLinks_instances, "m", _PfJumpLinks_onSelect));
86
84
  }
87
85
  updated(changed) {
88
86
  if (changed.has('offset')) {
89
- this.#spy.rootMargin = `${this.offset ?? 0}px 0px 0px 0px`;
87
+ __classPrivateFieldGet(this, _PfJumpLinks_spy, "f").rootMargin = `${this.offset ?? 0}px 0px 0px 0px`;
90
88
  }
91
89
  }
92
90
  render() {
93
91
  return html `
94
92
  <nav id="container">${this.expandable ? html `
95
- <details ?open="${this.expanded}" @toggle="${this.#onToggle}">
93
+ <details ?open="${this.expanded}" @toggle="${__classPrivateFieldGet(this, _PfJumpLinks_instances, "m", _PfJumpLinks_onToggle)}">
96
94
  <summary>
97
95
  <pf-icon icon="chevron-right"></pf-icon>
98
96
  <span id="label">${this.label}</span>
99
97
  </summary>
100
- <slot role="listbox" @slotchange="${this.#updateItems}"></slot>
98
+ <slot role="listbox" @slotchange="${__classPrivateFieldGet(this, _PfJumpLinks_instances, "m", _PfJumpLinks_updateItems)}"></slot>
101
99
  </details>` : html `
102
100
  <span id="label">${this.label}</span>
103
- <slot role="listbox" @slotchange="${this.#updateItems}"></slot>`}
101
+ <slot role="listbox" @slotchange="${__classPrivateFieldGet(this, _PfJumpLinks_instances, "m", _PfJumpLinks_updateItems)}"></slot>`}
104
102
  </nav>
105
103
  `;
106
104
  }
107
- #updateItems() {
108
- const items = Array.from(this.querySelectorAll(':is(pf-jump-links-item, pf-jump-links-list)'))
109
- .flatMap(i => [
110
- ...i.shadowRoot?.querySelectorAll('a') ?? [],
111
- ...i.querySelectorAll('a') ?? [],
112
- ]);
113
- if (this.#initialized) {
114
- this.#rovingTabindexController.updateItems(items);
115
- }
116
- else {
117
- this.#rovingTabindexController.initItems(items);
118
- this.#initialized = true;
119
- }
105
+ };
106
+ _PfJumpLinks_initialized = new WeakMap();
107
+ _PfJumpLinks_rovingTabindexController = new WeakMap();
108
+ _PfJumpLinks_spy = new WeakMap();
109
+ _PfJumpLinks_instances = new WeakSet();
110
+ _PfJumpLinks_updateItems = function _PfJumpLinks_updateItems() {
111
+ const items = Array.from(this.querySelectorAll(':is(pf-jump-links-item, pf-jump-links-list)'))
112
+ .flatMap(i => [
113
+ ...i.shadowRoot?.querySelectorAll('a') ?? [],
114
+ ...i.querySelectorAll('a') ?? [],
115
+ ]);
116
+ if (__classPrivateFieldGet(this, _PfJumpLinks_initialized, "f")) {
117
+ __classPrivateFieldGet(this, _PfJumpLinks_rovingTabindexController, "f").updateItems(items);
120
118
  }
121
- async #onSelect(event) {
122
- this.#spy.setActive(event.target);
119
+ else {
120
+ __classPrivateFieldGet(this, _PfJumpLinks_rovingTabindexController, "f").initItems(items);
121
+ __classPrivateFieldSet(this, _PfJumpLinks_initialized, true, "f");
123
122
  }
124
- #onToggle(event) {
125
- if (event.target instanceof HTMLDetailsElement) {
126
- this.expanded = event.target.open;
127
- }
128
- this.dispatchEvent(new Event('toggle'));
123
+ };
124
+ _PfJumpLinks_onSelect = async function _PfJumpLinks_onSelect(event) {
125
+ __classPrivateFieldGet(this, _PfJumpLinks_spy, "f").setActive(event.target);
126
+ };
127
+ _PfJumpLinks_onToggle = function _PfJumpLinks_onToggle(event) {
128
+ if (event.target instanceof HTMLDetailsElement) {
129
+ this.expanded = event.target.open;
129
130
  }
131
+ this.dispatchEvent(new Event('toggle'));
130
132
  };
133
+ PfJumpLinks.styles = [style];
131
134
  __decorate([
132
135
  property({ reflect: true, type: Boolean })
133
136
  ], PfJumpLinks.prototype, "expandable", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-jump-links.js","sourceRoot":"","sources":["pf-jump-links.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport { ScrollSpyController } from '@patternfly/pfe-core/controllers/scroll-spy-controller.js';\nimport { RovingTabindexController } from '@patternfly/pfe-core/controllers/roving-tabindex-controller.js';\n\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport './pf-jump-links-item.js';\n\nimport style from './pf-jump-links.css';\n\n/**\n * **Jump links** allow users to navigate to sections within a page.\n *\n * @fires toggle - when the `expanded` disclosure widget is toggled\n * @slot - Place pf-jump-links-items here\n *\n * @cssprop --pf-c-jump-links__list--Display\n * @cssprop --pf-c-jump-links__list--FlexDirection\n * @cssprop --pf-c-jump-links__list--PaddingTop -- padding around the list of links\n * @cssprop --pf-c-jump-links__list--PaddingRight\n * @cssprop --pf-c-jump-links__list--PaddingBottom\n * @cssprop --pf-c-jump-links__list--PaddingLeft\n * @cssprop --pf-c-jump-links__list--Visibility\n * @cssprop --pf-c-jump-links__list--before--BorderColor\n * @cssprop --pf-c-jump-links__list--before--BorderTopWidth\n * @cssprop --pf-c-jump-links__list--before--BorderRightWidth\n * @cssprop --pf-c-jump-links__list--before--BorderBottomWidth\n * @cssprop --pf-c-jump-links__list--before--BorderLeftWidth\n * @cssprop --pf-c-jump-links__toggle--MarginBottom--base\n *\n * @cssprop --pf-c-jump-links__toggle--MarginTop -- padding around the expandable jump links disclosure widget.\n * @cssprop --pf-c-jump-links__toggle--MarginBottom\n * @cssprop --pf-c-jump-links__toggle--MarginBottom--base\n * @cssprop --pf-c-jump-links__toggle--MarginLeft\n * @cssprop --pf-c-jump-links__toggle-text--Color\n * @cssprop --pf-c-button--PaddingTop -- padding around the expandable jump links disclosure widget.\n * @cssprop --pf-c-button--PaddingRight\n * @cssprop --pf-c-button--PaddingBottom\n * @cssprop --pf-c-button--PaddingLeft\n *\n * @cssprop --pf-c-jump-links__toggle-icon--Rotate\n * @cssprop --pf-c-jump-links__toggle-icon--Transition\n * @cssprop --pf-c-jump-links__toggle-text--MarginLeft\n *\n * @cssprop --pf-c-jump-links--m-expanded__toggle--MarginBottom\n * @cssprop --pf-c-jump-links--m-expanded__toggle-icon--Rotate\n * @cssprop --pf-c-jump-links--m-expanded__toggle-icon--Color\n *\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingTop\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingRight\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingBottom\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingLeft\n * @cssprop --pf-c-jump-links--m-vertical__list--before--BorderTopWidth\n * @cssprop --pf-c-jump-links--m-vertical__list--before--BorderLeftWidth\n * @cssprop --pf-c-jump-links--m-vertical__item--m-current__link--before--BorderTopWidth\n * @cssprop --pf-c-jump-links--m-vertical__item--m-current__link--before--BorderLeftWidth\n * @cssprop --pf-c-jump-links--m-vertical__list--FlexDirection\n */\n@customElement('pf-jump-links')\nexport class PfJumpLinks extends LitElement {\n static readonly styles = [style];\n\n /** Whether the element features a disclosure widget around the nav items */\n @property({ reflect: true, type: Boolean }) expandable = false;\n\n /** Whether the expandable element's disclosure widget is expanded */\n @property({ reflect: true, type: Boolean }) expanded = false;\n\n /** Whether the layout of children is vertical or horizontal. */\n @property({ reflect: true, type: Boolean }) vertical = false;\n\n /** Whether to center children. */\n @property({ reflect: true, type: Boolean }) centered = false;\n\n /** Offset to add to the scroll position, potentially for a masthead which content scrolls under. */\n @property({ type: Number }) offset = 0;\n\n /** Label to add to nav element. */\n @property() label?: string;\n\n #initialized = false;\n\n #rovingTabindexController = new RovingTabindexController(this);\n\n #spy = new ScrollSpyController(this, {\n rootMargin: `${this.offset}px 0px 0px 0px`,\n tagNames: ['pf-jump-links-item'],\n });\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('select', this.#onSelect);\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('offset')) {\n this.#spy.rootMargin = `${this.offset ?? 0}px 0px 0px 0px`;\n }\n }\n\n render() {\n return html`\n <nav id=\"container\">${this.expandable ? html`\n <details ?open=\"${this.expanded}\" @toggle=\"${this.#onToggle}\">\n <summary>\n <pf-icon icon=\"chevron-right\"></pf-icon>\n <span id=\"label\">${this.label}</span>\n </summary>\n <slot role=\"listbox\" @slotchange=\"${this.#updateItems}\"></slot>\n </details>` : html`\n <span id=\"label\">${this.label}</span>\n <slot role=\"listbox\" @slotchange=\"${this.#updateItems}\"></slot>`}\n </nav>\n `;\n }\n\n #updateItems() {\n const items = Array.from(this.querySelectorAll(':is(pf-jump-links-item, pf-jump-links-list)'))\n .flatMap(i => [\n ...i.shadowRoot?.querySelectorAll('a') ?? [],\n ...i.querySelectorAll('a') ?? [],\n ]);\n if (this.#initialized) {\n this.#rovingTabindexController.updateItems(items);\n } else {\n this.#rovingTabindexController.initItems(items);\n this.#initialized = true;\n }\n }\n\n async #onSelect(event: Event) {\n this.#spy.setActive(event.target);\n }\n\n #onToggle(event: Event) {\n if (event.target instanceof HTMLDetailsElement) {\n this.expanded = event.target.open;\n }\n this.dispatchEvent(new Event('toggle'));\n }\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-jump-links': PfJumpLinks;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-jump-links.js","sourceRoot":"","sources":["pf-jump-links.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport { ScrollSpyController } from '@patternfly/pfe-core/controllers/scroll-spy-controller.js';\nimport { RovingTabindexController } from '@patternfly/pfe-core/controllers/roving-tabindex-controller.js';\n\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport './pf-jump-links-item.js';\n\nimport style from './pf-jump-links.css';\n\n/**\n * **Jump links** allow users to navigate to sections within a page.\n *\n * @fires toggle - when the `expanded` disclosure widget is toggled\n * @slot - Place pf-jump-links-items here\n *\n * @cssprop --pf-c-jump-links__list--Display\n * @cssprop --pf-c-jump-links__list--FlexDirection\n * @cssprop --pf-c-jump-links__list--PaddingTop -- padding around the list of links\n * @cssprop --pf-c-jump-links__list--PaddingRight\n * @cssprop --pf-c-jump-links__list--PaddingBottom\n * @cssprop --pf-c-jump-links__list--PaddingLeft\n * @cssprop --pf-c-jump-links__list--Visibility\n * @cssprop --pf-c-jump-links__list--before--BorderColor\n * @cssprop --pf-c-jump-links__list--before--BorderTopWidth\n * @cssprop --pf-c-jump-links__list--before--BorderRightWidth\n * @cssprop --pf-c-jump-links__list--before--BorderBottomWidth\n * @cssprop --pf-c-jump-links__list--before--BorderLeftWidth\n * @cssprop --pf-c-jump-links__toggle--MarginBottom--base\n *\n * @cssprop --pf-c-jump-links__toggle--MarginTop -- padding around the expandable jump links disclosure widget.\n * @cssprop --pf-c-jump-links__toggle--MarginBottom\n * @cssprop --pf-c-jump-links__toggle--MarginBottom--base\n * @cssprop --pf-c-jump-links__toggle--MarginLeft\n * @cssprop --pf-c-jump-links__toggle-text--Color\n * @cssprop --pf-c-button--PaddingTop -- padding around the expandable jump links disclosure widget.\n * @cssprop --pf-c-button--PaddingRight\n * @cssprop --pf-c-button--PaddingBottom\n * @cssprop --pf-c-button--PaddingLeft\n *\n * @cssprop --pf-c-jump-links__toggle-icon--Rotate\n * @cssprop --pf-c-jump-links__toggle-icon--Transition\n * @cssprop --pf-c-jump-links__toggle-text--MarginLeft\n *\n * @cssprop --pf-c-jump-links--m-expanded__toggle--MarginBottom\n * @cssprop --pf-c-jump-links--m-expanded__toggle-icon--Rotate\n * @cssprop --pf-c-jump-links--m-expanded__toggle-icon--Color\n *\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingTop\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingRight\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingBottom\n * @cssprop --pf-c-jump-links--m-vertical__list--PaddingLeft\n * @cssprop --pf-c-jump-links--m-vertical__list--before--BorderTopWidth\n * @cssprop --pf-c-jump-links--m-vertical__list--before--BorderLeftWidth\n * @cssprop --pf-c-jump-links--m-vertical__item--m-current__link--before--BorderTopWidth\n * @cssprop --pf-c-jump-links--m-vertical__item--m-current__link--before--BorderLeftWidth\n * @cssprop --pf-c-jump-links--m-vertical__list--FlexDirection\n */\n@customElement('pf-jump-links')\nexport class PfJumpLinks extends LitElement {\n static readonly styles = [style];\n\n /** Whether the element features a disclosure widget around the nav items */\n @property({ reflect: true, type: Boolean }) expandable = false;\n\n /** Whether the expandable element's disclosure widget is expanded */\n @property({ reflect: true, type: Boolean }) expanded = false;\n\n /** Whether the layout of children is vertical or horizontal. */\n @property({ reflect: true, type: Boolean }) vertical = false;\n\n /** Whether to center children. */\n @property({ reflect: true, type: Boolean }) centered = false;\n\n /** Offset to add to the scroll position, potentially for a masthead which content scrolls under. */\n @property({ type: Number }) offset = 0;\n\n /** Label to add to nav element. */\n @property() label?: string;\n\n #initialized = false;\n\n #rovingTabindexController = new RovingTabindexController(this);\n\n #spy = new ScrollSpyController(this, {\n rootMargin: `${this.offset}px 0px 0px 0px`,\n tagNames: ['pf-jump-links-item'],\n });\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('select', this.#onSelect);\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('offset')) {\n this.#spy.rootMargin = `${this.offset ?? 0}px 0px 0px 0px`;\n }\n }\n\n render() {\n return html`\n <nav id=\"container\">${this.expandable ? html`\n <details ?open=\"${this.expanded}\" @toggle=\"${this.#onToggle}\">\n <summary>\n <pf-icon icon=\"chevron-right\"></pf-icon>\n <span id=\"label\">${this.label}</span>\n </summary>\n <slot role=\"listbox\" @slotchange=\"${this.#updateItems}\"></slot>\n </details>` : html`\n <span id=\"label\">${this.label}</span>\n <slot role=\"listbox\" @slotchange=\"${this.#updateItems}\"></slot>`}\n </nav>\n `;\n }\n\n #updateItems() {\n const items = Array.from(this.querySelectorAll(':is(pf-jump-links-item, pf-jump-links-list)'))\n .flatMap(i => [\n ...i.shadowRoot?.querySelectorAll('a') ?? [],\n ...i.querySelectorAll('a') ?? [],\n ]);\n if (this.#initialized) {\n this.#rovingTabindexController.updateItems(items);\n } else {\n this.#rovingTabindexController.initItems(items);\n this.#initialized = true;\n }\n }\n\n async #onSelect(event: Event) {\n this.#spy.setActive(event.target);\n }\n\n #onToggle(event: Event) {\n if (event.target instanceof HTMLDetailsElement) {\n this.expanded = event.target.open;\n }\n this.dispatchEvent(new Event('toggle'));\n }\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-jump-links': PfJumpLinks;\n }\n}\n"]}
@@ -12,7 +12,6 @@ class BaseLabel extends LitElement {
12
12
  /** Represents the state of the anonymous and icon slots */
13
13
  this.slots = new SlotController(this, null, 'icon');
14
14
  }
15
- static { this.styles = [styles]; }
16
15
  render() {
17
16
  const { variant, color, icon } = this;
18
17
  const hasIcon = !!icon || this.slots.hasSlotted('icon');
@@ -26,5 +25,6 @@ class BaseLabel extends LitElement {
26
25
  `;
27
26
  }
28
27
  }
28
+ BaseLabel.styles = [styles];
29
29
  export { BaseLabel };
30
30
  //# sourceMappingURL=BaseLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseLabel.js","sourceRoot":"","sources":["BaseLabel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;;;AAIrF;;EAEE;AACF,MAAsB,SAAU,SAAQ,UAAU;IAAlD;;QASE,2DAA2D;QACjD,UAAK,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAgC3D,CAAC;aAzCiB,WAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;IAWzB,MAAM;QACb,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAA;;oBAEK,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;wCACrD,IAAI,CAAC,iBAAiB,EAAE,EAAE;;UAExD,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;;KAEhC,CAAC;IACJ,CAAC;;SAvBmB,SAAS","sourcesContent":["import { LitElement, html } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport styles from './BaseLabel.css';\n\n/**\n * Base label class\n*/\nexport abstract class BaseLabel extends LitElement {\n static readonly styles = [styles];\n\n abstract variant?: string;\n\n abstract color?: string;\n\n abstract icon?: string;\n\n /** Represents the state of the anonymous and icon slots */\n protected slots = new SlotController(this, null, 'icon');\n\n override render() {\n const { variant, color, icon } = this;\n const hasIcon = !!icon || this.slots.hasSlotted('icon');\n return html`\n <span id=\"container\"\n class=${classMap({ hasIcon, [variant ?? '']: !!variant, [color ?? '']: !!color })}>\n <slot name=\"icon\" part=\"icon\">${this.renderDefaultIcon?.()}</slot>\n <slot id=\"text\"></slot>\n ${this.renderSuffix?.() ?? ''}\n </span>\n `;\n }\n\n /**\n * Fallback content for the icon slot. When the `icon` attribute is set, it\n * should render an icon corresponding to the value.\n *\n * @example ```html\n * <pf-icon icon=${this.icon}></pf-icon>\n * ```\n */\n protected abstract renderDefaultIcon?(): unknown;\n\n /**\n * Optional override to render content after the anonymous slot.\n * @example ```html\n * <button id=\"close-button\">X</button>\n * ```\n */\n protected abstract renderSuffix?(): unknown;\n}\n"]}
1
+ {"version":3,"file":"BaseLabel.js","sourceRoot":"","sources":["BaseLabel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;;;AAIrF;;EAEE;AACF,MAAsB,SAAU,SAAQ,UAAU;IAAlD;;QASE,2DAA2D;QACjD,UAAK,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAgC3D,CAAC;IA9BU,MAAM;QACb,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAA;;oBAEK,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;wCACrD,IAAI,CAAC,iBAAiB,EAAE,EAAE;;UAExD,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;;KAEhC,CAAC;IACJ,CAAC;;AAtBe,gBAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;SADd,SAAS","sourcesContent":["import { LitElement, html } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport styles from './BaseLabel.css';\n\n/**\n * Base label class\n*/\nexport abstract class BaseLabel extends LitElement {\n static readonly styles = [styles];\n\n abstract variant?: string;\n\n abstract color?: string;\n\n abstract icon?: string;\n\n /** Represents the state of the anonymous and icon slots */\n protected slots = new SlotController(this, null, 'icon');\n\n override render() {\n const { variant, color, icon } = this;\n const hasIcon = !!icon || this.slots.hasSlotted('icon');\n return html`\n <span id=\"container\"\n class=${classMap({ hasIcon, [variant ?? '']: !!variant, [color ?? '']: !!color })}>\n <slot name=\"icon\" part=\"icon\">${this.renderDefaultIcon?.()}</slot>\n <slot id=\"text\"></slot>\n ${this.renderSuffix?.() ?? ''}\n </span>\n `;\n }\n\n /**\n * Fallback content for the icon slot. When the `icon` attribute is set, it\n * should render an icon corresponding to the value.\n *\n * @example ```html\n * <pf-icon icon=${this.icon}></pf-icon>\n * ```\n */\n protected abstract renderDefaultIcon?(): unknown;\n\n /**\n * Optional override to render content after the anonymous slot.\n * @example ```html\n * <button id=\"close-button\">X</button>\n * ```\n */\n protected abstract renderSuffix?(): unknown;\n}\n"]}
@@ -112,8 +112,6 @@ let PfLabel = class PfLabel extends BaseLabel {
112
112
  /** Flag indicating the label is removable */
113
113
  this.removable = false;
114
114
  }
115
- static { this.styles = [...BaseLabel.styles, styles]; }
116
- static { this.shadowRootOptions = { ...BaseLabel.shadowRootOptions, delegatesFocus: true }; }
117
115
  render() {
118
116
  const { compact, truncated } = this;
119
117
  return html `
@@ -139,6 +137,8 @@ let PfLabel = class PfLabel extends BaseLabel {
139
137
  `;
140
138
  }
141
139
  };
140
+ PfLabel.styles = [...BaseLabel.styles, styles];
141
+ PfLabel.shadowRootOptions = { ...BaseLabel.shadowRootOptions, delegatesFocus: true };
142
142
  __decorate([
143
143
  property()
144
144
  ], PfLabel.prototype, "variant", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-label.js","sourceRoot":"","sources":["pf-label.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,6CAA6C,CAAC;;;AAoBrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,IAAa,OAAO,GAApB,MAAa,OAAQ,SAAQ,SAAS;IAAtC;;QAKE;;;;WAIG;QACS,YAAO,GAAiB,QAAQ,CAAC;QAE7C;;WAEG;QACS,UAAK,GAAe,MAAM,CAAC;QAKvC,2CAA2C;QACd,YAAO,GAAG,KAAK,CAAC;QAE7C,yDAAyD;QAC5B,cAAS,GAAG,KAAK,CAAC;QAE/C,6CAA6C;QAChB,cAAS,GAAG,KAAK,CAAC;IA+BjD,CAAC;aAzDiB,WAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,AAAhC,CAAiC;aAEvC,sBAAiB,GAAmB,EAAE,GAAG,SAAS,CAAC,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE,AAA3E,CAA4E;IA6BpG,MAAM;QACb,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACpC,OAAO,IAAI,CAAA;uCACwB,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;KACrF,CAAC;IACJ,CAAC;IAEkB,iBAAiB;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;uBACV,IAAI,CAAC,IAAI;KAC3B,CAAC;IACJ,CAAC;IAEkB,YAAY;QAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;0CACI,CAAC,IAAI,CAAC,SAAS;;8BAE3B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;6BACrD,IAAI,CAAC,gBAAgB,IAAI,QAAQ;;;;;;KAMzD,CAAC;IACJ,CAAC;;AA/CW;IAAX,QAAQ,EAAE;wCAAkC;AAKjC;IAAX,QAAQ,EAAE;sCAA4B;AAG3B;IAAX,QAAQ,EAAE;qCAAe;AAGG;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wCAAiB;AAGhB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CAAmB;AAGlB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CAAmB;AAGA;IAA9C,QAAQ,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;iDAA2B;AA9B9D,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CA0DnB;SA1DY,OAAO","sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { ComposedEvent } from '@patternfly/pfe-core';\n\nimport { BaseLabel } from './BaseLabel.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\n\nimport styles from './pf-label.css';\n\nexport type LabelVariant = (\n | 'filled'\n | 'outline'\n);\n\nexport type LabelColor = (\n | 'blue'\n | 'cyan'\n | 'green'\n | 'orange'\n | 'purple'\n | 'red'\n | 'grey'\n | 'gold'\n)\n\n/**\n * The **label** component allows users to add specific element captions for user\n * clarity and convenience.\n *\n * @summary Allows users to display meta data in a stylized form.\n *\n * @fires close - when a removable label's close button is clicked\n *\n * @cssprop {<length>} --pf-c-label--FontSize {@default `0.875em`}\n *\n * @cssprop {<length>} --pf-c-label--PaddingTop {@default `0.25rem`}\n * @cssprop {<length>} --pf-c-label--PaddingRight {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-label--PaddingBottom {@default `0.25rem`}\n * @cssprop {<length>} --pf-c-label--PaddingLeft {@default `0.5rem`}\n *\n * @cssprop {<color>} --pf-c-label--Color {@default `#151515`}\n * @cssprop {<color>} --pf-c-label--BackgroundColor {@default `#f5f5f5`}\n *\n * @cssprop {<length>} --pf-c-label--BorderRadius {@default `30em`}\n *\n * @cssprop {<length>} --pf-c-label__content--MaxWidth {@default `100%`}\n * @cssprop {<color>} --pf-c-label__content--Color {@default `#151515`}\n * @cssprop {<length>} --pf-c-label__content--before--BorderWidth {@default `1px`}\n * @cssprop {<color>} --pf-c-label__content--before--BorderColor {@default `#d2d2d2`}\n *\n * @cssprop {<color>} --pf-c-label--m-outline__content--Color {@default `#151515`}\n * @cssprop {<color>} --pf-c-label--m-outline--BackgroundColor {@default `#ffffff`}\n *\n * @cssprop {<color>} --pf-c-label--m-blue__content--Color {@default `#002952`}\n * @cssprop {<color>} --pf-c-label--m-blue--BackgroundColor {@default `#e7f1fa`}\n * @cssprop {<color>} --pf-c-label--m-blue__content--before--BorderColor {@default `#bee1f4`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-blue__content--Color {@default `#06c`}\n *\n * @cssprop {<color>} --pf-c-label--m-cyan__content--Color {@default `#3b1f00`}\n * @cssprop {<color>} --pf-c-label--m-cyan--BackgroundColor {@default `#f2f9f9`}\n * @cssprop {<color>} --pf-c-label--m-cyan__content--before--BorderColor {@default `#a2d9d9`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-cyan__content--Color {@default `#005f60`}\n *\n * @cssprop {<color>} --pf-c-label--m-green__content--Color {@default `#1e4f18`}\n * @cssprop {<color>} --pf-c-label--m-green--BackgroundColor {@default `#f3faf2`}\n * @cssprop {<color>} --pf-c-label--m-green__content--before--BorderColor {@default `#bde5b8`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-green__content--Color {@default `#3e8635`}\n *\n * @cssprop {<color>} --pf-c-label--m-orange__content--Color {@default `#003737`}\n * @cssprop {<color>} --pf-c-label--m-orange--BackgroundColor {@default `#fff6ec`}\n * @cssprop {<color>} --pf-c-label--m-orange__content--before--BorderColor {@default `#f4b678`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-orange__content--Color {@default `#8f4700`}\n *\n * @cssprop {<color>} --pf-c-label--m-purple__content--Color {@default `#1f0066`}\n * @cssprop {<color>} --pf-c-label--m-purple--BackgroundColor {@default `#f2f0fc`}\n * @cssprop {<color>} --pf-c-label--m-purple__content--before--BorderColor {@default `#cbc1ff`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-purple__content--Color {@default `#6753ac`}\n *\n * @cssprop {<color>} --pf-c-label--m-red__content--Color {@default `#7d1007`}\n * @cssprop {<color>} --pf-c-label--m-red--BackgroundColor {@default `#faeae8`}\n * @cssprop {<color>} --pf-c-label--m-red__content--before--BorderColor {@default `#c9190b`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-red__content--Color {@default `#c9190b`}\n *\n * @cssprop {<color>} --pf-c-label--m-gold__content--Color {@default `#3d2c00`}\n * @cssprop {<color>} --pf-c-label--m-gold--BackgroundColor {@default `#fdf7e7`}\n * @cssprop {<color>} --pf-c-label--m-gold__content--before--BorderColor {@default `#f9e0a2`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-gold__content--Color {@default `#795600`}\n\n * @cssprop {<color>} --pf-c-label--m-blue__icon--Color {@default `#06c`}\n * @cssprop {<color>} --pf-c-label--m-cyan__icon--Color {@default `#009596`}\n * @cssprop {<color>} --pf-c-label--m-green__icon--Color {@default `#3e8635`}\n * @cssprop {<color>} --pf-c-label--m-orange__icon--Color {@default `#ec7a08`}\n * @cssprop {<color>} --pf-c-label--m-red__icon--Color {@default `#c9190b`}\n * @cssprop {<color>} --pf-c-label--m-gold__icon--Color {@default `#f0ab00`}\n *\n * @csspart icon - container for the label icon\n * @csspart close-button - container for removable labels' close button\n *\n * @slot icon\n * Contains the labels's icon, e.g. web-icon-alert-success.\n *\n * @slot\n * Must contain the text for the label.\n *\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingTop {@default `0`}\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingRight {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingBottom {@default `0`}\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingLeft {@default `0.5rem`}\n */\n@customElement('pf-label')\nexport class PfLabel extends BaseLabel {\n static readonly styles = [...BaseLabel.styles, styles];\n\n static readonly shadowRootOptions: ShadowRootInit = { ...BaseLabel.shadowRootOptions, delegatesFocus: true };\n\n /**\n * Changes the style of the label.\n * - Filled: Colored background with colored border.\n * - Outline: White background with colored border.\n */\n @property() variant: LabelVariant = 'filled';\n\n /**\n * Changes the color of the label\n */\n @property() color: LabelColor = 'grey';\n\n /** Shorthand for the `icon` slot, the value is icon name */\n @property() icon?: string;\n\n /** Flag indicating the label is compact */\n @property({ type: Boolean }) compact = false;\n\n /** Flag indicating the label text should be truncated */\n @property({ type: Boolean }) truncated = false;\n\n /** Flag indicating the label is removable */\n @property({ type: Boolean }) removable = false;\n\n /** Text label for a removable label's close button */\n @property({ attribute: 'close-button-label' }) closeButtonLabel?: string;\n\n override render() {\n const { compact, truncated } = this;\n return html`\n <span id=\"pf-container\" class=\"${classMap({ compact, truncated })}\">${super.render()}</span>\n `;\n }\n\n protected override renderDefaultIcon() {\n return !this.icon ? '' : html`\n <pf-icon icon=\"${this.icon}\" size=\"sm\"></pf-icon>\n `;\n }\n\n protected override renderSuffix() {\n return !this.removable ? '' : html`\n <span part=\"close-button\" ?hidden=${!this.removable}>\n <pf-button plain\n @click=\"${() => this.dispatchEvent(new ComposedEvent('close'))}\"\n label=\"${this.closeButtonLabel ?? 'remove'}\">\n <svg viewBox=\"0 0 352 512\">\n <path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"/>\n </svg>\n </pf-button>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-label': PfLabel;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-label.js","sourceRoot":"","sources":["pf-label.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,6CAA6C,CAAC;;;AAoBrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,IAAa,OAAO,GAApB,MAAa,OAAQ,SAAQ,SAAS;IAAtC;;QAKE;;;;WAIG;QACS,YAAO,GAAiB,QAAQ,CAAC;QAE7C;;WAEG;QACS,UAAK,GAAe,MAAM,CAAC;QAKvC,2CAA2C;QACd,YAAO,GAAG,KAAK,CAAC;QAE7C,yDAAyD;QAC5B,cAAS,GAAG,KAAK,CAAC;QAE/C,6CAA6C;QAChB,cAAS,GAAG,KAAK,CAAC;IA+BjD,CAAC;IA1BU,MAAM;QACb,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACpC,OAAO,IAAI,CAAA;uCACwB,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;KACrF,CAAC;IACJ,CAAC;IAEkB,iBAAiB;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;uBACV,IAAI,CAAC,IAAI;KAC3B,CAAC;IACJ,CAAC;IAEkB,YAAY;QAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;0CACI,CAAC,IAAI,CAAC,SAAS;;8BAE3B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;6BACrD,IAAI,CAAC,gBAAgB,IAAI,QAAQ;;;;;;KAMzD,CAAC;IACJ,CAAC;;AAxDe,cAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,AAAhC,CAAiC;AAEvC,yBAAiB,GAAmB,EAAE,GAAG,SAAS,CAAC,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE,AAA3E,CAA4E;AAOjG;IAAX,QAAQ,EAAE;wCAAkC;AAKjC;IAAX,QAAQ,EAAE;sCAA4B;AAG3B;IAAX,QAAQ,EAAE;qCAAe;AAGG;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wCAAiB;AAGhB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CAAmB;AAGlB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CAAmB;AAGA;IAA9C,QAAQ,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;iDAA2B;AA9B9D,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CA0DnB;SA1DY,OAAO","sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { ComposedEvent } from '@patternfly/pfe-core';\n\nimport { BaseLabel } from './BaseLabel.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\n\nimport styles from './pf-label.css';\n\nexport type LabelVariant = (\n | 'filled'\n | 'outline'\n);\n\nexport type LabelColor = (\n | 'blue'\n | 'cyan'\n | 'green'\n | 'orange'\n | 'purple'\n | 'red'\n | 'grey'\n | 'gold'\n)\n\n/**\n * The **label** component allows users to add specific element captions for user\n * clarity and convenience.\n *\n * @summary Allows users to display meta data in a stylized form.\n *\n * @fires close - when a removable label's close button is clicked\n *\n * @cssprop {<length>} --pf-c-label--FontSize {@default `0.875em`}\n *\n * @cssprop {<length>} --pf-c-label--PaddingTop {@default `0.25rem`}\n * @cssprop {<length>} --pf-c-label--PaddingRight {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-label--PaddingBottom {@default `0.25rem`}\n * @cssprop {<length>} --pf-c-label--PaddingLeft {@default `0.5rem`}\n *\n * @cssprop {<color>} --pf-c-label--Color {@default `#151515`}\n * @cssprop {<color>} --pf-c-label--BackgroundColor {@default `#f5f5f5`}\n *\n * @cssprop {<length>} --pf-c-label--BorderRadius {@default `30em`}\n *\n * @cssprop {<length>} --pf-c-label__content--MaxWidth {@default `100%`}\n * @cssprop {<color>} --pf-c-label__content--Color {@default `#151515`}\n * @cssprop {<length>} --pf-c-label__content--before--BorderWidth {@default `1px`}\n * @cssprop {<color>} --pf-c-label__content--before--BorderColor {@default `#d2d2d2`}\n *\n * @cssprop {<color>} --pf-c-label--m-outline__content--Color {@default `#151515`}\n * @cssprop {<color>} --pf-c-label--m-outline--BackgroundColor {@default `#ffffff`}\n *\n * @cssprop {<color>} --pf-c-label--m-blue__content--Color {@default `#002952`}\n * @cssprop {<color>} --pf-c-label--m-blue--BackgroundColor {@default `#e7f1fa`}\n * @cssprop {<color>} --pf-c-label--m-blue__content--before--BorderColor {@default `#bee1f4`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-blue__content--Color {@default `#06c`}\n *\n * @cssprop {<color>} --pf-c-label--m-cyan__content--Color {@default `#3b1f00`}\n * @cssprop {<color>} --pf-c-label--m-cyan--BackgroundColor {@default `#f2f9f9`}\n * @cssprop {<color>} --pf-c-label--m-cyan__content--before--BorderColor {@default `#a2d9d9`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-cyan__content--Color {@default `#005f60`}\n *\n * @cssprop {<color>} --pf-c-label--m-green__content--Color {@default `#1e4f18`}\n * @cssprop {<color>} --pf-c-label--m-green--BackgroundColor {@default `#f3faf2`}\n * @cssprop {<color>} --pf-c-label--m-green__content--before--BorderColor {@default `#bde5b8`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-green__content--Color {@default `#3e8635`}\n *\n * @cssprop {<color>} --pf-c-label--m-orange__content--Color {@default `#003737`}\n * @cssprop {<color>} --pf-c-label--m-orange--BackgroundColor {@default `#fff6ec`}\n * @cssprop {<color>} --pf-c-label--m-orange__content--before--BorderColor {@default `#f4b678`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-orange__content--Color {@default `#8f4700`}\n *\n * @cssprop {<color>} --pf-c-label--m-purple__content--Color {@default `#1f0066`}\n * @cssprop {<color>} --pf-c-label--m-purple--BackgroundColor {@default `#f2f0fc`}\n * @cssprop {<color>} --pf-c-label--m-purple__content--before--BorderColor {@default `#cbc1ff`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-purple__content--Color {@default `#6753ac`}\n *\n * @cssprop {<color>} --pf-c-label--m-red__content--Color {@default `#7d1007`}\n * @cssprop {<color>} --pf-c-label--m-red--BackgroundColor {@default `#faeae8`}\n * @cssprop {<color>} --pf-c-label--m-red__content--before--BorderColor {@default `#c9190b`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-red__content--Color {@default `#c9190b`}\n *\n * @cssprop {<color>} --pf-c-label--m-gold__content--Color {@default `#3d2c00`}\n * @cssprop {<color>} --pf-c-label--m-gold--BackgroundColor {@default `#fdf7e7`}\n * @cssprop {<color>} --pf-c-label--m-gold__content--before--BorderColor {@default `#f9e0a2`}\n * @cssprop {<color>} --pf-c-label--m-outline--m-gold__content--Color {@default `#795600`}\n\n * @cssprop {<color>} --pf-c-label--m-blue__icon--Color {@default `#06c`}\n * @cssprop {<color>} --pf-c-label--m-cyan__icon--Color {@default `#009596`}\n * @cssprop {<color>} --pf-c-label--m-green__icon--Color {@default `#3e8635`}\n * @cssprop {<color>} --pf-c-label--m-orange__icon--Color {@default `#ec7a08`}\n * @cssprop {<color>} --pf-c-label--m-red__icon--Color {@default `#c9190b`}\n * @cssprop {<color>} --pf-c-label--m-gold__icon--Color {@default `#f0ab00`}\n *\n * @csspart icon - container for the label icon\n * @csspart close-button - container for removable labels' close button\n *\n * @slot icon\n * Contains the labels's icon, e.g. web-icon-alert-success.\n *\n * @slot\n * Must contain the text for the label.\n *\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingTop {@default `0`}\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingRight {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingBottom {@default `0`}\n * @cssprop {<length>} --pf-c-label--m-compact--PaddingLeft {@default `0.5rem`}\n */\n@customElement('pf-label')\nexport class PfLabel extends BaseLabel {\n static readonly styles = [...BaseLabel.styles, styles];\n\n static readonly shadowRootOptions: ShadowRootInit = { ...BaseLabel.shadowRootOptions, delegatesFocus: true };\n\n /**\n * Changes the style of the label.\n * - Filled: Colored background with colored border.\n * - Outline: White background with colored border.\n */\n @property() variant: LabelVariant = 'filled';\n\n /**\n * Changes the color of the label\n */\n @property() color: LabelColor = 'grey';\n\n /** Shorthand for the `icon` slot, the value is icon name */\n @property() icon?: string;\n\n /** Flag indicating the label is compact */\n @property({ type: Boolean }) compact = false;\n\n /** Flag indicating the label text should be truncated */\n @property({ type: Boolean }) truncated = false;\n\n /** Flag indicating the label is removable */\n @property({ type: Boolean }) removable = false;\n\n /** Text label for a removable label's close button */\n @property({ attribute: 'close-button-label' }) closeButtonLabel?: string;\n\n override render() {\n const { compact, truncated } = this;\n return html`\n <span id=\"pf-container\" class=\"${classMap({ compact, truncated })}\">${super.render()}</span>\n `;\n }\n\n protected override renderDefaultIcon() {\n return !this.icon ? '' : html`\n <pf-icon icon=\"${this.icon}\" size=\"sm\"></pf-icon>\n `;\n }\n\n protected override renderSuffix() {\n return !this.removable ? '' : html`\n <span part=\"close-button\" ?hidden=${!this.removable}>\n <pf-button plain\n @click=\"${() => this.dispatchEvent(new ComposedEvent('close'))}\"\n label=\"${this.closeButtonLabel ?? 'remove'}\">\n <svg viewBox=\"0 0 352 512\">\n <path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"/>\n </svg>\n </pf-button>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-label': PfLabel;\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
+ var _PfModal_headerId, _PfModal_triggerElement, _PfModal_header, _PfModal_body, _PfModal_headings, _PfModal_cancelling, _PfModal_slots;
1
2
  var PfModal_1;
2
- import { __decorate } from "tslib";
3
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
3
4
  import { LitElement, html } from 'lit';
4
5
  import { customElement } from 'lit/decorators/custom-element.js';
5
6
  import { property } from 'lit/decorators/property.js';
@@ -72,36 +73,25 @@ let PfModal = PfModal_1 = class PfModal extends LitElement {
72
73
  this.open = false;
73
74
  /** @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/returnValue */
74
75
  this.returnValue = '';
75
- this.#headerId = getRandomId();
76
- this.#triggerElement = null;
77
- this.#header = null;
78
- this.#body = [];
79
- this.#headings = [];
80
- this.#cancelling = false;
81
- this.#slots = new SlotController(this, null, 'header', 'description', 'footer');
76
+ _PfModal_headerId.set(this, getRandomId());
77
+ _PfModal_triggerElement.set(this, null);
78
+ _PfModal_header.set(this, null);
79
+ _PfModal_body.set(this, []);
80
+ _PfModal_headings.set(this, []);
81
+ _PfModal_cancelling.set(this, false);
82
+ _PfModal_slots.set(this, new SlotController(this, null, 'header', 'description', 'footer'));
82
83
  }
83
- static { this.shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true }; }
84
- static { this.styles = [style]; }
85
- /** Should the dialog close when user clicks outside the dialog? */
86
- static { this.closeOnOutsideClick = false; }
87
- #headerId;
88
- #triggerElement;
89
- #header;
90
- #body;
91
- #headings;
92
- #cancelling;
93
- #slots;
94
84
  connectedCallback() {
95
85
  super.connectedCallback();
96
86
  this.addEventListener('keydown', this.onKeydown);
97
87
  this.addEventListener('click', this.onClick);
98
88
  }
99
89
  render() {
100
- const headerId = (this.#header || this.#headings.length) ? this.#headerId : undefined;
101
- const headerLabel = this.#triggerElement ? this.#triggerElement.innerText : undefined;
102
- const hasHeader = this.#slots.hasSlotted('header');
103
- const hasDescription = this.#slots.hasSlotted('description');
104
- const hasFooter = this.#slots.hasSlotted('footer');
90
+ const headerId = (__classPrivateFieldGet(this, _PfModal_header, "f") || __classPrivateFieldGet(this, _PfModal_headings, "f").length) ? __classPrivateFieldGet(this, _PfModal_headerId, "f") : undefined;
91
+ const headerLabel = __classPrivateFieldGet(this, _PfModal_triggerElement, "f") ? __classPrivateFieldGet(this, _PfModal_triggerElement, "f").innerText : undefined;
92
+ const hasHeader = __classPrivateFieldGet(this, _PfModal_slots, "f").hasSlotted('header');
93
+ const hasDescription = __classPrivateFieldGet(this, _PfModal_slots, "f").hasSlotted('description');
94
+ const hasFooter = __classPrivateFieldGet(this, _PfModal_slots, "f").hasSlotted('footer');
105
95
  return html `
106
96
  <section ?hidden=${!this.open}>
107
97
  <div id="overlay" part="overlay" ?hidden=${!this.open}></div>
@@ -142,23 +132,23 @@ let PfModal = PfModal_1 = class PfModal extends LitElement {
142
132
  disconnectedCallback() {
143
133
  super.disconnectedCallback();
144
134
  this.removeEventListener('keydown', this.onKeydown);
145
- this.#triggerElement?.removeEventListener('click', this.onTriggerClick);
135
+ __classPrivateFieldGet(this, _PfModal_triggerElement, "f")?.removeEventListener('click', this.onTriggerClick);
146
136
  }
147
137
  async _init() {
148
138
  await this.updateComplete;
149
- this.#header = this.querySelector(`[slot$="header"]`);
150
- this.#body = [...this.querySelectorAll(`*:not([slot])`)];
151
- this.#headings = this.#body.filter(el => el.tagName.slice(0, 1) === 'H');
152
- if (this.#triggerElement) {
153
- this.#triggerElement.addEventListener('click', this.onTriggerClick);
139
+ __classPrivateFieldSet(this, _PfModal_header, this.querySelector(`[slot$="header"]`), "f");
140
+ __classPrivateFieldSet(this, _PfModal_body, [...this.querySelectorAll(`*:not([slot])`)], "f");
141
+ __classPrivateFieldSet(this, _PfModal_headings, __classPrivateFieldGet(this, _PfModal_body, "f").filter(el => el.tagName.slice(0, 1) === 'H'), "f");
142
+ if (__classPrivateFieldGet(this, _PfModal_triggerElement, "f")) {
143
+ __classPrivateFieldGet(this, _PfModal_triggerElement, "f").addEventListener('click', this.onTriggerClick);
154
144
  this.removeAttribute('hidden');
155
145
  }
156
- if (this.#header) {
157
- this.#header.id = this.#headerId;
146
+ if (__classPrivateFieldGet(this, _PfModal_header, "f")) {
147
+ __classPrivateFieldGet(this, _PfModal_header, "f").id = __classPrivateFieldGet(this, _PfModal_headerId, "f");
158
148
  }
159
- else if (this.#headings.length > 0) {
149
+ else if (__classPrivateFieldGet(this, _PfModal_headings, "f").length > 0) {
160
150
  // Get the first heading in the modal if it exists
161
- this.#headings[0].id = this.#headerId;
151
+ __classPrivateFieldGet(this, _PfModal_headings, "f")[0].id = __classPrivateFieldGet(this, _PfModal_headerId, "f");
162
152
  }
163
153
  }
164
154
  async _openChanged(oldValue, newValue) {
@@ -173,22 +163,22 @@ let PfModal = PfModal_1 = class PfModal extends LitElement {
173
163
  await this.updateComplete;
174
164
  // Set the focus to the container
175
165
  this.dialog?.focus();
176
- this.dispatchEvent(new ModalOpenEvent(this.#triggerElement));
166
+ this.dispatchEvent(new ModalOpenEvent(__classPrivateFieldGet(this, _PfModal_triggerElement, "f")));
177
167
  }
178
168
  else {
179
169
  // Return scrollability
180
170
  document.body.style.overflow = 'auto';
181
171
  await this.updateComplete;
182
- if (this.#triggerElement) {
183
- this.#triggerElement.focus();
172
+ if (__classPrivateFieldGet(this, _PfModal_triggerElement, "f")) {
173
+ __classPrivateFieldGet(this, _PfModal_triggerElement, "f").focus();
184
174
  }
185
- this.dispatchEvent(this.#cancelling ? new ModalCancelEvent() : new ModalCloseEvent());
175
+ this.dispatchEvent(__classPrivateFieldGet(this, _PfModal_cancelling, "f") ? new ModalCancelEvent() : new ModalCloseEvent());
186
176
  }
187
177
  }
188
178
  _triggerChanged() {
189
179
  if (this.trigger) {
190
- this.#triggerElement = this.getRootNode().getElementById(this.trigger);
191
- this.#triggerElement?.addEventListener('click', this.onTriggerClick);
180
+ __classPrivateFieldSet(this, _PfModal_triggerElement, this.getRootNode().getElementById(this.trigger), "f");
181
+ __classPrivateFieldGet(this, _PfModal_triggerElement, "f")?.addEventListener('click', this.onTriggerClick);
192
182
  }
193
183
  }
194
184
  onTriggerClick(event) {
@@ -222,7 +212,7 @@ let PfModal = PfModal_1 = class PfModal extends LitElement {
222
212
  this.cancel();
223
213
  return;
224
214
  case 'Enter':
225
- if (event.target === this.#triggerElement) {
215
+ if (event.target === __classPrivateFieldGet(this, _PfModal_triggerElement, "f")) {
226
216
  event.preventDefault();
227
217
  this.showModal();
228
218
  }
@@ -230,14 +220,14 @@ let PfModal = PfModal_1 = class PfModal extends LitElement {
230
220
  }
231
221
  }
232
222
  async cancel() {
233
- this.#cancelling = true;
223
+ __classPrivateFieldSet(this, _PfModal_cancelling, true, "f");
234
224
  this.open = false;
235
225
  await this.updateComplete;
236
- this.#cancelling = false;
226
+ __classPrivateFieldSet(this, _PfModal_cancelling, false, "f");
237
227
  }
238
228
  setTrigger(element) {
239
- this.#triggerElement = element;
240
- this.#triggerElement.addEventListener('click', this.onTriggerClick);
229
+ __classPrivateFieldSet(this, _PfModal_triggerElement, element, "f");
230
+ __classPrivateFieldGet(this, _PfModal_triggerElement, "f").addEventListener('click', this.onTriggerClick);
241
231
  }
242
232
  /**
243
233
  * Manually toggles the modal.
@@ -274,6 +264,17 @@ let PfModal = PfModal_1 = class PfModal extends LitElement {
274
264
  this.open = false;
275
265
  }
276
266
  };
267
+ _PfModal_headerId = new WeakMap();
268
+ _PfModal_triggerElement = new WeakMap();
269
+ _PfModal_header = new WeakMap();
270
+ _PfModal_body = new WeakMap();
271
+ _PfModal_headings = new WeakMap();
272
+ _PfModal_cancelling = new WeakMap();
273
+ _PfModal_slots = new WeakMap();
274
+ PfModal.shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };
275
+ PfModal.styles = [style];
276
+ /** Should the dialog close when user clicks outside the dialog? */
277
+ PfModal.closeOnOutsideClick = false;
277
278
  __decorate([
278
279
  property({ reflect: true })
279
280
  ], PfModal.prototype, "variant", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-modal.js","sourceRoot":"","sources":["pf-modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { ComposedEvent } from '@patternfly/pfe-core';\nimport { bound, deprecation, initializer, observed } from '@patternfly/pfe-core/decorators.js';\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport style from './pf-modal.css';\n\nexport class ModalCancelEvent extends ComposedEvent {\n constructor() {\n super('cancel');\n }\n}\n\nexport class ModalCloseEvent extends ComposedEvent {\n constructor() {\n super('close');\n }\n}\n\nexport class ModalOpenEvent extends ComposedEvent {\n constructor(\n /** The trigger element which triggered the modal to open */\n public trigger: HTMLElement | null\n ) {\n super('open');\n }\n}\n\n/**\n * A **modal** displays important information to a user without requiring them to navigate\n * to a new page.\n *\n * @summary Displays information or helps a user focus on a task\n *\n * @slot - The default slot can contain any type of content. When the header is not present this unnamed slot appear at the top of the modal window (to the left of the close button). Otherwise it will appear beneath the header.\n * @slot header - The header is an optional slot that appears at the top of the modal window. It should be a header tag (h2-h6).\n * @slot footer - Optional footer content. Good place to put action buttons.\n *\n * @fires {ModalOpenEvent} open - Fires when a user clicks on the trigger or manually opens a modal.\n * @fires {ModalCloseEvent} close - Fires when either a user clicks on either the close button or the overlay or manually closes a modal.\n *\n * @csspart overlay - The modal overlay which lies under the dialog and above the page body\n * @csspart dialog - The dialog element\n * @csspart content - The container for the dialog content\n * @csspart header - The container for the optional dialog header\n * @csspart description - The container for the optional dialog description in the header\n * @csspart close-button - The modal's close button\n * @csspart footer - Actions footer container\n *\n * @cssprop {<length>} --pf-c-modal-box--ZIndex {@default 500}\n * @cssprop {<length>} --pf-c-modal-box--Width - Width of the modal {@default calc(100% - 2rem)}\n * @cssprop {<length>} --pf-c-modal-box--MaxWidth - Max width of the modal {@default calc(100% - 2rem)}\n * @cssprop {<length>} --pf-c-modal-box--m-sm--sm--MaxWidth - Max width of the small variant modal {@default 35rem}\n * @cssprop {<length>} --pf-c-modal-box--m-md--MaxWidth - Max width of the small variant modal {@default 52.5rem}\n * @cssprop {<length>} --pf-c-modal-box--m-lg--lg--MaxWidth - Max width of the large variant modal {@default 70rem}\n * @cssprop {<length>} --pf-c-modal-box--MaxHeight - Max height of the modal {@default calc(100% - 3rem)}\n * @cssprop {<length>} --pf-c-modal-box--BoxShadow - {@default var(--pf-global--BoxShadow--xl)}\n * @cssprop {<length>} --pf-c-modal-box__title--FontSize - {@default 1.5rem}\n * @cssprop {<length>} --pf-c-modal-box--m-align-top--MarginTop - {@default 2rem}\n * @cssprop {<length>} --pf-c-modal-box--m-align-top--MaxWidth\n * @cssprop {<length>} --pf-c-modal-box--m-align-top--MaxHeight\n * @cssprop {<color>} --pf-c-modal-box--BackgroundColor - {@default #fff}\n * @cssprop --pf-c-modal-box__title--FontFamily - default font family for header-slotted headings\n */\n@customElement('pf-modal')\nexport class PfModal extends LitElement implements HTMLDialogElement {\n static readonly shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };\n\n static readonly styles = [style];\n\n /** Should the dialog close when user clicks outside the dialog? */\n protected static closeOnOutsideClick = false;\n\n /**\n * The `variant` controls the width of the modal.\n * There are three options: `small`, `medium` and `large`. The default is `large`.\n */\n @property({ reflect: true }) variant?: 'small' | 'medium' | 'large';\n\n @deprecation({ alias: 'variant', attribute: 'width' }) width?: 'small' | 'medium' | 'large';\n\n /**\n * `position=\"top\"` aligns the dialog with the top of the page\n */\n @property({ reflect: true }) position?: 'top';\n\n @observed\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** Optional ID of the trigger element */\n @observed\n @property() trigger?: string;\n\n /** @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/returnValue */\n public returnValue = '';\n\n @query('#overlay') private overlay?: HTMLElement | null;\n @query('#dialog') private dialog?: HTMLElement | null;\n @query('#close-button') private closeButton?: HTMLElement | null;\n\n #headerId = getRandomId();\n #triggerElement: HTMLElement | null = null;\n #header: HTMLElement | null = null;\n #body: Element[] = [];\n #headings: Element[] = [];\n #cancelling = false;\n\n #slots = new SlotController(this, null, 'header', 'description', 'footer');\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('keydown', this.onKeydown);\n this.addEventListener('click', this.onClick);\n }\n\n render() {\n const headerId = (this.#header || this.#headings.length) ? this.#headerId : undefined;\n const headerLabel = this.#triggerElement ? this.#triggerElement.innerText : undefined;\n const hasHeader = this.#slots.hasSlotted('header');\n const hasDescription = this.#slots.hasSlotted('description');\n const hasFooter = this.#slots.hasSlotted('footer');\n\n return html`\n <section ?hidden=${!this.open}>\n <div id=\"overlay\" part=\"overlay\" ?hidden=${!this.open}></div>\n <div id=\"dialog\"\n part=\"dialog\"\n tabindex=\"0\"\n role=\"dialog\"\n aria-labelledby=${ifDefined(headerId)}\n aria-label=${ifDefined(headerLabel)}\n ?hidden=\"${!this.open}\">\n <div id=\"container\">\n <div id=\"content\" part=\"content\" class=${classMap({ hasHeader, hasDescription, hasFooter })}>\n <header part=\"header\">\n <slot name=\"header\"></slot>\n <div part=\"description\" ?hidden=${!hasDescription}>\n <slot name=\"description\"></slot>\n </div>\n </header>\n <slot></slot>\n <footer ?hidden=${!hasFooter} part=\"footer\">\n <slot name=\"footer\"></slot>\n </footer>\n </div>\n <button id=\"close-button\"\n part=\"close-button\"\n aria-label=\"Close dialog\"\n @keydown=${this.onKeydown}\n @click=${this.close}>\n <svg fill=\"currentColor\" viewBox=\"0 0 352 512\">\n <path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"></path>\n </svg>\n </button>\n </div>\n </div>\n </section>\n `;\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this.onKeydown);\n\n this.#triggerElement?.removeEventListener('click', this.onTriggerClick);\n }\n\n @initializer()\n protected async _init() {\n await this.updateComplete;\n this.#header = this.querySelector(`[slot$=\"header\"]`);\n this.#body = [...this.querySelectorAll(`*:not([slot])`)];\n this.#headings = this.#body.filter(el => el.tagName.slice(0, 1) === 'H');\n\n if (this.#triggerElement) {\n this.#triggerElement.addEventListener('click', this.onTriggerClick);\n this.removeAttribute('hidden');\n }\n\n if (this.#header) {\n this.#header.id = this.#headerId;\n } else if (this.#headings.length > 0) {\n // Get the first heading in the modal if it exists\n this.#headings[0].id = this.#headerId;\n }\n }\n\n protected async _openChanged(oldValue?: boolean, newValue?: boolean) {\n // loosening types to prevent running these effects in unexpected circumstances\n // eslint-disable-next-line eqeqeq\n if (oldValue == null || newValue == null || oldValue == newValue) {\n return;\n } else if (this.open) {\n // This prevents background scroll\n document.body.style.overflow = 'hidden';\n await this.updateComplete;\n // Set the focus to the container\n this.dialog?.focus();\n this.dispatchEvent(new ModalOpenEvent(this.#triggerElement));\n } else {\n // Return scrollability\n document.body.style.overflow = 'auto';\n\n await this.updateComplete;\n\n if (this.#triggerElement) {\n this.#triggerElement.focus();\n }\n\n this.dispatchEvent(this.#cancelling ? new ModalCancelEvent() : new ModalCloseEvent());\n }\n }\n\n protected _triggerChanged() {\n if (this.trigger) {\n this.#triggerElement = (this.getRootNode() as Document | ShadowRoot).getElementById(this.trigger);\n this.#triggerElement?.addEventListener('click', this.onTriggerClick);\n }\n }\n\n @bound private onTriggerClick(event: MouseEvent) {\n event.preventDefault();\n // TODO: in non-modal case, toggle the dialog\n this.showModal();\n }\n\n @bound private onClick(event: MouseEvent) {\n const { open, overlay, dialog } = this;\n if (open) {\n const path = event.composedPath();\n const { closeOnOutsideClick } = this.constructor as typeof PfModal;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (closeOnOutsideClick && path.includes(overlay!) && !path.includes(dialog!)) {\n event.preventDefault();\n this.cancel();\n }\n }\n }\n\n @bound private onKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n if (event.target === this.closeButton) {\n event.preventDefault();\n this.dialog?.focus();\n }\n return;\n case 'Escape':\n case 'Esc':\n event.preventDefault();\n this.cancel();\n return;\n case 'Enter':\n if (event.target === this.#triggerElement) {\n event.preventDefault();\n this.showModal();\n }\n return;\n }\n }\n\n private async cancel() {\n this.#cancelling = true;\n this.open = false;\n await this.updateComplete;\n this.#cancelling = false;\n }\n\n setTrigger(element: HTMLElement) {\n this.#triggerElement = element;\n this.#triggerElement.addEventListener('click', this.onTriggerClick);\n }\n\n /**\n * Manually toggles the modal.\n * ```js\n * modal.toggle();\n * ```\n */\n @bound toggle() {\n this.open = !this.open;\n }\n\n /**\n * Manually opens the modal.\n * ```js\n * modal.open();\n * ```\n */\n @bound show() {\n this.open = true;\n }\n\n @bound showModal() {\n // TODO: non-modal mode\n this.show();\n }\n\n /**\n * Manually closes the modal.\n * ```js\n * modal.close();\n * ```\n */\n @bound close(returnValue?: string) {\n if (typeof returnValue === 'string') {\n this.returnValue = returnValue;\n }\n\n this.open = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-modal': PfModal;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-modal.js","sourceRoot":"","sources":["pf-modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { ComposedEvent } from '@patternfly/pfe-core';\nimport { bound, deprecation, initializer, observed } from '@patternfly/pfe-core/decorators.js';\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport style from './pf-modal.css';\n\nexport class ModalCancelEvent extends ComposedEvent {\n constructor() {\n super('cancel');\n }\n}\n\nexport class ModalCloseEvent extends ComposedEvent {\n constructor() {\n super('close');\n }\n}\n\nexport class ModalOpenEvent extends ComposedEvent {\n constructor(\n /** The trigger element which triggered the modal to open */\n public trigger: HTMLElement | null\n ) {\n super('open');\n }\n}\n\n/**\n * A **modal** displays important information to a user without requiring them to navigate\n * to a new page.\n *\n * @summary Displays information or helps a user focus on a task\n *\n * @slot - The default slot can contain any type of content. When the header is not present this unnamed slot appear at the top of the modal window (to the left of the close button). Otherwise it will appear beneath the header.\n * @slot header - The header is an optional slot that appears at the top of the modal window. It should be a header tag (h2-h6).\n * @slot footer - Optional footer content. Good place to put action buttons.\n *\n * @fires {ModalOpenEvent} open - Fires when a user clicks on the trigger or manually opens a modal.\n * @fires {ModalCloseEvent} close - Fires when either a user clicks on either the close button or the overlay or manually closes a modal.\n *\n * @csspart overlay - The modal overlay which lies under the dialog and above the page body\n * @csspart dialog - The dialog element\n * @csspart content - The container for the dialog content\n * @csspart header - The container for the optional dialog header\n * @csspart description - The container for the optional dialog description in the header\n * @csspart close-button - The modal's close button\n * @csspart footer - Actions footer container\n *\n * @cssprop {<length>} --pf-c-modal-box--ZIndex {@default 500}\n * @cssprop {<length>} --pf-c-modal-box--Width - Width of the modal {@default calc(100% - 2rem)}\n * @cssprop {<length>} --pf-c-modal-box--MaxWidth - Max width of the modal {@default calc(100% - 2rem)}\n * @cssprop {<length>} --pf-c-modal-box--m-sm--sm--MaxWidth - Max width of the small variant modal {@default 35rem}\n * @cssprop {<length>} --pf-c-modal-box--m-md--MaxWidth - Max width of the small variant modal {@default 52.5rem}\n * @cssprop {<length>} --pf-c-modal-box--m-lg--lg--MaxWidth - Max width of the large variant modal {@default 70rem}\n * @cssprop {<length>} --pf-c-modal-box--MaxHeight - Max height of the modal {@default calc(100% - 3rem)}\n * @cssprop {<length>} --pf-c-modal-box--BoxShadow - {@default var(--pf-global--BoxShadow--xl)}\n * @cssprop {<length>} --pf-c-modal-box__title--FontSize - {@default 1.5rem}\n * @cssprop {<length>} --pf-c-modal-box--m-align-top--MarginTop - {@default 2rem}\n * @cssprop {<length>} --pf-c-modal-box--m-align-top--MaxWidth\n * @cssprop {<length>} --pf-c-modal-box--m-align-top--MaxHeight\n * @cssprop {<color>} --pf-c-modal-box--BackgroundColor - {@default #fff}\n * @cssprop --pf-c-modal-box__title--FontFamily - default font family for header-slotted headings\n */\n@customElement('pf-modal')\nexport class PfModal extends LitElement implements HTMLDialogElement {\n static readonly shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };\n\n static readonly styles = [style];\n\n /** Should the dialog close when user clicks outside the dialog? */\n protected static closeOnOutsideClick = false;\n\n /**\n * The `variant` controls the width of the modal.\n * There are three options: `small`, `medium` and `large`. The default is `large`.\n */\n @property({ reflect: true }) variant?: 'small' | 'medium' | 'large';\n\n @deprecation({ alias: 'variant', attribute: 'width' }) width?: 'small' | 'medium' | 'large';\n\n /**\n * `position=\"top\"` aligns the dialog with the top of the page\n */\n @property({ reflect: true }) position?: 'top';\n\n @observed\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** Optional ID of the trigger element */\n @observed\n @property() trigger?: string;\n\n /** @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/returnValue */\n public returnValue = '';\n\n @query('#overlay') private overlay?: HTMLElement | null;\n @query('#dialog') private dialog?: HTMLElement | null;\n @query('#close-button') private closeButton?: HTMLElement | null;\n\n #headerId = getRandomId();\n #triggerElement: HTMLElement | null = null;\n #header: HTMLElement | null = null;\n #body: Element[] = [];\n #headings: Element[] = [];\n #cancelling = false;\n\n #slots = new SlotController(this, null, 'header', 'description', 'footer');\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('keydown', this.onKeydown);\n this.addEventListener('click', this.onClick);\n }\n\n render() {\n const headerId = (this.#header || this.#headings.length) ? this.#headerId : undefined;\n const headerLabel = this.#triggerElement ? this.#triggerElement.innerText : undefined;\n const hasHeader = this.#slots.hasSlotted('header');\n const hasDescription = this.#slots.hasSlotted('description');\n const hasFooter = this.#slots.hasSlotted('footer');\n\n return html`\n <section ?hidden=${!this.open}>\n <div id=\"overlay\" part=\"overlay\" ?hidden=${!this.open}></div>\n <div id=\"dialog\"\n part=\"dialog\"\n tabindex=\"0\"\n role=\"dialog\"\n aria-labelledby=${ifDefined(headerId)}\n aria-label=${ifDefined(headerLabel)}\n ?hidden=\"${!this.open}\">\n <div id=\"container\">\n <div id=\"content\" part=\"content\" class=${classMap({ hasHeader, hasDescription, hasFooter })}>\n <header part=\"header\">\n <slot name=\"header\"></slot>\n <div part=\"description\" ?hidden=${!hasDescription}>\n <slot name=\"description\"></slot>\n </div>\n </header>\n <slot></slot>\n <footer ?hidden=${!hasFooter} part=\"footer\">\n <slot name=\"footer\"></slot>\n </footer>\n </div>\n <button id=\"close-button\"\n part=\"close-button\"\n aria-label=\"Close dialog\"\n @keydown=${this.onKeydown}\n @click=${this.close}>\n <svg fill=\"currentColor\" viewBox=\"0 0 352 512\">\n <path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"></path>\n </svg>\n </button>\n </div>\n </div>\n </section>\n `;\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this.onKeydown);\n\n this.#triggerElement?.removeEventListener('click', this.onTriggerClick);\n }\n\n @initializer()\n protected async _init() {\n await this.updateComplete;\n this.#header = this.querySelector(`[slot$=\"header\"]`);\n this.#body = [...this.querySelectorAll(`*:not([slot])`)];\n this.#headings = this.#body.filter(el => el.tagName.slice(0, 1) === 'H');\n\n if (this.#triggerElement) {\n this.#triggerElement.addEventListener('click', this.onTriggerClick);\n this.removeAttribute('hidden');\n }\n\n if (this.#header) {\n this.#header.id = this.#headerId;\n } else if (this.#headings.length > 0) {\n // Get the first heading in the modal if it exists\n this.#headings[0].id = this.#headerId;\n }\n }\n\n protected async _openChanged(oldValue?: boolean, newValue?: boolean) {\n // loosening types to prevent running these effects in unexpected circumstances\n // eslint-disable-next-line eqeqeq\n if (oldValue == null || newValue == null || oldValue == newValue) {\n return;\n } else if (this.open) {\n // This prevents background scroll\n document.body.style.overflow = 'hidden';\n await this.updateComplete;\n // Set the focus to the container\n this.dialog?.focus();\n this.dispatchEvent(new ModalOpenEvent(this.#triggerElement));\n } else {\n // Return scrollability\n document.body.style.overflow = 'auto';\n\n await this.updateComplete;\n\n if (this.#triggerElement) {\n this.#triggerElement.focus();\n }\n\n this.dispatchEvent(this.#cancelling ? new ModalCancelEvent() : new ModalCloseEvent());\n }\n }\n\n protected _triggerChanged() {\n if (this.trigger) {\n this.#triggerElement = (this.getRootNode() as Document | ShadowRoot).getElementById(this.trigger);\n this.#triggerElement?.addEventListener('click', this.onTriggerClick);\n }\n }\n\n @bound private onTriggerClick(event: MouseEvent) {\n event.preventDefault();\n // TODO: in non-modal case, toggle the dialog\n this.showModal();\n }\n\n @bound private onClick(event: MouseEvent) {\n const { open, overlay, dialog } = this;\n if (open) {\n const path = event.composedPath();\n const { closeOnOutsideClick } = this.constructor as typeof PfModal;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (closeOnOutsideClick && path.includes(overlay!) && !path.includes(dialog!)) {\n event.preventDefault();\n this.cancel();\n }\n }\n }\n\n @bound private onKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n if (event.target === this.closeButton) {\n event.preventDefault();\n this.dialog?.focus();\n }\n return;\n case 'Escape':\n case 'Esc':\n event.preventDefault();\n this.cancel();\n return;\n case 'Enter':\n if (event.target === this.#triggerElement) {\n event.preventDefault();\n this.showModal();\n }\n return;\n }\n }\n\n private async cancel() {\n this.#cancelling = true;\n this.open = false;\n await this.updateComplete;\n this.#cancelling = false;\n }\n\n setTrigger(element: HTMLElement) {\n this.#triggerElement = element;\n this.#triggerElement.addEventListener('click', this.onTriggerClick);\n }\n\n /**\n * Manually toggles the modal.\n * ```js\n * modal.toggle();\n * ```\n */\n @bound toggle() {\n this.open = !this.open;\n }\n\n /**\n * Manually opens the modal.\n * ```js\n * modal.open();\n * ```\n */\n @bound show() {\n this.open = true;\n }\n\n @bound showModal() {\n // TODO: non-modal mode\n this.show();\n }\n\n /**\n * Manually closes the modal.\n * ```js\n * modal.close();\n * ```\n */\n @bound close(returnValue?: string) {\n if (typeof returnValue === 'string') {\n this.returnValue = returnValue;\n }\n\n this.open = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-modal': PfModal;\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
- import { __decorate } from "tslib";
1
+ var _PfPanel_slots;
2
+ import { __classPrivateFieldGet, __decorate } from "tslib";
2
3
  import { LitElement, html } from 'lit';
3
4
  import { customElement } from 'lit/decorators/custom-element.js';
4
5
  import { property } from 'lit/decorators/property.js';
@@ -19,13 +20,11 @@ let PfPanel = class PfPanel extends LitElement {
19
20
  constructor() {
20
21
  super(...arguments);
21
22
  this.scrollable = false;
22
- this.#slots = new SlotController(this, 'header', null, 'footer');
23
+ _PfPanel_slots.set(this, new SlotController(this, 'header', null, 'footer'));
23
24
  }
24
- static { this.styles = [styles]; }
25
- #slots;
26
25
  render() {
27
- const hasHeader = this.#slots.hasSlotted('header');
28
- const hasFooter = this.#slots.hasSlotted('footer');
26
+ const hasHeader = __classPrivateFieldGet(this, _PfPanel_slots, "f").hasSlotted('header');
27
+ const hasFooter = __classPrivateFieldGet(this, _PfPanel_slots, "f").hasSlotted('footer');
29
28
  return html `
30
29
  <slot name="header" role="region" ?hidden="${!hasHeader}"></slot>
31
30
  <hr role="presentation" ?hidden="${!hasHeader}">
@@ -34,6 +33,8 @@ let PfPanel = class PfPanel extends LitElement {
34
33
  `;
35
34
  }
36
35
  };
36
+ _PfPanel_slots = new WeakMap();
37
+ PfPanel.styles = [styles];
37
38
  __decorate([
38
39
  property({ type: Boolean, reflect: true })
39
40
  ], PfPanel.prototype, "scrollable", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-panel.js","sourceRoot":"","sources":["pf-panel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;;;AAIrF;;;;;;;;;GASG;AAEH,IAAa,OAAO,GAApB,MAAa,OAAQ,SAAQ,UAAU;IAAvC;;QAG8C,eAAU,GAAG,KAAK,CAAC;QAI/D,WAAM,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAY9D,CAAC;aAlBiB,WAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;IAMlC,MAAM,CAAsD;IAE5D,MAAM;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,CAAA;mDACoC,CAAC,SAAS;yCACpB,CAAC,SAAS;;mDAEA,CAAC,SAAS;KACxD,CAAC;IACJ,CAAC;;AAf2C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAoB;AAElC;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCAAiC;AALlD,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAmBnB;SAnBY,OAAO","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport styles from './pf-panel.css';\n\n/**\n * The **panel** component is a container that supports flexible content layouts. It can\n * be used to house other components such as fields, forms, videos, buttons, and more.\n * The panel should not be confused with the [drawer](https://www.patternfly.org/v4/components/drawer/design-guidelines/)\n * component, which allows you to surface information via a collapsable container.\n *\n * @slot header - Place header content here\n * @slot - Place main content here\n * @slot footer - Place footer content here\n */\n@customElement('pf-panel')\nexport class PfPanel extends LitElement {\n static readonly styles = [styles];\n\n @property({ type: Boolean, reflect: true }) scrollable = false;\n\n @property({ reflect: true }) variant?: 'raised' | 'bordered';\n\n #slots = new SlotController(this, 'header', null, 'footer');\n\n render() {\n const hasHeader = this.#slots.hasSlotted('header');\n const hasFooter = this.#slots.hasSlotted('footer');\n return html`\n <slot name=\"header\" role=\"region\" ?hidden=\"${!hasHeader}\"></slot>\n <hr role=\"presentation\" ?hidden=\"${!hasHeader}\">\n <slot></slot>\n <slot name=\"footer\" role=\"region\" ?hidden=\"${!hasFooter}\"></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-panel': PfPanel;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-panel.js","sourceRoot":"","sources":["pf-panel.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;;;AAIrF;;;;;;;;;GASG;AAEH,IAAa,OAAO,GAApB,MAAa,OAAQ,SAAQ,UAAU;IAAvC;;QAG8C,eAAU,GAAG,KAAK,CAAC;QAI/D,yBAAS,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAC;IAY9D,CAAC;IAVC,MAAM;QACJ,MAAM,SAAS,GAAG,uBAAA,IAAI,sBAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,uBAAA,IAAI,sBAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,CAAA;mDACoC,CAAC,SAAS;yCACpB,CAAC,SAAS;;mDAEA,CAAC,SAAS;KACxD,CAAC;IACJ,CAAC;;;AAjBe,cAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAEU;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAoB;AAElC;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCAAiC;AALlD,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAmBnB;SAnBY,OAAO","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport styles from './pf-panel.css';\n\n/**\n * The **panel** component is a container that supports flexible content layouts. It can\n * be used to house other components such as fields, forms, videos, buttons, and more.\n * The panel should not be confused with the [drawer](https://www.patternfly.org/v4/components/drawer/design-guidelines/)\n * component, which allows you to surface information via a collapsable container.\n *\n * @slot header - Place header content here\n * @slot - Place main content here\n * @slot footer - Place footer content here\n */\n@customElement('pf-panel')\nexport class PfPanel extends LitElement {\n static readonly styles = [styles];\n\n @property({ type: Boolean, reflect: true }) scrollable = false;\n\n @property({ reflect: true }) variant?: 'raised' | 'bordered';\n\n #slots = new SlotController(this, 'header', null, 'footer');\n\n render() {\n const hasHeader = this.#slots.hasSlotted('header');\n const hasFooter = this.#slots.hasSlotted('footer');\n return html`\n <slot name=\"header\" role=\"region\" ?hidden=\"${!hasHeader}\"></slot>\n <hr role=\"presentation\" ?hidden=\"${!hasHeader}\">\n <slot></slot>\n <slot name=\"footer\" role=\"region\" ?hidden=\"${!hasFooter}\"></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-panel': PfPanel;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, type PropertyValues } from 'lit';
2
2
  import { ComposedEvent } from '@patternfly/pfe-core/core.js';
3
3
  import type { Placement } from '@patternfly/pfe-core/controllers/floating-dom-controller.js';
4
4
  import '@patternfly/elements/pf-button/pf-button.js';
@@ -244,7 +244,7 @@ export declare class PfPopover extends LitElement {
244
244
  * Removes event listeners from the old trigger element and attaches
245
245
  * them to the new trigger element.
246
246
  */
247
- triggerChanged(oldValue?: string, newValue?: string): void;
247
+ willUpdate(changed: PropertyValues<this>): void;
248
248
  /**
249
249
  * Toggle the popover
250
250
  */