Skip to content

Commit a0f55a1

Browse files
authored
Merge pull request #13 from pnp/master
Update Content
2 parents 604ca76 + e3c5b50 commit a0f55a1

File tree

17 files changed

+670
-430
lines changed

17 files changed

+670
-430
lines changed

solutions/LeadsLOBSolution/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ This solution is compatible with SharePoint Online. Teams capability only works
6969

7070
Version|Date|Comments
7171
-------|----|--------
72+
1.4.2|Jun 15, 2020|Extended with storing user's configuration in application's personal folder
7273
1.4.1|May 25, 2020|Switched to using preview Microsoft To Do APIs for creating lead reminders
7374
1.4.0|May 19, 2020|Extended with the ability to create a reminder in Planner for the specific lead
7475
1.3.0|May 18, 2020|Extended with Teams messaging extension

solutions/LeadsLOBSolution/webpart/config/package-solution.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33
"solution": {
44
"name": "leads-lob-client-side-solution",
55
"id": "2dc4f7fe-cd2e-4f2a-8a92-86acc494e909",
6-
"version": "1.4.1.0",
6+
"version": "1.4.2.0",
77
"includeClientSideAssets": true,
88
"skipFeatureDeployment": true,
99
"isDomainIsolated": false,
1010
"webApiPermissionRequests": [
1111
{
1212
"resource": "Microsoft Graph",
1313
"scope": "Tasks.ReadWrite"
14+
},
15+
{
16+
"resource": "Microsoft Graph",
17+
"scope": "Files.ReadWrite"
1418
}
1519
]
1620
},

solutions/LeadsLOBSolution/webpart/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "leads-lob",
33
"main": "lib/index.js",
4-
"version": "1.4.1",
4+
"version": "1.4.2",
55
"private": true,
66
"engines": {
77
"node": ">=0.10.0"

solutions/LeadsLOBSolution/webpart/src/LeadsSettings.ts

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SPHttpClient, SPHttpClientResponse } from "@microsoft/sp-http";
1+
import { SPHttpClient, SPHttpClientResponse, MSGraphClient, HttpClient, HttpClientResponse, HttpClientConfiguration } from "@microsoft/sp-http";
22

