mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-29 01:59:39 +01:00
Implement et2-select-account
This commit is contained in:
parent
5f997299e5
commit
dd7ebad1e7
@ -79,6 +79,7 @@ function send_template()
|
||||
}
|
||||
static $legacy_options = array( // use "ignore" to ignore further comma-sep. values, otherwise they are all in last attribute
|
||||
'select' => 'empty_label,ignore',
|
||||
'select-account' => 'empty_label,account_type,ignore',
|
||||
'box' => ',cellpadding,cellspacing,keep',
|
||||
'hbox' => 'cellpadding,cellspacing,keep',
|
||||
'vbox' => 'cellpadding,cellspacing,keep',
|
||||
|
@ -1,18 +1,73 @@
|
||||
/**
|
||||
* EGroupware eTemplate2 - Description WebComponent
|
||||
* EGroupware eTemplate2 - Account-selection WebComponent
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package api
|
||||
* @link https://www.egroupware.org
|
||||
* @author Nathan Gray
|
||||
* @author Ralf Becker <rb@egroupware.org>
|
||||
*/
|
||||
|
||||
import {Et2Select} from "./Et2Select";
|
||||
import {SelectOption} from "./FindSelectOptions";
|
||||
|
||||
export type AccountType = 'accounts'|'groups'|'both'|'owngroups';
|
||||
|
||||
/**
|
||||
* @customElement et2-select-account
|
||||
*/
|
||||
export class Et2SelectAccount extends Et2Select
|
||||
{
|
||||
static get properties()
|
||||
{
|
||||
return {
|
||||
...super.properties,
|
||||
/**
|
||||
* One of: 'accounts','groups','both','owngroups'
|
||||
*/
|
||||
account_type: String,
|
||||
}
|
||||
}
|
||||
|
||||
constructor()
|
||||
{
|
||||
super();
|
||||
|
||||
this.account_type = 'accounts';
|
||||
}
|
||||
|
||||
set_account_type(type : AccountType)
|
||||
{
|
||||
this.account_type = type;
|
||||
|
||||
this.set_select_options(this.get_select_options());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get account info for select options from common client-side account cache
|
||||
*/
|
||||
get_select_options() : Array<SelectOption>
|
||||
{
|
||||
const type = this.egw().preference('account_selection', 'common');
|
||||
if (type === 'none' && typeof egw.user('apps').admin === 'undefined')
|
||||
{
|
||||
return [];
|
||||
}
|
||||
let select_options : Array<SelectOption>;
|
||||
// for primary_group we only display owngroups == own memberships, not other groups
|
||||
if (type === 'primary_group' && this.account_type !== 'accounts')
|
||||
{
|
||||
if (this.account_type === 'both')
|
||||
{
|
||||
select_options = this.egw().accounts('accounts');
|
||||
}
|
||||
select_options = select_options.concat(this.egw().accounts('owngroups'));
|
||||
}
|
||||
else
|
||||
{
|
||||
select_options = this.egw().accounts(this.account_type);
|
||||
}
|
||||
return select_options;
|
||||
}
|
||||
}
|
||||
|
||||
// @ts-ignore TypeScript is not recognizing that this widget is a LitElement
|
||||
|
Loading…
Reference in New Issue
Block a user