@salesforcedevs/dx-components 0.56.1 → 0.56.2-example

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 (135) hide show
  1. package/lwc.config.json +18 -3
  2. package/package.json +18 -6
  3. package/src/assets/icons/salesforcebrand-sprite/svg/symbols.svg +492 -111
  4. package/src/assets/svg/big-moon.svg +1 -0
  5. package/src/assets/svg/blue-circle.svg +3 -0
  6. package/src/assets/svg/login-widget-bg.png +0 -0
  7. package/src/assets/svg/subscribe-background-left.svg +14 -0
  8. package/src/assets/svg/subscribe-background-right.svg +11 -0
  9. package/src/assets/svg/trial-left.svg +6 -0
  10. package/src/assets/svg/trial-right.svg +26 -0
  11. package/src/modules/dx/banner/banner (1).ts +12 -0
  12. package/src/modules/dx/banner/banner.ts +3 -5
  13. package/src/modules/dx/button/button.css +10 -9
  14. package/src/modules/dx/buttonToggle/buttonToggle.css +50 -0
  15. package/src/modules/dx/buttonToggle/buttonToggle.html +17 -0
  16. package/src/modules/dx/buttonToggle/buttonToggle.ts +75 -0
  17. package/src/modules/dx/cardCallout/cardCallout.ts +8 -4
  18. package/src/modules/dx/cardContent/cardContent.html +4 -1
  19. package/src/modules/dx/cardDocs/cardDocs.html +4 -1
  20. package/src/modules/dx/cardEvent/cardEvent.html +1 -2
  21. package/src/modules/dx/cardEvent/cardEvent.ts +1 -1
  22. package/src/modules/dx/cardExpanded/cardExpanded.html +1 -6
  23. package/src/modules/dx/cardExpanded/cardExpanded.ts +2 -2
  24. package/src/modules/dx/cardMinimal/cardMinimal.html +1 -6
  25. package/src/modules/dx/cardTrial/cardTrial.css +63 -4
  26. package/src/modules/dx/cardTrial/cardTrial.html +96 -12
  27. package/src/modules/dx/cardTrial/cardTrial.ts +70 -2
  28. package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.css +149 -0
  29. package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.html +85 -0
  30. package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.ts +67 -0
  31. package/src/modules/dx/checkbox/checkbox.css +4 -0
  32. package/src/modules/dx/codeBlock/codeBlock.ts +5 -1
  33. package/src/modules/dx/dropdown/dropdown.html +5 -1
  34. package/src/modules/dx/dropdown/dropdown.ts +13 -3
  35. package/src/modules/dx/dropdownOption/dropdownOption.css +119 -1
  36. package/src/modules/dx/dropdownOption/dropdownOption.html +4 -0
  37. package/src/modules/dx/dropdownOption/dropdownOption.ts +20 -7
  38. package/src/modules/dx/feature/feature.ts +3 -3
  39. package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +84 -18
  40. package/src/modules/dx/featuredContentHeader/featuredContentHeader.html +109 -99
  41. package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +27 -7
  42. package/src/modules/dx/featuresList/featuresList.css +1 -1
  43. package/src/modules/dx/filterMenu/filterMenu.css +26 -8
  44. package/src/modules/dx/filterMenu/filterMenu.html +24 -8
  45. package/src/modules/dx/filterMenu/filterMenu.ts +1 -0
  46. package/src/modules/dx/footer/footer.css +1 -1
  47. package/src/modules/dx/footer/footer.html +25 -20
  48. package/src/modules/dx/footer/footer.ts +19 -15
  49. package/src/modules/dx/footer/links.ts +115 -39
  50. package/src/modules/dx/formattedDateTime/formattedDateTime.ts +8 -3
  51. package/src/modules/dx/header/header.html +10 -3
  52. package/src/modules/dx/header/header.ts +4 -0
  53. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.css +1 -0
  54. package/src/modules/dx/headerSearch/headerSearch.html +0 -1
  55. package/src/modules/dx/hr/hr.css +2 -4
  56. package/src/modules/dx/iconBadge/iconBadge.css +12 -0
  57. package/src/modules/dx/iconBadge/iconBadge.html +2 -7
  58. package/src/modules/dx/iconBadge/iconBadge.ts +15 -5
  59. package/src/modules/dx/imageAndLabel/imageAndLabel.css +0 -1
  60. package/src/modules/dx/input/input.css +17 -1
  61. package/src/modules/dx/input/input.html +5 -1
  62. package/src/modules/dx/input/input.ts +8 -0
  63. package/src/modules/dx/interactiveImage/interactiveImage.css +59 -0
  64. package/src/modules/dx/interactiveImage/interactiveImage.html +32 -0
  65. package/src/modules/dx/interactiveImage/interactiveImage.ts +71 -0
  66. package/src/modules/dx/logo/logo.css +0 -1
  67. package/src/modules/dx/logo/logo.ts +1 -1
  68. package/src/modules/dx/metadataBadge/metadataBadge.css +41 -0
  69. package/src/modules/dx/metadataBadge/metadataBadge.html +5 -0
  70. package/src/modules/dx/metadataBadge/metadataBadge.ts +24 -0
  71. package/src/modules/dx/modal/modal.css +40 -0
  72. package/src/modules/dx/modal/modal.html +10 -0
  73. package/src/modules/dx/modal/modal.ts +50 -0
  74. package/src/modules/dx/modalDrawer/modalDrawer.html +2 -2
  75. package/src/modules/dx/modalDrawer/modalDrawer.ts +7 -1
  76. package/src/modules/dx/pagination/pagination.css +1 -2
  77. package/src/modules/dx/popover/popover.css +28 -3
  78. package/src/modules/dx/popover/popover.html +1 -0
  79. package/src/modules/dx/popover/popover.ts +83 -44
  80. package/src/modules/dx/searchResults/coveo.css +18989 -0
  81. package/src/modules/dx/searchResults/searchResults.css +387 -0
  82. package/src/modules/dx/searchResults/searchResults.html +104 -0
  83. package/src/modules/dx/searchResults/searchResults.ts +187 -0
  84. package/src/modules/dx/section/section.css +10 -1
  85. package/src/modules/dx/section/section.ts +1 -1
  86. package/src/modules/dx/select/select.css +7 -3
  87. package/src/modules/dx/sidebar/sidebar.css +1 -145
  88. package/src/modules/dx/sidebar/sidebar.ts +2 -0
  89. package/src/modules/dx/sidebarOld/sidebarOld.css +1 -145
  90. package/src/modules/dx/sidebarOld/sidebarOld.ts +2 -0
  91. package/src/modules/dx/sidebarSearch/sidebarSearch.ts +23 -3
  92. package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.css +1 -1
  93. package/src/modules/dx/tab/tab.css +0 -4
  94. package/src/modules/dx/tabPanel/tabPanel.css +20 -0
  95. package/src/modules/dx/tabPanel/tabPanel.html +13 -0
  96. package/src/modules/dx/tabPanel/tabPanel.ts +27 -0
  97. package/src/modules/dx/tabPanelItem/tabPanelItem.css +39 -0
  98. package/src/modules/dx/tabPanelItem/tabPanelItem.html +15 -0
  99. package/src/modules/dx/tabPanelItem/tabPanelItem.ts +39 -0
  100. package/src/modules/dx/tabPanelList/tabPanelList.css +35 -0
  101. package/src/modules/dx/tabPanelList/tabPanelList.html +47 -0
  102. package/src/modules/dx/tabPanelList/tabPanelList.ts +164 -0
  103. package/src/modules/dx/tabPanelList/uniqueId.ts +6 -0
  104. package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.css +33 -0
  105. package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.html +53 -0
  106. package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.ts +440 -0
  107. package/src/modules/dx/toc/toc.css +1 -0
  108. package/src/modules/dx/toc/toc.ts +13 -0
  109. package/src/modules/dx/treeItem/treeItem.html +2 -0
  110. package/src/modules/dx/treeItem/treeItem.ts +8 -6
  111. package/src/modules/dx/treeTile/treeTile.css +18 -18
  112. package/src/modules/dx/treeTile/treeTile.html +5 -4
  113. package/src/modules/dx/treeTile/treeTile.ts +17 -3
  114. package/src/modules/dx/typeBadge/typeBadge.css +15 -56
  115. package/src/modules/dx/typeBadge/typeBadge.html +6 -0
  116. package/src/modules/dx/typeBadge/typeBadge.ts +149 -46
  117. package/src/modules/dxBaseElements/archiveCard/archiveCard.ts +2 -6
  118. package/src/modules/dxBaseElements/headerBase/headerBase.ts +11 -1
  119. package/src/modules/dxConstants/brands/brands.ts +14 -0
  120. package/src/modules/dxConstants/colors/colors.ts +14 -0
  121. package/src/modules/dxConstants/contentTypes/contentTypes.ts +10 -0
  122. package/src/modules/dxHelpers/card/card.css +1 -1
  123. package/src/modules/dxHelpers/commonHeader/commonHeader.css +4 -3
  124. package/src/modules/dxHelpers/commonSidebar/commonSidebar.css +145 -0
  125. package/src/modules/dxHelpers/{sidebar/sidebar.css → commonTreeItem/commonTreeItem.css} +0 -0
  126. package/src/modules/dxUtils/async/async.ts +45 -0
  127. package/src/modules/dxUtils/constants/constants.ts +0 -13
  128. package/src/modules/dxUtils/css/css.ts +10 -0
  129. package/src/modules/dxUtils/lwc/lwc.ts +9 -0
  130. package/src/modules/dxUtils/prismjs/prismjs.ts +347 -9
  131. package/src/modules/dxUtils/queryCoordinator/queryCoordinator.ts +37 -11
  132. package/LICENSE +0 -12
  133. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.css +0 -12
  134. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.html +0 -11
  135. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.ts +0 -18
