@rvx/ui 0.5.0 → 0.6.1
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/LICENSE +661 -21
- package/README.md +3 -0
- package/dist/common/context.js +1 -1
- package/dist/common/context.js.map +1 -1
- package/dist/common/events.d.ts.map +1 -1
- package/dist/common/events.js +2 -2
- package/dist/common/events.js.map +1 -1
- package/dist/components/breadcrumbs.d.ts.map +1 -1
- package/dist/components/breadcrumbs.js +2 -2
- package/dist/components/breadcrumbs.js.map +1 -1
- package/dist/components/collapse.d.ts.map +1 -1
- package/dist/components/collapse.js +37 -37
- package/dist/components/collapse.js.map +1 -1
- package/dist/components/dialog.js +2 -2
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/layer.d.ts.map +1 -1
- package/dist/components/layer.js +15 -17
- package/dist/components/layer.js.map +1 -1
- package/dist/components/notifications.d.ts.map +1 -1
- package/dist/components/notifications.js +9 -11
- package/dist/components/notifications.js.map +1 -1
- package/dist/components/popout.js +1 -1
- package/dist/components/popover.d.ts.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/validation.d.ts.map +1 -1
- package/dist/components/validation.js +11 -13
- package/dist/components/validation.js.map +1 -1
- package/package.json +4 -4
- package/src/common/context.tsx +1 -1
- package/src/common/events.tsx +3 -3
- package/src/components/breadcrumbs.tsx +3 -3
- package/src/components/collapse.tsx +37 -36
- package/src/components/dialog.tsx +2 -2
- package/src/components/layer.tsx +18 -19
- package/src/components/notifications.tsx +9 -11
- package/src/components/popout.tsx +1 -1
- package/src/components/popover.tsx +3 -3
- package/src/components/validation.tsx +12 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/components/validation.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/components/validation.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"ux",
|
|
12
12
|
"rvx"
|
|
13
13
|
],
|
|
14
|
-
"license": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"license": "AGPL-3.0",
|
|
15
|
+
"version": "0.6.1",
|
|
16
16
|
"type": "module",
|
|
17
17
|
"main": "./dist/index.js",
|
|
18
18
|
"sideEffects": false,
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@mxjp/parallel": "^1.0.2",
|
|
32
32
|
"@rvx/ui": "file:.",
|
|
33
|
-
"typescript": "^6.0.
|
|
33
|
+
"typescript": "^6.0.3"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"rvx": "^
|
|
36
|
+
"rvx": "^26.0.1"
|
|
37
37
|
}
|
|
38
38
|
}
|
package/src/common/context.tsx
CHANGED
package/src/common/events.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Expression, get,
|
|
1
|
+
import { Expression, get, Override } from "rvx";
|
|
2
2
|
import { TASKS } from "rvx/async";
|
|
3
3
|
|
|
4
4
|
export interface Key {
|
|
@@ -56,9 +56,9 @@ export function WithAction(props: {
|
|
|
56
56
|
action: Action<[], KeyboardEvent>,
|
|
57
57
|
key?: Expression<string | Key | undefined>;
|
|
58
58
|
}) {
|
|
59
|
-
return <
|
|
59
|
+
return <Override on:keydown={e => handleKeyActionEvent(e, get(props.key) ?? "enter", props.action)}>
|
|
60
60
|
{props.children}
|
|
61
|
-
</
|
|
61
|
+
</Override>;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import styles from "@rvx/ui/theme/components/breadcrumbs.module.css";
|
|
2
|
-
import { ClassValue, Expression, For,
|
|
2
|
+
import { ClassValue, Expression, For, Provide, Show, StyleValue, SVG, XMLNS } from "rvx";
|
|
3
3
|
import { Action } from "../common/events.js";
|
|
4
4
|
import { Link } from "./link.js";
|
|
5
5
|
|
|
@@ -25,11 +25,11 @@ export function Breadcrumbs(props: {
|
|
|
25
25
|
return <div class={styles.item}>
|
|
26
26
|
<Show when={() => index() !== 0}>
|
|
27
27
|
{() => <span class={styles.separator}>
|
|
28
|
-
<
|
|
28
|
+
<Provide context={XMLNS} value={SVG}>
|
|
29
29
|
{() => <svg viewBox="0 0 8 16" preserveAspectRatio="none">
|
|
30
30
|
<path d="M2,14 L6,2" stroke-width="1.75" stroke-linecap="round" />
|
|
31
31
|
</svg>}
|
|
32
|
-
</
|
|
32
|
+
</Provide>
|
|
33
33
|
</span>}
|
|
34
34
|
</Show>
|
|
35
35
|
{item.action
|
|
@@ -131,51 +131,52 @@ export function CollapseFor<T>(props: {
|
|
|
131
131
|
const iter = get(props.each);
|
|
132
132
|
return Array.isArray(iter) ? iter : Array.from(iter);
|
|
133
133
|
}, items => {
|
|
134
|
-
entries.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
134
|
+
const inert = entries.inert;
|
|
135
|
+
let itemIndex = 0;
|
|
136
|
+
let entryIndex = 0;
|
|
137
|
+
|
|
138
|
+
function hasRemainingItem(value: T): boolean {
|
|
139
|
+
for (let i = itemIndex + 1; i < items.length; i++) {
|
|
140
|
+
if (Object.is(items[i].value, value)) {
|
|
141
|
+
return true;
|
|
143
142
|
}
|
|
144
|
-
return false;
|
|
145
143
|
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
147
|
+
function spliceRemainingEntry(value: T): Entry | undefined {
|
|
148
|
+
for (let i = entryIndex + 1; i < inert.length; i++) {
|
|
149
|
+
if (Object.is(inert[i].i.value, value)) {
|
|
150
|
+
return inert.splice(i, 1)[0];
|
|
152
151
|
}
|
|
153
152
|
}
|
|
153
|
+
}
|
|
154
154
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
entryIndex++;
|
|
163
|
-
continue items;
|
|
164
|
-
} else if (entry = spliceRemainingEntry(item.value)) {
|
|
165
|
-
entries.splice(entryIndex, 0, entry);
|
|
166
|
-
entry.v.value = true;
|
|
167
|
-
} else {
|
|
168
|
-
entries.splice(entryIndex, 0, { i: item, v: $(true) });
|
|
169
|
-
}
|
|
170
|
-
itemIndex++;
|
|
155
|
+
items: while (itemIndex < items.length) {
|
|
156
|
+
const item = items[itemIndex];
|
|
157
|
+
let entry = inert[entryIndex] as Entry | undefined;
|
|
158
|
+
if (entry && Object.is(entry.i.value, item.value)) {
|
|
159
|
+
entry.v.value = true;
|
|
160
|
+
} else if (entry && !hasRemainingItem(entry.i.value)) {
|
|
161
|
+
entry.v.value = false;
|
|
171
162
|
entryIndex++;
|
|
163
|
+
continue items;
|
|
164
|
+
} else if (entry = spliceRemainingEntry(item.value)) {
|
|
165
|
+
inert.splice(entryIndex, 0, entry);
|
|
166
|
+
entry.v.value = true;
|
|
167
|
+
} else {
|
|
168
|
+
inert.splice(entryIndex, 0, { i: item, v: $(true) });
|
|
172
169
|
}
|
|
170
|
+
itemIndex++;
|
|
171
|
+
entryIndex++;
|
|
172
|
+
}
|
|
173
173
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
174
|
+
while (entryIndex < inert.length) {
|
|
175
|
+
inert[entryIndex].v.value = false;
|
|
176
|
+
entryIndex++;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
entries.notify();
|
|
179
180
|
|
|
180
181
|
useTimeout(() => {
|
|
181
182
|
const filtered = entries.value.filter(e => e.v.value);
|
|
@@ -34,7 +34,7 @@ export function showDialog<T = void>(init: DialogInit<T>, options?: DialogOption
|
|
|
34
34
|
const fadeout = new Emitter<[tasks: Promise<void>[]]>();
|
|
35
35
|
const view = render(
|
|
36
36
|
<Layer modal enabled={enabled}>
|
|
37
|
-
{() => Context.
|
|
37
|
+
{() => Context.provide([
|
|
38
38
|
TASKS.with(new Tasks()),
|
|
39
39
|
DIALOG_FADEOUT.with(fadeout.event),
|
|
40
40
|
], () => {
|
|
@@ -49,7 +49,7 @@ export function showDialog<T = void>(init: DialogInit<T>, options?: DialogOption
|
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
if (options?.cancellable ?? true) {
|
|
52
|
-
TASKS.
|
|
52
|
+
TASKS.provide((options?.detachCancel ?? true) ? null : TASKS.current, () => {
|
|
53
53
|
LAYER.current!.useHotkey("escape", () => {
|
|
54
54
|
dialog.reject();
|
|
55
55
|
});
|
package/src/components/layer.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $, Component, Context, Expression, get,
|
|
1
|
+
import { $, Component, Context, Expression, get, leak, memo, Provide, Signal, teardown, untrack, watch } from "rvx";
|
|
2
2
|
import { Action, handleKeyActionEvent, Key } from "../common/events.js";
|
|
3
3
|
import { useGlobalFocusTrap } from "../common/focus-trap.js";
|
|
4
4
|
|
|
@@ -31,7 +31,7 @@ const TOP_LAYER: LayerInstance = {
|
|
|
31
31
|
autoFocusFallback: undefined,
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
leak(() => watch(LAYERS, layers => {
|
|
35
35
|
const modal = layers.findLastIndex(l => l.modal);
|
|
36
36
|
for (let i = 0; i < layers.length; i++) {
|
|
37
37
|
layers[i].inert.value = i < modal;
|
|
@@ -44,9 +44,9 @@ function staticLayer(layer: LayerInstance, content: Component): unknown {
|
|
|
44
44
|
style={{ display: "contents" }}
|
|
45
45
|
inert={layer.inert}
|
|
46
46
|
>
|
|
47
|
-
<
|
|
47
|
+
<Provide context={LAYER} value={new Handle(layer)}>
|
|
48
48
|
{content}
|
|
49
|
-
</
|
|
49
|
+
</Provide>
|
|
50
50
|
</div> as HTMLDivElement;
|
|
51
51
|
layer.roots.push(root);
|
|
52
52
|
teardown(() => {
|
|
@@ -115,9 +115,8 @@ export function Layer(props: {
|
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
LAYERS.
|
|
119
|
-
|
|
120
|
-
});
|
|
118
|
+
LAYERS.inert.push(layer);
|
|
119
|
+
LAYERS.notify();
|
|
121
120
|
|
|
122
121
|
const previous = document.activeElement;
|
|
123
122
|
if (previous && previous !== document.body) {
|
|
@@ -147,13 +146,13 @@ export function Layer(props: {
|
|
|
147
146
|
|
|
148
147
|
teardown(() => {
|
|
149
148
|
let next: LayerInstance | undefined = undefined;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
149
|
+
|
|
150
|
+
const index = LAYERS.inert.lastIndexOf(layer);
|
|
151
|
+
if (index >= 0) {
|
|
152
|
+
LAYERS.inert.splice(index, 1);
|
|
153
|
+
next = LAYERS.inert[index - 1];
|
|
154
|
+
}
|
|
155
|
+
LAYERS.notify();
|
|
157
156
|
|
|
158
157
|
queueMicrotask(() => {
|
|
159
158
|
const layers = LAYERS.value;
|
|
@@ -169,9 +168,9 @@ export function Layer(props: {
|
|
|
169
168
|
style={{ display: "contents" }}
|
|
170
169
|
inert={() => layer.inert.value || !enabled()}
|
|
171
170
|
>
|
|
172
|
-
<
|
|
171
|
+
<Provide context={LAYER} value={new Handle(layer)}>
|
|
173
172
|
{props.children}
|
|
174
|
-
</
|
|
173
|
+
</Provide>
|
|
175
174
|
</div> as HTMLElement;
|
|
176
175
|
layer.roots.push(root);
|
|
177
176
|
return root;
|
|
@@ -277,14 +276,14 @@ class Handle implements LayerHandle {
|
|
|
277
276
|
useEvent<K extends keyof WindowEventMap>(type: K, listener: (event: WindowEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
278
277
|
useEvent(type: string, listener: (event: Event) => void, options?: boolean | AddEventListenerOptions): void;
|
|
279
278
|
useEvent(type: string, listener: (event: Event) => void, options?: boolean | AddEventListenerOptions): void {
|
|
280
|
-
const
|
|
279
|
+
const bound = Context.bind((event: Event): void => {
|
|
281
280
|
if (this.top) {
|
|
282
281
|
listener(event);
|
|
283
282
|
}
|
|
284
283
|
});
|
|
285
|
-
window.addEventListener(type,
|
|
284
|
+
window.addEventListener(type, bound, options);
|
|
286
285
|
teardown(() => {
|
|
287
|
-
window.removeEventListener(type,
|
|
286
|
+
window.removeEventListener(type, bound, options);
|
|
288
287
|
});
|
|
289
288
|
}
|
|
290
289
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import styles from "@rvx/ui/theme/components/notifications.module.css";
|
|
2
|
-
import { $, captureSelf, Component, For, movable, render, teardown,
|
|
2
|
+
import { $, captureSelf, Component, For, leak, movable, render, teardown, View } from "rvx";
|
|
3
3
|
import { useTimeout } from "rvx/async";
|
|
4
4
|
import { inOverlayContext } from "../common/context.js";
|
|
5
5
|
import { SizeContext } from "../common/types.js";
|
|
@@ -35,7 +35,7 @@ const instances = $<Component[]>([]);
|
|
|
35
35
|
export function showNotification(content: Component<Notification>, options?: NotificationOptions): Notification {
|
|
36
36
|
return inOverlayContext(() => {
|
|
37
37
|
if (!host) {
|
|
38
|
-
|
|
38
|
+
leak(() => {
|
|
39
39
|
host = render(<TopLayer>
|
|
40
40
|
{() => <div
|
|
41
41
|
class={styles.host}
|
|
@@ -70,9 +70,8 @@ export function showNotification(content: Component<Notification>, options?: Not
|
|
|
70
70
|
</Card>
|
|
71
71
|
</Collapse>).move;
|
|
72
72
|
|
|
73
|
-
instances.
|
|
74
|
-
|
|
75
|
-
});
|
|
73
|
+
instances.inert.push(instance);
|
|
74
|
+
instances.notify();
|
|
76
75
|
// TODO: Scroll notification into view.
|
|
77
76
|
|
|
78
77
|
if (options?.timeout !== undefined) {
|
|
@@ -83,12 +82,11 @@ export function showNotification(content: Component<Notification>, options?: Not
|
|
|
83
82
|
teardown(() => {
|
|
84
83
|
visible.value = false;
|
|
85
84
|
setTimeout(() => {
|
|
86
|
-
instances.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
85
|
+
const index = instances.inert.indexOf(instance);
|
|
86
|
+
if (index >= 0) {
|
|
87
|
+
instances.inert.splice(index, 1);
|
|
88
|
+
}
|
|
89
|
+
instances.notify();
|
|
92
90
|
// TODO: Use transition delay:
|
|
93
91
|
}, 1000);
|
|
94
92
|
});
|
|
@@ -164,7 +164,7 @@ export class Popout {
|
|
|
164
164
|
return this.#visible.value;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
#createInstance = Context.
|
|
167
|
+
#createInstance = Context.bind((writingMode: WritingMode, scriptDir: ScriptDirection): Instance => {
|
|
168
168
|
return captureSelf(dispose => {
|
|
169
169
|
const instance: Instance = this.#instance = {
|
|
170
170
|
dispose,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import columnStyles from "@rvx/ui/theme/components/column.module.css";
|
|
2
2
|
import styles from "@rvx/ui/theme/components/popover.module.css";
|
|
3
|
-
import { $, ClassValue, Expression, get,
|
|
3
|
+
import { $, ClassValue, Expression, get, map, Provide, render, StyleValue, SVG, uniqueId, View, watch, XMLNS } from "rvx";
|
|
4
4
|
import { Action } from "../common/events.js";
|
|
5
5
|
import { DOWN, getSize, getXY, LEFT, RIGHT, UP } from "../common/writing-mode.js";
|
|
6
6
|
import { DialogRole } from "./dialog.js";
|
|
@@ -113,13 +113,13 @@ export function createPopover(props: {
|
|
|
113
113
|
|
|
114
114
|
const spikeArea = <div class={styles.spike_area}>
|
|
115
115
|
<div class={styles.spike} style={{ transform: spikeTransform }}>
|
|
116
|
-
<
|
|
116
|
+
<Provide context={XMLNS} value={SVG}>
|
|
117
117
|
{() => {
|
|
118
118
|
return <svg viewBox="0 0 16 16" preserveAspectRatio="none">
|
|
119
119
|
<path d="M0,16 L8,0 L16,16 Z" />
|
|
120
120
|
</svg>;
|
|
121
121
|
}}
|
|
122
|
-
</
|
|
122
|
+
</Provide>
|
|
123
123
|
</div>
|
|
124
124
|
</div> as HTMLElement;
|
|
125
125
|
|
|
@@ -85,13 +85,13 @@ export class Validator {
|
|
|
85
85
|
#createRuleEntry(rule: ValidationRule): ValidationRuleEntry {
|
|
86
86
|
const entry = new ValidationRuleEntry(rule, this.#notify);
|
|
87
87
|
teardown(() => {
|
|
88
|
-
this.#rules.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
const rules = this.#rules.inert;
|
|
89
|
+
const index = rules.indexOf(entry);
|
|
90
|
+
if (index < 0) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
rules.splice(index, 1);
|
|
94
|
+
this.#rules.notify();
|
|
95
95
|
});
|
|
96
96
|
return entry;
|
|
97
97
|
}
|
|
@@ -141,9 +141,8 @@ export class Validator {
|
|
|
141
141
|
*/
|
|
142
142
|
appendRule(rule: ValidationRule): void {
|
|
143
143
|
const entry = this.#createRuleEntry(rule);
|
|
144
|
-
this.#rules.
|
|
145
|
-
|
|
146
|
-
});
|
|
144
|
+
this.#rules.inert.push(entry);
|
|
145
|
+
this.#rules.notify();
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
/**
|
|
@@ -151,15 +150,14 @@ export class Validator {
|
|
|
151
150
|
*/
|
|
152
151
|
prependRule(rule: ValidationRule): void {
|
|
153
152
|
const entry = this.#createRuleEntry(rule);
|
|
154
|
-
this.#rules.
|
|
155
|
-
|
|
156
|
-
});
|
|
153
|
+
this.#rules.inert.unshift(entry);
|
|
154
|
+
this.#rules.notify();
|
|
157
155
|
}
|
|
158
156
|
|
|
159
157
|
/**
|
|
160
158
|
* Attach this validator to the specified target.
|
|
161
159
|
*
|
|
162
|
-
* This will
|
|
160
|
+
* This will override existing validators on the target.
|
|
163
161
|
*/
|
|
164
162
|
attach(target: Signal<unknown>): void {
|
|
165
163
|
VALIDATORS.set(target, this);
|