layot rework
This commit is contained in:
parent
5db4d26fee
commit
1487611a81
66
main.ts
66
main.ts
|
@ -63,6 +63,7 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
plugin: BulkRenamePlugin;
|
plugin: BulkRenamePlugin;
|
||||||
state: State;
|
state: State;
|
||||||
filesAndPreview: Setting;
|
filesAndPreview: Setting;
|
||||||
|
totalFiles: HTMLSpanElement;
|
||||||
|
|
||||||
constructor(app: App, plugin: BulkRenamePlugin) {
|
constructor(app: App, plugin: BulkRenamePlugin) {
|
||||||
super(app, plugin);
|
super(app, plugin);
|
||||||
|
@ -128,7 +129,7 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
}
|
}
|
||||||
new Setting(this.containerEl)
|
new Setting(this.containerEl)
|
||||||
.setName('Folder location')
|
.setName('Folder location')
|
||||||
.setDesc('Files in this folder will be available renamed.')
|
.setDesc('Find files within the folder')
|
||||||
.addSearch((cb) => {
|
.addSearch((cb) => {
|
||||||
new FolderSuggest(this.app, cb.inputEl);
|
new FolderSuggest(this.app, cb.inputEl);
|
||||||
cb.setPlaceholder('Example: folder1/')
|
cb.setPlaceholder('Example: folder1/')
|
||||||
|
@ -140,10 +141,8 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
});
|
});
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
cb.containerEl.addClass('bulk_rename');
|
cb.containerEl.addClass('bulk_rename');
|
||||||
})
|
cb.inputEl.addClass('bulk_input');
|
||||||
.addButton((button) => {
|
cb.inputEl.onblur = this.reRenderPreview;
|
||||||
button.setButtonText('Refresh');
|
|
||||||
button.onClick(this.reRenderPreview);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,39 +173,32 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
});
|
});
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
cb.containerEl.addClass('bulk_rename');
|
cb.containerEl.addClass('bulk_rename');
|
||||||
})
|
cb.inputEl.addClass('bulk_input');
|
||||||
.addButton((button) => {
|
cb.inputEl.onblur = this.reRenderPreview;
|
||||||
button.setButtonText('Refresh');
|
|
||||||
button.onClick(this.reRenderPreview);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderReplaceSymbol() {
|
renderReplaceSymbol() {
|
||||||
const { settings } = this.plugin;
|
const { settings } = this.plugin;
|
||||||
const desc = document.createDocumentFragment();
|
|
||||||
|
|
||||||
const button = document.createElement('button');
|
const newSettings = new Setting(this.containerEl);
|
||||||
button.textContent = 'Preview';
|
newSettings.infoEl.style.display = 'none';
|
||||||
button.className = 'mod-cta';
|
|
||||||
button.onclick = this.reRenderPreview;
|
|
||||||
|
|
||||||
desc.appendChild(button);
|
|
||||||
|
|
||||||
const newSettings = new Setting(this.containerEl)
|
|
||||||
.setName('Existing Characters')
|
|
||||||
.setDesc(desc);
|
|
||||||
|
|
||||||
newSettings.addText((textComponent) => {
|
newSettings.addText((textComponent) => {
|
||||||
|
const previewLabel = createPreviewElement('Existing');
|
||||||
|
textComponent.inputEl.insertAdjacentElement('beforebegin', previewLabel);
|
||||||
textComponent.setValue(settings.existingSymbol);
|
textComponent.setValue(settings.existingSymbol);
|
||||||
textComponent.setPlaceholder('existing symbols');
|
textComponent.setPlaceholder('existing symbols');
|
||||||
textComponent.onChange((newValue) => {
|
textComponent.onChange((newValue) => {
|
||||||
settings.existingSymbol = newValue;
|
settings.existingSymbol = newValue;
|
||||||
this.plugin.saveSettings();
|
this.plugin.saveSettings();
|
||||||
});
|
});
|
||||||
|
textComponent.inputEl.addClass('bulk_input');
|
||||||
|
textComponent.inputEl.onblur = this.reRenderPreview;
|
||||||
});
|
});
|
||||||
|
|
||||||
newSettings.addText((textComponent) => {
|
newSettings.addText((textComponent) => {
|
||||||
const previewLabel = createPreviewElement('Replacement symbols');
|
const previewLabel = createPreviewElement('Replacement');
|
||||||
textComponent.inputEl.insertAdjacentElement('beforebegin', previewLabel);
|
textComponent.inputEl.insertAdjacentElement('beforebegin', previewLabel);
|
||||||
textComponent.setValue(settings.replacePattern);
|
textComponent.setValue(settings.replacePattern);
|
||||||
textComponent.setPlaceholder('replace with');
|
textComponent.setPlaceholder('replace with');
|
||||||
|
@ -215,18 +207,25 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
this.plugin.saveSettings();
|
this.plugin.saveSettings();
|
||||||
this.getFilesByFolder();
|
this.getFilesByFolder();
|
||||||
});
|
});
|
||||||
|
textComponent.inputEl.addClass('bulk_input');
|
||||||
|
textComponent.inputEl.onblur = this.reRenderPreview;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderFilesAndPreview = () => {
|
renderFilesAndPreview = () => {
|
||||||
this.filesAndPreview = new Setting(this.containerEl).setName(
|
this.containerEl.createEl('h2', { text: 'Preview' }, (el) => {
|
||||||
'Files within the folder',
|
el.className = 'bulk_preview_header';
|
||||||
);
|
});
|
||||||
|
|
||||||
|
this.filesAndPreview = new Setting(this.containerEl);
|
||||||
|
this.totalFiles = this.containerEl.createEl('span', {
|
||||||
|
text: `Total Files: ${this.plugin.settings.fileNames.length}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.filesAndPreview.infoEl.style.display = 'none';
|
||||||
|
|
||||||
this.filesAndPreview.controlEl.addClass('bulk_rename_preview');
|
this.filesAndPreview.controlEl.addClass('bulk_rename_preview');
|
||||||
this.calculateFileNames();
|
this.reRenderPreview();
|
||||||
|
|
||||||
renderPreviewFiles(this.filesAndPreview, this.plugin, this.state);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
renderRenameFiles() {
|
renderRenameFiles() {
|
||||||
|
@ -237,14 +236,20 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
desc.createEl('b', {
|
desc.createEl('b', {
|
||||||
text: 'Warning: ',
|
text: 'Warning: ',
|
||||||
}),
|
}),
|
||||||
'This plugin in Beta, make sure you verified all files in preview',
|
'Make sure you verified all files in preview',
|
||||||
);
|
);
|
||||||
|
|
||||||
new Setting(this.containerEl)
|
new Setting(this.containerEl)
|
||||||
.setDesc(desc)
|
.setDesc(desc)
|
||||||
.setName('Replace patterns')
|
.setName('Replace patterns')
|
||||||
.addButton((button) => {
|
.addButton((button) => {
|
||||||
button.buttonEl.style.width = '100%';
|
button.setClass('bulk_button');
|
||||||
|
button.setTooltip("Your files won't be changed");
|
||||||
|
button.setButtonText('Preview');
|
||||||
|
button.onClick(this.reRenderPreview);
|
||||||
|
})
|
||||||
|
.addButton((button) => {
|
||||||
|
button.setClass('bulk_button');
|
||||||
button.setTooltip(
|
button.setTooltip(
|
||||||
"We don't have undone button yet!\r\n Do we need it?",
|
"We don't have undone button yet!\r\n Do we need it?",
|
||||||
);
|
);
|
||||||
|
@ -264,6 +269,9 @@ export class BulkRenameSettingsTab extends PluginSettingTab {
|
||||||
reRenderPreview = () => {
|
reRenderPreview = () => {
|
||||||
this.calculateFileNames();
|
this.calculateFileNames();
|
||||||
renderPreviewFiles(this.filesAndPreview, this.plugin, this.state);
|
renderPreviewFiles(this.filesAndPreview, this.plugin, this.state);
|
||||||
|
this.totalFiles.setText(
|
||||||
|
`Total Files: ${this.plugin.settings.fileNames.length}`,
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
calculateFileNames() {
|
calculateFileNames() {
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
export const renderDonateButton = (containerEl: HTMLElement) => {
|
export const renderDonateButton = (containerEl: HTMLElement) => {
|
||||||
containerEl.createEl('br');
|
|
||||||
containerEl.createEl('h3', { text: 'Support development' });
|
containerEl.createEl('h3', { text: 'Support development' });
|
||||||
|
|
||||||
const donateText = containerEl.createEl('p');
|
const donateText = containerEl.createEl('p');
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
export const createPreviewElement = (textContent = '=> => => =>') => {
|
export const createPreviewElement = (textContent = '=> => => =>') => {
|
||||||
const previewLabel = window.document.createElement('span');
|
const previewLabel = window.document.createElement('span');
|
||||||
previewLabel.className = 'previewLabel';
|
previewLabel.className = 'bulk_preview_label';
|
||||||
previewLabel.textContent = textContent;
|
previewLabel.textContent = textContent;
|
||||||
previewLabel.style.margin = '0 20px';
|
|
||||||
return previewLabel;
|
return previewLabel;
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,6 @@ export const renderPreviewFiles = (
|
||||||
let replacedPreviewTextArea: HTMLTextAreaElement;
|
let replacedPreviewTextArea: HTMLTextAreaElement;
|
||||||
|
|
||||||
return setting
|
return setting
|
||||||
.setDesc(`Total Files: ${plugin.settings.fileNames.length}`)
|
|
||||||
.clear()
|
.clear()
|
||||||
.addTextArea((text) => {
|
.addTextArea((text) => {
|
||||||
text.setPlaceholder('Here you will see files under folder location');
|
text.setPlaceholder('Here you will see files under folder location');
|
||||||
|
|
18
styles.css
18
styles.css
|
@ -5,3 +5,21 @@
|
||||||
.bulk_rename_preview {
|
.bulk_rename_preview {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bulk_button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bulk_preview_header {
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bulk_input {
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bulk_preview_label {
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue