Skip to content

gridla@0.2.0

Choose a tag to compare

@wintercounter wintercounter released this 03 Sep 16:47
· 4 commits to main since this release

Minor Changes

  • 1c315c0 Thanks @wintercounter! - Framework adapters. Every adapter is a subpath of the gridla package, built on the new framework-neutral interaction layer, with the framework as an optional peer dependency and the same names, props, and data-gridla-* attributes as gridla/react.

    • gridla/interaction: the layer gridla/react is now built on (createGridController, createPointerGesture with bindPointer/bindKeyboard, createTransferScope, observeSize, createGridStore, renderLayout, GRID_DATA, and the interaction types). The React API is unchanged.
    • gridla/dom: mountGrid(element, options) returns a GridHandle; vanilla, no framework.
    • gridla/elements: <gridla-canvas>, <gridla-item>, <gridla-preview>, <gridla-transfer-scope> custom elements over gridla/dom, registered with defineGridlaElements().
    • gridla/vue: Vue 3 components (v-model:layout) and composables.
    • gridla/svelte: Svelte 5 components (bind:layout) and rune-style readers; shipped as Svelte source with a svelte export condition.
    • gridla/solid: Solid components and primitives, hyperscript on the client and ssrElement on the server.
    • gridla/angular: standalone components and directives with signals ([(layout)]), compiled with ng-packagr.
    • gridla/qwik: resumable components with $-suffixed callbacks; the controller is created on the client.
    • Preact: gridla/react runs on preact/compat unchanged; the alias setup is documented and verified by the package contract suite.

Patch Changes

  • 1f52e0d Thanks @wintercounter! - applyGap now reads the existing spacing from the layout: any neighbor distance up to 64px counts as a gap, so layouts authored with 16px (or any other scale) re-space on both axes without passing recognizedGaps. Previously only 0, 1, 6, 12, 18 were recognized and a 16px layout kept its vertical spacing.

  • 1fd83e1 Thanks @wintercounter! - Controlled providers now render an accepted change immediately instead of waiting for the owner to pass the layout back. Passing the emitted layout back is a no-op; passing a different layout still overrides. Frameworks that apply props on a scheduled change-detection tick (Angular, Vue, Svelte, Solid, Qwik) no longer lose a second gesture that lands inside that tick.

  • 46b3420 Thanks @wintercounter! - React adapter: while a dragged item is previewed in another canvas of a GridTransferScope, the source canvas no longer keeps its own move preview. Siblings settle back to their resting positions and GridPreviewOutline disappears there until the pointer returns.

  • 18956ff Thanks @wintercounter! - React adapter: GridTransferScope no longer flips between a target and the drag source when the target's drop preview pushes the source canvas under the pointer. Hit-testing now uses each canvas' resting position, so dropping into the gap between two groups keeps the outer canvas as the target instead of oscillating.