@siemens/ix-react 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"application-context.js","sources":["../../src/context/application-context.tsx"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport React, { PropsWithChildren } from 'react';\nimport { ReactFrameworkDelegate, reactFrameworkDelegate } from '../delegate';\nimport { IxOverlay, PORTAL_ID } from '../modal/portal';\nimport { IxContext } from './context';\n\nexport type IxApplicationContextProps = PropsWithChildren;\n\nexport class IxApplicationContext extends React.Component<IxApplicationContextProps> {\n private delegate: ReactFrameworkDelegate = reactFrameworkDelegate;\n\n constructor(props: IxApplicationContextProps) {\n super(props);\n this.delegate.isUsingReactPortal = true;\n }\n\n render() {\n return (\n <IxContext.Provider\n value={{\n delegate: this.delegate,\n }}\n >\n {this.props.children}\n <IxOverlay delegate={this.delegate}></IxOverlay>\n <div id={PORTAL_ID}></div>\n </IxContext.Provider>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;AAgBa;AAGX;;;AAEE;;;AAIA;;;;AAYH;;"}
1
+ {"version":3,"file":"application-context.js","sources":["../../src/context/application-context.tsx"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport React, { PropsWithChildren } from 'react';\nimport { ReactFrameworkDelegate, reactFrameworkDelegate } from '../delegate';\nimport { IxOverlay, PORTAL_ID } from '../modal/portal';\nimport { IxContext } from './context';\n\nexport type IxApplicationContextProps = PropsWithChildren;\n\nexport class IxApplicationContext extends React.Component<IxApplicationContextProps> {\n private delegate: ReactFrameworkDelegate = reactFrameworkDelegate;\n\n constructor(props: IxApplicationContextProps) {\n super(props);\n this.delegate.isUsingReactPortal = true;\n }\n\n render() {\n return (\n <IxContext.Provider\n value={{\n delegate: this.delegate,\n }}\n >\n {this.props.children}\n <IxOverlay delegate={this.delegate}></IxOverlay>\n <div id={PORTAL_ID}></div>\n </IxContext.Provider>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;AAgBM;AAGJ;;;AAEE;;;AAIA;;;;AAYH;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../src/context/context.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport React from 'react';\nimport { ReactFrameworkDelegate } from '../delegate';\n\nexport const IxContext = React.createContext<{\n delegate: ReactFrameworkDelegate;\n} | null>(null);\n"],"names":[],"mappings":";;AAAA;;;;;;;AAOG;AAKU,MAAA,SAAS,GAAG,KAAK,CAAC,aAAa,CAElC,IAAI;;;;"}
1
+ {"version":3,"file":"context.js","sources":["../../src/context/context.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport React from 'react';\nimport { ReactFrameworkDelegate } from '../delegate';\n\nexport const IxContext = React.createContext<{\n delegate: ReactFrameworkDelegate;\n} | null>(null);\n"],"names":[],"mappings":";;AAAA;;;;;;;AAOG;AAKI,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAElC,IAAI;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sources":["../src/delegate.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FrameworkDelegate, registerFrameworkDelegate } from '@siemens/ix';\nimport ReactDOMClient from 'react-dom/client';\nlet viewInstance = 0;\n\nfunction createViewInstance() {\n return `ix-react-view-${viewInstance++}`;\n}\n\nconst mountedRootNodes: Record<string, ReactDOMClient.Root> = {};\n\nasync function fallbackRootDom(id: string, view: React.ReactNode) {\n return new Promise((resolve) => {\n const rootElement = document.createElement('DIV');\n rootElement.id = id;\n rootElement.style.display = 'contents';\n document.body.appendChild(rootElement);\n\n const root = ReactDOMClient.createRoot(rootElement);\n root.render(view);\n\n mountedRootNodes[id] = root;\n\n setTimeout(() => {\n const viewElement = rootElement.children[0];\n resolve(viewElement);\n });\n });\n}\n\nasync function fallbackRemoveViewFromRootDom(view: any) {\n const parent = view.parentElement;\n const id = parent.id;\n if (id in mountedRootNodes) {\n mountedRootNodes[id].unmount();\n delete mountedRootNodes[id];\n parent.remove();\n }\n}\n\nexport class ReactFrameworkDelegate implements FrameworkDelegate {\n attachViewToPortal?: (id: string, view: any) => Promise<Element>;\n removeViewFromPortal?: (id: string) => void;\n\n resolvePortalInitPromise: (() => void) | undefined;\n portalInitPromise: Promise<void>;\n isUsingReactPortal = false;\n\n constructor() {\n this.portalInitPromise = new Promise<void>(\n (resolve) => (this.resolvePortalInitPromise = resolve)\n );\n }\n\n async attachView(view: any): Promise<any> {\n const id = createViewInstance();\n\n if (!this.isUsingReactPortal) {\n return fallbackRootDom(id, view);\n }\n\n await this.isPortalReady();\n if (this.attachViewToPortal) {\n const refElement = await this.attachViewToPortal(id, view);\n return refElement;\n }\n\n console.error('Portal could not be initialized');\n }\n\n async removeView(view: any): Promise<void> {\n if (!this.removeViewFromPortal) {\n return fallbackRemoveViewFromRootDom(view);\n }\n\n const parent = view.parentElement;\n const id = parent.getAttribute('data-portal-id');\n\n this.removeViewFromPortal(id);\n }\n\n portalReady() {\n this.resolvePortalInitPromise?.();\n }\n\n private async isPortalReady() {\n return this.portalInitPromise;\n }\n}\n\nexport const reactFrameworkDelegate = new ReactFrameworkDelegate();\nregisterFrameworkDelegate(reactFrameworkDelegate);\n"],"names":[],"mappings":";;;AAAA;;;;;;;AAOG;AAGH,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,SAAS,kBAAkB,GAAA;AACzB,IAAA,OAAO,CAAiB,cAAA,EAAA,YAAY,EAAE,CAAA,CAAE,CAAC;AAC3C,CAAC;AAED,MAAM,gBAAgB,GAAwC,EAAE,CAAC;AAEjE,eAAe,eAAe,CAAC,EAAU,EAAE,IAAqB,EAAA;AAC9D,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;QAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;AACpB,QAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;AACvC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAElB,QAAA,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAE5B,UAAU,CAAC,MAAK;YACd,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,WAAW,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,6BAA6B,CAAC,IAAS,EAAA;AACpD,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AAClC,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACrB,IAAA,IAAI,EAAE,IAAI,gBAAgB,EAAE;AAC1B,QAAA,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/B,QAAA,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;KACjB;AACH,CAAC;MAEY,sBAAsB,CAAA;AAQjC,IAAA,WAAA,GAAA;QAFA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAGzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAClC,CAAC,OAAO,MAAM,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,CACvD,CAAC;KACH;IAED,MAAM,UAAU,CAAC,IAAS,EAAA;AACxB,QAAA,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAClC;AAED,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3D,YAAA,OAAO,UAAU,CAAC;SACnB;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;KAClD;IAED,MAAM,UAAU,CAAC,IAAS,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;SAC5C;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;KAC/B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,wBAAwB,IAAI,CAAC;KACnC;AAEO,IAAA,MAAM,aAAa,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AACF,CAAA;AAEY,MAAA,sBAAsB,GAAG,IAAI,sBAAsB,GAAG;AACnE,yBAAyB,CAAC,sBAAsB,CAAC;;;;"}
1
+ {"version":3,"file":"delegate.js","sources":["../src/delegate.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FrameworkDelegate, registerFrameworkDelegate } from '@siemens/ix';\nimport ReactDOMClient from 'react-dom/client';\nlet viewInstance = 0;\n\nfunction createViewInstance() {\n return `ix-react-view-${viewInstance++}`;\n}\n\nconst mountedRootNodes: Record<string, ReactDOMClient.Root> = {};\n\nasync function fallbackRootDom(id: string, view: React.ReactNode) {\n return new Promise((resolve) => {\n const rootElement = document.createElement('DIV');\n rootElement.id = id;\n rootElement.style.display = 'contents';\n document.body.appendChild(rootElement);\n\n const root = ReactDOMClient.createRoot(rootElement);\n root.render(view);\n\n mountedRootNodes[id] = root;\n\n setTimeout(() => {\n const viewElement = rootElement.children[0];\n resolve(viewElement);\n });\n });\n}\n\nasync function fallbackRemoveViewFromRootDom(view: any) {\n const parent = view.parentElement;\n const id = parent.id;\n if (id in mountedRootNodes) {\n mountedRootNodes[id].unmount();\n delete mountedRootNodes[id];\n parent.remove();\n }\n}\n\nexport class ReactFrameworkDelegate implements FrameworkDelegate {\n attachViewToPortal?: (id: string, view: any) => Promise<Element>;\n removeViewFromPortal?: (id: string) => void;\n\n resolvePortalInitPromise: (() => void) | undefined;\n portalInitPromise: Promise<void>;\n isUsingReactPortal = false;\n\n constructor() {\n this.portalInitPromise = new Promise<void>(\n (resolve) => (this.resolvePortalInitPromise = resolve)\n );\n }\n\n async attachView(view: any): Promise<any> {\n const id = createViewInstance();\n\n if (!this.isUsingReactPortal) {\n return fallbackRootDom(id, view);\n }\n\n await this.isPortalReady();\n if (this.attachViewToPortal) {\n const refElement = await this.attachViewToPortal(id, view);\n return refElement;\n }\n\n console.error('Portal could not be initialized');\n }\n\n async removeView(view: any): Promise<void> {\n if (!this.removeViewFromPortal) {\n return fallbackRemoveViewFromRootDom(view);\n }\n\n const parent = view.parentElement;\n const id = parent.getAttribute('data-portal-id');\n\n this.removeViewFromPortal(id);\n }\n\n portalReady() {\n this.resolvePortalInitPromise?.();\n }\n\n private async isPortalReady() {\n return this.portalInitPromise;\n }\n}\n\nexport const reactFrameworkDelegate = new ReactFrameworkDelegate();\nregisterFrameworkDelegate(reactFrameworkDelegate);\n"],"names":[],"mappings":";;;AAAA;;;;;;;AAOG;AAGH,IAAI,YAAY,GAAG,CAAC;AAEpB,SAAS,kBAAkB,GAAA;AACzB,IAAA,OAAO,CAAA,cAAA,EAAiB,YAAY,EAAE,CAAA,CAAE;AAC1C;AAEA,MAAM,gBAAgB,GAAwC,EAAE;AAEhE,eAAe,eAAe,CAAC,EAAU,EAAE,IAAqB,EAAA;AAC9D,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;QAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACjD,QAAA,WAAW,CAAC,EAAE,GAAG,EAAE;AACnB,QAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU;AACtC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAEtC,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAEjB,QAAA,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;QAE3B,UAAU,CAAC,MAAK;YACd,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,WAAW,CAAC;AACtB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEA,eAAe,6BAA6B,CAAC,IAAS,EAAA;AACpD,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;AACjC,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACpB,IAAA,IAAI,EAAE,IAAI,gBAAgB,EAAE;AAC1B,QAAA,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,gBAAgB,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,EAAE;IACjB;AACF;MAEa,sBAAsB,CAAA;AAQjC,IAAA,WAAA,GAAA;QAFA,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAGxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAClC,CAAC,OAAO,MAAM,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,CACvD;IACH;IAEA,MAAM,UAAU,CAAC,IAAS,EAAA;AACxB,QAAA,MAAM,EAAE,GAAG,kBAAkB,EAAE;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC;QAClC;AAEA,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC1D,YAAA,OAAO,UAAU;QACnB;AAEA,QAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC;IAClD;IAEA,MAAM,UAAU,CAAC,IAAS,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,6BAA6B,CAAC,IAAI,CAAC;QAC5C;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC;AAEhD,QAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;IAC/B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,wBAAwB,IAAI;IACnC;AAEQ,IAAA,MAAM,aAAa,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;AACD;AAEM,MAAM,sBAAsB,GAAG,IAAI,sBAAsB;AAChE,yBAAyB,CAAC,sBAAsB,CAAC;;;;"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { IxActionCard, IxApplication, IxApplicationHeader, IxAvatar, IxBasicNavigation, IxBlind, IxBreadcrumb, IxBreadcrumbItem, IxButton, IxCard, IxCardAccordion, IxCardContent, IxCardList, IxCardTitle, IxCategoryFilter, IxCheckbox, IxCheckboxGroup, IxChip, IxCol, IxContent, IxContentHeader, IxCustomField, IxDateDropdown, IxDateInput, IxDatePicker, IxDatetimePicker, IxDivider, IxDrawer, IxDropdown, IxDropdownButton, IxDropdownHeader, IxDropdownItem, IxDropdownQuickActions, IxEmptyState, IxEventList, IxEventListItem, IxExpandingSearch, IxFieldLabel, IxFilterChip, IxFlipTile, IxFlipTileContent, IxGroup, IxGroupContextMenu, IxGroupItem, IxHelperText, IxIconButton, IxIconToggleButton, IxInput, IxInputGroup, IxKeyValue, IxKeyValueList, IxKpi, IxLayoutAuto, IxLayoutGrid, IxLinkButton, IxMapNavigation, IxMapNavigationOverlay, IxMenu, IxMenuAbout, IxMenuAboutItem, IxMenuAboutNews, IxMenuAvatar, IxMenuAvatarItem, IxMenuCategory, IxMenuItem, IxMenuSettings, IxMenuSettingsItem, IxMessageBar, IxModal, IxModalContent, IxModalFooter, IxModalHeader, IxNumberInput, IxPagination, IxPane, IxPaneLayout, IxPill, IxPushCard, IxRadio, IxRadioGroup, IxRow, IxSelect, IxSelectItem, IxSlider, IxSpinner, IxSplitButton, IxTabItem, IxTabs, IxTextarea, IxTile, IxTimePicker, IxToast, IxToastContainer, IxToggle, IxToggleButton, IxTooltip, IxTypography, IxUpload, IxValidationTooltip, IxWorkflowStep, IxWorkflowSteps } from './components.js';
1
+ export { IxActionCard, IxApplication, IxApplicationHeader, IxAvatar, IxBlind, IxBreadcrumb, IxBreadcrumbItem, IxButton, IxCard, IxCardAccordion, IxCardContent, IxCardList, IxCardTitle, IxCategoryFilter, IxCheckbox, IxCheckboxGroup, IxChip, IxCol, IxContent, IxContentHeader, IxCustomField, IxDateDropdown, IxDateInput, IxDatePicker, IxDatetimePicker, IxDivider, IxDrawer, IxDropdown, IxDropdownButton, IxDropdownHeader, IxDropdownItem, IxDropdownQuickActions, IxEmptyState, IxEventList, IxEventListItem, IxExpandingSearch, IxFieldLabel, IxFilterChip, IxFlipTile, IxFlipTileContent, IxGroup, IxGroupContextMenu, IxGroupItem, IxHelperText, IxIconButton, IxIconToggleButton, IxInput, IxInputGroup, IxKeyValue, IxKeyValueList, IxKpi, IxLayoutAuto, IxLayoutGrid, IxLinkButton, IxMenu, IxMenuAbout, IxMenuAboutItem, IxMenuAboutNews, IxMenuAvatar, IxMenuAvatarItem, IxMenuCategory, IxMenuItem, IxMenuSettings, IxMenuSettingsItem, IxMessageBar, IxModal, IxModalContent, IxModalFooter, IxModalHeader, IxNumberInput, IxPagination, IxPane, IxPaneLayout, IxPill, IxProgressIndicator, IxPushCard, IxRadio, IxRadioGroup, IxRow, IxSelect, IxSelectItem, IxSlider, IxSpinner, IxSplitButton, IxTabItem, IxTabs, IxTextarea, IxTile, IxTimeInput, IxTimePicker, IxToast, IxToastContainer, IxToggle, IxToggleButton, IxTooltip, IxTypography, IxUpload, IxValidationTooltip, IxWorkflowStep, IxWorkflowSteps } from './components.js';
2
2
  export { IxApplicationContext } from './context/application-context.js';
3
3
  import './internal-components.js';
4
4
  export { IxIcon } from './ix-icon.js';
@@ -4,10 +4,16 @@ import { defineCustomElement } from '@siemens/ix/components/ix-application-switc
4
4
  import { defineCustomElement as defineCustomElement$3 } from '@siemens/ix/components/ix-menu-expand-icon.js';
5
5
  import { defineCustomElement as defineCustomElement$2 } from '@siemens/ix/components/ix-date-time-card.js';
6
6
  import { defineCustomElement as defineCustomElement$4 } from '@siemens/ix/components/ix-modal-loading.js';
7
+ import { defineCustomElement as defineCustomElement$5 } from '@siemens/ix-icons/components/ix-icon.js';
7
8
 
9
+ /**
10
+ * Define custom elements during usage of the library to ensure that all
11
+ * components are registered before they are used.
12
+ */
8
13
  defineCustomElement();
9
14
  defineCustomElement$1();
10
15
  defineCustomElement$2();
11
16
  defineCustomElement$3();
12
17
  defineCustomElement$4();
18
+ defineCustomElement$5();
13
19
  //# sourceMappingURL=internal-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal-components.js","sources":["../src/internal-components.ts"],"sourcesContent":["'use client';\n\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { defineCustomElement as defineIxApplicationSidebar } from '@siemens/ix/components/ix-application-sidebar.js';\nimport { defineCustomElement as defineIxApplicationSwitchModal } from '@siemens/ix/components/ix-application-switch-modal.js';\nimport { defineCustomElement as defineIxBurgerMenu } from '@siemens/ix/components/ix-menu-expand-icon.js';\nimport { defineCustomElement as defineIxDateTimeCard } from '@siemens/ix/components/ix-date-time-card.js';\nimport { defineCustomElement as defineIxModalLoading } from '@siemens/ix/components/ix-modal-loading.js';\n\ndefineIxApplicationSwitchModal();\ndefineIxApplicationSidebar();\ndefineIxDateTimeCard();\ndefineIxBurgerMenu();\ndefineIxModalLoading();\n"],"names":["defineIxApplicationSwitchModal","defineIxApplicationSidebar","defineIxDateTimeCard","defineIxBurgerMenu","defineIxModalLoading"],"mappings":";;;;;;;AAgBAA;AACAC;AACAC;AACAC;AACAC"}
1
+ {"version":3,"file":"internal-components.js","sources":["../src/internal-components.ts"],"sourcesContent":["'use client';\n\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { defineCustomElement as defineIxApplicationSidebar } from '@siemens/ix/components/ix-application-sidebar.js';\nimport { defineCustomElement as defineIxApplicationSwitchModal } from '@siemens/ix/components/ix-application-switch-modal.js';\nimport { defineCustomElement as defineIxBurgerMenu } from '@siemens/ix/components/ix-menu-expand-icon.js';\nimport { defineCustomElement as defineIxDateTimeCard } from '@siemens/ix/components/ix-date-time-card.js';\nimport { defineCustomElement as defineIxModalLoading } from '@siemens/ix/components/ix-modal-loading.js';\nimport { defineCustomElement as defineIxIcon } from '@siemens/ix-icons/components/ix-icon.js';\n\n/**\n * Define custom elements during usage of the library to ensure that all\n * components are registered before they are used.\n */\ndefineIxApplicationSwitchModal();\ndefineIxApplicationSidebar();\ndefineIxDateTimeCard();\ndefineIxBurgerMenu();\ndefineIxModalLoading();\ndefineIxIcon();\n"],"names":["defineIxApplicationSwitchModal","defineIxApplicationSidebar","defineIxDateTimeCard","defineIxBurgerMenu","defineIxModalLoading","defineIxIcon"],"mappings":";;;;;;;;AAiBA;;;AAGG;AACHA;AACAC;AACAC;AACAC;AACAC;AACAC"}
package/dist/ix-icon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { IxIcon as IxIcon$1, defineCustomElement } from '@siemens/ix-icons/components/ix-icon.js';
2
+ import { defineCustomElement, IxIcon as IxIcon$1 } from '@siemens/ix-icons/components/ix-icon.js';
3
3
  import { createComponent } from '@stencil/react-output-target/runtime';
4
4
  import React from 'react';
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/modal/index.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n ModalConfig as IxModalConfig,\n showModal as _showModal,\n} from '@siemens/ix';\nexport * from './modal';\n\nexport type ModalConfig = {\n content: React.ReactNode | string;\n};\n\nexport async function showModal(\n config: Omit<IxModalConfig, 'content'> & ModalConfig\n) {\n return _showModal(config);\n}\n"],"names":["_showModal"],"mappings":";;;AAAA;;;;;;;AAOG;AAYI,eAAe,SAAS,CAC7B,MAAoD,EAAA;AAEpD,IAAA,OAAOA,WAAU,CAAC,MAAM,CAAC,CAAC;AAC5B;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/modal/index.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n ModalConfig as IxModalConfig,\n showModal as _showModal,\n} from '@siemens/ix';\nexport * from './modal';\n\nexport type ModalConfig = {\n content: React.ReactNode | string;\n};\n\nexport async function showModal(\n config: Omit<IxModalConfig, 'content'> & ModalConfig\n) {\n return _showModal(config);\n}\n"],"names":["_showModal"],"mappings":";;;AAAA;;;;;;;AAOG;AAYI,eAAe,SAAS,CAC7B,MAAoD,EAAA;AAEpD,IAAA,OAAOA,WAAU,CAAC,MAAM,CAAC;AAC3B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"portal.js","sources":["../../src/modal/portal.tsx"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { ReactFrameworkDelegate } from '../delegate';\n\nexport const PORTAL_ID = 'ix-portal';\n\nexport const IxOverlay = (props: { delegate: ReactFrameworkDelegate }) => {\n const [portalRef, setPortalRef] = useState<Element | null>(null);\n\n const resolveElementRef = useRef<\n Record<string, (value: Element | PromiseLike<Element>) => void>\n >({});\n\n const viewRefs = useRef<Record<string, any>>({});\n const [views, setViews] = useState<Record<string, any>>({});\n\n useEffect(() => {\n const addOverlay = (id: string, view: any) => {\n const _views = { ...viewRefs.current };\n _views[id] = view;\n setViews(_views);\n viewRefs.current = _views;\n };\n\n const removeOverlay = (id: string) => {\n const _views = { ...viewRefs.current };\n delete _views[id];\n setViews(_views);\n viewRefs.current = _views;\n };\n\n props.delegate.attachViewToPortal = async (id, view) => {\n addOverlay(id, view);\n return new Promise<Element>((resolve) => {\n const r = { ...resolveElementRef.current };\n r[id] = resolve;\n resolveElementRef.current = r;\n });\n };\n\n props.delegate.removeViewFromPortal = async (id: string) => {\n removeOverlay(id);\n };\n\n props.delegate.portalReady();\n }, []);\n\n useLayoutEffect(() => {\n const portalRef = document.querySelector(`#${PORTAL_ID}`);\n if (portalRef) {\n setPortalRef(portalRef);\n }\n }, []);\n\n useLayoutEffect(() => {\n Object.keys(views).forEach((key) => {\n const resolveQueue = { ...resolveElementRef.current };\n const element = document.querySelector(`[data-portal-id=\"${key}\"]`);\n if (element && element.children.length === 1 && resolveQueue[key]) {\n const view = element.children[0];\n resolveQueue[key](view);\n }\n });\n }, [views]);\n\n if (!portalRef) {\n return null;\n }\n\n return (\n <>\n {Object.keys(views).map((key) => {\n const RenderView = views[key];\n return ReactDOM.createPortal(\n <div data-portal-id={key} style={{ display: 'contents ' }}>\n {RenderView}\n </div>,\n portalRef,\n key\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAcO;AAEM;;AAGX;AAIA;;;AAIE;;AAEE;;AAEA;AACF;AAEA;;AAEE;;AAEA;AACF;;AAGE;AACA;;AAEE;AACA;AACF;AACF;;;AAIA;AAEA;;;;;;;;;;;;AAcE;;AAEE;;AAEJ;AACF;;AAGE;;AAGF;AAGM;;;AAWR;;"}
1
+ {"version":3,"file":"portal.js","sources":["../../src/modal/portal.tsx"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { ReactFrameworkDelegate } from '../delegate';\n\nexport const PORTAL_ID = 'ix-portal';\n\nexport const IxOverlay = (props: { delegate: ReactFrameworkDelegate }) => {\n const [portalRef, setPortalRef] = useState<Element | null>(null);\n\n const resolveElementRef = useRef<\n Record<string, (value: Element | PromiseLike<Element>) => void>\n >({});\n\n const viewRefs = useRef<Record<string, any>>({});\n const [views, setViews] = useState<Record<string, any>>({});\n\n useEffect(() => {\n const addOverlay = (id: string, view: any) => {\n const _views = { ...viewRefs.current };\n _views[id] = view;\n setViews(_views);\n viewRefs.current = _views;\n };\n\n const removeOverlay = (id: string) => {\n const _views = { ...viewRefs.current };\n delete _views[id];\n setViews(_views);\n viewRefs.current = _views;\n };\n\n props.delegate.attachViewToPortal = async (id, view) => {\n addOverlay(id, view);\n return new Promise<Element>((resolve) => {\n const r = { ...resolveElementRef.current };\n r[id] = resolve;\n resolveElementRef.current = r;\n });\n };\n\n props.delegate.removeViewFromPortal = async (id: string) => {\n removeOverlay(id);\n };\n\n props.delegate.portalReady();\n }, []);\n\n useLayoutEffect(() => {\n const portalRef = document.querySelector(`#${PORTAL_ID}`);\n if (portalRef) {\n setPortalRef(portalRef);\n }\n }, []);\n\n useLayoutEffect(() => {\n Object.keys(views).forEach((key) => {\n const resolveQueue = { ...resolveElementRef.current };\n const element = document.querySelector(`[data-portal-id=\"${key}\"]`);\n if (element && element.children.length === 1 && resolveQueue[key]) {\n const view = element.children[0];\n resolveQueue[key](view);\n }\n });\n }, [views]);\n\n if (!portalRef) {\n return null;\n }\n\n return (\n <>\n {Object.keys(views).map((key) => {\n const RenderView = views[key];\n return ReactDOM.createPortal(\n <div data-portal-id={key} style={{ display: 'contents ' }}>\n {RenderView}\n </div>,\n portalRef,\n key\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAcO;AAEA;;AAGL;AAIA;;;AAIE;;AAEE;;AAEA;AACF;AAEA;;AAEE;;AAEA;AACF;;AAGE;AACA;;AAEE;AACA;AACF;AACF;;;AAIA;AAEA;;;;;;;;;;;;AAcE;;AAEE;;AAEJ;AACF;;AAGE;;AAGF;AAGM;;;AAWR;;"}
@@ -8,20 +8,30 @@ async function showToast(config) {
8
8
  // Define custom element, otherwise dynamic creation of toast container will fail
9
9
  defineCustomElement();
10
10
  defineCustomElement$1();
11
- if (typeof config.message === 'string') {
11
+ if (typeof config.message === 'string' && !config.action) {
12
12
  const toastInstance = await toast(config);
13
13
  return toastInstance;
14
14
  }
15
- const node = config.message;
16
- const toastContainer = document.createElement('DIV');
17
- const root = ReactDOMClient.createRoot(toastContainer);
18
- root.render(node);
15
+ let toastContainer;
16
+ let root;
17
+ if (config.message) {
18
+ toastContainer = document.createElement('DIV');
19
+ root = ReactDOMClient.createRoot(toastContainer);
20
+ root.render(config.message);
21
+ }
22
+ let toastContainerAction;
23
+ if (config.action) {
24
+ toastContainerAction = document.createElement('DIV');
25
+ root = ReactDOMClient.createRoot(toastContainerAction);
26
+ root.render(config.action);
27
+ }
19
28
  const toastInstance = await toast({
20
29
  ...config,
21
30
  message: toastContainer,
31
+ action: toastContainerAction,
22
32
  });
23
33
  toastInstance.onClose.once(() => {
24
- root.unmount();
34
+ root?.unmount();
25
35
  });
26
36
  return toastInstance;
27
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sources":["../../src/toast/toast.ts"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { defineCustomElement as defineToastContainer } from '@siemens/ix/components/ix-toast-container.js';\nimport { defineCustomElement as defineToast } from '@siemens/ix/components/ix-toast.js';\n\nimport { toast, ToastConfig as IxToastConfig } from '@siemens/ix';\nimport ReactDOMClient from 'react-dom/client';\n\nexport type ToastConfig = {\n message: string | React.ReactNode;\n};\n\nexport async function showToast(\n config: Omit<IxToastConfig, 'message'> & ToastConfig\n) {\n // Define custom element, otherwise dynamic creation of toast container will fail\n defineToast();\n defineToastContainer();\n\n if (typeof config.message === 'string') {\n const toastInstance = await toast(config as IxToastConfig);\n return toastInstance;\n }\n\n const node = config.message as React.ReactNode;\n const toastContainer = document.createElement('DIV');\n const root = ReactDOMClient.createRoot(toastContainer);\n root.render(node);\n\n const toastInstance = await toast({\n ...config,\n message: toastContainer,\n });\n\n toastInstance.onClose.once(() => {\n root.unmount();\n });\n\n return toastInstance;\n}\n"],"names":[],"mappings":";;;;;;AAmBO;;AAIL;AACA;AAEA;AACE;AACA;;AAGF;;;AAGA;AAEA;AACE;AACA;AACD;AAED;;AAEA;AAEA;AACF;;"}
1
+ {"version":3,"file":"toast.js","sources":["../../src/toast/toast.ts"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { defineCustomElement as defineToastContainer } from '@siemens/ix/components/ix-toast-container.js';\nimport { defineCustomElement as defineToast } from '@siemens/ix/components/ix-toast.js';\n\nimport { toast, ToastConfig as IxToastConfig } from '@siemens/ix';\nimport ReactDOMClient from 'react-dom/client';\n\nexport type ToastConfig = {\n message?: string | React.ReactNode;\n action?: React.ReactNode;\n};\n\nexport async function showToast(\n config: Omit<IxToastConfig, 'message' | 'action'> & ToastConfig\n) {\n // Define custom element, otherwise dynamic creation of toast container will fail\n defineToast();\n defineToastContainer();\n\n if (typeof config.message === 'string' && !config.action) {\n const toastInstance = await toast(config as IxToastConfig);\n return toastInstance;\n }\n\n let toastContainer: HTMLElement | undefined;\n let root: ReactDOMClient.Root | undefined;\n\n if (config.message) {\n toastContainer = document.createElement('DIV');\n root = ReactDOMClient.createRoot(toastContainer);\n root.render(config.message);\n }\n\n let toastContainerAction: HTMLElement | undefined;\n\n if (config.action) {\n toastContainerAction = document.createElement('DIV');\n root = ReactDOMClient.createRoot(toastContainerAction);\n root.render(config.action);\n }\n\n const toastInstance = await toast({\n ...config,\n message: toastContainer,\n action: toastContainerAction,\n });\n\n toastInstance.onClose.once(() => {\n root?.unmount();\n });\n\n return toastInstance;\n}\n"],"names":[],"mappings":";;;;;;AAoBO;;AAIL;AACA;AAEA;AACE;AACA;;AAGF;AACA;AAEA;AACE;AACA;AACA;;AAGF;AAEA;AACE;AACA;AACA;;AAGF;AACE;AACA;AACA;AACD;AAED;;AAEA;AAEA;AACF;;"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { IxTree, defineCustomElement } from '@siemens/ix/components/ix-tree.js';
2
+ import { defineCustomElement, IxTree } from '@siemens/ix/components/ix-tree.js';
3
3
  import { createComponent } from '@stencil/react-output-target/runtime';
4
4
  import React from 'react';
5
5
 
package/dist/tree/tree.js CHANGED
@@ -1,29 +1,34 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import { useRef, useCallback } from 'react';
3
+ import React, { useRef, useCallback } from 'react';
4
4
  import ReactDOMClient from 'react-dom/client';
5
5
  import InternalIxTree from './internal-tree.js';
6
6
 
7
- const IxTree = (props) => {
7
+ const IxTree = React.forwardRef((props, ref) => {
8
8
  const cachedRootNodes = useRef(new Map());
9
9
  const renderItem = useCallback((_, data, __, context, update) => {
10
10
  const treeItem = document.createElement('ix-tree-item');
11
+ const rootNode = ReactDOMClient.createRoot(treeItem);
11
12
  treeItem.hasChildren = data.hasChildren;
12
13
  treeItem.context = context[data.id];
13
- update((itemData, context) => {
14
- treeItem.context = context[itemData.id];
15
- treeItem.hasChildren = itemData.hasChildren;
16
- });
17
- const container = document.createElement('DIV');
18
- const rootNode = ReactDOMClient.createRoot(container);
19
14
  if (props.renderItem) {
20
15
  rootNode.render(props.renderItem(data.data));
21
16
  }
22
- treeItem.appendChild(container);
17
+ update((itemData, newContext) => {
18
+ treeItem.context = newContext[itemData.id];
19
+ treeItem.hasChildren = itemData.hasChildren;
20
+ if (props.renderItem) {
21
+ rootNode.render(props.renderItem(itemData.data));
22
+ }
23
+ });
23
24
  cachedRootNodes.current.set(treeItem, rootNode);
24
25
  return treeItem;
25
26
  }, []);
26
- return (jsx(InternalIxTree, { ...props, renderItem: props.renderItem ? renderItem : undefined, onNodeRemoved: (removed) => {
27
+ return (jsx(InternalIxTree
28
+ //@ts-expect-error ref exposed by the StencilComponent type
29
+ , {
30
+ //@ts-expect-error ref exposed by the StencilComponent type
31
+ ref: ref, ...props, renderItem: props.renderItem ? renderItem : undefined, onNodeRemoved: (removed) => {
27
32
  const { detail } = removed;
28
33
  detail.forEach((removedItemElement) => {
29
34
  if (cachedRootNodes.current.has(removedItemElement)) {
@@ -32,7 +37,7 @@ const IxTree = (props) => {
32
37
  }
33
38
  });
34
39
  } }));
35
- };
40
+ });
36
41
 
37
42
  export { IxTree, IxTree as default };
38
43
  //# sourceMappingURL=tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sources":["../../src/tree/tree.tsx"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { type TreeContext, UpdateCallback } from '@siemens/ix';\nimport React, { useCallback, useRef } from 'react';\nimport ReactDOM, { Root } from 'react-dom/client';\nimport InternalIxTree from './internal-tree';\n\ntype ExtractProps<TComponentOrTProps> =\n TComponentOrTProps extends React.ComponentType<infer TProps>\n ? TProps\n : TComponentOrTProps;\n\ntype IxTreeProps = ExtractProps<typeof InternalIxTree> & {\n renderItem?: (data: any) => React.ReactNode;\n};\n\nexport const IxTree = (props: IxTreeProps) => {\n const cachedRootNodes = useRef<Map<HTMLElement, Root>>(new Map());\n\n const renderItem = useCallback(\n (\n _: number,\n data: any,\n __: any[],\n context: TreeContext,\n update: (callback: UpdateCallback) => void\n ) => {\n const treeItem = document.createElement('ix-tree-item');\n treeItem.hasChildren = data.hasChildren;\n treeItem.context = context[data.id];\n\n update((itemData, context) => {\n treeItem.context = context[itemData.id];\n treeItem.hasChildren = itemData.hasChildren;\n });\n\n const container = document.createElement('DIV');\n const rootNode = ReactDOM.createRoot(container);\n if (props.renderItem) {\n rootNode.render(props.renderItem(data.data));\n }\n\n treeItem.appendChild(container);\n cachedRootNodes.current.set(treeItem, rootNode);\n\n return treeItem;\n },\n []\n );\n\n return (\n <InternalIxTree\n {...props}\n renderItem={props.renderItem ? renderItem : undefined}\n onNodeRemoved={(removed: CustomEvent<any[]>) => {\n const { detail } = removed;\n\n detail.forEach((removedItemElement) => {\n if (cachedRootNodes.current.has(removedItemElement)) {\n cachedRootNodes.current.get(removedItemElement)?.unmount();\n cachedRootNodes.current.delete(removedItemElement);\n }\n });\n }}\n ></InternalIxTree>\n );\n};\n\nexport default IxTree;\n"],"names":[],"mappings":";;;;;;AAwBa;;AAGX;;AASI;;AAGA;;AAEE;AACF;;;AAIA;AACE;;AAGF;;AAGA;;;AAUE;AAEA;;;AAGI;;AAEJ;;AAIR;;"}
1
+ {"version":3,"file":"tree.js","sources":["../../src/tree/tree.tsx"],"sourcesContent":["'use client';\n/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Components,\n type TreeContext,\n UpdateCallback,\n type IxTreeCustomEvent,\n} from '@siemens/ix';\nimport React, { useCallback, useRef } from 'react';\nimport ReactDOM, { Root } from 'react-dom/client';\nimport InternalIxTree from './internal-tree';\n\nexport type IxTreeProps = Omit<\n Components.IxTree,\n 'renderItem' | 'markItemsAsDirty' | 'refreshTree'\n> & {\n renderItem?: (data: any) => React.ReactNode;\n onContextChange?: (event: IxTreeCustomEvent<TreeContext>) => void;\n onNodeToggled?: (\n event: CustomEvent<{ id: string; isExpaned: boolean }>\n ) => void;\n onNodeClicked?: (event: CustomEvent<string>) => void;\n onNodeRemoved?: (event: CustomEvent<any>) => void;\n};\n\nexport const IxTree = React.forwardRef(\n (props: IxTreeProps, ref: React.ForwardedRef<Components.IxTree>) => {\n const cachedRootNodes = useRef<Map<HTMLElement, Root>>(new Map());\n\n const renderItem = useCallback(\n (\n _: number,\n data: any,\n __: any[],\n context: TreeContext,\n update: (callback: UpdateCallback) => void\n ) => {\n const treeItem = document.createElement('ix-tree-item');\n const rootNode = ReactDOM.createRoot(treeItem);\n treeItem.hasChildren = data.hasChildren;\n treeItem.context = context[data.id];\n\n if (props.renderItem) {\n rootNode.render(props.renderItem(data.data));\n }\n\n update((itemData, newContext) => {\n treeItem.context = newContext[itemData.id];\n treeItem.hasChildren = itemData.hasChildren;\n\n if (props.renderItem) {\n rootNode.render(props.renderItem(itemData.data));\n }\n });\n\n cachedRootNodes.current.set(treeItem, rootNode);\n return treeItem;\n },\n []\n );\n\n return (\n <InternalIxTree\n //@ts-expect-error ref exposed by the StencilComponent type\n ref={ref}\n {...props}\n renderItem={props.renderItem ? renderItem : undefined}\n onNodeRemoved={(removed: CustomEvent<any[]>) => {\n const { detail } = removed;\n\n detail.forEach((removedItemElement) => {\n if (cachedRootNodes.current.has(removedItemElement)) {\n cachedRootNodes.current.get(removedItemElement)?.unmount();\n cachedRootNodes.current.delete(removedItemElement);\n }\n });\n }}\n ></InternalIxTree>\n );\n }\n);\n\nexport default IxTree;\n"],"names":[],"mappings":";;;;;;AAiCO;;AAIH;;;AAUI;;AAGA;AACE;;AAGF;;AAEE;AAEA;AACE;;AAEJ;;AAGA;;;;;;;AAYE;AAEA;;;AAGI;;AAEJ;;AAIR;;"}
@@ -2,12 +2,11 @@
2
2
  * This file was automatically generated by the Stencil React Output Target.
3
3
  * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
4
4
  */
5
- import { type BorderlessChangedEvent, type CustomCloseEvent, type CustomLabelChangeEvent, type DateChangeEvent, type DateInputValidityState, type DateRangeChangeEvent, type DateTimeDateChangeEvent, type DateTimeSelectEvent, type ExpandedChangedEvent, type FilterState, type InputState, type IxBreadcrumbCustomEvent, type IxCardListCustomEvent, type IxCategoryFilterCustomEvent, type IxDateDropdownCustomEvent, type IxDateInputCustomEvent, type IxDatePickerCustomEvent, type IxDatetimePickerCustomEvent, type IxGroupItemCustomEvent, type IxInputCustomEvent, type IxMenuAboutCustomEvent, type IxMenuAboutItemCustomEvent, type IxMenuAboutNewsCustomEvent, type IxMenuAvatarItemCustomEvent, type IxMenuSettingsCustomEvent, type IxMenuSettingsItemCustomEvent, type IxModalHeaderCustomEvent, type IxNumberInputCustomEvent, type IxPaneCustomEvent, type IxSplitButtonCustomEvent, type IxTabItemCustomEvent, type IxTextareaCustomEvent, type IxUploadCustomEvent, type TabClickDetail, type VariantChangedEvent } from "@siemens/ix";
5
+ import { type BorderlessChangedEvent, type CustomCloseEvent, type CustomLabelChangeEvent, type DateChangeEvent, type DateInputValidityState, type DateRangeChangeEvent, type DateTimeDateChangeEvent, type DateTimeSelectEvent, type ExpandedChangedEvent, type FilterState, type InputState, type IxBreadcrumbCustomEvent, type IxCardListCustomEvent, type IxCategoryFilterCustomEvent, type IxDateDropdownCustomEvent, type IxDateInputCustomEvent, type IxDatePickerCustomEvent, type IxDatetimePickerCustomEvent, type IxGroupItemCustomEvent, type IxInputCustomEvent, type IxMenuAboutCustomEvent, type IxMenuAboutItemCustomEvent, type IxMenuAboutNewsCustomEvent, type IxMenuAvatarItemCustomEvent, type IxMenuSettingsCustomEvent, type IxMenuSettingsItemCustomEvent, type IxModalHeaderCustomEvent, type IxNumberInputCustomEvent, type IxPaneCustomEvent, type IxSplitButtonCustomEvent, type IxTabItemCustomEvent, type IxTextareaCustomEvent, type IxTimeInputCustomEvent, type IxUploadCustomEvent, type TabClickDetail, type TimeInputValidityState, type VariantChangedEvent } from "@siemens/ix";
6
6
  import { IxActionCard as IxActionCardElement } from "@siemens/ix/components/ix-action-card.js";
7
7
  import { IxApplicationHeader as IxApplicationHeaderElement } from "@siemens/ix/components/ix-application-header.js";
8
8
  import { IxApplication as IxApplicationElement } from "@siemens/ix/components/ix-application.js";
9
9
  import { IxAvatar as IxAvatarElement } from "@siemens/ix/components/ix-avatar.js";
10
- import { IxBasicNavigation as IxBasicNavigationElement } from "@siemens/ix/components/ix-basic-navigation.js";
11
10
  import { IxBlind as IxBlindElement } from "@siemens/ix/components/ix-blind.js";
12
11
  import { IxBreadcrumbItem as IxBreadcrumbItemElement } from "@siemens/ix/components/ix-breadcrumb-item.js";
13
12
  import { IxBreadcrumb as IxBreadcrumbElement } from "@siemens/ix/components/ix-breadcrumb.js";
@@ -58,8 +57,6 @@ import { IxKpi as IxKpiElement } from "@siemens/ix/components/ix-kpi.js";
58
57
  import { IxLayoutAuto as IxLayoutAutoElement } from "@siemens/ix/components/ix-layout-auto.js";
59
58
  import { IxLayoutGrid as IxLayoutGridElement } from "@siemens/ix/components/ix-layout-grid.js";
60
59
  import { IxLinkButton as IxLinkButtonElement } from "@siemens/ix/components/ix-link-button.js";
61
- import { IxMapNavigationOverlay as IxMapNavigationOverlayElement } from "@siemens/ix/components/ix-map-navigation-overlay.js";
62
- import { IxMapNavigation as IxMapNavigationElement } from "@siemens/ix/components/ix-map-navigation.js";
63
60
  import { IxMenuAboutItem as IxMenuAboutItemElement } from "@siemens/ix/components/ix-menu-about-item.js";
64
61
  import { IxMenuAboutNews as IxMenuAboutNewsElement } from "@siemens/ix/components/ix-menu-about-news.js";
65
62
  import { IxMenuAbout as IxMenuAboutElement } from "@siemens/ix/components/ix-menu-about.js";
@@ -80,6 +77,7 @@ import { IxPagination as IxPaginationElement } from "@siemens/ix/components/ix-p
80
77
  import { IxPaneLayout as IxPaneLayoutElement } from "@siemens/ix/components/ix-pane-layout.js";
81
78
  import { IxPane as IxPaneElement } from "@siemens/ix/components/ix-pane.js";
82
79
  import { IxPill as IxPillElement } from "@siemens/ix/components/ix-pill.js";
80
+ import { IxProgressIndicator as IxProgressIndicatorElement } from "@siemens/ix/components/ix-progress-indicator.js";
83
81
  import { IxPushCard as IxPushCardElement } from "@siemens/ix/components/ix-push-card.js";
84
82
  import { IxRadioGroup as IxRadioGroupElement } from "@siemens/ix/components/ix-radio-group.js";
85
83
  import { IxRadio as IxRadioElement } from "@siemens/ix/components/ix-radio.js";
@@ -93,6 +91,7 @@ import { IxTabItem as IxTabItemElement } from "@siemens/ix/components/ix-tab-ite
93
91
  import { IxTabs as IxTabsElement } from "@siemens/ix/components/ix-tabs.js";
94
92
  import { IxTextarea as IxTextareaElement } from "@siemens/ix/components/ix-textarea.js";
95
93
  import { IxTile as IxTileElement } from "@siemens/ix/components/ix-tile.js";
94
+ import { IxTimeInput as IxTimeInputElement } from "@siemens/ix/components/ix-time-input.js";
96
95
  import { IxTimePicker as IxTimePickerElement } from "@siemens/ix/components/ix-time-picker.js";
97
96
  import { IxToastContainer as IxToastContainerElement } from "@siemens/ix/components/ix-toast-container.js";
98
97
  import { IxToast as IxToastElement } from "@siemens/ix/components/ix-toast.js";
@@ -116,8 +115,6 @@ export type IxApplicationHeaderEvents = {
116
115
  export declare const IxApplicationHeader: StencilReactComponent<IxApplicationHeaderElement, IxApplicationHeaderEvents>;
117
116
  export type IxAvatarEvents = NonNullable<unknown>;
118
117
  export declare const IxAvatar: StencilReactComponent<IxAvatarElement, IxAvatarEvents>;
119
- export type IxBasicNavigationEvents = NonNullable<unknown>;
120
- export declare const IxBasicNavigation: StencilReactComponent<IxBasicNavigationElement, IxBasicNavigationEvents>;
121
118
  export type IxBlindEvents = {
122
119
  onCollapsedChange: EventName<CustomEvent<boolean>>;
123
120
  };
@@ -250,7 +247,7 @@ export declare const IxFlipTileContent: StencilReactComponent<IxFlipTileContentE
250
247
  export type IxGroupEvents = {
251
248
  onSelectGroup: EventName<CustomEvent<boolean>>;
252
249
  onSelectItem: EventName<CustomEvent<number>>;
253
- onCollapsedChanged: EventName<CustomEvent<boolean>>;
250
+ onExpandedChanged: EventName<CustomEvent<boolean>>;
254
251
  };
255
252
  export declare const IxGroup: StencilReactComponent<IxGroupElement, IxGroupEvents>;
256
253
  export type IxGroupContextMenuEvents = NonNullable<unknown>;
@@ -287,15 +284,6 @@ export type IxLayoutGridEvents = NonNullable<unknown>;
287
284
  export declare const IxLayoutGrid: StencilReactComponent<IxLayoutGridElement, IxLayoutGridEvents>;
288
285
  export type IxLinkButtonEvents = NonNullable<unknown>;
289
286
  export declare const IxLinkButton: StencilReactComponent<IxLinkButtonElement, IxLinkButtonEvents>;
290
- export type IxMapNavigationEvents = {
291
- onNavigationToggled: EventName<CustomEvent<boolean>>;
292
- onContextMenuClick: EventName<CustomEvent<void>>;
293
- };
294
- export declare const IxMapNavigation: StencilReactComponent<IxMapNavigationElement, IxMapNavigationEvents>;
295
- export type IxMapNavigationOverlayEvents = {
296
- onCloseClick: EventName<CustomEvent<any>>;
297
- };
298
- export declare const IxMapNavigationOverlay: StencilReactComponent<IxMapNavigationOverlayElement, IxMapNavigationOverlayEvents>;
299
287
  export type IxMenuEvents = {
300
288
  onExpandChange: EventName<CustomEvent<boolean>>;
301
289
  onMapExpandChange: EventName<CustomEvent<boolean>>;
@@ -378,6 +366,8 @@ export type IxPaneLayoutEvents = NonNullable<unknown>;
378
366
  export declare const IxPaneLayout: StencilReactComponent<IxPaneLayoutElement, IxPaneLayoutEvents>;
379
367
  export type IxPillEvents = NonNullable<unknown>;
380
368
  export declare const IxPill: StencilReactComponent<IxPillElement, IxPillEvents>;
369
+ export type IxProgressIndicatorEvents = NonNullable<unknown>;
370
+ export declare const IxProgressIndicator: StencilReactComponent<IxProgressIndicatorElement, IxProgressIndicatorEvents>;
381
371
  export type IxPushCardEvents = NonNullable<unknown>;
382
372
  export declare const IxPushCard: StencilReactComponent<IxPushCardElement, IxPushCardEvents>;
383
373
  export type IxRadioEvents = {
@@ -429,6 +419,11 @@ export type IxTextareaEvents = {
429
419
  export declare const IxTextarea: StencilReactComponent<IxTextareaElement, IxTextareaEvents>;
430
420
  export type IxTileEvents = NonNullable<unknown>;
431
421
  export declare const IxTile: StencilReactComponent<IxTileElement, IxTileEvents>;
422
+ export type IxTimeInputEvents = {
423
+ onValueChange: EventName<CustomEvent<string>>;
424
+ onValidityStateChange: EventName<IxTimeInputCustomEvent<TimeInputValidityState>>;
425
+ };
426
+ export declare const IxTimeInput: StencilReactComponent<IxTimeInputElement, IxTimeInputEvents>;
432
427
  export type IxTimePickerEvents = {
433
428
  onTimeSelect: EventName<CustomEvent<string>>;
434
429
  onTimeChange: EventName<CustomEvent<string>>;
@@ -1,16 +1,12 @@
1
1
  /**
2
2
  * This file was automatically generated by the Stencil React Output Target.
3
3
  * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
4
- * Do __not__ import components from this file as server side rendered components
5
- * may not hydrate due to missing Stencil runtime. Instead, import these components through the generated 'components.ts'
6
- * file that re-exports all components with the 'use client' directive.
7
4
  */
8
- import { type BorderlessChangedEvent, type CustomCloseEvent, type CustomLabelChangeEvent, type DateChangeEvent, type DateInputValidityState, type DateRangeChangeEvent, type DateTimeDateChangeEvent, type DateTimeSelectEvent, type ExpandedChangedEvent, type FilterState, type InputState, type IxBreadcrumbCustomEvent, type IxCardListCustomEvent, type IxCategoryFilterCustomEvent, type IxDateDropdownCustomEvent, type IxDateInputCustomEvent, type IxDatePickerCustomEvent, type IxDatetimePickerCustomEvent, type IxGroupItemCustomEvent, type IxInputCustomEvent, type IxMenuAboutCustomEvent, type IxMenuAboutItemCustomEvent, type IxMenuAboutNewsCustomEvent, type IxMenuAvatarItemCustomEvent, type IxMenuSettingsCustomEvent, type IxMenuSettingsItemCustomEvent, type IxModalHeaderCustomEvent, type IxNumberInputCustomEvent, type IxPaneCustomEvent, type IxSplitButtonCustomEvent, type IxTabItemCustomEvent, type IxTextareaCustomEvent, type IxUploadCustomEvent, type TabClickDetail, type VariantChangedEvent } from "@siemens/ix";
5
+ import { type BorderlessChangedEvent, type CustomCloseEvent, type CustomLabelChangeEvent, type DateChangeEvent, type DateInputValidityState, type DateRangeChangeEvent, type DateTimeDateChangeEvent, type DateTimeSelectEvent, type ExpandedChangedEvent, type FilterState, type InputState, type IxBreadcrumbCustomEvent, type IxCardListCustomEvent, type IxCategoryFilterCustomEvent, type IxDateDropdownCustomEvent, type IxDateInputCustomEvent, type IxDatePickerCustomEvent, type IxDatetimePickerCustomEvent, type IxGroupItemCustomEvent, type IxInputCustomEvent, type IxMenuAboutCustomEvent, type IxMenuAboutItemCustomEvent, type IxMenuAboutNewsCustomEvent, type IxMenuAvatarItemCustomEvent, type IxMenuSettingsCustomEvent, type IxMenuSettingsItemCustomEvent, type IxModalHeaderCustomEvent, type IxNumberInputCustomEvent, type IxPaneCustomEvent, type IxSplitButtonCustomEvent, type IxTabItemCustomEvent, type IxTextareaCustomEvent, type IxTimeInputCustomEvent, type IxUploadCustomEvent, type TabClickDetail, type TimeInputValidityState, type VariantChangedEvent } from "@siemens/ix";
9
6
  import { IxActionCard as IxActionCardElement } from "@siemens/ix/components/ix-action-card.js";
10
7
  import { IxApplicationHeader as IxApplicationHeaderElement } from "@siemens/ix/components/ix-application-header.js";
11
8
  import { IxApplication as IxApplicationElement } from "@siemens/ix/components/ix-application.js";
12
9
  import { IxAvatar as IxAvatarElement } from "@siemens/ix/components/ix-avatar.js";
13
- import { IxBasicNavigation as IxBasicNavigationElement } from "@siemens/ix/components/ix-basic-navigation.js";
14
10
  import { IxBlind as IxBlindElement } from "@siemens/ix/components/ix-blind.js";
15
11
  import { IxBreadcrumbItem as IxBreadcrumbItemElement } from "@siemens/ix/components/ix-breadcrumb-item.js";
16
12
  import { IxBreadcrumb as IxBreadcrumbElement } from "@siemens/ix/components/ix-breadcrumb.js";
@@ -61,8 +57,6 @@ import { IxKpi as IxKpiElement } from "@siemens/ix/components/ix-kpi.js";
61
57
  import { IxLayoutAuto as IxLayoutAutoElement } from "@siemens/ix/components/ix-layout-auto.js";
62
58
  import { IxLayoutGrid as IxLayoutGridElement } from "@siemens/ix/components/ix-layout-grid.js";
63
59
  import { IxLinkButton as IxLinkButtonElement } from "@siemens/ix/components/ix-link-button.js";
64
- import { IxMapNavigationOverlay as IxMapNavigationOverlayElement } from "@siemens/ix/components/ix-map-navigation-overlay.js";
65
- import { IxMapNavigation as IxMapNavigationElement } from "@siemens/ix/components/ix-map-navigation.js";
66
60
  import { IxMenuAboutItem as IxMenuAboutItemElement } from "@siemens/ix/components/ix-menu-about-item.js";
67
61
  import { IxMenuAboutNews as IxMenuAboutNewsElement } from "@siemens/ix/components/ix-menu-about-news.js";
68
62
  import { IxMenuAbout as IxMenuAboutElement } from "@siemens/ix/components/ix-menu-about.js";
@@ -83,6 +77,7 @@ import { IxPagination as IxPaginationElement } from "@siemens/ix/components/ix-p
83
77
  import { IxPaneLayout as IxPaneLayoutElement } from "@siemens/ix/components/ix-pane-layout.js";
84
78
  import { IxPane as IxPaneElement } from "@siemens/ix/components/ix-pane.js";
85
79
  import { IxPill as IxPillElement } from "@siemens/ix/components/ix-pill.js";
80
+ import { IxProgressIndicator as IxProgressIndicatorElement } from "@siemens/ix/components/ix-progress-indicator.js";
86
81
  import { IxPushCard as IxPushCardElement } from "@siemens/ix/components/ix-push-card.js";
87
82
  import { IxRadioGroup as IxRadioGroupElement } from "@siemens/ix/components/ix-radio-group.js";
88
83
  import { IxRadio as IxRadioElement } from "@siemens/ix/components/ix-radio.js";
@@ -96,6 +91,7 @@ import { IxTabItem as IxTabItemElement } from "@siemens/ix/components/ix-tab-ite
96
91
  import { IxTabs as IxTabsElement } from "@siemens/ix/components/ix-tabs.js";
97
92
  import { IxTextarea as IxTextareaElement } from "@siemens/ix/components/ix-textarea.js";
98
93
  import { IxTile as IxTileElement } from "@siemens/ix/components/ix-tile.js";
94
+ import { IxTimeInput as IxTimeInputElement } from "@siemens/ix/components/ix-time-input.js";
99
95
  import { IxTimePicker as IxTimePickerElement } from "@siemens/ix/components/ix-time-picker.js";
100
96
  import { IxToastContainer as IxToastContainerElement } from "@siemens/ix/components/ix-toast-container.js";
101
97
  import { IxToast as IxToastElement } from "@siemens/ix/components/ix-toast.js";
@@ -121,8 +117,6 @@ export type IxApplicationHeaderEvents = {
121
117
  export declare const IxApplicationHeader: StencilReactComponent<IxApplicationHeaderElement, IxApplicationHeaderEvents>;
122
118
  export type IxAvatarEvents = NonNullable<unknown>;
123
119
  export declare const IxAvatar: StencilReactComponent<IxAvatarElement, IxAvatarEvents>;
124
- export type IxBasicNavigationEvents = NonNullable<unknown>;
125
- export declare const IxBasicNavigation: StencilReactComponent<IxBasicNavigationElement, IxBasicNavigationEvents>;
126
120
  export type IxBlindEvents = {
127
121
  onCollapsedChange: EventName<CustomEvent<boolean>>;
128
122
  };
@@ -255,7 +249,7 @@ export declare const IxFlipTileContent: StencilReactComponent<IxFlipTileContentE
255
249
  export type IxGroupEvents = {
256
250
  onSelectGroup: EventName<CustomEvent<boolean>>;
257
251
  onSelectItem: EventName<CustomEvent<number>>;
258
- onCollapsedChanged: EventName<CustomEvent<boolean>>;
252
+ onExpandedChanged: EventName<CustomEvent<boolean>>;
259
253
  };
260
254
  export declare const IxGroup: StencilReactComponent<IxGroupElement, IxGroupEvents>;
261
255
  export type IxGroupContextMenuEvents = NonNullable<unknown>;
@@ -292,15 +286,6 @@ export type IxLayoutGridEvents = NonNullable<unknown>;
292
286
  export declare const IxLayoutGrid: StencilReactComponent<IxLayoutGridElement, IxLayoutGridEvents>;
293
287
  export type IxLinkButtonEvents = NonNullable<unknown>;
294
288
  export declare const IxLinkButton: StencilReactComponent<IxLinkButtonElement, IxLinkButtonEvents>;
295
- export type IxMapNavigationEvents = {
296
- onNavigationToggled: EventName<CustomEvent<boolean>>;
297
- onContextMenuClick: EventName<CustomEvent<void>>;
298
- };
299
- export declare const IxMapNavigation: StencilReactComponent<IxMapNavigationElement, IxMapNavigationEvents>;
300
- export type IxMapNavigationOverlayEvents = {
301
- onCloseClick: EventName<CustomEvent<any>>;
302
- };
303
- export declare const IxMapNavigationOverlay: StencilReactComponent<IxMapNavigationOverlayElement, IxMapNavigationOverlayEvents>;
304
289
  export type IxMenuEvents = {
305
290
  onExpandChange: EventName<CustomEvent<boolean>>;
306
291
  onMapExpandChange: EventName<CustomEvent<boolean>>;
@@ -383,6 +368,8 @@ export type IxPaneLayoutEvents = NonNullable<unknown>;
383
368
  export declare const IxPaneLayout: StencilReactComponent<IxPaneLayoutElement, IxPaneLayoutEvents>;
384
369
  export type IxPillEvents = NonNullable<unknown>;
385
370
  export declare const IxPill: StencilReactComponent<IxPillElement, IxPillEvents>;
371
+ export type IxProgressIndicatorEvents = NonNullable<unknown>;
372
+ export declare const IxProgressIndicator: StencilReactComponent<IxProgressIndicatorElement, IxProgressIndicatorEvents>;
386
373
  export type IxPushCardEvents = NonNullable<unknown>;
387
374
  export declare const IxPushCard: StencilReactComponent<IxPushCardElement, IxPushCardEvents>;
388
375
  export type IxRadioEvents = {
@@ -434,6 +421,11 @@ export type IxTextareaEvents = {
434
421
  export declare const IxTextarea: StencilReactComponent<IxTextareaElement, IxTextareaEvents>;
435
422
  export type IxTileEvents = NonNullable<unknown>;
436
423
  export declare const IxTile: StencilReactComponent<IxTileElement, IxTileEvents>;
424
+ export type IxTimeInputEvents = {
425
+ onValueChange: EventName<CustomEvent<string>>;
426
+ onValidityStateChange: EventName<IxTimeInputCustomEvent<TimeInputValidityState>>;
427
+ };
428
+ export declare const IxTimeInput: StencilReactComponent<IxTimeInputElement, IxTimeInputEvents>;
437
429
  export type IxTimePickerEvents = {
438
430
  onTimeSelect: EventName<CustomEvent<string>>;
439
431
  onTimeChange: EventName<CustomEvent<string>>;
@@ -1,5 +1,6 @@
1
1
  import { ToastConfig as IxToastConfig } from '@siemens/ix';
2
2
  export type ToastConfig = {
3
- message: string | React.ReactNode;
3
+ message?: string | React.ReactNode;
4
+ action?: React.ReactNode;
4
5
  };
5
- export declare function showToast(config: Omit<IxToastConfig, 'message'> & ToastConfig): Promise<import("@siemens/ix").ShowToastResult>;
6
+ export declare function showToast(config: Omit<IxToastConfig, 'message' | 'action'> & ToastConfig): Promise<import("@siemens/ix").ShowToastResult>;
@@ -1,8 +1,23 @@
1
+ import { Components, type TreeContext, type IxTreeCustomEvent } from '@siemens/ix';
1
2
  import React from 'react';
2
- import InternalIxTree from './internal-tree';
3
- type ExtractProps<TComponentOrTProps> = TComponentOrTProps extends React.ComponentType<infer TProps> ? TProps : TComponentOrTProps;
4
- type IxTreeProps = ExtractProps<typeof InternalIxTree> & {
3
+ export type IxTreeProps = Omit<Components.IxTree, 'renderItem' | 'markItemsAsDirty' | 'refreshTree'> & {
5
4
  renderItem?: (data: any) => React.ReactNode;
5
+ onContextChange?: (event: IxTreeCustomEvent<TreeContext>) => void;
6
+ onNodeToggled?: (event: CustomEvent<{
7
+ id: string;
8
+ isExpaned: boolean;
9
+ }>) => void;
10
+ onNodeClicked?: (event: CustomEvent<string>) => void;
11
+ onNodeRemoved?: (event: CustomEvent<any>) => void;
6
12
  };
7
- export declare const IxTree: (props: IxTreeProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const IxTree: React.ForwardRefExoticComponent<Omit<Components.IxTree, "renderItem" | "markItemsAsDirty" | "refreshTree"> & {
14
+ renderItem?: (data: any) => React.ReactNode;
15
+ onContextChange?: (event: IxTreeCustomEvent<TreeContext>) => void;
16
+ onNodeToggled?: (event: CustomEvent<{
17
+ id: string;
18
+ isExpaned: boolean;
19
+ }>) => void;
20
+ onNodeClicked?: (event: CustomEvent<string>) => void;
21
+ onNodeRemoved?: (event: CustomEvent<any>) => void;
22
+ } & React.RefAttributes<Components.IxTree>>;
8
23
  export default IxTree;
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/siemens/ix",
8
8
  "directory": "packages/react"
9
9
  },
10
- "version": "3.1.0",
10
+ "version": "4.0.0",
11
11
  "description": "Siemens iX for React",
12
12
  "files": [
13
13
  "LICENSE",
@@ -33,16 +33,20 @@
33
33
  "license": "MIT",
34
34
  "devDependencies": {
35
35
  "@rollup/plugin-typescript": "^8.5.0",
36
- "@testing-library/react": "^16.0.1",
36
+ "@testing-library/jest-dom": "^6.6.3",
37
+ "@testing-library/react": "^16.3.0",
38
+ "@testing-library/user-event": "^14.6.1",
37
39
  "@types/node": "^20.16.0",
38
40
  "@types/react": "^18",
39
41
  "@types/react-dom": "^18",
40
- "@vitejs/plugin-react": "^4.3.2",
42
+ "@vitejs/plugin-react": "^4.6.0",
43
+ "@vitest/browser": "^3.2.4",
41
44
  "eslint": "~8.21.0",
42
45
  "eslint-plugin-react": "^7.35.0",
43
46
  "happy-dom": "^17.4.7",
44
47
  "jest": "^29.7.0",
45
48
  "jest-environment-jsdom": "^29.7.0",
49
+ "playwright": "^1.54.1",
46
50
  "react": "^18",
47
51
  "react-dom": "^18",
48
52
  "rimraf": "^6.0.1",
@@ -50,18 +54,20 @@
50
54
  "rollup-plugin-preserve-directives": "^0.4.0",
51
55
  "shadow-dom-testing-library": "^1.11.2",
52
56
  "typescript": "^5.6.3",
53
- "vitest": "^2.1.3",
54
- "@siemens/ix": "3.1.0",
57
+ "vite": "^7.0.4",
58
+ "vitest": "^3.2.4",
59
+ "vitest-browser-react": "^1.0.0",
60
+ "@siemens/ix": "4.0.0",
55
61
  "eslint-config-ix": "1.0.0"
56
62
  },
57
63
  "peerDependencies": {
58
- "@siemens/ix-icons": "^3.0.0",
64
+ "@siemens/ix-icons": "^3.2.0",
59
65
  "react": "^18 || ^19",
60
66
  "react-dom": "^18 || ^19"
61
67
  },
62
68
  "dependencies": {
63
- "@siemens/ix": "~3.1.0",
64
- "@stencil/react-output-target": "^1.0.2",
69
+ "@siemens/ix": "~4.0.0",
70
+ "@stencil/react-output-target": "^1.2.0",
65
71
  "tslib": "*"
66
72
  },
67
73
  "scripts": {
@@ -69,7 +75,8 @@
69
75
  "clean": "rimraf dist && rimraf dist-transpiled",
70
76
  "compile": "rollup -c",
71
77
  "lint": "eslint src",
72
- "test": "vitest run",
73
- "test:watch": "vitest"
78
+ "test.setup": "playwright install chromium --with-deps",
79
+ "test": "vitest --config=vitest.browser.config.ts run",
80
+ "test.watch": "vitest --config=vitest.browser.config.ts"
74
81
  }
75
82
  }