@joelbarron/react-web-dev-kit 0.1.6 → 0.1.7
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/core/buttons/JBButton.d.ts +8 -0
- package/dist/core/buttons/JBButton.d.ts.map +1 -0
- package/dist/core/buttons/JBButton.js +55 -0
- package/dist/core/buttons/index.d.ts +2 -0
- package/dist/core/buttons/index.d.ts.map +1 -0
- package/dist/core/buttons/index.js +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/layout/JBContentContainer.d.ts +5 -1
- package/dist/core/layout/JBContentContainer.d.ts.map +1 -1
- package/dist/core/layout/JBContentContainer.js +12 -4
- package/dist/core/layout/JBFormHeader.d.ts.map +1 -1
- package/dist/core/layout/JBFormHeader.js +43 -68
- package/dist/forms/JBAutocompleteField.d.ts +12 -0
- package/dist/forms/JBAutocompleteField.d.ts.map +1 -0
- package/dist/forms/JBAutocompleteField.js +20 -0
- package/dist/forms/index.d.ts +1 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -0
- package/dist/grid/JBGrid.d.ts.map +1 -1
- package/dist/grid/JBGrid.js +57 -5
- package/dist/grid/JBGridHeader.d.ts.map +1 -1
- package/dist/grid/JBGridHeader.js +13 -11
- package/dist/grid/defaults.d.ts.map +1 -1
- package/dist/grid/defaults.js +1 -0
- package/dist/grid/types.d.ts +10 -2
- package/dist/grid/types.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useJBEntityFormController.d.ts +54 -0
- package/dist/hooks/useJBEntityFormController.d.ts.map +1 -0
- package/dist/hooks/useJBEntityFormController.js +156 -0
- package/dist/utils/geo.d.ts +9 -0
- package/dist/utils/geo.d.ts.map +1 -0
- package/dist/utils/geo.js +186 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/package.json +1 -1
- package/dist/auth/ui/SignInPageTitle.d.ts +0 -6
- package/dist/auth/ui/SignInPageTitle.d.ts.map +0 -1
- package/dist/auth/ui/SignInPageTitle.js +0 -7
- package/dist/auth/ui/SignOutPageTitle.d.ts +0 -6
- package/dist/auth/ui/SignOutPageTitle.d.ts.map +0 -1
- package/dist/auth/ui/SignOutPageTitle.js +0 -7
- package/dist/auth/ui/SignUpPageTitle.d.ts +0 -6
- package/dist/auth/ui/SignUpPageTitle.d.ts.map +0 -1
- package/dist/auth/ui/SignUpPageTitle.js +0 -7
- package/dist/grid/JBFormHeader.d.ts +0 -2
- package/dist/grid/JBFormHeader.d.ts.map +0 -1
- package/dist/grid/JBFormHeader.js +0 -1
package/dist/grid/types.d.ts
CHANGED
|
@@ -16,10 +16,14 @@ export type JBGridDefaults = {
|
|
|
16
16
|
allowGrouping?: boolean;
|
|
17
17
|
filters?: unknown[];
|
|
18
18
|
sorting?: unknown[];
|
|
19
|
-
grouping?:
|
|
20
|
-
expandedGroups?:
|
|
19
|
+
grouping?: JBGridGrouping[];
|
|
20
|
+
expandedGroups?: string[];
|
|
21
|
+
expandGroupedRowsByDefault?: boolean;
|
|
21
22
|
pageSizes?: number[];
|
|
22
23
|
};
|
|
24
|
+
export type JBGridGrouping = {
|
|
25
|
+
columnName: string;
|
|
26
|
+
};
|
|
23
27
|
export type JBGridColumn = {
|
|
24
28
|
name: string;
|
|
25
29
|
title: string;
|
|
@@ -68,6 +72,8 @@ export type JBGridProps<TData extends Record<string, unknown>> = {
|
|
|
68
72
|
rows?: TData[];
|
|
69
73
|
totalCount?: number;
|
|
70
74
|
loading?: boolean;
|
|
75
|
+
isFetching?: boolean;
|
|
76
|
+
fetchingLabel?: string;
|
|
71
77
|
error?: ReactNode;
|
|
72
78
|
currentPage?: number;
|
|
73
79
|
onCurrentPageChange?: (page: number) => void;
|
|
@@ -99,6 +105,7 @@ export type JBModuleTextsConfig = {
|
|
|
99
105
|
goBackOnItemNotFoundText?: string;
|
|
100
106
|
goBackToGrid?: string;
|
|
101
107
|
formHeaderSubtitle?: string;
|
|
108
|
+
formHeaderRecordPrefix?: string;
|
|
102
109
|
};
|
|
103
110
|
export type JBModuleUrlsConfig = {
|
|
104
111
|
base?: string;
|
|
@@ -147,6 +154,7 @@ export type JBFormHeaderProps = {
|
|
|
147
154
|
onBackClick?: () => void;
|
|
148
155
|
backContent?: ReactNode;
|
|
149
156
|
isNew?: boolean;
|
|
157
|
+
recordId?: string | number;
|
|
150
158
|
title?: string;
|
|
151
159
|
dynamicTitle?: string;
|
|
152
160
|
formValues?: Record<string, unknown>;
|
package/dist/grid/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/grid/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/grid/types.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { FieldValues, UseFormReset } from 'react-hook-form';
|
|
2
|
+
type JBEntityFormRetrieveQuery<TRetrieveData> = {
|
|
3
|
+
data?: TRetrieveData | null;
|
|
4
|
+
isError: boolean;
|
|
5
|
+
error?: unknown;
|
|
6
|
+
};
|
|
7
|
+
type UseJBEntityFormControllerMessages = {
|
|
8
|
+
loadError?: string;
|
|
9
|
+
saveError?: string;
|
|
10
|
+
deleteError?: string;
|
|
11
|
+
createSuccess?: string;
|
|
12
|
+
updateSuccess?: string;
|
|
13
|
+
deleteSuccess?: string;
|
|
14
|
+
};
|
|
15
|
+
type UseJBEntityFormControllerOptions<TFormValues extends FieldValues, TRetrieveData, TCreateResponse> = {
|
|
16
|
+
isNew: boolean;
|
|
17
|
+
itemId?: string;
|
|
18
|
+
defaultValues: TFormValues;
|
|
19
|
+
retrieveQuery: JBEntityFormRetrieveQuery<TRetrieveData>;
|
|
20
|
+
reset: UseFormReset<TFormValues>;
|
|
21
|
+
mapRetrieveToValues: (data: TRetrieveData) => TFormValues;
|
|
22
|
+
createItem: (formData: TFormValues) => Promise<TCreateResponse>;
|
|
23
|
+
updateItem: (id: string, formData: TFormValues) => Promise<unknown>;
|
|
24
|
+
deleteItem: (id: string) => Promise<unknown>;
|
|
25
|
+
navigateToList: () => void;
|
|
26
|
+
navigateToEdit: (id: string | number) => void;
|
|
27
|
+
onShowError: (error: unknown, fallbackMessage: string) => void;
|
|
28
|
+
onShowSuccess?: (message: string) => void;
|
|
29
|
+
getCreatedId?: (response: TCreateResponse) => string | number | undefined;
|
|
30
|
+
messages?: UseJBEntityFormControllerMessages;
|
|
31
|
+
};
|
|
32
|
+
type UseJBEntityFormControllerResult<TFormValues extends FieldValues> = {
|
|
33
|
+
formDisabled: boolean;
|
|
34
|
+
loadedValues: TFormValues;
|
|
35
|
+
deleteDialogOpen: boolean;
|
|
36
|
+
setDeleteDialogOpen: (open: boolean) => void;
|
|
37
|
+
handleStartEdit: () => void;
|
|
38
|
+
handleCancelEdit: () => void;
|
|
39
|
+
handleSave: (formData: TFormValues) => Promise<void>;
|
|
40
|
+
handleDelete: () => Promise<void>;
|
|
41
|
+
handleSubmitOnEnter: (event: {
|
|
42
|
+
key: string;
|
|
43
|
+
defaultPrevented?: boolean;
|
|
44
|
+
altKey?: boolean;
|
|
45
|
+
ctrlKey?: boolean;
|
|
46
|
+
metaKey?: boolean;
|
|
47
|
+
shiftKey?: boolean;
|
|
48
|
+
target: EventTarget | null;
|
|
49
|
+
preventDefault: () => void;
|
|
50
|
+
}, submit: () => void) => void;
|
|
51
|
+
};
|
|
52
|
+
export declare function useJBEntityFormController<TFormValues extends FieldValues, TRetrieveData, TCreateResponse>(options: UseJBEntityFormControllerOptions<TFormValues, TRetrieveData, TCreateResponse>): UseJBEntityFormControllerResult<TFormValues>;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=useJBEntityFormController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useJBEntityFormController.d.ts","sourceRoot":"","sources":["../../src/hooks/useJBEntityFormController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5D,KAAK,yBAAyB,CAAC,aAAa,IAAI;IAC9C,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,gCAAgC,CAAC,WAAW,SAAS,WAAW,EAAE,aAAa,EAAE,eAAe,IAAI;IACvG,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,WAAW,CAAC;IAC3B,aAAa,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACxD,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACjC,mBAAmB,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,WAAW,CAAC;IAC1D,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,EAAE,iCAAiC,CAAC;CAC9C,CAAC;AAEF,KAAK,+BAA+B,CAAC,WAAW,SAAS,WAAW,IAAI;IACtE,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,mBAAmB,EAAE,CACnB,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;QAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;KAC5B,EACD,MAAM,EAAE,MAAM,IAAI,KACf,IAAI,CAAC;CACX,CAAC;AAWF,wBAAgB,yBAAyB,CAAC,WAAW,SAAS,WAAW,EAAE,aAAa,EAAE,eAAe,EACvG,OAAO,EAAE,gCAAgC,CAAC,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,GACrF,+BAA+B,CAAC,WAAW,CAAC,CAkM9C"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from 'react';
|
|
2
|
+
const DEFAULT_MESSAGES = {
|
|
3
|
+
loadError: 'No se pudo cargar el registro.',
|
|
4
|
+
saveError: 'No se pudo guardar el registro.',
|
|
5
|
+
deleteError: 'No se pudo eliminar el registro.',
|
|
6
|
+
createSuccess: 'Registro creado correctamente.',
|
|
7
|
+
updateSuccess: 'Registro actualizado correctamente.',
|
|
8
|
+
deleteSuccess: 'Registro eliminado correctamente.'
|
|
9
|
+
};
|
|
10
|
+
export function useJBEntityFormController(options) {
|
|
11
|
+
const { isNew, itemId, defaultValues, retrieveQuery, reset, mapRetrieveToValues, createItem, updateItem, deleteItem, navigateToList, navigateToEdit, onShowError, onShowSuccess, getCreatedId, messages } = options;
|
|
12
|
+
const mapRetrieveToValuesRef = useRef(mapRetrieveToValues);
|
|
13
|
+
const onShowErrorRef = useRef(onShowError);
|
|
14
|
+
const navigateToListRef = useRef(navigateToList);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
mapRetrieveToValuesRef.current = mapRetrieveToValues;
|
|
17
|
+
}, [mapRetrieveToValues]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
onShowErrorRef.current = onShowError;
|
|
20
|
+
}, [onShowError]);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
navigateToListRef.current = navigateToList;
|
|
23
|
+
}, [navigateToList]);
|
|
24
|
+
const resolvedMessages = {
|
|
25
|
+
...DEFAULT_MESSAGES,
|
|
26
|
+
...messages
|
|
27
|
+
};
|
|
28
|
+
const [formDisabled, setFormDisabled] = useState(!isNew);
|
|
29
|
+
const [loadedValues, setLoadedValues] = useState(defaultValues);
|
|
30
|
+
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
|
31
|
+
const skipRetrieveErrorAfterDeleteRef = useRef(false);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (isNew) {
|
|
34
|
+
reset(defaultValues);
|
|
35
|
+
setLoadedValues(defaultValues);
|
|
36
|
+
setFormDisabled(false);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (retrieveQuery.isError) {
|
|
40
|
+
if (skipRetrieveErrorAfterDeleteRef.current) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
onShowErrorRef.current(retrieveQuery.error, resolvedMessages.loadError);
|
|
44
|
+
navigateToListRef.current();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!retrieveQuery.data) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const values = mapRetrieveToValuesRef.current(retrieveQuery.data);
|
|
51
|
+
setLoadedValues(values);
|
|
52
|
+
reset(values);
|
|
53
|
+
setFormDisabled(true);
|
|
54
|
+
}, [
|
|
55
|
+
defaultValues,
|
|
56
|
+
isNew,
|
|
57
|
+
reset,
|
|
58
|
+
resolvedMessages.loadError,
|
|
59
|
+
retrieveQuery.data,
|
|
60
|
+
retrieveQuery.error,
|
|
61
|
+
retrieveQuery.isError
|
|
62
|
+
]);
|
|
63
|
+
const handleSave = async (formData) => {
|
|
64
|
+
try {
|
|
65
|
+
if (isNew) {
|
|
66
|
+
const response = await createItem(formData);
|
|
67
|
+
onShowSuccess?.(resolvedMessages.createSuccess);
|
|
68
|
+
const createdId = getCreatedId?.(response) ?? response?.data?.id;
|
|
69
|
+
if (createdId !== undefined && createdId !== null) {
|
|
70
|
+
navigateToEdit(createdId);
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (!itemId) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
await updateItem(itemId, formData);
|
|
78
|
+
setLoadedValues(formData);
|
|
79
|
+
setFormDisabled(true);
|
|
80
|
+
onShowSuccess?.(resolvedMessages.updateSuccess);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
onShowError(error, resolvedMessages.saveError);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const handleDelete = async () => {
|
|
87
|
+
if (!itemId) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
skipRetrieveErrorAfterDeleteRef.current = true;
|
|
92
|
+
await deleteItem(itemId);
|
|
93
|
+
setDeleteDialogOpen(false);
|
|
94
|
+
onShowSuccess?.(resolvedMessages.deleteSuccess);
|
|
95
|
+
navigateToList();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
skipRetrieveErrorAfterDeleteRef.current = false;
|
|
99
|
+
onShowError(error, resolvedMessages.deleteError);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const handleStartEdit = () => {
|
|
103
|
+
setFormDisabled(false);
|
|
104
|
+
};
|
|
105
|
+
const handleCancelEdit = () => {
|
|
106
|
+
if (isNew) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
reset(loadedValues);
|
|
110
|
+
setFormDisabled(true);
|
|
111
|
+
};
|
|
112
|
+
const handleSubmitOnEnter = (event, submit) => {
|
|
113
|
+
if (event.key !== 'Enter') {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (event.defaultPrevented) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (formDisabled || deleteDialogOpen) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const targetElement = event.target;
|
|
126
|
+
if (targetElement instanceof HTMLElement) {
|
|
127
|
+
const tagName = targetElement.tagName.toLowerCase();
|
|
128
|
+
const inputType = targetElement.getAttribute('type')?.toLowerCase();
|
|
129
|
+
const role = targetElement.getAttribute('role')?.toLowerCase();
|
|
130
|
+
const ariaAutocomplete = targetElement.getAttribute('aria-autocomplete')?.toLowerCase();
|
|
131
|
+
if (tagName === 'textarea' ||
|
|
132
|
+
tagName === 'button' ||
|
|
133
|
+
role === 'button' ||
|
|
134
|
+
role === 'combobox' ||
|
|
135
|
+
ariaAutocomplete === 'list' ||
|
|
136
|
+
targetElement.isContentEditable ||
|
|
137
|
+
inputType === 'submit' ||
|
|
138
|
+
inputType === 'button') {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
event.preventDefault();
|
|
143
|
+
submit();
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
formDisabled,
|
|
147
|
+
loadedValues,
|
|
148
|
+
deleteDialogOpen,
|
|
149
|
+
setDeleteDialogOpen,
|
|
150
|
+
handleStartEdit,
|
|
151
|
+
handleCancelEdit,
|
|
152
|
+
handleSave,
|
|
153
|
+
handleDelete,
|
|
154
|
+
handleSubmitOnEnter
|
|
155
|
+
};
|
|
156
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type JBGeoOption = {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const jbCountryCodeToFlagEmoji: (countryCode: string) => string;
|
|
7
|
+
export declare const getJBCountryOptions: (locale?: string) => JBGeoOption[];
|
|
8
|
+
export declare const getJBStateOptionsByCountry: (countryCode?: string | null) => JBGeoOption[];
|
|
9
|
+
//# sourceMappingURL=geo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo.d.ts","sourceRoot":"","sources":["../../src/utils/geo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA4KF,eAAO,MAAM,wBAAwB,GAAI,aAAa,MAAM,KAAG,MAQ9D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,eAAgB,KAAG,WAAW,EAkBjE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,cAAc,MAAM,GAAG,IAAI,KAAG,WAAW,EAOnF,CAAC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
const COUNTRY_PRIORITY = ['MX', 'US', 'ES', 'AR', 'CO', 'CL', 'PE', 'EC', 'BR', 'CA'];
|
|
2
|
+
const FALLBACK_COUNTRY_CODES = [
|
|
3
|
+
'MX',
|
|
4
|
+
'US',
|
|
5
|
+
'CA',
|
|
6
|
+
'ES',
|
|
7
|
+
'AR',
|
|
8
|
+
'CO',
|
|
9
|
+
'CL',
|
|
10
|
+
'PE',
|
|
11
|
+
'EC',
|
|
12
|
+
'UY',
|
|
13
|
+
'PY',
|
|
14
|
+
'BO',
|
|
15
|
+
'BR',
|
|
16
|
+
'FR',
|
|
17
|
+
'DE',
|
|
18
|
+
'IT',
|
|
19
|
+
'GB',
|
|
20
|
+
'PT'
|
|
21
|
+
];
|
|
22
|
+
const MEXICO_STATES = [
|
|
23
|
+
{ value: 'Aguascalientes', label: 'Aguascalientes' },
|
|
24
|
+
{ value: 'Baja California', label: 'Baja California' },
|
|
25
|
+
{ value: 'Baja California Sur', label: 'Baja California Sur' },
|
|
26
|
+
{ value: 'Campeche', label: 'Campeche' },
|
|
27
|
+
{ value: 'Chiapas', label: 'Chiapas' },
|
|
28
|
+
{ value: 'Chihuahua', label: 'Chihuahua' },
|
|
29
|
+
{ value: 'Ciudad de Mexico', label: 'Ciudad de Mexico' },
|
|
30
|
+
{ value: 'Coahuila', label: 'Coahuila' },
|
|
31
|
+
{ value: 'Colima', label: 'Colima' },
|
|
32
|
+
{ value: 'Durango', label: 'Durango' },
|
|
33
|
+
{ value: 'Estado de Mexico', label: 'Estado de Mexico' },
|
|
34
|
+
{ value: 'Guanajuato', label: 'Guanajuato' },
|
|
35
|
+
{ value: 'Guerrero', label: 'Guerrero' },
|
|
36
|
+
{ value: 'Hidalgo', label: 'Hidalgo' },
|
|
37
|
+
{ value: 'Jalisco', label: 'Jalisco' },
|
|
38
|
+
{ value: 'Michoacan', label: 'Michoacan' },
|
|
39
|
+
{ value: 'Morelos', label: 'Morelos' },
|
|
40
|
+
{ value: 'Nayarit', label: 'Nayarit' },
|
|
41
|
+
{ value: 'Nuevo Leon', label: 'Nuevo Leon' },
|
|
42
|
+
{ value: 'Oaxaca', label: 'Oaxaca' },
|
|
43
|
+
{ value: 'Puebla', label: 'Puebla' },
|
|
44
|
+
{ value: 'Queretaro', label: 'Queretaro' },
|
|
45
|
+
{ value: 'Quintana Roo', label: 'Quintana Roo' },
|
|
46
|
+
{ value: 'San Luis Potosi', label: 'San Luis Potosi' },
|
|
47
|
+
{ value: 'Sinaloa', label: 'Sinaloa' },
|
|
48
|
+
{ value: 'Sonora', label: 'Sonora' },
|
|
49
|
+
{ value: 'Tabasco', label: 'Tabasco' },
|
|
50
|
+
{ value: 'Tamaulipas', label: 'Tamaulipas' },
|
|
51
|
+
{ value: 'Tlaxcala', label: 'Tlaxcala' },
|
|
52
|
+
{ value: 'Veracruz', label: 'Veracruz' },
|
|
53
|
+
{ value: 'Yucatan', label: 'Yucatan' },
|
|
54
|
+
{ value: 'Zacatecas', label: 'Zacatecas' }
|
|
55
|
+
];
|
|
56
|
+
const UNITED_STATES = [
|
|
57
|
+
{ value: 'Alabama', label: 'Alabama' },
|
|
58
|
+
{ value: 'Alaska', label: 'Alaska' },
|
|
59
|
+
{ value: 'Arizona', label: 'Arizona' },
|
|
60
|
+
{ value: 'Arkansas', label: 'Arkansas' },
|
|
61
|
+
{ value: 'California', label: 'California' },
|
|
62
|
+
{ value: 'Colorado', label: 'Colorado' },
|
|
63
|
+
{ value: 'Connecticut', label: 'Connecticut' },
|
|
64
|
+
{ value: 'Delaware', label: 'Delaware' },
|
|
65
|
+
{ value: 'Florida', label: 'Florida' },
|
|
66
|
+
{ value: 'Georgia', label: 'Georgia' },
|
|
67
|
+
{ value: 'Hawaii', label: 'Hawaii' },
|
|
68
|
+
{ value: 'Idaho', label: 'Idaho' },
|
|
69
|
+
{ value: 'Illinois', label: 'Illinois' },
|
|
70
|
+
{ value: 'Indiana', label: 'Indiana' },
|
|
71
|
+
{ value: 'Iowa', label: 'Iowa' },
|
|
72
|
+
{ value: 'Kansas', label: 'Kansas' },
|
|
73
|
+
{ value: 'Kentucky', label: 'Kentucky' },
|
|
74
|
+
{ value: 'Louisiana', label: 'Louisiana' },
|
|
75
|
+
{ value: 'Maine', label: 'Maine' },
|
|
76
|
+
{ value: 'Maryland', label: 'Maryland' },
|
|
77
|
+
{ value: 'Massachusetts', label: 'Massachusetts' },
|
|
78
|
+
{ value: 'Michigan', label: 'Michigan' },
|
|
79
|
+
{ value: 'Minnesota', label: 'Minnesota' },
|
|
80
|
+
{ value: 'Mississippi', label: 'Mississippi' },
|
|
81
|
+
{ value: 'Missouri', label: 'Missouri' },
|
|
82
|
+
{ value: 'Montana', label: 'Montana' },
|
|
83
|
+
{ value: 'Nebraska', label: 'Nebraska' },
|
|
84
|
+
{ value: 'Nevada', label: 'Nevada' },
|
|
85
|
+
{ value: 'New Hampshire', label: 'New Hampshire' },
|
|
86
|
+
{ value: 'New Jersey', label: 'New Jersey' },
|
|
87
|
+
{ value: 'New Mexico', label: 'New Mexico' },
|
|
88
|
+
{ value: 'New York', label: 'New York' },
|
|
89
|
+
{ value: 'North Carolina', label: 'North Carolina' },
|
|
90
|
+
{ value: 'North Dakota', label: 'North Dakota' },
|
|
91
|
+
{ value: 'Ohio', label: 'Ohio' },
|
|
92
|
+
{ value: 'Oklahoma', label: 'Oklahoma' },
|
|
93
|
+
{ value: 'Oregon', label: 'Oregon' },
|
|
94
|
+
{ value: 'Pennsylvania', label: 'Pennsylvania' },
|
|
95
|
+
{ value: 'Rhode Island', label: 'Rhode Island' },
|
|
96
|
+
{ value: 'South Carolina', label: 'South Carolina' },
|
|
97
|
+
{ value: 'South Dakota', label: 'South Dakota' },
|
|
98
|
+
{ value: 'Tennessee', label: 'Tennessee' },
|
|
99
|
+
{ value: 'Texas', label: 'Texas' },
|
|
100
|
+
{ value: 'Utah', label: 'Utah' },
|
|
101
|
+
{ value: 'Vermont', label: 'Vermont' },
|
|
102
|
+
{ value: 'Virginia', label: 'Virginia' },
|
|
103
|
+
{ value: 'Washington', label: 'Washington' },
|
|
104
|
+
{ value: 'West Virginia', label: 'West Virginia' },
|
|
105
|
+
{ value: 'Wisconsin', label: 'Wisconsin' },
|
|
106
|
+
{ value: 'Wyoming', label: 'Wyoming' }
|
|
107
|
+
];
|
|
108
|
+
const STATES_BY_COUNTRY = {
|
|
109
|
+
MX: MEXICO_STATES,
|
|
110
|
+
US: UNITED_STATES
|
|
111
|
+
};
|
|
112
|
+
const countryOptionsCache = new Map();
|
|
113
|
+
const isValidCountryCode = (code) => /^[A-Z]{2}$/.test(code);
|
|
114
|
+
const sortCountryCodes = (countryCodes) => {
|
|
115
|
+
return [...countryCodes].sort((left, right) => {
|
|
116
|
+
const leftIndex = COUNTRY_PRIORITY.indexOf(left);
|
|
117
|
+
const rightIndex = COUNTRY_PRIORITY.indexOf(right);
|
|
118
|
+
if (leftIndex >= 0 && rightIndex >= 0) {
|
|
119
|
+
return leftIndex - rightIndex;
|
|
120
|
+
}
|
|
121
|
+
if (leftIndex >= 0) {
|
|
122
|
+
return -1;
|
|
123
|
+
}
|
|
124
|
+
if (rightIndex >= 0) {
|
|
125
|
+
return 1;
|
|
126
|
+
}
|
|
127
|
+
return left.localeCompare(right);
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
const resolveCountryCodes = () => {
|
|
131
|
+
const intlValuesOf = Intl.supportedValuesOf;
|
|
132
|
+
if (typeof intlValuesOf === 'function') {
|
|
133
|
+
try {
|
|
134
|
+
// NOTE: "region" is not supported in all runtimes and may throw RangeError.
|
|
135
|
+
const values = intlValuesOf('region')
|
|
136
|
+
.map((value) => value.toUpperCase())
|
|
137
|
+
.filter((value) => isValidCountryCode(value));
|
|
138
|
+
if (values.length > 0) {
|
|
139
|
+
return sortCountryCodes(Array.from(new Set(values)));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (_error) {
|
|
143
|
+
// Fallback list is used when runtime does not support region values.
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return sortCountryCodes(FALLBACK_COUNTRY_CODES);
|
|
147
|
+
};
|
|
148
|
+
const resolveCountryName = (countryCode, locale) => {
|
|
149
|
+
if (typeof Intl.DisplayNames !== 'function') {
|
|
150
|
+
return countryCode;
|
|
151
|
+
}
|
|
152
|
+
const displayNames = new Intl.DisplayNames([locale], { type: 'region' });
|
|
153
|
+
return displayNames.of(countryCode) ?? countryCode;
|
|
154
|
+
};
|
|
155
|
+
export const jbCountryCodeToFlagEmoji = (countryCode) => {
|
|
156
|
+
const normalized = countryCode.trim().toUpperCase();
|
|
157
|
+
if (!isValidCountryCode(normalized)) {
|
|
158
|
+
return '🏳️';
|
|
159
|
+
}
|
|
160
|
+
const points = [...normalized].map((char) => 127397 + char.charCodeAt(0));
|
|
161
|
+
return String.fromCodePoint(...points);
|
|
162
|
+
};
|
|
163
|
+
export const getJBCountryOptions = (locale = 'es-MX') => {
|
|
164
|
+
const cacheKey = locale.toLowerCase();
|
|
165
|
+
const cached = countryOptionsCache.get(cacheKey);
|
|
166
|
+
if (cached) {
|
|
167
|
+
return cached;
|
|
168
|
+
}
|
|
169
|
+
const options = resolveCountryCodes().map((countryCode) => {
|
|
170
|
+
const countryName = resolveCountryName(countryCode, locale);
|
|
171
|
+
const flag = jbCountryCodeToFlagEmoji(countryCode);
|
|
172
|
+
return {
|
|
173
|
+
value: countryCode,
|
|
174
|
+
label: `${flag} ${countryName}`
|
|
175
|
+
};
|
|
176
|
+
});
|
|
177
|
+
countryOptionsCache.set(cacheKey, options);
|
|
178
|
+
return options;
|
|
179
|
+
};
|
|
180
|
+
export const getJBStateOptionsByCountry = (countryCode) => {
|
|
181
|
+
const normalizedCountry = (countryCode ?? '').trim().toUpperCase();
|
|
182
|
+
if (!normalizedCountry) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
return STATES_BY_COUNTRY[normalizedCountry] ?? [];
|
|
186
|
+
};
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignInPageTitle.d.ts","sourceRoot":"","sources":["../../../src/auth/ui/SignInPageTitle.tsx"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAiB1D"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
|
-
import Typography from '@mui/material/Typography';
|
|
4
|
-
export function SignInPageTitle(props) {
|
|
5
|
-
const { logoSrc = '/assets/images/logo/logo.svg' } = props;
|
|
6
|
-
return (_jsxs(Box, { sx: { width: '100%', display: 'flex', flexDirection: 'column', alignItems: 'center' }, children: [_jsx("img", { style: { width: 48 }, src: logoSrc, alt: "logo" }), _jsx(Typography, { sx: { mt: 4, fontSize: 36, lineHeight: 1.25, fontWeight: 800, letterSpacing: '-0.02em' }, children: "Iniciar sesi\u00F3n" })] }));
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignOutPageTitle.d.ts","sourceRoot":"","sources":["../../../src/auth/ui/SignOutPageTitle.tsx"],"names":[],"mappings":"AAGA,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAiB5D"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
|
-
import Typography from '@mui/material/Typography';
|
|
4
|
-
export function SignOutPageTitle(props) {
|
|
5
|
-
const { logoSrc = '/assets/images/logo/logo.svg' } = props;
|
|
6
|
-
return (_jsxs(Box, { sx: { width: '100%' }, children: [_jsx("img", { style: { width: 48, display: 'block', marginInline: 'auto' }, src: logoSrc, alt: "logo" }), _jsx(Typography, { sx: { mt: 4, textAlign: 'center', fontSize: 36, lineHeight: 1.25, fontWeight: 800, letterSpacing: '-0.02em' }, children: "Has cerrado sesi\u00F3n" })] }));
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignUpPageTitle.d.ts","sourceRoot":"","sources":["../../../src/auth/ui/SignUpPageTitle.tsx"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAiB1D"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
|
-
import Typography from '@mui/material/Typography';
|
|
4
|
-
export function SignUpPageTitle(props) {
|
|
5
|
-
const { logoSrc = '/assets/images/logo/logo.svg' } = props;
|
|
6
|
-
return (_jsxs(Box, { sx: { width: '100%' }, children: [_jsx("img", { style: { width: 48 }, src: logoSrc, alt: "logo" }), _jsx(Typography, { sx: { mt: 4, fontSize: 36, lineHeight: 1.25, fontWeight: 800, letterSpacing: '-0.02em' }, children: "Crear cuenta" })] }));
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JBFormHeader.d.ts","sourceRoot":"","sources":["../../src/grid/JBFormHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { JBFormHeader } from '../core/layout/JBFormHeader';
|