@pine-ds/core 1.0.1 → 1.0.2

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 (110) hide show
  1. package/components/custom-elements.d.ts +2 -0
  2. package/components/index.d.ts +92 -0
  3. package/components/index.js +32 -0
  4. package/components/index.js.map +1 -0
  5. package/components/index2.js +14 -0
  6. package/components/index2.js.map +1 -0
  7. package/components/package.json +9 -0
  8. package/components/pds-accordion.d.ts +11 -0
  9. package/components/pds-accordion.js +74 -0
  10. package/components/pds-accordion.js.map +1 -0
  11. package/components/pds-avatar.d.ts +11 -0
  12. package/components/pds-avatar.js +103 -0
  13. package/components/pds-avatar.js.map +1 -0
  14. package/components/pds-box.d.ts +11 -0
  15. package/components/pds-box.js +124 -0
  16. package/components/pds-box.js.map +1 -0
  17. package/components/pds-button.d.ts +11 -0
  18. package/components/pds-button.js +8 -0
  19. package/components/pds-button.js.map +1 -0
  20. package/components/pds-button2.js +84 -0
  21. package/components/pds-button2.js.map +1 -0
  22. package/components/pds-checkbox.d.ts +11 -0
  23. package/components/pds-checkbox.js +8 -0
  24. package/components/pds-checkbox.js.map +1 -0
  25. package/components/pds-checkbox2.js +86 -0
  26. package/components/pds-checkbox2.js.map +1 -0
  27. package/components/pds-chip.d.ts +11 -0
  28. package/components/pds-chip.js +78 -0
  29. package/components/pds-chip.js.map +1 -0
  30. package/components/pds-copytext.d.ts +11 -0
  31. package/components/pds-copytext.js +88 -0
  32. package/components/pds-copytext.js.map +1 -0
  33. package/components/pds-divider.d.ts +11 -0
  34. package/components/pds-divider.js +54 -0
  35. package/components/pds-divider.js.map +1 -0
  36. package/components/pds-icon.js +8 -0
  37. package/components/pds-icon.js.map +1 -0
  38. package/components/pds-icon2.js +359 -0
  39. package/components/pds-icon2.js.map +1 -0
  40. package/components/pds-image.d.ts +11 -0
  41. package/components/pds-image.js +55 -0
  42. package/components/pds-image.js.map +1 -0
  43. package/components/pds-input.d.ts +11 -0
  44. package/components/pds-input.js +72 -0
  45. package/components/pds-input.js.map +1 -0
  46. package/components/pds-label.js +39 -0
  47. package/components/pds-label.js.map +1 -0
  48. package/components/pds-link.d.ts +11 -0
  49. package/components/pds-link.js +65 -0
  50. package/components/pds-link.js.map +1 -0
  51. package/components/pds-progress.d.ts +11 -0
  52. package/components/pds-progress.js +49 -0
  53. package/components/pds-progress.js.map +1 -0
  54. package/components/pds-radio.d.ts +11 -0
  55. package/components/pds-radio.js +78 -0
  56. package/components/pds-radio.js.map +1 -0
  57. package/components/pds-row.d.ts +11 -0
  58. package/components/pds-row.js +72 -0
  59. package/components/pds-row.js.map +1 -0
  60. package/components/pds-sortable-item.d.ts +11 -0
  61. package/components/pds-sortable-item.js +58 -0
  62. package/components/pds-sortable-item.js.map +1 -0
  63. package/components/pds-sortable.d.ts +11 -0
  64. package/components/pds-sortable.js +2722 -0
  65. package/components/pds-sortable.js.map +1 -0
  66. package/components/pds-switch.d.ts +11 -0
  67. package/components/pds-switch.js +82 -0
  68. package/components/pds-switch.js.map +1 -0
  69. package/components/pds-tab.d.ts +11 -0
  70. package/components/pds-tab.js +53 -0
  71. package/components/pds-tab.js.map +1 -0
  72. package/components/pds-table-body.d.ts +11 -0
  73. package/components/pds-table-body.js +36 -0
  74. package/components/pds-table-body.js.map +1 -0
  75. package/components/pds-table-cell.d.ts +11 -0
  76. package/components/pds-table-cell.js +8 -0
  77. package/components/pds-table-cell.js.map +1 -0
  78. package/components/pds-table-cell2.js +72 -0
  79. package/components/pds-table-cell2.js.map +1 -0
  80. package/components/pds-table-head-cell.d.ts +11 -0
  81. package/components/pds-table-head-cell.js +8 -0
  82. package/components/pds-table-head-cell.js.map +1 -0
  83. package/components/pds-table-head-cell2.js +96 -0
  84. package/components/pds-table-head-cell2.js.map +1 -0
  85. package/components/pds-table-head.d.ts +11 -0
  86. package/components/pds-table-head.js +56 -0
  87. package/components/pds-table-head.js.map +1 -0
  88. package/components/pds-table-row.d.ts +11 -0
  89. package/components/pds-table-row.js +78 -0
  90. package/components/pds-table-row.js.map +1 -0
  91. package/components/pds-table.d.ts +11 -0
  92. package/components/pds-table.js +100 -0
  93. package/components/pds-table.js.map +1 -0
  94. package/components/pds-tabpanel.d.ts +11 -0
  95. package/components/pds-tabpanel.js +45 -0
  96. package/components/pds-tabpanel.js.map +1 -0
  97. package/components/pds-tabs.d.ts +11 -0
  98. package/components/pds-tabs.js +119 -0
  99. package/components/pds-tabs.js.map +1 -0
  100. package/components/pds-textarea.d.ts +11 -0
  101. package/components/pds-textarea.js +82 -0
  102. package/components/pds-textarea.js.map +1 -0
  103. package/components/pds-tooltip.d.ts +11 -0
  104. package/components/pds-tooltip.js +178 -0
  105. package/components/pds-tooltip.js.map +1 -0
  106. package/dist/docs.json +1 -1
  107. package/hydrate/index.d.ts +218 -0
  108. package/hydrate/index.js +13120 -0
  109. package/hydrate/package.json +6 -0
  110. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { d as defineCustomElement$3 } from './pds-checkbox2.js';
