Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/docs/advanced/asynchronous-updates.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 55
title: Asynchronous Updates
description: Run background work off the UI thread and push updates back to webforJ components safely with Environment.runLater and PendingResult.
---

<DocChip chip='since' label='25.02' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/browser-console.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 15
title: Browser Console
description: Log messages from Java to the browser console with typed levels and styled output using the BrowserConsole utility.
---

<DocChip chip='since' label='24.10' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/browser-history.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Browser History
sidebar_position: 30
description: Navigate, push, and replace browser history entries from Java to control back, forward, and URL state without page reloads.
---

<DocChip chip='since' label='24.12' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/debouncing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
sidebar_position: 21
title: Debouncing
slug: debouncing
description: Delay actions until activity settles using the Debouncer class for search-as-you-type, autosave, and other rate-limited UI work.
---

<DocChip chip='since' label='25.11' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/error-handling.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Error Handling
sidebar_position: 5
description: Register custom ErrorHandler implementations through the Java Service Provider Interface to respond to specific exceptions in webforJ apps.
---

Error handling is a crucial aspect of developing reliable web apps. In webforJ, error handling is designed to be flexible and customizable, allowing developers to handle exceptions in a way that best suits their app's needs.
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/i18n-localization.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 12
title: Translation
description: Resolve localized strings from resource bundles or custom sources with the t() method, MessageFormat placeholders, and browser locale detection.
---

# Translation <DocChip chip='since' label='25.12' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/interval.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 20
title: Interval
description: Schedule recurring events at a fixed delay using the Interval class to refresh data, rotate content, or detect inactivity efficiently.
---

<DocChip chip='since' label='24.02' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/lifecycle-listeners.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 10
title: Lifecycle Listeners
description: Hook into webforJ app startup and shutdown phases with AppLifecycleListener to initialize services, modify config, or clean up resources.
---

<!-- vale off -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/locale-management.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 11
title: Locale Management
description: Configure the app locale, auto-detect from the browser, and react to runtime language switches through the LocaleObserver interface.
---

# Locale management <DocChip chip='since' label='25.10' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/mask-decorator.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
sidebar_position: 16
title: MaskDecorator
sidebar_class_name: new-content
description: Format and parse strings, numbers, dates, and times outside input fields using the same mask syntax as webforJ masked fields.
---

<DocChip chip='since' label='24.10' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/namespaces.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Namespaces
sidebar_position: 40
description: Share thread-safe key-value state across sessions, thread groups, or the entire JVM using Private, Group, and Global namespaces.
---

<DocChip chip='since' label='24.22' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/object-string-tables.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Object and String Tables
sidebar_position: 45
description: Store shared Java objects and string values app-wide or per HTTP session with ObjectTable, SessionObjectTable, and StringTable.
---

The `ObjectTable`, `SessionObjectTable`, and `StringTable` provide static access to shared data in a webforJ environment. All are accessible from anywhere in your app and serve different purposes:
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title: Advanced Topics
hide_table_of_contents: true
sidebar_class_name: has-new-content
hide_giscus_comments: true
description: Browse webforJ advanced features including async updates, repositories, namespaces, lifecycle listeners, view transitions, and web storage.
---


Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/repository/delegating-repository.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Custom data sources
sidebar_position: 4
description: Wire REST APIs, databases, or external services to webforJ components by supplying find, count, and key-lookup functions to DelegatingRepository.
---

<!-- vale off -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/repository/events-and-updates.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Events and updates
sidebar_position: 5
description: React to repository commits with RepositoryCommitEvent listeners, choose single-entity or bulk updates, and manage listener registrations.
---

<!-- vale off -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/repository/overview.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Repository
sidebar_position: 1
description: Bridge data collections to UI components with CollectionRepository, commit changes for automatic sync, and apply base filters.
---

<!-- vale off -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/repository/querying-data.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Querying data
sidebar_position: 3
description: Build typed filters, sorting, and pagination with QueryableRepository and RepositoryCriteria for in-memory collections or external sources.
---

<!-- vale off -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/route-registry-provider.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Route Registry Provider
sidebar_position: 60
description: Override default route scanning with a custom SPI provider to integrate Spring, CDI, OSGi, or GraalVM classloaders with webforJ routing.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 [vale] reported by reviewdog 🐶
[Google.Acronyms] Spell out 'SPI', if it's unfamiliar to the audience.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 [vale] reported by reviewdog 🐶
[Google.Acronyms] Spell out 'CDI', if it's unfamiliar to the audience.

---

<!-- vale Google.Headings = NO -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/terminate-and-error-actions.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Terminate and Error Actions
sidebar_position: 25
description: Customize app shutdown and error behavior with AppCloseAction implementations like MessageAction, RedirectAction, and NoneAction.
---
<!-- vale off -->
# Terminate and Error Actions <DocChip chip='since' label='23.06' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/view-transitions.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 40
title: View Transitions
description: Animate DOM changes with the browser View Transition API, applying fade, slide, zoom, and shared morph effects between component states.
---

