Add openModal method to ChooserFactory

pull/9445/head
Matt Westcott 2023-01-11 21:46:26 +00:00
rodzic 87cb57362f
commit d56c25704b
5 zmienionych plików z 37 dodań i 0 usunięć

Wyświetl plik

@ -134,6 +134,7 @@ export class Chooser {
export class ChooserFactory {
widgetClass = Chooser;
chooserModalClass = ChooserModal;
constructor(html, idPattern, opts = {}) {
this.html = html;
@ -150,4 +151,23 @@ export class ChooserFactory {
chooser.setState(initialState);
return chooser;
}
getModalOptions() {
return null;
}
openModal(callback, customOptions) {
if (!this.modal) {
if (!this.opts.modalUrl) {
throw new Error(
'ChooserFactory must be passed a modalUrl option if openModal is used',
);
}
// eslint-disable-next-line new-cap
this.modal = new this.chooserModalClass(this.opts.modalUrl);
}
const options = { ...this.getModalOptions(), ...customOptions };
this.modal.open(options, callback);
}
}

Wyświetl plik

@ -45,6 +45,18 @@ window.PageChooser = PageChooser;
class PageChooserFactory extends ChooserFactory {
widgetClass = PageChooser;
// eslint-disable-next-line no-undef
chooserModalClass = PageChooserModal;
getModalOptions() {
return {
modelNames: this.opts.modelNames,
targetPages: this.opts.targetPages,
matchSubclass: this.opts.matchSubclass,
canChooseRoot: this.opts.canChooseRoot,
userPerms: this.opts.userPerms,
};
}
}
window.PageChooserFactory = PageChooserFactory;

Wyświetl plik

@ -8,6 +8,8 @@ window.DocumentChooser = DocumentChooser;
class DocumentChooserFactory extends ChooserFactory {
widgetClass = DocumentChooser;
// eslint-disable-next-line no-undef
chooserModalClass = DocumentChooserModal;
}
window.DocumentChooserFactory = DocumentChooserFactory;

Wyświetl plik

@ -38,6 +38,8 @@ window.ImageChooser = ImageChooser;
class ImageChooserFactory extends ChooserFactory {
widgetClass = ImageChooser;
// eslint-disable-next-line no-undef
chooserModalClass = ImageChooserModal;
}
window.ImageChooserFactory = ImageChooserFactory;

Wyświetl plik

@ -25,6 +25,7 @@ window.SnippetChooser = SnippetChooser;
class SnippetChooserFactory extends ChooserFactory {
widgetClass = SnippetChooser;
chooserModalClass = SnippetChooserModal;
}
window.SnippetChooserFactory = SnippetChooserFactory;