forked from extern/egroupware
Readonly checkbox
This commit is contained in:
parent
e1885983d5
commit
04ac4d6045
114
api/js/etemplate/Et2Checkbox/Et2CheckboxReadonly.ts
Normal file
114
api/js/etemplate/Et2Checkbox/Et2CheckboxReadonly.ts
Normal file
@ -0,0 +1,114 @@
|
||||
import {et2_IDetachedDOM} from "../et2_core_interfaces";
|
||||
import {et2_checkbox} from "../et2_widget_checkbox";
|
||||
import {Et2InputWidget} from "../Et2InputWidget/Et2InputWidget";
|
||||
import {classMap, css, html, LitElement} from "@lion/core";
|
||||
import shoelace from "../Styles/shoelace";
|
||||
|
||||
/**
|
||||
* et2_checkbox_ro is the dummy readonly implementation of the checkbox
|
||||
* @augments et2_checkbox
|
||||
*/
|
||||
export class Et2CheckboxReadonly extends Et2InputWidget(LitElement) implements et2_IDetachedDOM
|
||||
{
|
||||
static get styles()
|
||||
{
|
||||
return [
|
||||
...shoelace,
|
||||
...super.styles,
|
||||
css`
|
||||
:host {
|
||||
margin: auto 0px;
|
||||
vertical-align: -webkit-baseline-middle;
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
|
||||
static get properties()
|
||||
{
|
||||
return {
|
||||
...super.properties,
|
||||
|
||||
/**
|
||||
* Checkbox is checked
|
||||
*/
|
||||
checked: {type: Boolean},
|
||||
|
||||
/**
|
||||
* The checkbox's value attribute
|
||||
*/
|
||||
value: {type: String},
|
||||
|
||||
/* Value when checked */
|
||||
selectedValue: {type: String},
|
||||
|
||||
/**
|
||||
* What should be displayed when readonly and selected
|
||||
*/
|
||||
roTrue: {type: String},
|
||||
/**
|
||||
* What should be displayed when readonly and not selected
|
||||
*/
|
||||
roFalse: {type: String}
|
||||
};
|
||||
}
|
||||
|
||||
constructor() {super();}
|
||||
|
||||
render()
|
||||
{
|
||||
const isChecked = this.checked || typeof this.selectedValue == "string" && this.value == this.selectedValue;
|
||||
let check = "";
|
||||
|
||||
if(isChecked && this.roTrue)
|
||||
{
|
||||
check = this.roTrue;
|
||||
}
|
||||
else if(isChecked)
|
||||
{
|
||||
check = html`
|
||||
<sl-icon name="check"></sl-icon>`;
|
||||
}
|
||||
else if(!isChecked && this.roFalse)
|
||||
{
|
||||
check = this.roFalse;
|
||||
}
|
||||
|
||||
return html`
|
||||
<label part="base" class=${classMap({
|
||||
checkbox: true,
|
||||
'checkbox--checked': this.checked,
|
||||
'checkbox--disabled': this.disabled,
|
||||
'checkbox--focused': this.hasFocus,
|
||||
'checkbox--indeterminate': this.indeterminate
|
||||
})}
|
||||
>
|
||||
<span part="control" class="checkbox__control">${check}</span>
|
||||
<span part="label" class="checkbox__label">
|
||||
<slot>${this.label}</slot>
|
||||
</span>
|
||||
</label>
|
||||
`;
|
||||
}
|
||||
|
||||
getDetachedAttributes(_attrs : string[]) : void
|
||||
{
|
||||
_attrs.push("value", "class");
|
||||
}
|
||||
|
||||
getDetachedNodes() : HTMLElement[]
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
setDetachedAttributes(_nodes : HTMLElement[], _values : object, _data?) : void
|
||||
{
|
||||
for(let attr in _values)
|
||||
{
|
||||
this[attr] = _values[attr];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
customElements.define("et2-checkbox_ro", Et2CheckboxReadonly);
|
@ -28,6 +28,7 @@ import './Layout/Et2Details/Et2Details';
|
||||
import './Et2Avatar/Et2Avatar';
|
||||
import './Et2Button/Et2Button';
|
||||
import './Et2Checkbox/Et2Checkbox';
|
||||
import './Et2Checkbox/Et2CheckboxReadonly';
|
||||
import './Et2Date/Et2Date';
|
||||
import './Et2Date/Et2DateDuration';
|
||||
import './Et2Date/Et2DateDurationReadonly';
|
||||
|
Loading…
Reference in New Issue
Block a user