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.2, mkdocs-material-9.0.6">
24 <title>Dialog - WoltLab Suite Documentation
</title>
28 <link rel=
"stylesheet" href=
"../../assets/stylesheets/main.558e4712.min.css">
31 <link rel=
"stylesheet" href=
"../../assets/stylesheets/palette.2505c338.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=
"">
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-component=
"outdated" hidden
>
94 <header class=
"md-header" data-md-component=
"header">
95 <nav class=
"md-header__inner md-grid" aria-label=
"Header">
96 <a href=
"../.." title=
"WoltLab Suite Documentation" class=
"md-header__button md-logo" aria-label=
"WoltLab Suite Documentation" data-md-component=
"logo">
98 <img src=
"../../assets/logo.png" alt=
"logo">
101 <label class=
"md-header__button md-icon" for=
"__drawer">
102 <svg xmlns=
"http://www.w3.org/2000/svg" viewBox=
"0 0 24 24"><path d=
"M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
104 <div class=
"md-header__title" data-md-component=
"header-title">
105 <div class=
"md-header__ellipsis">
106 <div class=
"md-header__topic">
107 <span class=
"md-ellipsis">
108 WoltLab Suite Documentation
111 <div class=
"md-header__topic" data-md-component=
"header-topic">
112 <span class=
"md-ellipsis">
123 <label class=
"md-header__button md-icon" for=
"__search">
124 <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>
126 <div class=
"md-search" data-md-component=
"search" role=
"dialog">
127 <label class=
"md-search__overlay" for=
"__search"></label>
128 <div class=
"md-search__inner" role=
"search">
129 <form class=
"md-search__form" name=
"search">
130 <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
>
131 <label class=
"md-search__icon md-icon" for=
"__search">
132 <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>
133 <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>
135 <nav class=
"md-search__options" aria-label=
"Search">
137 <button type=
"reset" class=
"md-search__icon md-icon" title=
"Clear" aria-label=
"Clear" tabindex=
"-1">
138 <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>
143 <div class=
"md-search__output">
144 <div class=
"md-search__scrollwrap" data-md-scrollfix
>
145 <div class=
"md-search-result" data-md-component=
"search-result">
146 <div class=
"md-search-result__meta">
149 <ol class=
"md-search-result__list" role=
"presentation"></ol>
157 <div class=
"md-header__source">
158 <a href=
"https://github.com/WoltLab/docs.woltlab.com/" title=
"Go to repository" class=
"md-source" data-md-component=
"source">
159 <div class=
"md-source__icon md-icon">
161 <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>
163 <div class=
"md-source__repository">
173 <div class=
"md-container" data-md-component=
"container">
180 <main class=
"md-main" data-md-component=
"main">
181 <div class=
"md-main__inner md-grid">
185 <div class=
"md-sidebar md-sidebar--primary" data-md-component=
"sidebar" data-md-type=
"navigation" >
186 <div class=
"md-sidebar__scrollwrap">
187 <div class=
"md-sidebar__inner">
191 <nav class=
"md-nav md-nav--primary" aria-label=
"Navigation" data-md-level=
"0">
192 <label class=
"md-nav__title" for=
"__drawer">
193 <a href=
"../.." title=
"WoltLab Suite Documentation" class=
"md-nav__button md-logo" aria-label=
"WoltLab Suite Documentation" data-md-component=
"logo">
195 <img src=
"../../assets/logo.png" alt=
"logo">
198 WoltLab Suite Documentation
201 <div class=
"md-nav__source">
202 <a href=
"https://github.com/WoltLab/docs.woltlab.com/" title=
"Go to repository" class=
"md-source" data-md-component=
"source">
203 <div class=
"md-source__icon md-icon">
205 <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>
207 <div class=
"md-source__repository">
213 <ul class=
"md-nav__list" data-md-scrollfix
>
222 <li class=
"md-nav__item">
223 <a href=
"../../getting-started/" class=
"md-nav__link">
238 <li class=
"md-nav__item md-nav__item--nested">
243 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_2" type=
"checkbox" id=
"__nav_2" >
247 <label class=
"md-nav__link" for=
"__nav_2" tabindex=
"0" aria-expanded=
"false">
249 <span class=
"md-nav__icon md-icon"></span>
252 <nav class=
"md-nav" aria-label=
"PHP API" data-md-level=
"1">
253 <label class=
"md-nav__title" for=
"__nav_2">
254 <span class=
"md-nav__icon md-icon"></span>
257 <ul class=
"md-nav__list" data-md-scrollfix
>
264 <li class=
"md-nav__item">
265 <a href=
"../../php/pages/" class=
"md-nav__link">
278 <li class=
"md-nav__item">
279 <a href=
"../../php/database-objects/" class=
"md-nav__link">
292 <li class=
"md-nav__item">
293 <a href=
"../../php/database-access/" class=
"md-nav__link">
306 <li class=
"md-nav__item">
307 <a href=
"../../php/exceptions/" class=
"md-nav__link">
321 <li class=
"md-nav__item md-nav__item--nested">
326 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_2_5" type=
"checkbox" id=
"__nav_2_5" >
330 <label class=
"md-nav__link" for=
"__nav_2_5" tabindex=
"0" aria-expanded=
"false">
332 <span class=
"md-nav__icon md-icon"></span>
335 <nav class=
"md-nav" aria-label=
"API" data-md-level=
"2">
336 <label class=
"md-nav__title" for=
"__nav_2_5">
337 <span class=
"md-nav__icon md-icon"></span>
340 <ul class=
"md-nav__list" data-md-scrollfix
>
348 <li class=
"md-nav__item md-nav__item--nested">
353 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_2_5_1" type=
"checkbox" id=
"__nav_2_5_1" >
357 <label class=
"md-nav__link" for=
"__nav_2_5_1" tabindex=
"0" aria-expanded=
"false">
359 <span class=
"md-nav__icon md-icon"></span>
362 <nav class=
"md-nav" aria-label=
"Caches" data-md-level=
"3">
363 <label class=
"md-nav__title" for=
"__nav_2_5_1">
364 <span class=
"md-nav__icon md-icon"></span>
367 <ul class=
"md-nav__list" data-md-scrollfix
>
374 <li class=
"md-nav__item">
375 <a href=
"../../php/api/caches/" class=
"md-nav__link">
388 <li class=
"md-nav__item">
389 <a href=
"../../php/api/caches_persistent-caches/" class=
"md-nav__link">
402 <li class=
"md-nav__item">
403 <a href=
"../../php/api/caches_runtime-caches/" class=
"md-nav__link">
423 <li class=
"md-nav__item">
424 <a href=
"../../php/api/comments/" class=
"md-nav__link">
437 <li class=
"md-nav__item">
438 <a href=
"../../php/api/cronjobs/" class=
"md-nav__link">
451 <li class=
"md-nav__item">
452 <a href=
"../../php/api/events/" class=
"md-nav__link">
466 <li class=
"md-nav__item md-nav__item--nested">
471 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_2_5_5" type=
"checkbox" id=
"__nav_2_5_5" >
475 <label class=
"md-nav__link" for=
"__nav_2_5_5" tabindex=
"0" aria-expanded=
"false">
477 <span class=
"md-nav__icon md-icon"></span>
480 <nav class=
"md-nav" aria-label=
"Form Builder" data-md-level=
"3">
481 <label class=
"md-nav__title" for=
"__nav_2_5_5">
482 <span class=
"md-nav__icon md-icon"></span>
485 <ul class=
"md-nav__list" data-md-scrollfix
>
492 <li class=
"md-nav__item">
493 <a href=
"../../php/api/form_builder/overview/" class=
"md-nav__link">
506 <li class=
"md-nav__item">
507 <a href=
"../../php/api/form_builder/structure/" class=
"md-nav__link">
520 <li class=
"md-nav__item">
521 <a href=
"../../php/api/form_builder/form_fields/" class=
"md-nav__link">
534 <li class=
"md-nav__item">
535 <a href=
"../../php/api/form_builder/validation_data/" class=
"md-nav__link">
548 <li class=
"md-nav__item">
549 <a href=
"../../php/api/form_builder/dependencies/" class=
"md-nav__link">
569 <li class=
"md-nav__item">
570 <a href=
"../../php/api/package_installation_plugins/" class=
"md-nav__link">
571 Package Installation Plugins
583 <li class=
"md-nav__item">
584 <a href=
"../../php/api/user_activity_points/" class=
"md-nav__link">
597 <li class=
"md-nav__item">
598 <a href=
"../../php/api/user_notifications/" class=
"md-nav__link">
611 <li class=
"md-nav__item">
612 <a href=
"../../php/api/sitemaps/" class=
"md-nav__link">
632 <li class=
"md-nav__item">
633 <a href=
"../../php/code-style/" class=
"md-nav__link">
646 <li class=
"md-nav__item">
647 <a href=
"../../php/apps/" class=
"md-nav__link">
660 <li class=
"md-nav__item">
661 <a href=
"../../php/gdpr/" class=
"md-nav__link">
683 <li class=
"md-nav__item md-nav__item--nested">
688 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_3" type=
"checkbox" id=
"__nav_3" >
692 <label class=
"md-nav__link" for=
"__nav_3" tabindex=
"0" aria-expanded=
"false">
693 Languages, Templates & CSS
694 <span class=
"md-nav__icon md-icon"></span>
697 <nav class=
"md-nav" aria-label=
"Languages, Templates & CSS" data-md-level=
"1">
698 <label class=
"md-nav__title" for=
"__nav_3">
699 <span class=
"md-nav__icon md-icon"></span>
700 Languages, Templates & CSS
702 <ul class=
"md-nav__list" data-md-scrollfix
>
709 <li class=
"md-nav__item">
710 <a href=
"../../view/languages/" class=
"md-nav__link">
723 <li class=
"md-nav__item">
724 <a href=
"../../view/templates/" class=
"md-nav__link">
737 <li class=
"md-nav__item">
738 <a href=
"../../view/template-plugins/" class=
"md-nav__link">
751 <li class=
"md-nav__item">
752 <a href=
"../../view/css/" class=
"md-nav__link">
776 <li class=
"md-nav__item md-nav__item--active md-nav__item--nested">
781 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_4" type=
"checkbox" id=
"__nav_4" checked
>
785 <label class=
"md-nav__link" for=
"__nav_4" tabindex=
"0" aria-expanded=
"true">
786 TypeScript and JavaScript API
787 <span class=
"md-nav__icon md-icon"></span>
790 <nav class=
"md-nav" aria-label=
"TypeScript and JavaScript API" data-md-level=
"1">
791 <label class=
"md-nav__title" for=
"__nav_4">
792 <span class=
"md-nav__icon md-icon"></span>
793 TypeScript and JavaScript API
795 <ul class=
"md-nav__list" data-md-scrollfix
>
802 <li class=
"md-nav__item">
803 <a href=
"../general-usage/" class=
"md-nav__link">
816 <li class=
"md-nav__item">
817 <a href=
"../typescript/" class=
"md-nav__link">
833 <li class=
"md-nav__item md-nav__item--active md-nav__item--nested">
838 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_4_3" type=
"checkbox" id=
"__nav_4_3" checked
>
842 <label class=
"md-nav__link" for=
"__nav_4_3" tabindex=
"0" aria-expanded=
"true">
844 <span class=
"md-nav__icon md-icon"></span>
847 <nav class=
"md-nav" aria-label=
"Components" data-md-level=
"2">
848 <label class=
"md-nav__title" for=
"__nav_4_3">
849 <span class=
"md-nav__icon md-icon"></span>
852 <ul class=
"md-nav__list" data-md-scrollfix
>
859 <li class=
"md-nav__item">
860 <a href=
"../components_confirmation/" class=
"md-nav__link">
875 <li class=
"md-nav__item md-nav__item--active">
877 <input class=
"md-nav__toggle md-toggle" data-md-toggle=
"toc" type=
"checkbox" id=
"__toc">
883 <label class=
"md-nav__link md-nav__link--active" for=
"__toc">
885 <span class=
"md-nav__icon md-icon"></span>
888 <a href=
"./" class=
"md-nav__link md-nav__link--active">
894 <nav class=
"md-nav md-nav--secondary" aria-label=
"Table of contents">
901 <label class=
"md-nav__title" for=
"__toc">
902 <span class=
"md-nav__icon md-icon"></span>
905 <ul class=
"md-nav__list" data-md-component=
"toc" data-md-scrollfix
>
907 <li class=
"md-nav__item">
908 <a href=
"#quickstart" class=
"md-nav__link">
914 <li class=
"md-nav__item">
915 <a href=
"#dialogs-without-controls" class=
"md-nav__link">
916 Dialogs Without Controls
919 <nav class=
"md-nav" aria-label=
"Dialogs Without Controls">
920 <ul class=
"md-nav__list">
922 <li class=
"md-nav__item">
923 <a href=
"#when-to-use" class=
"md-nav__link">
934 <li class=
"md-nav__item">
935 <a href=
"#alerts" class=
"md-nav__link">
939 <nav class=
"md-nav" aria-label=
"Alerts">
940 <ul class=
"md-nav__list">
942 <li class=
"md-nav__item">
943 <a href=
"#when-to-use_1" class=
"md-nav__link">
954 <li class=
"md-nav__item">
955 <a href=
"#confirmation" class=
"md-nav__link">
961 <li class=
"md-nav__item">
962 <a href=
"#prompts" class=
"md-nav__link">
966 <nav class=
"md-nav" aria-label=
"Prompts">
967 <ul class=
"md-nav__list">
969 <li class=
"md-nav__item">
970 <a href=
"#code-example" class=
"md-nav__link">
976 <li class=
"md-nav__item">
977 <a href=
"#custom-buttons" class=
"md-nav__link">
981 <nav class=
"md-nav" aria-label=
"Custom Buttons">
982 <ul class=
"md-nav__list">
984 <li class=
"md-nav__item">
985 <a href=
"#customizing-the-primary-button" class=
"md-nav__link">
986 Customizing the Primary Button
996 <li class=
"md-nav__item">
997 <a href=
"#adding-an-extra-button" class=
"md-nav__link">
998 Adding an Extra Button
1008 <li class=
"md-nav__item">
1009 <a href=
"#interacting-with-dialogs" class=
"md-nav__link">
1010 Interacting with dialogs
1013 <nav class=
"md-nav" aria-label=
"Interacting with dialogs">
1014 <ul class=
"md-nav__list">
1016 <li class=
"md-nav__item">
1017 <a href=
"#opening-and-closing-dialogs" class=
"md-nav__link">
1018 Opening and Closing Dialogs
1023 <li class=
"md-nav__item">
1024 <a href=
"#accessing-the-content" class=
"md-nav__link">
1025 Accessing the Content
1030 <li class=
"md-nav__item">
1031 <a href=
"#disabling-the-submit-button-of-a-dialog" class=
"md-nav__link">
1032 Disabling the Submit Button of a Dialog
1037 <li class=
"md-nav__item">
1038 <a href=
"#managing-an-instance-of-a-dialog" class=
"md-nav__link">
1039 Managing an Instance of a Dialog
1044 <li class=
"md-nav__item">
1045 <a href=
"#event-access" class=
"md-nav__link">
1049 <nav class=
"md-nav" aria-label=
"Event Access">
1050 <ul class=
"md-nav__list">
1052 <li class=
"md-nav__item">
1053 <a href=
"#afterclose" class=
"md-nav__link">
1059 <li class=
"md-nav__item">
1060 <a href=
"#close" class=
"md-nav__link">
1066 <li class=
"md-nav__item">
1067 <a href=
"#cancel" class=
"md-nav__link">
1073 <li class=
"md-nav__item">
1074 <a href=
"#extra" class=
"md-nav__link">
1080 <li class=
"md-nav__item">
1081 <a href=
"#primary" class=
"md-nav__link">
1087 <li class=
"md-nav__item">
1088 <a href=
"#validate" class=
"md-nav__link">
1118 <li class=
"md-nav__item">
1119 <a href=
"../components_google_maps/" class=
"md-nav__link">
1132 <li class=
"md-nav__item">
1133 <a href=
"../components_pagination/" class=
"md-nav__link">
1154 <li class=
"md-nav__item md-nav__item--nested">
1159 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_4_4" type=
"checkbox" id=
"__nav_4_4" >
1163 <label class=
"md-nav__link" for=
"__nav_4_4" tabindex=
"0" aria-expanded=
"false">
1165 <span class=
"md-nav__icon md-icon"></span>
1168 <nav class=
"md-nav" aria-label=
"New API" data-md-level=
"2">
1169 <label class=
"md-nav__title" for=
"__nav_4_4">
1170 <span class=
"md-nav__icon md-icon"></span>
1173 <ul class=
"md-nav__list" data-md-scrollfix
>
1180 <li class=
"md-nav__item">
1181 <a href=
"../new-api_writing-a-module/" class=
"md-nav__link">
1194 <li class=
"md-nav__item">
1195 <a href=
"../new-api_core/" class=
"md-nav__link">
1208 <li class=
"md-nav__item">
1209 <a href=
"../new-api_dom/" class=
"md-nav__link">
1222 <li class=
"md-nav__item">
1223 <a href=
"../new-api_events/" class=
"md-nav__link">
1236 <li class=
"md-nav__item">
1237 <a href=
"../new-api_ajax/" class=
"md-nav__link">
1250 <li class=
"md-nav__item">
1251 <a href=
"../new-api_dialogs/" class=
"md-nav__link">
1264 <li class=
"md-nav__item">
1265 <a href=
"../new-api_browser/" class=
"md-nav__link">
1266 Browser and Screen Sizes
1278 <li class=
"md-nav__item">
1279 <a href=
"../new-api_ui/" class=
"md-nav__link">
1299 <li class=
"md-nav__item">
1300 <a href=
"../legacy-api/" class=
"md-nav__link">
1313 <li class=
"md-nav__item">
1314 <a href=
"../code-snippets/" class=
"md-nav__link">
1336 <li class=
"md-nav__item md-nav__item--nested">
1341 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_5" type=
"checkbox" id=
"__nav_5" >
1345 <label class=
"md-nav__link" for=
"__nav_5" tabindex=
"0" aria-expanded=
"false">
1347 <span class=
"md-nav__icon md-icon"></span>
1350 <nav class=
"md-nav" aria-label=
"Package Components" data-md-level=
"1">
1351 <label class=
"md-nav__title" for=
"__nav_5">
1352 <span class=
"md-nav__icon md-icon"></span>
1355 <ul class=
"md-nav__list" data-md-scrollfix
>
1362 <li class=
"md-nav__item">
1363 <a href=
"../../package/package-xml/" class=
"md-nav__link">
1377 <li class=
"md-nav__item md-nav__item--nested">
1382 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_5_2" type=
"checkbox" id=
"__nav_5_2" >
1386 <label class=
"md-nav__link" for=
"__nav_5_2" tabindex=
"0" aria-expanded=
"false">
1388 <span class=
"md-nav__icon md-icon"></span>
1391 <nav class=
"md-nav" aria-label=
"PIPs" data-md-level=
"2">
1392 <label class=
"md-nav__title" for=
"__nav_5_2">
1393 <span class=
"md-nav__icon md-icon"></span>
1396 <ul class=
"md-nav__list" data-md-scrollfix
>
1403 <li class=
"md-nav__item">
1404 <a href=
"../../package/pip/" class=
"md-nav__link">
1417 <li class=
"md-nav__item">
1418 <a href=
"../../package/pip/acl-option/" class=
"md-nav__link">
1431 <li class=
"md-nav__item">
1432 <a href=
"../../package/pip/acp-menu/" class=
"md-nav__link">
1445 <li class=
"md-nav__item">
1446 <a href=
"../../package/pip/acp-search-provider/" class=
"md-nav__link">
1459 <li class=
"md-nav__item">
1460 <a href=
"../../package/pip/acp-template/" class=
"md-nav__link">
1473 <li class=
"md-nav__item">
1474 <a href=
"../../package/pip/acp-template-delete/" class=
"md-nav__link">
1487 <li class=
"md-nav__item">
1488 <a href=
"../../package/pip/bbcode/" class=
"md-nav__link">
1501 <li class=
"md-nav__item">
1502 <a href=
"../../package/pip/box/" class=
"md-nav__link">
1515 <li class=
"md-nav__item">
1516 <a href=
"../../package/pip/clipboard-action/" class=
"md-nav__link">
1529 <li class=
"md-nav__item">
1530 <a href=
"../../package/pip/core-object/" class=
"md-nav__link">
1543 <li class=
"md-nav__item">
1544 <a href=
"../../package/pip/cronjob/" class=
"md-nav__link">
1557 <li class=
"md-nav__item">
1558 <a href=
"../../package/pip/database/" class=
"md-nav__link">
1571 <li class=
"md-nav__item">
1572 <a href=
"../../package/pip/event-listener/" class=
"md-nav__link">
1585 <li class=
"md-nav__item">
1586 <a href=
"../../package/pip/file/" class=
"md-nav__link">
1599 <li class=
"md-nav__item">
1600 <a href=
"../../package/pip/file-delete/" class=
"md-nav__link">
1613 <li class=
"md-nav__item">
1614 <a href=
"../../package/pip/language/" class=
"md-nav__link">
1627 <li class=
"md-nav__item">
1628 <a href=
"../../package/pip/media-provider/" class=
"md-nav__link">
1641 <li class=
"md-nav__item">
1642 <a href=
"../../package/pip/menu/" class=
"md-nav__link">
1655 <li class=
"md-nav__item">
1656 <a href=
"../../package/pip/menu-item/" class=
"md-nav__link">
1669 <li class=
"md-nav__item">
1670 <a href=
"../../package/pip/object-type/" class=
"md-nav__link">
1683 <li class=
"md-nav__item">
1684 <a href=
"../../package/pip/object-type-definition/" class=
"md-nav__link">
1685 objectTypeDefinition
1697 <li class=
"md-nav__item">
1698 <a href=
"../../package/pip/option/" class=
"md-nav__link">
1711 <li class=
"md-nav__item">
1712 <a href=
"../../package/pip/page/" class=
"md-nav__link">
1725 <li class=
"md-nav__item">
1726 <a href=
"../../package/pip/pip/" class=
"md-nav__link">
1739 <li class=
"md-nav__item">
1740 <a href=
"../../package/pip/script/" class=
"md-nav__link">
1753 <li class=
"md-nav__item">
1754 <a href=
"../../package/pip/smiley/" class=
"md-nav__link">
1767 <li class=
"md-nav__item">
1768 <a href=
"../../package/pip/sql/" class=
"md-nav__link">
1781 <li class=
"md-nav__item">
1782 <a href=
"../../package/pip/style/" class=
"md-nav__link">
1795 <li class=
"md-nav__item">
1796 <a href=
"../../package/pip/template/" class=
"md-nav__link">
1809 <li class=
"md-nav__item">
1810 <a href=
"../../package/pip/template-delete/" class=
"md-nav__link">
1823 <li class=
"md-nav__item">
1824 <a href=
"../../package/pip/template-listener/" class=
"md-nav__link">
1837 <li class=
"md-nav__item">
1838 <a href=
"../../package/pip/user-group-option/" class=
"md-nav__link">
1851 <li class=
"md-nav__item">
1852 <a href=
"../../package/pip/user-menu/" class=
"md-nav__link">
1865 <li class=
"md-nav__item">
1866 <a href=
"../../package/pip/user-notification-event/" class=
"md-nav__link">
1867 userNotificationEvent
1879 <li class=
"md-nav__item">
1880 <a href=
"../../package/pip/user-option/" class=
"md-nav__link">
1893 <li class=
"md-nav__item">
1894 <a href=
"../../package/pip/user-profile-menu/" class=
"md-nav__link">
1914 <li class=
"md-nav__item">
1915 <a href=
"../../package/database-php-api/" class=
"md-nav__link">
1937 <li class=
"md-nav__item md-nav__item--nested">
1942 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6" type=
"checkbox" id=
"__nav_6" >
1946 <label class=
"md-nav__link" for=
"__nav_6" tabindex=
"0" aria-expanded=
"false">
1948 <span class=
"md-nav__icon md-icon"></span>
1951 <nav class=
"md-nav" aria-label=
"Migration" data-md-level=
"1">
1952 <label class=
"md-nav__title" for=
"__nav_6">
1953 <span class=
"md-nav__icon md-icon"></span>
1956 <ul class=
"md-nav__list" data-md-scrollfix
>
1964 <li class=
"md-nav__item md-nav__item--nested">
1969 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_1" type=
"checkbox" id=
"__nav_6_1" >
1973 <label class=
"md-nav__link" for=
"__nav_6_1" tabindex=
"0" aria-expanded=
"false">
1974 From WoltLab Suite
5.5
1975 <span class=
"md-nav__icon md-icon"></span>
1978 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.5" data-md-level=
"2">
1979 <label class=
"md-nav__title" for=
"__nav_6_1">
1980 <span class=
"md-nav__icon md-icon"></span>
1981 From WoltLab Suite
5.5
1983 <ul class=
"md-nav__list" data-md-scrollfix
>
1990 <li class=
"md-nav__item">
1991 <a href=
"../../migration/wsc55/php/" class=
"md-nav__link">
2004 <li class=
"md-nav__item">
2005 <a href=
"../../migration/wsc55/javascript/" class=
"md-nav__link">
2006 TypeScript and JavaScript
2018 <li class=
"md-nav__item">
2019 <a href=
"../../migration/wsc55/templates/" class=
"md-nav__link">
2032 <li class=
"md-nav__item">
2033 <a href=
"../../migration/wsc55/icons/" class=
"md-nav__link">
2046 <li class=
"md-nav__item">
2047 <a href=
"../../migration/wsc55/dialogs/" class=
"md-nav__link">
2060 <li class=
"md-nav__item">
2061 <a href=
"../../migration/wsc55/comments/" class=
"md-nav__link">
2074 <li class=
"md-nav__item">
2075 <a href=
"../../migration/wsc55/libraries/" class=
"md-nav__link">
2076 Third Party Libraries
2088 <li class=
"md-nav__item">
2089 <a href=
"../../migration/wsc55/deprecations_removals/" class=
"md-nav__link">
2090 Deprecations and Removals
2110 <li class=
"md-nav__item md-nav__item--nested">
2115 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_2" type=
"checkbox" id=
"__nav_6_2" >
2119 <label class=
"md-nav__link" for=
"__nav_6_2" tabindex=
"0" aria-expanded=
"false">
2120 From WoltLab Suite
5.4
2121 <span class=
"md-nav__icon md-icon"></span>
2124 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.4" data-md-level=
"2">
2125 <label class=
"md-nav__title" for=
"__nav_6_2">
2126 <span class=
"md-nav__icon md-icon"></span>
2127 From WoltLab Suite
5.4
2129 <ul class=
"md-nav__list" data-md-scrollfix
>
2136 <li class=
"md-nav__item">
2137 <a href=
"../../migration/wsc54/php/" class=
"md-nav__link">
2150 <li class=
"md-nav__item">
2151 <a href=
"../../migration/wsc54/javascript/" class=
"md-nav__link">
2152 TypeScript and JavaScript
2164 <li class=
"md-nav__item">
2165 <a href=
"../../migration/wsc54/templates/" class=
"md-nav__link">
2178 <li class=
"md-nav__item">
2179 <a href=
"../../migration/wsc54/libraries/" class=
"md-nav__link">
2180 Third Party Libraries
2192 <li class=
"md-nav__item">
2193 <a href=
"../../migration/wsc54/deprecations_removals/" class=
"md-nav__link">
2194 Deprecations and Removals
2214 <li class=
"md-nav__item md-nav__item--nested">
2219 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_3" type=
"checkbox" id=
"__nav_6_3" >
2223 <label class=
"md-nav__link" for=
"__nav_6_3" tabindex=
"0" aria-expanded=
"false">
2224 From WoltLab Suite
5.3
2225 <span class=
"md-nav__icon md-icon"></span>
2228 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.3" data-md-level=
"2">
2229 <label class=
"md-nav__title" for=
"__nav_6_3">
2230 <span class=
"md-nav__icon md-icon"></span>
2231 From WoltLab Suite
5.3
2233 <ul class=
"md-nav__list" data-md-scrollfix
>
2240 <li class=
"md-nav__item">
2241 <a href=
"../../migration/wsc53/php/" class=
"md-nav__link">
2254 <li class=
"md-nav__item">
2255 <a href=
"../../migration/wsc53/session/" class=
"md-nav__link">
2256 Session Handling and Authentication
2268 <li class=
"md-nav__item">
2269 <a href=
"../../migration/wsc53/javascript/" class=
"md-nav__link">
2270 TypeScript and JavaScript
2282 <li class=
"md-nav__item">
2283 <a href=
"../../migration/wsc53/templates/" class=
"md-nav__link">
2296 <li class=
"md-nav__item">
2297 <a href=
"../../migration/wsc53/libraries/" class=
"md-nav__link">
2298 Third Party Libraries
2318 <li class=
"md-nav__item md-nav__item--nested">
2323 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_4" type=
"checkbox" id=
"__nav_6_4" >
2327 <label class=
"md-nav__link" for=
"__nav_6_4" tabindex=
"0" aria-expanded=
"false">
2328 From WoltLab Suite
5.2
2329 <span class=
"md-nav__icon md-icon"></span>
2332 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 5.2" data-md-level=
"2">
2333 <label class=
"md-nav__title" for=
"__nav_6_4">
2334 <span class=
"md-nav__icon md-icon"></span>
2335 From WoltLab Suite
5.2
2337 <ul class=
"md-nav__list" data-md-scrollfix
>
2344 <li class=
"md-nav__item">
2345 <a href=
"../../migration/wsc52/php/" class=
"md-nav__link">
2358 <li class=
"md-nav__item">
2359 <a href=
"../../migration/wsc52/templates/" class=
"md-nav__link">
2360 Templates and Languages
2372 <li class=
"md-nav__item">
2373 <a href=
"../../migration/wsc52/libraries/" class=
"md-nav__link">
2374 Third Party Libraries
2394 <li class=
"md-nav__item md-nav__item--nested">
2399 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_5" type=
"checkbox" id=
"__nav_6_5" >
2403 <label class=
"md-nav__link" for=
"__nav_6_5" tabindex=
"0" aria-expanded=
"false">
2404 From WoltLab Suite
3.1
2405 <span class=
"md-nav__icon md-icon"></span>
2408 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 3.1" data-md-level=
"2">
2409 <label class=
"md-nav__title" for=
"__nav_6_5">
2410 <span class=
"md-nav__icon md-icon"></span>
2411 From WoltLab Suite
3.1
2413 <ul class=
"md-nav__list" data-md-scrollfix
>
2420 <li class=
"md-nav__item">
2421 <a href=
"../../migration/wsc31/php/" class=
"md-nav__link">
2442 <li class=
"md-nav__item md-nav__item--nested">
2447 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_6" type=
"checkbox" id=
"__nav_6_6" >
2451 <label class=
"md-nav__link" for=
"__nav_6_6" tabindex=
"0" aria-expanded=
"false">
2452 From WoltLab Suite
3.0
2453 <span class=
"md-nav__icon md-icon"></span>
2456 <nav class=
"md-nav" aria-label=
"From WoltLab Suite 3.0" data-md-level=
"2">
2457 <label class=
"md-nav__title" for=
"__nav_6_6">
2458 <span class=
"md-nav__icon md-icon"></span>
2459 From WoltLab Suite
3.0
2461 <ul class=
"md-nav__list" data-md-scrollfix
>
2468 <li class=
"md-nav__item">
2469 <a href=
"../../migration/wsc30/php/" class=
"md-nav__link">
2482 <li class=
"md-nav__item">
2483 <a href=
"../../migration/wsc30/javascript/" class=
"md-nav__link">
2496 <li class=
"md-nav__item">
2497 <a href=
"../../migration/wsc30/templates/" class=
"md-nav__link">
2510 <li class=
"md-nav__item">
2511 <a href=
"../../migration/wsc30/css/" class=
"md-nav__link">
2524 <li class=
"md-nav__item">
2525 <a href=
"../../migration/wsc30/package/" class=
"md-nav__link">
2546 <li class=
"md-nav__item md-nav__item--nested">
2551 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_6_7" type=
"checkbox" id=
"__nav_6_7" >
2555 <label class=
"md-nav__link" for=
"__nav_6_7" tabindex=
"0" aria-expanded=
"false">
2557 <span class=
"md-nav__icon md-icon"></span>
2560 <nav class=
"md-nav" aria-label=
"From WCF 2.1" data-md-level=
"2">
2561 <label class=
"md-nav__title" for=
"__nav_6_7">
2562 <span class=
"md-nav__icon md-icon"></span>
2565 <ul class=
"md-nav__list" data-md-scrollfix
>
2572 <li class=
"md-nav__item">
2573 <a href=
"../../migration/wcf21/php/" class=
"md-nav__link">
2586 <li class=
"md-nav__item">
2587 <a href=
"../../migration/wcf21/templates/" class=
"md-nav__link">
2600 <li class=
"md-nav__item">
2601 <a href=
"../../migration/wcf21/css/" class=
"md-nav__link">
2614 <li class=
"md-nav__item">
2615 <a href=
"../../migration/wcf21/package/" class=
"md-nav__link">
2644 <li class=
"md-nav__item md-nav__item--nested">
2649 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_7" type=
"checkbox" id=
"__nav_7" >
2653 <label class=
"md-nav__link" for=
"__nav_7" tabindex=
"0" aria-expanded=
"false">
2655 <span class=
"md-nav__icon md-icon"></span>
2658 <nav class=
"md-nav" aria-label=
"Tutorials" data-md-level=
"1">
2659 <label class=
"md-nav__title" for=
"__nav_7">
2660 <span class=
"md-nav__icon md-icon"></span>
2663 <ul class=
"md-nav__list" data-md-scrollfix
>
2671 <li class=
"md-nav__item md-nav__item--nested">
2676 <input class=
"md-nav__toggle md-toggle " data-md-toggle=
"__nav_7_1" type=
"checkbox" id=
"__nav_7_1" >
2680 <label class=
"md-nav__link" for=
"__nav_7_1" tabindex=
"0" aria-expanded=
"false">
2682 <span class=
"md-nav__icon md-icon"></span>
2685 <nav class=
"md-nav" aria-label=
"Tutorial Series" data-md-level=
"2">
2686 <label class=
"md-nav__title" for=
"__nav_7_1">
2687 <span class=
"md-nav__icon md-icon"></span>
2690 <ul class=
"md-nav__list" data-md-scrollfix
>
2697 <li class=
"md-nav__item">
2698 <a href=
"../../tutorial/series/overview/" class=
"md-nav__link">
2711 <li class=
"md-nav__item">
2712 <a href=
"../../tutorial/series/part_1/" class=
"md-nav__link">
2725 <li class=
"md-nav__item">
2726 <a href=
"../../tutorial/series/part_2/" class=
"md-nav__link">
2739 <li class=
"md-nav__item">
2740 <a href=
"../../tutorial/series/part_3/" class=
"md-nav__link">
2753 <li class=
"md-nav__item">
2754 <a href=
"../../tutorial/series/part_4/" class=
"md-nav__link">
2767 <li class=
"md-nav__item">
2768 <a href=
"../../tutorial/series/part_5/" class=
"md-nav__link">
2781 <li class=
"md-nav__item">
2782 <a href=
"../../tutorial/series/part_6/" class=
"md-nav__link">
2811 <div class=
"md-sidebar md-sidebar--secondary" data-md-component=
"sidebar" data-md-type=
"toc" >
2812 <div class=
"md-sidebar__scrollwrap">
2813 <div class=
"md-sidebar__inner">
2816 <nav class=
"md-nav md-nav--secondary" aria-label=
"Table of contents">
2823 <label class=
"md-nav__title" for=
"__toc">
2824 <span class=
"md-nav__icon md-icon"></span>
2827 <ul class=
"md-nav__list" data-md-component=
"toc" data-md-scrollfix
>
2829 <li class=
"md-nav__item">
2830 <a href=
"#quickstart" class=
"md-nav__link">
2836 <li class=
"md-nav__item">
2837 <a href=
"#dialogs-without-controls" class=
"md-nav__link">
2838 Dialogs Without Controls
2841 <nav class=
"md-nav" aria-label=
"Dialogs Without Controls">
2842 <ul class=
"md-nav__list">
2844 <li class=
"md-nav__item">
2845 <a href=
"#when-to-use" class=
"md-nav__link">
2856 <li class=
"md-nav__item">
2857 <a href=
"#alerts" class=
"md-nav__link">
2861 <nav class=
"md-nav" aria-label=
"Alerts">
2862 <ul class=
"md-nav__list">
2864 <li class=
"md-nav__item">
2865 <a href=
"#when-to-use_1" class=
"md-nav__link">
2876 <li class=
"md-nav__item">
2877 <a href=
"#confirmation" class=
"md-nav__link">
2883 <li class=
"md-nav__item">
2884 <a href=
"#prompts" class=
"md-nav__link">
2888 <nav class=
"md-nav" aria-label=
"Prompts">
2889 <ul class=
"md-nav__list">
2891 <li class=
"md-nav__item">
2892 <a href=
"#code-example" class=
"md-nav__link">
2898 <li class=
"md-nav__item">
2899 <a href=
"#custom-buttons" class=
"md-nav__link">
2903 <nav class=
"md-nav" aria-label=
"Custom Buttons">
2904 <ul class=
"md-nav__list">
2906 <li class=
"md-nav__item">
2907 <a href=
"#customizing-the-primary-button" class=
"md-nav__link">
2908 Customizing the Primary Button
2918 <li class=
"md-nav__item">
2919 <a href=
"#adding-an-extra-button" class=
"md-nav__link">
2920 Adding an Extra Button
2930 <li class=
"md-nav__item">
2931 <a href=
"#interacting-with-dialogs" class=
"md-nav__link">
2932 Interacting with dialogs
2935 <nav class=
"md-nav" aria-label=
"Interacting with dialogs">
2936 <ul class=
"md-nav__list">
2938 <li class=
"md-nav__item">
2939 <a href=
"#opening-and-closing-dialogs" class=
"md-nav__link">
2940 Opening and Closing Dialogs
2945 <li class=
"md-nav__item">
2946 <a href=
"#accessing-the-content" class=
"md-nav__link">
2947 Accessing the Content
2952 <li class=
"md-nav__item">
2953 <a href=
"#disabling-the-submit-button-of-a-dialog" class=
"md-nav__link">
2954 Disabling the Submit Button of a Dialog
2959 <li class=
"md-nav__item">
2960 <a href=
"#managing-an-instance-of-a-dialog" class=
"md-nav__link">
2961 Managing an Instance of a Dialog
2966 <li class=
"md-nav__item">
2967 <a href=
"#event-access" class=
"md-nav__link">
2971 <nav class=
"md-nav" aria-label=
"Event Access">
2972 <ul class=
"md-nav__list">
2974 <li class=
"md-nav__item">
2975 <a href=
"#afterclose" class=
"md-nav__link">
2981 <li class=
"md-nav__item">
2982 <a href=
"#close" class=
"md-nav__link">
2988 <li class=
"md-nav__item">
2989 <a href=
"#cancel" class=
"md-nav__link">
2995 <li class=
"md-nav__item">
2996 <a href=
"#extra" class=
"md-nav__link">
3002 <li class=
"md-nav__item">
3003 <a href=
"#primary" class=
"md-nav__link">
3009 <li class=
"md-nav__item">
3010 <a href=
"#validate" class=
"md-nav__link">
3035 <div class=
"md-content" data-md-component=
"content">
3036 <article class=
"md-content__inner md-typeset">
3045 <h1 id=
"dialogs-javascript-api">Dialogs - JavaScript API
<a class=
"headerlink" href=
"#dialogs-javascript-api" title=
"Permanent link">#
</a></h1>
3046 <p>Modal dialogs are a powerful tool to draw the viewer’s attention to an important message, question or form.
3047 Dialogs naturally interrupt the workflow and prevent the navigation to other sections by making other elements on the page inert.
</p>
3048 <p>WoltLab Suite
6.0 ships with four different types of dialogs.
</p>
3049 <h2 id=
"quickstart">Quickstart
<a class=
"headerlink" href=
"#quickstart" title=
"Permanent link">#
</a></h2>
3050 <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.
3051 Please see the following list to make a quick decision of what kind of dialog you need.
</p>
3053 <li>Is this some kind of error message? Use an alert dialog.
</li>
3054 <li>Are you asking the user to confirm an action? Use a
<a href=
"../components_confirmation/">confirmation dialog
</a>.
</li>
3055 <li>Does the dialog contain form inputs that the user must fill in? Use a prompt dialog.
</li>
3056 <li>Do you want to present information to the user without requiring any action? Use a dialog without controls.
</li>
3058 <h2 id=
"dialogs-without-controls">Dialogs Without Controls
<a class=
"headerlink" href=
"#dialogs-without-controls" title=
"Permanent link">#
</a></h2>
3059 <p>Dialogs may contain just an explanation or extra information that should be presented to the viewer without requiring any further interaction.
3060 The dialog can be closed via the “X” button or by clicking the modal backdrop.
</p>
3061 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3062 <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>
3063 <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>
3064 </code></pre></div></td></tr></table></div>
3065 <h3 id=
"when-to-use">When to Use
<a class=
"headerlink" href=
"#when-to-use" title=
"Permanent link">#
</a></h3>
3066 <p>The short answer is: Don’t.
</p>
3067 <p>Dialogs without controls are an anti-pattern because they only contain content that does not require the modal appearance of a dialog.
3068 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>
3069 <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>
3070 <h2 id=
"alerts">Alerts
<a class=
"headerlink" href=
"#alerts" title=
"Permanent link">#
</a></h2>
3071 <p>Alerts are designed to inform the user of something important that requires no further action by the user.
3072 Typical examples for alerts are error messages or warnings.
</p>
3073 <p>An alert will only provide a single button to acknowledge the dialog and must not contain interactive content.
3074 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>
3075 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3076 <span class=
"normal">2</span>
3077 <span class=
"normal">3</span>
3078 <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>
3079 <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>
3080 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asAlert
</span><span class=
"p">();
</span>
3081 <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>
3082 </code></pre></div></td></tr></table></div>
3083 <p>You can customize the label of the primary button to better explain what will happen next.
3084 This can be useful for alerts that will have a side-effect when closing the dialog, such as redirect to a different page.
</p>
3085 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3086 <span class=
"normal"> 2</span>
3087 <span class=
"normal"> 3</span>
3088 <span class=
"normal"> 4</span>
3089 <span class=
"normal"> 5</span>
3090 <span class=
"normal"> 6</span>
3091 <span class=
"normal"> 7</span>
3092 <span class=
"normal"> 8</span>
3093 <span class=
"normal"> 9</span>
3094 <span class=
"normal">10</span>
3095 <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>
3096 <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>
3097 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asAlert
</span><span class=
"p">({
</span>
3098 <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>
3099 <span class=
"w"> </span><span class=
"p">});
</span>
3101 <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>
3102 <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>
3103 <span class=
"p">});
</span>
3105 <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>
3106 </code></pre></div></td></tr></table></div>
3107 <p>The
<code>primary
</code> event is triggered both by clicking on the primary button and by clicks on the modal backdrop.
</p>
3108 <h3 id=
"when-to-use_1">When to Use
<a class=
"headerlink" href=
"#when-to-use_1" title=
"Permanent link">#
</a></h3>
3109 <p>Alerts are a special type of dialog that use the
<code>role=
"alert"</code> attribute to signal its importance to assistive tools.
3110 Use alerts sparingly when there is no other way to communicate that something did not work as expected.
</p>
3111 <p>Alerts should not be used for cases where you expect an error to happen.
3112 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>
3113 <h2 id=
"confirmation">Confirmation
<a class=
"headerlink" href=
"#confirmation" title=
"Permanent link">#
</a></h2>
3114 <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>
3115 <h2 id=
"prompts">Prompts
<a class=
"headerlink" href=
"#prompts" title=
"Permanent link">#
</a></h2>
3116 <p>The most common type of dialogs are prompts that are similar to confirmation dialogs, but without the restrictions and with a regular title.
3117 These dialogs can be used universally and provide a submit and cancel button by default.
</p>
3118 <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.
3119 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>
3120 <h3 id=
"code-example">Code Example
<a class=
"headerlink" href=
"#code-example" title=
"Permanent link">#
</a></h3>
3121 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3122 <span class=
"normal"> 2</span>
3123 <span class=
"normal"> 3</span>
3124 <span class=
"normal"> 4</span>
3125 <span class=
"normal"> 5</span>
3126 <span class=
"normal"> 6</span>
3127 <span class=
"normal"> 7</span>
3128 <span class=
"normal"> 8</span>
3129 <span class=
"normal"> 9</span>
3130 <span class=
"normal">10</span>
3131 <span class=
"normal">11</span>
3132 <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>
3134 <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>
3135 <span class=
"p"><</span><span class=
"nt">dl
</span><span class=
"p">></span>
3136 <span class=
"p"><</span><span class=
"nt">dt
</span><span class=
"p">></span>
3137 <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>
3138 <span class=
"p"></
</span><span class=
"nt">dt
</span><span class=
"p">></span>
3139 <span class=
"p"><</span><span class=
"nt">dd
</span><span class=
"p">></span>
3140 <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>
3141 <span class=
"p"></
</span><span class=
"nt">dd
</span><span class=
"p">></span>
3142 <span class=
"p"></
</span><span class=
"nt">dl
</span><span class=
"p">></span>
3143 <span class=
"p"></
</span><span class=
"nt">template
</span><span class=
"p">></span>
3144 </code></pre></div></td></tr></table></div>
3145 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3146 <span class=
"normal">2</span>
3147 <span class=
"normal">3</span>
3148 <span class=
"normal">4</span>
3149 <span class=
"normal">5</span>
3150 <span class=
"normal">6</span>
3151 <span class=
"normal">7</span>
3152 <span class=
"normal">8</span>
3153 <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>
3154 <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>
3156 <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>
3157 <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>
3159 <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>
3160 <span class=
"w"> </span><span class=
"p">});
</span>
3161 <span class=
"p">});
</span>
3162 </code></pre></div></td></tr></table></div>
3163 <h3 id=
"custom-buttons">Custom Buttons
<a class=
"headerlink" href=
"#custom-buttons" title=
"Permanent link">#
</a></h3>
3164 <p>The
<code>asPrompt()
</code> call permits some level of customization of the form control buttons.
</p>
3165 <h4 id=
"customizing-the-primary-button">Customizing the Primary Button
<a class=
"headerlink" href=
"#customizing-the-primary-button" title=
"Permanent link">#
</a></h4>
3166 <p>The
<code>primary
</code> option is used to change the default label of the primary button.
</p>
3167 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3168 <span class=
"normal">2</span>
3169 <span class=
"normal">3</span>
3170 <span class=
"normal">4</span>
3171 <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>
3172 <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>
3173 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asPrompt
</span><span class=
"p">({
</span>
3174 <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>
3175 <span class=
"w"> </span><span class=
"p">});
</span>
3176 </code></pre></div></td></tr></table></div>
3177 <h3 id=
"adding-an-extra-button">Adding an Extra Button
<a class=
"headerlink" href=
"#adding-an-extra-button" title=
"Permanent link">#
</a></h3>
3178 <p>The extra button has no default label, enabling it requires you to provide a readable name.
</p>
3179 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3180 <span class=
"normal"> 2</span>
3181 <span class=
"normal"> 3</span>
3182 <span class=
"normal"> 4</span>
3183 <span class=
"normal"> 5</span>
3184 <span class=
"normal"> 6</span>
3185 <span class=
"normal"> 7</span>
3186 <span class=
"normal"> 8</span>
3187 <span class=
"normal"> 9</span>
3188 <span class=
"normal">10</span>
3189 <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>
3190 <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>
3191 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">asPrompt
</span><span class=
"p">({
</span>
3192 <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>
3193 <span class=
"w"> </span><span class=
"p">});
</span>
3195 <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>
3196 <span class=
"w"> </span><span class=
"c1">// The extra button does nothing on its own. If you want
</span>
3197 <span class=
"w"> </span><span class=
"c1">// to close the button after performing an action you’ll
</span>
3198 <span class=
"w"> </span><span class=
"c1">// need to call `dialog.close()` yourself.
</span>
3199 <span class=
"p">});
</span>
3200 </code></pre></div></td></tr></table></div>
3201 <h2 id=
"interacting-with-dialogs">Interacting with dialogs
<a class=
"headerlink" href=
"#interacting-with-dialogs" title=
"Permanent link">#
</a></h2>
3202 <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>
3203 <h3 id=
"opening-and-closing-dialogs">Opening and Closing Dialogs
<a class=
"headerlink" href=
"#opening-and-closing-dialogs" title=
"Permanent link">#
</a></h3>
3204 <p>You can open a dialog through the
<code>.show()
</code> method that expects the title of the dialog as the only argument.
3205 Check the
<code>.open
</code> property to determine if the dialog is currently open.
</p>
3206 <p>Programmatically closing a dialog is possibly through
<code>.close()
</code>.
</p>
3207 <h3 id=
"accessing-the-content">Accessing the Content
<a class=
"headerlink" href=
"#accessing-the-content" title=
"Permanent link">#
</a></h3>
3208 <p>All contents of a dialog exists within a child element that can be accessed through the
<code>content
</code> property.
</p>
3209 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3210 <span class=
"normal">2</span>
3211 <span class=
"normal">3</span>
3212 <span class=
"normal">4</span>
3213 <span class=
"normal">5</span>
3214 <span class=
"normal">6</span>
3215 <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>
3216 <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>
3217 <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>
3218 <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>
3220 <span class=
"c1">// Find a text input inside the dialog.
</span>
3221 <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>
3222 </code></pre></div></td></tr></table></div>
3223 <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>
3224 <p>You can prevent the dialog submission until a condition is met, allowing you to dynamically enable or disable the button at will.
</p>
3225 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3226 <span class=
"normal">2</span>
3227 <span class=
"normal">3</span>
3228 <span class=
"normal">4</span>
3229 <span class=
"normal">5</span>
3230 <span class=
"normal">6</span>
3231 <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>
3233 <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>
3234 <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>
3235 <span class=
"w"> </span><span class=
"c1">// Block the dialog submission unless the checkbox is checked.
</span>
3236 <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>
3237 <span class=
"p">});
</span>
3238 </code></pre></div></td></tr></table></div>
3239 <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>
3240 <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>.
3241 The new implementation requires to you to keep track of the dialog on your own.
</p>
3242 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3243 <span class=
"normal"> 2</span>
3244 <span class=
"normal"> 3</span>
3245 <span class=
"normal"> 4</span>
3246 <span class=
"normal"> 5</span>
3247 <span class=
"normal"> 6</span>
3248 <span class=
"normal"> 7</span>
3249 <span class=
"normal"> 8</span>
3250 <span class=
"normal"> 9</span>
3251 <span class=
"normal">10</span>
3252 <span class=
"normal">11</span>
3253 <span class=
"normal">12</span>
3254 <span class=
"normal">13</span>
3255 <span class=
"normal">14</span>
3256 <span class=
"normal">15</span>
3257 <span class=
"normal">16</span>
3258 <span class=
"normal">17</span>
3259 <span class=
"normal">18</span>
3260 <span class=
"normal">19</span>
3261 <span class=
"normal">20</span>
3262 <span class=
"normal">21</span>
3263 <span class=
"normal">22</span>
3264 <span class=
"normal">23</span>
3265 <span class=
"normal">24</span>
3266 <span class=
"normal">25</span>
3267 <span class=
"normal">26</span>
3268 <span class=
"normal">27</span>
3269 <span class=
"normal">28</span>
3270 <span class=
"normal">29</span>
3271 <span class=
"normal">30</span>
3272 <span class=
"normal">31</span>
3273 <span class=
"normal">32</span>
3274 <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>
3275 <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>
3277 <span class=
"w"> </span><span class=
"kr">constructor
</span><span class=
"p">()
</span><span class=
"w"> </span><span class=
"p">{
</span>
3278 <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>
3279 <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>
3280 <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>
3281 <span class=
"w"> </span><span class=
"p">});
</span>
3282 <span class=
"w"> </span><span class=
"p">}
</span>
3284 <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>
3285 <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>
3287 <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>
3288 <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>
3289 <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>
3290 <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>
3291 <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>
3292 <span class=
"w"> </span><span class=
"p">}
</span>
3294 <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>
3295 <span class=
"w"> </span><span class=
"p">}
</span>
3297 <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>
3298 <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>
3299 <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>
3300 <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>
3301 <span class=
"w"> </span><span class=
"p">.
</span><span class=
"nx">withoutControls
</span><span class=
"p">();
</span>
3302 <span class=
"w"> </span><span class=
"p">}
</span>
3304 <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>
3305 <span class=
"w"> </span><span class=
"p">}
</span>
3306 <span class=
"p">}
</span>
3307 </code></pre></div></td></tr></table></div>
3308 <h3 id=
"event-access">Event Access
<a class=
"headerlink" href=
"#event-access" title=
"Permanent link">#
</a></h3>
3309 <p>You can bind event listeners to specialized events to get notified of events and to modify its behavior.
</p>
3310 <h4 id=
"afterclose"><code>afterClose
</code><a class=
"headerlink" href=
"#afterclose" title=
"Permanent link">#
</a></h4>
3311 <p><em>This event cannot be canceled.
</em></p>
3312 <p>Fires when the dialog has closed.
</p>
3313 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3314 <span class=
"normal">2</span>
3315 <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>
3316 <span class=
"w"> </span><span class=
"c1">// Dialog was closed.
</span>
3317 <span class=
"p">});
</span>
3318 </code></pre></div></td></tr></table></div>
3319 <h4 id=
"close"><code>close
</code><a class=
"headerlink" href=
"#close" title=
"Permanent link">#
</a></h4>
3320 <p>Fires when the dialog is about to close.
</p>
3321 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3322 <span class=
"normal">2</span>
3323 <span class=
"normal">3</span>
3324 <span class=
"normal">4</span>
3325 <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>
3326 <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>
3327 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span>
3328 <span class=
"w"> </span><span class=
"p">}
</span>
3329 <span class=
"p">});
</span>
3330 </code></pre></div></td></tr></table></div>
3331 <h4 id=
"cancel"><code>cancel
</code><a class=
"headerlink" href=
"#cancel" title=
"Permanent link">#
</a></h4>
3332 <p>Fires only when there is a “Cancel” button and the user has either pressed that button or clicked on the modal backdrop.
3333 The dialog will close if the event is not canceled.
</p>
3334 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3335 <span class=
"normal">2</span>
3336 <span class=
"normal">3</span>
3337 <span class=
"normal">4</span>
3338 <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>
3339 <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>
3340 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span>
3341 <span class=
"w"> </span><span class=
"p">}
</span>
3342 <span class=
"p">});
</span>
3343 </code></pre></div></td></tr></table></div>
3344 <h4 id=
"extra"><code>extra
</code><a class=
"headerlink" href=
"#extra" title=
"Permanent link">#
</a></h4>
3345 <p><em>This event cannot be canceled.
</em></p>
3346 <p>Fires when an extra button is present and the button was clicked by the user.
3347 This event does nothing on its own and is supported for dialogs of type “Prompt” only.
</p>
3348 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3349 <span class=
"normal">2</span>
3350 <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>
3351 <span class=
"w"> </span><span class=
"c1">// The extra button was clicked.
</span>
3352 <span class=
"p">});
</span>
3353 </code></pre></div></td></tr></table></div>
3354 <h4 id=
"primary"><code>primary
</code><a class=
"headerlink" href=
"#primary" title=
"Permanent link">#
</a></h4>
3355 <p><em>This event cannot be canceled.
</em></p>
3356 <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>
3357 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal">1</span>
3358 <span class=
"normal">2</span>
3359 <span class=
"normal">3</span>
3360 <span class=
"normal">4</span>
3361 <span class=
"normal">5</span>
3362 <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>
3363 <span class=
"w"> </span><span class=
"c1">// The primary action button was clicked or the
</span>
3364 <span class=
"w"> </span><span class=
"c1">// form was submitted through keyboard controls.
</span>
3365 <span class=
"w"> </span><span class=
"c1">//
</span>
3366 <span class=
"w"> </span><span class=
"c1">// The `validate` event has completed successfully.
</span>
3367 <span class=
"p">});
</span>
3368 </code></pre></div></td></tr></table></div>
3369 <h4 id=
"validate"><code>validate
</code><a class=
"headerlink" href=
"#validate" title=
"Permanent link">#
</a></h4>
3370 <p>Fires only when there is a form and the user has pressed the primary action button or submitted the form through keyboard controls.
3371 Canceling this event is interpreted as a form validation failure.
</p>
3372 <div class=
"highlight"><table class=
"highlighttable"><tr><td class=
"linenos"><div class=
"linenodiv"><pre><span></span><span class=
"normal"> 1</span>
3373 <span class=
"normal"> 2</span>
3374 <span class=
"normal"> 3</span>
3375 <span class=
"normal"> 4</span>
3376 <span class=
"normal"> 5</span>
3377 <span class=
"normal"> 6</span>
3378 <span class=
"normal"> 7</span>
3379 <span class=
"normal"> 8</span>
3380 <span class=
"normal"> 9</span>
3381 <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>
3382 <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>
3384 <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>
3385 <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>
3386 <span class=
"w"> </span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">preventDefault
</span><span class=
"p">();
</span>
3388 <span class=
"w"> </span><span class=
"c1">// Display an inline error message.
</span>
3389 <span class=
"w"> </span><span class=
"p">}
</span>
3390 <span class=
"p">});
</span>
3391 </code></pre></div></td></tr></table></div>
3394 <div class=
"md-source-file">
3416 <footer class=
"md-footer">
3418 <div class=
"md-footer-meta md-typeset">
3419 <div class=
"md-footer-meta__inner md-grid">
3420 <div class=
"md-copyright">
3422 <div class=
"md-copyright__highlight">
3423 Copyright ©
2020 WoltLab GmbH
3428 <a href=
"https://squidfunk.github.io/mkdocs-material/" target=
"_blank" rel=
"noopener">
3434 <div class=
"md-copyright">
3435 <a href=
"https://www.woltlab.com/legal-notice/">Legal Notice
</a>
3436 <a href=
"https://www.woltlab.com/privacy-policy/">Privacy Policy
</a>
3444 <div class=
"md-dialog" data-md-component=
"dialog">
3445 <div class=
"md-dialog__inner md-typeset"></div>
3448 <script id=
"__config" type=
"application/json">{
"base":
"../..",
"features": [
"navigation.tracking"],
"search":
"../../assets/javascripts/workers/search.e5c33ebb.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>
3451 <script src=
"../../assets/javascripts/bundle.51d95adb.min.js"></script>