@patternfly/elements 2.3.2 → 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 (169) 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-banner/pf-banner.d.ts +4 -0
  149. package/react/pf-banner/pf-banner.js +10 -0
  150. package/react/pf-progress/pf-progress.d.ts +4 -0
  151. package/react/pf-progress/pf-progress.js +10 -0
  152. package/react/pf-table/pf-caption.d.ts +4 -0
  153. package/react/pf-table/pf-caption.js +10 -0
  154. package/react/pf-table/pf-table.d.ts +4 -0
  155. package/react/pf-table/pf-table.js +10 -0
  156. package/react/pf-table/pf-tbody.d.ts +4 -0
  157. package/react/pf-table/pf-tbody.js +10 -0
  158. package/react/pf-table/pf-td.d.ts +4 -0
  159. package/react/pf-table/pf-td.js +10 -0
  160. package/react/pf-table/pf-th.d.ts +4 -0
  161. package/react/pf-table/pf-th.js +10 -0
  162. package/react/pf-table/pf-thead.d.ts +4 -0
  163. package/react/pf-table/pf-thead.js +10 -0
  164. package/react/pf-table/pf-tr.d.ts +4 -0
  165. package/react/pf-table/pf-tr.js +10 -0
  166. package/react/pf-tabs/pf-tab.d.ts +1 -1
  167. package/react/pf-tabs/pf-tab.js +1 -1
  168. package/react/pf-text-input/pf-text-input.d.ts +4 -0
  169. package/react/pf-text-input/pf-text-input.js +10 -0
@@ -0,0 +1,37 @@
1
+ var _PfThead_instances, _PfThead_onSlotchange;
2
+ import { __classPrivateFieldGet, __decorate } from "tslib";
3
+ import { LitElement, html } from 'lit';
4
+ import { customElement } from 'lit/decorators/custom-element.js';
5
+ import { css } from "lit";
6
+ const styles = css `:host{--pf-c-table--cell--MinWidth:var(--pf-c-table--m-truncate--cell--MinWidth);--pf-c-table--cell--MaxWidth:var(--pf-c-table--m-truncate--cell--MaxWidth);--pf-c-table--cell--Overflow:hidden;--pf-c-table--cell--TextOverflow:ellipsis;--pf-c-table--cell--WhiteSpace:nowrap;--pf-c-table--cell--FontSize:var(--pf-c-table--thead--cell--FontSize, var(--pf-global--FontSize--sm, 0.875rem));--pf-c-table--cell--FontWeight:var(--pf-c-table--thead--cell--FontWeight, var(--pf-global--FontWeight--bold, 700));vertical-align:bottom;display:grid;visibility:visible}@media (max-width:768px){:host{display:none;visibility:hidden}}`;
7
+ /**
8
+ * Table head
9
+ * @slot - Place element content here
10
+ */
11
+ let PfThead = class PfThead extends LitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ _PfThead_instances.add(this);
15
+ }
16
+ connectedCallback() {
17
+ super.connectedCallback();
18
+ this.setAttribute('role', 'rowgroup');
19
+ }
20
+ render() {
21
+ return html `
22
+ <slot @slotchange=${__classPrivateFieldGet(this, _PfThead_instances, "m", _PfThead_onSlotchange)}></slot>
23
+ `;
24
+ }
25
+ };
26
+ _PfThead_instances = new WeakSet();
27
+ _PfThead_onSlotchange = function _PfThead_onSlotchange() {
28
+ for (const th of this.querySelectorAll(':scope > pf-th')) {
29
+ th.setAttribute('role', 'columnheader');
30
+ }
31
+ };
32
+ PfThead.styles = [styles];
33
+ PfThead = __decorate([
34
+ customElement('pf-thead')
35
+ ], PfThead);
36
+ export { PfThead };
37
+ //# sourceMappingURL=pf-thead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-thead.js","sourceRoot":"","sources":["pf-thead.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;;;AAIjE;;;GAGG;AAEH,IAAa,OAAO,GAApB,MAAa,OAAQ,SAAQ,UAAU;IAAvC;;;IAmBA,CAAC;IAhBC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;0BACW,uBAAA,IAAI,iDAAc;KACvC,CAAC;IACJ,CAAC;;;;IAGC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE;QACxD,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KACzC;AACH,CAAC;AAjBe,cAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AADvB,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';\n\nimport styles from './pf-thead.css';\n\n/**\n * Table head\n * @slot - Place element content here\n */\n@customElement('pf-thead')\nexport class PfThead extends LitElement {\n static readonly styles = [styles];\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'rowgroup');\n }\n\n render() {\n return html`\n <slot @slotchange=${this.#onSlotchange}></slot>\n `;\n }\n\n #onSlotchange() {\n for (const th of this.querySelectorAll(':scope > pf-th')) {\n th.setAttribute('role', 'columnheader');\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-thead': PfThead;\n }\n}\n"]}
@@ -0,0 +1,87 @@
1
+ :host {
2
+ display: grid;
3
+ align-items: center;
4
+ padding-inline-start: calc(50px * var(--_pf-table--expandable-rows, 0));
5
+ }
6
+
7
+ ::slotted(*) {
8
+ height: 100%;
9
+ }
10
+
11
+ @media (min-width: 768px) {
12
+ :host {
13
+ /* TODO: provide ability to override */
14
+ grid-template-columns: repeat(var(--_pf-table--number-of-columns), 1fr);
15
+ }
16
+ }
17
+
18
+ #container {
19
+ display: contents;
20
+ }
21
+
22
+ :host([expandable]),
23
+ #expansion {
24
+ position: relative;
25
+ }
26
+
27
+ #expansion {
28
+ display: block;
29
+ margin-inline-start: calc(-1 * 50px * var(--_pf-table--expandable-rows, 0));
30
+ grid-auto-flow: row;
31
+ grid-template-columns: auto;
32
+ padding: 0px 1.5rem;
33
+ display: grid;
34
+ grid-column: 1/-1;
35
+ }
36
+
37
+ :host(:not([expanded])),
38
+ :host([expanded]) #expansion {
39
+ border-block-end: 1px solid #d2d2d2;
40
+ }
41
+
42
+ :host([expanded]) #expansion::before {
43
+ content: '';
44
+ position: absolute;
45
+ inset: 0;
46
+ border-block-start: 1px solid #d2d2d2;
47
+ inset-block-start: -1px;
48
+ }
49
+
50
+
51
+ #expansion::slotted(pf-td) {
52
+ padding-block-start: 0;
53
+ padding-inline-start: 0;
54
+ }
55
+
56
+ :host([expandable][expanded])::before {
57
+ position: absolute;
58
+ inset-block-start: -1px;
59
+ inset-inline-end: 0;
60
+ inset-block-end: -1px;
61
+ inset-inline-start: 0;
62
+ content: "";
63
+ border-inline-start: 3px solid #06c;
64
+ pointer-events: none;
65
+ z-index: 1;
66
+ }
67
+
68
+ #expansion::slotted(pf-table) {
69
+ margin-block-end: -1px;
70
+ }
71
+
72
+ #toggle-cell {
73
+ z-index: 2;
74
+ position: absolute;
75
+ inset-inline-start: 0;
76
+ inset-block-start: 1.5rem;
77
+ padding: 0;
78
+ }
79
+
80
+ #toggle-icon {
81
+ transition: .2s ease-in 0s;
82
+ vertical-align: -0.125em;
83
+ }
84
+
85
+ :host([expanded]) #toggle-icon {
86
+ transform: rotate(90deg);
87
+ }
@@ -0,0 +1,34 @@
1
+ import { LitElement, type PropertyValues } from 'lit';
2
+ import '@patternfly/elements/pf-button/pf-button.js';
3
+ import '@patternfly/elements/pf-icon/pf-icon.js';
4
+ export declare class RequestExpandEvent extends Event {
5
+ /**
6
+ * if provided, the slot name for the compound-expanded cell
7
+ */
8
+ compoundExpanded: string | boolean;
9
+ /**
10
+ * if compoundExpanded is provided, a reference to the row
11
+ * must also be provided.
12
+ */
13
+ row?: PfTr;
14
+ constructor();
15
+ constructor(compoundExpanded: string | boolean, row: PfTr);
16
+ }
17
+ /**
18
+ * Table row
19
+ * @slot - Place element content here
20
+ */
21
+ export declare class PfTr extends LitElement {
22
+ #private;
23
+ static readonly styles: import("lit").CSSResult[];
24
+ expandable: boolean | 'compound';
25
+ expanded: boolean | string;
26
+ connectedCallback(): void;
27
+ willUpdate(changed: PropertyValues<this>): void;
28
+ render(): (false | "" | import("lit-html").TemplateResult<1>)[];
29
+ }
30
+ declare global {
31
+ interface HTMLElementTagNameMap {
32
+ 'pf-tr': PfTr;
33
+ }
34
+ }
@@ -0,0 +1,164 @@
1
+ var _PfTr_instances, _PfTr_expandedChanged, _PfTr_expandableChanged, _PfTr_onClick;
2
+ import { __classPrivateFieldGet, __decorate } from "tslib";
3
+ import { LitElement, html } from 'lit';
4
+ import { customElement } from 'lit/decorators/custom-element.js';
5
+ import { property } from 'lit/decorators/property.js';
6
+ import { css } from "lit";
7
+ const styles = css `:host{display:grid;align-items:center;padding-inline-start:calc(50px * var(--_pf-table--expandable-rows,0))}::slotted(*){height:100%}@media (min-width:768px){:host{grid-template-columns:repeat(var(--_pf-table--number-of-columns),1fr)}}#container{display:contents}#expansion,:host([expandable]){position:relative}#expansion{display:block;margin-inline-start:calc(-1 * 50px * var(--_pf-table--expandable-rows,0));grid-auto-flow:row;grid-template-columns:auto;padding:0 1.5rem;display:grid;grid-column:1/-1}:host(:not([expanded])),:host([expanded]) #expansion{border-block-end:1px solid #d2d2d2}:host([expanded]) #expansion::before{content:'';position:absolute;inset:0;border-block-start:1px solid #d2d2d2;inset-block-start:-1px}#expansion::slotted(pf-td){padding-block-start:0;padding-inline-start:0}:host([expandable][expanded])::before{position:absolute;inset-block-start:-1px;inset-inline-end:0;inset-block-end:-1px;inset-inline-start:0;content:"";border-inline-start:3px solid #06c;pointer-events:none;z-index:1}#expansion::slotted(pf-table){margin-block-end:-1px}#toggle-cell{z-index:2;position:absolute;inset-inline-start:0;inset-block-start:1.5rem;padding:0}#toggle-icon{transition:.2s ease-in 0s;vertical-align:-.125em}:host([expanded]) #toggle-icon{transform:rotate(90deg)}`;
8
+ import { ifDefined } from 'lit/directives/if-defined.js';
9
+ import '@patternfly/elements/pf-button/pf-button.js';
10
+ import '@patternfly/elements/pf-icon/pf-icon.js';
11
+ export class RequestExpandEvent extends Event {
12
+ constructor(compoundExpanded, row) {
13
+ super('request-expand', {
14
+ bubbles: true,
15
+ cancelable: true,
16
+ });
17
+ /**
18
+ * if provided, the slot name for the compound-expanded cell
19
+ */
20
+ this.compoundExpanded = false;
21
+ if (row) {
22
+ this.compoundExpanded = compoundExpanded ?? false;
23
+ this.row = row;
24
+ }
25
+ }
26
+ }
27
+ function BooleanEnumConverter(...allowedAttributes) {
28
+ const values = new Set(allowedAttributes);
29
+ return {
30
+ fromAttribute(value) {
31
+ if (value && values.has(value.toLowerCase())) {
32
+ return value;
33
+ }
34
+ else {
35
+ return value != null;
36
+ }
37
+ },
38
+ toAttribute(value) {
39
+ if (!value) {
40
+ return null;
41
+ }
42
+ else if (value === 'compound') {
43
+ return value;
44
+ }
45
+ else {
46
+ return '';
47
+ }
48
+ }
49
+ };
50
+ }
51
+ const StringOrBooleanConverter = {
52
+ fromAttribute(value) {
53
+ return value || value !== null;
54
+ },
55
+ toAttribute(value) {
56
+ if (!value) {
57
+ return null;
58
+ }
59
+ else if (typeof value === 'string') {
60
+ return value;
61
+ }
62
+ else {
63
+ return '';
64
+ }
65
+ }
66
+ };
67
+ /**
68
+ * Table row
69
+ * @slot - Place element content here
70
+ */
71
+ let PfTr = class PfTr extends LitElement {
72
+ constructor() {
73
+ super(...arguments);
74
+ _PfTr_instances.add(this);
75
+ this.expandable = false;
76
+ this.expanded = false;
77
+ }
78
+ connectedCallback() {
79
+ super.connectedCallback();
80
+ __classPrivateFieldGet(this, _PfTr_instances, "m", _PfTr_expandableChanged).call(this);
81
+ }
82
+ willUpdate(changed) {
83
+ if (changed.has('expandable')) {
84
+ __classPrivateFieldGet(this, _PfTr_instances, "m", _PfTr_expandableChanged).call(this);
85
+ }
86
+ if (changed.has('expanded')) {
87
+ __classPrivateFieldGet(this, _PfTr_instances, "m", _PfTr_expandedChanged).call(this);
88
+ }
89
+ }
90
+ render() {
91
+ return [
92
+ this.expandable && this.expandable !== 'compound' && html `
93
+ <pf-td id="toggle-cell">
94
+ <pf-button id="toggle-button"
95
+ aria-expanded=${String(this.expanded)}
96
+ plain
97
+ @click=${__classPrivateFieldGet(this, _PfTr_instances, "m", _PfTr_onClick)}>
98
+ <pf-icon id="toggle-icon"
99
+ icon="angle-right"
100
+ size="md"
101
+ ></pf-icon>
102
+ </pf-button>
103
+ </pf-td>
104
+ `,
105
+ html `
106
+ <div id="container">
107
+ <slot role="${ifDefined(this.expandable ? 'row' : undefined)}"></slot>
108
+ </div>
109
+ `,
110
+ this.expandable && this.expandable !== 'compound' && this.expanded && html `
111
+ <slot id="expansion"
112
+ name="expansion"
113
+ role="row"
114
+ ></slot>
115
+ `,
116
+ this.expandable === 'compound' && html `
117
+ <div id="expansion">${!this.expanded ? '' : html `
118
+ <slot name="${this.expanded}"></slot>`}
119
+ </div>
120
+ `
121
+ ].filter(Boolean);
122
+ }
123
+ };
124
+ _PfTr_instances = new WeakSet();
125
+ _PfTr_expandedChanged = function _PfTr_expandedChanged() {
126
+ // disallow setting `expanded` unless `expandable` is also set
127
+ if (this.expanded && !this.expandable) {
128
+ this.expanded = false;
129
+ }
130
+ };
131
+ _PfTr_expandableChanged = function _PfTr_expandableChanged() {
132
+ switch (this.expandable) {
133
+ case 'compound': {
134
+ // TODO: do we need tab roles now?
135
+ break;
136
+ }
137
+ case true:
138
+ this.setAttribute('role', 'rowgroup');
139
+ break;
140
+ default:
141
+ this.setAttribute('role', 'row');
142
+ }
143
+ };
144
+ _PfTr_onClick = function _PfTr_onClick() {
145
+ this.dispatchEvent(new RequestExpandEvent());
146
+ };
147
+ PfTr.styles = [styles];
148
+ __decorate([
149
+ property({
150
+ reflect: true,
151
+ converter: BooleanEnumConverter('compound'),
152
+ })
153
+ ], PfTr.prototype, "expandable", void 0);
154
+ __decorate([
155
+ property({
156
+ reflect: true,
157
+ converter: StringOrBooleanConverter
158
+ })
159
+ ], PfTr.prototype, "expanded", void 0);
160
+ PfTr = __decorate([
161
+ customElement('pf-tr')
162
+ ], PfTr);
163
+ export { PfTr };
164
+ //# sourceMappingURL=pf-tr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-tr.js","sourceRoot":"","sources":["pf-tr.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, type ComplexAttributeConverter, type PropertyValues } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport styles from './pf-tr.css';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nexport class RequestExpandEvent extends Event {\n /**\n * if provided, the slot name for the compound-expanded cell\n */\n public compoundExpanded: string | boolean = false;\n\n /**\n * if compoundExpanded is provided, a reference to the row\n * must also be provided.\n */\n public row?: PfTr;\n\n constructor();\n constructor(compoundExpanded: string | boolean, row: PfTr);\n constructor(compoundExpanded?: string | boolean, row?: PfTr) {\n super('request-expand', {\n bubbles: true,\n cancelable: true,\n });\n if (row) {\n this.compoundExpanded = compoundExpanded ?? false;\n this.row = row;\n }\n }\n}\n\nfunction BooleanEnumConverter(...allowedAttributes: string[]): ComplexAttributeConverter {\n const values = new Set(allowedAttributes);\n return {\n fromAttribute(value) {\n if (value && values.has(value.toLowerCase())) {\n return value;\n } else {\n return value != null;\n }\n },\n toAttribute(value) {\n if (!value) {\n return null;\n } else if (value === 'compound') {\n return value;\n } else {\n return '';\n }\n }\n };\n}\n\nconst StringOrBooleanConverter: ComplexAttributeConverter = {\n fromAttribute(value) {\n return value || value !== null;\n },\n toAttribute(value) {\n if (!value) {\n return null;\n } else if (typeof value === 'string') {\n return value;\n } else {\n return '';\n }\n }\n};\n\n/**\n * Table row\n * @slot - Place element content here\n */\n@customElement('pf-tr')\nexport class PfTr extends LitElement {\n static readonly styles = [styles];\n\n @property({\n reflect: true,\n converter: BooleanEnumConverter('compound'),\n }) expandable: boolean | 'compound' = false;\n\n @property({\n reflect: true,\n converter: StringOrBooleanConverter\n }) expanded: boolean | string = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#expandableChanged();\n }\n\n override willUpdate(changed: PropertyValues<this>) {\n if (changed.has('expandable')) {\n this.#expandableChanged();\n }\n if (changed.has('expanded')) {\n this.#expandedChanged();\n }\n }\n\n render() {\n return [\n this.expandable && this.expandable !== 'compound' && html`\n <pf-td id=\"toggle-cell\">\n <pf-button id=\"toggle-button\"\n aria-expanded=${String(this.expanded) as 'true' | 'false'}\n plain\n @click=${this.#onClick}>\n <pf-icon id=\"toggle-icon\"\n icon=\"angle-right\"\n size=\"md\"\n ></pf-icon>\n </pf-button>\n </pf-td>\n `,\n\n html`\n <div id=\"container\">\n <slot role=\"${ifDefined(this.expandable ? 'row' : undefined)}\"></slot>\n </div>\n `,\n\n this.expandable && this.expandable !== 'compound' && this.expanded && html`\n <slot id=\"expansion\"\n name=\"expansion\"\n role=\"row\"\n ></slot>\n `,\n\n this.expandable === 'compound' && html`\n <div id=\"expansion\">${!this.expanded ? '' : html`\n <slot name=\"${this.expanded}\"></slot>`}\n </div>\n `\n ].filter(Boolean);\n }\n\n #expandedChanged() {\n // disallow setting `expanded` unless `expandable` is also set\n if (this.expanded && !this.expandable) {\n this.expanded = false;\n }\n }\n\n #expandableChanged() {\n switch (this.expandable) {\n case 'compound': {\n // TODO: do we need tab roles now?\n break;\n }\n case true:\n this.setAttribute('role', 'rowgroup');\n break;\n default:\n this.setAttribute('role', 'row');\n }\n }\n\n #onClick() {\n this.dispatchEvent(new RequestExpandEvent());\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-tr': PfTr;\n }\n}\n"]}
@@ -6,6 +6,9 @@ export declare class TabExpandEvent extends ComposedEvent {
6
6
  tab: BaseTab;
7
7
  constructor(active: boolean, tab: BaseTab);
8
8
  }
9
+ /**
10
+ * @fires {TabExpandEvent} expand - when a tab is selected
11
+ */
9
12
  export declare abstract class BaseTab extends LitElement {
10
13
  #private;
11
14
  static readonly styles: import("lit").CSSResult[];
@@ -1,4 +1,5 @@
1
- import { __decorate } from "tslib";
1
+ var _BaseTab_instances, _BaseTab_internals, _BaseTab_clickHandler, _BaseTab_activeChanged, _BaseTab_disabledChanged;
2
+ import { __classPrivateFieldGet, __decorate } from "tslib";
2
3
  import { LitElement, html } from 'lit';
3
4
  import { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';
4
5
  import { query } from 'lit/decorators/query.js';
@@ -13,15 +14,20 @@ export class TabExpandEvent extends ComposedEvent {
13
14
  this.tab = tab;
14
15
  }
15
16
  }
17
+ /**
18
+ * @fires {TabExpandEvent} expand - when a tab is selected
19
+ */
16
20
  class BaseTab extends LitElement {
17
- static { this.styles = [style]; }
18
- static { this.shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true }; }
19
- #internals = this.attachInternals();
21
+ constructor() {
22
+ super(...arguments);
23
+ _BaseTab_instances.add(this);
24
+ _BaseTab_internals.set(this, this.attachInternals());
25
+ }
20
26
  connectedCallback() {
21
27
  super.connectedCallback();
22
- this.id ||= getRandomId(this.localName);
23
- this.addEventListener('click', this.#clickHandler);
24
- this.#internals.role = 'tab';
28
+ this.id || (this.id = getRandomId(this.localName));
29
+ this.addEventListener('click', __classPrivateFieldGet(this, _BaseTab_instances, "m", _BaseTab_clickHandler));
30
+ __classPrivateFieldGet(this, _BaseTab_internals, "f").role = 'tab';
25
31
  }
26
32
  render() {
27
33
  return html `
@@ -35,41 +41,36 @@ class BaseTab extends LitElement {
35
41
  `;
36
42
  }
37
43
  updated(changed) {
38
- this.#internals.ariaSelected = String(this.ariaSelected);
44
+ __classPrivateFieldGet(this, _BaseTab_internals, "f").ariaSelected = String(this.ariaSelected);
39
45
  if (changed.has('active')) {
40
- this.#activeChanged();
46
+ __classPrivateFieldGet(this, _BaseTab_instances, "m", _BaseTab_activeChanged).call(this);
41
47
  }
42
48
  if (changed.has('disabled')) {
43
- this.#disabledChanged();
49
+ __classPrivateFieldGet(this, _BaseTab_instances, "m", _BaseTab_disabledChanged).call(this);
44
50
  }
45
51
  }
46
52
  focus() {
47
53
  this.button.focus();
48
54
  }
49
- #clickHandler() {
50
- if (!this.disabled && this.#internals.ariaDisabled !== 'true' && this.ariaDisabled !== 'true') {
51
- this.active = true;
52
- this.focus(); // safari fix
53
- }
55
+ }
56
+ _BaseTab_internals = new WeakMap(), _BaseTab_instances = new WeakSet(), _BaseTab_clickHandler = function _BaseTab_clickHandler() {
57
+ if (!this.disabled && __classPrivateFieldGet(this, _BaseTab_internals, "f").ariaDisabled !== 'true' && this.ariaDisabled !== 'true') {
58
+ this.active = true;
59
+ this.focus(); // safari fix
54
60
  }
55
- #activeChanged() {
56
- if (this.active && !this.disabled) {
57
- this.#internals.ariaSelected = 'true';
58
- }
59
- else {
60
- this.#internals.ariaSelected = 'false';
61
- }
62
- this.dispatchEvent(new TabExpandEvent(this.active, this));
61
+ }, _BaseTab_activeChanged = function _BaseTab_activeChanged() {
62
+ if (this.active && !this.disabled) {
63
+ __classPrivateFieldGet(this, _BaseTab_internals, "f").ariaSelected = 'true';
63
64
  }
64
- /**
65
- * if a tab is disabled, then it is also aria-disabled
66
- * if a tab is removed from disabled its not necessarily
67
- * not still aria-disabled so we don't remove the aria-disabled
68
- */
69
- #disabledChanged() {
70
- this.#internals.ariaDisabled = String(!!this.disabled);
65
+ else {
66
+ __classPrivateFieldGet(this, _BaseTab_internals, "f").ariaSelected = 'false';
71
67
  }
72
- }
68
+ this.dispatchEvent(new TabExpandEvent(this.active, this));
69
+ }, _BaseTab_disabledChanged = function _BaseTab_disabledChanged() {
70
+ __classPrivateFieldGet(this, _BaseTab_internals, "f").ariaDisabled = String(!!this.disabled);
71
+ };
72
+ BaseTab.styles = [style];
73
+ BaseTab.shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };
73
74
  __decorate([
74
75
  queryAssignedElements({ slot: 'icon', flatten: true })
75
76
  ], BaseTab.prototype, "icons", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTab.js","sourceRoot":"","sources":["BaseTab.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;;;AAIrD,MAAM,OAAO,cAAe,SAAQ,aAAa;IAC/C,YACS,MAAe,EACf,GAAY;QAEnB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHT,WAAM,GAAN,MAAM,CAAS;QACf,QAAG,GAAH,GAAG,CAAS;IAGrB,CAAC;CACF;AAED,MAAsB,OAAQ,SAAQ,UAAU;aAC9B,WAAM,GAAG,CAAC,KAAK,CAAC,CAAC;aAE1B,sBAAiB,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAarF,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAEpC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;yCAC0B,IAAI,CAAC,QAAQ;;;yBAG7B,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;6BACd,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;KAGlD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;YAC7F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa;SAC5B;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC;SACxC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACd,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;;AApEO;IADP,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCACpB;AAEV;IAAxB,KAAK,CAAC,QAAQ,CAAC;uCAAoC;SARhC,OAAO","sourcesContent":["import type { PropertyValues } from 'lit';\n\nimport { LitElement, html } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { query } from 'lit/decorators/query.js';\n\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\nimport { ComposedEvent } from '@patternfly/pfe-core';\n\nimport style from './BaseTab.css';\n\nexport class TabExpandEvent extends ComposedEvent {\n constructor(\n public active: boolean,\n public tab: BaseTab,\n ) {\n super('expand');\n }\n}\n\nexport abstract class BaseTab extends LitElement {\n static readonly styles = [style];\n\n static shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };\n\n @queryAssignedElements({ slot: 'icon', flatten: true })\n private icons!: Array<HTMLElement>;\n\n @query('button') private button!: HTMLButtonElement;\n\n /** `active` should be observed, and true when the tab is selected */\n abstract active: boolean;\n\n /** `active` should be observed, and true when the tab is disabled */\n abstract disabled: boolean;\n\n #internals = this.attachInternals();\n\n connectedCallback() {\n super.connectedCallback();\n this.id ||= getRandomId(this.localName);\n this.addEventListener('click', this.#clickHandler);\n this.#internals.role = 'tab';\n }\n\n render() {\n return html`\n <button part=\"button\" ?disabled=\"${this.disabled}\">\n <slot name=\"icon\"\n part=\"icon\"\n ?hidden=\"${!this.icons.length}\"\n @slotchange=\"${() => this.requestUpdate()}\"></slot>\n <slot part=\"text\"></slot>\n </button>\n `;\n }\n\n updated(changed: PropertyValues<this>) {\n this.#internals.ariaSelected = String(this.ariaSelected);\n if (changed.has('active')) {\n this.#activeChanged();\n }\n if (changed.has('disabled')) {\n this.#disabledChanged();\n }\n }\n\n focus() {\n this.button.focus();\n }\n\n #clickHandler() {\n if (!this.disabled && this.#internals.ariaDisabled !== 'true' && this.ariaDisabled !== 'true') {\n this.active = true;\n this.focus(); // safari fix\n }\n }\n\n #activeChanged() {\n if (this.active && !this.disabled) {\n this.#internals.ariaSelected = 'true';\n } else {\n this.#internals.ariaSelected = 'false';\n }\n this.dispatchEvent(new TabExpandEvent(this.active, this));\n }\n\n /**\n * if a tab is disabled, then it is also aria-disabled\n * if a tab is removed from disabled its not necessarily\n * not still aria-disabled so we don't remove the aria-disabled\n */\n #disabledChanged() {\n this.#internals.ariaDisabled = String(!!this.disabled);\n }\n}\n"]}
1
+ {"version":3,"file":"BaseTab.js","sourceRoot":"","sources":["BaseTab.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyValues } from 'lit';\n\nimport { LitElement, html } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { query } from 'lit/decorators/query.js';\n\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\nimport { ComposedEvent } from '@patternfly/pfe-core';\n\nimport style from './BaseTab.css';\n\nexport class TabExpandEvent extends ComposedEvent {\n constructor(\n public active: boolean,\n public tab: BaseTab,\n ) {\n super('expand');\n }\n}\n\n/**\n * @fires {TabExpandEvent} expand - when a tab is selected\n */\nexport abstract class BaseTab extends LitElement {\n static readonly styles = [style];\n\n static shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };\n\n @queryAssignedElements({ slot: 'icon', flatten: true })\n private icons!: Array<HTMLElement>;\n\n @query('button') private button!: HTMLButtonElement;\n\n /** `active` should be observed, and true when the tab is selected */\n abstract active: boolean;\n\n /** `active` should be observed, and true when the tab is disabled */\n abstract disabled: boolean;\n\n #internals = this.attachInternals();\n\n connectedCallback() {\n super.connectedCallback();\n this.id ||= getRandomId(this.localName);\n this.addEventListener('click', this.#clickHandler);\n this.#internals.role = 'tab';\n }\n\n render() {\n return html`\n <button part=\"button\" ?disabled=\"${this.disabled}\">\n <slot name=\"icon\"\n part=\"icon\"\n ?hidden=\"${!this.icons.length}\"\n @slotchange=\"${() => this.requestUpdate()}\"></slot>\n <slot part=\"text\"></slot>\n </button>\n `;\n }\n\n updated(changed: PropertyValues<this>) {\n this.#internals.ariaSelected = String(this.ariaSelected);\n if (changed.has('active')) {\n this.#activeChanged();\n }\n if (changed.has('disabled')) {\n this.#disabledChanged();\n }\n }\n\n focus() {\n this.button.focus();\n }\n\n #clickHandler() {\n if (!this.disabled && this.#internals.ariaDisabled !== 'true' && this.ariaDisabled !== 'true') {\n this.active = true;\n this.focus(); // safari fix\n }\n }\n\n #activeChanged() {\n if (this.active && !this.disabled) {\n this.#internals.ariaSelected = 'true';\n } else {\n this.#internals.ariaSelected = 'false';\n }\n this.dispatchEvent(new TabExpandEvent(this.active, this));\n }\n\n /**\n * if a tab is disabled, then it is also aria-disabled\n * if a tab is removed from disabled its not necessarily\n * not still aria-disabled so we don't remove the aria-disabled\n */\n #disabledChanged() {\n this.#internals.ariaDisabled = String(!!this.disabled);\n }\n}\n"]}
@@ -1,10 +1,14 @@
1
+ var _BaseTabPanel_internals;
2
+ import { __classPrivateFieldGet } from "tslib";
1
3
  import { LitElement, html } from 'lit';
2
4
  import { css } from "lit";
3
5
  const style = css `:host{display:block}:host([hidden]){display:none}`;
4
6
  import { getRandomId } from '@patternfly/pfe-core/functions/random.js';
5
7
  class BaseTabPanel extends LitElement {
6
- static { this.styles = [style]; }
7
- #internals = this.attachInternals();
8
+ constructor() {
9
+ super(...arguments);
10
+ _BaseTabPanel_internals.set(this, this.attachInternals());
11
+ }
8
12
  render() {
9
13
  return html `
10
14
  <slot></slot>
@@ -12,9 +16,9 @@ class BaseTabPanel extends LitElement {
12
16
  }
13
17
  connectedCallback() {
14
18
  super.connectedCallback();
15
- this.id ||= getRandomId('pf-tab-panel');
16
- this.hidden ??= true;
17
- this.#internals.role = 'tabpanel';
19
+ this.id || (this.id = getRandomId('pf-tab-panel'));
20
+ this.hidden ?? (this.hidden = true);
21
+ __classPrivateFieldGet(this, _BaseTabPanel_internals, "f").role = 'tabpanel';
18
22
  /*
19
23
  To make it easy for screen reader users to navigate from a tab
20
24
  to the beginning of content in the active tabpanel, the tabpanel
@@ -27,5 +31,7 @@ class BaseTabPanel extends LitElement {
27
31
  this.tabIndex = 0;
28
32
  }
29
33
  }
34
+ _BaseTabPanel_internals = new WeakMap();
35
+ BaseTabPanel.styles = [style];
30
36
  export { BaseTabPanel };
31
37
  //# sourceMappingURL=BaseTabPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTabPanel.js","sourceRoot":"","sources":["BaseTabPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;;;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,MAAsB,YAAa,SAAQ,UAAU;aACnC,WAAM,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAEpC,MAAM;QACJ,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;QAElC;;;;;;;;UAQE;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;;SA3BmB,YAAY","sourcesContent":["import { LitElement, html } from 'lit';\n\nimport style from './BaseTabPanel.css';\n\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nexport abstract class BaseTabPanel extends LitElement {\n static readonly styles = [style];\n\n #internals = this.attachInternals();\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.id ||= getRandomId('pf-tab-panel');\n this.hidden ??= true;\n this.#internals.role = 'tabpanel';\n\n /*\n To make it easy for screen reader users to navigate from a tab\n to the beginning of content in the active tabpanel, the tabpanel\n element has tabindex=\"0\" to include the panel in the page Tab sequence.\n It is recommended that all tabpanel elements in a tab set are focusable\n if there are any panels in the set that contain content where the first\n element in the panel is not focusable.\n https://www.w3.org/WAI/ARIA/apg/example-index/tabs/tabs-automatic\n */\n this.tabIndex = 0;\n }\n}\n"]}
1
+ {"version":3,"file":"BaseTabPanel.js","sourceRoot":"","sources":["BaseTabPanel.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;;;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,MAAsB,YAAa,SAAQ,UAAU;IAArD;;QAGE,kCAAa,IAAI,CAAC,eAAe,EAAE,EAAC;IAyBtC,CAAC;IAvBC,MAAM;QACJ,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,KAAP,IAAI,CAAC,EAAE,GAAK,WAAW,CAAC,cAAc,CAAC,EAAC;QACxC,IAAI,CAAC,MAAM,KAAX,IAAI,CAAC,MAAM,GAAK,IAAI,EAAC;QACrB,uBAAA,IAAI,+BAAW,CAAC,IAAI,GAAG,UAAU,CAAC;QAElC;;;;;;;;UAQE;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;;;AA1Be,mBAAM,GAAG,CAAC,KAAK,CAAC,AAAV,CAAW;SADb,YAAY","sourcesContent":["import { LitElement, html } from 'lit';\n\nimport style from './BaseTabPanel.css';\n\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nexport abstract class BaseTabPanel extends LitElement {\n static readonly styles = [style];\n\n #internals = this.attachInternals();\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.id ||= getRandomId('pf-tab-panel');\n this.hidden ??= true;\n this.#internals.role = 'tabpanel';\n\n /*\n To make it easy for screen reader users to navigate from a tab\n to the beginning of content in the active tabpanel, the tabpanel\n element has tabindex=\"0\" to include the panel in the page Tab sequence.\n It is recommended that all tabpanel elements in a tab set are focusable\n if there are any panels in the set that contain content where the first\n element in the panel is not focusable.\n https://www.w3.org/WAI/ARIA/apg/example-index/tabs/tabs-automatic\n */\n this.tabIndex = 0;\n }\n}\n"]}