mirror of https://github.com/hashicorp/consul
43 lines
953 B
JavaScript
43 lines
953 B
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Component from '@glimmer/component';
|
|
import { tracked } from '@glimmer/tracking';
|
|
import { action } from '@ember/object';
|
|
|
|
export default class Element extends Component {
|
|
@tracked el;
|
|
|
|
@tracked touched = false;
|
|
|
|
get type() {
|
|
if (typeof this.el !== 'undefined') {
|
|
return this.el.dataset.type || this.el.getAttribute('type') || this.el.getAttribute('role');
|
|
}
|
|
return this.args.type;
|
|
}
|
|
get name() {
|
|
if (typeof this.args.group !== 'undefined') {
|
|
return `${this.args.group.name}[${this.args.name}]`;
|
|
} else {
|
|
return this.args.name;
|
|
}
|
|
}
|
|
get prop() {
|
|
return `${this.args.name.toLowerCase().split('.').join('-')}`;
|
|
}
|
|
get state() {
|
|
const error = this.touched && this.args.error;
|
|
return {
|
|
matches: (name) => name === 'error' && error,
|
|
};
|
|
}
|
|
|
|
@action
|
|
connect($el) {
|
|
this.el = $el;
|
|
}
|
|
}
|