@seed-ship/mcp-ui-solid 2.6.2 → 2.6.3
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/components/FormFieldRenderer.cjs +145 -50
- package/dist/components/FormFieldRenderer.cjs.map +1 -1
- package/dist/components/FormFieldRenderer.js +145 -50
- package/dist/components/FormFieldRenderer.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormFieldRenderer.tsx +119 -38
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const web = require("solid-js/web");
|
|
4
4
|
const solidJs = require("solid-js");
|
|
5
5
|
const useConditionalField = require("../hooks/useConditionalField.cjs");
|
|
6
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$2 = /* @__PURE__ */ web.template(`<label class="block text-sm font-medium text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$3 = /* @__PURE__ */ web.template(`<input>`), _tmpl$4 = /* @__PURE__ */ web.template(`<input type=number>`), _tmpl$5 = /* @__PURE__ */ web.template(`<input type=date>`), _tmpl$6 = /* @__PURE__ */ web.template(`<textarea>`), _tmpl$7 = /* @__PURE__ */ web.template(`<option value disabled>`), _tmpl$8 = /* @__PURE__ */ web.template(`<select><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700"><span class="text-sm text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$0 = /* @__PURE__ */ web.template(`<div class=space-y-2 role=radiogroup>`), _tmpl$1 = /* @__PURE__ */ web.template(`<input type=text>`), _tmpl$10 = /* @__PURE__ */ web.template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$11 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$12 = /* @__PURE__ */ web.template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$13 = /* @__PURE__ */ web.template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$14 = /* @__PURE__ */ web.template(`<option>`), _tmpl$15 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=radio class="w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$16 = /* @__PURE__ */ web.template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$17 = /* @__PURE__ */ web.template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-
|
|
6
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$2 = /* @__PURE__ */ web.template(`<label class="block text-sm font-medium text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$3 = /* @__PURE__ */ web.template(`<input>`), _tmpl$4 = /* @__PURE__ */ web.template(`<input type=number>`), _tmpl$5 = /* @__PURE__ */ web.template(`<input type=date>`), _tmpl$6 = /* @__PURE__ */ web.template(`<textarea>`), _tmpl$7 = /* @__PURE__ */ web.template(`<option value disabled>`), _tmpl$8 = /* @__PURE__ */ web.template(`<select><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700"><span class="text-sm text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$0 = /* @__PURE__ */ web.template(`<div class=space-y-2 role=radiogroup>`), _tmpl$1 = /* @__PURE__ */ web.template(`<input type=text>`), _tmpl$10 = /* @__PURE__ */ web.template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$11 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$12 = /* @__PURE__ */ web.template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$13 = /* @__PURE__ */ web.template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$14 = /* @__PURE__ */ web.template(`<option>`), _tmpl$15 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=radio class="w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$16 = /* @__PURE__ */ web.template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$17 = /* @__PURE__ */ web.template(`<div class="p-2 border-b border-gray-200 dark:border-gray-600"><input type=text placeholder=Filter... class="w-full px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none"autofocus>`), _tmpl$18 = /* @__PURE__ */ web.template(`<p class="px-3 py-2 text-sm text-gray-400">No matches`), _tmpl$19 = /* @__PURE__ */ web.template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg overflow-hidden"><!$><!/><div class="max-h-72 overflow-y-auto"><!$><!/><!$><!/>`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><button type=button><span></span><svg class="w-4 h-4 text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M19 9l-7 7-7-7"></path></svg></button><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full"><!$><!/><button type=button class="hover:text-blue-900 dark:hover:text-blue-100">×`), _tmpl$22 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-gray-900 dark:text-white">`), _tmpl$23 = /* @__PURE__ */ web.template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-72 overflow-y-auto">`), _tmpl$24 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$25 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs">✓`), _tmpl$26 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/>`);
|
|
7
7
|
const FormFieldRenderer = (props) => {
|
|
8
8
|
const {
|
|
9
9
|
isVisible
|
|
@@ -431,6 +431,7 @@ const FormFieldRenderer = (props) => {
|
|
|
431
431
|
};
|
|
432
432
|
const MultiSelectField = (props) => {
|
|
433
433
|
const [open, setOpen] = solidJs.createSignal(false);
|
|
434
|
+
const [filter, setFilter] = solidJs.createSignal("");
|
|
434
435
|
const toggle = (val) => {
|
|
435
436
|
const current = props.value || [];
|
|
436
437
|
if (current.includes(val)) {
|
|
@@ -446,8 +447,13 @@ const MultiSelectField = (props) => {
|
|
|
446
447
|
var _a, _b;
|
|
447
448
|
return ((_b = (_a = props.field.options) == null ? void 0 : _a.find((o) => o.value === val)) == null ? void 0 : _b.label) || val;
|
|
448
449
|
};
|
|
450
|
+
const filteredOptions = () => {
|
|
451
|
+
const q = filter().toLowerCase();
|
|
452
|
+
if (!q) return props.field.options || [];
|
|
453
|
+
return (props.field.options || []).filter((o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q));
|
|
454
|
+
};
|
|
449
455
|
return (() => {
|
|
450
|
-
var _el$44 = web.getNextElement(_tmpl$
|
|
456
|
+
var _el$44 = web.getNextElement(_tmpl$20), _el$59 = _el$44.firstChild, [_el$60, _co$13] = web.getNextMarker(_el$59.nextSibling), _el$46 = _el$60.nextSibling, _el$47 = _el$46.firstChild, _el$61 = _el$46.nextSibling, [_el$62, _co$14] = web.getNextMarker(_el$61.nextSibling);
|
|
451
457
|
web.insert(_el$44, web.createComponent(solidJs.Show, {
|
|
452
458
|
get when() {
|
|
453
459
|
return props.value.length > 0;
|
|
@@ -459,18 +465,21 @@ const MultiSelectField = (props) => {
|
|
|
459
465
|
return props.value;
|
|
460
466
|
},
|
|
461
467
|
children: (val) => (() => {
|
|
462
|
-
var _el$
|
|
463
|
-
web.insert(_el$
|
|
464
|
-
_el$
|
|
465
|
-
web.effect(() => web.setAttribute(_el$
|
|
468
|
+
var _el$63 = web.getNextElement(_tmpl$21), _el$65 = _el$63.firstChild, [_el$66, _co$15] = web.getNextMarker(_el$65.nextSibling), _el$64 = _el$66.nextSibling;
|
|
469
|
+
web.insert(_el$63, () => getLabel(val), _el$66, _co$15);
|
|
470
|
+
_el$64.$$click = () => removeChip(val);
|
|
471
|
+
web.effect(() => web.setAttribute(_el$64, "aria-label", `Remove ${getLabel(val)}`));
|
|
466
472
|
web.runHydrationEvents();
|
|
467
|
-
return _el$
|
|
473
|
+
return _el$63;
|
|
468
474
|
})()
|
|
469
475
|
}));
|
|
470
476
|
return _el$45;
|
|
471
477
|
}
|
|
472
|
-
}), _el$
|
|
473
|
-
_el$46.$$click = () =>
|
|
478
|
+
}), _el$60, _co$13);
|
|
479
|
+
_el$46.$$click = () => {
|
|
480
|
+
setOpen(!open());
|
|
481
|
+
if (!open()) setFilter("");
|
|
482
|
+
};
|
|
474
483
|
web.insert(_el$47, (() => {
|
|
475
484
|
var _c$ = web.memo(() => !!props.value.length);
|
|
476
485
|
return () => _c$() ? `${props.value.length} selected` : props.field.placeholder || "Select...";
|
|
@@ -480,22 +489,43 @@ const MultiSelectField = (props) => {
|
|
|
480
489
|
return open();
|
|
481
490
|
},
|
|
482
491
|
get children() {
|
|
483
|
-
var _el$48 = web.getNextElement(_tmpl$
|
|
484
|
-
web.insert(_el$48, web.createComponent(solidJs.
|
|
492
|
+
var _el$48 = web.getNextElement(_tmpl$19), _el$57 = _el$48.firstChild, [_el$58, _co$12] = web.getNextMarker(_el$57.nextSibling), _el$51 = _el$58.nextSibling, _el$53 = _el$51.firstChild, [_el$54, _co$10] = web.getNextMarker(_el$53.nextSibling), _el$55 = _el$54.nextSibling, [_el$56, _co$11] = web.getNextMarker(_el$55.nextSibling);
|
|
493
|
+
web.insert(_el$48, web.createComponent(solidJs.Show, {
|
|
494
|
+
get when() {
|
|
495
|
+
var _a;
|
|
496
|
+
return (((_a = props.field.options) == null ? void 0 : _a.length) || 0) > 10;
|
|
497
|
+
},
|
|
498
|
+
get children() {
|
|
499
|
+
var _el$49 = web.getNextElement(_tmpl$17), _el$50 = _el$49.firstChild;
|
|
500
|
+
_el$50.$$input = (e) => setFilter(e.currentTarget.value);
|
|
501
|
+
web.effect(() => web.setProperty(_el$50, "value", filter()));
|
|
502
|
+
web.runHydrationEvents();
|
|
503
|
+
return _el$49;
|
|
504
|
+
}
|
|
505
|
+
}), _el$58, _co$12);
|
|
506
|
+
web.insert(_el$51, web.createComponent(solidJs.For, {
|
|
485
507
|
get each() {
|
|
486
|
-
return
|
|
508
|
+
return filteredOptions();
|
|
487
509
|
},
|
|
488
510
|
children: (option) => (() => {
|
|
489
|
-
var _el$
|
|
490
|
-
_el$
|
|
491
|
-
web.insert(_el$
|
|
492
|
-
web.effect(() => web.setProperty(_el$
|
|
493
|
-
return _el$
|
|
511
|
+
var _el$67 = web.getNextElement(_tmpl$22), _el$68 = _el$67.firstChild, _el$69 = _el$68.nextSibling;
|
|
512
|
+
_el$68.addEventListener("change", () => toggle(option.value));
|
|
513
|
+
web.insert(_el$69, () => option.label);
|
|
514
|
+
web.effect(() => web.setProperty(_el$68, "checked", (props.value || []).includes(option.value)));
|
|
515
|
+
return _el$67;
|
|
494
516
|
})()
|
|
495
|
-
}));
|
|
517
|
+
}), _el$54, _co$10);
|
|
518
|
+
web.insert(_el$51, web.createComponent(solidJs.Show, {
|
|
519
|
+
get when() {
|
|
520
|
+
return filteredOptions().length === 0;
|
|
521
|
+
},
|
|
522
|
+
get children() {
|
|
523
|
+
return web.getNextElement(_tmpl$18);
|
|
524
|
+
}
|
|
525
|
+
}), _el$56, _co$11);
|
|
496
526
|
return _el$48;
|
|
497
527
|
}
|
|
498
|
-
}), _el$
|
|
528
|
+
}), _el$62, _co$14);
|
|
499
529
|
web.effect((_p$) => {
|
|
500
530
|
var _v$65 = props.disabled, _v$66 = `${props.baseClass} text-left flex items-center justify-between`, _v$67 = props.value.length ? "text-gray-900 dark:text-white" : "text-gray-400";
|
|
501
531
|
_v$65 !== _p$.e && web.setProperty(_el$46, "disabled", _p$.e = _v$65);
|
|
@@ -515,8 +545,10 @@ const AutocompleteField = (props) => {
|
|
|
515
545
|
const [query, setQuery] = solidJs.createSignal("");
|
|
516
546
|
const [suggestions, setSuggestions] = solidJs.createSignal([]);
|
|
517
547
|
const [isOpen, setIsOpen] = solidJs.createSignal(false);
|
|
518
|
-
const [
|
|
548
|
+
const [selectedLabels, setSelectedLabels] = solidJs.createSignal(/* @__PURE__ */ new Map());
|
|
519
549
|
let debounceTimer = null;
|
|
550
|
+
const isMultiple = () => props.field.multiple === true;
|
|
551
|
+
const selectedValues = () => isMultiple() ? Array.isArray(props.value) ? props.value : [] : [];
|
|
520
552
|
const minChars = () => props.field.minChars ?? 2;
|
|
521
553
|
const debounceMs = () => props.field.debounceMs ?? 300;
|
|
522
554
|
const fetchSuggestions = async (q) => {
|
|
@@ -547,8 +579,9 @@ const AutocompleteField = (props) => {
|
|
|
547
579
|
};
|
|
548
580
|
const handleInput = (value) => {
|
|
549
581
|
setQuery(value);
|
|
550
|
-
|
|
551
|
-
|
|
582
|
+
if (!isMultiple()) {
|
|
583
|
+
props.onChange("");
|
|
584
|
+
}
|
|
552
585
|
if (debounceTimer) clearTimeout(debounceTimer);
|
|
553
586
|
if (value.length < minChars()) {
|
|
554
587
|
setSuggestions([]);
|
|
@@ -558,58 +591,120 @@ const AutocompleteField = (props) => {
|
|
|
558
591
|
debounceTimer = setTimeout(() => fetchSuggestions(value), debounceMs());
|
|
559
592
|
};
|
|
560
593
|
const selectSuggestion = (item) => {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
594
|
+
if (isMultiple()) {
|
|
595
|
+
const current = selectedValues();
|
|
596
|
+
if (!current.includes(item.value)) {
|
|
597
|
+
props.onChange([...current, item.value]);
|
|
598
|
+
setSelectedLabels((prev) => new Map(prev).set(item.value, item.label));
|
|
599
|
+
}
|
|
600
|
+
setQuery("");
|
|
601
|
+
setSuggestions([]);
|
|
602
|
+
setIsOpen(false);
|
|
603
|
+
} else {
|
|
604
|
+
props.onChange(item.value);
|
|
605
|
+
setSelectedLabels((prev) => new Map(prev).set(item.value, item.label));
|
|
606
|
+
setQuery(item.label);
|
|
607
|
+
setIsOpen(false);
|
|
608
|
+
setSuggestions([]);
|
|
609
|
+
}
|
|
566
610
|
};
|
|
611
|
+
const removeChip = (val) => {
|
|
612
|
+
props.onChange(selectedValues().filter((v) => v !== val));
|
|
613
|
+
setSelectedLabels((prev) => {
|
|
614
|
+
const m = new Map(prev);
|
|
615
|
+
m.delete(val);
|
|
616
|
+
return m;
|
|
617
|
+
});
|
|
618
|
+
};
|
|
619
|
+
const getLabel = (val) => selectedLabels().get(val) || val;
|
|
567
620
|
solidJs.onCleanup(() => {
|
|
568
621
|
if (debounceTimer) clearTimeout(debounceTimer);
|
|
569
622
|
});
|
|
570
623
|
return (() => {
|
|
571
|
-
var _el$
|
|
572
|
-
_el$
|
|
573
|
-
|
|
624
|
+
var _el$70 = web.getNextElement(_tmpl$24), _el$74 = _el$70.firstChild, [_el$75, _co$16] = web.getNextMarker(_el$74.nextSibling), _el$72 = _el$75.nextSibling, _el$76 = _el$72.nextSibling, [_el$77, _co$17] = web.getNextMarker(_el$76.nextSibling);
|
|
625
|
+
web.insert(_el$70, web.createComponent(solidJs.Show, {
|
|
626
|
+
get when() {
|
|
627
|
+
return web.memo(() => !!isMultiple())() && selectedValues().length > 0;
|
|
628
|
+
},
|
|
629
|
+
get children() {
|
|
630
|
+
var _el$71 = web.getNextElement(_tmpl$16);
|
|
631
|
+
web.insert(_el$71, web.createComponent(solidJs.For, {
|
|
632
|
+
get each() {
|
|
633
|
+
return selectedValues();
|
|
634
|
+
},
|
|
635
|
+
children: (val) => (() => {
|
|
636
|
+
var _el$78 = web.getNextElement(_tmpl$21), _el$80 = _el$78.firstChild, [_el$81, _co$18] = web.getNextMarker(_el$80.nextSibling), _el$79 = _el$81.nextSibling;
|
|
637
|
+
web.insert(_el$78, () => getLabel(val), _el$81, _co$18);
|
|
638
|
+
_el$79.$$click = () => removeChip(val);
|
|
639
|
+
web.effect(() => web.setAttribute(_el$79, "aria-label", `Remove ${getLabel(val)}`));
|
|
640
|
+
web.runHydrationEvents();
|
|
641
|
+
return _el$78;
|
|
642
|
+
})()
|
|
643
|
+
}));
|
|
644
|
+
return _el$71;
|
|
645
|
+
}
|
|
646
|
+
}), _el$75, _co$16);
|
|
647
|
+
_el$72.addEventListener("blur", () => setTimeout(() => setIsOpen(false), 200));
|
|
648
|
+
_el$72.addEventListener("focus", () => {
|
|
574
649
|
if (suggestions().length) setIsOpen(true);
|
|
575
650
|
});
|
|
576
|
-
_el$
|
|
577
|
-
web.insert(_el$
|
|
651
|
+
_el$72.$$input = (e) => handleInput(e.currentTarget.value);
|
|
652
|
+
web.insert(_el$70, web.createComponent(solidJs.Show, {
|
|
578
653
|
get when() {
|
|
579
654
|
return web.memo(() => !!isOpen())() && suggestions().length > 0;
|
|
580
655
|
},
|
|
581
656
|
get children() {
|
|
582
|
-
var _el$
|
|
583
|
-
web.insert(_el$
|
|
657
|
+
var _el$73 = web.getNextElement(_tmpl$23);
|
|
658
|
+
web.insert(_el$73, web.createComponent(solidJs.For, {
|
|
584
659
|
get each() {
|
|
585
660
|
return suggestions();
|
|
586
661
|
},
|
|
587
|
-
children: (item) =>
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
662
|
+
children: (item) => {
|
|
663
|
+
const isSelected = () => isMultiple() && selectedValues().includes(item.value);
|
|
664
|
+
return (() => {
|
|
665
|
+
var _el$82 = web.getNextElement(_tmpl$26), _el$84 = _el$82.firstChild, [_el$85, _co$19] = web.getNextMarker(_el$84.nextSibling), _el$86 = _el$85.nextSibling, [_el$87, _co$20] = web.getNextMarker(_el$86.nextSibling);
|
|
666
|
+
_el$82.$$click = () => selectSuggestion(item);
|
|
667
|
+
_el$82.$$mousedown = (e) => e.preventDefault();
|
|
668
|
+
web.insert(_el$82, () => item.label, _el$85, _co$19);
|
|
669
|
+
web.insert(_el$82, web.createComponent(solidJs.Show, {
|
|
670
|
+
get when() {
|
|
671
|
+
return isSelected();
|
|
672
|
+
},
|
|
673
|
+
get children() {
|
|
674
|
+
return web.getNextElement(_tmpl$25);
|
|
675
|
+
}
|
|
676
|
+
}), _el$87, _co$20);
|
|
677
|
+
web.effect((_p$) => {
|
|
678
|
+
var _v$71 = `w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 ${isSelected() ? "text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10" : "text-gray-900 dark:text-white"}`, _v$72 = isSelected();
|
|
679
|
+
_v$71 !== _p$.e && web.className(_el$82, _p$.e = _v$71);
|
|
680
|
+
_v$72 !== _p$.t && web.setProperty(_el$82, "disabled", _p$.t = _v$72);
|
|
681
|
+
return _p$;
|
|
682
|
+
}, {
|
|
683
|
+
e: void 0,
|
|
684
|
+
t: void 0
|
|
685
|
+
});
|
|
686
|
+
web.runHydrationEvents();
|
|
687
|
+
return _el$82;
|
|
688
|
+
})();
|
|
689
|
+
}
|
|
595
690
|
}));
|
|
596
|
-
return _el$
|
|
691
|
+
return _el$73;
|
|
597
692
|
}
|
|
598
|
-
}), _el$
|
|
693
|
+
}), _el$77, _co$17);
|
|
599
694
|
web.effect((_p$) => {
|
|
600
|
-
var _v$68 = props.field.placeholder, _v$69 = props.disabled, _v$70 = props.baseClass;
|
|
601
|
-
_v$68 !== _p$.e && web.setAttribute(_el$
|
|
602
|
-
_v$69 !== _p$.t && web.setProperty(_el$
|
|
603
|
-
_v$70 !== _p$.a && web.className(_el$
|
|
695
|
+
var _v$68 = isMultiple() && selectedValues().length ? "Add more..." : props.field.placeholder, _v$69 = props.disabled, _v$70 = props.baseClass;
|
|
696
|
+
_v$68 !== _p$.e && web.setAttribute(_el$72, "placeholder", _p$.e = _v$68);
|
|
697
|
+
_v$69 !== _p$.t && web.setProperty(_el$72, "disabled", _p$.t = _v$69);
|
|
698
|
+
_v$70 !== _p$.a && web.className(_el$72, _p$.a = _v$70);
|
|
604
699
|
return _p$;
|
|
605
700
|
}, {
|
|
606
701
|
e: void 0,
|
|
607
702
|
t: void 0,
|
|
608
703
|
a: void 0
|
|
609
704
|
});
|
|
610
|
-
web.effect(() => web.setProperty(_el$
|
|
705
|
+
web.effect(() => web.setProperty(_el$72, "value", query()));
|
|
611
706
|
web.runHydrationEvents();
|
|
612
|
-
return _el$
|
|
707
|
+
return _el$70;
|
|
613
708
|
})();
|
|
614
709
|
};
|
|
615
710
|
web.delegateEvents(["input", "click", "mousedown"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormFieldRenderer.cjs","sources":["../../src/components/FormFieldRenderer.tsx"],"sourcesContent":["/**\n * FormFieldRenderer - Individual form field component\n * Sprint 1: Form Foundation\n * Sprint 2: Conditional field visibility (showWhen)\n */\n\nimport { Component, Show, For, Switch, Match, Accessor, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { FormFieldParams } from '../types'\nimport { useConditionalField } from '../hooks/useConditionalField'\n\nexport interface FormFieldRendererProps {\n field: FormFieldParams\n value: any\n error?: string\n onChange: (value: any) => void\n disabled?: boolean\n /**\n * Form data accessor for conditional field visibility\n */\n formData?: Accessor<Record<string, any>>\n}\n\nexport const FormFieldRenderer: Component<FormFieldRendererProps> = (props) => {\n // Conditional visibility based on showWhen\n const { isVisible } = useConditionalField({\n condition: props.field.showWhen,\n formData: props.formData || (() => ({})),\n })\n\n const baseInputClass = () => `\n w-full px-3 py-2 border rounded-md\n focus:ring-2 focus:ring-blue-500 focus:border-blue-500\n disabled:bg-gray-100 disabled:cursor-not-allowed\n ${props.error\n ? 'border-red-500 focus:ring-red-500'\n : 'border-gray-300 dark:border-gray-600'}\n dark:bg-gray-700 dark:text-white\n `\n\n const fieldId = () => `field-${props.field.name}`\n const errorId = () => `${props.field.name}-error`\n\n return (\n <Show when={isVisible()}>\n <div class=\"space-y-1\">\n <Show when={props.field.label && props.field.type !== 'checkbox'}>\n <label\n for={fieldId()}\n class=\"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n >\n {props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </label>\n </Show>\n\n <Switch>\n {/* Text Input */}\n <Match when={props.field.type === 'text' || props.field.type === 'email' || props.field.type === 'password'}>\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Number Input */}\n <Match when={props.field.type === 'number'}>\n <input\n id={fieldId()}\n type=\"number\"\n name={props.field.name}\n value={props.value ?? ''}\n onInput={(e) => props.onChange(e.currentTarget.value === '' ? undefined : Number(e.currentTarget.value))}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.min}\n max={props.field.max}\n step={props.field.step}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Date Input */}\n <Match when={props.field.type === 'date'}>\n <input\n id={fieldId()}\n type=\"date\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.minDate}\n max={props.field.maxDate}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Textarea */}\n <Match when={props.field.type === 'textarea'}>\n <textarea\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n rows={props.field.rows || 4}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Select (single) */}\n <Match when={props.field.type === 'select' && !props.field.multiple}>\n <select\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n >\n <Show when={props.field.placeholder}>\n <option value=\"\" disabled>{props.field.placeholder}</option>\n </Show>\n <For each={props.field.options}>\n {(option) => (\n <option value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n )}\n </For>\n </select>\n </Match>\n\n {/* Checkbox */}\n <Match when={props.field.type === 'checkbox'}>\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n id={fieldId()}\n type=\"checkbox\"\n name={props.field.name}\n checked={props.value || false}\n onChange={(e) => props.onChange(e.currentTarget.checked)}\n disabled={props.disabled}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {props.field.checkboxLabel || props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </span>\n </label>\n </Match>\n\n {/* Multi-Select with chips */}\n <Match when={props.field.type === 'select' && props.field.multiple}>\n <MultiSelectField\n field={props.field}\n value={props.value || []}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Autocomplete with API fetch */}\n <Match when={props.field.type === 'autocomplete'}>\n <AutocompleteField\n field={props.field}\n value={props.value || ''}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Radio Group */}\n <Match when={props.field.type === 'radio'}>\n <div\n class=\"space-y-2\"\n role=\"radiogroup\"\n aria-labelledby={props.field.label ? `${fieldId()}-label` : undefined}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n >\n <For each={props.field.options}>\n {(option, index) => (\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={props.field.name}\n id={`${fieldId()}-${index()}`}\n value={option.value}\n checked={props.value === option.value}\n onChange={() => props.onChange(option.value)}\n disabled={props.disabled || option.disabled}\n class=\"w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {option.label}\n </span>\n </label>\n )}\n </For>\n </div>\n </Match>\n\n {/* Fallback for unknown field types — renders as text input with warning */}\n <Match when={true}>\n <input\n id={fieldId()}\n type=\"text\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder || `(${props.field.type})`}\n disabled={props.disabled}\n class={baseInputClass()}\n />\n <p class=\"text-xs text-amber-500 mt-0.5\">Unknown field type: {props.field.type}</p>\n </Match>\n </Switch>\n\n <Show when={props.field.helpText && !props.error}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">{props.field.helpText}</p>\n </Show>\n\n <Show when={props.error}>\n <p id={errorId()} role=\"alert\" class=\"text-xs text-red-600 dark:text-red-400\">\n {props.error}\n </p>\n </Show>\n </div>\n </Show>\n )\n}\n\n// ─── Multi-Select with Chips ─────────────────────────────────\n\nconst MultiSelectField: Component<{\n field: FormFieldParams\n value: string[]\n onChange: (value: string[]) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [open, setOpen] = createSignal(false)\n\n const toggle = (val: string) => {\n const current = props.value || []\n if (current.includes(val)) {\n props.onChange(current.filter((v) => v !== val))\n } else {\n props.onChange([...current, val])\n }\n }\n\n const removeChip = (val: string) => {\n props.onChange((props.value || []).filter((v) => v !== val))\n }\n\n const getLabel = (val: string) =>\n props.field.options?.find((o) => o.value === val)?.label || val\n\n return (\n <div class=\"relative\">\n {/* Selected chips */}\n <Show when={props.value.length > 0}>\n <div class=\"flex flex-wrap gap-1 mb-1\">\n <For each={props.value}>\n {(val) => (\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n {getLabel(val)}\n <button\n type=\"button\"\n onClick={() => removeChip(val)}\n class=\"hover:text-blue-900 dark:hover:text-blue-100\"\n aria-label={`Remove ${getLabel(val)}`}\n >\n ×\n </button>\n </span>\n )}\n </For>\n </div>\n </Show>\n\n {/* Trigger button */}\n <button\n type=\"button\"\n onClick={() => setOpen(!open())}\n disabled={props.disabled}\n class={`${props.baseClass} text-left flex items-center justify-between`}\n >\n <span class={props.value.length ? 'text-gray-900 dark:text-white' : 'text-gray-400'}>\n {props.value.length\n ? `${props.value.length} selected`\n : props.field.placeholder || 'Select...'}\n </span>\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {/* Dropdown */}\n <Show when={open()}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto\">\n <For each={props.field.options}>\n {(option) => (\n <label class=\"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm\">\n <input\n type=\"checkbox\"\n checked={(props.value || []).includes(option.value)}\n onChange={() => toggle(option.value)}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-gray-900 dark:text-white\">{option.label}</span>\n </label>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Autocomplete with API fetch ─────────────────────────────\n\nconst AutocompleteField: Component<{\n field: FormFieldParams\n value: string\n onChange: (value: string) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [query, setQuery] = createSignal('')\n const [suggestions, setSuggestions] = createSignal<Array<{ label: string; value: string }>>([])\n const [isOpen, setIsOpen] = createSignal(false)\n const [selectedLabel, setSelectedLabel] = createSignal('')\n let debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n const minChars = () => props.field.minChars ?? 2\n const debounceMs = () => props.field.debounceMs ?? 300\n\n const fetchSuggestions = async (q: string) => {\n if (!props.field.apiUrl || !props.field.searchParam) return\n\n try {\n const params = new URLSearchParams({ [props.field.searchParam]: q })\n if (props.field.extraParams) {\n for (const [k, v] of Object.entries(props.field.extraParams)) {\n params.set(k, v)\n }\n }\n const res = await fetch(`${props.field.apiUrl}?${params}`)\n if (!res.ok) return\n\n const data = await res.json()\n const items = Array.isArray(data) ? data : data.results || data.features || []\n const labelField = props.field.labelField || 'label'\n const valueField = props.field.valueField || 'value'\n\n setSuggestions(items.slice(0, 10).map((item: any) => ({\n label: item[labelField] || String(item),\n value: String(item[valueField] || item[labelField] || item),\n })))\n setIsOpen(true)\n } catch {\n setSuggestions([])\n }\n }\n\n const handleInput = (value: string) => {\n setQuery(value)\n setSelectedLabel('')\n props.onChange('')\n\n if (debounceTimer) clearTimeout(debounceTimer)\n if (value.length < minChars()) {\n setSuggestions([])\n setIsOpen(false)\n return\n }\n debounceTimer = setTimeout(() => fetchSuggestions(value), debounceMs())\n }\n\n const selectSuggestion = (item: { label: string; value: string }) => {\n props.onChange(item.value)\n setSelectedLabel(item.label)\n setQuery(item.label)\n setIsOpen(false)\n setSuggestions([])\n }\n\n onCleanup(() => { if (debounceTimer) clearTimeout(debounceTimer) })\n\n return (\n <div class=\"relative\">\n <input\n type=\"text\"\n value={query()}\n onInput={(e) => handleInput(e.currentTarget.value)}\n onFocus={() => { if (suggestions().length) setIsOpen(true) }}\n onBlur={() => setTimeout(() => setIsOpen(false), 200)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n class={props.baseClass}\n autocomplete=\"off\"\n />\n\n <Show when={isOpen() && suggestions().length > 0}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto\">\n <For each={suggestions()}>\n {(item) => (\n <button\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => selectSuggestion(item)}\n class=\"w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 text-gray-900 dark:text-white\"\n >\n {item.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n"],"names":["FormFieldRenderer","props","isVisible","useConditionalField","condition","field","showWhen","formData","baseInputClass","error","fieldId","name","errorId","_$createComponent","Show","when","children","_el$","_$getNextElement","_tmpl$13","_el$32","firstChild","_el$33","_co$8","_$getNextMarker","nextSibling","_el$34","_el$35","_co$9","_el$36","_el$37","_co$0","_el$38","_el$39","_co$1","_$insert","_$memo","label","type","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","required","_tmpl$","_$effect","_$setAttribute","Switch","Match","_el$8","_tmpl$3","$$input","e","onChange","currentTarget","value","_p$","_v$","_v$2","_v$3","_v$4","placeholder","_v$5","disabled","_v$6","_v$7","minLength","_v$8","maxLength","_v$9","pattern","_v$0","_v$1","undefined","_v$10","t","a","o","i","_$setProperty","n","s","h","r","d","l","u","_$className","_$runHydrationEvents","_el$9","_tmpl$4","Number","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","min","_v$17","max","_v$18","step","_v$19","_v$20","_v$21","_el$0","_tmpl$5","_v$22","_v$23","_v$24","_v$25","_v$26","minDate","_v$27","maxDate","_v$28","_v$29","_v$30","_el$1","_tmpl$6","_v$31","_v$32","_v$33","_v$34","_v$35","_v$36","rows","_v$37","_v$38","_v$39","_v$40","_v$41","multiple","_el$10","_tmpl$8","_el$12","_el$13","_co$3","_el$14","_el$15","_co$4","addEventListener","_el$11","_tmpl$7","For","each","options","option","_el$40","_tmpl$14","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","_el$16","_tmpl$9","_el$17","_el$18","_el$20","_el$21","_co$5","_el$22","_el$23","_co$6","checked","checkboxLabel","_v$49","_v$50","_v$51","_v$52","_v$53","MultiSelectField","baseClass","AutocompleteField","_el$24","_tmpl$0","index","_el$41","_tmpl$15","_el$42","_el$43","_v$62","_v$63","_v$64","_v$54","_v$55","_v$56","_el$25","_tmpl$1","_v$57","_v$58","_v$59","_v$60","_v$61","_el$26","_tmpl$10","_el$27","_el$28","_el$29","_co$7","helpText","_el$30","_tmpl$11","_el$31","_tmpl$12","open","setOpen","createSignal","toggle","val","current","includes","filter","v","removeChip","getLabel","find","_el$44","_tmpl$18","_el$49","_el$50","_co$10","_el$46","_el$47","_el$51","_el$52","_co$11","length","_el$45","_tmpl$16","_el$53","_tmpl$19","_el$55","_el$56","_co$12","_el$54","$$click","_c$","_el$48","_tmpl$17","_el$57","_tmpl$20","_el$58","_el$59","_v$65","_v$66","_v$67","query","setQuery","suggestions","setSuggestions","isOpen","setIsOpen","selectedLabel","setSelectedLabel","debounceTimer","minChars","debounceMs","fetchSuggestions","q","apiUrl","searchParam","params","URLSearchParams","extraParams","k","Object","entries","set","res","fetch","ok","data","json","items","Array","isArray","results","features","labelField","valueField","slice","map","item","String","handleInput","setTimeout","selectSuggestion","onCleanup","_el$60","_tmpl$21","_el$61","_el$63","_el$64","_co$13","_el$62","_el$65","_tmpl$22","$$mousedown","preventDefault","_v$68","_v$69","_v$70","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormFieldRenderer.cjs","sources":["../../src/components/FormFieldRenderer.tsx"],"sourcesContent":["/**\n * FormFieldRenderer - Individual form field component\n * Sprint 1: Form Foundation\n * Sprint 2: Conditional field visibility (showWhen)\n */\n\nimport { Component, Show, For, Switch, Match, Accessor, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { FormFieldParams } from '../types'\nimport { useConditionalField } from '../hooks/useConditionalField'\n\nexport interface FormFieldRendererProps {\n field: FormFieldParams\n value: any\n error?: string\n onChange: (value: any) => void\n disabled?: boolean\n /**\n * Form data accessor for conditional field visibility\n */\n formData?: Accessor<Record<string, any>>\n}\n\nexport const FormFieldRenderer: Component<FormFieldRendererProps> = (props) => {\n // Conditional visibility based on showWhen\n const { isVisible } = useConditionalField({\n condition: props.field.showWhen,\n formData: props.formData || (() => ({})),\n })\n\n const baseInputClass = () => `\n w-full px-3 py-2 border rounded-md\n focus:ring-2 focus:ring-blue-500 focus:border-blue-500\n disabled:bg-gray-100 disabled:cursor-not-allowed\n ${props.error\n ? 'border-red-500 focus:ring-red-500'\n : 'border-gray-300 dark:border-gray-600'}\n dark:bg-gray-700 dark:text-white\n `\n\n const fieldId = () => `field-${props.field.name}`\n const errorId = () => `${props.field.name}-error`\n\n return (\n <Show when={isVisible()}>\n <div class=\"space-y-1\">\n <Show when={props.field.label && props.field.type !== 'checkbox'}>\n <label\n for={fieldId()}\n class=\"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n >\n {props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </label>\n </Show>\n\n <Switch>\n {/* Text Input */}\n <Match when={props.field.type === 'text' || props.field.type === 'email' || props.field.type === 'password'}>\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Number Input */}\n <Match when={props.field.type === 'number'}>\n <input\n id={fieldId()}\n type=\"number\"\n name={props.field.name}\n value={props.value ?? ''}\n onInput={(e) => props.onChange(e.currentTarget.value === '' ? undefined : Number(e.currentTarget.value))}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.min}\n max={props.field.max}\n step={props.field.step}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Date Input */}\n <Match when={props.field.type === 'date'}>\n <input\n id={fieldId()}\n type=\"date\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.minDate}\n max={props.field.maxDate}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Textarea */}\n <Match when={props.field.type === 'textarea'}>\n <textarea\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n rows={props.field.rows || 4}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Select (single) */}\n <Match when={props.field.type === 'select' && !props.field.multiple}>\n <select\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n >\n <Show when={props.field.placeholder}>\n <option value=\"\" disabled>{props.field.placeholder}</option>\n </Show>\n <For each={props.field.options}>\n {(option) => (\n <option value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n )}\n </For>\n </select>\n </Match>\n\n {/* Checkbox */}\n <Match when={props.field.type === 'checkbox'}>\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n id={fieldId()}\n type=\"checkbox\"\n name={props.field.name}\n checked={props.value || false}\n onChange={(e) => props.onChange(e.currentTarget.checked)}\n disabled={props.disabled}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {props.field.checkboxLabel || props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </span>\n </label>\n </Match>\n\n {/* Multi-Select with chips */}\n <Match when={props.field.type === 'select' && props.field.multiple}>\n <MultiSelectField\n field={props.field}\n value={props.value || []}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Autocomplete with API fetch */}\n <Match when={props.field.type === 'autocomplete'}>\n <AutocompleteField\n field={props.field}\n value={props.value || ''}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Radio Group */}\n <Match when={props.field.type === 'radio'}>\n <div\n class=\"space-y-2\"\n role=\"radiogroup\"\n aria-labelledby={props.field.label ? `${fieldId()}-label` : undefined}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n >\n <For each={props.field.options}>\n {(option, index) => (\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={props.field.name}\n id={`${fieldId()}-${index()}`}\n value={option.value}\n checked={props.value === option.value}\n onChange={() => props.onChange(option.value)}\n disabled={props.disabled || option.disabled}\n class=\"w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {option.label}\n </span>\n </label>\n )}\n </For>\n </div>\n </Match>\n\n {/* Fallback for unknown field types — renders as text input with warning */}\n <Match when={true}>\n <input\n id={fieldId()}\n type=\"text\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder || `(${props.field.type})`}\n disabled={props.disabled}\n class={baseInputClass()}\n />\n <p class=\"text-xs text-amber-500 mt-0.5\">Unknown field type: {props.field.type}</p>\n </Match>\n </Switch>\n\n <Show when={props.field.helpText && !props.error}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">{props.field.helpText}</p>\n </Show>\n\n <Show when={props.error}>\n <p id={errorId()} role=\"alert\" class=\"text-xs text-red-600 dark:text-red-400\">\n {props.error}\n </p>\n </Show>\n </div>\n </Show>\n )\n}\n\n// ─── Multi-Select with Chips ─────────────────────────────────\n\nconst MultiSelectField: Component<{\n field: FormFieldParams\n value: string[]\n onChange: (value: string[]) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [open, setOpen] = createSignal(false)\n const [filter, setFilter] = createSignal('')\n\n const toggle = (val: string) => {\n const current = props.value || []\n if (current.includes(val)) {\n props.onChange(current.filter((v) => v !== val))\n } else {\n props.onChange([...current, val])\n }\n }\n\n const removeChip = (val: string) => {\n props.onChange((props.value || []).filter((v) => v !== val))\n }\n\n const getLabel = (val: string) =>\n props.field.options?.find((o) => o.value === val)?.label || val\n\n const filteredOptions = () => {\n const q = filter().toLowerCase()\n if (!q) return props.field.options || []\n return (props.field.options || []).filter(\n (o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q)\n )\n }\n\n return (\n <div class=\"relative\">\n {/* Selected chips */}\n <Show when={props.value.length > 0}>\n <div class=\"flex flex-wrap gap-1 mb-1\">\n <For each={props.value}>\n {(val) => (\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n {getLabel(val)}\n <button\n type=\"button\"\n onClick={() => removeChip(val)}\n class=\"hover:text-blue-900 dark:hover:text-blue-100\"\n aria-label={`Remove ${getLabel(val)}`}\n >\n ×\n </button>\n </span>\n )}\n </For>\n </div>\n </Show>\n\n {/* Trigger button */}\n <button\n type=\"button\"\n onClick={() => { setOpen(!open()); if (!open()) setFilter('') }}\n disabled={props.disabled}\n class={`${props.baseClass} text-left flex items-center justify-between`}\n >\n <span class={props.value.length ? 'text-gray-900 dark:text-white' : 'text-gray-400'}>\n {props.value.length\n ? `${props.value.length} selected`\n : props.field.placeholder || 'Select...'}\n </span>\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {/* Dropdown with filter */}\n <Show when={open()}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg overflow-hidden\">\n {/* Search filter */}\n <Show when={(props.field.options?.length || 0) > 10}>\n <div class=\"p-2 border-b border-gray-200 dark:border-gray-600\">\n <input\n type=\"text\"\n value={filter()}\n onInput={(e) => setFilter(e.currentTarget.value)}\n placeholder=\"Filter...\"\n class=\"w-full px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\"\n autofocus\n />\n </div>\n </Show>\n {/* Options list */}\n <div class=\"max-h-72 overflow-y-auto\">\n <For each={filteredOptions()}>\n {(option) => (\n <label class=\"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm\">\n <input\n type=\"checkbox\"\n checked={(props.value || []).includes(option.value)}\n onChange={() => toggle(option.value)}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-gray-900 dark:text-white\">{option.label}</span>\n </label>\n )}\n </For>\n <Show when={filteredOptions().length === 0}>\n <p class=\"px-3 py-2 text-sm text-gray-400\">No matches</p>\n </Show>\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Autocomplete with API fetch ─────────────────────────────\n\nconst AutocompleteField: Component<{\n field: FormFieldParams\n value: string | string[]\n onChange: (value: string | string[]) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [query, setQuery] = createSignal('')\n const [suggestions, setSuggestions] = createSignal<Array<{ label: string; value: string }>>([])\n const [isOpen, setIsOpen] = createSignal(false)\n const [selectedLabels, setSelectedLabels] = createSignal<Map<string, string>>(new Map())\n let debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n const isMultiple = () => props.field.multiple === true\n const selectedValues = () => isMultiple() ? (Array.isArray(props.value) ? props.value : []) : []\n const minChars = () => props.field.minChars ?? 2\n const debounceMs = () => props.field.debounceMs ?? 300\n\n const fetchSuggestions = async (q: string) => {\n if (!props.field.apiUrl || !props.field.searchParam) return\n\n try {\n const params = new URLSearchParams({ [props.field.searchParam]: q })\n if (props.field.extraParams) {\n for (const [k, v] of Object.entries(props.field.extraParams)) {\n params.set(k, v)\n }\n }\n const res = await fetch(`${props.field.apiUrl}?${params}`)\n if (!res.ok) return\n\n const data = await res.json()\n const items = Array.isArray(data) ? data : data.results || data.features || []\n const labelField = props.field.labelField || 'label'\n const valueField = props.field.valueField || 'value'\n\n setSuggestions(items.slice(0, 10).map((item: any) => ({\n label: item[labelField] || String(item),\n value: String(item[valueField] || item[labelField] || item),\n })))\n setIsOpen(true)\n } catch {\n setSuggestions([])\n }\n }\n\n const handleInput = (value: string) => {\n setQuery(value)\n if (!isMultiple()) {\n props.onChange('')\n }\n\n if (debounceTimer) clearTimeout(debounceTimer)\n if (value.length < minChars()) {\n setSuggestions([])\n setIsOpen(false)\n return\n }\n debounceTimer = setTimeout(() => fetchSuggestions(value), debounceMs())\n }\n\n const selectSuggestion = (item: { label: string; value: string }) => {\n if (isMultiple()) {\n const current = selectedValues()\n if (!current.includes(item.value)) {\n props.onChange([...current, item.value])\n setSelectedLabels((prev) => new Map(prev).set(item.value, item.label))\n }\n setQuery('')\n setSuggestions([])\n setIsOpen(false)\n } else {\n props.onChange(item.value)\n setSelectedLabels((prev) => new Map(prev).set(item.value, item.label))\n setQuery(item.label)\n setIsOpen(false)\n setSuggestions([])\n }\n }\n\n const removeChip = (val: string) => {\n props.onChange(selectedValues().filter((v) => v !== val))\n setSelectedLabels((prev) => { const m = new Map(prev); m.delete(val); return m })\n }\n\n const getLabel = (val: string) => selectedLabels().get(val) || val\n\n onCleanup(() => { if (debounceTimer) clearTimeout(debounceTimer) })\n\n return (\n <div class=\"relative\">\n {/* Multi chips */}\n <Show when={isMultiple() && selectedValues().length > 0}>\n <div class=\"flex flex-wrap gap-1 mb-1\">\n <For each={selectedValues()}>\n {(val) => (\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n {getLabel(val)}\n <button\n type=\"button\"\n onClick={() => removeChip(val)}\n class=\"hover:text-blue-900 dark:hover:text-blue-100\"\n aria-label={`Remove ${getLabel(val)}`}\n >\n ×\n </button>\n </span>\n )}\n </For>\n </div>\n </Show>\n\n <input\n type=\"text\"\n value={query()}\n onInput={(e) => handleInput(e.currentTarget.value)}\n onFocus={() => { if (suggestions().length) setIsOpen(true) }}\n onBlur={() => setTimeout(() => setIsOpen(false), 200)}\n placeholder={isMultiple() && selectedValues().length\n ? 'Add more...'\n : props.field.placeholder}\n disabled={props.disabled}\n class={props.baseClass}\n autocomplete=\"off\"\n />\n\n <Show when={isOpen() && suggestions().length > 0}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-72 overflow-y-auto\">\n <For each={suggestions()}>\n {(item) => {\n const isSelected = () => isMultiple() && selectedValues().includes(item.value)\n return (\n <button\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => selectSuggestion(item)}\n class={`w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 ${\n isSelected() ? 'text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10' : 'text-gray-900 dark:text-white'\n }`}\n disabled={isSelected()}\n >\n {item.label}\n <Show when={isSelected()}>\n <span class=\"ml-2 text-xs\">✓</span>\n </Show>\n </button>\n )\n }}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n"],"names":["FormFieldRenderer","props","isVisible","useConditionalField","condition","field","showWhen","formData","baseInputClass","error","fieldId","name","errorId","_$createComponent","Show","when","children","_el$","_$getNextElement","_tmpl$13","_el$32","firstChild","_el$33","_co$8","_$getNextMarker","nextSibling","_el$34","_el$35","_co$9","_el$36","_el$37","_co$0","_el$38","_el$39","_co$1","_$insert","_$memo","label","type","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","required","_tmpl$","_$effect","_$setAttribute","Switch","Match","_el$8","_tmpl$3","$$input","e","onChange","currentTarget","value","_p$","_v$","_v$2","_v$3","_v$4","placeholder","_v$5","disabled","_v$6","_v$7","minLength","_v$8","maxLength","_v$9","pattern","_v$0","_v$1","undefined","_v$10","t","a","o","i","_$setProperty","n","s","h","r","d","l","u","_$className","_$runHydrationEvents","_el$9","_tmpl$4","Number","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","min","_v$17","max","_v$18","step","_v$19","_v$20","_v$21","_el$0","_tmpl$5","_v$22","_v$23","_v$24","_v$25","_v$26","minDate","_v$27","maxDate","_v$28","_v$29","_v$30","_el$1","_tmpl$6","_v$31","_v$32","_v$33","_v$34","_v$35","_v$36","rows","_v$37","_v$38","_v$39","_v$40","_v$41","multiple","_el$10","_tmpl$8","_el$12","_el$13","_co$3","_el$14","_el$15","_co$4","addEventListener","_el$11","_tmpl$7","For","each","options","option","_el$40","_tmpl$14","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","_el$16","_tmpl$9","_el$17","_el$18","_el$20","_el$21","_co$5","_el$22","_el$23","_co$6","checked","checkboxLabel","_v$49","_v$50","_v$51","_v$52","_v$53","MultiSelectField","baseClass","AutocompleteField","_el$24","_tmpl$0","index","_el$41","_tmpl$15","_el$42","_el$43","_v$62","_v$63","_v$64","_v$54","_v$55","_v$56","_el$25","_tmpl$1","_v$57","_v$58","_v$59","_v$60","_v$61","_el$26","_tmpl$10","_el$27","_el$28","_el$29","_co$7","helpText","_el$30","_tmpl$11","_el$31","_tmpl$12","open","setOpen","createSignal","filter","setFilter","toggle","val","current","includes","v","removeChip","getLabel","find","filteredOptions","q","toLowerCase","_el$44","_tmpl$20","_el$59","_el$60","_co$13","_el$46","_el$47","_el$61","_el$62","_co$14","length","_el$45","_tmpl$16","_el$63","_tmpl$21","_el$65","_el$66","_co$15","_el$64","$$click","_c$","_el$48","_tmpl$19","_el$57","_el$58","_co$12","_el$51","_el$53","_el$54","_co$10","_el$55","_el$56","_co$11","_el$49","_tmpl$17","_el$50","_el$67","_tmpl$22","_el$68","_el$69","_tmpl$18","_v$65","_v$66","_v$67","query","setQuery","suggestions","setSuggestions","isOpen","setIsOpen","selectedLabels","setSelectedLabels","Map","debounceTimer","isMultiple","selectedValues","Array","isArray","minChars","debounceMs","fetchSuggestions","apiUrl","searchParam","params","URLSearchParams","extraParams","k","Object","entries","set","res","fetch","ok","data","json","items","results","features","labelField","valueField","slice","map","item","String","handleInput","setTimeout","selectSuggestion","prev","m","delete","get","onCleanup","_el$70","_tmpl$24","_el$74","_el$75","_co$16","_el$72","_el$76","_el$77","_co$17","_el$71","_el$78","_el$80","_el$81","_co$18","_el$79","_el$73","_tmpl$23","isSelected","_el$82","_tmpl$26","_el$84","_el$85","_co$19","_el$86","_el$87","_co$20","$$mousedown","preventDefault","_tmpl$25","_v$71","_v$72","_v$68","_v$69","_v$70","_$delegateEvents"],"mappings":"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"}
|