@apia/api 0.1.1 → 0.2.2
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/LICENSE.md +20 -20
- package/README.md +26 -26
- package/dist/index.d.ts +15 -12
- package/dist/index.js +1700 -2
- package/dist/index.js.map +1 -1
- package/package.json +8 -9
- package/cleanDist.json +0 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/ApiaApiContext.tsx","../src/apiaApi.ts","../src/fields/ApiaApiCheckbox.tsx","../src/fields/ApiaApiFileInput.tsx","../src/fields/ApiaApiInput.tsx","../src/fields/ApiaApiRadio.tsx","../src/fields/ApiaApiSelect.tsx","../src/fields/ApiaApiFieldsContainer.tsx","../src/buttons/ApiaApiButtonsContainer.tsx","../src/ApiaApiHandler.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport * as React from 'react';\n\nlet apiaApiId: string | undefined;\n\nexport function getApiaApiId() {\n if (!apiaApiId) throw new Error('There is no apia api id');\n return apiaApiId;\n}\n\nconst ApiaApiId = createContext<string | undefined>('apiaApi');\n\nconst ApiaApiContext = ({\n children,\n id,\n}: {\n id: string;\n children: React.ReactNode;\n}) => {\n apiaApiId = id;\n return <ApiaApiId.Provider value={id}>{children}</ApiaApiId.Provider>;\n};\n\nexport default React.memo(ApiaApiContext);\n","/* eslint-disable @typescript-eslint/no-invalid-void-type */\nimport axios, { AxiosResponse } from 'axios';\nimport { merge } from 'lodash';\nimport QueryString from 'qs';\nimport { session } from '@apia/session';\nimport {\n arrayOrArray,\n parseXmlAsync,\n EventEmitter,\n TModify,\n TApiaAction,\n TApiaSystemMessageObj,\n debugDispatcher,\n TNotificationMessage,\n} from '@apia/util';\nimport {\n dispatchNotifications,\n getNotificationMessageObj,\n notify,\n} from '@apia/notifications';\nimport { handle } from './ApiaApiHandler';\nimport {\n IApiaApiRequestConfig,\n TApiaApiConfigurator,\n TApiaApiResult,\n TColors,\n} from './types';\n\ndebugDispatcher.on(\n 'parseXml',\n async ([text]) => {\n const result = await parseXmlAsync<unknown>(text as string);\n console.info(result);\n },\n 'Acepta un parámetro de tipo string y realiza un parseo como si fuera xml, convirtiéndolo a objeto javascript.',\n);\n\nconst defaultConfig: IApiaApiRequestConfig<unknown> = {\n debug: true,\n colors: {\n exception: 'red',\n alert: 'yellow',\n message: 'lightgreen',\n },\n handleLoad: false,\n};\n\nconst STORED_CONFIG = 'ApiaApiConfig';\n\nlet forcedConfig: Partial<IApiaApiRequestConfig<unknown>> = {};\nconst storedConfig = localStorage.getItem(STORED_CONFIG);\nif (storedConfig)\n forcedConfig = JSON.parse(storedConfig) as Partial<\n IApiaApiRequestConfig<unknown>\n >;\n\nexport function getApiaApiConfigurator(): TApiaApiConfigurator {\n return {\n reset() {\n forcedConfig = {};\n localStorage.removeItem(STORED_CONFIG);\n },\n config(newConfig) {\n if (\n newConfig.notificationsCategory ||\n newConfig.axiosConfig ||\n newConfig.modalConfiguration ||\n newConfig.handleLoad ||\n newConfig.queryData ||\n newConfig.stringifyOptions ||\n newConfig.validateResponse\n )\n throw new Error('Operación ilegal');\n\n const toStoreConfig = merge(forcedConfig, newConfig);\n localStorage.setItem(STORED_CONFIG, JSON.stringify(toStoreConfig));\n forcedConfig = toStoreConfig;\n console.log('Se guardó la configuración correctamente', {\n config: toStoreConfig,\n });\n },\n shout() {\n console.log({ config: getConfig({}) });\n },\n theme(theme) {\n if (theme.toLowerCase() === 'dark') {\n getApiaApiConfigurator().config({\n colors: {\n exception: 'red',\n alert: 'yellow',\n message: 'lightgreen',\n },\n });\n } else if (theme.toLowerCase() === 'light') {\n getApiaApiConfigurator().config({\n colors: {\n exception: 'red',\n alert: '#e0e006',\n message: 'darkgreen',\n },\n });\n } else {\n console.log(`Tema ${theme} desconocido, prueba 'light' o 'dark'.`);\n return;\n }\n\n console.log(`Tema ${theme} establecido correctamente.`);\n },\n };\n}\n\nfunction getConfig<LoadType>(\n outerBehaveConfig?: IApiaApiRequestConfig<LoadType>,\n) {\n return merge({}, defaultConfig, outerBehaveConfig, forcedConfig);\n}\n\nfunction makeUrl(\n url: string,\n queryData: IApiaApiRequestConfig<unknown>['queryData'],\n stringifyOptions: IApiaApiRequestConfig<unknown>['stringifyOptions'],\n) {\n let finalUrl = url;\n const questionMarkIndex = finalUrl.indexOf('?');\n\n if (questionMarkIndex === -1) finalUrl += '?';\n else if (questionMarkIndex !== finalUrl.length - 1 && !finalUrl.endsWith('&'))\n finalUrl += '&';\n let parsedUrl = `${finalUrl}${\n queryData ? QueryString.stringify(queryData, stringifyOptions) : ''\n }`;\n if (parsedUrl.endsWith('&') || parsedUrl.endsWith('?')) {\n parsedUrl = parsedUrl.slice(0, parsedUrl.length - 1);\n }\n return parsedUrl;\n}\n\nconst getURLActionName = (url: string): string => {\n const actionIdx = url.match(/action=(\\w+)/)?.[1];\n return actionIdx ?? 'noAction';\n};\n\nexport const ApiaActions = new (class ApiaActions extends EventEmitter<{\n action: TModify<TApiaAction, { param: string[] }>;\n}> {})();\n\nfunction getColor(\n color: keyof TColors,\n colors: TColors = defaultConfig.colors ?? {\n exception: 'red',\n alert: 'yellow',\n message: 'green',\n },\n) {\n return colors[color] as string;\n}\n\nconst handleWrongResponse = (error: Error) => {\n let errorMessage: string;\n if (typeof error !== 'string') {\n if (error.message) errorMessage = error.message;\n else errorMessage = error.toString();\n } else errorMessage = error;\n\n notify({\n type: 'danger',\n message: error.message.replaceAll('AxiosError', 'Error'),\n });\n console.log('%c ', 'font-size:10vh');\n console.log('%cError in ApiaApi', 'color:red;font-size:2em;font-weight:bold');\n console.log(`red/${errorMessage}`, { error });\n console.log('%c ', 'font-size:10vh');\n};\n\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\n return (response.headers['content-type'] as string).match('application/json');\n}\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\n return (response.headers['content-type'] as string).match(\n /(?:application|text)?\\/xml/,\n );\n}\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\n return (response.headers['content-type'] as string).match(\n /(?:application|text)?\\/html/,\n );\n}\n\nfunction handleActions(actions: TApiaSystemMessageObj['actions']) {\n if (actions) {\n if (getConfig().debug)\n console.log(\n '%cHandled actions: ',\n `color: ${getConfig().colors?.message ?? 'green'}`,\n { actions },\n );\n const actionsArray = arrayOrArray(actions.action);\n actionsArray.forEach((action) => {\n ApiaActions.emit('action', {\n ...action,\n param: arrayOrArray(action.param),\n });\n });\n }\n}\nfunction handleOnClose({\n exceptions,\n onClose,\n sysExceptions,\n sysMessages,\n}: TModify<TNotificationMessage, { onClose: string }>) {\n try {\n import(\n /* webpackChunkName: \"api-[request]\" */ `/api/onClose/${onClose}.ts`\n ).then(\n (func: { default: () => void }) => {\n if (exceptions || sysExceptions || sysMessages) {\n const notificationsObject = getNotificationMessageObj({\n exceptions,\n onClose,\n sysExceptions,\n sysMessages,\n });\n if (notificationsObject)\n notificationsObject.forEach((notification) => {\n notify({\n ...notification,\n onClose: func.default,\n });\n });\n else func.default();\n } else func.default();\n },\n (e) => {\n notify({\n message: `onClose action not found: ${String(e)}`,\n type: 'danger',\n });\n },\n );\n } catch (e) {\n parseMessages({ exceptions, sysExceptions, sysMessages });\n console.error('Error while handling onClose');\n console.error(e);\n }\n}\n\nexport function parseMessages(response: Record<string, unknown>) {\n if (!response) return;\n const { exceptions, sysMessages, sysExceptions } = response;\n if (exceptions || sysExceptions || sysMessages) {\n try {\n dispatchNotifications({\n exceptions,\n sysExceptions,\n sysMessages,\n } as TNotificationMessage);\n } catch (e: unknown) {\n handleWrongResponse(new Error(e as string));\n }\n }\n}\n\nexport const parseSuccessfulResponse = async <\n LoadType extends Record<string, unknown>,\n>(\n response: AxiosResponse<string>,\n currentUrl: string,\n outerBehaveConfig: IApiaApiRequestConfig<LoadType> = defaultConfig,\n) => {\n const behaveConfig = getConfig(outerBehaveConfig);\n\n let parsedObj: TApiaSystemMessageObj<LoadType> | void;\n if (isJsonResponse(response)) {\n if (typeof response.data === 'string')\n parsedObj = JSON.parse(\n response.data.trim(),\n ) as TApiaSystemMessageObj<LoadType> | void;\n else if (typeof response.data === 'object' && response.data)\n parsedObj = response.data;\n } else if (isXmlResponse(response)) {\n parsedObj = await parseXmlAsync<LoadType>(response.data).catch(\n (e: unknown) => {\n handleWrongResponse(new Error(e as string));\n },\n );\n } else if (isHtmlResponse(response)) {\n console.error(\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\n );\n return null;\n }\n\n if (behaveConfig.validateResponse) {\n const validateResult = await behaveConfig.validateResponse({\n ...response,\n data: parsedObj?.load ?? parsedObj,\n });\n if (typeof validateResult === 'string')\n throw new Error(`Validation error: ${validateResult}`);\n else if (!validateResult) {\n throw new Error('Error');\n }\n }\n\n if (parsedObj) {\n const {\n actions,\n onClose,\n exceptions,\n sysExceptions,\n sysMessages,\n load,\n ...rest\n } = parsedObj; // Session handling\n if (rest.code === '-1' && exceptions) {\n session.invalidate();\n return null;\n }\n\n if (exceptions && behaveConfig.debug) {\n console.log(\n `%cparseSuccessfulResponse`,\n `color: ${getColor('exception', behaveConfig.colors)}`,\n {\n exceptions,\n },\n );\n }\n if (sysExceptions && behaveConfig.debug) {\n console.log(\n `%cparseSuccessfulResponse`,\n `color: ${getColor('exception', behaveConfig.colors)}`,\n {\n sysExceptions,\n },\n );\n }\n if (sysMessages && behaveConfig.debug) {\n console.log(\n `%cparseSuccessfulResponse`,\n `color: ${getColor('alert', behaveConfig.colors)}`,\n {\n sysMessages,\n },\n );\n }\n\n handleActions(actions);\n\n if (behaveConfig.handleLoad && onClose)\n handleOnClose({\n exceptions,\n onClose,\n sysExceptions,\n sysMessages,\n });\n else parseMessages({ exceptions, sysExceptions, sysMessages });\n\n if (load) {\n if (behaveConfig.handleLoad) {\n console.log(\n `%chandleLoad`,\n `color: ${getColor('message', behaveConfig.colors)}`,\n {\n load,\n },\n );\n if (\n !handle(load, currentUrl, {\n methodsPath: outerBehaveConfig.methodsPath,\n modalConfiguration: {\n ...behaveConfig.modalConfiguration,\n onClose: () => {\n if (onClose)\n handleOnClose({\n exceptions,\n onClose,\n sysExceptions,\n sysMessages,\n });\n if (behaveConfig.modalConfiguration?.onClose)\n behaveConfig.modalConfiguration?.onClose();\n },\n },\n })\n ) {\n console.log(\n `%cunhandledLoad -> There is no handler defined`,\n `color: ${getColor('exception', behaveConfig.colors)}`,\n {\n load,\n },\n );\n }\n }\n return { ...load, sysMessages, exceptions, sysExceptions };\n }\n return { ...(rest as LoadType), sysMessages, exceptions, sysExceptions };\n }\n\n return null;\n};\n\nexport type TApiaApiAxiosResponse<LoadType> = AxiosResponse<LoadType | null> & {\n hasError: boolean;\n hasMessages: boolean;\n};\n\nasync function handleResponse<LoadType extends Record<string, unknown>>(\n result: AxiosResponse<string> | void,\n currentUrl: string,\n outerBehaveConfig: IApiaApiRequestConfig<LoadType> = defaultConfig,\n): Promise<TApiaApiAxiosResponse<LoadType> | null> {\n const behaveConfig = getConfig(outerBehaveConfig);\n try {\n if (!result || result.data === undefined) {\n if (behaveConfig.debug)\n console.log(\n `%cApiaApi wrong response`,\n `color: ${getColor('alert', behaveConfig.colors)}`,\n );\n } else {\n const parsedResponse = await parseSuccessfulResponse<LoadType>(\n result,\n currentUrl,\n behaveConfig,\n );\n\n const action = getURLActionName(currentUrl);\n if (behaveConfig.debug)\n console.log(\n `%c <- ApiaApi.${result.config.method ?? ''} ${action} `,\n `color: ${getColor('message', behaveConfig.colors)}`,\n {\n data: parsedResponse,\n },\n );\n\n return {\n ...result,\n data: parsedResponse,\n hasError:\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\n hasMessages: !!parsedResponse?.sysMessages,\n };\n }\n } catch (e: unknown) {\n handleWrongResponse(new Error(e as string));\n return null;\n }\n\n return null;\n}\n\n/**\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\n * **should never throw an exception**. **Errors** coming from\n * connectivity or exceptions on the server **will be handled\n * automatically** by ApiaApi, using the notification system\n * of the application. It is possible to determine in what context they should\n * be thrown those exceptions (global, main, modal) using the\n * alertsCategory configuration properties **(see errorsHandling.md)**.\n *\n * @param url String, the url you want to call\n * @param config interface IApiaApiRequestConfig<DataType>;\n *\n * @throws Nothing\n *\n * @example\n *\n * ApiaApi.post<ResponseType>('url...', {\n axiosConfig?: AxiosRequestConfig;\n\n // Configuración de postData\n postData? unknown;\n postDataTreatement?: 'stringify' | undefined;\n\n // Configuración de queryString\n queryData?: string | Record<string, unknown>;\n stringifyOptions?: QueryString.IStringifyOptions;\n\n // Response validator,\n // If it returns true, everything continues correctly\n // If it returns false, the ApiaApi throws a standard error.\n // If it returns string, ApiaApi throws the error returned in the string.\n validateResponse?: (\n response: AxiosResponse<DataType | null>,\n ) => boolean | string;\n\n // Configuración de alertas\n alertsImportance?: TAlertImportance;\n\n // Configuración de ApiaApiHandler, falta documentar\n handleLoad?: boolean;\n eventsHandler?: IEventsHandler;\n\n // other configuration\n colors?: TColors;\n debug?: boolean;\n }\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\n */\nasync function post<\n LoadType extends Record<string, unknown> = Record<string, unknown>,\n DataType = unknown,\n>(\n url:\n | string\n | TModify<\n IApiaApiRequestConfig<LoadType>,\n { postData?: DataType; postDataTreatement?: 'stringify' }\n >,\n config?: TModify<\n IApiaApiRequestConfig<LoadType>,\n {\n postData?: DataType;\n postDataTreatement?: 'stringify';\n }\n >,\n): TApiaApiResult<LoadType>;\nasync function post<\n LoadType extends Record<string, unknown> = Record<string, unknown>,\n DataType = unknown,\n>(\n config: TModify<\n IApiaApiRequestConfig<LoadType>,\n {\n postData?: DataType;\n postDataTreatement?: 'stringify';\n }\n >,\n): TApiaApiResult<LoadType>;\nasync function post<\n LoadType extends Record<string, unknown> = Record<string, unknown>,\n DataType = unknown,\n T = unknown,\n>(\n par1:\n | string\n | TModify<\n IApiaApiRequestConfig<LoadType>,\n { postData?: DataType; postDataTreatement?: 'stringify' }\n >,\n par2?: TModify<\n IApiaApiRequestConfig<LoadType>,\n { postData?: DataType; postDataTreatement?: 'stringify' }\n >,\n): TApiaApiResult<LoadType> {\n const actualUrl = typeof par1 !== 'string' ? makeApiaUrl() : par1;\n\n const configParameter = (\n typeof par1 === 'string' ? par2 ?? defaultConfig : par1\n ) as TModify<\n IApiaApiRequestConfig<LoadType>,\n { postData?: DataType; postDataTreatement?: 'stringify' }\n >;\n\n const behaveConfig = {\n ...getConfig(configParameter),\n postData:\n configParameter.postDataTreatement === 'stringify'\n ? QueryString.stringify(\n configParameter.postData,\n configParameter.stringifyOptions,\n )\n : configParameter.postData,\n };\n\n const parsedUrl = makeUrl(\n actualUrl,\n behaveConfig.queryData,\n behaveConfig.stringifyOptions,\n );\n\n if (behaveConfig.debug) {\n const queryString = actualUrl.split('&');\n const action = getURLActionName(actualUrl);\n\n console.log(\n `%cApiaApi.post ${action}`,\n `color: ${getColor('message', behaveConfig.colors)}`,\n {\n url: parsedUrl,\n queryDataInURL: [...queryString],\n queryData: behaveConfig.queryData,\n formData: behaveConfig.postData,\n stringifyOptiopns: behaveConfig.stringifyOptions,\n },\n );\n }\n\n const response = await axios\n .post<T, AxiosResponse<string>, DataType | string>(\n parsedUrl,\n behaveConfig.postData,\n behaveConfig.axiosConfig,\n )\n .catch((e: unknown) => {\n handleWrongResponse(new Error(e as string));\n });\n\n if (response) {\n const result = handleResponse<LoadType>(response, actualUrl, behaveConfig);\n return result;\n }\n return null;\n}\n\n/**\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\n * de la conectividad o de excepciones en el servidor **serán manejados\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\n * de la aplicación. Es posible determinar en qué contexto deben\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\n *\n * @param url String, el url al que se desea llamar\n * @param config interface IApiaApiRequestConfig<DataType>;\n *\n * @throws Nothing\n *\n * @example\n *\n * ApiaApi.get<TipoDeRespuesta>('url...', {\n axiosConfig?: AxiosRequestConfig;\n\n // Configuración de queryString\n queryData?: string | Record<string, unknown>;\n stringifyOptions?: QueryString.IStringifyOptions;\n\n // Validador de respuesta,\n // Si devuelve true, todo sigue correctamente\n // Si devuelve false, el ApiaApi tira un error estándar.\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\n validateResponse?: (\n response: AxiosResponse<DataType | null>,\n ) => boolean | string;\n\n // Configuración de alertas\n alertsImportance?: TAlertImportance;\n\n // Configuración de ApiaApiHandler, falta documentar\n handleLoad?: boolean;\n eventsHandler?: IEventsHandler;\n\n // Otra configuración\n colors?: TColors;\n debug?: boolean;\n }\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\n */\nasync function get<\n LoadType extends Record<string, unknown> = Record<string, unknown>,\n>(\n url: string | IApiaApiRequestConfig<LoadType>,\n config?: IApiaApiRequestConfig<LoadType>,\n): TApiaApiResult<LoadType>;\nasync function get<\n LoadType extends Record<string, unknown> = Record<string, unknown>,\n>(config: IApiaApiRequestConfig<LoadType>): TApiaApiResult<LoadType>;\nasync function get<\n LoadType extends Record<string, unknown> = Record<string, unknown>,\n T = unknown,\n D = unknown,\n>(\n par1: string | IApiaApiRequestConfig<LoadType>,\n par2?: IApiaApiRequestConfig<LoadType>,\n): TApiaApiResult<LoadType> {\n const actualUrl = typeof par1 !== 'string' ? makeApiaUrl() : par1;\n\n const behaveConfig = getConfig<LoadType>(\n typeof par1 === 'string' ? par2 ?? defaultConfig : par1,\n );\n\n const parsedUrl = makeUrl(\n actualUrl,\n behaveConfig.queryData,\n behaveConfig.stringifyOptions,\n );\n\n if (behaveConfig.debug)\n console.log(\n `%cApiaApi.get`,\n `color: ${getColor('message', behaveConfig.colors)}`,\n {\n url: parsedUrl,\n },\n );\n const response = await axios\n .get<T, AxiosResponse<string>, D>(parsedUrl, behaveConfig.axiosConfig)\n .catch((e: unknown) => {\n handleWrongResponse(new Error(e as string));\n });\n if (response) {\n const result = await handleResponse<LoadType>(\n response,\n actualUrl,\n behaveConfig,\n );\n return result;\n }\n return null;\n}\n\nconst ApiaApi = {\n get,\n getConfig,\n post,\n};\n/**\n * Creates an url based on the general requirements of Apia.\n * If the ajaxUrl property is not passed, it will use the\n * window.URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\n * want to appear in the query string.\n *\n * @example makeApiaUrl({\n * ajaxUrl: 'the.endpoint.you.want',\n * queryString: 'an=existent&query=string',\n * action: 'theAction',\n * anotherProp: 15\n * })\n *\n * @returns the well formed url, in the example, the response url is:\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\n */\nexport function makeApiaUrl(props?: {\n action?: string;\n ajaxUrl?: string;\n queryString?: string;\n stringifyOptions?: QueryString.IStringifyOptions;\n tabId?: string | number;\n preventAsXmlParameter?: boolean;\n avoidTabId?: boolean;\n [key: string]: unknown;\n}) {\n let actualQueryData: Record<string, unknown> | unknown = {};\n\n if (props) {\n const {\n ajaxUrl,\n queryString,\n stringifyOptions,\n shouldAvoidTabId,\n preventAsXmlParameter,\n avoidTabId,\n ...rest\n } = props;\n actualQueryData = { ...rest };\n }\n\n const queryString = QueryString.stringify(\n actualQueryData,\n props?.stringifyOptions ?? {\n arrayFormat: 'repeat',\n encodeValuesOnly: false,\n },\n );\n\n let actualAjaxUrl = props?.ajaxUrl ?? window.URL_REQUEST_AJAX;\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1)\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\n if (!actualAjaxUrl.startsWith('/')) actualAjaxUrl = `/${actualAjaxUrl}`;\n\n const match = window.TAB_ID_REQUEST.match(/tokenId=(\\w+)/);\n const currentTokenId = (match ?? [])[1];\n\n let tabId = (\n props?.tabId\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\n : window.TAB_ID_REQUEST\n ).slice(1);\n if (props?.avoidTabId) tabId = '';\n\n let { CONTEXT } = window;\n if (CONTEXT?.endsWith('/')) CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\n\n return `${CONTEXT}${actualAjaxUrl}?${\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\n }${props?.queryString ? `${props.queryString}&` : ''}${\n queryString ? `${queryString}&` : ''\n }${tabId}`;\n}\n\nexport default ApiaApi;\n","import { classToValidate, Checkbox } from '@apia/validations';\nimport React from 'react';\nimport { TApiaApiField } from '../ApiaApiHandler';\n\nexport const ApiaApiCheckbox = (props: TApiaApiField) => {\n const element = React.useMemo(() => props.element, [props.element]);\n const className = React.useMemo(\n () =>\n element.class\n ? `handler__checkbox ${element.class}`\n : 'handler__checkbox',\n [element.class],\n );\n const validationRules = React.useMemo(\n () => ({\n required: element.mandatory,\n ...classToValidate(element.class),\n }),\n [element.class, element.mandatory],\n );\n const submitValueParser = React.useCallback(\n (value: boolean | string) => value === 'on' || value === true,\n [],\n );\n return (\n <Checkbox\n className={className}\n name={element.id || element.name}\n label={element.text}\n title={element.title || element.text}\n initialValue={String(element.selected) === 'true'}\n disabled={element.readonly || element.disabled}\n validationRules={validationRules}\n onChange={element.onChange}\n submitValueParser={submitValueParser}\n />\n );\n};\n","import { classToValidate, FileInput } from '@apia/validations';\nimport React from 'react';\nimport { TApiaApiField } from '../ApiaApiHandler';\n\nexport const ApiaApiFileInput = (props: TApiaApiField) => {\n const element = React.useMemo(() => props.element, [props.element]);\n const className = React.useMemo(\n () => (element.class ? `handler__file ${element.class}` : 'handler__file'),\n [element.class],\n );\n const validationRules = React.useMemo(\n () => ({\n required: element.mandatory,\n ...classToValidate(element.class),\n }),\n [element.class, element.mandatory],\n );\n\n return (\n <FileInput\n className={className}\n name={element.id || element.name}\n label={element.text}\n title={element.title || element.text}\n readOnly={element.readonly}\n disabled={element.disabled}\n validationRules={validationRules}\n />\n );\n};\n\nApiaApiFileInput.displayName = 'ApiaApiFileInput';\n","import { encrypt, useMount } from '@apia/util';\nimport {\n classToValidate,\n classToValidationFunction,\n Input,\n} from '@apia/validations';\nimport React from 'react';\nimport { TApiaApiField } from '../ApiaApiHandler';\n\nexport const ApiaApiInput = (props: TApiaApiField) => {\n const element = React.useMemo(() => props.element, [props.element]);\n\n const getModal = React.useCallback((path: string) => {\n return React.lazy<React.ComponentType<TApiaApiField>>(() => {\n return new Promise<{\n default: React.ComponentType<TApiaApiField>;\n }>((resolve) => {\n import(\n /* webpackChunkName: \"handlerModal\" */\n /* webpackInclude: /\\.tsx?$/ */\n `/api/modals/${path}`\n )\n .then((result: unknown) => {\n resolve(\n result as {\n default: React.ComponentType<TApiaApiField>;\n },\n );\n })\n .catch((error: unknown) => {\n resolve({\n default: () => {\n console.error(error);\n throw new Error(\n `The above error ocurred at component ApiaApiHandler/${path}, does it exist?`,\n );\n },\n });\n });\n });\n });\n }, []);\n\n const [Submodal, setSubmodal] = React.useState<React.LazyExoticComponent<\n React.ComponentType<TApiaApiField>\n > | null>(null);\n\n useMount(() => {\n if (element.modalFunction) {\n const found = element.modalFunction.match(/(?:fnc)?(\\w+)\\(?\\)?$/);\n if (found) {\n const modalName = found[found.length - 1];\n setSubmodal(getModal(modalName));\n }\n }\n });\n\n const className = React.useMemo(\n () =>\n element.class\n ? `handler__${element.type} ${element.class}`\n : `handler__${element.type}`,\n [element.class, element.type],\n );\n const validationRules = React.useMemo(\n () => ({\n required: element.mandatory,\n maxLength: element.maxlength ? Number(element.maxlength) : undefined,\n pattern: element.regExp,\n patternMessage: element.regExpMessage,\n ...classToValidate(element.class),\n }),\n [\n element.class,\n element.mandatory,\n element.maxlength,\n element.regExp,\n element.regExpMessage,\n ],\n );\n const validationFunction = React.useMemo(\n () => classToValidationFunction(element.class),\n [element.class],\n );\n const submitValueParser = React.useCallback(\n (value: string) => {\n if (element.type === 'password') {\n return encrypt(\n window.SALT,\n window.IV,\n window.PASSPHRASE,\n value,\n Number(window.KEY_SIZE),\n Number(window.ITERATION_COUNT),\n );\n }\n return value;\n },\n [element.type],\n );\n\n if (element.modalFunction) {\n if (Submodal) {\n return (\n <React.Suspense>\n <Submodal {...props} element={element} />\n </React.Suspense>\n );\n }\n return null;\n }\n\n return (\n <Input\n type={element.type}\n className={className}\n name={element.id || element.name}\n label={element.text}\n title={element.title || element.text}\n value={element.value}\n readOnly={element.readonly}\n disabled={element.disabled}\n validationFunction={validationFunction}\n validationRules={validationRules}\n submitValueParser={submitValueParser}\n onChange={element.onChange}\n autoComplete={element.type === 'password' ? 'new-password' : undefined}\n />\n );\n};\n\nApiaApiInput.displayName = 'ApiaApiInput';\n","import { arrayOrArray } from '@apia/util';\nimport { classToValidate, Radio } from '@apia/validations';\nimport React from 'react';\nimport { TApiaApiField } from '../ApiaApiHandler';\n\nexport const ApiaApiRadio = (props: TApiaApiField) => {\n const element = React.useMemo(() => props.element, [props.element]);\n const className = React.useMemo(\n () =>\n element.class ? `handler__radio ${element.class}` : 'handler__radio',\n [element.class],\n );\n const options = React.useMemo(\n () =>\n arrayOrArray(element.options?.option).map((currOption) => {\n return { value: currOption.value, label: currOption.content };\n }),\n [element.options?.option],\n );\n const validationRules = React.useMemo(\n () => ({\n required: element.mandatory,\n ...classToValidate(element.class),\n }),\n [element.class, element.mandatory],\n );\n return (\n <Radio\n className={className}\n name={element.id || element.name}\n label={element.text}\n title={element.title || element.text}\n value={element.value}\n disabled={element.readonly || element.disabled}\n validationRules={validationRules}\n options={options}\n onChange={element.onChange}\n />\n );\n};\n\nApiaApiRadio.displayName = 'ApiaApiRadio';\n","import { arrayOrArray } from '@apia/util';\nimport { classToValidate, Select } from '@apia/validations';\nimport React, { useMemo } from 'react';\nimport { TApiaApiField } from '../ApiaApiHandler';\n\nexport type TOption = {\n content: string;\n value: string;\n};\n\nexport const ApiaApiSelect = (props: TApiaApiField) => {\n const element = React.useMemo(() => props.element, [props.element]);\n const className = React.useMemo(\n () =>\n element.class ? `handler__select ${element.class}` : 'handler__select',\n [element.class],\n );\n const options = React.useMemo(\n () =>\n arrayOrArray(element.options?.option).map((currOption) => {\n return { value: currOption.value, label: currOption.content };\n }),\n [element.options?.option],\n );\n const validationRules = React.useMemo(\n () => ({\n required: element.mandatory,\n ...classToValidate(element.class),\n }),\n [element.class, element.mandatory],\n );\n const initialValue = useMemo(\n () =>\n options.find((current) => current.value === props.element.value)?.value ??\n options[0]?.value ??\n '',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n return (\n <Select\n className={className}\n name={element.id || element.name}\n label={element.text}\n title={element.title || element.text}\n value={element.value}\n disabled={element.readonly || element.disabled}\n validationRules={validationRules}\n options={options}\n onChange={element.onChange}\n initialValue={initialValue}\n />\n );\n};\n\nApiaApiSelect.displayName = 'ApiaApiSelect';\n","\n\nimport { getVariant } from '@apia/theme';\nimport { arrayOrArray, TApiaFormElement, TApiaLoad } from '@apia/util';\nimport { uniqueId } from 'lodash';\nimport React from 'react';\nimport { Box } from 'theme-ui';\nimport { getFunction, TApiaApiMethodHandler } from '../ApiaApiHandler';\nimport { TModalTable } from '../types';\nimport { ApiaApiCheckbox } from './ApiaApiCheckbox';\nimport { ApiaApiFileInput } from './ApiaApiFileInput';\nimport { ApiaApiInput } from './ApiaApiInput';\nimport { ApiaApiRadio } from './ApiaApiRadio';\nimport { ApiaApiSelect } from './ApiaApiSelect';\n\ntype TApiaApiFieldsContainer = TApiaApiMethodHandler & {\n definition?: TApiaLoad | undefined;\n};\n\nexport const ApiaApiFieldsContainer = (props: TApiaApiFieldsContainer) => {\n const elements = React.useMemo(\n () => arrayOrArray(props?.definition?.form.elements?.element ?? []),\n [props?.definition?.form.elements?.element],\n );\n\n const getSections = React.useCallback(() => {\n const removeEndingSpacers = (\n sectionElements: TApiaFormElement[],\n ): TApiaFormElement[] => {\n if (sectionElements.length > 1) {\n for (let i = sectionElements.length - 1; i >= 0; i--) {\n if (sectionElements[i].type === 'empty') {\n sectionElements.pop();\n } else {\n return sectionElements;\n }\n }\n }\n return sectionElements;\n };\n const sectionIndexes: number[] = [];\n if (elements[0]?.type !== '2columnTitle') {\n sectionIndexes.push(-1);\n }\n elements.forEach((element, index) => {\n if (element.type === '2columnTitle') {\n sectionIndexes.push(index);\n }\n });\n const sections: {\n sectionHeader: TApiaFormElement | undefined;\n sectionElements: TApiaFormElement[];\n }[] = [];\n sectionIndexes.forEach((sectionIndex, arrayIndex) => {\n const start =\n sectionIndex + 1 < elements.length\n ? sectionIndex + 1\n : elements.length - 1;\n const end =\n arrayIndex + 1 < sectionIndexes.length\n ? sectionIndexes[arrayIndex + 1]\n : undefined;\n sections.push({\n sectionHeader: sectionIndex !== -1 ? elements[sectionIndex] : undefined,\n sectionElements: removeEndingSpacers(elements.slice(start, end)),\n });\n });\n return sections;\n }, [elements]);\n\n const sections = getSections();\n\n const renderSectionContent = React.useCallback(\n (sectionElements: TApiaFormElement[]) => {\n const isVisible =\n sectionElements.findIndex((element) => element.type !== 'hidden') !==\n -1;\n return (\n <Box\n className={\n isVisible\n ? 'handler__form__elements__section__content'\n : `handler__form__elements__section__content handler__hidden`\n }\n key={uniqueId()}\n >\n {sectionElements.map((current) => {\n const element = {\n ...current,\n onChange() {\n getFunction(current.onChange, props)\n .then((onChangeMethod) => {\n if (onChangeMethod) {\n onChangeMethod();\n }\n })\n .catch(console.error);\n },\n };\n const elementKey = element.id || element.name || uniqueId();\n switch (element.type) {\n case 'table': {\n const data = JSON.parse(element.text) as TModalTable;\n return (\n <Box\n key={elementKey}\n {...getVariant('layout.common.tables.information')}\n >\n <table sx={{ width: '100%' }}>\n <thead>\n <tr>\n {data.columns.map((column) => {\n return <th key={column}>{column}</th>;\n })}\n </tr>\n </thead>\n <tbody>\n {data.rows.map((row) => {\n return (\n <tr key={row.cells.join('-')}>\n {row.cells.map((cell, i) => {\n return (\n <td key={`${cell}_${data.columns[i]}`}>\n {cell}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </Box>\n );\n }\n case '2columnSubTitle':\n return (\n <Box key={elementKey} className={element.class} as=\"h6\">\n {element.value || element.text}\n </Box>\n );\n case '2column':\n return (\n <Box\n key={elementKey}\n dangerouslySetInnerHTML={{\n __html: element.value || element.text,\n }}\n className={element.class}\n />\n );\n case 'checkbox':\n return (\n <ApiaApiCheckbox\n key={elementKey}\n {...props}\n element={element}\n />\n );\n case 'file':\n return (\n <ApiaApiFileInput\n key={elementKey}\n {...props}\n element={element}\n />\n );\n case 'hidden':\n case 'password':\n case 'text':\n return (\n <ApiaApiInput key={elementKey} {...props} element={element} />\n );\n case 'select':\n return (\n <ApiaApiSelect\n key={elementKey}\n {...props}\n element={element}\n />\n );\n case 'radio':\n return (\n <ApiaApiRadio key={elementKey} {...props} element={element} />\n );\n case 'empty':\n return <Box key={elementKey} className=\"spacer\" />;\n default:\n console.warn(\n `Unhandled element type: ${element.type}`,\n element,\n );\n return null;\n }\n })}\n </Box>\n );\n },\n [props],\n );\n\n return (\n <Box className=\"handler__form__elements\">\n {sections.map((section) => {\n if (section.sectionHeader) {\n return renderSectionContent(section.sectionElements);\n }\n return renderSectionContent(section.sectionElements);\n })}\n </Box>\n );\n};\n\nApiaApiFieldsContainer.displayName = 'ApiaApiFieldsContainer';\n","import { arrayOrArray, TApiaFormButton, TApiaLoad } from '@apia/util';\nimport { uniqueId } from 'lodash';\nimport QueryString from 'qs';\nimport React from 'react';\nimport { Box } from 'theme-ui';\nimport {\n hasSucceedFormValidation,\n useFormContext,\n validationsStore,\n} from '@apia/validations';\nimport { SimpleButton } from '@apia/components';\nimport { getFunction, TApiaApiMethodHandler } from '../ApiaApiHandler';\nimport ApiaApi from '../apiaApi';\n\ntype TApiaApiButtonsContainer = TApiaApiMethodHandler & {\n definition?: TApiaLoad | undefined;\n};\n\nconst NonMemoizedApiaApiButtonsContainer = (\n props: TApiaApiButtonsContainer,\n) => {\n const buttons = arrayOrArray(props.definition?.form.buttons?.button ?? []);\n const modalConfiguration = props.configuration?.modalConfiguration;\n const methodsPath = props.configuration?.methodsPath;\n const { name: apiaApiForm } = useFormContext();\n\n const renderButton = React.useCallback(\n (button: TApiaFormButton) => {\n const key = uniqueId();\n const buttonType =\n ['submitAjax', 'submit'].includes(button.type) && !button.onclick\n ? 'submit'\n : 'button';\n const className = `handler__${buttonType}`;\n const onClick = () => {\n void (async function submitForm() {\n const validationResult = await validationsStore.validateForm(\n apiaApiForm,\n );\n if (!hasSucceedFormValidation(validationResult)) {\n return;\n }\n const { submitValues } = validationResult;\n\n if (\n props?.definition &&\n ['submitAjax', 'submit'].includes(button.type)\n ) {\n const formData = new FormData();\n Object.entries(submitValues).forEach(([name, value]) => {\n formData.append(name, (value as string | Blob) ?? '');\n });\n\n const hasContext = props?.definition.form.action.match(\n new RegExp(`^${window.CONTEXT}/`),\n );\n const url = `${hasContext ? '' : window.CONTEXT}${\n !props?.definition.form.action.startsWith('/') ? '/' : ''\n }${props?.definition.form.action}`;\n\n props.setState((current) => ({\n ...current,\n isLoading: true,\n }));\n\n void ApiaApi.post(url, {\n postData: props.state.isMultipart\n ? formData\n : QueryString.stringify(\n [...formData.entries(), ['isAjax', true]].reduce<\n Record<string, string>\n >((accumulated, [name, value]) => {\n const retValue = { ...accumulated };\n retValue[name.toString()] = value.toString();\n return retValue;\n }, {}),\n ),\n handleLoad: true,\n notificationsCategory: 'apiaApiHandler',\n modalConfiguration,\n methodsPath,\n }).finally(() => {\n void (async () => {\n if (button.onclick) {\n const actions = button.onclick.split(';');\n // eslint-disable-next-line no-restricted-syntax\n for await (const action of actions) {\n const method = await getFunction(action, {\n ...props,\n });\n\n if (method)\n method({\n currentUrl: props.definition?.form.action ?? 'noUrl',\n });\n else {\n throw new Error(\n `The requested action is not defined: \"${\n props.definition?.form.action ?? ''\n }\"`,\n );\n }\n }\n }\n })();\n });\n }\n })();\n };\n return (\n <SimpleButton\n className={className}\n disabled={props.state.disabled}\n id={button.id || button.text}\n isLoading={props.state.isLoading}\n key={key}\n title={button.text}\n type={buttonType}\n onClick={onClick}\n >\n {button.text}\n </SimpleButton>\n );\n },\n [apiaApiForm, methodsPath, modalConfiguration, props],\n );\n\n return (\n <Box className=\"handler__form__buttons\">\n {buttons.map((currentButton) => renderButton(currentButton))}\n </Box>\n );\n};\n\nexport const ApiaApiButtonsContainer = React.memo(\n NonMemoizedApiaApiButtonsContainer,\n);\n","/* eslint-disable max-classes-per-file */\n\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\nimport { AxiosResponse } from 'axios';\nimport {\n arrayOrArray,\n EventEmitter,\n focus,\n focusSelector,\n TApiaAction,\n TApiaFormElement,\n TApiaFunction,\n TApiaLoad,\n TApiaLoadText,\n TModify,\n useMount,\n useStateRef,\n useUnmount,\n WithEventsValue,\n} from '@apia/util';\nimport { notify } from '@apia/notifications';\nimport { Form, validationsStore } from '@apia/validations';\nimport { Modal, ProgressBar, useModal } from '@apia/components';\nimport { getVariant } from '@apia/theme';\nimport ApiaApiContext from './ApiaApiContext';\nimport { IApiaApiRequestConfig } from './types';\nimport { ApiaActions } from './apiaApi';\nimport { ApiaApiFieldsContainer } from './fields/ApiaApiFieldsContainer';\nimport { ApiaApiButtonsContainer } from './buttons/ApiaApiButtonsContainer';\n\nexport type TMessage = {\n isHtml?: boolean;\n predicate: string;\n title?: string;\n};\ntype TMessageLocal = { title: string; predicate: string };\ntype TMethod = {\n name: string;\n props: {\n attributes?: Record<string, unknown>;\n currentUrl?: string;\n funCall?: string;\n inlineArguments?: string[];\n messages?: unknown;\n };\n};\nconst ApiaApiMessenger = new (class extends EventEmitter<{\n message: TMessageLocal;\n}> {})();\nconst FunctionsDispatcher = new (class extends EventEmitter<{\n method: TMethod;\n}> {})();\n\nexport type TApiaApiMethodHandler = {\n alert: typeof notify;\n close: () => void;\n configuration?: THandleConfiguration;\n formDefinition: TApiaLoad;\n reset: () => void;\n setError: typeof notify;\n setMessage: (message: Record<string, unknown>) => unknown;\n setState: React.Dispatch<React.SetStateAction<IApiaApiHandlerState>>;\n state: IApiaApiHandlerState;\n setValue: (name: string, value: string) => void;\n};\n\nexport type TApiaApiMethod = (\n handler: TApiaApiMethodHandler,\n props: TMethod['props'],\n) => Promise<void> | void;\n\nexport type TApiaApiField = TApiaApiMethodHandler & {\n element: TModify<TApiaFormElement, { onChange: React.ChangeEventHandler }>;\n};\n\nexport const apiaApiForm = 'ApiaApiForm';\n\ntype TStoredApiaApiMethod = (props?: TMethod['props']) => unknown;\n\nconst methods: Record<string, TStoredApiaApiMethod> = {};\n\nexport async function getFunction(\n name: string,\n handler: TApiaApiMethodHandler,\n): Promise<TStoredApiaApiMethod | undefined> {\n return new Promise((resolve) => {\n try {\n const separateNameFromParametersRegex =\n /^\\/?([\\w\\d_-]+)\\/?(?:\\(([^)]*)\\))?$/;\n const match = name.match(separateNameFromParametersRegex);\n if (match) {\n const functionName = match[1];\n const parameters = match[2];\n const path: string = [\n ...(handler.configuration?.methodsPath\n ?.split('/')\n .filter((current) => {\n return !!current;\n }) ?? []),\n functionName,\n ].join('/');\n\n const storeMethodAndResolve = (result: { default: TApiaApiMethod }) => {\n if (typeof result.default !== 'function') notFound();\n const method = result.default;\n methods[functionName] = (props?: TMethod['props']) => {\n return method(handler, {\n ...props,\n inlineArguments:\n parameters?.split(',').map((argument) => {\n if (argument.startsWith(\"'\") || argument.startsWith('\"'))\n return argument.slice(1, argument.length - 1);\n return argument;\n }) ?? [],\n });\n };\n resolve(methods[functionName]);\n };\n\n const notFound = () => {\n throw new Error(\n `${functionName}.ts not found at ${path}.ts nor ./${functionName}.ts`,\n );\n };\n\n import(\n /* webpackChunkName: \"api-methods-[request]\" */ `/api/methods/${path}.ts`\n )\n .then(storeMethodAndResolve)\n .catch(() => {\n if (handler.configuration?.methodsPath !== undefined)\n import(\n /* webpackChunkName: \"api-methods-[request]\" */ `/api/methods/${functionName}.ts`\n )\n\n .then(storeMethodAndResolve)\n .catch(notFound);\n else notFound();\n });\n }\n } catch (e) {\n console.error(e);\n handler.reset();\n handler.setError({\n type: 'danger',\n message: 'Error while loading current method.',\n });\n }\n });\n}\n\nexport function isForm(\n responseObject: Record<string, unknown>,\n): responseObject is TApiaLoad {\n return (\n typeof responseObject.canClose === 'boolean' &&\n typeof responseObject.type === 'string' &&\n !!responseObject.form\n );\n}\n\nexport function isFunction(\n responseObject: Record<string, unknown>,\n): responseObject is TApiaLoad<TApiaFunction> {\n return (\n typeof responseObject.canClose === 'boolean' &&\n typeof responseObject.type === 'string' &&\n !!responseObject.function\n );\n}\n\nfunction isMessage(\n responseObject: Record<string, unknown>,\n): responseObject is TApiaLoad<TApiaLoadText> {\n if (\n typeof responseObject.canClose === 'boolean' &&\n typeof responseObject.type === 'string' &&\n typeof responseObject.text === 'object' &&\n responseObject.text &&\n typeof (responseObject.text as Record<string, unknown>).label === 'string'\n ) {\n return true;\n }\n return false;\n}\n\nexport interface IModalConfig {\n modalTitle?: string;\n onClose?: () => void;\n onMessage?: (message: Record<string, unknown>) => unknown;\n onMessageClose?: () => unknown;\n onSubmitted?: (\n handler: TApiaApiMethodHandler,\n response: AxiosResponse<Record<string, unknown> | null> | null,\n ) => unknown;\n}\n\nconst modalConfigurationHandler = new WithEventsValue<THandleConfiguration>();\n\nfunction useModalConfiguration() {\n const [, setValue, value] = useStateRef<THandleConfiguration | undefined>(\n undefined,\n );\n\n const handleChange = React.useCallback(\n (newEventsHandler: THandleConfiguration | undefined) => {\n setValue(newEventsHandler);\n },\n [setValue],\n );\n\n useMount(() => {\n modalConfigurationHandler.on('update', handleChange);\n });\n\n useUnmount(() => {\n return modalConfigurationHandler.off('update', handleChange);\n });\n\n return value;\n}\n\ntype THandleConfiguration = Partial<\n Pick<IApiaApiRequestConfig<unknown>, 'modalConfiguration' | 'methodsPath'>\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nlet currentForm: TApiaLoad | undefined;\nconst currentFormDispatcher =\n new (class currentFormDispatcher extends EventEmitter<{\n form: TApiaLoad;\n }> {\n emit<K extends 'form'>(\n eventName: K,\n params?: { form: TApiaLoad }[K] | undefined,\n ): void {\n super.emit(eventName, params);\n currentForm = params;\n }\n })();\n\nexport function handle(\n responseObject: Record<string, unknown>,\n currentUrl: string,\n configuration: THandleConfiguration,\n) {\n modalConfigurationHandler.value = configuration;\n if (isForm(responseObject)) {\n currentFormDispatcher.emit('form', responseObject);\n return true;\n }\n if (isFunction(responseObject)) {\n FunctionsDispatcher.emit('method', {\n name: responseObject.function.name,\n props: {\n messages: responseObject.function.messages,\n attributes: responseObject.function,\n currentUrl,\n },\n });\n return true;\n }\n if (isMessage(responseObject)) {\n ApiaApiMessenger.emit('message', {\n predicate: responseObject.text.content,\n title: responseObject.text.title,\n });\n return true;\n }\n return false;\n}\n\nexport interface IApiaApiHandlerState {\n disabled: boolean;\n isLoading: boolean;\n isMultipart: boolean;\n progress: number;\n errors: Record<string, string>;\n windowIndex: number;\n}\n\nconst initialState: Omit<IApiaApiHandlerState, 'windowIndex'> = {\n disabled: false,\n isLoading: false,\n isMultipart: false,\n progress: 0,\n errors: {},\n};\n\nconst ApiaApiHandlerNonMemoized = () => {\n const configuration = useModalConfiguration();\n\n const [state, setState] = React.useState<IApiaApiHandlerState>({\n ...initialState,\n windowIndex: -1,\n });\n\n const [currentForm, setCurrentForm] = React.useState<TApiaLoad | undefined>(\n undefined,\n );\n React.useEffect(() => {\n return currentFormDispatcher.on('form', setCurrentForm);\n }, []);\n\n const setValue = React.useCallback((name: string, value: string) => {\n return validationsStore.setFieldValue(apiaApiForm, name, value);\n }, []);\n\n React.useEffect(() => {\n if (!currentForm) return;\n const elements = arrayOrArray(currentForm?.form?.elements?.element ?? []);\n\n let isMultipart = false;\n const elementsValues = Object.values(elements);\n let i = 0;\n while (i < elementsValues.length && !isMultipart) {\n if (elementsValues[i++].type === 'file') {\n isMultipart = true;\n }\n }\n\n setState((currentState) => {\n return {\n ...currentState,\n ...initialState,\n isMultipart,\n };\n });\n }, [currentForm]);\n\n const { show, onClose, ...modalProps } = useModal();\n\n const close = React.useCallback(() => {\n onClose();\n currentFormDispatcher.emit('form', undefined);\n setState((currentState) => {\n return { ...currentState, ...initialState };\n });\n if (configuration.current?.modalConfiguration?.onClose)\n configuration.current.modalConfiguration.onClose();\n\n validationsStore.unregisterForm(apiaApiForm);\n }, [onClose, configuration]);\n\n const modalRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const elements = modalRef.current?.querySelectorAll(\n 'a,input,textarea,button',\n );\n if (elements?.length === 1)\n void focus.on(([...elements] as HTMLElement[])[0]);\n });\n\n const setError = React.useCallback(\n (notification: Parameters<typeof notify>[0]) => {\n notify({ ...notification });\n },\n [],\n );\n\n const getHandler = React.useCallback(() => {\n const newHandler: TApiaApiMethodHandler = {\n alert,\n close,\n configuration: configuration.current,\n formDefinition: currentForm as TApiaLoad,\n reset: () => {\n return setState((currentState) => {\n return {\n ...currentState,\n ...initialState,\n };\n });\n },\n setError,\n setMessage: (message) => {\n if (configuration.current?.modalConfiguration?.onMessage)\n configuration.current.modalConfiguration.onMessage(message);\n },\n setState,\n state,\n setValue,\n };\n return newHandler;\n }, [close, configuration, currentForm, setError, state, setValue]);\n\n React.useEffect(() => {\n const handleFunction = async ({\n name,\n props: { messages, attributes, currentUrl },\n }: TMethod) => {\n const method = await getFunction(`${name}`, getHandler());\n if (method) {\n method({ messages, attributes, currentUrl });\n }\n };\n\n const handleMessage = (ev: TMessage) => {\n const handler = getHandler();\n notify({\n message: ev.predicate,\n type: 'warning',\n onClose: handler.configuration?.modalConfiguration?.onMessageClose,\n });\n const onMessage = handler.configuration?.modalConfiguration?.onMessage;\n if (onMessage) onMessage(ev);\n };\n\n const handleAction = async (\n action: TModify<TApiaAction, { param: string[] }>,\n ) => {\n if (action.toDo === 'ajaxHiddeAll') {\n close();\n }\n if (action.toDo === 'functionTimedCall') {\n const method = await getFunction(\n arrayOrArray(action.param)[1],\n getHandler(),\n );\n\n if (method)\n /*\n * Aquí el timeout se utiliza debido a que Apia lo establece de esa\n * forma,\n * Existe un retorno de Apia llamado functionTimedCall que\n * espera que una función se ejecute luego de un timeout, y\n * yo solamente respeté dicho comportamiento. */\n setTimeout(() => {\n return method({\n currentUrl: currentForm?.form.action ?? 'noUrl',\n });\n }, Number(action.param[0]));\n }\n };\n\n ApiaApiMessenger.on('message', handleMessage);\n FunctionsDispatcher.on('method', handleFunction);\n ApiaActions.on('action', handleAction);\n\n return () => {\n ApiaApiMessenger.off('message', handleMessage);\n FunctionsDispatcher.off('method', handleFunction);\n ApiaActions.off('action', handleAction);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.windowIndex, onClose, close]);\n\n React.useEffect(() => {\n if (currentForm) {\n show();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentForm]);\n\n const handler = getHandler();\n\n const formRef = React.useCallback(\n async (el: HTMLElement) => {\n if (el && currentForm?.form.onLoad) {\n const method = await getFunction(\n `${currentForm?.form.onLoad}`,\n getHandler(),\n );\n if (method) {\n method();\n }\n }\n },\n [currentForm?.form.onLoad, getHandler],\n );\n\n return (\n <ApiaApiContext id={apiaApiForm}>\n <Modal\n ref={modalRef}\n onClose={close}\n id={apiaApiForm}\n title={\n configuration.current?.modalConfiguration?.modalTitle ??\n currentForm?.form.title\n }\n size=\"md-fixed\"\n shouldCloseOnEsc={!state.disabled}\n shouldCloseOnOverlayClick={!state.disabled}\n initialFocusGetter={React.useCallback((ref: HTMLElement) => {\n return ref?.querySelector(focusSelector) as HTMLElement;\n }, [])}\n {...modalProps}\n >\n {currentForm && (\n <Box {...getVariant('layout.common.modals.apiaApi')}>\n <Form\n name={apiaApiForm}\n avoidFieldsOverride\n className=\"handler__form\"\n >\n <ApiaApiFieldsContainer definition={currentForm} {...handler} />\n {state.isMultipart && state.progress > 0 && (\n <Box className=\"progressBox\">\n <ProgressBar\n id=\"ApiaApiHandler progress\"\n progress={state.progress}\n loading\n />\n </Box>\n )}\n <Box ref={formRef} />\n <ApiaApiButtonsContainer definition={currentForm} {...handler} />\n </Form>\n </Box>\n )}\n </Modal>\n </ApiaApiContext>\n );\n};\n\nexport const ApiaApiHandler = React.memo(ApiaApiHandlerNonMemoized);\n"],"names":["ApiaApiId","createContext","ApiaApiContext","children","id","jsx","React","J","z","H","C","v","O","E","e","o","n","g","u","I","t","R","a","r","l","i","d","s","debugDispatcher","_0","__async","text","result","parseXmlAsync","defaultConfig","STORED_CONFIG","forcedConfig","storedConfig","getConfig","outerBehaveConfig","merge","makeUrl","url","queryData","stringifyOptions","finalUrl","questionMarkIndex","parsedUrl","QueryString","getURLActionName","_a","actionIdx","ApiaActions","EventEmitter","getColor","color","colors","handleWrongResponse","error","errorMessage","notify","isJsonResponse","response","isXmlResponse","isHtmlResponse","handleActions","actions","_b","arrayOrArray","action","__spreadProps","__spreadValues","handleOnClose","exceptions","onClose","sysExceptions","sysMessages","func","notificationsObject","getNotificationMessageObj","notification","parseMessages","dispatchNotifications","parseSuccessfulResponse","_1","_2","currentUrl","behaveConfig","parsedObj","validateResult","load","rest","__objRest","session","handle","handleResponse","parsedResponse","post","par1","par2","actualUrl","makeApiaUrl","configParameter","queryString","axios","get","ApiaApi","props","_c","actualQueryData","actualAjaxUrl","match","currentTokenId","tabId","CONTEXT","ApiaApiCheckbox","element","className","validationRules","classToValidate","submitValueParser","value","Checkbox","ApiaApiFileInput","FileInput","T","f","b","h","x","m","ApiaApiInput","getModal","path","resolve","Submodal","setSubmodal","useMount","found","modalName","validationFunction","classToValidationFunction","encrypt","Input","c","A","ApiaApiRadio","options","currOption","Radio","y","M","p","ApiaApiSelect","initialValue","useMemo","_d","current","Select","S","N","k","ApiaApiFieldsContainer","elements","sections","removeEndingSpacers","sectionElements","sectionIndexes","index","sectionIndex","arrayIndex","start","end","renderSectionContent","isVisible","Box","getFunction","onChangeMethod","elementKey","uniqueId","data","getVariant","jsxs","column","row","cell","section","NonMemoizedApiaApiButtonsContainer","_e","buttons","modalConfiguration","methodsPath","apiaApiForm","useFormContext","renderButton","button","key","buttonType","onClick","validationResult","validationsStore","hasSucceedFormValidation","submitValues","formData","name","accumulated","retValue","iter","__forAwait","more","temp","method","SimpleButton","currentButton","ApiaApiButtonsContainer","Z","j","W","_","K","ApiaApiMessenger","FunctionsDispatcher","methods","handler","separateNameFromParametersRegex","functionName","parameters","storeMethodAndResolve","notFound","argument","isForm","responseObject","isFunction","isMessage","modalConfigurationHandler","WithEventsValue","useModalConfiguration","setValue","useStateRef","handleChange","newEventsHandler","useUnmount","currentFormDispatcher","eventName","params","configuration","initialState","ApiaApiHandlerNonMemoized","state","setState","currentForm","setCurrentForm","isMultipart","elementsValues","currentState","useModal","show","modalProps","close","modalRef","focus","setError","getHandler","message","handleFunction","messages","attributes","handleMessage","ev","onMessage","handleAction","formRef","el","Modal","ref","focusSelector","Form","ProgressBar","ApiaApiHandler"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/ApiaApiContext.tsx","../src/apiaApi.ts","../src/fields/ApiaApiCheckbox.tsx","../src/fields/ApiaApiFileInput.tsx","../src/fields/ApiaApiInput.tsx","../src/fields/ApiaApiRadio.tsx","../src/fields/ApiaApiSelect.tsx","../src/fields/ApiaApiFieldsContainer.tsx","../src/buttons/ApiaApiButtonsContainer.tsx","../src/ApiaApiHandler.tsx"],"sourcesContent":["import { createContext } from 'react';\r\nimport * as React from 'react';\r\n\r\nlet apiaApiId: string | undefined;\r\n\r\nexport function getApiaApiId() {\r\n if (!apiaApiId) throw new Error('There is no apia api id');\r\n return apiaApiId;\r\n}\r\n\r\nconst ApiaApiId = createContext<string | undefined>('apiaApi');\r\n\r\nconst ApiaApiContext = ({\r\n children,\r\n id,\r\n}: {\r\n id: string;\r\n children: React.ReactNode;\r\n}) => {\r\n apiaApiId = id;\r\n return <ApiaApiId.Provider value={id}>{children}</ApiaApiId.Provider>;\r\n};\r\n\r\nexport default React.memo(ApiaApiContext);\r\n","/* eslint-disable @typescript-eslint/no-invalid-void-type */\r\nimport axios, { AxiosResponse } from 'axios';\r\nimport { merge } from 'lodash';\r\nimport QueryString from 'qs';\r\nimport { session } from '@apia/session';\r\nimport {\r\n arrayOrArray,\r\n parseXmlAsync,\r\n EventEmitter,\r\n TModify,\r\n TApiaAction,\r\n TApiaSystemMessageObj,\r\n debugDispatcher,\r\n TNotificationMessage,\r\n} from '@apia/util';\r\nimport {\r\n dispatchNotifications,\r\n getNotificationMessageObj,\r\n notify,\r\n} from '@apia/notifications';\r\nimport { handle } from './ApiaApiHandler';\r\nimport {\r\n IApiaApiRequestConfig,\r\n TApiaApiConfigurator,\r\n TApiaApiResult,\r\n TColors,\r\n} from './types';\r\n\r\ndebugDispatcher.on(\r\n 'parseXml',\r\n async ([text]) => {\r\n const result = await parseXmlAsync<unknown>(text as string);\r\n console.info(result);\r\n },\r\n 'Acepta un parámetro de tipo string y realiza un parseo como si fuera xml, convirtiéndolo a objeto javascript.',\r\n);\r\n\r\nconst defaultConfig: IApiaApiRequestConfig<unknown> = {\r\n debug: true,\r\n colors: {\r\n exception: 'red',\r\n alert: 'yellow',\r\n message: 'lightgreen',\r\n },\r\n handleLoad: false,\r\n};\r\n\r\nconst STORED_CONFIG = 'ApiaApiConfig';\r\n\r\nlet forcedConfig: Partial<IApiaApiRequestConfig<unknown>> = {};\r\nconst storedConfig = localStorage.getItem(STORED_CONFIG);\r\nif (storedConfig)\r\n forcedConfig = JSON.parse(storedConfig) as Partial<\r\n IApiaApiRequestConfig<unknown>\r\n >;\r\n\r\nexport function getApiaApiConfigurator(): TApiaApiConfigurator {\r\n return {\r\n reset() {\r\n forcedConfig = {};\r\n localStorage.removeItem(STORED_CONFIG);\r\n },\r\n config(newConfig) {\r\n if (\r\n newConfig.notificationsCategory ||\r\n newConfig.axiosConfig ||\r\n newConfig.modalConfiguration ||\r\n newConfig.handleLoad ||\r\n newConfig.queryData ||\r\n newConfig.stringifyOptions ||\r\n newConfig.validateResponse\r\n )\r\n throw new Error('Operación ilegal');\r\n\r\n const toStoreConfig = merge(forcedConfig, newConfig);\r\n localStorage.setItem(STORED_CONFIG, JSON.stringify(toStoreConfig));\r\n forcedConfig = toStoreConfig;\r\n console.log('Se guardó la configuración correctamente', {\r\n config: toStoreConfig,\r\n });\r\n },\r\n shout() {\r\n console.log({ config: getConfig({}) });\r\n },\r\n theme(theme) {\r\n if (theme.toLowerCase() === 'dark') {\r\n getApiaApiConfigurator().config({\r\n colors: {\r\n exception: 'red',\r\n alert: 'yellow',\r\n message: 'lightgreen',\r\n },\r\n });\r\n } else if (theme.toLowerCase() === 'light') {\r\n getApiaApiConfigurator().config({\r\n colors: {\r\n exception: 'red',\r\n alert: '#e0e006',\r\n message: 'darkgreen',\r\n },\r\n });\r\n } else {\r\n console.log(`Tema ${theme} desconocido, prueba 'light' o 'dark'.`);\r\n return;\r\n }\r\n\r\n console.log(`Tema ${theme} establecido correctamente.`);\r\n },\r\n };\r\n}\r\n\r\nfunction getConfig<LoadType>(\r\n outerBehaveConfig?: IApiaApiRequestConfig<LoadType>,\r\n) {\r\n return merge({}, defaultConfig, outerBehaveConfig, forcedConfig);\r\n}\r\n\r\nfunction makeUrl(\r\n url: string,\r\n queryData: IApiaApiRequestConfig<unknown>['queryData'],\r\n stringifyOptions: IApiaApiRequestConfig<unknown>['stringifyOptions'],\r\n) {\r\n let finalUrl = url;\r\n const questionMarkIndex = finalUrl.indexOf('?');\r\n\r\n if (questionMarkIndex === -1) finalUrl += '?';\r\n else if (questionMarkIndex !== finalUrl.length - 1 && !finalUrl.endsWith('&'))\r\n finalUrl += '&';\r\n let parsedUrl = `${finalUrl}${\r\n queryData ? QueryString.stringify(queryData, stringifyOptions) : ''\r\n }`;\r\n if (parsedUrl.endsWith('&') || parsedUrl.endsWith('?')) {\r\n parsedUrl = parsedUrl.slice(0, parsedUrl.length - 1);\r\n }\r\n return parsedUrl;\r\n}\r\n\r\nconst getURLActionName = (url: string): string => {\r\n const actionIdx = url.match(/action=(\\w+)/)?.[1];\r\n return actionIdx ?? 'noAction';\r\n};\r\n\r\nexport const ApiaActions = new (class ApiaActions extends EventEmitter<{\r\n action: TModify<TApiaAction, { param: string[] }>;\r\n}> {})();\r\n\r\nfunction getColor(\r\n color: keyof TColors,\r\n colors: TColors = defaultConfig.colors ?? {\r\n exception: 'red',\r\n alert: 'yellow',\r\n message: 'green',\r\n },\r\n) {\r\n return colors[color] as string;\r\n}\r\n\r\nconst handleWrongResponse = (error: Error) => {\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n notify({\r\n type: 'danger',\r\n message: error.message.replaceAll('AxiosError', 'Error'),\r\n });\r\n console.log('%c ', 'font-size:10vh');\r\n console.log('%cError in ApiaApi', 'color:red;font-size:2em;font-weight:bold');\r\n console.log(`red/${errorMessage}`, { error });\r\n console.log('%c ', 'font-size:10vh');\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nfunction handleActions(actions: TApiaSystemMessageObj['actions']) {\r\n if (actions) {\r\n if (getConfig().debug)\r\n console.log(\r\n '%cHandled actions: ',\r\n `color: ${getConfig().colors?.message ?? 'green'}`,\r\n { actions },\r\n );\r\n const actionsArray = arrayOrArray(actions.action);\r\n actionsArray.forEach((action) => {\r\n ApiaActions.emit('action', {\r\n ...action,\r\n param: arrayOrArray(action.param),\r\n });\r\n });\r\n }\r\n}\r\nfunction handleOnClose({\r\n exceptions,\r\n onClose,\r\n sysExceptions,\r\n sysMessages,\r\n}: TModify<TNotificationMessage, { onClose: string }>) {\r\n try {\r\n import(\r\n /* webpackChunkName: \"api-[request]\" */ `/api/onClose/${onClose}.ts`\r\n ).then(\r\n (func: { default: () => void }) => {\r\n if (exceptions || sysExceptions || sysMessages) {\r\n const notificationsObject = getNotificationMessageObj({\r\n exceptions,\r\n onClose,\r\n sysExceptions,\r\n sysMessages,\r\n });\r\n if (notificationsObject)\r\n notificationsObject.forEach((notification) => {\r\n notify({\r\n ...notification,\r\n onClose: func.default,\r\n });\r\n });\r\n else func.default();\r\n } else func.default();\r\n },\r\n (e) => {\r\n notify({\r\n message: `onClose action not found: ${String(e)}`,\r\n type: 'danger',\r\n });\r\n },\r\n );\r\n } catch (e) {\r\n parseMessages({ exceptions, sysExceptions, sysMessages });\r\n console.error('Error while handling onClose');\r\n console.error(e);\r\n }\r\n}\r\n\r\nexport function parseMessages(response: Record<string, unknown>) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n if (exceptions || sysExceptions || sysMessages) {\r\n try {\r\n dispatchNotifications({\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n } as TNotificationMessage);\r\n } catch (e: unknown) {\r\n handleWrongResponse(new Error(e as string));\r\n }\r\n }\r\n}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n LoadType extends Record<string, unknown>,\r\n>(\r\n response: AxiosResponse<string>,\r\n currentUrl: string,\r\n outerBehaveConfig: IApiaApiRequestConfig<LoadType> = defaultConfig,\r\n) => {\r\n const behaveConfig = getConfig(outerBehaveConfig);\r\n\r\n let parsedObj: TApiaSystemMessageObj<LoadType> | void | undefined = undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<LoadType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n parsedObj = await parseXmlAsync<LoadType>(response.data).catch(\r\n (e: unknown) => {\r\n handleWrongResponse(new Error(e as string));\r\n },\r\n );\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (behaveConfig.validateResponse) {\r\n const validateResult = await behaveConfig.validateResponse({\r\n ...response,\r\n data: parsedObj?.load ?? parsedObj,\r\n });\r\n if (typeof validateResult === 'string')\r\n throw new Error(`Validation error: ${validateResult}`);\r\n else if (!validateResult) {\r\n throw new Error('Error');\r\n }\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n session.invalidate();\r\n return null;\r\n }\r\n\r\n if (exceptions && behaveConfig.debug) {\r\n console.log(\r\n `%cparseSuccessfulResponse`,\r\n `color: ${getColor('exception', behaveConfig.colors)}`,\r\n {\r\n exceptions,\r\n },\r\n );\r\n }\r\n if (sysExceptions && behaveConfig.debug) {\r\n console.log(\r\n `%cparseSuccessfulResponse`,\r\n `color: ${getColor('exception', behaveConfig.colors)}`,\r\n {\r\n sysExceptions,\r\n },\r\n );\r\n }\r\n if (sysMessages && behaveConfig.debug) {\r\n console.log(\r\n `%cparseSuccessfulResponse`,\r\n `color: ${getColor('alert', behaveConfig.colors)}`,\r\n {\r\n sysMessages,\r\n },\r\n );\r\n }\r\n\r\n handleActions(actions);\r\n\r\n if (behaveConfig.handleLoad && onClose)\r\n handleOnClose({\r\n exceptions,\r\n onClose,\r\n sysExceptions,\r\n sysMessages,\r\n });\r\n else parseMessages({ exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n if (behaveConfig.handleLoad) {\r\n console.log(\r\n `%chandleLoad`,\r\n `color: ${getColor('message', behaveConfig.colors)}`,\r\n {\r\n load,\r\n },\r\n );\r\n if (\r\n !handle(load, currentUrl, {\r\n methodsPath: outerBehaveConfig.methodsPath,\r\n modalConfiguration: {\r\n ...behaveConfig.modalConfiguration,\r\n onClose: () => {\r\n if (onClose)\r\n handleOnClose({\r\n exceptions,\r\n onClose,\r\n sysExceptions,\r\n sysMessages,\r\n });\r\n if (behaveConfig.modalConfiguration?.onClose)\r\n behaveConfig.modalConfiguration?.onClose();\r\n },\r\n },\r\n })\r\n ) {\r\n console.log(\r\n `%cunhandledLoad -> There is no handler defined`,\r\n `color: ${getColor('exception', behaveConfig.colors)}`,\r\n {\r\n load,\r\n },\r\n );\r\n }\r\n }\r\n return { ...load, sysMessages, exceptions, sysExceptions };\r\n }\r\n return { ...(rest as LoadType), sysMessages, exceptions, sysExceptions };\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport type TApiaApiAxiosResponse<LoadType> = AxiosResponse<LoadType | null> & {\r\n hasError: boolean;\r\n hasMessages: boolean;\r\n};\r\n\r\nasync function handleResponse<LoadType extends Record<string, unknown>>(\r\n result: AxiosResponse<string> | void,\r\n currentUrl: string,\r\n outerBehaveConfig: IApiaApiRequestConfig<LoadType> = defaultConfig,\r\n): Promise<TApiaApiAxiosResponse<LoadType> | null> {\r\n const behaveConfig = getConfig(outerBehaveConfig);\r\n try {\r\n if (!result || result.data === undefined) {\r\n if (behaveConfig.debug)\r\n console.log(\r\n `%cApiaApi wrong response`,\r\n `color: ${getColor('alert', behaveConfig.colors)}`,\r\n );\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<LoadType>(\r\n result,\r\n currentUrl,\r\n behaveConfig,\r\n );\r\n\r\n const action = getURLActionName(currentUrl);\r\n if (behaveConfig.debug)\r\n console.log(\r\n `%c <- ApiaApi.${result.config.method ?? ''} ${action} `,\r\n `color: ${getColor('message', behaveConfig.colors)}`,\r\n {\r\n data: parsedResponse,\r\n },\r\n );\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(new Error(e as string));\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nasync function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n>(\r\n url:\r\n | string\r\n | TModify<\r\n IApiaApiRequestConfig<LoadType>,\r\n { postData?: DataType; postDataTreatement?: 'stringify' }\r\n >,\r\n config?: TModify<\r\n IApiaApiRequestConfig<LoadType>,\r\n {\r\n postData?: DataType;\r\n postDataTreatement?: 'stringify';\r\n }\r\n >,\r\n): TApiaApiResult<LoadType>;\r\nasync function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n>(\r\n config: TModify<\r\n IApiaApiRequestConfig<LoadType>,\r\n {\r\n postData?: DataType;\r\n postDataTreatement?: 'stringify';\r\n }\r\n >,\r\n): TApiaApiResult<LoadType>;\r\nasync function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n par1:\r\n | string\r\n | TModify<\r\n IApiaApiRequestConfig<LoadType>,\r\n { postData?: DataType; postDataTreatement?: 'stringify' }\r\n >,\r\n par2?: TModify<\r\n IApiaApiRequestConfig<LoadType>,\r\n { postData?: DataType; postDataTreatement?: 'stringify' }\r\n >,\r\n): TApiaApiResult<LoadType> {\r\n const actualUrl = typeof par1 !== 'string' ? makeApiaUrl() : par1;\r\n\r\n const configParameter = (\r\n typeof par1 === 'string' ? par2 ?? defaultConfig : par1\r\n ) as TModify<\r\n IApiaApiRequestConfig<LoadType>,\r\n { postData?: DataType; postDataTreatement?: 'stringify' }\r\n >;\r\n\r\n const behaveConfig = {\r\n ...getConfig(configParameter),\r\n postData:\r\n configParameter.postDataTreatement === 'stringify'\r\n ? QueryString.stringify(\r\n configParameter.postData,\r\n configParameter.stringifyOptions,\r\n )\r\n : configParameter.postData,\r\n };\r\n\r\n const parsedUrl = makeUrl(\r\n actualUrl,\r\n behaveConfig.queryData,\r\n behaveConfig.stringifyOptions,\r\n );\r\n\r\n if (behaveConfig.debug) {\r\n const queryString = actualUrl.split('&');\r\n const action = getURLActionName(actualUrl);\r\n\r\n console.log(\r\n `%cApiaApi.post ${action}`,\r\n `color: ${getColor('message', behaveConfig.colors)}`,\r\n {\r\n url: parsedUrl,\r\n queryDataInURL: [...queryString],\r\n queryData: behaveConfig.queryData,\r\n formData: behaveConfig.postData,\r\n stringifyOptiopns: behaveConfig.stringifyOptions,\r\n },\r\n );\r\n }\r\n\r\n const response = await axios\r\n .post<T, AxiosResponse<string>, DataType | string>(\r\n parsedUrl,\r\n behaveConfig.postData,\r\n behaveConfig.axiosConfig,\r\n )\r\n .catch((e: unknown) => {\r\n handleWrongResponse(new Error(e as string));\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(response, actualUrl, behaveConfig);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nasync function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n>(\r\n url: string | IApiaApiRequestConfig<LoadType>,\r\n config?: IApiaApiRequestConfig<LoadType>,\r\n): TApiaApiResult<LoadType>;\r\nasync function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n>(config: IApiaApiRequestConfig<LoadType>): TApiaApiResult<LoadType>;\r\nasync function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n par1: string | IApiaApiRequestConfig<LoadType>,\r\n par2?: IApiaApiRequestConfig<LoadType>,\r\n): TApiaApiResult<LoadType> {\r\n const actualUrl = typeof par1 !== 'string' ? makeApiaUrl() : par1;\r\n\r\n const behaveConfig = getConfig<LoadType>(\r\n typeof par1 === 'string' ? par2 ?? defaultConfig : par1,\r\n );\r\n\r\n const parsedUrl = makeUrl(\r\n actualUrl,\r\n behaveConfig.queryData,\r\n behaveConfig.stringifyOptions,\r\n );\r\n\r\n if (behaveConfig.debug)\r\n console.log(\r\n `%cApiaApi.get`,\r\n `color: ${getColor('message', behaveConfig.colors)}`,\r\n {\r\n url: parsedUrl,\r\n },\r\n );\r\n const response = await axios\r\n .get<T, AxiosResponse<string>, D>(parsedUrl, behaveConfig.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(new Error(e as string));\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(\r\n response,\r\n actualUrl,\r\n behaveConfig,\r\n );\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nconst ApiaApi = {\r\n get,\r\n getConfig,\r\n post,\r\n};\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * window.URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(props?: {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n}) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? window.URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = window.TAB_ID_REQUEST.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : window.TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = window;\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replaceAll('/', '');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n TAB_ID_REQUEST: string;\r\n CONTEXT: string;\r\n URL_REQUEST_AJAX: string;\r\n }\r\n}\r\n\r\nexport default ApiaApi;\r\n","import { classToValidate, Checkbox } from '@apia/validations';\r\nimport React from 'react';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport const ApiaApiCheckbox = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n const className = React.useMemo(\r\n () =>\r\n element.class\r\n ? `handler__checkbox ${element.class}`\r\n : 'handler__checkbox',\r\n [element.class],\r\n );\r\n const validationRules = React.useMemo(\r\n () => ({\r\n required: element.mandatory,\r\n ...classToValidate(element.class),\r\n }),\r\n [element.class, element.mandatory],\r\n );\r\n const submitValueParser = React.useCallback(\r\n (value: boolean | string) => value === 'on' || value === true,\r\n [],\r\n );\r\n return (\r\n <Checkbox\r\n className={className}\r\n name={element.id || element.name}\r\n label={element.text}\r\n title={element.title || element.text}\r\n initialValue={String(element.selected) === 'true'}\r\n disabled={element.readonly || element.disabled}\r\n validationRules={validationRules}\r\n onChange={element.onChange}\r\n submitValueParser={submitValueParser}\r\n />\r\n );\r\n};\r\n","import { classToValidate, FileInput } from '@apia/validations';\r\nimport React from 'react';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport const ApiaApiFileInput = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n const className = React.useMemo(\r\n () => (element.class ? `handler__file ${element.class}` : 'handler__file'),\r\n [element.class],\r\n );\r\n const validationRules = React.useMemo(\r\n () => ({\r\n required: element.mandatory,\r\n ...classToValidate(element.class),\r\n }),\r\n [element.class, element.mandatory],\r\n );\r\n\r\n return (\r\n <FileInput\r\n className={className}\r\n name={element.id || element.name}\r\n label={element.text}\r\n title={element.title || element.text}\r\n readOnly={element.readonly}\r\n disabled={element.disabled}\r\n validationRules={validationRules}\r\n />\r\n );\r\n};\r\n\r\nApiaApiFileInput.displayName = 'ApiaApiFileInput';\r\n","import { encrypt, useMount } from '@apia/util';\r\nimport {\r\n classToValidate,\r\n classToValidationFunction,\r\n Input,\r\n} from '@apia/validations';\r\nimport React from 'react';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport const ApiaApiInput = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n\r\n const getModal = React.useCallback((path: string) => {\r\n return React.lazy<React.ComponentType<TApiaApiField>>(() => {\r\n return new Promise<{\r\n default: React.ComponentType<TApiaApiField>;\r\n }>((resolve) => {\r\n import(\r\n /* webpackChunkName: \"handlerModal\" */\r\n /* webpackInclude: /\\.tsx?$/ */\r\n `/api/modals/${path}`\r\n )\r\n .then((result: unknown) => {\r\n resolve(\r\n result as {\r\n default: React.ComponentType<TApiaApiField>;\r\n },\r\n );\r\n })\r\n .catch((error: unknown) => {\r\n resolve({\r\n default: () => {\r\n console.error(error);\r\n throw new Error(\r\n `The above error ocurred at component ApiaApiHandler/${path}, does it exist?`,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n });\r\n }, []);\r\n\r\n const [Submodal, setSubmodal] = React.useState<React.LazyExoticComponent<\r\n React.ComponentType<TApiaApiField>\r\n > | null>(null);\r\n\r\n useMount(() => {\r\n if (element.modalFunction) {\r\n const found = element.modalFunction.match(/(?:fnc)?(\\w+)\\(?\\)?$/);\r\n if (found) {\r\n const modalName = found[found.length - 1];\r\n setSubmodal(getModal(modalName));\r\n }\r\n }\r\n });\r\n\r\n const className = React.useMemo(\r\n () =>\r\n element.class\r\n ? `handler__${element.type} ${element.class}`\r\n : `handler__${element.type}`,\r\n [element.class, element.type],\r\n );\r\n const validationRules = React.useMemo(\r\n () => ({\r\n required: element.mandatory,\r\n maxLength: element.maxlength ? Number(element.maxlength) : undefined,\r\n pattern: element.regExp,\r\n patternMessage: element.regExpMessage,\r\n ...classToValidate(element.class),\r\n }),\r\n [\r\n element.class,\r\n element.mandatory,\r\n element.maxlength,\r\n element.regExp,\r\n element.regExpMessage,\r\n ],\r\n );\r\n const validationFunction = React.useMemo(\r\n () => classToValidationFunction(element.class),\r\n [element.class],\r\n );\r\n const submitValueParser = React.useCallback(\r\n (value: string) => {\r\n if (element.type === 'password') {\r\n return encrypt(\r\n window.SALT,\r\n window.IV,\r\n window.PASSPHRASE,\r\n value,\r\n Number(window.KEY_SIZE),\r\n Number(window.ITERATION_COUNT),\r\n );\r\n }\r\n return value;\r\n },\r\n [element.type],\r\n );\r\n\r\n if (element.modalFunction) {\r\n if (Submodal) {\r\n return (\r\n <React.Suspense>\r\n <Submodal {...props} element={element} />\r\n </React.Suspense>\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n return (\r\n <Input\r\n type={element.type}\r\n className={className}\r\n name={element.id || element.name}\r\n label={element.text}\r\n title={element.title || element.text}\r\n value={element.value}\r\n readOnly={element.readonly}\r\n disabled={element.disabled}\r\n validationFunction={validationFunction}\r\n validationRules={validationRules}\r\n submitValueParser={submitValueParser}\r\n onChange={element.onChange}\r\n autoComplete={element.type === 'password' ? 'new-password' : undefined}\r\n />\r\n );\r\n};\r\n\r\nApiaApiInput.displayName = 'ApiaApiInput';\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { classToValidate, Radio } from '@apia/validations';\r\nimport React from 'react';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport const ApiaApiRadio = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n const className = React.useMemo(\r\n () =>\r\n element.class ? `handler__radio ${element.class}` : 'handler__radio',\r\n [element.class],\r\n );\r\n const options = React.useMemo(\r\n () =>\r\n arrayOrArray(element.options?.option).map((currOption) => {\r\n return { value: currOption.value, label: currOption.content };\r\n }),\r\n [element.options?.option],\r\n );\r\n const validationRules = React.useMemo(\r\n () => ({\r\n required: element.mandatory,\r\n ...classToValidate(element.class),\r\n }),\r\n [element.class, element.mandatory],\r\n );\r\n return (\r\n <Radio\r\n className={className}\r\n name={element.id || element.name}\r\n label={element.text}\r\n title={element.title || element.text}\r\n initialValue={element.value}\r\n disabled={element.readonly || element.disabled}\r\n validationRules={validationRules}\r\n options={options}\r\n onChange={element.onChange}\r\n />\r\n );\r\n};\r\n\r\nApiaApiRadio.displayName = 'ApiaApiRadio';\r\n","import React from 'react';\r\nimport { arrayOrArray, EventEmitter } from '@apia/util';\r\nimport { classToValidate, Select } from '@apia/validations';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport type TOption = {\r\n content: string;\r\n value: string;\r\n};\r\n\r\nexport const apiaApiSelectOptions =\r\n new (class ApiaApiSelectOptions extends EventEmitter<{\r\n setOptions: {\r\n fieldName: string;\r\n options: TOption[];\r\n };\r\n }> {})();\r\n\r\nexport const ApiaApiSelect = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n const className = React.useMemo(\r\n () =>\r\n element.class ? `handler__select ${element.class}` : 'handler__select',\r\n [element.class],\r\n );\r\n const [options, setOptions] = React.useState<\r\n {\r\n value: string;\r\n label: string;\r\n }[]\r\n >(\r\n arrayOrArray(element.options?.option).map((currOption) => {\r\n return { value: currOption.value, label: currOption.content };\r\n }),\r\n );\r\n const validationRules = React.useMemo(\r\n () => ({\r\n required: element.mandatory,\r\n ...classToValidate(element.class),\r\n }),\r\n [element.class, element.mandatory],\r\n );\r\n\r\n React.useEffect(() => {\r\n const unsuscribe = apiaApiSelectOptions.on('setOptions', (ev) => {\r\n if (ev.fieldName === element.name) {\r\n setOptions(\r\n ev.options.map((currOption) => ({\r\n value: currOption.value,\r\n label: currOption.content,\r\n })),\r\n );\r\n }\r\n });\r\n\r\n return () => {\r\n unsuscribe();\r\n };\r\n }, [element.name]);\r\n\r\n const initialValue = React.useMemo(\r\n () =>\r\n options.find((current) => current.value === props.element.value)?.value ??\r\n options[0]?.value ??\r\n '',\r\n [options, props.element.value],\r\n );\r\n\r\n return (\r\n <Select\r\n className={className}\r\n name={element.id || element.name}\r\n label={element.text}\r\n title={element.title || element.text}\r\n initialValue={initialValue}\r\n disabled={element.readonly || element.disabled}\r\n validationRules={validationRules}\r\n options={options}\r\n onChange={element.onChange}\r\n />\r\n );\r\n};\r\n\r\nApiaApiSelect.displayName = 'ApiaApiSelect';\r\n","import { getVariant } from '@apia/theme';\r\nimport { arrayOrArray, TApiaFormElement, TApiaLoad } from '@apia/util';\r\nimport { uniqueId } from 'lodash';\r\nimport React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { getFunction, TApiaApiMethodHandler } from '../ApiaApiHandler';\r\nimport { TModalTable } from '../types';\r\nimport { ApiaApiCheckbox } from './ApiaApiCheckbox';\r\nimport { ApiaApiFileInput } from './ApiaApiFileInput';\r\nimport { ApiaApiInput } from './ApiaApiInput';\r\nimport { ApiaApiRadio } from './ApiaApiRadio';\r\nimport { ApiaApiSelect } from './ApiaApiSelect';\r\n\r\ntype TApiaApiFieldsContainer = TApiaApiMethodHandler & {\r\n definition?: TApiaLoad | undefined;\r\n};\r\n\r\ntype TApiaApiSectionElement = TApiaFormElement & {\r\n sectionElementId: string;\r\n};\r\n\r\ntype TApiaApiSection = {\r\n sectionId: string;\r\n sectionHeader?: TApiaApiSectionElement;\r\n sectionElements: TApiaApiSectionElement[];\r\n};\r\n\r\nconst parseApiaApiSections = (elements: TApiaFormElement[]) => {\r\n const removeEndingSpacers = (\r\n sectionElements: TApiaFormElement[],\r\n ): TApiaFormElement[] => {\r\n if (sectionElements.length > 1) {\r\n for (let i = sectionElements.length - 1; i >= 0; i--) {\r\n if (sectionElements[i].type === 'empty') {\r\n sectionElements.pop();\r\n } else {\r\n return sectionElements;\r\n }\r\n }\r\n }\r\n return sectionElements;\r\n };\r\n const sectionIndexes: number[] = [];\r\n if (elements[0]?.type !== '2columnTitle') {\r\n sectionIndexes.push(-1);\r\n }\r\n elements.forEach((element, index) => {\r\n if (element.type === '2columnTitle') {\r\n sectionIndexes.push(index);\r\n }\r\n });\r\n const sections: TApiaApiSection[] = [];\r\n sectionIndexes.forEach((sectionIndex, arrayIndex) => {\r\n const start =\r\n sectionIndex + 1 < elements.length\r\n ? sectionIndex + 1\r\n : elements.length - 1;\r\n const end =\r\n arrayIndex + 1 < sectionIndexes.length\r\n ? sectionIndexes[arrayIndex + 1]\r\n : undefined;\r\n sections.push({\r\n sectionId: `ApiaApiSection_${arrayIndex}`,\r\n sectionHeader:\r\n sectionIndex !== -1\r\n ? {\r\n ...elements[sectionIndex],\r\n sectionElementId: `sectionHeader_${arrayIndex}`,\r\n }\r\n : undefined,\r\n sectionElements: removeEndingSpacers(elements.slice(start, end)).map(\r\n (currentElement) => ({\r\n ...currentElement,\r\n sectionElementId: `sectionElement_${\r\n currentElement.id || currentElement.name || uniqueId()\r\n }`,\r\n }),\r\n ),\r\n });\r\n });\r\n return sections;\r\n};\r\n\r\nconst NonMemoizedApiaApiFieldsContainer = (props: TApiaApiFieldsContainer) => {\r\n const elements = React.useMemo(\r\n () => arrayOrArray(props?.definition?.form.elements?.element ?? []),\r\n [props?.definition?.form.elements?.element],\r\n );\r\n\r\n const sections = React.useMemo(\r\n () => parseApiaApiSections(elements),\r\n [elements],\r\n );\r\n\r\n const renderSectionContent = React.useCallback(\r\n (sectionId: string, sectionElements: TApiaApiSectionElement[]) => {\r\n const isVisible =\r\n sectionElements.findIndex((element) => element.type !== 'hidden') !==\r\n -1;\r\n return (\r\n <Box\r\n className={\r\n isVisible\r\n ? 'handler__form__elements__section__content'\r\n : `handler__form__elements__section__content handler__hidden`\r\n }\r\n key={sectionId}\r\n >\r\n {sectionElements.map((current) => {\r\n const element = {\r\n ...current,\r\n onChange() {\r\n getFunction(current.onChange, props)\r\n .then((onChangeMethod) => {\r\n if (onChangeMethod) {\r\n onChangeMethod();\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n };\r\n switch (element.type) {\r\n case 'table': {\r\n const data = JSON.parse(element.text) as TModalTable;\r\n return (\r\n <Box\r\n key={element.sectionElementId}\r\n {...getVariant('layout.common.tables.information')}\r\n >\r\n <table sx={{ width: '100%' }}>\r\n <thead>\r\n <tr>\r\n {data.columns.map((column) => {\r\n return <th key={column}>{column}</th>;\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.rows.map((row) => {\r\n return (\r\n <tr key={row.cells.join('-')}>\r\n {row.cells.map((cell, i) => {\r\n return (\r\n <td key={`${cell}_${data.columns[i]}`}>\r\n {cell}\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </Box>\r\n );\r\n }\r\n case '2columnSubTitle':\r\n return (\r\n <Box\r\n key={element.sectionElementId}\r\n className={element.class}\r\n as=\"h6\"\r\n >\r\n {element.value || element.text}\r\n </Box>\r\n );\r\n case '2column':\r\n return (\r\n <Box\r\n key={element.sectionElementId}\r\n dangerouslySetInnerHTML={{\r\n __html: element.value || element.text,\r\n }}\r\n className={element.class}\r\n />\r\n );\r\n case 'checkbox':\r\n return (\r\n <ApiaApiCheckbox\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'file':\r\n return (\r\n <ApiaApiFileInput\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'hidden':\r\n case 'password':\r\n case 'text':\r\n return (\r\n <ApiaApiInput\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'select':\r\n return (\r\n <ApiaApiSelect\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'radio':\r\n return (\r\n <ApiaApiRadio\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'empty':\r\n return (\r\n <Box key={element.sectionElementId} className=\"spacer\" />\r\n );\r\n default:\r\n console.warn(\r\n `Unhandled element type: ${element.type}`,\r\n element,\r\n );\r\n return null;\r\n }\r\n })}\r\n </Box>\r\n );\r\n },\r\n [props],\r\n );\r\n return (\r\n <Box className=\"handler__form__elements\">\r\n {sections.map((section) => {\r\n if (section.sectionHeader) {\r\n return renderSectionContent(\r\n section.sectionId,\r\n section.sectionElements,\r\n );\r\n }\r\n return renderSectionContent(section.sectionId, section.sectionElements);\r\n })}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const ApiaApiFieldsContainer = React.memo(\r\n NonMemoizedApiaApiFieldsContainer,\r\n);\r\n\r\nApiaApiFieldsContainer.displayName = 'ApiaApiFieldsContainer';\r\n","import { arrayOrArray, TApiaFormButton, TApiaLoad } from '@apia/util';\r\nimport { uniqueId } from 'lodash';\r\nimport QueryString from 'qs';\r\nimport React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport {\r\n hasSucceedFormValidation,\r\n useFormContext,\r\n validationsStore,\r\n} from '@apia/validations';\r\nimport { ISimpleButton, SimpleButton } from '@apia/components';\r\nimport { getFunction, TApiaApiMethodHandler } from '../ApiaApiHandler';\r\nimport ApiaApi from '../apiaApi';\r\n\r\ntype TApiaApiButtonsContainer = TApiaApiMethodHandler & {\r\n definition?: TApiaLoad | undefined;\r\n};\r\n\r\ntype TApiaApiButton = Omit<TApiaFormButton, 'type'> &\r\n Pick<ISimpleButton, 'type'> & {\r\n buttonKey: string;\r\n };\r\n\r\nconst parseButtons = (buttons: TApiaFormButton[]): TApiaApiButton[] => {\r\n return buttons.map((currentButton) => ({\r\n ...currentButton,\r\n buttonKey: uniqueId(),\r\n type: ['submitAjax', 'submit'].includes(currentButton.type)\r\n ? 'submit'\r\n : 'button',\r\n }));\r\n};\r\n\r\nconst NonMemoizedApiaApiButtonsContainer = (\r\n props: TApiaApiButtonsContainer,\r\n) => {\r\n const buttonElements = React.useMemo(\r\n () => arrayOrArray(props.definition?.form.buttons?.button ?? []),\r\n [props.definition?.form.buttons?.button],\r\n );\r\n const buttons = React.useMemo(\r\n () => parseButtons(buttonElements),\r\n [buttonElements],\r\n );\r\n const modalConfiguration = React.useMemo(\r\n () => props.configuration?.modalConfiguration,\r\n [props.configuration?.modalConfiguration],\r\n );\r\n const methodsPath = React.useMemo(\r\n () => props.configuration?.methodsPath,\r\n [props.configuration?.methodsPath],\r\n );\r\n const { name: apiaApiForm } = useFormContext();\r\n\r\n const renderButton = React.useCallback(\r\n (currentButton: TApiaApiButton) => {\r\n const key = currentButton.buttonKey;\r\n const className = `handler__${currentButton.type ?? ''}`;\r\n const onClick = () => {\r\n void (async function submitForm() {\r\n const validationResult = await validationsStore.validateForm(\r\n apiaApiForm,\r\n );\r\n if (!hasSucceedFormValidation(validationResult)) {\r\n return;\r\n }\r\n const { submitValues } = validationResult;\r\n\r\n function runButtonMethod() {\r\n void (async () => {\r\n if (currentButton.onclick) {\r\n const actions = currentButton.onclick.split(';');\r\n // eslint-disable-next-line no-restricted-syntax\r\n for await (const action of actions) {\r\n const method = await getFunction(action, {\r\n ...props,\r\n });\r\n\r\n if (method) {\r\n method({\r\n currentUrl: props.definition?.form.action ?? 'noUrl',\r\n });\r\n } else {\r\n throw new Error(\r\n `The requested action is not defined: \"${\r\n props.definition?.form.action ?? ''\r\n }\"`,\r\n );\r\n }\r\n }\r\n }\r\n })();\r\n }\r\n\r\n if (props?.definition && currentButton.type === 'submit') {\r\n const formData = new FormData();\r\n Object.entries(submitValues).forEach(([name, value]) => {\r\n formData.append(name, (value as string | Blob) ?? '');\r\n });\r\n\r\n const hasContext = props?.definition.form.action.match(\r\n new RegExp(`^${window.CONTEXT}/`),\r\n );\r\n const url = `${hasContext ? '' : window.CONTEXT}${\r\n !props?.definition.form.action.startsWith('/') ? '/' : ''\r\n }${props?.definition.form.action}`;\r\n\r\n props.setState((current) => ({\r\n ...current,\r\n isLoading: true,\r\n }));\r\n\r\n void ApiaApi.post(url, {\r\n postData: props.state.isMultipart\r\n ? formData\r\n : QueryString.stringify(\r\n [...formData.entries(), ['isAjax', true]].reduce<\r\n Record<string, string>\r\n >((accumulated, [name, value]) => {\r\n const retValue = { ...accumulated };\r\n retValue[name.toString()] = value.toString();\r\n return retValue;\r\n }, {}),\r\n ),\r\n handleLoad: true,\r\n notificationsCategory: 'apiaApiHandler',\r\n modalConfiguration,\r\n methodsPath,\r\n }).finally(() => {\r\n runButtonMethod();\r\n });\r\n } else {\r\n runButtonMethod();\r\n }\r\n })();\r\n };\r\n return (\r\n <SimpleButton\r\n className={className}\r\n disabled={props.state.disabled}\r\n id={currentButton.id || currentButton.text}\r\n isLoading={props.state.isLoading}\r\n key={key}\r\n title={currentButton.text}\r\n type={currentButton.type}\r\n onClick={onClick}\r\n >\r\n {currentButton.text}\r\n </SimpleButton>\r\n );\r\n },\r\n [apiaApiForm, methodsPath, modalConfiguration, props],\r\n );\r\n\r\n return (\r\n <Box className=\"handler__form__buttons\">\r\n {buttons.map((currentButton) => renderButton(currentButton))}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const ApiaApiButtonsContainer = React.memo(\r\n NonMemoizedApiaApiButtonsContainer,\r\n);\r\n","/* eslint-disable max-classes-per-file */\r\n\r\nimport * as React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { AxiosResponse } from 'axios';\r\nimport {\r\n arrayOrArray,\r\n EventEmitter,\r\n focus,\r\n focusSelector,\r\n TApiaAction,\r\n TApiaFormElement,\r\n TApiaFunction,\r\n TApiaLoad,\r\n TApiaLoadText,\r\n TModify,\r\n useMount,\r\n useStateRef,\r\n useUnmount,\r\n WithEventsValue,\r\n} from '@apia/util';\r\nimport { notify } from '@apia/notifications';\r\nimport { Form, validationsStore } from '@apia/validations';\r\nimport { Modal, ProgressBar, TModal, useModal } from '@apia/components';\r\nimport { getVariant } from '@apia/theme';\r\nimport ApiaApiContext from './ApiaApiContext';\r\nimport { IApiaApiRequestConfig } from './types';\r\nimport { ApiaActions } from './apiaApi';\r\nimport { ApiaApiFieldsContainer } from './fields/ApiaApiFieldsContainer';\r\nimport { ApiaApiButtonsContainer } from './buttons/ApiaApiButtonsContainer';\r\n\r\nexport type TMessage = {\r\n isHtml?: boolean;\r\n predicate: string;\r\n title?: string;\r\n};\r\ntype TMessageLocal = { title: string; predicate: string };\r\ntype TMethod = {\r\n name: string;\r\n props: {\r\n attributes?: Record<string, unknown>;\r\n currentUrl?: string;\r\n funCall?: string;\r\n inlineArguments?: string[];\r\n messages?: unknown;\r\n };\r\n};\r\nconst ApiaApiMessenger = new (class extends EventEmitter<{\r\n message: TMessageLocal;\r\n}> {})();\r\nconst FunctionsDispatcher = new (class extends EventEmitter<{\r\n method: TMethod;\r\n}> {})();\r\n\r\nexport type TApiaApiMethodHandler = {\r\n alert: typeof notify;\r\n close: () => void;\r\n configuration?: THandleConfiguration;\r\n formDefinition: TApiaLoad;\r\n setModalProps?: (\r\n configuration: THandleConfiguration,\r\n formDefinition?: TApiaLoad,\r\n ) => TModal | null;\r\n reset: () => void;\r\n setError: typeof notify;\r\n setMessage: (message: Record<string, unknown>) => unknown;\r\n setState: React.Dispatch<React.SetStateAction<IApiaApiHandlerState>>;\r\n state: IApiaApiHandlerState;\r\n setValue: (name: string, value: string) => void;\r\n};\r\n\r\nexport type TApiaApiMethod = (\r\n handler: TApiaApiMethodHandler,\r\n props: TMethod['props'],\r\n) => Promise<void> | void;\r\n\r\nexport type TApiaApiField = TApiaApiMethodHandler & {\r\n element: TModify<TApiaFormElement, { onChange: React.ChangeEventHandler }>;\r\n};\r\n\r\nexport const apiaApiForm = 'ApiaApiForm';\r\n\r\ntype TStoredApiaApiMethod = (props?: TMethod['props']) => unknown;\r\n\r\nconst methods: Record<string, TStoredApiaApiMethod> = {};\r\n\r\nexport async function getFunction(\r\n name: string,\r\n handler: TApiaApiMethodHandler,\r\n): Promise<TStoredApiaApiMethod | undefined> {\r\n return new Promise((resolve) => {\r\n try {\r\n const separateNameFromParametersRegex =\r\n /^\\/?([\\w\\d_-]+)\\/?(?:\\(([^)]*)\\))?$/;\r\n const match = name.match(separateNameFromParametersRegex);\r\n if (match) {\r\n const functionName = match[1];\r\n const parameters = match[2];\r\n const path: string = [\r\n ...(handler.configuration?.methodsPath\r\n ?.split('/')\r\n .filter((current) => !!current) ?? []),\r\n functionName,\r\n ].join('/');\r\n const storeMethodAndResolve = (result: { default: TApiaApiMethod }) => {\r\n if (typeof result.default !== 'function') notFound();\r\n const method = result.default;\r\n methods[functionName] = (props?: TMethod['props']) => {\r\n return method(handler, {\r\n ...props,\r\n inlineArguments:\r\n parameters?.split(',').map((argument) => {\r\n if (argument.startsWith(\"'\") || argument.startsWith('\"'))\r\n return argument.slice(1, argument.length - 1);\r\n return argument;\r\n }) ?? [],\r\n });\r\n };\r\n resolve(methods[functionName]);\r\n };\r\n\r\n const notFound = () => {\r\n throw new Error(\r\n `${functionName}.ts not found at ${path}.ts nor ./${functionName}.ts`,\r\n );\r\n };\r\n\r\n import(\r\n /* webpackChunkName: \"api-methods-[request]\" */ `/api/methods/${path}.ts`\r\n )\r\n .then(storeMethodAndResolve)\r\n .catch(() => {\r\n if (handler.configuration?.methodsPath !== undefined)\r\n import(\r\n /* webpackChunkName: \"api-methods-[request]\" */ `/api/methods/${functionName}.ts`\r\n )\r\n\r\n .then(storeMethodAndResolve)\r\n .catch(notFound);\r\n else {\r\n notFound();\r\n }\r\n });\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n handler.reset();\r\n handler.setError({\r\n type: 'danger',\r\n message: 'Error while loading current method.',\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function isForm(\r\n responseObject: Record<string, unknown>,\r\n): responseObject is TApiaLoad {\r\n return (\r\n responseObject.form !== undefined &&\r\n typeof responseObject.form === 'object' &&\r\n !!responseObject.form\r\n );\r\n}\r\n\r\nexport function isFunction(\r\n responseObject: Record<string, unknown>,\r\n): responseObject is TApiaLoad<TApiaFunction> {\r\n return (\r\n typeof responseObject.canClose === 'boolean' &&\r\n typeof responseObject.type === 'string' &&\r\n !!responseObject.function\r\n );\r\n}\r\n\r\nfunction isMessage(\r\n responseObject: Record<string, unknown>,\r\n): responseObject is TApiaLoad<TApiaLoadText> {\r\n if (\r\n typeof responseObject.canClose === 'boolean' &&\r\n typeof responseObject.type === 'string' &&\r\n typeof responseObject.text === 'object' &&\r\n responseObject.text &&\r\n typeof (responseObject.text as Record<string, unknown>).label === 'string'\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport interface IModalConfig {\r\n modalTitle?: string;\r\n onClose?: () => void;\r\n onMessage?: (message: Record<string, unknown>) => unknown;\r\n onMessageClose?: () => unknown;\r\n onSubmitted?: (\r\n handler: TApiaApiMethodHandler,\r\n response: AxiosResponse<Record<string, unknown> | null> | null,\r\n ) => unknown;\r\n}\r\n\r\nconst modalConfigurationHandler = new WithEventsValue<THandleConfiguration>();\r\n\r\nfunction useModalConfiguration() {\r\n const [, setValue, value] = useStateRef<THandleConfiguration | undefined>(\r\n undefined,\r\n );\r\n\r\n const handleChange = React.useCallback(\r\n (newEventsHandler: THandleConfiguration | undefined) => {\r\n setValue(newEventsHandler);\r\n },\r\n [setValue],\r\n );\r\n\r\n useMount(() => {\r\n modalConfigurationHandler.on('update', handleChange);\r\n });\r\n\r\n useUnmount(() => {\r\n return modalConfigurationHandler.off('update', handleChange);\r\n });\r\n\r\n return value;\r\n}\r\n\r\nexport type THandleConfiguration = Partial<\r\n Pick<\r\n IApiaApiRequestConfig<unknown>,\r\n 'modalConfiguration' | 'methodsPath' | 'setModalProps'\r\n >\r\n>;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nlet currentForm: TApiaLoad | undefined;\r\nconst currentFormDispatcher =\r\n new (class currentFormDispatcher extends EventEmitter<{\r\n form: TApiaLoad;\r\n }> {\r\n emit<K extends 'form'>(\r\n eventName: K,\r\n params?: { form: TApiaLoad }[K] | undefined,\r\n ): void {\r\n super.emit(eventName, params);\r\n currentForm = params;\r\n }\r\n })();\r\n\r\nexport function handle(\r\n responseObject: Record<string, unknown>,\r\n currentUrl: string,\r\n configuration: THandleConfiguration,\r\n) {\r\n modalConfigurationHandler.value = configuration;\r\n if (isForm(responseObject)) {\r\n currentFormDispatcher.emit('form', responseObject);\r\n return true;\r\n }\r\n if (isFunction(responseObject)) {\r\n FunctionsDispatcher.emit('method', {\r\n name: responseObject.function.name,\r\n props: {\r\n messages: responseObject.function.messages,\r\n attributes: responseObject.function,\r\n currentUrl,\r\n },\r\n });\r\n return true;\r\n }\r\n if (isMessage(responseObject)) {\r\n ApiaApiMessenger.emit('message', {\r\n predicate: responseObject.text.content,\r\n title: responseObject.text.title,\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport interface IApiaApiHandlerState {\r\n disabled: boolean;\r\n isLoading: boolean;\r\n isMultipart: boolean;\r\n progress: number;\r\n errors: Record<string, string>;\r\n windowIndex: number;\r\n}\r\n\r\nconst initialState: Omit<IApiaApiHandlerState, 'windowIndex'> = {\r\n disabled: false,\r\n isLoading: false,\r\n isMultipart: false,\r\n progress: 0,\r\n errors: {},\r\n};\r\n\r\nconst ApiaApiHandlerNonMemoized = () => {\r\n const configuration = useModalConfiguration();\r\n\r\n const [state, setState] = React.useState<IApiaApiHandlerState>({\r\n ...initialState,\r\n windowIndex: -1,\r\n });\r\n\r\n const [currentForm, setCurrentForm] = React.useState<TApiaLoad | undefined>(\r\n undefined,\r\n );\r\n React.useEffect(() => {\r\n return currentFormDispatcher.on('form', setCurrentForm);\r\n }, []);\r\n\r\n const setValue = React.useCallback((name: string, value: string) => {\r\n return validationsStore.setFieldValue(apiaApiForm, name, value);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!currentForm) return;\r\n const elements = arrayOrArray(currentForm?.form?.elements?.element ?? []);\r\n\r\n let isMultipart = false;\r\n const elementsValues = Object.values(elements);\r\n let i = 0;\r\n while (i < elementsValues.length && !isMultipart) {\r\n if (elementsValues[i++].type === 'file') {\r\n isMultipart = true;\r\n }\r\n }\r\n\r\n setState((currentState) => {\r\n return {\r\n ...currentState,\r\n ...initialState,\r\n isMultipart,\r\n };\r\n });\r\n }, [currentForm]);\r\n\r\n const { show, onClose, ...modalHookProps } = useModal();\r\n\r\n const close = React.useCallback(() => {\r\n onClose();\r\n currentFormDispatcher.emit('form', undefined);\r\n setState((currentState) => {\r\n return { ...currentState, ...initialState };\r\n });\r\n configuration.current?.modalConfiguration?.onClose?.();\r\n\r\n validationsStore.unregisterForm(apiaApiForm);\r\n }, [onClose, configuration]);\r\n\r\n const modalRef = React.useRef<HTMLDivElement>(null);\r\n\r\n React.useEffect(() => {\r\n const elements = modalRef.current?.querySelectorAll(\r\n 'a,input,textarea,button',\r\n );\r\n if (elements?.length === 1)\r\n void focus.on(([...elements] as HTMLElement[])[0]);\r\n });\r\n\r\n const setError = React.useCallback(\r\n (notification: Parameters<typeof notify>[0]) => {\r\n notify({ ...notification });\r\n },\r\n [],\r\n );\r\n\r\n const initialFocusGetter = React.useCallback((ref: HTMLElement) => {\r\n return ref?.querySelector(focusSelector) as HTMLElement;\r\n }, []);\r\n\r\n const defaultModalProps = React.useMemo(\r\n (): TModal => ({\r\n onClose: close,\r\n id: apiaApiForm,\r\n title:\r\n configuration.current?.modalConfiguration?.modalTitle ??\r\n currentForm?.form.title,\r\n size: 'md-fixed',\r\n shouldCloseOnEsc: !state.disabled,\r\n shouldCloseOnOverlayClick: !state.disabled,\r\n initialFocusGetter,\r\n }),\r\n [\r\n close,\r\n configuration,\r\n currentForm?.form.title,\r\n initialFocusGetter,\r\n state.disabled,\r\n ],\r\n );\r\n\r\n const getModalProps = React.useCallback(\r\n (innerHandler: TApiaApiMethodHandler) => {\r\n if (innerHandler.setModalProps) {\r\n const overrideProps = innerHandler.setModalProps?.(\r\n {\r\n methodsPath: innerHandler.configuration?.methodsPath,\r\n modalConfiguration: innerHandler.configuration?.modalConfiguration,\r\n },\r\n innerHandler.formDefinition,\r\n );\r\n if (overrideProps) {\r\n const currentOnClose = () => {\r\n overrideProps?.onClose?.();\r\n defaultModalProps.onClose?.();\r\n };\r\n const currentOnExited = () => {\r\n overrideProps?.onExited?.();\r\n modalHookProps?.onExited?.();\r\n };\r\n return {\r\n ...defaultModalProps,\r\n ...overrideProps,\r\n ...modalHookProps,\r\n onClose: currentOnClose,\r\n onExited: currentOnExited,\r\n };\r\n }\r\n }\r\n return { ...defaultModalProps, ...modalHookProps };\r\n },\r\n [defaultModalProps, modalHookProps],\r\n );\r\n\r\n const getHandler = React.useCallback(() => {\r\n const newHandler: TApiaApiMethodHandler = {\r\n alert,\r\n close,\r\n configuration: configuration.current,\r\n formDefinition: currentForm as TApiaLoad,\r\n reset: () => {\r\n return setState((currentState) => {\r\n return {\r\n ...currentState,\r\n ...initialState,\r\n };\r\n });\r\n },\r\n setError,\r\n setMessage: (message) => {\r\n if (configuration.current?.modalConfiguration?.onMessage)\r\n configuration.current.modalConfiguration.onMessage(message);\r\n },\r\n setState,\r\n state,\r\n setValue,\r\n };\r\n return newHandler;\r\n }, [close, configuration, currentForm, setError, state, setValue]);\r\n\r\n const handler = getHandler();\r\n const modalProps = getModalProps(handler);\r\n\r\n const handleAction = React.useCallback(\r\n async (action: TModify<TApiaAction, { param: string[] }>) => {\r\n const innerHandler = getHandler();\r\n if (action.toDo === 'ajaxHiddeAll') {\r\n close();\r\n }\r\n if (action.toDo === 'functionTimedCall') {\r\n const method = await getFunction(\r\n arrayOrArray(action.param)[1],\r\n innerHandler,\r\n );\r\n\r\n if (method) {\r\n /*\r\n * Aquí el timeout se utiliza debido a que Apia lo establece de esa\r\n * forma,\r\n * Existe un retorno de Apia llamado functionTimedCall que\r\n * espera que una función se ejecute luego de un timeout, y\r\n * yo solamente respeté dicho comportamiento.\r\n */\r\n setTimeout(\r\n () =>\r\n method({\r\n currentUrl: innerHandler.formDefinition?.form.action ?? 'noUrl',\r\n }),\r\n Number(action.param[0]),\r\n );\r\n }\r\n }\r\n },\r\n [close, getHandler],\r\n );\r\n\r\n const handleFunction = React.useCallback(\r\n async ({ name, props: { messages, attributes, currentUrl } }: TMethod) => {\r\n const innerHandler = getHandler();\r\n const method = await getFunction(`${name}`, innerHandler);\r\n if (method) {\r\n method({ messages, attributes, currentUrl });\r\n }\r\n },\r\n [getHandler],\r\n );\r\n\r\n const handleMessage = React.useCallback(\r\n (ev: TMessage) => {\r\n const innerHandler = getHandler();\r\n notify({\r\n message: ev.predicate,\r\n type: 'warning',\r\n onClose: innerHandler.configuration?.modalConfiguration?.onMessageClose,\r\n });\r\n const onMessage =\r\n innerHandler.configuration?.modalConfiguration?.onMessage;\r\n if (onMessage) {\r\n onMessage(ev);\r\n }\r\n },\r\n [getHandler],\r\n );\r\n\r\n React.useEffect(() => {\r\n ApiaApiMessenger.on('message', handleMessage);\r\n FunctionsDispatcher.on('method', handleFunction);\r\n ApiaActions.on('action', handleAction);\r\n\r\n return () => {\r\n ApiaApiMessenger.off('message', handleMessage);\r\n FunctionsDispatcher.off('method', handleFunction);\r\n ApiaActions.off('action', handleAction);\r\n };\r\n }, [handleAction, handleFunction, handleMessage, state.windowIndex]);\r\n\r\n React.useEffect(() => {\r\n if (currentForm) {\r\n show();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentForm]);\r\n\r\n const formRef = React.useCallback(\r\n async (el: HTMLElement) => {\r\n if (el && currentForm?.form.onLoad) {\r\n const method = await getFunction(\r\n `${currentForm?.form.onLoad}`,\r\n getHandler(),\r\n );\r\n if (method) {\r\n method();\r\n }\r\n }\r\n },\r\n [currentForm?.form.onLoad, getHandler],\r\n );\r\n\r\n return (\r\n <ApiaApiContext id={apiaApiForm}>\r\n <Modal {...modalProps} ref={modalRef}>\r\n {currentForm && (\r\n <Box {...getVariant('layout.common.modals.apiaApi')}>\r\n <Form\r\n name={apiaApiForm}\r\n unregisterOnUnmount\r\n avoidFieldsOverride\r\n className=\"handler__form\"\r\n >\r\n <ApiaApiFieldsContainer definition={currentForm} {...handler} />\r\n {state.isMultipart && state.progress > 0 && (\r\n <Box className=\"progressBox\">\r\n <ProgressBar\r\n id=\"ApiaApiHandler progress\"\r\n progress={state.progress}\r\n loading\r\n />\r\n </Box>\r\n )}\r\n <ApiaApiButtonsContainer definition={currentForm} {...handler} />\r\n <Box ref={formRef} sx={{ display: 'none' }} />\r\n </Form>\r\n </Box>\r\n )}\r\n </Modal>\r\n </ApiaApiContext>\r\n );\r\n};\r\n\r\nexport const ApiaApiHandler = React.memo(ApiaApiHandlerNonMemoized);\r\n"],"names":["__async","ApiaActions","__spreadProps","__spreadValues","__objRest","_a","_b","React","_c","_d","currentFormDispatcher","currentForm","ApiaApiContext"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.2.2",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "rollup -c rollup.config.esb.mjs",
|
|
12
12
|
"buildDev": "rollup -c rollup.config.esb.mjs --dev",
|
|
13
13
|
"watch": "rollup -c rollup.config.esb.mjs --dev --watch"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@apia/components": "^0.
|
|
17
|
-
"@apia/notifications": "^0.
|
|
18
|
-
"@apia/theme": "^0.
|
|
19
|
-
"@apia/util": "^0.
|
|
20
|
-
"@apia/validations": "^0.
|
|
16
|
+
"@apia/components": "^0.2.2",
|
|
17
|
+
"@apia/notifications": "^0.2.2",
|
|
18
|
+
"@apia/theme": "^0.2.2",
|
|
19
|
+
"@apia/util": "^0.2.2",
|
|
20
|
+
"@apia/validations": "^0.2.2",
|
|
21
21
|
"axios": "^1.3.4",
|
|
22
22
|
"lodash": "^4.17.21"
|
|
23
23
|
},
|
|
@@ -38,8 +38,7 @@
|
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"@emotion/react": "^11.10.6",
|
|
40
40
|
"react": "^18.2.0",
|
|
41
|
-
"react-dom": "^18.2.0"
|
|
42
|
-
"theme-ui": "^0.15.5"
|
|
41
|
+
"react-dom": "^18.2.0"
|
|
43
42
|
},
|
|
44
43
|
"publishConfig": {
|
|
45
44
|
"access": "public",
|
|
@@ -50,5 +49,5 @@
|
|
|
50
49
|
"url": "http://corp-gitlab-01.domst.st.net/products/apia/ApiaNPMPackages.git",
|
|
51
50
|
"directory": "packages/api"
|
|
52
51
|
},
|
|
53
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "eed8d2895151a4b3e0d4b7ca00c7f22371075487"
|
|
54
53
|
}
|
package/cleanDist.json
DELETED