33
export interface ILeadsSettings {
44
demo: boolean;
@@ -7,28 +7,60 @@ export interface ILeadsSettings {
77
}
88

99
export class LeadsSettings {
10-
private static settingsStorageKey: string = 'LeadsSettings';
10+
private static settingsFileName: string = 'LeadsSettings.json';
11+
private static settingsFileUrl: string = `/me/drive/special/approot:/${LeadsSettings.settingsFileName}`;
12+
private static graphClient: MSGraphClient;
13+
private static httpClient: HttpClient;
14+
15+
public static initialize(graphHttpClient: MSGraphClient, httpClient: HttpClient): void {
16+
this.graphClient = graphHttpClient;
17+
this.httpClient = httpClient;
18+
}
19+
20+
public static getSettings(): Promise<ILeadsSettings> {
21+
if (!this.graphClient) {
22+
throw 'Initialize LeadsSettings before managing settings';
23+
}
1124

12-
public static getSettings(): ILeadsSettings {
1325
const defaultSettings: ILeadsSettings = {
1426
demo: true,
1527
quarterlyOnly: true
1628
};
1729

18-
try {
19-
const settingsString: string = window.localStorage.getItem(this.settingsStorageKey);
20-
if (settingsString) {
21-
const settings: ILeadsSettings = JSON.parse(settingsString);
22-
return settings;
23-
}
24-
}
25-
catch (e) { }
30+
return this.graphClient
31+
.api(`${LeadsSettings.settingsFileUrl}[email protected]`)
32+
.get()
33+
.then((response: { '@microsoft.graph.downloadUrl': string }): Promise<HttpClientResponse> => {
34+
return this.httpClient
35+
.get(response['@microsoft.graph.downloadUrl'], HttpClient.configurations.v1);
36+
})
37+
.then((response: HttpClientResponse): Promise<string> => {
38+
if (response.ok) {
39+
return response.text();
40+
}
2641

27-
return defaultSettings;
42+
return Promise.reject(response.statusText);
43+
})
44+
.then((settingsString: string): Promise<ILeadsSettings> => {
45+
try {
46+
const settings: ILeadsSettings = JSON.parse(settingsString);
47+
return Promise.resolve(settings);
48+
}
49+
catch (e) {
50+
return Promise.resolve(defaultSettings);
51+
}
52+
}, _ => Promise.resolve(defaultSettings));
2853
}
2954

30-
public static setSettings(settings: ILeadsSettings): void {
31-
window.localStorage.setItem(this.settingsStorageKey, JSON.stringify(settings));
55+
public static setSettings(settings: ILeadsSettings): Promise<void> {
56+
if (!this.graphClient) {
57+
throw 'Initialize LeadsSettings before managing settings';
58+
}
59+
60+
return this.graphClient
61+
.api(`${LeadsSettings.settingsFileUrl}:/content`)
62+
.header('content-type', 'text/plain')
63+
.put(JSON.stringify(settings));
3264
}
3365

3466
public static getLeadsApiUrl(spHttpClient: SPHttpClient, siteUrl: string): Promise<string> {

solutions/LeadsLOBSolution/webpart/src/webparts/leads/LeadsWebPart.manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// Components that allow authors to embed arbitrary script code should set this to true.
1313
// https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f
1414
"requiresCustomScript": false,
15-
"supportedHosts": ["TeamsTab", "SharePointFullPage", "TeamsPersonalApp", "SharePointFullPage"],
15+
"supportedHosts": ["TeamsTab", "SharePointFullPage", "TeamsPersonalApp", "SharePointWebPart"],
1616
"preconfiguredEntries": [{
1717
"groupId": "5c03119e-3074-46fd-976b-c60198311f70", // Other
1818
"group": { "default": "LOB" },

solutions/LeadsLOBSolution/webpart/src/webparts/leads/LeadsWebPart.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,20 @@ export default class LeadsWebPart extends BaseClientSideWebPart<ILeadsWebPartPro
3333
private queryParameters: UrlQueryParameterCollection;
3434
private view?: LeadView;
3535
private msGraphClient: MSGraphClient;
36+
private settings?: ILeadsSettings;
3637

3738
protected onInit(): Promise<void> {
3839
return this.context.msGraphClientFactory
3940
.getClient()
40-
.then((client: MSGraphClient): Promise<void> => {
41+
.then((client: MSGraphClient): Promise<ILeadsSettings> => {
4142
this.msGraphClient = client;
4243

44+
LeadsSettings.initialize(this.msGraphClient, this.context.httpClient);
45+
return LeadsSettings.getSettings();
46+
})
47+
.then((settings: ILeadsSettings): Promise<void> => {
48+
this.settings = settings;
49+
4350
if (this.properties.demo) {
4451
this.needsConfiguration = false;
4552
return Promise.resolve();
@@ -200,7 +207,7 @@ export default class LeadsWebPart extends BaseClientSideWebPart<ILeadsWebPartPro
200207
this.render();
201208
}
202209
resolve();
203-
}, () => resolve());
210+
}, _ => resolve());
204211
});
205212
}
206213

@@ -210,12 +217,9 @@ export default class LeadsWebPart extends BaseClientSideWebPart<ILeadsWebPartPro
210217
this.view = this.getLeadView();
211218

212219
if (this.context.microsoftTeams && typeof this.view !== 'undefined') {
213-
const settings: ILeadsSettings = LeadsSettings.getSettings();
214-
if (settings) {
215-
props.demo = settings.demo;
216-
props.quarterlyOnly = settings.quarterlyOnly;
217-
props.region = settings.region;
218-
}
220+
props.demo = this.settings.demo;
221+
props.quarterlyOnly = this.settings.quarterlyOnly;
222+
props.region = this.settings.region;
219223
}
220224

221225
return props;

solutions/LeadsLOBSolution/webpart/src/webparts/leads/components/LeadCardActions/LeadCardActions.module.scss

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,26 @@
2323
cursor: pointer;
2424
}
2525
}
26+
27+
:global {
28+
.icon div {
29+
background-repeat: no-repeat;
30+
background-size: 16px;
31+
background-position: center center;
32+
}
33+
34+
.icon.share div {
35+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xNDA4IDE1MzZsMTI4LTEyOHYzODRIMFY1MTJoMTI4djExNTJoMTI4MHYtMTI4em0tMTI4LTUxMnEtMTI4IDAtMjUwIDI1dC0yMzcgNzUtMjE3IDEyMS0xOTIgMTYzdi0xMjhxMC0xMjQgMzItMjM4dDkwLTIxNCAxNDAtMTgxIDE4MS0xNDAgMjE0LTkxIDIzOS0zMlYwbDcwNCA3MDQtNzA0IDcwNHYtMzg0em0xMDEtNTEycS01NiAwLTEwNSAxdC05NyA2LTk2IDE4LTEwMiAzNXEtODcgMzYtMTYxIDkyVDY4NyA3OTF0LTk5IDE1NS02MCAxNzZxMTY4LTExMiAzNTktMTY5dDM5My01N2gxMjh2MjAzbDM5NS0zOTUtMzk1LTM5NXYyMDNoLTI3eiIgZmlsbD0iIzMzMzMzMyI+PC9wYXRoPjwvc3ZnPg==");
36+
}
37+
38+
.icon.view div {
39+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xMDI0IDc2OHE3OSAwIDE0OSAzMHQxMjIgODIgODMgMTIzIDMwIDE0OXEwIDgwLTMwIDE0OXQtODIgMTIyLTEyMyA4My0xNDkgMzBxLTgwIDAtMTQ5LTMwdC0xMjItODItODMtMTIyLTMwLTE1MHEwLTc5IDMwLTE0OXQ4Mi0xMjIgMTIyLTgzIDE1MC0zMHptMCA2NDBxNTMgMCA5OS0yMHQ4Mi01NSA1NS04MSAyMC0xMDBxMC01My0yMC05OXQtNTUtODItODEtNTUtMTAwLTIwcS01MyAwLTk5IDIwdC04MiA1NS01NSA4MS0yMCAxMDBxMCA1MyAyMCA5OXQ1NSA4MiA4MSA1NSAxMDAgMjB6bTAtMTE1MnExNDMgMCAyODQgMzV0MjY2IDEwNSAyMjYgMTcwIDE2NiAyMzRxNDAgODMgNjEgMTcxdDIxIDE4MWgtMTI4cTAtMTE4LTM2LTIyMXQtOTktMTg4LTE1MC0xNTItMTg1LTExMy0yMDktNzAtMjE3LTI0cS0xMDggMC0yMTcgMjR0LTIwOCA3MC0xODYgMTEzLTE0OSAxNTItMTAwIDE4OC0zNiAyMjFIMHEwLTkyIDIxLTE4MHQ2MS0xNzJxNjQtMTMyIDE2NS0yMzN0MjI3LTE3MSAyNjYtMTA0IDI4NC0zNnoiIGZpbGw9IiMzMzMzMzMiPjwvcGF0aD48L3N2Zz4=");
40+
}
41+
42+
.icon.alarmClock div {
43+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xNDA4IDExNTJ2MTI4SDg5NlY2NDBoMTI4djUxMmgzODR6bTI0MC0xMDI0cTgzIDAgMTU2IDMxdDEyNyA4NiA4NSAxMjcgMzIgMTU2cTAgNTAtMTIgOTd0LTM1IDkxLTU2IDgwLTc0IDY0cTI1IDcxIDM3IDE0NHQxMiAxNDhxMCAxNjItNTYgMzEzdC0xNjMgMjc0bDIwMCAyMDAtOTAgOTAtMjAwLTIwMHEtMTIyIDEwNi0yNzMgMTYydC0zMTQgNTdxLTE2MiAwLTMxMy01NnQtMjc0LTE2M2wtMjAwIDIwMC05MC05MCAyMDAtMjAwcS0xMDYtMTIyLTE2Mi0yNzN0LTU3LTMxNHEwLTc1IDEyLTE0OHQzNy0xNDRxLTQxLTI3LTc0LTY0dC01Ni04MC0zNS05MC0xMi05OHEwLTgzIDMxLTE1NnQ4Ni0xMjcgMTI3LTg1IDE1Ni0zMnE0OSAwIDk3IDEydDkxIDM1IDgwIDU2IDY0IDc0cTcxLTI1IDE0NC0zN3QxNDgtMTJxNzUgMCAxNDggMTJ0MTQ0IDM3cTI3LTQxIDY0LTc0dDgwLTU2IDkwLTM1IDk4LTEyek00MDAgMjU2cS01NiAwLTEwNSAyMXQtODcgNTktNTggODYtMjIgMTA2cTAgNjIgMjYgMTE3dDc1IDk0cTY0LTEyNCAxNjEtMjIxdDIyMS0xNjFxLTM4LTQ4LTkzLTc0dC0xMTgtMjd6bTYyNCAxNjY0cTE1OSAwIDI5OC02MHQyNDQtMTY1IDE2NS0yNDQgNjEtMjk5cTAtMTU5LTYwLTI5OHQtMTY1LTI0NC0yNDQtMTY1LTI5OS02MXEtMTU5IDAtMjk4IDYwVDQ4MiA2MDkgMzE3IDg1M3QtNjEgMjk5cTAgMTU5IDYwIDI5OHQxNjUgMjQ0IDI0NCAxNjUgMjk5IDYxem03OTUtMTE4MXE0OC0zOCA3NC05M3QyNy0xMThxMC01Ni0yMS0xMDV0LTU5LTg3LTg2LTU4LTEwNi0yMnEtNjIgMC0xMTcgMjZ0LTk0IDc1cTEyNCA2NCAyMjEgMTYxdDE2MSAyMjF6IiBmaWxsPSIjMzMzMzMzIj48L3BhdGg+PC9zdmc+");
44+
}
45+
}
2646
}
2747

2848
.metrics {
@@ -32,14 +52,7 @@
3252
justify-content: flex-end;
3353

3454
.metric {
35-
margin-left: 8px;
36-
37-
:global {
38-
.ms-Icon {
39-
font-size: 16px;
40-
vertical-align: top;
41-
}
42-
}
55+
margin-left: 8px;
4356

4457
&.change {
4558
&.up {
@@ -57,5 +70,36 @@
5770
}
5871
}
5972
}
73+
74+
:global {
75+
:local(.metric) {
76+
&.icon {
77+
background-repeat: no-repeat;
78+
background-size: 16px;
79+
background-position: left center;
80+
padding-left: 20px;
81+
82+
&.circleRing {
83+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xMDI0IDBxMTQxIDAgMjcyIDM2dDI0NCAxMDQgMjA3IDE2MCAxNjEgMjA3IDEwMyAyNDUgMzcgMjcycTAgMTQxLTM2IDI3MnQtMTA0IDI0NC0xNjAgMjA3LTIwNyAxNjEtMjQ1IDEwMy0yNzIgMzdxLTE0MSAwLTI3Mi0zNnQtMjQ0LTEwNC0yMDctMTYwLTE2MS0yMDctMTAzLTI0NS0zNy0yNzJxMC0xNDEgMzYtMjcydDEwNC0yNDQgMTYwLTIwNyAyMDctMTYxVDc1MiAzN3QyNzItMzd6bTAgMTkyMHExMjQgMCAyMzgtMzJ0MjE0LTkwIDE4MS0xNDAgMTQwLTE4MSA5MS0yMTQgMzItMjM5cTAtMTI0LTMyLTIzOHQtOTAtMjE0LTE0MC0xODEtMTgxLTE0MC0yMTQtOTEtMjM5LTMycS0xMjQgMC0yMzggMzJ0LTIxNCA5MC0xODEgMTQwLTE0MCAxODEtOTEgMjE0LTMyIDIzOXEwIDEyNCAzMiAyMzh0OTAgMjE0IDE0MCAxODEgMTgxIDE0MCAyMTQgOTEgMjM5IDMyeiIgZmlsbD0iIzMzMzMzMyI+PC9wYXRoPjwvc3ZnPg==");
84+
}
85+
86+
&.circleFill {
87+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xMDI0IDBxMTQxIDAgMjcyIDM2dDI0NCAxMDQgMjA3IDE2MCAxNjEgMjA3IDEwMyAyNDUgMzcgMjcycTAgMTQxLTM2IDI3MnQtMTA0IDI0NC0xNjAgMjA3LTIwNyAxNjEtMjQ1IDEwMy0yNzIgMzdxLTE0MSAwLTI3Mi0zNnQtMjQ0LTEwNC0yMDctMTYwLTE2MS0yMDctMTAzLTI0NS0zNy0yNzJxMC0xNDEgMzYtMjcydDEwNC0yNDQgMTYwLTIwNyAyMDctMTYxVDc1MiAzN3QyNzItMzd6IiBmaWxsPSIjMzMzMzMzIj48L3BhdGg+PC9zdmc+");
88+
}
89+
90+
&.circleHalfFull {
91+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xMDI0IDEyOHExMjQgMCAyMzggMzJ0MjE0IDkwIDE4MSAxNDAgMTQwIDE4MSA5MSAyMTQgMzIgMjM5cTAgMTI0LTMyIDIzOHQtOTAgMjE0LTE0MCAxODEtMTgxIDE0MC0yMTQgOTEtMjM5IDMycS0xMjQgMC0yMzgtMzJ0LTIxNC05MC0xODEtMTQwLTE0MC0xODEtOTEtMjE0LTMyLTIzOXEwLTEyNCAzMi0yMzh0OTAtMjE0IDE0MC0xODEgMTgxLTE0MCAyMTQtOTEgMjM5LTMyem0wIDEyOHEtMTA2IDAtMjA0IDI3dC0xODMgNzgtMTU2IDEyMC0xMjAgMTU1LTc3IDE4NC0yOCAyMDRoMTUzNnEwLTEwNi0yNy0yMDR0LTc4LTE4My0xMjAtMTU2LTE1NS0xMjAtMTg0LTc3LTIwNC0yOHoiIGZpbGw9IiMzMzMzMzMiPjwvcGF0aD48L3N2Zz4=");
92+
}
93+
94+
&.stockUp {
95+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0xMDI0IDM4NGw2NDAgMTI4MEgzODRsNjQwLTEyODB6IiBmaWxsPSIjMTA3YzEwIj48L3BhdGg+PC9zdmc+");
96+
}
97+
98+
&.stockDown {
99+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik0zODQgMzg0aDEyODBsLTY0MCAxMjgwTDM4NCAzODR6IiBmaWxsPSIjZTgxMTIzIj48L3BhdGg+PC9zdmc+");
100+
}
101+
}
102+
}
103+
}
60104
}
61105
}

solutions/LeadsLOBSolution/webpart/src/webparts/leads/components/LeadCardActions/LeadCardActions.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
import * as React from 'react';
22
import { ILeadCardActionsProps } from ".";
33
import { IconButton } from 'office-ui-fabric-react/lib/Button';
4-
import { Icon } from 'office-ui-fabric-react/lib/Icon';
54
import { css } from 'office-ui-fabric-react/lib/Utilities';
65
import styles from './LeadCardActions.module.scss';
76

87
export class LeadCardActions extends React.Component<ILeadCardActionsProps, {}> {
98
private getPercentCompleteIconName(percentComplete: number): string {
109
switch (percentComplete) {
1110
case 0:
12-
return 'CircleRing';
11+
return 'circleRing';
1312
case 100:
14-
return 'CircleFill';
13+
return 'circleFill';
1514
default:
16-
return 'CircleHalfFull';
15+
return 'circleHalfFull';
1716
}
1817
}
1918

2019
private getChangeIconName(change: number): string {
2120
if (change >= 0) {
22-
return 'StockUp';
21+
return 'stockUp';
2322
}
2423
else {
25-
return 'StockDown';
24+
return 'stockDown';
2625
}
2726
}
2827

@@ -36,11 +35,11 @@ export class LeadCardActions extends React.Component<ILeadCardActionsProps, {}>
3635
<IconButton {...a} />
3736
</div>)}
3837
<div className={styles.metrics}>
39-
<div className={css('ms-DocumentCardActions-views', styles.metric, styles.change, change >= 0 ? styles.up : styles.down)}>
40-
<Icon iconName={this.getChangeIconName(change)} /> {(change >= 0 ? '+' : '')}{change}%
38+
<div className={css('ms-DocumentCardActions-views icon', styles.metric, styles.change, change >= 0 ? styles.up : styles.down, this.getChangeIconName(change))}>
39+
{(change >= 0 ? '+' : '')}{change}%
4140
</div>
42-
<div className={css('ms-DocumentCardActions-views', styles.metric)}>
43-
<Icon iconName={this.getPercentCompleteIconName(percentComplete)} /> {percentComplete}%
41+
<div className={css('ms-DocumentCardActions-views icon', styles.metric, this.getPercentCompleteIconName(percentComplete))}>
42+
{percentComplete}%
4443
</div>
4544
</div>
4645
</div>

