Skip to content

Commit 8039a21

Browse files
committed
Tweak autocompleter layout and styles
1 parent 9a1c52c commit 8039a21

File tree

7 files changed

+116
-22
lines changed

7 files changed

+116
-22
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
1-
<ng-template #optionTemplate let-item>
2-
<div>ID: {{ item.id }}</div>
3-
<div>Name: {{ item.name }}</div>
4-
<div>Project: {{ item.project }}</div>
5-
<div>Time: {{ item.start_time }}</div>
6-
<div>Date: {{ item.start_date }}</div>
7-
<div *ngIf="item.frequency">Frequency: {{ item.frequency }}</div>
1+
<ng-template #optionTemplate let-item let-search="search">
2+
<div class="op-autocompleter__meeting-option-grid">
3+
<div class="op-autocompleter__field--name" [opSearchHighlight]="search">
4+
{{ item.name }}
5+
</div>
6+
<div class="op-autocompleter__field--date">
7+
{{ item.start_date }}
8+
</div>
9+
<div class="op-autocompleter__field--project-label">Project:</div>
10+
11+
<div class="op-autocompleter__field--frequency" *ngIf="item.frequency">
12+
{{ item.frequency }}
13+
</div>
14+
<div class="op-autocompleter__field--time">
15+
{{ item.start_time }}
16+
</div>
17+
<div class="op-autocompleter__field--project">{{ item.project }}</div>
18+
</div>
819
</ng-template>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
@import '../../global_styles/openproject/variables'
2+
3+
.op-autocompleter
4+
&__meeting-option-grid
5+
display: grid
6+
grid-template-columns: 2fr 1fr 1fr
7+
grid-template-rows: auto auto
8+
column-gap: var(--stack-gap-condensed)
9+
row-gap: calc(var(--stack-gap-condensed) / 2)
10+
align-items: baseline
11+
font-size: var(--font-size-small)
12+
13+
&__field--name
14+
grid-row: 1
15+
grid-column: 1
16+
font-weight: 600
17+
overflow: hidden
18+
text-overflow: ellipsis
19+
20+
&__field--date
21+
grid-row: 1
22+
grid-column: 2
23+
color: var(--fgColor-muted)
24+
25+
&__field--project-label
26+
grid-row: 1
27+
grid-column: 3
28+
color: var(--fgColor-muted)
29+
text-align: left
30+
31+
&__field--frequency
32+
grid-row: 2
33+
grid-column: 1
34+
color: var(--fgColor-muted)
35+
font-size: var(--font-size-small)
36+
37+
&__field--time
38+
grid-row: 2
39+
grid-column: 2
40+
color: var(--fgColor-muted)
41+
42+
&__field--project
43+
grid-row: 2
44+
grid-column: 3
45+
font-weight: 600
46+
overflow: hidden
47+
text-overflow: ellipsis
48+
white-space: nowrap
49+
50+
@media screen and (max-width: $breakpoint-sm)
51+
&__option-grid
52+
grid-template-columns: 1fr
53+
grid-template-rows: auto
54+
row-gap: calc(var(--stack-gap-condensed) / 2)
55+
56+
&__field--project-label,
57+
&__field--frequency
58+
display: none
59+
60+
&__field--name,
61+
&__field--date,
62+
&__field--project-label,
63+
&__field--frequency,
64+
&__field--time,
65+
&__field--project
66+
grid-column: 1
67+
grid-row: auto

frontend/src/app/shared/components/autocompleter/meeting-autocompleter/meeting-autocompleter-template.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333

3434
@Component({
3535
templateUrl: './meeting-autocompleter-template.component.html',
36+
styleUrls: ['./meeting-autocompleter-template.component.sass'],
3637
changeDetection: ChangeDetectionStrategy.OnPush,
3738
standalone: false,
3839
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
@import '../../global_styles/openproject/variables'
2+
3+
#add-work-package-to-meeting-dialog
4+
.ng-dropdown-panel .ng-dropdown-panel-items
5+
.ng-optgroup.ng-option-disabled
6+
background-color: var(--bgColor-neutral-muted) !important
7+
8+
.ng-option-label
9+
font-weight: normal
10+
color: black
11+
12+
.ng-option.ng-option-child
13+
padding-left: var(--base-size-16)
14+
border-bottom: 1px solid var(--borderColor-default) !important
15+
16+
.ng-option.ng-option-marked
17+
background-color: var(--bgColor-muted) !important
18+

frontend/src/app/shared/components/autocompleter/meeting-autocompleter/meeting-autocompleter.component.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,29 +29,24 @@
2929
import {
3030
Component,
3131
ChangeDetectionStrategy,
32-
OnInit,
32+
OnInit, HostBinding, ViewEncapsulation,
3333
} from '@angular/core';
34-
import { ID } from '@datorama/akita';
3534
import { OpAutocompleterComponent } from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';
3635
import { MeetingAutocompleterTemplateComponent } from 'core-app/shared/components/autocompleter/meeting-autocompleter/meeting-autocompleter-template.component';
3736

3837
export const meetingsAutocompleterSelector = 'op-meeting-autocompleter';
3938

40-
export interface IMeetingAutocompleteItem {
41-
id:ID;
42-
name:string;
43-
email?:string|null;
44-
href:string|null;
45-
avatar?:string|null;
46-
}
47-
4839
@Component({
4940
templateUrl: '../op-autocompleter/op-autocompleter.component.html',
41+
styleUrls: ['./meeting-autocompleter.component.sass'],
42+
encapsulation: ViewEncapsulation.None,
5043
selector: meetingsAutocompleterSelector,
5144
changeDetection: ChangeDetectionStrategy.OnPush,
5245
standalone: false,
5346
})
54-
export class MeetingAutocompleterComponent extends OpAutocompleterComponent<IMeetingAutocompleteItem> implements OnInit {
47+
export class MeetingAutocompleterComponent extends OpAutocompleterComponent implements OnInit {
48+
@HostBinding('class.op-meeting-autocompleter') public className = true;
49+
5550
ngOnInit():void {
5651
super.ngOnInit();
5752

modules/meeting/app/forms/meeting_agenda_item/meeting_form.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class MeetingAgendaItem::MeetingForm < ApplicationForm
4141
component: "opce-meeting-autocompleter",
4242
items: meeting_options,
4343
group_by: "group_label",
44-
# Do not try to load data from API (it will look for a "resource")
44+
focus_directly: true,
4545
defaultData: false,
4646
bindLabel: "name",
4747
bindValue: "id",

modules/meeting/app/services/group_meetings_service.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ def group_meetings # rubocop:disable Metrics/AbcSize
5454
.next_occurring(OpenProject::Internationalization::Date.beginning_of_week)
5555
.beginning_of_day
5656
groups = Hash.new { |h, k| h[k] = [] }
57-
groups[:later] = show_more_pagination(@all_meetings
58-
.where(start_time: next_week..)
59-
.order(start_time: :asc), limit: @limit)
6057

6158
@all_meetings
6259
.where(start_time: ...next_week)
@@ -76,6 +73,11 @@ def group_meetings # rubocop:disable Metrics/AbcSize
7673
groups[group_key] << meeting
7774
end
7875

76+
# Order of groups here affects group ordering in autocompleter
77+
groups[:later] = show_more_pagination(@all_meetings
78+
.where(start_time: next_week..)
79+
.order(start_time: :asc), limit: @limit)
80+
7981
groups
8082
end
8183

0 commit comments

Comments
 (0)