@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.
- package/dist/actions/firePanelAction.js +2 -1
- package/dist/actions/firePanelAction.js.map +1 -1
- package/dist/actions/useActionEventHandlers.d.ts +3 -3
- package/dist/actions/useActionEventHandlers.js.map +1 -1
- package/dist/splash/panels/PanelContext/usePanelFooter.js +39 -3
- package/dist/splash/panels/PanelContext/usePanelFooter.js.map +1 -1
- package/package.json +8 -8
|
@@ -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
|
-
|
|
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
|
|
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<
|
|
5
|
-
onDoubleClick: (ev: React.MouseEvent<
|
|
6
|
-
onKeyDown: (ev: React.KeyboardEvent<
|
|
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
|
|
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((
|
|
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.
|
|
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.
|
|
19
|
-
"@apia/components": "^5.0.
|
|
20
|
-
"@apia/icons": "^5.0.
|
|
21
|
-
"@apia/store": "^5.0.
|
|
22
|
-
"@apia/theme": "^5.0.
|
|
23
|
-
"@apia/util": "^5.0.
|
|
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": "
|
|
43
|
+
"gitHead": "09595104ae2cdb68bdf406ebd5b53b2ed0b54ec0"
|
|
44
44
|
}
|