@apia/api 4.0.7 → 4.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
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/ApiaApiTextArea.tsx","../src/modals/apia/hooks/defaultFetcher.ts","../src/modals/apia/components/ApiaEnvironmentsModal.tsx","../src/modals/apia/components/util/FiltersModal.tsx","../src/fields/ApiaApiEnvironmentsModalField.tsx","../src/modals/apia/components/ApiaTasksModal.tsx","../src/fields/ApiaApiTasksModalField.tsx","../src/modals/apia/components/ApiaProcessesModal.tsx","../src/fields/ApiaApiProcessesModalField.tsx","../src/modals/apia/components/ApiaPoolsModal.tsx","../src/fields/ApiaApiPoolsModalField.tsx","../src/modals/apia/components/ApiaUsersModal.tsx","../src/fields/ApiaApiUsersModalField.tsx","../src/fields/ApiaApiFieldsContainer.tsx","../src/buttons/ApiaApiButtonsContainer.tsx","../src/ApiaApiHandler.tsx","../src/queries/table/AdditionalFilters/components/AdditionalFiltersComponent.tsx","../src/queries/table/AdditionalFilters/AdditionalFiltersModal.tsx","../src/queries/QueryModalController.tsx","../src/queries/FilterTypesComponent.tsx","../src/queries/FilterTypes.tsx","../src/queries/table/TableController.tsx","../src/queries/filters/Filter.tsx","../src/queries/QueryController.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-es/merge';\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 TApiaFilter,\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\nimport { TResponsiveTableColumn } from '@apia/table';\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: false,\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\nclass ApiaActionsClass extends EventEmitter<{\r\n action: TModify<TApiaAction, { param: string[] }>;\r\n}> {}\r\n\r\nexport const ApiaActions = new ApiaActionsClass();\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<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(parsedUrl, behaveConfig.postData, behaveConfig.axiosConfig)\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 FILTERS_LABEL: string;\r\n BTN_DELETE_FILTERS: string;\r\n FINDER_ORDER_BY: string;\r\n FINDER_FILTERS: string;\r\n ADDITIONAL_FILTERS_LABEL: string;\r\n }\r\n\r\n const usersModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const poolsModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const environmentsModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const orgRolesModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const tasksModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const processesModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: 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\ndeclare global {\r\n interface Window {\r\n SALT: string;\r\n IV: string;\r\n PASSPHRASE: string;\r\n KEY_SIZE: number;\r\n ITERATION_COUNT: string;\r\n }\r\n}\r\n\r\n/**\r\n * Permite cargar en forma asíncrona un modal que se encuentre dentro del\r\n * directorio /api/modals\r\n * */\r\nexport const getModal = (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\nexport const ApiaApiInput = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\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.isADate ? 'date' : 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\nclass ApiaApiSelectOptions extends EventEmitter<{\r\n setOptions: {\r\n fieldName: string;\r\n options: TOption[];\r\n };\r\n}> {}\r\n\r\nexport const apiaApiSelectOptions = new ApiaApiSelectOptions();\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 {\r\n classToValidate,\r\n classToValidationFunction,\r\n Textarea,\r\n} from '@apia/validations';\r\nimport React from 'react';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport const ApiaApiTextArea = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n\r\n const className = React.useMemo(\r\n () =>\r\n element.class\r\n ? `handler__textarea ${element.class}`\r\n : 'handler__textarea',\r\n [element.class],\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\r\n return (\r\n <Textarea\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 onChange={element.onChange}\r\n />\r\n );\r\n};\r\n\r\nApiaApiTextArea.displayName = 'ApiaApiTextArea';\r\n","import React from 'react';\r\nimport { ApiaApi, makeApiaUrl } from '../../..';\r\nimport {\r\n TApiaLoad,\r\n TApiaFunction,\r\n TApiaFilterValue,\r\n arrayOrArray,\r\n noNaN,\r\n} from '@apia/util';\r\nimport { TResponsiveTableRow, TResponsiveTableCell } from '@apia/table';\r\nimport { IFetcher, TModalData } from './types';\r\n\r\nfunction parseResult(result?: TApiaLoad<TApiaFunction> | null): TModalData {\r\n if (result) {\r\n const { pageInfo } = result.function.messages.result;\r\n const { table } = result.function.messages.result;\r\n\r\n if (table) {\r\n table.row = arrayOrArray(table.row);\r\n\r\n const returnRows: TResponsiveTableRow[] = table.row.map((currentRow) => {\r\n const returnRow: TResponsiveTableRow = {\r\n id: currentRow.id,\r\n cells: arrayOrArray(currentRow.cell).map((currentCell) => {\r\n const children =\r\n typeof currentCell === 'string' ? currentCell : currentCell.label;\r\n const returnCell: TResponsiveTableCell = {\r\n children,\r\n };\r\n return returnCell;\r\n }),\r\n className: `${currentRow.classToAdd ?? ''} ${\r\n currentRow.unselectableTR ? 'locked' : ''\r\n }`,\r\n };\r\n return returnRow;\r\n });\r\n\r\n return {\r\n currentPage: Number.parseInt(pageInfo.currentPage, 10),\r\n pageCount: Number.parseInt(pageInfo.pageCount, 10),\r\n reachedMax: pageInfo.reachedMax,\r\n rows: returnRows,\r\n recordsCount: noNaN(pageInfo.totalRecords),\r\n };\r\n }\r\n }\r\n\r\n return {\r\n currentPage: 0,\r\n pageCount: 0,\r\n reachedMax: true,\r\n rows: [],\r\n recordsCount: 0,\r\n };\r\n}\r\n\r\nconst defaultFetcher: IFetcher = {\r\n async filter({ filters, parameters, path, requestConfig }) {\r\n const filterValues: Record<string | number, TApiaFilterValue | boolean> = {\r\n selectOnlyOne: false,\r\n };\r\n (filters ?? []).forEach((currentFilter) => {\r\n filterValues[currentFilter.id] = currentFilter.currentValue;\r\n });\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'filter',\r\n ajaxUrl: `/${path}`,\r\n isAjax: true,\r\n timestamp: Date.now(),\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n postDataTreatement: 'stringify',\r\n postData: { ...parameters, ...filterValues },\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n async page({ page, path, requestConfig }) {\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'page',\r\n ajaxUrl: `/${path}`,\r\n pageNumber: page,\r\n isAjax: true,\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n async refresh({ path, requestConfig }) {\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'refresh',\r\n ajaxUrl: `/${path}`,\r\n isAjax: true,\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n async sort({ path, requestConfig, sort }) {\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'sort',\r\n ajaxUrl: `/${path}`,\r\n isAjax: true,\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n postData: {\r\n orderBy: sort,\r\n },\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n};\r\n\r\nexport function useFetcher(fetcher = defaultFetcher) {\r\n const [isLoading, setIsLoading] = React.useState(0);\r\n\r\n const proxy = React.useMemo(() => {\r\n return new Proxy(fetcher, {\r\n get(obj, prop) {\r\n if (prop in obj) {\r\n const method = obj[prop as keyof typeof obj];\r\n return (args: Parameters<typeof method>) => {\r\n return new Promise((resolve, reject) => {\r\n setIsLoading((currentIndex) => currentIndex + 1);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any\r\n method(args as any).then((result) => {\r\n setIsLoading((currentIndex) => currentIndex - 1);\r\n\r\n resolve(result);\r\n }, reject);\r\n });\r\n };\r\n }\r\n\r\n return undefined;\r\n },\r\n });\r\n }, [fetcher]);\r\n\r\n return { fetcher: proxy, isLoading: isLoading > 0 };\r\n}\r\n\r\nexport default defaultFetcher;\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaEnvironmentsModalEmitter } from '../../../fields/ApiaApiEnvironmentsModalField';\r\n\r\nexport const ApiaEnvironmentsModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n environmentsModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(environmentsModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n txtAdtSql: props.initialProps.adtInfo ?? '',\r\n fromGlobalDescAdm: false,\r\n usrToUpdate: '',\r\n },\r\n path: environmentsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [\r\n fetcher,\r\n filters,\r\n props.initialProps.adtInfo,\r\n props.initialProps.name,\r\n props.initialProps.title,\r\n ],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaEnvironmentsModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: environmentsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: environmentsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: environmentsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? environmentsModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { Accordion, AccordionItem } from '@apia/components';\r\nimport { Additional, Responsive, Sort } from '@apia/table';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const FiltersModal = ({ tableName }: { tableName: string }) => {\r\n return (\r\n <Box className=\"additionalFiltersContent\">\r\n <Accordion className=\"filtersModals__accordion\" singleExpand={true}>\r\n <AccordionItem\r\n id=\"Sortpanel\"\r\n buttonProps={{\r\n ariaLabel: window.FINDER_ORDER_BY,\r\n label: window.FINDER_ORDER_BY,\r\n }}\r\n defaultExpanded\r\n >\r\n <Sort tableName={tableName} />\r\n </AccordionItem>\r\n <AccordionItem\r\n id=\"Filters\"\r\n buttonProps={{\r\n ariaLabel: window.FINDER_FILTERS,\r\n label: window.FINDER_FILTERS,\r\n }}\r\n >\r\n <Responsive tableName={tableName} />\r\n </AccordionItem>\r\n <AccordionItem\r\n id=\"Additional\"\r\n buttonProps={{\r\n ariaLabel: window.ADDITIONAL_FILTERS_LABEL,\r\n label: window.ADDITIONAL_FILTERS_LABEL,\r\n }}\r\n >\r\n <Additional tableName={tableName} />\r\n </AccordionItem>\r\n </Accordion>\r\n </Box>\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { ApiaEnvironmentsModal } from '../modals/apia/components/ApiaEnvironmentsModal';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\n\r\nexport const ApiaEnvironmentsModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiEnvironmentsModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((envData) => {\r\n const id = envData.split('_$_')[0];\r\n const title = envData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = environmentsModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaEnvironmentsModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[1].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaEnvironmentsModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: environmentsModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { ApiaTasksModalEmitter } from '../../../fields/ApiaApiTasksModalField';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const ApiaTasksModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n tasksModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(tasksModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n txtAdtSql: props.initialProps.adtInfo ?? '',\r\n usrToUpdate: '',\r\n },\r\n path: tasksModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [\r\n fetcher,\r\n filters,\r\n props.initialProps.adtInfo,\r\n props.initialProps.name,\r\n props.initialProps.title,\r\n ],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaTasksModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: tasksModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: tasksModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: tasksModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? tasksModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { useFormContext, validationsStore } from '@apia/validations';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { useCallback, useEffect, useId, useState } from 'react';\r\nimport { ApiaUtil, LabelBox, SimpleButton, useModal } from '@apia/components';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { ApiaTasksModal } from '../modals/apia/components/ApiaTasksModal';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\n\r\nexport const ApiaTasksModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiTasksModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((tsk) => tsk !== '')\r\n .map((tskData) => {\r\n const id = tskData.split('_$_')[0];\r\n const title = tskData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = tasksModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaTasksModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[1].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaTasksModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: environmentsModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaProcessesModalEmitter } from '../../../fields/ApiaApiProcessesModalField';\r\n\r\nexport const ApiaProcessesModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n processesModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(processesModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n showGlobal: false,\r\n isScenario: false,\r\n showAll: false,\r\n txtAdtSql: props.initialProps.adtInfo ?? '',\r\n usrToUpdate: '',\r\n },\r\n path: processesModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [\r\n fetcher,\r\n filters,\r\n props.initialProps.adtInfo,\r\n props.initialProps.name,\r\n props.initialProps.title,\r\n ],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaProcessesModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: processesModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: processesModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: processesModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? processesModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\nimport { ApiaProcessesModal } from '../modals/apia/components/ApiaProcessesModal';\r\n\r\nexport const ApiaProcessesModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiProcessesModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((proData) => {\r\n const id = proData.split('_$_')[0];\r\n const title = proData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = processesModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaProcessesModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[0].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaProcessesModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: processesModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaPoolsModalEmitter } from '../../../fields/ApiaApiPoolsModalField';\r\n\r\nexport const ApiaPoolsModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n poolsModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(poolsModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n showAutogenerated: false,\r\n showNotAutogenerated: false,\r\n showCurrentEnv: false,\r\n showGlobal: false,\r\n fromEnvs: '',\r\n exactMatch: '',\r\n showOnlyPoolsInHierarchy: false,\r\n forHierarchy: false,\r\n showOnlyPoolsOutsideHierarchy: false,\r\n refreshParameters: false,\r\n fetchAllInHierarchy: false,\r\n usrToUpdate: '',\r\n },\r\n path: poolsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [fetcher, filters, props.initialProps.name, props.initialProps.title],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaPoolsModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: poolsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: poolsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: poolsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? poolsModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\nimport { ApiaPoolsModal } from '../modals/apia/components/ApiaPoolsModal';\r\n\r\nexport const ApiaPoolsModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiPoolsModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((envData) => {\r\n const id = envData.split('_$_')[0];\r\n const title = envData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = poolsModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaPoolsModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[0].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaPoolsModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: poolsModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaUsersModalEmitter } from '../../../fields/ApiaApiUsersModalField';\r\n\r\nexport const ApiaUsersModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n usersModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(usersModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtLogin: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n externalUser: false,\r\n selectOnlyOne: false,\r\n globalAndEnv: true,\r\n hierarchy: false,\r\n forOrgUnit: false,\r\n forCurrentEnv: false,\r\n },\r\n path: usersModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [fetcher, filters, props.initialProps.name, props.initialProps.title],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaUsersModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: usersModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: usersModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: usersModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? usersModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\nimport { ApiaUsersModal } from '../modals/apia/components/ApiaUsersModal';\r\n\r\nexport const ApiaUsersModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiUsersModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n\r\n const [selectedRows, setSelectedRows] = useState<{ id: string }[]>(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((envData) => {\r\n const id = envData;\r\n\r\n return {\r\n id,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = usersModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaUsersModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.id}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n // TODO LABEL\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaUsersModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: usersModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import { getVariant } from '@apia/theme';\r\nimport { arrayOrArray, TApiaFormElement, TApiaLoad } from '@apia/util';\r\nimport uniqueId from 'lodash-es/uniqueId';\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\nimport { ApiaApiTextArea } from './ApiaApiTextArea';\r\nimport { ApiaApiEnvironmentsModalField } from './ApiaApiEnvironmentsModalField';\r\nimport { ApiaApiTasksModalField } from './ApiaApiTasksModalField';\r\nimport { ApiaApiProcessesModalField } from './ApiaApiProcessesModalField';\r\nimport { ApiaApiPoolsModalField } from './ApiaApiPoolsModalField';\r\nimport { ApiaApiUsersModalField } from './ApiaApiUsersModalField';\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\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 'textarea':\r\n return (\r\n <ApiaApiTextArea\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 case 'envsModal':\r\n return (\r\n <ApiaApiEnvironmentsModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'tsksModal':\r\n return (\r\n <ApiaApiTasksModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'procModal':\r\n return (\r\n <ApiaApiProcessesModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'poolModal':\r\n return (\r\n <ApiaApiPoolsModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'userModal':\r\n return (\r\n <ApiaApiUsersModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\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\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-es/uniqueId';\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 =\r\n await validationsStore.validateForm(apiaApiForm);\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 if (props?.definition?.form.closeOnSubmit) {\r\n props.close();\r\n }\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 buttons.length > 0 && (\r\n <Box className=\"handler__form__buttons\">\r\n {buttons.map((currentButton) => renderButton(currentButton))}\r\n </Box>\r\n )\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 StatefulEmitter,\r\n TApiaAction,\r\n TApiaFormElement,\r\n TApiaFunction,\r\n TApiaLoad,\r\n TApiaLoadText,\r\n TModify,\r\n useLatest,\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 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\n/**\r\n * Este método permite cargar en forma asíncrona un método que se encuentre\r\n * dentro del directorio /api/methods\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: {\r\n default: { default: TApiaApiMethod };\r\n }) => {\r\n if (typeof result.default.default !== 'function') notFound();\r\n const method = result.default.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 StatefulEmitter<{\r\n value: THandleConfiguration;\r\n}>();\r\n\r\nfunction useModalConfiguration() {\r\n const value = modalConfigurationHandler.useState('value');\r\n const latestValue = useLatest(value);\r\n\r\n return latestValue;\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 as TApiaLoad);\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.setState('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 const u1 = ApiaApiMessenger.on('message', handleMessage);\r\n const u2 = FunctionsDispatcher.on('method', handleFunction);\r\n const u3 = ApiaActions.on('action', handleAction);\r\n\r\n return () => {\r\n u1();\r\n u2();\r\n u3();\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\r\n {...modalProps}\r\n ref={modalRef}\r\n variant=\"layout.common.modals.apiaApi\"\r\n >\r\n {currentForm && (\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 )}\r\n </Modal>\r\n </ApiaApiContext>\r\n );\r\n};\r\n\r\nexport const ApiaApiHandler = React.memo(ApiaApiHandlerNonMemoized);\r\n","import {\r\n Additional,\r\n Responsive,\r\n Sort,\r\n TableContextReproducer,\r\n} from '@apia/table';\r\nimport { Accordion, AccordionItem } from '@apia/components';\r\nimport { TableController } from '../../TableController';\r\nimport { getLabel } from '@apia/util';\r\n\r\nexport const AdditionalFiltersComponent = ({\r\n tableController,\r\n}: {\r\n tableController: TableController;\r\n}) => {\r\n const filterTitle = getLabel('sbtFilters').text;\r\n const sortTitle = getLabel('titOrderBy').text;\r\n const filterTypes = getLabel('btnFilterType').text;\r\n const hasAdditional = !![...tableController.state.filters.values()].find(\r\n (f) => f.filterState.isAdditional,\r\n );\r\n const hasFilters = !![...tableController.state.filters.values()].find(\r\n (f) => !f.filterState.isAdditional && f.filterState.column,\r\n );\r\n const hasSortable = !![...tableController.state.columns.values()].find(\r\n (c) => c.allowSorting,\r\n );\r\n return (\r\n <TableContextReproducer tableName={tableController.getTableName()}>\r\n <Accordion className=\"additionalFiltersContent\" singleExpand>\r\n {hasFilters && (\r\n <AccordionItem\r\n id=\"Responsive\"\r\n defaultExpanded={true}\r\n buttonProps={{ ariaLabel: filterTitle, label: filterTitle }}\r\n >\r\n <Responsive />\r\n </AccordionItem>\r\n )}\r\n {hasAdditional && (\r\n <AccordionItem\r\n id=\"Additional\"\r\n buttonProps={{\r\n ariaLabel: 'todo: additional',\r\n label: 'todo:additional',\r\n }}\r\n >\r\n <Additional />\r\n </AccordionItem>\r\n )}\r\n {hasSortable && (\r\n <AccordionItem\r\n id=\"Sort\"\r\n buttonProps={{ ariaLabel: sortTitle, label: sortTitle }}\r\n >\r\n <Sort />\r\n </AccordionItem>\r\n )}\r\n {hasFilters && (\r\n <AccordionItem\r\n id=\"FilterTypes\"\r\n buttonProps={{ ariaLabel: filterTypes, label: filterTypes }}\r\n >\r\n {<tableController.filterTypes.Component />}\r\n </AccordionItem>\r\n )}\r\n </Accordion>\r\n </TableContextReproducer>\r\n );\r\n};\r\n","import {\r\n ApiaUtil,\r\n ApiaUtilModalHandler,\r\n SimpleButton,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { AdditionalFiltersComponent } from './components/AdditionalFiltersComponent';\r\nimport { getLabel } from '@apia/util';\r\nimport { QueryController } from '../../QueryController';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport class AdditionalFiltersModal {\r\n private modalHandler: ApiaUtilModalHandler | null = null;\r\n constructor(private queryController: QueryController) {}\r\n\r\n protected getModalDefinition(): TOpenModal {\r\n return {\r\n children: (\r\n <AdditionalFiltersComponent\r\n tableController={this.queryController.tableController}\r\n />\r\n ),\r\n onConfirm: () => {},\r\n confirmProps: {\r\n hideConfirmButton: true,\r\n hideCancelButton: true,\r\n additionalButtonsOnRight: (\r\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: '10px' }}>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n this.queryController.refresh();\r\n }}\r\n >\r\n {getLabel('btnSearch').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant=\"outline-sm\"\r\n onClick={() => {\r\n this.queryController.clearFilters();\r\n }}\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </Box>\r\n ),\r\n },\r\n draggable: true,\r\n variant: 'layout.common.modals.apiaFinder.additionalFiltersModal',\r\n size: 'xl',\r\n };\r\n }\r\n public async openModal(properties?: TOpenModal) {\r\n this.queryController.tableController.filterTypes.initialLoad();\r\n this.modalHandler = ApiaUtil.instance.modals.open({\r\n ...this.getModalDefinition(),\r\n ...properties,\r\n });\r\n }\r\n public closeModal() {\r\n this.modalHandler?.close();\r\n }\r\n}\r\n","import {\r\n ApiaUtil,\r\n ApiaUtilModalHandler,\r\n SimpleButton,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { QueryController } from './QueryController';\r\nimport { TResponsiveTableRowsSelectionEvent } from '@apia/table';\r\nimport { EventEmitter, getLabel } from '@apia/util';\r\nimport { TableControllerEvents } from './table/types';\r\nimport { AdditionalFiltersModal } from './table/AdditionalFilters/AdditionalFiltersModal';\r\n\r\ntype QueryModalControllerEvents = Pick<TableControllerEvents, 'onSelectRows'>;\r\n\r\nexport class QueryModalController {\r\n private emitter = new EventEmitter<QueryModalControllerEvents>();\r\n protected queryController: QueryController;\r\n private modalHandler: ApiaUtilModalHandler | null = null;\r\n private currentSelection: TResponsiveTableRowsSelectionEvent | null = null;\r\n private additionalFiltersController: AdditionalFiltersModal;\r\n\r\n public constructor(queryController: QueryController) {\r\n if (!queryController) {\r\n throw new Error('QueryController instance is required');\r\n }\r\n this.queryController = queryController;\r\n this.additionalFiltersController = new AdditionalFiltersModal(\r\n this.queryController,\r\n );\r\n\r\n this.queryController.tableController.state.props = {\r\n isMultiple: false,\r\n };\r\n\r\n this.queryController.tableController.on('onSelectRows', (ev) => {\r\n this.emitter.emit('onSelectRows', ev);\r\n this.modalHandler?.close();\r\n });\r\n this.queryController.tableController.on('onChangeSelection', (ev) => {\r\n this.currentSelection = ev;\r\n });\r\n }\r\n\r\n protected getModalDefinition(): TOpenModal {\r\n const tableController = this.queryController.tableController;\r\n const structure = this.queryController.structure;\r\n\r\n return {\r\n children: (\r\n <tableController.Context>\r\n <tableController.Table />\r\n <tableController.Pagination />\r\n </tableController.Context>\r\n ),\r\n title: structure?.title,\r\n onConfirm: () => {\r\n this.emitter.emit('onSelectRows', this.currentSelection || []);\r\n },\r\n onCancel: () => {\r\n this.additionalFiltersController.closeModal();\r\n },\r\n confirmProps: {\r\n confirmButtonText: getLabel('btnCon').text,\r\n cancelButtonText: getLabel('btnCan').text,\r\n },\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n this.queryController.refresh();\r\n }}\r\n >\r\n {getLabel('btnSearch').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={async () => {\r\n this.additionalFiltersController.openModal();\r\n }}\r\n >\r\n {getLabel('titAdmAdtFilter').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={() => this.queryController.clearFilters()}\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </>\r\n ),\r\n size: 'finder',\r\n };\r\n }\r\n\r\n public getQueryController() {\r\n return this.queryController;\r\n }\r\n\r\n public on<K extends keyof QueryModalControllerEvents>(\r\n ev: K,\r\n cb: (e: QueryModalControllerEvents[K]) => unknown,\r\n ) {\r\n return this.emitter.on(ev, cb);\r\n }\r\n\r\n public openModal = async (properties?: TOpenModal) => {\r\n await this.queryController.initialLoad();\r\n this.modalHandler = ApiaUtil.instance.modals.open({\r\n ...this.getModalDefinition(),\r\n ...properties,\r\n });\r\n };\r\n\r\n public getModalHandler() {\r\n return this.modalHandler;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { Box, Label, Select } from '@apia/theme';\r\nimport { FilterTypes } from './FilterTypes';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const FilterTypesComponent = observer(\r\n ({ filterTypes }: { filterTypes: FilterTypes }) => {\r\n return (\r\n <>\r\n {filterTypes.conditions.map((f, idx) => {\r\n const options = arrayOrArray(f.options.option);\r\n\r\n return (\r\n <Label key={f.name}>\r\n <Box as=\"span\">{f.text}:</Box>\r\n <Select\r\n title={f.title}\r\n onChange={(ev) => {\r\n const selectedValue = ev.target.value;\r\n filterTypes.conditions[idx].value = selectedValue;\r\n filterTypes.setFilterOptions();\r\n }}\r\n disabled={f.readonly || f.disabled}\r\n value={f.value}\r\n >\r\n {options.map((option) => {\r\n return (\r\n <option value={option.value} key={option.value}>\r\n {option.content}\r\n </option>\r\n );\r\n })}\r\n </Select>\r\n </Label>\r\n );\r\n })}\r\n </>\r\n );\r\n },\r\n);\r\n","import { makeObservable, observable } from 'mobx';\r\nimport ApiaApi, { makeApiaUrl } from '../apiaApi';\r\nimport { FilterTypesComponent } from './FilterTypesComponent';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport {\r\n TApiaFiltersConditionsDefinition,\r\n TFilterTypesElementConditions,\r\n} from './types';\r\n\r\nexport class FilterTypes {\r\n conditions: TFilterTypesElementConditions[] = [];\r\n constructor() {\r\n makeObservable(this, {\r\n conditions: observable,\r\n });\r\n }\r\n protected async getFilterTypes() {\r\n const result = await ApiaApi.post<TApiaFiltersConditionsDefinition>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.query.ModalAction.run?',\r\n action: 'filterOptions',\r\n }),\r\n );\r\n if (!result?.data?.form?.elements?.element) return;\r\n this.conditions = arrayOrArray(result.data.form.elements.element);\r\n }\r\n public Component = () => <FilterTypesComponent filterTypes={this} />;\r\n\r\n public async initialLoad() {\r\n await this.getFilterTypes();\r\n }\r\n\r\n public async setFilterOptions() {\r\n const result = await ApiaApi.post<TApiaFiltersConditionsDefinition>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.query.ModalAction.run?',\r\n action: 'setFilterOptions',\r\n }),\r\n {\r\n postData: this.conditions.reduce<Record<string, string>>((acc, c) => {\r\n acc[c.id] = c.value;\r\n return acc;\r\n }, {}),\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n if (!result) return;\r\n }\r\n}\r\n","import {\r\n ResponsiveTableContext,\r\n Controller2,\r\n makeController2,\r\n ResponsiveTable,\r\n Pagination,\r\n responsiveTableStore,\r\n responsiveTableActions,\r\n} from '@apia/table';\r\nimport { action, makeObservable, observable, reaction, toJS } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { FC, useCallback } from 'react';\r\nimport { EventEmitter, TApiaFilter } from '@apia/util';\r\nimport { TableControllerEvents, TableControllerState } from './types';\r\nimport { FilterTypes } from '../FilterTypes';\r\n\r\nlet controllerCount = 0;\r\n\r\nexport class TableController {\r\n private emitter = new EventEmitter<TableControllerEvents>();\r\n private tableName = `TableController${controllerCount++}`;\r\n private tableSelectionController: Controller2;\r\n private controllerComponent: FC = () => null;\r\n public filterTypes = new FilterTypes();\r\n\r\n state: TableControllerState = {\r\n columns: new Map(),\r\n filters: new Map(),\r\n pagination: { currentPage: 0, totalPages: 0, totalRecords: 0 },\r\n props: {},\r\n rows: [],\r\n };\r\n\r\n constructor(initialState?: Partial<TableControllerState>) {\r\n makeObservable(this, {\r\n state: observable,\r\n updateState: action,\r\n });\r\n\r\n const [controller, controllerComponent] = makeController2(this.tableName);\r\n this.tableSelectionController = controller;\r\n this.controllerComponent = controllerComponent;\r\n\r\n if (initialState) {\r\n Object.assign(this.state, initialState);\r\n }\r\n\r\n reaction(\r\n () => this.state.columns,\r\n (columns) => {\r\n responsiveTableStore.dispatch(\r\n responsiveTableActions.update({\r\n tableName: this.tableName,\r\n columns: [...toJS(columns).values()],\r\n }),\r\n );\r\n },\r\n );\r\n\r\n reaction(\r\n () => this.state.filters,\r\n () => {\r\n responsiveTableStore.dispatch(\r\n responsiveTableActions.update({\r\n tableName: this.tableName,\r\n filters: this.parseFilters(),\r\n }),\r\n );\r\n },\r\n );\r\n\r\n reaction(\r\n () => this.state.rows,\r\n (rows) => {\r\n responsiveTableStore.dispatch(\r\n responsiveTableActions.update({\r\n tableName: this.tableName,\r\n rows: toJS(rows),\r\n }),\r\n );\r\n },\r\n );\r\n }\r\n\r\n public clearFilters() {\r\n [...this.state.filters.values()].forEach((c) => (c.filterState.value = ''));\r\n }\r\n\r\n private parseFilters() {\r\n return [...toJS(this.state.filters).values()].map((c) => {\r\n return {\r\n id: c.filterState.id,\r\n column: c.filterState.column,\r\n asAdditional:\r\n c.filterState.isAdditional ||\r\n this.state.columns.get(c.filterState.column || '')?.hidden,\r\n } as TApiaFilter;\r\n });\r\n }\r\n\r\n public Context = ({ children }: { children: React.ReactNode }) => {\r\n const state = this.state;\r\n const props = toJS(state.props);\r\n return (\r\n <ResponsiveTableContext\r\n {...props}\r\n columns={[...toJS(state.columns).values()]}\r\n rows={[]}\r\n filters={this.parseFilters()}\r\n FiltersRenderer={useCallback(\r\n (filterId: string) => this.state.filters.get(filterId)!.Component,\r\n [],\r\n )}\r\n name={this.tableName}\r\n SelectionHandler={this.controllerComponent}\r\n onSortChange={this.emitter.emit.bind(this.emitter, 'onSortChange')}\r\n onChangeSelection={this.emitter.emit.bind(\r\n this.emitter,\r\n 'onChangeSelection',\r\n )}\r\n onFilterBlur={this.emitter.emit.bind(this.emitter, 'onFilterBlur')}\r\n onFilterChange={this.emitter.emit.bind(this.emitter, 'onFilterChange')}\r\n onFilterPressEnter={this.emitter.emit.bind(\r\n this.emitter,\r\n 'onFilterPressEnter',\r\n )}\r\n onRowClick={this.emitter.emit.bind(this.emitter, 'onRowClick')}\r\n onSelectRows={this.emitter.emit.bind(this.emitter, 'onSelectRows')}\r\n >\r\n {children}\r\n </ResponsiveTableContext>\r\n );\r\n };\r\n\r\n public getTableName() {\r\n return this.tableName;\r\n }\r\n\r\n public Pagination = observer(() => {\r\n return (\r\n <Pagination\r\n currentPage={this.state.pagination.currentPage}\r\n pageCount={this.state.pagination.totalPages}\r\n recordsCount={this.state.pagination.totalRecords}\r\n onPageChange={this.emitter.emit.bind(this.emitter, 'onPage')}\r\n onRefresh={this.emitter.emit.bind(this.emitter, 'onRefresh', null)}\r\n />\r\n );\r\n });\r\n\r\n public Table = ResponsiveTable;\r\n\r\n public on<K extends keyof TableControllerEvents>(\r\n ev: K,\r\n cb: (e: TableControllerEvents[K]) => unknown,\r\n ) {\r\n return this.emitter.on(ev, cb);\r\n }\r\n\r\n public updateState(\r\n newState:\r\n | Partial<TableControllerState>\r\n | ((currentState: TableControllerState) => void),\r\n ) {\r\n if (newState instanceof Function) {\r\n newState(this.state);\r\n } else {\r\n Object.assign(this.state, newState);\r\n }\r\n }\r\n}\r\n","import { makeObservable, observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilter } from './types';\r\nimport { Input } from '@apia/theme';\r\nimport {\r\n getResponsiveTableContext,\r\n useResponsiveTableContext,\r\n} from '@apia/table';\r\nimport { TApiaFilter } from '@apia/util';\r\n\r\nexport type FilterState = TFilter;\r\n\r\nexport class Filter {\r\n private tableName?: string = undefined;\r\n\r\n filterState: FilterState = {\r\n runAutomatically: false,\r\n value: '',\r\n } as FilterState;\r\n\r\n focus() {}\r\n\r\n constructor(properties: TFilter) {\r\n Object.assign(this.filterState, properties);\r\n\r\n makeObservable(this, { filterState: observable });\r\n\r\n reaction(\r\n () => this.filterState.value,\r\n () => {\r\n if (this.tableName) {\r\n getResponsiveTableContext(this.tableName).onFilterChange?.({\r\n id: properties.id,\r\n column: properties.column,\r\n } as any);\r\n }\r\n },\r\n );\r\n }\r\n\r\n Component = observer(({ filter }: { filter: TApiaFilter }) => {\r\n const { onFilterBlur, onFilterPressEnter, name } =\r\n useResponsiveTableContext();\r\n\r\n this.tableName = name;\r\n\r\n return (\r\n <Input\r\n value={this.filterState.value}\r\n onChange={(ev) => {\r\n this.filterState.value = ev.target.value;\r\n }}\r\n onKeyDown={(ev) => {\r\n if (ev.code === 'Enter') {\r\n onFilterPressEnter?.(filter);\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.(filter);\r\n }}\r\n />\r\n );\r\n });\r\n}\r\n","import { TResponsiveTableColumn, TResponsiveTableRow } from '@apia/table';\r\nimport { TableController } from './table/TableController';\r\nimport { arrayOrArray, TApiaFunction, TApiaFunctionPageInfo } from '@apia/util';\r\nimport { TFilter } from './filters/types';\r\nimport ApiaApi, { makeApiaUrl } from '../apiaApi';\r\nimport { Filter } from './filters/Filter';\r\nimport { StructureResponse } from './types';\r\nimport { throttle } from 'lodash-es';\r\n\r\nexport type QueryControllerStructure = {\r\n columns: TResponsiveTableColumn[];\r\n description: string;\r\n filters: TFilter[];\r\n hasAdditionalInformation: boolean;\r\n isDynamic: boolean;\r\n openFiltersAutomatically: boolean;\r\n runFiltersAutomatically: boolean;\r\n hideFilterTypes: boolean;\r\n title: string;\r\n};\r\n\r\nexport abstract class QueryController {\r\n private hasInited = false;\r\n private initializing = false;\r\n public structure: QueryControllerStructure | null = null;\r\n public tableController: TableController = new TableController();\r\n\r\n constructor(public ajaxUrl: string) {\r\n this.initEvents();\r\n }\r\n\r\n private initEvents() {\r\n this.tableController.on('onChangeSelection', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onFilterBlur', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onFilterChange', (ev) => {\r\n const filter = this.tableController.state.filters.get(ev.id);\r\n if (filter?.filterState.runAutomatically) {\r\n this.refresh();\r\n }\r\n });\r\n this.tableController.on('onFilterPressEnter', this.refresh.bind(this));\r\n this.tableController.on('onRowClick', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onSelectRows', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onSortChange', (ev) => {\r\n this.sort(ev.column.name);\r\n });\r\n this.tableController.on('onPage', this.page.bind(this));\r\n this.tableController.on('onRefresh', this.refresh.bind(this));\r\n }\r\n\r\n protected getLoadStructureParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'init',\r\n react: true,\r\n //Importante para forzar paginacion en querys de modal ya que no existe parametro aún\r\n forcePagination: true,\r\n };\r\n }\r\n protected getClearFiltersParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'clearFilter',\r\n };\r\n }\r\n protected getPageParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'page',\r\n };\r\n }\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'refresh',\r\n react: true,\r\n };\r\n }\r\n\r\n protected getSortParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'sort',\r\n react: true,\r\n orderJustThisColumn: true,\r\n };\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: Record<string, unknown>,\r\n ): QueryControllerStructure {\r\n const typedResponse = response as StructureResponse;\r\n\r\n const retrievedColumns = arrayOrArray(typedResponse.columns.column);\r\n\r\n return {\r\n columns: retrievedColumns.map((c) => {\r\n const column: TResponsiveTableColumn = {\r\n label: c.title,\r\n name: c.name,\r\n additionalData: c,\r\n allowSorting: c.enableOrder === '1',\r\n ariaLabel: c.title,\r\n currentSorting: c.order as 'D',\r\n hidden: c.hide === '1',\r\n hideFromAccordion: c.hide === '1',\r\n id: c.name,\r\n showAsAdditional: c.asMoreInformation,\r\n title: c.title,\r\n width: c.width,\r\n };\r\n\r\n return column;\r\n }),\r\n description: typedResponse.queryData.description,\r\n filters: arrayOrArray(typedResponse.filters.filter)\r\n .filter((f) => !!f.column)\r\n .map((f, i) => {\r\n const filter: TFilter = {\r\n id: `filter${String(i + 1)}`, // Id generado en APIA\r\n value: f.currentValue,\r\n avoidLabel: false,\r\n column: f.column,\r\n isAdditional: f.asAdditional,\r\n isHidden: f.hideFilterOption,\r\n title: f.title,\r\n tooltip: f.toolTip,\r\n type: f.type as 'S',\r\n onChange: () => {},\r\n options: [],\r\n placeholder: f.title,\r\n readonly: f.readonly,\r\n required: f.required === 'true',\r\n runAutomatically:\r\n typedResponse?.filters.runFiltersAutomatically ||\r\n f.detectOnChange,\r\n };\r\n\r\n return filter;\r\n }),\r\n hasAdditionalInformation: !!retrievedColumns.find(\r\n (c) => c.asMoreInformation,\r\n ),\r\n isDynamic: false,\r\n title: typedResponse.queryData.title,\r\n openFiltersAutomatically: typedResponse.filters.openFiltersAutomatically,\r\n runFiltersAutomatically: typedResponse.filters.runFiltersAutomatically,\r\n hideFilterTypes: typedResponse.filters.hideFilterTypes,\r\n };\r\n }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n const columns = [...this.tableController.state.columns.values()];\r\n const rows = response?.function?.messages?.result?.table?.row;\r\n const pageState = response?.function.messages.result.pageInfo;\r\n\r\n this.updatePageState(pageState);\r\n this.updateRows([\r\n ...arrayOrArray(rows).map((r) => {\r\n return {\r\n forbidSelection: r.unselectableTR,\r\n initiallySelected: r.selected,\r\n isLocked: r.isLocked,\r\n rowProps: r,\r\n cells: [\r\n columns.find((c) => c.showAsAdditional) ? {} : undefined,\r\n ...columns.filter((c) => c.hidden).map(() => ({})),\r\n ...arrayOrArray(r.cell).map((c) => ({ children: c })),\r\n ].filter(Boolean),\r\n className: r.classToAdd,\r\n id: r.id,\r\n } as TResponsiveTableRow;\r\n }),\r\n ]);\r\n }\r\n\r\n protected async getStructure(): Promise<QueryControllerStructure> {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl(this.getLoadStructureParameters()),\r\n );\r\n\r\n if (!result?.data) {\r\n throw new Error('Cannot load Input query structure');\r\n }\r\n\r\n return this.parseLoadStructureResponse(result.data);\r\n }\r\n\r\n protected parseStructure(structure: QueryControllerStructure) {\r\n const columns = new Map(\r\n arrayOrArray(structure.columns).map((c) => [c.name, c]),\r\n );\r\n const filters = new Map(\r\n arrayOrArray(structure.filters).map((f) => [f.id, new Filter(f)]),\r\n );\r\n\r\n this.tableController.updateState({ columns, filters });\r\n }\r\n\r\n protected updatePageState(pageInfo?: TApiaFunctionPageInfo) {\r\n const currentPage = Number(pageInfo?.currentPage ?? 0);\r\n const totalPages = Number(pageInfo?.pageCount ?? 0);\r\n const totalRecords = Number(pageInfo?.totalRecords ?? 0);\r\n\r\n this.tableController.updateState({\r\n pagination: { currentPage, totalPages, totalRecords },\r\n });\r\n }\r\n\r\n protected updateRows(rows: TResponsiveTableRow[]) {\r\n this.tableController.state.rows = rows;\r\n }\r\n\r\n public async clearFilters() {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl({ ...this.getClearFiltersParameters() }),\r\n );\r\n if (!result?.data) return;\r\n const structure = this.parseLoadStructureResponse(result.data);\r\n this.parseStructure(structure);\r\n this.refresh();\r\n }\r\n\r\n public async initialLoad() {\r\n if (this.initializing && !this.hasInited) {\r\n throw new Error('Cannot initialize the query twice');\r\n }\r\n this.initializing = true;\r\n\r\n if (!this.hasInited) {\r\n this.structure = await this.getStructure();\r\n this.parseStructure(this.structure);\r\n\r\n this.hasInited = true;\r\n this.initializing = false;\r\n }\r\n }\r\n\r\n public async page(num: number) {\r\n const page = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl({ ...this.getPageParameters(), pageNumber: num }),\r\n );\r\n\r\n this.parseRefreshResponse(page?.data);\r\n }\r\n\r\n protected areRequiredFilters(): boolean {\r\n return !![...this.tableController.state.filters.values()].find(\r\n (c) =>\r\n c.filterState.required &&\r\n !c.filterState.value &&\r\n !c.filterState.isHidden,\r\n );\r\n }\r\n\r\n protected executeRefresh = throttle(\r\n async () => {\r\n if (!this.areRequiredFilters()) {\r\n const refresh = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl(this.getRefreshParameters()),\r\n );\r\n\r\n this.parseRefreshResponse(refresh?.data);\r\n }\r\n },\r\n 300,\r\n { leading: false, trailing: true },\r\n );\r\n\r\n public async refresh() {\r\n return this.executeRefresh();\r\n }\r\n\r\n public async sort(column: string) {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl({ ...this.getSortParameters(), orderBy: column }),\r\n );\r\n if (result?.data) {\r\n const structure = this.parseLoadStructureResponse(result.data);\r\n this.parseStructure(structure);\r\n }\r\n this.refresh();\r\n }\r\n}\r\n"],"names":["queryString","React","ApiaApi","id","selectedRows","currentFormDispatcher","currentForm","ApiaApiContext","__publicField","Select","Input"],"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/ApiaApiTextArea.tsx","../src/modals/apia/hooks/defaultFetcher.ts","../src/modals/apia/components/ApiaEnvironmentsModal.tsx","../src/modals/apia/components/util/FiltersModal.tsx","../src/fields/ApiaApiEnvironmentsModalField.tsx","../src/modals/apia/components/ApiaTasksModal.tsx","../src/fields/ApiaApiTasksModalField.tsx","../src/modals/apia/components/ApiaProcessesModal.tsx","../src/fields/ApiaApiProcessesModalField.tsx","../src/modals/apia/components/ApiaPoolsModal.tsx","../src/fields/ApiaApiPoolsModalField.tsx","../src/modals/apia/components/ApiaUsersModal.tsx","../src/fields/ApiaApiUsersModalField.tsx","../src/fields/ApiaApiFieldsContainer.tsx","../src/buttons/ApiaApiButtonsContainer.tsx","../src/ApiaApiHandler.tsx","../src/queries/table/AdditionalFilters/components/AdditionalFiltersComponent.tsx","../src/queries/table/AdditionalFilters/AdditionalFiltersModal.tsx","../src/queries/QueryModalController.tsx","../src/queries/FilterTypesComponent.tsx","../src/queries/FilterTypes.tsx","../src/queries/table/TableController.tsx","../src/queries/filters/Filter.tsx","../src/queries/QueryController.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-es/merge';\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 TApiaFilter,\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\nimport { TResponsiveTableColumn } from '@apia/table';\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: false,\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\nclass ApiaActionsClass extends EventEmitter<{\r\n action: TModify<TApiaAction, { param: string[] }>;\r\n}> {}\r\n\r\nexport const ApiaActions = new ApiaActionsClass();\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<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(parsedUrl, behaveConfig.postData, behaveConfig.axiosConfig)\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 FILTERS_LABEL: string;\r\n BTN_DELETE_FILTERS: string;\r\n FINDER_ORDER_BY: string;\r\n FINDER_FILTERS: string;\r\n ADDITIONAL_FILTERS_LABEL: string;\r\n }\r\n\r\n const usersModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const poolsModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const environmentsModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const orgRolesModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const tasksModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n };\r\n const processesModal: {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: 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\ndeclare global {\r\n interface Window {\r\n SALT: string;\r\n IV: string;\r\n PASSPHRASE: string;\r\n KEY_SIZE: number;\r\n ITERATION_COUNT: string;\r\n }\r\n}\r\n\r\n/**\r\n * Permite cargar en forma asíncrona un modal que se encuentre dentro del\r\n * directorio /api/modals\r\n * */\r\nexport const getModal = (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\nexport const ApiaApiInput = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\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.isADate ? 'date' : 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\nclass ApiaApiSelectOptions extends EventEmitter<{\r\n setOptions: {\r\n fieldName: string;\r\n options: TOption[];\r\n };\r\n}> {}\r\n\r\nexport const apiaApiSelectOptions = new ApiaApiSelectOptions();\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 {\r\n classToValidate,\r\n classToValidationFunction,\r\n Textarea,\r\n} from '@apia/validations';\r\nimport React from 'react';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\n\r\nexport const ApiaApiTextArea = (props: TApiaApiField) => {\r\n const element = React.useMemo(() => props.element, [props.element]);\r\n\r\n const className = React.useMemo(\r\n () =>\r\n element.class\r\n ? `handler__textarea ${element.class}`\r\n : 'handler__textarea',\r\n [element.class],\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\r\n return (\r\n <Textarea\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 onChange={element.onChange}\r\n />\r\n );\r\n};\r\n\r\nApiaApiTextArea.displayName = 'ApiaApiTextArea';\r\n","import React from 'react';\r\nimport { ApiaApi, makeApiaUrl } from '../../..';\r\nimport {\r\n TApiaLoad,\r\n TApiaFunction,\r\n TApiaFilterValue,\r\n arrayOrArray,\r\n noNaN,\r\n} from '@apia/util';\r\nimport { TResponsiveTableRow, TResponsiveTableCell } from '@apia/table';\r\nimport { IFetcher, TModalData } from './types';\r\n\r\nfunction parseResult(result?: TApiaLoad<TApiaFunction> | null): TModalData {\r\n if (result) {\r\n const { pageInfo } = result.function.messages.result;\r\n const { table } = result.function.messages.result;\r\n\r\n if (table) {\r\n table.row = arrayOrArray(table.row);\r\n\r\n const returnRows: TResponsiveTableRow[] = table.row.map((currentRow) => {\r\n const returnRow: TResponsiveTableRow = {\r\n id: currentRow.id,\r\n cells: arrayOrArray(currentRow.cell).map((currentCell) => {\r\n const children =\r\n typeof currentCell === 'string' ? currentCell : currentCell.label;\r\n const returnCell: TResponsiveTableCell = {\r\n children,\r\n };\r\n return returnCell;\r\n }),\r\n className: `${currentRow.classToAdd ?? ''} ${\r\n currentRow.unselectableTR ? 'locked' : ''\r\n }`,\r\n };\r\n return returnRow;\r\n });\r\n\r\n return {\r\n currentPage: Number.parseInt(pageInfo.currentPage, 10),\r\n pageCount: Number.parseInt(pageInfo.pageCount, 10),\r\n reachedMax: pageInfo.reachedMax,\r\n rows: returnRows,\r\n recordsCount: noNaN(pageInfo.totalRecords),\r\n };\r\n }\r\n }\r\n\r\n return {\r\n currentPage: 0,\r\n pageCount: 0,\r\n reachedMax: true,\r\n rows: [],\r\n recordsCount: 0,\r\n };\r\n}\r\n\r\nconst defaultFetcher: IFetcher = {\r\n async filter({ filters, parameters, path, requestConfig }) {\r\n const filterValues: Record<string | number, TApiaFilterValue | boolean> = {\r\n selectOnlyOne: false,\r\n };\r\n (filters ?? []).forEach((currentFilter) => {\r\n filterValues[currentFilter.id] = currentFilter.currentValue;\r\n });\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'filter',\r\n ajaxUrl: `/${path}`,\r\n isAjax: true,\r\n timestamp: Date.now(),\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n postDataTreatement: 'stringify',\r\n postData: { ...parameters, ...filterValues },\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n async page({ page, path, requestConfig }) {\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'page',\r\n ajaxUrl: `/${path}`,\r\n pageNumber: page,\r\n isAjax: true,\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n async refresh({ path, requestConfig }) {\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'refresh',\r\n ajaxUrl: `/${path}`,\r\n isAjax: true,\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n async sort({ path, requestConfig, sort }) {\r\n const result = await ApiaApi.post<TApiaLoad<TApiaFunction>>(\r\n makeApiaUrl({\r\n react: true,\r\n action: 'sort',\r\n ajaxUrl: `/${path}`,\r\n isAjax: true,\r\n stringifyOptions: requestConfig?.stringifyOptions,\r\n }),\r\n {\r\n ...requestConfig,\r\n postData: {\r\n orderBy: sort,\r\n },\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n return parseResult(result?.data);\r\n },\r\n};\r\n\r\nexport function useFetcher(fetcher = defaultFetcher) {\r\n const [isLoading, setIsLoading] = React.useState(0);\r\n\r\n const proxy = React.useMemo(() => {\r\n return new Proxy(fetcher, {\r\n get(obj, prop) {\r\n if (prop in obj) {\r\n const method = obj[prop as keyof typeof obj];\r\n return (args: Parameters<typeof method>) => {\r\n return new Promise((resolve, reject) => {\r\n setIsLoading((currentIndex) => currentIndex + 1);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any\r\n method(args as any).then((result) => {\r\n setIsLoading((currentIndex) => currentIndex - 1);\r\n\r\n resolve(result);\r\n }, reject);\r\n });\r\n };\r\n }\r\n\r\n return undefined;\r\n },\r\n });\r\n }, [fetcher]);\r\n\r\n return { fetcher: proxy, isLoading: isLoading > 0 };\r\n}\r\n\r\nexport default defaultFetcher;\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaEnvironmentsModalEmitter } from '../../../fields/ApiaApiEnvironmentsModalField';\r\n\r\nexport const ApiaEnvironmentsModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n environmentsModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(environmentsModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n txtAdtSql: props.initialProps.adtInfo ?? '',\r\n fromGlobalDescAdm: false,\r\n usrToUpdate: '',\r\n },\r\n path: environmentsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [\r\n fetcher,\r\n filters,\r\n props.initialProps.adtInfo,\r\n props.initialProps.name,\r\n props.initialProps.title,\r\n ],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaEnvironmentsModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: environmentsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: environmentsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: environmentsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? environmentsModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { Accordion, AccordionItem } from '@apia/components';\r\nimport { Additional, Responsive, Sort } from '@apia/table';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const FiltersModal = ({ tableName }: { tableName: string }) => {\r\n return (\r\n <Box className=\"additionalFiltersContent\">\r\n <Accordion className=\"filtersModals__accordion\" singleExpand={true}>\r\n <AccordionItem\r\n id=\"Sortpanel\"\r\n buttonProps={{\r\n ariaLabel: window.FINDER_ORDER_BY,\r\n label: window.FINDER_ORDER_BY,\r\n }}\r\n defaultExpanded\r\n >\r\n <Sort tableName={tableName} />\r\n </AccordionItem>\r\n <AccordionItem\r\n id=\"Filters\"\r\n buttonProps={{\r\n ariaLabel: window.FINDER_FILTERS,\r\n label: window.FINDER_FILTERS,\r\n }}\r\n >\r\n <Responsive tableName={tableName} />\r\n </AccordionItem>\r\n <AccordionItem\r\n id=\"Additional\"\r\n buttonProps={{\r\n ariaLabel: window.ADDITIONAL_FILTERS_LABEL,\r\n label: window.ADDITIONAL_FILTERS_LABEL,\r\n }}\r\n >\r\n <Additional tableName={tableName} />\r\n </AccordionItem>\r\n </Accordion>\r\n </Box>\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { ApiaEnvironmentsModal } from '../modals/apia/components/ApiaEnvironmentsModal';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\n\r\nexport const ApiaEnvironmentsModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiEnvironmentsModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((envData) => {\r\n const id = envData.split('_$_')[0];\r\n const title = envData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = environmentsModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaEnvironmentsModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[1].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaEnvironmentsModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: environmentsModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { ApiaTasksModalEmitter } from '../../../fields/ApiaApiTasksModalField';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const ApiaTasksModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n tasksModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(tasksModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n txtAdtSql: props.initialProps.adtInfo ?? '',\r\n usrToUpdate: '',\r\n },\r\n path: tasksModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [\r\n fetcher,\r\n filters,\r\n props.initialProps.adtInfo,\r\n props.initialProps.name,\r\n props.initialProps.title,\r\n ],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaTasksModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: tasksModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: tasksModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: tasksModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? tasksModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { useFormContext, validationsStore } from '@apia/validations';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { useCallback, useEffect, useId, useState } from 'react';\r\nimport { ApiaUtil, LabelBox, SimpleButton, useModal } from '@apia/components';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { ApiaTasksModal } from '../modals/apia/components/ApiaTasksModal';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\n\r\nexport const ApiaTasksModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiTasksModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((tsk) => tsk !== '')\r\n .map((tskData) => {\r\n const id = tskData.split('_$_')[0];\r\n const title = tskData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = tasksModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaTasksModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[1].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaTasksModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: environmentsModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaProcessesModalEmitter } from '../../../fields/ApiaApiProcessesModalField';\r\n\r\nexport const ApiaProcessesModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n processesModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(processesModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n showGlobal: false,\r\n isScenario: false,\r\n showAll: false,\r\n txtAdtSql: props.initialProps.adtInfo ?? '',\r\n usrToUpdate: '',\r\n },\r\n path: processesModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [\r\n fetcher,\r\n filters,\r\n props.initialProps.adtInfo,\r\n props.initialProps.name,\r\n props.initialProps.title,\r\n ],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaProcessesModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: processesModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: processesModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: processesModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? processesModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\nimport { ApiaProcessesModal } from '../modals/apia/components/ApiaProcessesModal';\r\n\r\nexport const ApiaProcessesModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiProcessesModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((proData) => {\r\n const id = proData.split('_$_')[0];\r\n const title = proData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = processesModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaProcessesModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[0].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaProcessesModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: processesModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaPoolsModalEmitter } from '../../../fields/ApiaApiPoolsModalField';\r\n\r\nexport const ApiaPoolsModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n poolsModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(poolsModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtTitle: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n selectOnlyOne: false,\r\n showAutogenerated: false,\r\n showNotAutogenerated: false,\r\n showCurrentEnv: false,\r\n showGlobal: false,\r\n fromEnvs: '',\r\n exactMatch: '',\r\n showOnlyPoolsInHierarchy: false,\r\n forHierarchy: false,\r\n showOnlyPoolsOutsideHierarchy: false,\r\n refreshParameters: false,\r\n fetchAllInHierarchy: false,\r\n usrToUpdate: '',\r\n },\r\n path: poolsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [fetcher, filters, props.initialProps.name, props.initialProps.title],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaPoolsModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: poolsModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: poolsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: poolsModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? poolsModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\nimport { ApiaPoolsModal } from '../modals/apia/components/ApiaPoolsModal';\r\n\r\nexport const ApiaPoolsModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiPoolsModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n const [selectedRows, setSelectedRows] = useState<\r\n { id: string; title: string }[]\r\n >(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((envData) => {\r\n const id = envData.split('_$_')[0];\r\n const title = envData.split('_$_')[1];\r\n\r\n return {\r\n id,\r\n title,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = poolsModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaPoolsModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.title}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string; title: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n title: rows[i].cells[0].children as string,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaPoolsModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: poolsModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import {\r\n Pagination,\r\n ResponsiveTable,\r\n ResponsiveTableContext,\r\n TResponsiveTableColumn,\r\n TResponsiveTableSortChangeEvent,\r\n TResponsiveTableSortValue,\r\n} from '@apia/table';\r\nimport { TApiaFilter, TApiaFormElement, TModify, getIndex } from '@apia/util';\r\nimport { useFetcher } from '../hooks/defaultFetcher';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { TModalData } from '../hooks/types';\r\nimport { Box } from '@apia/theme';\r\nimport { ApiaUsersModalEmitter } from '../../../fields/ApiaApiUsersModalField';\r\n\r\nexport const ApiaUsersModal = (props: {\r\n tableName?: string;\r\n initialProps: TModify<\r\n TApiaFormElement,\r\n {\r\n onChange: React.ChangeEventHandler<Element>;\r\n }\r\n >;\r\n}) => {\r\n const [actualColumns, setColumns] = useState<TResponsiveTableColumn[]>(\r\n usersModal.columns.map((current) => ({\r\n ...current,\r\n currentSorting: getIndex<TResponsiveTableSortValue>(\r\n ['A', 'D', null],\r\n [\r\n ['A', 'Up'].includes(current.currentSorting || ''),\r\n ['D', 'Down'].includes(current.currentSorting || ''),\r\n true,\r\n ],\r\n ),\r\n })),\r\n );\r\n const [filters, setFilters] = useState(usersModal.filters);\r\n const [state, setState] = useState<TModalData | null>(null);\r\n const { fetcher } = useFetcher();\r\n const filter = useCallback(\r\n (newFilters: TApiaFilter[] = filters) => {\r\n if (newFilters) {\r\n fetcher\r\n .filter({\r\n filters: newFilters,\r\n parameters: {\r\n txtName: props.initialProps.name,\r\n txtLogin: props.initialProps.title,\r\n txtDesc: props.initialProps.title,\r\n externalUser: false,\r\n selectOnlyOne: false,\r\n globalAndEnv: true,\r\n hierarchy: false,\r\n forOrgUnit: false,\r\n forCurrentEnv: false,\r\n },\r\n path: usersModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }\r\n },\r\n [fetcher, filters, props.initialProps.name, props.initialProps.title],\r\n );\r\n useEffect(() => {\r\n filter();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n ApiaUsersModalEmitter.on('deleteFilters', filter);\r\n }, [filter]);\r\n\r\n const handleFilterChange = useCallback(\r\n (ev: TApiaFilter) => {\r\n const newFilters = filters?.map((currentFilter) => {\r\n if (currentFilter.column === ev.column) {\r\n return { ...ev };\r\n }\r\n return currentFilter;\r\n });\r\n setFilters(newFilters);\r\n if (ev.runAutomatically) filter(newFilters);\r\n },\r\n [filters, filter],\r\n );\r\n const handleSort = useCallback(\r\n (ev: TResponsiveTableSortChangeEvent) => {\r\n fetcher\r\n .sort({\r\n sort: ev.columnIndex,\r\n parameters: {},\r\n path: usersModal.path,\r\n requestConfig: {},\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setColumns((currentColumns) =>\r\n currentColumns.map((column) => {\r\n if (column.name === ev.name)\r\n return {\r\n ...column,\r\n currentSorting:\r\n column.currentSorting === 'Down' ||\r\n column.currentSorting === 'D' ||\r\n !column.currentSorting\r\n ? 'A'\r\n : 'D',\r\n };\r\n return { ...column, currentSorting: null };\r\n }),\r\n );\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleFilterPressEnter = useCallback(() => filter(), [filter]);\r\n const handleFilterBlur = useCallback(() => filter(), [filter]);\r\n\r\n const handlePageChange = useCallback(\r\n (page: number) => {\r\n fetcher\r\n .page({\r\n page,\r\n parameters: {},\r\n path: usersModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n },\r\n [fetcher],\r\n );\r\n const handleRefresh = useCallback(() => {\r\n fetcher\r\n .refresh({\r\n parameters: {},\r\n path: usersModal.path,\r\n })\r\n .then((result) => {\r\n if (result) {\r\n setState(result);\r\n }\r\n })\r\n .catch(console.error);\r\n }, [fetcher]);\r\n\r\n return (\r\n state?.rows && (\r\n <ResponsiveTableContext\r\n columns={actualColumns}\r\n rows={state?.rows}\r\n filters={filters}\r\n name={props.tableName ?? usersModal.label}\r\n variant={'layout.common.modals.table'}\r\n onFilterChange={handleFilterChange}\r\n onSortChange={handleSort}\r\n onFilterBlur={handleFilterBlur}\r\n onFilterPressEnter={handleFilterPressEnter}\r\n isMultiple\r\n >\r\n <ResponsiveTable />\r\n <Box className=\"pagination__wrapper\">\r\n <Pagination\r\n currentPage={state.currentPage}\r\n onPageChange={handlePageChange}\r\n onRefresh={handleRefresh}\r\n pageCount={state.pageCount}\r\n reachedMax={state.reachedMax}\r\n recordsCount={state.recordsCount}\r\n />\r\n </Box>\r\n </ResponsiveTableContext>\r\n )\r\n );\r\n};\r\n","import { ApiaUtil, SimpleButton, useModal, LabelBox } from '@apia/components';\r\nimport { TApiaApiField } from '../ApiaApiHandler';\r\nimport { FiltersModal } from '../modals/apia/components/util/FiltersModal';\r\nimport { useId, useCallback, useState, useEffect } from 'react';\r\nimport { EventEmitter, TApiaFilter, getLabel } from '@apia/util';\r\nimport { responsiveTableStore } from '@apia/table';\r\nimport { Box, Label, spacing } from '@apia/theme';\r\nimport { useFormContext, validationsStore } from '@apia/validations';\r\nimport { ApiaUsersModal } from '../modals/apia/components/ApiaUsersModal';\r\n\r\nexport const ApiaUsersModalEmitter = new EventEmitter<{\r\n deleteFilters: TApiaFilter[];\r\n}>();\r\n\r\nexport const ApiaApiUsersModalField = (props: TApiaApiField) => {\r\n const { name } = useFormContext();\r\n\r\n const [selectedRows, setSelectedRows] = useState<{ id: string }[]>(\r\n props.element.value\r\n .split('#')\r\n .filter((env) => env !== '')\r\n .map((envData) => {\r\n const id = envData;\r\n\r\n return {\r\n id,\r\n };\r\n }),\r\n );\r\n const {\r\n isLoading: isFiltersModalLoading,\r\n show: showFiltersModal,\r\n ...filtersModalProps\r\n } = useModal();\r\n\r\n const id = useId();\r\n\r\n const deleteFilters = useCallback(() => {\r\n const newFilters: TApiaFilter[] = usersModal.filters?.map(\r\n (currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\r\n };\r\n },\r\n );\r\n ApiaUsersModalEmitter.emit('deleteFilters', newFilters);\r\n }, []);\r\n\r\n useEffect(() => {\r\n validationsStore.setFieldValue(\r\n name,\r\n props.element.name,\r\n selectedRows.map((e) => e.id).join('#'),\r\n );\r\n }, [name, props.element.name, selectedRows]);\r\n\r\n return (\r\n <>\r\n <Label>{getLabel(props.element.text).text}</Label>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: spacing(3),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxHeight: '200px',\r\n overflow: 'auto',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {selectedRows.map((row) => {\r\n return (\r\n <LabelBox\r\n key={row.id}\r\n label={row.id}\r\n onClose={() => {\r\n setSelectedRows((prev) => {\r\n return prev.filter((prevRow) => {\r\n return prevRow.id !== row.id;\r\n });\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n <SimpleButton\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n onConfirm: () => {\r\n const rows =\r\n responsiveTableStore.getState().responsiveTableSlice[id].rows;\r\n const selectedIndex =\r\n responsiveTableStore.getState().responsiveTableSlice[id]\r\n .selectedRows;\r\n\r\n const selectedRows: { id: string }[] = [];\r\n\r\n selectedIndex.forEach((i) => {\r\n if (rows[i]) {\r\n selectedRows.push({\r\n id: rows[i].id,\r\n });\r\n }\r\n });\r\n setSelectedRows((prev) => [\r\n ...prev,\r\n ...selectedRows.filter((newEnv) => {\r\n return !prev.find((prevEnv) => prevEnv.id === newEnv.id);\r\n }),\r\n ]);\r\n },\r\n // TODO LABEL\r\n confirmProps: { confirmButtonText: getLabel('btnCon').text },\r\n children: (\r\n <ApiaUsersModal\r\n {...filtersModalProps}\r\n initialProps={props.element}\r\n tableName={id}\r\n />\r\n ),\r\n size: 'xxl',\r\n title: usersModal.label,\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n title={window.FILTERS_LABEL}\r\n onClick={() => {\r\n ApiaUtil.instance.modals.open({\r\n children: <FiltersModal tableName={id} />,\r\n variant:\r\n 'layout.common.modals.tableModal.additionalFiltersModal',\r\n size: 'xl',\r\n noHeader: true,\r\n initialFocusGetter(modalInnerRef) {\r\n return modalInnerRef.querySelector(\r\n 'select',\r\n ) as HTMLElement;\r\n },\r\n });\r\n }}\r\n isLoading={isFiltersModalLoading}\r\n >\r\n {window.FILTERS_LABEL}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant={'outline-sm'}\r\n onClick={deleteFilters}\r\n title={window.BTN_DELETE_FILTERS}\r\n >\r\n {window.BTN_DELETE_FILTERS}\r\n </SimpleButton>\r\n </>\r\n ),\r\n });\r\n }}\r\n sx={{\r\n width: 'fit-content !important',\r\n }}\r\n >\r\n {getLabel('lblAdd').text}\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import { getVariant } from '@apia/theme';\r\nimport { arrayOrArray, TApiaFormElement, TApiaLoad } from '@apia/util';\r\nimport uniqueId from 'lodash-es/uniqueId';\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\nimport { ApiaApiTextArea } from './ApiaApiTextArea';\r\nimport { ApiaApiEnvironmentsModalField } from './ApiaApiEnvironmentsModalField';\r\nimport { ApiaApiTasksModalField } from './ApiaApiTasksModalField';\r\nimport { ApiaApiProcessesModalField } from './ApiaApiProcessesModalField';\r\nimport { ApiaApiPoolsModalField } from './ApiaApiPoolsModalField';\r\nimport { ApiaApiUsersModalField } from './ApiaApiUsersModalField';\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\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 'textarea':\r\n return (\r\n <ApiaApiTextArea\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 case 'envsModal':\r\n return (\r\n <ApiaApiEnvironmentsModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'tsksModal':\r\n return (\r\n <ApiaApiTasksModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'procModal':\r\n return (\r\n <ApiaApiProcessesModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'poolModal':\r\n return (\r\n <ApiaApiPoolsModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\r\n );\r\n case 'userModal':\r\n return (\r\n <ApiaApiUsersModalField\r\n key={element.sectionElementId}\r\n {...props}\r\n element={element}\r\n />\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\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-es/uniqueId';\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 =\r\n await validationsStore.validateForm(apiaApiForm);\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 if (props?.definition?.form.closeOnSubmit) {\r\n props.close();\r\n }\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 buttons.length > 0 && (\r\n <Box className=\"handler__form__buttons\">\r\n {buttons.map((currentButton) => renderButton(currentButton))}\r\n </Box>\r\n )\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 StatefulEmitter,\r\n TApiaAction,\r\n TApiaFormElement,\r\n TApiaFunction,\r\n TApiaLoad,\r\n TApiaLoadText,\r\n TModify,\r\n useLatest,\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 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\n/**\r\n * Este método permite cargar en forma asíncrona un método que se encuentre\r\n * dentro del directorio /api/methods\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: {\r\n default: { default: TApiaApiMethod };\r\n }) => {\r\n if (typeof result.default.default !== 'function') notFound();\r\n const method = result.default.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 StatefulEmitter<{\r\n value: THandleConfiguration;\r\n}>();\r\n\r\nfunction useModalConfiguration() {\r\n const value = modalConfigurationHandler.useState('value');\r\n const latestValue = useLatest(value);\r\n\r\n return latestValue;\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 as TApiaLoad);\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.setState('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 const u1 = ApiaApiMessenger.on('message', handleMessage);\r\n const u2 = FunctionsDispatcher.on('method', handleFunction);\r\n const u3 = ApiaActions.on('action', handleAction);\r\n\r\n return () => {\r\n u1();\r\n u2();\r\n u3();\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\r\n {...modalProps}\r\n ref={modalRef}\r\n variant=\"layout.common.modals.apiaApi\"\r\n >\r\n {currentForm && (\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 )}\r\n </Modal>\r\n </ApiaApiContext>\r\n );\r\n};\r\n\r\nexport const ApiaApiHandler = React.memo(ApiaApiHandlerNonMemoized);\r\n","import {\r\n Additional,\r\n Responsive,\r\n Sort,\r\n TableContextReproducer,\r\n} from '@apia/table';\r\nimport { Accordion, AccordionItem } from '@apia/components';\r\nimport { TableController } from '../../TableController';\r\nimport { getLabel } from '@apia/util';\r\n\r\nexport const AdditionalFiltersComponent = ({\r\n tableController,\r\n}: {\r\n tableController: TableController;\r\n}) => {\r\n const filterTitle = getLabel('sbtFilters').text;\r\n const sortTitle = getLabel('titOrderBy').text;\r\n const filterTypes = getLabel('btnFilterType').text;\r\n const hasAdditional = !![...tableController.state.filters.values()].find(\r\n (f) => f.filterState.isAdditional,\r\n );\r\n const hasFilters = !![...tableController.state.filters.values()].find(\r\n (f) => !f.filterState.isAdditional && f.filterState.column,\r\n );\r\n const hasSortable = !![...tableController.state.columns.values()].find(\r\n (c) => c.allowSorting,\r\n );\r\n return (\r\n <TableContextReproducer tableName={tableController.getTableName()}>\r\n <Accordion className=\"additionalFiltersContent\" singleExpand>\r\n {hasFilters && (\r\n <AccordionItem\r\n id=\"Responsive\"\r\n defaultExpanded={true}\r\n buttonProps={{ ariaLabel: filterTitle, label: filterTitle }}\r\n >\r\n <Responsive />\r\n </AccordionItem>\r\n )}\r\n {hasAdditional && (\r\n <AccordionItem\r\n id=\"Additional\"\r\n buttonProps={{\r\n ariaLabel: 'todo: additional',\r\n label: 'todo:additional',\r\n }}\r\n >\r\n <Additional />\r\n </AccordionItem>\r\n )}\r\n {hasSortable && (\r\n <AccordionItem\r\n id=\"Sort\"\r\n buttonProps={{ ariaLabel: sortTitle, label: sortTitle }}\r\n >\r\n <Sort />\r\n </AccordionItem>\r\n )}\r\n {hasFilters && (\r\n <AccordionItem\r\n id=\"FilterTypes\"\r\n buttonProps={{ ariaLabel: filterTypes, label: filterTypes }}\r\n >\r\n {<tableController.filterTypes.Component />}\r\n </AccordionItem>\r\n )}\r\n </Accordion>\r\n </TableContextReproducer>\r\n );\r\n};\r\n","import {\r\n ApiaUtil,\r\n ApiaUtilModalHandler,\r\n SimpleButton,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { AdditionalFiltersComponent } from './components/AdditionalFiltersComponent';\r\nimport { getLabel } from '@apia/util';\r\nimport { QueryController } from '../../QueryController';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport class AdditionalFiltersModal {\r\n private modalHandler: ApiaUtilModalHandler | null = null;\r\n constructor(private queryController: QueryController) {}\r\n\r\n protected getModalDefinition(): TOpenModal {\r\n return {\r\n children: (\r\n <AdditionalFiltersComponent\r\n tableController={this.queryController.tableController}\r\n />\r\n ),\r\n onConfirm: () => {},\r\n confirmProps: {\r\n hideConfirmButton: true,\r\n hideCancelButton: true,\r\n additionalButtonsOnRight: (\r\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: '10px' }}>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n this.queryController.refresh();\r\n }}\r\n >\r\n {getLabel('btnSearch').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant=\"outline-sm\"\r\n onClick={() => {\r\n this.queryController.clearFilters();\r\n }}\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </Box>\r\n ),\r\n },\r\n draggable: true,\r\n variant: 'layout.common.modals.apiaFinder.additionalFiltersModal',\r\n size: 'xl',\r\n };\r\n }\r\n public async openModal(properties?: TOpenModal) {\r\n this.queryController.tableController.filterTypes.initialLoad();\r\n this.modalHandler = ApiaUtil.instance.modals.open({\r\n ...this.getModalDefinition(),\r\n ...properties,\r\n });\r\n }\r\n public closeModal() {\r\n this.modalHandler?.close();\r\n }\r\n}\r\n","import {\r\n ApiaUtil,\r\n ApiaUtilModalHandler,\r\n SimpleButton,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { QueryController } from './QueryController';\r\nimport { TResponsiveTableRowsSelectionEvent } from '@apia/table';\r\nimport { EventEmitter, getLabel } from '@apia/util';\r\nimport { TableControllerEvents } from './table/types';\r\nimport { AdditionalFiltersModal } from './table/AdditionalFilters/AdditionalFiltersModal';\r\n\r\ntype QueryModalControllerEvents = Pick<TableControllerEvents, 'onSelectRows'>;\r\n\r\nexport class QueryModalController {\r\n private emitter = new EventEmitter<QueryModalControllerEvents>();\r\n protected queryController: QueryController;\r\n private modalHandler: ApiaUtilModalHandler | null = null;\r\n private currentSelection: TResponsiveTableRowsSelectionEvent | null = null;\r\n private additionalFiltersController: AdditionalFiltersModal;\r\n\r\n public constructor(queryController: QueryController) {\r\n if (!queryController) {\r\n throw new Error('QueryController instance is required');\r\n }\r\n this.queryController = queryController;\r\n this.additionalFiltersController = new AdditionalFiltersModal(\r\n this.queryController,\r\n );\r\n\r\n this.queryController.tableController.state.props = {\r\n isMultiple: false,\r\n };\r\n\r\n this.queryController.tableController.on('onSelectRows', (ev) => {\r\n this.emitter.emit('onSelectRows', ev);\r\n this.modalHandler?.close();\r\n });\r\n this.queryController.tableController.on('onChangeSelection', (ev) => {\r\n this.currentSelection = ev;\r\n });\r\n }\r\n\r\n protected getModalDefinition(): TOpenModal {\r\n const tableController = this.queryController.tableController;\r\n const structure = this.queryController.structure;\r\n\r\n return {\r\n children: (\r\n <tableController.Context>\r\n <tableController.Table />\r\n <tableController.Pagination />\r\n </tableController.Context>\r\n ),\r\n title: structure?.title,\r\n onConfirm: () => {\r\n this.emitter.emit('onSelectRows', this.currentSelection || []);\r\n },\r\n onCancel: () => {\r\n this.additionalFiltersController.closeModal();\r\n },\r\n confirmProps: {\r\n confirmButtonText: getLabel('btnCon').text,\r\n cancelButtonText: getLabel('btnCan').text,\r\n },\r\n NavBar: (\r\n <>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n this.queryController.refresh();\r\n }}\r\n >\r\n {getLabel('btnSearch').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={async () => {\r\n this.additionalFiltersController.openModal();\r\n }}\r\n >\r\n {getLabel('titAdmAdtFilter').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={() => this.queryController.clearFilters()}\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </>\r\n ),\r\n size: 'finder',\r\n };\r\n }\r\n\r\n public getQueryController() {\r\n return this.queryController;\r\n }\r\n\r\n public on<K extends keyof QueryModalControllerEvents>(\r\n ev: K,\r\n cb: (e: QueryModalControllerEvents[K]) => unknown,\r\n ) {\r\n return this.emitter.on(ev, cb);\r\n }\r\n\r\n public openModal = async (properties?: TOpenModal) => {\r\n await this.queryController.initialLoad();\r\n this.modalHandler = ApiaUtil.instance.modals.open({\r\n ...this.getModalDefinition(),\r\n ...properties,\r\n });\r\n };\r\n\r\n public getModalHandler() {\r\n return this.modalHandler;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { Box, Label, Select } from '@apia/theme';\r\nimport { FilterTypes } from './FilterTypes';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const FilterTypesComponent = observer(\r\n ({ filterTypes }: { filterTypes: FilterTypes }) => {\r\n return (\r\n <>\r\n {filterTypes.conditions.map((f, idx) => {\r\n const options = arrayOrArray(f.options.option);\r\n\r\n return (\r\n <Label key={f.name}>\r\n <Box as=\"span\">{f.text}:</Box>\r\n <Select\r\n title={f.title}\r\n onChange={(ev) => {\r\n const selectedValue = ev.target.value;\r\n filterTypes.conditions[idx].value = selectedValue;\r\n filterTypes.setFilterOptions();\r\n }}\r\n disabled={f.readonly || f.disabled}\r\n value={f.value}\r\n >\r\n {options.map((option) => {\r\n return (\r\n <option value={option.value} key={option.value}>\r\n {option.content}\r\n </option>\r\n );\r\n })}\r\n </Select>\r\n </Label>\r\n );\r\n })}\r\n </>\r\n );\r\n },\r\n);\r\n","import { makeObservable, observable } from 'mobx';\r\nimport ApiaApi, { makeApiaUrl } from '../apiaApi';\r\nimport { FilterTypesComponent } from './FilterTypesComponent';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport {\r\n TApiaFiltersConditionsDefinition,\r\n TFilterTypesElementConditions,\r\n} from './types';\r\n\r\nexport class FilterTypes {\r\n conditions: TFilterTypesElementConditions[] = [];\r\n constructor() {\r\n makeObservable(this, {\r\n conditions: observable,\r\n });\r\n }\r\n protected async getFilterTypes() {\r\n const result = await ApiaApi.post<TApiaFiltersConditionsDefinition>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.query.ModalAction.run?',\r\n action: 'filterOptions',\r\n }),\r\n );\r\n if (!result?.data?.form?.elements?.element) return;\r\n this.conditions = arrayOrArray(result.data.form.elements.element);\r\n }\r\n public Component = () => <FilterTypesComponent filterTypes={this} />;\r\n\r\n public async initialLoad() {\r\n await this.getFilterTypes();\r\n }\r\n\r\n public async setFilterOptions() {\r\n const result = await ApiaApi.post<TApiaFiltersConditionsDefinition>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.query.ModalAction.run?',\r\n action: 'setFilterOptions',\r\n }),\r\n {\r\n postData: this.conditions.reduce<Record<string, string>>((acc, c) => {\r\n acc[c.id] = c.value;\r\n return acc;\r\n }, {}),\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n if (!result) return;\r\n }\r\n}\r\n","import {\r\n ResponsiveTableContext,\r\n Controller2,\r\n makeController2,\r\n ResponsiveTable,\r\n Pagination,\r\n responsiveTableStore,\r\n responsiveTableActions,\r\n} from '@apia/table';\r\nimport { action, makeObservable, observable, reaction, toJS } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { FC, useCallback } from 'react';\r\nimport { EventEmitter, TApiaFilter } from '@apia/util';\r\nimport { TableControllerEvents, TableControllerState } from './types';\r\nimport { FilterTypes } from '../FilterTypes';\r\n\r\nlet controllerCount = 0;\r\n\r\nexport class TableController {\r\n private emitter = new EventEmitter<TableControllerEvents>();\r\n private tableName = `TableController${controllerCount++}`;\r\n private tableSelectionController: Controller2;\r\n private controllerComponent: FC = () => null;\r\n public filterTypes = new FilterTypes();\r\n\r\n state: TableControllerState = {\r\n columns: new Map(),\r\n filters: new Map(),\r\n pagination: { currentPage: 0, totalPages: 0, totalRecords: 0 },\r\n props: {},\r\n rows: [],\r\n };\r\n\r\n constructor(initialState?: Partial<TableControllerState>) {\r\n makeObservable(this, {\r\n state: observable,\r\n updateState: action,\r\n });\r\n\r\n const [controller, controllerComponent] = makeController2(this.tableName);\r\n this.tableSelectionController = controller;\r\n this.controllerComponent = controllerComponent;\r\n\r\n if (initialState) {\r\n Object.assign(this.state, initialState);\r\n }\r\n\r\n reaction(\r\n () => this.state.columns,\r\n (columns) => {\r\n responsiveTableStore.dispatch(\r\n responsiveTableActions.update({\r\n tableName: this.tableName,\r\n columns: [...toJS(columns).values()],\r\n }),\r\n );\r\n },\r\n );\r\n\r\n reaction(\r\n () => this.state.filters,\r\n () => {\r\n responsiveTableStore.dispatch(\r\n responsiveTableActions.update({\r\n tableName: this.tableName,\r\n filters: this.parseFilters(),\r\n }),\r\n );\r\n },\r\n );\r\n\r\n reaction(\r\n () => this.state.rows,\r\n (rows) => {\r\n responsiveTableStore.dispatch(\r\n responsiveTableActions.update({\r\n tableName: this.tableName,\r\n rows: toJS(rows),\r\n }),\r\n );\r\n },\r\n );\r\n }\r\n\r\n public clearFilters() {\r\n [...this.state.filters.values()].forEach((c) => (c.filterState.value = ''));\r\n }\r\n\r\n private parseFilters() {\r\n return [...toJS(this.state.filters).values()].map((c) => {\r\n return {\r\n id: c.filterState.id,\r\n column: c.filterState.column,\r\n asAdditional:\r\n c.filterState.isAdditional ||\r\n this.state.columns.get(c.filterState.column || '')?.hidden,\r\n } as TApiaFilter;\r\n });\r\n }\r\n\r\n public Context = ({ children }: { children: React.ReactNode }) => {\r\n const state = this.state;\r\n const props = toJS(state.props);\r\n return (\r\n <ResponsiveTableContext\r\n {...props}\r\n columns={[...toJS(state.columns).values()]}\r\n rows={[]}\r\n filters={this.parseFilters()}\r\n FiltersRenderer={useCallback(\r\n (filterId: string) => this.state.filters.get(filterId)!.Component,\r\n [],\r\n )}\r\n name={this.tableName}\r\n SelectionHandler={this.controllerComponent}\r\n onSortChange={this.emitter.emit.bind(this.emitter, 'onSortChange')}\r\n onChangeSelection={this.emitter.emit.bind(\r\n this.emitter,\r\n 'onChangeSelection',\r\n )}\r\n onFilterBlur={this.emitter.emit.bind(this.emitter, 'onFilterBlur')}\r\n onFilterChange={this.emitter.emit.bind(this.emitter, 'onFilterChange')}\r\n onFilterPressEnter={this.emitter.emit.bind(\r\n this.emitter,\r\n 'onFilterPressEnter',\r\n )}\r\n onRowClick={this.emitter.emit.bind(this.emitter, 'onRowClick')}\r\n onSelectRows={this.emitter.emit.bind(this.emitter, 'onSelectRows')}\r\n >\r\n {children}\r\n </ResponsiveTableContext>\r\n );\r\n };\r\n\r\n public getTableName() {\r\n return this.tableName;\r\n }\r\n\r\n public Pagination = observer(() => {\r\n return (\r\n <Pagination\r\n currentPage={this.state.pagination.currentPage}\r\n pageCount={this.state.pagination.totalPages}\r\n recordsCount={this.state.pagination.totalRecords}\r\n onPageChange={this.emitter.emit.bind(this.emitter, 'onPage')}\r\n onRefresh={this.emitter.emit.bind(this.emitter, 'onRefresh', null)}\r\n />\r\n );\r\n });\r\n\r\n public Table = ResponsiveTable;\r\n\r\n public on<K extends keyof TableControllerEvents>(\r\n ev: K,\r\n cb: (e: TableControllerEvents[K]) => unknown,\r\n ) {\r\n return this.emitter.on(ev, cb);\r\n }\r\n\r\n public updateState(\r\n newState:\r\n | Partial<TableControllerState>\r\n | ((currentState: TableControllerState) => void),\r\n ) {\r\n if (newState instanceof Function) {\r\n newState(this.state);\r\n } else {\r\n Object.assign(this.state, newState);\r\n }\r\n }\r\n}\r\n","import { makeObservable, observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilter } from './types';\r\nimport { Input } from '@apia/theme';\r\nimport {\r\n getResponsiveTableContext,\r\n useResponsiveTableContext,\r\n} from '@apia/table';\r\nimport { TApiaFilter } from '@apia/util';\r\n\r\nexport type FilterState = TFilter;\r\n\r\nexport class Filter {\r\n private tableName?: string = undefined;\r\n\r\n filterState: FilterState = {\r\n runAutomatically: false,\r\n value: '',\r\n } as FilterState;\r\n\r\n focus() {}\r\n\r\n constructor(properties: TFilter) {\r\n Object.assign(this.filterState, properties);\r\n\r\n makeObservable(this, { filterState: observable });\r\n\r\n reaction(\r\n () => this.filterState.value,\r\n () => {\r\n if (this.tableName) {\r\n getResponsiveTableContext(this.tableName).onFilterChange?.({\r\n id: properties.id,\r\n column: properties.column,\r\n } as any);\r\n }\r\n },\r\n );\r\n }\r\n\r\n Component = observer(({ filter }: { filter: TApiaFilter }) => {\r\n const { onFilterBlur, onFilterPressEnter, name } =\r\n useResponsiveTableContext();\r\n\r\n this.tableName = name;\r\n\r\n return (\r\n <Input\r\n value={this.filterState.value}\r\n onChange={(ev) => {\r\n this.filterState.value = ev.target.value;\r\n }}\r\n onKeyDown={(ev) => {\r\n if (ev.code === 'Enter') {\r\n onFilterPressEnter?.(filter);\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.(filter);\r\n }}\r\n />\r\n );\r\n });\r\n}\r\n","import { TResponsiveTableColumn, TResponsiveTableRow } from '@apia/table';\r\nimport { TableController } from './table/TableController';\r\nimport { arrayOrArray, TApiaFunction, TApiaFunctionPageInfo } from '@apia/util';\r\nimport { TFilter } from './filters/types';\r\nimport ApiaApi, { makeApiaUrl } from '../apiaApi';\r\nimport { Filter } from './filters/Filter';\r\nimport { StructureResponse } from './types';\r\nimport { throttle } from 'lodash-es';\r\n\r\nexport type QueryControllerStructure = {\r\n columns: TResponsiveTableColumn[];\r\n description: string;\r\n filters: TFilter[];\r\n hasAdditionalInformation: boolean;\r\n isDynamic: boolean;\r\n openFiltersAutomatically: boolean;\r\n runFiltersAutomatically: boolean;\r\n hideFilterTypes: boolean;\r\n title: string;\r\n};\r\n\r\nexport abstract class QueryController {\r\n private hasInited = false;\r\n private initializing = false;\r\n public structure: QueryControllerStructure | null = null;\r\n public tableController: TableController = new TableController();\r\n\r\n constructor(public ajaxUrl: string) {\r\n this.initEvents();\r\n }\r\n\r\n private initEvents() {\r\n this.tableController.on('onChangeSelection', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onFilterBlur', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onFilterChange', (ev) => {\r\n const filter = this.tableController.state.filters.get(ev.id);\r\n if (filter?.filterState.runAutomatically) {\r\n this.refresh();\r\n }\r\n });\r\n this.tableController.on('onFilterPressEnter', this.refresh.bind(this));\r\n this.tableController.on('onRowClick', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onSelectRows', (ev) => {\r\n ev;\r\n });\r\n this.tableController.on('onSortChange', (ev) => {\r\n this.sort(ev.column.name);\r\n });\r\n this.tableController.on('onPage', this.page.bind(this));\r\n this.tableController.on('onRefresh', this.refresh.bind(this));\r\n }\r\n\r\n protected getLoadStructureParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'init',\r\n react: true,\r\n //Importante para forzar paginacion en querys de modal ya que no existe parametro aún\r\n forcePagination: true,\r\n };\r\n }\r\n protected getClearFiltersParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'clearFilter',\r\n };\r\n }\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return [...this.tableController.state.filters.values()].reduce<\r\n Record<string, unknown>\r\n >((r, c) => ({ ...r, [c.filterState.id]: c.filterState.value }), {});\r\n }\r\n protected getPageParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'page',\r\n };\r\n }\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'refresh',\r\n react: true,\r\n };\r\n }\r\n protected getSortParameters(): Record<string, unknown> {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'sort',\r\n react: true,\r\n orderJustThisColumn: true,\r\n };\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: Record<string, unknown>,\r\n ): QueryControllerStructure {\r\n const typedResponse = response as StructureResponse;\r\n\r\n const retrievedColumns = arrayOrArray(typedResponse.columns.column);\r\n\r\n return {\r\n columns: retrievedColumns.map((c) => {\r\n const column: TResponsiveTableColumn = {\r\n label: c.title,\r\n name: c.name,\r\n additionalData: c,\r\n allowSorting: c.enableOrder === '1',\r\n ariaLabel: c.title,\r\n currentSorting: c.order as 'D',\r\n hidden: c.hide === '1',\r\n hideFromAccordion: c.hide === '1',\r\n id: c.name,\r\n showAsAdditional: c.asMoreInformation,\r\n title: c.title,\r\n width: c.width,\r\n };\r\n\r\n return column;\r\n }),\r\n description: typedResponse.queryData.description,\r\n filters: arrayOrArray(typedResponse.filters.filter)\r\n .filter((f) => !!f.column)\r\n .map((f, i) => {\r\n const filter: TFilter = {\r\n id: `filter${String(i + 1)}`, // Id generado en APIA\r\n value: f.currentValue,\r\n avoidLabel: false,\r\n column: f.column,\r\n isAdditional: f.asAdditional,\r\n isHidden: f.hideFilterOption,\r\n title: f.title,\r\n tooltip: f.toolTip,\r\n type: f.type as 'S',\r\n onChange: () => {},\r\n options: [],\r\n placeholder: f.title,\r\n readonly: f.readonly,\r\n required: f.required === 'true',\r\n runAutomatically:\r\n typedResponse?.filters.runFiltersAutomatically ||\r\n f.detectOnChange,\r\n };\r\n\r\n return filter;\r\n }),\r\n hasAdditionalInformation: !!retrievedColumns.find(\r\n (c) => c.asMoreInformation,\r\n ),\r\n isDynamic: false,\r\n title: typedResponse.queryData.title,\r\n openFiltersAutomatically: typedResponse.filters.openFiltersAutomatically,\r\n runFiltersAutomatically: typedResponse.filters.runFiltersAutomatically,\r\n hideFilterTypes: typedResponse.filters.hideFilterTypes,\r\n };\r\n }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n const columns = [...this.tableController.state.columns.values()];\r\n const rows = response?.function?.messages?.result?.table?.row;\r\n const pageState = response?.function.messages.result.pageInfo;\r\n\r\n this.updatePageState(pageState);\r\n this.updateRows([\r\n ...arrayOrArray(rows).map((r) => {\r\n return {\r\n forbidSelection: r.unselectableTR,\r\n initiallySelected: r.selected,\r\n isLocked: r.isLocked,\r\n rowProps: r,\r\n cells: [\r\n columns.find((c) => c.showAsAdditional) ? {} : undefined,\r\n ...columns.filter((c) => c.hidden).map(() => ({})),\r\n ...arrayOrArray(r.cell).map((c) => ({ children: c })),\r\n ].filter(Boolean),\r\n className: r.classToAdd,\r\n id: r.id,\r\n } as TResponsiveTableRow;\r\n }),\r\n ]);\r\n }\r\n\r\n protected async getStructure(): Promise<QueryControllerStructure> {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl(this.getLoadStructureParameters()),\r\n );\r\n\r\n if (!result?.data) {\r\n throw new Error('Cannot load Input query structure');\r\n }\r\n\r\n return this.parseLoadStructureResponse(result.data);\r\n }\r\n\r\n protected parseStructure(structure: QueryControllerStructure) {\r\n const columns = new Map(\r\n arrayOrArray(structure.columns).map((c) => [c.name, c]),\r\n );\r\n const filters = new Map(\r\n arrayOrArray(structure.filters).map((f) => [f.id, new Filter(f)]),\r\n );\r\n\r\n this.tableController.updateState({ columns, filters });\r\n }\r\n\r\n protected updatePageState(pageInfo?: TApiaFunctionPageInfo) {\r\n const currentPage = Number(pageInfo?.currentPage ?? 0);\r\n const totalPages = Number(pageInfo?.pageCount ?? 0);\r\n const totalRecords = Number(pageInfo?.totalRecords ?? 0);\r\n\r\n this.tableController.updateState({\r\n pagination: { currentPage, totalPages, totalRecords },\r\n });\r\n }\r\n\r\n protected updateRows(rows: TResponsiveTableRow[]) {\r\n this.tableController.state.rows = rows;\r\n }\r\n\r\n public async clearFilters() {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl({ ...this.getClearFiltersParameters() }),\r\n );\r\n if (!result?.data) return;\r\n const structure = this.parseLoadStructureResponse(result.data);\r\n this.parseStructure(structure);\r\n this.refresh();\r\n }\r\n\r\n public async initialLoad() {\r\n if (this.initializing && !this.hasInited) {\r\n throw new Error('Cannot initialize the query twice');\r\n }\r\n this.initializing = true;\r\n\r\n if (!this.hasInited) {\r\n this.structure = await this.getStructure();\r\n this.parseStructure(this.structure);\r\n\r\n this.hasInited = true;\r\n this.initializing = false;\r\n }\r\n }\r\n\r\n public async page(num: number) {\r\n const page = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl({ ...this.getPageParameters(), pageNumber: num }),\r\n );\r\n\r\n this.parseRefreshResponse(page?.data);\r\n }\r\n\r\n protected areRequiredFilters(): boolean {\r\n return !![...this.tableController.state.filters.values()].find(\r\n (c) =>\r\n c.filterState.required &&\r\n !c.filterState.value &&\r\n !c.filterState.isHidden,\r\n );\r\n }\r\n\r\n /**\r\n * Allows to throttle calls to actual refresh method.\r\n */\r\n protected executeRefresh = throttle(\r\n async () => {\r\n if (!this.areRequiredFilters()) {\r\n const refresh = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl(this.getRefreshParameters()),\r\n {\r\n postData: this.getFiltersValuesMap(),\r\n postDataTreatement: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n this.parseRefreshResponse(refresh?.data);\r\n }\r\n },\r\n 300,\r\n { leading: false, trailing: true },\r\n );\r\n\r\n public async refresh() {\r\n return this.executeRefresh();\r\n }\r\n\r\n public async sort(column: string) {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl({ ...this.getSortParameters(), orderBy: column }),\r\n );\r\n if (result?.data) {\r\n const structure = this.parseLoadStructureResponse(result.data);\r\n this.parseStructure(structure);\r\n }\r\n this.refresh();\r\n }\r\n}\r\n"],"names":["queryString","React","ApiaApi","id","selectedRows","currentFormDispatcher","currentForm","ApiaApiContext","__publicField","Select","Input"],"mappings":"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"}
|