This commit is contained in:
aspenyang 2025-11-08 21:26:26 +00:00 committed by GitHub
commit f5d54aa942
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 37 additions and 1 deletions

View file

@ -254,6 +254,7 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
**`description`** | `string` | _Optional_ | Additional info about an item, which is shown in the tooltip on hover, or visible on large tiles
**`url`** | `string` | Required | The URL / location of web address for when the item is clicked
**`icon`** | `string` | _Optional_ | The icon for a given item. Can be a font-awesome icon, favicon, remote URL or local URL. See [`item.icon`](#sectionicon-and-sectionitemicon)
**`hidden`** | `boolean` | _Optional_ | If set to `true`, this item will be hidden from the default homepage view. It will still appear in search results, and will remain visible while using the Interactive Edit Mode. Defaults to `false`.
**`target`** | `string` | _Optional_ | The opening method for when the item is clicked, either `newtab`, `sametab`, `modal`, `workspace`, `clipboard`, `top` or `parent`. Where `newtab` will open the link in a new tab, `sametab` will open it in the current tab, and `modal` will open a pop-up modal, `workspace` will open in the Workspace view and `clipboard` will copy the URL to system clipboard (but not launch app). Defaults to `newtab`
**`hotkey`** | `number` | _Optional_ | Give frequently opened applications a numeric hotkey, between `0 - 9`. You can then just press that key to launch that application.
**`tags`** | `string[]` | _Optional_ | A list of tags, which can be used for improved search
@ -283,6 +284,22 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
**[⬆️ Back to Top](#configuring)**
### Example: Hiding an item from the homepage
```yaml
sections:
- name: Media
items:
- title: Admin Panel
url: https://example.local/admin
icon: fa fa-tools
hidden: true # hidden from the default homepage, but still searchable
- title: Plex
url: https://plex.local
icon: favicon
```
## `section.widgets` _(optional)_
**Field** | **Type** | **Required**| **Description**

View file

@ -159,6 +159,7 @@ Checklist:
- [ ] Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option
- [ ] If required, set a default or fallback value (usually in [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js))
- [ ] Document the new value in [`configuring.md`](./configuring.md), and if required under the relevant section in the docs
- For example, if adding an item-level flag like `hidden: true`, document its purpose, default, and behavior (e.g., hidden on homepage but still searchable)
- [ ] Ensure your changes are backwards compatible, and that nothing breaks if the attribute isn't specified
---

View file

@ -4,6 +4,9 @@
One of the primary purposes of Dashy is to allow you to quickly find and launch a given app. To make this as quick as possible, there is no need to touch the mouse, or press a certain key to begin searching - just start typing. Results will be filtered in real-time. No need to worry about case, special characters or small typos, these are taken care of, and your results should appear.
> Note
> Items marked as hidden in your configuration (using `hidden: true`) will not be shown on the homepage by default, but they will still appear in search results.
## Navigating
You can navigate through your items or search results using the keyboard. You can use <kbd>Tab</kbd> to cycle through results, and <kbd>Shift</kbd> + <kbd>Tab</kbd> to go backwards. Or use the arrow keys, <kbd></kbd>, <kbd></kbd>, <kbd></kbd> and <kbd></kbd>.

View file

@ -240,6 +240,7 @@ export default {
return str === 'true';
};
if (newItem.tags) newItem.tags = strToTags(newItem.tags);
if (newItem.hidden !== undefined) newItem.hidden = strToBool(newItem.hidden);
if (newItem.statusCheck) newItem.statusCheck = strToBool(newItem.statusCheck);
if (newItem.statusCheckAllowInsecure) {
newItem.statusCheckAllowInsecure = strToBool(newItem.statusCheckAllowInsecure);

View file

@ -128,6 +128,7 @@ export default {
widgets: Array,
index: Number,
isWide: Boolean,
searchTerm: String,
},
components: {
Collapsable,
@ -178,7 +179,14 @@ export default {
},
/* If the sortBy attribute is specified, then return sorted data */
sortedItems() {
const items = [...this.items];
// Filter out items with hidden: true, unless in edit mode or searching
let items = [...this.items];
if (!this.isEditMode) {
// Include hidden items only when there's an active search term
if (!this.searchTerm || this.searchTerm.trim() === '') {
items = items.filter(item => !item.hidden);
}
}
if (this.appConfig.disableSmartSort) return items;
if (this.sortOrder === 'alphabetical') {
return this.sortAlphabetically(items);

View file

@ -955,6 +955,12 @@
"nullable": true,
"description": "An icon, either as a font-awesome, simple-icon, selfh.st, or mdi identifier, emoji, favicon, generative or the URL/path to a local or remote icon asset"
},
"hidden": {
"title": "Hidden from Homepage",
"type": "boolean",
"default": false,
"description": "If true, this item will be hidden from the homepage/dashboard but still searchable."
},
"url": {
"title": "Service URL",
"type": "string",