@salesforcedevs/dx-components 0.29.0 → 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 +3 -0
- package/package.json +2 -2
- package/src/modules/base-elements/matchMediaElement/matchMediaElement.ts +59 -0
- package/src/modules/dx/headerNav/headerNav.ts +1 -1
- package/src/modules/utils/constants/breakpoints.ts +9 -0
- package/src/modules/utils/constants/constants.ts +1 -0
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.
|
|
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": "
|
|
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
|
+
}
|
|
@@ -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
|
|
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";
|