<!-- vale Google.Units = NO -->
Expand Down
1 change: 1 addition & 0 deletions docs/docs/advanced/web-storage.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 35
title: Web Storage
description: Persist client-side data through CookieStorage, SessionStorage, and LocalStorage to retain preferences and state across requests and reloads.
---
<!-- vale off -->
# Web Storage <DocChip chip='since' label='23.06' />
Expand Down
1 change: 1 addition & 0 deletions docs/docs/architecture/client-server.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 5
title: Client/Server Interaction
description: Understand how webforJ batches server-to-client calls, avoids costly round trips, and uses caching and on-demand chunks for performance.
---

The following section discussed various performance qualities and best practices for webforJ, as well as implementation details for the framework.
Expand Down
11 changes: 6 additions & 5 deletions docs/docs/architecture/controls-components.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
---
sidebar_position: 10
title: BBj Controls and webforJ Components
description: See how webforJ components map one-to-one to BBj controls through the DwcComponent base class and why composition replaces inheritance.
---


The webforJ framework is designed to provide a Java API around the BBj language's DWC, offers a robust architecture for building and managing components.

## Mapping BBj controls to webforJ components {#mapping-bbj-controls-to-webforj-components}
## Mapping BBj controls to webforJ components {#mapping-bbj-controls-to-webforj-components}
One of the fundamental principles of webforJ is the binding of BBj controls with webforJ components. In this architecture, every webforJ component shipped with the product has a one-to-one mapping with an underlying BBj control. This mapping ensures that Java components mirror the behavior and properties of their BBj counterparts seamlessly.

This close correspondence between webforJ components and BBj controls simplifies development and allows Java developers to work with familiar concepts when building web-based applications without the need to write any BBj code.

## The `DwcComponent` base class {#the-dwccomponent-base-class}
## The `DwcComponent` base class {#the-dwccomponent-base-class}
At the heart of webforJ's component architecture lies the DWCComponent base class. All webforJ components inherit from this class. This inheritance grants each webforJ component access to its underlying BBj control, providing a direct link between the Java component and the BBj control it represents.

However, it's important to note that developers are restricted from extending the DWCComponent class further. Attempting to do so will result in a runtime exception that disallows such extensions. This restriction is in place to maintain the integrity of the underlying BBj control and ensure that developers do not inadvertently manipulate it in ways that could lead to unintended consequences.

### Final classes and extension restrictions {#final-classes-and-extension-restrictions}
### Final classes and extension restrictions {#final-classes-and-extension-restrictions}
In webforJ, most component classes, with the exception of the built-in HTML Elements and any classes extending these, are declared as `final`. This means that they are not available for extension or subclassing. This design choice is deliberate and serves multiple purposes:

1. **Control Over Underlying BBj Control**: As mentioned earlier, extending webforJ component classes would grant developers control over the underlying BBj control. To maintain the consistency and predictability of component behavior, this level of control is restricted.
Expand All @@ -28,11 +29,11 @@ In webforJ, most component classes, with the exception of the built-in HTML Elem
<!-- ## Adding Components to the DOM
TODO: Talk about how webforJ will search for a BBj control - means you can't add something that doesn't have a control -->

## Composite components: extending through composition {#composite-components-extending-through-composition}
## Composite components: extending through composition {#composite-components-extending-through-composition}
In webforJ framework, the concept of composite components plays a pivotal role in extending component functionality. Composite components are Java classes that are not restricted by the final keyword, allowing developers to create new components that extends the behavior of a single component, or combines multiple components into one, by composing existing components. Classes which facilitate this behavior have been created for developer use. See the `Composite` and `ElementComposite` sections to see how to properly create composite components.

This approach encourages a more modular and flexible development style, enabling developers to build tailored components that meet specific requirements.

<!--
## Component Hierarchy {#component-hierarchy}
## Component Hierarchy {#component-hierarchy}
TODO: Create and show graphic -->
1 change: 1 addition & 0 deletions docs/docs/architecture/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Architecture
hide_table_of_contents: true
hide_giscus_comments: true
description: Explore the webforJ architecture, covering client and server interaction, BBj control mapping, and the DwcComponent foundation.
---

