public ItemsList(ObservableList <IComponent> items, params UnitSize[] columns) { Items = items ?? new ObservableList <IComponent>(); if (columns.Length < 2) { _stack = Stack().Horizontal().Wrap().WidthStretch().MaxHeight(100.percent()).Scroll(); _maxStackItemSize = columns.FirstOrDefault() ?? 100.percent(); } else { _grid = Grid(columns).WidthStretch().MaxHeight(100.percent()).Scroll(); } _emptyListMessageGenerator = null; _defered = DeferedComponent.Observe( Items, observedItems => { if (!observedItems.Any()) { if (_emptyListMessageGenerator is object) { if (_grid is object) { return(_grid.Children(_emptyListMessageGenerator().GridColumnStretch()).AsTask()); } else { return(_stack.Children(_emptyListMessageGenerator().WidthStretch().HeightStretch()).AsTask()); } } else { if (_grid is object) { _grid.Clear(); return(_grid.AsTask()); } else { _stack.Clear(); return(_stack.AsTask()); } } } else { if (_grid is object) { return(_grid.Children(observedItems).AsTask()); } else { return(_stack.Children(observedItems.Select(i => i.Width(_maxStackItemSize)).ToArray()).AsTask()); } } } ); }
public static IDefer Defer <T1, T2>(IObservable <T1> o1, IObservable <T2> o2, Func <T1, T2, Task <IComponent> > asyncGenerator, IComponent loadMessage) => DeferedComponent.Observe(o1, o2, asyncGenerator, loadMessage);
public static IDefer DeferSync(Func <IComponent> syncGenerator, IComponent loadMessage) => DeferedComponent.Create(() => syncGenerator().AsTask(), loadMessage);
public static IDefer Defer(Func <Task <IComponent> > asyncGenerator, IComponent loadMessage) => DeferedComponent.Create(asyncGenerator, loadMessage);
public static IDefer Defer <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(IObservable <T1> o1, IObservable <T2> o2, IObservable <T3> o3, IObservable <T4> o4, IObservable <T5> o5, IObservable <T6> o6, IObservable <T7> o7, IObservable <T8> o8, IObservable <T9> o9, IObservable <T10> o10, Func <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, Task <IComponent> > asyncGenerator) => DeferedComponent.Observe(o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, asyncGenerator);
public static IDefer Defer <T1, T2, T3, T4, T5, T6>(IObservable <T1> o1, IObservable <T2> o2, IObservable <T3> o3, IObservable <T4> o4, IObservable <T5> o5, IObservable <T6> o6, Func <T1, T2, T3, T4, T5, T6, Task <IComponent> > asyncGenerator) => DeferedComponent.Observe(o1, o2, o3, o4, o5, o6, asyncGenerator);
public static IDefer Defer <T1, T2, T3>(IObservable <T1> o1, IObservable <T2> o2, IObservable <T3> o3, Func <T1, T2, T3, Task <IComponent> > asyncGenerator) => DeferedComponent.Observe(o1, o2, o3, asyncGenerator);
public static IDefer Defer <T1>(IObservable <T1> o1, Func <T1, Task <IComponent> > asyncGenerator) => DeferedComponent.Observe(o1, asyncGenerator);
public static IDefer DeferSync(Func <IComponent> syncGenerator) => DeferedComponent.Create(() => syncGenerator().AsTask());
//Note: the Defer method with optional loadMessage caused a bridge compiler issue when resolving the method, so we provide here both with and without the loadMessage method public static IDefer Defer(Func <Task <IComponent> > asyncGenerator) => DeferedComponent.Create(asyncGenerator);
public static IDefer Defer <T1, T2, T3, T4, T5, T6, T7, T8>(IObservable <T1> o1, IObservable <T2> o2, IObservable <T3> o3, IObservable <T4> o4, IObservable <T5> o5, IObservable <T6> o6, IObservable <T7> o7, IObservable <T8> o8, Func <T1, T2, T3, T4, T5, T6, T7, T8, Task <IComponent> > asyncGenerator, IComponent loadMessage) => DeferedComponent.Observe(o1, o2, o3, o4, o5, o6, o7, o8, asyncGenerator, loadMessage);
public static IDefer Defer <T1, T2, T3, T4, T5>(IObservable <T1> o1, IObservable <T2> o2, IObservable <T3> o3, IObservable <T4> o4, IObservable <T5> o5, Func <T1, T2, T3, T4, T5, Task <IComponent> > asyncGenerator, IComponent loadMessage) => DeferedComponent.Observe(o1, o2, o3, o4, o5, asyncGenerator, loadMessage);