Merge master
This commit is contained in:
commit
bb4411d443
6 changed files with 20 additions and 9 deletions
2
State.ts
2
State.ts
|
@ -23,7 +23,7 @@ export class State {
|
|||
// The singleton of the global state
|
||||
public static state: State;
|
||||
|
||||
public static vNumber = "0.0.9";
|
||||
public static vNumber = "0.0.9a";
|
||||
|
||||
// The user journey states thresholds when a new feature gets unlocked
|
||||
public static userJourney = {
|
||||
|
|
|
@ -13,9 +13,13 @@ export class FixedInputElement<T> extends InputElement<T> {
|
|||
value: T,
|
||||
comparator: ((t0: T, t1: T) => boolean ) = undefined) {
|
||||
super(undefined);
|
||||
this._comparator = comparator ?? ((t0, t1) => t0 == t1);
|
||||
this._comparator = comparator ?? ((t0, t1) => t0 == t1);
|
||||
this.value = new UIEventSource<T>(value);
|
||||
this.rendering = typeof (rendering) === 'string' ? new FixedUiElement(rendering) : rendering;
|
||||
const self = this;
|
||||
this.onClick(() => {
|
||||
self.IsSelected.setData(true)
|
||||
})
|
||||
}
|
||||
|
||||
GetValue(): UIEventSource<T> {
|
||||
|
@ -32,7 +36,6 @@ export class FixedInputElement<T> extends InputElement<T> {
|
|||
protected InnerUpdate(htmlElement: HTMLElement) {
|
||||
super.InnerUpdate(htmlElement);
|
||||
const self = this;
|
||||
htmlElement.addEventListener("mouseenter", () => self.IsSelected.setData(true));
|
||||
htmlElement.addEventListener("mouseout", () => self.IsSelected.setData(false))
|
||||
|
||||
}
|
||||
|
|
|
@ -35,7 +35,9 @@ export default class InputElementMap<T, X> extends InputElement<X> {
|
|||
}), extraSources, x => {
|
||||
return fromX(x);
|
||||
});
|
||||
}w
|
||||
this._value.addCallback(console.log)
|
||||
this.IsSelected.addCallback(s => console.log("Is selected?", s))
|
||||
}
|
||||
|
||||
GetValue(): UIEventSource<X> {
|
||||
return this._value;
|
||||
|
|
|
@ -38,6 +38,11 @@ export class RadioButton<T> extends InputElement<T> {
|
|||
elements[i]?.onClick(() => {
|
||||
self._selectedElementIndex.setData(i);
|
||||
});
|
||||
elements[i].IsSelected.addCallback(isSelected => {
|
||||
if (isSelected) {
|
||||
self._selectedElementIndex.setData(i);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -228,7 +228,9 @@ export class TagRendering extends UIElement implements TagDependantUIElement {
|
|||
elements.push(freeformElement);
|
||||
}
|
||||
|
||||
if (options.multiAnswer) {
|
||||
if (!options.multiAnswer) {
|
||||
return new RadioButton(elements, false);
|
||||
} else {
|
||||
const possibleTags = elements.map(el => el.GetValue().data);
|
||||
const checkBoxes = new CheckBoxes(elements);
|
||||
|
||||
|
@ -264,7 +266,7 @@ export class TagRendering extends UIElement implements TagDependantUIElement {
|
|||
},
|
||||
[freeformElement?.GetValue()]
|
||||
);
|
||||
|
||||
|
||||
freeformElement?.GetValue()?.addCallbackAndRun(value => {
|
||||
const es = checkBoxes.GetValue();
|
||||
const i = elements.length - 1;
|
||||
|
@ -282,7 +284,6 @@ export class TagRendering extends UIElement implements TagDependantUIElement {
|
|||
|
||||
return inputEl;
|
||||
}
|
||||
return new RadioButton(elements, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -360,7 +361,7 @@ export class TagRendering extends UIElement implements TagDependantUIElement {
|
|||
}
|
||||
|
||||
return ValidatedTextField.Mapped(pickString, toString, {
|
||||
placeholder: this._freeform.placeholder,
|
||||
placeholder: freeform.placeholder,
|
||||
type: type,
|
||||
isValid: (str) => (str.length <= 255),
|
||||
textArea: isTextArea,
|
||||
|
|
2
test.ts
2
test.ts
|
@ -10,4 +10,4 @@ oh.GetValue().addCallback(data => console.log(data))
|
|||
new VariableUiElement(oh.GetValue().map(ohs => {
|
||||
return ohs.map((oh: OpeningHour) => oh.weekdayStart + " " + oh.startHour + ":" + oh.startMinutes + " --> " +
|
||||
oh.weekdayEnd + " " + oh.endHour + ":" + oh.endMinutes).join(",")
|
||||
})).AttachTo("extradiv");
|
||||
})).AttachTo("extradiv");
|
||||
|
|
Loading…
Reference in a new issue