`GenericContentMainArea`: optional close button rendered by the core
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- react, typescript
- Domain
- frontend
Research direction
Start from the reference implementation in external-video-player-graphql/component.tsx (the Styled.ExternalVideoCloseButton block) and compare it with the current GenericContentMainArea component and its GenericContentMainAreaProps. Read how the presenter flag reaches that content and how RTL and primary styling are handled, since the new closeButton option must reuse the same button and layering. Done means the prop is added, core renders the button only for the presenter (or behind an allowed flag) above plugin content, and no item re-creation is needed on presenter change.
Written by the indexing model from the issue text.
Description
The external video player shows a close button in the top right corner of the content, for the presenter only:
// external-video-player-graphql/component.tsx
isPresenter ? (
<Styled.ExternalVideoCloseButton
color="primary" icon="close" size="sm" hideLabel
onClick={stopExternalVideoShare}
label={intl.formatMessage(intlMessages.closeExternalVideoLabel)}
/>
) : null
GenericContentMainArea only takes contentFunction, so a plugin has to draw its own button inside its content, copying the core styles (position: absolute; top: 0; right: 0, RTL handling, primary colors). It also has to re-render that content when the presenter changes, without recreating the item, which would put it back on top of the presentation area for everyone. The result can drift from the core look, and every plugin does it a little differently.
Proposal
Add an optional close button to GenericContentMainAreaProps, rendered by the core with the same component as the external video:
new GenericContentMainArea({
contentFunction: (element) => { ... },
closeButton: {
label: 'Stop sharing website', // aria-label / tooltip
onClick: () => { /* remove the content */ },
},
});
The core would show it only to the presenter, as for the external video, or the plugin could choose with an allowed flag. It should follow RTL and stay above the plugin content.
- Dominant language
- No language data
- Stars
- 17
- Forks
- 18
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from bigbluebutton/bigbluebutton-html-plugin-sdk
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
`useChatMessageDomElements` never evicts removed elements from its storePossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 3/5 1-2 days Newbie friendliness 76/100
All issues in bigbluebutton/bigbluebutton-html-plugin-sdk
Similar issues
-
ai bug design good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
neomjs/neo-agent-institution#927 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gramps-project/gramps-web#1671 ·
Maintainers usually reply within 1 day
-
项目日志弹出窗尺寸可拉伸功能Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
Codex使用可 コード
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
ryuki-moro/Nicomaru#218 ·
Maintainers usually reply within 3 days
-
bug good first issue priority: P2 status: ready
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
RhinoLink-Tech/data-fabric#502 ·
Maintainers usually reply within 1 day