@@ -21,47 +21,56 @@ export class MySharingWidgetElement extends HTMLElement {
2121 return this . getAttribute ( 'button-label' ) || 'Share' ;
2222 }
2323
24- get descElement ( ) {
24+ get cancelMessage ( ) {
25+ return this . getAttribute ( 'cancel-message' ) || 'Share was cancelled.' ;
26+ }
27+
28+ get #descElement ( ) {
2529 const ELEM = document . querySelector ( this . descSelector ) ;
2630 console . assert ( ELEM , 'Description <meta> element not found' ) ;
2731 return ELEM ;
2832 }
2933
30- get linkElement ( ) {
34+ get # linkElement ( ) {
3135 return document . querySelector ( this . urlSelector ) ;
3236 }
3337
3438 connectedCallback ( ) {
3539 if ( ! this . _supportsShareApi ) {
3640 console . warn ( 'Web Share API not supported' ) ;
37- return ;
41+ // Was: return;
3842 }
39- const formElem = this . _createElements ( ) ;
43+ const formElem = this . #createElements ( ) ;
4044
4145 const shadowRoot = this . attachShadow ( { mode : 'open' } ) ;
4246 shadowRoot . appendChild ( formElem ) ;
4347
44- formElem . addEventListener ( 'submit' , ( ev ) => this . _onSubmitEvent ( ev ) ) ;
48+ formElem . addEventListener ( 'submit' , ( ev ) => this . #onSubmitEvent ( ev ) ) ;
4549
46- console . debug ( 'my-sharing-widget' , this ) ;
50+ console . debug ( 'my-sharing-widget' , [ this ] ) ;
4751 }
4852
49- async _onSubmitEvent ( ev ) {
53+ async #onSubmitEvent ( ev ) {
5054 ev . preventDefault ( ) ;
51- const shareForm = ev . target ;
52- console . debug ( 'Share:' , this . _shareData , shareForm , ev ) ;
55+ console . debug ( 'Share:' , this . #shareData, this . #formElements, ev ) ;
5356 try {
54- await navigator . share ( this . _shareData ) ;
55- shareForm . elements . output . value = 'Shared successfully' ;
56- shareForm . dataset . shared = true ;
57+ await navigator . share ( this . #shareData ) ;
58+ this . #formElements . output . value = 'Shared successfully' ;
59+ this . dataset . shared = true ;
5760 } catch ( err ) {
58- shareForm . elements . output . value = `Error: ${ err } ` ;
59- shareForm . dataset . shared = false ;
60- console . error ( `Error: ${ err } ` , err ) ;
61+ if ( err . name === 'AbortError' ) {
62+ this . #formElements. output . value = this . cancelMessage ;
63+ } else {
64+ this . #formElements. output . value = `Error: ${ err } ` ;
65+ }
66+ this . dataset . shared = false ;
67+ this . dataset . error = err ;
68+ console . error ( 'Error:' , err ) ;
69+ console . dir ( err ) ;
6170 }
6271 }
6372
64- _createElements ( ) {
73+ #createElements ( ) {
6574 const formElem = document . createElement ( 'form' ) ;
6675 const buttonElem = document . createElement ( 'button' ) ;
6776 const outputElem = document . createElement ( 'output' ) ;
@@ -74,16 +83,18 @@ export class MySharingWidgetElement extends HTMLElement {
7483 return formElem ;
7584 }
7685
77- get _shareData ( ) {
86+ get #formElements ( ) { return this . shadowRoot . querySelector ( 'form' ) . elements ; }
87+
88+ get #shareData ( ) {
7889 return {
7990 title : document . title ,
80- text : this . descElement ? this . descElement . getAttribute ( 'content' ) : null ,
81- url : this . linkElement ? this . linkElement . href : location . href
91+ text : this . # descElement ? this . # descElement. getAttribute ( 'content' ) : null ,
92+ url : this . # linkElement ? this . # linkElement. href : location . href
8293 } ;
8394 }
8495
85- get _supportsShareApi ( ) {
86- return typeof navigator . share === 'function' && navigator . canShare ;
96+ get #supportsShareApi ( ) {
97+ return typeof navigator . share === 'function' ; // && navigator.canShare;
8798 }
8899}
89100
0 commit comments