Merge pull request #166 from nathonius/feat/154/sliders

 feat: #154 Add manual inputs for all slider settings
This commit is contained in:
Nathan 2025-02-26 22:50:08 -06:00 committed by GitHub
commit 3289da5a1d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 12 deletions

View file

@ -83,13 +83,20 @@ export class GithubLinkPluginSettingsTab extends PluginSettingTab {
});
})
.addSlider((slider) => {
const displayValue = createSpan({ text: PluginSettings.defaultPageSize.toString() });
slider.sliderEl.parentElement?.prepend(displayValue);
const manualInput = createEl("input", { attr: { type: "number" }, cls: "github-link-slider-input" });
manualInput.value = PluginSettings.defaultPageSize.toString();
manualInput.addEventListener("change", (e) => {
const value = parseInt((e.target as HTMLInputElement).value, 10);
PluginSettings.defaultPageSize = value;
slider.setValue(value);
void this.saveSettings();
});
slider.sliderEl.parentElement?.prepend(manualInput);
slider.setLimits(0, 30, 1);
slider.setDynamicTooltip();
slider.setValue(PluginSettings.defaultPageSize);
slider.onChange((value) => {
displayValue.setText(value.toString());
manualInput.value = value.toString();
PluginSettings.defaultPageSize = value;
void this.saveSettings();
});
@ -169,14 +176,21 @@ export class GithubLinkPluginSettingsTab extends PluginSettingTab {
});
})
.addSlider((slider) => {
const displayValue = createSpan({ text: PluginSettings.cacheIntervalSeconds.toString() });
slider.sliderEl.parentElement?.prepend(displayValue);
const manualInput = createEl("input", { attr: { type: "number" }, cls: "github-link-slider-input" });
manualInput.value = PluginSettings.cacheIntervalSeconds.toString();
manualInput.addEventListener("change", (e) => {
const value = parseInt((e.target as HTMLInputElement).value, 10);
PluginSettings.cacheIntervalSeconds = value;
slider.setValue(value);
void this.saveSettings();
});
slider.sliderEl.parentElement?.prepend(manualInput);
slider.setValue(PluginSettings.cacheIntervalSeconds);
slider.setLimits(10, 1200, 10);
slider.setDynamicTooltip();
slider.onChange(async (value) => {
PluginSettings.cacheIntervalSeconds = value;
displayValue.setText(value.toString());
manualInput.value = value.toString();
await this.saveSettings();
this.plugin.setCacheInterval();
});
@ -197,14 +211,21 @@ export class GithubLinkPluginSettingsTab extends PluginSettingTab {
});
})
.addSlider((slider) => {
const displayValue = createSpan({ text: PluginSettings.maxCacheAgeHours.toString() });
slider.sliderEl.parentElement?.prepend(displayValue);
const manualInput = createEl("input", { attr: { type: "number" }, cls: "github-link-slider-input" });
manualInput.value = PluginSettings.maxCacheAgeHours.toString();
manualInput.addEventListener("change", (e) => {
const value = parseInt((e.target as HTMLInputElement).value, 10);
PluginSettings.maxCacheAgeHours = value;
slider.setValue(value);
void this.saveSettings();
});
slider.sliderEl.parentElement?.prepend(manualInput);
slider.setValue(PluginSettings.maxCacheAgeHours);
slider.setLimits(0, 170, 10);
slider.setDynamicTooltip();
slider.onChange(async (value) => {
PluginSettings.maxCacheAgeHours = value;
displayValue.setText(value.toString());
manualInput.value = value.toString();
await this.saveSettings();
});
});
@ -225,14 +246,21 @@ export class GithubLinkPluginSettingsTab extends PluginSettingTab {
});
})
.addSlider((slider) => {
const displayValue = createSpan({ text: PluginSettings.minRequestSeconds.toString() });
slider.sliderEl.parentElement?.prepend(displayValue);
const manualInput = createEl("input", { attr: { type: "number" }, cls: "github-link-slider-input" });
manualInput.value = PluginSettings.minRequestSeconds.toString();
manualInput.addEventListener("change", (e) => {
const value = parseInt((e.target as HTMLInputElement).value, 10);
PluginSettings.minRequestSeconds = value;
slider.setValue(value);
void this.saveSettings();
});
slider.sliderEl.parentElement?.prepend(manualInput);
slider.setValue(PluginSettings.minRequestSeconds);
slider.setLimits(10, 1200, 10);
slider.setDynamicTooltip();
slider.onChange(async (value) => {
PluginSettings.minRequestSeconds = value;
displayValue.setText(value.toString());
manualInput.value = value.toString();
await this.saveSettings();
});
});

View file

@ -151,6 +151,10 @@ body.theme-dark {
padding-left: 2rem;
}
.github-link-slider-input {
width: 3rem;
}
.github-link-inline {
display: inline-flex;
background-color: var(--gh-color-canvas-default);