Commit Graph

828 Commits

Author SHA1 Message Date
Jake Dallimore 6b214f1c81 MDL-79384 core: fix modal footer logic when rendering it from template
If the footer property is a Templates.render() promise, and the modal is
set to show immediately (show=true), the show() logic - which contains
the footer show/hide logic - can run before the footer content is set
(i.e. before the promise chain is complete). In such cases, the footer
will be marked as hidden and must be made visible again.
2023-09-18 16:04:58 +08:00
Ilya Tregubov f5050ab31f Merge branch 'MDL-78255-master' of https://github.com/davewoloszyn/moodle 2023-09-14 17:50:24 +08:00
Huong Nguyen 4ead50e696 MDL-78267 core: Partial course sharing for MoodleNet 2023-09-14 14:59:50 +07:00
Jun Pataleta 9cd44cbf4c Merge branch 'MDL-79356-master' of https://github.com/HuongNV13/moodle 2023-09-14 11:52:12 +08:00
Huong Nguyen e1cff527b9 MDL-79356 core: Convert MoodleNet modals to use new static methods 2023-09-14 09:44:19 +07:00
Jun Pataleta f8b16ea91f Merge branch 'MDL-78826-master' of https://github.com/roland04/moodle 2023-09-13 19:28:25 +08:00
Andrew Nicols 82761c582c MDL-78324 core: Deprecate core/modal_factory 2023-09-09 00:05:04 +08:00
Andrew Nicols 48bc688ccd MDL-78324 core: Convert modals to use new static methods
This commit takes all modals which were not using the legacy
ModalFactory.create triggers and migrates them to the new Modal.create
method.
2023-09-09 00:04:11 +08:00
Andrew Nicols a797020524 MDL-78324 core: Convert core/tag to esm
This module is converted to ESM in preparation for simplification of
Modal instantiation.
2023-09-09 00:04:03 +08:00
Andrew Nicols 98f0aebde6 MDL-78324 gradereport_singleview: Update modal usage to drop factory use
This change includes some additional simplifications to support this
change, including conversion from done/fail to then/catch, and some
simplification of Promise usage.

There were a number of cases of nested Modal usage which have been
removed.
2023-09-09 00:04:03 +08:00
Andrew Nicols a54ba682a4 MDL-78324 core: Create modal factory in core/modal
This commits adds a new static `create()` method to replace the existing
ModalFactory.create approach.

This allows the creation of a modal to now be simplified to:

```js
import SomeModalClass from 'mymodule/wherever';

// ...

const modal = await SomeModalClass.create();
```

Prior to this change the modal was instantiated via the ModalFactory,
but the Type of modal was typically pulled from the ModalClass itself
via the registry. Essentially it used to require three modules to
instantiate a single Modal, and now it takes just one.
2023-09-08 23:49:13 +08:00
Andrew Nicols 9073225c98 MDL-78324 core: Simplify modal configuration
This change moves configuration of the modal from the ModalFactory to
a new `configure` function on the Modal class which does exactly the
same thing. This means that the API is fully encapsulated within the
Modal, and an individual Modal can specify its own configuration more
easily.

This change will make it much easier to instantiate new modals,
significantly reducing boilerplate in many instances.

This change allows modals to extend the `configure()` method to provide
their own defaults, or to override standard ones.

```js
class MyModal extends Modal {
    static TYPE = 'my_module/mymodal';
    static TEMPLATE = 'my_module/mymodal';

    configure(params = {}) {
        // Override the default value for large.
        params.large = true;

        super.configure(params);

        // Handle our own properties here.
        const {
          makeSound = true,
        } = params;

        this.setSoundEmitter(makeSound);
    }
```

Prior to this change, it was common to see this happen in the _calling_
code, rather than the modal itself.
2023-09-08 23:49:12 +08:00
Ferran Recio c87fe6036d MDL-78826 javascript: add dropdown js controls 2023-09-08 10:23:13 +02:00
Andrew Nicols 4bfd20983d MDL-78779 core: Do not re-render combo searchresults if term unchanged 2023-09-06 12:28:36 +08:00
Andrew Nicols c7a05345b6 MDL-78779 core: Wrap combobox debounce in pending Promise
This addresses a random failure with the combobox search results where
the debounce causes the results to be shown, and then the same search
result is returned again, re-rendered, and replaced after Behat has
moved on.
2023-09-06 12:27:45 +08:00
Mark Johnson 4b160a7c7b MDL-72321 datafilter: Stop disabling jointype field
This was causing behat test failures due to the test trying to
set the disabled jointype field before the filter type was selected.
2023-09-01 23:43:20 +08:00
David Woloszyn ce706f4c3e MDL-78255 lib: Upgrade emoji-data to 15.0.1 2023-09-01 19:01:04 +10:00
Ilya Tregubov e90d73974a Merge branch 'MDL-79198-master' of https://github.com/junpataleta/moodle 2023-09-01 11:03:22 +08:00
Andrew Nicols 1ce54ee87e Merge branch 'MDL-72321_master-squashed' of https://github.com/marxjohnson/moodle 2023-08-31 23:02:35 +08:00
Mark Johnson 2e02264945 MDL-72321 core: Support disabled options in form-autocomplete
Autocomplete fields can now include disabled options in the suggestion
list. When calling .enchance() on a select list with disabled options,
those options will be added to the autocomplete suggestions with the
aria-disabled arribute set, and will not be selectable.

Datafilters using the autocomplete element can also hook into this by
including disabled options in their list of values.
2023-08-31 15:00:38 +01:00
Mark Johnson 7091a3210c MDL-72321 core: Allow datafilters to specify a subset of join types
A datafilter can now specify a subset of jointypes that it supports from
the default list of all, any or none. By default all options will be
available, but an individual filter can ovveride this to include just
those options that make sense for the filter. If only one option is
allowed, the select list will be hidden to simplify the UI.
2023-08-31 15:00:37 +01:00
Nathan Nguyen ef8c11328b MDL-72321 core: Add binary datafilter
This adds a new datafilter type which provides a single binary choice
(for example yes/no).
2023-08-31 15:00:37 +01:00
Sara Arjona 2ec4ac7e4a Merge branch 'MDL-78612-master' of https://github.com/andrewnicols/moodle 2023-08-30 17:55:32 +02:00
Andrew Nicols c85cca3e33 MDL-78612 core: Wrap modal_factory.create in pendingPromise 2023-08-30 12:41:37 +08:00
Jun Pataleta 59fff99a94 MDL-79198 core: Increment static variable properly 2023-08-29 16:44:16 +08:00
Jun Pataleta cc7bc1a553 Merge branch 'MDL-79064-master' of https://github.com/andrewnicols/moodle 2023-08-29 13:32:45 +08:00
Andrew Nicols af7719682d MDL-79064 core: Update all get_strings as uses 2023-08-29 10:57:54 +08:00
Andrew Nicols fe80eecc44 MDL-79064 core: Improve Native promise support
As we migrate to primarily using natives promises, we should make it
easier to use and consume them.

This change:
- updates core/str to add new methods for:
  - getString
  - getStrings
