Skip to content

ci: Version Packages - #7

Merged
tinas merged 1 commit into
mainfrom
changeset-release/main
Aug 9, 2026
Merged

tinas merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@drawerly/core@0.2.0

Minor Changes

  • #6 47e674c Thanks @tinas! - Rework the public API of both packages ahead of the first stable release.

    @drawerly/core

    • createDrawerManager now accepts a single DrawerManagerConfig object (initialStack, defaultOptions) instead of positional arguments. Drawers passed through initialStack go through the same default merging as open.
    • Built-in defaults (BASE_DRAWER_DEFAULTS) are always applied; getDefaultOptions() always returns an object.
    • Options passed as undefined or null no longer erase a configured default.
    • open documents its replace semantics: opening an already open key replaces its options rather than merging them.
    • updateOptions and updateDefaultOptions accept a patch object. The updater-function form is removed; read the current value with getDrawerInstance or getDefaultOptions instead.
    • State changes are dispatched in order when a listener opens or closes a drawer while being notified.
    • DrawerState.stack is now readonly.
    • Added getTopDrawer(), isOpen(key), and the resolveDrawerPredicate helper. Removed the DrawerUpdatableOptions type in favor of DrawerPatch.
    • New @drawerly/core/dom entry point exporting lockScroll, a reference counted body scroll lock with scrollbar compensation.
    • The stylesheet now drives enter and leave animations through drawerly-enter-active / drawerly-leave-active classes on the overlay instead of the data-entering / data-closing attributes. Custom stylesheets need to be updated.
    • The package is now ESM only.

    @drawerly/vue

    • DrawerPlugin is replaced by the createDrawerly() factory. The returned instance exposes the full manager API plus a reactive state ref, installs with app.use(), and is usable outside components. Its manager reads are derived from state, so they work inside computed properties and render functions.
    • useDrawerContext() is replaced by useDrawerly(); useDrawerInstance() is replaced by useDrawer(), which adds isTop and instance. Drawers are opened through useDrawerly().open().
    • useDrawer() mirrors the manager operations that take a drawer key with the key already bound, and nothing else. The placement, closeOnEscapeKey and closeOnBackdropClick two-way bindings are removed; read them from instance and write them through updateOptions, which also keeps function predicates intact.
    • componentParams is renamed to componentProps.
    • Drawer content receives only its own componentProps plus drawerKey. The injected onClose prop is removed; call useDrawer(props.drawerKey).close() instead.
    • teleportTo moved from plugin options to a <DrawerlyContainer> prop, alongside the new modal and lockScroll props. The headless mode is removed.
    • The container is rebuilt on <TransitionGroup>: transition timing is handled by Vue, every close path plays the exit animation, and body scroll stays locked until it finishes.
    • Container events are now drawer-opened, drawer-closed and all-closed, each emitted after the matching animation.
    • install registers the container idempotently and warns when a second instance is installed into the same app; independent scoped stacks are supported by providing drawerlyInjectionKey in a subtree.
    • The package is now ESM only.

    Focus management (focus trap, initial focus, focus restore and background inert) is not part of this release and lands in a follow-up.

@drawerly/react@0.1.0

Minor Changes

  • #6 47e674c Thanks @tinas! - Initial release of the React adapter.

    • createDrawerly() creates a store-style instance at module scope, usable both inside components and outside of them (event handlers, stores, ...). No provider is required.
    • useDrawerly(drawerly) subscribes to the instance and returns the manager API together with the drawer stack. Its manager reads come from the subscribed snapshot, so render output stays consistent with the stack a render was given.
    • useDrawer(drawerly, key) mirrors the manager operations that take a drawer key with the key already bound: isOpen, isTop, instance, close, bringToTop and updateOptions.
    • <DrawerlyContainer drawerly={instance} /> renders and animates the stack through a portal (portalTo, default body), with modal and lockScroll props matching the Vue adapter.
    • Drawer content receives only its own componentProps plus drawerKey; call useDrawer(drawerly, props.drawerKey).close() to close it. Drawers without a component render through the container's children render prop, which also receives close.
    • Exit animations are awaited through Element.getAnimations(), so every close path plays its animation, delays and iteration counts are respected, and no timers are involved. Body scroll stays locked until the animation finishes.
    • Lifecycle callbacks are onDrawerOpened, onDrawerClosed and onAllClosed, each called after the matching animation.
    • The package is ESM only.

    Focus management (focus trap, initial focus, focus restore and background inert) is not part of this release and lands in a follow-up, together with the Vue adapter.

