From 4fa7b4d3dd271b5673f88ad68d7703a81c2ae9dd Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Fri, 10 Jan 2025 09:40:50 +0100 Subject: [PATCH 1/7] feat: create web components --- src/components/App/App.tsx | 3 + .../DynamicPageWebComponent.jsx | 70 ++++++++++++++ .../web-components/MonacoWebComponent.jsx | 44 +++++++++ .../web-components/createWebComponent.jsx | 91 +++++++++++++++++++ 4 files changed, 208 insertions(+) create mode 100644 src/components/web-components/DynamicPageWebComponent.jsx create mode 100644 src/components/web-components/MonacoWebComponent.jsx create mode 100644 src/components/web-components/createWebComponent.jsx diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx index 8fd1c779bc..4612ef7696 100644 --- a/src/components/App/App.tsx +++ b/src/components/App/App.tsx @@ -36,6 +36,9 @@ import useSidebarCondensed from 'sidebar/useSidebarCondensed'; import { useGetValidationEnabledSchemas } from 'state/validationEnabledSchemasAtom'; import { useGetKymaResources } from 'state/kymaResourcesAtom'; +import '../web-components/MonacoWebComponent'; +import '../web-components/DynamicPageWebComponent'; + export default function App() { const language = useRecoilValue(languageAtom); const cluster = useRecoilValue(clusterState); diff --git a/src/components/web-components/DynamicPageWebComponent.jsx b/src/components/web-components/DynamicPageWebComponent.jsx new file mode 100644 index 0000000000..3381ad6b40 --- /dev/null +++ b/src/components/web-components/DynamicPageWebComponent.jsx @@ -0,0 +1,70 @@ +import { RecoilRoot } from 'recoil'; +import createWebComponent from './createWebComponent'; +import { DynamicPageComponent } from 'shared/components/DynamicPageComponent/DynamicPageComponent'; +import { ThemeProvider } from '@ui5/webcomponents-react'; + +function DynamicPageWithRecoil(props) { + const transformedForm = stickyHeaderHeight => { + if (props.inlineEditForm) + return ( +
+ ); + else return null; + }; + + console.log(transformedForm()); + return ( + + + ( +
test{stickyHeaderHeight}
+ )} + /> +
+
+ ); +} + +createWebComponent( + 'dynamic-page-component', + DynamicPageWithRecoil, + { + headerContent: null, //slot + title: '', + description: '', + actions: null, //slot + children: null, + columnWrapperClassName: '', + content: null, // slot + footer: null, // slot + layoutNumber: null, + layoutCloseUrl: null, + inlineEditForm: null, + showYamlTab: false, + protectedResource: false, + protectedResourceWarning: null, //can be a slot + className: '', + }, + [ + 'header-content', + 'title', + 'description', + 'actions', + 'column-wrapper-class-name', + 'content', + 'footer', + 'layout-number', + 'layout-close-url', + 'inline-edit-form', + 'show-yaml-tab', + 'protected-resource', + 'protected-resource-warning', + 'class-name', + ], // Observed attributes +); diff --git a/src/components/web-components/MonacoWebComponent.jsx b/src/components/web-components/MonacoWebComponent.jsx new file mode 100644 index 0000000000..1362ce84b2 --- /dev/null +++ b/src/components/web-components/MonacoWebComponent.jsx @@ -0,0 +1,44 @@ +import { Editor } from 'shared/components/MonacoEditorESM/Editor'; +import { RecoilRoot } from 'recoil'; +import createWebComponent from './createWebComponent'; + +function EditorWithRecoil(props) { + return ( + + + + ); +} + +createWebComponent( + 'monaco-editor', + EditorWithRecoil, + { + value: '', + language: 'javascript', + height: '300px', + readOnly: false, + placeholder: null, + onChange: undefined, + onMount: undefined, + updateValueOnParentChange: undefined, + schemaId: undefined, + autocompletionDisabled: false, + onBlur: undefined, + onFocus: undefined, + }, + [ + 'value', + 'language', + 'height', + 'read-only', + 'placeholder', + 'on-change', + 'on-mount', + 'update-value-on-parent-change', + 'schema-id', + 'autocompletion-disabled', + 'on-blur', + 'on-focus', + ], +); // Observed attributes diff --git a/src/components/web-components/createWebComponent.jsx b/src/components/web-components/createWebComponent.jsx new file mode 100644 index 0000000000..c395bfe781 --- /dev/null +++ b/src/components/web-components/createWebComponent.jsx @@ -0,0 +1,91 @@ +import ReactDOM from 'react-dom'; + +function kebabToCamelCase(str) { + return str.replace(/-([a-z])/g, (_, char) => char.toUpperCase()); +} + +function createWebComponent( + tagName, + ReactComponent, + defaultProps = {}, + observedAttributes = [], +) { + class GenericWebComponent extends HTMLElement { + constructor() { + super(); + this.reactRoot = null; + this._props = {}; + } + + connectedCallback() { + this.reactRoot = document.createElement('div'); + this.appendChild(this.reactRoot); + this.mountReactComponent(); + } + + disconnectedCallback() { + ReactDOM.unmountComponentAtNode(this.reactRoot); + } + + static get observedAttributes() { + return observedAttributes; + } + + attributeChangedCallback(name, oldValue, newValue) { + if (oldValue !== newValue && this.reactRoot) { + this.mountReactComponent(); + } + } + + // Define a generic property setter for custom props + setProp(key, value) { + console.log(key); + const camelCaseKey = kebabToCamelCase(key); + this._props[camelCaseKey] = value; + this.mountReactComponent(); // Re-render on prop change + } + + mountReactComponent() { + if (!this.reactRoot) { + this.reactRoot = document.createElement('div'); + this.appendChild(this.reactRoot); + } + + // Generate props from attributes + const propsFromAttributes = observedAttributes.reduce((acc, attr) => { + const attrValue = this.getAttribute(attr); + const camelCaseAttr = kebabToCamelCase(attr); + acc[camelCaseAttr] = + attrValue !== null ? attrValue : defaultProps[attr]; + return acc; + }, {}); + + // Combine props from attributes and custom properties + const props = { + ...defaultProps, + ...propsFromAttributes, + ...this._props, + }; + console.log(this._props); + // Map slots to props + const slots = this.querySelectorAll('[slot]'); + slots.forEach(slot => { + const slotName = slot.getAttribute('slot'); + const slotContent = slot.cloneNode(true); + slot.remove(); // Remove the slot from the DOM + props[slotName] = ( +
+ ); + }); + + ReactDOM.render( + , + this.reactRoot, + ); + } + } + + customElements.define(tagName, GenericWebComponent); +} + +export default createWebComponent; From 4bb8ecf5a1a3d10db2b96ef000df48ed2477ed16 Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Mon, 13 Jan 2025 06:39:31 +0100 Subject: [PATCH 2/7] remove slots and add documentation --- .../busola-web-components.md | 99 +++++++++++++++++++ examples/busola-web-components/README.md | 7 ++ examples/busola-web-components/script.js | 53 ++++++++++ examples/busola-web-components/ui.html | 16 +++ .../DynamicPageWebComponent.jsx | 19 ++-- .../web-components/MonacoWebComponent.jsx | 2 - .../web-components/createWebComponent.jsx | 27 ++--- .../DynamicPageComponent.js | 6 ++ 8 files changed, 205 insertions(+), 24 deletions(-) create mode 100644 docs/custom-extensions/busola-web-components.md create mode 100644 examples/busola-web-components/README.md create mode 100644 examples/busola-web-components/script.js create mode 100644 examples/busola-web-components/ui.html diff --git a/docs/custom-extensions/busola-web-components.md b/docs/custom-extensions/busola-web-components.md new file mode 100644 index 0000000000..1b5427ca1f --- /dev/null +++ b/docs/custom-extensions/busola-web-components.md @@ -0,0 +1,99 @@ +# Custom Busola Web Components + +Busola provides a suite of custom Web Components to enhance your application's functionality. These components come with utility functions to dynamically update their properties, attributes, and slots after initialization. + +## Utility Functions + +All custom Web Components expose methods to dynamically update their properties, attributes, and slots after initialization. +String and boolean properties can be passed as standard HTML attributes. For example: + +```HTML + +``` + +Functions, objects, and arrays can be passed using the `setProp` function. For example: + +```JS +const editor = document.querySelector('monaco-editor'); +editor.setProp('on-change', (value) => console.log('New content:', value)); +``` + +HTML elements can be passed using the `setSlot` attribute. For example: + +```JS +const dynamicPage = document.querySelector('dynamic-page-component'); +const customFooter = document.createElement('div'); +customFooter.textContent = 'Custom Footer Content'; +dynamicPage.setSlot('footer', customFooter); +``` + +## Custom Web Components + +- [Monaco Editor](#monaco-editor) +- [Dynamic Page](#dynamic-page) + +### Monaco Editor + +The `Monaco Editor` component is a versatile code editor. It provides features such as syntax highlighting and autocompletion. +The `Monaco Editor` web component supports the following attributes and properties. Attributes correspond to camel-cased React props when accessed programmatically. + +| Parameter | Required | Type | Description | +| --------------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------ | +| **value** | No | string | The initial code content displayed in the editor. Defaults to an empty string. | +| **placeholder** | No | string | Specifies a short hint about the input field value. | +| **language** | No | string | Specifies the programming language of the editor's content (e.g., `javascript`, `json`). Defaults to `javascript`. | +| **height** | No | string | Specifies the height of the component. Must include the unit (e.g., `100px`, `50vh`). | +| **autocompletion-disabled** | No | boolean | Disables autocompletion suggestions when set to `true`. | +| **read-only** | No | boolean | Specifies if the field is read-only. Defaults to `false`. | +| **on-change** | No | function | Callback function triggered when the content changes. | +| **on-mount** | No | function | Callback function triggered when the editor mounts. | +| **on-blur** | No | function | Callback function triggered when the editor loses focus. | +| **on-focus** | No | function | Callback function triggered when the editor gains focus. | +| **update-value-on-parent-change** | No | boolean | Updates the editor content if the parent component changes its `value` prop. | + +See the following example: + +```HTML + +``` + +### Dynamic Page + +The `Dynamic Page` web component is used to display content on the page and consisting of a title, header, a content area, an optional inline edit form and floating footer. +The `Dynamic Page` supports the following attributes and properties. Attributes correspond to camel-cased React props when accessed programmatically. + +| Parameter | Required | Type | Description | +| ------------------------------ | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| **title** | No | string | The title of the page displayed in the header. | +| **description** | No | string | A description displayed below the title. | +| **actions** | No | node | Custom actions rendered in the header toolbar. | +| **children** | No | node | Child elements or components to be rendered within the page. | +| **column-wrapper-class-name** | No | string | Additional class names for the column wrapper, used for styling purposes. | +| **content** | No | node | Content displayed in the main section of the page. | +| **footer** | No | node | Content displayed in the footer section. | +| **layout-number** | No | string | Layout identifier for column management. | +| **layout-close-url** | No | string | URL to navigate to when the column layout is closed. | +| **inline-edit-form** | No | function | A function defining the inline edit form. It receives the `stickyHeaderHeight` as an argument and is expected to return a HTML element. | +| **show-yaml-tab** | No | boolean | Specifies whether to show a YAML editing tab. | +| **protected-resource** | No | boolean | Indicates whether the resource is protected. | +| **protected-resource-warning** | No | node | Warning message for protected resources. | +| **class-name** | No | string | Additional class names for the component, used for custom styling. | +| **custom-action-if-form-open** | No | function | Specifies a custom action triggered when user tries to navigate out of the Edit form tab. | + +See the following example: + +```HTML + +``` + +To see an exemplary configuration of the Busola custom extension feature using Web Components, check [this](examples/../../../examples/pizzas/README.md). diff --git a/examples/busola-web-components/README.md b/examples/busola-web-components/README.md new file mode 100644 index 0000000000..c92e5e129b --- /dev/null +++ b/examples/busola-web-components/README.md @@ -0,0 +1,7 @@ +# Busola Web Components Example + +This example demonstrates the use of custom Web Components, including the Dynamic Page and Monaco Editor. It showcases how to set attributes, properties and manage content. + +# Set Up Your Custom Busola Extension + +To set up and deploy this exmaple, follow [this]('examples/../../custom-extension/README.md) documentation. diff --git a/examples/busola-web-components/script.js b/examples/busola-web-components/script.js new file mode 100644 index 0000000000..dfdb77b790 --- /dev/null +++ b/examples/busola-web-components/script.js @@ -0,0 +1,53 @@ +document.getElementsByClassName('monaco')[0].setProp('on-change', value => { + document.getElementsByClassName('monaco')[0].setAttribute('value', value); +}); + +function renderEditForm(stickyHeaderHeight) { + const formContainer = document.createElement('div'); + formContainer.classList.add('edit-form-test'); + + const form = document.createElement('form'); + + const nameLabel = document.createElement('label'); + nameLabel.setAttribute('for', 'name'); + nameLabel.textContent = 'Name:'; + const nameInput = document.createElement('input'); + nameInput.setAttribute('type', 'text'); + nameInput.setAttribute('id', 'name'); + nameInput.setAttribute('name', 'name'); + nameInput.setAttribute('value', 'John Doe'); + nameInput.setAttribute('placeholder', 'Enter your name'); + + const submitButton = document.createElement('button'); + submitButton.textContent = 'Submit'; + submitButton.setAttribute('type', 'submit'); + submitButton.disabled = false; + + form.appendChild(nameLabel); + form.appendChild(nameInput); + form.appendChild(submitButton); + + formContainer.appendChild(form); + + return formContainer; +} + +document + .getElementsByClassName('dynamic-page')[0] + .setProp('inline-edit-form', renderEditForm); + +document + .getElementsByClassName('dynamic-page')[0] + .setProp('custom-action-if-form-open', () => { + return; + }); + +const renderContent = () => { + const text = document.createElement('ui5-text'); + text.innerText = 'Lorem ipsum.'; + return text; +}; + +document + .getElementsByClassName('dynamic-page')[0] + .setSlot('content', renderContent()); diff --git a/examples/busola-web-components/ui.html b/examples/busola-web-components/ui.html new file mode 100644 index 0000000000..bca9685e86 --- /dev/null +++ b/examples/busola-web-components/ui.html @@ -0,0 +1,16 @@ +
+ Web components example + + + + + + + +
diff --git a/src/components/web-components/DynamicPageWebComponent.jsx b/src/components/web-components/DynamicPageWebComponent.jsx index 3381ad6b40..9530f2902a 100644 --- a/src/components/web-components/DynamicPageWebComponent.jsx +++ b/src/components/web-components/DynamicPageWebComponent.jsx @@ -9,22 +9,19 @@ function DynamicPageWithRecoil(props) { return (
); else return null; }; - console.log(transformedForm()); return ( ( -
test{stickyHeaderHeight}
- )} + inlineEditForm={props?.inlineEditForm ? transformedForm : undefined} />
@@ -35,21 +32,22 @@ createWebComponent( 'dynamic-page-component', DynamicPageWithRecoil, { - headerContent: null, //slot + headerContent: null, title: '', description: '', - actions: null, //slot + actions: null, children: null, columnWrapperClassName: '', - content: null, // slot - footer: null, // slot + content: null, + footer: null, layoutNumber: null, layoutCloseUrl: null, inlineEditForm: null, showYamlTab: false, protectedResource: false, - protectedResourceWarning: null, //can be a slot + protectedResourceWarning: null, className: '', + customActionIfFormOpen: undefined, }, [ 'header-content', @@ -66,5 +64,6 @@ createWebComponent( 'protected-resource', 'protected-resource-warning', 'class-name', + 'custom-action-if-form-open', ], // Observed attributes ); diff --git a/src/components/web-components/MonacoWebComponent.jsx b/src/components/web-components/MonacoWebComponent.jsx index 1362ce84b2..864c4ae176 100644 --- a/src/components/web-components/MonacoWebComponent.jsx +++ b/src/components/web-components/MonacoWebComponent.jsx @@ -22,7 +22,6 @@ createWebComponent( onChange: undefined, onMount: undefined, updateValueOnParentChange: undefined, - schemaId: undefined, autocompletionDisabled: false, onBlur: undefined, onFocus: undefined, @@ -36,7 +35,6 @@ createWebComponent( 'on-change', 'on-mount', 'update-value-on-parent-change', - 'schema-id', 'autocompletion-disabled', 'on-blur', 'on-focus', diff --git a/src/components/web-components/createWebComponent.jsx b/src/components/web-components/createWebComponent.jsx index c395bfe781..cf3a84eafe 100644 --- a/src/components/web-components/createWebComponent.jsx +++ b/src/components/web-components/createWebComponent.jsx @@ -15,6 +15,7 @@ function createWebComponent( super(); this.reactRoot = null; this._props = {}; + this._slots = {}; } connectedCallback() { @@ -39,12 +40,18 @@ function createWebComponent( // Define a generic property setter for custom props setProp(key, value) { - console.log(key); const camelCaseKey = kebabToCamelCase(key); this._props[camelCaseKey] = value; this.mountReactComponent(); // Re-render on prop change } + // Define a method to programmatically set a slot's content + setSlot(name, content) { + const camelCaseName = kebabToCamelCase(name); + this._slots[camelCaseName] = content.outerHTML; + this.mountReactComponent(); // Re-render on slot change + } + mountReactComponent() { if (!this.reactRoot) { this.reactRoot = document.createElement('div'); @@ -60,22 +67,18 @@ function createWebComponent( return acc; }, {}); - // Combine props from attributes and custom properties const props = { ...defaultProps, ...propsFromAttributes, ...this._props, }; - console.log(this._props); - // Map slots to props - const slots = this.querySelectorAll('[slot]'); - slots.forEach(slot => { - const slotName = slot.getAttribute('slot'); - const slotContent = slot.cloneNode(true); - slot.remove(); // Remove the slot from the DOM - props[slotName] = ( -
- ); + + Object.keys(this._slots).forEach(slotName => { + if (typeof this._slots[slotName] !== 'function') { + props[slotName] = ( +
+ ); + } }); ReactDOM.render( diff --git a/src/shared/components/DynamicPageComponent/DynamicPageComponent.js b/src/shared/components/DynamicPageComponent/DynamicPageComponent.js index da6082ca36..d3a4656431 100644 --- a/src/shared/components/DynamicPageComponent/DynamicPageComponent.js +++ b/src/shared/components/DynamicPageComponent/DynamicPageComponent.js @@ -50,6 +50,7 @@ export const DynamicPageComponent = ({ protectedResource, protectedResourceWarning, className, + customActionIfFormOpen, }) => { const [showTitleDescription, setShowTitleDescription] = useState(false); const [layoutColumn, setLayoutColumn] = useRecoilState(columnLayoutState); @@ -251,6 +252,11 @@ export const DynamicPageComponent = ({ headerContent={customHeaderContent ?? headerContent} selectedSectionId={selectedSectionIdState} onBeforeNavigate={e => { + if (customActionIfFormOpen) { + customActionIfFormOpen(); + return; + } + if (isFormOpen.formOpen) { e.preventDefault(); } From a14a780d04ff1f0362a4f8d0eeefbe9091f36726 Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Mon, 13 Jan 2025 07:05:42 +0100 Subject: [PATCH 3/7] adjust customActionIfFormOpen and docs --- .../busola-web-components.md | 45 ++++++++++++------- examples/busola-web-components/script.js | 13 ++++-- .../DynamicPageComponent.js | 7 ++- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/docs/custom-extensions/busola-web-components.md b/docs/custom-extensions/busola-web-components.md index 1b5427ca1f..2951f63266 100644 --- a/docs/custom-extensions/busola-web-components.md +++ b/docs/custom-extensions/busola-web-components.md @@ -67,23 +67,34 @@ See the following example: The `Dynamic Page` web component is used to display content on the page and consisting of a title, header, a content area, an optional inline edit form and floating footer. The `Dynamic Page` supports the following attributes and properties. Attributes correspond to camel-cased React props when accessed programmatically. -| Parameter | Required | Type | Description | -| ------------------------------ | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| **title** | No | string | The title of the page displayed in the header. | -| **description** | No | string | A description displayed below the title. | -| **actions** | No | node | Custom actions rendered in the header toolbar. | -| **children** | No | node | Child elements or components to be rendered within the page. | -| **column-wrapper-class-name** | No | string | Additional class names for the column wrapper, used for styling purposes. | -| **content** | No | node | Content displayed in the main section of the page. | -| **footer** | No | node | Content displayed in the footer section. | -| **layout-number** | No | string | Layout identifier for column management. | -| **layout-close-url** | No | string | URL to navigate to when the column layout is closed. | -| **inline-edit-form** | No | function | A function defining the inline edit form. It receives the `stickyHeaderHeight` as an argument and is expected to return a HTML element. | -| **show-yaml-tab** | No | boolean | Specifies whether to show a YAML editing tab. | -| **protected-resource** | No | boolean | Indicates whether the resource is protected. | -| **protected-resource-warning** | No | node | Warning message for protected resources. | -| **class-name** | No | string | Additional class names for the component, used for custom styling. | -| **custom-action-if-form-open** | No | function | Specifies a custom action triggered when user tries to navigate out of the Edit form tab. | +| Parameter | Required | Type | Description | +| ------------------------------ | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **title** | No | string | The title of the page displayed in the header. | +| **description** | No | string | A description displayed below the title. | +| **actions** | No | node | Custom actions rendered in the header toolbar. | +| **children** | No | node | Child elements or components to be rendered within the page. | +| **column-wrapper-class-name** | No | string | Additional class names for the column wrapper, used for styling purposes. | +| **content** | No | node | Content displayed in the main section of the page. | +| **footer** | No | node | Content displayed in the footer section. | +| **layout-number** | No | string | Layout identifier for column management. | +| **layout-close-url** | No | string | URL to navigate to when the column layout is closed. | +| **inline-edit-form** | No | function | A function defining the inline edit form. It receives the `stickyHeaderHeight` as an argument and is expected to return a HTML element. | +| **show-yaml-tab** | No | boolean | Specifies whether to show a YAML editing tab. | +| **protected-resource** | No | boolean | Indicates whether the resource is protected. | +| **protected-resource-warning** | No | node | Warning message for protected resources. | +| **class-name** | No | string | Additional class names for the component, used for custom styling. | +| **custom-action-if-form-open** | No | function | Specifies a custom action triggered when user tries to navigate out of the Edit form tab. It recieves four arguments: `isResourceEdited`, `setIsResourceEdited`, `isFormOpen`, `setIsFormOpen`. | + +#### `custom-action-if-form-open` + +The `custom-action-if-form-open` prop in the `Dynamic Page` component is a customizable callback function designed to handle specific actions when a form is open. It recieves four arguments: + +| Argument | Type | Description | +| ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **isResourceEdited** | object | Indicates if the current resource has been edited. The object has the structure: { isEdited: boolean; discardAction?: Function; } | +| **setIsResourceEdited** | function | A state setter function to update the `isResourceEdited` state. | +| **isFormOpen** | object | Tracks the status of the inline edit form. The object has the structure: { formOpen: boolean; leavingForm: boolean; } | +| **setIsFormOpen** | function | A state setter function to update the `isFormOpen` state. | See the following example: diff --git a/examples/busola-web-components/script.js b/examples/busola-web-components/script.js index dfdb77b790..8cd091907a 100644 --- a/examples/busola-web-components/script.js +++ b/examples/busola-web-components/script.js @@ -36,11 +36,18 @@ document .getElementsByClassName('dynamic-page')[0] .setProp('inline-edit-form', renderEditForm); +const handleActionIfFormOpen = ( + isResourceEdited, + setIsResourceEdited, + isFormOpen, + setIsFormOpen, +) => { + setIsFormOpen({ formOpen: false, leavingForm: false }); +}; + document .getElementsByClassName('dynamic-page')[0] - .setProp('custom-action-if-form-open', () => { - return; - }); + .setProp('custom-action-if-form-open', handleActionIfFormOpen); const renderContent = () => { const text = document.createElement('ui5-text'); diff --git a/src/shared/components/DynamicPageComponent/DynamicPageComponent.js b/src/shared/components/DynamicPageComponent/DynamicPageComponent.js index d3a4656431..cdb230701e 100644 --- a/src/shared/components/DynamicPageComponent/DynamicPageComponent.js +++ b/src/shared/components/DynamicPageComponent/DynamicPageComponent.js @@ -253,7 +253,12 @@ export const DynamicPageComponent = ({ selectedSectionId={selectedSectionIdState} onBeforeNavigate={e => { if (customActionIfFormOpen) { - customActionIfFormOpen(); + customActionIfFormOpen( + isResourceEdited, + setIsResourceEdited, + isFormOpen, + setIsFormOpen, + ); return; } From 4f7b368596e4839edf3f73aa52518519741fd907 Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Mon, 13 Jan 2025 07:34:36 +0100 Subject: [PATCH 4/7] fix: clean up imports --- src/components/App/App.tsx | 3 +-- src/web-components/index.ts | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 src/web-components/index.ts diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx index 4612ef7696..a524276ee3 100644 --- a/src/components/App/App.tsx +++ b/src/components/App/App.tsx @@ -36,8 +36,7 @@ import useSidebarCondensed from 'sidebar/useSidebarCondensed'; import { useGetValidationEnabledSchemas } from 'state/validationEnabledSchemasAtom'; import { useGetKymaResources } from 'state/kymaResourcesAtom'; -import '../web-components/MonacoWebComponent'; -import '../web-components/DynamicPageWebComponent'; +import '../../web-components/index'; //Import for custom Web Components export default function App() { const language = useRecoilValue(languageAtom); diff --git a/src/web-components/index.ts b/src/web-components/index.ts new file mode 100644 index 0000000000..3f43024bc0 --- /dev/null +++ b/src/web-components/index.ts @@ -0,0 +1,2 @@ +import './MonacoWebComponent'; +import './DynamicPageWebComponent'; From abae6767eb3138c025be3af1e0ce9447a23aaab1 Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Mon, 13 Jan 2025 07:40:45 +0100 Subject: [PATCH 5/7] fix: move files --- src/{components => }/web-components/DynamicPageWebComponent.jsx | 0 src/{components => }/web-components/MonacoWebComponent.jsx | 0 src/{components => }/web-components/createWebComponent.jsx | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/{components => }/web-components/DynamicPageWebComponent.jsx (100%) rename src/{components => }/web-components/MonacoWebComponent.jsx (100%) rename src/{components => }/web-components/createWebComponent.jsx (100%) diff --git a/src/components/web-components/DynamicPageWebComponent.jsx b/src/web-components/DynamicPageWebComponent.jsx similarity index 100% rename from src/components/web-components/DynamicPageWebComponent.jsx rename to src/web-components/DynamicPageWebComponent.jsx diff --git a/src/components/web-components/MonacoWebComponent.jsx b/src/web-components/MonacoWebComponent.jsx similarity index 100% rename from src/components/web-components/MonacoWebComponent.jsx rename to src/web-components/MonacoWebComponent.jsx diff --git a/src/components/web-components/createWebComponent.jsx b/src/web-components/createWebComponent.jsx similarity index 100% rename from src/components/web-components/createWebComponent.jsx rename to src/web-components/createWebComponent.jsx From 552f27878f240e492e544370adb383240e7e2ff9 Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Mon, 13 Jan 2025 09:10:56 +0100 Subject: [PATCH 6/7] add photos --- docs/custom-extensions/assets/DynamicPage.png | Bin 0 -> 102728 bytes docs/custom-extensions/assets/MonacoEditor.png | Bin 0 -> 30405 bytes .../custom-extensions/busola-web-components.md | 4 ++++ 3 files changed, 4 insertions(+) create mode 100644 docs/custom-extensions/assets/DynamicPage.png create mode 100644 docs/custom-extensions/assets/MonacoEditor.png diff --git a/docs/custom-extensions/assets/DynamicPage.png b/docs/custom-extensions/assets/DynamicPage.png new file mode 100644 index 0000000000000000000000000000000000000000..91c637e2a133c1fdea38f9482684afd62e597b6f GIT binary patch literal 102728 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

4R^k^v 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 ``` +Example of a Monaco Editor + ### Dynamic Page The `Dynamic Page` web component is used to display content on the page and consisting of a title, header, a content area, an optional inline edit form and floating footer. @@ -107,4 +109,6 @@ See the following example: > ``` +Example of a Monaco Editor + To see an exemplary configuration of the Busola custom extension feature using Web Components, check [this](examples/../../../examples/pizzas/README.md). From 2d8dfd0b74fafcdcc59253ea98b588e1c0eabac3 Mon Sep 17 00:00:00 2001 From: Oliwia Gowor Date: Mon, 13 Jan 2025 09:13:55 +0100 Subject: [PATCH 7/7] fix example --- docs/custom-extensions/busola-web-components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/custom-extensions/busola-web-components.md b/docs/custom-extensions/busola-web-components.md index 8732481a8f..dec27d2441 100644 --- a/docs/custom-extensions/busola-web-components.md +++ b/docs/custom-extensions/busola-web-components.md @@ -111,4 +111,4 @@ See the following example: Example of a Monaco Editor -To see an exemplary configuration of the Busola custom extension feature using Web Components, check [this](examples/../../../examples/pizzas/README.md). +To see an exemplary configuration of the Busola custom extension feature using Web Components, check files in [this](examples/../../../examples/busola-web-components/README.md) example.