Use quick filter slot for meetings filter

This commit is contained in:
Henriette Darge
2026-05-07 11:29:21 +02:00
parent 3d6c423cff
commit 701b5d3a5d
7 changed files with 34 additions and 111 deletions
+1 -1
View File
@@ -430,4 +430,4 @@ end
gem "openproject-octicons", "~>19.34.0"
gem "openproject-octicons_helper", "~>19.34.0"
gem "openproject-primer_view_components", "~>0.84.5"
gem "openproject-primer_view_components", "~>0.85.0"
+3 -3
View File
@@ -911,7 +911,7 @@ GEM
actionview
openproject-octicons (= 19.34.0)
railties
openproject-primer_view_components (0.84.5)
openproject-primer_view_components (0.85.0)
actionview (>= 7.2.0)
activesupport (>= 7.2.0)
openproject-octicons (>= 19.34.0)
@@ -1689,7 +1689,7 @@ DEPENDENCIES
openproject-octicons (~> 19.34.0)
openproject-octicons_helper (~> 19.34.0)
openproject-openid_connect!
openproject-primer_view_components (~> 0.84.5)
openproject-primer_view_components (~> 0.85.0)
openproject-recaptcha!
openproject-reporting!
openproject-resource_management!
@@ -2071,7 +2071,7 @@ CHECKSUMS
openproject-octicons (19.34.0) sha256=4efe8a58a2d8051b79c94b37e9a7f04fd242a4da12b50f027c3c7f441a042adc
openproject-octicons_helper (19.34.0) sha256=12eb7af2214e21631369c76464ebaa30de788e1074c4b3bd0fcef7e74cb9edb4
openproject-openid_connect (1.0.0)
openproject-primer_view_components (0.84.5) sha256=307ad2135cfb283b2d1da354e545bd3e3f1dda43158f020c89ff4641e441fe86
openproject-primer_view_components (0.85.0) sha256=16bc8358ef600f0465488a2e3c86991a9c69ed84580bd450c2dbec6f268eeaca
openproject-recaptcha (1.0.0)
openproject-reporting (1.0.0)
openproject-resource_management (1.0.0)
+14 -14
View File
@@ -57,12 +57,12 @@
"@ng-select/ng-select": "^21.8.0",
"@ngneat/content-loader": "^7.0.0",
"@openproject/octicons-angular": "^19.34.0",
"@openproject/primer-view-components": "^0.84.5",
"@openproject/primer-view-components": "^0.85.0",
"@openproject/reactivestates": "^3.0.1",
"@primer/css": "^22.1.0",
"@primer/live-region-element": "^0.8.0",
"@primer/primitives": "^11.5.1",
"@primer/view-components": "npm:@openproject/primer-view-components@^0.84.5",
"@primer/view-components": "npm:@openproject/primer-view-components@^0.85.0",
"@rails/request.js": "^0.0.13",
"@stimulus-components/auto-submit": "^6.0.0",
"@stimulus-components/reveal": "^5.0.0",
@@ -7494,9 +7494,9 @@
}
},
"node_modules/@openproject/primer-view-components": {
"version": "0.84.5",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.84.5.tgz",
"integrity": "sha512-Q2rliK0PC37nku6blaRvlqGuh3WJS5hr7sqdHDvdzUUBoerigRHrNsg3kNy4tUEduAcEaRpsGRGkF1z0LLo2Gw==",
"version": "0.85.0",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.85.0.tgz",
"integrity": "sha512-W/MUtfOQnkYzPMF6unyVJ6U53epCfpXwP2DcEc3YVzEK6XIaPCSS9a86dK714Na8ysOSL6j9OGgsThyfvToJKw==",
"license": "MIT",
"dependencies": {
"@github/auto-check-element": "^6.0.0",
@@ -8045,9 +8045,9 @@
},
"node_modules/@primer/view-components": {
"name": "@openproject/primer-view-components",
"version": "0.84.5",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.84.5.tgz",
"integrity": "sha512-Q2rliK0PC37nku6blaRvlqGuh3WJS5hr7sqdHDvdzUUBoerigRHrNsg3kNy4tUEduAcEaRpsGRGkF1z0LLo2Gw==",
"version": "0.85.0",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.85.0.tgz",
"integrity": "sha512-W/MUtfOQnkYzPMF6unyVJ6U53epCfpXwP2DcEc3YVzEK6XIaPCSS9a86dK714Na8ysOSL6j9OGgsThyfvToJKw==",
"license": "MIT",
"dependencies": {
"@github/auto-check-element": "^6.0.0",
@@ -30526,9 +30526,9 @@
}
},
"@openproject/primer-view-components": {
"version": "0.84.5",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.84.5.tgz",
"integrity": "sha512-Q2rliK0PC37nku6blaRvlqGuh3WJS5hr7sqdHDvdzUUBoerigRHrNsg3kNy4tUEduAcEaRpsGRGkF1z0LLo2Gw==",
"version": "0.85.0",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.85.0.tgz",
"integrity": "sha512-W/MUtfOQnkYzPMF6unyVJ6U53epCfpXwP2DcEc3YVzEK6XIaPCSS9a86dK714Na8ysOSL6j9OGgsThyfvToJKw==",
"requires": {
"@github/auto-check-element": "^6.0.0",
"@github/auto-complete-element": "^3.8.0",
@@ -30866,9 +30866,9 @@
"integrity": "sha512-NB9uYfJ01FVY6zp+33EoUbJ0paS3JrWY+PqdHPebTvyRtQgL3sX8//3jWqjt3/jL81UMEulJRM2A0hPj0/vFpQ=="
},
"@primer/view-components": {
"version": "npm:@openproject/primer-view-components@0.84.5",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.84.5.tgz",
"integrity": "sha512-Q2rliK0PC37nku6blaRvlqGuh3WJS5hr7sqdHDvdzUUBoerigRHrNsg3kNy4tUEduAcEaRpsGRGkF1z0LLo2Gw==",
"version": "npm:@openproject/primer-view-components@0.85.0",
"resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.85.0.tgz",
"integrity": "sha512-W/MUtfOQnkYzPMF6unyVJ6U53epCfpXwP2DcEc3YVzEK6XIaPCSS9a86dK714Na8ysOSL6j9OGgsThyfvToJKw==",
"requires": {
"@github/auto-check-element": "^6.0.0",
"@github/auto-complete-element": "^3.8.0",
+2 -2
View File
@@ -112,12 +112,12 @@
"@ng-select/ng-select": "^21.8.0",
"@ngneat/content-loader": "^7.0.0",
"@openproject/octicons-angular": "^19.34.0",
"@openproject/primer-view-components": "^0.84.5",
"@openproject/primer-view-components": "^0.85.0",
"@openproject/reactivestates": "^3.0.1",
"@primer/css": "^22.1.0",
"@primer/live-region-element": "^0.8.0",
"@primer/primitives": "^11.5.1",
"@primer/view-components": "npm:@openproject/primer-view-components@^0.84.5",
"@primer/view-components": "npm:@openproject/primer-view-components@^0.85.0",
"@rails/request.js": "^0.0.13",
"@stimulus-components/auto-submit": "^6.0.0",
"@stimulus-components/reveal": "^5.0.0",
@@ -8,13 +8,23 @@
}
)
) do |subheader|
subheader.with_filter_component do
subheader.with_quick_filter do
render(
Meetings::MeetingFilterContainerComponent.new(
OpPrimer::QuickFilter::SegmentedComponent.new(
name: I18n.t(:label_meeting_date_time),
query: @query,
project: @project
filter_key: :time,
orders: { "future" => { start_time: :asc }, "past" => { start_time: :desc } },
path_args: [@project, :meetings]
)
)
) do |component|
component.with_item(label: I18n.t(:label_upcoming_meetings_short), value: "future")
component.with_item(label: I18n.t(:label_past_meetings_short), value: "past")
end
end
subheader.with_filter_component do
render(Meetings::MeetingFilterButtonComponent.new(query: @query, project: @project))
end
if render_create_button?
@@ -1,48 +0,0 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) the OpenProject GmbH
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 3.
OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
Copyright (C) 2006-2013 Jean-Philippe Lang
Copyright (C) 2010-2013 the ChiliProject Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See COPYRIGHT and LICENSE files for more details.
++#%>
<%= render(Primer::OpenProject::FlexLayout.new(align_items: :center)) do |flex| %>
<% flex.with_column(mr: 2) do %>
<%= render(Meetings::MeetingFilterButtonComponent.new(query: @query, project: @project)) %>
<% end %>
<% flex.with_column do %>
<%= render(
OpPrimer::QuickFilter::SegmentedComponent.new(
name: I18n.t(:label_meeting_date_time),
query: @query,
filter_key: :time,
orders: { "future" => { start_time: :asc }, "past" => { start_time: :desc } },
path_args: [@project, :meetings]
)
) do |component|
component.with_item(label: I18n.t(:label_upcoming_meetings_short), value: "future")
component.with_item(label: I18n.t(:label_past_meetings_short), value: "past")
end %>
<% end %>
<% end %>
@@ -1,39 +0,0 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
# ++
module Meetings
class MeetingFilterContainerComponent < ApplicationComponent
def initialize(query:, project: nil)
super
@query = query
@project = project
end
end
end