mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 14:41:29 +01:00
73 lines
1.5 KiB
TypeScript
73 lines
1.5 KiB
TypeScript
/**
|
|
* EGroupware eTemplate2 - Button that's just an image
|
|
*
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package etemplate
|
|
* @subpackage api
|
|
* @link https://www.egroupware.org
|
|
* @author Nathan Gray
|
|
*/
|
|
|
|
|
|
import {Et2InputWidget} from "../Et2InputWidget/Et2InputWidget";
|
|
import '../Et2Image/Et2Image';
|
|
import {SlIconButton} from "@shoelace-style/shoelace";
|
|
import {ButtonMixin} from "./ButtonMixin";
|
|
import shoelace from "../Styles/shoelace";
|
|
import {css} from "lit";
|
|
|
|
|
|
export class Et2ButtonIcon extends ButtonMixin(Et2InputWidget(SlIconButton))
|
|
{
|
|
static get styles()
|
|
{
|
|
return [
|
|
...shoelace,
|
|
...(super.styles || []),
|
|
css`
|
|
:host {
|
|
flex: 0 0 auto !important;
|
|
}
|
|
`,
|
|
];
|
|
}
|
|
|
|
private __image;
|
|
|
|
set image(new_image : string)
|
|
{
|
|
let oldValue = this.__image;
|
|
if(new_image.indexOf("http") >= 0 || new_image.indexOf(this.egw().webserverUrl) >= 0)
|
|
{
|
|
this.src = new_image
|
|
}
|
|
else
|
|
{
|
|
this.src = this.egw().image(new_image);
|
|
}
|
|
this.__image = new_image;
|
|
|
|
// For some reason setting it directly does not show the image
|
|
this.updateComplete.then(() =>
|
|
{
|
|
const icon = this.shadowRoot.querySelector('sl-icon');
|
|
icon.id = "";
|
|
if(new_image && !this.src)
|
|
{
|
|
icon.src = "";
|
|
icon.name = new_image;
|
|
}
|
|
else
|
|
{
|
|
icon.name = "";
|
|
}
|
|
});
|
|
}
|
|
|
|
get image()
|
|
{
|
|
return this.__image || this.name;
|
|
}
|
|
}
|
|
|
|
customElements.define("et2-button-icon", Et2ButtonIcon); |