sn-controls-aurelia
Version:
Aurelia controls for sensenet ECM
68 lines (56 loc) • 1.82 kB
text/typescript
/**
* @module FieldControls
*
*/ /** */
import { bindable, computedFrom } from 'aurelia-framework';
import { FieldBaseControl } from './FieldBaseControl';
import { FieldSettings, Content, ODataHelper } from 'sn-client-js';
import { User } from 'sn-client-js/dist/src/ContentTypes';
/**
* Control for displaying an icon
* Usage:
*
* ``` html
* <icon icon-name.bind="content.Icon"></icon>
* ```
*/
export class Icon extends FieldBaseControl<string, FieldSettings.FieldSetting> {
private iconNames = {
Folder: 'folder',
File: 'insert_drive_file',
ContentType: 'code',
User: 'person',
Group: 'group',
Application: 'settings',
Settings: 'settings',
fieldsetting: 'input',
FormItem: 'list',
Image: 'photo',
image: 'photo',
ContentList: 'list',
Device: 'devices',
Domain: 'domain',
Document: 'insert_drive_file', //???
trash: 'delete'
}
public content: Content<User>;
public HasAvatar: boolean = false;
public IconImage: string;
public get MaterialIconName(): string {
return this.content && this.content.Icon && this.iconNames[this.content.Icon] || 'folder';
}
public ContentChanged(){
this.TryLoadAvatar();
}
public TryLoadAvatar(){
if (this.content && (this.content as User).ImageData){
if (this.content.ImageData && this.content.ImageData.__mediaresource.media_src){
this.IconImage = ODataHelper.joinPaths(this.content.GetRepository().Config.RepositoryUrl, this.content.ImageData.__mediaresource.media_src);
}
}
}
}