solutions/LeadsLOBSolution/webpart/src/webparts/leads/components/Leads/Leads.module.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@
4747
position: absolute;
4848
right: 8px;
4949
margin-top: 8px;
50+
width: 16px;
51+
height: 16px;
52+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiPjxwYXRoIGQ9Ik05NjAgMTkyMHEtMTMzIDAtMjU1LTM0dC0yMzAtOTYtMTk0LTE1MC0xNTAtMTk1LTk3LTIyOVQwIDk2MHEwLTEzMyAzNC0yNTV0OTYtMjMwIDE1MC0xOTQgMTk1LTE1MCAyMjktOTdUOTYwIDBxMTMzIDAgMjU1IDM0dDIzMCA5NiAxOTQgMTUwIDE1MCAxOTUgOTcgMjI5IDM0IDI1NnEwIDEzMy0zNCAyNTV0LTk2IDIzMC0xNTAgMTk0LTE5NSAxNTAtMjI5IDk3LTI1NiAzNHptMC0xNzkycS0xMTUgMC0yMjEgMzB0LTE5OCA4NC0xNjkgMTMwLTEzMCAxNjgtODQgMTk5LTMwIDIyMXEwIDExNCAzMCAyMjB0ODQgMTk5IDEzMCAxNjkgMTY4IDEzMCAxOTkgODQgMjIxIDMwcTExNCAwIDIyMC0zMHQxOTktODQgMTY5LTEzMCAxMzAtMTY4IDg0LTE5OSAzMC0yMjFxMC0xMTQtMzAtMjIwdC04NC0xOTktMTMwLTE2OS0xNjgtMTMwLTE5OS04NC0yMjEtMzB6bS02NCA2NDBoMTI4djY0MEg4OTZWNzY4em0wLTI1NmgxMjh2MTI4SDg5NlY1MTJ6IiBmaWxsPSIjYTgwMDAwIj48L3BhdGg+PC9zdmc+");
53+
background-size: 16px;
54+
background-repeat: no-repeat;
55+
background-position: center center;
5056
}
5157

