@pine-ds/core 1.2.0 → 1.3.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 (243) hide show
  1. package/components/closest.js +11 -0
  2. package/components/closest.js.map +1 -0
  3. package/components/custom-elements.d.ts +2 -0
  4. package/components/index.d.ts +94 -0
  5. package/components/index.js +33 -0
  6. package/components/index.js.map +1 -0
  7. package/{dist/esm/index-852fd6bc.js → components/index2.js} +2 -2
  8. package/components/index2.js.map +1 -0
  9. package/components/package.json +9 -0
  10. package/components/pds-accordion.d.ts +11 -0
  11. package/components/pds-accordion.js +68 -0
  12. package/components/pds-accordion.js.map +1 -0
  13. package/components/pds-avatar.d.ts +11 -0
  14. package/components/pds-avatar.js +103 -0
  15. package/components/pds-avatar.js.map +1 -0
  16. package/components/pds-box.d.ts +11 -0
  17. package/components/pds-box.js +124 -0
  18. package/components/pds-box.js.map +1 -0
  19. package/components/pds-button.d.ts +11 -0
  20. package/components/pds-button.js +8 -0
  21. package/components/pds-button.js.map +1 -0
  22. package/components/pds-button2.js +84 -0
  23. package/components/pds-button2.js.map +1 -0
  24. package/components/pds-checkbox.d.ts +11 -0
  25. package/components/pds-checkbox.js +8 -0
  26. package/components/pds-checkbox.js.map +1 -0
  27. package/components/pds-checkbox2.js +101 -0
  28. package/components/pds-checkbox2.js.map +1 -0
  29. package/components/pds-chip.d.ts +11 -0
  30. package/components/pds-chip.js +78 -0
  31. package/components/pds-chip.js.map +1 -0
  32. package/components/pds-copytext.d.ts +11 -0
  33. package/components/pds-copytext.js +88 -0
  34. package/components/pds-copytext.js.map +1 -0
  35. package/components/pds-divider.d.ts +11 -0
  36. package/components/pds-divider.js +54 -0
  37. package/components/pds-divider.js.map +1 -0
  38. package/components/pds-icon.js +8 -0
  39. package/components/pds-icon.js.map +1 -0
  40. package/components/pds-icon2.js +370 -0
  41. package/components/pds-icon2.js.map +1 -0
  42. package/components/pds-image.d.ts +11 -0
  43. package/components/pds-image.js +55 -0
  44. package/components/pds-image.js.map +1 -0
  45. package/components/pds-input.d.ts +11 -0
  46. package/components/pds-input.js +72 -0
  47. package/components/pds-input.js.map +1 -0
  48. package/components/pds-label.js +39 -0
  49. package/components/pds-label.js.map +1 -0
  50. package/components/pds-link.d.ts +11 -0
  51. package/components/pds-link.js +65 -0
  52. package/components/pds-link.js.map +1 -0
  53. package/components/pds-loader.d.ts +11 -0
  54. package/components/pds-loader.js +68 -0
  55. package/components/pds-loader.js.map +1 -0
  56. package/components/pds-progress.d.ts +11 -0
  57. package/components/pds-progress.js +49 -0
  58. package/components/pds-progress.js.map +1 -0
  59. package/components/pds-radio.d.ts +11 -0
  60. package/components/pds-radio.js +78 -0
  61. package/components/pds-radio.js.map +1 -0
  62. package/components/pds-row.d.ts +11 -0
  63. package/components/pds-row.js +72 -0
  64. package/components/pds-row.js.map +1 -0
  65. package/components/pds-sortable-item.d.ts +11 -0
  66. package/components/pds-sortable-item.js +58 -0
  67. package/components/pds-sortable-item.js.map +1 -0
  68. package/components/pds-sortable.d.ts +11 -0
  69. package/components/pds-sortable.js +2722 -0
  70. package/components/pds-sortable.js.map +1 -0
  71. package/components/pds-switch.d.ts +11 -0
  72. package/components/pds-switch.js +82 -0
  73. package/components/pds-switch.js.map +1 -0
  74. package/components/pds-tab.d.ts +11 -0
  75. package/components/pds-tab.js +53 -0
  76. package/components/pds-tab.js.map +1 -0
  77. package/components/pds-table-body.d.ts +11 -0
  78. package/components/pds-table-body.js +36 -0
  79. package/components/pds-table-body.js.map +1 -0
  80. package/components/pds-table-cell.d.ts +11 -0
  81. package/components/pds-table-cell.js +8 -0
  82. package/components/pds-table-cell.js.map +1 -0
  83. package/components/pds-table-cell2.js +72 -0
  84. package/components/pds-table-cell2.js.map +1 -0
  85. package/components/pds-table-head-cell.d.ts +11 -0
  86. package/components/pds-table-head-cell.js +8 -0
  87. package/components/pds-table-head-cell.js.map +1 -0
  88. package/components/pds-table-head-cell2.js +98 -0
  89. package/components/pds-table-head-cell2.js.map +1 -0
  90. package/components/pds-table-head.d.ts +11 -0
  91. package/components/pds-table-head.js +90 -0
  92. package/components/pds-table-head.js.map +1 -0
  93. package/components/pds-table-row.d.ts +11 -0
  94. package/components/pds-table-row.js +95 -0
  95. package/components/pds-table-row.js.map +1 -0
  96. package/components/pds-table.d.ts +11 -0
  97. package/components/pds-table.js +124 -0
  98. package/components/pds-table.js.map +1 -0
  99. package/components/pds-tabpanel.d.ts +11 -0
  100. package/components/pds-tabpanel.js +45 -0
  101. package/components/pds-tabpanel.js.map +1 -0
  102. package/components/pds-tabs.d.ts +11 -0
  103. package/components/pds-tabs.js +119 -0
  104. package/components/pds-tabs.js.map +1 -0
  105. package/components/pds-textarea.d.ts +11 -0
  106. package/components/pds-textarea.js +82 -0
  107. package/components/pds-textarea.js.map +1 -0
  108. package/components/pds-tooltip.d.ts +11 -0
  109. package/components/pds-tooltip.js +178 -0
  110. package/components/pds-tooltip.js.map +1 -0
  111. package/dist/cjs/{index-34f3258f.js → index-dd191bbe.js} +2 -2
  112. package/dist/cjs/index-dd191bbe.js.map +1 -0
  113. package/dist/cjs/loader.cjs.js +1 -1
  114. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  115. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  116. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  117. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  118. package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
  119. package/dist/cjs/pds-icon.cjs.entry.js +16 -7
  120. package/dist/cjs/pds-icon.cjs.entry.js.map +1 -1
  121. package/dist/cjs/pds-link.cjs.entry.js +1 -1
  122. package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
  123. package/dist/cjs/pds-table-head-cell.cjs.entry.js +1 -1
  124. package/dist/cjs/pine-core.cjs.js +1 -1
  125. package/dist/docs.json +1 -1
  126. package/dist/esm/index-b8872c16.js +14 -0
  127. package/dist/esm/index-b8872c16.js.map +1 -0
  128. package/dist/esm/loader.js +1 -1
  129. package/dist/esm/pds-accordion.entry.js +1 -1
  130. package/dist/esm/pds-avatar.entry.js +1 -1
  131. package/dist/esm/pds-button.entry.js +1 -1
  132. package/dist/esm/pds-chip.entry.js +1 -1
  133. package/dist/esm/pds-copytext.entry.js +1 -1
  134. package/dist/esm/pds-icon.entry.js +16 -7
  135. package/dist/esm/pds-icon.entry.js.map +1 -1
  136. package/dist/esm/pds-link.entry.js +1 -1
  137. package/dist/esm/pds-sortable-item.entry.js +1 -1
  138. package/dist/esm/pds-table-head-cell.entry.js +1 -1
  139. package/dist/esm/pine-core.js +1 -1
  140. package/dist/esm-es5/{index-852fd6bc.js → index-b8872c16.js} +1 -1
  141. package/dist/esm-es5/index-b8872c16.js.map +1 -0
  142. package/dist/esm-es5/loader.js +1 -1
  143. package/dist/esm-es5/loader.js.map +1 -1
  144. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  145. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  146. package/dist/esm-es5/pds-button.entry.js +1 -1
  147. package/dist/esm-es5/pds-chip.entry.js +1 -1
  148. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  149. package/dist/esm-es5/pds-icon.entry.js +1 -1
  150. package/dist/esm-es5/pds-icon.entry.js.map +1 -1
  151. package/dist/esm-es5/pds-link.entry.js +1 -1
  152. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  153. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  154. package/dist/esm-es5/pine-core.js +1 -1
  155. package/dist/esm-es5/pine-core.js.map +1 -1
  156. package/dist/pine-core/{p-97e67ec3.system.entry.js → p-0601dc8a.system.entry.js} +2 -2
  157. package/dist/pine-core/{p-3f78956d.system.entry.js → p-1a065871.system.entry.js} +2 -2
  158. package/dist/pine-core/{p-cd001902.system.entry.js → p-34e206a0.system.entry.js} +2 -2
  159. package/dist/pine-core/{p-db38d613.entry.js → p-368269f0.entry.js} +2 -2
  160. package/dist/pine-core/{p-b924a6f7.entry.js → p-3a9fce23.entry.js} +2 -2
  161. package/dist/pine-core/{p-3f1ca23f.entry.js → p-3ed83b6f.entry.js} +2 -2
  162. package/dist/pine-core/{p-34a4c5ff.system.entry.js → p-3f15215e.system.entry.js} +2 -2
  163. package/dist/pine-core/{p-689137e6.system.entry.js → p-4254febe.system.entry.js} +2 -2
  164. package/dist/pine-core/p-6b065607.entry.js +2 -0
  165. package/dist/pine-core/p-6b065607.entry.js.map +1 -0
  166. package/dist/pine-core/{p-4da18aac.system.entry.js → p-73c45132.system.entry.js} +2 -2
  167. package/dist/pine-core/p-77b96720.system.js +1 -1
  168. package/dist/pine-core/p-77b96720.system.js.map +1 -1
  169. package/dist/pine-core/{p-b2b8070b.entry.js → p-7f5517fc.entry.js} +2 -2
  170. package/dist/pine-core/{p-19b44f85.entry.js → p-948115a9.entry.js} +2 -2
  171. package/dist/pine-core/{p-c8f50955.system.entry.js → p-a9ae176c.system.entry.js} +2 -2
  172. package/dist/pine-core/{p-59f634bc.entry.js → p-aafbbc27.entry.js} +2 -2
  173. package/dist/pine-core/p-bbcf1b50.system.entry.js +2 -0
  174. package/dist/pine-core/p-bbcf1b50.system.entry.js.map +1 -0
  175. package/dist/pine-core/{p-7bf40997.entry.js → p-bf5a1876.entry.js} +2 -2
  176. package/dist/pine-core/{p-42cccfec.entry.js → p-dfaf84b9.entry.js} +2 -2
  177. package/dist/pine-core/{p-e55f6789.system.js → p-ee65aef1.system.js} +1 -1
  178. package/dist/pine-core/p-ee65aef1.system.js.map +1 -0
  179. package/dist/pine-core/{p-4dec2648.js → p-efc85823.js} +1 -1
  180. package/dist/pine-core/p-efc85823.js.map +1 -0
  181. package/dist/pine-core/{p-7ef962b2.system.entry.js → p-f1fe6518.system.entry.js} +2 -2
  182. package/dist/pine-core/pine-core.esm.js +1 -1
  183. package/dist/pine-core/pine-core.esm.js.map +1 -1
  184. package/dist/pine-core/svg/bar-chart-10-tone.svg +1 -0
  185. package/dist/pine-core/svg/bell-01-tone.svg +1 -0
  186. package/dist/pine-core/svg/clapperboard-tone.svg +1 -0
  187. package/dist/pine-core/svg/cloud-upload.svg +1 -1
  188. package/dist/pine-core/svg/credit-card-02-tone.svg +1 -0
  189. package/dist/pine-core/svg/cube-01-tone.svg +1 -0
  190. package/dist/pine-core/svg/customize.svg +1 -1
  191. package/dist/pine-core/svg/dollar.svg +1 -1
  192. package/dist/pine-core/svg/dots-horizontal-tone.svg +1 -0
  193. package/dist/pine-core/svg/download.svg +1 -1
  194. package/dist/pine-core/svg/expand.svg +1 -1
  195. package/dist/pine-core/svg/file-02.svg +1 -0
  196. package/dist/pine-core/svg/filter.svg +1 -1
  197. package/dist/pine-core/svg/form-field.svg +1 -1
  198. package/dist/pine-core/svg/hashtag.svg +1 -1
  199. package/dist/pine-core/svg/hd-video.svg +1 -1
  200. package/dist/pine-core/svg/headset-tone.svg +1 -0
  201. package/dist/pine-core/svg/home-02-tone.svg +1 -0
  202. package/dist/pine-core/svg/logo-instagram.svg +1 -1
  203. package/dist/pine-core/svg/mail-01-tone.svg +1 -0
  204. package/dist/pine-core/svg/mail-filled.svg +1 -1
  205. package/dist/pine-core/svg/monitor-03-tone.svg +1 -0
  206. package/dist/pine-core/svg/phone-02-tone.svg +1 -0
  207. package/dist/pine-core/svg/search-md-tone.svg +1 -0
  208. package/dist/pine-core/svg/settings-01-tone.svg +1 -0
  209. package/dist/pine-core/svg/stars-01-tone.svg +1 -0
  210. package/dist/pine-core/svg/trophy-filled.svg +1 -0
  211. package/dist/pine-core/svg/unlock.svg +1 -1
  212. package/dist/pine-core/svg/users-02-tone.svg +1 -0
  213. package/dist/pine-core/svg/video-off.svg +1 -1
  214. package/dist/pine-core/svg/wrench.svg +1 -1
  215. package/hydrate/index.d.ts +218 -0
  216. package/hydrate/index.js +13272 -0
  217. package/hydrate/package.json +6 -0
  218. package/package.json +1 -1
  219. package/dist/cjs/index-34f3258f.js.map +0 -1
  220. package/dist/esm/index-852fd6bc.js.map +0 -1
  221. package/dist/esm-es5/index-852fd6bc.js.map +0 -1
  222. package/dist/pine-core/p-4dec2648.js.map +0 -1
  223. package/dist/pine-core/p-a010a9e8.system.entry.js +0 -2
  224. package/dist/pine-core/p-a010a9e8.system.entry.js.map +0 -1
  225. package/dist/pine-core/p-a1cf1db5.entry.js +0 -2
  226. package/dist/pine-core/p-a1cf1db5.entry.js.map +0 -1
  227. package/dist/pine-core/p-e55f6789.system.js.map +0 -1
  228. /package/dist/pine-core/{p-97e67ec3.system.entry.js.map → p-0601dc8a.system.entry.js.map} +0 -0
  229. /package/dist/pine-core/{p-3f78956d.system.entry.js.map → p-1a065871.system.entry.js.map} +0 -0
  230. /package/dist/pine-core/{p-cd001902.system.entry.js.map → p-34e206a0.system.entry.js.map} +0 -0
  231. /package/dist/pine-core/{p-db38d613.entry.js.map → p-368269f0.entry.js.map} +0 -0
  232. /package/dist/pine-core/{p-b924a6f7.entry.js.map → p-3a9fce23.entry.js.map} +0 -0
  233. /package/dist/pine-core/{p-3f1ca23f.entry.js.map → p-3ed83b6f.entry.js.map} +0 -0
  234. /package/dist/pine-core/{p-34a4c5ff.system.entry.js.map → p-3f15215e.system.entry.js.map} +0 -0
  235. /package/dist/pine-core/{p-689137e6.system.entry.js.map → p-4254febe.system.entry.js.map} +0 -0
  236. /package/dist/pine-core/{p-4da18aac.system.entry.js.map → p-73c45132.system.entry.js.map} +0 -0
  237. /package/dist/pine-core/{p-b2b8070b.entry.js.map → p-7f5517fc.entry.js.map} +0 -0
  238. /package/dist/pine-core/{p-19b44f85.entry.js.map → p-948115a9.entry.js.map} +0 -0
  239. /package/dist/pine-core/{p-c8f50955.system.entry.js.map → p-a9ae176c.system.entry.js.map} +0 -0
  240. /package/dist/pine-core/{p-59f634bc.entry.js.map → p-aafbbc27.entry.js.map} +0 -0
  241. /package/dist/pine-core/{p-7bf40997.entry.js.map → p-bf5a1876.entry.js.map} +0 -0
  242. /package/dist/pine-core/{p-42cccfec.entry.js.map → p-dfaf84b9.entry.js.map} +0 -0
  243. /package/dist/pine-core/{p-7ef962b2.system.entry.js.map → p-f1fe6518.system.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"file":"pds-table-head.js","mappings":";;;;;;AAAA,MAAM,eAAe,GAAG,0gBAA0gB,CAAC;AACniB,2BAAe,eAAe;;MCOjBA,cAAY;;;;;;QAiBf,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;QAEO,gBAAW,GAAG,CAAC,EAAS;YAC9B,IAAI,CAAC,UAAU,GAAG,CAAE,EAAE,CAAC,MAA2B,CAAC,OAAO,CAAA;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SACnC,CAAC;QAEM,iBAAY,GAAG,CAAC,UAAmB;YACzC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAE1B,IAAK,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,EAAG;gBACjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;aAC7C;SACF,CAAA;;;;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SACnC;KACF;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,iCAAiC,CAAC,CAAC;YACpF,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACtC;KACF;IAED,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,KAAK,IACb,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KACxC,4EAAqB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,eAAe,GAAG,EAAE,IACxE,qEACE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,EACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,IAAI,EACjB,OAAO,EAAE,IAAI,CAAC,UAAU,GACxB,CACkB,CACvB,EACD,8DAAa,CACR,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PdsTableHead"],"sources":["src/components/pds-table/pds-table-head/pds-table-head.scss?tag=pds-table-head&encapsulation=shadow","src/components/pds-table/pds-table-head/pds-table-head.tsx"],"sourcesContent":[":host {\n --border-head-default: var(--pine-border-width-thin) solid var(--pine-color-grey-300);\n\n --color-background-fixed: var(--pine-color-base-white);\n\n border-color: inherit;\n box-sizing: border-box;\n display: table-header-group;\n vertical-align: middle;\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 pds-table-checkbox-cell {\n border-block-end: var(--border-head-default);\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Prop } from '@stencil/core';\nimport { closest } from '@utils/closest';\n\n@Component({\n tag: 'pds-table-head',\n styleUrl: 'pds-table-head.scss',\n shadow: true,\n})\nexport class PdsTableHead {\n @Element() hostElement: HTMLPdsTableHeadElement;\n private tableRef: HTMLPdsTableElement\n\n /** Indicates that the selection state is indeterminate. */\n @Prop({ mutable: true }) indeterminate?: boolean\n\n /**\n * A local state to track whether the row is currently selected.\n */\n @Prop({mutable: true}) isSelected: boolean;\n\n /**\n * Event that is emitted when the select all checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableSelectAll: EventEmitter<{ isSelected: boolean }>;\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 private handleInput = (ev: Event) => {\n this.isSelected = !(ev.target as HTMLInputElement).checked\n this.handleSelect(this.isSelected)\n };\n\n private handleSelect = (isSelected: boolean) => {\n this.indeterminate = false\n\n if ( closest('pds-table-head', this.hostElement) ) {\n this.pdsTableSelectAll.emit({ isSelected });\n }\n }\n\n componentWillLoad() {\n if (this.isSelected) {\n this.handleSelect(this.isSelected)\n }\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-head-cell:first-child');\n tableCell?.classList.add(\"is-fixed\");\n }\n }\n\n render() {\n return (\n <Host role=\"row\">\n {this.tableRef && this.tableRef.selectable && (\n <pds-table-head-cell part={this.tableRef.selectable ? 'checkbox-cell' : ''}>\n <pds-checkbox\n componentId={this.generateUniqueId()}\n indeterminate={this.indeterminate}\n onInput={this.handleInput}\n label={\"Select All Rows\"}\n labelHidden={true}\n checked={this.isSelected}\n />\n </pds-table-head-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 PdsTableRow extends Components.PdsTableRow, HTMLElement {}
4
+ export const PdsTableRow: {
5
+ prototype: PdsTableRow;
6
+ new (): PdsTableRow;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,95 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { c as closest } from './closest.js';
3
+ import { d as defineCustomElement$3 } from './pds-checkbox2.js';
4
+ import { d as defineCustomElement$2 } from './pds-table-cell2.js';
5
+
6
+ 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)}";
7
+ const PdsTableRowStyle0 = pdsTableRowCss;
8
+
9
+ const PdsTableRow$1 = /*@__PURE__*/ proxyCustomElement(class PdsTableRow extends HTMLElement {
10
+ constructor() {
11
+ super();
12
+ this.__registerHost();
13
+ this.__attachShadow();
14
+ this.pdsTableRowSelected = createEvent(this, "pdsTableRowSelected", 7);
15
+ this.handleClick = () => {
16
+ this.isSelected = !this.isSelected; // Toggle the selected state
17
+ this.handleSelect(this.isSelected);
18
+ };
19
+ this.handleSelect = (isSelected) => {
20
+ this.indeterminate = false;
21
+ if (!closest('pds-table-head', this.hostElement)) {
22
+ const rowIndex = Array.from(this.hostElement.parentNode.children).indexOf(this.hostElement);
23
+ this.pdsTableRowSelected.emit({
24
+ rowIndex,
25
+ isSelected,
26
+ });
27
+ }
28
+ };
29
+ this.generateUniqueId = () => {
30
+ const randomString = Math.random().toString(36).substring(2, 8);
31
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
32
+ const uniqueId = `${randomString}-${timestamp}`;
33
+ return uniqueId;
34
+ };
35
+ this.indeterminate = undefined;
36
+ this.isSelected = undefined;
37
+ }
38
+ classNames() {
39
+ const classNames = [];
40
+ if (this.isSelected) {
41
+ classNames.push("is-selected");
42
+ }
43
+ return classNames.join(' ');
44
+ }
45
+ componentWillRender() {
46
+ this.tableRef = this.hostElement.closest('pds-table');
47
+ if (this.tableRef && this.tableRef.fixedColumn) {
48
+ const tableCell = this.hostElement.querySelector('pds-table-cell');
49
+ tableCell === null || tableCell === void 0 ? void 0 : tableCell.classList.add("is-fixed");
50
+ }
51
+ }
52
+ componentWillLoad() {
53
+ if (this.isSelected) {
54
+ this.handleSelect(this.isSelected);
55
+ }
56
+ }
57
+ render() {
58
+ return (h(Host, { key: 'dbfba35e818a96281f5df7e51e60f0bbaf4d5527', class: this.classNames(), role: "row" }, this.tableRef && this.tableRef.selectable && (h("pds-table-cell", { key: 'a0d9118e63db0829f4352875cbacf76c11978fff', part: this.tableRef.fixedColumn ? 'checkbox-cell' : '', class: this.tableRef.selectable ? 'has-checkbox' : '' }, h("pds-checkbox", { key: '60ebde7bb2e745af55e3713b952f963d50396485', componentId: this.generateUniqueId(), onClick: this.handleClick, indeterminate: this.indeterminate, label: "Select Row", labelHidden: true, checked: this.isSelected }))), h("slot", { key: '97f90a8d36781f3b278f83b16c778d5e2b6e9bce' })));
59
+ }
60
+ get hostElement() { return this; }
61
+ static get style() { return PdsTableRowStyle0; }
62
+ }, [1, "pds-table-row", {
63
+ "indeterminate": [1028],
64
+ "isSelected": [1028, "is-selected"]
65
+ }]);
66
+ function defineCustomElement$1() {
67
+ if (typeof customElements === "undefined") {
68
+ return;
69
+ }
70
+ const components = ["pds-table-row", "pds-checkbox", "pds-table-cell"];
71
+ components.forEach(tagName => { switch (tagName) {
72
+ case "pds-table-row":
73
+ if (!customElements.get(tagName)) {
74
+ customElements.define(tagName, PdsTableRow$1);
75
+ }
76
+ break;
77
+ case "pds-checkbox":
78
+ if (!customElements.get(tagName)) {
79
+ defineCustomElement$3();
80
+ }
81
+ break;
82
+ case "pds-table-cell":
83
+ if (!customElements.get(tagName)) {
84
+ defineCustomElement$2();
85
+ }
86
+ break;
87
+ } });
88
+ }
89
+
90
+ const PdsTableRow = PdsTableRow$1;
91
+ const defineCustomElement = defineCustomElement$1;
92
+
93
+ export { PdsTableRow, defineCustomElement };
94
+
95
+ //# 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;;MCQhBA,aAAW;;;;;;QAmBd,gBAAW,GAAG;YACpB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC,CAAA;QAEO,iBAAY,GAAG,CAAC,UAAmB;YACzC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;gBAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC3F,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC5B,QAAQ;oBACR,UAAU;iBACX,CAAC,CAAA;aACH;SACF,CAAA;QA2BO,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;;;;IA/BO,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;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;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,WAAW,EACzB,aAAa,EAAE,IAAI,CAAC,aAAa,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, Prop } from '@stencil/core';\n\nimport { closest } from '../../../utils/closest';\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 private tableRef: HTMLPdsTableElement;\n\n /**\n * Indicates that the selection state is indeterminate.\n * */\n @Prop({ mutable: true }) indeterminate?: boolean\n\n /**\n * A local state to track whether the row is currently selected.\n */\n @Prop({ mutable: true }) isSelected?: boolean;\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 private handleClick = () => {\n this.isSelected = !this.isSelected; // Toggle the selected state\n this.handleSelect(this.isSelected);\n }\n\n private handleSelect = (isSelected: boolean) => {\n this.indeterminate = false;\n\n if (!closest('pds-table-head', this.hostElement)) {\n const rowIndex = Array.from(this.hostElement.parentNode.children).indexOf(this.hostElement)\n this.pdsTableRowSelected.emit({\n rowIndex,\n isSelected,\n })\n }\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 componentWillLoad() {\n if (this.isSelected) {\n this.handleSelect(this.isSelected);\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.handleClick}\n indeterminate={this.indeterminate}\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,124 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, 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(:focus-visible){--box-shadow-focus:0 0 0 2px var(--pine-color-blue-200);-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}: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.pdsTableSelect = createEvent(this, "pdsTableSelect", 7);
12
+ this.pdsTableSelectAll = createEvent(this, "pdsTableSelectAll", 7);
13
+ this.compact = undefined;
14
+ this.componentId = undefined;
15
+ this.responsive = undefined;
16
+ this.fixedColumn = undefined;
17
+ this.selectable = undefined;
18
+ this.sortingColumn = null;
19
+ this.sortingDirection = 'asc';
20
+ }
21
+ componentWillLoad() {
22
+ this.sortingColumn = null;
23
+ }
24
+ classNames() {
25
+ const classNames = ['pds-table'];
26
+ if (this.compact) {
27
+ classNames.push('is-compact');
28
+ }
29
+ if (this.responsive) {
30
+ classNames.push('is-responsive');
31
+ }
32
+ return classNames.join(' ');
33
+ }
34
+ sortTable(column, direction) {
35
+ const tableBody = this.el.querySelector('pds-table-body');
36
+ // Get the rows in the table body
37
+ const tableRows = Array.from(tableBody.querySelectorAll('pds-table-row'));
38
+ // Find the column index based on the column name
39
+ const columnHeaderCells = Array.from(this.el.querySelectorAll('pds-table-head-cell[sortable]'));
40
+ const columnHeaderCell = columnHeaderCells.find((cell) => cell.innerText.trim() === column);
41
+ if (!columnHeaderCell) {
42
+ console.warn(`Column "${column}" not found.`);
43
+ return;
44
+ }
45
+ const columnIndex = columnHeaderCells.indexOf(columnHeaderCell);
46
+ // Sort the rows based on the content of the specified column
47
+ tableRows.sort((a, b) => {
48
+ const valueA = a.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();
49
+ const valueB = b.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();
50
+ if (direction === 'asc') {
51
+ return valueA.localeCompare(valueB);
52
+ }
53
+ else {
54
+ return valueB.localeCompare(valueA);
55
+ }
56
+ });
57
+ // Clear and append the sorted rows back to the table body
58
+ tableBody.innerHTML = '';
59
+ tableRows.forEach((row) => {
60
+ tableBody.appendChild(row);
61
+ });
62
+ }
63
+ handleTableSort(event) {
64
+ const { direction } = event.detail;
65
+ this.sortTable(event.detail.column, direction);
66
+ this.sortingColumn = event.detail.column;
67
+ this.sortingDirection = direction;
68
+ }
69
+ handleTableSelectAll(event) {
70
+ if (event.defaultPrevented)
71
+ return;
72
+ const pdsTableBody = this.el.querySelector('pds-table-body');
73
+ const tableRows = Array.from(pdsTableBody.querySelectorAll('pds-table-row'));
74
+ tableRows.forEach((row) => {
75
+ row.isSelected = event.detail.isSelected;
76
+ });
77
+ }
78
+ async handleTableSelect(event) {
79
+ if (event.defaultPrevented)
80
+ return;
81
+ const allTableRows = this.el.querySelectorAll('pds-table-row');
82
+ const allSelectedRows = Array.from(allTableRows).every((row) => row.isSelected);
83
+ const noneSelectedRows = Array.from(allTableRows).every((row) => !row.isSelected);
84
+ const pdsTableHead = this.el.querySelector('pds-table-head');
85
+ if (!pdsTableHead)
86
+ return;
87
+ const headerCheckbox = pdsTableHead.shadowRoot.querySelector('pds-checkbox');
88
+ headerCheckbox.checked = allSelectedRows;
89
+ headerCheckbox.indeterminate = !allSelectedRows && !noneSelectedRows;
90
+ }
91
+ render() {
92
+ return (h(Host, { key: '95cc4db296681faa0fc046c9b1d6807d640b7730', class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0" }, h("slot", { key: 'ecc9bc0761409d5a2819a05d72290c294e27454f' })));
93
+ }
94
+ get el() { return this; }
95
+ static get style() { return PdsTableStyle0; }
96
+ }, [1, "pds-table", {
97
+ "compact": [4],
98
+ "componentId": [1, "component-id"],
99
+ "responsive": [4],
100
+ "fixedColumn": [4, "fixed-column"],
101
+ "selectable": [4],
102
+ "sortingColumn": [32],
103
+ "sortingDirection": [32]
104
+ }, [[0, "pdsTableSort", "handleTableSort"], [0, "pdsTableSelectAll", "handleTableSelectAll"], [0, "pdsTableRowSelected", "handleTableSelect"]]]);
105
+ function defineCustomElement$1() {
106
+ if (typeof customElements === "undefined") {
107
+ return;
108
+ }
109
+ const components = ["pds-table"];
110
+ components.forEach(tagName => { switch (tagName) {
111
+ case "pds-table":
112
+ if (!customElements.get(tagName)) {
113
+ customElements.define(tagName, PdsTable$1);
114
+ }
115
+ break;
116
+ } });
117
+ }
118
+
119
+ const PdsTable = PdsTable$1;
120
+ const defineCustomElement = defineCustomElement$1;
121
+
122
+ export { PdsTable, defineCustomElement };
123
+
124
+ //# sourceMappingURL=pds-table.js.map
@@ -0,0 +1 @@
1
+ {"file":"pds-table.js","mappings":"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","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(:focus-visible) {\n --box-shadow-focus: 0 0 0 2px var(--pine-color-blue-200);\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: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, Event, EventEmitter, 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\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\n /**\n * Event that is emitted when the checkbox is clicked, carrying the rowIndex and selected value.\n */\n @Event() pdsTableSelect: EventEmitter<{ rowIndex: number; isSelected: boolean }>;\n\n /**\n * Event that is emitted when the select all checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableSelectAll: EventEmitter<{ isSelected: boolean }>;\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 @Listen('pdsTableSelectAll')\n handleTableSelectAll(event: CustomEvent<{ isSelected: boolean }>) {\n if (event.defaultPrevented) return;\n\n const pdsTableBody = this.el.querySelector('pds-table-body');\n const tableRows = Array.from(pdsTableBody.querySelectorAll('pds-table-row'));\n\n tableRows.forEach((row) => {\n row.isSelected = event.detail.isSelected;\n });\n }\n\n @Listen('pdsTableRowSelected')\n async handleTableSelect(event: CustomEvent<{ rowIndex: number; isSelected: boolean }>) {\n if (event.defaultPrevented) return;\n\n const allTableRows = this.el.querySelectorAll('pds-table-row');\n const allSelectedRows = Array.from(allTableRows).every((row) => row.isSelected);\n const noneSelectedRows = Array.from(allTableRows).every((row) => !row.isSelected);\n const pdsTableHead = this.el.querySelector('pds-table-head');\n if (!pdsTableHead) return;\n\n const headerCheckbox = pdsTableHead.shadowRoot.querySelector('pds-checkbox');\n headerCheckbox.checked = allSelectedRows;\n headerCheckbox.indeterminate = !allSelectedRows && !noneSelectedRows;\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n id={this.componentId}\n role=\"grid\"\n selectable={this.selectable}\n tabindex=\"0\"\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: 'b071d63a6211e70b09f11a18609d15728eb485c6', slot: "tabpanels" }, h("div", { key: 'ab8de65d7142136888c853170b7b8b190f21abcc', 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: '0cac8366d5502be7033d1b71b681bf564aa557e8' }))));
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: 'a36e242d5e746954f80778cf515879ca82258978', "active-tab-name": this.activeTabName, class: this.classNames(), id: this.componentId }, h("div", { key: 'd6d89fd90a9a534f249c549e34308ed245773f60', class: "pds-tabs__tablist", role: "tablist", "aria-label": this.tablistLabel }, h("slot", { key: '9b5e5268c27ecf2a5331cec64d2c7121cef366a1', name: "tabs" })), h("slot", { key: 'b835cf1befe68f54b1751a976846d271ce97634e', 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{--border-interactive-default:var(--pine-border-width-thin) solid var(--pine-color-grey-400);--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-blue-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-default);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: 'f58ccd5b20fc30c6e6153e04e98b27fe265040af', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '480b51012d0f7a05d83fb8cb359d2bc3a4e82189', class: "pds-textarea" }, this.label &&
43
+ h(PdsLabel, { key: '0b34ee6ee8eec6891c00596f840d028ab6ac36bb', htmlFor: this.componentId, text: this.label }), h("textarea", { key: '6f066ce38aaec3257bddd69715118aa5740723c1', "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: '91c66558978cdbb3191c0af31c34c2647749c01a', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
45
+ h("p", { key: 'da8320d10ace733c7181ab3c6827da99d94d7ebd', "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