basefn 1.9.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/rescript.json +1 -1
- package/src/Basefn.res +5 -0
- package/src/Basefn.res.mjs +4 -0
- package/src/Basefn__Responsive.res.mjs +5 -5
- package/src/Basefn__Utils.res.mjs +2 -2
- package/src/Demo.res +59 -59
- package/src/Demo.res.mjs +630 -628
- package/src/Example.res +3 -3
- package/src/Example.res.mjs +48 -47
- package/src/components/Basefn__Accordion.res +5 -5
- package/src/components/Basefn__Accordion.res.mjs +25 -26
- package/src/components/Basefn__Alert.res +4 -4
- package/src/components/Basefn__Alert.res.mjs +20 -18
- package/src/components/Basefn__AlertDialog.res +5 -5
- package/src/components/Basefn__AlertDialog.res.mjs +23 -21
- package/src/components/Basefn__AppLayout.res +3 -3
- package/src/components/Basefn__AppLayout.res.mjs +25 -24
- package/src/components/Basefn__AspectRatio.res +1 -1
- package/src/components/Basefn__AspectRatio.res.mjs +2 -2
- package/src/components/Basefn__Avatar.res.mjs +3 -3
- package/src/components/Basefn__Badge.res +1 -1
- package/src/components/Basefn__Badge.res.mjs +2 -2
- package/src/components/Basefn__Breadcrumb.res +5 -5
- package/src/components/Basefn__Breadcrumb.res.mjs +14 -14
- package/src/components/Basefn__Button.res +1 -1
- package/src/components/Basefn__Button.res.mjs +10 -9
- package/src/components/Basefn__ButtonGroup.res +1 -1
- package/src/components/Basefn__ButtonGroup.res.mjs +2 -2
- package/src/components/Basefn__Card.res +3 -3
- package/src/components/Basefn__Card.res.mjs +11 -11
- package/src/components/Basefn__Checkbox.res +1 -1
- package/src/components/Basefn__Checkbox.res.mjs +7 -7
- package/src/components/Basefn__ContextMenu.res +4 -4
- package/src/components/Basefn__ContextMenu.res.mjs +22 -20
- package/src/components/Basefn__Drawer.res +5 -5
- package/src/components/Basefn__Drawer.res.mjs +22 -20
- package/src/components/Basefn__Dropdown.res +4 -4
- package/src/components/Basefn__Dropdown.res.mjs +20 -18
- package/src/components/Basefn__Grid.res.mjs +15 -14
- package/src/components/Basefn__HoverCard.res +3 -3
- package/src/components/Basefn__HoverCard.res.mjs +14 -12
- package/src/components/Basefn__Icon.res.mjs +8 -7
- package/src/components/Basefn__Input.res.mjs +4 -4
- package/src/components/Basefn__Kbd.res +2 -2
- package/src/components/Basefn__Kbd.res.mjs +5 -5
- package/src/components/Basefn__Label.res +1 -1
- package/src/components/Basefn__Label.res.mjs +4 -4
- package/src/components/Basefn__Modal.res +5 -5
- package/src/components/Basefn__Modal.res.mjs +20 -18
- package/src/components/Basefn__Popover.res +3 -3
- package/src/components/Basefn__Popover.res.mjs +15 -13
- package/src/components/Basefn__Progress.res +2 -2
- package/src/components/Basefn__Progress.res.mjs +16 -14
- package/src/components/Basefn__Radio.res +1 -1
- package/src/components/Basefn__Radio.res.mjs +7 -7
- package/src/components/Basefn__Resizable.css +156 -0
- package/src/components/Basefn__Resizable.res +318 -0
- package/src/components/Basefn__Resizable.res.mjs +343 -0
- package/src/components/Basefn__ScrollArea.res +1 -1
- package/src/components/Basefn__ScrollArea.res.mjs +2 -2
- package/src/components/Basefn__Select.res +2 -2
- package/src/components/Basefn__Select.res.mjs +7 -6
- package/src/components/Basefn__Separator.res +1 -1
- package/src/components/Basefn__Separator.res.mjs +9 -9
- package/src/components/Basefn__Sidebar.res +7 -7
- package/src/components/Basefn__Sidebar.res.mjs +28 -24
- package/src/components/Basefn__Skeleton.res.mjs +2 -2
- package/src/components/Basefn__Slider.res +4 -4
- package/src/components/Basefn__Slider.res.mjs +21 -20
- package/src/components/Basefn__Spinner.res +1 -1
- package/src/components/Basefn__Spinner.res.mjs +8 -8
- package/src/components/Basefn__Spotlight.res +22 -14
- package/src/components/Basefn__Spotlight.res.mjs +79 -65
- package/src/components/Basefn__Stepper.res +6 -6
- package/src/components/Basefn__Stepper.res.mjs +20 -24
- package/src/components/Basefn__Switch.res +1 -1
- package/src/components/Basefn__Switch.res.mjs +16 -14
- package/src/components/Basefn__Tabs.res +4 -4
- package/src/components/Basefn__Tabs.res.mjs +19 -17
- package/src/components/Basefn__Textarea.res.mjs +4 -4
- package/src/components/Basefn__ThemeToggle.res +1 -1
- package/src/components/Basefn__ThemeToggle.res.mjs +13 -10
- package/src/components/Basefn__Timeline.res +6 -6
- package/src/components/Basefn__Timeline.res.mjs +21 -21
- package/src/components/Basefn__Toast.res +4 -4
- package/src/components/Basefn__Toast.res.mjs +23 -20
- package/src/components/Basefn__Toggle.res +1 -1
- package/src/components/Basefn__Toggle.res.mjs +8 -7
- package/src/components/Basefn__ToggleGroup.res +2 -2
- package/src/components/Basefn__ToggleGroup.res.mjs +12 -10
- package/src/components/Basefn__Tooltip.res +3 -3
- package/src/components/Basefn__Tooltip.res.mjs +14 -12
- package/src/components/Basefn__Topbar.res +7 -7
- package/src/components/Basefn__Topbar.res.mjs +22 -22
- package/src/components/Basefn__Typography.res +2 -2
- package/src/components/Basefn__Typography.res.mjs +13 -13
- package/src/styles/Basefn__Theme.res.mjs +5 -5
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as Xote from "xote/src/
|
|
4
|
-
import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
|
|
3
|
+
import * as Node$Xote from "xote/src/Node.res.mjs";
|
|
5
4
|
import * as Core__Float from "@rescript/core/src/Core__Float.res.mjs";
|
|
5
|
+
import * as Signal$Xote from "xote/src/Signal.res.mjs";
|
|
6
6
|
import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
|
|
7
|
+
import * as XoteJSX$Xote from "xote/src/XoteJSX.res.mjs";
|
|
7
8
|
|
|
8
9
|
import './Basefn__Slider.css'
|
|
9
10
|
;
|
|
@@ -26,7 +27,7 @@ function Basefn__Slider(props) {
|
|
|
26
27
|
let handleInput = evt => {
|
|
27
28
|
let target = evt.target;
|
|
28
29
|
let newValue = Core__Option.getOr(Core__Float.fromString(target.value), 0.0);
|
|
29
|
-
Xote.
|
|
30
|
+
Signal$Xote.set(value, newValue);
|
|
30
31
|
if (onChange !== undefined) {
|
|
31
32
|
return onChange(newValue);
|
|
32
33
|
}
|
|
@@ -36,30 +37,30 @@ function Basefn__Slider(props) {
|
|
|
36
37
|
if (label !== undefined || showValue) {
|
|
37
38
|
exit = 1;
|
|
38
39
|
} else {
|
|
39
|
-
tmp =
|
|
40
|
+
tmp = XoteJSX$Xote.jsx(XoteJSX$Xote.jsxFragment, {});
|
|
40
41
|
}
|
|
41
42
|
if (exit === 1) {
|
|
42
|
-
tmp =
|
|
43
|
+
tmp = XoteJSX$Xote.Elements.jsxs("div", {
|
|
43
44
|
class: "basefn-slider__header",
|
|
44
|
-
children:
|
|
45
|
-
label !== undefined ?
|
|
45
|
+
children: XoteJSX$Xote.array([
|
|
46
|
+
label !== undefined ? XoteJSX$Xote.Elements.jsx("span", {
|
|
46
47
|
class: "basefn-slider__label",
|
|
47
|
-
children: Xote.
|
|
48
|
-
}) :
|
|
49
|
-
showValue ?
|
|
48
|
+
children: Node$Xote.text(label)
|
|
49
|
+
}) : XoteJSX$Xote.jsx(XoteJSX$Xote.jsxFragment, {}),
|
|
50
|
+
showValue ? XoteJSX$Xote.Elements.jsx("span", {
|
|
50
51
|
class: "basefn-slider__value",
|
|
51
|
-
children: Xote.
|
|
52
|
-
}) :
|
|
52
|
+
children: Node$Xote.signalText(() => Signal$Xote.get(value).toString())
|
|
53
|
+
}) : XoteJSX$Xote.jsx(XoteJSX$Xote.jsxFragment, {})
|
|
53
54
|
])
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
|
-
return
|
|
57
|
+
return XoteJSX$Xote.Elements.jsx("div", {
|
|
57
58
|
class: "basefn-slider",
|
|
58
|
-
children:
|
|
59
|
+
children: XoteJSX$Xote.Elements.jsxs("div", {
|
|
59
60
|
class: "basefn-slider__wrapper",
|
|
60
|
-
children:
|
|
61
|
+
children: XoteJSX$Xote.array([
|
|
61
62
|
tmp,
|
|
62
|
-
|
|
63
|
+
XoteJSX$Xote.Elements.jsx("input", {
|
|
63
64
|
class: "basefn-slider__input",
|
|
64
65
|
type: "range",
|
|
65
66
|
value: value,
|
|
@@ -69,13 +70,13 @@ function Basefn__Slider(props) {
|
|
|
69
70
|
step: step.toString(),
|
|
70
71
|
onInput: handleInput
|
|
71
72
|
}),
|
|
72
|
-
markers !== undefined ?
|
|
73
|
+
markers !== undefined ? XoteJSX$Xote.Elements.jsx("div", {
|
|
73
74
|
class: "basefn-slider__markers",
|
|
74
|
-
children: Xote.
|
|
75
|
+
children: Node$Xote.fragment(markers.map(marker => XoteJSX$Xote.Elements.jsx("span", {
|
|
75
76
|
class: "basefn-slider__marker",
|
|
76
|
-
children: Xote.
|
|
77
|
+
children: Node$Xote.text(marker)
|
|
77
78
|
})))
|
|
78
|
-
}) :
|
|
79
|
+
}) : XoteJSX$Xote.jsx(XoteJSX$Xote.jsxFragment, {})
|
|
79
80
|
])
|
|
80
81
|
})
|
|
81
82
|
});
|
|
@@ -36,7 +36,7 @@ let make = (~size: size=Md, ~variant: variant=Default, ~label: string="") => {
|
|
|
36
36
|
<div class="basefn-spinner-container">
|
|
37
37
|
<div class={getClassName()} role="status" ariaLabel="Loading" />
|
|
38
38
|
{if showLabel {
|
|
39
|
-
<span class="basefn-spinner__label"> {
|
|
39
|
+
<span class="basefn-spinner__label"> {Node.text(label)} </span>
|
|
40
40
|
} else {
|
|
41
41
|
<empty />
|
|
42
42
|
}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as Xote from "xote/src/
|
|
4
|
-
import * as
|
|
3
|
+
import * as Node$Xote from "xote/src/Node.res.mjs";
|
|
4
|
+
import * as XoteJSX$Xote from "xote/src/XoteJSX.res.mjs";
|
|
5
5
|
|
|
6
6
|
import './Basefn__Spinner.css'
|
|
7
7
|
;
|
|
@@ -43,18 +43,18 @@ function Basefn__Spinner(props) {
|
|
|
43
43
|
return "basefn-spinner " + sizeClass + " " + variantClass;
|
|
44
44
|
};
|
|
45
45
|
let showLabel = label !== "";
|
|
46
|
-
return
|
|
46
|
+
return XoteJSX$Xote.Elements.jsxs("div", {
|
|
47
47
|
class: "basefn-spinner-container",
|
|
48
|
-
children:
|
|
49
|
-
|
|
48
|
+
children: XoteJSX$Xote.array([
|
|
49
|
+
XoteJSX$Xote.Elements.jsx("div", {
|
|
50
50
|
class: getClassName(),
|
|
51
51
|
role: "status",
|
|
52
52
|
"aria-label": "Loading"
|
|
53
53
|
}),
|
|
54
|
-
showLabel ?
|
|
54
|
+
showLabel ? XoteJSX$Xote.Elements.jsx("span", {
|
|
55
55
|
class: "basefn-spinner__label",
|
|
56
|
-
children: Xote.
|
|
57
|
-
}) :
|
|
56
|
+
children: Node$Xote.text(label)
|
|
57
|
+
}) : XoteJSX$Xote.Elements.jsx("empty", {})
|
|
58
58
|
])
|
|
59
59
|
});
|
|
60
60
|
}
|
|
@@ -65,10 +65,18 @@ let make = (
|
|
|
65
65
|
| "ArrowDown" => {
|
|
66
66
|
let _ = Basefn__Dom.preventDefault(evt)
|
|
67
67
|
Signal.update(activeIndex, i => mod(i + 1, max(len, 1)))
|
|
68
|
+
let _ = %raw(`requestAnimationFrame(() => {
|
|
69
|
+
const el = document.querySelector(".basefn-spotlight__item--active");
|
|
70
|
+
if (el) el.scrollIntoView({ block: "nearest" });
|
|
71
|
+
})`)
|
|
68
72
|
}
|
|
69
73
|
| "ArrowUp" => {
|
|
70
74
|
let _ = Basefn__Dom.preventDefault(evt)
|
|
71
75
|
Signal.update(activeIndex, i => mod(i - 1 + max(len, 1), max(len, 1)))
|
|
76
|
+
let _ = %raw(`requestAnimationFrame(() => {
|
|
77
|
+
const el = document.querySelector(".basefn-spotlight__item--active");
|
|
78
|
+
if (el) el.scrollIntoView({ block: "nearest" });
|
|
79
|
+
})`)
|
|
72
80
|
}
|
|
73
81
|
| "Enter" =>
|
|
74
82
|
if len > 0 {
|
|
@@ -120,10 +128,10 @@ let make = (
|
|
|
120
128
|
let currentItems = Signal.get(filteredItems)
|
|
121
129
|
|
|
122
130
|
if Array.length(currentItems) === 0 {
|
|
123
|
-
<div class="basefn-spotlight__empty"> {
|
|
131
|
+
<div class="basefn-spotlight__empty"> {Node.text(emptyMessage)} </div>
|
|
124
132
|
} else {
|
|
125
133
|
let lastGroup: ref<option<string>> = ref(None)
|
|
126
|
-
let elements: array<
|
|
134
|
+
let elements: array<Node.node> = []
|
|
127
135
|
|
|
128
136
|
currentItems->Array.forEachWithIndex((item, index) => {
|
|
129
137
|
switch item.group {
|
|
@@ -131,7 +139,7 @@ let make = (
|
|
|
131
139
|
lastGroup := Some(group)
|
|
132
140
|
let _ = elements->Array.push(
|
|
133
141
|
<div key={"group-" ++ group} class="basefn-spotlight__group-label">
|
|
134
|
-
{
|
|
142
|
+
{Node.text(group)}
|
|
135
143
|
</div>,
|
|
136
144
|
)
|
|
137
145
|
}
|
|
@@ -145,10 +153,10 @@ let make = (
|
|
|
145
153
|
let _ = elements->Array.push(
|
|
146
154
|
<button key={item.id} class={itemClass} onClick={_ => handleSelect(item)}>
|
|
147
155
|
<div class="basefn-spotlight__item-content">
|
|
148
|
-
<div class="basefn-spotlight__item-label"> {
|
|
156
|
+
<div class="basefn-spotlight__item-label"> {Node.text(item.label)} </div>
|
|
149
157
|
{switch item.description {
|
|
150
158
|
| Some(desc) =>
|
|
151
|
-
<div class="basefn-spotlight__item-description"> {
|
|
159
|
+
<div class="basefn-spotlight__item-description"> {Node.text(desc)} </div>
|
|
152
160
|
| None => <> </>
|
|
153
161
|
}}
|
|
154
162
|
</div>
|
|
@@ -156,7 +164,7 @@ let make = (
|
|
|
156
164
|
)
|
|
157
165
|
})
|
|
158
166
|
|
|
159
|
-
elements->
|
|
167
|
+
elements->Node.fragment
|
|
160
168
|
}
|
|
161
169
|
}
|
|
162
170
|
|
|
@@ -178,17 +186,17 @@ let make = (
|
|
|
178
186
|
<div class="basefn-spotlight__results"> {renderResults()} </div>
|
|
179
187
|
<div class="basefn-spotlight__footer">
|
|
180
188
|
<span class="basefn-spotlight__footer-hint">
|
|
181
|
-
<span class="basefn-spotlight__footer-key"> {
|
|
182
|
-
<span class="basefn-spotlight__footer-key"> {
|
|
183
|
-
{
|
|
189
|
+
<span class="basefn-spotlight__footer-key"> {Node.text("\u2191")} </span>
|
|
190
|
+
<span class="basefn-spotlight__footer-key"> {Node.text("\u2193")} </span>
|
|
191
|
+
{Node.text("to navigate")}
|
|
184
192
|
</span>
|
|
185
193
|
<span class="basefn-spotlight__footer-hint">
|
|
186
|
-
<span class="basefn-spotlight__footer-key"> {
|
|
187
|
-
{
|
|
194
|
+
<span class="basefn-spotlight__footer-key"> {Node.text("\u21b5")} </span>
|
|
195
|
+
{Node.text("to select")}
|
|
188
196
|
</span>
|
|
189
197
|
<span class="basefn-spotlight__footer-hint">
|
|
190
|
-
<span class="basefn-spotlight__footer-key"> {
|
|
191
|
-
{
|
|
198
|
+
<span class="basefn-spotlight__footer-key"> {Node.text("esc")} </span>
|
|
199
|
+
{Node.text("to close")}
|
|
192
200
|
</span>
|
|
193
201
|
</div>
|
|
194
202
|
</div>
|
|
@@ -199,5 +207,5 @@ let make = (
|
|
|
199
207
|
}
|
|
200
208
|
})
|
|
201
209
|
|
|
202
|
-
|
|
210
|
+
Node.signalFragment(content)
|
|
203
211
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as Xote from "xote/src/
|
|
4
|
-
import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
|
|
3
|
+
import * as Node$Xote from "xote/src/Node.res.mjs";
|
|
5
4
|
import * as Basefn__Dom from "../Basefn__Dom.res.mjs";
|
|
5
|
+
import * as Effect$Xote from "xote/src/Effect.res.mjs";
|
|
6
|
+
import * as Signal$Xote from "xote/src/Signal.res.mjs";
|
|
6
7
|
import * as Basefn__Icon from "./Basefn__Icon.res.mjs";
|
|
8
|
+
import * as XoteJSX$Xote from "xote/src/XoteJSX.res.mjs";
|
|
9
|
+
import * as Computed$Xote from "xote/src/Computed.res.mjs";
|
|
7
10
|
import * as Primitive_int from "@rescript/runtime/lib/es6/Primitive_int.js";
|
|
11
|
+
import * as ReactiveProp$Xote from "xote/src/ReactiveProp.res.mjs";
|
|
8
12
|
|
|
9
13
|
import './Basefn__Spotlight.css'
|
|
10
14
|
;
|
|
@@ -18,8 +22,8 @@ function Basefn__Spotlight(props) {
|
|
|
18
22
|
let isOpen = props.isOpen;
|
|
19
23
|
let placeholder = __placeholder !== undefined ? __placeholder : "Search...";
|
|
20
24
|
let emptyMessage = __emptyMessage !== undefined ? __emptyMessage : "No results found.";
|
|
21
|
-
let query = Xote.
|
|
22
|
-
let activeIndex = Xote.
|
|
25
|
+
let query = Signal$Xote.make("", undefined, undefined);
|
|
26
|
+
let activeIndex = Signal$Xote.make(0, undefined, undefined);
|
|
23
27
|
let defaultFilter = (q, item) => {
|
|
24
28
|
let q$1 = q.toLowerCase();
|
|
25
29
|
if (item.label.toLowerCase().includes(q$1)) {
|
|
@@ -33,8 +37,8 @@ function Basefn__Spotlight(props) {
|
|
|
33
37
|
}
|
|
34
38
|
};
|
|
35
39
|
let filterItem = filterFn !== undefined ? filterFn : defaultFilter;
|
|
36
|
-
let filteredItems = Xote.
|
|
37
|
-
let q = Xote.
|
|
40
|
+
let filteredItems = Computed$Xote.make(() => {
|
|
41
|
+
let q = Signal$Xote.get(query);
|
|
38
42
|
if (q === "") {
|
|
39
43
|
return items;
|
|
40
44
|
} else {
|
|
@@ -43,26 +47,36 @@ function Basefn__Spotlight(props) {
|
|
|
43
47
|
}, undefined);
|
|
44
48
|
let handleSelect = item => {
|
|
45
49
|
item.onSelect();
|
|
46
|
-
Xote.
|
|
47
|
-
Xote.
|
|
50
|
+
Signal$Xote.set(query, "");
|
|
51
|
+
Signal$Xote.set(activeIndex, 0);
|
|
48
52
|
onClose();
|
|
49
53
|
};
|
|
50
54
|
let handleKeyDown = evt => {
|
|
51
55
|
let k = evt.key;
|
|
52
|
-
let currentItems = Xote.
|
|
56
|
+
let currentItems = Signal$Xote.get(filteredItems);
|
|
53
57
|
let len = currentItems.length;
|
|
54
58
|
switch (k) {
|
|
55
59
|
case "ArrowDown" :
|
|
56
60
|
Basefn__Dom.preventDefault(evt);
|
|
57
|
-
|
|
61
|
+
Signal$Xote.update(activeIndex, i => Primitive_int.mod_(i + 1 | 0, Primitive_int.max(len, 1)));
|
|
62
|
+
((requestAnimationFrame(() => {
|
|
63
|
+
const el = document.querySelector(".basefn-spotlight__item--active");
|
|
64
|
+
if (el) el.scrollIntoView({ block: "nearest" });
|
|
65
|
+
})));
|
|
66
|
+
return;
|
|
58
67
|
case "ArrowUp" :
|
|
59
68
|
Basefn__Dom.preventDefault(evt);
|
|
60
|
-
|
|
69
|
+
Signal$Xote.update(activeIndex, i => Primitive_int.mod_((i - 1 | 0) + Primitive_int.max(len, 1) | 0, Primitive_int.max(len, 1)));
|
|
70
|
+
((requestAnimationFrame(() => {
|
|
71
|
+
const el = document.querySelector(".basefn-spotlight__item--active");
|
|
72
|
+
if (el) el.scrollIntoView({ block: "nearest" });
|
|
73
|
+
})));
|
|
74
|
+
return;
|
|
61
75
|
case "Enter" :
|
|
62
76
|
if (len <= 0) {
|
|
63
77
|
return;
|
|
64
78
|
}
|
|
65
|
-
let idx = Xote.
|
|
79
|
+
let idx = Signal$Xote.get(activeIndex);
|
|
66
80
|
let item = currentItems[idx];
|
|
67
81
|
if (item !== undefined) {
|
|
68
82
|
return handleSelect(item);
|
|
@@ -70,8 +84,8 @@ function Basefn__Spotlight(props) {
|
|
|
70
84
|
return;
|
|
71
85
|
}
|
|
72
86
|
case "Escape" :
|
|
73
|
-
Xote.
|
|
74
|
-
Xote.
|
|
87
|
+
Signal$Xote.set(query, "");
|
|
88
|
+
Signal$Xote.set(activeIndex, 0);
|
|
75
89
|
return onClose();
|
|
76
90
|
default:
|
|
77
91
|
return;
|
|
@@ -79,20 +93,20 @@ function Basefn__Spotlight(props) {
|
|
|
79
93
|
};
|
|
80
94
|
let handleInput = evt => {
|
|
81
95
|
let value = Basefn__Dom.target(evt).value;
|
|
82
|
-
Xote.
|
|
83
|
-
Xote.
|
|
96
|
+
Signal$Xote.set(query, value);
|
|
97
|
+
Signal$Xote.set(activeIndex, 0);
|
|
84
98
|
};
|
|
85
99
|
let handleBackdropClick = evt => {
|
|
86
100
|
let target = evt.target;
|
|
87
101
|
let currentTarget = evt.currentTarget;
|
|
88
102
|
if (target === currentTarget) {
|
|
89
|
-
Xote.
|
|
90
|
-
Xote.
|
|
103
|
+
Signal$Xote.set(query, "");
|
|
104
|
+
Signal$Xote.set(activeIndex, 0);
|
|
91
105
|
return onClose();
|
|
92
106
|
}
|
|
93
107
|
};
|
|
94
|
-
Xote.
|
|
95
|
-
if (Xote.
|
|
108
|
+
Effect$Xote.run(() => {
|
|
109
|
+
if (Signal$Xote.get(isOpen)) {
|
|
96
110
|
((requestAnimationFrame(() => {
|
|
97
111
|
requestAnimationFrame(() => {
|
|
98
112
|
const el = document.querySelector(".basefn-spotlight__input");
|
|
@@ -102,11 +116,11 @@ function Basefn__Spotlight(props) {
|
|
|
102
116
|
}
|
|
103
117
|
}, undefined);
|
|
104
118
|
let renderResults = () => {
|
|
105
|
-
let currentItems = Xote.
|
|
119
|
+
let currentItems = Signal$Xote.get(filteredItems);
|
|
106
120
|
if (currentItems.length === 0) {
|
|
107
|
-
return
|
|
121
|
+
return XoteJSX$Xote.Elements.jsx("div", {
|
|
108
122
|
class: "basefn-spotlight__empty",
|
|
109
|
-
children: Xote.
|
|
123
|
+
children: Node$Xote.text(emptyMessage)
|
|
110
124
|
});
|
|
111
125
|
}
|
|
112
126
|
let lastGroup = {
|
|
@@ -117,99 +131,99 @@ function Basefn__Spotlight(props) {
|
|
|
117
131
|
let group = item.group;
|
|
118
132
|
if (group !== undefined && group !== lastGroup.contents) {
|
|
119
133
|
lastGroup.contents = group;
|
|
120
|
-
elements.push(
|
|
134
|
+
elements.push(XoteJSX$Xote.Elements.jsxKeyed("div", {
|
|
121
135
|
class: "basefn-spotlight__group-label",
|
|
122
|
-
children: Xote.
|
|
136
|
+
children: Node$Xote.text(group)
|
|
123
137
|
}, "group-" + group, undefined));
|
|
124
138
|
}
|
|
125
139
|
let itemClass = "basefn-spotlight__item" + (
|
|
126
|
-
index === Xote.
|
|
140
|
+
index === Signal$Xote.get(activeIndex) ? " basefn-spotlight__item--active" : ""
|
|
127
141
|
);
|
|
128
142
|
let desc = item.description;
|
|
129
|
-
elements.push(
|
|
143
|
+
elements.push(XoteJSX$Xote.Elements.jsxKeyed("button", {
|
|
130
144
|
class: itemClass,
|
|
131
145
|
onClick: param => handleSelect(item),
|
|
132
|
-
children:
|
|
146
|
+
children: XoteJSX$Xote.Elements.jsxs("div", {
|
|
133
147
|
class: "basefn-spotlight__item-content",
|
|
134
|
-
children:
|
|
135
|
-
|
|
148
|
+
children: XoteJSX$Xote.array([
|
|
149
|
+
XoteJSX$Xote.Elements.jsx("div", {
|
|
136
150
|
class: "basefn-spotlight__item-label",
|
|
137
|
-
children: Xote.
|
|
151
|
+
children: Node$Xote.text(item.label)
|
|
138
152
|
}),
|
|
139
|
-
desc !== undefined ?
|
|
153
|
+
desc !== undefined ? XoteJSX$Xote.Elements.jsx("div", {
|
|
140
154
|
class: "basefn-spotlight__item-description",
|
|
141
|
-
children: Xote.
|
|
142
|
-
}) :
|
|
155
|
+
children: Node$Xote.text(desc)
|
|
156
|
+
}) : XoteJSX$Xote.jsx(XoteJSX$Xote.jsxFragment, {})
|
|
143
157
|
])
|
|
144
158
|
})
|
|
145
159
|
}, item.id, undefined));
|
|
146
160
|
});
|
|
147
|
-
return Xote.
|
|
161
|
+
return Node$Xote.fragment(elements);
|
|
148
162
|
};
|
|
149
|
-
return Xote.
|
|
150
|
-
if (Xote.
|
|
151
|
-
return [
|
|
163
|
+
return Node$Xote.signalFragment(Computed$Xote.make(() => {
|
|
164
|
+
if (Signal$Xote.get(isOpen)) {
|
|
165
|
+
return [XoteJSX$Xote.Elements.jsx("div", {
|
|
152
166
|
class: "basefn-spotlight-backdrop",
|
|
153
167
|
onClick: handleBackdropClick,
|
|
154
|
-
children:
|
|
168
|
+
children: XoteJSX$Xote.Elements.jsxs("div", {
|
|
155
169
|
class: "basefn-spotlight",
|
|
156
170
|
onKeyDown: handleKeyDown,
|
|
157
|
-
children:
|
|
158
|
-
|
|
171
|
+
children: XoteJSX$Xote.array([
|
|
172
|
+
XoteJSX$Xote.Elements.jsxs("div", {
|
|
159
173
|
class: "basefn-spotlight__input-wrapper",
|
|
160
|
-
children:
|
|
161
|
-
|
|
174
|
+
children: XoteJSX$Xote.array([
|
|
175
|
+
XoteJSX$Xote.jsx(Basefn__Icon.make, {
|
|
162
176
|
name: "Search",
|
|
163
177
|
size: "Sm"
|
|
164
178
|
}),
|
|
165
|
-
|
|
179
|
+
XoteJSX$Xote.Elements.jsx("input", {
|
|
166
180
|
class: "basefn-spotlight__input",
|
|
167
181
|
type: "text",
|
|
168
|
-
value: Xote.
|
|
182
|
+
value: ReactiveProp$Xote.reactive(query),
|
|
169
183
|
placeholder: placeholder,
|
|
170
184
|
onInput: handleInput
|
|
171
185
|
})
|
|
172
186
|
])
|
|
173
187
|
}),
|
|
174
|
-
|
|
188
|
+
XoteJSX$Xote.Elements.jsx("div", {
|
|
175
189
|
class: "basefn-spotlight__results",
|
|
176
190
|
children: renderResults()
|
|
177
191
|
}),
|
|
178
|
-
|
|
192
|
+
XoteJSX$Xote.Elements.jsxs("div", {
|
|
179
193
|
class: "basefn-spotlight__footer",
|
|
180
|
-
children:
|
|
181
|
-
|
|
194
|
+
children: XoteJSX$Xote.array([
|
|
195
|
+
XoteJSX$Xote.Elements.jsxs("span", {
|
|
182
196
|
class: "basefn-spotlight__footer-hint",
|
|
183
|
-
children:
|
|
184
|
-
|
|
197
|
+
children: XoteJSX$Xote.array([
|
|
198
|
+
XoteJSX$Xote.Elements.jsx("span", {
|
|
185
199
|
class: "basefn-spotlight__footer-key",
|
|
186
|
-
children: Xote.
|
|
200
|
+
children: Node$Xote.text("\u2191")
|
|
187
201
|
}),
|
|
188
|
-
|
|
202
|
+
XoteJSX$Xote.Elements.jsx("span", {
|
|
189
203
|
class: "basefn-spotlight__footer-key",
|
|
190
|
-
children: Xote.
|
|
204
|
+
children: Node$Xote.text("\u2193")
|
|
191
205
|
}),
|
|
192
|
-
Xote.
|
|
206
|
+
Node$Xote.text("to navigate")
|
|
193
207
|
])
|
|
194
208
|
}),
|
|
195
|
-
|
|
209
|
+
XoteJSX$Xote.Elements.jsxs("span", {
|
|
196
210
|
class: "basefn-spotlight__footer-hint",
|
|
197
|
-
children:
|
|
198
|
-
|
|
211
|
+
children: XoteJSX$Xote.array([
|
|
212
|
+
XoteJSX$Xote.Elements.jsx("span", {
|
|
199
213
|
class: "basefn-spotlight__footer-key",
|
|
200
|
-
children: Xote.
|
|
214
|
+
children: Node$Xote.text("\u21b5")
|
|
201
215
|
}),
|
|
202
|
-
Xote.
|
|
216
|
+
Node$Xote.text("to select")
|
|
203
217
|
])
|
|
204
218
|
}),
|
|
205
|
-
|
|
219
|
+
XoteJSX$Xote.Elements.jsxs("span", {
|
|
206
220
|
class: "basefn-spotlight__footer-hint",
|
|
207
|
-
children:
|
|
208
|
-
|
|
221
|
+
children: XoteJSX$Xote.array([
|
|
222
|
+
XoteJSX$Xote.Elements.jsx("span", {
|
|
209
223
|
class: "basefn-spotlight__footer-key",
|
|
210
|
-
children: Xote.
|
|
224
|
+
children: Node$Xote.text("esc")
|
|
211
225
|
}),
|
|
212
|
-
Xote.
|
|
226
|
+
Node$Xote.text("to close")
|
|
213
227
|
])
|
|
214
228
|
})
|
|
215
229
|
])
|
|
@@ -64,16 +64,16 @@ let make = (
|
|
|
64
64
|
<div class="basefn-stepper__step-header" onClick={_ => handleStepClick(index, step.status)}>
|
|
65
65
|
<div class="basefn-stepper__step-indicator">
|
|
66
66
|
{switch step.status {
|
|
67
|
-
| Completed =>
|
|
68
|
-
| Error =>
|
|
69
|
-
| _ =>
|
|
67
|
+
| Completed => Node.text("\u2713")
|
|
68
|
+
| Error => Node.text("\u00d7")
|
|
69
|
+
| _ => Node.text(Int.toString(index + 1))
|
|
70
70
|
}}
|
|
71
71
|
</div>
|
|
72
72
|
<div class="basefn-stepper__step-content">
|
|
73
|
-
<div class="basefn-stepper__step-title"> {
|
|
73
|
+
<div class="basefn-stepper__step-title"> {Node.text(step.title)} </div>
|
|
74
74
|
{switch step.description {
|
|
75
75
|
| Some(desc) =>
|
|
76
|
-
<div class="basefn-stepper__step-description"> {
|
|
76
|
+
<div class="basefn-stepper__step-description"> {Node.text(desc)} </div>
|
|
77
77
|
| None => <> </>
|
|
78
78
|
}}
|
|
79
79
|
</div>
|
|
@@ -81,6 +81,6 @@ let make = (
|
|
|
81
81
|
<div class="basefn-stepper__connector" />
|
|
82
82
|
</div>
|
|
83
83
|
})
|
|
84
|
-
->
|
|
84
|
+
->Node.fragment}
|
|
85
85
|
</div>
|
|
86
86
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as Xote from "xote/src/
|
|
4
|
-
import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
|
|
3
|
+
import * as Node$Xote from "xote/src/Node.res.mjs";
|
|
5
4
|
import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
|
|
5
|
+
import * as XoteJSX$Xote from "xote/src/XoteJSX.res.mjs";
|
|
6
6
|
|
|
7
7
|
import './Basefn__Stepper.css'
|
|
8
8
|
;
|
|
@@ -34,33 +34,29 @@ function Basefn__Stepper(props) {
|
|
|
34
34
|
let clickableClass = clickable ? " basefn-stepper__step--clickable" : "";
|
|
35
35
|
return "basefn-stepper__step " + statusClass + clickableClass;
|
|
36
36
|
};
|
|
37
|
-
return
|
|
37
|
+
return XoteJSX$Xote.Elements.jsx("div", {
|
|
38
38
|
class: getStepperClass(),
|
|
39
|
-
children: Xote.
|
|
39
|
+
children: Node$Xote.fragment(props.steps.map((step, index) => {
|
|
40
40
|
let isClickable = Core__Option.isSome(onStepClick) && (step.status === "Completed" || step.status === "Active");
|
|
41
41
|
let match = step.status;
|
|
42
42
|
let tmp;
|
|
43
|
-
let exit = 0;
|
|
44
43
|
switch (match) {
|
|
45
44
|
case "Inactive" :
|
|
46
45
|
case "Active" :
|
|
47
|
-
|
|
46
|
+
tmp = Node$Xote.text((index + 1 | 0).toString());
|
|
48
47
|
break;
|
|
49
48
|
case "Completed" :
|
|
50
|
-
tmp = Xote.
|
|
49
|
+
tmp = Node$Xote.text("\u2713");
|
|
51
50
|
break;
|
|
52
51
|
case "Error" :
|
|
53
|
-
tmp = Xote.
|
|
52
|
+
tmp = Node$Xote.text("\u00d7");
|
|
54
53
|
break;
|
|
55
54
|
}
|
|
56
|
-
if (exit === 1) {
|
|
57
|
-
tmp = Xote.Component.text((index + 1 | 0).toString());
|
|
58
|
-
}
|
|
59
55
|
let desc = step.description;
|
|
60
|
-
return
|
|
56
|
+
return XoteJSX$Xote.Elements.jsxsKeyed("div", {
|
|
61
57
|
class: getStepClass(step.status, isClickable),
|
|
62
|
-
children:
|
|
63
|
-
|
|
58
|
+
children: XoteJSX$Xote.array([
|
|
59
|
+
XoteJSX$Xote.Elements.jsxs("div", {
|
|
64
60
|
class: "basefn-stepper__step-header",
|
|
65
61
|
onClick: param => {
|
|
66
62
|
let status = step.status;
|
|
@@ -76,27 +72,27 @@ function Basefn__Stepper(props) {
|
|
|
76
72
|
return;
|
|
77
73
|
}
|
|
78
74
|
},
|
|
79
|
-
children:
|
|
80
|
-
|
|
75
|
+
children: XoteJSX$Xote.array([
|
|
76
|
+
XoteJSX$Xote.Elements.jsx("div", {
|
|
81
77
|
class: "basefn-stepper__step-indicator",
|
|
82
78
|
children: tmp
|
|
83
79
|
}),
|
|
84
|
-
|
|
80
|
+
XoteJSX$Xote.Elements.jsxs("div", {
|
|
85
81
|
class: "basefn-stepper__step-content",
|
|
86
|
-
children:
|
|
87
|
-
|
|
82
|
+
children: XoteJSX$Xote.array([
|
|
83
|
+
XoteJSX$Xote.Elements.jsx("div", {
|
|
88
84
|
class: "basefn-stepper__step-title",
|
|
89
|
-
children: Xote.
|
|
85
|
+
children: Node$Xote.text(step.title)
|
|
90
86
|
}),
|
|
91
|
-
desc !== undefined ?
|
|
87
|
+
desc !== undefined ? XoteJSX$Xote.Elements.jsx("div", {
|
|
92
88
|
class: "basefn-stepper__step-description",
|
|
93
|
-
children: Xote.
|
|
94
|
-
}) :
|
|
89
|
+
children: Node$Xote.text(desc)
|
|
90
|
+
}) : XoteJSX$Xote.jsx(XoteJSX$Xote.jsxFragment, {})
|
|
95
91
|
])
|
|
96
92
|
})
|
|
97
93
|
])
|
|
98
94
|
}),
|
|
99
|
-
|
|
95
|
+
XoteJSX$Xote.Elements.jsx("div", {
|
|
100
96
|
class: "basefn-stepper__connector"
|
|
101
97
|
})
|
|
102
98
|
])
|
|
@@ -55,7 +55,7 @@ let make = (
|
|
|
55
55
|
<div class="basefn-switch__slider" />
|
|
56
56
|
</div>
|
|
57
57
|
{switch label {
|
|
58
|
-
| Some(labelText) => <span class="basefn-switch-label"> {
|
|
58
|
+
| Some(labelText) => <span class="basefn-switch-label"> {Node.text(labelText)} </span>
|
|
59
59
|
| None => <> </>
|
|
60
60
|
}}
|
|
61
61
|
</label>
|