diff --git a/State.ts b/State.ts index 1b001724e..a3f163d60 100644 --- a/State.ts +++ b/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 = { diff --git a/UI/Input/FixedInputElement.ts b/UI/Input/FixedInputElement.ts index 81f0bdf99..bc2424939 100644 --- a/UI/Input/FixedInputElement.ts +++ b/UI/Input/FixedInputElement.ts @@ -13,9 +13,13 @@ export class FixedInputElement extends InputElement { 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(value); this.rendering = typeof (rendering) === 'string' ? new FixedUiElement(rendering) : rendering; + const self = this; + this.onClick(() => { + self.IsSelected.setData(true) + }) } GetValue(): UIEventSource { @@ -32,7 +36,6 @@ export class FixedInputElement extends InputElement { protected InnerUpdate(htmlElement: HTMLElement) { super.InnerUpdate(htmlElement); const self = this; - htmlElement.addEventListener("mouseenter", () => self.IsSelected.setData(true)); htmlElement.addEventListener("mouseout", () => self.IsSelected.setData(false)) } diff --git a/UI/Input/InputElementMap.ts b/UI/Input/InputElementMap.ts index 96d6038fd..d2d3ddb65 100644 --- a/UI/Input/InputElementMap.ts +++ b/UI/Input/InputElementMap.ts @@ -35,7 +35,9 @@ export default class InputElementMap extends InputElement { }), extraSources, x => { return fromX(x); }); - }w + this._value.addCallback(console.log) + this.IsSelected.addCallback(s => console.log("Is selected?", s)) + } GetValue(): UIEventSource { return this._value; diff --git a/UI/Input/RadioButton.ts b/UI/Input/RadioButton.ts index 2f46c2e90..0a706d4c3 100644 --- a/UI/Input/RadioButton.ts +++ b/UI/Input/RadioButton.ts @@ -38,6 +38,11 @@ export class RadioButton extends InputElement { elements[i]?.onClick(() => { self._selectedElementIndex.setData(i); }); + elements[i].IsSelected.addCallback(isSelected => { + if (isSelected) { + self._selectedElementIndex.setData(i); + } + }) } } diff --git a/UI/TagRendering.ts b/UI/TagRendering.ts index 639981c6a..f1a72924c 100644 --- a/UI/TagRendering.ts +++ b/UI/TagRendering.ts @@ -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, diff --git a/test.ts b/test.ts index f2b0a3463..cbb261c21 100644 --- a/test.ts +++ b/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"); \ No newline at end of file +})).AttachTo("extradiv");