summaryrefslogtreecommitdiffstats
path: root/src/elements/A.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/elements/A.js')
-rw-r--r--src/elements/A.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/elements/A.js b/src/elements/A.js
new file mode 100644
index 0000000..68da597
--- /dev/null
+++ b/src/elements/A.js
@@ -0,0 +1,43 @@
+import { nodeOrNew, register } from '../utils/adopter.js'
+import { registerMethods } from '../utils/methods.js'
+import { xlink } from '../modules/core/namespaces.js'
+import Container from './Container.js'
+
+export default class A extends Container {
+ constructor (node) {
+ super(nodeOrNew('a', node), A)
+ }
+
+ // Link url
+ to (url) {
+ return this.attr('href', url, xlink)
+ }
+
+ // Link target attribute
+ target (target) {
+ return this.attr('target', target)
+ }
+}
+
+registerMethods({
+ Container: {
+ // Create a hyperlink element
+ link: function (url) {
+ return this.put(new A()).to(url)
+ }
+ },
+ Element: {
+ // Create a hyperlink element
+ linkTo: function (url) {
+ var link = new A()
+
+ if (typeof url === 'function') { url.call(link, link) } else {
+ link.to(url)
+ }
+
+ return this.parent().put(link).put(this)
+ }
+ }
+})
+
+register(A)