Skip to content

Releases: wintercounter/gridla

gridla@0.2.1

Choose a tag to compare

@wintercounter wintercounter released this 03 Sep 20:54

Patch Changes

  • 62b69a0 Thanks @wintercounter! - Resize handle geometry uses the --gridla-handle-size, --gridla-handle-inset, and --gridla-handle-cursor[-<edge>] custom properties, so stylesheets size and restyle the built-in handles without !important. The shared resizeHandleStyle, rectStyle, and styleToText helpers are exported from gridla/interaction and back every adapter. New gridla/base.css starter stylesheet, and a styling guide in the docs.

gridla@0.2.0

Choose a tag to compare

@wintercounter wintercounter released this 03 Sep 16:47

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.

gridla 0.1.0

Choose a tag to compare

@wintercounter wintercounter released this 03 Sep 10:12

Minor Changes

  • e288780 Thanks @wintercounter! - Initial public release: framework-neutral core (moveItem, resizeItem,
    placeItem, transferItem, projectLayout, applyGap, flattenLayout,
    compactLayout, applyPreset) and the React adapter (GridProvider,
    GridCanvas, GridItem, GridPreviewOutline, GridTransferScope, hooks).

    Behavior: solvers honor fixed-size axes of bystanders, rejected results return the input layout, overlapping pointer placements are reported as rejected, and chain projection groups items into lanes so rows stay aligned under any canvas size.