import {ClassUtil} from "../utils/ClassUtil"
class MduiFloatActionButtonElement extends HTMLElement {
private _hide: boolean | undefined
private _color: string | undefined
private _fixed: boolean | undefined
private _mini: boolean | undefined
constructor() {
super();
this.classList.add("mdui-fab")
this.classList.add("mdui-ripple")
// 如果标签不是空标签,就会尝试将标签内文字转换成图标
const iconText = this.innerText
if (iconText != "") {
const icon = document.createElement("i")
icon.innerText = String(iconText).toLowerCase()
this.innerText = ""
icon.classList.add("mdui-icon")
icon.classList.add("material-icons")
this.appendChild(icon)
}
const timerListener = () => {
if (this.hide != this._hide) {
this._hide = this.hide
if (this.hide) {
this.classList.add("mdui-fab-hide")
} else {
this.classList.remove("mdui-fab-hide")
}
}
if (this.fixed != this._fixed) {
this._fixed = this.fixed
if (this.fixed) {
this.classList.add("mdui-fab-fixed")
} else {
this.classList.remove("mdui-fab-fixed")
}
}
if (this.color != this._color) {
this._color = this.color
if (this.color) {
ClassUtil.changeColor(this.color, this)
if (this.color == "white") {
this.classList.add("mdui-ripple-black")
} else {
this.classList.remove("mdui-ripple-black")
}
}
}
if (this.mini != this._mini) {
this._mini = this.mini
if (this.mini) {
this.classList.add("mdui-fab-mini")
} else {
this.classList.remove("mdui-fab-mini")
}
}
}
setInterval(timerListener, 50)
}
/**
* 在浮动操作按钮上设置fixed属性可以使浮动操作按钮固定在容器右下方
* 示例:
* add
*/
get fixed() {
const fixedAttr = this.getAttributeNode("fixed")
if (fixedAttr == null) {
return false
}
return fixedAttr.value != "false"
}
set fixed(isFixed: boolean) {
this._fixed = isFixed
this.setAttribute("fixed", String(isFixed))
if (isFixed) {
this.classList.add("mdui-fab-fixed")
} else {
this.classList.remove("mdui-fab-fixed")
}
}
/**
* 在浮动操作按钮上设置color属性可更改按钮颜色,默认白色
* 示例:靛青色浮动操作按钮
* add
*/
get color() {
const colorAttr = this.getAttributeNode("color")
if (colorAttr == null) {
return "white"
}
return colorAttr.value
}
set color(color: string) {
this._color = color
this.setAttribute("color", color)
ClassUtil.changeColor(color, this)
if (color == "white") {
this.classList.add("mdui-ripple-black")
} else {
this.classList.remove("mdui-ripple-black")
}
}
/**
* 在浮动操作按钮上设置hide属性可以使按钮以动画的形式隐藏
* 示例:哈?这个没法演示诶
*/
get hide() {
const hideAttr = this.getAttributeNode("hide")
if (hideAttr == null) {
return false
}
return hideAttr.value != "false"
}
set hide(isHide: boolean) {
this._hide = isHide
this.setAttribute("hide", String(isHide))
if (isHide) {
this.classList.add("mdui-fab-hide")
} else {
this.classList.remove("mdui-fab-hide")
}
}
/**
* 在浮动操作按钮上设置mini属性可以让按钮变成迷你型浮动操作按钮
* 示例:
* add
*/
get mini() {
const miniAttr = this.getAttributeNode("mini")
if (miniAttr == null) {
return false
}
return miniAttr.value != "false"
}
set mini(isMini: boolean) {
this._mini = isMini
this.setAttribute("mini", String(isMini))
if (isMini) {
this.classList.add("mdui-fab-mini")
} else {
this.classList.remove("mdui-fab-mini")
}
}
}
class MduiFabWrapperElement extends HTMLElement {
constructor() {
super();
this.classList.add("mdui-fab-wrapper")
this.setAttribute("mdui-fab", "{trigger: 'hover'}")
}
}
class MduiFabDialElement extends HTMLElement {
constructor() {
super();
this.classList.add("mdui-fab-dial")
}
}
export {MduiFloatActionButtonElement, MduiFabWrapperElement, MduiFabDialElement}