Skip to content

Commit 2ee0694

Browse files
authored
Merge pull request #610 from microsoftgraph/shweaver/mgt-spinner
Added mgt-spinner sub-component
2 parents ef299a4 + 623ba7e commit 2ee0694

File tree

6 files changed

+72
-36
lines changed

6 files changed

+72
-36
lines changed

packages/mgt/src/components/mgt-people-picker/mgt-people-picker.scss

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -324,23 +324,6 @@ mgt-people-picker .message-parent {
324324
align-items: center;
325325
justify-content: center;
326326
vertical-align: middle;
327-
.spinner {
328-
border: 2px solid #c7e0f4; /* Light grey */
329-
border-top: 2px solid #0078d4; /* Blue */
330-
border-radius: 50%;
331-
width: 20px;
332-
height: 20px;
333-
animation: spin 2s linear infinite;
334-
}
335-
}
336-
337-
@keyframes spin {
338-
0% {
339-
transform: rotate(0deg);
340-
}
341-
100% {
342-
transform: rotate(360deg);
343-
}
344327
}
345328

346329
:host .highlight-search-text,

packages/mgt/src/components/mgt-people-picker/mgt-people-picker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { IDynamicPerson } from '../../graph/types';
1616
import { Providers } from '../../Providers';
1717
import { ProviderState } from '../../providers/IProvider';
1818
import '../../styles/fabric-icon-font';
19+
import '../sub-components/mgt-spinner/mgt-spinner';
1920
import { debounce } from '../../utils/Utils';
2021
import { PersonViewType } from '../mgt-person/mgt-person';
2122
import { PersonCardInteraction } from '../PersonCardInteraction';
@@ -513,7 +514,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
513514
this.renderTemplate('loading', null) ||
514515
html`
515516
<div class="message-parent">
516-
<div class="spinner"></div>
517+
<mgt-spinner></mgt-spinner>
517518
<div label="loading-text" aria-label="loading" class="loading-text">
518519
Loading...
519520
</div>

packages/mgt/src/components/mgt-teams-channel-picker/mgt-teams-channel-picker.scss

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -452,14 +452,6 @@ $dropdown-item-selected-background: var(--dropdown-item-selected-background, #de
452452
align-items: center;
453453
justify-content: center;
454454
vertical-align: middle;
455-
.spinner {
456-
border: 2px solid #c7e0f4; /* Light grey */
457-
border-top: 2px solid #0078d4; /* Blue */
458-
border-radius: 50%;
459-
width: 20px;
460-
height: 20px;
461-
animation: spin 2s linear infinite;
462-
}
463455
.loading-text {
464456
margin-top: 3px;
465457
margin-left: 9px;
@@ -468,12 +460,3 @@ $dropdown-item-selected-background: var(--dropdown-item-selected-background, #de
468460
}
469461
}
470462
}
471-
472-
@keyframes spin {
473-
0% {
474-
transform: rotate(0deg);
475-
}
476-
100% {
477-
transform: rotate(360deg);
478-
}
479-
}

packages/mgt/src/components/mgt-teams-channel-picker/mgt-teams-channel-picker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { classMap } from 'lit-html/directives/class-map';
1111
import { Providers } from '../../Providers';
1212
import { ProviderState } from '../../providers/IProvider';
1313
import '../../styles/fabric-icon-font';
14+
import '../sub-components/mgt-spinner/mgt-spinner';
1415
import { getSvg, SvgIcon } from '../../utils/SvgHelper';
1516
import { debounce } from '../../utils/Utils';
1617
import { MgtTemplatedComponent } from '../templatedComponent';
@@ -553,7 +554,7 @@ export class MgtTeamsChannelPicker extends MgtTemplatedComponent {
553554
template ||
554555
html`
555556
<div class="message-parent">
556-
<div class="spinner"></div>
557+
<mgt-spinner></mgt-spinner>
557558
<div label="loading-text" aria-label="loading" class="loading-text">
558559
Loading...
559560
</div>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* -------------------------------------------------------------------------------------------
3+
* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.
4+
* See License in the project root for license information.
5+
* -------------------------------------------------------------------------------------------
6+
*/
7+
8+
@import '../../../styles/shared-styles.scss';
9+
10+
:host {
11+
.spinner {
12+
border: 2px solid #c7e0f4; /* Light grey */
13+
border-top: 2px solid #0078d4; /* Blue */
14+
border-radius: 50%;
15+
width: 20px;
16+
height: 20px;
17+
animation: spin 2s linear infinite;
18+
}
19+
20+
@keyframes spin {
21+
0% {
22+
transform: rotate(0deg);
23+
}
24+
100% {
25+
transform: rotate(360deg);
26+
}
27+
}
28+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* -------------------------------------------------------------------------------------------
3+
* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.
4+
* See License in the project root for license information.
5+
* -------------------------------------------------------------------------------------------
6+
*/
7+
8+
import { customElement, html } from 'lit-element';
9+
import { MgtBaseComponent } from '../../baseComponent';
10+
import { styles } from './mgt-spinner-css';
11+
12+
/**
13+
* Custom Component used to handle loading state in components.
14+
*
15+
* @export MgtSpinner
16+
* @class MgtSpinner
17+
* @extends {MgtBaseComponent}
18+
*/
19+
@customElement('mgt-spinner')
20+
export class MgtSpinner extends MgtBaseComponent {
21+
/**
22+
* Array of styles to apply to the element. The styles should be defined
23+
* user the `css` tag function.
24+
*/
25+
public static get styles() {
26+
return styles;
27+
}
28+
29+
/**
30+
* Render the loading spinner
31+
*
32+
* @returns
33+
* @memberof MgtSpinner
34+
*/
35+
public render() {
36+
return html`
37+
<div class="spinner"></div>
38+
`;
39+
}
40+
}

0 commit comments

Comments
 (0)