66 */
77
88import { property } from 'lit-element' ;
9- import { IProvider } from '../..' ;
9+ import { IProvider } from '../../providers/IProvider ' ;
1010import { MgtBaseComponent } from '../baseComponent' ;
1111
12+ /**
13+ * Abstract implementation for provider component
14+ *
15+ * @export
16+ * @abstract
17+ * @class MgtBaseProvider
18+ * @extends {MgtBaseComponent }
19+ */
1220export abstract class MgtBaseProvider extends MgtBaseComponent {
13- public get provider ( ) {
21+ /**
22+ * The IProvider created by this component
23+ *
24+ * @memberof MgtBaseProvider
25+ */
26+ public get provider ( ) : IProvider {
1427 return this . _provider ;
1528 }
1629
@@ -24,19 +37,45 @@ export abstract class MgtBaseProvider extends MgtBaseComponent {
2437 }
2538 }
2639
27- public abstract get isAvailable ( ) : boolean ;
40+ /**
41+ * Gets weather this provider can be used in this environment
42+ *
43+ * @readonly
44+ * @type {boolean }
45+ * @memberof MgtBaseProvider
46+ */
47+ public get isAvailable ( ) : boolean {
48+ return true ;
49+ }
2850
51+ /**
52+ * Higher priority provider that should be initialized before attempting
53+ * to initialize this provider. This provider will only be initialized
54+ * if all higher priority providers are not available.
55+ *
56+ * @type {MgtBaseProvider }
57+ * @memberof MgtBaseProvider
58+ */
2959 @property ( {
3060 attribute : 'depends-on' ,
31- type : String ,
3261 converter : newValue => {
3362 return document . querySelector ( newValue ) ;
34- }
63+ } ,
64+ type : String
3565 } )
3666 public dependsOn : MgtBaseProvider ;
3767
3868 private _provider : IProvider ;
3969
70+ /**
71+ * Invoked when the element is first updated. Implement to perform one time
72+ * work on the element after update.
73+ *
74+ * Setting properties inside this method will trigger the element to update
75+ * again after this update cycle completes.
76+ *
77+ * * @param _changedProperties Map of changed properties with old values
78+ */
4079 protected firstUpdated ( changedProperties ) {
4180 super . firstUpdated ( changedProperties ) ;
4281
@@ -57,7 +96,15 @@ export abstract class MgtBaseProvider extends MgtBaseComponent {
5796 }
5897 }
5998
60- protected abstract initializeProvider ( ) ;
99+ /**
100+ * method called to initialize the provider. Each derived class should provide
101+ * their own implementation
102+ *
103+ * @protected
104+ * @memberof MgtBaseProvider
105+ */
106+ // tslint:disable-next-line: no-empty
107+ protected initializeProvider ( ) { }
61108
62109 private stateChangedHandler ( ) {
63110 this . fireCustomEvent ( 'onStateChanged' , this . provider . state ) ;
0 commit comments