- accept Native promises into Modal setters
2023-08-29 10:57:06 +08:00
Sara Arjona 67f225429b Merge branch 'MDL-78248' of https://github.com/paulholden/moodle 2023-08-28 13:52:50 +02:00
Paul Holden c1a3e17a0b MDL-78248 libraries: upgrade to version 4.4.0 of ChartJS. 2023-08-24 17:22:09 +01:00
Mark Johnson e81a8381a8 MDL-72321 core: Allow datafilters to be marked required
Required datafilters cannot be removed. There will be no remove button
on the filter row, and the "Clear filters" button will ignore them.
2023-08-24 11:09:37 +01:00
Mark Johnson 1d64f468d1 MDL-72321 core: Allow custom filteroptions to be passed by datafilters
This allows datafilters to include additional fields other than the standard list of selected values.
For example they may wish to include an additional select or checkbox to change how the values are used in the resulting query.
2023-08-24 11:09:34 +01:00
Ilya Tregubov 4bed4ea8f3 Merge branch 'MDL-71212-collapse-expand-all-sections-in-course-index-drawer' of https://github.com/stopfstedt/moodle 2023-08-24 09:22:23 +08:00
Safat 4b9438431e MDL-75318 core: JS updates for sharing course to MoodleNet 2023-08-22 11:00:06 +10:00
Stefan Topfstedt 7b04638c52 MDL-71212 core_course: adds controls to the course index drawer. 2023-08-18 11:00:55 -07:00
Jun Pataleta 4ef1f2fabd Merge branch 'MDL-78962' of https://github.com/timhunt/moodle 2023-08-10 18:32:22 +07:00
Tim Hunt 788580c9dd MDL-78962 core/loadingicon: remove jQuery requirement in the API 2023-08-09 21:10:13 +01:00
Jun Pataleta 51e86626d1 Merge branch 'MDL-77174-master' of https://github.com/andrewnicols/moodle 2023-08-08 15:15:32 +08:00
Ferran Recio 105324e6fd MDL-78665 output: add subpanels to action menu
Many times the action menu item triggers modals to show more information
to the user. In most cases this is enough, however, a modal will close
the menu and the user is not able to see the modal content in the page
context. To solve this now menus can define subpanels that are displayed
next the the menu item when the item is focused or hover. This will be
used to group options like the group mode in activities or to replace
the adhoc solution implemented to select language in the user menu.
2023-08-04 16:09:29 +02:00
Ferran Recio 3b53616321 MDL-78665 libs: page helpers global amd module
Add a new global module to get information from the page. Some methods
are just local functions moved to as a global library. For example, the
drawers isSmall or isLarge to detect the page width. The other funcionts
added are to detect focusable elements and they are needed to loop on
elements, especially when accessibility keyboard navigation is implemented.
2023-08-04 16:07:59 +02:00
Mathew May a4b3b0d044 MDL-77991 core: Move tertiary search dropdown component 2023-08-03 09:07:18 +08:00
Andrew Nicols cad1c7d008 MDL-77174 core: Modal z-index calc should ignore hidden items
When an AMD dialogue is opened from a YUI dialogue, the YUI dialogue is
not actually removed from the DOM, but was counted in z-index
calculation.

We need to stop including it otherwise nested AMD => YUI => AMD
dialogues get broken.
2023-07-31 10:57:09 +08:00
Andrew Nicols dbf3bccf99 MDL-77174 core: Add support for button sources to modal utility 2023-07-31 10:56:22 +08:00
Andrew Nicols 715902c9c0 MDL-77174 core: Provide default anchor support to modal utility 2023-07-31 10:56:22 +08:00
Andrew Nicols 96dfb8382e MDL-77174 core: Provide default strings for modal utility 2023-07-31 10:56:22 +08:00
Andrew Nicols 42d3e7de14 MDL-77174 core: Add getElement to core/normalise 2023-07-31 10:56:04 +08:00
Jun Pataleta 844257a539 Merge branch 'MDL-76046-master' of https://github.com/stevandoMoodle/moodle 2023-07-13 16:51:37 +02:00
Ilya Tregubov 09c7cd98f4 Merge branch 'MDL-73213' of https://github.com/pedrojordao/moodle 2023-07-13 16:49:58 +02:00
Andrew Nicols 3ff84d3eb7 MDL-78316 core: Improve jsdoc typedef for icons 2023-07-07 16:31:54 +08:00
Andrew Nicols f57af194fb MDL-78316 core: Update async promises
Writing a Promise as:
```
const promise = new Promise(async (resolve, reject) => {
  return await 'foo';
});
```

Is equivalent to an IIFE:
```
const promise = (async () => {
  return await 'foo';
})();
```

A recent change introduced by MDL-74301 picks this up.

This commit addresses this flagged issue.
2023-07-07 16:23:26 +08:00