Improved clarity for users when choosing seasons

The last modal now says "create entry" instead of "Ok"
This commit is contained in:
ltctceplrm 2026-01-14 20:15:28 +01:00
parent e8154bd381
commit 59919f9461
4 changed files with 17 additions and 8 deletions

View file

@ -1,7 +1,7 @@
import type MediaDbPlugin from '../main';
import type { MediaTypeModel } from '../models/MediaTypeModel';
import type { SelectModalData, SelectModalOptions } from '../utils/ModalHelper';
import { SELECT_MODAL_OPTIONS_DEFAULT } from '../utils/ModalHelper';
import { SELECTMODALOPTIONSDEFAULT } from '../utils/ModalHelper';
import { SelectModal } from './SelectModal';
export class MediaDbSearchResultModal extends SelectModal<MediaTypeModel> {
@ -13,18 +13,17 @@ export class MediaDbSearchResultModal extends SelectModal<MediaTypeModel> {
submitCallback?: (res: SelectModalData) => void;
closeCallback?: (err?: Error) => void;
skipCallback?: () => void;
submitButtonText: string;
constructor(plugin: MediaDbPlugin, selectModalOptions: SelectModalOptions) {
selectModalOptions = Object.assign({}, SELECT_MODAL_OPTIONS_DEFAULT, selectModalOptions);
selectModalOptions = Object.assign({}, SELECTMODALOPTIONSDEFAULT, selectModalOptions);
super(plugin.app, selectModalOptions.elements ?? [], selectModalOptions.multiSelect);
this.plugin = plugin;
this.title = selectModalOptions.modalTitle ?? '';
this.description = 'Select one or multiple search results.';
this.addSkipButton = selectModalOptions.skipButton ?? false;
this.submitButtonText = 'Ok';
this.busy = false;
this.sendCallback = false;
}

View file

@ -18,8 +18,9 @@ export class MediaDbSeasonSelectModal extends SelectModal<SeasonSelectModalEleme
super(plugin.app, seasons, multiSelect);
this.plugin = plugin;
this.seriesName = seriesName;
this.title = `Select Season(s) for${seriesName ? `: ${seriesName}` : ''}`;
this.title = `Select seasons for${seriesName ? ` ${seriesName}` : ''}`;
this.description = 'Select one or more seasons to create notes for.';
this.submitButtonText = 'Create Entry';
}
renderElement(season: SeasonSelectModalElement, el: HTMLElement): void {

View file

@ -12,6 +12,7 @@ export abstract class SelectModal<T> extends Modal {
cancelButton?: ButtonComponent;
skipButton?: ButtonComponent;
submitButton?: ButtonComponent;
submitButtonText: string;
elementWrapper?: HTMLDivElement;
@ -25,6 +26,7 @@ export abstract class SelectModal<T> extends Modal {
this.title = '';
this.description = '';
this.addSkipButton = false;
this.submitButtonText = 'Ok';
this.cancelButton = undefined;
this.skipButton = undefined;
this.submitButton = undefined;
@ -114,8 +116,8 @@ export abstract class SelectModal<T> extends Modal {
this.skipButton = btn;
});
}
bottomSettingRow.addButton(btn => {
btn.setButtonText('Ok');
bottomSettingRow.addButton((btn) => {
btn.setButtonText(this.submitButtonText);
btn.setCta();
btn.onClick(() => this.submit());
btn.buttonEl.addClass('media-db-plugin-button');

View file

@ -205,6 +205,13 @@ export const PREVIEW_MODAL_DEFAULT_OPTIONS: PreviewModalOptions = {
elements: [],
};
export const SELECTMODALOPTIONSDEFAULT: SelectModalOptions = {
elements: [],
multiSelect: true,
modalTitle: '',
skipButton: false,
};
/**
* A class providing multiple usefull functions for dealing with the plugins modals.
*/