docs: [FC-86] Restructure Modify Items section with Add/Replace examples (#598)
* docs: example of adding Marketing links via the plugin slots * refactor: code refactoring * feat: added logoDestination props for Header component * refactor: after rebase * refactor: updated tests * refactor: after review * refactor: removed logoDestination prop * docs: Custom Marketing links mobile example * refactor: after review
This commit is contained in:
@@ -13,9 +13,11 @@ This slot is used to replace/modify/hide the desktop main menu.
|
|||||||
|
|
||||||
### Modify Items
|
### Modify Items
|
||||||
|
|
||||||
The following `env.config.jsx` will modify the items in the desktop main menu.
|
#### Replace All Items
|
||||||
|
|
||||||

|
The following `env.config.jsx` will replace all items in the desktop main menu.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
||||||
@@ -59,6 +61,58 @@ const config = {
|
|||||||
export default config;
|
export default config;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Add Items
|
||||||
|
|
||||||
|
The following `env.config.jsx` will add items in the desktop main menu.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```jsx
|
||||||
|
import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
||||||
|
|
||||||
|
const modifyMainMenu = (widget) => {
|
||||||
|
const existingMenu = widget.RenderWidget.props.menu || [];
|
||||||
|
|
||||||
|
const newMarketingLinks = [
|
||||||
|
{
|
||||||
|
type: 'item',
|
||||||
|
href: 'https://example.com/how-it-works',
|
||||||
|
content: 'How it works',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'item',
|
||||||
|
href: 'https://example.com/courses',
|
||||||
|
content: 'Courses',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'item',
|
||||||
|
href: 'https://example.com/schools',
|
||||||
|
content: 'Schools',
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
widget.content.menu = [...existingMenu, ...newMarketingLinks];
|
||||||
|
return widget;
|
||||||
|
};
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
pluginSlots: {
|
||||||
|
'org.openedx.frontend.layout.header_desktop_main_menu.v1': {
|
||||||
|
keepDefault: true,
|
||||||
|
plugins: [
|
||||||
|
{
|
||||||
|
op: PLUGIN_OPERATIONS.Modify,
|
||||||
|
widgetId: 'default_contents',
|
||||||
|
fn: modifyMainMenu,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default config;
|
||||||
|
```
|
||||||
|
|
||||||
### Replace Menu with Custom Component
|
### Replace Menu with Custom Component
|
||||||
|
|
||||||
The following `env.config.jsx` will replace the desktop main menu entirely (in this case with a centered 🗺️ `h1`)
|
The following `env.config.jsx` will replace the desktop main menu entirely (in this case with a centered 🗺️ `h1`)
|
||||||
@@ -134,4 +188,3 @@ const config = {
|
|||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@@ -13,9 +13,11 @@ This slot is used to replace/modify/hide the mobile main menu.
|
|||||||
|
|
||||||
### Modify Items
|
### Modify Items
|
||||||
|
|
||||||
The following `env.config.jsx` will modify the items in the mobile main menu.
|
#### Replace All Items
|
||||||
|
|
||||||

|
The following `env.config.jsx` will replace all items in the mobile main menu.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
||||||
@@ -59,6 +61,58 @@ const config = {
|
|||||||
export default config;
|
export default config;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Add Items
|
||||||
|
|
||||||
|
The following `env.config.jsx` will add items in the mobile main menu.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```jsx
|
||||||
|
import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
||||||
|
|
||||||
|
const modifyMainMenu = (widget) => {
|
||||||
|
const existingMenu = widget.RenderWidget.props.menu || [];
|
||||||
|
|
||||||
|
const newMarketingLinks = [
|
||||||
|
{
|
||||||
|
type: 'item',
|
||||||
|
href: 'https://example.com/how-it-works',
|
||||||
|
content: 'How it works',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'item',
|
||||||
|
href: 'https://example.com/courses',
|
||||||
|
content: 'Courses',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'item',
|
||||||
|
href: 'https://example.com/schools',
|
||||||
|
content: 'Schools',
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
widget.content.menu = [...existingMenu, ...newMarketingLinks];
|
||||||
|
return widget;
|
||||||
|
};
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
pluginSlots: {
|
||||||
|
'org.openedx.frontend.layout.header_mobile_main_menu.v1': {
|
||||||
|
keepDefault: true,
|
||||||
|
plugins: [
|
||||||
|
{
|
||||||
|
op: PLUGIN_OPERATIONS.Modify,
|
||||||
|
widgetId: 'default_contents',
|
||||||
|
fn: modifyMainMenu,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default config;
|
||||||
|
```
|
||||||
|
|
||||||
### Replace Menu with Custom Component
|
### Replace Menu with Custom Component
|
||||||
|
|
||||||
The following `env.config.jsx` will replace the mobile main menu entirely (in this case with a centered 🗺️ `h1`)
|
The following `env.config.jsx` will replace the mobile main menu entirely (in this case with a centered 🗺️ `h1`)
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
Reference in New Issue
Block a user