Skip to content

Release v1.7.12#460

Merged
hello-bsf merged 72 commits into
masterfrom
staging
Jun 11, 2026
Merged

Release v1.7.12#460
hello-bsf merged 72 commits into
masterfrom
staging

Conversation

@jaieds

@jaieds jaieds commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Description

Version 1.7.12 - 10th June, 2026
- Improvement: Atom - Textarea: Added `autoResize`, `minHeight`, and `maxHeight` props. When `autoResize` is enabled, the textarea height auto-adjusts to fit its content and stops growing at `maxHeight` (default 160px), at which point it becomes scrollable. `minHeight` and `maxHeight` apply as CSS constraints regardless of `autoResize`.
- Improvement: Organism - Line Chart: Added `seriesLabels` prop to map data keys to custom display names in the tooltip, useful for translated labels. Falls back to the data key when no label is provided.
- Fix: Organism - Editor Input: Added Shadow DOM support for the mention suggestions menu.
- Fix: Molecule - Accordion: Collapsed content children are unmounted again to prevent heavy panel content from rendering up front and re-rendering on every keystroke; the ARIA region element stays in the DOM so `aria-controls` and `aria-labelledby` still resolve.
- Fix: Organism - Editor Input: The mention typeahead anchor is now created lazily and appended to the DOM only when the menu opens, eliminating per-mount style recalculations and typing lag on pages with many editors.

Screenshots | Video with voice-over

Link to Figma (If applicable)

How has this been tested?

Checklist:

  • My code is tested
  • Screenshot added in PR
  • Figma design linked
  • My code follows accessibility standards
  • My code has proper inline documentation
  • I have resolved all lint issues
  • My templates are responsive
  • I've added conditional class names use cn()
  • I've followed theme color usage
  • I have used clear and relevant file paths

jaieds and others added 26 commits April 13, 2026 12:38
Adds auto-height adjustment to the TextArea component. When `autoResize`
is enabled, the textarea grows with its content using scrollHeight and
stops at the optional `maxHeight` cap (defaulting to 160px), at which
point it becomes scrollable. `minHeight` and `maxHeight` are applied as
CSS constraints regardless of `autoResize`. Also extends the props type
to include native textarea HTML attributes.
Adds auto-height adjustment to the TextArea component. When `autoResize`
is enabled, the textarea grows with its content using scrollHeight and
stops at the optional `maxHeight` cap (defaulting to 160px), at which
point it becomes scrollable. `minHeight` and `maxHeight` are applied as
CSS constraints regardless of `autoResize`. Also extends the props type
to include native textarea HTML attributes.
Update MCP setup command URL from GitHub Pages endpoint to the correct production URL (forceui.brainstormforce.com/mcp).
Update MCP setup command URL from GitHub Pages endpoint to the correct production URL (forceui.brainstormforce.com/mcp).
[SUR-675] [Force-UI] Add the props for text field to auto adjust height dynamically as per the text
[SUR-675] [Force-UI] Add the props for text field to auto adjust height dynamically as per the text
Apply the unmerged Lexical Shadow DOM fix (facebook/lexical#7790) via
patch-package over registry lexical@0.38.2, and fix the mention plugin's
Shadow-DOM-unsafe assumptions:

- Port LexicalTypeaheadMenuPlugin locally to restore the menuRenderFn API
  removed in lexical 0.38 (keeps the custom EditorCombobox + public
  menuComponent/menuItemComponent props).
- Give each mention option a unique key (was '' for all), fixing keyboard
  nav, highlighting and the duplicate-key warning.
- Use event.composedPath() for outside-click detection and shadowRoot
  .activeElement for blur, so clicks inside the menu aren't misread across
  the shadow boundary.
- preventDefault on item/menu mousedown so the editor keeps selection on
  click (otherwise the mention can't be inserted).
- Portal the menu into the editor's shadow root so its styles apply.
- scrollIntoView the highlighted option directly (the #typeahead-menu
  document lookup is null in Shadow DOM).
- Match dropdown width to the editor (border-box, 100%).
- Add InsideShadowDom story mounting via a real nested React root.
Apply the unmerged Lexical Shadow DOM fix (facebook/lexical#7790) via
patch-package over registry lexical@0.38.2, and fix the mention plugin's
Shadow-DOM-unsafe assumptions:

- Port LexicalTypeaheadMenuPlugin locally to restore the menuRenderFn API
  removed in lexical 0.38 (keeps the custom EditorCombobox + public
  menuComponent/menuItemComponent props).
- Give each mention option a unique key (was '' for all), fixing keyboard
  nav, highlighting and the duplicate-key warning.
- Use event.composedPath() for outside-click detection and shadowRoot
  .activeElement for blur, so clicks inside the menu aren't misread across
  the shadow boundary.
- preventDefault on item/menu mousedown so the editor keeps selection on
  click (otherwise the mention can't be inserted).
- Portal the menu into the editor's shadow root so its styles apply.
- scrollIntoView the highlighted option directly (the #typeahead-menu
  document lookup is null in Shadow DOM).
- Match dropdown width to the editor (border-box, 100%).
- Add InsideShadowDom story mounting via a real nested React root.
…typeahead anchor

Typing in consumers mounting many EditorInputs (e.g. SureRank metabox)
lagged badly (~300ms/keystroke, multi-second main-thread tasks). Two
compounding causes, both fixed here:

- Accordion: the accessibility rework kept collapsed Accordion.Content
  children mounted (aria-hidden), so consumers with heavy panel content
  (Lexical editors) mounted everything up front and re-rendered it all
  on every keystroke. Keep the ARIA region element in the DOM so the
  trigger's aria-controls/aria-labelledby still resolve, but unmount the
  children via AnimatePresence while collapsed, as before v1.7.11.

- EditorInput typeahead: the ported menu plugin created an anchor div on
  every render and appended it to document.body during render at every
  mount, forcing style recalcs per editor mount/unmount on heavy pages
  (and risking leaked divs from discarded renders). Create the anchor
  lazily and append it only when the menu actually opens.

Also memoize the mention trigger regexes per trigger and bail out of
setMenuParent when the shadow-root parent is unchanged, trimming the
per-keystroke render path.

Measured in the SureRank metabox repro: a fast-typed sentence went from
a 15.3s main-thread task (~333ms/keystroke) to 0.38s total, with
collapsed sections back to mounting zero editors.
…typeahead anchor

Typing in consumers mounting many EditorInputs (e.g. SureRank metabox)
lagged badly (~300ms/keystroke, multi-second main-thread tasks). Two
compounding causes, both fixed here:

- Accordion: the accessibility rework kept collapsed Accordion.Content
  children mounted (aria-hidden), so consumers with heavy panel content
  (Lexical editors) mounted everything up front and re-rendered it all
  on every keystroke. Keep the ARIA region element in the DOM so the
  trigger's aria-controls/aria-labelledby still resolve, but unmount the
  children via AnimatePresence while collapsed, as before v1.7.11.

- EditorInput typeahead: the ported menu plugin created an anchor div on
  every render and appended it to document.body during render at every
  mount, forcing style recalcs per editor mount/unmount on heavy pages
  (and risking leaked divs from discarded renders). Create the anchor
  lazily and append it only when the menu actually opens.

Also memoize the mention trigger regexes per trigger and bail out of
setMenuParent when the shadow-root parent is unchanged, trimming the
per-keystroke render path.

Measured in the SureRank metabox repro: a fast-typed sentence went from
a 15.3s main-thread task (~333ms/keystroke) to 0.38s total, with
collapsed sections back to mounting zero editors.
…ention

fix(editor-input): support Lexical mention menu in Shadow DOM
…ention

fix(editor-input): support Lexical mention menu in Shadow DOM
@socket-security

socket-security Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​lexical/​clipboard@​0.31.2 ⏵ 0.38.2100 +110071 +1100100
Updated@​lexical/​selection@​0.31.2 ⏵ 0.38.2100 +110072 +1100100
Updated@​lexical/​utils@​0.31.2 ⏵ 0.38.2100 +110073100100
Updated@​lexical/​table@​0.31.2 ⏵ 0.38.2100 +310087 +1100100
Updated@​lexical/​react@​0.31.2 ⏵ 0.38.29910098 +1100100

View full report

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job! ✅ The PR looks solid with no security or performance issues.

Please make sure to resolve any remaining comments if any. Approved 👍

jaieds and others added 17 commits June 10, 2026 20:58
…typeahead anchor

Typing in consumers mounting many EditorInputs (e.g. SureRank metabox)
lagged badly (~300ms/keystroke, multi-second main-thread tasks). Two
compounding causes, both fixed here:

- Accordion: the accessibility rework kept collapsed Accordion.Content
  children mounted (aria-hidden), so consumers with heavy panel content
  (Lexical editors) mounted everything up front and re-rendered it all
  on every keystroke. Keep the ARIA region element in the DOM so the
  trigger's aria-controls/aria-labelledby still resolve, but unmount the
  children via AnimatePresence while collapsed, as before v1.7.11.

- EditorInput typeahead: the ported menu plugin created an anchor div on
  every render and appended it to document.body during render at every
  mount, forcing style recalcs per editor mount/unmount on heavy pages
  (and risking leaked divs from discarded renders). Create the anchor
  lazily and append it only when the menu actually opens.

Also memoize the mention trigger regexes per trigger and bail out of
setMenuParent when the shadow-root parent is unchanged, trimming the
per-keystroke render path.

Measured in the SureRank metabox repro: a fast-typed sentence went from
a 15.3s main-thread task (~333ms/keystroke) to 0.38s total, with
collapsed sections back to mounting zero editors.
…typeahead anchor

Typing in consumers mounting many EditorInputs (e.g. SureRank metabox)
lagged badly (~300ms/keystroke, multi-second main-thread tasks). Two
compounding causes, both fixed here:

- Accordion: the accessibility rework kept collapsed Accordion.Content
  children mounted (aria-hidden), so consumers with heavy panel content
  (Lexical editors) mounted everything up front and re-rendered it all
  on every keystroke. Keep the ARIA region element in the DOM so the
  trigger's aria-controls/aria-labelledby still resolve, but unmount the
  children via AnimatePresence while collapsed, as before v1.7.11.

- EditorInput typeahead: the ported menu plugin created an anchor div on
  every render and appended it to document.body during render at every
  mount, forcing style recalcs per editor mount/unmount on heavy pages
  (and risking leaked divs from discarded renders). Create the anchor
  lazily and append it only when the menu actually opens.

Also memoize the mention trigger regexes per trigger and bail out of
setMenuParent when the shadow-root parent is unchanged, trimming the
per-keystroke render path.

Measured in the SureRank metabox repro: a fast-typed sentence went from
a 15.3s main-thread task (~333ms/keystroke) to 0.38s total, with
collapsed sections back to mounting zero editors.
…ention

fix(editor-input): support Lexical mention menu in Shadow DOM
…ention

fix(editor-input): support Lexical mention menu in Shadow DOM
…abels

Add seriesLabels prop to LineChart for translatable tooltip series names
…abels

Add seriesLabels prop to LineChart for translatable tooltip series names
jaieds added 10 commits June 11, 2026 15:09
Adds an optional enableTimeSelection boolean prop (default false) that
renders time inputs between the calendar grid and the footer:

- single: one time input that sets hours/minutes on the selected date
- range: start/end time inputs for from/to (end disabled until set)
- multiple: flag is ignored, no time UI

Times merge into the selected Date objects via date-fns setHours/
setMinutes, so onDateSelect/onApply payloads carry the chosen time and
picking a new date preserves it. Same-day ranges are kept valid: the
end can never land before the start, whether completed by click or
edited via the time inputs. With the flag off, behavior and output are
unchanged.

Includes interaction tests (play functions) covering enable/disable
states, time preservation, deselect with non-midnight times, endpoint
swap, same-day clamping, and payload contents; plus stories and readme
documentation for the new prop.
Adds an optional enableTimeSelection boolean prop (default false) that
renders time inputs between the calendar grid and the footer:

- single: one time input that sets hours/minutes on the selected date
- range: start/end time inputs for from/to (end disabled until set)
- multiple: flag is ignored, no time UI

Times merge into the selected Date objects via date-fns setHours/
setMinutes, so onDateSelect/onApply payloads carry the chosen time and
picking a new date preserves it. Same-day ranges are kept valid: the
end can never land before the start, whether completed by click or
edited via the time inputs. With the flag off, behavior and output are
unchanged.

Includes interaction tests (play functions) covering enable/disable
states, time preservation, deselect with non-midnight times, endpoint
swap, same-day clamping, and payload contents; plus stories and readme
documentation for the new prop.
…tion off

Covers the pre-existing behavior paths to guarantee enableTimeSelection
(default false) changes nothing: single select/deselect at midnight,
range complete/deselect-from/deselect-to/endpoint-swap/same-day range,
multiple add/remove, dualdate cross-month range, presets initial
selected value and preset click, Apply/Cancel payloads, and zero
time inputs rendered in all flag-off stories.
…tion off

Covers the pre-existing behavior paths to guarantee enableTimeSelection
(default false) changes nothing: single select/deselect at midnight,
range complete/deselect-from/deselect-to/endpoint-swap/same-day range,
multiple add/remove, dualdate cross-month range, presets initial
selected value and preset click, Apply/Cancel payloads, and zero
time inputs rendered in all flag-off stories.
[SUR-747] [Improvement] - Implement Force UI Date and Time Picker for Event Schema.
@hello-bsf hello-bsf merged commit 0218780 into master Jun 11, 2026
10 of 11 checks passed
@jaieds jaieds mentioned this pull request Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants