mirror of
https://github.com/glanceapp/glance.git
synced 2025-06-24 11:51:31 +02:00
Merge pull request #137 from ralphocdol/search-new-tab-property
feat: added property new-tab to type: search
This commit is contained in:
commit
790ecef1c1
@ -725,10 +725,15 @@ Preview:
|
|||||||
| <kbd>Ctrl</kbd> + <kbd>Enter</kbd> | Perform search in a new tab | Search input is focused and not empty |
|
| <kbd>Ctrl</kbd> + <kbd>Enter</kbd> | Perform search in a new tab | Search input is focused and not empty |
|
||||||
| <kbd>Escape</kbd> | Leave focus | Search input is focused |
|
| <kbd>Escape</kbd> | Leave focus | Search input is focused |
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
>
|
||||||
|
> You can use the property `new-tab` with a value of `true` if you want to show search results in a new tab by default. <kbd>Ctrl</kbd> + <kbd>Enter</kbd> will then show results in the same tab.
|
||||||
|
|
||||||
#### Properties
|
#### Properties
|
||||||
| Name | Type | Required | Default |
|
| Name | Type | Required | Default |
|
||||||
| ---- | ---- | -------- | ------- |
|
| ---- | ---- | -------- | ------- |
|
||||||
| search-engine | string | no | duckduckgo |
|
| search-engine | string | no | duckduckgo |
|
||||||
|
| new-tab | boolean | no | false |
|
||||||
| bangs | array | no | |
|
| bangs | array | no | |
|
||||||
|
|
||||||
##### `search-engine`
|
##### `search-engine`
|
||||||
@ -739,6 +744,9 @@ Either a value from the table below or a URL to a custom search engine. Use `{QU
|
|||||||
| duckduckgo | `https://duckduckgo.com/?q={QUERY}` |
|
| duckduckgo | `https://duckduckgo.com/?q={QUERY}` |
|
||||||
| google | `https://www.google.com/search?q={QUERY}` |
|
| google | `https://www.google.com/search?q={QUERY}` |
|
||||||
|
|
||||||
|
##### `new-tab`
|
||||||
|
When set to `true`, swaps the shortcuts for showing results in the same or new tab, defaulting to showing results in a new tab.
|
||||||
|
|
||||||
##### `bangs`
|
##### `bangs`
|
||||||
What now? [Bangs](https://duckduckgo.com/bangs). They're shortcuts that allow you to use the same search box for many different sites. Assuming you have it configured, if for example you start your search input with `!yt` you'd be able to perform a search on YouTube:
|
What now? [Bangs](https://duckduckgo.com/bangs). They're shortcuts that allow you to use the same search box for many different sites. Assuming you have it configured, if for example you start your search input with `!yt` you'd be able to perform a search on YouTube:
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ function updateRelativeTimeForElements(elements)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupSearchboxes() {
|
function setupSearchBoxes() {
|
||||||
const searchWidgets = document.getElementsByClassName("search");
|
const searchWidgets = document.getElementsByClassName("search");
|
||||||
|
|
||||||
if (searchWidgets.length == 0) {
|
if (searchWidgets.length == 0) {
|
||||||
@ -117,6 +117,7 @@ function setupSearchboxes() {
|
|||||||
for (let i = 0; i < searchWidgets.length; i++) {
|
for (let i = 0; i < searchWidgets.length; i++) {
|
||||||
const widget = searchWidgets[i];
|
const widget = searchWidgets[i];
|
||||||
const defaultSearchUrl = widget.dataset.defaultSearchUrl;
|
const defaultSearchUrl = widget.dataset.defaultSearchUrl;
|
||||||
|
const newTab = widget.dataset.newTab === "true";
|
||||||
const inputElement = widget.getElementsByClassName("search-input")[0];
|
const inputElement = widget.getElementsByClassName("search-input")[0];
|
||||||
const bangElement = widget.getElementsByClassName("search-bang")[0];
|
const bangElement = widget.getElementsByClassName("search-bang")[0];
|
||||||
const bangs = widget.querySelectorAll(".search-bangs > input");
|
const bangs = widget.querySelectorAll(".search-bangs > input");
|
||||||
@ -154,7 +155,7 @@ function setupSearchboxes() {
|
|||||||
|
|
||||||
const url = searchUrlTemplate.replace("!QUERY!", encodeURIComponent(query));
|
const url = searchUrlTemplate.replace("!QUERY!", encodeURIComponent(query));
|
||||||
|
|
||||||
if (event.ctrlKey) {
|
if (newTab && !event.ctrlKey || !newTab && event.ctrlKey) {
|
||||||
window.open(url, '_blank').focus();
|
window.open(url, '_blank').focus();
|
||||||
} else {
|
} else {
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
@ -551,7 +552,7 @@ async function setupPage() {
|
|||||||
try {
|
try {
|
||||||
setupClocks()
|
setupClocks()
|
||||||
setupCarousels();
|
setupCarousels();
|
||||||
setupSearchboxes();
|
setupSearchBoxes();
|
||||||
setupCollapsibleLists();
|
setupCollapsibleLists();
|
||||||
setupCollapsibleGrids();
|
setupCollapsibleGrids();
|
||||||
setupDynamicRelativeTime();
|
setupDynamicRelativeTime();
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{{ define "widget-content-classes" }}widget-content-frameless{{ end }}
|
{{ define "widget-content-classes" }}widget-content-frameless{{ end }}
|
||||||
|
|
||||||
{{ define "widget-content" }}
|
{{ define "widget-content" }}
|
||||||
<div class="search widget-content-frame padding-inline-widget flex gap-15 items-center" data-default-search-url="{{ .SearchEngine }}">
|
<div class="search widget-content-frame padding-inline-widget flex gap-15 items-center" data-default-search-url="{{ .SearchEngine }}" data-new-tab="{{ .NewTab }}">
|
||||||
<div class="search-bangs">
|
<div class="search-bangs">
|
||||||
{{ range .Bangs }}
|
{{ range .Bangs }}
|
||||||
<input type="hidden" data-shortcut="{{ .Shortcut }}" data-title="{{ .Title }}" data-url="{{ .URL }}">
|
<input type="hidden" data-shortcut="{{ .Shortcut }}" data-title="{{ .Title }}" data-url="{{ .URL }}">
|
||||||
|
@ -19,6 +19,7 @@ type Search struct {
|
|||||||
cachedHTML template.HTML `yaml:"-"`
|
cachedHTML template.HTML `yaml:"-"`
|
||||||
SearchEngine string `yaml:"search-engine"`
|
SearchEngine string `yaml:"search-engine"`
|
||||||
Bangs []SearchBang `yaml:"bangs"`
|
Bangs []SearchBang `yaml:"bangs"`
|
||||||
|
NewTab bool `yaml:"new-tab"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func convertSearchUrl(url string) string {
|
func convertSearchUrl(url string) string {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user