Add styles to elements
This commit is contained in:
parent
04421a00a5
commit
9f46d03447
|
@ -36,8 +36,13 @@ function msgSet (m) {
|
||||||
console.error ("Unknown node id", m);
|
console.error ("Unknown node id", m);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
node[m.k] = m.v;
|
const parts = m.k.split(".");
|
||||||
if (debug) console.log ("Set", node, m.k, m.v);
|
let o = node;
|
||||||
|
for (let i = 0; i < parts.length - 1; i++) {
|
||||||
|
o = o[parts[i]];
|
||||||
|
}
|
||||||
|
o[parts[parts.length - 1]] = m.v;
|
||||||
|
if (debug) console.log ("Set", node, parts, m.v);
|
||||||
}
|
}
|
||||||
|
|
||||||
function msgCall (m) {
|
function msgCall (m) {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace Ooui
|
namespace Ooui
|
||||||
{
|
{
|
||||||
|
@ -10,6 +11,8 @@ namespace Ooui
|
||||||
set => SetProperty (ref className, value, "className");
|
set => SetProperty (ref className, value, "className");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Style Style { get; private set; } = new Style ();
|
||||||
|
|
||||||
string title = "";
|
string title = "";
|
||||||
public string Title {
|
public string Title {
|
||||||
get => title;
|
get => title;
|
||||||
|
@ -25,6 +28,12 @@ namespace Ooui
|
||||||
protected Element (string tagName)
|
protected Element (string tagName)
|
||||||
: base (tagName)
|
: base (tagName)
|
||||||
{
|
{
|
||||||
|
Style.PropertyChanged += HandleStylePropertyChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleStylePropertyChanged (object sender, PropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
SendSet ("style." + Style.GetJsName (e.PropertyName), Style[e.PropertyName]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -332,6 +332,23 @@ namespace Ooui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetJsName (string propertyName)
|
||||||
|
{
|
||||||
|
var o = new System.Text.StringBuilder ();
|
||||||
|
var needsCap = false;
|
||||||
|
for (var i = 0; i < propertyName.Length; i++) {
|
||||||
|
var c = propertyName[i];
|
||||||
|
if (c == '-') {
|
||||||
|
needsCap = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
o.Append (needsCap ? Char.ToUpperInvariant (c) : c);
|
||||||
|
needsCap = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return o.ToString ();
|
||||||
|
}
|
||||||
|
|
||||||
public override string ToString ()
|
public override string ToString ()
|
||||||
{
|
{
|
||||||
var o = new System.Text.StringBuilder ();
|
var o = new System.Text.StringBuilder ();
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
using System;
|
using System;
|
||||||
using Ooui;
|
using Ooui;
|
||||||
|
|
||||||
namespace Samples
|
namespace Samples
|
||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
static void Main (string[] args)
|
static void Main (string[] args)
|
||||||
{
|
{
|
||||||
new ButtonSample ().Publish ();
|
new ButtonSample ().Publish ();
|
||||||
|
new TodoSample ().Publish ();
|
||||||
Console.ReadLine ();
|
|
||||||
}
|
Console.ReadLine ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
using System;
|
||||||
|
using Ooui;
|
||||||
|
|
||||||
|
namespace Samples
|
||||||
|
{
|
||||||
|
public class TodoSample
|
||||||
|
{
|
||||||
|
Button MakeTodo ()
|
||||||
|
{
|
||||||
|
var button = new Button ("Click me!");
|
||||||
|
button.Style.FontSize = 100;
|
||||||
|
var count = 0;
|
||||||
|
button.Clicked += (s, e) => {
|
||||||
|
button.Style.FontSize = (int)button.Style.FontSize + 1;
|
||||||
|
count++;
|
||||||
|
button.Text = $"Clicked {count} times";
|
||||||
|
};
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Publish ()
|
||||||
|
{
|
||||||
|
var b = MakeTodo ();
|
||||||
|
|
||||||
|
UI.Publish ("/todo", MakeTodo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,5 +70,11 @@ namespace Tests
|
||||||
s.BorderLeftWidth = 3.142;
|
s.BorderLeftWidth = 3.142;
|
||||||
Assert.AreEqual ("border-left-width:3.142", s.ToString ());
|
Assert.AreEqual ("border-left-width:3.142", s.ToString ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void JsName ()
|
||||||
|
{
|
||||||
|
Assert.AreEqual ("borderLeftWidth", Style.GetJsName ("border-left-width"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue