fix
This commit is contained in:
parent
42eace5e4f
commit
874c9f8fa1
|
|
@ -108,12 +108,12 @@ export const Field: FC<FieldProp> = (arg) => {
|
||||||
typeof field.hidden === "function"
|
typeof field.hidden === "function"
|
||||||
? field.hidden()
|
? field.hidden()
|
||||||
: typeof field.hidden === "string"
|
: typeof field.hidden === "string"
|
||||||
? field.hidden === "n"
|
? field.hidden === "n"
|
||||||
? false
|
? false
|
||||||
: true
|
: true
|
||||||
: typeof field.hidden === "boolean"
|
: typeof field.hidden === "boolean"
|
||||||
? field.hidden
|
? field.hidden
|
||||||
: true;
|
: true;
|
||||||
if (!show) return <></>;
|
if (!show) return <></>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ export const FieldInput: FC<{
|
||||||
const errors = fm.error.get(name);
|
const errors = fm.error.get(name);
|
||||||
let type_field: any = typeof arg.type === "function" ? arg.type() : arg.type; // tipe field
|
let type_field: any = typeof arg.type === "function" ? arg.type() : arg.type; // tipe field
|
||||||
|
|
||||||
|
|
||||||
const disabled =
|
const disabled =
|
||||||
typeof field.disabled === "function" ? field.disabled() : field.disabled;
|
typeof field.disabled === "function" ? field.disabled() : field.disabled;
|
||||||
let custom = <></>;
|
let custom = <></>;
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,8 @@ export type PropTypeInput = {
|
||||||
placeholder?: string;
|
placeholder?: string;
|
||||||
onFocus?: (e: FocusEvent<HTMLDivElement>) => void;
|
onFocus?: (e: FocusEvent<HTMLDivElement>) => void;
|
||||||
onBlur?: (e: FocusEvent<HTMLDivElement>) => void;
|
onBlur?: (e: FocusEvent<HTMLDivElement>) => void;
|
||||||
onChange?: (val: any) => void;
|
|
||||||
model_upload?: "upload" | "import";
|
model_upload?: "upload" | "import";
|
||||||
|
onChange?: (value: any) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
const parse = parser.exportAsFunctionAny("en-US");
|
const parse = parser.exportAsFunctionAny("en-US");
|
||||||
|
|
@ -102,10 +102,9 @@ export const FieldTypeInput: FC<{
|
||||||
|
|
||||||
const renderOnChange = () => {
|
const renderOnChange = () => {
|
||||||
input.render();
|
input.render();
|
||||||
// if (field.on_change) {
|
if (prop.onChange) {
|
||||||
// field.on_change({ value: fm.data[field.name], name: field.name, fm });
|
prop.onChange(fm.data[field.name]);
|
||||||
// }
|
}
|
||||||
|
|
||||||
clearTimeout(input.change_timeout);
|
clearTimeout(input.change_timeout);
|
||||||
input.change_timeout = setTimeout(fm.render, 300);
|
input.change_timeout = setTimeout(fm.render, 300);
|
||||||
};
|
};
|
||||||
|
|
@ -178,25 +177,9 @@ export const FieldTypeInput: FC<{
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
case "upload":
|
case "upload":
|
||||||
return (
|
return <FieldUpload arg={arg} field={field} fm={fm} prop={prop} />;
|
||||||
<FieldUpload
|
|
||||||
arg={arg}
|
|
||||||
field={field}
|
|
||||||
fm={fm}
|
|
||||||
prop={prop}
|
|
||||||
on_change={arg.on_change}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
case "import":
|
case "import":
|
||||||
return (
|
return <FieldUpload arg={arg} field={field} fm={fm} prop={prop} />;
|
||||||
<FieldUpload
|
|
||||||
arg={arg}
|
|
||||||
field={field}
|
|
||||||
fm={fm}
|
|
||||||
prop={prop}
|
|
||||||
on_change={arg.on_change}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
case "money":
|
case "money":
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
@ -223,10 +206,6 @@ export const FieldTypeInput: FC<{
|
||||||
? new Date(value?.startDate)
|
? new Date(value?.startDate)
|
||||||
: null;
|
: null;
|
||||||
renderOnChange();
|
renderOnChange();
|
||||||
|
|
||||||
if (prop.onChange) {
|
|
||||||
prop.onChange(fm.data[field.name]);
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
@ -255,10 +234,6 @@ export const FieldTypeInput: FC<{
|
||||||
onChange={(ev) => {
|
onChange={(ev) => {
|
||||||
fm.data[field.name] = ev.currentTarget.value.replace(/\D/g, "");
|
fm.data[field.name] = ev.currentTarget.value.replace(/\D/g, "");
|
||||||
renderOnChange();
|
renderOnChange();
|
||||||
|
|
||||||
if (prop.onChange) {
|
|
||||||
prop.onChange(fm.data[field.name]);
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
inputMode="decimal"
|
inputMode="decimal"
|
||||||
value={format(value, {
|
value={format(value, {
|
||||||
|
|
@ -369,9 +344,6 @@ export const FieldTypeInput: FC<{
|
||||||
onChange={async (ev) => {
|
onChange={async (ev) => {
|
||||||
fm.data[field.name] = ev.currentTarget.value;
|
fm.data[field.name] = ev.currentTarget.value;
|
||||||
renderOnChange();
|
renderOnChange();
|
||||||
if (prop.onChange) {
|
|
||||||
await prop.onChange(fm.data[field.name]);
|
|
||||||
}
|
|
||||||
|
|
||||||
clearTimeout(internal.search_timeout);
|
clearTimeout(internal.search_timeout);
|
||||||
internal.search_timeout = setTimeout(() => {
|
internal.search_timeout = setTimeout(() => {
|
||||||
|
|
@ -403,10 +375,6 @@ export const FieldTypeInput: FC<{
|
||||||
fm.data[field.name] = parseInt(fm.data[field.name]);
|
fm.data[field.name] = parseInt(fm.data[field.name]);
|
||||||
}
|
}
|
||||||
renderOnChange();
|
renderOnChange();
|
||||||
|
|
||||||
if (prop.onChange) {
|
|
||||||
prop.onChange(fm.data[field.name]);
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
placeholder={prop.placeholder || arg.placeholder || ""}
|
placeholder={prop.placeholder || arg.placeholder || ""}
|
||||||
value={value}
|
value={value}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import { useLocal } from "lib/utils/use-local";
|
||||||
import { FC, useEffect } from "react";
|
import { FC, useEffect } from "react";
|
||||||
import { FMLocal, FieldLocal, FieldProp } from "../../typings";
|
import { FMLocal, FieldLocal, FieldProp } from "../../typings";
|
||||||
import { PropTypeInput } from "./TypeInput";
|
import { PropTypeInput } from "./TypeInput";
|
||||||
import { isEmptyString } from "lib/utils/is-empty-string";
|
|
||||||
export const FieldMoney: FC<{
|
export const FieldMoney: FC<{
|
||||||
field: FieldLocal;
|
field: FieldLocal;
|
||||||
fm: FMLocal;
|
fm: FMLocal;
|
||||||
|
|
@ -42,8 +41,11 @@ export const FieldMoney: FC<{
|
||||||
formatCurrency(rawValue)
|
formatCurrency(rawValue)
|
||||||
);
|
);
|
||||||
fm.render();
|
fm.render();
|
||||||
if (field.on_change) {
|
input.value = formatCurrency(fm.data[field.name]);
|
||||||
field.on_change({
|
input.render();
|
||||||
|
|
||||||
|
if (arg.on_change) {
|
||||||
|
arg.on_change({
|
||||||
value: convertionCurrencyNumber(
|
value: convertionCurrencyNumber(
|
||||||
formatCurrency(fm.data[field.name])
|
formatCurrency(fm.data[field.name])
|
||||||
),
|
),
|
||||||
|
|
@ -51,8 +53,6 @@ export const FieldMoney: FC<{
|
||||||
fm,
|
fm,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
input.value = formatCurrency(fm.data[field.name]);
|
|
||||||
input.render();
|
|
||||||
} else {
|
} else {
|
||||||
input.value = rawValue;
|
input.value = rawValue;
|
||||||
input.render();
|
input.render();
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
|
import { REGEXP_ONLY_DIGITS } from "input-otp";
|
||||||
|
import { InputOTP, InputOTPGroup, InputOTPSlot } from "lib/comps/ui/input-otp";
|
||||||
import { useLocal } from "lib/utils/use-local";
|
import { useLocal } from "lib/utils/use-local";
|
||||||
import { FC, useEffect } from "react";
|
import { FC } from "react";
|
||||||
import { FieldLocal, FieldProp, FMLocal } from "../../typings";
|
import { FieldLocal, FieldProp, FMLocal } from "../../typings";
|
||||||
import { PropTypeInput } from "./TypeInput";
|
import { PropTypeInput } from "./TypeInput";
|
||||||
import { InputOTP, InputOTPGroup, InputOTPSlot } from "lib/comps/ui/input-otp";
|
|
||||||
import { REGEXP_ONLY_DIGITS } from "input-otp";
|
|
||||||
|
|
||||||
export const FieldOTP: FC<{
|
export const FieldOTP: FC<{
|
||||||
digit: number;
|
digit: number;
|
||||||
|
|
@ -11,7 +11,7 @@ export const FieldOTP: FC<{
|
||||||
fm: FMLocal;
|
fm: FMLocal;
|
||||||
prop: PropTypeInput;
|
prop: PropTypeInput;
|
||||||
arg: FieldProp;
|
arg: FieldProp;
|
||||||
}> = ({ digit, fm, field }) => {
|
}> = ({ digit, fm, field, arg }) => {
|
||||||
const local = useLocal({
|
const local = useLocal({
|
||||||
otp: "",
|
otp: "",
|
||||||
ref: [] as HTMLInputElement[],
|
ref: [] as HTMLInputElement[],
|
||||||
|
|
@ -37,8 +37,8 @@ export const FieldOTP: FC<{
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
local.otp = value;
|
local.otp = value;
|
||||||
local.render();
|
local.render();
|
||||||
if (field.on_change) {
|
if (arg.on_change) {
|
||||||
field.on_change({ value, name: field.name, fm });
|
arg.on_change({ value: local.otp, fm, name: field.name });
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
pattern={REGEXP_ONLY_DIGITS}
|
pattern={REGEXP_ONLY_DIGITS}
|
||||||
|
|
|
||||||
|
|
@ -10,12 +10,11 @@ export const FieldUpload: FC<{
|
||||||
prop: PropTypeInput;
|
prop: PropTypeInput;
|
||||||
styling?: string;
|
styling?: string;
|
||||||
arg: FieldProp;
|
arg: FieldProp;
|
||||||
on_change: (e: any) => void | Promise<void>;
|
|
||||||
}> = (pass) => {
|
}> = (pass) => {
|
||||||
const { field, fm, prop, on_change, arg } = pass;
|
const { field, fm, prop, arg } = pass;
|
||||||
let mode = field.prop.upload?.mode || "single-file";
|
let mode = field.prop.upload?.mode || "single-file";
|
||||||
if (mode === "single-file") {
|
if (mode === "single-file") {
|
||||||
return <FieldUploadSingle {...pass} />;
|
return <FieldUploadSingle {...pass} />;
|
||||||
}
|
}
|
||||||
return <FieldUploadMulti {...pass} />;
|
return <FieldUploadMulti {...pass} />;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,7 @@ export const FieldUploadMulti: FC<{
|
||||||
prop: PropTypeInput;
|
prop: PropTypeInput;
|
||||||
styling?: string;
|
styling?: string;
|
||||||
arg: FieldProp;
|
arg: FieldProp;
|
||||||
on_change: (e: any) => void | Promise<void>;
|
}> = ({ field, fm, prop, arg }) => {
|
||||||
}> = ({ field, fm, prop, on_change, arg }) => {
|
|
||||||
let value: string = (fm.data[field.name] || "").trim();
|
let value: string = (fm.data[field.name] || "").trim();
|
||||||
|
|
||||||
const input = useLocal({
|
const input = useLocal({
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,11 @@ export const FieldUploadSingle: FC<{
|
||||||
prop: PropTypeInput;
|
prop: PropTypeInput;
|
||||||
styling?: string;
|
styling?: string;
|
||||||
arg: FieldProp;
|
arg: FieldProp;
|
||||||
on_change: (e: any) => void | Promise<void>;
|
on_change?: (arg: {
|
||||||
|
value: any;
|
||||||
|
name: string;
|
||||||
|
fm: any;
|
||||||
|
}) => void | Promise<void>;
|
||||||
}> = ({ field, fm, prop, on_change, arg }) => {
|
}> = ({ field, fm, prop, on_change, arg }) => {
|
||||||
const styling = arg.upload_style ? arg.upload_style : "full";
|
const styling = arg.upload_style ? arg.upload_style : "full";
|
||||||
const disabled =
|
const disabled =
|
||||||
|
|
@ -57,9 +61,9 @@ export const FieldUploadSingle: FC<{
|
||||||
const jsonData = XLSX.utils.sheet_to_json(worksheet);
|
const jsonData = XLSX.utils.sheet_to_json(worksheet);
|
||||||
if (typeof on_change === "function") {
|
if (typeof on_change === "function") {
|
||||||
on_change({
|
on_change({
|
||||||
value: jsonData,
|
value: { jsonData, file: file, binary: e.target.result },
|
||||||
file: file,
|
fm,
|
||||||
binnary: e.target.result,
|
name: field.name,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue