@salesforcedevs/arch-components 1.20.17-alpha1

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 (363) hide show
  1. package/lwc.config.json +7 -0
  2. package/package.json +19 -0
  3. package/src/modules/common/context/context.html +1 -0
  4. package/src/modules/common/context/context.ts +137 -0
  5. package/src/modules/common/effectAdapter/__tests__/effectAdapter.test.ts +12 -0
  6. package/src/modules/common/effectAdapter/effectAdapter.html +1 -0
  7. package/src/modules/common/effectAdapter/effectAdapter.ts +18 -0
  8. package/src/modules/common/reflectedElement/__tests__/modules/test/select/select.html +3 -0
  9. package/src/modules/common/reflectedElement/__tests__/modules/test/select/select.ts +7 -0
  10. package/src/modules/common/reflectedElement/__tests__/modules/test/selectTransform/selectTransform.html +3 -0
  11. package/src/modules/common/reflectedElement/__tests__/modules/test/selectTransform/selectTransform.ts +18 -0
  12. package/src/modules/common/reflectedElement/__tests__/reflectedElement.test.ts +75 -0
  13. package/src/modules/common/reflectedElement/reflectedElement.ts +50 -0
  14. package/src/modules/common/slot/__tests__/slot.test.ts +96 -0
  15. package/src/modules/common/slot/slot.ts +20 -0
  16. package/src/modules/sa/coverage/coverage.css +35 -0
  17. package/src/modules/sa/coverage/coverage.html +15 -0
  18. package/src/modules/sa/coverage/coverage.ts +406 -0
  19. package/src/modules/sa/coverage/types.d.ts +26 -0
  20. package/src/modules/sa/expandableSection/expandableSection.css +24 -0
  21. package/src/modules/sa/expandableSection/expandableSection.html +20 -0
  22. package/src/modules/sa/expandableSection/expandableSection.stories.ts +37 -0
  23. package/src/modules/sa/expandableSection/expandableSection.ts +24 -0
  24. package/src/modules/sa/explorer/explorer.css +303 -0
  25. package/src/modules/sa/explorer/explorer.html +403 -0
  26. package/src/modules/sa/explorer/explorer.ts +664 -0
  27. package/src/modules/sa/explorer/types.d.ts +60 -0
  28. package/src/modules/sa/gallery/gallery.css +358 -0
  29. package/src/modules/sa/gallery/gallery.html +65 -0
  30. package/src/modules/sa/gallery/gallery.ts +300 -0
  31. package/src/modules/sa/gallery/types.d.ts +35 -0
  32. package/src/modules/sa/socialShare/socialShare.css +49 -0
  33. package/src/modules/sa/socialShare/socialShare.html +56 -0
  34. package/src/modules/sa/socialShare/socialShare.ts +29 -0
  35. package/src/modules/shared/a11y/a11y.ts +25 -0
  36. package/src/modules/shared/children/children.ts +29 -0
  37. package/src/modules/shared/color/color.ts +52 -0
  38. package/src/modules/shared/debounce/debounce.ts +32 -0
  39. package/src/modules/shared/dialog/dialog.ts +154 -0
  40. package/src/modules/shared/elements/__tests__/overflow.test.ts +39 -0
  41. package/src/modules/shared/elements/overflow.ts +71 -0
  42. package/src/modules/shared/fetch/fetch.ts +52 -0
  43. package/src/modules/shared/helpers/helpers.ts +141 -0
  44. package/src/modules/shared/i18n/i18n.ts +74 -0
  45. package/src/modules/shared/labels/__tests__/helpers.test.ts +107 -0
  46. package/src/modules/shared/labels/__tests__/pointHelpers.test.ts +33 -0
  47. package/src/modules/shared/labels/__tests__/timeHelpers.test.ts +89 -0
  48. package/src/modules/shared/labels/helpers.ts +23 -0
  49. package/src/modules/shared/labels/pointHelpers.ts +47 -0
  50. package/src/modules/shared/labels/timeHelpers.ts +182 -0
  51. package/src/modules/shared/labels/types.d.ts +5 -0
  52. package/src/modules/shared/logger/logger.ts +33 -0
  53. package/src/modules/shared/menu/menu.ts +239 -0
  54. package/src/modules/shared/overflow/__tests__/overflow.test.ts +39 -0
  55. package/src/modules/shared/overflow/overflow.ts +71 -0
  56. package/src/modules/shared/polling-request.ts +97 -0
  57. package/src/modules/shared/testutils.ts +118 -0
  58. package/src/modules/shared/track/track.ts +23 -0
  59. package/src/modules/shared/trailhead.ts +123 -0
  60. package/src/modules/shared/types.d.ts +1 -0
  61. package/src/modules/shared/useEffectAttr.ts +16 -0
  62. package/src/modules/shared/withState.ts +21 -0
  63. package/src/modules/tds/appLauncher/__fixtures__/index.ts +34 -0
  64. package/src/modules/tds/appLauncher/__tests__/appLauncher.test.ts +119 -0
  65. package/src/modules/tds/appLauncher/appLauncher.css +65 -0
  66. package/src/modules/tds/appLauncher/appLauncher.html +38 -0
  67. package/src/modules/tds/appLauncher/appLauncher.stories.ts +39 -0
  68. package/src/modules/tds/appLauncher/appLauncher.ts +79 -0
  69. package/src/modules/tds/appLauncher/types.ts +8 -0
  70. package/src/modules/tds/avatar/__tests__/avatar.test.ts +11 -0
  71. package/src/modules/tds/avatar/avatar.css +77 -0
  72. package/src/modules/tds/avatar/avatar.html +36 -0
  73. package/src/modules/tds/avatar/avatar.stories.ts +64 -0
  74. package/src/modules/tds/avatar/avatar.ts +50 -0
  75. package/src/modules/tds/badge/__tests__/badge.test.js +11 -0
  76. package/src/modules/tds/badge/badge.css +22 -0
  77. package/src/modules/tds/badge/badge.html +5 -0
  78. package/src/modules/tds/badge/badge.stories.ts +10 -0
  79. package/src/modules/tds/badge/badge.ts +9 -0
  80. package/src/modules/tds/button/__tests__/button.test.ts +52 -0
  81. package/src/modules/tds/button/button.css +1 -0
  82. package/src/modules/tds/button/button.html +20 -0
  83. package/src/modules/tds/button/button.stories.js +54 -0
  84. package/src/modules/tds/button/button.ts +59 -0
  85. package/src/modules/tds/buttonIcon/__tests__/buttonIcon.test.ts +17 -0
  86. package/src/modules/tds/buttonIcon/buttonIcon.css +1 -0
  87. package/src/modules/tds/buttonIcon/buttonIcon.html +12 -0
  88. package/src/modules/tds/buttonIcon/buttonIcon.stories.js +38 -0
  89. package/src/modules/tds/buttonIcon/buttonIcon.ts +6 -0
  90. package/src/modules/tds/buttonIconLink/buttonIconLink.css +1 -0
  91. package/src/modules/tds/buttonIconLink/buttonIconLink.html +14 -0
  92. package/src/modules/tds/buttonIconLink/buttonIconLink.stories.ts +32 -0
  93. package/src/modules/tds/buttonIconLink/buttonIconLink.ts +9 -0
  94. package/src/modules/tds/buttonLink/__tests__/buttonLink.test.ts +17 -0
  95. package/src/modules/tds/buttonLink/buttonLink.css +1 -0
  96. package/src/modules/tds/buttonLink/buttonLink.html +19 -0
  97. package/src/modules/tds/buttonLink/buttonLink.stories.js +24 -0
  98. package/src/modules/tds/buttonLink/buttonLink.ts +8 -0
  99. package/src/modules/tds/buttonStyles/buttonStyles.css +232 -0
  100. package/src/modules/tds/childSummary/__tests__/childSummary.test.js +99 -0
  101. package/src/modules/tds/childSummary/childSummary.css +74 -0
  102. package/src/modules/tds/childSummary/childSummary.html +38 -0
  103. package/src/modules/tds/childSummary/childSummary.stories.ts +40 -0
  104. package/src/modules/tds/childSummary/childSummary.ts +63 -0
  105. package/src/modules/tds/childSummary/types.d.ts +10 -0
  106. package/src/modules/tds/contentChildListItem/__tests__/contentChildListItem.test.ts +32 -0
  107. package/src/modules/tds/contentChildListItem/contentChildListItem.css +1 -0
  108. package/src/modules/tds/contentChildListItem/contentChildListItem.html +10 -0
  109. package/src/modules/tds/contentChildListItem/contentChildListItem.stories.ts +46 -0
  110. package/src/modules/tds/contentChildListItem/contentChildListItem.ts +34 -0
  111. package/src/modules/tds/contentIcon/contentIcon.css +47 -0
  112. package/src/modules/tds/contentIcon/contentIcon.html +15 -0
  113. package/src/modules/tds/contentIcon/contentIcon.stories.js +110 -0
  114. package/src/modules/tds/contentIcon/contentIcon.ts +66 -0
  115. package/src/modules/tds/contextAdapter/__tests__/contextAdapter.test.ts +76 -0
  116. package/src/modules/tds/contextAdapter/constants.ts +1 -0
  117. package/src/modules/tds/contextAdapter/contextAdapter.html +1 -0
  118. package/src/modules/tds/contextAdapter/contextAdapter.ts +54 -0
  119. package/src/modules/tds/dialogStyles/dialogStyles.css +90 -0
  120. package/src/modules/tds/footerLinks/__tests__/__snapshots__/footerLinks.test.ts.snap +3 -0
  121. package/src/modules/tds/footerLinks/__tests__/footerLinks.test.ts +142 -0
  122. package/src/modules/tds/footerLinks/footerLinks.css +80 -0
  123. package/src/modules/tds/footerLinks/footerLinks.html +30 -0
  124. package/src/modules/tds/footerLinks/footerLinks.ts +48 -0
  125. package/src/modules/tds/footerLinks/types.ts +11 -0
  126. package/src/modules/tds/footerMfe/footerMfe.html +3 -0
  127. package/src/modules/tds/footerMfe/footerMfe.ts +19 -0
  128. package/src/modules/tds/headerAvatar/__tests__/headerAvatar.test.ts +43 -0
  129. package/src/modules/tds/headerAvatar/headerAvatar.css +45 -0
  130. package/src/modules/tds/headerAvatar/headerAvatar.html +25 -0
  131. package/src/modules/tds/headerAvatar/headerAvatar.ts +15 -0
  132. package/src/modules/tds/headerHelpButton/__tests__/headerHelpButton.test.ts +32 -0
  133. package/src/modules/tds/headerHelpButton/headerHelpButton.css +14 -0
  134. package/src/modules/tds/headerHelpButton/headerHelpButton.html +19 -0
  135. package/src/modules/tds/headerHelpButton/headerHelpButton.ts +12 -0
  136. package/src/modules/tds/heading/__tests__/heading.test.ts +50 -0
  137. package/src/modules/tds/heading/heading.css +1 -0
  138. package/src/modules/tds/heading/heading.html +9 -0
  139. package/src/modules/tds/heading/heading.stories.ts +36 -0
  140. package/src/modules/tds/heading/heading.ts +36 -0
  141. package/src/modules/tds/icon/icon.css +28 -0
  142. package/src/modules/tds/icon/icon.html +17 -0
  143. package/src/modules/tds/icon/icon.stories.js +18 -0
  144. package/src/modules/tds/icon/icon.ts +79 -0
  145. package/src/modules/tds/input/__tests__/input.test.ts +41 -0
  146. package/src/modules/tds/input/input.css +34 -0
  147. package/src/modules/tds/input/input.html +12 -0
  148. package/src/modules/tds/input/input.stories.ts +25 -0
  149. package/src/modules/tds/input/input.ts +41 -0
  150. package/src/modules/tds/instrumentation/instrumentation.css +0 -0
  151. package/src/modules/tds/instrumentation/instrumentation.html +1 -0
  152. package/src/modules/tds/instrumentation/instrumentation.ts +113 -0
  153. package/src/modules/tds/pbCard/pbCard.css +28 -0
  154. package/src/modules/tds/pbCard/pbCard.html +21 -0
  155. package/src/modules/tds/pbCard/pbCard.ts +18 -0
  156. package/src/modules/tds/pill/__tests__/pill.test.ts +56 -0
  157. package/src/modules/tds/pill/pill.css +70 -0
  158. package/src/modules/tds/pill/pill.html +17 -0
  159. package/src/modules/tds/pill/pill.stories.ts +41 -0
  160. package/src/modules/tds/pill/pill.ts +34 -0
  161. package/src/modules/tds/progressBar/__tests__/progressBar.test.js +11 -0
  162. package/src/modules/tds/progressBar/progressBar.css +42 -0
  163. package/src/modules/tds/progressBar/progressBar.html +14 -0
  164. package/src/modules/tds/progressBar/progressBar.stories.ts +24 -0
  165. package/src/modules/tds/progressBar/progressBar.ts +14 -0
  166. package/src/modules/tds/radio/__tests__/radio.test.ts +29 -0
  167. package/src/modules/tds/radio/radio.css +89 -0
  168. package/src/modules/tds/radio/radio.html +17 -0
  169. package/src/modules/tds/radio/radio.stories.ts +31 -0
  170. package/src/modules/tds/radio/radio.ts +32 -0
  171. package/src/modules/tds/reset/reset.css +39 -0
  172. package/src/modules/tds/search/__fixtures__/index.ts +32 -0
  173. package/src/modules/tds/search/__tests__/search.test.ts +235 -0
  174. package/src/modules/tds/search/lib/__tests__/__snapshots__/listbox.test.ts.snap +115 -0
  175. package/src/modules/tds/search/lib/__tests__/listbox.test.ts +192 -0
  176. package/src/modules/tds/search/lib/listbox.ts +209 -0
  177. package/src/modules/tds/search/search.css +122 -0
  178. package/src/modules/tds/search/search.html +21 -0
  179. package/src/modules/tds/search/search.stories.ts +20 -0
  180. package/src/modules/tds/search/search.ts +107 -0
  181. package/src/modules/tds/search/types.d.ts +22 -0
  182. package/src/modules/tds/searchList/searchList.css +120 -0
  183. package/src/modules/tds/searchList/searchList.html +43 -0
  184. package/src/modules/tds/searchList/searchList.stories.ts +10 -0
  185. package/src/modules/tds/searchList/searchList.ts +53 -0
  186. package/src/modules/tds/select/__tests__/select.test.ts +150 -0
  187. package/src/modules/tds/select/select.css +42 -0
  188. package/src/modules/tds/select/select.html +24 -0
  189. package/src/modules/tds/select/select.stories.ts +59 -0
  190. package/src/modules/tds/select/select.ts +60 -0
  191. package/src/modules/tds/spinner/__tests__/spinner.test.ts +11 -0
  192. package/src/modules/tds/spinner/spinner.css +194 -0
  193. package/src/modules/tds/spinner/spinner.html +9 -0
  194. package/src/modules/tds/spinner/spinner.stories.ts +20 -0
  195. package/src/modules/tds/spinner/spinner.ts +15 -0
  196. package/src/modules/tds/styles/styles.css +24 -0
  197. package/src/modules/tds/summary/__tests__/summary.test.ts +135 -0
  198. package/src/modules/tds/summary/summary.css +135 -0
  199. package/src/modules/tds/summary/summary.html +69 -0
  200. package/src/modules/tds/summary/summary.stories.js +148 -0
  201. package/src/modules/tds/summary/summary.ts +95 -0
  202. package/src/modules/tds/tab/__tests__/tab.test.ts +25 -0
  203. package/src/modules/tds/tab/tab.css +3 -0
  204. package/src/modules/tds/tab/tab.html +5 -0
  205. package/src/modules/tds/tab/tab.ts +46 -0
  206. package/src/modules/tds/tabset/__tests__/tabset.test.ts +108 -0
  207. package/src/modules/tds/tabset/tabset.css +112 -0
  208. package/src/modules/tds/tabset/tabset.html +63 -0
  209. package/src/modules/tds/tabset/tabset.stories.ts +32 -0
  210. package/src/modules/tds/tabset/tabset.ts +232 -0
  211. package/src/modules/tds/themeProvider/themeProvider.css +502 -0
  212. package/src/modules/tds/themeProvider/themeProvider.html +3 -0
  213. package/src/modules/tds/themeProvider/themeProvider.ts +37 -0
  214. package/src/modules/tds/tile/tile.css +23 -0
  215. package/src/modules/tds/tile/tile.html +5 -0
  216. package/src/modules/tds/tile/tile.stories.js +14 -0
  217. package/src/modules/tds/tile/tile.ts +12 -0
  218. package/src/modules/tds/xsfMfeEvents/xsfMfeEvents.html +1 -0
  219. package/src/modules/tds/xsfMfeEvents/xsfMfeEvents.ts +47 -0
  220. package/src/modules/th/contextAdapter/__tests__/contextAdapter.test.ts +104 -0
  221. package/src/modules/th/contextAdapter/contextAdapter.html +1 -0
  222. package/src/modules/th/contextAdapter/contextAdapter.ts +49 -0
  223. package/src/modules/th/favoriteButton/__tests__/favoriteButton.test.ts +56 -0
  224. package/src/modules/th/favoriteButton/favoriteButton.css +3 -0
  225. package/src/modules/th/favoriteButton/favoriteButton.html +15 -0
  226. package/src/modules/th/favoriteButton/favoriteButton.stories.js +30 -0
  227. package/src/modules/th/favoriteButton/favoriteButton.ts +84 -0
  228. package/src/modules/th/favoriteButton/mocks/index.ts +12 -0
  229. package/src/modules/th/search/__fixtures__/index.ts +14 -0
  230. package/src/modules/th/search/__tests__/search.test.ts +233 -0
  231. package/src/modules/th/search/constants.ts +2 -0
  232. package/src/modules/th/search/mocks/index.ts +30 -0
  233. package/src/modules/th/search/mocks/responses.ts +54 -0
  234. package/src/modules/th/search/search.css +4 -0
  235. package/src/modules/th/search/search.html +12 -0
  236. package/src/modules/th/search/search.ts +172 -0
  237. package/src/modules/th/search/types.d.ts +29 -0
  238. package/src/modules/th/tbid/__tests__/__snapshots__/tbid.test.ts.snap +3 -0
  239. package/src/modules/th/tbid/__tests__/tbid.test.ts +242 -0
  240. package/src/modules/th/tbid/tbid.html +1 -0
  241. package/src/modules/th/tbid/tbid.stories.mdx +25 -0
  242. package/src/modules/th/tbid/tbid.ts +215 -0
  243. package/src/modules/tm/card/__tests__/card.test.ts +65 -0
  244. package/src/modules/tm/card/card.css +131 -0
  245. package/src/modules/tm/card/card.html +81 -0
  246. package/src/modules/tm/card/card.ts +269 -0
  247. package/src/modules/tm/cardBase/cardBase.css +11 -0
  248. package/src/modules/tm/cardGridA/cardGridA.css +11 -0
  249. package/src/modules/tm/cardGridA/cardGridA.html +21 -0
  250. package/src/modules/tm/cardGridA/cardGridA.stories.js +107 -0
  251. package/src/modules/tm/cardGridA/cardGridA.ts +24 -0
  252. package/src/modules/tm/cardGridB/cardGridB.css +88 -0
  253. package/src/modules/tm/cardGridB/cardGridB.html +20 -0
  254. package/src/modules/tm/cardGridB/cardGridB.stories.js +58 -0
  255. package/src/modules/tm/cardGridB/cardGridB.ts +19 -0
  256. package/src/modules/tm/cardGridC/cardGridC.css +24 -0
  257. package/src/modules/tm/cardGridC/cardGridC.html +22 -0
  258. package/src/modules/tm/cardGridC/cardGridC.stories.js +42 -0
  259. package/src/modules/tm/cardGridC/cardGridC.ts +11 -0
  260. package/src/modules/tm/cardGridD/cardGridD.css +17 -0
  261. package/src/modules/tm/cardGridD/cardGridD.html +20 -0
  262. package/src/modules/tm/cardGridD/cardGridD.stories.js +34 -0
  263. package/src/modules/tm/cardGridD/cardGridD.ts +7 -0
  264. package/src/modules/tm/cardNew/cardNew.css +31 -0
  265. package/src/modules/tm/cardNew/cardNew.html +29 -0
  266. package/src/modules/tm/cardNew/cardNew.ts +66 -0
  267. package/src/modules/tm/content/__fixtures__/index.ts +884 -0
  268. package/src/modules/tm/content/__tests__/content.test.ts +95 -0
  269. package/src/modules/tm/content/content.css +641 -0
  270. package/src/modules/tm/content/content.html +53 -0
  271. package/src/modules/tm/content/content.stories.js +14 -0
  272. package/src/modules/tm/content/content.ts +171 -0
  273. package/src/modules/tm/endCapA/__tests__/endCapA.test.ts +52 -0
  274. package/src/modules/tm/endCapA/endCapA.css +64 -0
  275. package/src/modules/tm/endCapA/endCapA.html +21 -0
  276. package/src/modules/tm/endCapA/endCapA.stories.js +37 -0
  277. package/src/modules/tm/endCapA/endCapA.ts +23 -0
  278. package/src/modules/tm/eventsA/eventsA.css +107 -0
  279. package/src/modules/tm/eventsA/eventsA.html +26 -0
  280. package/src/modules/tm/eventsA/eventsA.stories.js +51 -0
  281. package/src/modules/tm/eventsA/eventsA.ts +48 -0
  282. package/src/modules/tm/faqA/faqA.css +87 -0
  283. package/src/modules/tm/faqA/faqA.html +27 -0
  284. package/src/modules/tm/faqA/faqA.stories.js +25 -0
  285. package/src/modules/tm/faqA/faqA.ts +40 -0
  286. package/src/modules/tm/featureGridA/__tests__/featureGridA.test.ts +116 -0
  287. package/src/modules/tm/featureGridA/featureGridA.css +95 -0
  288. package/src/modules/tm/featureGridA/featureGridA.html +34 -0
  289. package/src/modules/tm/featureGridA/featureGridA.stories.js +45 -0
  290. package/src/modules/tm/featureGridA/featureGridA.ts +59 -0
  291. package/src/modules/tm/footnote/footnote.css +28 -0
  292. package/src/modules/tm/footnote/footnote.html +3 -0
  293. package/src/modules/tm/footnote/footnote.stories.js +29 -0
  294. package/src/modules/tm/footnote/footnote.ts +35 -0
  295. package/src/modules/tm/heroA/__tests__/heroA.test.ts +51 -0
  296. package/src/modules/tm/heroA/heroA.css +116 -0
  297. package/src/modules/tm/heroA/heroA.html +27 -0
  298. package/src/modules/tm/heroA/heroA.stories.js +49 -0
  299. package/src/modules/tm/heroA/heroA.ts +56 -0
  300. package/src/modules/tm/heroB/heroB.css +78 -0
  301. package/src/modules/tm/heroB/heroB.html +26 -0
  302. package/src/modules/tm/heroB/heroB.stories.js +44 -0
  303. package/src/modules/tm/heroB/heroB.ts +26 -0
  304. package/src/modules/tm/page/__tests__/page.test.ts +35 -0
  305. package/src/modules/tm/page/page.css +3 -0
  306. package/src/modules/tm/page/page.html +3 -0
  307. package/src/modules/tm/page/page.stories.js +10 -0
  308. package/src/modules/tm/page/page.ts +3 -0
  309. package/src/modules/tm/pageHeaderA/pageHeaderA.css +82 -0
  310. package/src/modules/tm/pageHeaderA/pageHeaderA.html +24 -0
  311. package/src/modules/tm/pageHeaderA/pageHeaderA.stories.js +18 -0
  312. package/src/modules/tm/pageHeaderA/pageHeaderA.ts +51 -0
  313. package/src/modules/tm/pageNavigationA/pageNavigationA.css +41 -0
  314. package/src/modules/tm/pageNavigationA/pageNavigationA.html +9 -0
  315. package/src/modules/tm/pageNavigationA/pageNavigationA.stories.js +34 -0
  316. package/src/modules/tm/pageNavigationA/pageNavigationA.ts +18 -0
  317. package/src/modules/tm/promoA/__tests__/promoA.test.ts +89 -0
  318. package/src/modules/tm/promoA/promoA.css +95 -0
  319. package/src/modules/tm/promoA/promoA.html +22 -0
  320. package/src/modules/tm/promoA/promoA.stories.js +38 -0
  321. package/src/modules/tm/promoA/promoA.ts +62 -0
  322. package/src/modules/tm/sectionA/sectionA.css +64 -0
  323. package/src/modules/tm/sectionA/sectionA.html +21 -0
  324. package/src/modules/tm/sectionA/sectionA.stories.js +18 -0
  325. package/src/modules/tm/sectionA/sectionA.ts +27 -0
  326. package/src/modules/tm/sectionSpacer/sectionSpacer.css +4 -0
  327. package/src/modules/tm/sectionSpacer/sectionSpacer.html +1 -0
  328. package/src/modules/tm/sectionSpacer/sectionSpacer.ts +3 -0
  329. package/src/modules/tm/skillsCardA/skillsCardA.css +73 -0
  330. package/src/modules/tm/skillsCardA/skillsCardA.html +37 -0
  331. package/src/modules/tm/skillsCardA/skillsCardA.ts +38 -0
  332. package/src/modules/tm/skillsGridA/skillsGridA.css +12 -0
  333. package/src/modules/tm/skillsGridA/skillsGridA.html +5 -0
  334. package/src/modules/tm/skillsGridA/skillsGridA.stories.ts +65 -0
  335. package/src/modules/tm/skillsGridA/skillsGridA.ts +3 -0
  336. package/src/modules/tm/statsA/statsA.css +26 -0
  337. package/src/modules/tm/statsA/statsA.html +10 -0
  338. package/src/modules/tm/statsA/statsA.stories.js +29 -0
  339. package/src/modules/tm/statsA/statsA.ts +20 -0
  340. package/src/modules/tm/textItem/textItem.css +53 -0
  341. package/src/modules/tm/textItem/textItem.html +18 -0
  342. package/src/modules/tm/textItem/textItem.ts +32 -0
  343. package/src/modules/tm/textItemGridA/textItemGridA.css +11 -0
  344. package/src/modules/tm/textItemGridA/textItemGridA.html +15 -0
  345. package/src/modules/tm/textItemGridA/textItemGridA.stories.js +67 -0
  346. package/src/modules/tm/textItemGridA/textItemGridA.ts +20 -0
  347. package/src/modules/tm/threeCardGrid/threeCardGrid.css +6 -0
  348. package/src/modules/tm/threeCardGrid/threeCardGrid.html +5 -0
  349. package/src/modules/tm/threeCardGrid/threeCardGrid.ts +3 -0
  350. package/src/modules/tm/trailblazersA/trailblazersA.css +70 -0
  351. package/src/modules/tm/trailblazersA/trailblazersA.html +42 -0
  352. package/src/modules/tm/trailblazersA/trailblazersA.stories.js +52 -0
  353. package/src/modules/tm/trailblazersA/trailblazersA.ts +43 -0
  354. package/src/modules/tm/utils/utils.ts +18 -0
  355. package/src/modules/tm/youtube/youtube.css +7 -0
  356. package/src/modules/tm/youtube/youtube.html +10 -0
  357. package/src/modules/tm/youtube/youtube.stories.js +15 -0
  358. package/src/modules/tm/youtube/youtube.ts +27 -0
  359. package/src/modules/ui/focusTrap/focusTrap.html +5 -0
  360. package/src/modules/ui/focusTrap/focusTrap.ts +104 -0
  361. package/src/modules/ui/focusVisible/__tests__/focusVisible.test.ts +95 -0
  362. package/src/modules/ui/focusVisible/focusVisible.html +3 -0
  363. package/src/modules/ui/focusVisible/focusVisible.ts +46 -0
