@salesforcedevs/dx-components 0.28.2 → 0.30.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.
package/lwc.config.json CHANGED
@@ -43,6 +43,7 @@
43
43
  "dx/helmet",
44
44
  "dx/hr",
45
45
  "dx/icon",
46
+ "dx/iconBadge",
46
47
  "dx/imageAndLabel",
47
48
  "dx/input",
48
49
  "dx/instrumentation",
@@ -82,6 +83,8 @@
82
83
  "helpers/table",
83
84
  "helpers/text",
84
85
  "base-elements/headerBase",
86
+ "base-elements/matchMediaElement",
87
+ "utils/constants",
85
88
  "utils/normalizers",
86
89
  "utils/highlight"
87
90
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/dx-components",
3
- "version": "0.28.2",
3
+ "version": "0.30.0",
4
4
  "description": "DX Lightning web components",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -25,5 +25,5 @@
25
25
  "@types/debounce": "^1.2.0",
26
26
  "@types/lodash.get": "^4.4.6"
27
27
  },
28
- "gitHead": "36a240addaeb78f30a4581776369631a2c27d49a"
28
+ "gitHead": "2892ffcc573566253f854054c4186226dd182ef0"
29
29
  }
@@ -0,0 +1,59 @@
1
+ import { LightningElement } from "lwc";
2
+ import {
3
+ BREAKPOINT_MOBILE,
4
+ BREAKPOINT_TABLET,
5
+ DEVICE_DESKTOP,
6
+ DEVICE_TABLET,
7
+ DEVICE_MOBILE
8
+ } from "utils/constants";
9
+
10
+ const boilerplate = "screen and ";
11
+ const BREAKPOINT_QUERY_MOBILE = `${boilerplate}(max-width: ${BREAKPOINT_MOBILE})`;
12
+ const BREAKPOINT_QUERY_TABLET = `${boilerplate}(min-width: ${BREAKPOINT_MOBILE}) and (max-width: ${BREAKPOINT_TABLET})`;
13
+ const BREAKPOINT_QUERY_DESKTOP = `${boilerplate}(min-width: ${BREAKPOINT_TABLET})`;
14
+
15
+ const breakpointConfigs = [
16
+ { name: DEVICE_MOBILE, query: BREAKPOINT_QUERY_MOBILE },
17
+ { name: DEVICE_TABLET, query: BREAKPOINT_QUERY_TABLET },
18
+ { name: DEVICE_DESKTOP, query: BREAKPOINT_QUERY_DESKTOP }
19
+ ];
20
+
21
+ export abstract class MatchMediaElement extends LightningElement {
22
+ private deviceType: DEVICE_MOBILE | DEVICE_TABLET | DEVICE_DESKTOP =
23
+ DEVICE_DESKTOP;
24
+ private matches: {
25
+ match: MediaQueryList;
26
+ callback: (e: MediaQueryListEvent | MediaQueryList) => void;
27
+ }[] = [];
28
+
29
+ private get isMobile(): boolean {
30
+ return this.deviceType === DEVICE_MOBILE;
31
+ }
32
+ private get isTablet(): boolean {
33
+ return this.deviceType === DEVICE_TABLET;
34
+ }
35
+ private get isDesktop(): boolean {
36
+ return this.deviceType === DEVICE_DESKTOP;
37
+ }
38
+
39
+ connectedCallback() {
40
+ this.matches = breakpointConfigs.map(
41
+ ({ name, query }: { name: string; query: string }) => {
42
+ const match = window.matchMedia(query);
43
+ const callback = (e: MediaQueryListEvent | MediaQueryList) => {
44
+ if (e.matches) {
45
+ this.deviceType = name;
46
+ }
47
+ };
48
+ match.addEventListener("change", callback);
49
+ return { match, callback };
50
+ }
51
+ );
52
+ }
53
+
54
+ disconnectedCallback() {
55
+ this.matches.forEach(({ match, callback }) =>
56
+ match.removeEventListener("change", callback)
57
+ );
58
+ }
59
+ }
@@ -138,6 +138,10 @@
138
138
  border: 1px solid transparent;
139
139
  }
140
140
 
141
+ .button.variant_inline.light-text {
142
+ color: white;
143
+ }
144
+
141
145
  .button.variant_tertiary:hover {
142
146
  background: var(--dx-c-button-secondary-color-hover);
143
147
  border-color: var(--dx-c-button-secondary-color-hover);
@@ -1,6 +1,7 @@
1
1
  import { LightningElement, api } from "lwc";
2
2
  import cx from "classnames";
3
3
  import {
4
+ ButtonTextColor,
4
5
  ButtonVariant,
5
6
  IconSprite,
6
7
  IconSize,
@@ -18,6 +19,7 @@ export default class Button extends LightningElement {
18
19
  @api loading: boolean = false;
19
20
  @api size: "large" | "small" = "small";
20
21
  @api variant: ButtonVariant = "primary";
22
+ @api inlineTextColor: ButtonTextColor = "dark";
21
23
  @api font: "display" | "sans" = "display";
22
24
 
23
25
  // button props
@@ -45,6 +47,7 @@ export default class Button extends LightningElement {
45
47
  private get className(): string {
46
48
  return cx(
47
49
  "button",
50
+ this.variant === "inline" && `${this.inlineTextColor}-text`,
48
51
  this.disabled && "state-disabled",
49
52
  `variant_${this.variant}`,
50
53
  this.loading && "state-loading",
@@ -17,6 +17,7 @@
17
17
  <dx-button
18
18
  if:false={hasLargeButton}
19
19
  variant="inline"
20
+ inline-text-color={buttonColor}
20
21
  icon-symbol="forward"
21
22
  >
22
23
  {buttonText}
@@ -2,6 +2,7 @@ import { LightningElement, api } from "lwc";
2
2
  import cx from "classnames";
3
3
  import { toDxColor } from "utils/css";
4
4
  import {
5
+ ButtonTextColor,
5
6
  CardNewsButtonType,
6
7
  CardNewsImagePlacement,
7
8
  CardNewsImageVerticalAlignment,
@@ -15,6 +16,7 @@ export default class CardNews extends LightningElement {
15
16
  @api buttonText?: string = "";
16
17
  @api buttonType!: CardNewsButtonType;
17
18
  @api color?: string = "white";
19
+ @api buttonColor?: ButtonTextColor = "dark";
18
20
  @api dark?: boolean = false;
19
21
  @api size?: CardNewsSize = "normal";
20
22
  @api href!: string;
@@ -9,12 +9,14 @@
9
9
  --dx-c-card-title-icon-size: 22px;
10
10
  }
11
11
 
12
- .dx-text-heading-4 {
12
+ h3.dx-text-heading-4 {
13
13
  color: var(--dx-c-card-title-color);
14
14
  transition: var(--dx-g-transition-hue-1x);
15
15
  font-size: var(--dx-c-card-title-font-size);
16
16
  line-height: var(--dx-c-card-title-line-height);
17
17
  letter-spacing: var(--dx-c-card-title-letter-spacing);
18
+ word-break: break-word;
19
+ hyphens: auto;
18
20
  }
19
21
 
20
22
  .nowrap {
@@ -3,7 +3,7 @@ import { TabVariant, Option } from "typings/custom";
3
3
  export default class HeaderNav extends LightningElement {
4
4
  @api pathname: string | null = null;
5
5
  @api variant: TabVariant = "default";
6
- @api ariaLabel: string = "Navigation Bar";
6
+ @api ariaLabel: string = "Primary Navigation";
7
7
 
8
8
  @api
9
9
  set navItems(_navItems: Option[]) {
@@ -0,0 +1,9 @@
1
+ // these breakpoints are written in terms of "max-width"
2
+ export const BREAKPOINT_MOBILE_SMALL = "640px";
3
+ export const BREAKPOINT_MOBILE = "768px";
4
+ export const BREAKPOINT_TABLET = "1024px";
5
+ export const BREAKPOINT_DESKTOP = "1280px";
6
+
7
+ export const DEVICE_DESKTOP = "desktop";
8
+ export const DEVICE_TABLET = "tablet";
9
+ export const DEVICE_MOBILE = "mobile";
@@ -0,0 +1 @@
1
+ export * from "./breakpoints";