Skip to content

NovaUI v0.3.2

Choose a tag to compare

@Xenozi230 Xenozi230 released this 23 Dec 17:33
· 2 commits to main since this release

Continuation of the component architecture refactoring

NovaInput

Technical Changes

  • Refactored component lifecycle to fully align with Nova UI standards
  • render() is now called only once during connectedCallback
  • Removed all render() calls from attributeChangedCallback
  • Attribute changes now trigger only update()

Structure

  • Stable and persistent Shadow DOM structure
  • Input element is created once and reused
  • Label, helper text, and error elements are always present in the DOM
  • Visibility handled via state logic instead of conditional rendering

State Management

  • Clear separation between:
    • internal state (_value, _disabled, _error)
    • external API (HTML attributes)
  • Prevented attribute mutation loops during user input
  • Internal value updates no longer re-trigger full component updates

Interactions

  • Smooth and lag-free typing experience
  • Reliable nova-change event dispatch
  • Disabled state fully blocks interaction

Improvements

  • Major performance improvement on input events
  • Predictable behavior when controlled via JS or HTML
  • Architecture fully consistent with other Nova UI form components

NovaProgressBar

Technical Changes

  • Refactored rendering logic to avoid Shadow DOM rebuilds
  • Progress updates now handled exclusively via update()
  • Removed unnecessary DOM mutations on value changes

Structure

  • Fixed and persistent progress bar DOM
  • Progress fill element reused for all updates
  • CSS variables used for:
    • progress color
    • background color
    • height / size

State Management

  • Proper synchronization between:
    • value
    • max
    • computed percentage
  • Internal calculations optimized for frequent updates

Improvements

  • Smoother progress animations
  • Better performance for real-time progress updates
  • Cleaner and more maintainable internal logic

NovaRadialProgress

Technical Changes

  • Full refactor to follow Nova UI lifecycle architecture
  • render() executed once during initialization
  • Attribute changes now update SVG state without recreating elements

Structure

  • Stable SVG and DOM structure
  • Circles (bg and progress) are persistent
  • Percentage label always present and updated dynamically

State Management

  • Optimized percentage calculation and stroke updates
  • No DOM rebuild during value changes
  • CSS variables centralized for:
    • size
    • colors
    • stroke width
    • text color

Improvements

  • Significantly smoother radial updates
  • Reduced layout and paint cost
  • Reliable behavior for animated or real-time progress use cases

NovaSlider

Technical Changes

  • Fixed critical performance issue causing severe lag on drag
  • Removed render() calls from high-frequency events (input)
  • Internal value updates no longer trigger attribute mutations

Structure

  • Slider DOM is now created once and kept stable
  • Input range element reused throughout component lifecycle
  • Value label visibility handled without DOM replacement

State Management

  • Clear distinction between:
    • internal slider state (dragging)
    • external attribute control
  • Attribute updates no longer cause feedback loops

Interactions

  • Ultra-smooth drag experience
  • Reliable nova-change event dispatch
  • Disabled state correctly blocks interaction

Improvements

  • Massive performance boost during slider interaction
  • No more input lag or stuttering
  • Component now safe for real-time and animated use cases
  • Fully aligned with Nova UI architectural rules