@@ -0,0 +1,406 @@
1
+ import { LightningElement, api, track } from 'lwc';
2
+ import { ProductArea, FeatureArea, RoadmapFeature } from './types';
3
+
4
+ export default class coverage extends LightningElement {
5
+
6
+ // get the inputs from the config
7
+ _portfolio: any;
8
+ _covered: any;
9
+ _selected: any;
10
+
11
+ // hold the coverage data
12
+ portfolioData: ProductArea[] = [];
13
+ roadmapData: RoadmapFeature[] = [];
14
+ totalProductAreas: number = 0;
15
+ totalFeatureAreas: number = 0;
16
+ paCoverageCount: number = 0;
17
+ faCoverageCount: number = 0;
18
+ paCoveragePct: number = 0;
19
+ faCoveragePct: number = 0;
20
+
21
+ // used to check if the chartjs script loaded
22
+ scriptLoaded = false;
23
+
24
+ // holds the chartjs components
25
+ donutChart: any;
26
+ barChart: any;
27
+ @track productAreaTitle: string = '';
28
+ @track featureAreaTitle: string = '';
29
+
30
+ // chart settings
31
+ xlightCloudBlue: string = '#eaf5fe';
32
+ lightCloudBlue: string = '#90d0fe';
33
+ medCloudBlue: string = '#0d9dda';
34
+ inactiveBg: string = '#dbdbdb';
35
+ inactiveHover: string = '#d3d3d3';
36
+ selectedPA: ProductArea | undefined;
37
+
38
+ constructor() {
39
+ super();
40
+ }
41
+
42
+ /// this function fires when a component is inserted into the DOM
43
+ /// we use this function to collect initial data and set up the page:
44
+ /// gets product and feature json data
45
+ /// gets roadmap feature data
46
+ /// adds the chartjs library
47
+ async connectedCallback() {
48
+
49
+ }
50
+
51
+ setupCharts() {
52
+ if (this._covered && this._portfolio) {
53
+ try {
54
+
55
+ this.portfolioData = [...this._portfolio] as ProductArea[];
56
+ this.portfolioData.sort((a, b) => a.name.localeCompare(b.name));
57
+ this.roadmapData = [...this._covered] as RoadmapFeature[];
58
+
59
+ this.totalProductAreas = this.portfolioData.length;
60
+ this.totalFeatureAreas = this.portfolioData.reduce((total, productArea) => {
61
+ return total + productArea.feature_areas.length;
62
+ }, 0);
63
+
64
+ // now update the coverage values in the portfolio data
65
+ this.paCoverageCount = this.portfolioData.filter(pa => pa.covered == true).length;
66
+ this.paCoveragePct = this.paCoverageCount / this.totalProductAreas * 100;
67
+
68
+ // add the chartsjs library to the dom
69
+ var script = document.createElement('script');
70
+ script.src = 'https://cdn.jsdelivr.net/npm/chart.js';
71
+ document.head.appendChild(script);
72
+ script.onload = () => {
73
+ this.scriptLoaded = true;
74
+ this.registerCenterLabelPlugin();
75
+ this.initializeProductAreaChart();
76
+ this.initializeFeatureAreaChart();
77
+ this.updateSelectedProductArea(this.donutChart);
78
+ };
79
+
80
+ } catch (error: any) {
81
+ console.error("An error occurred getting the portfolio data:", error?.message || String(error));
82
+ }
83
+ }
84
+ }
85
+
86
+ /// set up the donut chart for product areas
87
+ initializeProductAreaChart() {
88
+
89
+ // Data for the donut chart
90
+ const dataDonut = {
91
+ labels: this.portfolioData.map(area => area.name),
92
+ datasets: [{
93
+ data: Array.from({ length: this.totalProductAreas }, () => 100/this.totalProductAreas),
94
+ backgroundColor: this.portfolioData.map(area => area.covered ? area.colors.light : this.inactiveBg),
95
+ hoverBackgroundColor: this.portfolioData.map(area => area.covered ? area.colors.xlight : this.inactiveHover),
96
+ hoverOffset: 10,
97
+ cutout: "25%"
98
+ }]
99
+ };
100
+
101
+ // options for donut chart
102
+ const optionsDonut = {
103
+ responsive: true,
104
+ maintainAspectRatio: false,
105
+ autoPadding: false,
106
+ hover: false,
107
+ layout: {
108
+ padding: {
109
+ bottom: 15
110
+ }
111
+ },
112
+ plugins: {
113
+ legend: {
114
+ display: true,
115
+ position: "left",
116
+ onClick: () => {}
117
+ },
118
+ title: {
119
+ display: false,
120
+ anchor: 'center',
121
+ clamp: true,
122
+ align: 'center',
123
+ fullSize: true,
124
+ font: {
125
+ family: "Salesforce Sans",
126
+ size: 15,
127
+ weight: 'normal'
128
+ }
129
+ },
130
+ tooltip: {
131
+ enabled: true,
132
+ label: {
133
+ display: false
134
+ },
135
+ callbacks: {
136
+ title: function(context: any) {
137
+ return context.label;
138
+ },
139
+ label: function(context: any) {
140
+ return '';
141
+ }
142
+ }
143
+ }
144
+ }
145
+ };
146
+
147
+ // config for donut
148
+ const configDonut = {
149
+ type: 'doughnut',
150
+ data: dataDonut,
151
+ options: optionsDonut
152
+ };
153
+
154
+ // Create the Donut chart
155
+ const chartCanvas = this.template.querySelector("#chartCanvas") as HTMLCanvasElement;
156
+ if (chartCanvas) {
157
+ this.donutChart = new (window as any).Chart(chartCanvas, configDonut);
158
+ }
159
+ }
160
+
161
+ // set up the plugin to place the % at the center of the donut
162
+ registerCenterLabelPlugin() {
163
+ (window as any).Chart.register({
164
+ id: 'center-label',
165
+ afterDatasetsDraw: function(chart: any) {
166
+ if (chart.config.type == 'doughnut') {
167
+ var text = chart.config.options.plugins.title.text;
168
+ const ctx = chart.ctx;
169
+ ctx.save();
170
+ const x = chart.getDatasetMeta(0).data[0].x;
171
+ const y = chart.getDatasetMeta(0).data[0].y;
172
+ ctx.textAlign = 'center';
173
+ ctx.textBaseline = 'middle';
174
+ ctx.font = '18px Salesforce Sans';
175
+ ctx.fillText(text, x, y);
176
+ }
177
+ }
178
+ });
179
+ }
180
+
181
+ // build the datasets for the bar chart when All Product Areas is selected
182
+ getFeatureAreaChartForEntirePortfolio() {
183
+ return {
184
+ labels: this.portfolioData.map(pa => pa.name),
185
+ datasets: [{
186
+ data: this.portfolioData.map(pa => pa.feature_area_coverage),
187
+ backgroundColor: this.portfolioData.map(pa => (pa.covered) ? pa.colors.light : this.inactiveBg)
188
+ }]
189
+ };
190
+ }
191
+
192
+ // build the datasets for the bar chart when one Prod Area is selected
193
+ getFeatureAreaChartForSelectedProductArea() {
194
+ if (!this.selectedPA) {
195
+ return this.getFeatureAreaChartForEntirePortfolio();
196
+ }
197
+
198
+ let dataVal = 100/this.selectedPA.feature_areas.length;
199
+ return {
200
+ labels: [`${this.selectedPA.feature_areas_covered} of ${this.selectedPA.feature_areas.length}`],
201
+ datasets: this.selectedPA.feature_areas.map(fa => ({
202
+ data: [dataVal],
203
+ label: fa.name,
204
+ backgroundColor: (fa.covered) ? this.selectedPA!.colors.light : this.inactiveBg,
205
+ borderWidth: 2,
206
+ borderColor: 'white'
207
+ }))
208
+ };
209
+ }
210
+
211
+ // set up the bar chart for feature area coverage
212
+ initializeFeatureAreaChart() {
213
+
214
+ // options for feature bar
215
+ const optionsBar = {
216
+ indexAxis: 'y',
217
+ hover: false,
218
+ scales: {
219
+ x: {
220
+ display: true,
221
+ begingAtZero: true,
222
+ min: 0,
223
+ max: 100,
224
+ stacked: true,
225
+ ticks: {
226
+ // forces step size to be 50 units
227
+ stepSize: 25,
228
+ callback: function (value: any) {
229
+ return value + '%'; // Appending '%' to the tick value
230
+ }
231
+ }
232
+ },
233
+ y: {
234
+ stacked: true,
235
+ display: true,
236
+ begingAtZero: true,
237
+ grouped: false
238
+ }
239
+ },
240
+ plugins: {
241
+ legend: {
242
+ display: false
243
+ },
244
+ title: {
245
+ display: false,
246
+ text: `${this.faCoveragePct.toFixed(0)}% of all feature areas are in this roadmap`,
247
+ fullSize: true,
248
+ align: 'end',
249
+ font: {
250
+ family: "Salesforce Sans",
251
+ size: 16,
252
+ weight: 'normal'
253
+ }
254
+ }
255
+ ,tooltip: {
256
+ enabled: true,
257
+ label: {
258
+ display: false
259
+ },
260
+ callbacks: {
261
+ title: function(context: any) {
262
+ if (context[0].label.includes(' of ')){
263
+ return context[0].dataset.label;
264
+ } else {
265
+ return context.label;
266
+ }
267
+ },
268
+ label: function(context: any) {
269
+ if (context.dataset.label) {
270
+ return '';
271
+ } else {
272
+ return `${context.formattedValue}%`;
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ };
279
+
280
+ // config for features bar
281
+ const configBar = {
282
+ type: 'bar',
283
+ data: this.getFeatureAreaChartForEntirePortfolio(),
284
+ options: optionsBar
285
+ };
286
+
287
+ const barCanvas = this.template.querySelector("#barCanvas") as HTMLCanvasElement;
288
+ if (barCanvas) {
289
+ this.featureAreaTitle = `${this.faCoveragePct.toFixed(0)}% of all feature areas are in this roadmap`;
290
+ this.barChart = new (window as any).Chart(barCanvas, configBar);
291
+ }
292
+
293
+ }
294
+
295
+ // handle product area selection change event
296
+ updateSelectedProductArea(chart: any) {
297
+
298
+ // reset the Donut chart
299
+ if (chart.getActiveElements().length > 0) {
300
+ chart.setActiveElements([]);
301
+ chart.tooltip.setActiveElements([]);
302
+ }
303
+
304
+ // now lets mimic a hover based on the selected product area
305
+ // first get the selected product area
306
+ let selectedIndex = -1;
307
+ selectedIndex = chart.config.data.labels.indexOf(this._selected) as number;
308
+
309
+ // check if there is a selection
310
+ if (selectedIndex != -1) {
311
+ // hide the center value
312
+ chart.config.options.plugins.title.text = '';
313
+
314
+ // now lets set the active settings on the selected prod area
315
+ this.selectedPA = this.portfolioData.find(area => area.name === this._selected);
316
+ if (this.selectedPA) {
317
+
318
+ // update the non active items
319
+ chart.config.data.datasets[0].backgroundColor = this.portfolioData.map(area => area.covered ? area.colors.xlight : this.inactiveBg);
320
+ chart.config.data.datasets[0].backgroundColor[selectedIndex] = this.selectedPA.colors.light;
321
+ chart.legend.legendItems[selectedIndex].fillStyle = this.selectedPA.colors.light;
322
+
323
+ // update the selected offset and tooltip
324
+ chart.setActiveElements([
325
+ {
326
+ datasetIndex: 0,
327
+ index: selectedIndex
328
+ }
329
+ ]);
330
+ chart.tooltip.setActiveElements([
331
+ {
332
+ datasetIndex: 0,
333
+ index: selectedIndex
334
+ }
335
+ ]);
336
+ }
337
+
338
+ } else {
339
+ // show the center value
340
+ chart.config.options.plugins.title.text = `${this.paCoveragePct.toFixed(0)}%`;
341
+ // update the all the items to active
342
+ chart.config.data.datasets[0].backgroundColor = this.portfolioData.map(area => area.covered ? area.colors.light : this.inactiveBg);
343
+ }
344
+
345
+ // now update the donut chart and the bar chart
346
+ chart.update();
347
+ this.updateSelectedFeatureArea(this.barChart);
348
+ }
349
+
350
+ // update the bar chart when product area selection changes
351
+ updateSelectedFeatureArea(chart: any) {
352
+
353
+ // reset the chart
354
+ if (chart.getActiveElements().length > 0) {
355
+ chart.setActiveElements([]);
356
+ chart.tooltip.setActiveElements([]);
357
+ }
358
+
359
+ // check if there is a product area selected
360
+ if (this.selectedPA && this._selected != '') {
361
+ chart.config.data = this.getFeatureAreaChartForSelectedProductArea();
362
+ } else {
363
+ chart.config.data = this.getFeatureAreaChartForEntirePortfolio();
364
+ }
365
+
366
+ // always update the bar
367
+ chart.update();
368
+
369
+ }
370
+
371
+ /// Below is the getters and setters for inputs
372
+ @api
373
+ set portfolio(value: any) {
374
+ if(this._portfolio !== value && value.length > 0) {
375
+ this._portfolio = [...value];
376
+ this.setupCharts();
377
+ }
378
+ }
379
+ get portfolio() {
380
+ return this._portfolio;
381
+ }
382
+
383
+ @api
384
+ set covered(value: any) {
385
+ if(this._covered !== value && value.length > 0) {
386
+ this._covered = [...value];
387
+ this.setupCharts();
388
+ }
389
+ }
390
+ get covered() {
391
+ return this._covered;
392
+ }
393
+
394
+ @api
395
+ set selected(value: any) {
396
+ if(this._selected !== value) {
397
+ this._selected = value;
398
+ if (this.scriptLoaded) {
399
+ this.updateSelectedProductArea(this.donutChart);
400
+ }
401
+ }
402
+ }
403
+ get selected() {
404
+ return this._selected;
405
+ }
406
+ }
@@ -0,0 +1,26 @@
1
+ export type ProductArea = {
2
+ name: string;
3
+ colors: Colors;
4
+ covered: boolean;
5
+ feature_areas_covered: number;
6
+ feature_area_coverage: number;
7
+ feature_areas: FeatureArea[];
8
+ };
9
+
10
+ export type FeatureArea = {
11
+ name: string;
12
+ covered: boolean;
13
+ productArea: string;
14
+ activeColor: string;
15
+ inactiveColor: string;
16
+ features: string[];
17
+ }
18
+
19
+ export type Colors = {
20
+ xlight: string;
21
+ light: string;
22
+ }
23
+
24
+ export type RoadmapFeature = {
25
+ [key: string]: any;
26
+ };
@@ -0,0 +1,24 @@
1
+ @import 'tds/reset';
2
+
3
+ .section-title {
4
+ display: flex;
5
+ align-items: center;
6
+ }
7
+
8
+ .section-content {
9
+ display: none;
10
+ }
11
+
12
+ .is-open .section-content {
13
+ padding-top: 0.5rem;
14
+ display: block;
15
+ }
16
+
17
+ .icon {
18
+ transform: rotate(-90deg);
19
+ transition: transform 300ms;
20
+ }
21
+
22
+ .is-open .icon {
23
+ transform: rotate(0deg);
24
+ }
@@ -0,0 +1,20 @@
1
+ <template>
2
+ <div class={sectionClass}>
3
+ <h3 class="section-title">
4
+ <tds-button-icon
5
+ size="small"
6
+ aria-label="Expand/Collapse"
7
+ variant="bare"
8
+ aria-controls="expand"
9
+ aria-expanded={_isOpen}
10
+ onclick={handleExpandClick}
11
+ >
12
+ <tds-icon class="icon" size="small" symbol="switch"></tds-icon>
13
+ </tds-button-icon>
14
+ <slot name="title"></slot>
15
+ </h3>
16
+ <div aria-hidden={isClosed} class="section-content" id="expand">
17
+ <slot></slot>
18
+ </div>
19
+ </div>
20
+ </template>
@@ -0,0 +1,37 @@
1
+ import { html } from 'lit-html';
2
+
3
+ export default {
4
+ title: 'sa/sa-expandable-section',
5
+ parameters: {
6
+ modules: ['/modules/sa-expandable-section.js']
7
+ }
8
+ };
9
+
10
+ export const Base = () =>
11
+ html`
12
+ <sa-expandable-section>
13
+ <span slot="title">Section Title</span>
14
+ <p>
15
+ Aenean eu leo quam. Pellentesque ornare sem lacinia quam
16
+ venenatis vestibulum. Fusce dapibus, tellus ac cursus commodo,
17
+ tortor mauris condimentum nibh, ut fermentum massa justo sit
18
+ amet risus. Lorem ipsum dolor sit amet, consectetur adipiscing
19
+ elit. Nullam quis risus eget urna mollis ornare vel eu leo.
20
+ Nulla vitae elit libero, a pharetra augue.
21
+ </p>
22
+ </sa-expandable-section>
23
+ `;
24
+
25
+ export const Open = () => html`
26
+ <sa-expandable-section is-open="false">
27
+ <span slot="title">Section Title</span>
28
+ <p>
29
+ Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis
30
+ vestibulum. Fusce dapibus, tellus ac cursus commodo, tortor mauris
31
+ condimentum nibh, ut fermentum massa justo sit amet risus. Lorem
32
+ ipsum dolor sit amet, consectetur adipiscing elit. Nullam quis risus
33
+ eget urna mollis ornare vel eu leo. Nulla vitae elit libero, a
34
+ pharetra augue.
35
+ </p>
36
+ </sa-expandable-section>
37
+ `;
@@ -0,0 +1,24 @@
1
+ import { LightningElement, api } from 'lwc';
2
+
3
+ export default class ExpandableSection extends LightningElement {
4
+ @api
5
+ get isOpen() {
6
+ return this._isOpen;
7
+ }
8
+ set isOpen(value) {
9
+ this._isOpen = value;
10
+ }
11
+ _isOpen = false;
12
+
13
+ handleExpandClick() {
14
+ this._isOpen = !this._isOpen;
15
+ }
16
+
17
+ get sectionClass() {
18
+ return `section ${this._isOpen ? 'is-open' : ''}`;
19
+ }
20
+
21
+ get isClosed() {
22
+ return !this._isOpen;
23
+ }
24
+ }