Skip to content

feat: Rework how selected actions to perform pause,resume work and add a bulk-delete option#6676

Merged
CommanderStorm merged 20 commits intolouislam:masterfrom
hemanth5544:actions
Jan 12, 2026
Merged

feat: Rework how selected actions to perform pause,resume work and add a bulk-delete option#6676
CommanderStorm merged 20 commits intolouislam:masterfrom
hemanth5544:actions

Conversation

@hemanth5544
Copy link
Copy Markdown
Contributor

Summary

This pull request adds a Delete action to the existing multi-select actions menu.

Currently, when multiple items are selected, only Pause and Resume actions are available. Adding Delete will make it easier to perform bulk deletions when needed.


📑 Related Issues / Pull Requests

The related feature-request issue where this idea was proposed:


🔖 Feature Description

Currently, Uptime Kuma supports only Pause and Resume actions when multiple monitors are selected.
Adding a Delete action will allow users to remove multiple monitors at once, improving usability and workflow.


✔️ Solution

The Delete option has been implemented alongside the existing pause/resume actions in the side menu bar when multiple items are selected.


❓ Alternatives

No alternative solutions have been proposed so far.


📝 Additional Context

No additional context.


Please follow this checklist to avoid unnecessary back and forth (click to expand)
  • ⚠️ If there are breaking changes, they are clearly documented.
  • 🧠 Any use of LLMs/AI has been disclosed and reviewed.
  • 🔍 UI changes follow the project’s visual style guidelines.
  • 🛠️ Code has been self-reviewed and tested.
  • 📝 Code is well-commented where necessary.
  • 🤖 Automated tests have been added or updated where appropriate.
  • 📄 Documentation has been updated (if applicable).
  • 🧰 Dependency updates are listed and explained.
  • ⚠️ CI checks are passing.

Copilot AI review requested due to automatic review settings January 11, 2026 16:55
@github-actions
Copy link
Copy Markdown
Contributor

Hello! Thank you for your contribution 👋

As this is your first contribution, please be sure to check out our
Pull Request guidelines.

In particular:

  • Mark your PR as Draft while you’re still making changes
  • Mark it as Ready for review once it’s fully ready 🟢

If you have any design or process questions, feel free to ask them right here in this pull request - unclear documentation is a bug too.

Thanks for lending a paw to Uptime Kuma 🐻

@hemanth5544 hemanth5544 changed the title Actions feat: Actions added to perform pause,resume and delete along Jan 11, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds a Delete action to the multi-select actions menu for monitors, enabling users to delete multiple monitors at once. The PR restructures the monitor list header layout to accommodate the new action dropdown.

Changes:

  • Added a Delete option to the Actions dropdown menu alongside existing Pause and Resume actions
  • Reorganized the header layout with a checkbox for selection mode, filter controls, and an Actions dropdown button
  • Added confirmation dialog and success/error handling for bulk deletion operations
  • Added toast notifications for pause, resume, and delete operations showing the count of affected monitors

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
src/lang/en.json Added new translation keys for Actions menu, confirmation messages, and operation success messages
src/components/MonitorListFilter.vue Removed clear filters button from filter component (likely moved elsewhere in the layout)
src/components/MonitorList.vue Added Delete action to dropdown menu, reorganized header layout, implemented bulk deletion logic with confirmation and toast notifications

Copy link
Copy Markdown
Collaborator

@CommanderStorm CommanderStorm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice progress.

I think there is some light refactiring which is still nessesary before this is mergable.

On mobile, this breaks particularly nastily with the search bar being moved far of the screen.
Apparently, my screenshottting tool does not currently work, otherwise I would attach a screenshot here

On mobile, we should scale like this (open to oppinons):

  • search bar
  • select + filter
  • if selected: actions

I know this is a bit of a refactoring, but the following would also work and is less of a refactoring:

  • select + filter
  • search bar
  • if selected: actions

src/lang/en.json Outdated
"auto-select": "Auto Select",
"Select": "Select",
"Actions": "Actions",
"selectedMonitorCount": "Selected: {0}",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks nicer, what do you think?

Maybe we could also reclaim the space this uses and move this into the "Actions button" -> renmae it to "modify {count} monitors"

Suggested change
"selectedMonitorCount": "Selected: {0}",
"selectedMonitorCount": "{0} selected",

@CommanderStorm CommanderStorm added the pr:please address review comments this PR needs a bit more work to be mergable label Jan 12, 2026
@CommanderStorm CommanderStorm marked this pull request as draft January 12, 2026 06:29
@hemanth5544
Copy link
Copy Markdown
Contributor Author

image image

