@@ -192,6 +192,66 @@ function generateVerticalMenu() {
192192 return $ ( '<div class="goog-menu goog-menu-vertical docs-material goog-menu-noaccel docs-menu-hide-mnemonics" style="user-select: none; display: none;" role="menu" aria-haspopup="true"></div>' ) ;
193193}
194194
195+ function generateDialogBackground ( ) {
196+ return $ ( '<div class="modal-dialog-bg" style="opacity: 0.75; width: 100vw; height: 100vh;" aria-hidden="true"></div>' ) ;
197+ }
198+
199+ /**
200+ * @function
201+ * @param {string } title the title of the dialog
202+ * @param {DOMElement } dialogBackground background to apply to body (such as a
203+ * blur background)
204+ * @param {function } applyCallback the function will run when apply button is
205+ * clicked
206+ */
207+ function generateDialog ( title , $dialogBackground , applyCallback ) {
208+ const $dialog = $ (
209+ '<div class="modal-dialog docs-dialog" tabindex="0" role="dialog" style="position: fixed; top: 50%; left: 50%;transform: translate(-50%, -50%); opacity: 1;">' +
210+ '<div class="modal-dialog-title modal-dialog-title-draggable">' +
211+ '<span class="modal-dialog-title-text" id=":703" role="heading">' + title + '</span>' +
212+ '<span class="modal-dialog-title-close" role="button" tabindex="0" aria-label="Close"></span>' +
213+ '</div>' +
214+ '<div class="modal-dialog-content">' +
215+ '<div class="kix-columnoptionsdialog-content">' +
216+ '<div class="kix-columnoptionsdialog-content-left-side goog-inline-block">' +
217+ '<div class="kix-columnoptionsdialog-section">' +
218+ '<div class="kix-columnoptionsdialog-title goog-inline-block">' +
219+ // Options labels will be inserted here +
220+ '</div>' +
221+ '<div class="kix-columnoptionsdialog-control goog-inline-block">' +
222+ // Options control items will be inserted here
223+ '</div>' +
224+ '</div>' +
225+ '</div>' +
226+ '</div>' +
227+ '</div>' +
228+ '<div class="modal-dialog-buttons">' +
229+ '<button name="apply" class="goog-buttonset-default goog-buttonset-action">Apply</button>' +
230+ '<button name="cancel">Cancel</button>' +
231+ '</div>' +
232+ '</div>'
233+ ) ;
234+
235+ $dialog . find ( ".modal-dialog-title-close" ) . click ( function ( ) {
236+ closeDialog ( $dialog , $dialogBackground ) ;
237+ } ) ;
238+
239+ $dialog . find ( "button[name='apply']" ) . click ( function ( ) {
240+ closeDialog ( $dialog , $dialogBackground ) ;
241+ applyCallback ( ) ;
242+ } ) ;
243+
244+ $dialog . find ( "button[name='cancel']" ) . click ( function ( ) {
245+ closeDialog ( $dialog , $dialogBackground ) ;
246+ } )
247+
248+ return $dialog ;
249+ }
250+
251+ function closeDialog ( $dialog , $dialogBackground ) {
252+ $dialog . remove ( ) ;
253+ $dialogBackground . remove ( ) ;
254+ }
195255
196256/**
197257 * Line Numbering Menu Generation Functions
@@ -204,11 +264,20 @@ function generateLineNumberingVerticalMenu() {
204264 $verticalMenu . append ( generateMenuItem ( "Number selection" ) ) ;
205265
206266 $verticalMenu . append ( generateMenuSeparator ( ) ) ;
207-
267+
208268 $verticalMenu . append ( generateCheckboxMenuItem ( "Number blank lines" , false ) ) ;
209269 $verticalMenu . append ( generateCheckboxMenuItem ( "Restart line numbering on each page" , false ) ) ;
210270 $verticalMenu . append ( generateMenuItem ( "Add number/content divider" ) ) ;
211- $verticalMenu . append ( generateMenuItem ( "More options..." ) ) ;
271+
272+ const $moreOptionsMenuItem = generateMenuItem ( "More options..." ) ;
273+ $moreOptionsMenuItem . click ( function ( ) {
274+ const $dialogBackground = generateDialogBackground ( )
275+ $ ( 'body' ) . append ( generateDialog ( "Line numbering options" , $dialogBackground , function ( ) {
276+
277+ } ) ) ;
278+ $ ( 'body' ) . append ( $dialogBackground ) ;
279+ } ) ;
280+ $verticalMenu . append ( $moreOptionsMenuItem ) ;
212281
213282 return $verticalMenu ;
214283}
0 commit comments