coffeescript-ui
Version:
Coffeescript User Interface System
164 lines (132 loc) • 4.54 kB
text/coffeescript
class CUI.DOMElement extends CUI.Element
:
qa: false
initOpts: ->
super()
class:
default: ""
check: String
# add a DOM id
id:
check: String
qa:
check: String
attr:
check: "PlainObject"
registerTemplate: (template, add_default_classes=true) ->
CUI.util.assert(template instanceof CUI.Template, "#{CUI.util.getObjectClass(@)}.registerDOMElement", "template must be instance of Template but is #{CUI.util.getObjectClass(template)}.", template: template)
if
console.warn("#{CUI.util.getObjectClass(@)}.registerDO MElement", "Already called before, destroying existing template", template: )
.destroy()
= template
getDOMElementClasses: ->
return 'cui-'+CUI.util.toDash()
registerDOMElement: (, add_default_classes=true) ->
if add_default_classes
CUI.dom.addClass(, )
if
CUI.dom.setAttributeMap(, )
if
CUI.dom.setAttribute(, 'id', )
if
CUI.dom.addClass(, )
if and CUI.DOMElement.defaults.qa
CUI.dom.setAttribute(, 'data-qa', )
CUI.dom.data(, "element", @)
@
# if used as parameter in "Layer", overwrite to
# a different element to position the layer with
getElementForLayer: ->
unregisterDOMElement: ->
CUI.dom.removeClass(, )
CUI.dom.removeAttribute(, "id")
if
CUI.dom.removeClass(, )
CUI.dom.removeData(, "element")
delete()
@
__assertDOMElement: (func) ->
CUI.util.assert(, "#{@__cls}.#{func}", "registerDOMElement needs to be called before \"#{func}\" is supported.")
__assertTemplateElement: (func) ->
CUI.util.assert(, "#{@__cls}.#{func}", "registerTemplateElement needs to be called before \"#{func}\" is supported.")
addClass: (className, key) ->
CUI.util.assert(arguments.length == 1 or arguments.length == 2, "addClass", "Only 'className' and 'key' parameters are allowed.")
if key
.addClass.call(, className, key, @)
else
CUI.dom.addClass(, className)
setAria: (attr, value) ->
CUI.dom.setAria(, attr, value)
removeClass: (className, key) ->
CUI.util.assert(arguments.length == 1 or arguments.length == 2, "removeClass", "Only 'className' and 'key' parameters are allowed.")
if key
.removeClass.call(, className, key, @)
else
CUI.dom.removeClass(, className)
hide: (key) ->
if CUI.util.isEmpty(key)
CUI.dom.hideElement()
else
.hide.call(, key)
show: (key) ->
if CUI.util.isEmpty(key)
CUI.dom.showElement()
else
.show.call(, key)
showWaitBlock: ->
= new CUI.WaitBlock
element:
.show()
@
hideWaitBlock: ->
.destroy()
delete()
@
hasClass: (cls) ->
CUI.util.assert(arguments.length == 1, "CUI.dom.hasClass", "Only one parameter allowed.")
CUI.dom.hasClass(, cls)
isDestroyed: (key) ->
?.isDestroyed.call(, key)
empty: (key) ->
.empty.call(, key)
replace: (value, key) ->
.replace.call(, value, key, @)
append: (value, key) ->
.append.call(, value, key, @)
prepend: (value, key) ->
.prepend.call(, value, key, @)
text: (value, key) ->
.text.call(, value, key, @)
get: (key) ->
.get.call(, key, @)
getFlexHandle: (key, do_assert) ->
.getFlexHandle.call(, key, do_assert)
destroy: ->
# we need to set "isDestroyed" first, so
super()
if
?.destroy()
else if
CUI.dom.remove()
@