@seedgrid/fe-components 0.2.4
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/blocked-email-domains.json +41 -0
- package/dist/buttons/SgButton.d.ts +43 -0
- package/dist/buttons/SgButton.d.ts.map +1 -0
- package/dist/buttons/SgButton.js +123 -0
- package/dist/buttons/SgFloatActionButton.d.ts +60 -0
- package/dist/buttons/SgFloatActionButton.d.ts.map +1 -0
- package/dist/buttons/SgFloatActionButton.js +532 -0
- package/dist/buttons/SgSpeedDial.d.ts +40 -0
- package/dist/buttons/SgSpeedDial.d.ts.map +1 -0
- package/dist/buttons/SgSpeedDial.js +149 -0
- package/dist/buttons/SgSplitButton.d.ts +32 -0
- package/dist/buttons/SgSplitButton.d.ts.map +1 -0
- package/dist/buttons/SgSplitButton.js +81 -0
- package/dist/clock/SgClock.d.ts +28 -0
- package/dist/clock/SgClock.d.ts.map +1 -0
- package/dist/clock/SgClock.js +280 -0
- package/dist/clock/SgTimeProvider.d.ts +13 -0
- package/dist/clock/SgTimeProvider.d.ts.map +1 -0
- package/dist/clock/SgTimeProvider.js +44 -0
- package/dist/clock/themes/SgClockThemePicker.d.ts +14 -0
- package/dist/clock/themes/SgClockThemePicker.d.ts.map +1 -0
- package/dist/clock/themes/SgClockThemePicker.js +71 -0
- package/dist/clock/themes/SgClockThemePreview.d.ts +7 -0
- package/dist/clock/themes/SgClockThemePreview.d.ts.map +1 -0
- package/dist/clock/themes/SgClockThemePreview.js +11 -0
- package/dist/clock/themes/builtins.d.ts +3 -0
- package/dist/clock/themes/builtins.d.ts.map +1 -0
- package/dist/clock/themes/builtins.js +241 -0
- package/dist/clock/themes/index.d.ts +9 -0
- package/dist/clock/themes/index.d.ts.map +1 -0
- package/dist/clock/themes/index.js +7 -0
- package/dist/clock/themes/provider.d.ts +19 -0
- package/dist/clock/themes/provider.d.ts.map +1 -0
- package/dist/clock/themes/provider.js +54 -0
- package/dist/clock/themes/registry.d.ts +9 -0
- package/dist/clock/themes/registry.d.ts.map +1 -0
- package/dist/clock/themes/registry.js +25 -0
- package/dist/clock/themes/renderTheme.d.ts +7 -0
- package/dist/clock/themes/renderTheme.d.ts.map +1 -0
- package/dist/clock/themes/renderTheme.js +41 -0
- package/dist/clock/themes/types.d.ts +21 -0
- package/dist/clock/themes/types.d.ts.map +1 -0
- package/dist/clock/themes/types.js +1 -0
- package/dist/clock/themes/urlThemeCache.d.ts +2 -0
- package/dist/clock/themes/urlThemeCache.d.ts.map +1 -0
- package/dist/clock/themes/urlThemeCache.js +11 -0
- package/dist/clock/themes/useDarkFlag.d.ts +2 -0
- package/dist/clock/themes/useDarkFlag.d.ts.map +1 -0
- package/dist/clock/themes/useDarkFlag.js +14 -0
- package/dist/commons/SgBadge.d.ts +51 -0
- package/dist/commons/SgBadge.d.ts.map +1 -0
- package/dist/commons/SgBadge.js +141 -0
- package/dist/commons/SgBadgeOverlay.d.ts +13 -0
- package/dist/commons/SgBadgeOverlay.d.ts.map +1 -0
- package/dist/commons/SgBadgeOverlay.js +20 -0
- package/dist/commons/SgButton.d.ts +39 -0
- package/dist/commons/SgButton.d.ts.map +1 -0
- package/dist/commons/SgButton.js +116 -0
- package/dist/commons/SgPopup.d.ts +42 -0
- package/dist/commons/SgPopup.d.ts.map +1 -0
- package/dist/commons/SgPopup.js +218 -0
- package/dist/commons/SgToast.d.ts +44 -0
- package/dist/commons/SgToast.d.ts.map +1 -0
- package/dist/commons/SgToast.js +97 -0
- package/dist/commons/SgToaster.d.ts +11 -0
- package/dist/commons/SgToaster.d.ts.map +1 -0
- package/dist/commons/SgToaster.js +85 -0
- package/dist/commons/common-passwords.d.ts +2 -0
- package/dist/commons/common-passwords.d.ts.map +1 -0
- package/dist/commons/common-passwords.js +167 -0
- package/dist/environment/SgEnvironmentProvider.d.ts +31 -0
- package/dist/environment/SgEnvironmentProvider.d.ts.map +1 -0
- package/dist/environment/SgEnvironmentProvider.js +120 -0
- package/dist/environment/persistence.d.ts +44 -0
- package/dist/environment/persistence.d.ts.map +1 -0
- package/dist/environment/persistence.js +149 -0
- package/dist/gadgets/clock/SgClock.d.ts +18 -0
- package/dist/gadgets/clock/SgClock.d.ts.map +1 -0
- package/dist/gadgets/clock/SgClock.js +407 -0
- package/dist/gadgets/clock/SgTimeProvider.d.ts +13 -0
- package/dist/gadgets/clock/SgTimeProvider.d.ts.map +1 -0
- package/dist/gadgets/clock/SgTimeProvider.js +44 -0
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts +14 -0
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/SgClockThemePicker.js +71 -0
- package/dist/gadgets/clock/themes/SgClockThemePreview.d.ts +7 -0
- package/dist/gadgets/clock/themes/SgClockThemePreview.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/SgClockThemePreview.js +11 -0
- package/dist/gadgets/clock/themes/builtins.d.ts +3 -0
- package/dist/gadgets/clock/themes/builtins.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/builtins.js +241 -0
- package/dist/gadgets/clock/themes/index.d.ts +9 -0
- package/dist/gadgets/clock/themes/index.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/index.js +7 -0
- package/dist/gadgets/clock/themes/provider.d.ts +19 -0
- package/dist/gadgets/clock/themes/provider.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/provider.js +54 -0
- package/dist/gadgets/clock/themes/registry.d.ts +9 -0
- package/dist/gadgets/clock/themes/registry.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/registry.js +25 -0
- package/dist/gadgets/clock/themes/renderTheme.d.ts +7 -0
- package/dist/gadgets/clock/themes/renderTheme.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/renderTheme.js +41 -0
- package/dist/gadgets/clock/themes/types.d.ts +21 -0
- package/dist/gadgets/clock/themes/types.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/types.js +1 -0
- package/dist/gadgets/clock/themes/urlThemeCache.d.ts +2 -0
- package/dist/gadgets/clock/themes/urlThemeCache.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/urlThemeCache.js +11 -0
- package/dist/gadgets/clock/themes/useDarkFlag.d.ts +2 -0
- package/dist/gadgets/clock/themes/useDarkFlag.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/useDarkFlag.js +14 -0
- package/dist/gadgets/flip-digit/SgFlipDigit.d.ts +23 -0
- package/dist/gadgets/flip-digit/SgFlipDigit.d.ts.map +1 -0
- package/dist/gadgets/flip-digit/SgFlipDigit.js +118 -0
- package/dist/gadgets/flip-digit/index.d.ts +3 -0
- package/dist/gadgets/flip-digit/index.d.ts.map +1 -0
- package/dist/gadgets/flip-digit/index.js +1 -0
- package/dist/i18n/en-US.json +76 -0
- package/dist/i18n/es.json +76 -0
- package/dist/i18n/index.d.ts +328 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +87 -0
- package/dist/i18n/pt-BR.json +76 -0
- package/dist/i18n/pt-PT.json +76 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/inputs/FloatingInput.d.ts +13 -0
- package/dist/inputs/FloatingInput.d.ts.map +1 -0
- package/dist/inputs/FloatingInput.js +53 -0
- package/dist/inputs/FloatingSelect.d.ts +15 -0
- package/dist/inputs/FloatingSelect.d.ts.map +1 -0
- package/dist/inputs/FloatingSelect.js +52 -0
- package/dist/inputs/FloatingTextArea.d.ts +11 -0
- package/dist/inputs/FloatingTextArea.d.ts.map +1 -0
- package/dist/inputs/FloatingTextArea.js +34 -0
- package/dist/inputs/InputBirthDate.d.ts +13 -0
- package/dist/inputs/InputBirthDate.d.ts.map +1 -0
- package/dist/inputs/InputBirthDate.js +46 -0
- package/dist/inputs/InputDate.d.ts +8 -0
- package/dist/inputs/InputDate.d.ts.map +1 -0
- package/dist/inputs/InputDate.js +23 -0
- package/dist/inputs/InputEmail.d.ts +14 -0
- package/dist/inputs/InputEmail.d.ts.map +1 -0
- package/dist/inputs/InputEmail.js +43 -0
- package/dist/inputs/InputPassword.d.ts +12 -0
- package/dist/inputs/InputPassword.d.ts.map +1 -0
- package/dist/inputs/InputPassword.js +42 -0
- package/dist/inputs/MaskedInputs.d.ts +27 -0
- package/dist/inputs/MaskedInputs.d.ts.map +1 -0
- package/dist/inputs/MaskedInputs.js +161 -0
- package/dist/inputs/SgAutocomplete.d.ts +42 -0
- package/dist/inputs/SgAutocomplete.d.ts.map +1 -0
- package/dist/inputs/SgAutocomplete.js +241 -0
- package/dist/inputs/SgCurrencyEdit.d.ts +56 -0
- package/dist/inputs/SgCurrencyEdit.d.ts.map +1 -0
- package/dist/inputs/SgCurrencyEdit.js +496 -0
- package/dist/inputs/SgInputBirthDate.d.ts +13 -0
- package/dist/inputs/SgInputBirthDate.d.ts.map +1 -0
- package/dist/inputs/SgInputBirthDate.js +48 -0
- package/dist/inputs/SgInputCEP.d.ts +33 -0
- package/dist/inputs/SgInputCEP.d.ts.map +1 -0
- package/dist/inputs/SgInputCEP.js +117 -0
- package/dist/inputs/SgInputCNPJ.d.ts +20 -0
- package/dist/inputs/SgInputCNPJ.d.ts.map +1 -0
- package/dist/inputs/SgInputCNPJ.js +133 -0
- package/dist/inputs/SgInputCPF.d.ts +15 -0
- package/dist/inputs/SgInputCPF.d.ts.map +1 -0
- package/dist/inputs/SgInputCPF.js +70 -0
- package/dist/inputs/SgInputCPFCNPJ.d.ts +15 -0
- package/dist/inputs/SgInputCPFCNPJ.d.ts.map +1 -0
- package/dist/inputs/SgInputCPFCNPJ.js +92 -0
- package/dist/inputs/SgInputDate.d.ts +8 -0
- package/dist/inputs/SgInputDate.d.ts.map +1 -0
- package/dist/inputs/SgInputDate.js +120 -0
- package/dist/inputs/SgInputEmail.d.ts +16 -0
- package/dist/inputs/SgInputEmail.d.ts.map +1 -0
- package/dist/inputs/SgInputEmail.js +74 -0
- package/dist/inputs/SgInputFone.d.ts +15 -0
- package/dist/inputs/SgInputFone.d.ts.map +1 -0
- package/dist/inputs/SgInputFone.js +60 -0
- package/dist/inputs/SgInputMasked.d.ts +27 -0
- package/dist/inputs/SgInputMasked.d.ts.map +1 -0
- package/dist/inputs/SgInputMasked.js +161 -0
- package/dist/inputs/SgInputNumber.d.ts +49 -0
- package/dist/inputs/SgInputNumber.d.ts.map +1 -0
- package/dist/inputs/SgInputNumber.js +438 -0
- package/dist/inputs/SgInputPassword.d.ts +26 -0
- package/dist/inputs/SgInputPassword.d.ts.map +1 -0
- package/dist/inputs/SgInputPassword.js +278 -0
- package/dist/inputs/SgInputPhone.d.ts +15 -0
- package/dist/inputs/SgInputPhone.d.ts.map +1 -0
- package/dist/inputs/SgInputPhone.js +66 -0
- package/dist/inputs/SgInputPostalCode.d.ts +37 -0
- package/dist/inputs/SgInputPostalCode.d.ts.map +1 -0
- package/dist/inputs/SgInputPostalCode.js +193 -0
- package/dist/inputs/SgInputSelect.d.ts +16 -0
- package/dist/inputs/SgInputSelect.d.ts.map +1 -0
- package/dist/inputs/SgInputSelect.js +104 -0
- package/dist/inputs/SgInputText.d.ts +49 -0
- package/dist/inputs/SgInputText.d.ts.map +1 -0
- package/dist/inputs/SgInputText.js +336 -0
- package/dist/inputs/SgInputTextArea.d.ts +41 -0
- package/dist/inputs/SgInputTextArea.d.ts.map +1 -0
- package/dist/inputs/SgInputTextArea.js +216 -0
- package/dist/inputs/SgTextEditor.d.ts +27 -0
- package/dist/inputs/SgTextEditor.d.ts.map +1 -0
- package/dist/inputs/SgTextEditor.js +201 -0
- package/dist/integration/module.d.ts +39 -0
- package/dist/integration/module.d.ts.map +1 -0
- package/dist/integration/module.js +1 -0
- package/dist/layout/GroupBox.d.ts +10 -0
- package/dist/layout/GroupBox.d.ts.map +1 -0
- package/dist/layout/GroupBox.js +14 -0
- package/dist/layout/SgCard.d.ts +35 -0
- package/dist/layout/SgCard.d.ts.map +1 -0
- package/dist/layout/SgCard.js +106 -0
- package/dist/layout/SgDockLayout.d.ts +37 -0
- package/dist/layout/SgDockLayout.d.ts.map +1 -0
- package/dist/layout/SgDockLayout.js +101 -0
- package/dist/layout/SgDockZone.d.ts +12 -0
- package/dist/layout/SgDockZone.d.ts.map +1 -0
- package/dist/layout/SgDockZone.js +20 -0
- package/dist/layout/SgGrid.d.ts +18 -0
- package/dist/layout/SgGrid.d.ts.map +1 -0
- package/dist/layout/SgGrid.js +101 -0
- package/dist/layout/SgGroupBox.d.ts +10 -0
- package/dist/layout/SgGroupBox.d.ts.map +1 -0
- package/dist/layout/SgGroupBox.js +14 -0
- package/dist/layout/SgMainPanel.d.ts +11 -0
- package/dist/layout/SgMainPanel.d.ts.map +1 -0
- package/dist/layout/SgMainPanel.js +70 -0
- package/dist/layout/SgPanel.d.ts +22 -0
- package/dist/layout/SgPanel.d.ts.map +1 -0
- package/dist/layout/SgPanel.js +33 -0
- package/dist/layout/SgScreen.d.ts +11 -0
- package/dist/layout/SgScreen.d.ts.map +1 -0
- package/dist/layout/SgScreen.js +18 -0
- package/dist/layout/SgStack.d.ts +15 -0
- package/dist/layout/SgStack.d.ts.map +1 -0
- package/dist/layout/SgStack.js +32 -0
- package/dist/layout/SgToolBar.d.ts +46 -0
- package/dist/layout/SgToolBar.d.ts.map +1 -0
- package/dist/layout/SgToolBar.js +199 -0
- package/dist/layout/SgTreeView.d.ts +80 -0
- package/dist/layout/SgTreeView.d.ts.map +1 -0
- package/dist/layout/SgTreeView.js +338 -0
- package/dist/manifest.d.ts +3 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +19 -0
- package/dist/masks.d.ts +14 -0
- package/dist/masks.d.ts.map +1 -0
- package/dist/masks.js +91 -0
- package/dist/overlay/SgDialog.d.ts +39 -0
- package/dist/overlay/SgDialog.d.ts.map +1 -0
- package/dist/overlay/SgDialog.js +177 -0
- package/dist/overlay/SgPopup.d.ts +42 -0
- package/dist/overlay/SgPopup.d.ts.map +1 -0
- package/dist/overlay/SgPopup.js +218 -0
- package/dist/rhf.d.ts +6 -0
- package/dist/rhf.d.ts.map +1 -0
- package/dist/rhf.js +1 -0
- package/dist/validators.d.ts +27 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +218 -0
- package/dist/wizard/SGWizard.d.ts +28 -0
- package/dist/wizard/SGWizard.d.ts.map +1 -0
- package/dist/wizard/SGWizard.js +124 -0
- package/package.json +53 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { SgInputDate } from "./InputDate";
|
|
5
|
+
import { validateBirthDate } from "../validators";
|
|
6
|
+
export function SgInputBirthDate(props) {
|
|
7
|
+
const today = new Date();
|
|
8
|
+
const todayStr = today.toISOString().slice(0, 10);
|
|
9
|
+
const { minAge, maxAge, onValidation, inputProps, minDate, maxDate, alwaysFloat, required, requiredMessage, validateOnBlur, error, ...rest } = props;
|
|
10
|
+
const derivedMaxDate = maxAge !== undefined && maxAge >= 0
|
|
11
|
+
? new Date(today.getFullYear() - maxAge, today.getMonth(), today.getDate()).toISOString().slice(0, 10)
|
|
12
|
+
: undefined;
|
|
13
|
+
const derivedMinDate = minAge !== undefined && minAge >= 0
|
|
14
|
+
? new Date(today.getFullYear() - minAge, today.getMonth(), today.getDate()).toISOString().slice(0, 10)
|
|
15
|
+
: undefined;
|
|
16
|
+
const [internalError, setInternalError] = React.useState(null);
|
|
17
|
+
const runValidation = React.useCallback((value) => {
|
|
18
|
+
if (!value && !required) {
|
|
19
|
+
setInternalError(null);
|
|
20
|
+
onValidation?.(null);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!value && required) {
|
|
24
|
+
const message = requiredMessage ?? "Informe a data de nascimento.";
|
|
25
|
+
setInternalError(message);
|
|
26
|
+
onValidation?.(message);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const message = validateBirthDate(value, { minAge, maxAge });
|
|
30
|
+
setInternalError(message);
|
|
31
|
+
onValidation?.(message);
|
|
32
|
+
}, [maxAge, minAge, onValidation, required, requiredMessage]);
|
|
33
|
+
const handleBlur = (event) => {
|
|
34
|
+
runValidation(event.currentTarget.value);
|
|
35
|
+
inputProps?.onBlur?.(event);
|
|
36
|
+
};
|
|
37
|
+
return (_jsx(SgInputDate, { ...rest, error: error ?? internalError ?? undefined, inputProps: {
|
|
38
|
+
...inputProps,
|
|
39
|
+
onBlur: (event) => {
|
|
40
|
+
if (validateOnBlur ?? true)
|
|
41
|
+
handleBlur(event);
|
|
42
|
+
else
|
|
43
|
+
inputProps?.onBlur?.(event);
|
|
44
|
+
}
|
|
45
|
+
}, alwaysFloat: alwaysFloat ?? true, maxDate: maxDate ?? derivedMinDate ?? todayStr, minDate: minDate ?? derivedMaxDate }));
|
|
46
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type SgInputTextProps } from "./SgInputText";
|
|
2
|
+
export type SgInputDateProps = Omit<SgInputTextProps, "type"> & {
|
|
3
|
+
minDate?: string | Date;
|
|
4
|
+
maxDate?: string | Date;
|
|
5
|
+
alwaysFloat?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function SgInputDate(props: SgInputDateProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=InputDate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputDate.d.ts","sourceRoot":"","sources":["../../src/inputs/InputDate.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG;IAC9D,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAQF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAiClD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { SgInputText } from "./SgInputText";
|
|
4
|
+
function toDateValue(value) {
|
|
5
|
+
if (!value)
|
|
6
|
+
return undefined;
|
|
7
|
+
if (typeof value === "string")
|
|
8
|
+
return value;
|
|
9
|
+
return value.toISOString().slice(0, 10);
|
|
10
|
+
}
|
|
11
|
+
export function SgInputDate(props) {
|
|
12
|
+
const { minDate, maxDate, inputProps, alwaysFloat, ...rest } = props;
|
|
13
|
+
const showStaticLabel = Boolean(alwaysFloat);
|
|
14
|
+
const mergedInputProps = {
|
|
15
|
+
...inputProps,
|
|
16
|
+
placeholder: showStaticLabel ? " " : (inputProps?.placeholder ?? rest.label),
|
|
17
|
+
min: toDateValue(minDate),
|
|
18
|
+
max: toDateValue(maxDate)
|
|
19
|
+
};
|
|
20
|
+
const inputClassName = mergedInputProps.className ??
|
|
21
|
+
"peer h-11 w-full rounded-md border border-border bg-white px-3 py-2.5 text-sm shadow-sm placeholder-transparent focus:border-[hsl(var(--primary))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--primary)/0.25)]";
|
|
22
|
+
return (_jsxs("div", { className: showStaticLabel ? "relative" : undefined, children: [showStaticLabel && rest.label ? (_jsx("label", { htmlFor: rest.id, className: "pointer-events-none absolute left-3 top-0 z-10 -translate-y-1/2 bg-white px-1 text-[11px] font-medium leading-none text-foreground/70", children: rest.label })) : null, _jsx(SgInputText, { ...rest, type: "date", inputProps: mergedInputProps, className: inputClassName, labelClassName: showStaticLabel ? "sr-only" : undefined })] }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type SgInputTextProps } from "./SgInputText";
|
|
3
|
+
export type SgInputEmailProps = Omit<SgInputTextProps, "type" | "error"> & {
|
|
4
|
+
error?: string;
|
|
5
|
+
required?: boolean;
|
|
6
|
+
requiredMessage?: string;
|
|
7
|
+
invalidMessage?: string;
|
|
8
|
+
validation?: (value: string) => string | null;
|
|
9
|
+
validateOnBlur?: boolean;
|
|
10
|
+
onValidation?: (message: string | null) => void;
|
|
11
|
+
iconButtons?: React.ReactNode[];
|
|
12
|
+
};
|
|
13
|
+
export declare function SgInputEmail(props: SgInputEmailProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=InputEmail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputEmail.d.ts","sourceRoot":"","sources":["../../src/inputs/InputEmail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;CACjC,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAkDpD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { SgInputText } from "./SgInputText";
|
|
5
|
+
import { isValidEmail } from "../validators";
|
|
6
|
+
export function SgInputEmail(props) {
|
|
7
|
+
const { required, requiredMessage, invalidMessage, validateOnBlur, onValidation, error, inputProps, iconButtons, validation, ...rest } = props;
|
|
8
|
+
const [internalError, setInternalError] = React.useState(null);
|
|
9
|
+
const runValidation = React.useCallback((value) => {
|
|
10
|
+
if (!value && !required) {
|
|
11
|
+
setInternalError(null);
|
|
12
|
+
onValidation?.(null);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (!value && required) {
|
|
16
|
+
const message = requiredMessage ?? "Campo obrigatório ";
|
|
17
|
+
setInternalError(message);
|
|
18
|
+
onValidation?.(message);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (validation) {
|
|
22
|
+
const custom = validation(value);
|
|
23
|
+
if (custom) {
|
|
24
|
+
setInternalError(custom);
|
|
25
|
+
onValidation?.(custom);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const valid = isValidEmail(value);
|
|
30
|
+
const message = valid ? null : (invalidMessage ?? "Email inválido.");
|
|
31
|
+
setInternalError(message);
|
|
32
|
+
onValidation?.(message);
|
|
33
|
+
}, [invalidMessage, onValidation, required, requiredMessage, validation]);
|
|
34
|
+
const mergedInputProps = {
|
|
35
|
+
...inputProps,
|
|
36
|
+
onBlur: (event) => {
|
|
37
|
+
if (validateOnBlur ?? true)
|
|
38
|
+
runValidation(event.currentTarget.value);
|
|
39
|
+
inputProps?.onBlur?.(event);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return (_jsx(SgInputText, { ...rest, type: "email", error: error ?? internalError ?? undefined, inputProps: mergedInputProps, iconButtons: iconButtons }));
|
|
43
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SgInputTextProps } from "./SgInputText";
|
|
2
|
+
import { type PasswordPolicy } from "../validators";
|
|
3
|
+
export type SgInputPasswordProps = Omit<SgInputTextProps, "type" | "error"> & {
|
|
4
|
+
error?: string;
|
|
5
|
+
policy?: PasswordPolicy;
|
|
6
|
+
onValidation?: (message: string | null) => void;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
requiredMessage?: string;
|
|
9
|
+
validateOnBlur?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function SgInputPassword(props: SgInputPasswordProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=InputPassword.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputPassword.d.ts","sourceRoot":"","sources":["../../src/inputs/InputPassword.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA+C1D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { SgInputText } from "./SgInputText";
|
|
5
|
+
import { validatePassword } from "../validators";
|
|
6
|
+
export function SgInputPassword(props) {
|
|
7
|
+
const { inputProps, policy, onValidation, required, requiredMessage, validateOnBlur, error, ...rest } = props;
|
|
8
|
+
const onBlur = inputProps.onBlur;
|
|
9
|
+
const [internalError, setInternalError] = React.useState(null);
|
|
10
|
+
const runValidation = React.useCallback((value) => {
|
|
11
|
+
if (!value && !required) {
|
|
12
|
+
setInternalError(null);
|
|
13
|
+
onValidation?.(null);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!value && required) {
|
|
17
|
+
const message = requiredMessage ?? "Informe a senha.";
|
|
18
|
+
setInternalError(message);
|
|
19
|
+
onValidation?.(message);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const message = validatePassword(value, policy);
|
|
23
|
+
setInternalError(message);
|
|
24
|
+
onValidation?.(message);
|
|
25
|
+
}, [onValidation, policy, required, requiredMessage]);
|
|
26
|
+
const mergedInputProps = {
|
|
27
|
+
...inputProps,
|
|
28
|
+
onBlur: (event) => {
|
|
29
|
+
runValidation(event.currentTarget.value);
|
|
30
|
+
onBlur?.(event);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return (_jsx(SgInputText, { ...rest, type: "password", error: error ?? internalError ?? undefined, inputProps: {
|
|
34
|
+
...mergedInputProps,
|
|
35
|
+
onBlur: (event) => {
|
|
36
|
+
if (validateOnBlur ?? true)
|
|
37
|
+
mergedInputProps.onBlur?.(event);
|
|
38
|
+
else
|
|
39
|
+
onBlur?.(event);
|
|
40
|
+
}
|
|
41
|
+
} }));
|
|
42
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type SgInputTextProps } from "./SgInputText";
|
|
3
|
+
type MaskedInputProps = Omit<SgInputTextProps, "inputProps" | "error"> & {
|
|
4
|
+
inputProps: React.InputHTMLAttributes<HTMLInputElement>;
|
|
5
|
+
mask: (value: string) => string;
|
|
6
|
+
};
|
|
7
|
+
type ValidationProps = {
|
|
8
|
+
error?: string;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
requiredMessage?: string;
|
|
11
|
+
lengthMessage?: string;
|
|
12
|
+
invalidMessage?: string;
|
|
13
|
+
onValidation?: (message: string | null) => void;
|
|
14
|
+
validateOnBlur?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type SgInputCPFProps = Omit<MaskedInputProps, "mask"> & ValidationProps;
|
|
17
|
+
export declare function SgInputCPF(props: SgInputCPFProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export type SgInputCNPJProps = Omit<MaskedInputProps, "mask"> & ValidationProps;
|
|
19
|
+
export declare function SgInputCNPJ(props: SgInputCNPJProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export type SgInputCPFCNPJProps = Omit<MaskedInputProps, "mask"> & ValidationProps;
|
|
21
|
+
export declare function SgInputCPFCNPJ(props: SgInputCPFCNPJProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export type SgInputCEPProps = Omit<MaskedInputProps, "mask"> & ValidationProps;
|
|
23
|
+
export declare function SgInputCEP(props: SgInputCEPProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export type SgInputFoneProps = Omit<MaskedInputProps, "mask"> & ValidationProps;
|
|
25
|
+
export declare function SgInputFone(props: SgInputFoneProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=MaskedInputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaskedInputs.d.ts","sourceRoot":"","sources":["../../src/inputs/MaskedInputs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAInE,KAAK,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG;IACvE,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAqCF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC;AAE/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA4BhD;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC;AAEhF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CA4BlD;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC;AAEnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA+BxD;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC;AAE/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA2BhD;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC;AAEhF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CA6BlD"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { SgInputText } from "./SgInputText";
|
|
5
|
+
import { maskCep, maskCnpj, maskCpf, maskCpfCnpj, maskPhone } from "../masks";
|
|
6
|
+
import { isValidCnpj, isValidCpf } from "../validators";
|
|
7
|
+
function onlyDigits(value) {
|
|
8
|
+
return value.replace(/\D/g, "");
|
|
9
|
+
}
|
|
10
|
+
function useValidationState(props, validateFn) {
|
|
11
|
+
const [internalError, setInternalError] = React.useState(null);
|
|
12
|
+
const runValidation = React.useCallback((value) => {
|
|
13
|
+
const message = validateFn(value);
|
|
14
|
+
setInternalError(message);
|
|
15
|
+
props.onValidation?.(message);
|
|
16
|
+
return message;
|
|
17
|
+
}, [props, validateFn]);
|
|
18
|
+
return { internalError, runValidation };
|
|
19
|
+
}
|
|
20
|
+
function applyMaskProps(props, inputMode) {
|
|
21
|
+
const { inputProps, mask } = props;
|
|
22
|
+
const onChange = inputProps.onChange;
|
|
23
|
+
return {
|
|
24
|
+
...inputProps,
|
|
25
|
+
inputMode: inputProps.inputMode ?? inputMode,
|
|
26
|
+
onChange: (event) => {
|
|
27
|
+
event.target.value = mask(event.target.value);
|
|
28
|
+
onChange?.(event);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function SgInputCPF(props) {
|
|
33
|
+
const { required, requiredMessage, lengthMessage, invalidMessage, validateOnBlur, error, ...rest } = props;
|
|
34
|
+
const { internalError, runValidation } = useValidationState(props, (value) => {
|
|
35
|
+
const digits = onlyDigits(value);
|
|
36
|
+
if (!digits && !required)
|
|
37
|
+
return null;
|
|
38
|
+
if (!digits && required)
|
|
39
|
+
return requiredMessage ?? "Informe o CPF.";
|
|
40
|
+
if (digits.length !== 11)
|
|
41
|
+
return lengthMessage ?? "CPF deve ter 11 dígitos.";
|
|
42
|
+
if (!isValidCpf(value))
|
|
43
|
+
return invalidMessage ?? "CPF inválido.";
|
|
44
|
+
return null;
|
|
45
|
+
});
|
|
46
|
+
const inputProps = applyMaskProps({ ...rest, mask: maskCpf }, "numeric");
|
|
47
|
+
const onBlur = inputProps.onBlur;
|
|
48
|
+
const shouldValidateOnBlur = validateOnBlur ?? true;
|
|
49
|
+
return (_jsx(SgInputText, { ...rest, error: error ?? internalError ?? undefined, inputProps: {
|
|
50
|
+
...inputProps,
|
|
51
|
+
onBlur: (event) => {
|
|
52
|
+
if (shouldValidateOnBlur)
|
|
53
|
+
runValidation(event.currentTarget.value);
|
|
54
|
+
onBlur?.(event);
|
|
55
|
+
}
|
|
56
|
+
} }));
|
|
57
|
+
}
|
|
58
|
+
export function SgInputCNPJ(props) {
|
|
59
|
+
const { required, requiredMessage, lengthMessage, invalidMessage, validateOnBlur, error, ...rest } = props;
|
|
60
|
+
const { internalError, runValidation } = useValidationState(props, (value) => {
|
|
61
|
+
const digits = onlyDigits(value);
|
|
62
|
+
if (!digits && !required)
|
|
63
|
+
return null;
|
|
64
|
+
if (!digits && required)
|
|
65
|
+
return requiredMessage ?? "Informe o CNPJ.";
|
|
66
|
+
if (digits.length !== 14)
|
|
67
|
+
return lengthMessage ?? "CNPJ deve ter 14 dígitos.";
|
|
68
|
+
if (!isValidCnpj(value))
|
|
69
|
+
return invalidMessage ?? "CNPJ inválido.";
|
|
70
|
+
return null;
|
|
71
|
+
});
|
|
72
|
+
const inputProps = applyMaskProps({ ...rest, mask: maskCnpj }, "numeric");
|
|
73
|
+
const onBlur = inputProps.onBlur;
|
|
74
|
+
const shouldValidateOnBlur = validateOnBlur ?? true;
|
|
75
|
+
return (_jsx(SgInputText, { ...rest, error: error ?? internalError ?? undefined, inputProps: {
|
|
76
|
+
...inputProps,
|
|
77
|
+
onBlur: (event) => {
|
|
78
|
+
if (shouldValidateOnBlur)
|
|
79
|
+
runValidation(event.currentTarget.value);
|
|
80
|
+
onBlur?.(event);
|
|
81
|
+
}
|
|
82
|
+
} }));
|
|
83
|
+
}
|
|
84
|
+
export function SgInputCPFCNPJ(props) {
|
|
85
|
+
const { required, requiredMessage, lengthMessage, invalidMessage, validateOnBlur, error, ...rest } = props;
|
|
86
|
+
const { internalError, runValidation } = useValidationState(props, (value) => {
|
|
87
|
+
const digits = onlyDigits(value);
|
|
88
|
+
if (!digits && !required)
|
|
89
|
+
return null;
|
|
90
|
+
if (!digits && required)
|
|
91
|
+
return requiredMessage ?? "Informe o documento.";
|
|
92
|
+
if (digits.length <= 11) {
|
|
93
|
+
if (digits.length !== 11)
|
|
94
|
+
return lengthMessage ?? "CPF deve ter 11 dígitos.";
|
|
95
|
+
return isValidCpf(value) ? null : (invalidMessage ?? "CPF inválido.");
|
|
96
|
+
}
|
|
97
|
+
if (digits.length !== 14)
|
|
98
|
+
return lengthMessage ?? "CNPJ deve ter 14 dígitos.";
|
|
99
|
+
return isValidCnpj(value) ? null : (invalidMessage ?? "CNPJ inválido.");
|
|
100
|
+
});
|
|
101
|
+
const inputProps = applyMaskProps({ ...rest, mask: maskCpfCnpj }, "numeric");
|
|
102
|
+
const onBlur = inputProps.onBlur;
|
|
103
|
+
const shouldValidateOnBlur = validateOnBlur ?? true;
|
|
104
|
+
return (_jsx(SgInputText, { ...rest, error: error ?? internalError ?? undefined, inputProps: {
|
|
105
|
+
...inputProps,
|
|
106
|
+
onBlur: (event) => {
|
|
107
|
+
if (shouldValidateOnBlur)
|
|
108
|
+
runValidation(event.currentTarget.value);
|
|
109
|
+
onBlur?.(event);
|
|
110
|
+
}
|
|
111
|
+
} }));
|
|
112
|
+
}
|
|
113
|
+
export function SgInputCEP(props) {
|
|
114
|
+
const { required, requiredMessage, lengthMessage, validateOnBlur, error, ...rest } = props;
|
|
115
|
+
const { internalError, runValidation } = useValidationState(props, (value) => {
|
|
116
|
+
const digits = onlyDigits(value);
|
|
117
|
+
if (!digits && !required)
|
|
118
|
+
return null;
|
|
119
|
+
if (!digits && required)
|
|
120
|
+
return requiredMessage ?? "Informe o CEP.";
|
|
121
|
+
if (digits.length !== 8)
|
|
122
|
+
return lengthMessage ?? "CEP deve ter 8 dígitos.";
|
|
123
|
+
return null;
|
|
124
|
+
});
|
|
125
|
+
const inputProps = applyMaskProps({ ...rest, mask: maskCep }, "numeric");
|
|
126
|
+
const onBlur = inputProps.onBlur;
|
|
127
|
+
const shouldValidateOnBlur = validateOnBlur ?? true;
|
|
128
|
+
return (_jsx(SgInputText, { ...rest, error: error ?? internalError ?? undefined, inputProps: {
|
|
129
|
+
...inputProps,
|
|
130
|
+
onBlur: (event) => {
|
|
131
|
+
if (shouldValidateOnBlur)
|
|
132
|
+
runValidation(event.currentTarget.value);
|
|
133
|
+
onBlur?.(event);
|
|
134
|
+
}
|
|
135
|
+
} }));
|
|
136
|
+
}
|
|
137
|
+
export function SgInputFone(props) {
|
|
138
|
+
const { required, requiredMessage, lengthMessage, invalidMessage, validateOnBlur, error, ...rest } = props;
|
|
139
|
+
const { internalError, runValidation } = useValidationState(props, (value) => {
|
|
140
|
+
const digits = onlyDigits(value);
|
|
141
|
+
if (!digits && !required)
|
|
142
|
+
return null;
|
|
143
|
+
if (!digits && required)
|
|
144
|
+
return requiredMessage ?? "Informe o telefone.";
|
|
145
|
+
if (digits.length !== 10 && digits.length !== 11) {
|
|
146
|
+
return lengthMessage ?? invalidMessage ?? "Telefone inválido.";
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
});
|
|
150
|
+
const inputProps = applyMaskProps({ ...rest, mask: maskPhone }, "numeric");
|
|
151
|
+
const onBlur = inputProps.onBlur;
|
|
152
|
+
const shouldValidateOnBlur = validateOnBlur ?? true;
|
|
153
|
+
return (_jsx(SgInputText, { ...rest, error: error ?? internalError ?? undefined, inputProps: {
|
|
154
|
+
...inputProps,
|
|
155
|
+
onBlur: (event) => {
|
|
156
|
+
if (shouldValidateOnBlur)
|
|
157
|
+
runValidation(event.currentTarget.value);
|
|
158
|
+
onBlur?.(event);
|
|
159
|
+
}
|
|
160
|
+
} }));
|
|
161
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { RhfFieldProps } from "../rhf";
|
|
3
|
+
import { type SgInputTextProps } from "./SgInputText";
|
|
4
|
+
export type SgAutocompleteItem = {
|
|
5
|
+
id: string | number;
|
|
6
|
+
label: string;
|
|
7
|
+
value?: string;
|
|
8
|
+
group?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
data?: unknown;
|
|
11
|
+
};
|
|
12
|
+
export type SgAutocompleteSource<T = SgAutocompleteItem> = (query: string) => Promise<T[]> | T[];
|
|
13
|
+
export type SgAutocompleteProps<T = SgAutocompleteItem> = Omit<SgInputTextProps, "onChange" | "value"> & {
|
|
14
|
+
value?: string;
|
|
15
|
+
onChange?: (value: string) => void;
|
|
16
|
+
source: SgAutocompleteSource<T>;
|
|
17
|
+
mapItem?: (raw: T) => SgAutocompleteItem;
|
|
18
|
+
minLengthForSearch?: number;
|
|
19
|
+
delay?: number;
|
|
20
|
+
maxResult?: number;
|
|
21
|
+
cacheEnabled?: boolean;
|
|
22
|
+
cacheTTL?: number;
|
|
23
|
+
showDropDownButton?: boolean;
|
|
24
|
+
openOnFocus?: boolean;
|
|
25
|
+
clearOnSelect?: boolean;
|
|
26
|
+
allowCustomValue?: boolean;
|
|
27
|
+
grouped?: boolean;
|
|
28
|
+
groupped?: boolean;
|
|
29
|
+
placeholderEmpty?: string;
|
|
30
|
+
loadingText?: string;
|
|
31
|
+
onSelect?: (item: SgAutocompleteItem) => void;
|
|
32
|
+
onSearch?: (query: string) => void;
|
|
33
|
+
onOpenChange?: (open: boolean) => void;
|
|
34
|
+
renderItem?: (item: SgAutocompleteItem, isActive: boolean) => React.ReactNode;
|
|
35
|
+
renderGroupHeader?: (group: string) => React.ReactNode;
|
|
36
|
+
renderFooter?: (query: string, hasResults: boolean) => React.ReactNode;
|
|
37
|
+
renderEmpty?: (query: string) => React.ReactNode;
|
|
38
|
+
formatSelection?: (item: SgAutocompleteItem) => string;
|
|
39
|
+
itemTooltip?: (item: SgAutocompleteItem) => React.ReactNode;
|
|
40
|
+
} & RhfFieldProps;
|
|
41
|
+
export declare function SgAutocomplete<T = SgAutocompleteItem>(props: SgAutocompleteProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
//# sourceMappingURL=SgAutocomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SgAutocomplete.d.ts","sourceRoot":"","sources":["../../src/inputs/SgAutocomplete.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,kBAAkB,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAEjG,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACvG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,kBAAkB,CAAC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9E,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;IACvE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACjD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,MAAM,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7D,GAAG,aAAa,CAAC;AAQlB,wBAAgB,cAAc,CAAC,CAAC,GAAG,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,2CAyBnF"}
|