Copy link
Copy Markdown
Collaborator

@CommanderStorm CommanderStorm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have 2-3 remaining comments.
Most are just code suggestions, so should be fairly simple to apply.

I think the @media adjustments need slight tuning up, but otherwise LGTM.

this.$root.toastSuccess(this.$tc("deletedMonitorsMsg", successCount));
}
if (errorCount > 0) {
this.$root.toastError(this.$t("bulkDeleteErrorMsg", [errorCount]));
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
this.$root.toastError(this.$t("bulkDeleteErrorMsg", [errorCount]));
this.$root.toastError(this.$tc("bulkDeleteErrorMsg", errorCount));

src/lang/en.json Outdated
"deletedMonitorsMsg": "Deleted {n} monitor | Deleted {n} monitors",
"noMonitorsPausedMsg": "No monitors paused (none were active)",
"noMonitorsResumedMsg": "No monitors resumed (none were inactive)",
"bulkDeleteErrorMsg": "Failed to delete {0} monitor(s)",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you missed this one

Suggested change
"bulkDeleteErrorMsg": "Failed to delete {0} monitor(s)",
"bulkDeleteErrorMsg": "Failed to delete {n} monitor | Failed to delete {n} monitors",

src/lang/en.json Outdated
"Select": "Select",
"selectedMonitorCount": "Selected: {0}",
"Actions": "Actions",
"selectedMonitorCount": "selected: {n} | selected: {n}",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤔 You did not comment on the previos suggestion, is this here better?

I am very open to a "No, I don't think so".
I just would like to know your oppinon.

Not sure if a language translates this differntly, but fair to change it like this

Suggested change
"selectedMonitorCount": "selected: {n} | selected: {n}",
"selectedMonitorCount": "{n} selected | {n} selected",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah sorry i missed that i think it was suggestion from your side yeah this message LGTM so, i modified this

gap: 8px;
padding: 10px;

@media (max-width: 550px) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

due to how our UI does responsivitiy, I think the flat 550 you used here is a bit too flat after checking it out

I think this works in these fairly specific ranges only, so adusting the added media queries as such should do the trick

  • 550..769
  • 1150..1199
  • 1500...

Comment on lines +704 to +705
max-width: 100%;
width: 100%;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to not be working to 100%, since the outer form is limiting this elements size.

Could you also add the max-width to the outer form?
This is a really nice touch.

v-model="selectAll"
class="form-check-input"
type="checkbox"
:aria-label="$t('selectAllMonitors')"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
:aria-label="$t('selectAllMonitors')"
:aria-label="selectAll ? $t('selectAllMonitorsAria') : $t('deselectAllMonitorsAria')"

src/lang/en.json Outdated
"Actions": "Actions",
"selectedMonitorCount": "selected: {n} | selected: {n}",
"selectMonitorMsg": "Select monitors to perform actions",
"selectAllMonitors": "Select/Deselect all monitors",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets be just slightly more helpfull to our visually impaired users 😉

(I am sure this would be fairly badly translated as well)

Suggested change
"selectAllMonitors": "Select/Deselect all monitors",
"selectAllMonitorsAria": "Select all monitors",
"deselectAllMonitorsAria": "Deselect all monitors",

:aria-label="$t('Select')"
/>
<input
v-if="selectMode"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
v-if="selectMode"
v-else

@CommanderStorm CommanderStorm changed the title feat: Actions added to perform pause,resume and delete along feat: Rework how selected actions to perform pause,resume and delete work and add a bulk-delete option Jan 12, 2026
@CommanderStorm CommanderStorm changed the title feat: Rework how selected actions to perform pause,resume and delete work and add a bulk-delete option feat: Rework how selected actions to perform pause,resume work and add a bulk-delete option Jan 12, 2026
@hemanth5544
Copy link
Copy Markdown
Contributor Author

once check this changes i cahnged the @media specs and checked the suggested changes 🙂

Copy link
Copy Markdown
Collaborator

@CommanderStorm CommanderStorm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those @media ranges don't seem to work entirely well.
I think inverting them fixes the issue, lets see

@CommanderStorm CommanderStorm marked this pull request as ready for review January 12, 2026 11:15
@CommanderStorm CommanderStorm enabled auto-merge (squash) January 12, 2026 11:16
@CommanderStorm CommanderStorm enabled auto-merge (squash) January 12, 2026 11:23
@CommanderStorm CommanderStorm merged commit 4c99f92 into louislam:master Jan 12, 2026
24 checks passed
@CommanderStorm CommanderStorm added this to the 2.1.0 milestone Jan 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:please address review comments this PR needs a bit more work to be mergable

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants