@apia/api 4.0.60 → 4.0.63

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.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/filters/renderers/RangeFilterRenderer.tsx","../src/queries/filters/FilterLabel.tsx","../src/queries/filters/renderers/SelectFilterRenderer.tsx","../src/queries/filters/renderers/InputFilterRenderer.tsx","../src/queries/filters/renderers/DateFilterRenderer.tsx","../src/queries/filters/renderers/FreeLabelFilterRenderer.tsx","../src/queries/filters/Filter.tsx","../src/queries/table/TableController.tsx","../src/queries/QueryController.tsx","../src/queries/FilterTypesComponent.tsx","../src/queries/table/AdditionalFilters/components/AdditionalFiltersComponent.tsx","../src/queries/table/AdditionalFilters/AdditionalFiltersModal.tsx","../src/queries/QueryModalController.tsx","../src/modals/apia/components/generics/GenericListQuery.ts","../src/modals/apia/components/generics/ApiaUsersModal2.ts","../src/modals/apia/components/generics/ApiaPoolsModal2.ts","../src/modals/apia/components/generics/ApiaMonDocModal2.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, { AxiosError, 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 TNotificationType,\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 if (\r\n error instanceof AxiosError &&\r\n (error.status === 403 || error.response?.status === 403)\r\n ) {\r\n session.invalidate();\r\n return;\r\n }\r\n\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 type TMessage = {\r\n type: TNotificationType;\r\n text: string;\r\n title: string;\r\n stack?: string;\r\n};\r\n\r\nexport function parseMessages2(messages: TMessage[]) {\r\n for (const m of messages) {\r\n notify({ message: m.text, title: m.title, trace: m.stack, type: m.type });\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 messages,\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 (messages) {\r\n parseMessages2(arrayOrArray((messages as any)?.message as TMessage));\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(e instanceof AxiosError ? e : 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(e instanceof AxiosError ? e : 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.replace(/^\\/?(.+?)\\/?$/, '$1');\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\nexport type TApiModal = {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n};\r\n\r\nexport function getModal(name: string): TApiModal {\r\n return (window as any)[name] as TApiModal;\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\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: number;\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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal(\r\n 'environmentsModal',\r\n ).filters?.map((currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\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: getModal('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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('tasksModal').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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('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 <Box as=\"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 </Box>\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\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 }\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 { Box, getVariant, Input, Select } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { useRef } from 'react';\r\nimport { TApiaFilterValue, useIntermediateValue } from '@apia/util';\r\n\r\nconst units = ['B', 'KB', 'MB', 'GB'];\r\n\r\nexport const RangeFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n const multiplier = useRef(1);\r\n const lastEmittedHigh = useRef<TApiaFilterValue | null>(null);\r\n const lastEmittedLow = useRef<TApiaFilterValue | null>(null);\r\n const lastEmittedMultiplier = useRef(1);\r\n\r\n if (lastEmittedLow.current !== state.value) {\r\n lastEmittedLow.current = state.value;\r\n lastEmittedHigh.current = state.filterToValue || '';\r\n }\r\n\r\n const emitLow = (currentValue: TApiaFilterValue) => {\r\n const numberValue = currentValue ?? '';\r\n\r\n if (\r\n lastEmittedLow.current === numberValue &&\r\n lastEmittedMultiplier.current === multiplier.current\r\n ) {\r\n return;\r\n }\r\n\r\n lastEmittedLow.current = numberValue;\r\n lastEmittedMultiplier.current = multiplier.current;\r\n const emitValue = numberValue;\r\n\r\n state.value = emitValue;\r\n state.multiplier = multiplier.current;\r\n };\r\n\r\n const emitHigh = (currentValue: TApiaFilterValue) => {\r\n const numberValue = currentValue ?? '';\r\n\r\n if (\r\n lastEmittedHigh.current === numberValue &&\r\n lastEmittedMultiplier.current === multiplier.current\r\n ) {\r\n return;\r\n }\r\n\r\n lastEmittedHigh.current = numberValue;\r\n lastEmittedMultiplier.current = multiplier.current;\r\n const emitValue = numberValue;\r\n\r\n state.filterToValue = String(emitValue);\r\n state.multiplier = multiplier.current;\r\n };\r\n\r\n const [lowValue, setLowValue] = useIntermediateValue(state.value);\r\n const [highValue, setHighValue] = useIntermediateValue(state.filterToValue);\r\n const [unit, setUnit] = useIntermediateValue(state.multiplier);\r\n\r\n return (\r\n <Box\r\n className={`ApiaFilter__Range`}\r\n {...getVariant('layout.common.components.filters.rangeFilter')}\r\n >\r\n <Box className=\"ApiaFilter__Range__Low\">\r\n <Input\r\n disabled={state.readonly}\r\n onChange={({ target: { value: currentValue } }) => {\r\n setLowValue(currentValue);\r\n emitLow(currentValue);\r\n }}\r\n onBlur={({ target: { value: currentValue } }) => {\r\n emitLow(currentValue);\r\n }}\r\n onKeyDown={({ code, target }) => {\r\n if (code === 'Enter') {\r\n emitLow((target as HTMLInputElement).value);\r\n }\r\n }}\r\n value={lowValue}\r\n />\r\n </Box>\r\n {' - '}\r\n <Box className=\"ApiaFilter__Range__High\">\r\n <Input\r\n disabled={state.readonly}\r\n required={state.required}\r\n onChange={({ target: { value: currentValue } }) => {\r\n setHighValue(currentValue);\r\n emitHigh(currentValue);\r\n }}\r\n onBlur={({ target: { value: currentValue } }) => {\r\n emitHigh(currentValue);\r\n }}\r\n onKeyDown={({ code, target }) => {\r\n if (code === 'Enter') {\r\n emitHigh((target as HTMLInputElement).value);\r\n }\r\n }}\r\n value={highValue}\r\n />\r\n </Box>\r\n {state.isSize && (\r\n <Select\r\n disabled={state.readonly}\r\n className=\"ApiaFilter__Range__UnitSelector\"\r\n onChange={(ev) => {\r\n const unit = ev.target.value;\r\n const index = units.indexOf(unit);\r\n if (index !== -1) {\r\n multiplier.current = 2 ** (index * 10);\r\n setUnit(multiplier.current);\r\n /**\r\n * It's enough to fire event on low because it updates the multiplier in the original filter\r\n */\r\n emitLow(lastEmittedLow.current ?? '');\r\n }\r\n }}\r\n value={units[Math.log2(unit || 1) / 10]}\r\n >\r\n {units.map((c) => (\r\n <option key={c} value={c}>\r\n {c}\r\n </option>\r\n ))}\r\n </Select>\r\n )}\r\n </Box>\r\n );\r\n});\r\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { RequiredMark } from '@apia/components';\nimport { formatMessage } from '@apia/util';\nimport type { TFilter } from './types';\n\nexport interface IFilterLabelProps {\n state: TFilter;\n /**\n * Si true, no renderiza el texto del label (solo la estructura).\n * Útil para casos en que el control renderiza su propio label.\n */\n avoidLabel?: boolean;\n /**\n * Forzar un texto en lugar de state.title\n */\n labelOverride?: string;\n /**\n * Indica que el label corresponde a un filtro fecha (para usar\n * LBL_DATE_FILTER_FROM/TO tokenizado si hay filterToId)\n */\n isDate?: boolean;\n className?: string;\n title?: string | undefined;\n}\n\n/**\n * Componente genérico para renderizar la etiqueta de un filtro (label + required mark).\n * Pensado para usarse desde los renderers o desde el componente contenedor de filtros.\n */\nexport const FilterLabel: React.FC<IFilterLabelProps> = ({\n state,\n labelOverride,\n isDate,\n className,\n title,\n}) => {\n const text = React.useMemo(() => {\n const base = labelOverride ?? state?.title ?? '';\n if (isDate && state?.filterToId && !state.hideToFilter) {\n // usa el label de \"from\" tokenizado (consistente con el resto del proyecto)\n try {\n return formatMessage(window.LBL_DATE_FILTER_FROM_TXT, { TOK1: base });\n } catch {\n return base;\n }\n }\n return base;\n }, [labelOverride, state, isDate]);\n\n const showRequiredBefore = !!(\n state?.required && window.SHOW_REQUIRED_POSITION !== '0'\n );\n const showRequiredAfter = !!(\n state?.required && window.SHOW_REQUIRED_POSITION === '0'\n );\n\n return (\n <Box\n className={`filterLabel ${className ?? ''}`}\n title={title}\n sx={{ display: 'flex', flexDirection: 'row' }}\n >\n {showRequiredBefore && <RequiredMark isRequired sx={{ zIndex: 1 }} />}\n <Box as=\"span\">{text}</Box>\n {showRequiredAfter && <RequiredMark isRequired sx={{ zIndex: 1 }} />}\n </Box>\n );\n};\n\nexport default FilterLabel;\n","import { Select } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport FilterLabel from '../FilterLabel';\r\n\r\nexport const SelectFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n return (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <Select\r\n className=\"filter__query\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required ? 'palette.error.main' : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.value}\r\n onChange={(ev) => {\r\n state.value = ev.target.value;\r\n }}\r\n >\r\n {arrayOrArray(state.options).map((c) => (\r\n <option key={c.value} value={c.value}>\r\n {c.label}\r\n </option>\r\n ))}\r\n </Select>\r\n </>\r\n );\r\n});\r\n","import { Input } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { useResponsiveTableContext } from '@apia/table';\r\nimport { TApiaFilter } from '@apia/util';\r\nimport FilterLabel from '../FilterLabel';\r\n\r\nexport const InputFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n const { onFilterBlur, onFilterPressEnter } = useResponsiveTableContext();\r\n\r\n return (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <Input\r\n className=\"filter__query\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required ? 'palette.error.main' : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.value}\r\n onChange={(ev) => {\r\n state.value = ev.target.value;\r\n }}\r\n onKeyDown={(ev) => {\r\n if (ev.code === 'Enter') {\r\n onFilterPressEnter?.(state as any as TApiaFilter);\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.(state as any as TApiaFilter);\r\n }}\r\n />\r\n </>\r\n );\r\n});\r\n","import { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { useResponsiveTableContext } from '@apia/table';\r\nimport { ApiaUtil, DateInput } from '@apia/components';\r\nimport { getDateFormat, TApiaFilter, uniqueId } from '@apia/util';\r\nimport dayjs from 'dayjs';\r\nimport FilterLabel from '../FilterLabel';\r\n\r\nconst dateFormat = getDateFormat();\r\nfunction controlDatesOrder(first: string, last: string) {\r\n if (!first || !last) return true;\r\n\r\n if (dayjs(last, dateFormat).isBefore(dayjs(first, dateFormat))) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const DateFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n const { onFilterBlur, onFilterChange } = useResponsiveTableContext();\r\n\r\n const idFrom = uniqueId('date_from_');\r\n const idTo = uniqueId('date_to_');\r\n\r\n return (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <DateInput\r\n id={idFrom}\r\n className=\"filter__query date_from\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required ? 'palette.error.main' : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.value}\r\n onChange={(date) => {\r\n const result = controlDatesOrder(\r\n date ?? '',\r\n state.filterToValue ?? '',\r\n );\r\n if (result) {\r\n state.value = date ?? '';\r\n onFilterChange?.(state as any as TApiaFilter);\r\n } else {\r\n state.value = undefined;\r\n onFilterChange?.({\r\n ...state,\r\n currentValue: '',\r\n deleteFiltersTimestamp: undefined,\r\n changeFiltersTimestamp: undefined,\r\n } as TApiaFilter);\r\n\r\n const a = document.querySelector(`#${idFrom}`) as HTMLButtonElement;\r\n\r\n if (a) {\r\n a.click();\r\n }\r\n ApiaUtil.instance.notifications.notify({\r\n message: window.MSG_FEC_FIN_MAY_FEC_INI,\r\n type: 'warning',\r\n });\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.({\r\n ...state,\r\n currentValue: state.value,\r\n } as TApiaFilter);\r\n }}\r\n />\r\n {(state?.isAdditional || state.group) && state?.filterToId && (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <DateInput\r\n id={idTo}\r\n className=\"filter__query date_to\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required\r\n ? 'palette.error.main'\r\n : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.filterToValue}\r\n onChange={(date) => {\r\n const result = controlDatesOrder(state.value, date ?? '');\r\n if (result) {\r\n state.filterToValue = date ?? '';\r\n onFilterChange?.(state as any as TApiaFilter);\r\n } else {\r\n state.filterToValue = undefined;\r\n onFilterChange?.({\r\n ...state,\r\n currentValue: '',\r\n deleteFiltersTimestamp: undefined,\r\n changeFiltersTimestamp: undefined,\r\n } as TApiaFilter);\r\n\r\n const a = document.querySelector(\r\n `#${idTo}`,\r\n ) as HTMLButtonElement;\r\n\r\n if (a) {\r\n a.click();\r\n }\r\n\r\n ApiaUtil.instance.notifications.notify({\r\n message: window.MSG_FEC_FIN_MAY_FEC_INI,\r\n type: 'warning',\r\n });\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.({\r\n ...state,\r\n currentValue: state.filterToValue,\r\n } as TApiaFilter);\r\n }}\r\n />\r\n </>\r\n )}\r\n </>\r\n );\r\n});\r\n","import { Box, Input } from '@apia/theme';\nimport { observer } from 'mobx-react-lite';\nimport { TFilterRenderer } from './types';\nimport {\n Autocomplete,\n AutocompleteController,\n AutocompleteOption,\n IconButton,\n} from '@apia/components';\nimport { arrayOrArray, getLabel, TApiaFilter, useMount } from '@apia/util';\nimport ApiaApi, { makeApiaUrl } from '../../../apiaApi';\nimport { useMemo } from 'react';\nimport { useResponsiveTableContext } from '@apia/table';\nasync function getOptions(search?: string): Promise<AutocompleteOption[]> {\n if (!search) return [];\n const res = await ApiaApi.get<{\n row: { content: string; searchId: string }[];\n }>(\n makeApiaUrl({\n ajaxUrl: 'AutoCompleteAction.run',\n action: 'search',\n object: 'doc_free_metadata',\n filter: 'doc_free_metadata_title',\n id: 'doc_free_metadata_title',\n show: 'doc_free_metadata_title',\n likeSearch: true,\n allowLive: false,\n includeEnvId: true,\n distinctId: true,\n value: search,\n }),\n );\n const rows = arrayOrArray(res?.data?.row);\n return rows.map(({ content, searchId }) => ({\n label: content,\n value: searchId,\n }));\n}\n\nexport const FreeLabelFilterRenderer: TFilterRenderer = observer(\n ({ state }) => {\n const { onFilterChange } = useResponsiveTableContext();\n const controller = useMemo(\n () =>\n new AutocompleteController({\n value: '',\n icon: 'LetterAutocomplete',\n options: [],\n onSearch: async (search, _acController) => {\n state.value = '';\n return getOptions(search);\n },\n\n onChange(str) {\n state.value = str;\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n useMount(() => {\n controller.state.options = [];\n });\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: 2,\n width: '100%',\n alignItems: 'end',\n '.autocomplete__downArrow': {\n height: '46px!important',\n width: '23px!important',\n svg: {\n height: '100%',\n width: '100%',\n },\n },\n }}\n >\n <Box sx={{ width: '50%' }}>\n {getLabel('lblTit').text}\n <Autocomplete handler={controller} />\n </Box>\n <Box sx={{ width: '50%' }}>\n {getLabel('lblValue').text}\n <Input\n id={state.filterToId}\n disabled={state.readonly}\n value={state.filterToValue}\n onChange={(ev) => {\n state.filterToValue = ev.target.value;\n onFilterChange?.(state as any as TApiaFilter);\n }}\n />\n </Box>\n <Box sx={{ height: '50px', width: '50px' }}>\n {state?.removeFilter && (\n <IconButton\n sx={{ height: '50px', width: '50px' }}\n icon={'Trash'}\n onClick={() => {\n if (state?.removeFilter) {\n controller.state.value = '';\n controller.state.showValue = '';\n state.removeFilter();\n }\n }}\n />\n )}\n </Box>\n </Box>\n );\n },\n);\n","import { makeObservable, observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilter } from './types';\r\nimport {\r\n getResponsiveTableContext,\r\n useResponsiveTableContext,\r\n} from '@apia/table';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { RangeFilterRenderer } from './renderers/RangeFilterRenderer';\r\nimport { SelectFilterRenderer } from './renderers/SelectFilterRenderer';\r\nimport { InputFilterRenderer } from './renderers/InputFilterRenderer';\r\nimport { DateFilterRenderer } from './renderers/DateFilterRenderer';\r\nimport { FreeLabelFilterRenderer } from './renderers/FreeLabelFilterRenderer';\r\n\r\nexport class Filter {\r\n protected tableName?: string = undefined;\r\n\r\n filterState: TFilter = {\r\n runAutomatically: false,\r\n value: '',\r\n } as TFilter;\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 reaction(\r\n () => this.filterState.filterToValue,\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 reaction(\r\n () => this.filterState.multiplier,\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 getInputRenderer() {\r\n return <InputFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getSelectRenderer() {\r\n return <SelectFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getRangeRenderer() {\r\n return <RangeFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getDateRenderer() {\r\n return <DateFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getDoubleRenderer() {\r\n return <FreeLabelFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n Component = observer(() => {\r\n const { name } = useResponsiveTableContext();\r\n this.tableName = name;\r\n\r\n if (this.filterState.isRange) {\r\n return this.getRangeRenderer();\r\n }\r\n\r\n if (arrayOrArray(this.filterState.options).length > 0) {\r\n return this.getSelectRenderer();\r\n }\r\n\r\n if (this.filterState.type === 'D' || this.filterState.type === 'date') {\r\n return this.getDateRenderer();\r\n }\r\n\r\n if (this.filterState.type === 'double') {\r\n return this.getDoubleRenderer();\r\n }\r\n\r\n return this.getInputRenderer();\r\n });\r\n}\r\n","import {\r\n ResponsiveTableContext,\r\n makeController2,\r\n ResponsiveTable,\r\n Pagination,\r\n responsiveTableStore,\r\n responsiveTableActions,\r\n TableLoadingContext,\r\n defaultLabels,\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, useMemo } from 'react';\r\nimport { EventEmitter, TApiaFilter } from '@apia/util';\r\nimport { TableControllerEvents, TableControllerState } from './types';\r\nimport { Filter } from '../filters/Filter';\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 controllerComponent: FC = () => null;\r\n\r\n state: TableControllerState = {\r\n finishedFirstLoad: false,\r\n columns: new Map(),\r\n filters: new Map(),\r\n isLoading: false,\r\n pagination: { currentPage: 0, totalPages: 0, totalRecords: 0 },\r\n props: {},\r\n rows: [],\r\n };\r\n\r\n // ids de filtros que se consideran \"base\" (creados en el init)\r\n private baseFilterIds: Set<string> = new Set();\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 [, controllerComponent] = makeController2(this.tableName);\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 ...(c.filterState as any),\r\n id: c.filterState.id,\r\n column: c.filterState.isAdditional ? '' : c.filterState.column,\r\n asAdditional:\r\n c.filterState.isAdditional ||\r\n this.state.columns.get(c.filterState.column || '')?.hidden,\r\n options: c.filterState.options,\r\n detectOnChange: c.filterState.runAutomatically,\r\n runAutomatically: c.filterState.runAutomatically,\r\n title: c.filterState.title,\r\n } as TApiaFilter;\r\n });\r\n }\r\n\r\n public Context = observer(({ children }: { children: React.ReactNode }) => {\r\n return (\r\n <TableLoadingContext.Provider\r\n value={{ current: this.state.finishedFirstLoad }}\r\n >\r\n <this.TableContext>{children}</this.TableContext>\r\n </TableLoadingContext.Provider>\r\n );\r\n });\r\n\r\n private TableContext = observer(\r\n ({ children }: { children: React.ReactNode }) => {\r\n const state = this.state;\r\n const props = toJS(state.props);\r\n\r\n const columns = useMemo(\r\n () => [...toJS(state.columns).values()],\r\n [state.columns],\r\n );\r\n const rows = useMemo(() => [...toJS(state.rows).values()], [state.rows]);\r\n\r\n return (\r\n <ResponsiveTableContext\r\n {...props}\r\n columns={columns}\r\n rows={rows ?? []}\r\n sx={{ '.filterLabel': { display: 'none' } }}\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n filters={useMemo(() => this.parseFilters(), [this.state.filters])}\r\n FiltersRenderer={useCallback(\r\n (filterId: string) => this.state.filters.get(filterId)!.Component,\r\n [],\r\n )}\r\n customLabels={{\r\n noRegisters: this.state.finishedFirstLoad\r\n ? defaultLabels.noRegisters\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(\r\n this.emitter,\r\n 'onFilterChange',\r\n )}\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 isLoading={this.state.isLoading}\r\n >\r\n {children}\r\n </ResponsiveTableContext>\r\n );\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 isLoading={this.state.isLoading}\r\n hideMaximizeButton\r\n listId={this.tableName}\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 updateFilters(newFilters: Filter[]) {\r\n newFilters.forEach((c) => {\r\n this.state.filters.set(c.filterState.id, c);\r\n });\r\n\r\n this.state.filters = new Map(this.state.filters);\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 //Marca los filters actuales como los iniciales (llamar tras parseStructure/init).\r\n public markInitialFilters() {\r\n this.baseFilterIds = new Set([...this.state.filters.keys()].map(String));\r\n }\r\n\r\n // Elimina todos los filtros que NO son base (aquellos añadidos después del init).\r\n public removeAddedFilters() {\r\n for (const id of [...this.state.filters.keys()]) {\r\n if (!this.baseFilterIds.has(String(id))) {\r\n this.state.filters.delete(id);\r\n }\r\n }\r\n this.state.filters = new Map(this.state.filters);\r\n }\r\n\r\n public removeFilter(id: string) {\r\n this.state.filters.delete(id);\r\n this.state.filters = new Map(this.state.filters);\r\n }\r\n\r\n public clearFilter(id: string) {\r\n if (this.state.filters.has(id)) {\r\n this.state.filters.get(id)!.filterState.value = '';\r\n this.state.filters.get(id)!.filterState.filterToValue = '';\r\n }\r\n }\r\n}\r\n","import type {\r\n TResponsiveTableColumn,\r\n TResponsiveTableContextProps,\r\n TResponsiveTableRow,\r\n TResponsiveTableRowsSelectionEvent,\r\n TResponsiveTableSortChangeEvent,\r\n} from '@apia/table';\r\nimport {\r\n arrayOrArray,\r\n getLabel,\r\n Mutex,\r\n TApiaFilter,\r\n TApiaFunction,\r\n TApiaFunctionPageInfo,\r\n uniqueId,\r\n} from '@apia/util';\r\nimport { TFilter } from './filters/types';\r\nimport ApiaApi, { makeApiaUrl } from '../apiaApi';\r\nimport { Filter } from './filters/Filter';\r\nimport {\r\n QueryLoadStructureResponse,\r\n TApiaFiltersConditionsDefinition,\r\n TFilterTypesElementConditions,\r\n} from './types';\r\nimport { TableController } from './table/TableController';\r\nimport { computed, makeObservable, observable, reaction } from 'mobx';\r\nimport { TableControllerEvents } from './table/types';\r\nimport { ApiaUtil } from '@apia/components';\r\n\r\nexport type QueryControllerStructure = {\r\n description: string;\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 columns: TResponsiveTableColumn[];\r\n filters: TFilter[];\r\n queryData?: {\r\n noExecFirstTime?: boolean;\r\n autoFilter?: boolean;\r\n showAllAttributes?: boolean;\r\n showColumn?: string;\r\n name?: string;\r\n hideCount?: boolean;\r\n description?: string;\r\n storeColumn?: string;\r\n title?: string;\r\n };\r\n};\r\n\r\nexport type StoredQueryControllerStructure = Omit<\r\n QueryControllerStructure,\r\n 'columns' | 'filters'\r\n>;\r\n\r\nfunction unescapeHtml(html: string): string {\r\n const tmp: HTMLTextAreaElement = document.createElement('textarea');\r\n tmp.innerHTML = html;\r\n return tmp.value;\r\n}\r\n\r\nexport class QueryController {\r\n protected hasInited = false;\r\n protected initializing = false;\r\n protected mutex: Mutex = new Mutex();\r\n\r\n public structure: StoredQueryControllerStructure | null = null;\r\n public tableController: TableController;\r\n conditions: TFilterTypesElementConditions[] = [];\r\n\r\n constructor(public ajaxUrl: string) {\r\n this.tableController = this.buildTableController();\r\n this.initEvents();\r\n\r\n makeObservable(this, { conditions: observable, isLoading: computed });\r\n\r\n reaction(\r\n () => this.mutex.isBusy,\r\n () => (this.tableController.state.isLoading = this.mutex.isBusy),\r\n );\r\n }\r\n\r\n protected async actualRefreshMethod(serverFirstRefresh?: boolean) {\r\n const newValues = this.getFiltersValuesMap();\r\n const required = this.areRequiredFilters();\r\n if (!required) {\r\n await this.mutex.acquire();\r\n\r\n try {\r\n this.tableController.state.finishedFirstLoad = false;\r\n const refresh = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl(this.getRefreshParameters()),\r\n {\r\n postData: newValues,\r\n postDataTreatement: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n this.parseRefreshResponse(refresh?.data);\r\n } finally {\r\n if (serverFirstRefresh) {\r\n this.tableController.state.finishedFirstLoad = false;\r\n } else {\r\n this.tableController.state.finishedFirstLoad = true;\r\n }\r\n this.mutex.release();\r\n }\r\n }\r\n if (required) {\r\n const names = required\r\n .map(\r\n (f) =>\r\n f.filterState.title ??\r\n f.filterState.column ??\r\n f.filterState.id ??\r\n '',\r\n )\r\n .filter(Boolean)\r\n .join(', ');\r\n ApiaUtil.instance.notifications.notify({\r\n message: getLabel('msgQryFilterRequiredList', {\r\n text: { TOK1: names },\r\n }).text,\r\n type: 'warning',\r\n });\r\n }\r\n }\r\n\r\n protected areRequiredFilters() {\r\n const requiredFilters = [\r\n ...this.tableController.state.filters.values(),\r\n ].filter(\r\n (c) =>\r\n c.filterState.required &&\r\n !c.filterState.value &&\r\n !c.filterState.isHidden,\r\n );\r\n if (requiredFilters.length > 0) {\r\n return requiredFilters;\r\n }\r\n return false;\r\n }\r\n\r\n protected buildTableController(): TableController {\r\n return new TableController();\r\n }\r\n\r\n public async clearFilters() {\r\n this.tableController.state.filters.forEach((c) => {\r\n c.filterState.value = '';\r\n c.filterState.filterToValue = '';\r\n });\r\n this.actualRefreshMethod();\r\n }\r\n\r\n private timeout: any = -1;\r\n protected executeRefresh() {\r\n clearTimeout(this.timeout);\r\n\r\n this.timeout = setTimeout(() => {\r\n this.actualRefreshMethod();\r\n }, 300);\r\n }\r\n\r\n public getTableControllerDefaultProps(): Omit<\r\n TResponsiveTableContextProps,\r\n | 'FiltersRenderer'\r\n | 'SelectionHandler'\r\n | 'filters'\r\n | 'columns'\r\n | 'rows'\r\n | keyof TableControllerEvents\r\n > &\r\n Pick<TResponsiveTableContextProps, 'statesColumns'> {\r\n return { statesColumns: [] };\r\n }\r\n\r\n protected getEventsHandlers() {\r\n return {\r\n onChangeSelection: (ev: TResponsiveTableRowsSelectionEvent) => {\r\n ev;\r\n },\r\n onFilterBlur: (_ev: TApiaFilter) => {},\r\n onFilterChange: (_ev: TApiaFilter) => {\r\n const filter = this.tableController.state.filters.get(_ev.id);\r\n if (filter?.filterState.runAutomatically) {\r\n this.refresh(false);\r\n }\r\n },\r\n onFilterPressEnter: (_ev: TApiaFilter) => {\r\n this.refresh(true);\r\n },\r\n onRowClick: (_ev: TResponsiveTableRowsSelectionEvent[number]) => {},\r\n onSelectRows: (_ev: TResponsiveTableRowsSelectionEvent) => {},\r\n onSortChange: (ev: TResponsiveTableSortChangeEvent) => {\r\n const isDesc = ['Up', 'Desc', 'D'].includes(ev.sortValue ?? 'A');\r\n\r\n const col = this.tableController.state?.columns.get(ev.column.name);\r\n if (col) {\r\n col.currentSorting = isDesc ? 'D' : 'A';\r\n this.tableController.state.columns = new Map(\r\n this.tableController.state.columns,\r\n );\r\n }\r\n\r\n this.sort(String(ev.columnIndex), isDesc ? 'Des' : 'Asc');\r\n },\r\n onPage: this.page.bind(this),\r\n onRefresh: () => this.refresh(true),\r\n };\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\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\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return [...this.tableController.state.filters.values()].reduce<\r\n Record<string, unknown>\r\n >((result, filterWrapper) => {\r\n const { id, value, filterToId, filterToValue } =\r\n filterWrapper.filterState;\r\n result[id] = filterWrapper.filterState.multiplier\r\n ? value * filterWrapper.filterState.multiplier\r\n : value;\r\n\r\n if (filterToId !== undefined && filterToValue != undefined) {\r\n result[filterToId] = filterWrapper.filterState.multiplier\r\n ? Number(filterToValue) * filterWrapper.filterState.multiplier\r\n : filterToValue;\r\n }\r\n\r\n return result;\r\n }, {});\r\n }\r\n\r\n public get isLoading() {\r\n return this.mutex.isBusy;\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\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 async getStructure() {\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 initEvents() {\r\n const handlers = this.getEventsHandlers();\r\n\r\n Object.entries(handlers).forEach(([eventName, handler]) => {\r\n this.tableController.on(eventName as any, handler.bind(this) as any);\r\n });\r\n }\r\n\r\n public async initialLoad() {\r\n this.tableController.state.finishedFirstLoad = false;\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 const structure = await this.getStructure();\r\n this.structure = structure;\r\n this.parseStructure(structure);\r\n this.tableController.updateState({\r\n props: this.getTableControllerDefaultProps(),\r\n });\r\n\r\n this.hasInited = true;\r\n this.initializing = false;\r\n\r\n this.loadFilterTypes();\r\n this.tableController.markInitialFilters();\r\n if (!this.structure.queryData?.noExecFirstTime) this.refresh();\r\n }\r\n }\r\n\r\n protected async loadFilterTypes() {\r\n if (!this.structure?.hideFilterTypes) {\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) {\r\n this.conditions = arrayOrArray(result.data.form.elements.element);\r\n }\r\n }\r\n }\r\n\r\n public async page(num: number) {\r\n await this.mutex.acquire();\r\n\r\n try {\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 } finally {\r\n this.mutex.release();\r\n }\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure & {\r\n columns: TResponsiveTableColumn[];\r\n filters: TFilter[];\r\n } {\r\n const typedResponse = response as QueryLoadStructureResponse;\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 !== false,\r\n ariaLabel: c.title,\r\n currentSorting: c.order as 'D',\r\n hidden: c.hide === true || c.hide == '1',\r\n hideFromAccordion: c.hide === true,\r\n id: c.name,\r\n showAsAdditional: c.asMoreInformation,\r\n title: c.toolTip,\r\n width: c.width === '' || c.width === undefined ? '300px' : 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: f.id ?? `filter${String(i + 1)}`, // Id generado en APIA\r\n filterToId:\r\n (f?.filterToId ?? f.type == 'D')\r\n ? `filter${String(i + 1)}i`\r\n : undefined, // Id generado en APIA\r\n value: f.currentValue,\r\n avoidLabel:\r\n f.type === 'D' ||\r\n f.type === 'date' ||\r\n f.type === 'S' ||\r\n arrayOrArray(f?.filterOption).length > 0 ||\r\n f.type === 'N'\r\n ? true\r\n : false,\r\n filterToValue: f?.filterToValue,\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 hideToFilter: true,\r\n onChange: () => {},\r\n options: f?.filterOption\r\n ? [\r\n { value: '', label: '' },\r\n ...arrayOrArray(f?.filterOption).map((c) => ({\r\n label: c.content,\r\n value: c.value,\r\n })),\r\n ]\r\n : undefined,\r\n placeholder: f.title,\r\n readonly: f.readonly,\r\n required:\r\n f.required === 'true' ||\r\n f.required === '1' ||\r\n f.dateRequired === '1',\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 queryData: typedResponse?.queryData,\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) => ({\r\n children: typeof c === 'string' ? unescapeHtml(c) : c,\r\n })),\r\n ].filter(Boolean),\r\n className: r.classToAdd,\r\n id: r.id ?? uniqueId('row'),\r\n } as TResponsiveTableRow;\r\n }),\r\n ]);\r\n }\r\n\r\n protected parseStructure(\r\n structure: ReturnType<QueryController['parseLoadStructureResponse']>,\r\n ) {\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) => {\r\n return [f.id, new Filter(f)];\r\n }),\r\n );\r\n\r\n if (columns.size) {\r\n this.tableController.updateState({\r\n columns,\r\n });\r\n }\r\n if (filters.size) {\r\n this.tableController.updateState({\r\n filters,\r\n });\r\n }\r\n }\r\n\r\n public async refresh(now: boolean = true) {\r\n return now ? this.actualRefreshMethod() : this.executeRefresh();\r\n }\r\n\r\n public async setFilterOptions() {\r\n await ApiaApi.post<TApiaFiltersConditionsDefinition>(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\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 }\r\n\r\n public async sort(column: string, orderType: 'Asc' | 'Des') {\r\n await this.mutex.acquire();\r\n try {\r\n const result = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl({\r\n ...this.getSortParameters(),\r\n orderBy: column,\r\n orderType,\r\n }),\r\n );\r\n if (result?.data) {\r\n const structure = this.parseLoadStructureResponse(result.data);\r\n this.parseStructure(structure);\r\n this.parseRefreshResponse(result.data);\r\n }\r\n } finally {\r\n this.mutex.release();\r\n }\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","import { arrayOrArray } from '@apia/util';\r\nimport { Box, Label, Select } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { QueryController } from './QueryController';\r\n\r\nexport const FilterTypesComponent = observer(\r\n ({ queryController }: { queryController: QueryController }) => {\r\n return (\r\n <>\r\n {queryController.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 queryController.conditions[idx].value = selectedValue;\r\n queryController.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 {\r\n Additional,\r\n Responsive,\r\n Sort,\r\n TableContextReproducer,\r\n Grouped,\r\n} from '@apia/table';\r\nimport { Accordion, AccordionItem, SimpleButton } from '@apia/components';\r\nimport { getLabel } from '@apia/util';\r\nimport { QueryController } from '../../../QueryController';\r\nimport { FilterTypesComponent } from '../../../FilterTypesComponent';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Filter } from '../../../filters/Filter';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const AdditionalFiltersComponent = observer(\r\n ({ queryController }: { queryController: QueryController }) => {\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 = !![\r\n ...queryController.tableController.state.filters.values(),\r\n ].find((f) => f.filterState.isAdditional || !f.filterState.column);\r\n const hasFilters = !![\r\n ...queryController.tableController.state.filters.values(),\r\n ].find((f) => !f.filterState.isAdditional && f.filterState.column);\r\n const hasSortable = !![\r\n ...queryController.tableController.state.columns.values(),\r\n ].find((c) => c.allowSorting !== false);\r\n const groupFilters = (() => {\r\n const byGroup = new Map<string, Filter>();\r\n [...queryController.tableController.state.filters.values()].forEach(\r\n (f) => {\r\n const g = f.filterState?.group;\r\n if (g && g !== '' && !byGroup.has(g)) {\r\n byGroup.set(g, f);\r\n }\r\n },\r\n );\r\n return [...byGroup.values()];\r\n })();\r\n return (\r\n <Box\r\n sx={{\r\n '.requiredMark': { display: 'none' },\r\n '.filter__query': {\r\n border: '1px solid #c6c6c6!important',\r\n },\r\n }}\r\n >\r\n <TableContextReproducer\r\n tableName={queryController.tableController.getTableName()}\r\n >\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: window.ADDITIONAL_FILTERS_LABEL,\r\n label: window.ADDITIONAL_FILTERS_LABEL,\r\n }}\r\n >\r\n <Additional />\r\n </AccordionItem>\r\n )}\r\n\r\n {groupFilters.length > 0 && (\r\n <>\r\n {groupFilters.map((g) => (\r\n <AccordionItem\r\n id={`Group_${g.filterState.group}`}\r\n buttonProps={{\r\n ariaLabel: getLabel(`${g.filterState.group}`).text,\r\n label: getLabel(`${g.filterState.group}`).text,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'end',\r\n gap: 3,\r\n width: '100%',\r\n }}\r\n >\r\n <Grouped\r\n key={g.filterState.group}\r\n tableName={queryController.tableController.getTableName()}\r\n group={g.filterState?.group ?? ''}\r\n />\r\n {g.filterState.addFilter && (\r\n <SimpleButton\r\n variant=\"outline-sm\"\r\n onClick={g.filterState.addFilter}\r\n >\r\n {getLabel('lblAddFil').text}\r\n </SimpleButton>\r\n )}\r\n </Box>\r\n </AccordionItem>\r\n ))}\r\n </>\r\n )}\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 && !queryController.structure?.hideFilterTypes && (\r\n <AccordionItem\r\n id=\"FilterTypes\"\r\n buttonProps={{ ariaLabel: filterTypes, label: filterTypes }}\r\n >\r\n <FilterTypesComponent queryController={queryController} />\r\n </AccordionItem>\r\n )}\r\n </Accordion>\r\n </TableContextReproducer>\r\n </Box>\r\n );\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 { QueryController } from '../../QueryController';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Box } from '@apia/theme';\r\nimport { getLabel } from '@apia/util';\r\n\r\nconst ButtonsBar = observer(\r\n ({ queryController }: { queryController: QueryController }) => {\r\n return (\r\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: '10px' }}>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n queryController.refresh();\r\n }}\r\n disabled={queryController.isLoading}\r\n >\r\n {getLabel('btnSearch').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant=\"outline-sm\"\r\n onClick={() => {\r\n queryController.clearFilters();\r\n }}\r\n disabled={queryController.isLoading}\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </Box>\r\n );\r\n },\r\n);\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 queryController={this.queryController} />\r\n ),\r\n onConfirm: () => {},\r\n confirmProps: {\r\n hideConfirmButton: true,\r\n hideCancelButton: true,\r\n additionalButtonsOnRight: (\r\n <ButtonsBar queryController={this.queryController} />\r\n ),\r\n },\r\n draggable: true,\r\n variant: 'layout.common.modals.apiaFinder.additionalFiltersModal',\r\n size: 'lg',\r\n };\r\n }\r\n public async openModal(properties?: TOpenModal) {\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 { TResponsiveTableRowsSelectionEvent } from '@apia/table';\r\nimport { EventEmitter, getLabel, UnSubscriber } from '@apia/util';\r\nimport { TableControllerEvents } from './table/types';\r\nimport { AdditionalFiltersModal } from './table/AdditionalFilters/AdditionalFiltersModal';\r\nimport { QueryController } from './QueryController';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Box, Spinner, ThemeUICSSObject } from '@apia/theme';\r\n\r\ntype QueryModalControllerEvents = Pick<\r\n TableControllerEvents,\r\n 'onSelectRows'\r\n> & { cancel: null };\r\n\r\nconst NavBarRenderer = observer(\r\n ({\r\n queryController,\r\n additionalFiltersController,\r\n }: {\r\n queryController: QueryController;\r\n additionalFiltersController: AdditionalFiltersModal;\r\n }) => (\r\n <>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n queryController.refresh();\r\n }}\r\n data-test-id=\"btn_search\"\r\n >\r\n {queryController.tableController.state.isLoading ? (\r\n <Spinner sx={{ color: 'white', height: '17px' }} />\r\n ) : (\r\n getLabel('btnSearch').text\r\n )}\r\n </SimpleButton>\r\n\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={async () => {\r\n additionalFiltersController.openModal();\r\n }}\r\n data-test-id=\"btn-additional-filters\"\r\n >\r\n {getLabel('titAdmAdtFilter').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={() => queryController.clearFilters()}\r\n data-test-id=\"btn-clear-filters\"\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </>\r\n ),\r\n);\r\n\r\nexport class QueryModalController {\r\n protected emitter = new EventEmitter<QueryModalControllerEvents>();\r\n protected queryController: QueryController;\r\n private modalHandler: ApiaUtilModalHandler | null = null;\r\n protected currentSelection: TResponsiveTableRowsSelectionEvent | null = null;\r\n private additionalFiltersController: AdditionalFiltersModal;\r\n protected sx: ThemeUICSSObject = {};\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 <Box sx={{ height: '100%', ...this.sx }}>\r\n <tableController.Context>\r\n <tableController.Table />\r\n <tableController.Pagination />\r\n </tableController.Context>\r\n </Box>\r\n ),\r\n title: structure?.title,\r\n onConfirm: () => {\r\n this.onConfirm();\r\n this.additionalFiltersController.closeModal();\r\n },\r\n onCancel: () => {\r\n this.additionalFiltersController.closeModal();\r\n this.queryController.tableController.state.finishedFirstLoad = false;\r\n this.emitter.emit('cancel', null);\r\n },\r\n onClose: () => {\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 <NavBarRenderer\r\n queryController={this.queryController}\r\n additionalFiltersController={this.additionalFiltersController}\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 protected 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 async openModal<T = QueryModalControllerEvents['onSelectRows']>(\r\n properties?: TOpenModal,\r\n ): Promise<T> {\r\n await this.queryController.initialLoad();\r\n\r\n this.modalHandler = ApiaUtil.instance.modals.open({\r\n ...this.getModalDefinition(),\r\n ...properties,\r\n });\r\n\r\n if (this.queryController.structure?.openFiltersAutomatically) {\r\n this.additionalFiltersController.openModal();\r\n }\r\n\r\n return this.onConfirmResolve<T>();\r\n }\r\n\r\n public getModalHandler() {\r\n return this.modalHandler;\r\n }\r\n\r\n protected onConfirm() {\r\n this.emitter.emit('onSelectRows', this.currentSelection || []);\r\n }\r\n\r\n protected onConfirmResolve<T>(): Promise<T> {\r\n return new Promise((resolve) => {\r\n let uns1: UnSubscriber = () => {},\r\n uns2: UnSubscriber = () => {};\r\n\r\n uns1 = this.on('onSelectRows', (res) => {\r\n uns1();\r\n uns2();\r\n resolve(res as T);\r\n });\r\n uns2 = this.on('cancel', () => {\r\n uns1();\r\n uns2();\r\n resolve([] as T);\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n QueryController,\r\n QueryControllerStructure,\r\n} from '../../../../queries/QueryController';\r\nimport { TApiaFilter, TApiaFunction } from '@apia/util';\r\nimport { TResponsiveTableContextProps } from '@apia/table';\r\nimport { TableControllerEvents } from '../../../../queries/table/types';\r\nimport { QueryColumn } from '../../../../queries/types';\r\nimport ApiaApi, { makeApiaUrl } from '../../../../apiaApi';\r\n\r\nexport type TGenericListColumn = {\r\n name: string;\r\n label: string;\r\n show: boolean;\r\n order: 'A' | 'D' | '';\r\n};\r\n\r\nexport class GenericListQuery extends QueryController {\r\n constructor(public ajaxUrl: string) {\r\n super(ajaxUrl);\r\n }\r\n\r\n protected getClearFiltersParameters(): Record<string, unknown> {\r\n return { ...super.getClearFiltersParameters(), action: 'filter' };\r\n }\r\n\r\n getTableControllerDefaultProps(): Omit<\r\n TResponsiveTableContextProps,\r\n | 'FiltersRenderer'\r\n | 'SelectionHandler'\r\n | 'filters'\r\n | 'columns'\r\n | 'rows'\r\n | keyof TableControllerEvents\r\n > &\r\n Pick<TResponsiveTableContextProps, 'statesColumns'> {\r\n return {\r\n ...super.getTableControllerDefaultProps(),\r\n isMultiple: true,\r\n };\r\n }\r\n\r\n protected getLoadStructureParameters() {\r\n return {\r\n ...super.getLoadStructureParameters(),\r\n ...this.getRefreshParameters(),\r\n };\r\n }\r\n\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\r\n action: 'filter',\r\n isAjax: true,\r\n };\r\n }\r\n\r\n protected async getStructure() {\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 //en generic list no hay init entonces el primer llamado (que es un action filter) tiene que hacer el parseRefresh\r\n super.parseRefreshResponse(result?.data as any);\r\n\r\n return this.parseLoadStructureResponse(result.data);\r\n }\r\n\r\n public async initialLoad() {\r\n this.tableController.state.finishedFirstLoad = false;\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 const structure = await this.getStructure();\r\n this.structure = structure;\r\n this.parseStructure(structure);\r\n this.tableController.updateState({\r\n props: this.getTableControllerDefaultProps(),\r\n });\r\n\r\n this.hasInited = true;\r\n this.initializing = false;\r\n\r\n // if (!this.structure.queryData?.noExecFirstTime) this.refresh();\r\n }\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const typedResponse = response as TApiaFunction<{\r\n result: {\r\n columns: { column: QueryColumn };\r\n filters: {\r\n filter: TApiaFilter[];\r\n };\r\n };\r\n }>;\r\n\r\n return super.parseLoadStructureResponse({\r\n columns: { ...typedResponse.function.messages.result.columns },\r\n filters: {\r\n ...typedResponse.function.messages.result.filters,\r\n runFiltersAutomatically: true,\r\n },\r\n });\r\n }\r\n}\r\n","import { GenericListQuery } from './GenericListQuery';\r\nimport { QueryModalController } from '../../../../queries/QueryModalController';\r\nimport { QueryControllerStructure } from '../../../../queries/QueryController';\r\nimport { TApiaFunction } from '@apia/util';\r\n\r\nclass UsersQuery extends GenericListQuery {\r\n constructor() {\r\n super('apia.modals.UsersAction.run');\r\n }\r\n\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\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 }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n if (!response) return;\r\n\r\n const structure = this.parseLoadStructureResponse(response);\r\n this.parseStructure(structure);\r\n\r\n setTimeout(() => {\r\n super.parseRefreshResponse(response);\r\n }, 0);\r\n }\r\n\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return {\r\n ...super.getFiltersValuesMap(),\r\n };\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const structure = { ...super.parseLoadStructureResponse(response) };\r\n structure.hideFilterTypes = true;\r\n return structure;\r\n }\r\n}\r\n\r\nexport const makeApiaUsersModal2 = () =>\r\n new QueryModalController(new UsersQuery());\r\n","import { getLabel, TApiaFunction } from '@apia/util';\r\nimport { QueryControllerStructure } from '../../../../queries/QueryController';\r\nimport { QueryModalController } from '../../../../queries/QueryModalController';\r\nimport { GenericListQuery } from './GenericListQuery';\r\ntype TPoolsParameters = {\r\n showCurrentEnv?: boolean;\r\n showGlobal: boolean;\r\n};\r\n\r\nexport class PoolsQuery extends GenericListQuery {\r\n constructor(protected config?: TPoolsParameters) {\r\n super('apia.modals.PoolsAction.run');\r\n }\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\r\n showAutogenerated: false,\r\n showNotAutogenerated: false,\r\n showCurrentEnv: this.config?.showCurrentEnv ?? true,\r\n showGlobal: this.config?.showGlobal ?? true,\r\n selectOnlyOne: false,\r\n forHierarchy: false,\r\n showOnlyPoolsInHierarchy: false,\r\n showOnlyPoolsOutsideHierarchy: false,\r\n refreshParameters: false,\r\n fetchAllInHierarchy: false,\r\n };\r\n }\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return {\r\n ...super.getFiltersValuesMap(),\r\n };\r\n }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n if (!response) return;\r\n\r\n const structure = this.parseLoadStructureResponse(response);\r\n this.parseStructure(structure);\r\n\r\n setTimeout(() => {\r\n super.parseRefreshResponse(response);\r\n }, 0);\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const structure = { ...super.parseLoadStructureResponse(response) };\r\n structure.hideFilterTypes = true;\r\n structure.title = getLabel('btnAddPool').text;\r\n return structure;\r\n }\r\n}\r\n\r\nexport const makeApiaPoolsModals2 = (config?: TPoolsParameters) =>\r\n new QueryModalController(new PoolsQuery(config));\r\n","import { QueryModalController } from '../../../../queries/QueryModalController';\r\nimport {\r\n arrayOrArray,\r\n getLabel,\r\n TApiaFilter,\r\n TApiaFunction,\r\n TApiaLoad,\r\n uniqueId,\r\n} from '@apia/util';\r\nimport {\r\n QueryController,\r\n QueryControllerStructure,\r\n} from '../../../../queries/QueryController';\r\nimport {\r\n makeAsyncRenderer,\r\n TResponsiveTableColumn,\r\n TResponsiveTableContextProps,\r\n TResponsiveTableRow,\r\n TResponsiveTableRowsSelectionEvent,\r\n TResponsiveTableSortChangeEvent,\r\n} from '@apia/table';\r\nimport { IconButton, TOpenModal } from '@apia/components';\r\nimport { FileIcon, Icon } from '@apia/icons';\r\nimport { TableControllerEvents } from '../../../../queries/table/types';\r\nimport { TFilter } from '../../../../queries/filters/types';\r\nimport ApiaApi, { makeApiaUrl } from '../../../../apiaApi';\r\nimport { Filter } from '../../../../queries/filters/Filter';\r\n\r\nexport class MonDocQuery extends QueryController {\r\n constructor(public ajaxUrl: string) {\r\n super(ajaxUrl);\r\n }\r\n\r\n public getTableControllerDefaultProps(): Omit<\r\n TResponsiveTableContextProps,\r\n | 'FiltersRenderer'\r\n | 'SelectionHandler'\r\n | 'filters'\r\n | 'columns'\r\n | 'rows'\r\n | keyof TableControllerEvents\r\n > &\r\n Pick<TResponsiveTableContextProps, 'statesColumns'> {\r\n return {\r\n ...super.getTableControllerDefaultProps(),\r\n showFilters: true,\r\n isMultiple: false,\r\n reserveColumnsForStates: 2,\r\n statesColumns: [\r\n {\r\n Icon: () => <Icon icon=\"Locked\" title=\"\" />,\r\n tooltip: getLabel('titDocLock').text,\r\n },\r\n {\r\n Icon: () => <Icon icon=\"Readonly\" title=\"\" size={22} />,\r\n tooltip: getLabel('lblReadOnly').text,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n public addFreeMetadataFilter(filter?: TFilter) {\r\n const id = uniqueId();\r\n const actualFilter =\r\n filter ||\r\n ({\r\n id,\r\n group: 'lblFreeMetadata',\r\n value: '',\r\n filterToValue: '',\r\n avoidLabel: true,\r\n type: 'double',\r\n icon: 'Close',\r\n addFilter: () => {\r\n this.addFreeMetadataFilter();\r\n },\r\n removeFilter: () => {\r\n this.tableController.removeFilter(id);\r\n },\r\n } as TFilter);\r\n\r\n const freeMetadataFilters = arrayOrArray(actualFilter).map((f) => {\r\n return new Filter(f);\r\n });\r\n\r\n this.tableController.updateFilters(freeMetadataFilters);\r\n }\r\n\r\n public async initialLoad() {\r\n await super.initialLoad();\r\n await this.loadMetadataFilters();\r\n await this.setFilters();\r\n }\r\n\r\n protected async loadMetadataFilters(): Promise<void> {\r\n this.tableController.removeAddedFilters();\r\n const res = await ApiaApi.post<{\r\n docMetadata: {\r\n metadata: TMetadataFilterRes[];\r\n };\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'loadMetadata',\r\n docTypeId:\r\n this.tableController.state.filters.get('txtDocTypeId')?.filterState\r\n .value || 1,\r\n }),\r\n );\r\n if (res?.data?.docMetadata?.metadata) {\r\n const parsedFilters = arrayOrArray(res.data.docMetadata.metadata).map(\r\n (c) => {\r\n const filter = {\r\n ...c,\r\n group: 'titMetadata',\r\n hideToFilter: true,\r\n filterToId: `${String(c.id)}i`,\r\n filterToValue: c.value2,\r\n avoidLabel: c.type === 'D',\r\n } as TFilter;\r\n return filter;\r\n },\r\n );\r\n const metadataFilters = arrayOrArray(parsedFilters).map((f) => {\r\n return new Filter(f);\r\n });\r\n\r\n this.tableController.updateFilters(metadataFilters);\r\n\r\n if (metadataFilters.length > 0) {\r\n const id = uniqueId();\r\n const metadataFilter = {\r\n id,\r\n group: 'lblFreeMetadata',\r\n value: '',\r\n filterToValue: '',\r\n avoidLabel: true,\r\n type: 'double',\r\n addFilter: () => {\r\n this.addFreeMetadataFilter();\r\n },\r\n removeFilter: () => {\r\n this.tableController.clearFilter(id);\r\n },\r\n } as TFilter;\r\n\r\n this.addFreeMetadataFilter(metadataFilter);\r\n }\r\n }\r\n }\r\n\r\n protected async loadFilterTypes(): Promise<void> {\r\n // Override the default behavior, we dont want loadFilterTypes\r\n }\r\n\r\n protected processFilterChangeEvent(ev: TApiaFilter): void {\r\n this.tableController.state.filters.get(ev.id);\r\n this.refresh();\r\n }\r\n\r\n public getAdditionalInfo = async (row: TResponsiveTableRow) => {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<\r\n TApiaFunction<{\r\n row: { cell: { label: string; name: string; newline: boolean } };\r\n }>\r\n >\r\n >(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'adtInfo',\r\n isAjax: true,\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postData: new URLSearchParams({\r\n id: row.id.slice(\r\n 0,\r\n row.id.indexOf('$-$') > 0 ? row.id.indexOf('$-$') : row.id.length,\r\n ),\r\n }).toString(),\r\n },\r\n );\r\n return arrayOrArray(result?.data?.function.messages.row.cell);\r\n };\r\n\r\n protected getLoadStructureParameters() {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'init',\r\n react: true,\r\n isAjax: true,\r\n forCusDocMonMdl: true,\r\n ...this.dynamicParams,\r\n };\r\n }\r\n\r\n private dynamicParams: Record<string, any> = {};\r\n\r\n setDynamicParams(params: Record<string, any>) {\r\n this.dynamicParams = params;\r\n }\r\n\r\n protected getClearFiltersParameters(): Record<string, unknown> {\r\n return { ...super.getClearFiltersParameters(), action: 'filter' };\r\n }\r\n\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\r\n action: 'filter',\r\n isAjax: true,\r\n };\r\n }\r\n\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n const metadataValues: string[] = [];\r\n const freeMetadataValues: string[] = [];\r\n const filtersValues = [\r\n ...this.tableController.state.filters.values(),\r\n ].reduce<Record<string, unknown>>((result, filterWrapper) => {\r\n const { id, value, type, group, multiplier, filterToId, filterToValue } =\r\n filterWrapper.filterState;\r\n\r\n switch (group) {\r\n case 'titMetadata':\r\n if (value !== '') {\r\n const t = (type === 'apiaNumber' ? 'N' : type) || 'S';\r\n\r\n metadataValues.push(\r\n `${id}${window.PRIMARY_SEPARATOR}${t}${window.PRIMARY_SEPARATOR}${value}`,\r\n );\r\n if (filterToValue) {\r\n metadataValues.push(\r\n `${id}${window.PRIMARY_SEPARATOR}${t}${window.PRIMARY_SEPARATOR}${filterToValue}`,\r\n );\r\n }\r\n }\r\n return result;\r\n case 'lblFreeMetadata':\r\n if (filterToValue !== '') {\r\n freeMetadataValues.push(\r\n `${value}${window.PRIMARY_SEPARATOR}${filterToValue}`,\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n result[id] = multiplier ? value * multiplier : value;\r\n\r\n if (filterToId !== undefined && filterToValue != undefined) {\r\n result[filterToId] = multiplier\r\n ? Number(filterToValue) * multiplier\r\n : filterToValue;\r\n }\r\n\r\n return result;\r\n }, {});\r\n\r\n return {\r\n ...filtersValues,\r\n strDocMetadata: metadataValues.join(';'),\r\n strDocFreeMetadata: freeMetadataValues.join(';'),\r\n };\r\n }\r\n\r\n protected getEventsHandlers(): {\r\n onChangeSelection: (ev: TResponsiveTableRowsSelectionEvent) => void;\r\n onFilterBlur: (_ev: TApiaFilter) => void;\r\n onFilterChange: (_ev: TApiaFilter) => void;\r\n onFilterPressEnter: (_ev: TApiaFilter) => void;\r\n onRowClick: (_ev: TResponsiveTableRowsSelectionEvent[number]) => void;\r\n onSelectRows: (_ev: TResponsiveTableRowsSelectionEvent) => void;\r\n onSortChange: (ev: TResponsiveTableSortChangeEvent) => void;\r\n onPage: (num: number) => Promise<void>;\r\n onRefresh: () => Promise<void | undefined>;\r\n } {\r\n return {\r\n ...super.getEventsHandlers(),\r\n onFilterChange: (e) => {\r\n if (e.id === 'txtDocTypeId') {\r\n this.loadMetadataFilters();\r\n }\r\n this.refresh(false);\r\n },\r\n };\r\n }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n const rows = arrayOrArray(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 ...rows.map((r) => {\r\n const cells = arrayOrArray(r.cell);\r\n\r\n const fileName = (\r\n typeof cells[1] === 'string'\r\n ? cells[1]\r\n : typeof cells[1] === 'object' && cells[1]\r\n ? cells[1].content\r\n : ''\r\n ) as string;\r\n\r\n return {\r\n rowProps: r,\r\n isLocked: r.docLock,\r\n states: [\r\n {\r\n Icon: () => (\r\n <Icon\r\n title={getLabel('lblLockedDocument').text}\r\n icon=\"Locked\"\r\n sx={{\r\n display: r.docLock ? 'block!important' : 'none!important',\r\n }}\r\n />\r\n ),\r\n tooltip: '',\r\n },\r\n {\r\n Icon: () => (\r\n <Icon\r\n title={getLabel('lblReadOnly').text}\r\n icon=\"Readonly\"\r\n size={22}\r\n sx={{\r\n display: r.uneditableTR\r\n ? 'block!important'\r\n : 'none!important',\r\n }}\r\n />\r\n ),\r\n tooltip: '',\r\n },\r\n ],\r\n cells: [\r\n {\r\n children: <FileIcon docName={fileName} />,\r\n },\r\n ...arrayOrArray(r.cell).map((c) => {\r\n if (typeof c === 'string') {\r\n return { children: c };\r\n }\r\n if (c && typeof c === 'object') {\r\n if ('content' in c) {\r\n return { children: c.content, className: c.classToAdd };\r\n }\r\n if ('elemType' in c) {\r\n return {\r\n children: (\r\n <IconButton\r\n icon={'Download'}\r\n onClick={() => {\r\n window.open(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'download',\r\n id: r.id,\r\n }),\r\n );\r\n }}\r\n />\r\n ),\r\n };\r\n }\r\n }\r\n\r\n return { children: c };\r\n }),\r\n ],\r\n id: r?.id,\r\n className: `${r.boldType ? 'bold' : ''} ${r['expired-doc'] ? 'expired' : ''} `,\r\n } as TResponsiveTableRow;\r\n }),\r\n ]);\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const typedResponse = response as {\r\n columns: ResponseColumn[];\r\n filters: ResponseFilter[];\r\n };\r\n\r\n const retrievedColumns = arrayOrArray(typedResponse.columns);\r\n const retrievedFilters = arrayOrArray(typedResponse.filters);\r\n\r\n const columns: TResponsiveTableColumn[] = retrievedColumns.map((c) => {\r\n const column: ResponseColumn = {\r\n label: c.label,\r\n name: c.name,\r\n allowSorting: c.allowSorting,\r\n dataSortBy: c.dataSortBy,\r\n sort: c.sort,\r\n toolTip: c.toolTip,\r\n minWidth: c.name === 'docFile' ? '50px' : '25%',\r\n width: c.name === 'docFile' ? '50px' : '25%',\r\n };\r\n\r\n return column;\r\n });\r\n\r\n if (response.additionalInfoInTable) {\r\n columns?.push({\r\n showAsAdditional: true,\r\n label: 'moreInfo',\r\n name: 'moreInfo',\r\n Renderer: makeAsyncRenderer((row) => this.getAdditionalInfo(row)),\r\n });\r\n }\r\n const returnObject: QueryControllerStructure = {\r\n columns: columns.filter((c) => c !== null),\r\n filters: arrayOrArray(retrievedFilters).map((f) => {\r\n const filter: TFilter = {\r\n id: f.id,\r\n filterToId: f?.filterToId,\r\n filterToValue: f?.filterToValue,\r\n isAdditional: f.type === 'date',\r\n value:\r\n f?.options?.find((c) => c.value === this.dynamicParams.docTypeSel)\r\n ?.value ?? f.currentValue,\r\n column: f.column,\r\n title: f.title,\r\n tooltip: f.toolTip,\r\n hideToFilter: true,\r\n avoidLabel: f.type === 'date',\r\n type: f.type,\r\n onChange: () => {},\r\n options: f.options?.map((option) => ({\r\n label: option.label ?? '',\r\n value: option.value,\r\n })),\r\n placeholder: f.title,\r\n isRange: f.isRange,\r\n isSize: f.isSize,\r\n };\r\n\r\n return filter;\r\n }),\r\n description: '',\r\n hasAdditionalInformation: true,\r\n hideFilterTypes: true,\r\n isDynamic: false,\r\n openFiltersAutomatically: false,\r\n runFiltersAutomatically: true,\r\n title: response.title,\r\n queryData: { noExecFirstTime: true },\r\n };\r\n\r\n return returnObject;\r\n }\r\n\r\n protected async setFilters() {\r\n await ApiaApi.post(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'setFilters',\r\n txtDocTypeId:\r\n this.tableController.state.filters.get('txtDocTypeId')?.filterState\r\n .value,\r\n }),\r\n );\r\n }\r\n}\r\n\r\ntype TOpenMonDocModal = {\r\n docTypeId: string[];\r\n docTypeSel: string;\r\n monDocId: number;\r\n};\r\n\r\nexport class ApiaMonDocModal2 extends QueryModalController {\r\n protected sx = {\r\n 'tr.expired[class]': {\r\n color: 'priorityUrgent',\r\n '&:hover': {\r\n color: 'priorityUrgent',\r\n },\r\n },\r\n };\r\n constructor() {\r\n super(new MonDocQuery('/apia.execution.CustMonDocumentAction.run'));\r\n }\r\n\r\n public openModal<T = TResponsiveTableRowsSelectionEvent>(\r\n properties: TOpenModal & { monitorProperties: TOpenMonDocModal },\r\n ): Promise<T> {\r\n (this.queryController as MonDocQuery).setDynamicParams(\r\n properties.monitorProperties,\r\n );\r\n\r\n return super.openModal<T>(properties);\r\n }\r\n}\r\n\r\ninterface ResponseColumn {\r\n allowSorting: boolean;\r\n dataSortBy: string;\r\n label: string;\r\n minWidth: string;\r\n name: string;\r\n sort: string;\r\n toolTip: string;\r\n width: string;\r\n}\r\n\r\ninterface ResponseFilter {\r\n column: string;\r\n currentValue: string;\r\n id: string;\r\n options?: {\r\n label: string;\r\n value: string;\r\n }[];\r\n placeholder: string;\r\n title: string;\r\n toolTip: string;\r\n filterToId?: string;\r\n filterToValue?: string;\r\n isRange?: boolean;\r\n isSize?: boolean;\r\n type?: 'date';\r\n}\r\ntype TMetadataFilterRes = { value2: string } & Pick<\r\n TFilter,\r\n 'id' | 'title' | 'type' | 'value' | 'hideToFilter'\r\n>;\r\n"],"names":["queryString","getModal","React","id","selectedRows","currentFormDispatcher","ApiaApiContext","Input","Select","unit","uniqueId","__publicField"],"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/filters/renderers/RangeFilterRenderer.tsx","../src/queries/filters/FilterLabel.tsx","../src/queries/filters/renderers/SelectFilterRenderer.tsx","../src/queries/filters/renderers/InputFilterRenderer.tsx","../src/queries/filters/renderers/DateFilterRenderer.tsx","../src/queries/filters/renderers/FreeLabelFilterRenderer.tsx","../src/queries/filters/Filter.tsx","../src/queries/table/TableController.tsx","../src/queries/QueryController.tsx","../src/queries/FilterTypesComponent.tsx","../src/queries/table/AdditionalFilters/components/AdditionalFiltersComponent.tsx","../src/queries/table/AdditionalFilters/AdditionalFiltersModal.tsx","../src/queries/QueryModalController.tsx","../src/modals/apia/components/generics/GenericListQuery.ts","../src/modals/apia/components/generics/ApiaUsersModal2.ts","../src/modals/apia/components/generics/ApiaPoolsModal2.ts","../src/modals/apia/components/generics/ApiaMonDocModal2.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, { AxiosError, 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 TNotificationType,\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 if (\r\n error instanceof AxiosError &&\r\n (error.status === 403 || error.response?.status === 403)\r\n ) {\r\n session.invalidate();\r\n return;\r\n }\r\n\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 type TMessage = {\r\n type: TNotificationType;\r\n text: string;\r\n title: string;\r\n stack?: string;\r\n};\r\n\r\nexport function parseMessages2(messages: TMessage[]) {\r\n for (const m of messages) {\r\n notify({ message: m.text, title: m.title, trace: m.stack, type: m.type });\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 messages,\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 (messages) {\r\n parseMessages2(arrayOrArray((messages as any)?.message as TMessage));\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(e instanceof AxiosError ? e : 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(e instanceof AxiosError ? e : 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.replace(/^\\/?(.+?)\\/?$/, '$1');\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\nexport type TApiModal = {\r\n columns: TResponsiveTableColumn[];\r\n filters: TApiaFilter[];\r\n label: string;\r\n path: string;\r\n};\r\n\r\nexport function getModal(name: string): TApiModal {\r\n return (window as any)[name] as TApiModal;\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\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: number;\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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal(\r\n 'environmentsModal',\r\n ).filters?.map((currentFilter) => {\r\n return {\r\n ...currentFilter,\r\n currentValue: '',\r\n deleteFiltersTimestamp: Date.now(),\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: getModal('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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('tasksModal').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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('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\nimport { getModal } from '../../../apiaApi';\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 getModal('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(getModal('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: getModal('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: getModal('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: getModal('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: getModal('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 ?? getModal('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\nimport { getModal } from '../apiaApi';\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[] = getModal('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: getModal('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 <Box as=\"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 </Box>\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\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 }\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 { Box, getVariant, Input, Select } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { useRef } from 'react';\r\nimport { TApiaFilterValue, useIntermediateValue } from '@apia/util';\r\n\r\nconst units = ['B', 'KB', 'MB', 'GB'];\r\n\r\nexport const RangeFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n const multiplier = useRef(1);\r\n const lastEmittedHigh = useRef<TApiaFilterValue | null>(null);\r\n const lastEmittedLow = useRef<TApiaFilterValue | null>(null);\r\n const lastEmittedMultiplier = useRef(1);\r\n\r\n if (lastEmittedLow.current !== state.value) {\r\n lastEmittedLow.current = state.value;\r\n lastEmittedHigh.current = state.filterToValue || '';\r\n }\r\n\r\n const emitLow = (currentValue: TApiaFilterValue) => {\r\n const numberValue = currentValue ?? '';\r\n\r\n if (\r\n lastEmittedLow.current === numberValue &&\r\n lastEmittedMultiplier.current === multiplier.current\r\n ) {\r\n return;\r\n }\r\n\r\n lastEmittedLow.current = numberValue;\r\n lastEmittedMultiplier.current = multiplier.current;\r\n const emitValue = numberValue;\r\n\r\n state.value = emitValue;\r\n state.multiplier = multiplier.current;\r\n };\r\n\r\n const emitHigh = (currentValue: TApiaFilterValue) => {\r\n const numberValue = currentValue ?? '';\r\n\r\n if (\r\n lastEmittedHigh.current === numberValue &&\r\n lastEmittedMultiplier.current === multiplier.current\r\n ) {\r\n return;\r\n }\r\n\r\n lastEmittedHigh.current = numberValue;\r\n lastEmittedMultiplier.current = multiplier.current;\r\n const emitValue = numberValue;\r\n\r\n state.filterToValue = String(emitValue);\r\n state.multiplier = multiplier.current;\r\n };\r\n\r\n const [lowValue, setLowValue] = useIntermediateValue(state.value);\r\n const [highValue, setHighValue] = useIntermediateValue(state.filterToValue);\r\n const [unit, setUnit] = useIntermediateValue(state.multiplier);\r\n\r\n return (\r\n <Box\r\n className={`ApiaFilter__Range`}\r\n {...getVariant('layout.common.components.filters.rangeFilter')}\r\n >\r\n <Box className=\"ApiaFilter__Range__Low\">\r\n <Input\r\n disabled={state.readonly}\r\n onChange={({ target: { value: currentValue } }) => {\r\n setLowValue(currentValue);\r\n emitLow(currentValue);\r\n }}\r\n onBlur={({ target: { value: currentValue } }) => {\r\n emitLow(currentValue);\r\n }}\r\n onKeyDown={({ code, target }) => {\r\n if (code === 'Enter') {\r\n emitLow((target as HTMLInputElement).value);\r\n }\r\n }}\r\n value={lowValue}\r\n />\r\n </Box>\r\n {' - '}\r\n <Box className=\"ApiaFilter__Range__High\">\r\n <Input\r\n disabled={state.readonly}\r\n required={state.required}\r\n onChange={({ target: { value: currentValue } }) => {\r\n setHighValue(currentValue);\r\n emitHigh(currentValue);\r\n }}\r\n onBlur={({ target: { value: currentValue } }) => {\r\n emitHigh(currentValue);\r\n }}\r\n onKeyDown={({ code, target }) => {\r\n if (code === 'Enter') {\r\n emitHigh((target as HTMLInputElement).value);\r\n }\r\n }}\r\n value={highValue}\r\n />\r\n </Box>\r\n {state.isSize && (\r\n <Select\r\n disabled={state.readonly}\r\n className=\"ApiaFilter__Range__UnitSelector\"\r\n onChange={(ev) => {\r\n const unit = ev.target.value;\r\n const index = units.indexOf(unit);\r\n if (index !== -1) {\r\n multiplier.current = 2 ** (index * 10);\r\n setUnit(multiplier.current);\r\n /**\r\n * It's enough to fire event on low because it updates the multiplier in the original filter\r\n */\r\n emitLow(lastEmittedLow.current ?? '');\r\n }\r\n }}\r\n value={units[Math.log2(unit || 1) / 10]}\r\n >\r\n {units.map((c) => (\r\n <option key={c} value={c}>\r\n {c}\r\n </option>\r\n ))}\r\n </Select>\r\n )}\r\n </Box>\r\n );\r\n});\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { RequiredMark } from '@apia/components';\r\nimport { formatMessage } from '@apia/util';\r\nimport type { TFilter } from './types';\r\n\r\nexport interface IFilterLabelProps {\r\n state: TFilter;\r\n /**\r\n * Si true, no renderiza el texto del label (solo la estructura).\r\n * Útil para casos en que el control renderiza su propio label.\r\n */\r\n avoidLabel?: boolean;\r\n /**\r\n * Forzar un texto en lugar de state.title\r\n */\r\n labelOverride?: string;\r\n /**\r\n * Indica que el label corresponde a un filtro fecha (para usar\r\n * LBL_DATE_FILTER_FROM/TO tokenizado si hay filterToId)\r\n */\r\n isDate?: boolean;\r\n className?: string;\r\n title?: string | undefined;\r\n}\r\n\r\n/**\r\n * Componente genérico para renderizar la etiqueta de un filtro (label + required mark).\r\n * Pensado para usarse desde los renderers o desde el componente contenedor de filtros.\r\n */\r\nexport const FilterLabel: React.FC<IFilterLabelProps> = ({\r\n state,\r\n labelOverride,\r\n isDate,\r\n className,\r\n title,\r\n}) => {\r\n const text = React.useMemo(() => {\r\n const base = labelOverride ?? state?.title ?? '';\r\n if (isDate && state?.filterToId && !state.hideToFilter) {\r\n // usa el label de \"from\" tokenizado (consistente con el resto del proyecto)\r\n try {\r\n return formatMessage(window.LBL_DATE_FILTER_FROM_TXT, { TOK1: base });\r\n } catch {\r\n return base;\r\n }\r\n }\r\n return base;\r\n }, [labelOverride, state, isDate]);\r\n\r\n const showRequiredBefore = !!(\r\n state?.required && window.SHOW_REQUIRED_POSITION !== '0'\r\n );\r\n const showRequiredAfter = !!(\r\n state?.required && window.SHOW_REQUIRED_POSITION === '0'\r\n );\r\n\r\n return (\r\n <Box\r\n className={`filterLabel ${className ?? ''}`}\r\n title={title}\r\n sx={{ display: 'flex', flexDirection: 'row' }}\r\n >\r\n {showRequiredBefore && <RequiredMark isRequired sx={{ zIndex: 1 }} />}\r\n <Box as=\"span\">{text}</Box>\r\n {showRequiredAfter && <RequiredMark isRequired sx={{ zIndex: 1 }} />}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default FilterLabel;\r\n","import { Select } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport FilterLabel from '../FilterLabel';\r\n\r\nexport const SelectFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n return (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <Select\r\n className=\"filter__query\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required ? 'palette.error.main' : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.value}\r\n onChange={(ev) => {\r\n state.value = ev.target.value;\r\n }}\r\n >\r\n {arrayOrArray(state.options).map((c) => (\r\n <option key={c.value} value={c.value}>\r\n {c.label}\r\n </option>\r\n ))}\r\n </Select>\r\n </>\r\n );\r\n});\r\n","import { Input } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { useResponsiveTableContext } from '@apia/table';\r\nimport { TApiaFilter } from '@apia/util';\r\nimport FilterLabel from '../FilterLabel';\r\n\r\nexport const InputFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n const { onFilterBlur, onFilterPressEnter } = useResponsiveTableContext();\r\n\r\n return (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <Input\r\n className=\"filter__query\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required ? 'palette.error.main' : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.value}\r\n onChange={(ev) => {\r\n state.value = ev.target.value;\r\n }}\r\n onKeyDown={(ev) => {\r\n if (ev.code === 'Enter') {\r\n onFilterPressEnter?.(state as any as TApiaFilter);\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.(state as any as TApiaFilter);\r\n }}\r\n />\r\n </>\r\n );\r\n});\r\n","import { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport { useResponsiveTableContext } from '@apia/table';\r\nimport { ApiaUtil, DateInput } from '@apia/components';\r\nimport { getDateFormat, TApiaFilter, uniqueId } from '@apia/util';\r\nimport dayjs from 'dayjs';\r\nimport FilterLabel from '../FilterLabel';\r\n\r\nconst dateFormat = getDateFormat();\r\nfunction controlDatesOrder(first: string, last: string) {\r\n if (!first || !last) return true;\r\n\r\n if (dayjs(last, dateFormat).isBefore(dayjs(first, dateFormat))) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const DateFilterRenderer: TFilterRenderer = observer(({ state }) => {\r\n const { onFilterBlur, onFilterChange } = useResponsiveTableContext();\r\n\r\n const idFrom = uniqueId('date_from_');\r\n const idTo = uniqueId('date_to_');\r\n\r\n return (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <DateInput\r\n id={idFrom}\r\n className=\"filter__query date_from\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required ? 'palette.error.main' : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.value}\r\n onChange={(date) => {\r\n const result = controlDatesOrder(\r\n date ?? '',\r\n state.filterToValue ?? '',\r\n );\r\n if (result) {\r\n state.value = date ?? '';\r\n onFilterChange?.(state as any as TApiaFilter);\r\n } else {\r\n state.value = undefined;\r\n onFilterChange?.({\r\n ...state,\r\n currentValue: '',\r\n deleteFiltersTimestamp: undefined,\r\n changeFiltersTimestamp: undefined,\r\n } as TApiaFilter);\r\n\r\n const a = document.querySelector(`#${idFrom}`) as HTMLButtonElement;\r\n\r\n if (a) {\r\n a.click();\r\n }\r\n ApiaUtil.instance.notifications.notify({\r\n message: window.MSG_FEC_FIN_MAY_FEC_INI,\r\n type: 'warning',\r\n });\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.({\r\n ...state,\r\n currentValue: state.value,\r\n } as TApiaFilter);\r\n }}\r\n />\r\n {(state?.isAdditional || state.group) && state?.filterToId && (\r\n <>\r\n <FilterLabel state={state} isDate />\r\n <DateInput\r\n id={idTo}\r\n className=\"filter__query date_to\"\r\n sx={{\r\n '&.filter__query.filter__query:not([disabled])': {\r\n borderLeft: state.required ? '4px solid' : undefined,\r\n borderLeftColor: state.required\r\n ? 'palette.error.main'\r\n : undefined,\r\n },\r\n }}\r\n disabled={state.readonly}\r\n value={state.filterToValue}\r\n onChange={(date) => {\r\n const result = controlDatesOrder(state.value, date ?? '');\r\n if (result) {\r\n state.filterToValue = date ?? '';\r\n onFilterChange?.(state as any as TApiaFilter);\r\n } else {\r\n state.filterToValue = undefined;\r\n onFilterChange?.({\r\n ...state,\r\n currentValue: '',\r\n deleteFiltersTimestamp: undefined,\r\n changeFiltersTimestamp: undefined,\r\n } as TApiaFilter);\r\n\r\n const a = document.querySelector(\r\n `#${idTo}`,\r\n ) as HTMLButtonElement;\r\n\r\n if (a) {\r\n a.click();\r\n }\r\n\r\n ApiaUtil.instance.notifications.notify({\r\n message: window.MSG_FEC_FIN_MAY_FEC_INI,\r\n type: 'warning',\r\n });\r\n }\r\n }}\r\n onBlur={() => {\r\n onFilterBlur?.({\r\n ...state,\r\n currentValue: state.filterToValue,\r\n } as TApiaFilter);\r\n }}\r\n />\r\n </>\r\n )}\r\n </>\r\n );\r\n});\r\n","import { Box, Input } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { TFilterRenderer } from './types';\r\nimport {\r\n Autocomplete,\r\n AutocompleteController,\r\n AutocompleteOption,\r\n IconButton,\r\n} from '@apia/components';\r\nimport { arrayOrArray, getLabel, TApiaFilter, useMount } from '@apia/util';\r\nimport ApiaApi, { makeApiaUrl } from '../../../apiaApi';\r\nimport { useMemo } from 'react';\r\nimport { useResponsiveTableContext } from '@apia/table';\r\nasync function getOptions(search?: string): Promise<AutocompleteOption[]> {\r\n if (!search) return [];\r\n const res = await ApiaApi.get<{\r\n row: { content: string; searchId: string }[];\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'AutoCompleteAction.run',\r\n action: 'search',\r\n object: 'doc_free_metadata',\r\n filter: 'doc_free_metadata_title',\r\n id: 'doc_free_metadata_title',\r\n show: 'doc_free_metadata_title',\r\n likeSearch: true,\r\n allowLive: false,\r\n includeEnvId: true,\r\n distinctId: true,\r\n value: search,\r\n }),\r\n );\r\n const rows = arrayOrArray(res?.data?.row);\r\n return rows.map(({ content, searchId }) => ({\r\n label: content,\r\n value: searchId,\r\n }));\r\n}\r\n\r\nexport const FreeLabelFilterRenderer: TFilterRenderer = observer(\r\n ({ state }) => {\r\n const { onFilterChange } = useResponsiveTableContext();\r\n const controller = useMemo(\r\n () =>\r\n new AutocompleteController({\r\n value: '',\r\n icon: 'LetterAutocomplete',\r\n options: [],\r\n onSearch: async (search, _acController) => {\r\n state.value = '';\r\n return getOptions(search);\r\n },\r\n\r\n onChange(str) {\r\n state.value = str;\r\n },\r\n }),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [],\r\n );\r\n useMount(() => {\r\n controller.state.options = [];\r\n });\r\n return (\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: 2,\r\n width: '100%',\r\n alignItems: 'end',\r\n '.autocomplete__downArrow': {\r\n height: '46px!important',\r\n width: '23px!important',\r\n svg: {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n },\r\n }}\r\n >\r\n <Box sx={{ width: '50%' }}>\r\n {getLabel('lblTit').text}\r\n <Autocomplete handler={controller} />\r\n </Box>\r\n <Box sx={{ width: '50%' }}>\r\n {getLabel('lblValue').text}\r\n <Input\r\n id={state.filterToId}\r\n disabled={state.readonly}\r\n value={state.filterToValue}\r\n onChange={(ev) => {\r\n state.filterToValue = ev.target.value;\r\n onFilterChange?.(state as any as TApiaFilter);\r\n }}\r\n />\r\n </Box>\r\n <Box sx={{ height: '50px', width: '50px' }}>\r\n {state?.removeFilter && (\r\n <IconButton\r\n sx={{ height: '50px', width: '50px' }}\r\n icon={'Trash'}\r\n onClick={() => {\r\n if (state?.removeFilter) {\r\n controller.state.value = '';\r\n controller.state.showValue = '';\r\n state.removeFilter();\r\n }\r\n }}\r\n />\r\n )}\r\n </Box>\r\n </Box>\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 {\r\n getResponsiveTableContext,\r\n useResponsiveTableContext,\r\n} from '@apia/table';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { RangeFilterRenderer } from './renderers/RangeFilterRenderer';\r\nimport { SelectFilterRenderer } from './renderers/SelectFilterRenderer';\r\nimport { InputFilterRenderer } from './renderers/InputFilterRenderer';\r\nimport { DateFilterRenderer } from './renderers/DateFilterRenderer';\r\nimport { FreeLabelFilterRenderer } from './renderers/FreeLabelFilterRenderer';\r\n\r\nexport class Filter {\r\n protected tableName?: string = undefined;\r\n\r\n filterState: TFilter = {\r\n runAutomatically: false,\r\n value: '',\r\n } as TFilter;\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 reaction(\r\n () => this.filterState.filterToValue,\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 reaction(\r\n () => this.filterState.multiplier,\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 getInputRenderer() {\r\n return <InputFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getSelectRenderer() {\r\n return <SelectFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getRangeRenderer() {\r\n return <RangeFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getDateRenderer() {\r\n return <DateFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n getDoubleRenderer() {\r\n return <FreeLabelFilterRenderer state={this.filterState} />;\r\n }\r\n\r\n Component = observer(() => {\r\n const { name } = useResponsiveTableContext();\r\n this.tableName = name;\r\n\r\n if (this.filterState.isRange) {\r\n return this.getRangeRenderer();\r\n }\r\n\r\n if (arrayOrArray(this.filterState.options).length > 0) {\r\n return this.getSelectRenderer();\r\n }\r\n\r\n if (this.filterState.type === 'D' || this.filterState.type === 'date') {\r\n return this.getDateRenderer();\r\n }\r\n\r\n if (this.filterState.type === 'double') {\r\n return this.getDoubleRenderer();\r\n }\r\n\r\n return this.getInputRenderer();\r\n });\r\n}\r\n","import {\r\n ResponsiveTableContext,\r\n makeController2,\r\n ResponsiveTable,\r\n Pagination,\r\n responsiveTableStore,\r\n responsiveTableActions,\r\n TableLoadingContext,\r\n defaultLabels,\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, useMemo } from 'react';\r\nimport { EventEmitter, TApiaFilter } from '@apia/util';\r\nimport { TableControllerEvents, TableControllerState } from './types';\r\nimport { Filter } from '../filters/Filter';\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 controllerComponent: FC = () => null;\r\n\r\n state: TableControllerState = {\r\n finishedFirstLoad: false,\r\n columns: new Map(),\r\n filters: new Map(),\r\n isLoading: false,\r\n pagination: { currentPage: 0, totalPages: 0, totalRecords: 0 },\r\n props: {},\r\n rows: [],\r\n };\r\n\r\n // ids de filtros que se consideran \"base\" (creados en el init)\r\n private baseFilterIds: Set<string> = new Set();\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 [, controllerComponent] = makeController2(this.tableName);\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 ...(c.filterState as any),\r\n id: c.filterState.id,\r\n column: c.filterState.isAdditional ? '' : c.filterState.column,\r\n asAdditional:\r\n c.filterState.isAdditional ||\r\n this.state.columns.get(c.filterState.column || '')?.hidden,\r\n options: c.filterState.options,\r\n detectOnChange: c.filterState.runAutomatically,\r\n runAutomatically: c.filterState.runAutomatically,\r\n title: c.filterState.title,\r\n } as TApiaFilter;\r\n });\r\n }\r\n\r\n public Context = observer(({ children }: { children: React.ReactNode }) => {\r\n return (\r\n <TableLoadingContext.Provider\r\n value={{ current: this.state.finishedFirstLoad }}\r\n >\r\n <this.TableContext>{children}</this.TableContext>\r\n </TableLoadingContext.Provider>\r\n );\r\n });\r\n\r\n private TableContext = observer(\r\n ({ children }: { children: React.ReactNode }) => {\r\n const state = this.state;\r\n const props = toJS(state.props);\r\n\r\n const columns = useMemo(\r\n () => [...toJS(state.columns).values()],\r\n [state.columns],\r\n );\r\n const rows = useMemo(() => [...toJS(state.rows).values()], [state.rows]);\r\n\r\n return (\r\n <ResponsiveTableContext\r\n {...props}\r\n columns={columns}\r\n rows={rows ?? []}\r\n sx={{ '.filterLabel': { display: 'none' } }}\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n filters={useMemo(() => this.parseFilters(), [this.state.filters])}\r\n FiltersRenderer={useCallback(\r\n (filterId: string) => this.state.filters.get(filterId)!.Component,\r\n [],\r\n )}\r\n customLabels={{\r\n noRegisters: this.state.finishedFirstLoad\r\n ? defaultLabels.noRegisters\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(\r\n this.emitter,\r\n 'onFilterChange',\r\n )}\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 isLoading={this.state.isLoading}\r\n >\r\n {children}\r\n </ResponsiveTableContext>\r\n );\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 isLoading={this.state.isLoading}\r\n hideMaximizeButton\r\n listId={this.tableName}\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 updateFilters(newFilters: Filter[]) {\r\n newFilters.forEach((c) => {\r\n this.state.filters.set(c.filterState.id, c);\r\n });\r\n\r\n this.state.filters = new Map(this.state.filters);\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 //Marca los filters actuales como los iniciales (llamar tras parseStructure/init).\r\n public markInitialFilters() {\r\n this.baseFilterIds = new Set([...this.state.filters.keys()].map(String));\r\n }\r\n\r\n // Elimina todos los filtros que NO son base (aquellos añadidos después del init).\r\n public removeAddedFilters() {\r\n for (const id of [...this.state.filters.keys()]) {\r\n if (!this.baseFilterIds.has(String(id))) {\r\n this.state.filters.delete(id);\r\n }\r\n }\r\n this.state.filters = new Map(this.state.filters);\r\n }\r\n\r\n public removeFilter(id: string) {\r\n this.state.filters.delete(id);\r\n this.state.filters = new Map(this.state.filters);\r\n }\r\n\r\n public clearFilter(id: string) {\r\n if (this.state.filters.has(id)) {\r\n this.state.filters.get(id)!.filterState.value = '';\r\n this.state.filters.get(id)!.filterState.filterToValue = '';\r\n }\r\n }\r\n}\r\n","import type {\r\n TResponsiveTableColumn,\r\n TResponsiveTableContextProps,\r\n TResponsiveTableRow,\r\n TResponsiveTableRowsSelectionEvent,\r\n TResponsiveTableSortChangeEvent,\r\n} from '@apia/table';\r\nimport {\r\n arrayOrArray,\r\n getLabel,\r\n Mutex,\r\n TApiaFilter,\r\n TApiaFunction,\r\n TApiaFunctionPageInfo,\r\n uniqueId,\r\n} from '@apia/util';\r\nimport { TFilter } from './filters/types';\r\nimport ApiaApi, { makeApiaUrl } from '../apiaApi';\r\nimport { Filter } from './filters/Filter';\r\nimport {\r\n QueryLoadStructureResponse,\r\n TApiaFiltersConditionsDefinition,\r\n TFilterTypesElementConditions,\r\n} from './types';\r\nimport { TableController } from './table/TableController';\r\nimport { computed, makeObservable, observable, reaction } from 'mobx';\r\nimport { TableControllerEvents } from './table/types';\r\nimport { ApiaUtil } from '@apia/components';\r\n\r\nexport type QueryControllerStructure = {\r\n description: string;\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 columns: TResponsiveTableColumn[];\r\n filters: TFilter[];\r\n queryData?: {\r\n noExecFirstTime?: boolean;\r\n autoFilter?: boolean;\r\n showAllAttributes?: boolean;\r\n showColumn?: string;\r\n name?: string;\r\n hideCount?: boolean;\r\n description?: string;\r\n storeColumn?: string;\r\n title?: string;\r\n };\r\n};\r\n\r\nexport type StoredQueryControllerStructure = Omit<\r\n QueryControllerStructure,\r\n 'columns' | 'filters'\r\n>;\r\n\r\nfunction unescapeHtml(html: string): string {\r\n const tmp: HTMLTextAreaElement = document.createElement('textarea');\r\n tmp.innerHTML = html;\r\n return tmp.value;\r\n}\r\n\r\nexport class QueryController {\r\n protected hasInited = false;\r\n protected initializing = false;\r\n protected mutex: Mutex = new Mutex();\r\n\r\n public structure: StoredQueryControllerStructure | null = null;\r\n public tableController: TableController;\r\n conditions: TFilterTypesElementConditions[] = [];\r\n\r\n constructor(public ajaxUrl: string) {\r\n this.tableController = this.buildTableController();\r\n this.initEvents();\r\n\r\n makeObservable(this, { conditions: observable, isLoading: computed });\r\n\r\n reaction(\r\n () => this.mutex.isBusy,\r\n () => (this.tableController.state.isLoading = this.mutex.isBusy),\r\n );\r\n }\r\n\r\n protected async actualRefreshMethod(serverFirstRefresh?: boolean) {\r\n const newValues = this.getFiltersValuesMap();\r\n const required = this.areRequiredFilters();\r\n if (!required) {\r\n await this.mutex.acquire();\r\n\r\n try {\r\n this.tableController.state.finishedFirstLoad = false;\r\n const refresh = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl(this.getRefreshParameters()),\r\n {\r\n postData: newValues,\r\n postDataTreatement: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n this.parseRefreshResponse(refresh?.data);\r\n } finally {\r\n if (serverFirstRefresh) {\r\n this.tableController.state.finishedFirstLoad = false;\r\n } else {\r\n this.tableController.state.finishedFirstLoad = true;\r\n }\r\n this.mutex.release();\r\n }\r\n }\r\n if (required) {\r\n const names = required\r\n .map(\r\n (f) =>\r\n f.filterState.title ??\r\n f.filterState.column ??\r\n f.filterState.id ??\r\n '',\r\n )\r\n .filter(Boolean)\r\n .join(', ');\r\n ApiaUtil.instance.notifications.notify({\r\n message: getLabel('msgQryFilterRequiredList', {\r\n text: { TOK1: names },\r\n }).text,\r\n type: 'warning',\r\n });\r\n }\r\n }\r\n\r\n protected areRequiredFilters() {\r\n const requiredFilters = [\r\n ...this.tableController.state.filters.values(),\r\n ].filter(\r\n (c) =>\r\n c.filterState.required &&\r\n !c.filterState.value &&\r\n !c.filterState.isHidden,\r\n );\r\n if (requiredFilters.length > 0) {\r\n return requiredFilters;\r\n }\r\n return false;\r\n }\r\n\r\n protected buildTableController(): TableController {\r\n return new TableController();\r\n }\r\n\r\n public async clearFilters() {\r\n this.tableController.state.filters.forEach((c) => {\r\n c.filterState.value = '';\r\n c.filterState.filterToValue = '';\r\n });\r\n this.actualRefreshMethod();\r\n }\r\n\r\n private timeout: any = -1;\r\n protected executeRefresh() {\r\n clearTimeout(this.timeout);\r\n\r\n this.timeout = setTimeout(() => {\r\n this.actualRefreshMethod();\r\n }, 300);\r\n }\r\n\r\n public getTableControllerDefaultProps(): Omit<\r\n TResponsiveTableContextProps,\r\n | 'FiltersRenderer'\r\n | 'SelectionHandler'\r\n | 'filters'\r\n | 'columns'\r\n | 'rows'\r\n | keyof TableControllerEvents\r\n > &\r\n Pick<TResponsiveTableContextProps, 'statesColumns'> {\r\n return { statesColumns: [] };\r\n }\r\n\r\n protected getEventsHandlers() {\r\n return {\r\n onChangeSelection: (ev: TResponsiveTableRowsSelectionEvent) => {\r\n ev;\r\n },\r\n onFilterBlur: (_ev: TApiaFilter) => {},\r\n onFilterChange: (_ev: TApiaFilter) => {\r\n const filter = this.tableController.state.filters.get(_ev.id);\r\n if (filter?.filterState.runAutomatically) {\r\n this.refresh(false);\r\n }\r\n },\r\n onFilterPressEnter: (_ev: TApiaFilter) => {\r\n this.refresh(true);\r\n },\r\n onRowClick: (_ev: TResponsiveTableRowsSelectionEvent[number]) => {},\r\n onSelectRows: (_ev: TResponsiveTableRowsSelectionEvent) => {},\r\n onSortChange: (ev: TResponsiveTableSortChangeEvent) => {\r\n const isDesc = ['Up', 'Desc', 'D'].includes(ev.sortValue ?? 'A');\r\n\r\n const col = this.tableController.state?.columns.get(ev.column.name);\r\n if (col) {\r\n col.currentSorting = isDesc ? 'D' : 'A';\r\n this.tableController.state.columns = new Map(\r\n this.tableController.state.columns,\r\n );\r\n }\r\n\r\n this.sort(String(ev.columnIndex), isDesc ? 'Des' : 'Asc');\r\n },\r\n onPage: this.page.bind(this),\r\n onRefresh: () => this.refresh(true),\r\n };\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\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\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return [...this.tableController.state.filters.values()].reduce<\r\n Record<string, unknown>\r\n >((result, filterWrapper) => {\r\n const { id, value, filterToId, filterToValue } =\r\n filterWrapper.filterState;\r\n result[id] = filterWrapper.filterState.multiplier\r\n ? value * filterWrapper.filterState.multiplier\r\n : value;\r\n\r\n if (filterToId !== undefined && filterToValue != undefined) {\r\n result[filterToId] = filterWrapper.filterState.multiplier\r\n ? Number(filterToValue) * filterWrapper.filterState.multiplier\r\n : filterToValue;\r\n }\r\n\r\n return result;\r\n }, {});\r\n }\r\n\r\n public get isLoading() {\r\n return this.mutex.isBusy;\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\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 async getStructure() {\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 initEvents() {\r\n const handlers = this.getEventsHandlers();\r\n\r\n Object.entries(handlers).forEach(([eventName, handler]) => {\r\n this.tableController.on(eventName as any, handler.bind(this) as any);\r\n });\r\n }\r\n\r\n public async initialLoad() {\r\n this.tableController.state.finishedFirstLoad = false;\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 const structure = await this.getStructure();\r\n this.structure = structure;\r\n this.parseStructure(structure);\r\n this.tableController.updateState({\r\n props: this.getTableControllerDefaultProps(),\r\n });\r\n\r\n this.hasInited = true;\r\n this.initializing = false;\r\n\r\n this.loadFilterTypes();\r\n this.tableController.markInitialFilters();\r\n if (!this.structure.queryData?.noExecFirstTime) this.refresh();\r\n }\r\n }\r\n\r\n protected async loadFilterTypes() {\r\n if (!this.structure?.hideFilterTypes) {\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) {\r\n this.conditions = arrayOrArray(result.data.form.elements.element);\r\n }\r\n }\r\n }\r\n\r\n public async page(num: number) {\r\n await this.mutex.acquire();\r\n\r\n try {\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 } finally {\r\n this.mutex.release();\r\n }\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure & {\r\n columns: TResponsiveTableColumn[];\r\n filters: TFilter[];\r\n } {\r\n const typedResponse = response as QueryLoadStructureResponse;\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 !== false,\r\n ariaLabel: c.title,\r\n currentSorting: c.order as 'D',\r\n hidden: c.hide === true || c.hide == '1',\r\n hideFromAccordion: c.hide === true,\r\n id: c.name,\r\n showAsAdditional: c.asMoreInformation,\r\n title: c.toolTip,\r\n width: c.width === '' || c.width === undefined ? '300px' : 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: f.id ?? `filter${String(i + 1)}`, // Id generado en APIA\r\n filterToId:\r\n (f?.filterToId ?? f.type == 'D')\r\n ? `filter${String(i + 1)}i`\r\n : undefined, // Id generado en APIA\r\n value: f.currentValue,\r\n avoidLabel:\r\n f.type === 'D' ||\r\n f.type === 'date' ||\r\n f.type === 'S' ||\r\n arrayOrArray(f?.filterOption).length > 0 ||\r\n f.type === 'N'\r\n ? true\r\n : false,\r\n filterToValue: f?.filterToValue,\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 hideToFilter: true,\r\n onChange: () => {},\r\n options: f?.filterOption\r\n ? [\r\n { value: '', label: '' },\r\n ...arrayOrArray(f?.filterOption).map((c) => ({\r\n label: c.content,\r\n value: c.value,\r\n })),\r\n ]\r\n : undefined,\r\n placeholder: f.title,\r\n readonly: f.readonly,\r\n required:\r\n f.required === 'true' ||\r\n f.required === '1' ||\r\n f.dateRequired === '1',\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 queryData: typedResponse?.queryData,\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) => ({\r\n children: typeof c === 'string' ? unescapeHtml(c) : c,\r\n })),\r\n ].filter(Boolean),\r\n className: r.classToAdd,\r\n id: r.id ?? uniqueId('row'),\r\n } as TResponsiveTableRow;\r\n }),\r\n ]);\r\n }\r\n\r\n protected parseStructure(\r\n structure: ReturnType<QueryController['parseLoadStructureResponse']>,\r\n ) {\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) => {\r\n return [f.id, new Filter(f)];\r\n }),\r\n );\r\n\r\n if (columns.size) {\r\n this.tableController.updateState({\r\n columns,\r\n });\r\n }\r\n if (filters.size) {\r\n this.tableController.updateState({\r\n filters,\r\n });\r\n }\r\n }\r\n\r\n public async refresh(now: boolean = true) {\r\n return now ? this.actualRefreshMethod() : this.executeRefresh();\r\n }\r\n\r\n public async setFilterOptions() {\r\n await ApiaApi.post<TApiaFiltersConditionsDefinition>(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\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 }\r\n\r\n public async sort(column: string, orderType: 'Asc' | 'Des') {\r\n await this.mutex.acquire();\r\n try {\r\n const result = await ApiaApi.post<TApiaFunction>(\r\n makeApiaUrl({\r\n ...this.getSortParameters(),\r\n orderBy: column,\r\n orderType,\r\n }),\r\n );\r\n if (result?.data) {\r\n const structure = this.parseLoadStructureResponse(result.data);\r\n this.parseStructure(structure);\r\n this.parseRefreshResponse(result.data);\r\n }\r\n } finally {\r\n this.mutex.release();\r\n }\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","import { arrayOrArray } from '@apia/util';\r\nimport { Box, Label, Select } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { QueryController } from './QueryController';\r\n\r\nexport const FilterTypesComponent = observer(\r\n ({ queryController }: { queryController: QueryController }) => {\r\n return (\r\n <>\r\n {queryController.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 queryController.conditions[idx].value = selectedValue;\r\n queryController.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 {\r\n Additional,\r\n Responsive,\r\n Sort,\r\n TableContextReproducer,\r\n Grouped,\r\n} from '@apia/table';\r\nimport { Accordion, AccordionItem, SimpleButton } from '@apia/components';\r\nimport { getLabel } from '@apia/util';\r\nimport { QueryController } from '../../../QueryController';\r\nimport { FilterTypesComponent } from '../../../FilterTypesComponent';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Filter } from '../../../filters/Filter';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport const AdditionalFiltersComponent = observer(\r\n ({ queryController }: { queryController: QueryController }) => {\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 = !![\r\n ...queryController.tableController.state.filters.values(),\r\n ].find((f) => f.filterState.isAdditional || !f.filterState.column);\r\n const hasFilters = !![\r\n ...queryController.tableController.state.filters.values(),\r\n ].find((f) => !f.filterState.isAdditional && f.filterState.column);\r\n const hasSortable = !![\r\n ...queryController.tableController.state.columns.values(),\r\n ].find((c) => c.allowSorting !== false);\r\n const groupFilters = (() => {\r\n const byGroup = new Map<string, Filter>();\r\n [...queryController.tableController.state.filters.values()].forEach(\r\n (f) => {\r\n const g = f.filterState?.group;\r\n if (g && g !== '' && !byGroup.has(g)) {\r\n byGroup.set(g, f);\r\n }\r\n },\r\n );\r\n return [...byGroup.values()];\r\n })();\r\n return (\r\n <Box\r\n sx={{\r\n '.requiredMark': { display: 'none' },\r\n '.filter__query': {\r\n border: '1px solid #c6c6c6!important',\r\n },\r\n }}\r\n >\r\n <TableContextReproducer\r\n tableName={queryController.tableController.getTableName()}\r\n >\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: window.ADDITIONAL_FILTERS_LABEL,\r\n label: window.ADDITIONAL_FILTERS_LABEL,\r\n }}\r\n >\r\n <Additional />\r\n </AccordionItem>\r\n )}\r\n\r\n {groupFilters.length > 0 && (\r\n <>\r\n {groupFilters.map((g) => (\r\n <AccordionItem\r\n id={`Group_${g.filterState.group}`}\r\n buttonProps={{\r\n ariaLabel: getLabel(`${g.filterState.group}`).text,\r\n label: getLabel(`${g.filterState.group}`).text,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'end',\r\n gap: 3,\r\n width: '100%',\r\n }}\r\n >\r\n <Grouped\r\n key={g.filterState.group}\r\n tableName={queryController.tableController.getTableName()}\r\n group={g.filterState?.group ?? ''}\r\n />\r\n {g.filterState.addFilter && (\r\n <SimpleButton\r\n variant=\"outline-sm\"\r\n onClick={g.filterState.addFilter}\r\n >\r\n {getLabel('lblAddFil').text}\r\n </SimpleButton>\r\n )}\r\n </Box>\r\n </AccordionItem>\r\n ))}\r\n </>\r\n )}\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 && !queryController.structure?.hideFilterTypes && (\r\n <AccordionItem\r\n id=\"FilterTypes\"\r\n buttonProps={{ ariaLabel: filterTypes, label: filterTypes }}\r\n >\r\n <FilterTypesComponent queryController={queryController} />\r\n </AccordionItem>\r\n )}\r\n </Accordion>\r\n </TableContextReproducer>\r\n </Box>\r\n );\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 { QueryController } from '../../QueryController';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Box } from '@apia/theme';\r\nimport { getLabel } from '@apia/util';\r\n\r\nconst ButtonsBar = observer(\r\n ({ queryController }: { queryController: QueryController }) => {\r\n return (\r\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: '10px' }}>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n queryController.refresh();\r\n }}\r\n disabled={queryController.isLoading}\r\n >\r\n {getLabel('btnSearch').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant=\"outline-sm\"\r\n onClick={() => {\r\n queryController.clearFilters();\r\n }}\r\n disabled={queryController.isLoading}\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </Box>\r\n );\r\n },\r\n);\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 queryController={this.queryController} />\r\n ),\r\n onConfirm: () => {},\r\n confirmProps: {\r\n hideConfirmButton: true,\r\n hideCancelButton: true,\r\n additionalButtonsOnRight: (\r\n <ButtonsBar queryController={this.queryController} />\r\n ),\r\n },\r\n draggable: true,\r\n variant: 'layout.common.modals.apiaFinder.additionalFiltersModal',\r\n size: 'lg',\r\n };\r\n }\r\n public async openModal(properties?: TOpenModal) {\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 { TResponsiveTableRowsSelectionEvent } from '@apia/table';\r\nimport { EventEmitter, getLabel, UnSubscriber } from '@apia/util';\r\nimport { TableControllerEvents } from './table/types';\r\nimport { AdditionalFiltersModal } from './table/AdditionalFilters/AdditionalFiltersModal';\r\nimport { QueryController } from './QueryController';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Box, Spinner, ThemeUICSSObject } from '@apia/theme';\r\n\r\ntype QueryModalControllerEvents = Pick<\r\n TableControllerEvents,\r\n 'onSelectRows'\r\n> & { cancel: null };\r\n\r\nconst NavBarRenderer = observer(\r\n ({\r\n queryController,\r\n additionalFiltersController,\r\n }: {\r\n queryController: QueryController;\r\n additionalFiltersController: AdditionalFiltersModal;\r\n }) => (\r\n <>\r\n <SimpleButton\r\n variant=\"primary-sm\"\r\n onClick={() => {\r\n queryController.refresh();\r\n }}\r\n data-test-id=\"btn_search\"\r\n >\r\n {queryController.tableController.state.isLoading ? (\r\n <Spinner sx={{ color: 'white', height: '17px' }} />\r\n ) : (\r\n getLabel('btnSearch').text\r\n )}\r\n </SimpleButton>\r\n\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={async () => {\r\n additionalFiltersController.openModal();\r\n }}\r\n data-test-id=\"btn-additional-filters\"\r\n >\r\n {getLabel('titAdmAdtFilter').text}\r\n </SimpleButton>\r\n <SimpleButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n onClick={() => queryController.clearFilters()}\r\n data-test-id=\"btn-clear-filters\"\r\n >\r\n {getLabel('btnClearFilter').text}\r\n </SimpleButton>\r\n </>\r\n ),\r\n);\r\n\r\nexport class QueryModalController {\r\n protected emitter = new EventEmitter<QueryModalControllerEvents>();\r\n protected queryController: QueryController;\r\n private modalHandler: ApiaUtilModalHandler | null = null;\r\n protected currentSelection: TResponsiveTableRowsSelectionEvent | null = null;\r\n private additionalFiltersController: AdditionalFiltersModal;\r\n protected sx: ThemeUICSSObject = {};\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 <Box sx={{ height: '100%', ...this.sx }}>\r\n <tableController.Context>\r\n <tableController.Table />\r\n <tableController.Pagination />\r\n </tableController.Context>\r\n </Box>\r\n ),\r\n title: structure?.title,\r\n onConfirm: () => {\r\n this.onConfirm();\r\n this.additionalFiltersController.closeModal();\r\n },\r\n onCancel: () => {\r\n this.additionalFiltersController.closeModal();\r\n this.queryController.tableController.state.finishedFirstLoad = false;\r\n this.emitter.emit('cancel', null);\r\n },\r\n onClose: () => {\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 <NavBarRenderer\r\n queryController={this.queryController}\r\n additionalFiltersController={this.additionalFiltersController}\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 protected 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 async openModal<T = QueryModalControllerEvents['onSelectRows']>(\r\n properties?: TOpenModal,\r\n ): Promise<T> {\r\n await this.queryController.initialLoad();\r\n\r\n this.modalHandler = ApiaUtil.instance.modals.open({\r\n ...this.getModalDefinition(),\r\n ...properties,\r\n });\r\n\r\n if (this.queryController.structure?.openFiltersAutomatically) {\r\n this.additionalFiltersController.openModal();\r\n }\r\n\r\n return this.onConfirmResolve<T>();\r\n }\r\n\r\n public getModalHandler() {\r\n return this.modalHandler;\r\n }\r\n\r\n protected onConfirm() {\r\n this.emitter.emit('onSelectRows', this.currentSelection || []);\r\n }\r\n\r\n protected onConfirmResolve<T>(): Promise<T> {\r\n return new Promise((resolve) => {\r\n let uns1: UnSubscriber = () => {},\r\n uns2: UnSubscriber = () => {};\r\n\r\n uns1 = this.on('onSelectRows', (res) => {\r\n uns1();\r\n uns2();\r\n resolve(res as T);\r\n });\r\n uns2 = this.on('cancel', () => {\r\n uns1();\r\n uns2();\r\n resolve([] as T);\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n QueryController,\r\n QueryControllerStructure,\r\n} from '../../../../queries/QueryController';\r\nimport { TApiaFilter, TApiaFunction } from '@apia/util';\r\nimport { TResponsiveTableContextProps } from '@apia/table';\r\nimport { TableControllerEvents } from '../../../../queries/table/types';\r\nimport { QueryColumn } from '../../../../queries/types';\r\nimport ApiaApi, { makeApiaUrl } from '../../../../apiaApi';\r\n\r\nexport type TGenericListColumn = {\r\n name: string;\r\n label: string;\r\n show: boolean;\r\n order: 'A' | 'D' | '';\r\n};\r\n\r\nexport class GenericListQuery extends QueryController {\r\n constructor(public ajaxUrl: string) {\r\n super(ajaxUrl);\r\n }\r\n\r\n protected getClearFiltersParameters(): Record<string, unknown> {\r\n return { ...super.getClearFiltersParameters(), action: 'filter' };\r\n }\r\n\r\n getTableControllerDefaultProps(): Omit<\r\n TResponsiveTableContextProps,\r\n | 'FiltersRenderer'\r\n | 'SelectionHandler'\r\n | 'filters'\r\n | 'columns'\r\n | 'rows'\r\n | keyof TableControllerEvents\r\n > &\r\n Pick<TResponsiveTableContextProps, 'statesColumns'> {\r\n return {\r\n ...super.getTableControllerDefaultProps(),\r\n isMultiple: true,\r\n };\r\n }\r\n\r\n protected getLoadStructureParameters() {\r\n return {\r\n ...super.getLoadStructureParameters(),\r\n ...this.getRefreshParameters(),\r\n };\r\n }\r\n\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\r\n action: 'filter',\r\n isAjax: true,\r\n };\r\n }\r\n\r\n protected async getStructure() {\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 //en generic list no hay init entonces el primer llamado (que es un action filter) tiene que hacer el parseRefresh\r\n super.parseRefreshResponse(result?.data as any);\r\n\r\n return this.parseLoadStructureResponse(result.data);\r\n }\r\n\r\n public async initialLoad() {\r\n this.tableController.state.finishedFirstLoad = false;\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 const structure = await this.getStructure();\r\n this.structure = structure;\r\n this.parseStructure(structure);\r\n this.tableController.updateState({\r\n props: this.getTableControllerDefaultProps(),\r\n });\r\n\r\n this.hasInited = true;\r\n this.initializing = false;\r\n\r\n // if (!this.structure.queryData?.noExecFirstTime) this.refresh();\r\n }\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const typedResponse = response as TApiaFunction<{\r\n result: {\r\n columns: { column: QueryColumn };\r\n filters: {\r\n filter: TApiaFilter[];\r\n };\r\n };\r\n }>;\r\n\r\n return super.parseLoadStructureResponse({\r\n columns: { ...typedResponse.function.messages.result.columns },\r\n filters: {\r\n ...typedResponse.function.messages.result.filters,\r\n runFiltersAutomatically: true,\r\n },\r\n });\r\n }\r\n}\r\n","import { GenericListQuery } from './GenericListQuery';\r\nimport { QueryModalController } from '../../../../queries/QueryModalController';\r\nimport { QueryControllerStructure } from '../../../../queries/QueryController';\r\nimport { TApiaFunction } from '@apia/util';\r\n\r\nclass UsersQuery extends GenericListQuery {\r\n constructor() {\r\n super('apia.modals.UsersAction.run');\r\n }\r\n\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\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 }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n if (!response) return;\r\n\r\n const structure = this.parseLoadStructureResponse(response);\r\n this.parseStructure(structure);\r\n\r\n setTimeout(() => {\r\n super.parseRefreshResponse(response);\r\n }, 0);\r\n }\r\n\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return {\r\n ...super.getFiltersValuesMap(),\r\n };\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const structure = { ...super.parseLoadStructureResponse(response) };\r\n structure.hideFilterTypes = true;\r\n return structure;\r\n }\r\n}\r\n\r\nexport const makeApiaUsersModal2 = () =>\r\n new QueryModalController(new UsersQuery());\r\n","import { getLabel, TApiaFunction } from '@apia/util';\r\nimport { QueryControllerStructure } from '../../../../queries/QueryController';\r\nimport { QueryModalController } from '../../../../queries/QueryModalController';\r\nimport { GenericListQuery } from './GenericListQuery';\r\ntype TPoolsParameters = {\r\n showCurrentEnv?: boolean;\r\n showGlobal: boolean;\r\n};\r\n\r\nexport class PoolsQuery extends GenericListQuery {\r\n constructor(protected config?: TPoolsParameters) {\r\n super('apia.modals.PoolsAction.run');\r\n }\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\r\n showAutogenerated: false,\r\n showNotAutogenerated: false,\r\n showCurrentEnv: this.config?.showCurrentEnv ?? true,\r\n showGlobal: this.config?.showGlobal ?? true,\r\n selectOnlyOne: false,\r\n forHierarchy: false,\r\n showOnlyPoolsInHierarchy: false,\r\n showOnlyPoolsOutsideHierarchy: false,\r\n refreshParameters: false,\r\n fetchAllInHierarchy: false,\r\n };\r\n }\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n return {\r\n ...super.getFiltersValuesMap(),\r\n };\r\n }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n if (!response) return;\r\n\r\n const structure = this.parseLoadStructureResponse(response);\r\n this.parseStructure(structure);\r\n\r\n setTimeout(() => {\r\n super.parseRefreshResponse(response);\r\n }, 0);\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const structure = { ...super.parseLoadStructureResponse(response) };\r\n structure.hideFilterTypes = true;\r\n structure.title = getLabel('btnAddPool').text;\r\n return structure;\r\n }\r\n}\r\n\r\nexport const makeApiaPoolsModals2 = (config?: TPoolsParameters) =>\r\n new QueryModalController(new PoolsQuery(config));\r\n","import { QueryModalController } from '../../../../queries/QueryModalController';\r\nimport {\r\n arrayOrArray,\r\n getLabel,\r\n TApiaFilter,\r\n TApiaFunction,\r\n TApiaLoad,\r\n uniqueId,\r\n} from '@apia/util';\r\nimport {\r\n QueryController,\r\n QueryControllerStructure,\r\n} from '../../../../queries/QueryController';\r\nimport {\r\n makeAsyncRenderer,\r\n TResponsiveTableColumn,\r\n TResponsiveTableContextProps,\r\n TResponsiveTableRow,\r\n TResponsiveTableRowsSelectionEvent,\r\n TResponsiveTableSortChangeEvent,\r\n} from '@apia/table';\r\nimport { IconButton, TOpenModal } from '@apia/components';\r\nimport { FileIcon, Icon } from '@apia/icons';\r\nimport { TableControllerEvents } from '../../../../queries/table/types';\r\nimport { TFilter } from '../../../../queries/filters/types';\r\nimport ApiaApi, { makeApiaUrl } from '../../../../apiaApi';\r\nimport { Filter } from '../../../../queries/filters/Filter';\r\n\r\nexport class MonDocQuery extends QueryController {\r\n constructor(public ajaxUrl: string) {\r\n super(ajaxUrl);\r\n }\r\n\r\n public getTableControllerDefaultProps(): Omit<\r\n TResponsiveTableContextProps,\r\n | 'FiltersRenderer'\r\n | 'SelectionHandler'\r\n | 'filters'\r\n | 'columns'\r\n | 'rows'\r\n | keyof TableControllerEvents\r\n > &\r\n Pick<TResponsiveTableContextProps, 'statesColumns'> {\r\n return {\r\n ...super.getTableControllerDefaultProps(),\r\n showFilters: true,\r\n isMultiple: false,\r\n reserveColumnsForStates: 2,\r\n statesColumns: [\r\n {\r\n Icon: () => <Icon icon=\"Locked\" title=\"\" />,\r\n tooltip: getLabel('titDocLock').text,\r\n },\r\n {\r\n Icon: () => <Icon icon=\"Readonly\" title=\"\" size={22} />,\r\n tooltip: getLabel('lblReadOnly').text,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n public addFreeMetadataFilter(filter?: TFilter) {\r\n const id = uniqueId();\r\n const actualFilter =\r\n filter ||\r\n ({\r\n id,\r\n group: 'lblFreeMetadata',\r\n value: '',\r\n filterToValue: '',\r\n avoidLabel: true,\r\n type: 'double',\r\n icon: 'Close',\r\n addFilter: () => {\r\n this.addFreeMetadataFilter();\r\n },\r\n removeFilter: () => {\r\n this.tableController.removeFilter(id);\r\n },\r\n } as TFilter);\r\n\r\n const freeMetadataFilters = arrayOrArray(actualFilter).map((f) => {\r\n return new Filter(f);\r\n });\r\n\r\n this.tableController.updateFilters(freeMetadataFilters);\r\n }\r\n\r\n public async initialLoad() {\r\n await super.initialLoad();\r\n await this.loadMetadataFilters();\r\n await this.setFilters();\r\n }\r\n\r\n protected async loadMetadataFilters(): Promise<void> {\r\n this.tableController.removeAddedFilters();\r\n const res = await ApiaApi.post<{\r\n docMetadata: {\r\n metadata: TMetadataFilterRes[];\r\n };\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'loadMetadata',\r\n docTypeId:\r\n this.tableController.state.filters.get('txtDocTypeId')?.filterState\r\n .value || 1,\r\n }),\r\n );\r\n if (res?.data?.docMetadata?.metadata) {\r\n const parsedFilters = arrayOrArray(res.data.docMetadata.metadata).map(\r\n (c) => {\r\n const filter = {\r\n ...c,\r\n group: 'titMetadata',\r\n hideToFilter: true,\r\n filterToId: `${String(c.id)}i`,\r\n filterToValue: c.value2,\r\n avoidLabel: c.type === 'D',\r\n } as TFilter;\r\n return filter;\r\n },\r\n );\r\n const metadataFilters = arrayOrArray(parsedFilters).map((f) => {\r\n return new Filter(f);\r\n });\r\n\r\n this.tableController.updateFilters(metadataFilters);\r\n\r\n if (metadataFilters.length > 0) {\r\n const id = uniqueId();\r\n const metadataFilter = {\r\n id,\r\n group: 'lblFreeMetadata',\r\n value: '',\r\n filterToValue: '',\r\n avoidLabel: true,\r\n type: 'double',\r\n addFilter: () => {\r\n this.addFreeMetadataFilter();\r\n },\r\n removeFilter: () => {\r\n this.tableController.clearFilter(id);\r\n },\r\n } as TFilter;\r\n\r\n this.addFreeMetadataFilter(metadataFilter);\r\n }\r\n }\r\n }\r\n\r\n protected async loadFilterTypes(): Promise<void> {\r\n // Override the default behavior, we dont want loadFilterTypes\r\n }\r\n\r\n protected processFilterChangeEvent(ev: TApiaFilter): void {\r\n this.tableController.state.filters.get(ev.id);\r\n this.refresh();\r\n }\r\n\r\n public getAdditionalInfo = async (row: TResponsiveTableRow) => {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<\r\n TApiaFunction<{\r\n row: { cell: { label: string; name: string; newline: boolean } };\r\n }>\r\n >\r\n >(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'adtInfo',\r\n isAjax: true,\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postData: new URLSearchParams({\r\n id: row.id.slice(\r\n 0,\r\n row.id.indexOf('$-$') > 0 ? row.id.indexOf('$-$') : row.id.length,\r\n ),\r\n }).toString(),\r\n },\r\n );\r\n return arrayOrArray(result?.data?.function.messages.row.cell);\r\n };\r\n\r\n protected getLoadStructureParameters() {\r\n return {\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'init',\r\n react: true,\r\n isAjax: true,\r\n forCusDocMonMdl: true,\r\n ...this.dynamicParams,\r\n };\r\n }\r\n\r\n private dynamicParams: Record<string, any> = {};\r\n\r\n setDynamicParams(params: Record<string, any>) {\r\n this.dynamicParams = params;\r\n }\r\n\r\n protected getClearFiltersParameters(): Record<string, unknown> {\r\n return { ...super.getClearFiltersParameters(), action: 'filter' };\r\n }\r\n\r\n protected getRefreshParameters(): Record<string, unknown> {\r\n return {\r\n ...super.getRefreshParameters(),\r\n action: 'filter',\r\n isAjax: true,\r\n };\r\n }\r\n\r\n protected getFiltersValuesMap(): Record<string, unknown> {\r\n const metadataValues: string[] = [];\r\n const freeMetadataValues: string[] = [];\r\n const filtersValues = [\r\n ...this.tableController.state.filters.values(),\r\n ].reduce<Record<string, unknown>>((result, filterWrapper) => {\r\n const { id, value, type, group, multiplier, filterToId, filterToValue } =\r\n filterWrapper.filterState;\r\n\r\n switch (group) {\r\n case 'titMetadata':\r\n if (value !== '') {\r\n const t = (type === 'apiaNumber' ? 'N' : type) || 'S';\r\n\r\n metadataValues.push(\r\n `${id}${window.PRIMARY_SEPARATOR}${t}${window.PRIMARY_SEPARATOR}${value}`,\r\n );\r\n if (filterToValue) {\r\n metadataValues.push(\r\n `${id}${window.PRIMARY_SEPARATOR}${t}${window.PRIMARY_SEPARATOR}${filterToValue}`,\r\n );\r\n }\r\n }\r\n return result;\r\n case 'lblFreeMetadata':\r\n if (filterToValue !== '') {\r\n freeMetadataValues.push(\r\n `${value}${window.PRIMARY_SEPARATOR}${filterToValue}`,\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n result[id] = multiplier ? value * multiplier : value;\r\n\r\n if (filterToId !== undefined && filterToValue != undefined) {\r\n result[filterToId] = multiplier\r\n ? Number(filterToValue) * multiplier\r\n : filterToValue;\r\n }\r\n\r\n return result;\r\n }, {});\r\n\r\n return {\r\n ...filtersValues,\r\n strDocMetadata: metadataValues.join(';'),\r\n strDocFreeMetadata: freeMetadataValues.join(';'),\r\n };\r\n }\r\n\r\n protected getEventsHandlers(): {\r\n onChangeSelection: (ev: TResponsiveTableRowsSelectionEvent) => void;\r\n onFilterBlur: (_ev: TApiaFilter) => void;\r\n onFilterChange: (_ev: TApiaFilter) => void;\r\n onFilterPressEnter: (_ev: TApiaFilter) => void;\r\n onRowClick: (_ev: TResponsiveTableRowsSelectionEvent[number]) => void;\r\n onSelectRows: (_ev: TResponsiveTableRowsSelectionEvent) => void;\r\n onSortChange: (ev: TResponsiveTableSortChangeEvent) => void;\r\n onPage: (num: number) => Promise<void>;\r\n onRefresh: () => Promise<void | undefined>;\r\n } {\r\n return {\r\n ...super.getEventsHandlers(),\r\n onFilterChange: (e) => {\r\n if (e.id === 'txtDocTypeId') {\r\n this.loadMetadataFilters();\r\n }\r\n this.refresh(false);\r\n },\r\n };\r\n }\r\n\r\n protected parseRefreshResponse(response?: TApiaFunction | null) {\r\n const rows = arrayOrArray(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 ...rows.map((r) => {\r\n const cells = arrayOrArray(r.cell);\r\n\r\n const fileName = (\r\n typeof cells[1] === 'string'\r\n ? cells[1]\r\n : typeof cells[1] === 'object' && cells[1]\r\n ? cells[1].content\r\n : ''\r\n ) as string;\r\n\r\n return {\r\n rowProps: r,\r\n isLocked: r.docLock,\r\n states: [\r\n {\r\n Icon: () => (\r\n <Icon\r\n title={getLabel('lblLockedDocument').text}\r\n icon=\"Locked\"\r\n sx={{\r\n display: r.docLock ? 'block!important' : 'none!important',\r\n }}\r\n />\r\n ),\r\n tooltip: '',\r\n },\r\n {\r\n Icon: () => (\r\n <Icon\r\n title={getLabel('lblReadOnly').text}\r\n icon=\"Readonly\"\r\n size={22}\r\n sx={{\r\n display: r.uneditableTR\r\n ? 'block!important'\r\n : 'none!important',\r\n }}\r\n />\r\n ),\r\n tooltip: '',\r\n },\r\n ],\r\n cells: [\r\n {\r\n children: <FileIcon docName={fileName} />,\r\n },\r\n ...arrayOrArray(r.cell).map((c) => {\r\n if (typeof c === 'string') {\r\n return { children: c };\r\n }\r\n if (c && typeof c === 'object') {\r\n if ('content' in c) {\r\n return { children: c.content, className: c.classToAdd };\r\n }\r\n if ('elemType' in c) {\r\n return {\r\n children: (\r\n <IconButton\r\n icon={'Download'}\r\n onClick={() => {\r\n window.open(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'download',\r\n id: r.id,\r\n }),\r\n );\r\n }}\r\n />\r\n ),\r\n };\r\n }\r\n }\r\n\r\n return { children: c };\r\n }),\r\n ],\r\n id: r?.id,\r\n className: `${r.boldType ? 'bold' : ''} ${r['expired-doc'] ? 'expired' : ''} `,\r\n } as TResponsiveTableRow;\r\n }),\r\n ]);\r\n }\r\n\r\n protected parseLoadStructureResponse(\r\n response: any,\r\n ): QueryControllerStructure {\r\n const typedResponse = response as {\r\n columns: ResponseColumn[];\r\n filters: ResponseFilter[];\r\n };\r\n\r\n const retrievedColumns = arrayOrArray(typedResponse.columns);\r\n const retrievedFilters = arrayOrArray(typedResponse.filters);\r\n\r\n const columns: TResponsiveTableColumn[] = retrievedColumns.map((c) => {\r\n const column: ResponseColumn = {\r\n label: c.label,\r\n name: c.name,\r\n allowSorting: c.allowSorting,\r\n dataSortBy: c.dataSortBy,\r\n sort: c.sort,\r\n toolTip: c.toolTip,\r\n minWidth: c.name === 'docFile' ? '50px' : '25%',\r\n width: c.name === 'docFile' ? '50px' : '25%',\r\n };\r\n\r\n return column;\r\n });\r\n\r\n if (response.additionalInfoInTable) {\r\n columns?.push({\r\n showAsAdditional: true,\r\n label: 'moreInfo',\r\n name: 'moreInfo',\r\n Renderer: makeAsyncRenderer((row) => this.getAdditionalInfo(row)),\r\n });\r\n }\r\n const returnObject: QueryControllerStructure = {\r\n columns: columns.filter((c) => c !== null),\r\n filters: arrayOrArray(retrievedFilters).map((f) => {\r\n const filter: TFilter = {\r\n id: f.id,\r\n filterToId: f?.filterToId,\r\n filterToValue: f?.filterToValue,\r\n isAdditional: f.type === 'date',\r\n value:\r\n f?.options?.find((c) => c.value === this.dynamicParams.docTypeSel)\r\n ?.value ?? f.currentValue,\r\n column: f.column,\r\n title: f.title,\r\n tooltip: f.toolTip,\r\n hideToFilter: true,\r\n avoidLabel: f.type === 'date',\r\n type: f.type,\r\n onChange: () => {},\r\n options: f.options?.map((option) => ({\r\n label: option.label ?? '',\r\n value: option.value,\r\n })),\r\n placeholder: f.title,\r\n isRange: f.isRange,\r\n isSize: f.isSize,\r\n };\r\n\r\n return filter;\r\n }),\r\n description: '',\r\n hasAdditionalInformation: true,\r\n hideFilterTypes: true,\r\n isDynamic: false,\r\n openFiltersAutomatically: false,\r\n runFiltersAutomatically: true,\r\n title: response.title,\r\n queryData: { noExecFirstTime: true },\r\n };\r\n\r\n return returnObject;\r\n }\r\n\r\n protected async setFilters() {\r\n await ApiaApi.post(\r\n makeApiaUrl({\r\n ajaxUrl: this.ajaxUrl,\r\n action: 'setFilters',\r\n txtDocTypeId:\r\n this.tableController.state.filters.get('txtDocTypeId')?.filterState\r\n .value,\r\n }),\r\n );\r\n }\r\n}\r\n\r\ntype TOpenMonDocModal = {\r\n docTypeId: string[];\r\n docTypeSel: string;\r\n monDocId: number;\r\n};\r\n\r\nexport class ApiaMonDocModal2 extends QueryModalController {\r\n protected sx = {\r\n 'tr.expired[class]': {\r\n color: 'priorityUrgent',\r\n '&:hover': {\r\n color: 'priorityUrgent',\r\n },\r\n },\r\n };\r\n constructor() {\r\n super(new MonDocQuery('/apia.execution.CustMonDocumentAction.run'));\r\n }\r\n\r\n public openModal<T = TResponsiveTableRowsSelectionEvent>(\r\n properties: TOpenModal & { monitorProperties: TOpenMonDocModal },\r\n ): Promise<T> {\r\n (this.queryController as MonDocQuery).setDynamicParams(\r\n properties.monitorProperties,\r\n );\r\n\r\n return super.openModal<T>(properties);\r\n }\r\n}\r\n\r\ninterface ResponseColumn {\r\n allowSorting: boolean;\r\n dataSortBy: string;\r\n label: string;\r\n minWidth: string;\r\n name: string;\r\n sort: string;\r\n toolTip: string;\r\n width: string;\r\n}\r\n\r\ninterface ResponseFilter {\r\n column: string;\r\n currentValue: string;\r\n id: string;\r\n options?: {\r\n label: string;\r\n value: string;\r\n }[];\r\n placeholder: string;\r\n title: string;\r\n toolTip: string;\r\n filterToId?: string;\r\n filterToValue?: string;\r\n isRange?: boolean;\r\n isSize?: boolean;\r\n type?: 'date';\r\n}\r\ntype TMetadataFilterRes = { value2: string } & Pick<\r\n TFilter,\r\n 'id' | 'title' | 'type' | 'value' | 'hideToFilter'\r\n>;\r\n"],"names":["queryString","getModal","React","id","selectedRows","currentFormDispatcher","ApiaApiContext","Input","Select","unit","uniqueId","__publicField"],"mappings":"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"}