UNPKG

@luigi-project/container

Version:

Javascript library enabling creation of microfrontends

387 lines (385 loc) • 12.7 kB
/** * @namespace Events * @description Namespace for Luigi events. */ /** * Event fired when the micro frontend sends a custom message. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object} * @memberof Events * @property {object} data - event data * @property {string} id - event ID * @example * { * data: {}, * id: 'some-id' * } */ const CUSTOM_MESSAGE = 'custom-message'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const GET_CONTEXT_REQUEST = 'get-context-request'; /** * Event fired when a navigation has been requested by the micro frontend. <br><br> * Payload: [NavigationRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {NavigationRequestPayload} * @memberof Events * @example * { * fromClosestContext: false, * fromContext: null, * fromParent: true, * fromVirtualTreeRoot: false, * link: '/test/route', * nodeParams: {} * } */ const NAVIGATION_REQUEST = 'navigation-request'; /** * Event fired when the micro frontend requests to show an alert. <br> * Read more about `showAlert` params [here](https://docs.luigi-project.io/docs/luigi-core-api?section=showalert). <br><br> * Payload: [AlertRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {AlertRequestPayload} * @memberof Events * @example * { * text: 'Custom alert message', * type: 'info', * links: { * goToHome: { text: 'Homepage', url: '/overview' }, * goToOtherProject: { text: 'Other project', url: '/projects/pr2' }, * relativePath: { text: 'Hide side nav', url: 'hideSideNav' }, * neverShowItAgain: { text: 'Never show it again', dismissKey: 'neverShowItAgain' } * }, * closeAfter: 3000 * } */ const ALERT_REQUEST = 'show-alert-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const ALERT_CLOSED = 'close-alert-request'; /** * Event fired when the micro frontend has been initialized. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const INITIALIZED = 'initialized'; /** * Event fired when the micro frontend requests the addition of search parameters to the URL. <br><br> * Payload: [ParamsRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {ParamsRequestPayload} * @memberof Events * @example * { * data: {}, * keepBrowserHistory: false * } */ const ADD_SEARCH_PARAMS_REQUEST = 'add-search-params-request'; /** * Event fired when the micro frontend requests the addition of node parameters to the URL. <br><br> * Payload: [ParamsRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {ParamsRequestPayload} * @memberof Events * @example * { * data: {}, * keepBrowserHistory: false * } */ const ADD_NODE_PARAMS_REQUEST = 'add-node-params-request'; /** * Event fired when the micro frontend requests to show a confirmation modal. <br> * Read more about `showConfirmationModal` params [here](https://docs.luigi-project.io/docs/luigi-core-api?section=showconfirmationmodal). <br><br> * Payload: [ConfirmationModalRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {ConfirmationModalRequestPayload} * @memberof Events * @example * { * header: 'Confirmation', * body: 'Are you sure you want to do this?', * buttonConfirm: 'Yes', * buttonDismiss: 'No' * } */ const SHOW_CONFIRMATION_MODAL_REQUEST = 'show-confirmation-modal-request'; /** * Event fired when the micro frontend requests to show a loading indicator. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const SHOW_LOADING_INDICATOR_REQUEST = 'show-loading-indicator-request'; /** * Event fired when the micro frontend requests to hide the loading indicator. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const HIDE_LOADING_INDICATOR_REQUEST = 'hide-loading-indicator-request'; /** * Event fired when the micro frontend requests to set the current locale. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object.<string, string>} * @memberof Events * @example * { * currentLocale: 'en' * } */ const SET_CURRENT_LOCALE_REQUEST = 'set-current-locale-request'; /** * Event fired when the micro frontend requests to modify the local storage. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object.<string, string>} * @memberof Events * @example * { * key: 'luigi-version', * value: '2.21.0' * } */ const LOCAL_STORAGE_SET_REQUEST = 'set-storage-request'; /** * Event fired when the micro frontend requests to handle errors that might happen during the runtime of the micro frontend. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const RUNTIME_ERROR_HANDLING_REQUEST = 'runtime-error-handling-request'; /** * Event fired when the micro frontend requests to set the anchor of the URL. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) * @type {String} * @memberof Events * @example 'some-anchor' */ const SET_ANCHOR_LINK_REQUEST = 'set-anchor-request'; /** * Event fired when the micro frontend requests to set third-party cookies. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const SET_THIRD_PARTY_COOKIES_REQUEST = 'set-third-party-cookies-request'; /** * Event left due to historical reasons - use 'GO_BACK_REQUEST' instead. * @deprecated * @ignore */ const BACK_NAVIGATION_REQUEST = 'navigate-back-request'; /** * Event fired when the micro frontend requests the current app route. <br><br> * Payload: [CurrentRouteRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {CurrentRouteRequestPayload} * @memberof Events * @example * { * fromClosestContext: false, * fromContext: null, * fromParent: true, * fromVirtualTreeRoot: false, * nodeParams: {} * } */ const GET_CURRENT_ROUTE_REQUEST = 'get-current-route-request'; /** * Event fired to report that the micro frontend's navigation has completed. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const NAVIGATION_COMPLETED_REPORT = 'report-navigation-completed-request'; /** * Event fired when the micro frontend requests to update the modal path parameters. <br><br> * Payload: [ModalPathDataRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {ModalPathDataRequestPayload} * @memberof Events * @example * { * fromClosestContext: false, * fromContext: null, * fromParent: true, * fromVirtualTreeRoot: false, * history: true, * link: '/test/route', * modal: { title: 'Some modal' }, * nodeParams: {} * } */ const UPDATE_MODAL_PATH_DATA_REQUEST = 'update-modal-path-data-request'; /** * Event fired when the micro frontend requests to update the modal settings. <br> * Read more about `updateModalSettings` params [here](https://docs.luigi-project.io/docs/luigi-client-api?section=updatemodalsettings). <br><br> * Payload: [ModalSettingsRequestPayload](https://github.com/luigi-project/luigi/blob/main/container/typings/constants/event-payloads.ts) * @type {ModalSettingsRequestPayload} * @memberof Events * @example * { * addHistoryEntry: true, * updatedModalSettings: {} * } */ const UPDATE_MODAL_SETTINGS_REQUEST = 'update-modal-settings-request'; /** * Event fired when the micro frontend requests to check the validity of a path. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object.<string, string>} * @memberof Events * @example * { * link: '/test/route' * } */ const CHECK_PATH_EXISTS_REQUEST = 'check-path-exists-request'; /** * Event fired when the micro frontend requests to set the 'dirty status' which, for example, avoids closing when there are any unsaved changes. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object.<string, boolean>} * @memberof Events * @example * { * dirty: true * } */ const SET_DIRTY_STATUS_REQUEST = 'set-dirty-status-request'; /** * Event fired when the micro frontend requests to set the view group data. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object.<string, unknown>} * @memberof Events * @example * { * vg: 'some data' * } */ const SET_VIEW_GROUP_DATA_REQUEST = 'set-viewgroup-data-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const SET_DOCUMENT_TITLE_REQUEST = 'set-document-title-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const OPEN_USER_SETTINGS_REQUEST = 'open-user-settings-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const CLOSE_USER_SETTINGS_REQUEST = 'close-user-settings-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const COLLAPSE_LEFT_NAV_REQUEST = 'collapse-leftnav-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const UPDATE_TOP_NAVIGATION_REQUEST = 'update-top-navigation-request'; /** * Event left due to historical reasons - use 'CHECK_PATH_EXISTS_REQUEST' instead. * @deprecated * @ignore */ const PATH_EXISTS_REQUEST = 'path-exists-request'; /** * Event fired when the micro frontend requests to navigate back. <br><br> * Payload: [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * @type {Object.<string, unknown>} * @memberof Events * @example * { * ctx: 'some context' * } */ const GO_BACK_REQUEST = 'go-back-request'; /** * Event left due to historical reasons - do not use. * @deprecated * @ignore */ const HAS_BACK_REQUEST = 'has-back-request'; /** * Event fired when the micro frontend requests to display the backdrop. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const ADD_BACKDROP_REQUEST = 'add-backdrop-request'; /** * Event fired when the micro frontend requests to remove the backdrop. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const REMOVE_BACKDROP_REQUEST = 'remove-backdrop-request'; /** * Event fired when the micro frontend requests to close the current modal. * @type {unspecified} (type is not relevant in this case) * @memberof Events */ const CLOSE_CURRENT_MODAL_REQUEST = 'close-current-modal-request'; /* eslint-disable @typescript-eslint/no-unsafe-function-type */ class LuigiEvent extends Event { constructor(type, data, payload, callback) { super(type); this.detail = data; this.payload = payload || data || {}; this.callbackFn = callback; } callback(data) { if (this.callbackFn) { // @ts-ignore this.callbackFn(data); } } } /** * @exports Events */ // @ts-ignore const Events = { ADD_BACKDROP_REQUEST, ADD_NODE_PARAMS_REQUEST, ADD_SEARCH_PARAMS_REQUEST, ALERT_CLOSED, ALERT_REQUEST, BACK_NAVIGATION_REQUEST, CHECK_PATH_EXISTS_REQUEST, CLOSE_CURRENT_MODAL_REQUEST, CLOSE_USER_SETTINGS_REQUEST, COLLAPSE_LEFT_NAV_REQUEST, CUSTOM_MESSAGE, GET_CONTEXT_REQUEST, GET_CURRENT_ROUTE_REQUEST, GO_BACK_REQUEST, HAS_BACK_REQUEST, HIDE_LOADING_INDICATOR_REQUEST, INITIALIZED, LOCAL_STORAGE_SET_REQUEST, NAVIGATION_COMPLETED_REPORT, NAVIGATION_REQUEST, OPEN_USER_SETTINGS_REQUEST, PATH_EXISTS_REQUEST, REMOVE_BACKDROP_REQUEST, RUNTIME_ERROR_HANDLING_REQUEST, SET_ANCHOR_LINK_REQUEST, SET_CURRENT_LOCALE_REQUEST, SET_DIRTY_STATUS_REQUEST, SET_DOCUMENT_TITLE_REQUEST, SET_THIRD_PARTY_COOKIES_REQUEST, SET_VIEW_GROUP_DATA_REQUEST, SHOW_CONFIRMATION_MODAL_REQUEST, SHOW_LOADING_INDICATOR_REQUEST, UPDATE_MODAL_PATH_DATA_REQUEST, UPDATE_MODAL_SETTINGS_REQUEST, UPDATE_TOP_NAVIGATION_REQUEST }; export { LuigiEvent, Events as LuigiEvents };