Skip to content

build(deps): Bump org.webjars.npm:codbex__harmonia from 2.3.1 to 2.6.0 - #6311

Merged
delchev merged 1 commit into
masterfrom
dependabot/maven/org.webjars.npm-codbex__harmonia-2.6.0
Jul 20, 2026
Merged

build(deps): Bump org.webjars.npm:codbex__harmonia from 2.3.1 to 2.6.0#6311
delchev merged 1 commit into
masterfrom
dependabot/maven/org.webjars.npm-codbex__harmonia-2.6.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 20, 2026

Copy link
Copy Markdown
Contributor

Bumps org.webjars.npm:codbex__harmonia from 2.3.1 to 2.6.0.

Changelog

Sourced from org.webjars.npm:codbex__harmonia's changelog.

v2.6.0

A release that rewrites the Range slider from scratch to drop the third-party nouislider dependency, so the slider is now a native-input-backed, Tailwind-styled control with a smaller footprint. It also brings invalid-state styling to more components, two newly exposed focus utility classes, and a bundle-size optimization that shrinks the JavaScript output. The only breaking change is the Range rewrite. See "Range" below to migrate.

Range

  • Breaking: the Range slider was rewritten and no longer uses nouislider. It is now a native-input-backed slider styled with Tailwind, which also removes nouislider from the package's dependencies.
  • Breaking: markup now requires a child <input>. The element must contain a native <input> as a direct child, from which the slider takes its value, name, and disabled state (the directive throws when the input is missing). The disabled attribute now goes on that inner input rather than on the wrapper element.
  • Breaking: configuration moved from a config object to modifiers and data-* attributes. The old x-h-range="config" object and the auto-hide-tips attribute are gone. Orientation and dual handles are now x-h-range.vertical and x-h-range.dual modifiers (combinable), and the range is configured with data-min, data-max, data-step, data-value, data-tooltips (true for always visible or auto for on-interaction), data-unit, data-label, and data-min-label / data-max-label for the dual handles.
  • Breaking: the x-model shape changed. A single slider now models a plain number instead of an array, while a .dual slider models a [low, high] array. The model updates live during dragging.
  • New styling hooks. The slider exposes data-slot values (range, range-input, range-fill, range-handle, range-tooltip) that replace the old .harmonia-slider and noUi-* selectors, so any custom CSS keyed on those old classes must be retargeted.
  • Each handle is a role="slider" with the full aria-value* set and an accessible label, is fully keyboard operable (arrow keys step, PageUp / PageDown jump by ten steps, Home and End go to the bounds, all RTL-aware), and dual handles cannot cross. The slider dispatches input during dragging and change on release, integrates with native forms (submitted value, form reset, and constraint validation), and shows its invalid state on submit or immediately when an ancestor opts in with data-validate="immediate".

Invalid state improvements

  • Checkbox and Radio - an invalid checkbox or radio (native :invalid / :user-invalid state or aria-invalid="true") now renders with a negative-colored fill or indicator, matching the error styling of the other inputs.
  • Tile - a tile group whose input is invalid now shows a negative border, so an invalid radio or checkbox group built from tiles is visually flagged.
  • Calendar - the calendar's slider handles now mirror the invalid state of their underlying input through aria-invalid, so the error is announced on the focusable handle that assistive technology actually reaches.

New utility classes

  • New focus-ring and focus-outline utility classes, the same focus indicators Harmonia components use internally, are now exposed so custom focusable elements can match the built-in focus styling. focus-ring colors the border and draws a translucent ring, focus-outline draws a focus outline (pair it with an outline color such as outline-ring/50), and both apply only on :focus-visible. Documented on a new Focus Indicator utilities page.

Bundle size

  • Long, repeated Tailwind class strings (the disabled, invalid, and picker-wrapper variants) that were duplicated inline across many components are now consolidated into shared constants that the components import. Identical class strings already collapse to a single CSS rule, so this leaves the rendered output unchanged and purely shrinks the JavaScript bundle. Dropping nouislider and its stylesheet reduces the footprint further.

Documentation

  • New Invalid state examples for the Checkbox, Radio, Select, File Upload, Input Group, and Tile, and new Disabled examples for the Button, Tabs, and Step Indicator.
  • A new Focus Indicator page under the utility classes documents focus-ring and focus-outline.
  • The agent-readable skill that ships in the package was regenerated to match the updated docs.

v2.5.0

A release that adds two new components - a chat-style Bubble and a Carousel - and reworks the Slot Picker so you compose its toolbar yourself from small control directives. The Slot Picker also gains colored slots, selectable sub-slot tiles, a configurable day count, and an optional now indicator, and the Calendar gains a rejected event status. The breaking changes are all in the Slot Picker: it no longer renders a toolbar of its own, its host-level label attributes were removed, and the slot icons shape changed. See "Slot Picker" below to migrate.

