@@ -7,7 +7,6 @@ import React from 'react';
77 */
88export interface IShareDialogData {
99 notebookName : string ;
10- isViewOnly : boolean ;
1110 password : string ;
1211}
1312
@@ -31,22 +30,13 @@ const ShareDialogComponent = () => {
3130 return password ;
3231 } ;
3332
34- const [ notebookName , setNotebookName ] = React . useState ( generateDefaultName ( ) ) ;
35- const [ isViewOnly , setIsViewOnly ] = React . useState ( false ) ;
36- const [ password , setPassword ] = React . useState ( generatePassword ( ) ) ;
33+ const [ notebookName , setNotebookName ] = React . useState < string > ( generateDefaultName ( ) ) ;
34+ const [ password ] = React . useState < string > ( generatePassword ( ) ) ;
3735
3836 const handleNameChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
3937 setNotebookName ( e . target . value ) ;
4038 } ;
4139
42- const handleViewOnlyChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
43- setIsViewOnly ( e . target . checked ) ;
44- } ;
45-
46- const handlePasswordChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
47- setPassword ( e . target . value ) ;
48- } ;
49-
5040 return (
5141 < div >
5242 < label htmlFor = "notebook-name" > Notebook Name:</ label >
@@ -64,73 +54,52 @@ const ShareDialogComponent = () => {
6454 />
6555
6656 < div style = { { marginBottom : '15px' } } >
67- < input
68- id = "view-only"
69- type = "checkbox"
70- checked = { isViewOnly }
71- onChange = { handleViewOnlyChange }
72- style = { { marginRight : '5px' } }
73- />
74- < label htmlFor = "view-only" > Share as view-only notebook (password-protected)</ label >
75- </ div >
76-
77- < div style = { { marginBottom : '15px' } } >
78- < label htmlFor = "password" > Password:</ label >
79- < input
57+ < label htmlFor = "password" >
58+ Here's the code required to edit the original notebook. Make sure to save this code as it
59+ will not appear again:
60+ </ label >
61+ < div
8062 id = "password"
81- type = "text"
82- value = { password }
83- onChange = { handlePasswordChange }
84- disabled = { ! isViewOnly }
8563 style = { {
8664 width : '100%' ,
87- padding : '5px'
65+ padding : '5px' ,
66+ fontFamily : 'monospace' ,
67+ fontSize : '14px'
8868 } }
89- />
69+ >
70+ { password }
71+ </ div >
9072 </ div >
9173 </ div >
9274 ) ;
9375} ;
9476
9577export class ShareDialog extends ReactWidget {
9678 private _notebookName : string ;
97- private _isViewOnly : boolean ;
98- private _password : string ;
9979
10080 constructor ( ) {
10181 super ( ) ;
10282 // Generate default values
10383 const today = new Date ( ) ;
10484 this . _notebookName = `Notebook_${ today . getFullYear ( ) } -${ ( today . getMonth ( ) + 1 ) . toString ( ) . padStart ( 2 , '0' ) } -${ today . getDate ( ) . toString ( ) . padStart ( 2 , '0' ) } ` ;
105- this . _isViewOnly = false ;
106-
107- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' ;
108- let password = '' ;
109- for ( let i = 0 ; i < 8 ; i ++ ) {
110- password += chars . charAt ( Math . floor ( Math . random ( ) * chars . length ) ) ;
111- }
112- this . _password = password ;
11385 }
11486
11587 getValue ( ) : IShareDialogData {
11688 // Get current values from the DOM
11789 const nameInput = this . node . querySelector ( '#notebook-name' ) as HTMLInputElement ;
118- const viewOnlyCheckbox = this . node . querySelector ( '#view-only' ) as HTMLInputElement ;
119- const passwordInput = this . node . querySelector ( '#password' ) as HTMLInputElement ;
90+ const passwordDiv = this . node . querySelector ( '#password' ) as HTMLDivElement ;
12091
121- if ( nameInput && viewOnlyCheckbox && passwordInput ) {
92+ if ( nameInput && passwordDiv && passwordDiv . textContent ) {
12293 return {
12394 notebookName : nameInput . value ,
124- isViewOnly : viewOnlyCheckbox . checked ,
125- password : passwordInput . value
95+ password : passwordDiv . textContent
12696 } ;
12797 }
12898
12999 // Fallback to stored values
130100 return {
131101 notebookName : this . _notebookName ,
132- isViewOnly : this . _isViewOnly ,
133- password : this . _password
102+ password : '' // This shouldn't really happen since the component always renders a password
134103 } ;
135104 }
136105
0 commit comments