Patch Changes

  • Updated dependencies [47e674c]:
    • @drawerly/core@0.2.0

@drawerly/vue@0.2.0

Minor Changes

  • #6 47e674c Thanks @tinas! - Rework the public API of both packages ahead of the first stable release.

    @drawerly/core

    • createDrawerManager now accepts a single DrawerManagerConfig object (initialStack, defaultOptions) instead of positional arguments. Drawers passed through initialStack go through the same default merging as open.
    • Built-in defaults (BASE_DRAWER_DEFAULTS) are always applied; getDefaultOptions() always returns an object.
    • Options passed as undefined or null no longer erase a configured default.
    • open documents its replace semantics: opening an already open key replaces its options rather than merging them.
    • updateOptions and updateDefaultOptions accept a patch object. The updater-function form is removed; read the current value with getDrawerInstance or getDefaultOptions instead.
    • State changes are dispatched in order when a listener opens or closes a drawer while being notified.
    • DrawerState.stack is now readonly.
    • Added getTopDrawer(), isOpen(key), and the resolveDrawerPredicate helper. Removed the DrawerUpdatableOptions type in favor of DrawerPatch.
    • New @drawerly/core/dom entry point exporting lockScroll, a reference counted body scroll lock with scrollbar compensation.
    • The stylesheet now drives enter and leave animations through drawerly-enter-active / drawerly-leave-active classes on the overlay instead of the data-entering / data-closing attributes. Custom stylesheets need to be updated.
    • The package is now ESM only.

    @drawerly/vue

    • DrawerPlugin is replaced by the createDrawerly() factory. The returned instance exposes the full manager API plus a reactive state ref, installs with app.use(), and is usable outside components. Its manager reads are derived from state, so they work inside computed properties and render functions.
    • useDrawerContext() is replaced by useDrawerly(); useDrawerInstance() is replaced by useDrawer(), which adds isTop and instance. Drawers are opened through useDrawerly().open().
    • useDrawer() mirrors the manager operations that take a drawer key with the key already bound, and nothing else. The placement, closeOnEscapeKey and closeOnBackdropClick two-way bindings are removed; read them from instance and write them through updateOptions, which also keeps function predicates intact.
    • componentParams is renamed to componentProps.
    • Drawer content receives only its own componentProps plus drawerKey. The injected onClose prop is removed; call useDrawer(props.drawerKey).close() instead.
    • teleportTo moved from plugin options to a <DrawerlyContainer> prop, alongside the new modal and lockScroll props. The headless mode is removed.
    • The container is rebuilt on <TransitionGroup>: transition timing is handled by Vue, every close path plays the exit animation, and body scroll stays locked until it finishes.
    • Container events are now drawer-opened, drawer-closed and all-closed, each emitted after the matching animation.
    • install registers the container idempotently and warns when a second instance is installed into the same app; independent scoped stacks are supported by providing drawerlyInjectionKey in a subtree.
    • The package is now ESM only.

    Focus management (focus trap, initial focus, focus restore and background inert) is not part of this release and lands in a follow-up.

Patch Changes

  • Updated dependencies [47e674c]:
    • @drawerly/core@0.2.0

@netlify

netlify Bot commented Aug 9, 2026

Copy link
Copy Markdown

Deploy Preview for drawerly ready!

Name Link
🔨 Latest commit ec94550
🔍 Latest deploy log https://app.netlify.com/projects/drawerly/deploys/6a789f5bc6a025000738eca2
😎 Deploy Preview https://deploy-preview-7--drawerly.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@tinas
tinas merged commit 8c2accc into main Aug 9, 2026
4 checks passed
@tinas
tinas deleted the changeset-release/main branch August 9, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant