@apia/dashboard-controller 5.0.1 → 5.0.6

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.
@@ -4,6 +4,7 @@ import { panelNetworkStateEmitter } from './usePanelNetworkState.js';
4
4
  import { ucfirst } from '@apia/util';
5
5
  import { setPanelTitleAction, setPanelImageAction, setPanelTitleDescritpion } from '../panelsUtil/usePanelTitleAction.js';
6
6
  import { startTransition } from 'react';
7
+ import { changePanelFooter } from '../splash/panels/PanelContext/usePanelFooter.js';
7
8
  import { changePanelTitle } from '../panelsUtil/usePanelChangeTitle.js';
8
9
 
9
10
  function firePanelAction(panelId, action, parameters, options) {
@@ -38,7 +39,7 @@ function firePanelAction(panelId, action, parameters, options) {
38
39
  );
39
40
  }
40
41
  if (result?.data?.footer) {
41
- ({}).changePanelFooter(
42
+ changePanelFooter(
42
43
  panelId,
43
44
  result?.data?.footer
44
45
  );
@@ -1 +1 @@
1
- {"version":3,"file":"firePanelAction.js","sources":["../../src/actions/firePanelAction.ts"],"sourcesContent":["import { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport {\r\n TActionDispatcherOptions,\r\n TActionResult,\r\n TFooter,\r\n panelActionsEmitter,\r\n} from './usePanelActions';\r\nimport { panelNetworkStateEmitter } from './usePanelNetworkState';\r\nimport { changePanelTitle } from '../panelsUtil';\r\nimport { ucfirst } from '@apia/util';\r\nimport {\r\n setPanelImageAction,\r\n setPanelTitleAction,\r\n setPanelTitleDescritpion,\r\n} from '../panelsUtil/usePanelTitleAction';\r\nimport { startTransition } from 'react';\r\nimport { TPanelIdentifier } from '../eventsController';\r\n\r\nexport type TOnSucceed = (hasSucceed: boolean, data: TActionResult) => unknown;\r\n\r\n/**\r\n * **MÉTODO DE USO INTERNO**\r\n *\r\n * LLama al server para ejecutar una acción iniciada en el cliente.\r\n *\r\n * La forma de llamar acciones desde un panel es con el hook usePanelActions.\r\n */\r\nexport function firePanelAction(\r\n panelId: string,\r\n action: string,\r\n parameters?: Record<string, unknown>,\r\n options?: TActionDispatcherOptions,\r\n) {\r\n const postData = { p_action: action, ...parameters };\r\n panelActionsEmitter.emit(panelId, `pre${ucfirst(action)}`, null);\r\n void ApiaApi.post(\r\n makeApiaUrl({\r\n action: 'panelAction',\r\n pnlId: panelId,\r\n }),\r\n { postData, postDataTreatement: 'stringify', ...options?.requestConfig },\r\n )\r\n .then((result) => {\r\n if (result?.status !== 200) {\r\n console.log('ERROR', panelId);\r\n panelNetworkStateEmitter.emit('stateChange', {\r\n panelId,\r\n isConnected: false,\r\n });\r\n } else {\r\n panelNetworkStateEmitter.emit('stateChange', {\r\n panelId,\r\n isConnected: true,\r\n });\r\n }\r\n try {\r\n if (result) {\r\n startTransition(() => {\r\n if (result?.data?.title) {\r\n changePanelTitle(\r\n { panelId } as TPanelIdentifier,\r\n (result as TActionResult<{ title: string }>)?.data\r\n ?.title as string,\r\n );\r\n }\r\n if (result?.data?.footer) {\r\n (({}) as any).changePanelFooter(\r\n panelId,\r\n (result as TActionResult<{ footer: TFooter }>)?.data\r\n ?.footer as TFooter,\r\n );\r\n }\r\n if (result?.data?.titleAction) {\r\n setPanelTitleAction(panelId, result?.data?.titleAction as string);\r\n }\r\n\r\n setPanelImageAction(panelId, (result?.data?.image as string) ?? '');\r\n if (result?.data?.titleDescription) {\r\n setPanelTitleDescritpion(\r\n panelId,\r\n result?.data?.titleDescription as string,\r\n );\r\n }\r\n options?.onComplete?.(true, result);\r\n panelActionsEmitter.emit(panelId, action, result);\r\n });\r\n } else options?.onComplete?.(false, null);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })\r\n .catch((e) => {\r\n console.error(e);\r\n panelNetworkStateEmitter.emit('stateChange', {\r\n panelId,\r\n isConnected: false,\r\n });\r\n options?.onComplete?.(false, null);\r\n });\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AA2BO,SAAS,eAAA,CACd,OAAA,EACA,MAAA,EACA,UAAA,EACA,OAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW,EAAE,QAAA,EAAU,MAAA,EAAQ,GAAG,UAAA,EAAW;AACnD,EAAA,mBAAA,CAAoB,KAAK,OAAA,EAAS,CAAA,GAAA,EAAM,QAAQ,MAAM,CAAC,IAAI,IAAI,CAAA;AAC/D,EAAA,KAAK,OAAA,CAAQ,IAAA;AAAA,IACX,WAAA,CAAY;AAAA,MACV,MAAA,EAAQ,aAAA;AAAA,MACR,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD,EAAE,QAAA,EAAU,kBAAA,EAAoB,WAAA,EAAa,GAAG,SAAS,aAAA;AAAc,GACzE,CACG,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,IAAA,IAAI,MAAA,EAAQ,WAAW,GAAA,EAAK;AAC1B,MAAA,OAAA,CAAQ,GAAA,CAAI,SAAS,OAAO,CAAA;AAC5B,MAAA,wBAAA,CAAyB,KAAK,aAAA,EAAe;AAAA,QAC3C,OAAA;AAAA,QACA,WAAA,EAAa;AAAA,OACd,CAAA;AAAA,KACH,MAAO;AACL,MAAA,wBAAA,CAAyB,KAAK,aAAA,EAAe;AAAA,QAC3C,OAAA;AAAA,QACA,WAAA,EAAa;AAAA,OACd,CAAA;AAAA;AAEH,IAAA,IAAI;AACF,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,eAAA,CAAgB,MAAM;AACpB,UAAA,IAAI,MAAA,EAAQ,MAAM,KAAA,EAAO;AACvB,YAAA,gBAAA;AAAA,cACE,EAAE,OAAA,EAAQ;AAAA,cACT,QAA6C,IAAA,EAC1C;AAAA,aACN;AAAA;AAEF,UAAA,IAAI,MAAA,EAAQ,MAAM,MAAA,EAAQ;AACxB,YAAA,CAAE,EAAC,EAAW,iBAAA;AAAA,cACZ,OAAA;AAAA,cACC,QAA+C,IAAA,EAC5C;AAAA,aACN;AAAA;AAEF,UAAA,IAAI,MAAA,EAAQ,MAAM,WAAA,EAAa;AAC7B,YAAA,mBAAA,CAAoB,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,WAAqB,CAAA;AAAA;AAGlE,UAAA,mBAAA,CAAoB,OAAA,EAAU,MAAA,EAAQ,IAAA,EAAM,KAAA,IAAoB,EAAE,CAAA;AAClE,UAAA,IAAI,MAAA,EAAQ,MAAM,gBAAA,EAAkB;AAClC,YAAA,wBAAA;AAAA,cACE,OAAA;AAAA,cACA,QAAQ,IAAA,EAAM;AAAA,aAChB;AAAA;AAEF,UAAA,OAAA,EAAS,UAAA,GAAa,MAAM,MAAM,CAAA;AAClC,UAAA,mBAAA,CAAoB,IAAA,CAAK,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA;AAAA,SACjD,CAAA;AAAA,OACH;AAAO,QAAA,OAAA,EAAS,UAAA,GAAa,OAAO,IAAI,CAAA;AAAA,aACjC,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA;AACjB,GACD,CAAA,CACA,KAAA,CAAM,CAAC,CAAA,KAAM;AACZ,IAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,IAAA,wBAAA,CAAyB,KAAK,aAAA,EAAe;AAAA,MAC3C,OAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,OAAA,EAAS,UAAA,GAAa,OAAO,IAAI,CAAA;AAAA,GAClC,CAAA;AACL;;;;"}
1
+ {"version":3,"file":"firePanelAction.js","sources":["../../src/actions/firePanelAction.ts"],"sourcesContent":["import { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport {\r\n TActionDispatcherOptions,\r\n TActionResult,\r\n TFooter,\r\n panelActionsEmitter,\r\n} from './usePanelActions';\r\nimport { panelNetworkStateEmitter } from './usePanelNetworkState';\r\nimport { changePanelTitle } from '../panelsUtil';\r\nimport { ucfirst } from '@apia/util';\r\nimport {\r\n setPanelImageAction,\r\n setPanelTitleAction,\r\n setPanelTitleDescritpion,\r\n} from '../panelsUtil/usePanelTitleAction';\r\nimport { startTransition } from 'react';\r\nimport { TPanelIdentifier } from '../eventsController';\r\nimport { changePanelFooter } from '../splash/panels/PanelContext/usePanelFooter';\r\n\r\nexport type TOnSucceed = (hasSucceed: boolean, data: TActionResult) => unknown;\r\n\r\n/**\r\n * **MÉTODO DE USO INTERNO**\r\n *\r\n * LLama al server para ejecutar una acción iniciada en el cliente.\r\n *\r\n * La forma de llamar acciones desde un panel es con el hook usePanelActions.\r\n */\r\nexport function firePanelAction(\r\n panelId: string,\r\n action: string,\r\n parameters?: Record<string, unknown>,\r\n options?: TActionDispatcherOptions,\r\n) {\r\n const postData = { p_action: action, ...parameters };\r\n panelActionsEmitter.emit(panelId, `pre${ucfirst(action)}`, null);\r\n void ApiaApi.post(\r\n makeApiaUrl({\r\n action: 'panelAction',\r\n pnlId: panelId,\r\n }),\r\n { postData, postDataTreatement: 'stringify', ...options?.requestConfig },\r\n )\r\n .then((result) => {\r\n if (result?.status !== 200) {\r\n console.log('ERROR', panelId);\r\n panelNetworkStateEmitter.emit('stateChange', {\r\n panelId,\r\n isConnected: false,\r\n });\r\n } else {\r\n panelNetworkStateEmitter.emit('stateChange', {\r\n panelId,\r\n isConnected: true,\r\n });\r\n }\r\n try {\r\n if (result) {\r\n startTransition(() => {\r\n if (result?.data?.title) {\r\n changePanelTitle(\r\n { panelId } as TPanelIdentifier,\r\n (result as TActionResult<{ title: string }>)?.data\r\n ?.title as string,\r\n );\r\n }\r\n if (result?.data?.footer) {\r\n changePanelFooter(\r\n panelId,\r\n (result as TActionResult<{ footer: TFooter }>)?.data\r\n ?.footer as TFooter,\r\n );\r\n }\r\n if (result?.data?.titleAction) {\r\n setPanelTitleAction(panelId, result?.data?.titleAction as string);\r\n }\r\n\r\n setPanelImageAction(panelId, (result?.data?.image as string) ?? '');\r\n if (result?.data?.titleDescription) {\r\n setPanelTitleDescritpion(\r\n panelId,\r\n result?.data?.titleDescription as string,\r\n );\r\n }\r\n options?.onComplete?.(true, result);\r\n panelActionsEmitter.emit(panelId, action, result);\r\n });\r\n } else options?.onComplete?.(false, null);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })\r\n .catch((e) => {\r\n console.error(e);\r\n panelNetworkStateEmitter.emit('stateChange', {\r\n panelId,\r\n isConnected: false,\r\n });\r\n options?.onComplete?.(false, null);\r\n });\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;AA4BO,SAAS,eAAA,CACd,OAAA,EACA,MAAA,EACA,UAAA,EACA,OAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW,EAAE,QAAA,EAAU,MAAA,EAAQ,GAAG,UAAA,EAAW;AACnD,EAAA,mBAAA,CAAoB,KAAK,OAAA,EAAS,CAAA,GAAA,EAAM,QAAQ,MAAM,CAAC,IAAI,IAAI,CAAA;AAC/D,EAAA,KAAK,OAAA,CAAQ,IAAA;AAAA,IACX,WAAA,CAAY;AAAA,MACV,MAAA,EAAQ,aAAA;AAAA,MACR,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD,EAAE,QAAA,EAAU,kBAAA,EAAoB,WAAA,EAAa,GAAG,SAAS,aAAA;AAAc,GACzE,CACG,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,IAAA,IAAI,MAAA,EAAQ,WAAW,GAAA,EAAK;AAC1B,MAAA,OAAA,CAAQ,GAAA,CAAI,SAAS,OAAO,CAAA;AAC5B,MAAA,wBAAA,CAAyB,KAAK,aAAA,EAAe;AAAA,QAC3C,OAAA;AAAA,QACA,WAAA,EAAa;AAAA,OACd,CAAA;AAAA,KACH,MAAO;AACL,MAAA,wBAAA,CAAyB,KAAK,aAAA,EAAe;AAAA,QAC3C,OAAA;AAAA,QACA,WAAA,EAAa;AAAA,OACd,CAAA;AAAA;AAEH,IAAA,IAAI;AACF,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,eAAA,CAAgB,MAAM;AACpB,UAAA,IAAI,MAAA,EAAQ,MAAM,KAAA,EAAO;AACvB,YAAA,gBAAA;AAAA,cACE,EAAE,OAAA,EAAQ;AAAA,cACT,QAA6C,IAAA,EAC1C;AAAA,aACN;AAAA;AAEF,UAAA,IAAI,MAAA,EAAQ,MAAM,MAAA,EAAQ;AACxB,YAAA,iBAAA;AAAA,cACE,OAAA;AAAA,cACC,QAA+C,IAAA,EAC5C;AAAA,aACN;AAAA;AAEF,UAAA,IAAI,MAAA,EAAQ,MAAM,WAAA,EAAa;AAC7B,YAAA,mBAAA,CAAoB,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,WAAqB,CAAA;AAAA;AAGlE,UAAA,mBAAA,CAAoB,OAAA,EAAU,MAAA,EAAQ,IAAA,EAAM,KAAA,IAAoB,EAAE,CAAA;AAClE,UAAA,IAAI,MAAA,EAAQ,MAAM,gBAAA,EAAkB;AAClC,YAAA,wBAAA;AAAA,cACE,OAAA;AAAA,cACA,QAAQ,IAAA,EAAM;AAAA,aAChB;AAAA;AAEF,UAAA,OAAA,EAAS,UAAA,GAAa,MAAM,MAAM,CAAA;AAClC,UAAA,mBAAA,CAAoB,IAAA,CAAK,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA;AAAA,SACjD,CAAA;AAAA,OACH;AAAO,QAAA,OAAA,EAAS,UAAA,GAAa,OAAO,IAAI,CAAA;AAAA,aACjC,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA;AACjB,GACD,CAAA,CACA,KAAA,CAAM,CAAC,CAAA,KAAM;AACZ,IAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,IAAA,wBAAA,CAAyB,KAAK,aAAA,EAAe;AAAA,MAC3C,OAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,OAAA,EAAS,UAAA,GAAa,OAAO,IAAI,CAAA;AAAA,GAClC,CAAA;AACL;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { TBasicAction } from '@apia/util';
2
2
 
3
3
  declare const useActionEventHandlers: () => {
4
- onClick: (ev: React.MouseEvent<HTMLElement, MouseEvent>) => (action: TBasicAction) => void;
5
- onDoubleClick: (ev: React.MouseEvent<HTMLElement, MouseEvent>) => (action: TBasicAction) => void;
6
- onKeyDown: (ev: React.KeyboardEvent<HTMLElement>) => (action: TBasicAction) => void;
4
+ onClick: (ev: React.MouseEvent<Element>) => (action: TBasicAction) => void;
5
+ onDoubleClick: (ev: React.MouseEvent<Element>) => (action: TBasicAction) => void;
6
+ onKeyDown: (ev: React.KeyboardEvent<Element>) => (action: TBasicAction) => void;
7
7
  };
8
8
 
9
9
  export { useActionEventHandlers };
@@ -1 +1 @@
1
- {"version":3,"file":"useActionEventHandlers.js","sources":["../../src/actions/useActionEventHandlers.ts"],"sourcesContent":["import { useCallback } from 'react';\r\nimport { usePanelIdentity } from '../common';\r\nimport { handleAction, TBasicAction } from '@apia/util';\r\nimport { ApiaApi } from '@apia/api';\r\nimport { firePanelAction } from './firePanelAction';\r\nimport { eventsController } from '../eventsController';\r\n\r\ninterface ITabsController {\r\n openTabByUrl(title: string, url: string): void;\r\n}\r\n\r\nexport const useActionEventHandlers = () => {\r\n const identifier = usePanelIdentity();\r\n\r\n const handler = useCallback(\r\n (\r\n ev:\r\n | React.MouseEvent<HTMLElement, MouseEvent>\r\n | React.KeyboardEvent<HTMLElement>,\r\n action: TBasicAction,\r\n ) =>\r\n handleAction(\r\n {\r\n callAjaxUrl: ({ url }) => {\r\n ApiaApi.post(url, { handleLoad: true });\r\n },\r\n openTab: ({ url, title }) => {\r\n (\r\n window.top as unknown as { tabsController: ITabsController }\r\n )?.tabsController.openTabByUrl(title, url);\r\n },\r\n fireAction(action, parameters) {\r\n firePanelAction(identifier.panelId, action, parameters, {\r\n requestConfig: { handleLoad: true },\r\n });\r\n },\r\n fireEvent(eventType, payload) {\r\n eventsController.fireEvent(identifier, eventType, payload);\r\n },\r\n },\r\n ev,\r\n action,\r\n ),\r\n [identifier],\r\n );\r\n\r\n const onClick = useCallback(\r\n (ev: React.MouseEvent<HTMLElement, MouseEvent>) => {\r\n return (action: TBasicAction) => {\r\n if (action.actionSource !== 'CLICK') return;\r\n handler(ev, action);\r\n };\r\n },\r\n [handler],\r\n );\r\n\r\n const onDoubleClick = useCallback(\r\n (ev: React.MouseEvent<HTMLElement, MouseEvent>) => {\r\n return (action: TBasicAction) => {\r\n if (action.actionSource !== 'DOUBLE_CLICK') return;\r\n handler(ev, action);\r\n };\r\n },\r\n [handler],\r\n );\r\n\r\n const onKeyDown = useCallback(\r\n (ev: React.KeyboardEvent<HTMLElement>) => {\r\n return (action: TBasicAction) => {\r\n if (ev.code !== 'Enter') return;\r\n handler(ev, action);\r\n };\r\n },\r\n [handler],\r\n );\r\n\r\n return { onClick, onDoubleClick, onKeyDown };\r\n};\r\n"],"names":["action"],"mappings":";;;;;;;AAWO,MAAM,yBAAyB,MAAM;AAC1C,EAAA,MAAM,aAAa,gBAAA,EAAiB;AAEpC,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CACE,IAGA,MAAA,KAEA,YAAA;AAAA,MACE;AAAA,QACE,WAAA,EAAa,CAAC,EAAE,GAAA,EAAI,KAAM;AACxB,UAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,EAAK,EAAE,UAAA,EAAY,MAAM,CAAA;AAAA,SACxC;AAAA,QACA,OAAA,EAAS,CAAC,EAAE,GAAA,EAAK,OAAM,KAAM;AAC3B,UACE,MAAA,CAAO,GAAA,EACN,cAAA,CAAe,YAAA,CAAa,OAAO,GAAG,CAAA;AAAA,SAC3C;AAAA,QACA,UAAA,CAAWA,SAAQ,UAAA,EAAY;AAC7B,UAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAASA,OAAAA,EAAQ,UAAA,EAAY;AAAA,YACtD,aAAA,EAAe,EAAE,UAAA,EAAY,IAAA;AAAK,WACnC,CAAA;AAAA,SACH;AAAA,QACA,SAAA,CAAU,WAAW,OAAA,EAAS;AAC5B,UAAA,gBAAA,CAAiB,SAAA,CAAU,UAAA,EAAY,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3D,OACF;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACF,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CAAC,EAAA,KAAkD;AACjD,MAAA,OAAO,CAAC,MAAA,KAAyB;AAC/B,QAAA,IAAI,OAAO,YAAA,KAAiB,OAAA;AAAS,UAAA;AACrC,QAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,EAAA,KAAkD;AACjD,MAAA,OAAO,CAAC,MAAA,KAAyB;AAC/B,QAAA,IAAI,OAAO,YAAA,KAAiB,cAAA;AAAgB,UAAA;AAC5C,QAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,EAAA,KAAyC;AACxC,MAAA,OAAO,CAAC,MAAA,KAAyB;AAC/B,QAAA,IAAI,GAAG,IAAA,KAAS,OAAA;AAAS,UAAA;AACzB,QAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,OAAO,EAAE,OAAA,EAAS,aAAA,EAAe,SAAA,EAAU;AAC7C;;;;"}
1
+ {"version":3,"file":"useActionEventHandlers.js","sources":["../../src/actions/useActionEventHandlers.ts"],"sourcesContent":["import { useCallback } from 'react';\r\nimport { usePanelIdentity } from '../common';\r\nimport { handleAction, TBasicAction } from '@apia/util';\r\nimport { ApiaApi } from '@apia/api';\r\nimport { firePanelAction } from './firePanelAction';\r\nimport { eventsController } from '../eventsController';\r\n\r\ninterface ITabsController {\r\n openTabByUrl(title: string, url: string): void;\r\n}\r\n\r\nexport const useActionEventHandlers = () => {\r\n const identifier = usePanelIdentity();\r\n\r\n const handler = useCallback(\r\n (\r\n ev: React.MouseEvent<Element> | React.KeyboardEvent<Element>,\r\n action: TBasicAction,\r\n ) =>\r\n handleAction(\r\n {\r\n callAjaxUrl: ({ url }) => {\r\n ApiaApi.post(url, { handleLoad: true });\r\n },\r\n openTab: ({ url, title }) => {\r\n (\r\n window.top as unknown as { tabsController: ITabsController }\r\n )?.tabsController.openTabByUrl(title, url);\r\n },\r\n fireAction(action, parameters) {\r\n firePanelAction(identifier.panelId, action, parameters, {\r\n requestConfig: { handleLoad: true },\r\n });\r\n },\r\n fireEvent(eventType, payload) {\r\n eventsController.fireEvent(identifier, eventType, payload);\r\n },\r\n },\r\n ev,\r\n action,\r\n ),\r\n [identifier],\r\n );\r\n\r\n const onClick = useCallback(\r\n (ev: React.MouseEvent<Element>) => {\r\n return (action: TBasicAction) => {\r\n if (action.actionSource !== 'CLICK') return;\r\n handler(ev, action);\r\n };\r\n },\r\n [handler],\r\n );\r\n\r\n const onDoubleClick = useCallback(\r\n (ev: React.MouseEvent<Element>) => {\r\n return (action: TBasicAction) => {\r\n if (action.actionSource !== 'DOUBLE_CLICK') return;\r\n handler(ev, action);\r\n };\r\n },\r\n [handler],\r\n );\r\n\r\n const onKeyDown = useCallback(\r\n (ev: React.KeyboardEvent<Element>) => {\r\n return (action: TBasicAction) => {\r\n if (ev.code !== 'Enter') return;\r\n handler(ev, action);\r\n };\r\n },\r\n [handler],\r\n );\r\n\r\n return { onClick, onDoubleClick, onKeyDown };\r\n};\r\n"],"names":["action"],"mappings":";;;;;;;AAWO,MAAM,yBAAyB,MAAM;AAC1C,EAAA,MAAM,aAAa,gBAAA,EAAiB;AAEpC,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CACE,IACA,MAAA,KAEA,YAAA;AAAA,MACE;AAAA,QACE,WAAA,EAAa,CAAC,EAAE,GAAA,EAAI,KAAM;AACxB,UAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,EAAK,EAAE,UAAA,EAAY,MAAM,CAAA;AAAA,SACxC;AAAA,QACA,OAAA,EAAS,CAAC,EAAE,GAAA,EAAK,OAAM,KAAM;AAC3B,UACE,MAAA,CAAO,GAAA,EACN,cAAA,CAAe,YAAA,CAAa,OAAO,GAAG,CAAA;AAAA,SAC3C;AAAA,QACA,UAAA,CAAWA,SAAQ,UAAA,EAAY;AAC7B,UAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAASA,OAAAA,EAAQ,UAAA,EAAY;AAAA,YACtD,aAAA,EAAe,EAAE,UAAA,EAAY,IAAA;AAAK,WACnC,CAAA;AAAA,SACH;AAAA,QACA,SAAA,CAAU,WAAW,OAAA,EAAS;AAC5B,UAAA,gBAAA,CAAiB,SAAA,CAAU,UAAA,EAAY,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3D,OACF;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACF,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CAAC,EAAA,KAAkC;AACjC,MAAA,OAAO,CAAC,MAAA,KAAyB;AAC/B,QAAA,IAAI,OAAO,YAAA,KAAiB,OAAA;AAAS,UAAA;AACrC,QAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,EAAA,KAAkC;AACjC,MAAA,OAAO,CAAC,MAAA,KAAyB;AAC/B,QAAA,IAAI,OAAO,YAAA,KAAiB,cAAA;AAAgB,UAAA;AAC5C,QAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,EAAA,KAAqC;AACpC,MAAA,OAAO,CAAC,MAAA,KAAyB;AAC/B,QAAA,IAAI,GAAG,IAAA,KAAS,OAAA;AAAS,UAAA;AACzB,QAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,OAAO,EAAE,OAAA,EAAS,aAAA,EAAe,SAAA,EAAU;AAC7C;;;;"}
@@ -1,7 +1,18 @@
1
1
  import { useState, useCallback } from 'react';
2
+ import { ApiaApi } from '@apia/api';
3
+ import { handleAction } from '@apia/util';
4
+ import { eventsController } from '../../../eventsController/eventsController.js';
2
5
  import { usePanelOnEvent } from '../../../eventsController/usePanelOnEvent.js';
6
+ import { firePanelAction } from '../../../actions/firePanelAction.js';
3
7
  import { usePanelIdentity } from '../../../common/usePanelIdentity.js';
4
8
 
9
+ function changePanelFooter(panelId, footer) {
10
+ eventsController.fireEvent(
11
+ { panelId },
12
+ "changeFooter",
13
+ footer
14
+ );
15
+ }
5
16
  function usePanelFooter({
6
17
  initialData
7
18
  }) {
@@ -9,8 +20,33 @@ function usePanelFooter({
9
20
  const [footer, setFooter] = useState(
10
21
  initialData?.footer?.footer?.text || initialData?.footer?.footer?.force ? initialData?.footer?.footer : null
11
22
  );
12
- const handleFooterClick = useCallback((_) => {
13
- }, []);
23
+ const handleFooterClick = useCallback(
24
+ (ev) => {
25
+ if (!footer)
26
+ return;
27
+ handleAction(
28
+ {
29
+ callAjaxUrl: ({ url }) => {
30
+ void ApiaApi.post(url, { handleLoad: true });
31
+ },
32
+ openTab: ({ url, title }) => {
33
+ window.top?.tabsController.openTabByUrl(title, url);
34
+ },
35
+ fireAction(action, parameters) {
36
+ firePanelAction(identifier.panelId, action, parameters, {
37
+ requestConfig: { handleLoad: true }
38
+ });
39
+ },
40
+ fireEvent(eventType, payload) {
41
+ eventsController.fireEvent(identifier, eventType, payload);
42
+ }
43
+ },
44
+ ev,
45
+ footer
46
+ );
47
+ },
48
+ [footer, identifier]
49
+ );
14
50
  usePanelOnEvent(
15
51
  { eventType: "changeFooter", panelId: identifier.panelId },
16
52
  (ev) => {
@@ -23,5 +59,5 @@ function usePanelFooter({
23
59
  return { footer, handleFooterClick };
24
60
  }
25
61
 
26
- export { usePanelFooter };
62
+ export { changePanelFooter, usePanelFooter };
27
63
  //# sourceMappingURL=usePanelFooter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePanelFooter.js","sources":["../../../../src/splash/panels/PanelContext/usePanelFooter.tsx"],"sourcesContent":["import {\r\n KeyboardEvent,\r\n MouseEvent,\r\n ReactNode,\r\n useCallback,\r\n useState,\r\n} from 'react';\r\nimport {\r\n TPanelEvent,\r\n TPanelIdentifier,\r\n eventsController,\r\n usePanelOnEvent,\r\n} from '../../../eventsController';\r\nimport { TFooter } from '../../../actions/usePanelActions';\r\nimport { usePanelIdentity } from '../../../common';\r\n\r\nexport function changePanelFooter(panelId: string, footer: TFooter | null) {\r\n eventsController.fireEvent(\r\n { panelId } as TPanelIdentifier,\r\n 'changeFooter',\r\n footer,\r\n );\r\n}\r\n\r\nexport type TUsePanelFooter = {\r\n footerContent?: ReactNode;\r\n footer: TFooter | null;\r\n handleFooterClick: (ev: MouseEvent | KeyboardEvent) => void;\r\n};\r\n\r\nexport function usePanelFooter({\r\n initialData,\r\n}: {\r\n initialData: unknown;\r\n}): TUsePanelFooter {\r\n const identifier = usePanelIdentity();\r\n\r\n const [footer, setFooter] = useState<TFooter | null>(\r\n (initialData as { footer: { footer: TFooter } })?.footer?.footer?.text ||\r\n (initialData as { footer: { footer: TFooter } })?.footer?.footer?.force\r\n ? (initialData as { footer: { footer: TFooter } })?.footer?.footer\r\n : null,\r\n );\r\n\r\n const handleFooterClick = useCallback((_: MouseEvent | KeyboardEvent) => {\r\n // if (footer) (identifier, ev, footer);\r\n }, []);\r\n\r\n usePanelOnEvent(\r\n { eventType: 'changeFooter', panelId: identifier.panelId },\r\n (ev: TPanelEvent<TFooter>) => {\r\n if (!ev.payload.text && !ev.payload.force) setFooter(null);\r\n else setFooter(ev.payload);\r\n },\r\n );\r\n\r\n return { footer, handleFooterClick };\r\n}\r\n"],"names":[],"mappings":";;;;AA8BO,SAAS,cAAA,CAAe;AAAA,EAC7B;AACF,CAAA,EAEoB;AAClB,EAAA,MAAM,aAAa,gBAAA,EAAiB;AAEpC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,QAAA;AAAA,IACzB,WAAA,EAAiD,MAAA,EAAQ,MAAA,EAAQ,IAAA,IAC/D,WAAA,EAAiD,QAAQ,MAAA,EAAQ,KAAA,GAC/D,WAAA,EAAiD,MAAA,EAAQ,MAAA,GAC1D;AAAA,GACN;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,CAAC,CAAA,KAAkC;AAAA,GAEzE,EAAG,EAAE,CAAA;AAEL,EAAA,eAAA;AAAA,IACE,EAAE,SAAA,EAAW,cAAA,EAAgB,OAAA,EAAS,WAAW,OAAA,EAAQ;AAAA,IACzD,CAAC,EAAA,KAA6B;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,OAAA,CAAQ,IAAA,IAAQ,CAAC,GAAG,OAAA,CAAQ,KAAA;AAAO,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AACpD,QAAA,SAAA,CAAU,GAAG,OAAO,CAAA;AAAA;AAC3B,GACF;AAEA,EAAA,OAAO,EAAE,QAAQ,iBAAA,EAAkB;AACrC;;;;"}
1
+ {"version":3,"file":"usePanelFooter.js","sources":["../../../../src/splash/panels/PanelContext/usePanelFooter.tsx"],"sourcesContent":["import {\r\n KeyboardEvent,\r\n MouseEvent,\r\n ReactNode,\r\n useCallback,\r\n useState,\r\n} from 'react';\r\nimport { ApiaApi } from '@apia/api';\r\nimport { handleAction } from '@apia/util';\r\nimport {\r\n TPanelEvent,\r\n TPanelIdentifier,\r\n eventsController,\r\n usePanelOnEvent,\r\n} from '../../../eventsController';\r\nimport { firePanelAction } from '../../../actions/firePanelAction';\r\nimport { TFooter } from '../../../actions/usePanelActions';\r\nimport { usePanelIdentity } from '../../../common';\r\n\r\ninterface ITabsController {\r\n openTabByUrl(title: string, url: string): void;\r\n}\r\n\r\nexport function changePanelFooter(panelId: string, footer: TFooter | null) {\r\n eventsController.fireEvent(\r\n { panelId } as TPanelIdentifier,\r\n 'changeFooter',\r\n footer,\r\n );\r\n}\r\n\r\nexport type TUsePanelFooter = {\r\n footerContent?: ReactNode;\r\n footer: TFooter | null;\r\n handleFooterClick: (ev: MouseEvent | KeyboardEvent) => void;\r\n};\r\n\r\nexport function usePanelFooter({\r\n initialData,\r\n}: {\r\n initialData: unknown;\r\n}): TUsePanelFooter {\r\n const identifier = usePanelIdentity();\r\n\r\n const [footer, setFooter] = useState<TFooter | null>(\r\n (initialData as { footer: { footer: TFooter } })?.footer?.footer?.text ||\r\n (initialData as { footer: { footer: TFooter } })?.footer?.footer?.force\r\n ? (initialData as { footer: { footer: TFooter } })?.footer?.footer\r\n : null,\r\n );\r\n\r\n const handleFooterClick = useCallback(\r\n (ev: MouseEvent | KeyboardEvent) => {\r\n if (!footer) return;\r\n\r\n handleAction(\r\n {\r\n callAjaxUrl: ({ url }) => {\r\n void ApiaApi.post(url, { handleLoad: true });\r\n },\r\n openTab: ({ url, title }) => {\r\n (\r\n window.top as unknown as { tabsController: ITabsController }\r\n )?.tabsController.openTabByUrl(title, url);\r\n },\r\n fireAction(action, parameters) {\r\n firePanelAction(identifier.panelId, action, parameters, {\r\n requestConfig: { handleLoad: true },\r\n });\r\n },\r\n fireEvent(eventType, payload) {\r\n eventsController.fireEvent(identifier, eventType, payload);\r\n },\r\n },\r\n ev,\r\n footer,\r\n );\r\n },\r\n [footer, identifier],\r\n );\r\n\r\n usePanelOnEvent(\r\n { eventType: 'changeFooter', panelId: identifier.panelId },\r\n (ev: TPanelEvent<TFooter>) => {\r\n if (!ev.payload.text && !ev.payload.force) setFooter(null);\r\n else setFooter(ev.payload);\r\n },\r\n );\r\n\r\n return { footer, handleFooterClick };\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAuBO,SAAS,iBAAA,CAAkB,SAAiB,MAAA,EAAwB;AACzE,EAAA,gBAAA,CAAiB,SAAA;AAAA,IACf,EAAE,OAAA,EAAQ;AAAA,IACV,cAAA;AAAA,IACA;AAAA,GACF;AACF;AAQO,SAAS,cAAA,CAAe;AAAA,EAC7B;AACF,CAAA,EAEoB;AAClB,EAAA,MAAM,aAAa,gBAAA,EAAiB;AAEpC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,QAAA;AAAA,IACzB,WAAA,EAAiD,MAAA,EAAQ,MAAA,EAAQ,IAAA,IAC/D,WAAA,EAAiD,QAAQ,MAAA,EAAQ,KAAA,GAC/D,WAAA,EAAiD,MAAA,EAAQ,MAAA,GAC1D;AAAA,GACN;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,EAAA,KAAmC;AAClC,MAAA,IAAI,CAAC,MAAA;AAAQ,QAAA;AAEb,MAAA,YAAA;AAAA,QACE;AAAA,UACE,WAAA,EAAa,CAAC,EAAE,GAAA,EAAI,KAAM;AACxB,YAAA,KAAK,QAAQ,IAAA,CAAK,GAAA,EAAK,EAAE,UAAA,EAAY,MAAM,CAAA;AAAA,WAC7C;AAAA,UACA,OAAA,EAAS,CAAC,EAAE,GAAA,EAAK,OAAM,KAAM;AAC3B,YACE,MAAA,CAAO,GAAA,EACN,cAAA,CAAe,YAAA,CAAa,OAAO,GAAG,CAAA;AAAA,WAC3C;AAAA,UACA,UAAA,CAAW,QAAQ,UAAA,EAAY;AAC7B,YAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY;AAAA,cACtD,aAAA,EAAe,EAAE,UAAA,EAAY,IAAA;AAAK,aACnC,CAAA;AAAA,WACH;AAAA,UACA,SAAA,CAAU,WAAW,OAAA,EAAS;AAC5B,YAAA,gBAAA,CAAiB,SAAA,CAAU,UAAA,EAAY,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3D,SACF;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,QAAQ,UAAU;AAAA,GACrB;AAEA,EAAA,eAAA;AAAA,IACE,EAAE,SAAA,EAAW,cAAA,EAAgB,OAAA,EAAS,WAAW,OAAA,EAAQ;AAAA,IACzD,CAAC,EAAA,KAA6B;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,OAAA,CAAQ,IAAA,IAAQ,CAAC,GAAG,OAAA,CAAQ,KAAA;AAAO,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AACpD,QAAA,SAAA,CAAU,GAAG,OAAO,CAAA;AAAA;AAC3B,GACF;AAEA,EAAA,OAAO,EAAE,QAAQ,iBAAA,EAAkB;AACrC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/dashboard-controller",
3
- "version": "5.0.1",
3
+ "version": "5.0.6",
4
4
  "sideEffects": false,
5
5
  "author": "Alexis Leite <alexisleite@live.com>",
6
6
  "main": "dist/index.js",
@@ -15,12 +15,12 @@
15
15
  "libWatchForDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:dashboards"
16
16
  },
17
17
  "dependencies": {
18
- "@apia/api": "^5.0.1",
19
- "@apia/components": "^5.0.1",
20
- "@apia/icons": "^5.0.1",
21
- "@apia/store": "^5.0.1",
22
- "@apia/theme": "^5.0.1",
23
- "@apia/util": "^5.0.1",
18
+ "@apia/api": "^5.0.6",
19
+ "@apia/components": "^5.0.6",
20
+ "@apia/icons": "^5.0.6",
21
+ "@apia/store": "^5.0.6",
22
+ "@apia/theme": "^5.0.6",
23
+ "@apia/util": "^5.0.6",
24
24
  "@reduxjs/toolkit": "^1.9.3",
25
25
  "react-animate-height": "^3.2.2",
26
26
  "react-redux": "^8.0.5"
@@ -40,5 +40,5 @@
40
40
  "access": "public",
41
41
  "registry": "https://registry.npmjs.org/"
42
42
  },
43
- "gitHead": "6d9a616690ac8454136310af79a721a8ccd6588d"
43
+ "gitHead": "09595104ae2cdb68bdf406ebd5b53b2ed0b54ec0"
44
44
  }