New component: Bubble

  • Bubble (x-h-bubble) - a chat message surface with left or right alignment (data-align) and six semantic color variants (data-variant: primary, secondary, warning, negative, outline, transparent), both reactive at runtime. You compose a message from optional parts placed inside it: x-h-bubble-header, x-h-bubble-content, x-h-bubble-footer, an image (x-h-bubble-image, which requires alt), a two-column x-h-bubble-gallery with a x-h-bubble-gallery-more "+N" overlay, a file attachment (x-h-bubble-file), a link preview (x-h-bubble-link), and a x-h-bubble-reactions pill that overlaps the bubble edge and flips side with the alignment.
  • Audio attachments - x-h-bubble-audio turns any <audio> into a custom, accessible player with a play/pause button and a role="slider" seek track that shows the current and total time. The slider is keyboard operable (Left/Right and Up/Down seek by five seconds, Home and End jump to the start and end) and supports pointer dragging, and its labels are localizable (data-play-label, data-pause-label, data-label).

New component: Carousel

  • Carousel (x-h-carousel) - a horizontal slideshow that shows one slide at a time with wraparound looping. Compose it from x-h-carousel-content (the track), one x-h-carousel-item per slide, x-h-carousel-control buttons with a .previous or .next modifier, and an x-h-carousel-indicators container that generates one dot per slide. Configure it with data-autoplay, data-interval (default 5000ms), data-loop, data-start, and data-label.
  • Full keyboard support (Left/Right move between slides, Home/End jump to the first and last), a region role with aria-roledescription="carousel", per-slide group roles, and controls that disable themselves at the ends when looping is off. Autoplay pauses automatically on hover and focus, slide transitions honor the reduced-motion preference, and a change event fires on the host with the new slide index in event.detail.value.

Slot Picker

  • Breaking: you now compose the toolbar. The Slot Picker renders only the day grid - it no longer builds its own toolbar. Build one from an x-h-toolbar wrapping the new control directives, each on an ordinary x-h-button that supplies the icon, label, and styling while the directive supplies the behavior: x-h-slot-picker-previous and x-h-slot-picker-next (page the window and disable at the minDate / maxDate bounds), x-h-slot-picker-today (return to the current day), x-h-slot-picker-title (the current period heading, an aria-live region), and x-h-slot-picker-calendar (opens a calendar popover to jump to any date). Each control must be a descendant of x-h-slot-picker.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [org.webjars.npm:codbex__harmonia](https://github.com/codbex/harmonia) from 2.3.1 to 2.6.0.
- [Changelog](https://github.com/codbex/harmonia/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codbex/harmonia/commits)

---
updated-dependencies:
- dependency-name: org.webjars.npm:codbex__harmonia
  dependency-version: 2.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@delchev
delchev merged commit 82e3023 into master Jul 20, 2026
10 checks passed
@delchev
delchev deleted the dependabot/maven/org.webjars.npm-codbex__harmonia-2.6.0 branch July 20, 2026 11:49
delchev added a commit that referenced this pull request Jul 20, 2026
…k pickers, upstream skill (#6312)

Harmonia was bumped 2.3.1 -> 2.6.0 (dependabot #6311, pom only). Adapt the
generated Harmonia stack to the 2.4-2.6 breaking changes and adopt the new
pickers.

Slot Picker (2.5.0 breaking): the picker no longer renders its own toolbar,
so the `view: slots` page composed only a bare grid with no date navigation.
Compose the previous/calendar/next/title/today toolbar from the
x-h-slot-picker-* control directives; add the today/chooseDate i18n keys.

Month/Week pickers (new in 2.4.0): adopt as two new intent field types.
- parser: `month`/`week` accepted field types
- EdmIntentGenerator: both map to VARCHAR (len 7/8); the MONTH/WEEK widget
  type is chosen from the LOGICAL type, not the JDBC dataType (both VARCHAR,
  so invisible to widgetForType) - mirrors the documentTitle special-case
- Harmonia manage form-view + document-view: render x-h-month-picker /
  x-h-week-picker instead of plain <input type="month|week">
- FormIntentGenerator + template-form-builder-harmonia: input-month /
  input-week controls and picker blocks
- format.js: MONTH/WEEK are plain strings - toPayload passes them through
  (not ISO-instant-ized), toDateInput slices; fmtDate maps input-week -> WEEK
The AngularJS stacks already handle both widget types (verified).

Range slider (2.6.0 breaking) and the removed `position-fit` (2.4.0) are not
used by any template, so nothing to change there.

Docs: remove the in-repo `reference/harmonia/` skill mirror (71 files) and
point CLAUDE.md / the migration note at the upstream skill + docs
(codbex.com/harmonia) to avoid drift; bump the "Harmonia 2.3.1" version
string to 2.6.0; document the two new field types.

Tests: EdmIntentGeneratorTest + IntentParserTest cover the month/week
mapping and acceptance; IntentEngineIT.month_and_week_fields_generate_the_harmonia_pickers
asserts the generated .model widget types and the rendered pickers end-to-end.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants