shadcn-zod-formkit 3.8.1 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +114 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +36 -17
- package/dist/index.d.ts +36 -17
- package/dist/index.mjs +114 -45
- package/dist/index.mjs.map +1 -1
- package/dist/shadcn-zod-formkit-3.9.0.tgz +0 -0
- package/package.json +1 -1
- package/dist/shadcn-zod-formkit-3.8.1.tgz +0 -0
package/dist/index.cjs
CHANGED
|
@@ -10025,7 +10025,9 @@ var letter = (l, isUpper, handleKey) => ({
|
|
|
10025
10025
|
|
|
10026
10026
|
// src/components/custom/keyboard/keyboard-base.tsx
|
|
10027
10027
|
var BaseKeyboard = class {
|
|
10028
|
-
constructor() {
|
|
10028
|
+
constructor(input, children) {
|
|
10029
|
+
this.input = input;
|
|
10030
|
+
this.children = children;
|
|
10029
10031
|
}
|
|
10030
10032
|
};
|
|
10031
10033
|
var KeyboardBuilder = ({
|
|
@@ -10117,25 +10119,58 @@ var KeyboardBuilder = ({
|
|
|
10117
10119
|
};
|
|
10118
10120
|
|
|
10119
10121
|
// src/components/custom/keyboard/keyboard-types.ts
|
|
10120
|
-
var KeyboardTypes = /* @__PURE__ */ ((
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
-
|
|
10124
|
-
return
|
|
10122
|
+
var KeyboardTypes = /* @__PURE__ */ ((KeyboardTypes3) => {
|
|
10123
|
+
KeyboardTypes3["QWERTY"] = "qwerty";
|
|
10124
|
+
KeyboardTypes3["NUMBER"] = "number";
|
|
10125
|
+
KeyboardTypes3["QWERTY_NOT_CHARS"] = "qwerty_not_chars";
|
|
10126
|
+
return KeyboardTypes3;
|
|
10125
10127
|
})(KeyboardTypes || {});
|
|
10126
10128
|
|
|
10127
10129
|
// src/components/custom/keyboard/providers/keyboard.store.ts
|
|
10128
10130
|
var useKeyboardStore = zustand.create((set, get) => ({
|
|
10131
|
+
isInputRequired: false,
|
|
10129
10132
|
activeInput: null,
|
|
10130
10133
|
inputs: {},
|
|
10131
10134
|
type: "qwerty" /* QWERTY */,
|
|
10132
10135
|
currentInputField: null,
|
|
10136
|
+
children: void 0,
|
|
10137
|
+
isOpen: false,
|
|
10138
|
+
isOpenDynamic: false,
|
|
10139
|
+
value: "",
|
|
10140
|
+
onEnter: void 0,
|
|
10141
|
+
setChildren(children) {
|
|
10142
|
+
set({ children });
|
|
10143
|
+
},
|
|
10144
|
+
setOnEnter(onEnter) {
|
|
10145
|
+
set({ onEnter });
|
|
10146
|
+
},
|
|
10133
10147
|
setCurrentInputField(inputField) {
|
|
10134
|
-
set({ currentInputField: inputField });
|
|
10148
|
+
set({ currentInputField: inputField, isInputRequired: true });
|
|
10135
10149
|
},
|
|
10136
|
-
isOpen: false,
|
|
10137
10150
|
setIsOpen(open) {
|
|
10138
|
-
set({
|
|
10151
|
+
if (!open) set({ value: "" });
|
|
10152
|
+
set({ isOpen: open ?? !get().isOpen, children: void 0 });
|
|
10153
|
+
if (!get().isOpen) {
|
|
10154
|
+
set({
|
|
10155
|
+
children: void 0,
|
|
10156
|
+
value: "",
|
|
10157
|
+
currentInputField: null,
|
|
10158
|
+
isInputRequired: false,
|
|
10159
|
+
onEnter: void 0
|
|
10160
|
+
});
|
|
10161
|
+
}
|
|
10162
|
+
},
|
|
10163
|
+
setIsOpenDynamic(open) {
|
|
10164
|
+
if (!open) set({ value: "" });
|
|
10165
|
+
set({ isOpenDynamic: open ?? !get().isOpenDynamic });
|
|
10166
|
+
if (!get().isOpenDynamic) {
|
|
10167
|
+
set({
|
|
10168
|
+
children: void 0,
|
|
10169
|
+
value: "",
|
|
10170
|
+
currentInputField: null,
|
|
10171
|
+
isInputRequired: false
|
|
10172
|
+
});
|
|
10173
|
+
}
|
|
10139
10174
|
},
|
|
10140
10175
|
registerInput: (id, initialValue = "") => set((state) => ({
|
|
10141
10176
|
inputs: {
|
|
@@ -10166,6 +10201,12 @@ var useKeyboardStore = zustand.create((set, get) => ({
|
|
|
10166
10201
|
// };
|
|
10167
10202
|
// }),
|
|
10168
10203
|
write: (char) => set((state) => {
|
|
10204
|
+
if (!state.isInputRequired) {
|
|
10205
|
+
const newValue = get().value + char;
|
|
10206
|
+
set({ value: newValue });
|
|
10207
|
+
state.value = newValue;
|
|
10208
|
+
return state;
|
|
10209
|
+
}
|
|
10169
10210
|
let currentInputField = state.currentInputField;
|
|
10170
10211
|
if (currentInputField && currentInputField.field) {
|
|
10171
10212
|
currentInputField.field.value += char;
|
|
@@ -10183,6 +10224,10 @@ var useKeyboardStore = zustand.create((set, get) => ({
|
|
|
10183
10224
|
};
|
|
10184
10225
|
}),
|
|
10185
10226
|
backspace: () => set((state) => {
|
|
10227
|
+
if (!state.isInputRequired) {
|
|
10228
|
+
set({ value: state.value.slice(0, -1) });
|
|
10229
|
+
state.value = state.value.slice(0, -1);
|
|
10230
|
+
}
|
|
10186
10231
|
let currentInputField = state.currentInputField;
|
|
10187
10232
|
if (currentInputField && currentInputField.field) {
|
|
10188
10233
|
const newValue = currentInputField.field.value.slice(0, -1);
|
|
@@ -10201,6 +10246,10 @@ var useKeyboardStore = zustand.create((set, get) => ({
|
|
|
10201
10246
|
};
|
|
10202
10247
|
}),
|
|
10203
10248
|
clear: () => set((state) => {
|
|
10249
|
+
if (!state.isInputRequired) {
|
|
10250
|
+
set({ value: "" });
|
|
10251
|
+
state.value = "";
|
|
10252
|
+
}
|
|
10204
10253
|
if (!state.activeInput) return state;
|
|
10205
10254
|
return {
|
|
10206
10255
|
inputs: {
|
|
@@ -10241,23 +10290,26 @@ var TextInputType = /* @__PURE__ */ ((TextInputType3) => {
|
|
|
10241
10290
|
return TextInputType3;
|
|
10242
10291
|
})(TextInputType || {});
|
|
10243
10292
|
var QwertyKeyboard = class extends BaseKeyboard {
|
|
10244
|
-
render(
|
|
10245
|
-
|
|
10293
|
+
render() {
|
|
10294
|
+
const { input, children } = this;
|
|
10295
|
+
return /* @__PURE__ */ jsxRuntime.jsx(KeyboardQwerty, { children, input });
|
|
10246
10296
|
}
|
|
10247
10297
|
};
|
|
10248
|
-
var KeyboardQwerty = ({ onKeyPress, onEnter, keyFontSize: keyFontSize3 = "text-2xl", onDelete, input }) => {
|
|
10298
|
+
var KeyboardQwerty = ({ onKeyPress, onEnter, keyFontSize: keyFontSize3 = "text-2xl", onDelete, input, children }) => {
|
|
10249
10299
|
const [shiftMode, setShiftMode] = React3.useState("off");
|
|
10250
10300
|
const [mode, setMode] = React3.useState("letters");
|
|
10251
10301
|
const lastShiftPress = React3.useRef(0);
|
|
10252
|
-
const { currentInputField, write, setIsOpen, backspace } = useKeyboardStore();
|
|
10302
|
+
const { currentInputField, write, setIsOpen, backspace, isInputRequired } = useKeyboardStore();
|
|
10303
|
+
const storeonEnter = useKeyboardStore((state) => state.onEnter);
|
|
10253
10304
|
const isUpper = shiftMode !== "off";
|
|
10254
10305
|
React3.useEffect(() => {
|
|
10255
10306
|
const handleKeyDown = (e) => {
|
|
10256
|
-
if (!currentInputField) return;
|
|
10307
|
+
if (isInputRequired && !currentInputField) return;
|
|
10257
10308
|
const key = e.key;
|
|
10258
10309
|
if (key === "Enter") {
|
|
10259
10310
|
e.preventDefault();
|
|
10260
10311
|
onEnter?.();
|
|
10312
|
+
storeonEnter?.();
|
|
10261
10313
|
return;
|
|
10262
10314
|
}
|
|
10263
10315
|
if (key === "Backspace") {
|
|
@@ -10316,17 +10368,25 @@ var KeyboardQwerty = ({ onKeyPress, onEnter, keyFontSize: keyFontSize3 = "text-2
|
|
|
10316
10368
|
};
|
|
10317
10369
|
const shiftLabel = shiftMode === "caps" ? lucideReact.ArrowBigUpDash : lucideReact.ArrowBigUp;
|
|
10318
10370
|
const shiftActive = shiftMode !== "off";
|
|
10319
|
-
const textField = /* @__PURE__ */ jsxRuntime.
|
|
10371
|
+
const textField = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10372
|
+
children && children,
|
|
10373
|
+
!children && currentInputField && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-3 h-full min-h-16 flex-1 flex flex-row text-2xl font-bold justify-center text-center items-center gap-2 rounded-xl border-2 transition-all outline-none border-amber-400 bg-amber-50 ", children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: currentInputField.input && currentInputField.input.keyboardType == "password" /* PASSWORD */ ? "\u2022".repeat(currentInputField.field?.value.toString().length) : currentInputField.field?.value || "" }) })
|
|
10374
|
+
] });
|
|
10375
|
+
const btnDelete = { label: "delete", icons: [lucideReact.DeleteIcon], onClick: () => {
|
|
10376
|
+
backspace();
|
|
10377
|
+
}, className: "bg-red-200 text-xs" };
|
|
10320
10378
|
if (mode === "symbols") {
|
|
10321
10379
|
const keys = [
|
|
10322
10380
|
["!", "@", "#", "$", "%", "^", "&", "*", "(", ")"],
|
|
10323
10381
|
["~", "`", "|", "\\", "/", "{", "}", "[", "]"],
|
|
10324
10382
|
["+", "=", "<", ">", "?", "'", '"', ":", ";"]
|
|
10325
10383
|
].map(
|
|
10326
|
-
(row) => row.map(
|
|
10327
|
-
|
|
10328
|
-
|
|
10329
|
-
|
|
10384
|
+
(row, index) => row.map(
|
|
10385
|
+
(k, idx) => {
|
|
10386
|
+
if (index == 0 && idx == row.length - 1) return btnDelete;
|
|
10387
|
+
return { label: k, onClick: () => handleKey(k) };
|
|
10388
|
+
}
|
|
10389
|
+
)
|
|
10330
10390
|
);
|
|
10331
10391
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full flex flex-col", children: [
|
|
10332
10392
|
textField,
|
|
@@ -10407,14 +10467,14 @@ var keyboardMap = {
|
|
|
10407
10467
|
["number" /* NUMBER */]: QwertyKeyboard
|
|
10408
10468
|
};
|
|
10409
10469
|
var KeyboardFactory = class {
|
|
10410
|
-
static create(typeKeyboard, input) {
|
|
10470
|
+
static create(typeKeyboard, input, children) {
|
|
10411
10471
|
const inputKbType = input?.keyboardType;
|
|
10412
10472
|
let keyboardType = typeKeyboard ?? "qwerty" /* QWERTY */;
|
|
10413
10473
|
if (inputKbType) {
|
|
10414
10474
|
if (inputKbType == "number" /* NUMBER */) keyboardType = "number" /* NUMBER */;
|
|
10415
10475
|
}
|
|
10416
10476
|
const keyboardClass = keyboardMap[keyboardType] ?? QwertyKeyboard;
|
|
10417
|
-
const instance = new keyboardClass();
|
|
10477
|
+
const instance = new keyboardClass(input, children);
|
|
10418
10478
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: instance.render() });
|
|
10419
10479
|
}
|
|
10420
10480
|
};
|
|
@@ -13862,8 +13922,6 @@ var CustomInputGroup = ({
|
|
|
13862
13922
|
value: field?.value ?? value ?? "",
|
|
13863
13923
|
onChange: (e) => {
|
|
13864
13924
|
let value2 = e.target.value;
|
|
13865
|
-
console.log("\u{1F680} ~ CustomInputGroup ~ value:", value2);
|
|
13866
|
-
console.log("Valor raw del input:", value2);
|
|
13867
13925
|
if (isNumberField) {
|
|
13868
13926
|
const numConfig = input.inputNumberConfig;
|
|
13869
13927
|
const cleanValue = value2.replace(/[^\d.-]/g, "");
|
|
@@ -16863,21 +16921,6 @@ var FormFieldsGrid = ({
|
|
|
16863
16921
|
);
|
|
16864
16922
|
}) });
|
|
16865
16923
|
};
|
|
16866
|
-
var CustomSheet = ({ title = "", children, childrenHeader, isOpen, className, side = "bottom" }) => {
|
|
16867
|
-
const setIsOpen = useKeyboardStore((state) => state.setIsOpen);
|
|
16868
|
-
const storeIsOpen = useKeyboardStore((state) => state.isOpen);
|
|
16869
|
-
const controlledIsOpen = typeof isOpen === "boolean" ? isOpen : storeIsOpen;
|
|
16870
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: controlledIsOpen, onOpenChange: setIsOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side, children: [
|
|
16871
|
-
/* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { children: [
|
|
16872
|
-
/* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: title }),
|
|
16873
|
-
/* @__PURE__ */ jsxRuntime.jsxs(SheetDescription, { children: [
|
|
16874
|
-
childrenHeader,
|
|
16875
|
-
children
|
|
16876
|
-
] })
|
|
16877
|
-
] }),
|
|
16878
|
-
/* @__PURE__ */ jsxRuntime.jsx(SheetFooter, {})
|
|
16879
|
-
] }) });
|
|
16880
|
-
};
|
|
16881
16924
|
var DynamicDialog = ({
|
|
16882
16925
|
trigger,
|
|
16883
16926
|
title = "Are you absolutely sure?",
|
|
@@ -17024,6 +17067,22 @@ var DynamicDialog = ({
|
|
|
17024
17067
|
)
|
|
17025
17068
|
] });
|
|
17026
17069
|
};
|
|
17070
|
+
var DynamicSheetKeyboard = ({ currentInputField, children, input }) => {
|
|
17071
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17072
|
+
" ",
|
|
17073
|
+
KeyboardFactory.create(currentInputField?.input.keyboard ?? "qwerty" /* QWERTY */, input, children),
|
|
17074
|
+
" "
|
|
17075
|
+
] });
|
|
17076
|
+
const [container, setContainer] = React3.useState(content);
|
|
17077
|
+
React3.useEffect(() => {
|
|
17078
|
+
setContainer(/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17079
|
+
" ",
|
|
17080
|
+
KeyboardFactory.create(currentInputField?.input.keyboard ?? "qwerty" /* QWERTY */, input, children),
|
|
17081
|
+
" "
|
|
17082
|
+
] }));
|
|
17083
|
+
}, [children]);
|
|
17084
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CustomSheet, { children: container });
|
|
17085
|
+
};
|
|
17027
17086
|
var DynamicForm = ({
|
|
17028
17087
|
formTitle,
|
|
17029
17088
|
formSubTitle,
|
|
@@ -17113,12 +17172,7 @@ var DynamicForm = ({
|
|
|
17113
17172
|
}
|
|
17114
17173
|
);
|
|
17115
17174
|
const formBody = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17116
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17117
|
-
CustomSheet,
|
|
17118
|
-
{
|
|
17119
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: KeyboardFactory.create(currentInputField?.input.keyboard ?? "qwerty" /* QWERTY */) })
|
|
17120
|
-
}
|
|
17121
|
-
),
|
|
17175
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicSheetKeyboard, { currentInputField }),
|
|
17122
17176
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full grid grid-cols-1", children: [
|
|
17123
17177
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17124
17178
|
FormFieldsGrid,
|
|
@@ -17444,6 +17498,21 @@ var InputList = ({ handleAddInput, inputsTypes }) => {
|
|
|
17444
17498
|
);
|
|
17445
17499
|
}) });
|
|
17446
17500
|
};
|
|
17501
|
+
var CustomSheet = ({ title = "", children, childrenHeader, isOpen, className, side = "bottom" }) => {
|
|
17502
|
+
const setIsOpen = useKeyboardStore((state) => state.setIsOpen);
|
|
17503
|
+
const storeIsOpen = useKeyboardStore((state) => state.isOpen);
|
|
17504
|
+
const controlledIsOpen = typeof isOpen === "boolean" ? isOpen : storeIsOpen;
|
|
17505
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: controlledIsOpen, onOpenChange: setIsOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side, className, children: [
|
|
17506
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { children: [
|
|
17507
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: title }),
|
|
17508
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SheetDescription, { children: [
|
|
17509
|
+
childrenHeader,
|
|
17510
|
+
children
|
|
17511
|
+
] })
|
|
17512
|
+
] }),
|
|
17513
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetFooter, {})
|
|
17514
|
+
] }) });
|
|
17515
|
+
};
|
|
17447
17516
|
var GenericFilter = ({
|
|
17448
17517
|
filters = [],
|
|
17449
17518
|
pagination,
|
|
@@ -17718,6 +17787,7 @@ exports.DialogTitle = DialogTitle;
|
|
|
17718
17787
|
exports.DialogTrigger = DialogTrigger;
|
|
17719
17788
|
exports.DynamicForm = DynamicForm;
|
|
17720
17789
|
exports.DynamicFormExample = DynamicFormExample;
|
|
17790
|
+
exports.DynamicSheetKeyboard = DynamicSheetKeyboard;
|
|
17721
17791
|
exports.Field = Field;
|
|
17722
17792
|
exports.FieldButtonGroup = FieldButtonGroup;
|
|
17723
17793
|
exports.FieldContent = FieldContent;
|