Merge pull request #8031 from opf/feature/timelog_on_widget_recent
recent work packages tab on time entry autocompleter [ci skip]pull/8041/head
commit
51b0c1cf0e
@ -0,0 +1,43 @@ |
||||
<ng-select #ngSelectComponent |
||||
[(ngModel)]="model" |
||||
[items]="availableValues" |
||||
[ngClass]="classes" |
||||
[addTag]="createAllowed" |
||||
[virtualScroll]="true" |
||||
[required]="required" |
||||
[clearable]="!required" |
||||
[disabled]="disabled" |
||||
[typeahead]="typeahead" |
||||
[clearOnBackspace]="false" |
||||
[appendTo]="appendTo" |
||||
[hideSelected]="hideSelected" |
||||
[loading]="finishedLoading | async" |
||||
[id]="id" |
||||
(change)="changeModel($event)" |
||||
(open)="opened()" |
||||
(close)="closed()" |
||||
(keydown)="keyPressed($event)" |
||||
bindLabel="name"> |
||||
<ng-template ng-header-tmp> |
||||
<div class="scrollable-tabs -narrow"> |
||||
<ul class="tabrow"> |
||||
<li [ngClass]="{'selected': mode === 'all'}" |
||||
(click)="setMode('all')"> |
||||
<a href="#" [textContent]="text.all"> |
||||
</a> |
||||
</li> |
||||
<li [ngClass]="{'selected': mode === 'recent'}" |
||||
(click)="setMode('recent')"> |
||||
<a href="#" [textContent]="text.recent"> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</ng-template> |
||||
<ng-template ng-tag-tmp let-search="searchTerm"> |
||||
<b [textContent]="text.add_new_action"></b>: {{search}} |
||||
</ng-template> |
||||
<ng-template ng-option-tmp let-item="item" let-search="searchTerm"> |
||||
<div [ngOptionHighlight]="search" class="ng-option-label ellipsis">{{ item.name }}</div> |
||||
</ng-template> |
||||
</ng-select> |
@ -0,0 +1,2 @@ |
||||
.ng-dropdown-panel .ng-dropdown-header |
||||
padding-bottom: 0 |
@ -0,0 +1,72 @@ |
||||
// -- copyright
|
||||
// OpenProject is a project management system.
|
||||
// Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
|
||||
//
|
||||
// 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 doc/COPYRIGHT.rdoc for more details.
|
||||
// ++
|
||||
|
||||
import { |
||||
AfterViewInit, |
||||
Component, |
||||
ViewEncapsulation, |
||||
Output, |
||||
EventEmitter, |
||||
ChangeDetectorRef, |
||||
} from '@angular/core'; |
||||
import {WorkPackageAutocompleterComponent} from "core-app/modules/common/autocomplete/wp-autocompleter.component"; |
||||
import {I18nService} from "core-app/modules/common/i18n/i18n.service"; |
||||
import {CurrentProjectService} from "core-components/projects/current-project.service"; |
||||
import {PathHelperService} from "core-app/modules/common/path-helper/path-helper.service"; |
||||
|
||||
export type TimeEntryWorkPackageAutocompleterMode = 'all'|'recent'; |
||||
|
||||
@Component({ |
||||
templateUrl: './te-work-package-autocompleter.component.html', |
||||
styleUrls: ['./te-work-package-autocompleter.component.sass'], |
||||
selector: 'te-work-package-autocompleter', |
||||
encapsulation: ViewEncapsulation.None |
||||
}) |
||||
export class TimeEntryWorkPackageAutocompleterComponent extends WorkPackageAutocompleterComponent implements AfterViewInit { |
||||
@Output() modeSwitch = new EventEmitter<TimeEntryWorkPackageAutocompleterMode>(); |
||||
|
||||
constructor(readonly I18n:I18nService, |
||||
readonly cdRef:ChangeDetectorRef, |
||||
readonly currentProject:CurrentProjectService, |
||||
readonly pathHelper:PathHelperService) { |
||||
super(I18n, cdRef, currentProject, pathHelper); |
||||
|
||||
this.text['all'] = this.I18n.t('js.label_all'); |
||||
this.text['recent'] = this.I18n.t('js.label_recent'); |
||||
} |
||||
|
||||
public loading:boolean = false; |
||||
public mode:TimeEntryWorkPackageAutocompleterMode = 'all'; |
||||
|
||||
public setMode(value:TimeEntryWorkPackageAutocompleterMode) { |
||||
if (value !== this.mode) { |
||||
this.modeSwitch.emit(value); |
||||
} |
||||
this.mode = value; |
||||
} |
||||
} |
Loading…
Reference in new issue