5258
:global {

solutions/LeadsLOBSolution/webpart/src/webparts/leads/components/Leads/Leads.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ export class Leads extends React.Component<ILeadsProps, ILeadsState> {
330330
<div>
331331
<LeadCardPreview previewItems={this.getCommentsForCard(l.comments.reverse())} />
332332
{l.requiresAttention === true &&
333-
<Icon iconName='Info' className={styles.urgent} />}
333+
<div className={styles.urgent} />}
334334
<DocumentCardLocation location={l.account} locationHref='#' />
335335
<DocumentCardTitle title={l.title} shouldTruncate={true} />
336336
<div className={styles.titleSecondary}><DocumentCardTitle title={l.description!} shouldTruncate={true} /></div>
@@ -353,17 +353,17 @@ export class Leads extends React.Component<ILeadsProps, ILeadsState> {
353353
actions={
354354
[
355355
{
356-
iconProps: { iconName: 'Share' },
356+
className: 'icon share',
357357
onClick: this.leadShared,
358358
ariaLabel: 'Share Lead'
359359
},
360360
{
361-
iconProps: { iconName: 'View' },
361+
className: 'icon view',
362362
onClick: this.leadFollowed,
363363
ariaLabel: 'Follow Lead'
364364
},
365365
{
366-
iconProps: { iconName: 'AlarmClock' },
366+
className: 'icon alarmClock',
367367
onClick: this.showCreateLeadReminderDialog,
368368
ariaLabel: 'Remind me about this lead',
369369
'data-leadid': l.id

0 commit comments

Comments
 (0)