3 <html lang=
"en" class=
"no-js">
7 <meta name=
"viewport" content=
"width=device-width,initial-scale=1">
11 <link rel=
"canonical" href=
"https://docs.woltlab.com/6.0/javascript/components_dialog/">
14 <link rel=
"prev" href=
"../components_confirmation/">
17 <link rel=
"next" href=
"../components_google_maps/">
19 <link rel=
"icon" href=
"../../assets/default.favicon.ico">
20 <meta name=
"generator" content=
"mkdocs-1.4.3, mkdocs-material-9.1.15">
24 <title>Dialog - WoltLab Suite Documentation
</title>
28 <link rel=
"stylesheet" href=
"../../assets/stylesheets/main.26e3688c.min.css">
31 <link rel=
"stylesheet" href=
"../../assets/stylesheets/palette.ecc896b0.min.css">
41 <link rel=
"stylesheet" href=
"../../stylesheets/extra.css">
43 <script>__md_scope=new URL(
"../..",location),__md_hash=e=
>[...e].reduce((e,_)=
>(e<
<5)-e+_.charCodeAt(
0),
0),__md_get=(e,_=localStorage,t=__md_scope)=
>JSON.parse(_.getItem(t.pathname+
"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=
>{try{t.setItem(a.pathname+
"."+e,JSON.stringify(_))}catch(e){}}
</script>
58 <body dir=
"ltr" data-md-color-scheme=
"default" data-md-color-primary=
"teal" data-md-color-accent=
"indigo">
62 <input class=
"md-toggle" data-md-toggle=
"drawer" type=
"checkbox" id=
"__drawer" autocomplete=
"off">
63 <input class=
"md-toggle" data-md-toggle=
"search" type=
"checkbox" id=
"__search" autocomplete=
"off">
64 <label class=
"md-overlay" for=
"__drawer"></label>
65 <div data-md-component=
"skip">
68 <a href=
"#dialogs-javascript-api" class=
"md-skip">
73 <div data-md-component=
"announce">
75 <aside class=
"md-banner">
76 <div class=
"md-banner__inner md-grid md-typeset">
79 <a href=
"https://www.woltlab.com">Back to
<strong>woltlab.com
</strong></a>
87 <div data-md-color-scheme=
"default" data-md-component=
"outdated" hidden
>
96 <header class=
"md-header md-header--shadow" data-md-component=
"header">
97 <nav class=
"md-header__inner md-grid" aria-label=
"Header">
98 <a href=
"../.." title=
"WoltLab Suite Documentation" class=
"md-header__button md-logo" aria-label=
"WoltLab Suite Documentation" data-md-component=
"logo">
100 <img src=
"../../assets/logo.png" alt=
"logo">
103 <label class=
"md-header__button md-icon" for=
"__drawer">
104 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
106 <div class=
"md-header__title" data-md-component=
"header-title">
107 <div class=
"md-header__ellipsis">
108 <div class=
"md-header__topic">
109 <span class=
"md-ellipsis">
110 WoltLab Suite Documentation
113 <div class=
"md-header__topic" data-md-component=
"header-topic">
114 <span class=
"md-ellipsis">
127 <label class=
"md-header__button md-icon" for=
"__search">
128 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
130 <div class=
"md-search" data-md-component=
"search" role=
"dialog">
131 <label class=
"md-search__overlay" for=
"__search"></label>
132 <div class=
"md-search__inner" role=
"search">
133 <form class=
"md-search__form" name=
"search">
134 <input type=
"text" class=
"md-search__input" name=
"query" aria-label=
"Search" placeholder=
"Search" autocapitalize=
"off" autocorrect=
"off" autocomplete=
"off" spellcheck=
"false" data-md-component=
"search-query" required
>
135 <label class=
"md-search__icon md-icon" for=
"__search">
136 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
137 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
139 <nav class=
"md-search__options" aria-label=
"Search">
141 <button type=
"reset" class=
"md-search__icon md-icon" title=
"Clear" aria-label=
"Clear" tabindex=
"-1">
142 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
147 <div class=
"md-search__output">
148 <div class=
"md-search__scrollwrap" data-md-scrollfix
>
149 <div class=
"md-search-result" data-md-component=
"search-result">
150 <div class=
"md-search-result__meta">
153 <ol class=
"md-search-result__list" role=
"presentation"></ol>
161 <div class=
"md-header__source">
162 <a href=
"https://github.com/WoltLab/docs.woltlab.com/" title=
"Go to repository" class=
"md-source" data-md-component=
"source">
163 <div class=
"md-source__icon md-icon">
165 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d=
"M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
167 <div class=
"md-source__repository">
177 <div class=
"md-container" data-md-component=
"container">
184 <main class=
"md-main" data-md-component=
"main">
185 <div class=
"md-main__inner md-grid">
189 <div class=
"md-sidebar md-sidebar--primary" data-md-component=
"sidebar" data-md-type=
"navigation" >
190 <div class=
"md-sidebar__scrollwrap">
191 <div class=
"md-sidebar__inner">
195 <nav class=
"md-nav md-nav--primary" aria-label=
"Navigation" data-md-level=
"0">
196 <label class=
"md-nav__title" for=
"__drawer">
197 <a href=
"../.." title=
"WoltLab Suite Documentation" class=
"md-nav__button md-logo" aria-label=
"WoltLab Suite Documentation" data-md-component=
"logo">
199 <img src=
"../../assets/logo.png" alt=
"logo">
202 WoltLab Suite Documentation
205 <div class=
"md-nav__source">
206 <a href=
"https://github.com/WoltLab/docs.woltlab.com/" title=
"Go to repository" class=
"md-source" data-md-component=
"source">
207 <div class=
"md-source__icon md-icon">
209 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d=
"M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
211 <div class=
"md-source__repository">
217 <ul class=
"md-nav__list" data-md-scrollfix
>
226 <li class=
"md-nav__item">
227 <a href=
"../../getting-started/" class=
"md-nav__link">
242 <li class=
"md-nav__item md-nav__item--nested">
247 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_2" >
251 <label class=
"md-nav__link" for=
"__nav_2" id=
"__nav_2_label" tabindex=
"0">
253 <span class=
"md-nav__icon md-icon"></span>
256 <nav class=
"md-nav" data-md-level=
"1" aria-labelledby=
"__nav_2_label" aria-expanded=
"false">
257 <label class=
"md-nav__title" for=
"__nav_2">
258 <span class=
"md-nav__icon md-icon"></span>
261 <ul class=
"md-nav__list" data-md-scrollfix
>
268 <li class=
"md-nav__item">
269 <a href=
"../../php/pages/" class=
"md-nav__link">
282 <li class=
"md-nav__item">
283 <a href=
"../../php/database-objects/" class=
"md-nav__link">
296 <li class=
"md-nav__item">
297 <a href=
"../../php/database-access/" class=
"md-nav__link">
310 <li class=
"md-nav__item">
311 <a href=
"../../php/exceptions/" class=
"md-nav__link">
325 <li class=
"md-nav__item md-nav__item--nested">
330 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_2_5" >
334 <label class=
"md-nav__link" for=
"__nav_2_5" id=
"__nav_2_5_label" tabindex=
"0">
336 <span class=
"md-nav__icon md-icon"></span>
339 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_2_5_label" aria-expanded=
"false">
340 <label class=
"md-nav__title" for=
"__nav_2_5">
341 <span class=
"md-nav__icon md-icon"></span>
344 <ul class=
"md-nav__list" data-md-scrollfix
>
352 <li class=
"md-nav__item md-nav__item--nested">
357 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_2_5_1" >
361 <label class=
"md-nav__link" for=
"__nav_2_5_1" id=
"__nav_2_5_1_label" tabindex=
"0">
363 <span class=
"md-nav__icon md-icon"></span>
366 <nav class=
"md-nav" data-md-level=
"3" aria-labelledby=
"__nav_2_5_1_label" aria-expanded=
"false">
367 <label class=
"md-nav__title" for=
"__nav_2_5_1">
368 <span class=
"md-nav__icon md-icon"></span>
371 <ul class=
"md-nav__list" data-md-scrollfix
>
378 <li class=
"md-nav__item">
379 <a href=
"../../php/api/caches/" class=
"md-nav__link">
392 <li class=
"md-nav__item">
393 <a href=
"../../php/api/caches_persistent-caches/" class=
"md-nav__link">
406 <li class=
"md-nav__item">
407 <a href=
"../../php/api/caches_runtime-caches/" class=
"md-nav__link">
427 <li class=
"md-nav__item">
428 <a href=
"../../php/api/comments/" class=
"md-nav__link">
441 <li class=
"md-nav__item">
442 <a href=
"../../php/api/cronjobs/" class=
"md-nav__link">
455 <li class=
"md-nav__item">
456 <a href=
"../../php/api/events/" class=
"md-nav__link">
470 <li class=
"md-nav__item md-nav__item--nested">
475 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_2_5_5" >
479 <label class=
"md-nav__link" for=
"__nav_2_5_5" id=
"__nav_2_5_5_label" tabindex=
"0">
481 <span class=
"md-nav__icon md-icon"></span>
484 <nav class=
"md-nav" data-md-level=
"3" aria-labelledby=
"__nav_2_5_5_label" aria-expanded=
"false">
485 <label class=
"md-nav__title" for=
"__nav_2_5_5">
486 <span class=
"md-nav__icon md-icon"></span>
489 <ul class=
"md-nav__list" data-md-scrollfix
>
496 <li class=
"md-nav__item">
497 <a href=
"../../php/api/form_builder/overview/" class=
"md-nav__link">
510 <li class=
"md-nav__item">
511 <a href=
"../../php/api/form_builder/structure/" class=
"md-nav__link">
524 <li class=
"md-nav__item">
525 <a href=
"../../php/api/form_builder/form_fields/" class=
"md-nav__link">
538 <li class=
"md-nav__item">
539 <a href=
"../../php/api/form_builder/validation_data/" class=
"md-nav__link">
552 <li class=
"md-nav__item">
553 <a href=
"../../php/api/form_builder/dependencies/" class=
"md-nav__link">
573 <li class=
"md-nav__item">
574 <a href=
"../../php/api/package_installation_plugins/" class=
"md-nav__link">
575 Package Installation Plugins
587 <li class=
"md-nav__item">
588 <a href=
"../../php/api/user_activity_points/" class=
"md-nav__link">
601 <li class=
"md-nav__item">
602 <a href=
"../../php/api/user_notifications/" class=
"md-nav__link">
615 <li class=
"md-nav__item">
616 <a href=
"../../php/api/sitemaps/" class=
"md-nav__link">
636 <li class=
"md-nav__item">
637 <a href=
"../../php/code-style/" class=
"md-nav__link">
650 <li class=
"md-nav__item">
651 <a href=
"../../php/apps/" class=
"md-nav__link">
664 <li class=
"md-nav__item">
665 <a href=
"../../php/gdpr/" class=
"md-nav__link">
687 <li class=
"md-nav__item md-nav__item--nested">
692 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_3" >
696 <label class=
"md-nav__link" for=
"__nav_3" id=
"__nav_3_label" tabindex=
"0">
697 Languages, Templates & CSS
698 <span class=
"md-nav__icon md-icon"></span>
701 <nav class=
"md-nav" data-md-level=
"1" aria-labelledby=
"__nav_3_label" aria-expanded=
"false">
702 <label class=
"md-nav__title" for=
"__nav_3">
703 <span class=
"md-nav__icon md-icon"></span>
704 Languages, Templates & CSS
706 <ul class=
"md-nav__list" data-md-scrollfix
>
713 <li class=
"md-nav__item">
714 <a href=
"../../view/languages/" class=
"md-nav__link">
727 <li class=
"md-nav__item">
728 <a href=
"../../view/templates/" class=
"md-nav__link">
741 <li class=
"md-nav__item">
742 <a href=
"../../view/template-modifiers/" class=
"md-nav__link">
755 <li class=
"md-nav__item">
756 <a href=
"../../view/template-plugins/" class=
"md-nav__link">
769 <li class=
"md-nav__item">
770 <a href=
"../../view/css/" class=
"md-nav__link">
794 <li class=
"md-nav__item md-nav__item--active md-nav__item--nested">
799 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_4" checked
>
803 <label class=
"md-nav__link" for=
"__nav_4" id=
"__nav_4_label" tabindex=
"0">
804 TypeScript and JavaScript API
805 <span class=
"md-nav__icon md-icon"></span>
808 <nav class=
"md-nav" data-md-level=
"1" aria-labelledby=
"__nav_4_label" aria-expanded=
"true">
809 <label class=
"md-nav__title" for=
"__nav_4">
810 <span class=
"md-nav__icon md-icon"></span>
811 TypeScript and JavaScript API
813 <ul class=
"md-nav__list" data-md-scrollfix
>
820 <li class=
"md-nav__item">
821 <a href=
"../general-usage/" class=
"md-nav__link">
834 <li class=
"md-nav__item">
835 <a href=
"../typescript/" class=
"md-nav__link">
851 <li class=
"md-nav__item md-nav__item--active md-nav__item--nested">
856 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_4_3" checked
>
860 <label class=
"md-nav__link" for=
"__nav_4_3" id=
"__nav_4_3_label" tabindex=
"0">
862 <span class=
"md-nav__icon md-icon"></span>
865 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_4_3_label" aria-expanded=
"true">
866 <label class=
"md-nav__title" for=
"__nav_4_3">
867 <span class=
"md-nav__icon md-icon"></span>
870 <ul class=
"md-nav__list" data-md-scrollfix
>
877 <li class=
"md-nav__item">
878 <a href=
"../components_confirmation/" class=
"md-nav__link">
893 <li class=
"md-nav__item md-nav__item--active">
895 <input class=
"md-nav__toggle md-toggle" type=
"checkbox" id=
"__toc">
901 <label class=
"md-nav__link md-nav__link--active" for=
"__toc">
903 <span class=
"md-nav__icon md-icon"></span>
906 <a href=
"./" class=
"md-nav__link md-nav__link--active">
912 <nav class=
"md-nav md-nav--secondary" aria-label=
"Table of contents">
919 <label class=
"md-nav__title" for=
"__toc">
920 <span class=
"md-nav__icon md-icon"></span>
923 <ul class=
"md-nav__list" data-md-component=
"toc" data-md-scrollfix
>
925 <li class=
"md-nav__item">
926 <a href=
"#quickstart" class=
"md-nav__link">
932 <li class=
"md-nav__item">
933 <a href=
"#dialogs-without-controls" class=
"md-nav__link">
934 Dialogs Without Controls
937 <nav class=
"md-nav" aria-label=
"Dialogs Without Controls">
938 <ul class=
"md-nav__list">
940 <li class=
"md-nav__item">
941 <a href=
"#when-to-use" class=
"md-nav__link">
952 <li class=
"md-nav__item">
953 <a href=
"#alerts" class=
"md-nav__link">
957 <nav class=
"md-nav" aria-label=
"Alerts">
958 <ul class=
"md-nav__list">
960 <li class=
"md-nav__item">
961 <a href=
"#when-to-use_1" class=
"md-nav__link">
972 <li class=
"md-nav__item">
973 <a href=
"#confirmation" class=
"md-nav__link">
979 <li class=
"md-nav__item">
980 <a href=
"#prompts" class=
"md-nav__link">
984 <nav class=
"md-nav" aria-label=
"Prompts">
985 <ul class=
"md-nav__list">
987 <li class=
"md-nav__item">
988 <a href=
"#code-example" class=
"md-nav__link">
994 <li class=
"md-nav__item">
995 <a href=
"#custom-buttons" class=
"md-nav__link">
999 <nav class=
"md-nav" aria-label=
"Custom Buttons">
1000 <ul class=
"md-nav__list">
1002 <li class=
"md-nav__item">
1003 <a href=
"#customizing-the-primary-button" class=
"md-nav__link">
1004 Customizing the Primary Button
1014 <li class=
"md-nav__item">
1015 <a href=
"#adding-an-extra-button" class=
"md-nav__link">
1016 Adding an Extra Button
1026 <li class=
"md-nav__item">
1027 <a href=
"#interacting-with-dialogs" class=
"md-nav__link">
1028 Interacting with dialogs
1031 <nav class=
"md-nav" aria-label=
"Interacting with dialogs">
1032 <ul class=
"md-nav__list">
1034 <li class=
"md-nav__item">
1035 <a href=
"#opening-and-closing-dialogs" class=
"md-nav__link">
1036 Opening and Closing Dialogs
1041 <li class=
"md-nav__item">
1042 <a href=
"#accessing-the-content" class=
"md-nav__link">
1043 Accessing the Content
1048 <li class=
"md-nav__item">
1049 <a href=
"#disabling-the-submit-button-of-a-dialog" class=
"md-nav__link">
1050 Disabling the Submit Button of a Dialog
1055 <li class=
"md-nav__item">
1056 <a href=
"#managing-an-instance-of-a-dialog" class=
"md-nav__link">
1057 Managing an Instance of a Dialog
1062 <li class=
"md-nav__item">
1063 <a href=
"#event-access" class=
"md-nav__link">
1067 <nav class=
"md-nav" aria-label=
"Event Access">
1068 <ul class=
"md-nav__list">
1070 <li class=
"md-nav__item">
1071 <a href=
"#afterclose" class=
"md-nav__link">
1077 <li class=
"md-nav__item">
1078 <a href=
"#close" class=
"md-nav__link">
1084 <li class=
"md-nav__item">
1085 <a href=
"#cancel" class=
"md-nav__link">
1091 <li class=
"md-nav__item">
1092 <a href=
"#extra" class=
"md-nav__link">
1098 <li class=
"md-nav__item">
1099 <a href=
"#primary" class=
"md-nav__link">
1105 <li class=
"md-nav__item">
1106 <a href=
"#validate" class=
"md-nav__link">
1136 <li class=
"md-nav__item">
1137 <a href=
"../components_google_maps/" class=
"md-nav__link">
1150 <li class=
"md-nav__item">
1151 <a href=
"../components_pagination/" class=
"md-nav__link">
1172 <li class=
"md-nav__item md-nav__item--nested">
1177 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_4_4" >
1181 <label class=
"md-nav__link" for=
"__nav_4_4" id=
"__nav_4_4_label" tabindex=
"0">
1183 <span class=
"md-nav__icon md-icon"></span>
1186 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_4_4_label" aria-expanded=
"false">
1187 <label class=
"md-nav__title" for=
"__nav_4_4">
1188 <span class=
"md-nav__icon md-icon"></span>
1191 <ul class=
"md-nav__list" data-md-scrollfix
>
1198 <li class=
"md-nav__item">
1199 <a href=
"../new-api_writing-a-module/" class=
"md-nav__link">
1212 <li class=
"md-nav__item">
1213 <a href=
"../new-api_core/" class=
"md-nav__link">
1226 <li class=
"md-nav__item">
1227 <a href=
"../new-api_dom/" class=
"md-nav__link">
1240 <li class=
"md-nav__item">
1241 <a href=
"../new-api_events/" class=
"md-nav__link">
1254 <li class=
"md-nav__item">
1255 <a href=
"../new-api_ajax/" class=
"md-nav__link">
1268 <li class=
"md-nav__item">
1269 <a href=
"../new-api_dialogs/" class=
"md-nav__link">
1282 <li class=
"md-nav__item">
1283 <a href=
"../new-api_browser/" class=
"md-nav__link">
1284 Browser and Screen Sizes
1296 <li class=
"md-nav__item">
1297 <a href=
"../new-api_ui/" class=
"md-nav__link">
1317 <li class=
"md-nav__item">
1318 <a href=
"../legacy-api/" class=
"md-nav__link">
1331 <li class=
"md-nav__item">
1332 <a href=
"../code-snippets/" class=
"md-nav__link">
1354 <li class=
"md-nav__item md-nav__item--nested">
1359 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_5" >
1363 <label class=
"md-nav__link" for=
"__nav_5" id=
"__nav_5_label" tabindex=
"0">
1365 <span class=
"md-nav__icon md-icon"></span>
1368 <nav class=
"md-nav" data-md-level=
"1" aria-labelledby=
"__nav_5_label" aria-expanded=
"false">
1369 <label class=
"md-nav__title" for=
"__nav_5">
1370 <span class=
"md-nav__icon md-icon"></span>
1373 <ul class=
"md-nav__list" data-md-scrollfix
>
1380 <li class=
"md-nav__item">
1381 <a href=
"../../package/package-xml/" class=
"md-nav__link">
1395 <li class=
"md-nav__item md-nav__item--nested">
1400 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_5_2" >
1404 <label class=
"md-nav__link" for=
"__nav_5_2" id=
"__nav_5_2_label" tabindex=
"0">
1406 <span class=
"md-nav__icon md-icon"></span>
1409 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_5_2_label" aria-expanded=
"false">
1410 <label class=
"md-nav__title" for=
"__nav_5_2">
1411 <span class=
"md-nav__icon md-icon"></span>
1414 <ul class=
"md-nav__list" data-md-scrollfix
>
1421 <li class=
"md-nav__item">
1422 <a href=
"../../package/pip/" class=
"md-nav__link">
1435 <li class=
"md-nav__item">
1436 <a href=
"../../package/pip/acl-option/" class=
"md-nav__link">
1449 <li class=
"md-nav__item">
1450 <a href=
"../../package/pip/acp-menu/" class=
"md-nav__link">
1463 <li class=
"md-nav__item">
1464 <a href=
"../../package/pip/acp-search-provider/" class=
"md-nav__link">
1477 <li class=
"md-nav__item">
1478 <a href=
"../../package/pip/acp-template/" class=
"md-nav__link">
1491 <li class=
"md-nav__item">
1492 <a href=
"../../package/pip/acp-template-delete/" class=
"md-nav__link">
1505 <li class=
"md-nav__item">
1506 <a href=
"../../package/pip/bbcode/" class=
"md-nav__link">
1519 <li class=
"md-nav__item">
1520 <a href=
"../../package/pip/box/" class=
"md-nav__link">
1533 <li class=
"md-nav__item">
1534 <a href=
"../../package/pip/clipboard-action/" class=
"md-nav__link">
1547 <li class=
"md-nav__item">
1548 <a href=
"../../package/pip/core-object/" class=
"md-nav__link">
1561 <li class=
"md-nav__item">
1562 <a href=
"../../package/pip/cronjob/" class=
"md-nav__link">
1575 <li class=
"md-nav__item">
1576 <a href=
"../../package/pip/database/" class=
"md-nav__link">
1589 <li class=
"md-nav__item">
1590 <a href=
"../../package/pip/event-listener/" class=
"md-nav__link">
1603 <li class=
"md-nav__item">
1604 <a href=
"../../package/pip/file/" class=
"md-nav__link">
1617 <li class=
"md-nav__item">
1618 <a href=
"../../package/pip/file-delete/" class=
"md-nav__link">
1631 <li class=
"md-nav__item">
1632 <a href=
"../../package/pip/language/" class=
"md-nav__link">
1645 <li class=
"md-nav__item">
1646 <a href=
"../../package/pip/media-provider/" class=
"md-nav__link">
1659 <li class=
"md-nav__item">
1660 <a href=
"../../package/pip/menu/" class=
"md-nav__link">
1673 <li class=
"md-nav__item">
1674 <a href=
"../../package/pip/menu-item/" class=
"md-nav__link">
1687 <li class=
"md-nav__item">
1688 <a href=
"../../package/pip/object-type/" class=
"md-nav__link">
1701 <li class=
"md-nav__item">
1702 <a href=
"../../package/pip/object-type-definition/" class=
"md-nav__link">
1703 objectTypeDefinition
1715 <li class=
"md-nav__item">
1716 <a href=
"../../package/pip/option/" class=
"md-nav__link">
1729 <li class=
"md-nav__item">
1730 <a href=
"../../package/pip/page/" class=
"md-nav__link">
1743 <li class=
"md-nav__item">
1744 <a href=
"../../package/pip/pip/" class=
"md-nav__link">
1757 <li class=
"md-nav__item">
1758 <a href=
"../../package/pip/script/" class=
"md-nav__link">
1771 <li class=
"md-nav__item">
1772 <a href=
"../../package/pip/smiley/" class=
"md-nav__link">
1785 <li class=
"md-nav__item">
1786 <a href=
"../../package/pip/sql/" class=
"md-nav__link">
1799 <li class=
"md-nav__item">
1800 <a href=
"../../package/pip/style/" class=
"md-nav__link">
1813 <li class=
"md-nav__item">
1814 <a href=
"../../package/pip/template/" class=
"md-nav__link">
1827 <li class=
"md-nav__item">
1828 <a href=
"../../package/pip/template-delete/" class=
"md-nav__link">
1841 <li class=
"md-nav__item">
1842 <a href=
"../../package/pip/template-listener/" class=
"md-nav__link">
1855 <li class=
"md-nav__item">
1856 <a href=
"../../package/pip/user-group-option/" class=
"md-nav__link">
1869 <li class=
"md-nav__item">
1870 <a href=
"../../package/pip/user-menu/" class=
"md-nav__link">
1883 <li class=
"md-nav__item">
1884 <a href=
"../../package/pip/user-notification-event/" class=
"md-nav__link">
1885 userNotificationEvent
1897 <li class=
"md-nav__item">
1898 <a href=
"../../package/pip/user-option/" class=
"md-nav__link">
1911 <li class=
"md-nav__item">
1912 <a href=
"../../package/pip/user-profile-menu/" class=
"md-nav__link">
1932 <li class=
"md-nav__item">
1933 <a href=
"../../package/database-php-api/" class=
"md-nav__link">
1955 <li class=
"md-nav__item md-nav__item--nested">
1960 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6" >
1964 <label class=
"md-nav__link" for=
"__nav_6" id=
"__nav_6_label" tabindex=
"0">
1966 <span class=
"md-nav__icon md-icon"></span>
1969 <nav class=
"md-nav" data-md-level=
"1" aria-labelledby=
"__nav_6_label" aria-expanded=
"false">
1970 <label class=
"md-nav__title" for=
"__nav_6">
1971 <span class=
"md-nav__icon md-icon"></span>
1974 <ul class=
"md-nav__list" data-md-scrollfix
>
1982 <li class=
"md-nav__item md-nav__item--nested">
1987 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_1" >
1991 <label class=
"md-nav__link" for=
"__nav_6_1" id=
"__nav_6_1_label" tabindex=
"0">
1992 From WoltLab Suite
5.5
1993 <span class=
"md-nav__icon md-icon"></span>
1996 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_1_label" aria-expanded=
"false">
1997 <label class=
"md-nav__title" for=
"__nav_6_1">
1998 <span class=
"md-nav__icon md-icon"></span>
1999 From WoltLab Suite
5.5
2001 <ul class=
"md-nav__list" data-md-scrollfix
>
2008 <li class=
"md-nav__item">
2009 <a href=
"../../migration/wsc55/php/" class=
"md-nav__link">
2022 <li class=
"md-nav__item">
2023 <a href=
"../../migration/wsc55/javascript/" class=
"md-nav__link">
2024 TypeScript and JavaScript
2036 <li class=
"md-nav__item">
2037 <a href=
"../../migration/wsc55/templates/" class=
"md-nav__link">
2050 <li class=
"md-nav__item">
2051 <a href=
"../../migration/wsc55/icons/" class=
"md-nav__link">
2064 <li class=
"md-nav__item">
2065 <a href=
"../../migration/wsc55/dialogs/" class=
"md-nav__link">
2078 <li class=
"md-nav__item">
2079 <a href=
"../../migration/wsc55/libraries/" class=
"md-nav__link">
2080 Third Party Libraries
2092 <li class=
"md-nav__item">
2093 <a href=
"../../migration/wsc55/deprecations_removals/" class=
"md-nav__link">
2094 Deprecations and Removals
2114 <li class=
"md-nav__item md-nav__item--nested">
2119 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_2" >
2123 <label class=
"md-nav__link" for=
"__nav_6_2" id=
"__nav_6_2_label" tabindex=
"0">
2124 From WoltLab Suite
5.4
2125 <span class=
"md-nav__icon md-icon"></span>
2128 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_2_label" aria-expanded=
"false">
2129 <label class=
"md-nav__title" for=
"__nav_6_2">
2130 <span class=
"md-nav__icon md-icon"></span>
2131 From WoltLab Suite
5.4
2133 <ul class=
"md-nav__list" data-md-scrollfix
>
2140 <li class=
"md-nav__item">
2141 <a href=
"../../migration/wsc54/php/" class=
"md-nav__link">
2154 <li class=
"md-nav__item">
2155 <a href=
"../../migration/wsc54/javascript/" class=
"md-nav__link">
2156 TypeScript and JavaScript
2168 <li class=
"md-nav__item">
2169 <a href=
"../../migration/wsc54/templates/" class=
"md-nav__link">
2182 <li class=
"md-nav__item">
2183 <a href=
"../../migration/wsc54/libraries/" class=
"md-nav__link">
2184 Third Party Libraries
2196 <li class=
"md-nav__item">
2197 <a href=
"../../migration/wsc54/deprecations_removals/" class=
"md-nav__link">
2198 Deprecations and Removals
2218 <li class=
"md-nav__item md-nav__item--nested">
2223 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_3" >
2227 <label class=
"md-nav__link" for=
"__nav_6_3" id=
"__nav_6_3_label" tabindex=
"0">
2228 From WoltLab Suite
5.3
2229 <span class=
"md-nav__icon md-icon"></span>
2232 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_3_label" aria-expanded=
"false">
2233 <label class=
"md-nav__title" for=
"__nav_6_3">
2234 <span class=
"md-nav__icon md-icon"></span>
2235 From WoltLab Suite
5.3
2237 <ul class=
"md-nav__list" data-md-scrollfix
>
2244 <li class=
"md-nav__item">
2245 <a href=
"../../migration/wsc53/php/" class=
"md-nav__link">
2258 <li class=
"md-nav__item">
2259 <a href=
"../../migration/wsc53/session/" class=
"md-nav__link">
2260 Session Handling and Authentication
2272 <li class=
"md-nav__item">
2273 <a href=
"../../migration/wsc53/javascript/" class=
"md-nav__link">
2274 TypeScript and JavaScript
2286 <li class=
"md-nav__item">
2287 <a href=
"../../migration/wsc53/templates/" class=
"md-nav__link">
2300 <li class=
"md-nav__item">
2301 <a href=
"../../migration/wsc53/libraries/" class=
"md-nav__link">
2302 Third Party Libraries
2322 <li class=
"md-nav__item md-nav__item--nested">
2327 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_4" >
2331 <label class=
"md-nav__link" for=
"__nav_6_4" id=
"__nav_6_4_label" tabindex=
"0">
2332 From WoltLab Suite
5.2
2333 <span class=
"md-nav__icon md-icon"></span>
2336 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_4_label" aria-expanded=
"false">
2337 <label class=
"md-nav__title" for=
"__nav_6_4">
2338 <span class=
"md-nav__icon md-icon"></span>
2339 From WoltLab Suite
5.2
2341 <ul class=
"md-nav__list" data-md-scrollfix
>
2348 <li class=
"md-nav__item">
2349 <a href=
"../../migration/wsc52/php/" class=
"md-nav__link">
2362 <li class=
"md-nav__item">
2363 <a href=
"../../migration/wsc52/templates/" class=
"md-nav__link">
2364 Templates and Languages
2376 <li class=
"md-nav__item">
2377 <a href=
"../../migration/wsc52/libraries/" class=
"md-nav__link">
2378 Third Party Libraries
2398 <li class=
"md-nav__item md-nav__item--nested">
2403 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_5" >
2407 <label class=
"md-nav__link" for=
"__nav_6_5" id=
"__nav_6_5_label" tabindex=
"0">
2408 From WoltLab Suite
3.1
2409 <span class=
"md-nav__icon md-icon"></span>
2412 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_5_label" aria-expanded=
"false">
2413 <label class=
"md-nav__title" for=
"__nav_6_5">
2414 <span class=
"md-nav__icon md-icon"></span>
2415 From WoltLab Suite
3.1
2417 <ul class=
"md-nav__list" data-md-scrollfix
>
2424 <li class=
"md-nav__item">
2425 <a href=
"../../migration/wsc31/php/" class=
"md-nav__link">
2446 <li class=
"md-nav__item md-nav__item--nested">
2451 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_6" >
2455 <label class=
"md-nav__link" for=
"__nav_6_6" id=
"__nav_6_6_label" tabindex=
"0">
2456 From WoltLab Suite
3.0
2457 <span class=
"md-nav__icon md-icon"></span>
2460 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_6_label" aria-expanded=
"false">
2461 <label class=
"md-nav__title" for=
"__nav_6_6">
2462 <span class=
"md-nav__icon md-icon"></span>
2463 From WoltLab Suite
3.0
2465 <ul class=
"md-nav__list" data-md-scrollfix
>
2472 <li class=
"md-nav__item">
2473 <a href=
"../../migration/wsc30/php/" class=
"md-nav__link">
2486 <li class=
"md-nav__item">
2487 <a href=
"../../migration/wsc30/javascript/" class=
"md-nav__link">
2500 <li class=
"md-nav__item">
2501 <a href=
"../../migration/wsc30/templates/" class=
"md-nav__link">
2514 <li class=
"md-nav__item">
2515 <a href=
"../../migration/wsc30/css/" class=
"md-nav__link">
2528 <li class=
"md-nav__item">
2529 <a href=
"../../migration/wsc30/package/" class=
"md-nav__link">
2550 <li class=
"md-nav__item md-nav__item--nested">
2555 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_6_7" >
2559 <label class=
"md-nav__link" for=
"__nav_6_7" id=
"__nav_6_7_label" tabindex=
"0">
2561 <span class=
"md-nav__icon md-icon"></span>
2564 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_6_7_label" aria-expanded=
"false">
2565 <label class=
"md-nav__title" for=
"__nav_6_7">
2566 <span class=
"md-nav__icon md-icon"></span>
2569 <ul class=
"md-nav__list" data-md-scrollfix
>
2576 <li class=
"md-nav__item">
2577 <a href=
"../../migration/wcf21/php/" class=
"md-nav__link">
2590 <li class=
"md-nav__item">
2591 <a href=
"../../migration/wcf21/templates/" class=
"md-nav__link">
2604 <li class=
"md-nav__item">
2605 <a href=
"../../migration/wcf21/css/" class=
"md-nav__link">
2618 <li class=
"md-nav__item">
2619 <a href=
"../../migration/wcf21/package/" class=
"md-nav__link">
2648 <li class=
"md-nav__item md-nav__item--nested">
2653 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_7" >
2657 <label class=
"md-nav__link" for=
"__nav_7" id=
"__nav_7_label" tabindex=
"0">
2659 <span class=
"md-nav__icon md-icon"></span>
2662 <nav class=
"md-nav" data-md-level=
"1" aria-labelledby=
"__nav_7_label" aria-expanded=
"false">
2663 <label class=
"md-nav__title" for=
"__nav_7">
2664 <span class=
"md-nav__icon md-icon"></span>
2667 <ul class=
"md-nav__list" data-md-scrollfix
>
2675 <li class=
"md-nav__item md-nav__item--nested">
2680 <input class=
"md-nav__toggle md-toggle " type=
"checkbox" id=
"__nav_7_1" >
2684 <label class=
"md-nav__link" for=
"__nav_7_1" id=
"__nav_7_1_label" tabindex=
"0">
2686 <span class=
"md-nav__icon md-icon"></span>
2689 <nav class=
"md-nav" data-md-level=
"2" aria-labelledby=
"__nav_7_1_label" aria-expanded=
"false">
2690 <label class=
"md-nav__title" for=
"__nav_7_1">
2691 <span class=
"md-nav__icon md-icon"></span>
2694 <ul class=
"md-nav__list" data-md-scrollfix
>
2701 <li class=
"md-nav__item">
2702 <a href=
"../../tutorial/series/overview/" class=
"md-nav__link">
2715 <li class=
"md-nav__item">
2716 <a href=
"../../tutorial/series/part_1/" class=
"md-nav__link">
2729 <li class=
"md-nav__item">
2730 <a href=
"../../tutorial/series/part_2/" class=
"md-nav__link">
2743 <li class=
"md-nav__item">
2744 <a href=
"../../tutorial/series/part_3/" class=
"md-nav__link">
2757 <li class=
"md-nav__item">
2758 <a href=
"../../tutorial/series/part_4/" class=
"md-nav__link">
2771 <li class=
"md-nav__item">
2772 <a href=
"../../tutorial/series/part_5/" class=
"md-nav__link">
2785 <li class=
"md-nav__item">
2786 <a href=
"../../tutorial/series/part_6/" class=
"md-nav__link">
2815 <div class=
"md-sidebar md-sidebar--secondary" data-md-component=
"sidebar" data-md-type=
"toc" >
2816 <div class=
"md-sidebar__scrollwrap">
2817 <div class=
"md-sidebar__inner">
2820 <nav class=
"md-nav md-nav--secondary" aria-label=
"Table of contents">
2827 <label class=
"md-nav__title" for=
"__toc">
2828 <span class=
"md-nav__icon md-icon"></span>
2831 <ul class=
"md-nav__list" data-md-component=
"toc" data-md-scrollfix
>
2833 <li class=
"md-nav__item">
2834 <a href=
"#quickstart" class=
"md-nav__link">
2840 <li class=
"md-nav__item">
2841 <a href=
"#dialogs-without-controls" class=
"md-nav__link">
2842 Dialogs Without Controls
2845 <nav class=
"md-nav" aria-label=
"Dialogs Without Controls">
2846 <ul class=
"md-nav__list">
2848 <li class=
"md-nav__item">
2849 <a href=
"#when-to-use" class=
"md-nav__link">
2860 <li class=
"md-nav__item">
2861 <a href=
"#alerts" class=
"md-nav__link">
2865 <nav class=
"md-nav" aria-label=
"Alerts">
2866 <ul class=
"md-nav__list">
2868 <li class=
"md-nav__item">
2869 <a href=
"#when-to-use_1" class=
"md-nav__link">
2880 <li class=
"md-nav__item">
2881 <a href=
"#confirmation" class=
"md-nav__link">
2887 <li class=
"md-nav__item">
2888 <a href=
"#prompts" class=
"md-nav__link">
2892 <nav class=
"md-nav" aria-label=
"Prompts">
2893 <ul class=
"md-nav__list">
2895 <li class=
"md-nav__item">
2896 <a href=
"#code-example" class=
"md-nav__link">
2902 <li class=
"md-nav__item">
2903 <a href=
"#custom-buttons" class=
"md-nav__link">
2907 <nav class=
"md-nav" aria-label=
"Custom Buttons">
2908 <ul class=
"md-nav__list">
2910 <li class=
"md-nav__item">
2911 <a href=
"#customizing-the-primary-button" class=
"md-nav__link">
2912 Customizing the Primary Button
2922 <li class=
"md-nav__item">
2923 <a href=
"#adding-an-extra-button" class=
"md-nav__link">
2924 Adding an Extra Button
2934 <li class=
"md-nav__item">
2935 <a href=
"#interacting-with-dialogs" class=
"md-nav__link">
2936 Interacting with dialogs
2939 <nav class=
"md-nav" aria-label=
"Interacting with dialogs">
2940 <ul class=
"md-nav__list">
2942 <li class=
"md-nav__item">
2943 <a href=
"#opening-and-closing-dialogs" class=
"md-nav__link">
2944 Opening and Closing Dialogs
2949 <li class=
"md-nav__item">
2950 <a href=
"#accessing-the-content" class=
"md-nav__link">
2951 Accessing the Content
2956 <li class=
"md-nav__item">
2957 <a href=
"#disabling-the-submit-button-of-a-dialog" class=
"md-nav__link">
2958 Disabling the Submit Button of a Dialog
2963 <li class=
"md-nav__item">
2964 <a href=
"#managing-an-instance-of-a-dialog" class=
"md-nav__link">
2965 Managing an Instance of a Dialog
2970 <li class=
"md-nav__item">
2971 <a href=
"#event-access" class=
"md-nav__link">
2975 <nav class=
"md-nav" aria-label=
"Event Access">
2976 <ul class=
"md-nav__list">
2978 <li class=
"md-nav__item">
2979 <a href=
"#afterclose" class=
"md-nav__link">
2985 <li class=
"md-nav__item">
2986 <a href=
"#close" class=
"md-nav__link">
2992 <li class=
"md-nav__item">
2993 <a href=
"#cancel" class=
"md-nav__link">
2999 <li class=
"md-nav__item">
3000 <a href=
"#extra" class=
"md-nav__link">
3006 <li class=
"md-nav__item">
3007 <a href=
"#primary" class=
"md-nav__link">
3013 <li class=
"md-nav__item">
3014 <a href=
"#validate" class=
"md-nav__link">
3039 <div class=
"md-content" data-md-component=
"content">
3040 <article class=
"md-content__inner md-typeset">
3048 <h1 id=
"dialogs-javascript-api">Dialogs - JavaScript API
<a class=
"headerlink" href=
"#dialogs-javascript-api" title=
"Permanent link">#
</a></h1>
3049 <p>Modal dialogs are a powerful tool to draw the viewer’s attention to an important message, question or form.
3050 Dialogs naturally interrupt the workflow and prevent the navigation to other sections by making other elements on the page inert.
</p>
3051 <p>WoltLab Suite
6.0 ships with four different types of dialogs.
</p>
3052 <h2 id=
"quickstart">Quickstart
<a class=
"headerlink" href=
"#quickstart" title=
"Permanent link">#
</a></h2>
3053 <p>There are four different types of dialogs that each fulfill their own specialized role and that provide built-in features to make the development much easier.
3054 Please see the following list to make a quick decision of what kind of dialog you need.
</p>
3056 <li>Is this some kind of error message? Use an alert dialog.
</li>
3057 <li>Are you asking the user to confirm an action? Use a
<a href=
"../components_confirmation/">confirmation dialog
</a>.
</li>
3058 <li>Does the dialog contain form inputs that the user must fill in? Use a prompt dialog.
</li>
3059 <li>Do you want to present information to the user without requiring any action? Use a dialog without controls.
</li>
3061 <h2 id=
"dialogs-without-controls">Dialogs Without Controls
<a class=
"headerlink" href=
"#dialogs-without-controls" title=
"Permanent link">#
</a></h2>
3062 <p>Dialogs may contain just an explanation or extra information that should be presented to the viewer without requiring any further interaction.
3063 The dialog can be closed via the “X” button or by clicking the modal backdrop.
</p>
3064 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3065 <span class=
"normal">2</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialogFactory
</span><span class=
"p">().
</span><span class=
"nx">fromHtml
</span><span class=
"p">(
</span><span class=
"s2">"<p
>Hello World
</p
>"</span><span class=
"p">).
</span><span class=
"nx">withoutControls
</span><span class=
"p">();
</span>
3066 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">show
</span><span class=
"p">(
</span><span class=
"s2">"Greetings from my dialog
"</span><span class=
"p">);
</span>
3067 </code></pre></div></td></tr></table></div>
3068 <h3 id=
"when-to-use">When to Use
<a class=
"headerlink" href=
"#when-to-use" title=
"Permanent link">#
</a></h3>
3069 <p>The short answer is: Don’t.
</p>
3070 <p>Dialogs without controls are an anti-pattern because they only contain content that does not require the modal appearance of a dialog.
3071 More often than not dialogs are used for this kind of content because they are easy to use without thinking about better ways to present the content.
</p>
3072 <p>If possible these dialogs should be avoided and the content is presented in a more suitable way, for example, as a flyout or by showing content on an existing or new page.
</p>
3073 <h2 id=
"alerts">Alerts
<a class=
"headerlink" href=
"#alerts" title=
"Permanent link">#
</a></h2>
3074 <p>Alerts are designed to inform the user of something important that requires no further action by the user.
3075 Typical examples for alerts are error messages or warnings.
</p>
3076 <p>An alert will only provide a single button to acknowledge the dialog and must not contain interactive content.
3077 The dialog itself will be limited to a width of
500px, the title can wrap into multiple lines and there will be no “X” button to close the dialog.
</p>
3078 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3079 <span class=
"normal">2</span>
3080 <span class=
"normal">3</span>
3081 <span class=
"normal">4</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialogFactory
</span><span class=
"p">()
</span>
3082 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">fromHtml
</span><span class=
"p">(
</span><span class=
"s2">"<p
>ERROR: Something went wrong!
</p
>"</span><span class=
"p">)
</span>
3083 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asAlert
</span><span class=
"p">();
</span>
3084 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">show
</span><span class=
"p">(
</span><span class=
"s2">"Server Error
"</span><span class=
"p">);
</span>
3085 </code></pre></div></td></tr></table></div>
3086 <p>You can customize the label of the primary button to better explain what will happen next.
3087 This can be useful for alerts that will have a side-effect when closing the dialog, such as redirect to a different page.
</p>
3088 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3089 <span class=
"normal"> 2</span>
3090 <span class=
"normal"> 3</span>
3091 <span class=
"normal"> 4</span>
3092 <span class=
"normal"> 5</span>
3093 <span class=
"normal"> 6</span>
3094 <span class=
"normal"> 7</span>
3095 <span class=
"normal"> 8</span>
3096 <span class=
"normal"> 9</span>
3097 <span class=
"normal">10</span>
3098 <span class=
"normal">11</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialogFactory
</span><span class=
"p">()
</span>
3099 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">fromHtml
</span><span class=
"p">(
</span><span class=
"s2">"<p
>Something went wrong, we cannot find your shopping cart.
</p
>"</span><span class=
"p">)
</span>
3100 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asAlert
</span><span class=
"p">({
</span>
3101 <span class=
"w"> </span><span class=
"nx">primary
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"s2">"Back to the Store Page
"</span><span class=
"p">,
</span>
3102 <span class=
"w"> </span><span class=
"p">});
</span>
3104 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"primary
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3105 <span class=
"w"> </span><span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nx">location
</span><span class=
"p">.
</span><span class=
"nx">href
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"s2">"https://example.com/shop/
"</span><span class=
"p">;
</span>
3106 <span class=
"p">});
</span>
3108 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">show
</span><span class=
"p">(
</span><span class=
"s2">"The shopping cart is missing
"</span><span class=
"p">);
</span>
3109 </code></pre></div></td></tr></table></div>
3110 <p>The
<code>primary
</code> event is triggered both by clicking on the primary button and by clicks on the modal backdrop.
</p>
3111 <h3 id=
"when-to-use_1">When to Use
<a class=
"headerlink" href=
"#when-to-use_1" title=
"Permanent link">#
</a></h3>
3112 <p>Alerts are a special type of dialog that use the
<code>role=
"alert"</code> attribute to signal its importance to assistive tools.
3113 Use alerts sparingly when there is no other way to communicate that something did not work as expected.
</p>
3114 <p>Alerts should not be used for cases where you expect an error to happen.
3115 For example, a form control that expectes an input to fall within a restricted range should show an inline error message instead of raising an alert.
</p>
3116 <h2 id=
"confirmation">Confirmation
<a class=
"headerlink" href=
"#confirmation" title=
"Permanent link">#
</a></h2>
3117 <p>Confirmation dialogs are supported through a separate factory function that provides a set of presets as well as a generic API. Please see the separate documentation for
<a href=
"../components_confirmation/">confirmation dialogs
</a> to learn more.
</p>
3118 <h2 id=
"prompts">Prompts
<a class=
"headerlink" href=
"#prompts" title=
"Permanent link">#
</a></h2>
3119 <p>The most common type of dialogs are prompts that are similar to confirmation dialogs, but without the restrictions and with a regular title.
3120 These dialogs can be used universally and provide a submit and cancel button by default.
</p>
3121 <p>In addition they offer an “extra” button that is placed to the left of the default buttons are can be used to offer a single additional action.
3122 A possible use case for an “extra” button would be a dialog that includes an instance of the WYSIWYG editor, the extra button could be used to trigger a message preview.
</p>
3123 <h3 id=
"code-example">Code Example
<a class=
"headerlink" href=
"#code-example" title=
"Permanent link">#
</a></h3>
3124 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3125 <span class=
"normal"> 2</span>
3126 <span class=
"normal"> 3</span>
3127 <span class=
"normal"> 4</span>
3128 <span class=
"normal"> 5</span>
3129 <span class=
"normal"> 6</span>
3130 <span class=
"normal"> 7</span>
3131 <span class=
"normal"> 8</span>
3132 <span class=
"normal"> 9</span>
3133 <span class=
"normal">10</span>
3134 <span class=
"normal">11</span>
3135 <span class=
"normal">12</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"p"><</span><span class=
"nt">button
</span> <span class=
"na">id
</span><span class=
"o">=
</span><span class=
"s">"showMyDialog
"</span><span class=
"p">></span>Show the dialog
<span class=
"p"></
</span><span class=
"nt">button
</span><span class=
"p">></span>
3137 <span class=
"p"><</span><span class=
"nt">template
</span> <span class=
"na">id
</span><span class=
"o">=
</span><span class=
"s">"myDialog
"</span><span class=
"p">></span>
3138 <span class=
"p"><</span><span class=
"nt">dl
</span><span class=
"p">></span>
3139 <span class=
"p"><</span><span class=
"nt">dt
</span><span class=
"p">></span>
3140 <span class=
"p"><</span><span class=
"nt">label
</span> <span class=
"na">for
</span><span class=
"o">=
</span><span class=
"s">"myInput
"</span><span class=
"p">></span>Title
<span class=
"p"></
</span><span class=
"nt">label
</span><span class=
"p">></span>
3141 <span class=
"p"></
</span><span class=
"nt">dt
</span><span class=
"p">></span>
3142 <span class=
"p"><</span><span class=
"nt">dd
</span><span class=
"p">></span>
3143 <span class=
"p"><</span><span class=
"nt">input
</span> <span class=
"na">type
</span><span class=
"o">=
</span><span class=
"s">"text
"</span> <span class=
"na">name
</span><span class=
"o">=
</span><span class=
"s">"myInput
"</span> <span class=
"na">id
</span><span class=
"o">=
</span><span class=
"s">"myInput
"</span> <span class=
"na">value
</span><span class=
"o">=
</span><span class=
"s">""</span> <span class=
"na">required
</span> <span class=
"p">/
></span>
3144 <span class=
"p"></
</span><span class=
"nt">dd
</span><span class=
"p">></span>
3145 <span class=
"p"></
</span><span class=
"nt">dl
</span><span class=
"p">></span>
3146 <span class=
"p"></
</span><span class=
"nt">template
</span><span class=
"p">></span>
3147 </code></pre></div></td></tr></table></div>
3148 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3149 <span class=
"normal">2</span>
3150 <span class=
"normal">3</span>
3151 <span class=
"normal">4</span>
3152 <span class=
"normal">5</span>
3153 <span class=
"normal">6</span>
3154 <span class=
"normal">7</span>
3155 <span class=
"normal">8</span>
3156 <span class=
"normal">9</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">getElementById
</span><span class=
"p">(
</span><span class=
"s2">"showMyDialog
"</span><span class=
"p">)
</span><span class=
"o">!
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"click
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3157 <span class=
"w"> </span><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialogFactory
</span><span class=
"p">().
</span><span class=
"nx">fromId
</span><span class=
"p">(
</span><span class=
"s2">"myDialog
"</span><span class=
"p">).
</span><span class=
"nx">asPrompt
</span><span class=
"p">();
</span>
3159 <span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"primary
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3160 <span class=
"w"> </span><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">myInput
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">getElementById
</span><span class=
"p">(
</span><span class=
"s2">"myInput
"</span><span class=
"p">);
</span>
3162 <span class=
"w"> </span><span class=
"nx">console
</span><span class=
"p">.
</span><span class=
"nx">log
</span><span class=
"p">(
</span><span class=
"s2">"Provided title:
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"nx">myInput
</span><span class=
"p">.
</span><span class=
"nx">value
</span><span class=
"p">.
</span><span class=
"nx">trim
</span><span class=
"p">());
</span>
3163 <span class=
"w"> </span><span class=
"p">});
</span>
3164 <span class=
"p">});
</span>
3165 </code></pre></div></td></tr></table></div>
3166 <h3 id=
"custom-buttons">Custom Buttons
<a class=
"headerlink" href=
"#custom-buttons" title=
"Permanent link">#
</a></h3>
3167 <p>The
<code>asPrompt()
</code> call permits some level of customization of the form control buttons.
</p>
3168 <h4 id=
"customizing-the-primary-button">Customizing the Primary Button
<a class=
"headerlink" href=
"#customizing-the-primary-button" title=
"Permanent link">#
</a></h4>
3169 <p>The
<code>primary
</code> option is used to change the default label of the primary button.
</p>
3170 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3171 <span class=
"normal">2</span>
3172 <span class=
"normal">3</span>
3173 <span class=
"normal">4</span>
3174 <span class=
"normal">5</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialogFactory
</span><span class=
"p">()
</span>
3175 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">fromId
</span><span class=
"p">(
</span><span class=
"s2">"myDialog
"</span><span class=
"p">)
</span>
3176 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asPrompt
</span><span class=
"p">({
</span>
3177 <span class=
"w"> </span><span class=
"nx">primary
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"kt">Language.get
</span><span class=
"p">(
</span><span class=
"s2">"wcf.dialog.button.primary
"</span><span class=
"p">),
</span>
3178 <span class=
"w"> </span><span class=
"p">});
</span>
3179 </code></pre></div></td></tr></table></div>
3180 <h3 id=
"adding-an-extra-button">Adding an Extra Button
<a class=
"headerlink" href=
"#adding-an-extra-button" title=
"Permanent link">#
</a></h3>
3181 <p>The extra button has no default label, enabling it requires you to provide a readable name.
</p>
3182 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3183 <span class=
"normal"> 2</span>
3184 <span class=
"normal"> 3</span>
3185 <span class=
"normal"> 4</span>
3186 <span class=
"normal"> 5</span>
3187 <span class=
"normal"> 6</span>
3188 <span class=
"normal"> 7</span>
3189 <span class=
"normal"> 8</span>
3190 <span class=
"normal"> 9</span>
3191 <span class=
"normal">10</span>
3192 <span class=
"normal">11</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialogFactory
</span><span class=
"p">()
</span>
3193 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">fromId
</span><span class=
"p">(
</span><span class=
"s2">"myDialog
"</span><span class=
"p">)
</span>
3194 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asPrompt
</span><span class=
"p">({
</span>
3195 <span class=
"w"> </span><span class=
"nx">extra
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"kt">Language.get
</span><span class=
"p">(
</span><span class=
"s2">"my.extra.button.name
"</span><span class=
"p">),
</span>
3196 <span class=
"w"> </span><span class=
"p">});
</span>
3198 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"extra
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3199 <span class=
"w"> </span><span class=
"c1">// The extra button does nothing on its own. If you want
</span>
3200 <span class=
"w"> </span><span class=
"c1">// to close the button after performing an action you’ll
</span>
3201 <span class=
"w"> </span><span class=
"c1">// need to call `dialog.close()` yourself.
</span>
3202 <span class=
"p">});
</span>
3203 </code></pre></div></td></tr></table></div>
3204 <h2 id=
"interacting-with-dialogs">Interacting with dialogs
<a class=
"headerlink" href=
"#interacting-with-dialogs" title=
"Permanent link">#
</a></h2>
3205 <p>Dialogs are represented by the
<code><woltlab-core-dialog
></code> element that exposes a set of properties and methods to interact with it.
</p>
3206 <h3 id=
"opening-and-closing-dialogs">Opening and Closing Dialogs
<a class=
"headerlink" href=
"#opening-and-closing-dialogs" title=
"Permanent link">#
</a></h3>
3207 <p>You can open a dialog through the
<code>.show()
</code> method that expects the title of the dialog as the only argument.
3208 Check the
<code>.open
</code> property to determine if the dialog is currently open.
</p>
3209 <p>Programmatically closing a dialog is possibly through
<code>.close()
</code>.
</p>
3210 <h3 id=
"accessing-the-content">Accessing the Content
<a class=
"headerlink" href=
"#accessing-the-content" title=
"Permanent link">#
</a></h3>
3211 <p>All contents of a dialog exists within a child element that can be accessed through the
<code>content
</code> property.
</p>
3212 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3213 <span class=
"normal">2</span>
3214 <span class=
"normal">3</span>
3215 <span class=
"normal">4</span>
3216 <span class=
"normal">5</span>
3217 <span class=
"normal">6</span>
3218 <span class=
"normal">7</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"c1">// Add some text to the dialog.
</span>
3219 <span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">p
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">createElement
</span><span class=
"p">(
</span><span class=
"s2">"p
"</span><span class=
"p">);
</span>
3220 <span class=
"nx">p
</span><span class=
"p">.
</span><span class=
"nx">textContent
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"s2">"Hello World
"</span><span class=
"p">;
</span>
3221 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">content
</span><span class=
"p">.
</span><span class=
"nx">append
</span><span class=
"p">(
</span><span class=
"nx">p
</span><span class=
"p">);
</span>
3223 <span class=
"c1">// Find a text input inside the dialog.
</span>
3224 <span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">input
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">content
</span><span class=
"p">.
</span><span class=
"nx">querySelector
</span><span class=
"p">(
</span><span class=
"s1">'input[type=
"text
"]
'</span><span class=
"p">);
</span>
3225 </code></pre></div></td></tr></table></div>
3226 <h3 id=
"disabling-the-submit-button-of-a-dialog">Disabling the Submit Button of a Dialog
<a class=
"headerlink" href=
"#disabling-the-submit-button-of-a-dialog" title=
"Permanent link">#
</a></h3>
3227 <p>You can prevent the dialog submission until a condition is met, allowing you to dynamically enable or disable the button at will.
</p>
3228 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3229 <span class=
"normal">2</span>
3230 <span class=
"normal">3</span>
3231 <span class=
"normal">4</span>
3232 <span class=
"normal">5</span>
3233 <span class=
"normal">6</span>
3234 <span class=
"normal">7</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">incomplete
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"kc">false
</span><span class=
"p">;
</span>
3236 <span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">checkbox
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">content
</span><span class=
"p">.
</span><span class=
"nx">querySelector
</span><span class=
"p">(
</span><span class=
"s1">'input[type=
"checkbox
"]
'</span><span class=
"p">)
</span><span class=
"o">!
</span><span class=
"p">;
</span>
3237 <span class=
"nx">checkbox
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"change
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3238 <span class=
"w"> </span><span class=
"c1">// Block the dialog submission unless the checkbox is checked.
</span>
3239 <span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">incomplete
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"o">!
</span><span class=
"nx">checkbox
</span><span class=
"p">.
</span><span class=
"nx">checked
</span><span class=
"p">;
</span>
3240 <span class=
"p">});
</span>
3241 </code></pre></div></td></tr></table></div>
3242 <h3 id=
"managing-an-instance-of-a-dialog">Managing an Instance of a Dialog
<a class=
"headerlink" href=
"#managing-an-instance-of-a-dialog" title=
"Permanent link">#
</a></h3>
3243 <p>The old API for dialogs implicitly kept track of the instance by binding it to the
<code>this
</code> parameter as seen in calls like
<code>UiDialog.open(this);
</code>.
3244 The new implementation requires to you to keep track of the dialog on your own.
</p>
3245 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3246 <span class=
"normal"> 2</span>
3247 <span class=
"normal"> 3</span>
3248 <span class=
"normal"> 4</span>
3249 <span class=
"normal"> 5</span>
3250 <span class=
"normal"> 6</span>
3251 <span class=
"normal"> 7</span>
3252 <span class=
"normal"> 8</span>
3253 <span class=
"normal"> 9</span>
3254 <span class=
"normal">10</span>
3255 <span class=
"normal">11</span>
3256 <span class=
"normal">12</span>
3257 <span class=
"normal">13</span>
3258 <span class=
"normal">14</span>
3259 <span class=
"normal">15</span>
3260 <span class=
"normal">16</span>
3261 <span class=
"normal">17</span>
3262 <span class=
"normal">18</span>
3263 <span class=
"normal">19</span>
3264 <span class=
"normal">20</span>
3265 <span class=
"normal">21</span>
3266 <span class=
"normal">22</span>
3267 <span class=
"normal">23</span>
3268 <span class=
"normal">24</span>
3269 <span class=
"normal">25</span>
3270 <span class=
"normal">26</span>
3271 <span class=
"normal">27</span>
3272 <span class=
"normal">28</span>
3273 <span class=
"normal">29</span>
3274 <span class=
"normal">30</span>
3275 <span class=
"normal">31</span>
3276 <span class=
"normal">32</span>
3277 <span class=
"normal">33</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"kd">class
</span><span class=
"w"> </span><span class=
"nx">MyComponent
</span><span class=
"w"> </span><span class=
"p">{
</span>
3278 <span class=
"w"> </span><span class=
"err">#
</span><span class=
"nx">dialog?
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"kt">WoltlabCoreDialogElement
</span><span class=
"p">;
</span>
3280 <span class=
"w"> </span><span class=
"kr">constructor
</span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">{
</span>
3281 <span class=
"w"> </span><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">button
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">querySelector
</span><span class=
"p">(
</span><span class=
"s2">".myButton
"</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"kr">as
</span><span class=
"w"> </span><span class=
"nx">HTMLButtonElement
</span><span class=
"p">;
</span>
3282 <span class=
"w"> </span><span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"click
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3283 <span class=
"w"> </span><span class=
"k">this
</span><span class=
"p">.
</span><span class=
"err">#
</span><span class=
"nx">showGreeting
</span><span class=
"p">(
</span><span class=
"nx">button
</span><span class=
"p">.
</span><span class=
"nx">dataset
</span><span class=
"p">.
</span><span class=
"nx">name
</span><span class=
"p">);
</span>
3284 <span class=
"w"> </span><span class=
"p">});
</span>
3285 <span class=
"w"> </span><span class=
"p">}
</span>
3287 <span class=
"w"> </span><span class=
"err">#
</span><span class=
"nx">showGreeting
</span><span class=
"p">(
</span><span class=
"nx">name
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"kt">string
</span><span class=
"w"> </span><span class=
"o">|
</span><span class=
"w"> </span><span class=
"kc">undefined
</span><span class=
"p">)
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"ow">void
</span><span class=
"w"> </span><span class=
"p">{
</span>
3288 <span class=
"w"> </span><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"k">this
</span><span class=
"p">.
</span><span class=
"err">#
</span><span class=
"nx">getDialog
</span><span class=
"p">();
</span>
3290 <span class=
"w"> </span><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">p
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">content
</span><span class=
"p">.
</span><span class=
"nx">querySelector
</span><span class=
"p">(
</span><span class=
"s2">"p
"</span><span class=
"p">)
</span><span class=
"o">!
</span><span class=
"p">;
</span>
3291 <span class=
"w"> </span><span class=
"k">if
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">name
</span><span class=
"w"> </span><span class=
"o">===
</span><span class=
"w"> </span><span class=
"kc">undefined
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">{
</span>
3292 <span class=
"w"> </span><span class=
"nx">p
</span><span class=
"p">.
</span><span class=
"nx">textContent
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"s2">"Hello World
"</span><span class=
"p">;
</span>
3293 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"> </span><span class=
"k">else
</span><span class=
"w"> </span><span class=
"p">{
</span>
3294 <span class=
"w"> </span><span class=
"nx">p
</span><span class=
"p">.
</span><span class=
"nx">textContent
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"sb">`Hello
</span><span class=
"si">${
</span><span class=
"nx">name
</span><span class=
"si">}
</span><span class=
"sb">`
</span><span class=
"p">;
</span>
3295 <span class=
"w"> </span><span class=
"p">}
</span>
3297 <span class=
"w"> </span><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">show
</span><span class=
"p">(
</span><span class=
"s2">"Greetings!
"</span><span class=
"p">);
</span>
3298 <span class=
"w"> </span><span class=
"p">}
</span>
3300 <span class=
"w"> </span><span class=
"err">#
</span><span class=
"nx">getDialog
</span><span class=
"p">()
</span><span class=
"o">:
</span><span class=
"w"> </span><span class=
"nx">WoltlabCoreDialogElement
</span><span class=
"w"> </span><span class=
"p">{
</span>
3301 <span class=
"w"> </span><span class=
"k">if
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"k">this
</span><span class=
"p">.
</span><span class=
"err">#
</span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">===
</span><span class=
"w"> </span><span class=
"kc">undefined
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">{
</span>
3302 <span class=
"w"> </span><span class=
"k">this
</span><span class=
"p">.
</span><span class=
"err">#
</span><span class=
"nx">dialog
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nx">dialogFactory
</span><span class=
"p">()
</span>
3303 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">fromHtml
</span><span class=
"p">(
</span><span class=
"s2">"<p
>Hello from MyComponent
</p
>"</span><span class=
"p">)
</span>
3304 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">withoutControls
</span><span class=
"p">();
</span>
3305 <span class=
"w"> </span><span class=
"p">}
</span>
3307 <span class=
"w"> </span><span class=
"k">return
</span><span class=
"w"> </span><span class=
"k">this
</span><span class=
"p">.
</span><span class=
"err">#
</span><span class=
"nx">dialog
</span><span class=
"p">;
</span>
3308 <span class=
"w"> </span><span class=
"p">}
</span>
3309 <span class=
"p">}
</span>
3310 </code></pre></div></td></tr></table></div>
3311 <h3 id=
"event-access">Event Access
<a class=
"headerlink" href=
"#event-access" title=
"Permanent link">#
</a></h3>
3312 <p>You can bind event listeners to specialized events to get notified of events and to modify its behavior.
</p>
3313 <h4 id=
"afterclose"><code>afterClose
</code><a class=
"headerlink" href=
"#afterclose" title=
"Permanent link">#
</a></h4>
3314 <p><em>This event cannot be canceled.
</em></p>
3315 <p>Fires when the dialog has closed.
</p>
3316 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3317 <span class=
"normal">2</span>
3318 <span class=
"normal">3</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"afterClose
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3319 <span class=
"w"> </span><span class=
"c1">// Dialog was closed.
</span>
3320 <span class=
"p">});
</span>
3321 </code></pre></div></td></tr></table></div>
3322 <h4 id=
"close"><code>close
</code><a class=
"headerlink" href=
"#close" title=
"Permanent link">#
</a></h4>
3323 <p>Fires when the dialog is about to close.
</p>
3324 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3325 <span class=
"normal">2</span>
3326 <span class=
"normal">3</span>
3327 <span class=
"normal">4</span>
3328 <span class=
"normal">5</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"close
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">event
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3329 <span class=
"w"> </span><span class=
"k">if
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">someCondition
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">{
</span>
3330 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span>
3331 <span class=
"w"> </span><span class=
"p">}
</span>
3332 <span class=
"p">});
</span>
3333 </code></pre></div></td></tr></table></div>
3334 <h4 id=
"cancel"><code>cancel
</code><a class=
"headerlink" href=
"#cancel" title=
"Permanent link">#
</a></h4>
3335 <p>Fires only when there is a “Cancel” button and the user has either pressed that button or clicked on the modal backdrop.
3336 The dialog will close if the event is not canceled.
</p>
3337 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3338 <span class=
"normal">2</span>
3339 <span class=
"normal">3</span>
3340 <span class=
"normal">4</span>
3341 <span class=
"normal">5</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"cancel
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">event
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3342 <span class=
"w"> </span><span class=
"k">if
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">someCondition
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">{
</span>
3343 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span>
3344 <span class=
"w"> </span><span class=
"p">}
</span>
3345 <span class=
"p">});
</span>
3346 </code></pre></div></td></tr></table></div>
3347 <h4 id=
"extra"><code>extra
</code><a class=
"headerlink" href=
"#extra" title=
"Permanent link">#
</a></h4>
3348 <p><em>This event cannot be canceled.
</em></p>
3349 <p>Fires when an extra button is present and the button was clicked by the user.
3350 This event does nothing on its own and is supported for dialogs of type “Prompt” only.
</p>
3351 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3352 <span class=
"normal">2</span>
3353 <span class=
"normal">3</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"extra
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3354 <span class=
"w"> </span><span class=
"c1">// The extra button was clicked.
</span>
3355 <span class=
"p">});
</span>
3356 </code></pre></div></td></tr></table></div>
3357 <h4 id=
"primary"><code>primary
</code><a class=
"headerlink" href=
"#primary" title=
"Permanent link">#
</a></h4>
3358 <p><em>This event cannot be canceled.
</em></p>
3359 <p>Fires only when there is a primary action button and the user has either pressed that button or submitted the form through keyboard controls.
</p>
3360 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3361 <span class=
"normal">2</span>
3362 <span class=
"normal">3</span>
3363 <span class=
"normal">4</span>
3364 <span class=
"normal">5</span>
3365 <span class=
"normal">6</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"primary
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3366 <span class=
"w"> </span><span class=
"c1">// The primary action button was clicked or the
</span>
3367 <span class=
"w"> </span><span class=
"c1">// form was submitted through keyboard controls.
</span>
3368 <span class=
"w"> </span><span class=
"c1">//
</span>
3369 <span class=
"w"> </span><span class=
"c1">// The `validate` event has completed successfully.
</span>
3370 <span class=
"p">});
</span>
3371 </code></pre></div></td></tr></table></div>
3372 <h4 id=
"validate"><code>validate
</code><a class=
"headerlink" href=
"#validate" title=
"Permanent link">#
</a></h4>
3373 <p>Fires only when there is a form and the user has pressed the primary action button or submitted the form through keyboard controls.
3374 Canceling this event is interpreted as a form validation failure.
</p>
3375 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3376 <span class=
"normal"> 2</span>
3377 <span class=
"normal"> 3</span>
3378 <span class=
"normal"> 4</span>
3379 <span class=
"normal"> 5</span>
3380 <span class=
"normal"> 6</span>
3381 <span class=
"normal"> 7</span>
3382 <span class=
"normal"> 8</span>
3383 <span class=
"normal"> 9</span>
3384 <span class=
"normal">10</span></pre></div></td><td class=
"code"><div><pre><span></span><code><span class=
"kd">const
</span><span class=
"w"> </span><span class=
"nx">input
</span><span class=
"w"> </span><span class=
"o">=
</span><span class=
"w"> </span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">createElement
</span><span class=
"p">(
</span><span class=
"s2">"input
"</span><span class=
"p">);
</span>
3385 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">content
</span><span class=
"p">.
</span><span class=
"nx">append
</span><span class=
"p">(
</span><span class=
"nx">input
</span><span class=
"p">);
</span>
3387 <span class=
"nx">dialog
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span><span class=
"p">(
</span><span class=
"s2">"validate
"</span><span class=
"p">,
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">event
</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">=
></span><span class=
"w"> </span><span class=
"p">{
</span>
3388 <span class=
"w"> </span><span class=
"k">if
</span><span class=
"w"> </span><span class=
"p">(
</span><span class=
"nx">input
</span><span class=
"p">.
</span><span class=
"nx">value
</span><span class=
"p">.
</span><span class=
"nx">trim
</span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"o">===
</span><span class=
"w"> </span><span class=
"s2">""</span><span class=
"p">)
</span><span class=
"w"> </span><span class=
"p">{
</span>
3389 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span>
3391 <span class=
"w"> </span><span class=
"c1">// Display an inline error message.
</span>
3392 <span class=
"w"> </span><span class=
"p">}
</span>
3393 <span class=
"p">});
</span>
3394 </code></pre></div></td></tr></table></div>
3397 <div class=
"md-source-file">
3419 <footer class=
"md-footer">
3421 <div class=
"md-footer-meta md-typeset">
3422 <div class=
"md-footer-meta__inner md-grid">
3423 <div class=
"md-copyright">
3425 <div class=
"md-copyright__highlight">
3426 Copyright ©
2020 WoltLab GmbH
3431 <a href=
"https://squidfunk.github.io/mkdocs-material/" target=
"_blank" rel=
"noopener">
3437 <div class=
"md-copyright">
3438 <a href=
"https://www.woltlab.com/legal-notice/">Legal Notice
</a>
3439 <a href=
"https://www.woltlab.com/privacy-policy/">Privacy Policy
</a>
3447 <div class=
"md-dialog" data-md-component=
"dialog">
3448 <div class=
"md-dialog__inner md-typeset"></div>
3451 <script id=
"__config" type=
"application/json">{
"base":
"../..",
"features": [
"navigation.tracking"],
"search":
"../../assets/javascripts/workers/search.208ed371.min.js",
"translations": {
"clipboard.copied":
"Copied to clipboard",
"clipboard.copy":
"Copy to clipboard",
"search.result.more.one":
"1 more on this page",
"search.result.more.other":
"# more on this page",
"search.result.none":
"No matching documents",
"search.result.one":
"1 matching document",
"search.result.other":
"# matching documents",
"search.result.placeholder":
"Type to start searching",
"search.result.term.missing":
"Missing",
"select.version":
"Select version"},
"version": {
"provider":
"mike"}}
</script>
3454 <script src=
"../../assets/javascripts/bundle.b4d07000.min.js"></script>