2020-02-02 14:02:25 -08:00
|
|
|
import Component from '@ember/component';
|
|
|
|
// @ts-ignore: Ignore import of compiled template
|
|
|
|
import template from '../../templates/components/properties/single-value-renderer';
|
|
|
|
import { tagName, layout } from '@ember-decorators/component';
|
|
|
|
import { IDynamicComponent } from '@datahub/shared/types/dynamic-component';
|
2020-08-26 15:44:50 -07:00
|
|
|
import { computed } from '@ember/object';
|
|
|
|
import { typeOf } from '@ember/utils';
|
2020-02-02 14:02:25 -08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* will render a single value with a custom component (or not)
|
|
|
|
*
|
|
|
|
* It helps using the same component for different entities
|
|
|
|
*/
|
|
|
|
@layout(template)
|
|
|
|
@tagName('')
|
|
|
|
export default class PropertiesSingleValueRenderer extends Component {
|
|
|
|
/**
|
|
|
|
* Dynamic component that will be used to render the value
|
|
|
|
*/
|
|
|
|
component?: IDynamicComponent;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Value that component passed can render,
|
|
|
|
* if no component, then it will render the string
|
|
|
|
*/
|
|
|
|
value: unknown | string;
|
2020-08-26 15:44:50 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Type of value to read from template
|
|
|
|
*/
|
|
|
|
@computed('value')
|
|
|
|
get valueType(): string {
|
|
|
|
return typeOf(this.value);
|
|
|
|
}
|
2020-02-02 14:02:25 -08:00
|
|
|
}
|