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 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__ */ ((KeyboardTypes2) => {
10121
- KeyboardTypes2["QWERTY"] = "qwerty";
10122
- KeyboardTypes2["NUMBER"] = "number";
10123
- KeyboardTypes2["QWERTY_NOT_CHARS"] = "qwerty_not_chars";
10124
- return KeyboardTypes2;
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({ isOpen: open ?? !get().isOpen });
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(input) {
10245
- return /* @__PURE__ */ jsxRuntime.jsx(KeyboardQwerty, {});
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.jsx(jsxRuntime.Fragment, { 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 || "" }) }) });
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((k) => ({
10327
- label: k,
10328
- onClick: () => handleKey(k)
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;