diff --git a/.upgradenotes/MDL-86015-2025071423520976.yml b/.upgradenotes/MDL-86015-2025071423520976.yml new file mode 100644 index 00000000000..d22ea1b8a0f --- /dev/null +++ b/.upgradenotes/MDL-86015-2025071423520976.yml @@ -0,0 +1,8 @@ +issueNumber: MDL-86015 +notes: + core: + - message: >- + The `\core\output\local\dropdown\dialog` class constructor now accepts a + `$definition['autoclose']` parameter to define autoclose behaviour of + the element + type: changed diff --git a/lib/classes/output/local/dropdown/dialog.php b/lib/classes/output/local/dropdown/dialog.php index 18aa714fd75..926e6e49f7e 100644 --- a/lib/classes/output/local/dropdown/dialog.php +++ b/lib/classes/output/local/dropdown/dialog.php @@ -74,6 +74,10 @@ class dialog implements named_templatable, renderable { */ protected $dropdownwidth = self::WIDTH['default']; + /** + * @var string dropdown autoclose behaviour. + */ + protected $autoclose = 'true'; /** * @var array extra HTML attributes (attribute => value). @@ -93,6 +97,7 @@ class dialog implements named_templatable, renderable { * - buttonclasses: the button CSS classes. * - dialogwidth: the dropdown width. * - dropdownposition: the dropdown position. + * - autoclose: dropdown autoclose behaviour ('true' (default), 'false', 'inside', 'outside') * - extras: extra HTML attributes (attribute => value). * * @param string $buttoncontent the button content @@ -117,6 +122,9 @@ class dialog implements named_templatable, renderable { if (isset($definition['dropdownposition'])) { $this->dropdownposition = $definition['dropdownposition']; } + if (isset($definition['autoclose'])) { + $this->autoclose = $definition['autoclose']; + } } /** @@ -231,6 +239,7 @@ class dialog implements named_templatable, renderable { 'classes' => $this->classes, 'buttonclasses' => $this->buttonclasses, 'dialogclasses' => $this->dropdownwidth, + 'autoclose' => $this->autoclose, 'extras' => $extras, ]; if ($this->disabled) { diff --git a/lib/templates/local/dropdown/dialog.mustache b/lib/templates/local/dropdown/dialog.mustache index 554f7c1fa68..063a3ff7541 100644 --- a/lib/templates/local/dropdown/dialog.mustache +++ b/lib/templates/local/dropdown/dialog.mustache @@ -77,6 +77,7 @@ role="button" id="{{#buttonid}}{{buttonid}}{{/buttonid}}{{^buttonid}}dropdownDialog{{uniqid}}{{/buttonid}}" data-bs-toggle="dropdown" + data-bs-auto-close="{{#autoclose}}{{autoclose}}{{/autoclose}}{{^autoclose}}true{{/autoclose}}" aria-haspopup="true" aria-expanded="false" data-for="dropdowndialog_button" diff --git a/mod/assign/classes/output/grading_actionmenu.php b/mod/assign/classes/output/grading_actionmenu.php index eb5f42341e0..190dea8484f 100644 --- a/mod/assign/classes/output/grading_actionmenu.php +++ b/mod/assign/classes/output/grading_actionmenu.php @@ -390,6 +390,7 @@ class grading_actionmenu implements templatable, renderable { [ 'classes' => 'extrafilters d-flex', 'buttonclasses' => 'btn d-flex border-none align-items-center dropdown-toggle p-0', + 'autoclose' => 'outside', ] ); } diff --git a/mod/assign/templates/actionbar/grading/extra_filters_dropdown_body.mustache b/mod/assign/templates/actionbar/grading/extra_filters_dropdown_body.mustache index 98bdf4de27c..c33949c8401 100644 --- a/mod/assign/templates/actionbar/grading/extra_filters_dropdown_body.mustache +++ b/mod/assign/templates/actionbar/grading/extra_filters_dropdown_body.mustache @@ -71,7 +71,7 @@ {{#filters}} {{#markingworkflow}} -