- Various sub-path refactoring / removals.
- Overall refinement / streamlining.
- Fixed min window height / width for app shells (global vs script space variable access)
- Fixed SvelteApplication render gating / render: false will short circuit properly when app not rendered.
- EmptyApplicationShell component can now be made resizable via setting the
resizable
app option. - Added
closeOnInput
prop to TJSGlassPane which firesclose:glasspane
event on pointer down event.- Added
modalOptions.closeOnInput
to TJSDialog data / close modal dialog on glasspane input.
- Added
- Upgraded TJSDialogData adding reactive accessors for all standard data. New
replace
function instead of accessor setting of all data. - Update types for transition / modal options for TJSDialog.
- Fixed application shell transition prop handling
defaultCloseAnimation
option not taking when set tofalse
w/ no transition defined.- separately defined in / out transitions works correctly.
DynReducerHelper.filters.regexObjectQuery
- Can now take "accessor" strings to lookup nested properties. Simply provide a string separated by
.
for each depth. - An additional option is available
accessWarn
when set to true will log warnings when property lookups fail.
- Can now take "accessor" strings to lookup nested properties. Simply provide a string separated by
- Fix for ResizableHandle component / elementRoot store access
- Fix for SvelteApplication close hook invocation using JQuery element.
- Large overhaul of library structure.
- Some import locations have changed; See release notes in Discord for updated change info.
-
Advanced focus management including focus trapping for application shells.
- Check options
focusAuto
,focusKeep
,focusTrap
in SvelteApplicationoptions
/reactive
- By default
focusAuto
/focusTrap
is enabled for application shells. focusSource
for pass-through handling of returning focus to source of action on close.
- By default
- Note: To enable keyboard navigation by
tab
traversal you need to remove / reassign the Foundry key binding fortab
.
- Check options
-
TJSDialog completely overhauled.
- Keeps the same configuration options / remove all JQuery support.
- New
wait
method w/ managed Promise handling.- Inside of dialog Svelte components access managed promise via
getContext('#managedPromise')
- Inside of dialog Svelte components access managed promise via
-
New options for application header button options:
- Left align buttons after title w/
alignLeft: true
. - Keep button when minimized w/
keepMinimized: true
. - Context menu / right click support w/
onContextMenu
callback. - Integrated keyboard handling.
- Left align buttons after title w/
-
CSS default variables (used across all components when text is focused / hovered):
--tjs-default-text-shadow-focus-hover
-> default value: '0 0 8px var(--color-shadow-primary)'
-
Undefined universal CSS variables for focus visible support / keyboard navigation:
--tjs-default-outline-focus-visible
: Defineoutline
for focused components.--tjs-default-transition-focus-visible
: Optionaltransition
to apply.--tjs-default-box-shadow-focus-visible
: Optional box-shadow to apply instead of outline.
-
Vite 4 support
- Updated @typhonjs-svelte/lib to latest.
- New utility class to manage CSS variable called
StyleManager
added toutil
subpackage export.
- Added
enabled
option toPosition
to turn on / off Position control instantly. Used in forthcomingPopOut
module support. - Moved delete callback in TJSDocument before final update subscribers
- Moved TJSGameSettings to
svelte-standard
.
- Added new reactive embedded collections capability to TJSDocument.
- DynArrayReducer / DynMapReducer / DerivedArrayReducer / DerivedMapReducer stores added.
- Fixed compatibility aspects w/ Foundry v10.
- Fixed teething issues w/ Vite.
- Vite is now the recommended bundler / dev setup
- Full support for Svelte HMR in Vite developer mode.
-
Updated
DynArrayReducer
from @typhonjs-svelte/lib to be able to dynamically reverse iteration. Useful for table sorting. -
Fixed corner case issues in
SessionStorage
/LocalStorage
.
-
action
- Added 'applyScrolltop'; stores and applies scrollTop to associated element.
-
application
- SvelteApplication; fixed application minHeight / minWidth issues.
-
animate
- Added 'animateEvents'; provides a wrapper around animate functions (IE flip) providing events for animation start / finish. This is useful when needing to alter characteristics / CSS values of the container during animation.
-
store
-
TJSGameSettings
- External stores may be assigned instead of default basic writable stores created.
- (deprecation) register options requires 'namespace' instead of 'moduleId'; this will be permanent in a future release. A log statement is currently generated.
-
SessionStorage / LocalStorage; refined edge cases / fixed issue w/ 'getItem' and default values.
-
-
Build issues: fixed Rollup build process that mistakenly included source referenced across modules.
-
Svelte updated to
3.49.0
-
Better error messages for Svelte component mounting.
-
TJSApplicationHeader defines styles for .window-title for no-wrap, overflow hidden, and text-overlow as ellipsis.
-
TJSDocument / TJSDocumentCollection
- add a 'subscribe' action; first subscribe callback action will be subscribe.
- handle var args in constructor
-
Position
- Support for relative data; can use "+2.0", "-1.5", "*0.5" to adjust numeric position data relative to current values.
-
Position State API
- New location (position.state.)
-
AnimationAPI / AnimationManager
- Fully decoupled AnimationManager from UpdateElementManager.
position.animate.<xxx>
& Position.Animate. for grouping multiple position instances in one animation.- Animations can have delayed start.
- Implemented to, from, fromTo tweens
quickTo
function generation for fast restart of to tween.- Ability to get all animation controls for a give Position instance.
-
AnimationControl / AnimationGroupControl
- isActive / isFinished getters to determine if animation is active or finished.
- Cancel implementation
-
Actions
- alwaysBlur; Applied to an element focus is always immediately blurred.
- autoBlur; Applied to an element focus is blurred when another pointer down event occurs outside the element.
-
Full integration of GSAP
- Proper module loading from remote source (requires top level await).
- GsapCompose (data oriented GSAP bridge for Position)
- draggableGsap; provides easing + inertia support.
-
Position system
- immediate element update support; from external rAF callback.
- animateTo
- returns an object w/ cancel method and
finished
for the animation end Promise. - ease instead of easing. duration is now specified in seconds instead of milliseconds.
- returns an object w/ cancel method and
- start of static public Animation API; support
cancelAll
->Position.Animation.cancelAll()
Demos
- position-app: cleaned up UI; upgraded w/ GSAP timeline / tween examples + draggable selection.
- position-box: upgraded w/ GSAP timeline example; draggableGsap
- position-carousel: upgraded for GSAP timeline / tween to control continuous updates.
- Further refinement of position / Position system.
- Orthographic mode
- top / left positional data is converted to translate X / Y in matrix3d transform.
- SvelteApplication boolean option
positionOrtho
to turn off orthographic mode.
- Orthographic mode
resizeObserver
action performance improvements.- All resizeObserver actions share a single ResizeObserver instance.
- resizeObserver now caches both content & offset width / height.
- Further refinement of position / Position system.
- Translation + min / max height & width.
- Massive performance improvements.
- Ability to apply Position to any element.
- New
applyPosition
action.
- New
- New
resizeObserver
action that is far more performance oriented than stock Svelte monitoring of offset width & height.
- Continued refinement of position / Position in SvelteApplication.
- Transforms are now handled by matrix3d.
- New math package w/ glmatrix and other supporting functions.
- Can now use a Svelte component as a header button.
- TJSDialog sets height as
auto
by default. - TJSDocument has
setFromUUID
andsetFromDataTransfer
methods
- Complete overhaul of position / setPosition implementation making positional aspects reactive.
- Setting any
this.position.<XXX>
value is reactive. - New
this.position.set
method.setPosition
simply invokes it. - New position validators that make advanced window management easy.
- Setting any
- Introduction of Application state. this.state.save / restore and other methods including animating to a saved state are now possible.
-
Breaking changes (rename of variables):
- When creating a Svelte component the Foundry application accessible by
getContext('external').foundryApp
is renamed toapplication
and accessible bygetContext('external').application
. - SvelteApplication / SvelteReactive
IE this.reactive.storeUIOptions
renamed tothis.reactive.storeUIState
. Added two new stores fordragging
andresizing
that are true when the app is being dragged or resized.
- When creating a Svelte component the Foundry application accessible by
-
TJSDocumentDialog and individual dialogs for working with documents added to new sub-module
@typhonjs-fvtt/svelte/application/dialog
. -
TJSDocument and TJSDocumentCollection to make documents and document collections reactive / store / subscriber protocol support available via
@typhonjs-fvtt/svelte/store
-
Many refinements to TJSDialog smoothing out developer experience.
- Added
autoClose
option to not automatically close on button press. You must manually close the app in button callback. - Normalized options for icon: you can now just pass a string for the FA icon class.
- Normalized callback option / you can also use
onclick
- If you are using a Svelte component for the dialog content the callback can be a text string for an exported
- function in the Svelte component to invoke on button press.
- Added
styles
option / object to specify inline styles on the button. - Added
title
option to add a title / tooltip to buttons.
- Added
-
The SvelteApplication
position
object is not a specific classPosition
that has the same API / shape as the default coreposition
object.- The new position implementation is a Svelte store / reactive.
this.position.validators
provides an API to add validation functions that are invoked on position changes allowing modification of position data or cancelling an update. This allows the easy creation of window / app management code.
-
Really fine-tuned
setPosition
fixing outstanding issues / integrated position validation.max-width
/max-height
set in styles is now included in calculations, so when resizing an app the position data correctly stops at any max value set.- Validation via Position is engaged allowing much easier window management functionality.
- Skipped 0.0.4 release to bring version parity with @typhonjs-fvtt/runtime.
- Added gameState Svelte store to access Foundry global
game
in Svelte templates. - Better typescript type definitions.
- Updated @typhonjs-svelte/lib (more utility functions)
- Fixed all edge cases between Svelte integration and SvelteApplication
- reactive z-index support
- A bunch more refinement; too much to list.
-
Updated SvelteApplication / SvelteFormApplication to properly handle z-index management including legacy Handlebars support.
-
Added
setPosition
option that by default is true. When set to false thesetPosition
method takes no effect. -
Added
headerButtonNoClose
andheaderButtonNoLabel
options to remove close button and labels from header buttons. -
Made storeAppOptions derived stores writable.
- Updated SvelteApplication / SvelteFormApplication
setPosition
to automatically determinenoHeight
/noWidth
from styleheight
orwidth
.
- Initial release