aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-12-19 15:12:28 +0000
committers-ol <s-ol@users.noreply.github.com>2018-12-19 15:12:28 +0000
commit8979cdb43826e3286d708df015d985833d378f6f (patch)
treea88d45b111dd7c5098eb5f21805aa4f9894be686
parentadd about section (diff)
downloadmmm-8979cdb43826e3286d708df015d985833d378f6f.tar.gz
mmm-8979cdb43826e3286d708df015d985833d378f6f.zip
layout + options
-rw-r--r--build/layout.moon8
-rw-r--r--mmm/mmmfs/browser.moon1
-rw-r--r--mmm/mmmfs/util.moon22
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
}