Skip to content

v1.8.1 - #495

Merged
jaieds merged 19 commits into
masterfrom
staging
Aug 11, 2026
Merged

v1.8.1#495
jaieds merged 19 commits into
masterfrom
staging

Conversation

@jaieds

@jaieds jaieds commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Description

Version 1.8.1 - 11th August, 2026
- Improvement: Organism - Editor Input: Added optional `triggerRegex` prop that overrides the built-in mention-suggestion matcher, so consumers can allow the trigger without a leading blank space (e.g. directly after a double quote inside JSON string values). The custom regex must expose the same capture groups as the built-in matcher: 1 = leading boundary, 2 = replaceable string (trigger + query), 3 = query string used to filter options. When omitted, the existing trigger-based matcher is used unchanged.
- Fix: Atom - Select: In `multiple` mode the dropdown now stays open while selecting or deselecting options, closing only on Escape or outside click.

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 18 commits July 1, 2026 20:26
BREAKING CHANGE: @bsf/force-ui now targets Tailwind CSS v4, which is
CSS-first. The JS `withTW()` helper is deprecated in favor of a shipped
CSS theme, and consumers must update their CSS entry + PostCSS setup.

- Add src/theme/theme.css: @theme port of all design tokens + the
  `not-rtl` custom variant (@custom-variant) and a `border-0.5` utility.
  Spacing/size/leading/z-index/fraction-widths are omitted — v4's dynamic
  utility scale reproduces them at identical values (verified by compile).
- src/tailwind.css: @tailwind directives -> @import "tailwindcss" + theme.
- postcss.config.cjs: tailwindcss + autoprefixer -> @tailwindcss/postcss.
- package.json: v2.0.0; tailwindcss ^4.3.2; add @tailwindcss/postcss;
  drop @tailwindcss/container-queries, autoprefixer, tailwindcss-scoped-
  preflight; expose ./theme.css export.
- vite.config.ts: emit theme.css to dist on build.
- withTW.js: mark @deprecated (kept as legacy @config shim, removed in 3.0.0).
- Delete tailwind.config.js (v4 auto-detects sources; not auto-loaded).
- Rename renamed-in-v4 utilities across component/story source:
  shadow-sm->shadow-xs, outline-none->outline-hidden, rounded-sm->rounded-xs,
  bare rounded->rounded-sm, bare shadow->shadow-sm.
- README: add v2.0.0 migration guide (before/after + removed-keys table).

Refs #1830 / SUR-397
List every @theme token shipped in theme.css (162 tokens across colors,
shadows, font-size and letter-spacing), grouped by category in a
collapsible section, so developers can see exactly which variables to
override. Generated from src/theme/theme.css.

Refs #1830 / SUR-397
Issues found while migrating SureRank/SureRank Pro onto 2.0.0:

- theme.css: add per-side border-*-0.5 and divide-{x,y}-0.5 utilities
  (v3's borderWidth {0.5} theme key generated these variants; without
  them, border-style falls back to the browser 'medium' width because
  preflight is excluded).
- Move the v3 important prefix to the v4 suffix in remaining component
  and story classes (!x -> x!); v4 does not recognize the prefix form.
- Bump tailwind-merge to ^3 — v2 predates the v4 trailing-! syntax and
  can drop such classes when merging.
- README: add consumer upgrade checklist and WordPress/webpack notes
  (standalone PostCSS pass for the Tailwind entry, no @layer inside
  wp-admin, preflight-off border compat, space-* selector change).

Refs #1830 / SUR-397
…v4-migration

[SUR-397] [ForceUI] Migrate TailwindCSS v3.x.x to v4.x.x
This reverts merge commit 5e8cd34 (-m 1) so the upcoming EditorInput
release ships without the breaking Tailwind v4 changes. Re-apply after
release by reverting this commit.
Adds an optional triggerRegex prop that overrides the built-in
mention-suggestion matcher so consumers can allow the trigger without a
leading space (e.g. inside quoted JSON-LD string values). When omitted,
the existing trigger-based matcher is used - zero behavior change.

Related to brainstormforce/surerank#2600
The storybook test-runner's axe pass runs on the final story state. The
open combobox popup has pre-existing aria-required-parent/children and
aria-valid-attr-value violations unrelated to the triggerRegex feature,
so the new interaction stories now dismiss the menu after asserting.
Selecting an option in multiple mode no longer closes the dropdown, and
clicking an already-selected option deselects it. Escape and outside
click (useDismiss) still close the list; single mode still closes on
select. Updated MultiSelect and InlineSearchMulti story play tests to
assert the keep-open and toggle behavior.
Flipping `multiple` to true while a single value was already selected
crashed the component: `SelectItem`'s `multipleChecked` called `.some()`
on a non-array value and `handleMultiSelect` spread it, so opening the
dropdown or picking a second option threw a TypeError.

Add a `toValuesArray()` helper and route every multi-value path through
it (badge rendering, toggle/close handlers, placeholder checks, inline
search backspace). In single mode a non-empty array now falls back to its
first entry so `render()`/children never receive an array; an empty array
is passed through unchanged to preserve existing output. Also add the
missing `multiple`/`render`/`children`/`by` memo dependencies that kept
stale single-mode closures alive after a mode flip.

Adds a ToggleMultipleAtRuntime story covering the flip in both directions.
…ditor-input

#2600 - Support smart tags in Custom JSON-LD string values
- restore trigger refocus behind inlineSearch so type-to-filter,
  arrow nav and Backspace-removes-badge survive a pick
- clear selectedIndex when the deselected option was highlighted
- drop onClose from SelectFunctionChildren type
- add indx to isChecked deps
- stories: re-query options after each click, badge key by `by` value,
  assert typing filters right after a pick in inlineSearch
Comment thread package-lock.json
Comment thread package-lock.json
Comment thread package.json
Comment thread src/components/editor-input/editor-input.stories.tsx
Comment thread src/components/editor-input/editor-input.stories.tsx
…eep-open

#490 - Select: multiple mode closes the dropdown after every selection
@jaieds
jaieds merged commit 7742f73 into master Aug 11, 2026
12 checks passed
*
* @param {SelectOptionValue | SelectOptionValue[] | null | undefined} value - Current select value.
* @return {SelectOptionValue[]} Array of selected values.
* @since x.x.x

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This should be changed to version?

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