@geajs/ui 0.1.3 → 0.1.5
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/dist/_virtual_gea-hmr.mjs +11 -0
- package/dist/accordion.d.mts +34 -0
- package/dist/accordion.mjs +137 -0
- package/dist/accordion.mjs.map +1 -0
- package/dist/alert.d.mts +15 -0
- package/dist/alert.mjs +93 -0
- package/dist/alert.mjs.map +1 -0
- package/dist/avatar.d.mts +26 -0
- package/dist/avatar.mjs +95 -0
- package/dist/avatar.mjs.map +1 -0
- package/dist/badge.d.mts +9 -0
- package/dist/badge.mjs +47 -0
- package/dist/badge.mjs.map +1 -0
- package/dist/button.d.mts +21 -0
- package/dist/button.mjs +86 -0
- package/dist/button.mjs.map +1 -0
- package/dist/card.d.mts +24 -0
- package/dist/card.mjs +152 -0
- package/dist/card.mjs.map +1 -0
- package/dist/checkbox.d.mts +37 -0
- package/dist/checkbox.mjs +78 -0
- package/dist/checkbox.mjs.map +1 -0
- package/dist/clipboard.d.mts +33 -0
- package/dist/clipboard.mjs +96 -0
- package/dist/clipboard.mjs.map +1 -0
- package/dist/cn.mjs +10 -0
- package/dist/cn.mjs.map +1 -0
- package/dist/collapsible.d.mts +29 -0
- package/dist/collapsible.mjs +75 -0
- package/dist/collapsible.mjs.map +1 -0
- package/dist/combobox.d.mts +67 -0
- package/dist/combobox.mjs +314 -0
- package/dist/combobox.mjs.map +1 -0
- package/dist/dialog.d.mts +57 -0
- package/dist/dialog.mjs +137 -0
- package/dist/dialog.mjs.map +1 -0
- package/dist/dnd-manager.d.mts +67 -0
- package/dist/dnd-manager.mjs +373 -0
- package/dist/dnd-manager.mjs.map +1 -0
- package/dist/drag-drop-context.d.mts +11 -0
- package/dist/drag-drop-context.mjs +41 -0
- package/dist/drag-drop-context.mjs.map +1 -0
- package/dist/draggable.d.mts +11 -0
- package/dist/draggable.mjs +62 -0
- package/dist/draggable.mjs.map +1 -0
- package/dist/droppable.d.mts +14 -0
- package/dist/droppable.mjs +61 -0
- package/dist/droppable.mjs.map +1 -0
- package/dist/file-upload.d.mts +38 -0
- package/dist/file-upload.mjs +157 -0
- package/dist/file-upload.mjs.map +1 -0
- package/dist/hover-card.d.mts +33 -0
- package/dist/hover-card.mjs +87 -0
- package/dist/hover-card.mjs.map +1 -0
- package/dist/index.d.mts +41 -1068
- package/dist/index.mjs +41 -4332
- package/dist/input.d.mts +9 -0
- package/dist/input.mjs +62 -0
- package/dist/input.mjs.map +1 -0
- package/dist/label.d.mts +9 -0
- package/dist/label.mjs +37 -0
- package/dist/label.mjs.map +1 -0
- package/dist/menu.d.mts +36 -0
- package/dist/menu.mjs +86 -0
- package/dist/menu.mjs.map +1 -0
- package/dist/number-input.d.mts +46 -0
- package/dist/number-input.mjs +87 -0
- package/dist/number-input.mjs.map +1 -0
- package/dist/pagination.d.mts +37 -0
- package/dist/pagination.mjs +95 -0
- package/dist/pagination.mjs.map +1 -0
- package/dist/pin-input.d.mts +45 -0
- package/dist/pin-input.mjs +135 -0
- package/dist/pin-input.mjs.map +1 -0
- package/dist/popover.d.mts +39 -0
- package/dist/popover.mjs +107 -0
- package/dist/popover.mjs.map +1 -0
- package/dist/progress.d.mts +34 -0
- package/dist/progress.mjs +84 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/radio-group.d.mts +37 -0
- package/dist/radio-group.mjs +154 -0
- package/dist/radio-group.mjs.map +1 -0
- package/dist/rating-group.d.mts +38 -0
- package/dist/rating-group.mjs +159 -0
- package/dist/rating-group.mjs.map +1 -0
- package/dist/select.d.mts +54 -0
- package/dist/select.mjs +235 -0
- package/dist/select.mjs.map +1 -0
- package/dist/separator.d.mts +9 -0
- package/dist/separator.mjs +44 -0
- package/dist/separator.mjs.map +1 -0
- package/dist/skeleton.d.mts +9 -0
- package/dist/skeleton.mjs +41 -0
- package/dist/skeleton.mjs.map +1 -0
- package/dist/slider.d.mts +44 -0
- package/dist/slider.mjs +114 -0
- package/dist/slider.mjs.map +1 -0
- package/dist/switch.d.mts +37 -0
- package/dist/switch.mjs +78 -0
- package/dist/switch.mjs.map +1 -0
- package/dist/tabs.d.mts +36 -0
- package/dist/tabs.mjs +175 -0
- package/dist/tabs.mjs.map +1 -0
- package/dist/tags-input.d.mts +48 -0
- package/dist/tags-input.mjs +213 -0
- package/dist/tags-input.mjs.map +1 -0
- package/dist/textarea.d.mts +9 -0
- package/dist/textarea.mjs +62 -0
- package/dist/textarea.mjs.map +1 -0
- package/dist/toast.d.mts +33 -0
- package/dist/toast.mjs +211 -0
- package/dist/toast.mjs.map +1 -0
- package/dist/toggle-group.d.mts +32 -0
- package/dist/toggle-group.mjs +112 -0
- package/dist/toggle-group.mjs.map +1 -0
- package/dist/tooltip.d.mts +39 -0
- package/dist/tooltip.mjs +83 -0
- package/dist/tooltip.mjs.map +1 -0
- package/dist/tree-view.d.mts +35 -0
- package/dist/tree-view.mjs +92 -0
- package/dist/tree-view.mjs.map +1 -0
- package/dist/zag-component.d.mts +39 -0
- package/dist/zag-component.mjs +127 -0
- package/dist/zag-component.mjs.map +1 -0
- package/package.json +8 -2
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { t as ZagComponent } from "./zag-component.mjs";
|
|
2
|
+
import "./_virtual_gea-hmr.mjs";
|
|
3
|
+
import { Component } from "@geajs/core";
|
|
4
|
+
import { normalizeProps } from "@zag-js/vanilla";
|
|
5
|
+
import * as tagsInput from "@zag-js/tags-input";
|
|
6
|
+
//#region src/components/tags-input.tsx
|
|
7
|
+
const __v = (v) => v != null && typeof v === "object" ? v.valueOf() : v;
|
|
8
|
+
var TagsInput = class extends ZagComponent {
|
|
9
|
+
constructor(...args) {
|
|
10
|
+
super(...args);
|
|
11
|
+
this.props;
|
|
12
|
+
this.__geaCond_0 = !!this.props.label;
|
|
13
|
+
this.__geaRegisterCond(0, "c0", () => {
|
|
14
|
+
this.props;
|
|
15
|
+
return this.props.label;
|
|
16
|
+
}, () => {
|
|
17
|
+
this.props;
|
|
18
|
+
return `<label data-part="label" class="tags-input-label text-sm font-medium mb-1 block">${this.props.label}</label>`;
|
|
19
|
+
}, null);
|
|
20
|
+
}
|
|
21
|
+
createMachine(_props) {
|
|
22
|
+
return tagsInput.machine;
|
|
23
|
+
}
|
|
24
|
+
getMachineProps(props) {
|
|
25
|
+
return {
|
|
26
|
+
id: this.id,
|
|
27
|
+
value: props.value,
|
|
28
|
+
defaultValue: props.defaultValue,
|
|
29
|
+
max: props.max,
|
|
30
|
+
maxLength: props.maxLength,
|
|
31
|
+
disabled: props.disabled,
|
|
32
|
+
readOnly: props.readOnly,
|
|
33
|
+
invalid: props.invalid,
|
|
34
|
+
addOnPaste: props.addOnPaste ?? false,
|
|
35
|
+
editable: props.editable ?? true,
|
|
36
|
+
allowDuplicates: props.allowDuplicates ?? false,
|
|
37
|
+
name: props.name,
|
|
38
|
+
form: props.form,
|
|
39
|
+
placeholder: props.placeholder,
|
|
40
|
+
blurBehavior: props.blurBehavior,
|
|
41
|
+
delimiter: props.delimiter,
|
|
42
|
+
onValueChange: (details) => {
|
|
43
|
+
this.value = details.value;
|
|
44
|
+
props.onValueChange?.(details);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
connectApi(service) {
|
|
49
|
+
return tagsInput.connect(service, normalizeProps);
|
|
50
|
+
}
|
|
51
|
+
getSpreadMap() {
|
|
52
|
+
return {
|
|
53
|
+
"[data-part=\"root\"]": "getRootProps",
|
|
54
|
+
"[data-part=\"label\"]": "getLabelProps",
|
|
55
|
+
"[data-part=\"control\"]": "getControlProps",
|
|
56
|
+
"[data-part=\"input\"]": "getInputProps",
|
|
57
|
+
"[data-part=\"hidden-input\"]": "getHiddenInputProps",
|
|
58
|
+
"[data-part=\"clear-trigger\"]": "getClearTriggerProps",
|
|
59
|
+
"[data-part=\"item\"]": (api, el) => {
|
|
60
|
+
const ds = el.dataset;
|
|
61
|
+
return api.getItemProps({
|
|
62
|
+
index: ds.index,
|
|
63
|
+
value: ds.value
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
"[data-part=\"item-preview\"]": (api, el) => {
|
|
67
|
+
const ds = el.dataset;
|
|
68
|
+
return api.getItemPreviewProps({
|
|
69
|
+
index: ds.index,
|
|
70
|
+
value: ds.value
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
"[data-part=\"item-text\"]": (api, el) => {
|
|
74
|
+
const ds = el.dataset;
|
|
75
|
+
return api.getItemTextProps({
|
|
76
|
+
index: ds.index,
|
|
77
|
+
value: ds.value
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
"[data-part=\"item-delete-trigger\"]": (api, el) => {
|
|
81
|
+
const ds = el.dataset;
|
|
82
|
+
return api.getItemDeleteTriggerProps({
|
|
83
|
+
index: ds.index,
|
|
84
|
+
value: ds.value
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
syncState(api) {
|
|
90
|
+
this.value = api.value;
|
|
91
|
+
}
|
|
92
|
+
template(props) {
|
|
93
|
+
const __id = this.id;
|
|
94
|
+
Component._register(ZagComponent);
|
|
95
|
+
return `<div id="${__id}" data-part="root"${(props.class || "") == null || (props.class || "") === false ? "" : ` class="${((props.class || "") != null ? String(props.class || "") : "").trim()}"`}><!--${__id + "-c0"}-->${props.label && `<label data-part="label" class="tags-input-label text-sm font-medium mb-1 block">${props.label}</label>` || ""}<!--${__id + "-c0-end"}--><div id="${__id + "-b1"}" data-part="control" class="tags-input-control flex flex-wrap gap-1.5 rounded-md border border-input bg-transparent px-3 py-2 shadow-sm focus-within:ring-1 focus-within:ring-ring">${(this.value || []).map((tag, i) => `<span data-gea-item-id="${String(tag)}" data-part="item"${String(i) == null || String(i) === false ? "" : ` data-index="${String(i)}"`}${tag == null || tag === false ? "" : ` data-value="${tag}"`} class="tags-input-item inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs font-medium"><span data-part="item-preview"${String(i) == null || String(i) === false ? "" : ` data-index="${String(i)}"`}${tag == null || tag === false ? "" : ` data-value="${tag}"`} class="inline-flex items-center gap-1 data-[highlighted]:ring-2 data-[highlighted]:ring-ring data-[highlighted]:rounded-sm"><span data-part="item-text"${String(i) == null || String(i) === false ? "" : ` data-index="${String(i)}"`}${tag == null || tag === false ? "" : ` data-value="${tag}"`}>${tag}</span></span><button data-part="item-delete-trigger"${String(i) == null || String(i) === false ? "" : ` data-index="${String(i)}"`}${tag == null || tag === false ? "" : ` data-value="${tag}"`} class="tags-input-item-delete text-muted-foreground hover:text-foreground">✕</button></span>`).join("") + "<!---->"}<input data-part="input" class="tags-input-input flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground min-w-[60px]" /></div><input data-part="hidden-input" type="hidden" /></div>`;
|
|
96
|
+
}
|
|
97
|
+
render__unresolved_0Item(tag, i) {
|
|
98
|
+
return `<span data-gea-item-id="${tag?.id ?? tag}" data-part="item"${__v(String(i)) == null || __v(String(i)) === false ? "" : ` data-index="${String(i)}"`}${__v(tag) == null || __v(tag) === false ? "" : ` data-value="${tag}"`} class="tags-input-item inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs font-medium"><span data-part="item-preview"${__v(String(i)) == null || __v(String(i)) === false ? "" : ` data-index="${String(i)}"`}${__v(tag) == null || __v(tag) === false ? "" : ` data-value="${tag}"`} class="inline-flex items-center gap-1 data-[highlighted]:ring-2 data-[highlighted]:ring-ring data-[highlighted]:rounded-sm"><span data-part="item-text"${__v(String(i)) == null || __v(String(i)) === false ? "" : ` data-index="${String(i)}"`}${__v(tag) == null || __v(tag) === false ? "" : ` data-value="${tag}"`}>${tag}</span></span><button data-part="item-delete-trigger"${__v(String(i)) == null || __v(String(i)) === false ? "" : ` data-index="${String(i)}"`}${__v(tag) == null || __v(tag) === false ? "" : ` data-value="${tag}"`} class="tags-input-item-delete text-muted-foreground hover:text-foreground">✕</button></span>`;
|
|
99
|
+
}
|
|
100
|
+
create__unresolved_0Item(item, __idx) {
|
|
101
|
+
var __c = this.____unresolved_0_container;
|
|
102
|
+
if (!__c.__geaTpl) try {
|
|
103
|
+
var __tw = document.createElement("template");
|
|
104
|
+
__tw.innerHTML = this.render__unresolved_0Item("__dummy__", 0);
|
|
105
|
+
__c.__geaTpl = __tw.content.firstElementChild;
|
|
106
|
+
} catch (__err) {
|
|
107
|
+
console.error(__err);
|
|
108
|
+
}
|
|
109
|
+
if (__c.__geaTpl) var el = __c.__geaTpl.cloneNode(true);
|
|
110
|
+
else {
|
|
111
|
+
var __fw = document.createElement("template");
|
|
112
|
+
__fw.innerHTML = this.render__unresolved_0Item(item, __idx);
|
|
113
|
+
var el = __fw.content.firstElementChild;
|
|
114
|
+
}
|
|
115
|
+
el.__ref_0 = el.firstElementChild;
|
|
116
|
+
el.__ref_0_0 = el.firstElementChild.firstElementChild;
|
|
117
|
+
el.__ref_1 = el.firstElementChild.nextElementSibling;
|
|
118
|
+
var __av = String(__idx);
|
|
119
|
+
if (__av == null || __av === false) el.removeAttribute("data-index");
|
|
120
|
+
else el.setAttribute("data-index", String(__av));
|
|
121
|
+
var __av = item;
|
|
122
|
+
if (__av == null || __av === false) el.removeAttribute("data-value");
|
|
123
|
+
else el.setAttribute("data-value", String(__av));
|
|
124
|
+
var __av = String(__idx);
|
|
125
|
+
if (__av == null || __av === false) el.__ref_0.removeAttribute("data-index");
|
|
126
|
+
else el.__ref_0.setAttribute("data-index", String(__av));
|
|
127
|
+
var __av = item;
|
|
128
|
+
if (__av == null || __av === false) el.__ref_0.removeAttribute("data-value");
|
|
129
|
+
else el.__ref_0.setAttribute("data-value", String(__av));
|
|
130
|
+
var __av = String(__idx);
|
|
131
|
+
if (__av == null || __av === false) el.__ref_0_0.removeAttribute("data-index");
|
|
132
|
+
else el.__ref_0_0.setAttribute("data-index", String(__av));
|
|
133
|
+
var __av = item;
|
|
134
|
+
if (__av == null || __av === false) el.__ref_0_0.removeAttribute("data-value");
|
|
135
|
+
else el.__ref_0_0.setAttribute("data-value", String(__av));
|
|
136
|
+
el.__ref_0_0.textContent = `
|
|
137
|
+
${item}
|
|
138
|
+
`;
|
|
139
|
+
var __av = String(__idx);
|
|
140
|
+
if (__av == null || __av === false) el.__ref_1.removeAttribute("data-index");
|
|
141
|
+
else el.__ref_1.setAttribute("data-index", String(__av));
|
|
142
|
+
var __av = item;
|
|
143
|
+
if (__av == null || __av === false) el.__ref_1.removeAttribute("data-value");
|
|
144
|
+
else el.__ref_1.setAttribute("data-value", String(__av));
|
|
145
|
+
el.setAttribute("data-gea-item-id", String(item));
|
|
146
|
+
el.__geaItem = item;
|
|
147
|
+
return el;
|
|
148
|
+
}
|
|
149
|
+
patch__unresolved_0Item(row, item, __prevItem, __idx) {
|
|
150
|
+
if (!row) return;
|
|
151
|
+
if (!row.__ref_0) row.__ref_0 = row.firstElementChild;
|
|
152
|
+
if (!row.__ref_0_0) row.__ref_0_0 = row.firstElementChild.firstElementChild;
|
|
153
|
+
if (!row.__ref_1) row.__ref_1 = row.firstElementChild.nextElementSibling;
|
|
154
|
+
var __av = String(__idx);
|
|
155
|
+
if (__av == null || __av === false) row.removeAttribute("data-index");
|
|
156
|
+
else row.setAttribute("data-index", String(__av));
|
|
157
|
+
var __av = item;
|
|
158
|
+
if (__av == null || __av === false) row.removeAttribute("data-value");
|
|
159
|
+
else row.setAttribute("data-value", String(__av));
|
|
160
|
+
var __av = String(__idx);
|
|
161
|
+
if (__av == null || __av === false) row.__ref_0.removeAttribute("data-index");
|
|
162
|
+
else row.__ref_0.setAttribute("data-index", String(__av));
|
|
163
|
+
var __av = item;
|
|
164
|
+
if (__av == null || __av === false) row.__ref_0.removeAttribute("data-value");
|
|
165
|
+
else row.__ref_0.setAttribute("data-value", String(__av));
|
|
166
|
+
var __av = String(__idx);
|
|
167
|
+
if (__av == null || __av === false) row.__ref_0_0.removeAttribute("data-index");
|
|
168
|
+
else row.__ref_0_0.setAttribute("data-index", String(__av));
|
|
169
|
+
var __av = item;
|
|
170
|
+
if (__av == null || __av === false) row.__ref_0_0.removeAttribute("data-value");
|
|
171
|
+
else row.__ref_0_0.setAttribute("data-value", String(__av));
|
|
172
|
+
row.__ref_0_0.textContent = `
|
|
173
|
+
${item}
|
|
174
|
+
`;
|
|
175
|
+
var __av = String(__idx);
|
|
176
|
+
if (__av == null || __av === false) row.__ref_1.removeAttribute("data-index");
|
|
177
|
+
else row.__ref_1.setAttribute("data-index", String(__av));
|
|
178
|
+
var __av = item;
|
|
179
|
+
if (__av == null || __av === false) row.__ref_1.removeAttribute("data-value");
|
|
180
|
+
else row.__ref_1.setAttribute("data-value", String(__av));
|
|
181
|
+
row.setAttribute("data-gea-item-id", String(item));
|
|
182
|
+
row.__geaItem = item;
|
|
183
|
+
}
|
|
184
|
+
__observe_local_value(value, change) {
|
|
185
|
+
this.__geaSyncMap(0);
|
|
186
|
+
this.__geaSyncMap(0);
|
|
187
|
+
}
|
|
188
|
+
__onPropChange(key, value) {
|
|
189
|
+
if (key === "class") {
|
|
190
|
+
const __el = this.element_;
|
|
191
|
+
this.props;
|
|
192
|
+
const __boundValue = value || "";
|
|
193
|
+
if (__el) {
|
|
194
|
+
const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
|
|
195
|
+
if (__el.className !== __newClass) __el.className = __newClass;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (key === "label") this.__geaPatchCond(0);
|
|
199
|
+
}
|
|
200
|
+
createdHooks() {
|
|
201
|
+
this.__geaRegisterMap(0, "____unresolved_0_container", () => document.getElementById(this.id + "-b1"), () => {
|
|
202
|
+
return this.value || [];
|
|
203
|
+
}, (__item, __idx) => this.create__unresolved_0Item(__item, __idx));
|
|
204
|
+
}
|
|
205
|
+
__setupLocalStateObservers() {
|
|
206
|
+
if (!this.__store) return;
|
|
207
|
+
this.__observe(this, ["value"], this.__observe_local_value);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
//#endregion
|
|
211
|
+
export { TagsInput as default };
|
|
212
|
+
|
|
213
|
+
//# sourceMappingURL=tags-input.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-input.mjs","names":["__v","v","valueOf","Component","tagsInput","normalizeProps","ZagComponent","handleComponentUpdate","registerHotModule","registerComponentInstance","unregisterComponentInstance","TagsInput","constructor","args","props","__geaCond_0","label","__geaRegisterCond","value","createMachine","_props","machine","getMachineProps","id","defaultValue","max","maxLength","disabled","readOnly","invalid","addOnPaste","editable","allowDuplicates","name","form","placeholder","blurBehavior","delimiter","onValueChange","details","ValueChangeDetails","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","ds","HTMLElement","dataset","getItemProps","index","[data-part=\"item-preview\"]","getItemPreviewProps","[data-part=\"item-text\"]","getItemTextProps","[data-part=\"item-delete-trigger\"]","getItemDeleteTriggerProps","syncState","template","__id","_register","class","String","trim","map","tag","i","join","render__unresolved_0Item","create__unresolved_0Item","item","__idx","__c","____unresolved_0_container","__geaTpl","__tw","document","createElement","innerHTML","content","firstElementChild","__err","console","error","cloneNode","__fw","__ref_0","__ref_0_0","__ref_1","nextElementSibling","__av","removeAttribute","setAttribute","textContent","__geaItem","patch__unresolved_0Item","row","__prevItem","__observe_local_value","change","__geaSyncMap","__onPropChange","key","__el","element_","__boundValue","__newClass","className","__geaPatchCond","createdHooks","__geaRegisterMap","getElementById","__item","__setupLocalStateObservers","__store","__observe","import","meta","hot","__moduleExports","default","url","accept","newModule","__updatedModule","invalidate","__origCreated","prototype","created","__geaProps","call","__origDispose","dispose"],"sources":["../src/components/tags-input.tsx"],"sourcesContent":["import * as tagsInput from '@zag-js/tags-input'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class TagsInput extends ZagComponent {\n declare value: string[]\n\n createMachine(_props: any): any {\n return tagsInput.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n max: props.max,\n maxLength: props.maxLength,\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n addOnPaste: props.addOnPaste ?? false,\n editable: props.editable ?? true,\n allowDuplicates: props.allowDuplicates ?? false,\n name: props.name,\n form: props.form,\n placeholder: props.placeholder,\n blurBehavior: props.blurBehavior,\n delimiter: props.delimiter,\n onValueChange: (details: tagsInput.ValueChangeDetails) => {\n this.value = details.value\n props.onValueChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return tagsInput.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"input\"]': 'getInputProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"clear-trigger\"]': 'getClearTriggerProps',\n '[data-part=\"item\"]': (api, el) => {\n const ds = (el as HTMLElement).dataset\n return api.getItemProps({ index: ds.index!, value: ds.value! })\n },\n '[data-part=\"item-preview\"]': (api, el) => {\n const ds = (el as HTMLElement).dataset\n return api.getItemPreviewProps({ index: ds.index!, value: ds.value! })\n },\n '[data-part=\"item-text\"]': (api, el) => {\n const ds = (el as HTMLElement).dataset\n return api.getItemTextProps({ index: ds.index!, value: ds.value! })\n },\n '[data-part=\"item-delete-trigger\"]': (api, el) => {\n const ds = (el as HTMLElement).dataset\n return api.getItemDeleteTriggerProps({ index: ds.index!, value: ds.value! })\n },\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n }\n\n template(props: any) {\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"tags-input-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div\n data-part=\"control\"\n class=\"tags-input-control flex flex-wrap gap-1.5 rounded-md border border-input bg-transparent px-3 py-2 shadow-sm focus-within:ring-1 focus-within:ring-ring\"\n >\n {(this.value || []).map((tag: string, i: number) => (\n <span\n key={`${tag}-${i}`}\n data-part=\"item\"\n data-index={String(i)}\n data-value={tag}\n class=\"tags-input-item inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs font-medium\"\n >\n <span\n data-part=\"item-preview\"\n data-index={String(i)}\n data-value={tag}\n class=\"inline-flex items-center gap-1 data-[highlighted]:ring-2 data-[highlighted]:ring-ring data-[highlighted]:rounded-sm\"\n >\n <span data-part=\"item-text\" data-index={String(i)} data-value={tag}>\n {tag}\n </span>\n </span>\n <button\n data-part=\"item-delete-trigger\"\n data-index={String(i)}\n data-value={tag}\n class=\"tags-input-item-delete text-muted-foreground hover:text-foreground\"\n >\n ✕\n </button>\n </span>\n ))}\n <input\n data-part=\"input\"\n class=\"tags-input-input flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground min-w-[60px]\"\n />\n </div>\n <input data-part=\"hidden-input\" type=\"hidden\" />\n </div>\n )\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { t as cn } from "./cn.mjs";
|
|
2
|
+
import "./_virtual_gea-hmr.mjs";
|
|
3
|
+
import { Component } from "@geajs/core";
|
|
4
|
+
//#region src/components/textarea.tsx
|
|
5
|
+
var Textarea = class extends Component {
|
|
6
|
+
template(props) {
|
|
7
|
+
return `<textarea id="${this.id}"${cn("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class) == null || cn("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class) === false ? "" : ` class="${(cn("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class) != null ? String(cn("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class)) : "").trim()}"`}${props.placeholder == null || props.placeholder === false ? "" : ` placeholder="${props.placeholder}"`}${props.disabled == null || props.disabled === false ? "" : ` disabled="${props.disabled}"`}${props.name == null || props.name === false ? "" : ` name="${props.name}"`}${props.rows == null || props.rows === false ? "" : ` rows="${props.rows}"`}>${props.value || ""}</textarea>`;
|
|
8
|
+
}
|
|
9
|
+
get events() {
|
|
10
|
+
if (this.__evts) return this.__evts;
|
|
11
|
+
return this.__evts = { input: { [`#${this.id}`]: this.__event_input_0 } };
|
|
12
|
+
}
|
|
13
|
+
__event_input_0(e, targetComponent) {
|
|
14
|
+
this.props.onInput(e);
|
|
15
|
+
}
|
|
16
|
+
__onPropChange(key, value) {
|
|
17
|
+
if (key === "class") {
|
|
18
|
+
const __el = this.element_;
|
|
19
|
+
this.props;
|
|
20
|
+
const __boundValue = cn("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", value);
|
|
21
|
+
if (__el) {
|
|
22
|
+
const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
|
|
23
|
+
if (__el.className !== __newClass) __el.className = __newClass;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (key === "placeholder") {
|
|
27
|
+
const __el = this.element_;
|
|
28
|
+
if (__el) if (value === null || value === void 0) __el.removeAttribute("placeholder");
|
|
29
|
+
else __el.setAttribute("placeholder", String(value));
|
|
30
|
+
}
|
|
31
|
+
if (key === "disabled") {
|
|
32
|
+
const __el = this.element_;
|
|
33
|
+
if (__el) if (!value) __el.removeAttribute("disabled");
|
|
34
|
+
else __el.setAttribute("disabled", "");
|
|
35
|
+
}
|
|
36
|
+
if (key === "name") {
|
|
37
|
+
const __el = this.element_;
|
|
38
|
+
if (__el) if (value === null || value === void 0) __el.removeAttribute("name");
|
|
39
|
+
else __el.setAttribute("name", String(value));
|
|
40
|
+
}
|
|
41
|
+
if (key === "rows") {
|
|
42
|
+
const __el = this.element_;
|
|
43
|
+
if (__el) if (value === null || value === void 0) __el.removeAttribute("rows");
|
|
44
|
+
else __el.setAttribute("rows", String(value));
|
|
45
|
+
}
|
|
46
|
+
if (key === "onInput") {
|
|
47
|
+
const __el = this.element_;
|
|
48
|
+
if (__el) if (value === null || value === void 0) __el.removeAttribute("onInput");
|
|
49
|
+
else __el.setAttribute("onInput", String(value));
|
|
50
|
+
}
|
|
51
|
+
if (key === "value") {
|
|
52
|
+
const __el = this.element_;
|
|
53
|
+
this.props;
|
|
54
|
+
const __boundValue = value || "";
|
|
55
|
+
if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
export { Textarea as default };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=textarea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.mjs","names":["Component","cn","handleComponentUpdate","registerHotModule","registerComponentInstance","unregisterComponentInstance","Textarea","template","props","__id","id","class","String","trim","placeholder","disabled","name","rows","value","events","__evts","input","__event_input_0","e","targetComponent","onInput","__onPropChange","key","__el","element_","__boundValue","__newClass","className","undefined","removeAttribute","setAttribute","textContent","import","meta","hot","__moduleExports","default","url","accept","newModule","__updatedModule","invalidate","__origCreated","prototype","created","__geaProps","constructor","call","__origDispose","dispose"],"sources":["../src/components/textarea.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Textarea extends Component {\n template(props: any) {\n return (\n <textarea\n class={cn(\n 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n props.class,\n )}\n placeholder={props.placeholder}\n disabled={props.disabled}\n name={props.name}\n rows={props.rows}\n onInput={props.onInput}\n >\n {props.value || ''}\n </textarea>\n )\n }\n}\n"],"mappings":";;;;AAGA,IAAqBM,WAArB,cAAsCN,UAAU;CAC9CO,SAASC,OAAY;AACnB,SAAA,iBADmB,KAAAE,GACnB,GAEWT,GACL,6QACAO,MAAMG,MACP,IAAA,QAHMV,GACL,6QACAO,MAAMG,MACP,KAAA,QAAA,KAAA,YAHMV,GACL,6QACAO,MAAMG,MACP,IAAA,OAAAC,OAHMX,GACL,6QACAO,MAAMG,MACP,CAAA,GAAA,IAAAE,MAAA,CAAA,KACYL,MAAMM,eAAW,QAAjBN,MAAMM,gBAAW,QAAA,KAAA,iBAAjBN,MAAMM,YAAW,KACpBN,MAAMO,YAAQ,QAAdP,MAAMO,aAAQ,QAAA,KAAA,cAAdP,MAAMO,SAAQ,KAClBP,MAAMQ,QAAI,QAAVR,MAAMQ,SAAI,QAAA,KAAA,UAAVR,MAAMQ,KAAI,KACVR,MAAMS,QAAI,QAAVT,MAAMS,SAAI,QAAA,KAAA,UAAVT,MAAMS,KAAI,GAAA,GAGfT,MAAMU,SAAS,GAAE;;CAGvB,IAAAC,SAAA;AAAA,MAAA,KAAAC,OAAA,QAAA,KAAAA;AAAA,SAAA,KAAAA,SAAA,EAAAC,OAAA,GAAA,IAAA,KAAAX,OAAA,KAAAY,iBAAA,EAAA;;CAnBHA,gBAAsBC,GAAGC,iBAAiB;AAAA,OAAAhB,MAcnBiB,QAAOF,EAAA;;CAd9BG,eAAsBC,KAAKT,OAAK;AAAA,MAAAS,QAAA,SAAA;GAAA,MAAAC,OAAA,KAAAC;AAGX,QAAArB;GAAA,MAAAsB,eAGN7B,GACL,6QAA2QiB,MAAA;AAAA,OAAAU,MAAA;IAAA,MAAAG,cAAAD,gBAAA,OAAAlB,OAAAkB,aAAA,GAAA,IAAAjB,MAAA;AAAA,QAAAe,KAAAI,cAAAD,WAAAH,MAAAI,YAAAD;;;AAAA,MAAAJ,QAAA,eAAA;GAAA,MAAAC,OAAA,KAAAC;AAAA,OAAAD,KAAA,KAAAV,UAAA,QAAAA,UAAAe,KAAAA,EAAAL,MAAAM,gBAAA,cAAA;OAAAN,MAAAO,aAAA,eAAAvB,OAAAM,MAAA,CAAA;;AAAA,MAAAS,QAAA,YAAA;GAAA,MAAAC,OAAA,KAAAC;AAAA,OAAAD,KAAA,KAAA,CAAAV,MAAAU,MAAAM,gBAAA,WAAA;OAAAN,MAAAO,aAAA,YAAA,GAAA;;AAAA,MAAAR,QAAA,QAAA;GAAA,MAAAC,OAAA,KAAAC;AAAA,OAAAD,KAAA,KAAAV,UAAA,QAAAA,UAAAe,KAAAA,EAAAL,MAAAM,gBAAA,OAAA;OAAAN,MAAAO,aAAA,QAAAvB,OAAAM,MAAA,CAAA;;AAAA,MAAAS,QAAA,QAAA;GAAA,MAAAC,OAAA,KAAAC;AAAA,OAAAD,KAAA,KAAAV,UAAA,QAAAA,UAAAe,KAAAA,EAAAL,MAAAM,gBAAA,OAAA;OAAAN,MAAAO,aAAA,QAAAvB,OAAAM,MAAA,CAAA;;AAAA,MAAAS,QAAA,WAAA;GAAA,MAAAC,OAAA,KAAAC;AAAA,OAAAD,KAAA,KAAAV,UAAA,QAAAA,UAAAe,KAAAA,EAAAL,MAAAM,gBAAA,UAAA;OAAAN,MAAAO,aAAA,WAAAvB,OAAAM,MAAA,CAAA;;AAAA,MAAAS,QAAA,SAAA;GAAA,MAAAC,OAAA,KAAAC;AAJhQ,QAAArB;GAAA,MAAAsB,eAAAZ,SAaG;AAAE,OAAAU,QAAAA,KAAAQ,gBAAAN,aAAAF,MAAAQ,cAAAN"}
|
package/dist/toast.d.mts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Component } from "@geajs/core";
|
|
2
|
+
import { VanillaMachine } from "@zag-js/vanilla";
|
|
3
|
+
import * as toast from "@zag-js/toast";
|
|
4
|
+
|
|
5
|
+
//#region src/components/toast.d.ts
|
|
6
|
+
declare function getStore(props?: toast.StoreProps): toast.Store<any>;
|
|
7
|
+
declare class ToastStore {
|
|
8
|
+
static getStore: typeof getStore;
|
|
9
|
+
static create(options: toast.Options): string;
|
|
10
|
+
static success(options: Omit<toast.Options, 'type'>): string;
|
|
11
|
+
static error(options: Omit<toast.Options, 'type'>): string;
|
|
12
|
+
static info(options: Omit<toast.Options, 'type'>): string;
|
|
13
|
+
static loading(options: Omit<toast.Options, 'type'>): string;
|
|
14
|
+
static dismiss(id?: string): void;
|
|
15
|
+
}
|
|
16
|
+
declare class Toaster extends Component {
|
|
17
|
+
_machine: VanillaMachine<any> | null;
|
|
18
|
+
_api: any;
|
|
19
|
+
_toastMachines: Map<string, VanillaMachine<any>>;
|
|
20
|
+
_spreadCleanups: Map<string, Array<() => void>>;
|
|
21
|
+
_currentToasts: toast.Options[];
|
|
22
|
+
created(props: any): void;
|
|
23
|
+
_createToastElement(t: any): HTMLElement;
|
|
24
|
+
_syncToastDOM(nextToasts: any[]): void;
|
|
25
|
+
_syncToastMachines(): void;
|
|
26
|
+
_applyGroupSpreads(): void;
|
|
27
|
+
onAfterRender(): void;
|
|
28
|
+
dispose(): void;
|
|
29
|
+
template(props: any): string;
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { ToastStore, Toaster };
|
|
33
|
+
//# sourceMappingURL=toast.d.mts.map
|
package/dist/toast.mjs
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import "./_virtual_gea-hmr.mjs";
|
|
2
|
+
import { Component } from "@geajs/core";
|
|
3
|
+
import { VanillaMachine, normalizeProps, spreadProps } from "@zag-js/vanilla";
|
|
4
|
+
import * as toast from "@zag-js/toast";
|
|
5
|
+
//#region src/components/toast.tsx
|
|
6
|
+
function stripStyle(props) {
|
|
7
|
+
const { style: _style, ...rest } = props;
|
|
8
|
+
return rest;
|
|
9
|
+
}
|
|
10
|
+
let _store = null;
|
|
11
|
+
function getStore(props) {
|
|
12
|
+
if (!_store) _store = toast.createStore({
|
|
13
|
+
placement: "bottom-end",
|
|
14
|
+
duration: 5e3,
|
|
15
|
+
removeDelay: 200,
|
|
16
|
+
max: 5,
|
|
17
|
+
...props
|
|
18
|
+
});
|
|
19
|
+
return _store;
|
|
20
|
+
}
|
|
21
|
+
var ToastStore = class {
|
|
22
|
+
static {
|
|
23
|
+
this.getStore = getStore;
|
|
24
|
+
}
|
|
25
|
+
static create(options) {
|
|
26
|
+
return getStore().create(options);
|
|
27
|
+
}
|
|
28
|
+
static success(options) {
|
|
29
|
+
return getStore().create({
|
|
30
|
+
...options,
|
|
31
|
+
type: "success"
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static error(options) {
|
|
35
|
+
return getStore().create({
|
|
36
|
+
...options,
|
|
37
|
+
type: "error"
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
static info(options) {
|
|
41
|
+
return getStore().create({
|
|
42
|
+
...options,
|
|
43
|
+
type: "info"
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
static loading(options) {
|
|
47
|
+
return getStore().create({
|
|
48
|
+
...options,
|
|
49
|
+
type: "loading"
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
static dismiss(id) {
|
|
53
|
+
if (id) getStore().dismiss(id);
|
|
54
|
+
else getStore().dismiss();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var Toaster = class extends Component {
|
|
58
|
+
created(props) {
|
|
59
|
+
this._toastMachines = /* @__PURE__ */ new Map();
|
|
60
|
+
this._spreadCleanups = /* @__PURE__ */ new Map();
|
|
61
|
+
this._currentToasts = [];
|
|
62
|
+
const store = getStore(props.storeProps);
|
|
63
|
+
this._machine = new VanillaMachine(toast.group.machine, { store });
|
|
64
|
+
this._machine.start();
|
|
65
|
+
this._api = toast.group.connect(this._machine.service, normalizeProps);
|
|
66
|
+
this._machine.subscribe(() => {
|
|
67
|
+
if (!this._machine) return;
|
|
68
|
+
this._api = toast.group.connect(this._machine.service, normalizeProps);
|
|
69
|
+
const nextToasts = this._api.getToasts();
|
|
70
|
+
this._syncToastDOM(nextToasts);
|
|
71
|
+
this._currentToasts = nextToasts;
|
|
72
|
+
this._syncToastMachines();
|
|
73
|
+
queueMicrotask(() => this._applyGroupSpreads());
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
_createToastElement(t) {
|
|
77
|
+
const div = document.createElement("div");
|
|
78
|
+
div.setAttribute("data-part", "toast-root");
|
|
79
|
+
div.setAttribute("data-toast-id", t.id);
|
|
80
|
+
div.className = "toast-root group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 shadow-lg transition-all bg-background text-foreground";
|
|
81
|
+
let inner = "<div class=\"grid gap-1\">";
|
|
82
|
+
if (t.title) inner += `<div data-part="title" class="toast-title text-sm font-semibold">${t.title}</div>`;
|
|
83
|
+
if (t.description) inner += `<div data-part="description" class="toast-description text-sm opacity-90">${t.description}</div>`;
|
|
84
|
+
inner += "</div>";
|
|
85
|
+
inner += "<button data-part=\"close-trigger\" class=\"toast-close-trigger text-foreground/50 hover:text-foreground\">✕</button>";
|
|
86
|
+
div.innerHTML = inner;
|
|
87
|
+
return div;
|
|
88
|
+
}
|
|
89
|
+
_syncToastDOM(nextToasts) {
|
|
90
|
+
const container = this.el;
|
|
91
|
+
if (!container) return;
|
|
92
|
+
const currentIds = new Set(this._currentToasts.map((t) => t.id));
|
|
93
|
+
const nextIds = new Set(nextToasts.map((t) => t.id));
|
|
94
|
+
for (const id of currentIds) if (!nextIds.has(id)) {
|
|
95
|
+
const el = container.querySelector(`[data-toast-id="${id}"]`);
|
|
96
|
+
if (el) {
|
|
97
|
+
const cleanups = this._spreadCleanups.get(id);
|
|
98
|
+
if (cleanups) cleanups.forEach((fn) => fn());
|
|
99
|
+
this._spreadCleanups.delete(id);
|
|
100
|
+
el.remove();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
for (const t of nextToasts) if (!currentIds.has(t.id)) {
|
|
104
|
+
const el = this._createToastElement(t);
|
|
105
|
+
container.appendChild(el);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
_syncToastMachines() {
|
|
109
|
+
if (!this._machine) return;
|
|
110
|
+
const currentIds = new Set(this._currentToasts.map((t) => t.id));
|
|
111
|
+
for (const [id, machine] of this._toastMachines) if (!currentIds.has(id)) {
|
|
112
|
+
machine.stop();
|
|
113
|
+
this._toastMachines.delete(id);
|
|
114
|
+
}
|
|
115
|
+
for (let i = 0; i < this._currentToasts.length; i++) {
|
|
116
|
+
const t = this._currentToasts[i];
|
|
117
|
+
if (!this._toastMachines.has(t.id)) {
|
|
118
|
+
const toastMachine = new VanillaMachine(toast.machine, {
|
|
119
|
+
...t,
|
|
120
|
+
parent: this._machine.service,
|
|
121
|
+
index: i,
|
|
122
|
+
stacked: true,
|
|
123
|
+
removeDelay: t.removeDelay ?? 200
|
|
124
|
+
});
|
|
125
|
+
toastMachine.start();
|
|
126
|
+
this._toastMachines.set(t.id, toastMachine);
|
|
127
|
+
toastMachine.subscribe(() => {
|
|
128
|
+
queueMicrotask(() => this._applyGroupSpreads());
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
_applyGroupSpreads() {
|
|
134
|
+
if (!this.rendered_ || !this._api) return;
|
|
135
|
+
const groupEl = this.el;
|
|
136
|
+
if (groupEl) spreadProps(groupEl, stripStyle(this._api.getGroupProps()));
|
|
137
|
+
const toastEls = this.$$("[data-toast-id]");
|
|
138
|
+
for (const el of toastEls) {
|
|
139
|
+
const toastId = el.dataset.toastId;
|
|
140
|
+
if (!toastId) continue;
|
|
141
|
+
const toastMachine = this._toastMachines.get(toastId);
|
|
142
|
+
if (!toastMachine) continue;
|
|
143
|
+
const api = toast.connect(toastMachine.service, normalizeProps);
|
|
144
|
+
const prevCleanups = this._spreadCleanups.get(toastId);
|
|
145
|
+
if (prevCleanups) prevCleanups.forEach((fn) => fn());
|
|
146
|
+
const cleanups = [];
|
|
147
|
+
const rootProps = stripStyle(api.getRootProps());
|
|
148
|
+
delete rootProps["data-part"];
|
|
149
|
+
cleanups.push(spreadProps(el, rootProps));
|
|
150
|
+
const title = el.querySelector("[data-part=\"title\"]");
|
|
151
|
+
if (title) cleanups.push(spreadProps(title, api.getTitleProps()));
|
|
152
|
+
const desc = el.querySelector("[data-part=\"description\"]");
|
|
153
|
+
if (desc) cleanups.push(spreadProps(desc, api.getDescriptionProps()));
|
|
154
|
+
const close = el.querySelector("[data-part=\"close-trigger\"]");
|
|
155
|
+
if (close) cleanups.push(spreadProps(close, api.getCloseTriggerProps()));
|
|
156
|
+
const action = el.querySelector("[data-part=\"action-trigger\"]");
|
|
157
|
+
if (action) cleanups.push(spreadProps(action, api.getActionTriggerProps()));
|
|
158
|
+
this._spreadCleanups.set(toastId, cleanups);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
onAfterRender() {
|
|
162
|
+
this._applyGroupSpreads();
|
|
163
|
+
}
|
|
164
|
+
dispose() {
|
|
165
|
+
for (const cleanups of this._spreadCleanups.values()) cleanups.forEach((fn) => fn());
|
|
166
|
+
this._spreadCleanups.clear();
|
|
167
|
+
for (const machine of this._toastMachines.values()) machine.stop();
|
|
168
|
+
this._toastMachines.clear();
|
|
169
|
+
if (this._machine) {
|
|
170
|
+
this._machine.stop();
|
|
171
|
+
this._machine = null;
|
|
172
|
+
}
|
|
173
|
+
this._api = null;
|
|
174
|
+
super.dispose();
|
|
175
|
+
}
|
|
176
|
+
template(props) {
|
|
177
|
+
return `<div id="${this.id}" data-part="group" class="${`toaster fixed z-[100] flex max-h-screen flex-col-reverse gap-2 p-4 ${props.class || "bottom-0 right-0"}`.trim()}"></div>`;
|
|
178
|
+
}
|
|
179
|
+
static {
|
|
180
|
+
this.__tpl = (() => {
|
|
181
|
+
if (typeof document === "undefined") return void 0;
|
|
182
|
+
var t = document.createElement("template");
|
|
183
|
+
t.innerHTML = "<div data-part=\"group\"></div>";
|
|
184
|
+
return t;
|
|
185
|
+
})();
|
|
186
|
+
}
|
|
187
|
+
__cloneTemplate() {
|
|
188
|
+
const __id = this.id;
|
|
189
|
+
var __tpl = this.constructor.__tpl;
|
|
190
|
+
if (!__tpl) throw new Error("[gea] __tpl missing for clone template");
|
|
191
|
+
var __root = __tpl.content.firstElementChild.cloneNode(true);
|
|
192
|
+
__root.id = __id;
|
|
193
|
+
__root.className = `toaster fixed z-[100] flex max-h-screen flex-col-reverse gap-2 p-4 ${props.class || "bottom-0 right-0"}`.trim();
|
|
194
|
+
return __root;
|
|
195
|
+
}
|
|
196
|
+
__onPropChange(key, value) {
|
|
197
|
+
if (key === "class") {
|
|
198
|
+
const __el = this.element_;
|
|
199
|
+
this.props;
|
|
200
|
+
const __boundValue = `toaster fixed z-[100] flex max-h-screen flex-col-reverse gap-2 p-4 ${value || "bottom-0 right-0"}`;
|
|
201
|
+
if (__el) {
|
|
202
|
+
const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
|
|
203
|
+
if (__el.className !== __newClass) __el.className = __newClass;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
//#endregion
|
|
209
|
+
export { ToastStore, Toaster };
|
|
210
|
+
|
|
211
|
+
//# sourceMappingURL=toast.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.mjs","names":["toast","VanillaMachine","normalizeProps","spreadProps","Component","handleComponentUpdate","registerHotModule","registerComponentInstance","unregisterComponentInstance","stripStyle","props","Record","style","_style","rest","_store","Store","getStore","StoreProps","createStore","placement","duration","removeDelay","max","ToastStore","create","options","Options","success","Omit","type","error","info","loading","dismiss","id","Toaster","_machine","_api","_toastMachines","Map","_spreadCleanups","Array","_currentToasts","created","store","storeProps","group","machine","start","connect","service","subscribe","nextToasts","getToasts","_syncToastDOM","_syncToastMachines","queueMicrotask","_applyGroupSpreads","_createToastElement","t","HTMLElement","div","document","createElement","setAttribute","className","inner","title","description","innerHTML","container","el","currentIds","Set","map","nextIds","has","querySelector","cleanups","get","forEach","fn","delete","remove","appendChild","stop","i","length","toastMachine","parent","index","stacked","set","rendered_","groupEl","getGroupProps","toastEls","$$","toastId","dataset","api","prevCleanups","rootProps","getRootProps","push","getTitleProps","desc","getDescriptionProps","close","getCloseTriggerProps","action","getActionTriggerProps","onAfterRender","dispose","values","clear","template","__id","class","trim","__tpl","undefined","__cloneTemplate","constructor","Error","__root","content","firstElementChild","cloneNode","__onPropChange","key","value","__el","element_","__boundValue","__newClass","String","import","meta","hot","__moduleExports","url","accept","newModule","__updatedModule","__origCreated","prototype","__geaProps","name","call","__origDispose"],"sources":["../src/components/toast.tsx"],"sourcesContent":["import * as toast from '@zag-js/toast'\nimport { VanillaMachine, normalizeProps, spreadProps } from '@zag-js/vanilla'\nimport { Component } from '@geajs/core'\n\nfunction stripStyle(props: Record<string, any>): Record<string, any> {\n const { style: _style, ...rest } = props\n return rest\n}\n\nlet _store: toast.Store | null = null\n\nfunction getStore(props?: toast.StoreProps) {\n if (!_store) {\n _store = toast.createStore({\n placement: 'bottom-end',\n duration: 5000,\n removeDelay: 200,\n max: 5,\n ...props,\n })\n }\n return _store\n}\n\nexport class ToastStore {\n static getStore = getStore\n\n static create(options: toast.Options) {\n return getStore().create(options)\n }\n\n static success(options: Omit<toast.Options, 'type'>) {\n return getStore().create({ ...options, type: 'success' })\n }\n\n static error(options: Omit<toast.Options, 'type'>) {\n return getStore().create({ ...options, type: 'error' })\n }\n\n static info(options: Omit<toast.Options, 'type'>) {\n return getStore().create({ ...options, type: 'info' })\n }\n\n static loading(options: Omit<toast.Options, 'type'>) {\n return getStore().create({ ...options, type: 'loading' })\n }\n\n static dismiss(id?: string) {\n if (id) getStore().dismiss(id)\n else getStore().dismiss()\n }\n}\n\nexport class Toaster extends Component {\n declare _machine: VanillaMachine<any> | null\n declare _api: any\n declare _toastMachines: Map<string, VanillaMachine<any>>\n declare _spreadCleanups: Map<string, Array<() => void>>\n declare _currentToasts: toast.Options[]\n\n created(props: any) {\n this._toastMachines = new Map()\n this._spreadCleanups = new Map()\n this._currentToasts = []\n\n const store = getStore(props.storeProps)\n\n this._machine = new VanillaMachine(toast.group.machine, { store })\n this._machine.start()\n\n this._api = toast.group.connect(this._machine.service, normalizeProps)\n\n this._machine.subscribe(() => {\n if (!this._machine) return\n this._api = toast.group.connect(this._machine.service, normalizeProps)\n const nextToasts = this._api.getToasts()\n this._syncToastDOM(nextToasts)\n this._currentToasts = nextToasts\n this._syncToastMachines()\n queueMicrotask(() => this._applyGroupSpreads())\n })\n }\n\n _createToastElement(t: any): HTMLElement {\n const div = document.createElement('div')\n div.setAttribute('data-part', 'toast-root')\n div.setAttribute('data-toast-id', t.id)\n div.className =\n 'toast-root group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 shadow-lg transition-all bg-background text-foreground'\n\n let inner = '<div class=\"grid gap-1\">'\n if (t.title) inner += `<div data-part=\"title\" class=\"toast-title text-sm font-semibold\">${t.title}</div>`\n if (t.description)\n inner += `<div data-part=\"description\" class=\"toast-description text-sm opacity-90\">${t.description}</div>`\n inner += '</div>'\n inner +=\n '<button data-part=\"close-trigger\" class=\"toast-close-trigger text-foreground/50 hover:text-foreground\">✕</button>'\n div.innerHTML = inner\n return div\n }\n\n _syncToastDOM(nextToasts: any[]) {\n const container = this.el\n if (!container) return\n\n const currentIds = new Set(this._currentToasts.map((t: any) => t.id))\n const nextIds = new Set(nextToasts.map((t: any) => t.id))\n\n for (const id of currentIds) {\n if (!nextIds.has(id)) {\n const el = container.querySelector(`[data-toast-id=\"${id}\"]`)\n if (el) {\n const cleanups = this._spreadCleanups.get(id)\n if (cleanups) cleanups.forEach((fn) => fn())\n this._spreadCleanups.delete(id)\n el.remove()\n }\n }\n }\n\n for (const t of nextToasts) {\n if (!currentIds.has((t as any).id)) {\n const el = this._createToastElement(t as any)\n container.appendChild(el)\n }\n }\n }\n\n _syncToastMachines() {\n if (!this._machine) return\n const currentIds = new Set(this._currentToasts.map((t: any) => t.id))\n\n for (const [id, machine] of this._toastMachines) {\n if (!currentIds.has(id)) {\n machine.stop()\n this._toastMachines.delete(id)\n }\n }\n\n for (let i = 0; i < this._currentToasts.length; i++) {\n const t = this._currentToasts[i] as any\n if (!this._toastMachines.has(t.id)) {\n const toastMachine = new VanillaMachine(toast.machine, {\n ...t,\n parent: this._machine.service,\n index: i,\n stacked: true,\n removeDelay: t.removeDelay ?? 200,\n })\n toastMachine.start()\n this._toastMachines.set(t.id, toastMachine)\n\n toastMachine.subscribe(() => {\n queueMicrotask(() => this._applyGroupSpreads())\n })\n }\n }\n }\n\n _applyGroupSpreads() {\n if (!this.rendered_ || !this._api) return\n\n const groupEl = this.el\n if (groupEl) {\n spreadProps(groupEl, stripStyle(this._api.getGroupProps()))\n }\n\n const toastEls = this.$$('[data-toast-id]')\n for (const el of toastEls) {\n const toastId = (el as HTMLElement).dataset.toastId\n if (!toastId) continue\n\n const toastMachine = this._toastMachines.get(toastId)\n if (!toastMachine) continue\n\n const api = toast.connect(toastMachine.service, normalizeProps)\n\n const prevCleanups = this._spreadCleanups.get(toastId)\n if (prevCleanups) prevCleanups.forEach((fn) => fn())\n\n const cleanups: Array<() => void> = []\n const rootProps = stripStyle(api.getRootProps())\n delete rootProps['data-part']\n cleanups.push(spreadProps(el, rootProps))\n\n const title = el.querySelector('[data-part=\"title\"]')\n if (title) cleanups.push(spreadProps(title, api.getTitleProps()))\n\n const desc = el.querySelector('[data-part=\"description\"]')\n if (desc) cleanups.push(spreadProps(desc, api.getDescriptionProps()))\n\n const close = el.querySelector('[data-part=\"close-trigger\"]')\n if (close) cleanups.push(spreadProps(close, api.getCloseTriggerProps()))\n\n const action = el.querySelector('[data-part=\"action-trigger\"]')\n if (action) cleanups.push(spreadProps(action, api.getActionTriggerProps()))\n\n this._spreadCleanups.set(toastId, cleanups)\n }\n }\n\n onAfterRender() {\n this._applyGroupSpreads()\n }\n\n dispose() {\n for (const cleanups of this._spreadCleanups.values()) {\n cleanups.forEach((fn) => fn())\n }\n this._spreadCleanups.clear()\n\n for (const machine of this._toastMachines.values()) {\n machine.stop()\n }\n this._toastMachines.clear()\n\n if (this._machine) {\n this._machine.stop()\n this._machine = null\n }\n this._api = null\n\n super.dispose()\n }\n\n template(props: any) {\n return (\n <div\n data-part=\"group\"\n class={`toaster fixed z-[100] flex max-h-screen flex-col-reverse gap-2 p-4 ${props.class || 'bottom-0 right-0'}`}\n />\n )\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { n as ZagComponent } from "./zag-component.mjs";
|
|
2
|
+
import * as toggleGroup from "@zag-js/toggle-group";
|
|
3
|
+
import * as _zag_js_types0 from "@zag-js/types";
|
|
4
|
+
|
|
5
|
+
//#region src/components/toggle-group.d.ts
|
|
6
|
+
declare class ToggleGroup extends ZagComponent {
|
|
7
|
+
value: string[];
|
|
8
|
+
createMachine(_props: any): any;
|
|
9
|
+
getMachineProps(props: any): {
|
|
10
|
+
id: string;
|
|
11
|
+
value: any;
|
|
12
|
+
defaultValue: any;
|
|
13
|
+
multiple: any;
|
|
14
|
+
disabled: any;
|
|
15
|
+
orientation: any;
|
|
16
|
+
loopFocus: any;
|
|
17
|
+
rovingFocus: any;
|
|
18
|
+
onValueChange: (details: toggleGroup.ValueChangeDetails) => void;
|
|
19
|
+
};
|
|
20
|
+
connectApi(service: any): toggleGroup.Api<_zag_js_types0.PropTypes<{
|
|
21
|
+
[x: string]: any;
|
|
22
|
+
}>>;
|
|
23
|
+
getSpreadMap(): {
|
|
24
|
+
'[data-part="root"]': string;
|
|
25
|
+
'[data-part="item"]': (api: any, el: any) => any;
|
|
26
|
+
};
|
|
27
|
+
syncState(api: any): void;
|
|
28
|
+
template(props: any): string;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { ToggleGroup as default };
|
|
32
|
+
//# sourceMappingURL=toggle-group.d.mts.map
|