No description
Find a file
Gary Ritchie a7eacdace0
Add autocomplete suggestions for pill inputs (#26)
* Add autocomplete suggestions for tags/multitext pill inputs

Show a completion dropdown with known vault values when entering
tags, aliases, or multitext property values in the bulk edit modal.
Uses AbstractInputSuggest attached to the pill input element.

Suggestions are collected from frontmatter across all vault files,
filtered to exclude already-added pills, and normalized consistently
with tag input (leading # stripped for matching).

* Fix focusout committing partial text when clicking a suggestion

When the user clicks a suggestion in the dropdown, the pill container's
focusout handler fires before selectSuggestion, which would commit the
partially typed query as an unintended pill. Defer the focusout commit
via requestAnimationFrame so selectSuggestion can set a flag and clear
the input first.

* Scope focusout suppression to mouse-triggered suggestions only

Keyboard selections are captured by the suggest's Scope before
focusout fires, so the didSelect flag is only needed for mouse
clicks. Setting it unconditionally left the flag armed after
keyboard selections, which could discard the next legitimate
blur commit.

* Pre-normalize tag values in suggestion list to strip # prefix

Known values for tags are now normalized (leading # removed) before
being passed to the suggest, so the dropdown never shows # prefixes.
Deduplicates after normalization in case both #foo and foo exist.

* Re-sort tag suggestions after normalization

Stripping # prefixes can break the original alphabetical order
from getPropertyValues(). Re-sort after normalize and dedup.

* Fix suggestion selection not adding pill

The selectSuggestion override replaced the base class implementation
that invokes the onSelect callback, so addPill was never called.
Use a direct callback property (onValueSelected) called from within
selectSuggestion, matching the PropertyNameSuggest pattern.
2026-04-03 08:52:51 -06:00
.github add FUNDING.yml 2026-03-29 08:30:13 -06:00
reference Remove unneeded permissions prerequisite, fix version bump 2026-03-28 15:21:21 -06:00
src Add autocomplete suggestions for pill inputs (#26) 2026-04-03 08:52:51 -06:00
.editorconfig Initial commit 2026-03-24 19:27:30 -06:00
.gitignore Add .claude/settings.local.json to .gitignore 2026-03-24 21:45:15 -06:00
.npmrc Initial commit 2026-03-24 19:27:30 -06:00
AGENTS.md Trim AGENTS.md to project-specific guidance 2026-03-27 18:02:49 -06:00
CLAUDE.md Rename baseprop references to bulk-properties 2026-03-26 21:57:53 -06:00
esbuild.config.mjs Update ES target from ES6/ES2018 to ES2022 2026-03-27 09:03:18 -06:00
eslint.config.mts Initial commit 2026-03-24 19:27:30 -06:00
LICENSE Fix copyright year to 2026 2026-03-27 13:59:02 -06:00
manifest.json 1.0.2 2026-03-29 11:51:03 -06:00
package-lock.json Update dev dependencies (#24) 2026-04-03 07:06:01 -06:00
package.json Update dev dependencies (#24) 2026-04-03 07:06:01 -06:00
README.md Update README.md 2026-03-29 11:48:53 -06:00
styles.css Replace comma-separated textarea with pill-style input for multi-value properties (#22) 2026-04-01 19:55:02 -06:00
tsconfig.json Harden error handling, validation, and type strictness 2026-03-28 09:55:09 -06:00
version-bump.mjs Remove unneeded permissions prerequisite, fix version bump 2026-03-28 15:21:21 -06:00
versions.json 1.0.2 2026-03-29 11:51:03 -06:00

Bulk Properties

An Obsidian plugin that lets you bulk edit a property across multiple files in your vault.

This plugin uses a checkbox property (default: selected) to track which files are selected. Check the box on the files you want to edit, run the command, and update a property across all of them at once. Works well with Obsidian Bases, where the selection property can be displayed as a checkbox column.

Note: The plugin operates on all files in the vault that have the selection property checked, not just files visible in a particular Base. Make sure to uncheck the selection property on files you don't want to modify.

Usage

  1. Add a checkbox property (such as selected) to your notes or Base view.
  2. Check the box on each file you want to bulk edit.
  3. Open the bulk edit dialog from the ribbon icon, the Bulk edit selected files command, or the editor right-click menu.
  4. Review the file checklist — uncheck any files you don't want to modify, or re-check files you do.
  5. Choose a property from the dropdown, enter the new value, and select Update.
  6. Optionally disable Deselect when finished to keep the files selected after the update.

Commands

  • Bulk edit selected files — opens the bulk edit dialog showing all files with the selection property checked. Also available from the editor right-click menu.
  • Deselect all files — unchecks the selection property on every file in the vault that has it checked.
  • Remove selection property from all files — removes the selection property entirely from every file in the vault that has it.

Context menus

  • Editor menu — right-click inside an editor to open the bulk edit dialog.
  • File menu — right-click a markdown file in the file explorer or a Base view to toggle its selection. The menu item reads Select for bulk edit or Deselect for bulk edit based on the file's current state.

Setup

Before using the command, configure the plugin in Settings → Bulk Properties:

  • Selection property — the name of the checkbox property used to mark files as selected (default: selected). Autocompletes from existing vault properties.
  • Properties — add the properties you want to be available for bulk editing, specifying the name and type for each. Property names autocomplete from the vault. Supported types: text, number, checkbox, date, datetime, tags, aliases, multitext.
  • Deselect when finished — the default value for the deselect toggle in the bulk edit dialog (default: on).
  • Show selection count in status bar — displays the number of selected files in the status bar (default: on). The count updates automatically as you check or uncheck the selection property. Status bar items are not available on mobile.

Manual Installation

Note

These instructions are for installing and testing the plugin prior to its available in the Obsidian Community Plugins list.

Recommended approach is to use the BRAT plugin (available as a Community Plugin) and point it at this repository.

For a fully-manual installation, copy main.js, styles.css, and manifest.json to your vault at .obsidian/plugins/bulk-properties/.