<Head>
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/archetypes/blank.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Blank
description: Scaffold a minimal webforJ project from the blank archetype to build your app structure from scratch with no predefined components.
sidebar_position: 1
hide_table_of_contents: true
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/archetypes/hello-world.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: HelloWorld
description: Generate a minimal greeting app from the HelloWorld archetype to see how a basic webforJ UI, layout, and event handler fit together.
sidebar_position: 4
hide_table_of_contents: true
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/archetypes/overview.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 0
title: Archetypes
description: Pick a starter archetype such as SideMenu, Tabs, Blank, or HelloWorld to scaffold a webforJ project with prebuilt structure and dependencies.
hide_table_of_contents: true
hide_giscus_comments: true
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/archetypes/sidemenu.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: SideMenu
description: Scaffold a webforJ multi-page app from the SideMenu archetype with a sidebar navigation layout and routed content area.
sidebar_position: 3
hide_table_of_contents: true
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/archetypes/tabs.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Tabs
description: Scaffold a webforJ project from the Tabs archetype to organize multiple views or sections behind a clean tabbed interface.
sidebar_position: 2
hide_table_of_contents: true
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/component-fundamentals.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 2
title: Understanding Components
description: Understand the webforJ component hierarchy, composition over inheritance, lifecycle stages, and concern interfaces before building custom components.
---

<JavadocLink type="foundation" location="com/webforj/component/Component" top='true'/>
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/composite-components.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 4
title: Composite Components
description: Combine webforJ components into reusable units by extending Composite, configuring the bound component, and overriding initBoundComponent.
---

<JavadocLink type="foundation" location="com/webforj/component/Composite" top='true'/>
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/element-composite.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 6
title: Element Composite
description: Wrap third-party web components in Java with ElementComposite using PropertyDescriptor, attribute mapping, and typed event listeners.
sidebar_class_name: has-new-content
slug: element_composite
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/elements.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 5
title: Elements
description: Integrate raw HTML tags and custom web components in webforJ using the Element class to add children, set content, and invoke JavaScript.
slug: element
---

Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/event-options.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 7
title: Event Options
description: Configure element events with ElementEventOptions to attach payload data, filter, debounce, throttle, and run client-side code before firing.
---
<!-- sidebar_class_name: sidebar--item__hidden -->
import JavadocLink from '@site/src/components/DocsTools/JavadocLink';
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/events.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 10
title: Events
description: Attach event listeners to webforJ components with lambdas, anonymous classes, or method references and reuse the event payload server-side.
slug: events
draft: false
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/overview.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Building UI
description: Build webforJ user interfaces in Java by combining components, layouts, events, and composites or wrapping web components with elements.
hide_table_of_contents: true
hide_giscus_comments: true
---
Expand Down
1 change: 1 addition & 0 deletions docs/docs/building-ui/using-components.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
sidebar_position: 3
title: Using Components
description: Configure webforJ components in Java by setting text, attributes, IDs, inline styles, and CSS classes that drive appearance and behavior.
sidebar_class_name: new-content
---

Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/accordion-panel.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-accordion-panel>
sidebar_class_name: sidebar--item__hidden
slug: accordion-panel
description: A user guide article for the dwc-accordion-panel
description: Style the dwc-accordion-panel client component using CSS variables, shadow parts, and slots for header, icon, and content customization.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/accordion.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-accordion>
sidebar_class_name: sidebar--item__hidden
slug: accordion
description: A user guide article for the dwc-accordion
description: Customize the dwc-accordion client component through CSS variables, shadow parts, and slots to theme expand and collapse panels.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/alert-popover.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-alert-popover>
sidebar_class_name: sidebar--item__hidden
slug: alert-popover
description: A user guide article for the alert-popover
description: Style the dwc-alert-popover client component with CSS variables and shadow parts to theme positioning, surface, and animation.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/alert.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-alert>
sidebar_class_name: sidebar--item__hidden
slug: alert
description: A user guide article for the alert
description: Customize the dwc-alert client component using CSS variables, shadow parts, and slots to theme banner color, icon, and content.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/app-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-app-layout>
sidebar_class_name: sidebar--item__hidden
slug: app-layout
description: A user guide article for the app-layout
description: Style the dwc-app-layout client component via CSS variables and shadow parts to theme header, drawer, footer, and content regions.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/app-nav-item.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-app-nav-item>
sidebar_class_name: sidebar--item__hidden
slug: app-nav-item
description: A user guide article for the app-nav-item
description: Customize the dwc-app-nav-item client component with CSS variables and shadow parts to style nav links, icons, and active states.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/app-nav.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-app-nav>
sidebar_class_name: sidebar--item__hidden
slug: app-nav
description: A user guide article for the app-nav
description: Style the dwc-app-nav client component through CSS variables and shadow parts to theme navigation containers, spacing, and surfaces.
// pagination_prev: null
// pagination_next: null
---
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/client-components/avatar.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 0
title: <dwc-avatar>
sidebar_class_name: sidebar--item__hidden
slug: avatar
description: A user guide article for the avatar
description: Customize the dwc-avatar client component using CSS variables and shadow parts to style size, background, initials, and image rendering.
// pagination_prev: null
// pagination_next: null
---
Expand Down
Loading
Loading