3
+ import { d as defineCustomElement$2 } from './pds-table-cell2.js';
4
+
5
+ const pdsTableRowCss = ":host{--color-background-fixed:var(--pine-color-white);--color-background-interactive:var(--pine-color-grey-200);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--color-background-fixed);left:0;position:-webkit-sticky;position:sticky;z-index:1}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}";
6
+ const PdsTableRowStyle0 = pdsTableRowCss;
7
+
8
+ const PdsTableRow$1 = /*@__PURE__*/ proxyCustomElement(class PdsTableRow extends HTMLElement {
9
+ constructor() {
10
+ super();
11
+ this.__registerHost();
12
+ this.__attachShadow();
13
+ this.pdsTableRowSelected = createEvent(this, "pdsTableRowSelected", 7);
14
+ this.handleCheckboxClick = () => {
15
+ this.isSelected = !this.isSelected; // Toggle the selected state
16
+ const selectedIndex = Array.from(this.hostElement.parentNode.children).indexOf(this.hostElement);
17
+ this.pdsTableRowSelected.emit({ rowIndex: selectedIndex, isSelected: this.isSelected });
18
+ };
19
+ this.generateUniqueId = () => {
20
+ const randomString = Math.random().toString(36).substring(2, 8);
21
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
22
+ const uniqueId = `${randomString}-${timestamp}`;
23
+ return uniqueId;
24
+ };
25
+ this.isSelected = false;
26
+ }
27
+ classNames() {
28
+ const classNames = [];
29
+ if (this.isSelected) {
30
+ classNames.push("is-selected");
31
+ }
32
+ return classNames.join(' ');
33
+ }
34
+ componentWillRender() {
35
+ this.tableRef = this.hostElement.closest('pds-table');
36
+ if (this.tableRef && this.tableRef.fixedColumn) {
37
+ const tableCell = this.hostElement.querySelector('pds-table-cell');
38
+ tableCell === null || tableCell === void 0 ? void 0 : tableCell.classList.add("is-fixed");
39
+ }
40
+ }
41
+ render() {
42
+ return (h(Host, { key: '9ef478c127a101b918e3e444109a0a3b72d809d6', class: this.classNames(), role: "row" }, this.tableRef && this.tableRef.selectable && (h("pds-table-cell", { key: 'f7ecba3776fe1a5606ea66bc43f495e03635803f', part: this.tableRef.fixedColumn ? 'checkbox-cell' : '', class: this.tableRef.selectable ? 'has-checkbox' : '' }, h("pds-checkbox", { key: '6e4ebaa953542cb476f141818375b3ba8b490b2c', componentId: this.generateUniqueId(), onClick: this.handleCheckboxClick, label: "Select Row", labelHidden: true, checked: this.isSelected }))), h("slot", { key: '4ccbd6b1a81d420dec05acb4f7a404ee670959b3' })));
43
+ }
44
+ get hostElement() { return this; }
45
+ static get style() { return PdsTableRowStyle0; }
46
+ }, [1, "pds-table-row", {
47
+ "isSelected": [32]
48
+ }]);
49
+ function defineCustomElement$1() {
50
+ if (typeof customElements === "undefined") {
51
+ return;
52
+ }
53
+ const components = ["pds-table-row", "pds-checkbox", "pds-table-cell"];
54
+ components.forEach(tagName => { switch (tagName) {
55
+ case "pds-table-row":
56
+ if (!customElements.get(tagName)) {
57
+ customElements.define(tagName, PdsTableRow$1);
58
+ }
59
+ break;
60
+ case "pds-checkbox":
61
+ if (!customElements.get(tagName)) {
62
+ defineCustomElement$3();
63
+ }
64
+ break;
65
+ case "pds-table-cell":
66
+ if (!customElements.get(tagName)) {
67
+ defineCustomElement$2();
68
+ }
69
+ break;
70
+ } });
71
+ }
72
+
73
+ const PdsTableRow = PdsTableRow$1;
74
+ const defineCustomElement = defineCustomElement$1;
75
+
76
+ export { PdsTableRow, defineCustomElement };
77
+
78
+ //# sourceMappingURL=pds-table-row.js.map
@@ -0,0 +1 @@
1
+ {"file":"pds-table-row.js","mappings":";;;;AAAA,MAAM,cAAc,GAAG,uiBAAuiB,CAAC;AAC/jB,0BAAe,cAAc;;MCMhBA,aAAW;;;;;;QAcd,wBAAmB,GAAG;YAC5B,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACzF,CAAA;QAqBO,qBAAgB,GAAG;YACzB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,GAAG,YAAY,IAAI,SAAS,EAAE,CAAC;YAEhD,OAAO,QAAQ,CAAC;SACjB,CAAA;0BAjC8B,KAAK;;IAQ5B,UAAU;QAChB,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAChC;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,mBAAmB;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAwB,CAAC;QAE7E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YACnE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACtC;KACF;IAUD,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EACxB,IAAI,EAAC,KAAK,IAET,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KACxC,uEAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,eAAe,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,cAAc,GAAG,EAAE,IAC3H,qEACE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,EACpC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,IAAI,EACjB,OAAO,EAAE,IAAI,CAAC,UAAU,GACxB,CACa,CAClB,EACD,8DAAa,CACR,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PdsTableRow"],"sources":["src/components/pds-table/pds-table-row/pds-table-row.scss?tag=pds-table-row&encapsulation=shadow","src/components/pds-table/pds-table-row/pds-table-row.tsx"],"sourcesContent":[":host {\n --color-background-fixed: var(--pine-color-white);\n --color-background-interactive: var(--pine-color-grey-200);\n\n border-color: inherit;\n display: table-row;\n vertical-align: inherit;\n\n // used for pds-checkbox-cell\n // because it is in the ShadowDom\n &::part(checkbox-cell) {\n background-color: var(--color-background-fixed);\n left: 0;\n position: sticky;\n z-index: 1;\n }\n}\n\n:host(:hover),\n:host(:hover)::part(checkbox-cell),\n:host(:hover) ::slotted(pds-table-cell),\n:host(.is-selected),\n:host(.is-selected)::part(checkbox-cell),\n:host(.is-selected) ::slotted(pds-table-cell) {\n background: var(--color-background-interactive);\n}\n","import { Component, Element, Host, h, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'pds-table-row',\n styleUrl: 'pds-table-row.scss',\n shadow: true,\n})\nexport class PdsTableRow {\n @Element() hostElement: HTMLPdsTableRowElement;\n tableRef: HTMLPdsTableElement;\n\n /**\n * Event that is emitted when the checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableRowSelected: EventEmitter<{ rowIndex: number; isSelected: boolean; }>;\n\n /**\n * A local state to track whether the row is currently selected.\n */\n @State() isSelected: boolean = false;\n\n private handleCheckboxClick = () => {\n this.isSelected = !this.isSelected; // Toggle the selected state\n const selectedIndex = Array.from(this.hostElement.parentNode.children).indexOf(this.hostElement);\n this.pdsTableRowSelected.emit({ rowIndex: selectedIndex, isSelected: this.isSelected });\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.isSelected) {\n classNames.push(\"is-selected\");\n }\n\n return classNames.join(' ');\n }\n\n componentWillRender() {\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n if (this.tableRef && this.tableRef.fixedColumn) {\n const tableCell = this.hostElement.querySelector('pds-table-cell');\n tableCell?.classList.add(\"is-fixed\");\n }\n }\n\n private generateUniqueId = () => {\n const randomString = Math.random().toString(36).substring(2, 8);\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n const uniqueId = `${randomString}-${timestamp}`;\n\n return uniqueId;\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n role=\"row\"\n >\n {this.tableRef && this.tableRef.selectable && (\n <pds-table-cell part={this.tableRef.fixedColumn ? 'checkbox-cell' : ''} class={this.tableRef.selectable ? 'has-checkbox' : ''} >\n <pds-checkbox\n componentId={this.generateUniqueId()}\n onClick={this.handleCheckboxClick}\n label={\"Select Row\"}\n labelHidden={true}\n checked={this.isSelected}\n />\n </pds-table-cell>\n )}\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../dist/types/components";
2
+
3
+ interface PdsTable extends Components.PdsTable, HTMLElement {}
4
+ export const PdsTable: {
5
+ prototype: PdsTable;
6
+ new (): PdsTable;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,100 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const pdsTableCss = ":host{--color-background-default:var(--pine-color-white);background:var(--color-background-default);border-collapse:separate;-webkit-box-sizing:border-box;box-sizing:border-box;display:table;width:100%}:host(.is-responsive){background-attachment:local, local, scroll, scroll;background-image:-webkit-gradient(linear, left top, right top, from(var(--color-background-default)), to(var(--color-background-default))), -webkit-gradient(linear, left top, right top, from(var(--color-background-default)), to(var(--color-background-default))), -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.1)), to(rgba(255, 255, 255, 0))), -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.1)), to(rgba(255, 255, 255, 0)));background-image:linear-gradient(to right, var(--color-background-default), var(--color-background-default)), linear-gradient(to right, var(--color-background-default), var(--color-background-default)), linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0)), linear-gradient(to left, rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0));background-position:left center, right center, left center, right center;background-repeat:no-repeat;background-size:4px 100%, 4px 100%, 4px 100%, 4px 100%;display:block;margin:0 auto;max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;overflow-x:auto;white-space:nowrap}";
4
+ const PdsTableStyle0 = pdsTableCss;
5
+
6
+ const PdsTable$1 = /*@__PURE__*/ proxyCustomElement(class PdsTable extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ this.compact = undefined;
12
+ this.componentId = undefined;
13
+ this.responsive = undefined;
14
+ this.fixedColumn = undefined;
15
+ this.selectable = undefined;
16
+ this.sortingColumn = null;
17
+ this.sortingDirection = 'asc';
18
+ }
19
+ componentWillLoad() {
20
+ this.sortingColumn = null;
21
+ }
22
+ classNames() {
23
+ const classNames = ['pds-table'];
24
+ if (this.compact) {
25
+ classNames.push('is-compact');
26
+ }
27
+ if (this.responsive) {
28
+ classNames.push('is-responsive');
29
+ }
30
+ return classNames.join(' ');
31
+ }
32
+ sortTable(column, direction) {
33
+ const tableBody = this.el.querySelector('pds-table-body');
34
+ // Get the rows in the table body
35
+ const tableRows = Array.from(tableBody.querySelectorAll('pds-table-row'));
36
+ // Find the column index based on the column name
37
+ const columnHeaderCells = Array.from(this.el.querySelectorAll('pds-table-head-cell[sortable]'));
38
+ const columnHeaderCell = columnHeaderCells.find((cell) => cell.innerText.trim() === column);
39
+ if (!columnHeaderCell) {
40
+ console.warn(`Column "${column}" not found.`);
41
+ return;
42
+ }
43
+ const columnIndex = columnHeaderCells.indexOf(columnHeaderCell);
44
+ // Sort the rows based on the content of the specified column
45
+ tableRows.sort((a, b) => {
46
+ const valueA = a.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();
47
+ const valueB = b.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();
48
+ if (direction === 'asc') {
49
+ return valueA.localeCompare(valueB);
50
+ }
51
+ else {
52
+ return valueB.localeCompare(valueA);
53
+ }
54
+ });
55
+ // Clear and append the sorted rows back to the table body
56
+ tableBody.innerHTML = '';
57
+ tableRows.forEach((row) => {
58
+ tableBody.appendChild(row);
59
+ });
60
+ }
61
+ handleTableSort(event) {
62
+ const { direction } = event.detail;
63
+ this.sortTable(event.detail.column, direction);
64
+ this.sortingColumn = event.detail.column;
65
+ this.sortingDirection = direction;
66
+ }
67
+ render() {
68
+ return (h(Host, { key: 'ce58b1bccc1ff7ee6e38198e63a19fd88f2877e6', class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable }, h("slot", { key: 'b748a8befdd212d16c2e6780551a8c11b1843faf' })));
69
+ }
70
+ get el() { return this; }
71
+ static get style() { return PdsTableStyle0; }
72
+ }, [1, "pds-table", {
73
+ "compact": [4],
74
+ "componentId": [1, "component-id"],
75
+ "responsive": [4],
76
+ "fixedColumn": [4, "fixed-column"],
77
+ "selectable": [4],
78
+ "sortingColumn": [32],
79
+ "sortingDirection": [32]
80
+ }, [[0, "pdsTableSort", "handleTableSort"]]]);
81
+ function defineCustomElement$1() {
82
+ if (typeof customElements === "undefined") {
83
+ return;
84
+ }
85
+ const components = ["pds-table"];
86
+ components.forEach(tagName => { switch (tagName) {
87
+ case "pds-table":
88
+ if (!customElements.get(tagName)) {
89
+ customElements.define(tagName, PdsTable$1);
90
+ }
91
+ break;
92
+ } });
93
+ }
94
+
95
+ const PdsTable = PdsTable$1;
96
+ const defineCustomElement = defineCustomElement$1;
97
+
98
+ export { PdsTable, defineCustomElement };
99
+
100
+ //# sourceMappingURL=pds-table.js.map
@@ -0,0 +1 @@
1
+ {"file":"pds-table.js","mappings":";;AAAA,MAAM,WAAW,GAAG,s2CAAs2C,CAAC;AAC33C,uBAAe,WAAW;;MCMbA,UAAQ;;;;;;;;;;6BA6BqB,IAAI;gCACA,KAAK;;IAEjD,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;IAEO,UAAU;QAChB,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAClC;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAEO,SAAS,CAAC,MAAc,EAAE,SAAyB;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;;QAG1D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;;QAG1E,MAAM,iBAAiB,GAAkB,KAAK,CAAC,IAAI,CACjD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAC1D,CAAC;QAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAC7C,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,MAAM,CAC3C,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,cAAc,CAAC,CAAC;YAC9C,OAAO;SACR;QAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;;QAGhE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,4BAA4B,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAClG,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,4BAA4B,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAElG,IAAI,SAAS,KAAK,KAAK,EAAE;gBACvB,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aACrC;iBAAM;gBACL,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aACrC;SACF,CAAC,CAAC;;QAGH,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG;YACpB,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC5B,CAAC,CAAC;KACJ;IAGD,eAAe,CAAC,KAAiE;QAC/E,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;KACnC;IAED,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EACxB,EAAE,EAAE,IAAI,CAAC,WAAW,EACpB,IAAI,EAAC,MAAM,EACX,UAAU,EAAE,IAAI,CAAC,UAAU,IAE3B,8DAAa,CACR,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PdsTable"],"sources":["src/components/pds-table/pds-table.scss?tag=pds-table&encapsulation=shadow","src/components/pds-table/pds-table.tsx"],"sourcesContent":[":host {\n --color-background-default: var(--pine-color-white);\n\n background: var(--color-background-default);\n border-collapse: separate;\n box-sizing: border-box;\n display: table;\n width: 100%;\n}\n\n:host(.is-responsive) {\n background-attachment: local, local, scroll, scroll;\n background-image: linear-gradient(to right, var(--color-background-default), var(--color-background-default)),\n linear-gradient(to right, var(--color-background-default), var(--color-background-default)),\n linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0)),\n linear-gradient(to left, rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0));\n background-position: left center, right center, left center, right center;\n background-repeat: no-repeat;\n background-size: 4px 100%, 4px 100%, 4px 100%, 4px 100%;\n display: block;\n margin: 0 auto;\n max-width: fit-content;\n overflow-x: auto;\n white-space: nowrap;\n}\n","import { Component, Element, Host, h, Prop, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'pds-table',\n styleUrl: 'pds-table.scss',\n shadow: true,\n})\nexport class PdsTable {\n @Element() el: HTMLPdsTableElement;\n tableRef: HTMLElement;\n\n /**\n * Determines if table displays compact which reduces the spacing of table cells.\n */\n @Prop() compact: boolean;\n\n /**\n * A unique identifier used for the table `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Enables the table to be responsive by horizontally scrolling on smaller screens.\n */\n @Prop() responsive: boolean;\n\n /**\n * Determines if table displays fixed column which fixes the first column of the table.\n */\n @Prop() fixedColumn: boolean;\n\n /**\n * Determines if table displays checkboxes for selectable rows.\n */\n @Prop() selectable: boolean;\n\n @State() sortingColumn: string | null = null;\n @State() sortingDirection: 'asc' | 'desc' = 'asc';\n\n componentWillLoad() {\n this.sortingColumn = null;\n }\n\n private classNames() {\n const classNames = ['pds-table'];\n\n if (this.compact) {\n classNames.push('is-compact');\n }\n\n if (this.responsive) {\n classNames.push('is-responsive');\n }\n\n return classNames.join(' ');\n }\n\n private sortTable(column: string, direction: 'asc' | 'desc') {\n const tableBody = this.el.querySelector('pds-table-body');\n\n // Get the rows in the table body\n const tableRows = Array.from(tableBody.querySelectorAll('pds-table-row'));\n\n // Find the column index based on the column name\n const columnHeaderCells: HTMLElement[] = Array.from(\n this.el.querySelectorAll('pds-table-head-cell[sortable]')\n );\n\n const columnHeaderCell = columnHeaderCells.find(\n (cell) => cell.innerText.trim() === column\n );\n\n if (!columnHeaderCell) {\n console.warn(`Column \"${column}\" not found.`);\n return;\n }\n\n const columnIndex = columnHeaderCells.indexOf(columnHeaderCell);\n\n // Sort the rows based on the content of the specified column\n tableRows.sort((a, b) => {\n const valueA = a.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();\n const valueB = b.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();\n\n if (direction === 'asc') {\n return valueA.localeCompare(valueB);\n } else {\n return valueB.localeCompare(valueA);\n }\n });\n\n // Clear and append the sorted rows back to the table body\n tableBody.innerHTML = '';\n tableRows.forEach((row) => {\n tableBody.appendChild(row);\n });\n }\n\n @Listen('pdsTableSort')\n handleTableSort(event: CustomEvent<{ column: string; direction: 'asc' | 'desc' }>) {\n const { direction } = event.detail;\n this.sortTable(event.detail.column, direction);\n this.sortingColumn = event.detail.column;\n this.sortingDirection = direction;\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n id={this.componentId}\n role=\"grid\"\n selectable={this.selectable}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../dist/types/components";
2
+
3
+ interface PdsTabpanel extends Components.PdsTabpanel, HTMLElement {}
4
+ export const PdsTabpanel: {
5
+ prototype: PdsTabpanel;
6
+ new (): PdsTabpanel;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,45 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const pdsTabpanelCss = ":host{display:block}.pds-tabpanel{display:none;margin-top:var(--spacing-panel-margin-top);padding:var(--spacing-panel-padding)}.pds-tabpanel.is-active{display:block}";
4
+ const PdsTabpanelStyle0 = pdsTabpanelCss;
5
+
6
+ const PdsTabpanel$1 = /*@__PURE__*/ proxyCustomElement(class PdsTabpanel extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.name = undefined;
11
+ this.parentComponentId = undefined;
12
+ this.variant = undefined;
13
+ this.selected = false;
14
+ }
15
+ render() {
16
+ return (h(Host, { key: 'b8619019429f7430c66df0cc41d177d40b59a6e6', slot: "tabpanels" }, h("div", { key: '10a9c2cbf35a60aec932287a839fcca456c41d4c', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, h("slot", { key: '50593c1f0174dd44b2a51cc94e89cdd1cee7a8ab' }))));
17
+ }
18
+ get el() { return this; }
19
+ static get style() { return PdsTabpanelStyle0; }
20
+ }, [4, "pds-tabpanel", {
21
+ "name": [1],
22
+ "parentComponentId": [1, "parent-component-id"],
23
+ "variant": [1],
24
+ "selected": [1028]
25
+ }]);
26
+ function defineCustomElement$1() {
27
+ if (typeof customElements === "undefined") {
28
+ return;
29
+ }
30
+ const components = ["pds-tabpanel"];
31
+ components.forEach(tagName => { switch (tagName) {
32
+ case "pds-tabpanel":
33
+ if (!customElements.get(tagName)) {
34
+ customElements.define(tagName, PdsTabpanel$1);
35
+ }
36
+ break;
37
+ } });
38
+ }
39
+
40
+ const PdsTabpanel = PdsTabpanel$1;
41
+ const defineCustomElement = defineCustomElement$1;
42
+
43
+ export { PdsTabpanel, defineCustomElement };
44
+
45
+ //# sourceMappingURL=pds-tabpanel.js.map
@@ -0,0 +1 @@
1
+ {"file":"pds-tabpanel.js","mappings":";;AAAA,MAAM,cAAc,GAAG,uKAAuK,CAAC;AAC/L,0BAAe,cAAc;;MCMhBA,aAAW;;;;;;;wBAwBY,KAAK;;IAEvC,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,WAAW,IACpB,4DACE,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,EACxD,QAAQ,EAAC,GAAG,qBACK,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,EAC1D,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,wBAAwB,GAAG,cAAc,IAEhE,8DAAQ,CACJ,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PdsTabpanel"],"sources":["src/components/pds-tabs/pds-tabpanel/pds-tabpanel.scss?tag=pds-tabpanel","src/components/pds-tabs/pds-tabpanel/pds-tabpanel.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.pds-tabpanel {\n display: none;\n margin-top: var(--spacing-panel-margin-top);\n padding: var(--spacing-panel-padding);\n\n &.is-active {\n display: block;\n }\n}\n","import { Component, Element, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'pds-tabpanel',\n styleUrl: 'pds-tabpanel.scss',\n shadow: false,\n})\nexport class PdsTabpanel {\n @Element() el: HTMLPdsTabpanelElement;\n\n /**\n * Sets the related tab name, this name must match a `pds-tab`'s tab name property\n */\n @Prop() name!: string;\n\n /**\n * Keeps track of the parentComponentId unique id, this property is passed by parent component\n */\n /** @internal */\n @Prop() parentComponentId: string;\n\n /**\n * Keeps track of if the expected tab variant, this property is passed by parent component\n */\n /** @internal */\n @Prop() variant: string;\n\n /**\n * Keeps track of the tabpanel selected state, this property is passed by parent component\n */\n /** @internal */\n @Prop({mutable: true}) selected = false; // eslint-disable-line @stencil-community/strict-mutable\n\n render() {\n return (\n <Host slot=\"tabpanels\">\n <div\n role=\"tabpanel\"\n id={this.parentComponentId + \"__\" + this.name + '-panel'}\n tabindex=\"0\"\n aria-labelledby={this.parentComponentId + \"__\" + this.name}\n class={this.selected ? \"pds-tabpanel is-active\" : \"pds-tabpanel\"}\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../dist/types/components";
2
+
3
+ interface PdsTabs extends Components.PdsTabs, HTMLElement {}
4
+ export const PdsTabs: {
5
+ prototype: PdsTabs;
6
+ new (): PdsTabs;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,119 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const pdsTabsCss = ":host{--spacing-panel-margin-top:0;--spacing-panel-padding:0;--outline:2px solid var(--pine-color-blue-200);--spacing-gap-availability:var(--pine-spacing-100);--spacing-gap-default:var(--pine-spacing-300);--spacing-gap-filter:var(--pine-spacing-200);display:block}.pds-tabs__tablist{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--spacing-gap-default)}:host(.pds-tabs--availability) .pds-tabs__tablist{gap:var(--spacing-gap-availability)}:host(.pds-tabs--filter) .pds-tabs__tablist{gap:var(--spacing-gap-filter)}";
4
+ const PdsTabsStyle0 = pdsTabsCss;
5
+
6
+ const PdsTabs$1 = /*@__PURE__*/ proxyCustomElement(class PdsTabs extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ this.tablistLabel = undefined;
12
+ this.componentId = undefined;
13
+ this.variant = undefined;
14
+ this.activeTabName = undefined;
15
+ this.activeTabIndex = undefined;
16
+ }
17
+ tabClickHandler(event) {
18
+ if (this.componentId === event.detail[1]) {
19
+ this.activeTabIndex = event.detail[0];
20
+ this.activeTabName = this.tabs[this.activeTabIndex].name;
21
+ }
22
+ }
23
+ handleKeyDown(ev) {
24
+ const keySet = ["ArrowLeft", "ArrowRight", "Home", "End"];
25
+ if (keySet.includes(ev.key)) {
26
+ ev.preventDefault();
27
+ this.moveActiveTab(ev.key);
28
+ }
29
+ }
30
+ moveActiveTab(key) {
31
+ const firstTabNumber = 0;
32
+ const lastTabNumber = this.tabs.length - 1;
33
+ let moveFocusTo = null;
34
+ switch (key) {
35
+ case 'ArrowLeft':
36
+ moveFocusTo = (this.activeTabIndex === firstTabNumber) ? lastTabNumber : (this.activeTabIndex + (-1));
37
+ break;
38
+ case 'ArrowRight':
39
+ moveFocusTo = (this.activeTabIndex === lastTabNumber) ? firstTabNumber : (this.activeTabIndex + 1);
40
+ break;
41
+ case 'Home':
42
+ moveFocusTo = firstTabNumber;
43
+ break;
44
+ case 'End':
45
+ moveFocusTo = lastTabNumber;
46
+ break;
47
+ }
48
+ // Move focus to the button element within `pds-tab`
49
+ this.tabs[moveFocusTo].children[0].focus();
50
+ this.activeTabName = this.tabs[moveFocusTo].name;
51
+ this.activeTabIndex = moveFocusTo;
52
+ }
53
+ findAllChildren() {
54
+ this.tabs = this.el.querySelectorAll('pds-tab');
55
+ this.tabPanels = this.el.querySelectorAll('pds-tabpanel');
56
+ }
57
+ propGeneration(child, index = 0) {
58
+ child.parentComponentId = this.componentId.toString();
59
+ child.variant = this.variant.toString();
60
+ child.selected = (this.activeTabName === child.name) ? true : false;
61
+ child['index'] = index;
62
+ }
63
+ passPropsToChildren() {
64
+ this.tabs.forEach((child, index) => {
65
+ if (this.activeTabName === child.name)
66
+ this.activeTabIndex = index;
67
+ this.propGeneration(child, index);
68
+ });
69
+ this.tabPanels.forEach((child) => {
70
+ this.propGeneration(child);
71
+ });
72
+ }
73
+ classNames() {
74
+ let className = `pds-tabs`;
75
+ if (this.variant && this.variant != 'primary') {
76
+ const variantClassName = `pds-tabs--${this.variant}`;
77
+ className += ' ' + variantClassName;
78
+ }
79
+ return className;
80
+ }
81
+ ;
82
+ componentWillLoad() {
83
+ this.findAllChildren();
84
+ }
85
+ componentWillRender() {
86
+ this.passPropsToChildren();
87
+ }
88
+ render() {
89
+ return (h(Host, { key: '92748fc6123067ba04f9cc81ea949366fb1c2a8f', "active-tab-name": this.activeTabName, class: this.classNames(), id: this.componentId }, h("div", { key: '809cbe1ed4e973db39ea69be9e30ac54881564af', class: "pds-tabs__tablist", role: "tablist", "aria-label": this.tablistLabel }, h("slot", { key: 'b23af8a48dee0528cc9f7d2b84a42411e2b14e6d', name: "tabs" })), h("slot", { key: 'fdb46b7125f735531b13c1ac82a08f27998e7511', name: "tabpanels" })));
90
+ }
91
+ get el() { return this; }
92
+ static get style() { return PdsTabsStyle0; }
93
+ }, [1, "pds-tabs", {
94
+ "tablistLabel": [1, "tablist-label"],
95
+ "componentId": [1, "component-id"],
96
+ "variant": [1],
97
+ "activeTabName": [1025, "active-tab-name"],
98
+ "activeTabIndex": [1026, "active-tab-index"]
99
+ }, [[16, "pdsTabClick", "tabClickHandler"], [0, "keydown", "handleKeyDown"]]]);
100
+ function defineCustomElement$1() {
101
+ if (typeof customElements === "undefined") {
102
+ return;
103
+ }
104
+ const components = ["pds-tabs"];
105
+ components.forEach(tagName => { switch (tagName) {
106
+ case "pds-tabs":
107
+ if (!customElements.get(tagName)) {
108
+ customElements.define(tagName, PdsTabs$1);
109
+ }
110
+ break;
111
+ } });
112
+ }
113
+
114
+ const PdsTabs = PdsTabs$1;
115
+ const defineCustomElement = defineCustomElement$1;
116
+
117
+ export { PdsTabs, defineCustomElement };
118
+
119
+ //# sourceMappingURL=pds-tabs.js.map
@@ -0,0 +1 @@
1
+ {"file":"pds-tabs.js","mappings":"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","names":["PdsTabs"],"sources":["src/components/pds-tabs/pds-tabs.scss?tag=pds-tabs&encapsulation=shadow","src/components/pds-tabs/pds-tabs.tsx"],"sourcesContent":[":host {\n /**\n * @prop --spacing-panel-margin-top: Optional margin-top for panels\n */\n --spacing-panel-margin-top: 0;\n /**\n * @prop --spacing-panel-padding: Optional padding for panels\n */\n --spacing-panel-padding: 0;\n\n --outline: 2px solid var(--pine-color-blue-200);\n\n --spacing-gap-availability: var(--pine-spacing-100);\n --spacing-gap-default: var(--pine-spacing-300);\n --spacing-gap-filter: var(--pine-spacing-200);\n\n display: block;\n}\n\n.pds-tabs__tablist {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-gap-default);\n}\n\n:host(.pds-tabs--availability) .pds-tabs__tablist {\n gap: var(--spacing-gap-availability);\n}\n\n:host(.pds-tabs--filter) .pds-tabs__tablist {\n gap: var(--spacing-gap-filter);\n}\n","import { Component, Element, Host, h, Prop, Listen } from '@stencil/core';\n\n /**\n * @slot tabs - Content is placed within the `div[role=\"tablist\"]` element as children\n * @slot tabpanels - Content is placed directly after the `div[role=\"tablist\"]` element as siblings\n */\n@Component({\n tag: 'pds-tabs',\n styleUrl: 'pds-tabs.scss',\n shadow: true,\n})\nexport class PdsTabs {\n private tabs;\n private tabPanels;\n\n @Element() el: HTMLPdsTabsElement;\n\n /**\n * Sets the aria-label attached to the tablist element\n */\n @Prop() tablistLabel!: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Sets tabs variant styles as outlined in Figma documentation\n */\n @Prop() variant!: 'primary' | 'availability' | 'filter';\n\n /**\n * Sets the starting active tab name and maintains the name as the component re-renders\n */\n @Prop({mutable: true}) activeTabName!: string;\n\n /**\n * Sets the starting active tab index number and maintains the index number as the component re-renders\n */\n /** @internal */\n @Prop({mutable: true}) activeTabIndex: number;\n\n @Listen('pdsTabClick', {\n target: 'body',\n })\n tabClickHandler(event: CustomEvent<any>) {\n if (this.componentId === event.detail[1]) {\n this.activeTabIndex = event.detail[0];\n this.activeTabName = this.tabs[this.activeTabIndex].name;\n }\n }\n\n @Listen('keydown', {})\n handleKeyDown(ev: KeyboardEvent) {\n const keySet = [\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"];\n\n if (keySet.includes(ev.key)) {\n ev.preventDefault();\n this.moveActiveTab(ev.key);\n }\n }\n\n private moveActiveTab(key: string) {\n const firstTabNumber = 0;\n const lastTabNumber = this.tabs.length - 1;\n\n let moveFocusTo = null;\n\n switch (key) {\n case 'ArrowLeft':\n moveFocusTo = (this.activeTabIndex === firstTabNumber) ? lastTabNumber : (this.activeTabIndex + (-1));\n break;\n case 'ArrowRight':\n moveFocusTo = (this.activeTabIndex === lastTabNumber) ? firstTabNumber : (this.activeTabIndex + 1);\n break;\n case 'Home':\n moveFocusTo = firstTabNumber;\n break;\n case 'End':\n moveFocusTo = lastTabNumber;\n break;\n }\n\n // Move focus to the button element within `pds-tab`\n this.tabs[moveFocusTo].children[0].focus();\n this.activeTabName = this.tabs[moveFocusTo].name;\n this.activeTabIndex = moveFocusTo;\n }\n\n private findAllChildren() {\n this.tabs = this.el.querySelectorAll('pds-tab');\n this.tabPanels = this.el.querySelectorAll('pds-tabpanel');\n }\n\n private propGeneration(child, index = 0) {\n child.parentComponentId = this.componentId.toString();\n child.variant = this.variant.toString();\n child.selected = (this.activeTabName === child.name) ? true : false;\n child['index'] = index;\n }\n\n private passPropsToChildren() {\n this.tabs.forEach((child, index) => {\n if (this.activeTabName === child.name) this.activeTabIndex = index;\n this.propGeneration(child, index);\n });\n\n this.tabPanels.forEach((child) => {\n this.propGeneration(child);\n });\n }\n\n private classNames() {\n let className = `pds-tabs`;\n if (this.variant && this.variant != 'primary') {\n const variantClassName = `pds-tabs--${this.variant}`;\n className += ' ' + variantClassName;\n }\n\n return className;\n };\n\n componentWillLoad() {\n this.findAllChildren();\n }\n\n componentWillRender() {\n this.passPropsToChildren();\n }\n\n render() {\n return (\n <Host active-tab-name={this.activeTabName} class={this.classNames()} id={this.componentId}>\n <div class=\"pds-tabs__tablist\" role=\"tablist\" aria-label={this.tablistLabel}>\n <slot name=\"tabs\" />\n </div>\n <slot name=\"tabpanels\" />\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../dist/types/components";
2
+
3
+ interface PdsTextarea extends Components.PdsTextarea, HTMLElement {}
4
+ export const PdsTextarea: {
5
+ prototype: PdsTextarea;
6
+ new (): PdsTextarea;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,82 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { i as isRequired, P as PdsLabel, a as assignDescription, m as messageId } from './pds-label.js';
3
+
4
+ const pdsTextareaCss = ":host{--box-shadow-focus:0 0 0 2px var(--color-focus-visible-outline);--box-shadow-focus-error:0 0 0 2px var(--color-focus-visible-outline-error);--color:var(--pine-color-charcoal-400);--color-background:var(--pine-color-white);--color-background-disabled:var(--pine-color-grey-200);--color-border-default:var(--pine-color-grey-400);--color-border-error:var(--pine-color-red-300);--color-border-focus-visible:var(--pine-color-grey-300);--color-border-hover:var(--pine-color-grey-500);--color-disabled-default:var(--pine-color-charcoal-200);--color-error-default:var(--pine-color-red-300);--color-focus-visible-outline:var(--pine-color-primary-200);--color-focus-visible-outline-error:var(--pine-color-red-200);--color-placeholder-default:var(--pine-color-charcoal-200);--font-size-field:var(--pine-font-size-100);--font-size-helper-message:var(--pine-font-size-075);--font-size-label:var(--pine-font-size-100);--font-weight-field:var(--pine-font-weight-normal);--font-weight-helper-message:var(--pine-font-weight-normal);--font-weight-label:var(--pine-font-weight-medium);--line-height-field:var(--pine-line-height-150);--line-height-helper-message:var(--pine-line-height-125);--line-height-label:var(--pine-line-height-150);--spacing-margin-block-end-label:var(--pine-spacing-100);--spacing-margin-block-start-helper-message:var(--pine-spacing-100);--spacing-padding-block-field:var(--pine-spacing-100);--spacing-padding-inline-field:var(--pine-spacing-200);display:inline}.pds-textarea{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}label{display:block;font-size:var(--font-size-label);font-weight:var(--font-weight-label);line-height:var(--line-height-label);-webkit-margin-after:var(--spacing-margin-block-end-label);margin-block-end:var(--spacing-margin-block-end-label)}.pds-textarea__field{background-color:var(--color-background);border:var(--pine-border-interactive);border-radius:var(--pine-border-radius-md);font-family:inherit;font-size:var(--font-size-field);font-weight:var(--font-weight-field);line-height:var(--line-height-field);padding:var(--spacing-padding-block-field) var(--spacing-padding-inline-field)}.pds-textarea__field:hover:not(:disabled,.is-invalid){border-color:var(--color-border-hover)}.pds-textarea__field:disabled{background-color:var(--color-background-disabled);color:var(--color-disabled-default);cursor:not-allowed}.pds-textarea__field:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-textarea__field::-webkit-input-placeholder{color:var(--color-placeholder-default)}.pds-textarea__field::-moz-placeholder{color:var(--color-placeholder-default)}.pds-textarea__field:-ms-input-placeholder{color:var(--color-placeholder-default)}.pds-textarea__field::-ms-input-placeholder{color:var(--color-placeholder-default)}.pds-textarea__field::placeholder{color:var(--color-placeholder-default)}.pds-textarea__field.is-invalid{border-color:var(--color-border-error)}.pds-textarea__field.is-invalid:focus-visible{-webkit-box-shadow:var(--box-shadow-focus-error);box-shadow:var(--box-shadow-focus-error)}.pds-textarea__error-message,.pds-textarea__helper-message{font-size:var(--font-size-helper-message);font-weight:var(--font-weight-helper-message);line-height:var(--line-height-helper-message);-webkit-margin-before:var(--spacing-margin-block-start-helper-message);margin-block-start:var(--spacing-margin-block-start-helper-message)}.pds-textarea__error-message{color:var(--color-error-default)}";
5
+ const PdsTextareaStyle0 = pdsTextareaCss;
6
+
7
+ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends HTMLElement {
8
+ constructor() {
9
+ super();
10
+ this.__registerHost();
11
+ this.__attachShadow();
12
+ this.pdsTextareaChange = createEvent(this, "pdsTextareaChange", 7);
13
+ this.onTextareaChange = (ev) => {
14
+ const textarea = ev.target;
15
+ isRequired(textarea, this);
16
+ if (textarea) {
17
+ this.value = textarea.innerHTML;
18
+ }
19
+ this.pdsTextareaChange.emit({ value: this.value, event: ev });
20
+ };
21
+ this.componentId = undefined;
22
+ this.disabled = false;
23
+ this.errorMessage = undefined;
24
+ this.helperMessage = undefined;
25
+ this.invalid = false;
26
+ this.label = undefined;
27
+ this.name = this.componentId;
28
+ this.placeholder = undefined;
29
+ this.readonly = false;
30
+ this.required = false;
31
+ this.rows = undefined;
32
+ this.value = undefined;
33
+ }
34
+ textareaClassNames() {
35
+ const classNames = ['pds-textarea__field'];
36
+ if (this.invalid && this.invalid === true) {
37
+ classNames.push('is-invalid');
38
+ }
39
+ return classNames.join(' ');
40
+ }
41
+ render() {
42
+ return (h(Host, { key: 'a6f6eb13665857ec8762d454d79ff216e2062a66', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: 'fa77f9c7c29f214ee4d8ddb8e1e48d4d16b6a47e', class: "pds-textarea" }, this.label &&
43
+ h(PdsLabel, { key: '75c242138f5c2a33a82feaa775dae0c05843d2c1', htmlFor: this.componentId, text: this.label }), h("textarea", { key: '8bebb57b878c745e07ebfc18afd2aaf7d2da66a5', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onChange: this.onTextareaChange }, this.value), this.helperMessage &&
44
+ h("p", { key: 'b9a83aeb83b0cf4232359154d36a8ec48b0a3638', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
45
+ h("p", { key: 'ee70c7aa56b8a8e18de58394c04140065670f8db', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, this.errorMessage))));
46
+ }
47
+ get el() { return this; }
48
+ static get style() { return PdsTextareaStyle0; }
49
+ }, [1, "pds-textarea", {
50
+ "componentId": [1, "component-id"],
51
+ "disabled": [4],
52
+ "errorMessage": [1, "error-message"],
53
+ "helperMessage": [1, "helper-message"],
54
+ "invalid": [1028],
55
+ "label": [1],
56
+ "name": [1],
57
+ "placeholder": [1],
58
+ "readonly": [4],
59
+ "required": [4],
60
+ "rows": [2],
61
+ "value": [1025]
62
+ }]);
63
+ function defineCustomElement$1() {
64
+ if (typeof customElements === "undefined") {
65
+ return;
66
+ }
67
+ const components = ["pds-textarea"];
68
+ components.forEach(tagName => { switch (tagName) {
69
+ case "pds-textarea":
70
+ if (!customElements.get(tagName)) {
71
+ customElements.define(tagName, PdsTextarea$1);
72
+ }
73
+ break;
74
+ } });
75
+ }
76
+
77
+ const PdsTextarea = PdsTextarea$1;
78
+ const defineCustomElement = defineCustomElement$1;
79
+
80
+ export { PdsTextarea, defineCustomElement };
81
+
82
+ //# sourceMappingURL=pds-textarea.js.map
@@ -0,0 +1 @@
1
+ {"file":"pds-textarea.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,+7GAA+7G,CAAC;AACv9G,0BAAe,cAAc;;MCShBA,aAAW;;;;;;QAwEd,qBAAgB,GAAG,CAAC,EAAS;YACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAA6B,CAAC;YAClD,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE3B,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;aACjC;YAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;SAC7D,CAAC;;wBArEiB,KAAK;;;uBAgBS,KAAK;;oBAUf,IAAI,CAAC,WAAW;;wBAWpB,KAAK;wBAML,KAAK;;;;IA4BhB,kBAAkB;QACxB,MAAM,UAAU,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACzC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,MAAM;QACJ,QACE,EAAC,IAAI,sEACY,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,IAE5C,4DAAK,KAAK,EAAC,cAAc,IACtB,IAAI,CAAC,KAAK;YACT,EAAC,QAAQ,qDAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,GAAI,EAE3D,qFACoB,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,kBACzE,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,EAC/C,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,EAAE,EAAE,IAAI,CAAC,WAAW,EACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAE,IAAI,CAAC,gBAAgB,IAC/B,IAAI,CAAC,KAAK,CAAY,EACvB,IAAI,CAAC,aAAa;YACjB,0DACE,KAAK,EAAC,8BAA8B,EACpC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,IAExC,IAAI,CAAC,aAAa,CACjB,EAEL,IAAI,CAAC,OAAO;YACX,uEACY,WAAW,EACrB,KAAK,EAAC,6BAA6B,EACnC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAEvC,IAAI,CAAC,YAAY,CAChB,CAEF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PdsTextarea"],"sources":["src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n --box-shadow-focus: 0 0 0 2px var(--color-focus-visible-outline);\n --box-shadow-focus-error: 0 0 0 2px var(--color-focus-visible-outline-error);\n\n --color: var(--pine-color-charcoal-400);\n --color-background: var(--pine-color-white);\n --color-background-disabled: var(--pine-color-grey-200);\n --color-border-default: var(--pine-color-grey-400);\n --color-border-error: var(--pine-color-red-300);\n --color-border-focus-visible: var(--pine-color-grey-300);\n --color-border-hover: var(--pine-color-grey-500);\n --color-disabled-default: var(--pine-color-charcoal-200);\n --color-error-default: var(--pine-color-red-300);\n --color-focus-visible-outline: var(--pine-color-primary-200);\n --color-focus-visible-outline-error: var(--pine-color-red-200);\n --color-placeholder-default: var(--pine-color-charcoal-200);\n\n --font-size-field: var(--pine-font-size-100);\n --font-size-helper-message: var(--pine-font-size-075);\n --font-size-label: var(--pine-font-size-100);\n --font-weight-field: var(--pine-font-weight-normal);\n --font-weight-helper-message: var(--pine-font-weight-normal);\n --font-weight-label: var(--pine-font-weight-medium);\n\n --line-height-field: var(--pine-line-height-150);\n --line-height-helper-message: var(--pine-line-height-125);\n --line-height-label: var(--pine-line-height-150);\n\n --spacing-margin-block-end-label: var(--pine-spacing-100);\n --spacing-margin-block-start-helper-message: var(--pine-spacing-100);\n --spacing-padding-block-field: var(--pine-spacing-100);\n --spacing-padding-inline-field: var(--pine-spacing-200);\n\n display: inline;\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\nlabel {\n display: block;\n font-size: var(--font-size-label);\n font-weight: var(--font-weight-label);\n line-height: var(--line-height-label);\n margin-block-end: var(--spacing-margin-block-end-label);\n}\n\n.pds-textarea__field {\n background-color: var(--color-background);\n border: var(--pine-border-interactive);\n border-radius: var(--pine-border-radius-md);\n font-family: inherit;\n font-size: var(--font-size-field);\n font-weight: var(--font-weight-field);\n line-height: var(--line-height-field);\n padding: var(--spacing-padding-block-field) var(--spacing-padding-inline-field);\n\n &:hover:not(:disabled, .is-invalid) {\n border-color: var(--color-border-hover);\n }\n\n &:disabled {\n background-color: var(--color-background-disabled);\n color: var(--color-disabled-default);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n &::placeholder {\n color: var(--color-placeholder-default);\n }\n\n &.is-invalid {\n border-color: var(--color-border-error);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n }\n }\n}\n\n.pds-textarea__error-message,\n.pds-textarea__helper-message {\n font-size: var(--font-size-helper-message);\n font-weight: var(--font-weight-helper-message);\n line-height: var(--line-height-helper-message);\n margin-block-start: var(--spacing-margin-block-start-helper-message);\n}\n\n.pds-textarea__error-message {\n color: var(--color-error-default);\n}\n","import { Component, Element, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\nimport { assignDescription, isRequired, messageId } from '../../utils/form';\nimport { TextareaChangeEventDetail } from './textarea-interface';\nimport { PdsLabel } from '../_internal/pds-label/pds-label';\n\n@Component({\n tag: 'pds-textarea',\n styleUrl: 'pds-textarea.scss',\n shadow: true,\n})\nexport class PdsTextarea {\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Indicates whether or not the textarea is disabled\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * Specifies the error text and provides an error-themed treatment to the field\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a hint or description of the textarea\n */\n @Prop() helperMessage?: string;\n\n /**\n * Indicates whether or not the textarea is invalid or throws an error\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label\n */\n @Prop() label?: string;\n\n /**\n * Specifies the name, submitted with the form name/value pair. This value will mirror the componentId\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea\n */\n @Prop() placeholder?: string;\n\n /**\n * Indicates whether or not the textarea is readonly\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Indicates whether or not the textarea is required\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea\n */\n @Prop() rows?: number;\n\n /**\n * The value of the textarea\n */\n @Prop({mutable: true}) value?: string;\n\n /**\n * Event emitted whenever the value of the textarea changes\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n private onTextareaChange = (ev: Event) => {\n const textarea = ev.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n if (textarea) {\n this.value = textarea.innerHTML;\n }\n\n this.pdsTextareaChange.emit({value: this.value, event: ev});\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <PdsLabel htmlFor={this.componentId} text={this.label} />\n }\n <textarea\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onChange={this.onTextareaChange}\n >{this.value}</textarea>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../dist/types/components";
2
+
3
+ interface PdsTooltip extends Components.PdsTooltip, HTMLElement {}
4
+ export const PdsTooltip: {
5
+ prototype: PdsTooltip;
6
+ new (): PdsTooltip;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;