@@ -5,7 +5,7 @@ import {
5
5
  PopperPlacement
6
6
  } from "typings/custom";
7
7
 
8
- import { createPopper } from "@popperjs/core";
8
+ import { computePosition, flip, size, shift, arrow } from "@floating-ui/dom";
9
9
  import cx from "classnames";
10
10
  import debounce from "debounce";
11
11
  import { isPrerender } from "dxUtils/seo";
@@ -31,6 +31,7 @@ export default class Popover extends LightningElement {
31
31
  @api openOnHover?: boolean = false; // dropdown opens/closes with hover
32
32
  @api width?: string | null = null;
33
33
  @api fullWidth?: boolean | null;
34
+ @api showArrow?: boolean | null;
34
35
 
35
36
  @api
36
37
  get open() {
@@ -70,9 +71,6 @@ export default class Popover extends LightningElement {
70
71
 
71
72
  this.dispatchEvent(new CustomEvent("open"));
72
73
 
73
- // awaiting .popover-container to receive 'visibility: visible;' in order to execute functions on it;
74
- // another approach would be to use IntersectionObserver to determine exactly when the visiblity
75
- // is applied before running
76
74
  setTimeout(() => {
77
75
  this.setPosition();
78
76
  this.attachListenersTopopover();
@@ -106,9 +104,11 @@ export default class Popover extends LightningElement {
106
104
  private _open: boolean = false;
107
105
  private _rendered: boolean = isPrerender();
108
106
  private _role: string | null = null;
107
+ private arrow: HTMLElement | null = null;
109
108
  private control: (HTMLElement & { disabled?: boolean }) | null = null;
110
109
  private focusedValue: string | null = null;
111
110
  private popover: HTMLElement | null = null;
111
+ private popoverContent: HTMLElement | null = null;
112
112
 
113
113
  // LIFECYCLE METHODS
114
114
 
@@ -123,6 +123,12 @@ export default class Popover extends LightningElement {
123
123
  if (!this.popover) {
124
124
  this.popover = this.template.querySelector(".popover-container");
125
125
  }
126
+ if (!this.popoverContent) {
127
+ this.popoverContent = this.template.querySelector(".popover");
128
+ }
129
+ if (!this.arrow && this.showArrow) {
130
+ this.arrow = this.template.querySelector(".popover-arrow");
131
+ }
126
132
  }
127
133
 
128
134
  // GETTERS
@@ -235,23 +241,27 @@ export default class Popover extends LightningElement {
235
241
  this.openPopover();
236
242
  };
237
243
 
238
- private onSlotChange(e: LightningSlotElement) {
239
- const slot = e.target;
244
+ private onSlotChange(e: Event) {
245
+ const slot = e.target as LightningSlotElement;
240
246
  const elements = slot.assignedElements();
241
247
  const slotted = elements.length === 0 ? null : elements[0];
242
248
  // allows dropdown/select to compose popover
243
- const control =
244
- slotted.tagName === "SLOT" ? slotted.firstChild : slotted;
245
- const onboardControl =
246
- (!this.control || (control && !control.isSameNode(this.control))) &&
247
- control;
248
- if (onboardControl) {
249
- control.setAttribute("aria-haspopup", "true");
250
- control.style.cursor = this.openOnHover ? "default" : "cursor";
251
- this.control = control;
252
- this.addControlListeners();
253
- this.setPosition();
249
+ const slotElement = (
250
+ slotted?.tagName === "SLOT" ? slotted.firstChild : slotted
251
+ ) as HTMLElement | null;
252
+ const isWorkToDo =
253
+ slotElement &&
254
+ (!this.control || !slotElement.isSameNode(this.control));
255
+
256
+ if (!isWorkToDo) {
257
+ return;
254
258
  }
259
+
260
+ slotElement.setAttribute("aria-haspopup", "true");
261
+ slotElement.style.cursor = this.openOnHover ? "default" : "cursor";
262
+ this.control = slotElement;
263
+ this.addControlListeners();
264
+ this.setPosition();
255
265
  }
256
266
 
257
267
  private onKeyDown(e: KeyboardEvent): void {
@@ -279,34 +289,63 @@ export default class Popover extends LightningElement {
279
289
  private setPosition = async () => {
280
290
  if (this.popover && this.control) {
281
291
  await Promise.resolve();
282
- createPopper(this.control, this.popover, {
283
- placement: this.placement,
284
- modifiers: [
285
- {
286
- name: "preventOverflow",
287
- options: {
288
- boundary: document.documentElement,
289
- padding: this.pagePadding
290
- }
291
- },
292
- {
293
- name: "flip",
294
- options: {
295
- fallbackPlacements: []
292
+ const popoverEl = this.popover;
293
+ const middleware = [flip(), shift({ padding: this.pagePadding })];
294
+
295
+ if (this.fullWidth) {
296
+ middleware.unshift(
297
+ size({
298
+ apply({ rects }) {
299
+ Object.assign(popoverEl.style, {
300
+ width: `${rects.reference.width}px`
301
+ });
296
302
  }
297
- },
298
- this.fullWidth
299
- ? {
300
- name: "fullWidth",
301
- enabled: true,
302
- fn: ({ state }) => {
303
- state.styles.popper.width = `${state.rects.reference.width}px`;
304
- },
305
- phase: "beforeWrite",
306
- requires: ["computeStyles"]
307
- }
308
- : {}
309
- ]
303
+ })
304
+ );
305
+ }
306
+
307
+ if (this.arrow) {
308
+ middleware.push(arrow({ element: this.arrow, padding: 24 }));
309
+ }
310
+
311
+ computePosition(this.control, popoverEl, {
312
+ placement: this.placement,
313
+ middleware
314
+ }).then(({ x, y, placement, middlewareData }) => {
315
+ Object.assign(popoverEl.style, {
316
+ left: `${x}px`,
317
+ top: `${y}px`
318
+ });
319
+
320
+ if (this.arrow && middlewareData.arrow) {
321
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
322
+ const popoverPlacementSide = placement.split("-")[0] as
323
+ | "top"
324
+ | "bottom"
325
+ | "left"
326
+ | "right";
327
+ const staticSide = {
328
+ top: "bottom",
329
+ right: "left",
330
+ bottom: "top",
331
+ left: "right"
332
+ }[popoverPlacementSide];
333
+ const arrowStyles = {
334
+ left: arrowX != null ? `${arrowX}px` : "",
335
+ top: arrowY != null ? `${arrowY}px` : "",
336
+ right: "",
337
+ bottom: "",
338
+ [staticSide]: "-4px"
339
+ };
340
+
341
+ if (this.offset && this.popoverContent) {
342
+ arrowStyles.marginTop = getComputedStyle(
343
+ this.popoverContent
344
+ ).marginTop;
345
+ }
346
+
347
+ Object.assign(this.arrow.style, arrowStyles);
348
+ }
310
349
  });
311
350
  }
312
351
  };