diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-12-19 15:12:28 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-12-19 15:12:28 +0000 |
| commit | 8979cdb43826e3286d708df015d985833d378f6f (patch) | |
| tree | a88d45b111dd7c5098eb5f21805aa4f9894be686 | |
| parent | add about section (diff) | |
| download | mmm-8979cdb43826e3286d708df015d985833d378f6f.tar.gz mmm-8979cdb43826e3286d708df015d985833d378f6f.zip | |
layout + options
| -rw-r--r-- | build/layout.moon | 8 | ||||
| -rw-r--r-- | mmm/mmmfs/browser.moon | 1 | ||||
| -rw-r--r-- | mmm/mmmfs/util.moon | 22 |
3 files changed, 23 insertions, 8 deletions
diff --git a/build/layout.moon b/build/layout.moon index e17be2a..85f3bfa 100644 --- a/build/layout.moon +++ b/build/layout.moon @@ -1,4 +1,5 @@ import header, aside, footer, div, svg, script, g, circle, h1, span, b, a, img from require 'mmm.dom' +import navigate_to from (require 'mmm.mmmfs.util') require 'mmm.dom' pick = (...) -> num = select '#', ... @@ -44,15 +45,14 @@ logo = svg { -- pick 'mostly code', 'code and wires', 'silicon', 'electronics' } aside { - a 'about me', href: '/about' - a 'games', href: '/games' - a 'other', href: '/projects' + navigate_to '/about', 'about me' + navigate_to '/games', 'games' + navigate_to '/projects', 'other' a { href: 'mailto:s%20[removethis]%20[at]%20s-ol.nu' 'contact' script " var l = document.currentScript.parentElement; - console.log(l); l.href = l.href.replace('%20[at]%20', '@'); l.href = l.href.replace('%20[removethis]', '') + '?subject=Hey there :)'; " diff --git a/mmm/mmmfs/browser.moon b/mmm/mmmfs/browser.moon index 530c5d1..f05850c 100644 --- a/mmm/mmmfs/browser.moon +++ b/mmm/mmmfs/browser.moon @@ -199,6 +199,7 @@ class Browser \append @inspect_prop\map (prop) -> @get_content prop, (prop) => value, key = @get prop + assert key, "couldn't @get #{prop}" conversions = get_conversions 'mmm/dom', key.type, casts assert conversions, "cannot cast '#{key.type}'" diff --git a/mmm/mmmfs/util.moon b/mmm/mmmfs/util.moon index 33b5868..575e814 100644 --- a/mmm/mmmfs/util.moon +++ b/mmm/mmmfs/util.moon @@ -1,3 +1,8 @@ +merge = (orig={}, extra) -> + with attr = {k,v for k,v in pairs orig} + for k,v in pairs extra + attr[k] = v + (elements) -> import a from elements @@ -8,16 +13,24 @@ else assert fileder, "no fileder passed." - link_to = (fileder, name, origin) -> + navigate_to = (path, name, opts={}) -> + opts.href = path + opts.onclick = if MODE == 'CLIENT' then (e) => + e\preventDefault! + BROWSER\navigate path + opts.target = 'default' + a name, opts + + link_to = (fileder, name, origin, attr) -> fileder = find_fileder fileder, origin name or= fileder\get 'title: mmm/dom' name or= fileder\gett 'name: alpha' if href = fileder\get 'link: URL.*' - a name, :href, target: '_blank' + a name, merge attr, :href, target: '_blank' else - a name, { + a name, merge attr, { href: fileder.path onclick: if MODE == 'CLIENT' then (e) => e\preventDefault! @@ -30,10 +43,11 @@ node = fileder\gett name, 'mmm/dom' return node if opts.nolink - link_to fileder, node + link_to fileder, node, nil, opts.attr { :find_fileder :link_to + :navigate_to :embed } |
