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/">
13 <link rel=
"icon" href=
"../../assets/default.favicon.ico">
14 <meta name=
"generator" content=
"mkdocs-1.4.2, mkdocs-material-8.5.10">
18 <title>Dialog - WoltLab Suite Documentation
</title>
22 <link rel=
"stylesheet" href=
"../../assets/stylesheets/main.975780f9.min.css">
25 <link rel=
"stylesheet" href=
"../../assets/stylesheets/palette.2505c338.min.css">
29 <meta name=
"theme-color" content=
"#009485">
40 <link rel=
"stylesheet" href=
"../../stylesheets/extra.css">
42 <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>
57 <body dir=
"ltr" data-md-color-scheme=
"default" data-md-color-primary=
"teal" data-md-color-accent=
"">
61 <input class=
"md-toggle" data-md-toggle=
"drawer" type=
"checkbox" id=
"__drawer" autocomplete=
"off">
62 <input class=
"md-toggle" data-md-toggle=
"search" type=
"checkbox" id=
"__search" autocomplete=
"off">
63 <label class=
"md-overlay" for=
"__drawer"></label>
64 <div data-md-component=
"skip">
67 <a href=
"#dialogs-javascript-api" class=
"md-skip">
72 <div data-md-component=
"announce">
74 <aside class=
"md-banner">
75 <div class=
"md-banner__inner md-grid md-typeset">
78 <a href=
"https://www.woltlab.com">Back to
<strong>woltlab.com
</strong></a>
86 <div data-md-component=
"outdated" hidden
>
93 <header class=
"md-header" data-md-component=
"header">
94 <nav class=
"md-header__inner md-grid" aria-label=
"Header">
95 <a href=
"../.." title=
"WoltLab Suite Documentation" class=
"md-header__button md-logo" aria-label=
"WoltLab Suite Documentation" data-md-component=
"logo">
97 <img src=
"../../assets/logo.png" alt=
"logo">
100 <label class=
"md-header__button md-icon" for=
"__drawer">
101 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
103 <div class=
"md-header__title" data-md-component=
"header-title">
104 <div class=
"md-header__ellipsis">
105 <div class=
"md-header__topic">
106 <span class=
"md-ellipsis">
107 WoltLab Suite Documentation
110 <div class=
"md-header__topic" data-md-component=
"header-topic">
111 <span class=
"md-ellipsis">
122 <label class=
"md-header__button md-icon" for=
"__search">
123 <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>
125 <div class=
"md-search" data-md-component=
"search" role=
"dialog">
126 <label class=
"md-search__overlay" for=
"__search"></label>
127 <div class=
"md-search__inner" role=
"search">
128 <form class=
"md-search__form" name=
"search">
129 <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
>
130 <label class=
"md-search__icon md-icon" for=
"__search">
131 <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>
132 <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>
134 <nav class=
"md-search__options" aria-label=
"Search">
136 <button type=
"reset" class=
"md-search__icon md-icon" title=
"Clear" aria-label=
"Clear" tabindex=
"-1">
137 <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>
142 <div class=
"md-search__output">
143 <div class=
"md-search__scrollwrap" data-md-scrollfix
>
144 <div class=
"md-search-result" data-md-component=
"search-result">
145 <div class=
"md-search-result__meta">
148 <ol class=
"md-search-result__list"></ol>
156 <div class=
"md-header__source">
157 <a href=
"https://github.com/WoltLab/docs.woltlab.com/" title=
"Go to repository" class=
"md-source" data-md-component=
"source">
158 <div class=
"md-source__icon md-icon">
160 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 448 512"><!--! Font Awesome Free 6.2.1 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 2022 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>
162 <div class=
"md-source__repository">
172 <div class=
"md-container" data-md-component=
"container">
179 <main class=
"md-main" data-md-component=
"main">
180 <div class=
"md-main__inner md-grid">
184 <div class=
"md-sidebar md-sidebar--primary" data-md-component=
"sidebar" data-md-type=
"navigation" >
185 <div class=
"md-sidebar__scrollwrap">
186 <div class=
"md-sidebar__inner">
190 <nav class=
"md-nav md-nav--primary" aria-label=
"Navigation" data-md-level=
"0">
191 <label class=
"md-nav__title" for=
"__drawer">
192 <a href=
"../.." title=
"WoltLab Suite Documentation" class=
"md-nav__button md-logo" aria-label=
"WoltLab Suite Documentation" data-md-component=
"logo">
194 <img src=
"../../assets/logo.png" alt=
"logo">
197 WoltLab Suite Documentation
200 <div class=
"md-nav__source">
201 <a href=
"https://github.com/WoltLab/docs.woltlab.com/" title=
"Go to repository" class=
"md-source" data-md-component=
"source">
202 <div class=
"md-source__icon md-icon">
204 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 448 512"><!--! Font Awesome Free 6.2.1 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 2022 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>
206 <div class=
"md-source__repository">
212 <ul class=
"md-nav__list" data-md-scrollfix
>
221 <li class=
"md-nav__item">
222 <a href=
"../../getting-started/" class=
"md-nav__link">
237 <li class=
"md-nav__item md-nav__item--nested">
240 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_2" type=
"checkbox" id=
"__nav_2" >
245 <label class=
"md-nav__link" for=
"__nav_2">
247 <span class=
"md-nav__icon md-icon"></span>
250 <nav class=
"md-nav" aria-label=
"PHP API" data-md-level=
"1">
251 <label class=
"md-nav__title" for=
"__nav_2">
252 <span class=
"md-nav__icon md-icon"></span>
255 <ul class=
"md-nav__list" data-md-scrollfix
>
262 <li class=
"md-nav__item">
263 <a href=
"../../php/pages/" class=
"md-nav__link">
276 <li class=
"md-nav__item">
277 <a href=
"../../php/database-objects/" class=
"md-nav__link">
290 <li class=
"md-nav__item">
291 <a href=
"../../php/database-access/" class=
"md-nav__link">
304 <li class=
"md-nav__item">
305 <a href=
"../../php/exceptions/" class=
"md-nav__link">
319 <li class=
"md-nav__item md-nav__item--nested">
322 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_2_5" type=
"checkbox" id=
"__nav_2_5" >
327 <label class=
"md-nav__link" for=
"__nav_2_5">
329 <span class=
"md-nav__icon md-icon"></span>
332 <nav class=
"md-nav" aria-label=
"API" data-md-level=
"2">
333 <label class=
"md-nav__title" for=
"__nav_2_5">
334 <span class=
"md-nav__icon md-icon"></span>
337 <ul class=
"md-nav__list" data-md-scrollfix
>
345 <li class=
"md-nav__item md-nav__item--nested">
348 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_2_5_1" type=
"checkbox" id=
"__nav_2_5_1" >
353 <label class=
"md-nav__link" for=
"__nav_2_5_1">
355 <span class=
"md-nav__icon md-icon"></span>
358 <nav class=
"md-nav" aria-label=
"Caches" data-md-level=
"3">
359 <label class=
"md-nav__title" for=
"__nav_2_5_1">
360 <span class=
"md-nav__icon md-icon"></span>
363 <ul class=
"md-nav__list" data-md-scrollfix
>
370 <li class=
"md-nav__item">
371 <a href=
"../../php/api/caches/" class=
"md-nav__link">
384 <li class=
"md-nav__item">
385 <a href=
"../../php/api/caches_persistent-caches/" class=
"md-nav__link">
398 <li class=
"md-nav__item">
399 <a href=
"../../php/api/caches_runtime-caches/" class=
"md-nav__link">
419 <li class=
"md-nav__item">
420 <a href=
"../../php/api/comments/" class=
"md-nav__link">
433 <li class=
"md-nav__item">
434 <a href=
"../../php/api/cronjobs/" class=
"md-nav__link">
447 <li class=
"md-nav__item">
448 <a href=
"../../php/api/events/" class=
"md-nav__link">
462 <li class=
"md-nav__item md-nav__item--nested">
465 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_2_5_5" type=
"checkbox" id=
"__nav_2_5_5" >
470 <label class=
"md-nav__link" for=
"__nav_2_5_5">
472 <span class=
"md-nav__icon md-icon"></span>
475 <nav class=
"md-nav" aria-label=
"Form Builder" data-md-level=
"3">
476 <label class=
"md-nav__title" for=
"__nav_2_5_5">
477 <span class=
"md-nav__icon md-icon"></span>
480 <ul class=
"md-nav__list" data-md-scrollfix
>
487 <li class=
"md-nav__item">
488 <a href=
"../../php/api/form_builder/overview/" class=
"md-nav__link">
501 <li class=
"md-nav__item">
502 <a href=
"../../php/api/form_builder/structure/" class=
"md-nav__link">
515 <li class=
"md-nav__item">
516 <a href=
"../../php/api/form_builder/form_fields/" class=
"md-nav__link">
529 <li class=
"md-nav__item">
530 <a href=
"../../php/api/form_builder/validation_data/" class=
"md-nav__link">
543 <li class=
"md-nav__item">
544 <a href=
"../../php/api/form_builder/dependencies/" class=
"md-nav__link">
564 <li class=
"md-nav__item">
565 <a href=
"../../php/api/package_installation_plugins/" class=
"md-nav__link">
566 Package Installation Plugins
578 <li class=
"md-nav__item">
579 <a href=
"../../php/api/user_activity_points/" class=
"md-nav__link">
592 <li class=
"md-nav__item">
593 <a href=
"../../php/api/user_notifications/" class=
"md-nav__link">
606 <li class=
"md-nav__item">
607 <a href=
"../../php/api/sitemaps/" class=
"md-nav__link">
627 <li class=
"md-nav__item">
628 <a href=
"../../php/code-style/" class=
"md-nav__link">
641 <li class=
"md-nav__item">
642 <a href=
"../../php/apps/" class=
"md-nav__link">
655 <li class=
"md-nav__item">
656 <a href=
"../../php/gdpr/" class=
"md-nav__link">
678 <li class=
"md-nav__item md-nav__item--nested">
681 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_3" type=
"checkbox" id=
"__nav_3" >
686 <label class=
"md-nav__link" for=
"__nav_3">
687 Languages, Templates & CSS
688 <span class=
"md-nav__icon md-icon"></span>
691 <nav class=
"md-nav" aria-label=
"Languages, Templates & CSS" data-md-level=
"1">
692 <label class=
"md-nav__title" for=
"__nav_3">
693 <span class=
"md-nav__icon md-icon"></span>
694 Languages, Templates & CSS
696 <ul class=
"md-nav__list" data-md-scrollfix
>
703 <li class=
"md-nav__item">
704 <a href=
"../../view/languages/" class=
"md-nav__link">
717 <li class=
"md-nav__item">
718 <a href=
"../../view/templates/" class=
"md-nav__link">
731 <li class=
"md-nav__item">
732 <a href=
"../../view/template-plugins/" class=
"md-nav__link">
745 <li class=
"md-nav__item">
746 <a href=
"../../view/css/" class=
"md-nav__link">
770 <li class=
"md-nav__item md-nav__item--active md-nav__item--nested">
773 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_4" type=
"checkbox" id=
"__nav_4" checked
>
778 <label class=
"md-nav__link" for=
"__nav_4">
779 TypeScript and JavaScript API
780 <span class=
"md-nav__icon md-icon"></span>
783 <nav class=
"md-nav" aria-label=
"TypeScript and JavaScript API" data-md-level=
"1">
784 <label class=
"md-nav__title" for=
"__nav_4">
785 <span class=
"md-nav__icon md-icon"></span>
786 TypeScript and JavaScript API
788 <ul class=
"md-nav__list" data-md-scrollfix
>
795 <li class=
"md-nav__item">
796 <a href=
"../general-usage/" class=
"md-nav__link">
809 <li class=
"md-nav__item">
810 <a href=
"../typescript/" class=
"md-nav__link">
826 <li class=
"md-nav__item md-nav__item--active md-nav__item--nested">
829 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_4_3" type=
"checkbox" id=
"__nav_4_3" checked
>
834 <label class=
"md-nav__link" for=
"__nav_4_3">
836 <span class=
"md-nav__icon md-icon"></span>
839 <nav class=
"md-nav" aria-label=
"Components" data-md-level=
"2">
840 <label class=
"md-nav__title" for=
"__nav_4_3">
841 <span class=
"md-nav__icon md-icon"></span>
844 <ul class=
"md-nav__list" data-md-scrollfix
>
851 <li class=
"md-nav__item">
852 <a href=
"../components_confirmation/" class=
"md-nav__link">
867 <li class=
"md-nav__item md-nav__item--active">
869 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"toc" type=
"checkbox" id=
"__toc">
875 <label class=
"md-nav__link md-nav__link--active" for=
"__toc">
877 <span class=
"md-nav__icon md-icon"></span>
880 <a href=
"./" class=
"md-nav__link md-nav__link--active">
886 <nav class=
"md-nav md-nav--secondary" aria-label=
"Table of contents">
893 <label class=
"md-nav__title" for=
"__toc">
894 <span class=
"md-nav__icon md-icon"></span>
897 <ul class=
"md-nav__list" data-md-component=
"toc" data-md-scrollfix
>
899 <li class=
"md-nav__item">
900 <a href=
"#quickstart" class=
"md-nav__link">
906 <li class=
"md-nav__item">
907 <a href=
"#dialogs-without-controls" class=
"md-nav__link">
908 Dialogs Without Controls
911 <nav class=
"md-nav" aria-label=
"Dialogs Without Controls">
912 <ul class=
"md-nav__list">
914 <li class=
"md-nav__item">
915 <a href=
"#when-to-use" class=
"md-nav__link">
926 <li class=
"md-nav__item">
927 <a href=
"#alerts" class=
"md-nav__link">
931 <nav class=
"md-nav" aria-label=
"Alerts">
932 <ul class=
"md-nav__list">
934 <li class=
"md-nav__item">
935 <a href=
"#when-to-use_1" class=
"md-nav__link">
946 <li class=
"md-nav__item">
947 <a href=
"#confirmation" class=
"md-nav__link">
953 <li class=
"md-nav__item">
954 <a href=
"#prompts" class=
"md-nav__link">
958 <nav class=
"md-nav" aria-label=
"Prompts">
959 <ul class=
"md-nav__list">
961 <li class=
"md-nav__item">
962 <a href=
"#code-example" class=
"md-nav__link">
968 <li class=
"md-nav__item">
969 <a href=
"#custom-buttons" class=
"md-nav__link">
973 <nav class=
"md-nav" aria-label=
"Custom Buttons">
974 <ul class=
"md-nav__list">
976 <li class=
"md-nav__item">
977 <a href=
"#customizing-the-primary-button" class=
"md-nav__link">
978 Customizing the Primary Button
988 <li class=
"md-nav__item">
989 <a href=
"#adding-an-extra-button" class=
"md-nav__link">
990 Adding an Extra Button
1000 <li class=
"md-nav__item">
1001 <a href=
"#interacting-with-dialogs" class=
"md-nav__link">
1002 Interacting with dialogs
1005 <nav class=
"md-nav" aria-label=
"Interacting with dialogs">
1006 <ul class=
"md-nav__list">
1008 <li class=
"md-nav__item">
1009 <a href=
"#opening-and-closing-dialogs" class=
"md-nav__link">
1010 Opening and Closing Dialogs
1015 <li class=
"md-nav__item">
1016 <a href=
"#accessing-the-content" class=
"md-nav__link">
1017 Accessing the Content
1022 <li class=
"md-nav__item">
1023 <a href=
"#disabling-the-submit-button-of-a-dialog" class=
"md-nav__link">
1024 Disabling the Submit Button of a Dialog
1029 <li class=
"md-nav__item">
1030 <a href=
"#managing-an-instance-of-a-dialog" class=
"md-nav__link">
1031 Managing an Instance of a Dialog
1036 <li class=
"md-nav__item">
1037 <a href=
"#event-access" class=
"md-nav__link">
1041 <nav class=
"md-nav" aria-label=
"Event Access">
1042 <ul class=
"md-nav__list">
1044 <li class=
"md-nav__item">
1045 <a href=
"#afterclose" class=
"md-nav__link">
1051 <li class=
"md-nav__item">
1052 <a href=
"#close" class=
"md-nav__link">
1058 <li class=
"md-nav__item">
1059 <a href=
"#cancel" class=
"md-nav__link">
1065 <li class=
"md-nav__item">
1066 <a href=
"#extra" class=
"md-nav__link">
1072 <li class=
"md-nav__item">
1073 <a href=
"#primary" class=
"md-nav__link">
1079 <li class=
"md-nav__item">
1080 <a href=
"#validate" class=
"md-nav__link">
1110 <li class=
"md-nav__item">
1111 <a href=
"../components_pagination/" class=
"md-nav__link">
1132 <li class=
"md-nav__item md-nav__item--nested">
1135 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_4_4" type=
"checkbox" id=
"__nav_4_4" >
1140 <label class=
"md-nav__link" for=
"__nav_4_4">
1142 <span class=
"md-nav__icon md-icon"></span>
1145 <nav class=
"md-nav" aria-label=
"New API" data-md-level=
"2">
1146 <label class=
"md-nav__title" for=
"__nav_4_4">
1147 <span class=
"md-nav__icon md-icon"></span>
1150 <ul class=
"md-nav__list" data-md-scrollfix
>
1157 <li class=
"md-nav__item">
1158 <a href=
"../new-api_writing-a-module/" class=
"md-nav__link">
1171 <li class=
"md-nav__item">
1172 <a href=
"../new-api_core/" class=
"md-nav__link">
1185 <li class=
"md-nav__item">
1186 <a href=
"../new-api_dom/" class=
"md-nav__link">
1199 <li class=
"md-nav__item">
1200 <a href=
"../new-api_events/" class=
"md-nav__link">
1213 <li class=
"md-nav__item">
1214 <a href=
"../new-api_ajax/" class=
"md-nav__link">
1227 <li class=
"md-nav__item">
1228 <a href=
"../new-api_dialogs/" class=
"md-nav__link">
1241 <li class=
"md-nav__item">
1242 <a href=
"../new-api_browser/" class=
"md-nav__link">
1243 Browser and Screen Sizes
1255 <li class=
"md-nav__item">
1256 <a href=
"../new-api_ui/" class=
"md-nav__link">
1276 <li class=
"md-nav__item">
1277 <a href=
"../legacy-api/" class=
"md-nav__link">
1290 <li class=
"md-nav__item">
1291 <a href=
"../code-snippets/" class=
"md-nav__link">
1313 <li class=
"md-nav__item md-nav__item--nested">
1316 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_5" type=
"checkbox" id=
"__nav_5" >
1321 <label class=
"md-nav__link" for=
"__nav_5">
1323 <span class=
"md-nav__icon md-icon"></span>
1326 <nav class=
"md-nav" aria-label=
"Package Components" data-md-level=
"1">
1327 <label class=
"md-nav__title" for=
"__nav_5">
1328 <span class=
"md-nav__icon md-icon"></span>
1331 <ul class=
"md-nav__list" data-md-scrollfix
>
1338 <li class=
"md-nav__item">
1339 <a href=
"../../package/package-xml/" class=
"md-nav__link">
1353 <li class=
"md-nav__item md-nav__item--nested">
1356 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_5_2" type=
"checkbox" id=
"__nav_5_2" >
1361 <label class=
"md-nav__link" for=
"__nav_5_2">
1363 <span class=
"md-nav__icon md-icon"></span>
1366 <nav class=
"md-nav" aria-label=
"PIPs" data-md-level=
"2">
1367 <label class=
"md-nav__title" for=
"__nav_5_2">
1368 <span class=
"md-nav__icon md-icon"></span>
1371 <ul class=
"md-nav__list" data-md-scrollfix
>
1378 <li class=
"md-nav__item">
1379 <a href=
"../../package/pip/" class=
"md-nav__link">
1392 <li class=
"md-nav__item">
1393 <a href=
"../../package/pip/acl-option/" class=
"md-nav__link">
1406 <li class=
"md-nav__item">
1407 <a href=
"../../package/pip/acp-menu/" class=
"md-nav__link">
1420 <li class=
"md-nav__item">
1421 <a href=
"../../package/pip/acp-search-provider/" class=
"md-nav__link">
1434 <li class=
"md-nav__item">
1435 <a href=
"../../package/pip/acp-template/" class=
"md-nav__link">
1448 <li class=
"md-nav__item">
1449 <a href=
"../../package/pip/acp-template-delete/" class=
"md-nav__link">
1462 <li class=
"md-nav__item">
1463 <a href=
"../../package/pip/bbcode/" class=
"md-nav__link">
1476 <li class=
"md-nav__item">
1477 <a href=
"../../package/pip/box/" class=
"md-nav__link">
1490 <li class=
"md-nav__item">
1491 <a href=
"../../package/pip/clipboard-action/" class=
"md-nav__link">
1504 <li class=
"md-nav__item">
1505 <a href=
"../../package/pip/core-object/" class=
"md-nav__link">
1518 <li class=
"md-nav__item">
1519 <a href=
"../../package/pip/cronjob/" class=
"md-nav__link">
1532 <li class=
"md-nav__item">
1533 <a href=
"../../package/pip/database/" class=
"md-nav__link">
1546 <li class=
"md-nav__item">
1547 <a href=
"../../package/pip/event-listener/" class=
"md-nav__link">
1560 <li class=
"md-nav__item">
1561 <a href=
"../../package/pip/file/" class=
"md-nav__link">
1574 <li class=
"md-nav__item">
1575 <a href=
"../../package/pip/file-delete/" class=
"md-nav__link">
1588 <li class=
"md-nav__item">
1589 <a href=
"../../package/pip/language/" class=
"md-nav__link">
1602 <li class=
"md-nav__item">
1603 <a href=
"../../package/pip/media-provider/" class=
"md-nav__link">
1616 <li class=
"md-nav__item">
1617 <a href=
"../../package/pip/menu/" class=
"md-nav__link">
1630 <li class=
"md-nav__item">
1631 <a href=
"../../package/pip/menu-item/" class=
"md-nav__link">
1644 <li class=
"md-nav__item">
1645 <a href=
"../../package/pip/object-type/" class=
"md-nav__link">
1658 <li class=
"md-nav__item">
1659 <a href=
"../../package/pip/object-type-definition/" class=
"md-nav__link">
1660 objectTypeDefinition
1672 <li class=
"md-nav__item">
1673 <a href=
"../../package/pip/option/" class=
"md-nav__link">
1686 <li class=
"md-nav__item">
1687 <a href=
"../../package/pip/page/" class=
"md-nav__link">
1700 <li class=
"md-nav__item">
1701 <a href=
"../../package/pip/pip/" class=
"md-nav__link">
1714 <li class=
"md-nav__item">
1715 <a href=
"../../package/pip/script/" class=
"md-nav__link">
1728 <li class=
"md-nav__item">
1729 <a href=
"../../package/pip/smiley/" class=
"md-nav__link">
1742 <li class=
"md-nav__item">
1743 <a href=
"../../package/pip/sql/" class=
"md-nav__link">
1756 <li class=
"md-nav__item">
1757 <a href=
"../../package/pip/style/" class=
"md-nav__link">
1770 <li class=
"md-nav__item">
1771 <a href=
"../../package/pip/template/" class=
"md-nav__link">
1784 <li class=
"md-nav__item">
1785 <a href=
"../../package/pip/template-delete/" class=
"md-nav__link">
1798 <li class=
"md-nav__item">
1799 <a href=
"../../package/pip/template-listener/" class=
"md-nav__link">
1812 <li class=
"md-nav__item">
1813 <a href=
"../../package/pip/user-group-option/" class=
"md-nav__link">
1826 <li class=
"md-nav__item">
1827 <a href=
"../../package/pip/user-menu/" class=
"md-nav__link">
1840 <li class=
"md-nav__item">
1841 <a href=
"../../package/pip/user-notification-event/" class=
"md-nav__link">
1842 userNotificationEvent
1854 <li class=
"md-nav__item">
1855 <a href=
"../../package/pip/user-option/" class=
"md-nav__link">
1868 <li class=
"md-nav__item">
1869 <a href=
"../../package/pip/user-profile-menu/" class=
"md-nav__link">
1889 <li class=
"md-nav__item">
1890 <a href=
"../../package/database-php-api/" class=
"md-nav__link">
1912 <li class=
"md-nav__item md-nav__item--nested">
1915 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6" type=
"checkbox" id=
"__nav_6" >
1920 <label class=
"md-nav__link" for=
"__nav_6">
1922 <span class=
"md-nav__icon md-icon"></span>
1925 <nav class=
"md-nav" aria-label=
"Migration" data-md-level=
"1">
1926 <label class=
"md-nav__title" for=
"__nav_6">
1927 <span class=
"md-nav__icon md-icon"></span>
1930 <ul class=
"md-nav__list" data-md-scrollfix
>
1938 <li class=
"md-nav__item md-nav__item--nested">
1941 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_1" type=
"checkbox" id=
"__nav_6_1" >
1946 <label class=
"md-nav__link" for=
"__nav_6_1">
1947 From WoltLab Suite
5.5
1948 <span class=
"md-nav__icon md-icon"></span>
1951 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.5" data-md-level=
"2">
1952 <label class=
"md-nav__title" for=
"__nav_6_1">
1953 <span class=
"md-nav__icon md-icon"></span>
1954 From WoltLab Suite
5.5
1956 <ul class=
"md-nav__list" data-md-scrollfix
>
1963 <li class=
"md-nav__item">
1964 <a href=
"../../migration/wsc55/php/" class=
"md-nav__link">
1977 <li class=
"md-nav__item">
1978 <a href=
"../../migration/wsc55/javascript/" class=
"md-nav__link">
1979 TypeScript and JavaScript
1991 <li class=
"md-nav__item">
1992 <a href=
"../../migration/wsc55/templates/" class=
"md-nav__link">
2005 <li class=
"md-nav__item">
2006 <a href=
"../../migration/wsc55/icons/" class=
"md-nav__link">
2019 <li class=
"md-nav__item">
2020 <a href=
"../../migration/wsc55/dialogs/" class=
"md-nav__link">
2033 <li class=
"md-nav__item">
2034 <a href=
"../../migration/wsc55/libraries/" class=
"md-nav__link">
2035 Third Party Libraries
2047 <li class=
"md-nav__item">
2048 <a href=
"../../migration/wsc55/deprecations_removals/" class=
"md-nav__link">
2049 Deprecations and Removals
2069 <li class=
"md-nav__item md-nav__item--nested">
2072 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_2" type=
"checkbox" id=
"__nav_6_2" >
2077 <label class=
"md-nav__link" for=
"__nav_6_2">
2078 From WoltLab Suite
5.4
2079 <span class=
"md-nav__icon md-icon"></span>
2082 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.4" data-md-level=
"2">
2083 <label class=
"md-nav__title" for=
"__nav_6_2">
2084 <span class=
"md-nav__icon md-icon"></span>
2085 From WoltLab Suite
5.4
2087 <ul class=
"md-nav__list" data-md-scrollfix
>
2094 <li class=
"md-nav__item">
2095 <a href=
"../../migration/wsc54/php/" class=
"md-nav__link">
2108 <li class=
"md-nav__item">
2109 <a href=
"../../migration/wsc54/javascript/" class=
"md-nav__link">
2110 TypeScript and JavaScript
2122 <li class=
"md-nav__item">
2123 <a href=
"../../migration/wsc54/templates/" class=
"md-nav__link">
2136 <li class=
"md-nav__item">
2137 <a href=
"../../migration/wsc54/libraries/" class=
"md-nav__link">
2138 Third Party Libraries
2150 <li class=
"md-nav__item">
2151 <a href=
"../../migration/wsc54/deprecations_removals/" class=
"md-nav__link">
2152 Deprecations and Removals
2172 <li class=
"md-nav__item md-nav__item--nested">
2175 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_3" type=
"checkbox" id=
"__nav_6_3" >
2180 <label class=
"md-nav__link" for=
"__nav_6_3">
2181 From WoltLab Suite
5.3
2182 <span class=
"md-nav__icon md-icon"></span>
2185 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.3" data-md-level=
"2">
2186 <label class=
"md-nav__title" for=
"__nav_6_3">
2187 <span class=
"md-nav__icon md-icon"></span>
2188 From WoltLab Suite
5.3
2190 <ul class=
"md-nav__list" data-md-scrollfix
>
2197 <li class=
"md-nav__item">
2198 <a href=
"../../migration/wsc53/php/" class=
"md-nav__link">
2211 <li class=
"md-nav__item">
2212 <a href=
"../../migration/wsc53/session/" class=
"md-nav__link">
2213 Session Handling and Authentication
2225 <li class=
"md-nav__item">
2226 <a href=
"../../migration/wsc53/javascript/" class=
"md-nav__link">
2227 TypeScript and JavaScript
2239 <li class=
"md-nav__item">
2240 <a href=
"../../migration/wsc53/templates/" class=
"md-nav__link">
2253 <li class=
"md-nav__item">
2254 <a href=
"../../migration/wsc53/libraries/" class=
"md-nav__link">
2255 Third Party Libraries
2275 <li class=
"md-nav__item md-nav__item--nested">
2278 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_4" type=
"checkbox" id=
"__nav_6_4" >
2283 <label class=
"md-nav__link" for=
"__nav_6_4">
2284 From WoltLab Suite
5.2
2285 <span class=
"md-nav__icon md-icon"></span>
2288 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.2" data-md-level=
"2">
2289 <label class=
"md-nav__title" for=
"__nav_6_4">
2290 <span class=
"md-nav__icon md-icon"></span>
2291 From WoltLab Suite
5.2
2293 <ul class=
"md-nav__list" data-md-scrollfix
>
2300 <li class=
"md-nav__item">
2301 <a href=
"../../migration/wsc52/php/" class=
"md-nav__link">
2314 <li class=
"md-nav__item">
2315 <a href=
"../../migration/wsc52/templates/" class=
"md-nav__link">
2316 Templates and Languages
2328 <li class=
"md-nav__item">
2329 <a href=
"../../migration/wsc52/libraries/" class=
"md-nav__link">
2330 Third Party Libraries
2350 <li class=
"md-nav__item md-nav__item--nested">
2353 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_5" type=
"checkbox" id=
"__nav_6_5" >
2358 <label class=
"md-nav__link" for=
"__nav_6_5">
2359 From WoltLab Suite
3.1
2360 <span class=
"md-nav__icon md-icon"></span>
2363 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 3.1" data-md-level=
"2">
2364 <label class=
"md-nav__title" for=
"__nav_6_5">
2365 <span class=
"md-nav__icon md-icon"></span>
2366 From WoltLab Suite
3.1
2368 <ul class=
"md-nav__list" data-md-scrollfix
>
2375 <li class=
"md-nav__item">
2376 <a href=
"../../migration/wsc31/php/" class=
"md-nav__link">
2397 <li class=
"md-nav__item md-nav__item--nested">
2400 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_6" type=
"checkbox" id=
"__nav_6_6" >
2405 <label class=
"md-nav__link" for=
"__nav_6_6">
2406 From WoltLab Suite
3.0
2407 <span class=
"md-nav__icon md-icon"></span>
2410 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 3.0" data-md-level=
"2">
2411 <label class=
"md-nav__title" for=
"__nav_6_6">
2412 <span class=
"md-nav__icon md-icon"></span>
2413 From WoltLab Suite
3.0
2415 <ul class=
"md-nav__list" data-md-scrollfix
>
2422 <li class=
"md-nav__item">
2423 <a href=
"../../migration/wsc30/php/" class=
"md-nav__link">
2436 <li class=
"md-nav__item">
2437 <a href=
"../../migration/wsc30/javascript/" class=
"md-nav__link">
2450 <li class=
"md-nav__item">
2451 <a href=
"../../migration/wsc30/templates/" class=
"md-nav__link">
2464 <li class=
"md-nav__item">
2465 <a href=
"../../migration/wsc30/css/" class=
"md-nav__link">
2478 <li class=
"md-nav__item">
2479 <a href=
"../../migration/wsc30/package/" class=
"md-nav__link">
2500 <li class=
"md-nav__item md-nav__item--nested">
2503 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_6_7" type=
"checkbox" id=
"__nav_6_7" >
2508 <label class=
"md-nav__link" for=
"__nav_6_7">
2510 <span class=
"md-nav__icon md-icon"></span>
2513 <nav class=
"md-nav" aria-label=
"From WCF 2.1" data-md-level=
"2">
2514 <label class=
"md-nav__title" for=
"__nav_6_7">
2515 <span class=
"md-nav__icon md-icon"></span>
2518 <ul class=
"md-nav__list" data-md-scrollfix
>
2525 <li class=
"md-nav__item">
2526 <a href=
"../../migration/wcf21/php/" class=
"md-nav__link">
2539 <li class=
"md-nav__item">
2540 <a href=
"../../migration/wcf21/templates/" class=
"md-nav__link">
2553 <li class=
"md-nav__item">
2554 <a href=
"../../migration/wcf21/css/" class=
"md-nav__link">
2567 <li class=
"md-nav__item">
2568 <a href=
"../../migration/wcf21/package/" class=
"md-nav__link">
2597 <li class=
"md-nav__item md-nav__item--nested">
2600 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_7" type=
"checkbox" id=
"__nav_7" >
2605 <label class=
"md-nav__link" for=
"__nav_7">
2607 <span class=
"md-nav__icon md-icon"></span>
2610 <nav class=
"md-nav" aria-label=
"Tutorials" data-md-level=
"1">
2611 <label class=
"md-nav__title" for=
"__nav_7">
2612 <span class=
"md-nav__icon md-icon"></span>
2615 <ul class=
"md-nav__list" data-md-scrollfix
>
2623 <li class=
"md-nav__item md-nav__item--nested">
2626 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"__nav_7_1" type=
"checkbox" id=
"__nav_7_1" >
2631 <label class=
"md-nav__link" for=
"__nav_7_1">
2633 <span class=
"md-nav__icon md-icon"></span>
2636 <nav class=
"md-nav" aria-label=
"Tutorial Series" data-md-level=
"2">
2637 <label class=
"md-nav__title" for=
"__nav_7_1">
2638 <span class=
"md-nav__icon md-icon"></span>
2641 <ul class=
"md-nav__list" data-md-scrollfix
>
2648 <li class=
"md-nav__item">
2649 <a href=
"../../tutorial/series/overview/" class=
"md-nav__link">
2662 <li class=
"md-nav__item">
2663 <a href=
"../../tutorial/series/part_1/" class=
"md-nav__link">
2676 <li class=
"md-nav__item">
2677 <a href=
"../../tutorial/series/part_2/" class=
"md-nav__link">
2690 <li class=
"md-nav__item">
2691 <a href=
"../../tutorial/series/part_3/" class=
"md-nav__link">
2704 <li class=
"md-nav__item">
2705 <a href=
"../../tutorial/series/part_4/" class=
"md-nav__link">
2718 <li class=
"md-nav__item">
2719 <a href=
"../../tutorial/series/part_5/" class=
"md-nav__link">
2732 <li class=
"md-nav__item">
2733 <a href=
"../../tutorial/series/part_6/" class=
"md-nav__link">
2762 <div class=
"md-sidebar md-sidebar--secondary" data-md-component=
"sidebar" data-md-type=
"toc" >
2763 <div class=
"md-sidebar__scrollwrap">
2764 <div class=
"md-sidebar__inner">
2767 <nav class=
"md-nav md-nav--secondary" aria-label=
"Table of contents">
2774 <label class=
"md-nav__title" for=
"__toc">
2775 <span class=
"md-nav__icon md-icon"></span>
2778 <ul class=
"md-nav__list" data-md-component=
"toc" data-md-scrollfix
>
2780 <li class=
"md-nav__item">
2781 <a href=
"#quickstart" class=
"md-nav__link">
2787 <li class=
"md-nav__item">
2788 <a href=
"#dialogs-without-controls" class=
"md-nav__link">
2789 Dialogs Without Controls
2792 <nav class=
"md-nav" aria-label=
"Dialogs Without Controls">
2793 <ul class=
"md-nav__list">
2795 <li class=
"md-nav__item">
2796 <a href=
"#when-to-use" class=
"md-nav__link">
2807 <li class=
"md-nav__item">
2808 <a href=
"#alerts" class=
"md-nav__link">
2812 <nav class=
"md-nav" aria-label=
"Alerts">
2813 <ul class=
"md-nav__list">
2815 <li class=
"md-nav__item">
2816 <a href=
"#when-to-use_1" class=
"md-nav__link">
2827 <li class=
"md-nav__item">
2828 <a href=
"#confirmation" class=
"md-nav__link">
2834 <li class=
"md-nav__item">
2835 <a href=
"#prompts" class=
"md-nav__link">
2839 <nav class=
"md-nav" aria-label=
"Prompts">
2840 <ul class=
"md-nav__list">
2842 <li class=
"md-nav__item">
2843 <a href=
"#code-example" class=
"md-nav__link">
2849 <li class=
"md-nav__item">
2850 <a href=
"#custom-buttons" class=
"md-nav__link">
2854 <nav class=
"md-nav" aria-label=
"Custom Buttons">
2855 <ul class=
"md-nav__list">
2857 <li class=
"md-nav__item">
2858 <a href=
"#customizing-the-primary-button" class=
"md-nav__link">
2859 Customizing the Primary Button
2869 <li class=
"md-nav__item">
2870 <a href=
"#adding-an-extra-button" class=
"md-nav__link">
2871 Adding an Extra Button
2881 <li class=
"md-nav__item">
2882 <a href=
"#interacting-with-dialogs" class=
"md-nav__link">
2883 Interacting with dialogs
2886 <nav class=
"md-nav" aria-label=
"Interacting with dialogs">
2887 <ul class=
"md-nav__list">
2889 <li class=
"md-nav__item">
2890 <a href=
"#opening-and-closing-dialogs" class=
"md-nav__link">
2891 Opening and Closing Dialogs
2896 <li class=
"md-nav__item">
2897 <a href=
"#accessing-the-content" class=
"md-nav__link">
2898 Accessing the Content
2903 <li class=
"md-nav__item">
2904 <a href=
"#disabling-the-submit-button-of-a-dialog" class=
"md-nav__link">
2905 Disabling the Submit Button of a Dialog
2910 <li class=
"md-nav__item">
2911 <a href=
"#managing-an-instance-of-a-dialog" class=
"md-nav__link">
2912 Managing an Instance of a Dialog
2917 <li class=
"md-nav__item">
2918 <a href=
"#event-access" class=
"md-nav__link">
2922 <nav class=
"md-nav" aria-label=
"Event Access">
2923 <ul class=
"md-nav__list">
2925 <li class=
"md-nav__item">
2926 <a href=
"#afterclose" class=
"md-nav__link">
2932 <li class=
"md-nav__item">
2933 <a href=
"#close" class=
"md-nav__link">
2939 <li class=
"md-nav__item">
2940 <a href=
"#cancel" class=
"md-nav__link">
2946 <li class=
"md-nav__item">
2947 <a href=
"#extra" class=
"md-nav__link">
2953 <li class=
"md-nav__item">
2954 <a href=
"#primary" class=
"md-nav__link">
2960 <li class=
"md-nav__item">
2961 <a href=
"#validate" class=
"md-nav__link">
2986 <div class=
"md-content" data-md-component=
"content">
2987 <article class=
"md-content__inner md-typeset">
2991 <a href=
"https://github.com/WoltLab/docs.woltlab.com/edit/6.0/docs/javascript/components_dialog.md" title=
"Edit this page" class=
"md-content__button md-icon">
2993 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
2997 <h1 id=
"dialogs-javascript-api">Dialogs - JavaScript API
<a class=
"headerlink" href=
"#dialogs-javascript-api" title=
"Permanent link">#
</a></h1>
2998 <p>Modal dialogs are a powerful tool to draw the viewer’s attention to an important message, question or form.
2999 Dialogs naturally interrupt the workflow and prevent the navigation to other sections by making other elements on the page inert.
</p>
3000 <p>WoltLab Suite
6.0 ships with four different types of dialogs.
</p>
3001 <h2 id=
"quickstart">Quickstart
<a class=
"headerlink" href=
"#quickstart" title=
"Permanent link">#
</a></h2>
3002 <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.
3003 Please see the following list to make a quick decision of what kind of dialog you need.
</p>
3005 <li>Is this some kind of error message? Use an alert dialog.
</li>
3006 <li>Are you asking the user to confirm an action? Use a
<a href=
"../components_confirmation/">confirmation dialog
</a>.
</li>
3007 <li>Does the dialog contain form inputs that the user must fill in? Use a prompt dialog.
</li>
3008 <li>Do you want to present information to the user without requiring any action? Use a dialog without controls.
</li>
3010 <h2 id=
"dialogs-without-controls">Dialogs Without Controls
<a class=
"headerlink" href=
"#dialogs-without-controls" title=
"Permanent link">#
</a></h2>
3011 <p>Dialogs may contain just an explanation or extra information that should be presented to the viewer without requiring any further interaction.
3012 The dialog can be closed via the “X” button or by clicking the modal backdrop.
</p>
3013 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3014 <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><span class=
"w"></span>
3015 <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><span class=
"w"></span>
3016 </code></pre></div></td></tr></table></div>
3017 <h3 id=
"when-to-use">When to Use
<a class=
"headerlink" href=
"#when-to-use" title=
"Permanent link">#
</a></h3>
3018 <p>The short answer is: Don’t.
</p>
3019 <p>Dialogs without controls are an anti-pattern because they only contain content that does not require the modal appearance of a dialog.
3020 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>
3021 <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>
3022 <h2 id=
"alerts">Alerts
<a class=
"headerlink" href=
"#alerts" title=
"Permanent link">#
</a></h2>
3023 <p>Alerts are designed to inform the user of something important that requires no further action by the user.
3024 Typical examples for alerts are error messages or warnings.
</p>
3025 <p>An alert will only provide a single button to acknowledge the dialog and must not contain interactive content.
3026 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>
3027 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3028 <span class=
"normal">2</span>
3029 <span class=
"normal">3</span>
3030 <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><span class=
"w"></span>
3031 <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><span class=
"w"></span>
3032 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asAlert
</span><span class=
"p">();
</span><span class=
"w"></span>
3033 <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><span class=
"w"></span>
3034 </code></pre></div></td></tr></table></div>
3035 <p>You can customize the label of the primary button to better explain what will happen next.
3036 This can be useful for alerts that will have a side-effect when closing the dialog, such as redirect to a different page.
</p>
3037 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3038 <span class=
"normal"> 2</span>
3039 <span class=
"normal"> 3</span>
3040 <span class=
"normal"> 4</span>
3041 <span class=
"normal"> 5</span>
3042 <span class=
"normal"> 6</span>
3043 <span class=
"normal"> 7</span>
3044 <span class=
"normal"> 8</span>
3045 <span class=
"normal"> 9</span>
3046 <span class=
"normal">10</span>
3047 <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><span class=
"w"></span>
3048 <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><span class=
"w"></span>
3049 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asAlert
</span><span class=
"p">({
</span><span class=
"w"></span>
3050 <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><span class=
"w"></span>
3051 <span class=
"w"> </span><span class=
"p">});
</span><span class=
"w"></span>
3053 <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><span class=
"w"></span>
3054 <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><span class=
"w"></span>
3055 <span class=
"p">});
</span><span class=
"w"></span>
3057 <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><span class=
"w"></span>
3058 </code></pre></div></td></tr></table></div>
3059 <p>The
<code>primary
</code> event is triggered both by clicking on the primary button and by clicks on the modal backdrop.
</p>
3060 <h3 id=
"when-to-use_1">When to Use
<a class=
"headerlink" href=
"#when-to-use_1" title=
"Permanent link">#
</a></h3>
3061 <p>Alerts are a special type of dialog that use the
<code>role=
"alert"</code> attribute to signal its importance to assistive tools.
3062 Use alerts sparingly when there is no other way to communicate that something did not work as expected.
</p>
3063 <p>Alerts should not be used for cases where you expect an error to happen.
3064 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>
3065 <h2 id=
"confirmation">Confirmation
<a class=
"headerlink" href=
"#confirmation" title=
"Permanent link">#
</a></h2>
3066 <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>
3067 <h2 id=
"prompts">Prompts
<a class=
"headerlink" href=
"#prompts" title=
"Permanent link">#
</a></h2>
3068 <p>The most common type of dialogs are prompts that are similar to confirmation dialogs, but without the restrictions and with a regular title.
3069 These dialogs can be used universally and provide a submit and cancel button by default.
</p>
3070 <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.
3071 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>
3072 <h3 id=
"code-example">Code Example
<a class=
"headerlink" href=
"#code-example" title=
"Permanent link">#
</a></h3>
3073 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3074 <span class=
"normal"> 2</span>
3075 <span class=
"normal"> 3</span>
3076 <span class=
"normal"> 4</span>
3077 <span class=
"normal"> 5</span>
3078 <span class=
"normal"> 6</span>
3079 <span class=
"normal"> 7</span>
3080 <span class=
"normal"> 8</span>
3081 <span class=
"normal"> 9</span>
3082 <span class=
"normal">10</span>
3083 <span class=
"normal">11</span>
3084 <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>
3086 <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>
3087 <span class=
"p"><</span><span class=
"nt">dl
</span><span class=
"p">></span>
3088 <span class=
"p"><</span><span class=
"nt">dt
</span><span class=
"p">></span>
3089 <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>
3090 <span class=
"p"></
</span><span class=
"nt">dt
</span><span class=
"p">></span>
3091 <span class=
"p"><</span><span class=
"nt">dd
</span><span class=
"p">></span>
3092 <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>
3093 <span class=
"p"></
</span><span class=
"nt">dd
</span><span class=
"p">></span>
3094 <span class=
"p"></
</span><span class=
"nt">dl
</span><span class=
"p">></span>
3095 <span class=
"p"></
</span><span class=
"nt">template
</span><span class=
"p">></span>
3096 </code></pre></div></td></tr></table></div>
3097 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3098 <span class=
"normal">2</span>
3099 <span class=
"normal">3</span>
3100 <span class=
"normal">4</span>
3101 <span class=
"normal">5</span>
3102 <span class=
"normal">6</span>
3103 <span class=
"normal">7</span>
3104 <span class=
"normal">8</span>
3105 <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><span class=
"w"></span>
3106 <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><span class=
"w"></span>
3108 <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><span class=
"w"></span>
3109 <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><span class=
"w"></span>
3111 <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><span class=
"w"></span>
3112 <span class=
"w"> </span><span class=
"p">});
</span><span class=
"w"></span>
3113 <span class=
"p">});
</span><span class=
"w"></span>
3114 </code></pre></div></td></tr></table></div>
3115 <h3 id=
"custom-buttons">Custom Buttons
<a class=
"headerlink" href=
"#custom-buttons" title=
"Permanent link">#
</a></h3>
3116 <p>The
<code>asPrompt()
</code> call permits some level of customization of the form control buttons.
</p>
3117 <h4 id=
"customizing-the-primary-button">Customizing the Primary Button
<a class=
"headerlink" href=
"#customizing-the-primary-button" title=
"Permanent link">#
</a></h4>
3118 <p>The
<code>primary
</code> option is used to change the default label of the primary button.
</p>
3119 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3120 <span class=
"normal">2</span>
3121 <span class=
"normal">3</span>
3122 <span class=
"normal">4</span>
3123 <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><span class=
"w"></span>
3124 <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><span class=
"w"></span>
3125 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asPrompt
</span><span class=
"p">({
</span><span class=
"w"></span>
3126 <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><span class=
"w"></span>
3127 <span class=
"w"> </span><span class=
"p">});
</span><span class=
"w"></span>
3128 </code></pre></div></td></tr></table></div>
3129 <h3 id=
"adding-an-extra-button">Adding an Extra Button
<a class=
"headerlink" href=
"#adding-an-extra-button" title=
"Permanent link">#
</a></h3>
3130 <p>The extra button has no default label, enabling it requires you to provide a readable name.
</p>
3131 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3132 <span class=
"normal"> 2</span>
3133 <span class=
"normal"> 3</span>
3134 <span class=
"normal"> 4</span>
3135 <span class=
"normal"> 5</span>
3136 <span class=
"normal"> 6</span>
3137 <span class=
"normal"> 7</span>
3138 <span class=
"normal"> 8</span>
3139 <span class=
"normal"> 9</span>
3140 <span class=
"normal">10</span>
3141 <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><span class=
"w"></span>
3142 <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><span class=
"w"></span>
3143 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asPrompt
</span><span class=
"p">({
</span><span class=
"w"></span>
3144 <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><span class=
"w"></span>
3145 <span class=
"w"> </span><span class=
"p">});
</span><span class=
"w"></span>
3147 <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><span class=
"w"></span>
3148 <span class=
"w"> </span><span class=
"c1">// The extra button does nothing on its own. If you want
</span><span class=
"w"></span>
3149 <span class=
"w"> </span><span class=
"c1">// to close the button after performing an action you’ll
</span><span class=
"w"></span>
3150 <span class=
"w"> </span><span class=
"c1">// need to call `dialog.close()` yourself.
</span><span class=
"w"></span>
3151 <span class=
"p">});
</span><span class=
"w"></span>
3152 </code></pre></div></td></tr></table></div>
3153 <h2 id=
"interacting-with-dialogs">Interacting with dialogs
<a class=
"headerlink" href=
"#interacting-with-dialogs" title=
"Permanent link">#
</a></h2>
3154 <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>
3155 <h3 id=
"opening-and-closing-dialogs">Opening and Closing Dialogs
<a class=
"headerlink" href=
"#opening-and-closing-dialogs" title=
"Permanent link">#
</a></h3>
3156 <p>You can open a dialog through the
<code>.show()
</code> method that expects the title of the dialog as the only argument.
3157 Check the
<code>.open
</code> property to determine if the dialog is currently open.
</p>
3158 <p>Programmatically closing a dialog is possibly through
<code>.close()
</code>.
</p>
3159 <h3 id=
"accessing-the-content">Accessing the Content
<a class=
"headerlink" href=
"#accessing-the-content" title=
"Permanent link">#
</a></h3>
3160 <p>All contents of a dialog exists within a child element that can be accessed through the
<code>content
</code> property.
</p>
3161 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3162 <span class=
"normal">2</span>
3163 <span class=
"normal">3</span>
3164 <span class=
"normal">4</span>
3165 <span class=
"normal">5</span>
3166 <span class=
"normal">6</span>
3167 <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><span class=
"w"></span>
3168 <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><span class=
"w"></span>
3169 <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><span class=
"w"></span>
3170 <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><span class=
"w"></span>
3172 <span class=
"c1">// Find a text input inside the dialog.
</span><span class=
"w"></span>
3173 <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><span class=
"w"></span>
3174 </code></pre></div></td></tr></table></div>
3175 <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>
3176 <p>You can prevent the dialog submission until a condition is met, allowing you to dynamically enable or disable the button at will.
</p>
3177 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3178 <span class=
"normal">2</span>
3179 <span class=
"normal">3</span>
3180 <span class=
"normal">4</span>
3181 <span class=
"normal">5</span>
3182 <span class=
"normal">6</span>
3183 <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><span class=
"w"></span>
3185 <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><span class=
"w"></span>
3186 <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><span class=
"w"></span>
3187 <span class=
"w"> </span><span class=
"c1">// Block the dialog submission unless the checkbox is checked.
</span><span class=
"w"></span>
3188 <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><span class=
"w"></span>
3189 <span class=
"p">});
</span><span class=
"w"></span>
3190 </code></pre></div></td></tr></table></div>
3191 <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>
3192 <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>.
3193 The new implementation requires to you to keep track of the dialog on your own.
</p>
3194 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3195 <span class=
"normal"> 2</span>
3196 <span class=
"normal"> 3</span>
3197 <span class=
"normal"> 4</span>
3198 <span class=
"normal"> 5</span>
3199 <span class=
"normal"> 6</span>
3200 <span class=
"normal"> 7</span>
3201 <span class=
"normal"> 8</span>
3202 <span class=
"normal"> 9</span>
3203 <span class=
"normal">10</span>
3204 <span class=
"normal">11</span>
3205 <span class=
"normal">12</span>
3206 <span class=
"normal">13</span>
3207 <span class=
"normal">14</span>
3208 <span class=
"normal">15</span>
3209 <span class=
"normal">16</span>
3210 <span class=
"normal">17</span>
3211 <span class=
"normal">18</span>
3212 <span class=
"normal">19</span>
3213 <span class=
"normal">20</span>
3214 <span class=
"normal">21</span>
3215 <span class=
"normal">22</span>
3216 <span class=
"normal">23</span>
3217 <span class=
"normal">24</span>
3218 <span class=
"normal">25</span>
3219 <span class=
"normal">26</span>
3220 <span class=
"normal">27</span>
3221 <span class=
"normal">28</span>
3222 <span class=
"normal">29</span>
3223 <span class=
"normal">30</span>
3224 <span class=
"normal">31</span>
3225 <span class=
"normal">32</span>
3226 <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><span class=
"w"></span>
3227 <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><span class=
"w"></span>
3229 <span class=
"w"> </span><span class=
"kr">constructor
</span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">{
</span><span class=
"w"></span>
3230 <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><span class=
"w"></span>
3231 <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><span class=
"w"></span>
3232 <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><span class=
"w"></span>
3233 <span class=
"w"> </span><span class=
"p">});
</span><span class=
"w"></span>
3234 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3236 <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><span class=
"w"></span>
3237 <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><span class=
"w"></span>
3239 <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><span class=
"w"></span>
3240 <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><span class=
"w"></span>
3241 <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><span class=
"w"></span>
3242 <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><span class=
"w"></span>
3243 <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><span class=
"w"></span>
3244 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3246 <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><span class=
"w"></span>
3247 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3249 <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><span class=
"w"></span>
3250 <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><span class=
"w"></span>
3251 <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><span class=
"w"></span>
3252 <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><span class=
"w"></span>
3253 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">withoutControls
</span><span class=
"p">();
</span><span class=
"w"></span>
3254 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3256 <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><span class=
"w"></span>
3257 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3258 <span class=
"p">}
</span><span class=
"w"></span>
3259 </code></pre></div></td></tr></table></div>
3260 <h3 id=
"event-access">Event Access
<a class=
"headerlink" href=
"#event-access" title=
"Permanent link">#
</a></h3>
3261 <p>You can bind event listeners to specialized events to get notified of events and to modify its behavior.
</p>
3262 <h4 id=
"afterclose"><code>afterClose
</code><a class=
"headerlink" href=
"#afterclose" title=
"Permanent link">#
</a></h4>
3263 <p><em>This event cannot be canceled.
</em></p>
3264 <p>Fires when the dialog has closed.
</p>
3265 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3266 <span class=
"normal">2</span>
3267 <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><span class=
"w"></span>
3268 <span class=
"w"> </span><span class=
"c1">// Dialog was closed.
</span><span class=
"w"></span>
3269 <span class=
"p">});
</span><span class=
"w"></span>
3270 </code></pre></div></td></tr></table></div>
3271 <h4 id=
"close"><code>close
</code><a class=
"headerlink" href=
"#close" title=
"Permanent link">#
</a></h4>
3272 <p>Fires when the dialog is about to close.
</p>
3273 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3274 <span class=
"normal">2</span>
3275 <span class=
"normal">3</span>
3276 <span class=
"normal">4</span>
3277 <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><span class=
"w"></span>
3278 <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><span class=
"w"></span>
3279 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span><span class=
"w"></span>
3280 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3281 <span class=
"p">});
</span><span class=
"w"></span>
3282 </code></pre></div></td></tr></table></div>
3283 <h4 id=
"cancel"><code>cancel
</code><a class=
"headerlink" href=
"#cancel" title=
"Permanent link">#
</a></h4>
3284 <p>Fires only when there is a “Cancel” button and the user has either pressed that button or clicked on the modal backdrop.
3285 The dialog will close if the event is not canceled.
</p>
3286 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3287 <span class=
"normal">2</span>
3288 <span class=
"normal">3</span>
3289 <span class=
"normal">4</span>
3290 <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><span class=
"w"></span>
3291 <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><span class=
"w"></span>
3292 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span><span class=
"w"></span>
3293 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3294 <span class=
"p">});
</span><span class=
"w"></span>
3295 </code></pre></div></td></tr></table></div>
3296 <h4 id=
"extra"><code>extra
</code><a class=
"headerlink" href=
"#extra" title=
"Permanent link">#
</a></h4>
3297 <p><em>This event cannot be canceled.
</em></p>
3298 <p>Fires when an extra button is present and the button was clicked by the user.
3299 This event does nothing on its own and is supported for dialogs of type “Prompt” only.
</p>
3300 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3301 <span class=
"normal">2</span>
3302 <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><span class=
"w"></span>
3303 <span class=
"w"> </span><span class=
"c1">// The extra button was clicked.
</span><span class=
"w"></span>
3304 <span class=
"p">});
</span><span class=
"w"></span>
3305 </code></pre></div></td></tr></table></div>
3306 <h4 id=
"primary"><code>primary
</code><a class=
"headerlink" href=
"#primary" title=
"Permanent link">#
</a></h4>
3307 <p><em>This event cannot be canceled.
</em></p>
3308 <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>
3309 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3310 <span class=
"normal">2</span>
3311 <span class=
"normal">3</span>
3312 <span class=
"normal">4</span>
3313 <span class=
"normal">5</span>
3314 <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><span class=
"w"></span>
3315 <span class=
"w"> </span><span class=
"c1">// The primary action button was clicked or the
</span><span class=
"w"></span>
3316 <span class=
"w"> </span><span class=
"c1">// form was submitted through keyboard controls.
</span><span class=
"w"></span>
3317 <span class=
"w"> </span><span class=
"c1">//
</span><span class=
"w"></span>
3318 <span class=
"w"> </span><span class=
"c1">// The `validate` event has completed successfully.
</span><span class=
"w"></span>
3319 <span class=
"p">});
</span><span class=
"w"></span>
3320 </code></pre></div></td></tr></table></div>
3321 <h4 id=
"validate"><code>validate
</code><a class=
"headerlink" href=
"#validate" title=
"Permanent link">#
</a></h4>
3322 <p>Fires only when there is a form and the user has pressed the primary action button or submitted the form through keyboard controls.
3323 Canceling this event is interpreted as a form validation failure.
</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>
3329 <span class=
"normal"> 6</span>
3330 <span class=
"normal"> 7</span>
3331 <span class=
"normal"> 8</span>
3332 <span class=
"normal"> 9</span>
3333 <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><span class=
"w"></span>
3334 <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><span class=
"w"></span>
3336 <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><span class=
"w"></span>
3337 <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><span class=
"w"></span>
3338 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span><span class=
"w"></span>
3340 <span class=
"w"> </span><span class=
"c1">// Display an inline error message.
</span><span class=
"w"></span>
3341 <span class=
"w"> </span><span class=
"p">}
</span><span class=
"w"></span>
3342 <span class=
"p">});
</span><span class=
"w"></span>
3343 </code></pre></div></td></tr></table></div>
3346 <div class=
"md-source-file">
3368 <footer class=
"md-footer">
3371 <nav class=
"md-footer__inner md-grid" aria-label=
"Footer" >
3374 <a href=
"../components_confirmation/" class=
"md-footer__link md-footer__link--prev" aria-label=
"Previous: Confirmation" rel=
"prev">
3375 <div class=
"md-footer__button md-icon">
3376 <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>
3378 <div class=
"md-footer__title">
3379 <div class=
"md-ellipsis">
3380 <span class=
"md-footer__direction">
3390 <a href=
"../components_pagination/" class=
"md-footer__link md-footer__link--next" aria-label=
"Next: Pagination" rel=
"next">
3391 <div class=
"md-footer__title">
3392 <div class=
"md-ellipsis">
3393 <span class=
"md-footer__direction">
3399 <div class=
"md-footer__button md-icon">
3400 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
3406 <div class=
"md-footer-meta md-typeset">
3407 <div class=
"md-footer-meta__inner md-grid">
3408 <div class=
"md-copyright">
3410 <div class=
"md-copyright__highlight">
3411 Copyright ©
2020 WoltLab GmbH
3416 <a href=
"https://squidfunk.github.io/mkdocs-material/" target=
"_blank" rel=
"noopener">
3422 <div class=
"md-copyright">
3423 <a href=
"https://www.woltlab.com/legal-notice/">Legal Notice
</a>
3424 <a href=
"https://www.woltlab.com/privacy-policy/">Privacy Policy
</a>
3432 <div class=
"md-dialog" data-md-component=
"dialog">
3433 <div class=
"md-dialog__inner md-typeset"></div>
3436 <script id=
"__config" type=
"application/json">{
"base":
"../..",
"features": [
"navigation.tracking"],
"search":
"../../assets/javascripts/workers/search.16e2a7d4.min.js",
"translations": {
"clipboard.copied":
"Copied to clipboard",
"clipboard.copy":
"Copy to clipboard",
"search.config.lang":
"en",
"search.config.pipeline":
"trimmer, stopWordFilter",
"search.config.separator":
"[\\s\\-]+",
"search.placeholder":
"Search",
"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.title":
"Select version"},
"version": {
"provider":
"mike"}}
</script>
3439 <script src=
"../../assets/javascripts/bundle.5a2dcb6a.min.js"></script>