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

View file

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

View file

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

View file

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