From dc7a4753cb606185ea413a78442c7d8dbbffadaa Mon Sep 17 00:00:00 2001 From: Ian Date: Wed, 18 Sep 2024 16:05:52 -0400 Subject: [PATCH 1/4] (BREAKING) Retire concept of ConnectedExtension --- .../src/help-menu/help-popup.component.tsx | 4 +- .../src/help-menu/help.component.tsx | 12 +- .../src/root.component.test.tsx | 2 +- .../esm-implementer-tools-app/jest.config.js | 3 +- .../src/configuration/configuration.test.tsx | 1 - .../apps/esm-offline-tools-app/jest.config.js | 2 + .../components/navbar/navbar.component.tsx | 8 +- .../src/root.component.test.tsx | 6 +- .../framework/esm-api/src/openmrs-fetch.ts | 2 +- packages/framework/esm-api/src/public.ts | 17 +- .../src/shared-api-objects/current-user.ts | 5 +- packages/framework/esm-config/jest.config.js | 1 + .../esm-extensions/src/extensions.test.ts | 10 +- .../esm-extensions/src/extensions.ts | 160 +- .../framework/esm-extensions/src/public.ts | 1 - .../framework/esm-extensions/src/store.ts | 48 +- packages/framework/esm-framework/docs/API.md | 173 +- .../docs/interfaces/AssignedExtension.md | 16 +- .../docs/interfaces/ConnectedExtension.md | 22 +- .../docs/interfaces/ExtensionProps.md | 4010 +++++++++++++++++ .../docs/interfaces/ExtensionRegistration.md | 16 +- .../docs/interfaces/ExtensionSlotBaseProps.md | 8 +- .../interfaces/OldExtensionSlotBaseProps.md | 8 +- .../interfaces/WorkspaceContainerProps.md | 8 +- .../extension-config.test.tsx | 4 +- packages/framework/esm-offline/jest.config.js | 1 + .../framework/esm-react-utils/jest.config.js | 1 + .../esm-react-utils/src/Extension.tsx | 42 +- .../esm-react-utils/src/ExtensionSlot.tsx | 20 +- .../esm-react-utils/src/extensions.test.tsx | 65 +- .../framework/esm-react-utils/src/index.ts | 1 + .../framework/esm-react-utils/src/public.ts | 1 + .../src/useAssignedExtensionIds.ts | 2 +- .../src/useAssignedExtensions.ts | 13 +- .../src/useConnectedExtensions.ts | 27 +- .../esm-react-utils/src/useExtensionSlot.ts | 4 +- .../src/useExtensionSlotMeta.ts | 4 +- .../src/useExtensionSlotStore.ts | 6 + .../esm-react-utils/src/useExtensionStore.ts | 3 +- .../framework/esm-react-utils/src/useStore.ts | 11 +- .../esm-routes/src/loaders/components.ts | 4 +- packages/framework/esm-state/package.json | 6 +- packages/framework/esm-state/src/state.ts | 35 +- .../patient-banner-actions-menu.component.tsx | 4 +- .../workspace-container.component.tsx | 1 - .../container/workspace-container.test.tsx | 6 +- .../src/workspaces/workspaces.ts | 8 +- 47 files changed, 4427 insertions(+), 385 deletions(-) create mode 100644 packages/framework/esm-framework/docs/interfaces/ExtensionProps.md create mode 100644 packages/framework/esm-react-utils/src/useExtensionSlotStore.ts diff --git a/packages/apps/esm-help-menu-app/src/help-menu/help-popup.component.tsx b/packages/apps/esm-help-menu-app/src/help-menu/help-popup.component.tsx index a1d54345c..389ef3d65 100644 --- a/packages/apps/esm-help-menu-app/src/help-menu/help-popup.component.tsx +++ b/packages/apps/esm-help-menu-app/src/help-menu/help-popup.component.tsx @@ -1,6 +1,6 @@ -import React, { useState } from 'react'; -import styles from './help-popup.styles.scss'; +import React from 'react'; import { ExtensionSlot } from '@openmrs/esm-framework'; +import styles from './help-popup.styles.scss'; export default function HelpMenuPopup() { return ( diff --git a/packages/apps/esm-help-menu-app/src/help-menu/help.component.tsx b/packages/apps/esm-help-menu-app/src/help-menu/help.component.tsx index d4deab080..1fc153f89 100644 --- a/packages/apps/esm-help-menu-app/src/help-menu/help.component.tsx +++ b/packages/apps/esm-help-menu-app/src/help-menu/help.component.tsx @@ -1,8 +1,8 @@ import React, { useState, useEffect, useRef } from 'react'; import classNames from 'classnames'; +import { Help } from '@carbon/react/icons'; import HelpMenuPopup from './help-popup.component'; import styles from './help.styles.scss'; -import { Help } from '@carbon/react/icons'; export default function HelpMenu() { const [helpMenuOpen, setHelpMenuOpen] = useState(false); @@ -14,7 +14,7 @@ export default function HelpMenu() { }; useEffect(() => { - const handleClickOutside = (event) => { + const handleClickOutside = (event: MouseEvent) => { if ( helpMenuButtonRef.current && !helpMenuButtonRef.current.contains(event.target) && @@ -24,12 +24,14 @@ export default function HelpMenu() { setHelpMenuOpen(false); } }; - document.addEventListener('click', handleClickOutside); + window.addEventListener(`mousedown`, handleClickOutside); + window.addEventListener(`touchstart`, handleClickOutside); return () => { - document.removeEventListener('click', handleClickOutside); + window.removeEventListener(`mousedown`, handleClickOutside); + window.removeEventListener(`touchstart`, handleClickOutside); }; - }, [helpMenuOpen]); + }, []); return ( <> diff --git a/packages/apps/esm-help-menu-app/src/root.component.test.tsx b/packages/apps/esm-help-menu-app/src/root.component.test.tsx index 818dd6210..53b9b423a 100644 --- a/packages/apps/esm-help-menu-app/src/root.component.test.tsx +++ b/packages/apps/esm-help-menu-app/src/root.component.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Root from './root.component'; import { render } from '@testing-library/react'; +import Root from './root.component'; describe(``, () => { it(`renders without dying`, () => { diff --git a/packages/apps/esm-implementer-tools-app/jest.config.js b/packages/apps/esm-implementer-tools-app/jest.config.js index f877ef2d6..4ecbc9268 100644 --- a/packages/apps/esm-implementer-tools-app/jest.config.js +++ b/packages/apps/esm-implementer-tools-app/jest.config.js @@ -7,7 +7,8 @@ module.exports = { }, setupFilesAfterEnv: ['/setup-tests.ts'], moduleNameMapper: { - 'lodash-es': 'lodash', + '^lodash-es$': 'lodash', + '^lodash-es/(.*)$': 'lodash/$1', '\\.(s?css)$': 'identity-obj-proxy', '@openmrs/esm-framework': '@openmrs/esm-framework/mock.tsx', dexie: require.resolve('dexie'), diff --git a/packages/apps/esm-implementer-tools-app/src/configuration/configuration.test.tsx b/packages/apps/esm-implementer-tools-app/src/configuration/configuration.test.tsx index f605eb98c..b17a51352 100644 --- a/packages/apps/esm-implementer-tools-app/src/configuration/configuration.test.tsx +++ b/packages/apps/esm-implementer-tools-app/src/configuration/configuration.test.tsx @@ -9,7 +9,6 @@ import { useConceptLookup, useGetConceptByUuid } from './interactive-editor/valu const mockUseConceptLookup = useConceptLookup as jest.Mock; const mockUseGetConceptByUuid = useGetConceptByUuid as jest.Mock; -jest.mock('lodash-es/debounce', () => jest.fn((fn) => fn)); jest.mock('./interactive-editor/value-editors/concept-search.resource', () => ({ useConceptLookup: jest.fn().mockImplementation(() => ({ concepts: [], diff --git a/packages/apps/esm-offline-tools-app/jest.config.js b/packages/apps/esm-offline-tools-app/jest.config.js index 9b9e014d0..82eaa0682 100644 --- a/packages/apps/esm-offline-tools-app/jest.config.js +++ b/packages/apps/esm-offline-tools-app/jest.config.js @@ -3,6 +3,8 @@ module.exports = { '^.+\\.tsx?$': ['@swc/jest'], }, moduleNameMapper: { + '^lodash-es$': 'lodash', + '^lodash-es/(.*)$': 'lodash/$1', '\\.(s?css)$': 'identity-obj-proxy', }, setupFiles: ['/src/setup-tests.js'], diff --git a/packages/apps/esm-primary-navigation-app/src/components/navbar/navbar.component.tsx b/packages/apps/esm-primary-navigation-app/src/components/navbar/navbar.component.tsx index cdc57d425..41cd7e4c7 100644 --- a/packages/apps/esm-primary-navigation-app/src/components/navbar/navbar.component.tsx +++ b/packages/apps/esm-primary-navigation-app/src/components/navbar/navbar.component.tsx @@ -8,7 +8,7 @@ import { ExtensionSlot, ConfigurableLink, useSession, - useConnectedExtensions, + useAssignedExtensions, useConfig, CloseIcon, UserAvatarIcon, @@ -28,9 +28,9 @@ const HeaderItems: React.FC = () => { const config = useConfig(); const [activeHeaderPanel, setActiveHeaderPanel] = useState(null); const layout = useLayoutType(); - const navMenuItems = useConnectedExtensions('patient-chart-dashboard-slot').map((e) => e.id); - const appMenuItems = useConnectedExtensions('app-menu-slot'); - const userMenuItems = useConnectedExtensions('user-panel-slot'); + const navMenuItems = useAssignedExtensions('patient-chart-dashboard-slot').map((e) => e.id); + const appMenuItems = useAssignedExtensions('app-menu-slot'); + const userMenuItems = useAssignedExtensions('user-panel-slot'); const isActivePanel = useCallback((panelName: string) => activeHeaderPanel === panelName, [activeHeaderPanel]); const togglePanel = useCallback((panelName: string) => { diff --git a/packages/apps/esm-primary-navigation-app/src/root.component.test.tsx b/packages/apps/esm-primary-navigation-app/src/root.component.test.tsx index f1163317f..6fce3f460 100644 --- a/packages/apps/esm-primary-navigation-app/src/root.component.test.tsx +++ b/packages/apps/esm-primary-navigation-app/src/root.component.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { of } from 'rxjs'; import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { useConfig, useConnectedExtensions, useSession } from '@openmrs/esm-framework'; +import { useConfig, useAssignedExtensions, useSession } from '@openmrs/esm-framework'; import { isDesktop } from './utils'; import { mockUser } from '../__mocks__/mock-user'; import { mockSession } from '../__mocks__/mock-session'; @@ -13,13 +13,13 @@ const mockSessionObservable = of({ data: mockSession }); const mockIsDesktop = jest.mocked(isDesktop); const mockedUseConfig = useConfig as jest.Mock; -const mockedUseConnectedExtensions = useConnectedExtensions as jest.Mock; +const mockedUseAssignedExtensions = useAssignedExtensions as jest.Mock; const mockedUseSession = useSession as jest.Mock; mockedUseConfig.mockReturnValue({ logo: { src: null, alt: null, name: 'Mock EMR', link: 'Mock EMR' }, }); -mockedUseConnectedExtensions.mockReturnValue(['mock-extension']); +mockedUseAssignedExtensions.mockReturnValue(['mock-extension']); mockedUseSession.mockReturnValue(mockSession); jest.mock('./root.resource', () => ({ diff --git a/packages/framework/esm-api/src/openmrs-fetch.ts b/packages/framework/esm-api/src/openmrs-fetch.ts index c87d2862a..e4fc791db 100644 --- a/packages/framework/esm-api/src/openmrs-fetch.ts +++ b/packages/framework/esm-api/src/openmrs-fetch.ts @@ -1,6 +1,6 @@ /** @module @category API */ import { Observable } from 'rxjs'; -import isPlainObject from 'lodash-es/isPlainObject'; +import { isPlainObject } from 'lodash-es'; import { getConfig } from '@openmrs/esm-config'; import { navigate } from '@openmrs/esm-navigation'; import { clearHistory } from '@openmrs/esm-navigation/src/index'; diff --git a/packages/framework/esm-api/src/public.ts b/packages/framework/esm-api/src/public.ts index 7d46fdd20..9ea5cec30 100644 --- a/packages/framework/esm-api/src/public.ts +++ b/packages/framework/esm-api/src/public.ts @@ -1,8 +1,21 @@ export * from './types'; export * from './openmrs-fetch'; export * from './attachments'; - -export * from './shared-api-objects/current-user'; +export { + clearCurrentUser, + getCurrentUser, + getLoggedInUser, + getSessionStore, + getSessionLocation, + refetchCurrentUser, + setSessionLocation, + setUserLanguage, + setUserProperties, + userHasAccess, + type LoadedSessionStore, + type SessionStore, + type UnloadedSessionStore, +} from './shared-api-objects/current-user'; export * from './shared-api-objects/current-patient'; export * from './shared-api-objects/visit-utils'; export * from './shared-api-objects/visit-type'; diff --git a/packages/framework/esm-api/src/shared-api-objects/current-user.ts b/packages/framework/esm-api/src/shared-api-objects/current-user.ts index 46f7b5d64..482a790a3 100644 --- a/packages/framework/esm-api/src/shared-api-objects/current-user.ts +++ b/packages/framework/esm-api/src/shared-api-objects/current-user.ts @@ -1,7 +1,7 @@ /** @module @category API */ import { reportError } from '@openmrs/esm-error-handling'; import { createGlobalStore } from '@openmrs/esm-state'; -import isUndefined from 'lodash-es/isUndefined'; +import { isUndefined } from 'lodash-es'; import { Observable } from 'rxjs'; import { openmrsFetch, restBaseUrl, sessionEndpoint } from '../openmrs-fetch'; import type { LoggedInUser, SessionLocation, Privilege, Role, Session, FetchResponse } from '../types'; @@ -18,7 +18,8 @@ export type UnloadedSessionStore = { session: null; }; -const sessionStore = createGlobalStore('session', { +/** @internal */ +export const sessionStore = createGlobalStore('session', { loaded: false, session: null, }); diff --git a/packages/framework/esm-config/jest.config.js b/packages/framework/esm-config/jest.config.js index ec5109b35..e2d20e983 100644 --- a/packages/framework/esm-config/jest.config.js +++ b/packages/framework/esm-config/jest.config.js @@ -4,6 +4,7 @@ module.exports = { }, setupFiles: ['/src/setup-tests.js'], moduleNameMapper: { + '^lodash-es$': 'lodash', '@openmrs/esm-context': '/__mocks__/openmrs-esm-context.mock.tsx', '@openmrs/esm-globals': '/__mocks__/openmrs-esm-globals.mock.tsx', '@openmrs/esm-state': '@openmrs/esm-state/mock', diff --git a/packages/framework/esm-extensions/src/extensions.test.ts b/packages/framework/esm-extensions/src/extensions.test.ts index 803893b2d..a712a9e80 100644 --- a/packages/framework/esm-extensions/src/extensions.test.ts +++ b/packages/framework/esm-extensions/src/extensions.test.ts @@ -1,13 +1,11 @@ import { createGlobalStore } from '@openmrs/esm-state'; import { attach, registerExtensionSlot } from './extensions'; -const mockSessionStore = createGlobalStore('mock-session-store', { - loaded: false, - session: null, -}); - jest.mock('@openmrs/esm-api', () => ({ - getSessionStore: jest.fn(() => mockSessionStore), + sessionStore: createGlobalStore('mock-session-store', { + loaded: false, + session: null, + }), })); describe('extensions system', () => { diff --git a/packages/framework/esm-extensions/src/extensions.ts b/packages/framework/esm-extensions/src/extensions.ts index eee2eda31..976f9fb45 100644 --- a/packages/framework/esm-extensions/src/extensions.ts +++ b/packages/framework/esm-extensions/src/extensions.ts @@ -8,10 +8,11 @@ * - connected (computed from assigned using connectivity and online / offline) */ -import type { Session } from '@openmrs/esm-api'; -import { getSessionStore, userHasAccess } from '@openmrs/esm-api'; -import type { ExtensionsConfigStore, ExtensionSlotConfigObject, ExtensionSlotsConfigStore } from '@openmrs/esm-config'; +import { type Session, type SessionStore, sessionStore, userHasAccess } from '@openmrs/esm-api'; import { + type ExtensionsConfigStore, + type ExtensionSlotConfigObject, + type ExtensionSlotsConfigStore, getExtensionConfigFromStore, getExtensionsConfigStore, getExtensionSlotConfig, @@ -19,14 +20,18 @@ import { getExtensionSlotsConfigStore, } from '@openmrs/esm-config'; import { evaluateAsBoolean } from '@openmrs/esm-expression-evaluator'; -import { featureFlagsStore } from '@openmrs/esm-feature-flags'; +import { type FeatureFlagsStore, featureFlagsStore } from '@openmrs/esm-feature-flags'; +import { subscribeConnectivityChanged } from '@openmrs/esm-globals'; import { isOnline as isOnlineFn } from '@openmrs/esm-utils'; -import isEqual from 'lodash-es/isEqual'; -import isUndefined from 'lodash-es/isUndefined'; -import type { ExtensionSlotState, AssignedExtension, ConnectedExtension } from '.'; -import { getExtensionInternalStore, checkStatusFor } from '.'; -import type { ExtensionRegistration, ExtensionSlotInfo, ExtensionInternalStore } from './store'; -import { getExtensionStore, updateInternalExtensionStore } from './store'; +import { isEqual } from 'lodash-es'; +import { type AssignedExtension, checkStatusFor, type ExtensionSlotState, getExtensionInternalStore } from '.'; +import { + type ExtensionRegistration, + type ExtensionSlotInfo, + type ExtensionInternalStore, + getExtensionStore, + updateInternalExtensionStore, +} from './store'; const extensionInternalStore = getExtensionInternalStore(); const extensionStore = getExtensionStore(); @@ -38,8 +43,16 @@ function updateExtensionOutputStore( internalState: ExtensionInternalStore, extensionSlotConfigs: ExtensionSlotsConfigStore, extensionsConfigStore: ExtensionsConfigStore, + featureFlagStore: FeatureFlagsStore, + sessionStore: SessionStore, ) { const slots: Record = {}; + + const isOnline = isOnlineFn(); + const enabledFeatureFlags = Object.entries(featureFlagStore.flags) + .filter(([, { enabled }]) => enabled) + .map(([name]) => name); + for (let [slotName, slot] of Object.entries(internalState.slots)) { const { config } = getExtensionSlotConfigFromStore(extensionSlotConfigs, slot.name); const assignedExtensions = getAssignedExtensionsFromSlotData( @@ -47,26 +60,81 @@ function updateExtensionOutputStore( internalState, config, extensionsConfigStore, + enabledFeatureFlags, + isOnline, + sessionStore.session, ); slots[slotName] = { moduleName: slot.moduleName, assignedExtensions }; } + if (!isEqual(extensionStore.getState().slots, slots)) { extensionStore.setState({ slots }); } } extensionInternalStore.subscribe((internalStore) => { - updateExtensionOutputStore(internalStore, slotsConfigStore.getState(), extensionsConfigStore.getState()); + updateExtensionOutputStore( + internalStore, + slotsConfigStore.getState(), + extensionsConfigStore.getState(), + featureFlagsStore.getState(), + sessionStore.getState(), + ); }); slotsConfigStore.subscribe((slotConfigs) => { - updateExtensionOutputStore(extensionInternalStore.getState(), slotConfigs, extensionsConfigStore.getState()); + updateExtensionOutputStore( + extensionInternalStore.getState(), + slotConfigs, + extensionsConfigStore.getState(), + featureFlagsStore.getState(), + sessionStore.getState(), + ); }); extensionsConfigStore.subscribe((extensionConfigs) => { - updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionConfigs); + updateExtensionOutputStore( + extensionInternalStore.getState(), + slotsConfigStore.getState(), + extensionConfigs, + featureFlagsStore.getState(), + sessionStore.getState(), + ); +}); + +featureFlagsStore.subscribe((featureFlagStore) => { + updateExtensionOutputStore( + extensionInternalStore.getState(), + slotsConfigStore.getState(), + extensionsConfigStore.getState(), + featureFlagStore, + sessionStore.getState(), + ); }); +sessionStore.subscribe((session) => { + updateExtensionOutputStore( + extensionInternalStore.getState(), + slotsConfigStore.getState(), + extensionsConfigStore.getState(), + featureFlagsStore.getState(), + session, + ); +}); + +function updateOutputStoreToCurrent() { + updateExtensionOutputStore( + extensionInternalStore.getState(), + slotsConfigStore.getState(), + extensionsConfigStore.getState(), + featureFlagsStore.getState(), + sessionStore.getState(), + ); +} + +updateOutputStoreToCurrent(); +subscribeConnectivityChanged(updateOutputStoreToCurrent); + function createNewExtensionSlotInfo(slotName: string, moduleName?: string): ExtensionSlotInfo { return { moduleName, @@ -248,43 +316,18 @@ function getOrder( } } -/** - * Filters a list of extensions according to whether they support the - * current connectivity status. - * - * @param assignedExtensions The list of extensions to filter. - * @param online Whether the app is currently online. If `null`, uses `navigator.onLine`. - * @param enabledFeatureFlags The names of all enabled feature flags. If `null`, looks - * up the feature flags using the feature flags API. - * @returns A list of extensions that should be rendered - */ -export function getConnectedExtensions( - assignedExtensions: Array, - online: boolean | null = null, - enabledFeatureFlags: Array | null = null, -): Array { - const isOnline = isOnlineFn(online ?? undefined); - const featureFlags = - enabledFeatureFlags ?? - Object.entries(featureFlagsStore.getState().flags) - .filter(([, { enabled }]) => enabled) - .map(([name]) => name); - - return assignedExtensions - .filter((e) => (window.offlineEnabled ? checkStatusFor(isOnline, e.online, e.offline) : true)) - .filter((e) => e.featureFlag === undefined || featureFlags?.includes(e.featureFlag)); -} - function getAssignedExtensionsFromSlotData( slotName: string, internalState: ExtensionInternalStore, config: ExtensionSlotConfigObject, extensionConfigStoreState: ExtensionsConfigStore, + enabledFeatureFlags: Array, + isOnline: boolean, + session: Session | null, ): Array { const attachedIds = internalState.slots[slotName].attachedIds; const assignedIds = calculateAssignedIds(config, attachedIds); const extensions: Array = []; - let session: Session | undefined = undefined; for (let id of assignedIds) { const { config: extensionConfig } = getExtensionConfigFromStore(extensionConfigStoreState, slotName, id); @@ -298,10 +341,6 @@ function getAssignedExtensionsFromSlotData( requiredPrivileges && (typeof requiredPrivileges === 'string' || (Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) ) { - if (isUndefined(session)) { - session = getSessionStore().getState().session ?? undefined; - } - if (!session?.user) { continue; } @@ -313,12 +352,8 @@ function getAssignedExtensionsFromSlotData( const displayConditionExpression = extensionConfig?.['Display conditions']?.expression ?? null; if (displayConditionExpression !== null) { - if (isUndefined(session)) { - session = getSessionStore().getState().session ?? undefined; - } - try { - if (!evaluateAsBoolean(displayConditionExpression, { session: session ?? null })) { + if (!evaluateAsBoolean(displayConditionExpression, { session })) { continue; } } catch (e) { @@ -328,6 +363,14 @@ function getAssignedExtensionsFromSlotData( } } + if (extension.featureFlag && !enabledFeatureFlags.includes(extension.featureFlag)) { + continue; + } + + if (window.offlineEnabled && !checkStatusFor(isOnline, extension.online, extension.offline)) { + continue; + } + extensions.push({ id, name, @@ -354,7 +397,22 @@ export function getAssignedExtensions(slotName: string): Array enabled) + .map(([name]) => name); + + return getAssignedExtensionsFromSlotData( + slotName, + internalState, + slotConfig, + extensionStoreState, + enabledFeatureFlags, + isOnline, + sessionState.session, + ); } function calculateAssignedIds(config: ExtensionSlotConfigObject, attachedIds: Array) { diff --git a/packages/framework/esm-extensions/src/public.ts b/packages/framework/esm-extensions/src/public.ts index 5e6a91a06..8b378548c 100644 --- a/packages/framework/esm-extensions/src/public.ts +++ b/packages/framework/esm-extensions/src/public.ts @@ -4,7 +4,6 @@ export { attach, detach, detachAll, - getConnectedExtensions, getAssignedExtensions, registerExtensionSlot, } from './extensions'; diff --git a/packages/framework/esm-extensions/src/store.ts b/packages/framework/esm-extensions/src/store.ts index 9b7955eab..6fb5a4948 100644 --- a/packages/framework/esm-extensions/src/store.ts +++ b/packages/framework/esm-extensions/src/store.ts @@ -1,24 +1,24 @@ /** @module @category Extension */ -import isEqual from 'lodash-es/isEqual'; +import { isEqual } from 'lodash-es'; import type { ConfigExtensionStoreElement, ConfigObject, ExtensionSlotConfigObject } from '@openmrs/esm-config'; import { configExtensionStore } from '@openmrs/esm-config'; import { createGlobalStore, getGlobalStore } from '@openmrs/esm-state'; -import type { LifeCycles } from 'single-spa'; +import { type LifeCycles } from 'single-spa'; export interface ExtensionMeta { [_: string]: any; } export interface ExtensionRegistration { - name: string; + readonly name: string; load(): Promise<{ default?: LifeCycles } & LifeCycles>; - moduleName: string; - meta: ExtensionMeta; - order?: number; - online?: boolean; - offline?: boolean; - privileges?: string | Array; - featureFlag?: string; + readonly moduleName: string; + readonly meta: Readonly; + readonly order?: number; + readonly online?: boolean; + readonly offline?: boolean; + readonly privileges?: string | Array; + readonly featureFlag?: string; } export interface ExtensionInfo extends ExtensionRegistration { @@ -70,24 +70,25 @@ export interface ExtensionSlotState { } export interface AssignedExtension { - id: string; - name: string; - moduleName: string; - meta: ExtensionMeta; + readonly id: string; + readonly name: string; + readonly moduleName: string; + readonly meta: Readonly; /** The extension's config. Note that this will be `null` until the slot is mounted. */ - config: ConfigObject | null; - online?: boolean | object; - offline?: boolean | object; - featureFlag?: string; + readonly config: Readonly | null; + readonly online?: boolean | object; + readonly offline?: boolean | object; + readonly featureFlag?: string; } +/** @deprecated replaced with AssignedExtension */ export interface ConnectedExtension { - id: string; - name: string; - moduleName: string; - meta: ExtensionMeta; + readonly id: string; + readonly name: string; + readonly moduleName: string; + readonly meta: Readonly; /** The extension's config. Note that this will be `null` until the slot is mounted. */ - config: ConfigObject | null; + readonly config: Readonly | null; } const extensionInternalStore = createGlobalStore('extensionsInternal', { @@ -148,6 +149,7 @@ function updateConfigExtensionStore(extensionState: ExtensionInternalStore) { }); } } + if (!isEqual(configExtensionStore.getState().mountedExtensions, configExtensionRecords)) { configExtensionStore.setState({ mountedExtensions: configExtensionRecords, diff --git a/packages/framework/esm-framework/docs/API.md b/packages/framework/esm-framework/docs/API.md index 2f559e39b..0e043f8a0 100644 --- a/packages/framework/esm-framework/docs/API.md +++ b/packages/framework/esm-framework/docs/API.md @@ -112,7 +112,6 @@ - [detach](API.md#detach) - [detachAll](API.md#detachall) - [getAssignedExtensions](API.md#getassignedextensions) -- [getConnectedExtensions](API.md#getconnectedextensions) - [getExtensionNameFromId](API.md#getextensionnamefromid) - [getExtensionStore](API.md#getextensionstore) - [renderExtension](API.md#renderextension) @@ -120,6 +119,7 @@ - [useAssignedExtensions](API.md#useassignedextensions) - [useConnectedExtensions](API.md#useconnectedextensions) - [useExtensionSlotMeta](API.md#useextensionslotmeta) +- [useExtensionSlotStore](API.md#useextensionslotstore) - [useExtensionStore](API.md#useextensionstore) - [useRenderableExtensions](API.md#userenderableextensions) @@ -419,19 +419,9 @@ ___ ## Extension Type Aliases -### ExtensionProps - -Ƭ **ExtensionProps**: { `state?`: `Record`<`string`, `any`\> ; `wrap?`: (`slot`: `ReactNode`, `extension`: [`ExtensionData`](interfaces/ExtensionData.md)) => ``null`` \| `ReactElement`<`any`, `any`\> } & `Omit`<`React.HTMLAttributes`<`HTMLDivElement`\>, ``"children"``\> & { `children?`: `React.ReactNode` \| (`slot`: `React.ReactNode`, `extension?`: [`ExtensionData`](interfaces/ExtensionData.md)) => `React.ReactNode` } - -#### Defined in - -[packages/framework/esm-react-utils/src/Extension.tsx:8](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/Extension.tsx#L8) - -___ - ### ExtensionSlotProps -Ƭ **ExtensionSlotProps**: [`OldExtensionSlotBaseProps`](interfaces/OldExtensionSlotBaseProps.md) \| [`ExtensionSlotBaseProps`](interfaces/ExtensionSlotBaseProps.md) & `Omit`<`React.HTMLAttributes`<`HTMLDivElement`\>, ``"children"``\> & { `children?`: `React.ReactNode` \| (`extension`: [`ConnectedExtension`](interfaces/ConnectedExtension.md)) => `React.ReactNode` } +Ƭ **ExtensionSlotProps**: [`OldExtensionSlotBaseProps`](interfaces/OldExtensionSlotBaseProps.md) \| [`ExtensionSlotBaseProps`](interfaces/ExtensionSlotBaseProps.md) & `Omit`<`React.HTMLAttributes`<`HTMLDivElement`\>, ``"children"``\> & { `children?`: `React.ReactNode` \| (`extension`: [`AssignedExtension`](interfaces/AssignedExtension.md), `state?`: `Record`<`string`, `unknown`\>) => `React.ReactNode` } #### Defined in @@ -1085,7 +1075,7 @@ ___ ### Extension -• `Const` **Extension**: `React.FC`<[`ExtensionProps`](API.md#extensionprops)\> +• `Const` **Extension**: `React.FC`<[`ExtensionProps`](interfaces/ExtensionProps.md)\> Represents the position in the DOM where each extension within an extension slot is rendered. @@ -1097,7 +1087,7 @@ and *must* only be used once within that ``. #### Defined in -[packages/framework/esm-react-utils/src/Extension.tsx:25](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/Extension.tsx#L25) +[packages/framework/esm-react-utils/src/Extension.tsx:20](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/Extension.tsx#L20) ___ @@ -2154,7 +2144,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:168](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L168) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:169](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L169) ___ @@ -2306,7 +2296,7 @@ leak and source of bugs. #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:65](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L65) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:66](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L66) ▸ **getCurrentUser**(`opts`): `Observable`<[`Session`](interfaces/Session.md)\> @@ -2323,7 +2313,7 @@ leak and source of bugs. #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:66](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L66) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:67](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L67) ▸ **getCurrentUser**(`opts`): `Observable`<[`LoggedInUser`](interfaces/LoggedInUser.md)\> @@ -2340,7 +2330,7 @@ leak and source of bugs. #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:67](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L67) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:68](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L68) ___ @@ -2374,7 +2364,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:192](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L192) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:193](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L193) ___ @@ -2388,7 +2378,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:210](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L210) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:211](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L211) ___ @@ -2402,7 +2392,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:92](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L92) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:93](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L93) ___ @@ -2632,7 +2622,7 @@ refetchCurrentUser() #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:154](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L154) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:155](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L155) ___ @@ -2695,7 +2685,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:219](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L219) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:220](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L220) ___ @@ -2715,7 +2705,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:115](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L115) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:116](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L116) ___ @@ -2737,7 +2727,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:232](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L232) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:233](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L233) ___ @@ -2996,7 +2986,7 @@ ___ #### Defined in -[packages/framework/esm-api/src/shared-api-objects/current-user.ts:175](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L175) +[packages/framework/esm-api/src/shared-api-objects/current-user.ts:176](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/shared-api-objects/current-user.ts#L176) ___ @@ -4248,7 +4238,7 @@ writing a module for a specific implementation. #### Defined in -[packages/framework/esm-extensions/src/extensions.ts:144](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L144) +[packages/framework/esm-extensions/src/extensions.ts:212](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L212) ___ @@ -4271,7 +4261,7 @@ ___ #### Defined in -[packages/framework/esm-extensions/src/extensions.ts:177](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L177) +[packages/framework/esm-extensions/src/extensions.ts:245](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L245) ___ @@ -4293,7 +4283,7 @@ ___ #### Defined in -[packages/framework/esm-extensions/src/extensions.ts:201](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L201) +[packages/framework/esm-extensions/src/extensions.ts:269](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L269) ___ @@ -4317,34 +4307,7 @@ An array of extensions assigned to the named slot #### Defined in -[packages/framework/esm-extensions/src/extensions.ts:353](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L353) - -___ - -### getConnectedExtensions - -▸ **getConnectedExtensions**(`assignedExtensions`, `online?`, `enabledFeatureFlags?`): [`ConnectedExtension`](interfaces/ConnectedExtension.md)[] - -Filters a list of extensions according to whether they support the -current connectivity status. - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `assignedExtensions` | [`AssignedExtension`](interfaces/AssignedExtension.md)[] | `undefined` | The list of extensions to filter. | -| `online` | ``null`` \| `boolean` | `null` | Whether the app is currently online. If `null`, uses `navigator.onLine`. | -| `enabledFeatureFlags` | ``null`` \| `string`[] | `null` | The names of all enabled feature flags. If `null`, looks up the feature flags using the feature flags API. | - -#### Returns - -[`ConnectedExtension`](interfaces/ConnectedExtension.md)[] - -A list of extensions that should be rendered - -#### Defined in - -[packages/framework/esm-extensions/src/extensions.ts:261](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L261) +[packages/framework/esm-extensions/src/extensions.ts:396](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L396) ___ @@ -4376,7 +4339,7 @@ getExtensionNameFromId("baz") #### Defined in -[packages/framework/esm-extensions/src/extensions.ts:92](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L92) +[packages/framework/esm-extensions/src/extensions.ts:160](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/extensions.ts#L160) ___ @@ -4393,7 +4356,7 @@ state of the extension system. #### Defined in -[packages/framework/esm-extensions/src/store.ts:124](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L124) +[packages/framework/esm-extensions/src/store.ts:125](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L125) ___ @@ -4456,7 +4419,6 @@ ___ ▸ **useAssignedExtensions**(`slotName`): [`AssignedExtension`](interfaces/AssignedExtension.md)[] Gets the assigned extensions for a given extension slot name. -Does not consider if offline or online. #### Parameters @@ -4470,7 +4432,7 @@ Does not consider if offline or online. #### Defined in -[packages/framework/esm-react-utils/src/useAssignedExtensions.ts:10](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useAssignedExtensions.ts#L10) +[packages/framework/esm-react-utils/src/useAssignedExtensions.ts:8](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useAssignedExtensions.ts#L8) ___ @@ -4479,7 +4441,8 @@ ___ ▸ **useConnectedExtensions**(`slotName`): [`ConnectedExtension`](interfaces/ConnectedExtension.md)[] Gets the assigned extension for a given extension slot name. -Considers if offline or online, and what feature flags are enabled. + +**`deprecated`** Use useAssignedExtensions instead #### Parameters @@ -4493,7 +4456,7 @@ Considers if offline or online, and what feature flags are enabled. #### Defined in -[packages/framework/esm-react-utils/src/useConnectedExtensions.ts:15](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useConnectedExtensions.ts#L15) +[packages/framework/esm-react-utils/src/useConnectedExtensions.ts:10](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useConnectedExtensions.ts#L10) ___ @@ -4525,6 +4488,26 @@ Extract meta data from all extension for a given extension slot. ___ +### useExtensionSlotStore + +▸ **useExtensionSlotStore**(`slot`): [`ExtensionSlotState`](interfaces/ExtensionSlotState.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `slot` | `string` | + +#### Returns + +[`ExtensionSlotState`](interfaces/ExtensionSlotState.md) + +#### Defined in + +[packages/framework/esm-react-utils/src/useExtensionSlotStore.ts:5](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionSlotStore.ts#L5) + +___ + ### useExtensionStore ▸ **useExtensionStore**(): `T` @@ -4535,7 +4518,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useExtensionStore.ts:6](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionStore.ts#L6) +[packages/framework/esm-react-utils/src/useExtensionStore.ts:5](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionStore.ts#L5) ▸ **useExtensionStore**(`actions`): `T` & [`BoundActions`](API.md#boundactions) @@ -4551,7 +4534,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useExtensionStore.ts:6](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionStore.ts#L6) +[packages/framework/esm-react-utils/src/useExtensionStore.ts:5](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionStore.ts#L5) ▸ **useExtensionStore**(`actions?`): `T` & [`BoundActions`](API.md#boundactions) @@ -4567,13 +4550,13 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useExtensionStore.ts:6](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionStore.ts#L6) +[packages/framework/esm-react-utils/src/useExtensionStore.ts:5](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useExtensionStore.ts#L5) ___ ### useRenderableExtensions -▸ **useRenderableExtensions**(`name`): `React.FC`<`Pick`<[`ExtensionProps`](API.md#extensionprops), ``"state"``\>\>[] +▸ **useRenderableExtensions**(`name`): `React.FC`<`Pick`<[`ExtensionProps`](interfaces/ExtensionProps.md), ``"state"``\>\>[] This is an advanced hook for use-cases where its useful to use the extension system, but not the `ExtensionSlot` component's rendering of extensions. Use of this hook @@ -4606,7 +4589,7 @@ return ( #### Returns -`React.FC`<`Pick`<[`ExtensionProps`](API.md#extensionprops), ``"state"``\>\>[] +`React.FC`<`Pick`<[`ExtensionProps`](interfaces/ExtensionProps.md), ``"state"``\>\>[] #### Defined in @@ -5787,7 +5770,7 @@ This component also provides everything needed for workspace notifications to be #### Defined in -[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:68](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L68) +[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:67](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L67) ___ @@ -6288,7 +6271,7 @@ The newly created store. #### Defined in -[packages/framework/esm-state/src/state.ts:29](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L29) +[packages/framework/esm-state/src/state.ts:30](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L30) ___ @@ -6347,7 +6330,7 @@ custom hook for a specific store. #### Defined in -[packages/framework/esm-react-utils/src/useStore.ts:60](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L60) +[packages/framework/esm-react-utils/src/useStore.ts:63](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L63) ___ @@ -6379,12 +6362,44 @@ The found or newly created store. #### Defined in -[packages/framework/esm-state/src/state.ts:91](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L91) +[packages/framework/esm-state/src/state.ts:92](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L92) ___ ### subscribeTo +▸ **subscribeTo**<`T`, `U`\>(`store`, `handle`): () => `void` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `T` | +| `U` | `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `store` | `StoreApi`<`T`\> | +| `handle` | (`state`: `T`) => `void` | + +#### Returns + +`fn` + +▸ (): `void` + +**`category`** Store + +##### Returns + +`void` + +#### Defined in + +[packages/framework/esm-state/src/state.ts:109](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L109) + ▸ **subscribeTo**<`T`, `U`\>(`store`, `select`, `handle`): () => `void` #### Type parameters @@ -6408,13 +6423,15 @@ ___ ▸ (): `void` +**`category`** Store + ##### Returns `void` #### Defined in -[packages/framework/esm-state/src/state.ts:106](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L106) +[packages/framework/esm-state/src/state.ts:110](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L110) ___ @@ -6441,7 +6458,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useStore.ts:33](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L33) +[packages/framework/esm-react-utils/src/useStore.ts:36](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L36) ▸ **useStore**<`T`, `U`\>(`store`, `select`): `U` @@ -6465,7 +6482,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useStore.ts:34](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L34) +[packages/framework/esm-react-utils/src/useStore.ts:37](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L37) ▸ **useStore**<`T`, `U`\>(`store`, `select`, `actions`): `T` & [`BoundActions`](API.md#boundactions) @@ -6490,7 +6507,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useStore.ts:35](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L35) +[packages/framework/esm-react-utils/src/useStore.ts:38](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L38) ▸ **useStore**<`T`, `U`\>(`store`, `select`, `actions`): `U` & [`BoundActions`](API.md#boundactions) @@ -6515,7 +6532,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useStore.ts:36](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L36) +[packages/framework/esm-react-utils/src/useStore.ts:39](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L39) ___ @@ -6542,7 +6559,7 @@ ___ #### Defined in -[packages/framework/esm-react-utils/src/useStore.ts:52](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L52) +[packages/framework/esm-react-utils/src/useStore.ts:55](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/useStore.ts#L55) ___ diff --git a/packages/framework/esm-framework/docs/interfaces/AssignedExtension.md b/packages/framework/esm-framework/docs/interfaces/AssignedExtension.md index 5a1849149..2bc9a79d4 100644 --- a/packages/framework/esm-framework/docs/interfaces/AssignedExtension.md +++ b/packages/framework/esm-framework/docs/interfaces/AssignedExtension.md @@ -19,7 +19,7 @@ ### config -• **config**: ``null`` \| [`ConfigObject`](ConfigObject.md) +• `Readonly` **config**: ``null`` \| `Readonly`<[`ConfigObject`](ConfigObject.md)\> The extension's config. Note that this will be `null` until the slot is mounted. @@ -31,7 +31,7 @@ ___ ### featureFlag -• `Optional` **featureFlag**: `string` +• `Optional` `Readonly` **featureFlag**: `string` #### Defined in @@ -41,7 +41,7 @@ ___ ### id -• **id**: `string` +• `Readonly` **id**: `string` #### Defined in @@ -51,7 +51,7 @@ ___ ### meta -• **meta**: [`ExtensionMeta`](ExtensionMeta.md) +• `Readonly` **meta**: `Readonly`<[`ExtensionMeta`](ExtensionMeta.md)\> #### Defined in @@ -61,7 +61,7 @@ ___ ### moduleName -• **moduleName**: `string` +• `Readonly` **moduleName**: `string` #### Defined in @@ -71,7 +71,7 @@ ___ ### name -• **name**: `string` +• `Readonly` **name**: `string` #### Defined in @@ -81,7 +81,7 @@ ___ ### offline -• `Optional` **offline**: `boolean` \| `object` +• `Optional` `Readonly` **offline**: `boolean` \| `object` #### Defined in @@ -91,7 +91,7 @@ ___ ### online -• `Optional` **online**: `boolean` \| `object` +• `Optional` `Readonly` **online**: `boolean` \| `object` #### Defined in diff --git a/packages/framework/esm-framework/docs/interfaces/ConnectedExtension.md b/packages/framework/esm-framework/docs/interfaces/ConnectedExtension.md index e649272ef..91232cbf8 100644 --- a/packages/framework/esm-framework/docs/interfaces/ConnectedExtension.md +++ b/packages/framework/esm-framework/docs/interfaces/ConnectedExtension.md @@ -2,6 +2,8 @@ # Interface: ConnectedExtension +**`deprecated`** replaced with AssignedExtension + ## Table of contents ### Extension Properties @@ -16,50 +18,50 @@ ### config -• **config**: ``null`` \| [`ConfigObject`](ConfigObject.md) +• `Readonly` **config**: ``null`` \| `Readonly`<[`ConfigObject`](ConfigObject.md)\> The extension's config. Note that this will be `null` until the slot is mounted. #### Defined in -[packages/framework/esm-extensions/src/store.ts:90](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L90) +[packages/framework/esm-extensions/src/store.ts:91](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L91) ___ ### id -• **id**: `string` +• `Readonly` **id**: `string` #### Defined in -[packages/framework/esm-extensions/src/store.ts:85](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L85) +[packages/framework/esm-extensions/src/store.ts:86](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L86) ___ ### meta -• **meta**: [`ExtensionMeta`](ExtensionMeta.md) +• `Readonly` **meta**: `Readonly`<[`ExtensionMeta`](ExtensionMeta.md)\> #### Defined in -[packages/framework/esm-extensions/src/store.ts:88](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L88) +[packages/framework/esm-extensions/src/store.ts:89](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L89) ___ ### moduleName -• **moduleName**: `string` +• `Readonly` **moduleName**: `string` #### Defined in -[packages/framework/esm-extensions/src/store.ts:87](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L87) +[packages/framework/esm-extensions/src/store.ts:88](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L88) ___ ### name -• **name**: `string` +• `Readonly` **name**: `string` #### Defined in -[packages/framework/esm-extensions/src/store.ts:86](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L86) +[packages/framework/esm-extensions/src/store.ts:87](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-extensions/src/store.ts#L87) diff --git a/packages/framework/esm-framework/docs/interfaces/ExtensionProps.md b/packages/framework/esm-framework/docs/interfaces/ExtensionProps.md new file mode 100644 index 000000000..aa8c64de5 --- /dev/null +++ b/packages/framework/esm-framework/docs/interfaces/ExtensionProps.md @@ -0,0 +1,4010 @@ +[@openmrs/esm-framework](../API.md) / ExtensionProps + +# Interface: ExtensionProps + +## Hierarchy + +- `HTMLAttributes`<`HTMLDivElement`\> + + ↳ **`ExtensionProps`** + +## Table of contents + +### Extension Properties + +- [state](ExtensionProps.md#state) + +### Other Properties + +- [about](ExtensionProps.md#about) +- [accessKey](ExtensionProps.md#accesskey) +- [aria-activedescendant](ExtensionProps.md#aria-activedescendant) +- [aria-atomic](ExtensionProps.md#aria-atomic) +- [aria-autocomplete](ExtensionProps.md#aria-autocomplete) +- [aria-busy](ExtensionProps.md#aria-busy) +- [aria-checked](ExtensionProps.md#aria-checked) +- [aria-colcount](ExtensionProps.md#aria-colcount) +- [aria-colindex](ExtensionProps.md#aria-colindex) +- [aria-colspan](ExtensionProps.md#aria-colspan) +- [aria-controls](ExtensionProps.md#aria-controls) +- [aria-current](ExtensionProps.md#aria-current) +- [aria-describedby](ExtensionProps.md#aria-describedby) +- [aria-details](ExtensionProps.md#aria-details) +- [aria-disabled](ExtensionProps.md#aria-disabled) +- [aria-dropeffect](ExtensionProps.md#aria-dropeffect) +- [aria-errormessage](ExtensionProps.md#aria-errormessage) +- [aria-expanded](ExtensionProps.md#aria-expanded) +- [aria-flowto](ExtensionProps.md#aria-flowto) +- [aria-grabbed](ExtensionProps.md#aria-grabbed) +- [aria-haspopup](ExtensionProps.md#aria-haspopup) +- [aria-hidden](ExtensionProps.md#aria-hidden) +- [aria-invalid](ExtensionProps.md#aria-invalid) +- [aria-keyshortcuts](ExtensionProps.md#aria-keyshortcuts) +- [aria-label](ExtensionProps.md#aria-label) +- [aria-labelledby](ExtensionProps.md#aria-labelledby) +- [aria-level](ExtensionProps.md#aria-level) +- [aria-live](ExtensionProps.md#aria-live) +- [aria-modal](ExtensionProps.md#aria-modal) +- [aria-multiline](ExtensionProps.md#aria-multiline) +- [aria-multiselectable](ExtensionProps.md#aria-multiselectable) +- [aria-orientation](ExtensionProps.md#aria-orientation) +- [aria-owns](ExtensionProps.md#aria-owns) +- [aria-placeholder](ExtensionProps.md#aria-placeholder) +- [aria-posinset](ExtensionProps.md#aria-posinset) +- [aria-pressed](ExtensionProps.md#aria-pressed) +- [aria-readonly](ExtensionProps.md#aria-readonly) +- [aria-relevant](ExtensionProps.md#aria-relevant) +- [aria-required](ExtensionProps.md#aria-required) +- [aria-roledescription](ExtensionProps.md#aria-roledescription) +- [aria-rowcount](ExtensionProps.md#aria-rowcount) +- [aria-rowindex](ExtensionProps.md#aria-rowindex) +- [aria-rowspan](ExtensionProps.md#aria-rowspan) +- [aria-selected](ExtensionProps.md#aria-selected) +- [aria-setsize](ExtensionProps.md#aria-setsize) +- [aria-sort](ExtensionProps.md#aria-sort) +- [aria-valuemax](ExtensionProps.md#aria-valuemax) +- [aria-valuemin](ExtensionProps.md#aria-valuemin) +- [aria-valuenow](ExtensionProps.md#aria-valuenow) +- [aria-valuetext](ExtensionProps.md#aria-valuetext) +- [autoCapitalize](ExtensionProps.md#autocapitalize) +- [autoCorrect](ExtensionProps.md#autocorrect) +- [autoSave](ExtensionProps.md#autosave) +- [children](ExtensionProps.md#children) +- [className](ExtensionProps.md#classname) +- [color](ExtensionProps.md#color) +- [contentEditable](ExtensionProps.md#contenteditable) +- [contextMenu](ExtensionProps.md#contextmenu) +- [dangerouslySetInnerHTML](ExtensionProps.md#dangerouslysetinnerhtml) +- [datatype](ExtensionProps.md#datatype) +- [defaultChecked](ExtensionProps.md#defaultchecked) +- [defaultValue](ExtensionProps.md#defaultvalue) +- [dir](ExtensionProps.md#dir) +- [draggable](ExtensionProps.md#draggable) +- [hidden](ExtensionProps.md#hidden) +- [id](ExtensionProps.md#id) +- [inlist](ExtensionProps.md#inlist) +- [inputMode](ExtensionProps.md#inputmode) +- [is](ExtensionProps.md#is) +- [itemID](ExtensionProps.md#itemid) +- [itemProp](ExtensionProps.md#itemprop) +- [itemRef](ExtensionProps.md#itemref) +- [itemScope](ExtensionProps.md#itemscope) +- [itemType](ExtensionProps.md#itemtype) +- [lang](ExtensionProps.md#lang) +- [onAbort](ExtensionProps.md#onabort) +- [onAbortCapture](ExtensionProps.md#onabortcapture) +- [onAnimationEnd](ExtensionProps.md#onanimationend) +- [onAnimationEndCapture](ExtensionProps.md#onanimationendcapture) +- [onAnimationIteration](ExtensionProps.md#onanimationiteration) +- [onAnimationIterationCapture](ExtensionProps.md#onanimationiterationcapture) +- [onAnimationStart](ExtensionProps.md#onanimationstart) +- [onAnimationStartCapture](ExtensionProps.md#onanimationstartcapture) +- [onAuxClick](ExtensionProps.md#onauxclick) +- [onAuxClickCapture](ExtensionProps.md#onauxclickcapture) +- [onBeforeInput](ExtensionProps.md#onbeforeinput) +- [onBeforeInputCapture](ExtensionProps.md#onbeforeinputcapture) +- [onBlur](ExtensionProps.md#onblur) +- [onBlurCapture](ExtensionProps.md#onblurcapture) +- [onCanPlay](ExtensionProps.md#oncanplay) +- [onCanPlayCapture](ExtensionProps.md#oncanplaycapture) +- [onCanPlayThrough](ExtensionProps.md#oncanplaythrough) +- [onCanPlayThroughCapture](ExtensionProps.md#oncanplaythroughcapture) +- [onChange](ExtensionProps.md#onchange) +- [onChangeCapture](ExtensionProps.md#onchangecapture) +- [onClick](ExtensionProps.md#onclick) +- [onClickCapture](ExtensionProps.md#onclickcapture) +- [onCompositionEnd](ExtensionProps.md#oncompositionend) +- [onCompositionEndCapture](ExtensionProps.md#oncompositionendcapture) +- [onCompositionStart](ExtensionProps.md#oncompositionstart) +- [onCompositionStartCapture](ExtensionProps.md#oncompositionstartcapture) +- [onCompositionUpdate](ExtensionProps.md#oncompositionupdate) +- [onCompositionUpdateCapture](ExtensionProps.md#oncompositionupdatecapture) +- [onContextMenu](ExtensionProps.md#oncontextmenu) +- [onContextMenuCapture](ExtensionProps.md#oncontextmenucapture) +- [onCopy](ExtensionProps.md#oncopy) +- [onCopyCapture](ExtensionProps.md#oncopycapture) +- [onCut](ExtensionProps.md#oncut) +- [onCutCapture](ExtensionProps.md#oncutcapture) +- [onDoubleClick](ExtensionProps.md#ondoubleclick) +- [onDoubleClickCapture](ExtensionProps.md#ondoubleclickcapture) +- [onDrag](ExtensionProps.md#ondrag) +- [onDragCapture](ExtensionProps.md#ondragcapture) +- [onDragEnd](ExtensionProps.md#ondragend) +- [onDragEndCapture](ExtensionProps.md#ondragendcapture) +- [onDragEnter](ExtensionProps.md#ondragenter) +- [onDragEnterCapture](ExtensionProps.md#ondragentercapture) +- [onDragExit](ExtensionProps.md#ondragexit) +- [onDragExitCapture](ExtensionProps.md#ondragexitcapture) +- [onDragLeave](ExtensionProps.md#ondragleave) +- [onDragLeaveCapture](ExtensionProps.md#ondragleavecapture) +- [onDragOver](ExtensionProps.md#ondragover) +- [onDragOverCapture](ExtensionProps.md#ondragovercapture) +- [onDragStart](ExtensionProps.md#ondragstart) +- [onDragStartCapture](ExtensionProps.md#ondragstartcapture) +- [onDrop](ExtensionProps.md#ondrop) +- [onDropCapture](ExtensionProps.md#ondropcapture) +- [onDurationChange](ExtensionProps.md#ondurationchange) +- [onDurationChangeCapture](ExtensionProps.md#ondurationchangecapture) +- [onEmptied](ExtensionProps.md#onemptied) +- [onEmptiedCapture](ExtensionProps.md#onemptiedcapture) +- [onEncrypted](ExtensionProps.md#onencrypted) +- [onEncryptedCapture](ExtensionProps.md#onencryptedcapture) +- [onEnded](ExtensionProps.md#onended) +- [onEndedCapture](ExtensionProps.md#onendedcapture) +- [onError](ExtensionProps.md#onerror) +- [onErrorCapture](ExtensionProps.md#onerrorcapture) +- [onFocus](ExtensionProps.md#onfocus) +- [onFocusCapture](ExtensionProps.md#onfocuscapture) +- [onGotPointerCapture](ExtensionProps.md#ongotpointercapture) +- [onGotPointerCaptureCapture](ExtensionProps.md#ongotpointercapturecapture) +- [onInput](ExtensionProps.md#oninput) +- [onInputCapture](ExtensionProps.md#oninputcapture) +- [onInvalid](ExtensionProps.md#oninvalid) +- [onInvalidCapture](ExtensionProps.md#oninvalidcapture) +- [onKeyDown](ExtensionProps.md#onkeydown) +- [onKeyDownCapture](ExtensionProps.md#onkeydowncapture) +- [onKeyPress](ExtensionProps.md#onkeypress) +- [onKeyPressCapture](ExtensionProps.md#onkeypresscapture) +- [onKeyUp](ExtensionProps.md#onkeyup) +- [onKeyUpCapture](ExtensionProps.md#onkeyupcapture) +- [onLoad](ExtensionProps.md#onload) +- [onLoadCapture](ExtensionProps.md#onloadcapture) +- [onLoadStart](ExtensionProps.md#onloadstart) +- [onLoadStartCapture](ExtensionProps.md#onloadstartcapture) +- [onLoadedData](ExtensionProps.md#onloadeddata) +- [onLoadedDataCapture](ExtensionProps.md#onloadeddatacapture) +- [onLoadedMetadata](ExtensionProps.md#onloadedmetadata) +- [onLoadedMetadataCapture](ExtensionProps.md#onloadedmetadatacapture) +- [onLostPointerCapture](ExtensionProps.md#onlostpointercapture) +- [onLostPointerCaptureCapture](ExtensionProps.md#onlostpointercapturecapture) +- [onMouseDown](ExtensionProps.md#onmousedown) +- [onMouseDownCapture](ExtensionProps.md#onmousedowncapture) +- [onMouseEnter](ExtensionProps.md#onmouseenter) +- [onMouseLeave](ExtensionProps.md#onmouseleave) +- [onMouseMove](ExtensionProps.md#onmousemove) +- [onMouseMoveCapture](ExtensionProps.md#onmousemovecapture) +- [onMouseOut](ExtensionProps.md#onmouseout) +- [onMouseOutCapture](ExtensionProps.md#onmouseoutcapture) +- [onMouseOver](ExtensionProps.md#onmouseover) +- [onMouseOverCapture](ExtensionProps.md#onmouseovercapture) +- [onMouseUp](ExtensionProps.md#onmouseup) +- [onMouseUpCapture](ExtensionProps.md#onmouseupcapture) +- [onPaste](ExtensionProps.md#onpaste) +- [onPasteCapture](ExtensionProps.md#onpastecapture) +- [onPause](ExtensionProps.md#onpause) +- [onPauseCapture](ExtensionProps.md#onpausecapture) +- [onPlay](ExtensionProps.md#onplay) +- [onPlayCapture](ExtensionProps.md#onplaycapture) +- [onPlaying](ExtensionProps.md#onplaying) +- [onPlayingCapture](ExtensionProps.md#onplayingcapture) +- [onPointerCancel](ExtensionProps.md#onpointercancel) +- [onPointerCancelCapture](ExtensionProps.md#onpointercancelcapture) +- [onPointerDown](ExtensionProps.md#onpointerdown) +- [onPointerDownCapture](ExtensionProps.md#onpointerdowncapture) +- [onPointerEnter](ExtensionProps.md#onpointerenter) +- [onPointerEnterCapture](ExtensionProps.md#onpointerentercapture) +- [onPointerLeave](ExtensionProps.md#onpointerleave) +- [onPointerLeaveCapture](ExtensionProps.md#onpointerleavecapture) +- [onPointerMove](ExtensionProps.md#onpointermove) +- [onPointerMoveCapture](ExtensionProps.md#onpointermovecapture) +- [onPointerOut](ExtensionProps.md#onpointerout) +- [onPointerOutCapture](ExtensionProps.md#onpointeroutcapture) +- [onPointerOver](ExtensionProps.md#onpointerover) +- [onPointerOverCapture](ExtensionProps.md#onpointerovercapture) +- [onPointerUp](ExtensionProps.md#onpointerup) +- [onPointerUpCapture](ExtensionProps.md#onpointerupcapture) +- [onProgress](ExtensionProps.md#onprogress) +- [onProgressCapture](ExtensionProps.md#onprogresscapture) +- [onRateChange](ExtensionProps.md#onratechange) +- [onRateChangeCapture](ExtensionProps.md#onratechangecapture) +- [onReset](ExtensionProps.md#onreset) +- [onResetCapture](ExtensionProps.md#onresetcapture) +- [onScroll](ExtensionProps.md#onscroll) +- [onScrollCapture](ExtensionProps.md#onscrollcapture) +- [onSeeked](ExtensionProps.md#onseeked) +- [onSeekedCapture](ExtensionProps.md#onseekedcapture) +- [onSeeking](ExtensionProps.md#onseeking) +- [onSeekingCapture](ExtensionProps.md#onseekingcapture) +- [onSelect](ExtensionProps.md#onselect) +- [onSelectCapture](ExtensionProps.md#onselectcapture) +- [onStalled](ExtensionProps.md#onstalled) +- [onStalledCapture](ExtensionProps.md#onstalledcapture) +- [onSubmit](ExtensionProps.md#onsubmit) +- [onSubmitCapture](ExtensionProps.md#onsubmitcapture) +- [onSuspend](ExtensionProps.md#onsuspend) +- [onSuspendCapture](ExtensionProps.md#onsuspendcapture) +- [onTimeUpdate](ExtensionProps.md#ontimeupdate) +- [onTimeUpdateCapture](ExtensionProps.md#ontimeupdatecapture) +- [onTouchCancel](ExtensionProps.md#ontouchcancel) +- [onTouchCancelCapture](ExtensionProps.md#ontouchcancelcapture) +- [onTouchEnd](ExtensionProps.md#ontouchend) +- [onTouchEndCapture](ExtensionProps.md#ontouchendcapture) +- [onTouchMove](ExtensionProps.md#ontouchmove) +- [onTouchMoveCapture](ExtensionProps.md#ontouchmovecapture) +- [onTouchStart](ExtensionProps.md#ontouchstart) +- [onTouchStartCapture](ExtensionProps.md#ontouchstartcapture) +- [onTransitionEnd](ExtensionProps.md#ontransitionend) +- [onTransitionEndCapture](ExtensionProps.md#ontransitionendcapture) +- [onVolumeChange](ExtensionProps.md#onvolumechange) +- [onVolumeChangeCapture](ExtensionProps.md#onvolumechangecapture) +- [onWaiting](ExtensionProps.md#onwaiting) +- [onWaitingCapture](ExtensionProps.md#onwaitingcapture) +- [onWheel](ExtensionProps.md#onwheel) +- [onWheelCapture](ExtensionProps.md#onwheelcapture) +- [placeholder](ExtensionProps.md#placeholder) +- [prefix](ExtensionProps.md#prefix) +- [property](ExtensionProps.md#property) +- [radioGroup](ExtensionProps.md#radiogroup) +- [resource](ExtensionProps.md#resource) +- [results](ExtensionProps.md#results) +- [role](ExtensionProps.md#role) +- [security](ExtensionProps.md#security) +- [slot](ExtensionProps.md#slot) +- [spellCheck](ExtensionProps.md#spellcheck) +- [style](ExtensionProps.md#style) +- [suppressContentEditableWarning](ExtensionProps.md#suppresscontenteditablewarning) +- [suppressHydrationWarning](ExtensionProps.md#suppresshydrationwarning) +- [tabIndex](ExtensionProps.md#tabindex) +- [title](ExtensionProps.md#title) +- [translate](ExtensionProps.md#translate) +- [typeof](ExtensionProps.md#typeof) +- [unselectable](ExtensionProps.md#unselectable) +- [vocab](ExtensionProps.md#vocab) + +## Extension Properties + +### state + +• `Optional` **state**: `Record`<`string`, `unknown`\> + +#### Defined in + +[packages/framework/esm-react-utils/src/Extension.tsx:8](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/Extension.tsx#L8) + +___ + +## Other Properties + +### about + +• `Optional` **about**: `string` + +#### Inherited from + +React.HTMLAttributes.about + +#### Defined in + +node_modules/@types/react/index.d.ts:1875 + +___ + +### accessKey + +• `Optional` **accessKey**: `string` + +#### Inherited from + +React.HTMLAttributes.accessKey + +#### Defined in + +node_modules/@types/react/index.d.ts:1851 + +___ + +### aria-activedescendant + +• `Optional` **aria-activedescendant**: `string` + +Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. + +#### Inherited from + +React.HTMLAttributes.aria-activedescendant + +#### Defined in + +node_modules/@types/react/index.d.ts:1585 + +___ + +### aria-atomic + +• `Optional` **aria-atomic**: `Booleanish` + +Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. + +#### Inherited from + +React.HTMLAttributes.aria-atomic + +#### Defined in + +node_modules/@types/react/index.d.ts:1587 + +___ + +### aria-autocomplete + +• `Optional` **aria-autocomplete**: ``"list"`` \| ``"none"`` \| ``"inline"`` \| ``"both"`` + +Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be +presented if they are made. + +#### Inherited from + +React.HTMLAttributes.aria-autocomplete + +#### Defined in + +node_modules/@types/react/index.d.ts:1592 + +___ + +### aria-busy + +• `Optional` **aria-busy**: `Booleanish` + +Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. + +#### Inherited from + +React.HTMLAttributes.aria-busy + +#### Defined in + +node_modules/@types/react/index.d.ts:1594 + +___ + +### aria-checked + +• `Optional` **aria-checked**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"mixed"`` + +Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + +**`see`** aria-pressed @see aria-selected. + +#### Inherited from + +React.HTMLAttributes.aria-checked + +#### Defined in + +node_modules/@types/react/index.d.ts:1599 + +___ + +### aria-colcount + +• `Optional` **aria-colcount**: `number` + +Defines the total number of columns in a table, grid, or treegrid. + +**`see`** aria-colindex. + +#### Inherited from + +React.HTMLAttributes.aria-colcount + +#### Defined in + +node_modules/@types/react/index.d.ts:1604 + +___ + +### aria-colindex + +• `Optional` **aria-colindex**: `number` + +Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + +**`see`** aria-colcount @see aria-colspan. + +#### Inherited from + +React.HTMLAttributes.aria-colindex + +#### Defined in + +node_modules/@types/react/index.d.ts:1609 + +___ + +### aria-colspan + +• `Optional` **aria-colspan**: `number` + +Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + +**`see`** aria-colindex @see aria-rowspan. + +#### Inherited from + +React.HTMLAttributes.aria-colspan + +#### Defined in + +node_modules/@types/react/index.d.ts:1614 + +___ + +### aria-controls + +• `Optional` **aria-controls**: `string` + +Identifies the element (or elements) whose contents or presence are controlled by the current element. + +**`see`** aria-owns. + +#### Inherited from + +React.HTMLAttributes.aria-controls + +#### Defined in + +node_modules/@types/react/index.d.ts:1619 + +___ + +### aria-current + +• `Optional` **aria-current**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"page"`` \| ``"step"`` \| ``"location"`` \| ``"date"`` \| ``"time"`` + +Indicates the element that represents the current item within a container or set of related elements. + +#### Inherited from + +React.HTMLAttributes.aria-current + +#### Defined in + +node_modules/@types/react/index.d.ts:1621 + +___ + +### aria-describedby + +• `Optional` **aria-describedby**: `string` + +Identifies the element (or elements) that describes the object. + +**`see`** aria-labelledby + +#### Inherited from + +React.HTMLAttributes.aria-describedby + +#### Defined in + +node_modules/@types/react/index.d.ts:1626 + +___ + +### aria-details + +• `Optional` **aria-details**: `string` + +Identifies the element that provides a detailed, extended description for the object. + +**`see`** aria-describedby. + +#### Inherited from + +React.HTMLAttributes.aria-details + +#### Defined in + +node_modules/@types/react/index.d.ts:1631 + +___ + +### aria-disabled + +• `Optional` **aria-disabled**: `Booleanish` + +Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + +**`see`** aria-hidden @see aria-readonly. + +#### Inherited from + +React.HTMLAttributes.aria-disabled + +#### Defined in + +node_modules/@types/react/index.d.ts:1636 + +___ + +### aria-dropeffect + +• `Optional` **aria-dropeffect**: ``"link"`` \| ``"none"`` \| ``"copy"`` \| ``"execute"`` \| ``"move"`` \| ``"popup"`` + +Indicates what functions can be performed when a dragged object is released on the drop target. + +**`deprecated`** in ARIA 1.1 + +#### Inherited from + +React.HTMLAttributes.aria-dropeffect + +#### Defined in + +node_modules/@types/react/index.d.ts:1641 + +___ + +### aria-errormessage + +• `Optional` **aria-errormessage**: `string` + +Identifies the element that provides an error message for the object. + +**`see`** aria-invalid @see aria-describedby. + +#### Inherited from + +React.HTMLAttributes.aria-errormessage + +#### Defined in + +node_modules/@types/react/index.d.ts:1646 + +___ + +### aria-expanded + +• `Optional` **aria-expanded**: `Booleanish` + +Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. + +#### Inherited from + +React.HTMLAttributes.aria-expanded + +#### Defined in + +node_modules/@types/react/index.d.ts:1648 + +___ + +### aria-flowto + +• `Optional` **aria-flowto**: `string` + +Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, +allows assistive technology to override the general default of reading in document source order. + +#### Inherited from + +React.HTMLAttributes.aria-flowto + +#### Defined in + +node_modules/@types/react/index.d.ts:1653 + +___ + +### aria-grabbed + +• `Optional` **aria-grabbed**: `Booleanish` + +Indicates an element's "grabbed" state in a drag-and-drop operation. + +**`deprecated`** in ARIA 1.1 + +#### Inherited from + +React.HTMLAttributes.aria-grabbed + +#### Defined in + +node_modules/@types/react/index.d.ts:1658 + +___ + +### aria-haspopup + +• `Optional` **aria-haspopup**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"dialog"`` \| ``"grid"`` \| ``"listbox"`` \| ``"menu"`` \| ``"tree"`` + +Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. + +#### Inherited from + +React.HTMLAttributes.aria-haspopup + +#### Defined in + +node_modules/@types/react/index.d.ts:1660 + +___ + +### aria-hidden + +• `Optional` **aria-hidden**: `Booleanish` + +Indicates whether the element is exposed to an accessibility API. + +**`see`** aria-disabled. + +#### Inherited from + +React.HTMLAttributes.aria-hidden + +#### Defined in + +node_modules/@types/react/index.d.ts:1665 + +___ + +### aria-invalid + +• `Optional` **aria-invalid**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"grammar"`` \| ``"spelling"`` + +Indicates the entered value does not conform to the format expected by the application. + +**`see`** aria-errormessage. + +#### Inherited from + +React.HTMLAttributes.aria-invalid + +#### Defined in + +node_modules/@types/react/index.d.ts:1670 + +___ + +### aria-keyshortcuts + +• `Optional` **aria-keyshortcuts**: `string` + +Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. + +#### Inherited from + +React.HTMLAttributes.aria-keyshortcuts + +#### Defined in + +node_modules/@types/react/index.d.ts:1672 + +___ + +### aria-label + +• `Optional` **aria-label**: `string` + +Defines a string value that labels the current element. + +**`see`** aria-labelledby. + +#### Inherited from + +React.HTMLAttributes.aria-label + +#### Defined in + +node_modules/@types/react/index.d.ts:1677 + +___ + +### aria-labelledby + +• `Optional` **aria-labelledby**: `string` + +Identifies the element (or elements) that labels the current element. + +**`see`** aria-describedby. + +#### Inherited from + +React.HTMLAttributes.aria-labelledby + +#### Defined in + +node_modules/@types/react/index.d.ts:1682 + +___ + +### aria-level + +• `Optional` **aria-level**: `number` + +Defines the hierarchical level of an element within a structure. + +#### Inherited from + +React.HTMLAttributes.aria-level + +#### Defined in + +node_modules/@types/react/index.d.ts:1684 + +___ + +### aria-live + +• `Optional` **aria-live**: ``"off"`` \| ``"assertive"`` \| ``"polite"`` + +Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. + +#### Inherited from + +React.HTMLAttributes.aria-live + +#### Defined in + +node_modules/@types/react/index.d.ts:1686 + +___ + +### aria-modal + +• `Optional` **aria-modal**: `Booleanish` + +Indicates whether an element is modal when displayed. + +#### Inherited from + +React.HTMLAttributes.aria-modal + +#### Defined in + +node_modules/@types/react/index.d.ts:1688 + +___ + +### aria-multiline + +• `Optional` **aria-multiline**: `Booleanish` + +Indicates whether a text box accepts multiple lines of input or only a single line. + +#### Inherited from + +React.HTMLAttributes.aria-multiline + +#### Defined in + +node_modules/@types/react/index.d.ts:1690 + +___ + +### aria-multiselectable + +• `Optional` **aria-multiselectable**: `Booleanish` + +Indicates that the user may select more than one item from the current selectable descendants. + +#### Inherited from + +React.HTMLAttributes.aria-multiselectable + +#### Defined in + +node_modules/@types/react/index.d.ts:1692 + +___ + +### aria-orientation + +• `Optional` **aria-orientation**: ``"horizontal"`` \| ``"vertical"`` + +Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. + +#### Inherited from + +React.HTMLAttributes.aria-orientation + +#### Defined in + +node_modules/@types/react/index.d.ts:1694 + +___ + +### aria-owns + +• `Optional` **aria-owns**: `string` + +Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship +between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + +**`see`** aria-controls. + +#### Inherited from + +React.HTMLAttributes.aria-owns + +#### Defined in + +node_modules/@types/react/index.d.ts:1700 + +___ + +### aria-placeholder + +• `Optional` **aria-placeholder**: `string` + +Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. +A hint could be a sample value or a brief description of the expected format. + +#### Inherited from + +React.HTMLAttributes.aria-placeholder + +#### Defined in + +node_modules/@types/react/index.d.ts:1705 + +___ + +### aria-posinset + +• `Optional` **aria-posinset**: `number` + +Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + +**`see`** aria-setsize. + +#### Inherited from + +React.HTMLAttributes.aria-posinset + +#### Defined in + +node_modules/@types/react/index.d.ts:1710 + +___ + +### aria-pressed + +• `Optional` **aria-pressed**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"mixed"`` + +Indicates the current "pressed" state of toggle buttons. + +**`see`** aria-checked @see aria-selected. + +#### Inherited from + +React.HTMLAttributes.aria-pressed + +#### Defined in + +node_modules/@types/react/index.d.ts:1715 + +___ + +### aria-readonly + +• `Optional` **aria-readonly**: `Booleanish` + +Indicates that the element is not editable, but is otherwise operable. + +**`see`** aria-disabled. + +#### Inherited from + +React.HTMLAttributes.aria-readonly + +#### Defined in + +node_modules/@types/react/index.d.ts:1720 + +___ + +### aria-relevant + +• `Optional` **aria-relevant**: ``"text"`` \| ``"additions"`` \| ``"additions removals"`` \| ``"additions text"`` \| ``"all"`` \| ``"removals"`` \| ``"removals additions"`` \| ``"removals text"`` \| ``"text additions"`` \| ``"text removals"`` + +Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + +**`see`** aria-atomic. + +#### Inherited from + +React.HTMLAttributes.aria-relevant + +#### Defined in + +node_modules/@types/react/index.d.ts:1725 + +___ + +### aria-required + +• `Optional` **aria-required**: `Booleanish` + +Indicates that user input is required on the element before a form may be submitted. + +#### Inherited from + +React.HTMLAttributes.aria-required + +#### Defined in + +node_modules/@types/react/index.d.ts:1727 + +___ + +### aria-roledescription + +• `Optional` **aria-roledescription**: `string` + +Defines a human-readable, author-localized description for the role of an element. + +#### Inherited from + +React.HTMLAttributes.aria-roledescription + +#### Defined in + +node_modules/@types/react/index.d.ts:1729 + +___ + +### aria-rowcount + +• `Optional` **aria-rowcount**: `number` + +Defines the total number of rows in a table, grid, or treegrid. + +**`see`** aria-rowindex. + +#### Inherited from + +React.HTMLAttributes.aria-rowcount + +#### Defined in + +node_modules/@types/react/index.d.ts:1734 + +___ + +### aria-rowindex + +• `Optional` **aria-rowindex**: `number` + +Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + +**`see`** aria-rowcount @see aria-rowspan. + +#### Inherited from + +React.HTMLAttributes.aria-rowindex + +#### Defined in + +node_modules/@types/react/index.d.ts:1739 + +___ + +### aria-rowspan + +• `Optional` **aria-rowspan**: `number` + +Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + +**`see`** aria-rowindex @see aria-colspan. + +#### Inherited from + +React.HTMLAttributes.aria-rowspan + +#### Defined in + +node_modules/@types/react/index.d.ts:1744 + +___ + +### aria-selected + +• `Optional` **aria-selected**: `Booleanish` + +Indicates the current "selected" state of various widgets. + +**`see`** aria-checked @see aria-pressed. + +#### Inherited from + +React.HTMLAttributes.aria-selected + +#### Defined in + +node_modules/@types/react/index.d.ts:1749 + +___ + +### aria-setsize + +• `Optional` **aria-setsize**: `number` + +Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + +**`see`** aria-posinset. + +#### Inherited from + +React.HTMLAttributes.aria-setsize + +#### Defined in + +node_modules/@types/react/index.d.ts:1754 + +___ + +### aria-sort + +• `Optional` **aria-sort**: ``"none"`` \| ``"ascending"`` \| ``"descending"`` \| ``"other"`` + +Indicates if items in a table or grid are sorted in ascending or descending order. + +#### Inherited from + +React.HTMLAttributes.aria-sort + +#### Defined in + +node_modules/@types/react/index.d.ts:1756 + +___ + +### aria-valuemax + +• `Optional` **aria-valuemax**: `number` + +Defines the maximum allowed value for a range widget. + +#### Inherited from + +React.HTMLAttributes.aria-valuemax + +#### Defined in + +node_modules/@types/react/index.d.ts:1758 + +___ + +### aria-valuemin + +• `Optional` **aria-valuemin**: `number` + +Defines the minimum allowed value for a range widget. + +#### Inherited from + +React.HTMLAttributes.aria-valuemin + +#### Defined in + +node_modules/@types/react/index.d.ts:1760 + +___ + +### aria-valuenow + +• `Optional` **aria-valuenow**: `number` + +Defines the current value for a range widget. + +**`see`** aria-valuetext. + +#### Inherited from + +React.HTMLAttributes.aria-valuenow + +#### Defined in + +node_modules/@types/react/index.d.ts:1765 + +___ + +### aria-valuetext + +• `Optional` **aria-valuetext**: `string` + +Defines the human readable text alternative of aria-valuenow for a range widget. + +#### Inherited from + +React.HTMLAttributes.aria-valuetext + +#### Defined in + +node_modules/@types/react/index.d.ts:1767 + +___ + +### autoCapitalize + +• `Optional` **autoCapitalize**: `string` + +#### Inherited from + +React.HTMLAttributes.autoCapitalize + +#### Defined in + +node_modules/@types/react/index.d.ts:1885 + +___ + +### autoCorrect + +• `Optional` **autoCorrect**: `string` + +#### Inherited from + +React.HTMLAttributes.autoCorrect + +#### Defined in + +node_modules/@types/react/index.d.ts:1886 + +___ + +### autoSave + +• `Optional` **autoSave**: `string` + +#### Inherited from + +React.HTMLAttributes.autoSave + +#### Defined in + +node_modules/@types/react/index.d.ts:1887 + +___ + +### children + +• `Optional` **children**: `ReactI18NextChild` \| `Iterable`<`ReactI18NextChild`\> + +#### Inherited from + +React.HTMLAttributes.children + +#### Defined in + +node_modules/react-i18next/ts4.1/index.d.ts:110 + +___ + +### className + +• `Optional` **className**: `string` + +#### Inherited from + +React.HTMLAttributes.className + +#### Defined in + +node_modules/@types/react/index.d.ts:1852 + +___ + +### color + +• `Optional` **color**: `string` + +#### Inherited from + +React.HTMLAttributes.color + +#### Defined in + +node_modules/@types/react/index.d.ts:1888 + +___ + +### contentEditable + +• `Optional` **contentEditable**: `Booleanish` \| ``"inherit"`` + +#### Inherited from + +React.HTMLAttributes.contentEditable + +#### Defined in + +node_modules/@types/react/index.d.ts:1853 + +___ + +### contextMenu + +• `Optional` **contextMenu**: `string` + +#### Inherited from + +React.HTMLAttributes.contextMenu + +#### Defined in + +node_modules/@types/react/index.d.ts:1854 + +___ + +### dangerouslySetInnerHTML + +• `Optional` **dangerouslySetInnerHTML**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `__html` | `string` | + +#### Inherited from + +React.HTMLAttributes.dangerouslySetInnerHTML + +#### Defined in + +node_modules/@types/react/index.d.ts:1374 + +___ + +### datatype + +• `Optional` **datatype**: `string` + +#### Inherited from + +React.HTMLAttributes.datatype + +#### Defined in + +node_modules/@types/react/index.d.ts:1876 + +___ + +### defaultChecked + +• `Optional` **defaultChecked**: `boolean` + +#### Inherited from + +React.HTMLAttributes.defaultChecked + +#### Defined in + +node_modules/@types/react/index.d.ts:1845 + +___ + +### defaultValue + +• `Optional` **defaultValue**: `string` \| `number` \| readonly `string`[] + +#### Inherited from + +React.HTMLAttributes.defaultValue + +#### Defined in + +node_modules/@types/react/index.d.ts:1846 + +___ + +### dir + +• `Optional` **dir**: `string` + +#### Inherited from + +React.HTMLAttributes.dir + +#### Defined in + +node_modules/@types/react/index.d.ts:1855 + +___ + +### draggable + +• `Optional` **draggable**: `Booleanish` + +#### Inherited from + +React.HTMLAttributes.draggable + +#### Defined in + +node_modules/@types/react/index.d.ts:1856 + +___ + +### hidden + +• `Optional` **hidden**: `boolean` + +#### Inherited from + +React.HTMLAttributes.hidden + +#### Defined in + +node_modules/@types/react/index.d.ts:1857 + +___ + +### id + +• `Optional` **id**: `string` + +#### Inherited from + +React.HTMLAttributes.id + +#### Defined in + +node_modules/@types/react/index.d.ts:1858 + +___ + +### inlist + +• `Optional` **inlist**: `any` + +#### Inherited from + +React.HTMLAttributes.inlist + +#### Defined in + +node_modules/@types/react/index.d.ts:1877 + +___ + +### inputMode + +• `Optional` **inputMode**: ``"none"`` \| ``"search"`` \| ``"text"`` \| ``"tel"`` \| ``"url"`` \| ``"email"`` \| ``"numeric"`` \| ``"decimal"`` + +Hints at the type of data that might be entered by the user while editing the element or its contents + +**`see`** https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute + +#### Inherited from + +React.HTMLAttributes.inputMode + +#### Defined in + +node_modules/@types/react/index.d.ts:1903 + +___ + +### is + +• `Optional` **is**: `string` + +Specify that a standard HTML element should behave like a defined custom built-in element + +**`see`** https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is + +#### Inherited from + +React.HTMLAttributes.is + +#### Defined in + +node_modules/@types/react/index.d.ts:1908 + +___ + +### itemID + +• `Optional` **itemID**: `string` + +#### Inherited from + +React.HTMLAttributes.itemID + +#### Defined in + +node_modules/@types/react/index.d.ts:1892 + +___ + +### itemProp + +• `Optional` **itemProp**: `string` + +#### Inherited from + +React.HTMLAttributes.itemProp + +#### Defined in + +node_modules/@types/react/index.d.ts:1889 + +___ + +### itemRef + +• `Optional` **itemRef**: `string` + +#### Inherited from + +React.HTMLAttributes.itemRef + +#### Defined in + +node_modules/@types/react/index.d.ts:1893 + +___ + +### itemScope + +• `Optional` **itemScope**: `boolean` + +#### Inherited from + +React.HTMLAttributes.itemScope + +#### Defined in + +node_modules/@types/react/index.d.ts:1890 + +___ + +### itemType + +• `Optional` **itemType**: `string` + +#### Inherited from + +React.HTMLAttributes.itemType + +#### Defined in + +node_modules/@types/react/index.d.ts:1891 + +___ + +### lang + +• `Optional` **lang**: `string` + +#### Inherited from + +React.HTMLAttributes.lang + +#### Defined in + +node_modules/@types/react/index.d.ts:1859 + +___ + +### onAbort + +• `Optional` **onAbort**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAbort + +#### Defined in + +node_modules/@types/react/index.d.ts:1431 + +___ + +### onAbortCapture + +• `Optional` **onAbortCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAbortCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1432 + +___ + +### onAnimationEnd + +• `Optional` **onAnimationEnd**: `AnimationEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAnimationEnd + +#### Defined in + +node_modules/@types/react/index.d.ts:1561 + +___ + +### onAnimationEndCapture + +• `Optional` **onAnimationEndCapture**: `AnimationEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAnimationEndCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1562 + +___ + +### onAnimationIteration + +• `Optional` **onAnimationIteration**: `AnimationEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAnimationIteration + +#### Defined in + +node_modules/@types/react/index.d.ts:1563 + +___ + +### onAnimationIterationCapture + +• `Optional` **onAnimationIterationCapture**: `AnimationEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAnimationIterationCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1564 + +___ + +### onAnimationStart + +• `Optional` **onAnimationStart**: `AnimationEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAnimationStart + +#### Defined in + +node_modules/@types/react/index.d.ts:1559 + +___ + +### onAnimationStartCapture + +• `Optional` **onAnimationStartCapture**: `AnimationEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAnimationStartCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1560 + +___ + +### onAuxClick + +• `Optional` **onAuxClick**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAuxClick + +#### Defined in + +node_modules/@types/react/index.d.ts:1477 + +___ + +### onAuxClickCapture + +• `Optional` **onAuxClickCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onAuxClickCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1478 + +___ + +### onBeforeInput + +• `Optional` **onBeforeInput**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onBeforeInput + +#### Defined in + +node_modules/@types/react/index.d.ts:1403 + +___ + +### onBeforeInputCapture + +• `Optional` **onBeforeInputCapture**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onBeforeInputCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1404 + +___ + +### onBlur + +• `Optional` **onBlur**: `FocusEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onBlur + +#### Defined in + +node_modules/@types/react/index.d.ts:1397 + +___ + +### onBlurCapture + +• `Optional` **onBlurCapture**: `FocusEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onBlurCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1398 + +___ + +### onCanPlay + +• `Optional` **onCanPlay**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCanPlay + +#### Defined in + +node_modules/@types/react/index.d.ts:1433 + +___ + +### onCanPlayCapture + +• `Optional` **onCanPlayCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCanPlayCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1434 + +___ + +### onCanPlayThrough + +• `Optional` **onCanPlayThrough**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCanPlayThrough + +#### Defined in + +node_modules/@types/react/index.d.ts:1435 + +___ + +### onCanPlayThroughCapture + +• `Optional` **onCanPlayThroughCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCanPlayThroughCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1436 + +___ + +### onChange + +• `Optional` **onChange**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onChange + +#### Defined in + +node_modules/@types/react/index.d.ts:1401 + +___ + +### onChangeCapture + +• `Optional` **onChangeCapture**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onChangeCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1402 + +___ + +### onClick + +• `Optional` **onClick**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onClick + +#### Defined in + +node_modules/@types/react/index.d.ts:1479 + +___ + +### onClickCapture + +• `Optional` **onClickCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onClickCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1480 + +___ + +### onCompositionEnd + +• `Optional` **onCompositionEnd**: `CompositionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCompositionEnd + +#### Defined in + +node_modules/@types/react/index.d.ts:1387 + +___ + +### onCompositionEndCapture + +• `Optional` **onCompositionEndCapture**: `CompositionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCompositionEndCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1388 + +___ + +### onCompositionStart + +• `Optional` **onCompositionStart**: `CompositionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCompositionStart + +#### Defined in + +node_modules/@types/react/index.d.ts:1389 + +___ + +### onCompositionStartCapture + +• `Optional` **onCompositionStartCapture**: `CompositionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCompositionStartCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1390 + +___ + +### onCompositionUpdate + +• `Optional` **onCompositionUpdate**: `CompositionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCompositionUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:1391 + +___ + +### onCompositionUpdateCapture + +• `Optional` **onCompositionUpdateCapture**: `CompositionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCompositionUpdateCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1392 + +___ + +### onContextMenu + +• `Optional` **onContextMenu**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onContextMenu + +#### Defined in + +node_modules/@types/react/index.d.ts:1481 + +___ + +### onContextMenuCapture + +• `Optional` **onContextMenuCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onContextMenuCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1482 + +___ + +### onCopy + +• `Optional` **onCopy**: `ClipboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCopy + +#### Defined in + +node_modules/@types/react/index.d.ts:1379 + +___ + +### onCopyCapture + +• `Optional` **onCopyCapture**: `ClipboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCopyCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1380 + +___ + +### onCut + +• `Optional` **onCut**: `ClipboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCut + +#### Defined in + +node_modules/@types/react/index.d.ts:1381 + +___ + +### onCutCapture + +• `Optional` **onCutCapture**: `ClipboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onCutCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1382 + +___ + +### onDoubleClick + +• `Optional` **onDoubleClick**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDoubleClick + +#### Defined in + +node_modules/@types/react/index.d.ts:1483 + +___ + +### onDoubleClickCapture + +• `Optional` **onDoubleClickCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDoubleClickCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1484 + +___ + +### onDrag + +• `Optional` **onDrag**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDrag + +#### Defined in + +node_modules/@types/react/index.d.ts:1485 + +___ + +### onDragCapture + +• `Optional` **onDragCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1486 + +___ + +### onDragEnd + +• `Optional` **onDragEnd**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragEnd + +#### Defined in + +node_modules/@types/react/index.d.ts:1487 + +___ + +### onDragEndCapture + +• `Optional` **onDragEndCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragEndCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1488 + +___ + +### onDragEnter + +• `Optional` **onDragEnter**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragEnter + +#### Defined in + +node_modules/@types/react/index.d.ts:1489 + +___ + +### onDragEnterCapture + +• `Optional` **onDragEnterCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragEnterCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1490 + +___ + +### onDragExit + +• `Optional` **onDragExit**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragExit + +#### Defined in + +node_modules/@types/react/index.d.ts:1491 + +___ + +### onDragExitCapture + +• `Optional` **onDragExitCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragExitCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1492 + +___ + +### onDragLeave + +• `Optional` **onDragLeave**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragLeave + +#### Defined in + +node_modules/@types/react/index.d.ts:1493 + +___ + +### onDragLeaveCapture + +• `Optional` **onDragLeaveCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragLeaveCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1494 + +___ + +### onDragOver + +• `Optional` **onDragOver**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragOver + +#### Defined in + +node_modules/@types/react/index.d.ts:1495 + +___ + +### onDragOverCapture + +• `Optional` **onDragOverCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragOverCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1496 + +___ + +### onDragStart + +• `Optional` **onDragStart**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragStart + +#### Defined in + +node_modules/@types/react/index.d.ts:1497 + +___ + +### onDragStartCapture + +• `Optional` **onDragStartCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDragStartCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1498 + +___ + +### onDrop + +• `Optional` **onDrop**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDrop + +#### Defined in + +node_modules/@types/react/index.d.ts:1499 + +___ + +### onDropCapture + +• `Optional` **onDropCapture**: `DragEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDropCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1500 + +___ + +### onDurationChange + +• `Optional` **onDurationChange**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDurationChange + +#### Defined in + +node_modules/@types/react/index.d.ts:1437 + +___ + +### onDurationChangeCapture + +• `Optional` **onDurationChangeCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onDurationChangeCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1438 + +___ + +### onEmptied + +• `Optional` **onEmptied**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onEmptied + +#### Defined in + +node_modules/@types/react/index.d.ts:1439 + +___ + +### onEmptiedCapture + +• `Optional` **onEmptiedCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onEmptiedCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1440 + +___ + +### onEncrypted + +• `Optional` **onEncrypted**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onEncrypted + +#### Defined in + +node_modules/@types/react/index.d.ts:1441 + +___ + +### onEncryptedCapture + +• `Optional` **onEncryptedCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onEncryptedCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1442 + +___ + +### onEnded + +• `Optional` **onEnded**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onEnded + +#### Defined in + +node_modules/@types/react/index.d.ts:1443 + +___ + +### onEndedCapture + +• `Optional` **onEndedCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onEndedCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1444 + +___ + +### onError + +• `Optional` **onError**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onError + +#### Defined in + +node_modules/@types/react/index.d.ts:1417 + +___ + +### onErrorCapture + +• `Optional` **onErrorCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onErrorCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1418 + +___ + +### onFocus + +• `Optional` **onFocus**: `FocusEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onFocus + +#### Defined in + +node_modules/@types/react/index.d.ts:1395 + +___ + +### onFocusCapture + +• `Optional` **onFocusCapture**: `FocusEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onFocusCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1396 + +___ + +### onGotPointerCapture + +• `Optional` **onGotPointerCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onGotPointerCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1545 + +___ + +### onGotPointerCaptureCapture + +• `Optional` **onGotPointerCaptureCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onGotPointerCaptureCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1546 + +___ + +### onInput + +• `Optional` **onInput**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onInput + +#### Defined in + +node_modules/@types/react/index.d.ts:1405 + +___ + +### onInputCapture + +• `Optional` **onInputCapture**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onInputCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1406 + +___ + +### onInvalid + +• `Optional` **onInvalid**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onInvalid + +#### Defined in + +node_modules/@types/react/index.d.ts:1411 + +___ + +### onInvalidCapture + +• `Optional` **onInvalidCapture**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onInvalidCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1412 + +___ + +### onKeyDown + +• `Optional` **onKeyDown**: `KeyboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onKeyDown + +#### Defined in + +node_modules/@types/react/index.d.ts:1421 + +___ + +### onKeyDownCapture + +• `Optional` **onKeyDownCapture**: `KeyboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onKeyDownCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1422 + +___ + +### onKeyPress + +• `Optional` **onKeyPress**: `KeyboardEventHandler`<`HTMLDivElement`\> + +**`deprecated`** + +#### Inherited from + +React.HTMLAttributes.onKeyPress + +#### Defined in + +node_modules/@types/react/index.d.ts:1424 + +___ + +### onKeyPressCapture + +• `Optional` **onKeyPressCapture**: `KeyboardEventHandler`<`HTMLDivElement`\> + +**`deprecated`** + +#### Inherited from + +React.HTMLAttributes.onKeyPressCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1426 + +___ + +### onKeyUp + +• `Optional` **onKeyUp**: `KeyboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onKeyUp + +#### Defined in + +node_modules/@types/react/index.d.ts:1427 + +___ + +### onKeyUpCapture + +• `Optional` **onKeyUpCapture**: `KeyboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onKeyUpCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1428 + +___ + +### onLoad + +• `Optional` **onLoad**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoad + +#### Defined in + +node_modules/@types/react/index.d.ts:1415 + +___ + +### onLoadCapture + +• `Optional` **onLoadCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1416 + +___ + +### onLoadStart + +• `Optional` **onLoadStart**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadStart + +#### Defined in + +node_modules/@types/react/index.d.ts:1449 + +___ + +### onLoadStartCapture + +• `Optional` **onLoadStartCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadStartCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1450 + +___ + +### onLoadedData + +• `Optional` **onLoadedData**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadedData + +#### Defined in + +node_modules/@types/react/index.d.ts:1445 + +___ + +### onLoadedDataCapture + +• `Optional` **onLoadedDataCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadedDataCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1446 + +___ + +### onLoadedMetadata + +• `Optional` **onLoadedMetadata**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadedMetadata + +#### Defined in + +node_modules/@types/react/index.d.ts:1447 + +___ + +### onLoadedMetadataCapture + +• `Optional` **onLoadedMetadataCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLoadedMetadataCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1448 + +___ + +### onLostPointerCapture + +• `Optional` **onLostPointerCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLostPointerCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1547 + +___ + +### onLostPointerCaptureCapture + +• `Optional` **onLostPointerCaptureCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onLostPointerCaptureCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1548 + +___ + +### onMouseDown + +• `Optional` **onMouseDown**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseDown + +#### Defined in + +node_modules/@types/react/index.d.ts:1501 + +___ + +### onMouseDownCapture + +• `Optional` **onMouseDownCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseDownCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1502 + +___ + +### onMouseEnter + +• `Optional` **onMouseEnter**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseEnter + +#### Defined in + +node_modules/@types/react/index.d.ts:1503 + +___ + +### onMouseLeave + +• `Optional` **onMouseLeave**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseLeave + +#### Defined in + +node_modules/@types/react/index.d.ts:1504 + +___ + +### onMouseMove + +• `Optional` **onMouseMove**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseMove + +#### Defined in + +node_modules/@types/react/index.d.ts:1505 + +___ + +### onMouseMoveCapture + +• `Optional` **onMouseMoveCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseMoveCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1506 + +___ + +### onMouseOut + +• `Optional` **onMouseOut**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseOut + +#### Defined in + +node_modules/@types/react/index.d.ts:1507 + +___ + +### onMouseOutCapture + +• `Optional` **onMouseOutCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseOutCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1508 + +___ + +### onMouseOver + +• `Optional` **onMouseOver**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseOver + +#### Defined in + +node_modules/@types/react/index.d.ts:1509 + +___ + +### onMouseOverCapture + +• `Optional` **onMouseOverCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseOverCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1510 + +___ + +### onMouseUp + +• `Optional` **onMouseUp**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseUp + +#### Defined in + +node_modules/@types/react/index.d.ts:1511 + +___ + +### onMouseUpCapture + +• `Optional` **onMouseUpCapture**: `MouseEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onMouseUpCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1512 + +___ + +### onPaste + +• `Optional` **onPaste**: `ClipboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPaste + +#### Defined in + +node_modules/@types/react/index.d.ts:1383 + +___ + +### onPasteCapture + +• `Optional` **onPasteCapture**: `ClipboardEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPasteCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1384 + +___ + +### onPause + +• `Optional` **onPause**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPause + +#### Defined in + +node_modules/@types/react/index.d.ts:1451 + +___ + +### onPauseCapture + +• `Optional` **onPauseCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPauseCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1452 + +___ + +### onPlay + +• `Optional` **onPlay**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPlay + +#### Defined in + +node_modules/@types/react/index.d.ts:1453 + +___ + +### onPlayCapture + +• `Optional` **onPlayCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPlayCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1454 + +___ + +### onPlaying + +• `Optional` **onPlaying**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPlaying + +#### Defined in + +node_modules/@types/react/index.d.ts:1455 + +___ + +### onPlayingCapture + +• `Optional` **onPlayingCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPlayingCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1456 + +___ + +### onPointerCancel + +• `Optional` **onPointerCancel**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerCancel + +#### Defined in + +node_modules/@types/react/index.d.ts:1535 + +___ + +### onPointerCancelCapture + +• `Optional` **onPointerCancelCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerCancelCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1536 + +___ + +### onPointerDown + +• `Optional` **onPointerDown**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerDown + +#### Defined in + +node_modules/@types/react/index.d.ts:1529 + +___ + +### onPointerDownCapture + +• `Optional` **onPointerDownCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerDownCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1530 + +___ + +### onPointerEnter + +• `Optional` **onPointerEnter**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerEnter + +#### Defined in + +node_modules/@types/react/index.d.ts:1537 + +___ + +### onPointerEnterCapture + +• `Optional` **onPointerEnterCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerEnterCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1538 + +___ + +### onPointerLeave + +• `Optional` **onPointerLeave**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerLeave + +#### Defined in + +node_modules/@types/react/index.d.ts:1539 + +___ + +### onPointerLeaveCapture + +• `Optional` **onPointerLeaveCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerLeaveCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1540 + +___ + +### onPointerMove + +• `Optional` **onPointerMove**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerMove + +#### Defined in + +node_modules/@types/react/index.d.ts:1531 + +___ + +### onPointerMoveCapture + +• `Optional` **onPointerMoveCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerMoveCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1532 + +___ + +### onPointerOut + +• `Optional` **onPointerOut**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerOut + +#### Defined in + +node_modules/@types/react/index.d.ts:1543 + +___ + +### onPointerOutCapture + +• `Optional` **onPointerOutCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerOutCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1544 + +___ + +### onPointerOver + +• `Optional` **onPointerOver**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerOver + +#### Defined in + +node_modules/@types/react/index.d.ts:1541 + +___ + +### onPointerOverCapture + +• `Optional` **onPointerOverCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerOverCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1542 + +___ + +### onPointerUp + +• `Optional` **onPointerUp**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerUp + +#### Defined in + +node_modules/@types/react/index.d.ts:1533 + +___ + +### onPointerUpCapture + +• `Optional` **onPointerUpCapture**: `PointerEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onPointerUpCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1534 + +___ + +### onProgress + +• `Optional` **onProgress**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onProgress + +#### Defined in + +node_modules/@types/react/index.d.ts:1457 + +___ + +### onProgressCapture + +• `Optional` **onProgressCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onProgressCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1458 + +___ + +### onRateChange + +• `Optional` **onRateChange**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onRateChange + +#### Defined in + +node_modules/@types/react/index.d.ts:1459 + +___ + +### onRateChangeCapture + +• `Optional` **onRateChangeCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onRateChangeCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1460 + +___ + +### onReset + +• `Optional` **onReset**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onReset + +#### Defined in + +node_modules/@types/react/index.d.ts:1407 + +___ + +### onResetCapture + +• `Optional` **onResetCapture**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onResetCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1408 + +___ + +### onScroll + +• `Optional` **onScroll**: `UIEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onScroll + +#### Defined in + +node_modules/@types/react/index.d.ts:1551 + +___ + +### onScrollCapture + +• `Optional` **onScrollCapture**: `UIEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onScrollCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1552 + +___ + +### onSeeked + +• `Optional` **onSeeked**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSeeked + +#### Defined in + +node_modules/@types/react/index.d.ts:1461 + +___ + +### onSeekedCapture + +• `Optional` **onSeekedCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSeekedCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1462 + +___ + +### onSeeking + +• `Optional` **onSeeking**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSeeking + +#### Defined in + +node_modules/@types/react/index.d.ts:1463 + +___ + +### onSeekingCapture + +• `Optional` **onSeekingCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSeekingCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1464 + +___ + +### onSelect + +• `Optional` **onSelect**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSelect + +#### Defined in + +node_modules/@types/react/index.d.ts:1515 + +___ + +### onSelectCapture + +• `Optional` **onSelectCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSelectCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1516 + +___ + +### onStalled + +• `Optional` **onStalled**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onStalled + +#### Defined in + +node_modules/@types/react/index.d.ts:1465 + +___ + +### onStalledCapture + +• `Optional` **onStalledCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onStalledCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1466 + +___ + +### onSubmit + +• `Optional` **onSubmit**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSubmit + +#### Defined in + +node_modules/@types/react/index.d.ts:1409 + +___ + +### onSubmitCapture + +• `Optional` **onSubmitCapture**: `FormEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSubmitCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1410 + +___ + +### onSuspend + +• `Optional` **onSuspend**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSuspend + +#### Defined in + +node_modules/@types/react/index.d.ts:1467 + +___ + +### onSuspendCapture + +• `Optional` **onSuspendCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onSuspendCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1468 + +___ + +### onTimeUpdate + +• `Optional` **onTimeUpdate**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTimeUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:1469 + +___ + +### onTimeUpdateCapture + +• `Optional` **onTimeUpdateCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTimeUpdateCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1470 + +___ + +### onTouchCancel + +• `Optional` **onTouchCancel**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchCancel + +#### Defined in + +node_modules/@types/react/index.d.ts:1519 + +___ + +### onTouchCancelCapture + +• `Optional` **onTouchCancelCapture**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchCancelCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1520 + +___ + +### onTouchEnd + +• `Optional` **onTouchEnd**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchEnd + +#### Defined in + +node_modules/@types/react/index.d.ts:1521 + +___ + +### onTouchEndCapture + +• `Optional` **onTouchEndCapture**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchEndCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1522 + +___ + +### onTouchMove + +• `Optional` **onTouchMove**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchMove + +#### Defined in + +node_modules/@types/react/index.d.ts:1523 + +___ + +### onTouchMoveCapture + +• `Optional` **onTouchMoveCapture**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchMoveCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1524 + +___ + +### onTouchStart + +• `Optional` **onTouchStart**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchStart + +#### Defined in + +node_modules/@types/react/index.d.ts:1525 + +___ + +### onTouchStartCapture + +• `Optional` **onTouchStartCapture**: `TouchEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTouchStartCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1526 + +___ + +### onTransitionEnd + +• `Optional` **onTransitionEnd**: `TransitionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTransitionEnd + +#### Defined in + +node_modules/@types/react/index.d.ts:1567 + +___ + +### onTransitionEndCapture + +• `Optional` **onTransitionEndCapture**: `TransitionEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onTransitionEndCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1568 + +___ + +### onVolumeChange + +• `Optional` **onVolumeChange**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onVolumeChange + +#### Defined in + +node_modules/@types/react/index.d.ts:1471 + +___ + +### onVolumeChangeCapture + +• `Optional` **onVolumeChangeCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onVolumeChangeCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1472 + +___ + +### onWaiting + +• `Optional` **onWaiting**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onWaiting + +#### Defined in + +node_modules/@types/react/index.d.ts:1473 + +___ + +### onWaitingCapture + +• `Optional` **onWaitingCapture**: `ReactEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onWaitingCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1474 + +___ + +### onWheel + +• `Optional` **onWheel**: `WheelEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onWheel + +#### Defined in + +node_modules/@types/react/index.d.ts:1555 + +___ + +### onWheelCapture + +• `Optional` **onWheelCapture**: `WheelEventHandler`<`HTMLDivElement`\> + +#### Inherited from + +React.HTMLAttributes.onWheelCapture + +#### Defined in + +node_modules/@types/react/index.d.ts:1556 + +___ + +### placeholder + +• `Optional` **placeholder**: `string` + +#### Inherited from + +React.HTMLAttributes.placeholder + +#### Defined in + +node_modules/@types/react/index.d.ts:1860 + +___ + +### prefix + +• `Optional` **prefix**: `string` + +#### Inherited from + +React.HTMLAttributes.prefix + +#### Defined in + +node_modules/@types/react/index.d.ts:1878 + +___ + +### property + +• `Optional` **property**: `string` + +#### Inherited from + +React.HTMLAttributes.property + +#### Defined in + +node_modules/@types/react/index.d.ts:1879 + +___ + +### radioGroup + +• `Optional` **radioGroup**: `string` + +#### Inherited from + +React.HTMLAttributes.radioGroup + +#### Defined in + +node_modules/@types/react/index.d.ts:1869 + +___ + +### resource + +• `Optional` **resource**: `string` + +#### Inherited from + +React.HTMLAttributes.resource + +#### Defined in + +node_modules/@types/react/index.d.ts:1880 + +___ + +### results + +• `Optional` **results**: `number` + +#### Inherited from + +React.HTMLAttributes.results + +#### Defined in + +node_modules/@types/react/index.d.ts:1894 + +___ + +### role + +• `Optional` **role**: `AriaRole` + +#### Inherited from + +React.HTMLAttributes.role + +#### Defined in + +node_modules/@types/react/index.d.ts:1872 + +___ + +### security + +• `Optional` **security**: `string` + +#### Inherited from + +React.HTMLAttributes.security + +#### Defined in + +node_modules/@types/react/index.d.ts:1895 + +___ + +### slot + +• `Optional` **slot**: `string` + +#### Inherited from + +React.HTMLAttributes.slot + +#### Defined in + +node_modules/@types/react/index.d.ts:1861 + +___ + +### spellCheck + +• `Optional` **spellCheck**: `Booleanish` + +#### Inherited from + +React.HTMLAttributes.spellCheck + +#### Defined in + +node_modules/@types/react/index.d.ts:1862 + +___ + +### style + +• `Optional` **style**: `CSSProperties` + +#### Inherited from + +React.HTMLAttributes.style + +#### Defined in + +node_modules/@types/react/index.d.ts:1863 + +___ + +### suppressContentEditableWarning + +• `Optional` **suppressContentEditableWarning**: `boolean` + +#### Inherited from + +React.HTMLAttributes.suppressContentEditableWarning + +#### Defined in + +node_modules/@types/react/index.d.ts:1847 + +___ + +### suppressHydrationWarning + +• `Optional` **suppressHydrationWarning**: `boolean` + +#### Inherited from + +React.HTMLAttributes.suppressHydrationWarning + +#### Defined in + +node_modules/@types/react/index.d.ts:1848 + +___ + +### tabIndex + +• `Optional` **tabIndex**: `number` + +#### Inherited from + +React.HTMLAttributes.tabIndex + +#### Defined in + +node_modules/@types/react/index.d.ts:1864 + +___ + +### title + +• `Optional` **title**: `string` + +#### Inherited from + +React.HTMLAttributes.title + +#### Defined in + +node_modules/@types/react/index.d.ts:1865 + +___ + +### translate + +• `Optional` **translate**: ``"yes"`` \| ``"no"`` + +#### Inherited from + +React.HTMLAttributes.translate + +#### Defined in + +node_modules/@types/react/index.d.ts:1866 + +___ + +### typeof + +• `Optional` **typeof**: `string` + +#### Inherited from + +React.HTMLAttributes.typeof + +#### Defined in + +node_modules/@types/react/index.d.ts:1881 + +___ + +### unselectable + +• `Optional` **unselectable**: ``"on"`` \| ``"off"`` + +#### Inherited from + +React.HTMLAttributes.unselectable + +#### Defined in + +node_modules/@types/react/index.d.ts:1896 + +___ + +### vocab + +• `Optional` **vocab**: `string` + +#### Inherited from + +React.HTMLAttributes.vocab + +#### Defined in + +node_modules/@types/react/index.d.ts:1882 diff --git a/packages/framework/esm-framework/docs/interfaces/ExtensionRegistration.md b/packages/framework/esm-framework/docs/interfaces/ExtensionRegistration.md index a5a8829cd..90c4d0f38 100644 --- a/packages/framework/esm-framework/docs/interfaces/ExtensionRegistration.md +++ b/packages/framework/esm-framework/docs/interfaces/ExtensionRegistration.md @@ -23,7 +23,7 @@ ### featureFlag -• `Optional` **featureFlag**: `string` +• `Optional` `Readonly` **featureFlag**: `string` #### Defined in @@ -33,7 +33,7 @@ ___ ### meta -• **meta**: [`ExtensionMeta`](ExtensionMeta.md) +• `Readonly` **meta**: `Readonly`<[`ExtensionMeta`](ExtensionMeta.md)\> #### Defined in @@ -43,7 +43,7 @@ ___ ### moduleName -• **moduleName**: `string` +• `Readonly` **moduleName**: `string` #### Defined in @@ -53,7 +53,7 @@ ___ ### name -• **name**: `string` +• `Readonly` **name**: `string` #### Defined in @@ -63,7 +63,7 @@ ___ ### offline -• `Optional` **offline**: `boolean` +• `Optional` `Readonly` **offline**: `boolean` #### Defined in @@ -73,7 +73,7 @@ ___ ### online -• `Optional` **online**: `boolean` +• `Optional` `Readonly` **online**: `boolean` #### Defined in @@ -83,7 +83,7 @@ ___ ### order -• `Optional` **order**: `number` +• `Optional` `Readonly` **order**: `number` #### Defined in @@ -93,7 +93,7 @@ ___ ### privileges -• `Optional` **privileges**: `string` \| `string`[] +• `Optional` `Readonly` **privileges**: `string` \| `string`[] #### Defined in diff --git a/packages/framework/esm-framework/docs/interfaces/ExtensionSlotBaseProps.md b/packages/framework/esm-framework/docs/interfaces/ExtensionSlotBaseProps.md index 0614895ba..2f1051faf 100644 --- a/packages/framework/esm-framework/docs/interfaces/ExtensionSlotBaseProps.md +++ b/packages/framework/esm-framework/docs/interfaces/ExtensionSlotBaseProps.md @@ -40,7 +40,7 @@ ___ ### state -• `Optional` **state**: `Record`<`string`, `any`\> +• `Optional` **state**: `Record`<`string`, `unknown`\> #### Defined in @@ -50,17 +50,17 @@ ___ ### select -▸ `Optional` **select**(`extensions`): [`ConnectedExtension`](ConnectedExtension.md)[] +▸ `Optional` **select**(`extensions`): [`AssignedExtension`](AssignedExtension.md)[] #### Parameters | Name | Type | | :------ | :------ | -| `extensions` | [`ConnectedExtension`](ConnectedExtension.md)[] | +| `extensions` | [`AssignedExtension`](AssignedExtension.md)[] | #### Returns -[`ConnectedExtension`](ConnectedExtension.md)[] +[`AssignedExtension`](AssignedExtension.md)[] #### Defined in diff --git a/packages/framework/esm-framework/docs/interfaces/OldExtensionSlotBaseProps.md b/packages/framework/esm-framework/docs/interfaces/OldExtensionSlotBaseProps.md index 5238524ae..3afe6c9f0 100644 --- a/packages/framework/esm-framework/docs/interfaces/OldExtensionSlotBaseProps.md +++ b/packages/framework/esm-framework/docs/interfaces/OldExtensionSlotBaseProps.md @@ -40,7 +40,7 @@ ___ ### state -• `Optional` **state**: `Record`<`string`, `any`\> +• `Optional` **state**: `Record`<`string`, `unknown`\> #### Defined in @@ -50,17 +50,17 @@ ___ ### select -▸ `Optional` **select**(`extensions`): [`ConnectedExtension`](ConnectedExtension.md)[] +▸ `Optional` **select**(`extensions`): [`AssignedExtension`](AssignedExtension.md)[] #### Parameters | Name | Type | | :------ | :------ | -| `extensions` | [`ConnectedExtension`](ConnectedExtension.md)[] | +| `extensions` | [`AssignedExtension`](AssignedExtension.md)[] | #### Returns -[`ConnectedExtension`](ConnectedExtension.md)[] +[`AssignedExtension`](AssignedExtension.md)[] #### Defined in diff --git a/packages/framework/esm-framework/docs/interfaces/WorkspaceContainerProps.md b/packages/framework/esm-framework/docs/interfaces/WorkspaceContainerProps.md index 07cd2b74e..9954cf2e2 100644 --- a/packages/framework/esm-framework/docs/interfaces/WorkspaceContainerProps.md +++ b/packages/framework/esm-framework/docs/interfaces/WorkspaceContainerProps.md @@ -19,7 +19,7 @@ #### Defined in -[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:20](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L20) +[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:19](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L19) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:17](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L17) +[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:16](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L16) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:18](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L18) +[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:17](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L17) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:19](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L19) +[packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx:18](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx#L18) diff --git a/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx b/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx index 1a0b98101..45294d7ac 100644 --- a/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx +++ b/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { act, render, screen, waitFor } from '@testing-library/react'; +import { act, render, prettyDOM, screen, waitFor } from '@testing-library/react'; import { type Person } from '@openmrs/esm-api'; import { mockSessionStore } from '@openmrs/esm-api/mock'; import { attach, registerExtension, updateInternalExtensionStore } from '../../../esm-extensions'; @@ -23,7 +23,7 @@ jest.mock('@openmrs/esm-api', () => { const original = jest.requireActual('@openmrs/esm-api'); return { ...original, - getSessionStore: () => mockSessionStore, + sessionStore: mockSessionStore, refetchCurrentUser: jest.fn(), }; }); diff --git a/packages/framework/esm-offline/jest.config.js b/packages/framework/esm-offline/jest.config.js index a22f29fb9..b1320037d 100644 --- a/packages/framework/esm-offline/jest.config.js +++ b/packages/framework/esm-offline/jest.config.js @@ -3,6 +3,7 @@ module.exports = { '^.+\\.tsx?$': ['@swc/jest'], }, moduleNameMapper: { + '^lodash-es$': 'lodash', '^lodash-es/(.*)$': 'lodash/$1', // See https://jestjs.io/docs/upgrading-to-jest28#packagejson-exports // which links to https://github.com/microsoft/accessibility-insights-web/pull/5421#issuecomment-1109168149 diff --git a/packages/framework/esm-react-utils/jest.config.js b/packages/framework/esm-react-utils/jest.config.js index 6e7fbccbe..a633605ef 100644 --- a/packages/framework/esm-react-utils/jest.config.js +++ b/packages/framework/esm-react-utils/jest.config.js @@ -4,6 +4,7 @@ module.exports = { }, setupFilesAfterEnv: ['/src/setup-tests.js'], moduleNameMapper: { + '^lodash-es$': 'lodash', '^lodash-es/(.*)$': 'lodash/$1', '@openmrs/esm-error-handling': '/__mocks__/openmrs-esm-error-handling.mock.ts', '@openmrs/esm-state': '@openmrs/esm-state/mock', diff --git a/packages/framework/esm-react-utils/src/Extension.tsx b/packages/framework/esm-react-utils/src/Extension.tsx index 4c97bad64..0f3838373 100644 --- a/packages/framework/esm-react-utils/src/Extension.tsx +++ b/packages/framework/esm-react-utils/src/Extension.tsx @@ -1,17 +1,12 @@ /** @module @category Extension */ import { renderExtension } from '@openmrs/esm-extensions'; -import React, { useCallback, useContext, useEffect, useRef, useState, type ReactElement } from 'react'; -import type { Parcel } from 'single-spa'; +import React, { useCallback, useContext, useEffect, useRef, useState } from 'react'; +import { type Parcel } from 'single-spa'; import { ComponentContext } from '.'; -import type { ExtensionData } from './ComponentContext'; -export type ExtensionProps = { - state?: Record; - /** @deprecated Pass a function as the child of `ExtensionSlot` instead. */ - wrap?(slot: React.ReactNode, extension: ExtensionData): ReactElement | null; -} & Omit, 'children'> & { - children?: React.ReactNode | ((slot: React.ReactNode, extension?: ExtensionData) => React.ReactNode); - }; +export interface ExtensionProps extends React.HTMLAttributes { + state?: Record; +} /** * Represents the position in the DOM where each extension within @@ -22,24 +17,13 @@ export type ExtensionProps = { * Usage of this component *must* have an ancestor ``, * and *must* only be used once within that ``. */ -export const Extension: React.FC = ({ state, children, wrap, ...divProps }) => { +export const Extension: React.FC = ({ state, children, ...divProps }) => { const [domElement, setDomElement] = useState(); const { extension } = useContext(ComponentContext); const parcel = useRef(null); const updatePromise = useRef>(Promise.resolve()); const rendering = useRef(false); - useEffect(() => { - if (wrap) { - console.warn( - `'wrap' prop of Extension is being used ${ - extension?.extensionId ? `by ${extension.extensionId} in ${extension.extensionSlotName}` : '' - }. This will be removed in a future release.`, - ); - } - // we only warn when component mounts - }, []); - const ref = useCallback( (node: HTMLDivElement) => { setDomElement(node); @@ -123,13 +107,9 @@ export const Extension: React.FC = ({ state, children, wrap, ... // The extension is rendered into the `
`. The `
` has relative // positioning in order to allow the UI Editor to absolutely position // elements within it. - const slot = ( -
- ); - - if (typeof children === 'function' && !React.isValidElement(children)) { - return <>{children(slot, extension)}; - } - - return extension && wrap ? wrap(slot, extension) : slot; + return extension ? ( +
+ {children} +
+ ) : null; }; diff --git a/packages/framework/esm-react-utils/src/ExtensionSlot.tsx b/packages/framework/esm-react-utils/src/ExtensionSlot.tsx index 4c0b2c275..02a68944c 100644 --- a/packages/framework/esm-react-utils/src/ExtensionSlot.tsx +++ b/packages/framework/esm-react-utils/src/ExtensionSlot.tsx @@ -1,6 +1,6 @@ /** @module @category Extension */ import React, { useRef, useMemo } from 'react'; -import type { ConnectedExtension } from '@openmrs/esm-extensions'; +import { type AssignedExtension } from '@openmrs/esm-extensions'; import { ComponentContext } from './ComponentContext'; import { Extension } from './Extension'; import { useExtensionSlot } from './useExtensionSlot'; @@ -9,24 +9,24 @@ export interface ExtensionSlotBaseProps { name: string; /** @deprecated Use `name` */ extensionSlotName?: string; - select?: (extensions: Array) => Array; - state?: Record; + select?: (extensions: Array) => Array; + state?: Record; } export interface OldExtensionSlotBaseProps { name?: string; /** @deprecated Use `name` */ extensionSlotName: string; - select?: (extensions: Array) => Array; - state?: Record; + select?: (extensions: Array) => Array; + state?: Record; } export type ExtensionSlotProps = (OldExtensionSlotBaseProps | ExtensionSlotBaseProps) & Omit, 'children'> & { - children?: React.ReactNode | ((extension: ConnectedExtension) => React.ReactNode); + children?: React.ReactNode | ((extension: AssignedExtension, state?: Record) => React.ReactNode); }; -function defaultSelect(extensions: Array) { +function defaultSelect(extensions: Array) { return extensions; } @@ -101,7 +101,7 @@ export function ExtensionSlot({ const extensionsFromChildrenFunction = useMemo(() => { if (typeof children == 'function' && !React.isValidElement(children)) { - return extensionsToRender.map((extension) => children(extension)); + return extensionsToRender.map((extension) => children(extension, state)); } }, [children, extensionsToRender]); @@ -114,7 +114,7 @@ export function ExtensionSlot({ {...divProps} > {name && - extensionsToRender.map((extension, i) => ( + extensionsToRender?.map((extension, i) => ( - {extensionsFromChildrenFunction?.[i] ?? (typeof children != 'function' ? children : null) ?? ( + {extensionsFromChildrenFunction?.[i] ?? (typeof children !== 'function' ? children : null) ?? ( )} diff --git a/packages/framework/esm-react-utils/src/extensions.test.tsx b/packages/framework/esm-react-utils/src/extensions.test.tsx index aa7053ff0..10a80693f 100644 --- a/packages/framework/esm-react-utils/src/extensions.test.tsx +++ b/packages/framework/esm-react-utils/src/extensions.test.tsx @@ -122,21 +122,15 @@ describe('ExtensionSlot, Extension, and useExtensionSlotMeta', () => { disableTranslations: true, })(() => { const metas = useExtensionSlotMeta('Box'); - const wrapItem = useCallback( - (slot: React.ReactNode, extension?: ExtensionData) => { - return ( -
-

{metas[getExtensionNameFromId(extension?.extensionId ?? '')].code}

- {slot} -
- ); - }, - [metas], - ); return (
- {wrapItem} + {(extension) => ( +
+

{metas[getExtensionNameFromId(extension?.id ?? '')].code}

+ +
+ )}
); @@ -163,21 +157,15 @@ describe('ExtensionSlot, Extension, and useExtensionSlotMeta', () => { })(() => { const [suffix, toggleSuffix] = useReducer((suffix) => (suffix == '!' ? '?' : '!'), '!'); const metas = useExtensionSlotMeta('Box'); - const wrapItem = useCallback( - (slot: React.ReactNode, extension?: ExtensionData) => { - return ( -
-

{metas[getExtensionNameFromId(extension?.extensionId ?? '')].code}

- {slot} -
- ); - }, - [metas], - ); return (
- {wrapItem} + {(extension) => ( +
+

{metas[getExtensionNameFromId(extension?.id ?? '')].code}

+ +
+ )}
@@ -209,7 +197,7 @@ describe('ExtensionSlot, Extension, and useExtensionSlotMeta', () => { return (
- {(extension: ConnectedExtension) => ( + {(extension) => (

{extension.meta.code}

@@ -226,33 +214,6 @@ describe('ExtensionSlot, Extension, and useExtensionSlotMeta', () => { expect(within(screen.getByTestId('Hindi')).getByRole('heading')).toHaveTextContent('hi'); }); - test('Extension renders with child function', async () => { - registerSimpleExtension('Hindi', 'esm-languages-app', undefined, { - code: 'hi', - }); - attach('Box', 'Hindi'); - const App = openmrsComponentDecorator({ - moduleName: 'esm-languages-app', - featureName: 'Languages', - disableTranslations: true, - })(() => { - return ( -
- - {() => {(slot) =>
{slot}
}
} -
-
- ); - }); - - render(); - - await waitFor(() => expect(screen.getByTestId('custom-wrapper')).toBeInTheDocument()); - - // essentially: is the first child of custom-wrapper the extension? - expect(screen.getByTestId('custom-wrapper').children[0]).toHaveAttribute('data-extension-id', 'Hindi'); - }); - test('Extensions behind feature flags only render when their feature flag is enabled', async () => { registerSimpleExtension('Arabic', 'esm-languages-app'); registerSimpleExtension('Turkish', 'esm-languages-app', undefined, undefined, 'turkic'); diff --git a/packages/framework/esm-react-utils/src/index.ts b/packages/framework/esm-react-utils/src/index.ts index 3d5cdfc6a..6d0148090 100644 --- a/packages/framework/esm-react-utils/src/index.ts +++ b/packages/framework/esm-react-utils/src/index.ts @@ -20,6 +20,7 @@ export * from './useDefineAppContext'; export * from './useExtensionInternalStore'; export * from './useExtensionSlot'; export * from './useExtensionSlotMeta'; +export * from './useExtensionSlotStore'; export * from './useExtensionStore'; export * from './useFeatureFlag'; export * from './useForceUpdate'; diff --git a/packages/framework/esm-react-utils/src/public.ts b/packages/framework/esm-react-utils/src/public.ts index d9e2da022..f5e4b4ca1 100644 --- a/packages/framework/esm-react-utils/src/public.ts +++ b/packages/framework/esm-react-utils/src/public.ts @@ -18,6 +18,7 @@ export * from './useDebounce'; export * from './useDefineAppContext'; export * from './useExtensionSlotMeta'; export * from './useExtensionStore'; +export * from './useExtensionSlotStore'; export * from './useFeatureFlag'; export * from './useLayoutType'; export * from './useLocations'; diff --git a/packages/framework/esm-react-utils/src/useAssignedExtensionIds.ts b/packages/framework/esm-react-utils/src/useAssignedExtensionIds.ts index 8ebbd38b1..8b1647c27 100644 --- a/packages/framework/esm-react-utils/src/useAssignedExtensionIds.ts +++ b/packages/framework/esm-react-utils/src/useAssignedExtensionIds.ts @@ -1,7 +1,7 @@ /** @module @category Extension */ import { useEffect, useState } from 'react'; import { getExtensionStore } from '@openmrs/esm-extensions'; -import isEqual from 'lodash-es/isEqual'; +import { isEqual } from 'lodash-es'; /** * Gets the assigned extension ids for a given extension slot name. diff --git a/packages/framework/esm-react-utils/src/useAssignedExtensions.ts b/packages/framework/esm-react-utils/src/useAssignedExtensions.ts index 1918e859f..ebdbdf802 100644 --- a/packages/framework/esm-react-utils/src/useAssignedExtensions.ts +++ b/packages/framework/esm-react-utils/src/useAssignedExtensions.ts @@ -1,18 +1,11 @@ /** @module @category Extension */ -import { useMemo } from 'react'; -import { useExtensionStore } from './useExtensionStore'; +import { useExtensionSlotStore } from './useExtensionSlotStore'; /** * Gets the assigned extensions for a given extension slot name. - * Does not consider if offline or online. * @param slotName The name of the slot to get the assigned extensions for. */ export function useAssignedExtensions(slotName: string) { - const { slots } = useExtensionStore(); - - const extensions = useMemo(() => { - return slots[slotName]?.assignedExtensions ?? []; - }, [slots, slotName]); - - return extensions; + const slotStore = useExtensionSlotStore(slotName); + return slotStore?.assignedExtensions; } diff --git a/packages/framework/esm-react-utils/src/useConnectedExtensions.ts b/packages/framework/esm-react-utils/src/useConnectedExtensions.ts index 20b808df6..e6db27d84 100644 --- a/packages/framework/esm-react-utils/src/useConnectedExtensions.ts +++ b/packages/framework/esm-react-utils/src/useConnectedExtensions.ts @@ -1,31 +1,10 @@ /** @module @category Extension */ -import { useMemo } from 'react'; -import type { ConnectedExtension } from '@openmrs/esm-extensions'; -import { getConnectedExtensions } from '@openmrs/esm-extensions'; -import { useConnectivity } from './useConnectivity'; +import { type ConnectedExtension } from '@openmrs/esm-extensions'; import { useAssignedExtensions } from './useAssignedExtensions'; -import { useStore } from './useStore'; -import { featureFlagsStore } from '@openmrs/esm-feature-flags'; /** * Gets the assigned extension for a given extension slot name. - * Considers if offline or online, and what feature flags are enabled. * @param slotName The name of the slot to get the assigned extensions for. + * @deprecated Use useAssignedExtensions instead */ -export function useConnectedExtensions(slotName: string): Array { - const online = useConnectivity(); - const assignedExtensions = useAssignedExtensions(slotName); - const featureFlagStore = useStore(featureFlagsStore); - - const enabledFeatureFlags = useMemo(() => { - return Object.entries(featureFlagStore.flags) - .filter(([, { enabled }]) => enabled) - .map(([name]) => name); - }, [featureFlagStore.flags]); - - const connectedExtensions = useMemo(() => { - return getConnectedExtensions(assignedExtensions, online, enabledFeatureFlags); - }, [assignedExtensions, online, enabledFeatureFlags]); - - return connectedExtensions; -} +export const useConnectedExtensions = useAssignedExtensions as (slotName: string) => Array; diff --git a/packages/framework/esm-react-utils/src/useExtensionSlot.ts b/packages/framework/esm-react-utils/src/useExtensionSlot.ts index ab2e67104..fe0786d57 100644 --- a/packages/framework/esm-react-utils/src/useExtensionSlot.ts +++ b/packages/framework/esm-react-utils/src/useExtensionSlot.ts @@ -1,7 +1,7 @@ import { useContext, useEffect } from 'react'; import { registerExtensionSlot } from '@openmrs/esm-extensions'; import { ComponentContext } from './ComponentContext'; -import { useConnectedExtensions } from './useConnectedExtensions'; +import { useAssignedExtensions } from './useAssignedExtensions'; /** @internal */ export function useExtensionSlot(slotName: string) { @@ -15,7 +15,7 @@ export function useExtensionSlot(slotName: string) { registerExtensionSlot(moduleName, slotName); }, []); - const extensions = useConnectedExtensions(slotName); + const extensions = useAssignedExtensions(slotName); return { extensions, diff --git a/packages/framework/esm-react-utils/src/useExtensionSlotMeta.ts b/packages/framework/esm-react-utils/src/useExtensionSlotMeta.ts index 59fbbf76b..5f5fc525b 100644 --- a/packages/framework/esm-react-utils/src/useExtensionSlotMeta.ts +++ b/packages/framework/esm-react-utils/src/useExtensionSlotMeta.ts @@ -1,14 +1,14 @@ /** @module @category Extension */ import type { ExtensionMeta } from '@openmrs/esm-extensions'; import { useMemo } from 'react'; -import { useConnectedExtensions } from './useConnectedExtensions'; +import { useAssignedExtensions } from './useAssignedExtensions'; /** * Extract meta data from all extension for a given extension slot. * @param extensionSlotName */ export function useExtensionSlotMeta(extensionSlotName: string) { - const extensions = useConnectedExtensions(extensionSlotName); + const extensions = useAssignedExtensions(extensionSlotName); return useMemo(() => Object.fromEntries(extensions.map((ext) => [ext.name, ext.meta as T])), [extensions]); } diff --git a/packages/framework/esm-react-utils/src/useExtensionSlotStore.ts b/packages/framework/esm-react-utils/src/useExtensionSlotStore.ts new file mode 100644 index 000000000..cadc97462 --- /dev/null +++ b/packages/framework/esm-react-utils/src/useExtensionSlotStore.ts @@ -0,0 +1,6 @@ +/** @module @category Extension */ +import { type ExtensionSlotState, type ExtensionStore, getExtensionStore } from '@openmrs/esm-extensions'; +import { useStore } from './useStore'; + +export const useExtensionSlotStore = (slot: string) => + useStore(getExtensionStore(), (state) => state.slots?.[slot]); diff --git a/packages/framework/esm-react-utils/src/useExtensionStore.ts b/packages/framework/esm-react-utils/src/useExtensionStore.ts index c5f6781ba..8f7749168 100644 --- a/packages/framework/esm-react-utils/src/useExtensionStore.ts +++ b/packages/framework/esm-react-utils/src/useExtensionStore.ts @@ -1,6 +1,5 @@ /** @module @category Extension */ -import type { ExtensionStore } from '@openmrs/esm-extensions'; -import { getExtensionStore } from '@openmrs/esm-extensions'; +import { type ExtensionStore, getExtensionStore } from '@openmrs/esm-extensions'; import { createUseStore } from './useStore'; export const useExtensionStore = createUseStore(getExtensionStore()); diff --git a/packages/framework/esm-react-utils/src/useStore.ts b/packages/framework/esm-react-utils/src/useStore.ts index c4d7e6f92..48688c3cc 100644 --- a/packages/framework/esm-react-utils/src/useStore.ts +++ b/packages/framework/esm-react-utils/src/useStore.ts @@ -17,7 +17,7 @@ function bindActions(store: StoreApi, actions: Actions): BoundActions { const bound = {}; for (let i in actions) { - bound[i] = function (...args) { + bound[i] = function (...args: Array) { store.setState((state) => { let _args = [state, ...args]; return actions[i](..._args); @@ -28,13 +28,16 @@ function bindActions(store: StoreApi, actions: Actions): BoundActions { return bound; } -const defaultSelectFunction = (x) => x; +const defaultSelectFunction = + () => + (x: T) => + x as unknown as U; function useStore(store: StoreApi): T; function useStore(store: StoreApi, select: (state: T) => U): U; function useStore(store: StoreApi, select: undefined, actions: Actions): T & BoundActions; function useStore(store: StoreApi, select: (state: T) => U, actions: Actions): U & BoundActions; -function useStore(store: StoreApi, select: (state: T) => U = defaultSelectFunction, actions?: Actions) { +function useStore(store: StoreApi, select: (state: T) => U = defaultSelectFunction(), actions?: Actions) { const [state, setState] = useState(() => select(store.getState())); useEffect(() => subscribeTo(store, select, setState), [store, select]); @@ -50,7 +53,7 @@ function useStore(store: StoreApi, select: (state: T) => U = defaultSel * @returns */ function useStoreWithActions(store: StoreApi, actions: Actions): T & BoundActions { - return useStore(store, defaultSelectFunction, actions); + return useStore(store, defaultSelectFunction(), actions); } /** diff --git a/packages/framework/esm-routes/src/loaders/components.ts b/packages/framework/esm-routes/src/loaders/components.ts index 060d524f3..791fb7541 100644 --- a/packages/framework/esm-routes/src/loaders/components.ts +++ b/packages/framework/esm-routes/src/loaders/components.ts @@ -12,7 +12,7 @@ import { type WorkspaceDefinition, } from '@openmrs/esm-globals'; import { getLoader } from './app'; -import { FeatureFlag, registerFeatureFlag } from '@openmrs/esm-feature-flags'; +import { registerFeatureFlag } from '@openmrs/esm-feature-flags'; /** * This function registers an extension definition with the framework and will @@ -204,7 +204,7 @@ supported, so the workspace will not be loaded.`, * This function registers a workspace definition with the framework so that it can be launched. * * @param appName The name of the app defining this workspace - * @param workspace An object that describes the workspace, derived from `routes.json` + * @param featureFlag An object that describes the workspace, derived from `routes.json` */ export function tryRegisterFeatureFlag(appName: string, featureFlag: FeatureFlagDefinition) { const name = featureFlag.flagName; diff --git a/packages/framework/esm-state/package.json b/packages/framework/esm-state/package.json index 406e0fcff..4f78b7b8a 100644 --- a/packages/framework/esm-state/package.json +++ b/packages/framework/esm-state/package.json @@ -41,9 +41,11 @@ "zustand": "^4.5.5" }, "peerDependencies": { - "@openmrs/esm-globals": "5.x" + "@openmrs/esm-globals": "5.x", + "@openmrs/esm-utils": "5.x" }, "devDependencies": { - "@openmrs/esm-globals": "workspace:*" + "@openmrs/esm-globals": "workspace:*", + "@openmrs/esm-utils": "workspace:*" } } diff --git a/packages/framework/esm-state/src/state.ts b/packages/framework/esm-state/src/state.ts index ce0d4701f..94c8d527c 100644 --- a/packages/framework/esm-state/src/state.ts +++ b/packages/framework/esm-state/src/state.ts @@ -1,7 +1,8 @@ /** @module @category Store */ +import type {} from '@openmrs/esm-globals'; +import { shallowEqual } from '@openmrs/esm-utils'; import type { StoreApi } from 'zustand/vanilla'; import { createStore } from 'zustand/vanilla'; -import type {} from '@openmrs/esm-globals'; interface StoreEntity { value: StoreApi; @@ -31,7 +32,7 @@ export function createGlobalStore(name: string, initialState: T): StoreApi if (available) { if (available.active) { - console.error('Cannot override an existing store. Make sure that stores are only created once.'); + console.error(`Attempted to override the existing store ${name}. Make sure that stores are only created once.`); } else { available.value.setState(initialState, true); } @@ -63,7 +64,7 @@ export function registerGlobalStore(name: string, store: StoreApi): StoreA if (available) { if (available.active) { - console.error('Cannot override an existing store. Make sure that stores are only created once.'); + console.error(`Attempted to override the existing store ${name}. Make sure that stores are only created once.`); } else { available.value = store; } @@ -103,15 +104,25 @@ export function getGlobalStore(name: string, fallbackState?: T): StoreApi return available.value as StoreApi; } -export function subscribeTo(store: StoreApi, select: (state: T) => U, handle: (subState: U) => void) { - let previous = select(store.getState()); - - return store.subscribe((state) => { - const current = select(state); - - if (current !== previous) { - previous = current; - handle(current); +type SubscribeToArgs = [StoreApi, (state: T) => void] | [StoreApi, (state: T) => U, (state: U) => void]; + +export function subscribeTo(store: StoreApi, handle: (state: T) => void): () => void; +export function subscribeTo( + store: StoreApi, + select: (state: T) => U, + handle: (subState: U) => void, +): () => void; +export function subscribeTo(...args: SubscribeToArgs): () => void { + const [store, select, handle] = args; + const handler = typeof handle === 'undefined' ? (select as unknown as (state: U) => void) : handle; + const selector = typeof handle === 'undefined' ? (state: T) => state as unknown as U : (select as (state: T) => U); + + handler(selector(store.getState())); + return store.subscribe((state, previous) => { + const current = selector(state); + + if (!shallowEqual(previous, current)) { + handler(current); } }); } diff --git a/packages/framework/esm-styleguide/src/patient-banner/actions-menu/patient-banner-actions-menu.component.tsx b/packages/framework/esm-styleguide/src/patient-banner/actions-menu/patient-banner-actions-menu.component.tsx index 57e1b070a..80d7a3bd7 100644 --- a/packages/framework/esm-styleguide/src/patient-banner/actions-menu/patient-banner-actions-menu.component.tsx +++ b/packages/framework/esm-styleguide/src/patient-banner/actions-menu/patient-banner-actions-menu.component.tsx @@ -1,7 +1,7 @@ /** @module @category UI */ import React, { useMemo } from 'react'; import { OverflowMenuVertical } from '@carbon/react/icons'; -import { ExtensionSlot, useConnectedExtensions } from '@openmrs/esm-react-utils'; +import { ExtensionSlot, useExtensionSlot } from '@openmrs/esm-react-utils'; import { getCoreTranslation } from '@openmrs/esm-translations'; import { CustomOverflowMenu } from '../../custom-overflow-menu/custom-overflow-menu.component'; import styles from './patient-banner-actions-menu.module.scss'; @@ -23,7 +23,7 @@ export function PatientBannerActionsMenu({ isDeceased, additionalActionsSlotState, }: PatientBannerActionsMenuProps) { - const patientActions = useConnectedExtensions(actionsSlotName); + const { extensions: patientActions } = useExtensionSlot(actionsSlotName); const patientActionsSlotState = useMemo( () => ({ patientUuid, ...additionalActionsSlotState }), [patientUuid, additionalActionsSlotState], diff --git a/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx b/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx index bd51447ba..79d2fd64f 100644 --- a/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx +++ b/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx @@ -4,7 +4,6 @@ import { Header, HeaderGlobalAction, HeaderGlobalBar, HeaderMenuButton, HeaderNa import { DownToBottom, Maximize, Minimize } from '@carbon/react/icons'; import { ComponentContext, ExtensionSlot, isDesktop, useBodyScrollLock, useLayoutType } from '@openmrs/esm-react-utils'; import { getCoreTranslation } from '@openmrs/esm-translations'; - import { ArrowLeftIcon, ArrowRightIcon, CloseIcon } from '../../icons'; import { WorkspaceNotification } from '../notification/workspace-notification.component'; import ActionMenu from './action-menu.component'; diff --git a/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx b/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx index 611120914..aa00d3421 100644 --- a/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx +++ b/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx @@ -1,6 +1,6 @@ /// import React from 'react'; -import { screen, render, within, renderHook, act } from '@testing-library/react'; +import { act, screen, renderHook, render, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { registerWorkspace } from '@openmrs/esm-extensions'; import { ComponentContext, isDesktop, useLayoutType } from '@openmrs/esm-react-utils'; @@ -20,7 +20,7 @@ jest.mock('./workspace-renderer.component.tsx', () => { jest.mock('react-i18next', () => ({ ...jest.requireActual('react-i18next'), - useTranslation: jest.fn(), + useTranslation: jest.fn().mockImplementation(() => ({ t: (arg: string) => arg })), })); const mockedUseTranslation = jest.mocked(useTranslation); @@ -219,8 +219,8 @@ describe('WorkspaceContainer in overlay mode', () => { it('opens with overridable title and closes', async () => { mockedUseLayoutType.mockReturnValue('small-desktop'); const user = userEvent.setup(); - act(() => launchWorkspace('patient-search', { workspaceTitle: 'Make an appointment' })); renderWorkspaceOverlay(); + act(() => launchWorkspace('patient-search', { workspaceTitle: 'Make an appointment' })); expect(screen.queryByRole('complementary')).toBeInTheDocument(); expectToBeVisible(screen.getByRole('complementary')); diff --git a/packages/framework/esm-styleguide/src/workspaces/workspaces.ts b/packages/framework/esm-styleguide/src/workspaces/workspaces.ts index da156f698..6be6c26fa 100644 --- a/packages/framework/esm-styleguide/src/workspaces/workspaces.ts +++ b/packages/framework/esm-styleguide/src/workspaces/workspaces.ts @@ -209,7 +209,7 @@ export function launchWorkspace< function updateStoreWithNewWorkspace(workspaceToBeAdded: OpenWorkspace, restOfTheWorkspaces?: Array) { store.setState((state) => { const openWorkspaces = [workspaceToBeAdded, ...(restOfTheWorkspaces ?? state.openWorkspaces)]; - let workspaceWindowState = getUpdatedWorkspaceWindowState(openWorkspaces[0]); + let workspaceWindowState = getUpdatedWorkspaceWindowState(workspaceToBeAdded); return { ...state, @@ -234,8 +234,8 @@ export function launchWorkspace< } else if (isWorkspaceAlreadyOpen) { const openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces]; // Only update the title if it hasn't been set by `setTitle` - if (openWorkspace.title == getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) { - openWorkspace.title = getWorkspaceTitle(openWorkspace, newWorkspace.additionalProps); + if (openWorkspace.title === getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) { + openWorkspace.title = getWorkspaceTitle(newWorkspace, newWorkspace.additionalProps); } openWorkspace.additionalProps = newWorkspace.additionalProps; const restOfTheWorkspaces = openWorkspaces.filter((w) => w.name != name); @@ -377,7 +377,7 @@ const initialState: WorkspaceStoreState = { export const workspaceStore = createGlobalStore('workspace', initialState); export function getWorkspaceStore() { - return getGlobalStore('workspace', initialState); + return workspaceStore; } export function updateWorkspaceWindowState(value: WorkspaceWindowState) { From e61957287045271a0428ce22e2aec0ef4e6aaeba Mon Sep 17 00:00:00 2001 From: Ian Date: Wed, 18 Sep 2024 16:37:39 -0400 Subject: [PATCH 2/4] Fix lock file --- yarn.lock | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yarn.lock b/yarn.lock index 37ff6a025..3e0a1da42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3369,9 +3369,11 @@ __metadata: resolution: "@openmrs/esm-state@workspace:packages/framework/esm-state" dependencies: "@openmrs/esm-globals": "workspace:*" + "@openmrs/esm-utils": "workspace:*" zustand: "npm:^4.5.5" peerDependencies: "@openmrs/esm-globals": 5.x + "@openmrs/esm-utils": 5.x languageName: unknown linkType: soft From 097b0f6a86700e148d6e8da6e1c1990b43d81acd Mon Sep 17 00:00:00 2001 From: Ian Date: Wed, 2 Oct 2024 16:09:26 -0400 Subject: [PATCH 3/4] Review suggestions --- packages/framework/esm-framework/docs/API.md | 16 +- .../docs/interfaces/ExtensionProps.md | 4010 ----------------- .../extension-config.test.tsx | 2 +- .../esm-react-utils/src/Extension.tsx | 4 +- 4 files changed, 16 insertions(+), 4016 deletions(-) delete mode 100644 packages/framework/esm-framework/docs/interfaces/ExtensionProps.md diff --git a/packages/framework/esm-framework/docs/API.md b/packages/framework/esm-framework/docs/API.md index 0e043f8a0..8747cb418 100644 --- a/packages/framework/esm-framework/docs/API.md +++ b/packages/framework/esm-framework/docs/API.md @@ -419,6 +419,16 @@ ___ ## Extension Type Aliases +### ExtensionProps + +Ƭ **ExtensionProps**: `React.HTMLAttributes`<`HTMLDivElement`\> & { `state?`: `Record`<`string`, `unknown`\> } + +#### Defined in + +[packages/framework/esm-react-utils/src/Extension.tsx:7](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/Extension.tsx#L7) + +___ + ### ExtensionSlotProps Ƭ **ExtensionSlotProps**: [`OldExtensionSlotBaseProps`](interfaces/OldExtensionSlotBaseProps.md) \| [`ExtensionSlotBaseProps`](interfaces/ExtensionSlotBaseProps.md) & `Omit`<`React.HTMLAttributes`<`HTMLDivElement`\>, ``"children"``\> & { `children?`: `React.ReactNode` \| (`extension`: [`AssignedExtension`](interfaces/AssignedExtension.md), `state?`: `Record`<`string`, `unknown`\>) => `React.ReactNode` } @@ -1075,7 +1085,7 @@ ___ ### Extension -• `Const` **Extension**: `React.FC`<[`ExtensionProps`](interfaces/ExtensionProps.md)\> +• `Const` **Extension**: `React.FC`<[`ExtensionProps`](API.md#extensionprops)\> Represents the position in the DOM where each extension within an extension slot is rendered. @@ -4556,7 +4566,7 @@ ___ ### useRenderableExtensions -▸ **useRenderableExtensions**(`name`): `React.FC`<`Pick`<[`ExtensionProps`](interfaces/ExtensionProps.md), ``"state"``\>\>[] +▸ **useRenderableExtensions**(`name`): `React.FC`<`Pick`<[`ExtensionProps`](API.md#extensionprops), ``"state"``\>\>[] This is an advanced hook for use-cases where its useful to use the extension system, but not the `ExtensionSlot` component's rendering of extensions. Use of this hook @@ -4589,7 +4599,7 @@ return ( #### Returns -`React.FC`<`Pick`<[`ExtensionProps`](interfaces/ExtensionProps.md), ``"state"``\>\>[] +`React.FC`<`Pick`<[`ExtensionProps`](API.md#extensionprops), ``"state"``\>\>[] #### Defined in diff --git a/packages/framework/esm-framework/docs/interfaces/ExtensionProps.md b/packages/framework/esm-framework/docs/interfaces/ExtensionProps.md deleted file mode 100644 index aa8c64de5..000000000 --- a/packages/framework/esm-framework/docs/interfaces/ExtensionProps.md +++ /dev/null @@ -1,4010 +0,0 @@ -[@openmrs/esm-framework](../API.md) / ExtensionProps - -# Interface: ExtensionProps - -## Hierarchy - -- `HTMLAttributes`<`HTMLDivElement`\> - - ↳ **`ExtensionProps`** - -## Table of contents - -### Extension Properties - -- [state](ExtensionProps.md#state) - -### Other Properties - -- [about](ExtensionProps.md#about) -- [accessKey](ExtensionProps.md#accesskey) -- [aria-activedescendant](ExtensionProps.md#aria-activedescendant) -- [aria-atomic](ExtensionProps.md#aria-atomic) -- [aria-autocomplete](ExtensionProps.md#aria-autocomplete) -- [aria-busy](ExtensionProps.md#aria-busy) -- [aria-checked](ExtensionProps.md#aria-checked) -- [aria-colcount](ExtensionProps.md#aria-colcount) -- [aria-colindex](ExtensionProps.md#aria-colindex) -- [aria-colspan](ExtensionProps.md#aria-colspan) -- [aria-controls](ExtensionProps.md#aria-controls) -- [aria-current](ExtensionProps.md#aria-current) -- [aria-describedby](ExtensionProps.md#aria-describedby) -- [aria-details](ExtensionProps.md#aria-details) -- [aria-disabled](ExtensionProps.md#aria-disabled) -- [aria-dropeffect](ExtensionProps.md#aria-dropeffect) -- [aria-errormessage](ExtensionProps.md#aria-errormessage) -- [aria-expanded](ExtensionProps.md#aria-expanded) -- [aria-flowto](ExtensionProps.md#aria-flowto) -- [aria-grabbed](ExtensionProps.md#aria-grabbed) -- [aria-haspopup](ExtensionProps.md#aria-haspopup) -- [aria-hidden](ExtensionProps.md#aria-hidden) -- [aria-invalid](ExtensionProps.md#aria-invalid) -- [aria-keyshortcuts](ExtensionProps.md#aria-keyshortcuts) -- [aria-label](ExtensionProps.md#aria-label) -- [aria-labelledby](ExtensionProps.md#aria-labelledby) -- [aria-level](ExtensionProps.md#aria-level) -- [aria-live](ExtensionProps.md#aria-live) -- [aria-modal](ExtensionProps.md#aria-modal) -- [aria-multiline](ExtensionProps.md#aria-multiline) -- [aria-multiselectable](ExtensionProps.md#aria-multiselectable) -- [aria-orientation](ExtensionProps.md#aria-orientation) -- [aria-owns](ExtensionProps.md#aria-owns) -- [aria-placeholder](ExtensionProps.md#aria-placeholder) -- [aria-posinset](ExtensionProps.md#aria-posinset) -- [aria-pressed](ExtensionProps.md#aria-pressed) -- [aria-readonly](ExtensionProps.md#aria-readonly) -- [aria-relevant](ExtensionProps.md#aria-relevant) -- [aria-required](ExtensionProps.md#aria-required) -- [aria-roledescription](ExtensionProps.md#aria-roledescription) -- [aria-rowcount](ExtensionProps.md#aria-rowcount) -- [aria-rowindex](ExtensionProps.md#aria-rowindex) -- [aria-rowspan](ExtensionProps.md#aria-rowspan) -- [aria-selected](ExtensionProps.md#aria-selected) -- [aria-setsize](ExtensionProps.md#aria-setsize) -- [aria-sort](ExtensionProps.md#aria-sort) -- [aria-valuemax](ExtensionProps.md#aria-valuemax) -- [aria-valuemin](ExtensionProps.md#aria-valuemin) -- [aria-valuenow](ExtensionProps.md#aria-valuenow) -- [aria-valuetext](ExtensionProps.md#aria-valuetext) -- [autoCapitalize](ExtensionProps.md#autocapitalize) -- [autoCorrect](ExtensionProps.md#autocorrect) -- [autoSave](ExtensionProps.md#autosave) -- [children](ExtensionProps.md#children) -- [className](ExtensionProps.md#classname) -- [color](ExtensionProps.md#color) -- [contentEditable](ExtensionProps.md#contenteditable) -- [contextMenu](ExtensionProps.md#contextmenu) -- [dangerouslySetInnerHTML](ExtensionProps.md#dangerouslysetinnerhtml) -- [datatype](ExtensionProps.md#datatype) -- [defaultChecked](ExtensionProps.md#defaultchecked) -- [defaultValue](ExtensionProps.md#defaultvalue) -- [dir](ExtensionProps.md#dir) -- [draggable](ExtensionProps.md#draggable) -- [hidden](ExtensionProps.md#hidden) -- [id](ExtensionProps.md#id) -- [inlist](ExtensionProps.md#inlist) -- [inputMode](ExtensionProps.md#inputmode) -- [is](ExtensionProps.md#is) -- [itemID](ExtensionProps.md#itemid) -- [itemProp](ExtensionProps.md#itemprop) -- [itemRef](ExtensionProps.md#itemref) -- [itemScope](ExtensionProps.md#itemscope) -- [itemType](ExtensionProps.md#itemtype) -- [lang](ExtensionProps.md#lang) -- [onAbort](ExtensionProps.md#onabort) -- [onAbortCapture](ExtensionProps.md#onabortcapture) -- [onAnimationEnd](ExtensionProps.md#onanimationend) -- [onAnimationEndCapture](ExtensionProps.md#onanimationendcapture) -- [onAnimationIteration](ExtensionProps.md#onanimationiteration) -- [onAnimationIterationCapture](ExtensionProps.md#onanimationiterationcapture) -- [onAnimationStart](ExtensionProps.md#onanimationstart) -- [onAnimationStartCapture](ExtensionProps.md#onanimationstartcapture) -- [onAuxClick](ExtensionProps.md#onauxclick) -- [onAuxClickCapture](ExtensionProps.md#onauxclickcapture) -- [onBeforeInput](ExtensionProps.md#onbeforeinput) -- [onBeforeInputCapture](ExtensionProps.md#onbeforeinputcapture) -- [onBlur](ExtensionProps.md#onblur) -- [onBlurCapture](ExtensionProps.md#onblurcapture) -- [onCanPlay](ExtensionProps.md#oncanplay) -- [onCanPlayCapture](ExtensionProps.md#oncanplaycapture) -- [onCanPlayThrough](ExtensionProps.md#oncanplaythrough) -- [onCanPlayThroughCapture](ExtensionProps.md#oncanplaythroughcapture) -- [onChange](ExtensionProps.md#onchange) -- [onChangeCapture](ExtensionProps.md#onchangecapture) -- [onClick](ExtensionProps.md#onclick) -- [onClickCapture](ExtensionProps.md#onclickcapture) -- [onCompositionEnd](ExtensionProps.md#oncompositionend) -- [onCompositionEndCapture](ExtensionProps.md#oncompositionendcapture) -- [onCompositionStart](ExtensionProps.md#oncompositionstart) -- [onCompositionStartCapture](ExtensionProps.md#oncompositionstartcapture) -- [onCompositionUpdate](ExtensionProps.md#oncompositionupdate) -- [onCompositionUpdateCapture](ExtensionProps.md#oncompositionupdatecapture) -- [onContextMenu](ExtensionProps.md#oncontextmenu) -- [onContextMenuCapture](ExtensionProps.md#oncontextmenucapture) -- [onCopy](ExtensionProps.md#oncopy) -- [onCopyCapture](ExtensionProps.md#oncopycapture) -- [onCut](ExtensionProps.md#oncut) -- [onCutCapture](ExtensionProps.md#oncutcapture) -- [onDoubleClick](ExtensionProps.md#ondoubleclick) -- [onDoubleClickCapture](ExtensionProps.md#ondoubleclickcapture) -- [onDrag](ExtensionProps.md#ondrag) -- [onDragCapture](ExtensionProps.md#ondragcapture) -- [onDragEnd](ExtensionProps.md#ondragend) -- [onDragEndCapture](ExtensionProps.md#ondragendcapture) -- [onDragEnter](ExtensionProps.md#ondragenter) -- [onDragEnterCapture](ExtensionProps.md#ondragentercapture) -- [onDragExit](ExtensionProps.md#ondragexit) -- [onDragExitCapture](ExtensionProps.md#ondragexitcapture) -- [onDragLeave](ExtensionProps.md#ondragleave) -- [onDragLeaveCapture](ExtensionProps.md#ondragleavecapture) -- [onDragOver](ExtensionProps.md#ondragover) -- [onDragOverCapture](ExtensionProps.md#ondragovercapture) -- [onDragStart](ExtensionProps.md#ondragstart) -- [onDragStartCapture](ExtensionProps.md#ondragstartcapture) -- [onDrop](ExtensionProps.md#ondrop) -- [onDropCapture](ExtensionProps.md#ondropcapture) -- [onDurationChange](ExtensionProps.md#ondurationchange) -- [onDurationChangeCapture](ExtensionProps.md#ondurationchangecapture) -- [onEmptied](ExtensionProps.md#onemptied) -- [onEmptiedCapture](ExtensionProps.md#onemptiedcapture) -- [onEncrypted](ExtensionProps.md#onencrypted) -- [onEncryptedCapture](ExtensionProps.md#onencryptedcapture) -- [onEnded](ExtensionProps.md#onended) -- [onEndedCapture](ExtensionProps.md#onendedcapture) -- [onError](ExtensionProps.md#onerror) -- [onErrorCapture](ExtensionProps.md#onerrorcapture) -- [onFocus](ExtensionProps.md#onfocus) -- [onFocusCapture](ExtensionProps.md#onfocuscapture) -- [onGotPointerCapture](ExtensionProps.md#ongotpointercapture) -- [onGotPointerCaptureCapture](ExtensionProps.md#ongotpointercapturecapture) -- [onInput](ExtensionProps.md#oninput) -- [onInputCapture](ExtensionProps.md#oninputcapture) -- [onInvalid](ExtensionProps.md#oninvalid) -- [onInvalidCapture](ExtensionProps.md#oninvalidcapture) -- [onKeyDown](ExtensionProps.md#onkeydown) -- [onKeyDownCapture](ExtensionProps.md#onkeydowncapture) -- [onKeyPress](ExtensionProps.md#onkeypress) -- [onKeyPressCapture](ExtensionProps.md#onkeypresscapture) -- [onKeyUp](ExtensionProps.md#onkeyup) -- [onKeyUpCapture](ExtensionProps.md#onkeyupcapture) -- [onLoad](ExtensionProps.md#onload) -- [onLoadCapture](ExtensionProps.md#onloadcapture) -- [onLoadStart](ExtensionProps.md#onloadstart) -- [onLoadStartCapture](ExtensionProps.md#onloadstartcapture) -- [onLoadedData](ExtensionProps.md#onloadeddata) -- [onLoadedDataCapture](ExtensionProps.md#onloadeddatacapture) -- [onLoadedMetadata](ExtensionProps.md#onloadedmetadata) -- [onLoadedMetadataCapture](ExtensionProps.md#onloadedmetadatacapture) -- [onLostPointerCapture](ExtensionProps.md#onlostpointercapture) -- [onLostPointerCaptureCapture](ExtensionProps.md#onlostpointercapturecapture) -- [onMouseDown](ExtensionProps.md#onmousedown) -- [onMouseDownCapture](ExtensionProps.md#onmousedowncapture) -- [onMouseEnter](ExtensionProps.md#onmouseenter) -- [onMouseLeave](ExtensionProps.md#onmouseleave) -- [onMouseMove](ExtensionProps.md#onmousemove) -- [onMouseMoveCapture](ExtensionProps.md#onmousemovecapture) -- [onMouseOut](ExtensionProps.md#onmouseout) -- [onMouseOutCapture](ExtensionProps.md#onmouseoutcapture) -- [onMouseOver](ExtensionProps.md#onmouseover) -- [onMouseOverCapture](ExtensionProps.md#onmouseovercapture) -- [onMouseUp](ExtensionProps.md#onmouseup) -- [onMouseUpCapture](ExtensionProps.md#onmouseupcapture) -- [onPaste](ExtensionProps.md#onpaste) -- [onPasteCapture](ExtensionProps.md#onpastecapture) -- [onPause](ExtensionProps.md#onpause) -- [onPauseCapture](ExtensionProps.md#onpausecapture) -- [onPlay](ExtensionProps.md#onplay) -- [onPlayCapture](ExtensionProps.md#onplaycapture) -- [onPlaying](ExtensionProps.md#onplaying) -- [onPlayingCapture](ExtensionProps.md#onplayingcapture) -- [onPointerCancel](ExtensionProps.md#onpointercancel) -- [onPointerCancelCapture](ExtensionProps.md#onpointercancelcapture) -- [onPointerDown](ExtensionProps.md#onpointerdown) -- [onPointerDownCapture](ExtensionProps.md#onpointerdowncapture) -- [onPointerEnter](ExtensionProps.md#onpointerenter) -- [onPointerEnterCapture](ExtensionProps.md#onpointerentercapture) -- [onPointerLeave](ExtensionProps.md#onpointerleave) -- [onPointerLeaveCapture](ExtensionProps.md#onpointerleavecapture) -- [onPointerMove](ExtensionProps.md#onpointermove) -- [onPointerMoveCapture](ExtensionProps.md#onpointermovecapture) -- [onPointerOut](ExtensionProps.md#onpointerout) -- [onPointerOutCapture](ExtensionProps.md#onpointeroutcapture) -- [onPointerOver](ExtensionProps.md#onpointerover) -- [onPointerOverCapture](ExtensionProps.md#onpointerovercapture) -- [onPointerUp](ExtensionProps.md#onpointerup) -- [onPointerUpCapture](ExtensionProps.md#onpointerupcapture) -- [onProgress](ExtensionProps.md#onprogress) -- [onProgressCapture](ExtensionProps.md#onprogresscapture) -- [onRateChange](ExtensionProps.md#onratechange) -- [onRateChangeCapture](ExtensionProps.md#onratechangecapture) -- [onReset](ExtensionProps.md#onreset) -- [onResetCapture](ExtensionProps.md#onresetcapture) -- [onScroll](ExtensionProps.md#onscroll) -- [onScrollCapture](ExtensionProps.md#onscrollcapture) -- [onSeeked](ExtensionProps.md#onseeked) -- [onSeekedCapture](ExtensionProps.md#onseekedcapture) -- [onSeeking](ExtensionProps.md#onseeking) -- [onSeekingCapture](ExtensionProps.md#onseekingcapture) -- [onSelect](ExtensionProps.md#onselect) -- [onSelectCapture](ExtensionProps.md#onselectcapture) -- [onStalled](ExtensionProps.md#onstalled) -- [onStalledCapture](ExtensionProps.md#onstalledcapture) -- [onSubmit](ExtensionProps.md#onsubmit) -- [onSubmitCapture](ExtensionProps.md#onsubmitcapture) -- [onSuspend](ExtensionProps.md#onsuspend) -- [onSuspendCapture](ExtensionProps.md#onsuspendcapture) -- [onTimeUpdate](ExtensionProps.md#ontimeupdate) -- [onTimeUpdateCapture](ExtensionProps.md#ontimeupdatecapture) -- [onTouchCancel](ExtensionProps.md#ontouchcancel) -- [onTouchCancelCapture](ExtensionProps.md#ontouchcancelcapture) -- [onTouchEnd](ExtensionProps.md#ontouchend) -- [onTouchEndCapture](ExtensionProps.md#ontouchendcapture) -- [onTouchMove](ExtensionProps.md#ontouchmove) -- [onTouchMoveCapture](ExtensionProps.md#ontouchmovecapture) -- [onTouchStart](ExtensionProps.md#ontouchstart) -- [onTouchStartCapture](ExtensionProps.md#ontouchstartcapture) -- [onTransitionEnd](ExtensionProps.md#ontransitionend) -- [onTransitionEndCapture](ExtensionProps.md#ontransitionendcapture) -- [onVolumeChange](ExtensionProps.md#onvolumechange) -- [onVolumeChangeCapture](ExtensionProps.md#onvolumechangecapture) -- [onWaiting](ExtensionProps.md#onwaiting) -- [onWaitingCapture](ExtensionProps.md#onwaitingcapture) -- [onWheel](ExtensionProps.md#onwheel) -- [onWheelCapture](ExtensionProps.md#onwheelcapture) -- [placeholder](ExtensionProps.md#placeholder) -- [prefix](ExtensionProps.md#prefix) -- [property](ExtensionProps.md#property) -- [radioGroup](ExtensionProps.md#radiogroup) -- [resource](ExtensionProps.md#resource) -- [results](ExtensionProps.md#results) -- [role](ExtensionProps.md#role) -- [security](ExtensionProps.md#security) -- [slot](ExtensionProps.md#slot) -- [spellCheck](ExtensionProps.md#spellcheck) -- [style](ExtensionProps.md#style) -- [suppressContentEditableWarning](ExtensionProps.md#suppresscontenteditablewarning) -- [suppressHydrationWarning](ExtensionProps.md#suppresshydrationwarning) -- [tabIndex](ExtensionProps.md#tabindex) -- [title](ExtensionProps.md#title) -- [translate](ExtensionProps.md#translate) -- [typeof](ExtensionProps.md#typeof) -- [unselectable](ExtensionProps.md#unselectable) -- [vocab](ExtensionProps.md#vocab) - -## Extension Properties - -### state - -• `Optional` **state**: `Record`<`string`, `unknown`\> - -#### Defined in - -[packages/framework/esm-react-utils/src/Extension.tsx:8](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-react-utils/src/Extension.tsx#L8) - -___ - -## Other Properties - -### about - -• `Optional` **about**: `string` - -#### Inherited from - -React.HTMLAttributes.about - -#### Defined in - -node_modules/@types/react/index.d.ts:1875 - -___ - -### accessKey - -• `Optional` **accessKey**: `string` - -#### Inherited from - -React.HTMLAttributes.accessKey - -#### Defined in - -node_modules/@types/react/index.d.ts:1851 - -___ - -### aria-activedescendant - -• `Optional` **aria-activedescendant**: `string` - -Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. - -#### Inherited from - -React.HTMLAttributes.aria-activedescendant - -#### Defined in - -node_modules/@types/react/index.d.ts:1585 - -___ - -### aria-atomic - -• `Optional` **aria-atomic**: `Booleanish` - -Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. - -#### Inherited from - -React.HTMLAttributes.aria-atomic - -#### Defined in - -node_modules/@types/react/index.d.ts:1587 - -___ - -### aria-autocomplete - -• `Optional` **aria-autocomplete**: ``"list"`` \| ``"none"`` \| ``"inline"`` \| ``"both"`` - -Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be -presented if they are made. - -#### Inherited from - -React.HTMLAttributes.aria-autocomplete - -#### Defined in - -node_modules/@types/react/index.d.ts:1592 - -___ - -### aria-busy - -• `Optional` **aria-busy**: `Booleanish` - -Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. - -#### Inherited from - -React.HTMLAttributes.aria-busy - -#### Defined in - -node_modules/@types/react/index.d.ts:1594 - -___ - -### aria-checked - -• `Optional` **aria-checked**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"mixed"`` - -Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. - -**`see`** aria-pressed @see aria-selected. - -#### Inherited from - -React.HTMLAttributes.aria-checked - -#### Defined in - -node_modules/@types/react/index.d.ts:1599 - -___ - -### aria-colcount - -• `Optional` **aria-colcount**: `number` - -Defines the total number of columns in a table, grid, or treegrid. - -**`see`** aria-colindex. - -#### Inherited from - -React.HTMLAttributes.aria-colcount - -#### Defined in - -node_modules/@types/react/index.d.ts:1604 - -___ - -### aria-colindex - -• `Optional` **aria-colindex**: `number` - -Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. - -**`see`** aria-colcount @see aria-colspan. - -#### Inherited from - -React.HTMLAttributes.aria-colindex - -#### Defined in - -node_modules/@types/react/index.d.ts:1609 - -___ - -### aria-colspan - -• `Optional` **aria-colspan**: `number` - -Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. - -**`see`** aria-colindex @see aria-rowspan. - -#### Inherited from - -React.HTMLAttributes.aria-colspan - -#### Defined in - -node_modules/@types/react/index.d.ts:1614 - -___ - -### aria-controls - -• `Optional` **aria-controls**: `string` - -Identifies the element (or elements) whose contents or presence are controlled by the current element. - -**`see`** aria-owns. - -#### Inherited from - -React.HTMLAttributes.aria-controls - -#### Defined in - -node_modules/@types/react/index.d.ts:1619 - -___ - -### aria-current - -• `Optional` **aria-current**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"page"`` \| ``"step"`` \| ``"location"`` \| ``"date"`` \| ``"time"`` - -Indicates the element that represents the current item within a container or set of related elements. - -#### Inherited from - -React.HTMLAttributes.aria-current - -#### Defined in - -node_modules/@types/react/index.d.ts:1621 - -___ - -### aria-describedby - -• `Optional` **aria-describedby**: `string` - -Identifies the element (or elements) that describes the object. - -**`see`** aria-labelledby - -#### Inherited from - -React.HTMLAttributes.aria-describedby - -#### Defined in - -node_modules/@types/react/index.d.ts:1626 - -___ - -### aria-details - -• `Optional` **aria-details**: `string` - -Identifies the element that provides a detailed, extended description for the object. - -**`see`** aria-describedby. - -#### Inherited from - -React.HTMLAttributes.aria-details - -#### Defined in - -node_modules/@types/react/index.d.ts:1631 - -___ - -### aria-disabled - -• `Optional` **aria-disabled**: `Booleanish` - -Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. - -**`see`** aria-hidden @see aria-readonly. - -#### Inherited from - -React.HTMLAttributes.aria-disabled - -#### Defined in - -node_modules/@types/react/index.d.ts:1636 - -___ - -### aria-dropeffect - -• `Optional` **aria-dropeffect**: ``"link"`` \| ``"none"`` \| ``"copy"`` \| ``"execute"`` \| ``"move"`` \| ``"popup"`` - -Indicates what functions can be performed when a dragged object is released on the drop target. - -**`deprecated`** in ARIA 1.1 - -#### Inherited from - -React.HTMLAttributes.aria-dropeffect - -#### Defined in - -node_modules/@types/react/index.d.ts:1641 - -___ - -### aria-errormessage - -• `Optional` **aria-errormessage**: `string` - -Identifies the element that provides an error message for the object. - -**`see`** aria-invalid @see aria-describedby. - -#### Inherited from - -React.HTMLAttributes.aria-errormessage - -#### Defined in - -node_modules/@types/react/index.d.ts:1646 - -___ - -### aria-expanded - -• `Optional` **aria-expanded**: `Booleanish` - -Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. - -#### Inherited from - -React.HTMLAttributes.aria-expanded - -#### Defined in - -node_modules/@types/react/index.d.ts:1648 - -___ - -### aria-flowto - -• `Optional` **aria-flowto**: `string` - -Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, -allows assistive technology to override the general default of reading in document source order. - -#### Inherited from - -React.HTMLAttributes.aria-flowto - -#### Defined in - -node_modules/@types/react/index.d.ts:1653 - -___ - -### aria-grabbed - -• `Optional` **aria-grabbed**: `Booleanish` - -Indicates an element's "grabbed" state in a drag-and-drop operation. - -**`deprecated`** in ARIA 1.1 - -#### Inherited from - -React.HTMLAttributes.aria-grabbed - -#### Defined in - -node_modules/@types/react/index.d.ts:1658 - -___ - -### aria-haspopup - -• `Optional` **aria-haspopup**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"dialog"`` \| ``"grid"`` \| ``"listbox"`` \| ``"menu"`` \| ``"tree"`` - -Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. - -#### Inherited from - -React.HTMLAttributes.aria-haspopup - -#### Defined in - -node_modules/@types/react/index.d.ts:1660 - -___ - -### aria-hidden - -• `Optional` **aria-hidden**: `Booleanish` - -Indicates whether the element is exposed to an accessibility API. - -**`see`** aria-disabled. - -#### Inherited from - -React.HTMLAttributes.aria-hidden - -#### Defined in - -node_modules/@types/react/index.d.ts:1665 - -___ - -### aria-invalid - -• `Optional` **aria-invalid**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"grammar"`` \| ``"spelling"`` - -Indicates the entered value does not conform to the format expected by the application. - -**`see`** aria-errormessage. - -#### Inherited from - -React.HTMLAttributes.aria-invalid - -#### Defined in - -node_modules/@types/react/index.d.ts:1670 - -___ - -### aria-keyshortcuts - -• `Optional` **aria-keyshortcuts**: `string` - -Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. - -#### Inherited from - -React.HTMLAttributes.aria-keyshortcuts - -#### Defined in - -node_modules/@types/react/index.d.ts:1672 - -___ - -### aria-label - -• `Optional` **aria-label**: `string` - -Defines a string value that labels the current element. - -**`see`** aria-labelledby. - -#### Inherited from - -React.HTMLAttributes.aria-label - -#### Defined in - -node_modules/@types/react/index.d.ts:1677 - -___ - -### aria-labelledby - -• `Optional` **aria-labelledby**: `string` - -Identifies the element (or elements) that labels the current element. - -**`see`** aria-describedby. - -#### Inherited from - -React.HTMLAttributes.aria-labelledby - -#### Defined in - -node_modules/@types/react/index.d.ts:1682 - -___ - -### aria-level - -• `Optional` **aria-level**: `number` - -Defines the hierarchical level of an element within a structure. - -#### Inherited from - -React.HTMLAttributes.aria-level - -#### Defined in - -node_modules/@types/react/index.d.ts:1684 - -___ - -### aria-live - -• `Optional` **aria-live**: ``"off"`` \| ``"assertive"`` \| ``"polite"`` - -Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. - -#### Inherited from - -React.HTMLAttributes.aria-live - -#### Defined in - -node_modules/@types/react/index.d.ts:1686 - -___ - -### aria-modal - -• `Optional` **aria-modal**: `Booleanish` - -Indicates whether an element is modal when displayed. - -#### Inherited from - -React.HTMLAttributes.aria-modal - -#### Defined in - -node_modules/@types/react/index.d.ts:1688 - -___ - -### aria-multiline - -• `Optional` **aria-multiline**: `Booleanish` - -Indicates whether a text box accepts multiple lines of input or only a single line. - -#### Inherited from - -React.HTMLAttributes.aria-multiline - -#### Defined in - -node_modules/@types/react/index.d.ts:1690 - -___ - -### aria-multiselectable - -• `Optional` **aria-multiselectable**: `Booleanish` - -Indicates that the user may select more than one item from the current selectable descendants. - -#### Inherited from - -React.HTMLAttributes.aria-multiselectable - -#### Defined in - -node_modules/@types/react/index.d.ts:1692 - -___ - -### aria-orientation - -• `Optional` **aria-orientation**: ``"horizontal"`` \| ``"vertical"`` - -Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. - -#### Inherited from - -React.HTMLAttributes.aria-orientation - -#### Defined in - -node_modules/@types/react/index.d.ts:1694 - -___ - -### aria-owns - -• `Optional` **aria-owns**: `string` - -Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship -between DOM elements where the DOM hierarchy cannot be used to represent the relationship. - -**`see`** aria-controls. - -#### Inherited from - -React.HTMLAttributes.aria-owns - -#### Defined in - -node_modules/@types/react/index.d.ts:1700 - -___ - -### aria-placeholder - -• `Optional` **aria-placeholder**: `string` - -Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. -A hint could be a sample value or a brief description of the expected format. - -#### Inherited from - -React.HTMLAttributes.aria-placeholder - -#### Defined in - -node_modules/@types/react/index.d.ts:1705 - -___ - -### aria-posinset - -• `Optional` **aria-posinset**: `number` - -Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. - -**`see`** aria-setsize. - -#### Inherited from - -React.HTMLAttributes.aria-posinset - -#### Defined in - -node_modules/@types/react/index.d.ts:1710 - -___ - -### aria-pressed - -• `Optional` **aria-pressed**: `boolean` \| ``"true"`` \| ``"false"`` \| ``"mixed"`` - -Indicates the current "pressed" state of toggle buttons. - -**`see`** aria-checked @see aria-selected. - -#### Inherited from - -React.HTMLAttributes.aria-pressed - -#### Defined in - -node_modules/@types/react/index.d.ts:1715 - -___ - -### aria-readonly - -• `Optional` **aria-readonly**: `Booleanish` - -Indicates that the element is not editable, but is otherwise operable. - -**`see`** aria-disabled. - -#### Inherited from - -React.HTMLAttributes.aria-readonly - -#### Defined in - -node_modules/@types/react/index.d.ts:1720 - -___ - -### aria-relevant - -• `Optional` **aria-relevant**: ``"text"`` \| ``"additions"`` \| ``"additions removals"`` \| ``"additions text"`` \| ``"all"`` \| ``"removals"`` \| ``"removals additions"`` \| ``"removals text"`` \| ``"text additions"`` \| ``"text removals"`` - -Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. - -**`see`** aria-atomic. - -#### Inherited from - -React.HTMLAttributes.aria-relevant - -#### Defined in - -node_modules/@types/react/index.d.ts:1725 - -___ - -### aria-required - -• `Optional` **aria-required**: `Booleanish` - -Indicates that user input is required on the element before a form may be submitted. - -#### Inherited from - -React.HTMLAttributes.aria-required - -#### Defined in - -node_modules/@types/react/index.d.ts:1727 - -___ - -### aria-roledescription - -• `Optional` **aria-roledescription**: `string` - -Defines a human-readable, author-localized description for the role of an element. - -#### Inherited from - -React.HTMLAttributes.aria-roledescription - -#### Defined in - -node_modules/@types/react/index.d.ts:1729 - -___ - -### aria-rowcount - -• `Optional` **aria-rowcount**: `number` - -Defines the total number of rows in a table, grid, or treegrid. - -**`see`** aria-rowindex. - -#### Inherited from - -React.HTMLAttributes.aria-rowcount - -#### Defined in - -node_modules/@types/react/index.d.ts:1734 - -___ - -### aria-rowindex - -• `Optional` **aria-rowindex**: `number` - -Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. - -**`see`** aria-rowcount @see aria-rowspan. - -#### Inherited from - -React.HTMLAttributes.aria-rowindex - -#### Defined in - -node_modules/@types/react/index.d.ts:1739 - -___ - -### aria-rowspan - -• `Optional` **aria-rowspan**: `number` - -Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. - -**`see`** aria-rowindex @see aria-colspan. - -#### Inherited from - -React.HTMLAttributes.aria-rowspan - -#### Defined in - -node_modules/@types/react/index.d.ts:1744 - -___ - -### aria-selected - -• `Optional` **aria-selected**: `Booleanish` - -Indicates the current "selected" state of various widgets. - -**`see`** aria-checked @see aria-pressed. - -#### Inherited from - -React.HTMLAttributes.aria-selected - -#### Defined in - -node_modules/@types/react/index.d.ts:1749 - -___ - -### aria-setsize - -• `Optional` **aria-setsize**: `number` - -Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. - -**`see`** aria-posinset. - -#### Inherited from - -React.HTMLAttributes.aria-setsize - -#### Defined in - -node_modules/@types/react/index.d.ts:1754 - -___ - -### aria-sort - -• `Optional` **aria-sort**: ``"none"`` \| ``"ascending"`` \| ``"descending"`` \| ``"other"`` - -Indicates if items in a table or grid are sorted in ascending or descending order. - -#### Inherited from - -React.HTMLAttributes.aria-sort - -#### Defined in - -node_modules/@types/react/index.d.ts:1756 - -___ - -### aria-valuemax - -• `Optional` **aria-valuemax**: `number` - -Defines the maximum allowed value for a range widget. - -#### Inherited from - -React.HTMLAttributes.aria-valuemax - -#### Defined in - -node_modules/@types/react/index.d.ts:1758 - -___ - -### aria-valuemin - -• `Optional` **aria-valuemin**: `number` - -Defines the minimum allowed value for a range widget. - -#### Inherited from - -React.HTMLAttributes.aria-valuemin - -#### Defined in - -node_modules/@types/react/index.d.ts:1760 - -___ - -### aria-valuenow - -• `Optional` **aria-valuenow**: `number` - -Defines the current value for a range widget. - -**`see`** aria-valuetext. - -#### Inherited from - -React.HTMLAttributes.aria-valuenow - -#### Defined in - -node_modules/@types/react/index.d.ts:1765 - -___ - -### aria-valuetext - -• `Optional` **aria-valuetext**: `string` - -Defines the human readable text alternative of aria-valuenow for a range widget. - -#### Inherited from - -React.HTMLAttributes.aria-valuetext - -#### Defined in - -node_modules/@types/react/index.d.ts:1767 - -___ - -### autoCapitalize - -• `Optional` **autoCapitalize**: `string` - -#### Inherited from - -React.HTMLAttributes.autoCapitalize - -#### Defined in - -node_modules/@types/react/index.d.ts:1885 - -___ - -### autoCorrect - -• `Optional` **autoCorrect**: `string` - -#### Inherited from - -React.HTMLAttributes.autoCorrect - -#### Defined in - -node_modules/@types/react/index.d.ts:1886 - -___ - -### autoSave - -• `Optional` **autoSave**: `string` - -#### Inherited from - -React.HTMLAttributes.autoSave - -#### Defined in - -node_modules/@types/react/index.d.ts:1887 - -___ - -### children - -• `Optional` **children**: `ReactI18NextChild` \| `Iterable`<`ReactI18NextChild`\> - -#### Inherited from - -React.HTMLAttributes.children - -#### Defined in - -node_modules/react-i18next/ts4.1/index.d.ts:110 - -___ - -### className - -• `Optional` **className**: `string` - -#### Inherited from - -React.HTMLAttributes.className - -#### Defined in - -node_modules/@types/react/index.d.ts:1852 - -___ - -### color - -• `Optional` **color**: `string` - -#### Inherited from - -React.HTMLAttributes.color - -#### Defined in - -node_modules/@types/react/index.d.ts:1888 - -___ - -### contentEditable - -• `Optional` **contentEditable**: `Booleanish` \| ``"inherit"`` - -#### Inherited from - -React.HTMLAttributes.contentEditable - -#### Defined in - -node_modules/@types/react/index.d.ts:1853 - -___ - -### contextMenu - -• `Optional` **contextMenu**: `string` - -#### Inherited from - -React.HTMLAttributes.contextMenu - -#### Defined in - -node_modules/@types/react/index.d.ts:1854 - -___ - -### dangerouslySetInnerHTML - -• `Optional` **dangerouslySetInnerHTML**: `Object` - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `__html` | `string` | - -#### Inherited from - -React.HTMLAttributes.dangerouslySetInnerHTML - -#### Defined in - -node_modules/@types/react/index.d.ts:1374 - -___ - -### datatype - -• `Optional` **datatype**: `string` - -#### Inherited from - -React.HTMLAttributes.datatype - -#### Defined in - -node_modules/@types/react/index.d.ts:1876 - -___ - -### defaultChecked - -• `Optional` **defaultChecked**: `boolean` - -#### Inherited from - -React.HTMLAttributes.defaultChecked - -#### Defined in - -node_modules/@types/react/index.d.ts:1845 - -___ - -### defaultValue - -• `Optional` **defaultValue**: `string` \| `number` \| readonly `string`[] - -#### Inherited from - -React.HTMLAttributes.defaultValue - -#### Defined in - -node_modules/@types/react/index.d.ts:1846 - -___ - -### dir - -• `Optional` **dir**: `string` - -#### Inherited from - -React.HTMLAttributes.dir - -#### Defined in - -node_modules/@types/react/index.d.ts:1855 - -___ - -### draggable - -• `Optional` **draggable**: `Booleanish` - -#### Inherited from - -React.HTMLAttributes.draggable - -#### Defined in - -node_modules/@types/react/index.d.ts:1856 - -___ - -### hidden - -• `Optional` **hidden**: `boolean` - -#### Inherited from - -React.HTMLAttributes.hidden - -#### Defined in - -node_modules/@types/react/index.d.ts:1857 - -___ - -### id - -• `Optional` **id**: `string` - -#### Inherited from - -React.HTMLAttributes.id - -#### Defined in - -node_modules/@types/react/index.d.ts:1858 - -___ - -### inlist - -• `Optional` **inlist**: `any` - -#### Inherited from - -React.HTMLAttributes.inlist - -#### Defined in - -node_modules/@types/react/index.d.ts:1877 - -___ - -### inputMode - -• `Optional` **inputMode**: ``"none"`` \| ``"search"`` \| ``"text"`` \| ``"tel"`` \| ``"url"`` \| ``"email"`` \| ``"numeric"`` \| ``"decimal"`` - -Hints at the type of data that might be entered by the user while editing the element or its contents - -**`see`** https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute - -#### Inherited from - -React.HTMLAttributes.inputMode - -#### Defined in - -node_modules/@types/react/index.d.ts:1903 - -___ - -### is - -• `Optional` **is**: `string` - -Specify that a standard HTML element should behave like a defined custom built-in element - -**`see`** https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is - -#### Inherited from - -React.HTMLAttributes.is - -#### Defined in - -node_modules/@types/react/index.d.ts:1908 - -___ - -### itemID - -• `Optional` **itemID**: `string` - -#### Inherited from - -React.HTMLAttributes.itemID - -#### Defined in - -node_modules/@types/react/index.d.ts:1892 - -___ - -### itemProp - -• `Optional` **itemProp**: `string` - -#### Inherited from - -React.HTMLAttributes.itemProp - -#### Defined in - -node_modules/@types/react/index.d.ts:1889 - -___ - -### itemRef - -• `Optional` **itemRef**: `string` - -#### Inherited from - -React.HTMLAttributes.itemRef - -#### Defined in - -node_modules/@types/react/index.d.ts:1893 - -___ - -### itemScope - -• `Optional` **itemScope**: `boolean` - -#### Inherited from - -React.HTMLAttributes.itemScope - -#### Defined in - -node_modules/@types/react/index.d.ts:1890 - -___ - -### itemType - -• `Optional` **itemType**: `string` - -#### Inherited from - -React.HTMLAttributes.itemType - -#### Defined in - -node_modules/@types/react/index.d.ts:1891 - -___ - -### lang - -• `Optional` **lang**: `string` - -#### Inherited from - -React.HTMLAttributes.lang - -#### Defined in - -node_modules/@types/react/index.d.ts:1859 - -___ - -### onAbort - -• `Optional` **onAbort**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAbort - -#### Defined in - -node_modules/@types/react/index.d.ts:1431 - -___ - -### onAbortCapture - -• `Optional` **onAbortCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAbortCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1432 - -___ - -### onAnimationEnd - -• `Optional` **onAnimationEnd**: `AnimationEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAnimationEnd - -#### Defined in - -node_modules/@types/react/index.d.ts:1561 - -___ - -### onAnimationEndCapture - -• `Optional` **onAnimationEndCapture**: `AnimationEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAnimationEndCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1562 - -___ - -### onAnimationIteration - -• `Optional` **onAnimationIteration**: `AnimationEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAnimationIteration - -#### Defined in - -node_modules/@types/react/index.d.ts:1563 - -___ - -### onAnimationIterationCapture - -• `Optional` **onAnimationIterationCapture**: `AnimationEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAnimationIterationCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1564 - -___ - -### onAnimationStart - -• `Optional` **onAnimationStart**: `AnimationEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAnimationStart - -#### Defined in - -node_modules/@types/react/index.d.ts:1559 - -___ - -### onAnimationStartCapture - -• `Optional` **onAnimationStartCapture**: `AnimationEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAnimationStartCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1560 - -___ - -### onAuxClick - -• `Optional` **onAuxClick**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAuxClick - -#### Defined in - -node_modules/@types/react/index.d.ts:1477 - -___ - -### onAuxClickCapture - -• `Optional` **onAuxClickCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onAuxClickCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1478 - -___ - -### onBeforeInput - -• `Optional` **onBeforeInput**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onBeforeInput - -#### Defined in - -node_modules/@types/react/index.d.ts:1403 - -___ - -### onBeforeInputCapture - -• `Optional` **onBeforeInputCapture**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onBeforeInputCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1404 - -___ - -### onBlur - -• `Optional` **onBlur**: `FocusEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onBlur - -#### Defined in - -node_modules/@types/react/index.d.ts:1397 - -___ - -### onBlurCapture - -• `Optional` **onBlurCapture**: `FocusEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onBlurCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1398 - -___ - -### onCanPlay - -• `Optional` **onCanPlay**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCanPlay - -#### Defined in - -node_modules/@types/react/index.d.ts:1433 - -___ - -### onCanPlayCapture - -• `Optional` **onCanPlayCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCanPlayCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1434 - -___ - -### onCanPlayThrough - -• `Optional` **onCanPlayThrough**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCanPlayThrough - -#### Defined in - -node_modules/@types/react/index.d.ts:1435 - -___ - -### onCanPlayThroughCapture - -• `Optional` **onCanPlayThroughCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCanPlayThroughCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1436 - -___ - -### onChange - -• `Optional` **onChange**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onChange - -#### Defined in - -node_modules/@types/react/index.d.ts:1401 - -___ - -### onChangeCapture - -• `Optional` **onChangeCapture**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onChangeCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1402 - -___ - -### onClick - -• `Optional` **onClick**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onClick - -#### Defined in - -node_modules/@types/react/index.d.ts:1479 - -___ - -### onClickCapture - -• `Optional` **onClickCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onClickCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1480 - -___ - -### onCompositionEnd - -• `Optional` **onCompositionEnd**: `CompositionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCompositionEnd - -#### Defined in - -node_modules/@types/react/index.d.ts:1387 - -___ - -### onCompositionEndCapture - -• `Optional` **onCompositionEndCapture**: `CompositionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCompositionEndCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1388 - -___ - -### onCompositionStart - -• `Optional` **onCompositionStart**: `CompositionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCompositionStart - -#### Defined in - -node_modules/@types/react/index.d.ts:1389 - -___ - -### onCompositionStartCapture - -• `Optional` **onCompositionStartCapture**: `CompositionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCompositionStartCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1390 - -___ - -### onCompositionUpdate - -• `Optional` **onCompositionUpdate**: `CompositionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCompositionUpdate - -#### Defined in - -node_modules/@types/react/index.d.ts:1391 - -___ - -### onCompositionUpdateCapture - -• `Optional` **onCompositionUpdateCapture**: `CompositionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCompositionUpdateCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1392 - -___ - -### onContextMenu - -• `Optional` **onContextMenu**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onContextMenu - -#### Defined in - -node_modules/@types/react/index.d.ts:1481 - -___ - -### onContextMenuCapture - -• `Optional` **onContextMenuCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onContextMenuCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1482 - -___ - -### onCopy - -• `Optional` **onCopy**: `ClipboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCopy - -#### Defined in - -node_modules/@types/react/index.d.ts:1379 - -___ - -### onCopyCapture - -• `Optional` **onCopyCapture**: `ClipboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCopyCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1380 - -___ - -### onCut - -• `Optional` **onCut**: `ClipboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCut - -#### Defined in - -node_modules/@types/react/index.d.ts:1381 - -___ - -### onCutCapture - -• `Optional` **onCutCapture**: `ClipboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onCutCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1382 - -___ - -### onDoubleClick - -• `Optional` **onDoubleClick**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDoubleClick - -#### Defined in - -node_modules/@types/react/index.d.ts:1483 - -___ - -### onDoubleClickCapture - -• `Optional` **onDoubleClickCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDoubleClickCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1484 - -___ - -### onDrag - -• `Optional` **onDrag**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDrag - -#### Defined in - -node_modules/@types/react/index.d.ts:1485 - -___ - -### onDragCapture - -• `Optional` **onDragCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1486 - -___ - -### onDragEnd - -• `Optional` **onDragEnd**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragEnd - -#### Defined in - -node_modules/@types/react/index.d.ts:1487 - -___ - -### onDragEndCapture - -• `Optional` **onDragEndCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragEndCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1488 - -___ - -### onDragEnter - -• `Optional` **onDragEnter**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragEnter - -#### Defined in - -node_modules/@types/react/index.d.ts:1489 - -___ - -### onDragEnterCapture - -• `Optional` **onDragEnterCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragEnterCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1490 - -___ - -### onDragExit - -• `Optional` **onDragExit**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragExit - -#### Defined in - -node_modules/@types/react/index.d.ts:1491 - -___ - -### onDragExitCapture - -• `Optional` **onDragExitCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragExitCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1492 - -___ - -### onDragLeave - -• `Optional` **onDragLeave**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragLeave - -#### Defined in - -node_modules/@types/react/index.d.ts:1493 - -___ - -### onDragLeaveCapture - -• `Optional` **onDragLeaveCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragLeaveCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1494 - -___ - -### onDragOver - -• `Optional` **onDragOver**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragOver - -#### Defined in - -node_modules/@types/react/index.d.ts:1495 - -___ - -### onDragOverCapture - -• `Optional` **onDragOverCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragOverCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1496 - -___ - -### onDragStart - -• `Optional` **onDragStart**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragStart - -#### Defined in - -node_modules/@types/react/index.d.ts:1497 - -___ - -### onDragStartCapture - -• `Optional` **onDragStartCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDragStartCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1498 - -___ - -### onDrop - -• `Optional` **onDrop**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDrop - -#### Defined in - -node_modules/@types/react/index.d.ts:1499 - -___ - -### onDropCapture - -• `Optional` **onDropCapture**: `DragEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDropCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1500 - -___ - -### onDurationChange - -• `Optional` **onDurationChange**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDurationChange - -#### Defined in - -node_modules/@types/react/index.d.ts:1437 - -___ - -### onDurationChangeCapture - -• `Optional` **onDurationChangeCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onDurationChangeCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1438 - -___ - -### onEmptied - -• `Optional` **onEmptied**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onEmptied - -#### Defined in - -node_modules/@types/react/index.d.ts:1439 - -___ - -### onEmptiedCapture - -• `Optional` **onEmptiedCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onEmptiedCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1440 - -___ - -### onEncrypted - -• `Optional` **onEncrypted**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onEncrypted - -#### Defined in - -node_modules/@types/react/index.d.ts:1441 - -___ - -### onEncryptedCapture - -• `Optional` **onEncryptedCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onEncryptedCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1442 - -___ - -### onEnded - -• `Optional` **onEnded**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onEnded - -#### Defined in - -node_modules/@types/react/index.d.ts:1443 - -___ - -### onEndedCapture - -• `Optional` **onEndedCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onEndedCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1444 - -___ - -### onError - -• `Optional` **onError**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onError - -#### Defined in - -node_modules/@types/react/index.d.ts:1417 - -___ - -### onErrorCapture - -• `Optional` **onErrorCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onErrorCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1418 - -___ - -### onFocus - -• `Optional` **onFocus**: `FocusEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onFocus - -#### Defined in - -node_modules/@types/react/index.d.ts:1395 - -___ - -### onFocusCapture - -• `Optional` **onFocusCapture**: `FocusEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onFocusCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1396 - -___ - -### onGotPointerCapture - -• `Optional` **onGotPointerCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onGotPointerCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1545 - -___ - -### onGotPointerCaptureCapture - -• `Optional` **onGotPointerCaptureCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onGotPointerCaptureCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1546 - -___ - -### onInput - -• `Optional` **onInput**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onInput - -#### Defined in - -node_modules/@types/react/index.d.ts:1405 - -___ - -### onInputCapture - -• `Optional` **onInputCapture**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onInputCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1406 - -___ - -### onInvalid - -• `Optional` **onInvalid**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onInvalid - -#### Defined in - -node_modules/@types/react/index.d.ts:1411 - -___ - -### onInvalidCapture - -• `Optional` **onInvalidCapture**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onInvalidCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1412 - -___ - -### onKeyDown - -• `Optional` **onKeyDown**: `KeyboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onKeyDown - -#### Defined in - -node_modules/@types/react/index.d.ts:1421 - -___ - -### onKeyDownCapture - -• `Optional` **onKeyDownCapture**: `KeyboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onKeyDownCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1422 - -___ - -### onKeyPress - -• `Optional` **onKeyPress**: `KeyboardEventHandler`<`HTMLDivElement`\> - -**`deprecated`** - -#### Inherited from - -React.HTMLAttributes.onKeyPress - -#### Defined in - -node_modules/@types/react/index.d.ts:1424 - -___ - -### onKeyPressCapture - -• `Optional` **onKeyPressCapture**: `KeyboardEventHandler`<`HTMLDivElement`\> - -**`deprecated`** - -#### Inherited from - -React.HTMLAttributes.onKeyPressCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1426 - -___ - -### onKeyUp - -• `Optional` **onKeyUp**: `KeyboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onKeyUp - -#### Defined in - -node_modules/@types/react/index.d.ts:1427 - -___ - -### onKeyUpCapture - -• `Optional` **onKeyUpCapture**: `KeyboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onKeyUpCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1428 - -___ - -### onLoad - -• `Optional` **onLoad**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoad - -#### Defined in - -node_modules/@types/react/index.d.ts:1415 - -___ - -### onLoadCapture - -• `Optional` **onLoadCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1416 - -___ - -### onLoadStart - -• `Optional` **onLoadStart**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadStart - -#### Defined in - -node_modules/@types/react/index.d.ts:1449 - -___ - -### onLoadStartCapture - -• `Optional` **onLoadStartCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadStartCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1450 - -___ - -### onLoadedData - -• `Optional` **onLoadedData**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadedData - -#### Defined in - -node_modules/@types/react/index.d.ts:1445 - -___ - -### onLoadedDataCapture - -• `Optional` **onLoadedDataCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadedDataCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1446 - -___ - -### onLoadedMetadata - -• `Optional` **onLoadedMetadata**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadedMetadata - -#### Defined in - -node_modules/@types/react/index.d.ts:1447 - -___ - -### onLoadedMetadataCapture - -• `Optional` **onLoadedMetadataCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLoadedMetadataCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1448 - -___ - -### onLostPointerCapture - -• `Optional` **onLostPointerCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLostPointerCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1547 - -___ - -### onLostPointerCaptureCapture - -• `Optional` **onLostPointerCaptureCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onLostPointerCaptureCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1548 - -___ - -### onMouseDown - -• `Optional` **onMouseDown**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseDown - -#### Defined in - -node_modules/@types/react/index.d.ts:1501 - -___ - -### onMouseDownCapture - -• `Optional` **onMouseDownCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseDownCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1502 - -___ - -### onMouseEnter - -• `Optional` **onMouseEnter**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseEnter - -#### Defined in - -node_modules/@types/react/index.d.ts:1503 - -___ - -### onMouseLeave - -• `Optional` **onMouseLeave**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseLeave - -#### Defined in - -node_modules/@types/react/index.d.ts:1504 - -___ - -### onMouseMove - -• `Optional` **onMouseMove**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseMove - -#### Defined in - -node_modules/@types/react/index.d.ts:1505 - -___ - -### onMouseMoveCapture - -• `Optional` **onMouseMoveCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseMoveCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1506 - -___ - -### onMouseOut - -• `Optional` **onMouseOut**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseOut - -#### Defined in - -node_modules/@types/react/index.d.ts:1507 - -___ - -### onMouseOutCapture - -• `Optional` **onMouseOutCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseOutCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1508 - -___ - -### onMouseOver - -• `Optional` **onMouseOver**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseOver - -#### Defined in - -node_modules/@types/react/index.d.ts:1509 - -___ - -### onMouseOverCapture - -• `Optional` **onMouseOverCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseOverCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1510 - -___ - -### onMouseUp - -• `Optional` **onMouseUp**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseUp - -#### Defined in - -node_modules/@types/react/index.d.ts:1511 - -___ - -### onMouseUpCapture - -• `Optional` **onMouseUpCapture**: `MouseEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onMouseUpCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1512 - -___ - -### onPaste - -• `Optional` **onPaste**: `ClipboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPaste - -#### Defined in - -node_modules/@types/react/index.d.ts:1383 - -___ - -### onPasteCapture - -• `Optional` **onPasteCapture**: `ClipboardEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPasteCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1384 - -___ - -### onPause - -• `Optional` **onPause**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPause - -#### Defined in - -node_modules/@types/react/index.d.ts:1451 - -___ - -### onPauseCapture - -• `Optional` **onPauseCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPauseCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1452 - -___ - -### onPlay - -• `Optional` **onPlay**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPlay - -#### Defined in - -node_modules/@types/react/index.d.ts:1453 - -___ - -### onPlayCapture - -• `Optional` **onPlayCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPlayCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1454 - -___ - -### onPlaying - -• `Optional` **onPlaying**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPlaying - -#### Defined in - -node_modules/@types/react/index.d.ts:1455 - -___ - -### onPlayingCapture - -• `Optional` **onPlayingCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPlayingCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1456 - -___ - -### onPointerCancel - -• `Optional` **onPointerCancel**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerCancel - -#### Defined in - -node_modules/@types/react/index.d.ts:1535 - -___ - -### onPointerCancelCapture - -• `Optional` **onPointerCancelCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerCancelCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1536 - -___ - -### onPointerDown - -• `Optional` **onPointerDown**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerDown - -#### Defined in - -node_modules/@types/react/index.d.ts:1529 - -___ - -### onPointerDownCapture - -• `Optional` **onPointerDownCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerDownCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1530 - -___ - -### onPointerEnter - -• `Optional` **onPointerEnter**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerEnter - -#### Defined in - -node_modules/@types/react/index.d.ts:1537 - -___ - -### onPointerEnterCapture - -• `Optional` **onPointerEnterCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerEnterCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1538 - -___ - -### onPointerLeave - -• `Optional` **onPointerLeave**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerLeave - -#### Defined in - -node_modules/@types/react/index.d.ts:1539 - -___ - -### onPointerLeaveCapture - -• `Optional` **onPointerLeaveCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerLeaveCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1540 - -___ - -### onPointerMove - -• `Optional` **onPointerMove**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerMove - -#### Defined in - -node_modules/@types/react/index.d.ts:1531 - -___ - -### onPointerMoveCapture - -• `Optional` **onPointerMoveCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerMoveCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1532 - -___ - -### onPointerOut - -• `Optional` **onPointerOut**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerOut - -#### Defined in - -node_modules/@types/react/index.d.ts:1543 - -___ - -### onPointerOutCapture - -• `Optional` **onPointerOutCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerOutCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1544 - -___ - -### onPointerOver - -• `Optional` **onPointerOver**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerOver - -#### Defined in - -node_modules/@types/react/index.d.ts:1541 - -___ - -### onPointerOverCapture - -• `Optional` **onPointerOverCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerOverCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1542 - -___ - -### onPointerUp - -• `Optional` **onPointerUp**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerUp - -#### Defined in - -node_modules/@types/react/index.d.ts:1533 - -___ - -### onPointerUpCapture - -• `Optional` **onPointerUpCapture**: `PointerEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onPointerUpCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1534 - -___ - -### onProgress - -• `Optional` **onProgress**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onProgress - -#### Defined in - -node_modules/@types/react/index.d.ts:1457 - -___ - -### onProgressCapture - -• `Optional` **onProgressCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onProgressCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1458 - -___ - -### onRateChange - -• `Optional` **onRateChange**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onRateChange - -#### Defined in - -node_modules/@types/react/index.d.ts:1459 - -___ - -### onRateChangeCapture - -• `Optional` **onRateChangeCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onRateChangeCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1460 - -___ - -### onReset - -• `Optional` **onReset**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onReset - -#### Defined in - -node_modules/@types/react/index.d.ts:1407 - -___ - -### onResetCapture - -• `Optional` **onResetCapture**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onResetCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1408 - -___ - -### onScroll - -• `Optional` **onScroll**: `UIEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onScroll - -#### Defined in - -node_modules/@types/react/index.d.ts:1551 - -___ - -### onScrollCapture - -• `Optional` **onScrollCapture**: `UIEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onScrollCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1552 - -___ - -### onSeeked - -• `Optional` **onSeeked**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSeeked - -#### Defined in - -node_modules/@types/react/index.d.ts:1461 - -___ - -### onSeekedCapture - -• `Optional` **onSeekedCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSeekedCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1462 - -___ - -### onSeeking - -• `Optional` **onSeeking**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSeeking - -#### Defined in - -node_modules/@types/react/index.d.ts:1463 - -___ - -### onSeekingCapture - -• `Optional` **onSeekingCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSeekingCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1464 - -___ - -### onSelect - -• `Optional` **onSelect**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSelect - -#### Defined in - -node_modules/@types/react/index.d.ts:1515 - -___ - -### onSelectCapture - -• `Optional` **onSelectCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSelectCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1516 - -___ - -### onStalled - -• `Optional` **onStalled**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onStalled - -#### Defined in - -node_modules/@types/react/index.d.ts:1465 - -___ - -### onStalledCapture - -• `Optional` **onStalledCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onStalledCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1466 - -___ - -### onSubmit - -• `Optional` **onSubmit**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSubmit - -#### Defined in - -node_modules/@types/react/index.d.ts:1409 - -___ - -### onSubmitCapture - -• `Optional` **onSubmitCapture**: `FormEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSubmitCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1410 - -___ - -### onSuspend - -• `Optional` **onSuspend**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSuspend - -#### Defined in - -node_modules/@types/react/index.d.ts:1467 - -___ - -### onSuspendCapture - -• `Optional` **onSuspendCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onSuspendCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1468 - -___ - -### onTimeUpdate - -• `Optional` **onTimeUpdate**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTimeUpdate - -#### Defined in - -node_modules/@types/react/index.d.ts:1469 - -___ - -### onTimeUpdateCapture - -• `Optional` **onTimeUpdateCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTimeUpdateCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1470 - -___ - -### onTouchCancel - -• `Optional` **onTouchCancel**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchCancel - -#### Defined in - -node_modules/@types/react/index.d.ts:1519 - -___ - -### onTouchCancelCapture - -• `Optional` **onTouchCancelCapture**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchCancelCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1520 - -___ - -### onTouchEnd - -• `Optional` **onTouchEnd**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchEnd - -#### Defined in - -node_modules/@types/react/index.d.ts:1521 - -___ - -### onTouchEndCapture - -• `Optional` **onTouchEndCapture**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchEndCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1522 - -___ - -### onTouchMove - -• `Optional` **onTouchMove**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchMove - -#### Defined in - -node_modules/@types/react/index.d.ts:1523 - -___ - -### onTouchMoveCapture - -• `Optional` **onTouchMoveCapture**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchMoveCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1524 - -___ - -### onTouchStart - -• `Optional` **onTouchStart**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchStart - -#### Defined in - -node_modules/@types/react/index.d.ts:1525 - -___ - -### onTouchStartCapture - -• `Optional` **onTouchStartCapture**: `TouchEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTouchStartCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1526 - -___ - -### onTransitionEnd - -• `Optional` **onTransitionEnd**: `TransitionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTransitionEnd - -#### Defined in - -node_modules/@types/react/index.d.ts:1567 - -___ - -### onTransitionEndCapture - -• `Optional` **onTransitionEndCapture**: `TransitionEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onTransitionEndCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1568 - -___ - -### onVolumeChange - -• `Optional` **onVolumeChange**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onVolumeChange - -#### Defined in - -node_modules/@types/react/index.d.ts:1471 - -___ - -### onVolumeChangeCapture - -• `Optional` **onVolumeChangeCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onVolumeChangeCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1472 - -___ - -### onWaiting - -• `Optional` **onWaiting**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onWaiting - -#### Defined in - -node_modules/@types/react/index.d.ts:1473 - -___ - -### onWaitingCapture - -• `Optional` **onWaitingCapture**: `ReactEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onWaitingCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1474 - -___ - -### onWheel - -• `Optional` **onWheel**: `WheelEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onWheel - -#### Defined in - -node_modules/@types/react/index.d.ts:1555 - -___ - -### onWheelCapture - -• `Optional` **onWheelCapture**: `WheelEventHandler`<`HTMLDivElement`\> - -#### Inherited from - -React.HTMLAttributes.onWheelCapture - -#### Defined in - -node_modules/@types/react/index.d.ts:1556 - -___ - -### placeholder - -• `Optional` **placeholder**: `string` - -#### Inherited from - -React.HTMLAttributes.placeholder - -#### Defined in - -node_modules/@types/react/index.d.ts:1860 - -___ - -### prefix - -• `Optional` **prefix**: `string` - -#### Inherited from - -React.HTMLAttributes.prefix - -#### Defined in - -node_modules/@types/react/index.d.ts:1878 - -___ - -### property - -• `Optional` **property**: `string` - -#### Inherited from - -React.HTMLAttributes.property - -#### Defined in - -node_modules/@types/react/index.d.ts:1879 - -___ - -### radioGroup - -• `Optional` **radioGroup**: `string` - -#### Inherited from - -React.HTMLAttributes.radioGroup - -#### Defined in - -node_modules/@types/react/index.d.ts:1869 - -___ - -### resource - -• `Optional` **resource**: `string` - -#### Inherited from - -React.HTMLAttributes.resource - -#### Defined in - -node_modules/@types/react/index.d.ts:1880 - -___ - -### results - -• `Optional` **results**: `number` - -#### Inherited from - -React.HTMLAttributes.results - -#### Defined in - -node_modules/@types/react/index.d.ts:1894 - -___ - -### role - -• `Optional` **role**: `AriaRole` - -#### Inherited from - -React.HTMLAttributes.role - -#### Defined in - -node_modules/@types/react/index.d.ts:1872 - -___ - -### security - -• `Optional` **security**: `string` - -#### Inherited from - -React.HTMLAttributes.security - -#### Defined in - -node_modules/@types/react/index.d.ts:1895 - -___ - -### slot - -• `Optional` **slot**: `string` - -#### Inherited from - -React.HTMLAttributes.slot - -#### Defined in - -node_modules/@types/react/index.d.ts:1861 - -___ - -### spellCheck - -• `Optional` **spellCheck**: `Booleanish` - -#### Inherited from - -React.HTMLAttributes.spellCheck - -#### Defined in - -node_modules/@types/react/index.d.ts:1862 - -___ - -### style - -• `Optional` **style**: `CSSProperties` - -#### Inherited from - -React.HTMLAttributes.style - -#### Defined in - -node_modules/@types/react/index.d.ts:1863 - -___ - -### suppressContentEditableWarning - -• `Optional` **suppressContentEditableWarning**: `boolean` - -#### Inherited from - -React.HTMLAttributes.suppressContentEditableWarning - -#### Defined in - -node_modules/@types/react/index.d.ts:1847 - -___ - -### suppressHydrationWarning - -• `Optional` **suppressHydrationWarning**: `boolean` - -#### Inherited from - -React.HTMLAttributes.suppressHydrationWarning - -#### Defined in - -node_modules/@types/react/index.d.ts:1848 - -___ - -### tabIndex - -• `Optional` **tabIndex**: `number` - -#### Inherited from - -React.HTMLAttributes.tabIndex - -#### Defined in - -node_modules/@types/react/index.d.ts:1864 - -___ - -### title - -• `Optional` **title**: `string` - -#### Inherited from - -React.HTMLAttributes.title - -#### Defined in - -node_modules/@types/react/index.d.ts:1865 - -___ - -### translate - -• `Optional` **translate**: ``"yes"`` \| ``"no"`` - -#### Inherited from - -React.HTMLAttributes.translate - -#### Defined in - -node_modules/@types/react/index.d.ts:1866 - -___ - -### typeof - -• `Optional` **typeof**: `string` - -#### Inherited from - -React.HTMLAttributes.typeof - -#### Defined in - -node_modules/@types/react/index.d.ts:1881 - -___ - -### unselectable - -• `Optional` **unselectable**: ``"on"`` \| ``"off"`` - -#### Inherited from - -React.HTMLAttributes.unselectable - -#### Defined in - -node_modules/@types/react/index.d.ts:1896 - -___ - -### vocab - -• `Optional` **vocab**: `string` - -#### Inherited from - -React.HTMLAttributes.vocab - -#### Defined in - -node_modules/@types/react/index.d.ts:1882 diff --git a/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx b/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx index 45294d7ac..8435d13cd 100644 --- a/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx +++ b/packages/framework/esm-framework/src/integration-tests/extension-config.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { act, render, prettyDOM, screen, waitFor } from '@testing-library/react'; +import { act, render, screen, waitFor } from '@testing-library/react'; import { type Person } from '@openmrs/esm-api'; import { mockSessionStore } from '@openmrs/esm-api/mock'; import { attach, registerExtension, updateInternalExtensionStore } from '../../../esm-extensions'; diff --git a/packages/framework/esm-react-utils/src/Extension.tsx b/packages/framework/esm-react-utils/src/Extension.tsx index 0f3838373..1cf29cf5d 100644 --- a/packages/framework/esm-react-utils/src/Extension.tsx +++ b/packages/framework/esm-react-utils/src/Extension.tsx @@ -4,9 +4,9 @@ import React, { useCallback, useContext, useEffect, useRef, useState } from 'rea import { type Parcel } from 'single-spa'; import { ComponentContext } from '.'; -export interface ExtensionProps extends React.HTMLAttributes { +export type ExtensionProps = React.HTMLAttributes & { state?: Record; -} +}; /** * Represents the position in the DOM where each extension within From e39f99b8069f585b7bb0c9cd085bafbba662a59f Mon Sep 17 00:00:00 2001 From: Ian Date: Mon, 7 Oct 2024 14:00:05 -0400 Subject: [PATCH 4/4] Fix-up --- .../src/workspaces/container/workspace-container.test.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx b/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx index 0e007383e..8c7dfa8c7 100644 --- a/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx +++ b/packages/framework/esm-styleguide/src/workspaces/container/workspace-container.test.tsx @@ -22,8 +22,6 @@ jest.mock('react-i18next', () => ({ useTranslation: jest.fn().mockImplementation(() => ({ t: (arg: string) => arg })), })); -const mockedUseTranslation = jest.mocked(useTranslation); - const mockedIsDesktop = isDesktop as unknown as jest.Mock; const mockedUseLayoutType = useLayoutType as jest.Mock;