Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

infusion

fluid-project13.5k(BSD-3-Clause OR ECL-2.0)4.8.0

Infusion is an application framework for developing flexible stuff with JavaScript

infusion, framework, application, fluid, IoC, Inversion of Control, MVC, evented

readme

Infusion

CI build status badge Coverage status badge

What Is Infusion?

Infusion is a different kind of JavaScript framework. Our approach is to leave you in control—it's your interface, using your markup, your way. Infusion is accessible and very, very configurable.

Infusion includes:

  • an application framework for developing flexible stuff with JavaScript and jQuery
  • a collection of accessible UI components

Where Can I See Infusion Components?

https://fluidproject.org/infusion.html

How Do I Get Infusion?

See How Do I Create an Infusion Package?, for details on creating complete or custom packages of Infusion.

Where is the Infusion Documentation?

Infusion has comprehensive documentation at https://docs.fluidproject.org/infusion.

Who Makes Infusion, and How Can I Help?

The Fluid community is an international group of designers, developers, and testers who focus on a common mission: improving the user experience and accessibility of the open web.

The best way to join the Fluid Community is to jump into any of our community activities. Visit our website for links to our mailing lists, chat room, wiki, etc.

Inclusion

The Fluid community is dedicated to inclusive design—design that considers the full range of human diversity with respect to ability, language, culture, gender, age and other forms of human difference. To help ensure that our community is a safe space for all contributors, we have adopted a code of conduct based on the Contributor Covenant. All participants and contributors have the responsibility to uphold this code. Please contact the Advocacy working group if you encounter unacceptable behaviour.

Where is Infusion Used?

Infusion is the cornerstone of a number of Fluid's own projects dedicated to supporting inclusive design on the Web. You can see some of them featured on our Projects page. Infusion is also used in a variety of third-party applications, which are listed on the Infusion Integrations wiki page.

How Do I Create an Infusion Package?

For simplicity and performance reasons, Infusion distributions are minified. However, such a file is often difficult to read. To address this, source maps for the minified files are automatically generated to make debugging easier.

Source Maps

Source maps are supported in all of the major browsers: Chrome, Firefox, Edge, and Safari. To make use of them, enable source maps in your debugging environment, and ensure that the source maps are hosted adjacent to the file they are associated with.

Source Map Example

  • From the command line, run npm run build to generate Infustion distributions
    • All Infusion distributions come with a source map for the concatenated JavaScript file
    • CSS files compiled from SASS also include source maps.
  • In the Infusion package, modify one of the demos to replace the individual javascript includes with a reference to "infusion-all.js"
  • The "infusion-all.js" includes a reference to the "infusion-all.js.map" file, which is assumed to be hosted as its sibling
  • Open the demo in a browser
  • In the browser's debugger ensure that source maps are enabled
    • In Firefox open the debugger
    • In the debugger options, ensure that "Show Original Sources" is enabled
    • see MDN: Use a source map
  • In the debugger you should now be able to view and debug the individual JavaScript files as though they were included separately

Dependencies

All other development dependencies will be installed by running the following from the project root:

npm install

Build Types

Distribution Builds

Will build a set of predefined distribution bundles of Infusion, some of which include third-party dependencies and some of which do not, for distribution on NPM. Each distribution file will be placed in the dist directory and will be accompanied by a source map.

npm run build

Distribution bundles can be viewed on unpkg.

Infusion All Build

Will include all of Infusion, including third-party dependencies. The source files packaged along with the single concatenated JavaScript file will include all of the demos, examples and unit tests. This is a good choice if you are trying to learn Infusion.

npm run build:pkg

Custom Build

Will only include the modules you request, and all of their dependencies, minus any that are explicitly excluded. Unlike the Infusion All build, none of the demos, examples or tests are included with a custom package.

npm run build:pkg:custom

Custom Build Options

Any of the following options can be passed to a custom build by specifying the option after --. Examples are shown below.

-i, --include

value: "module(s)" (String) only available to custom builds

The --include option takes a comma-separated string of the Modules to be included in a custom package. Only these modules and their dependencies will be included. By default, all modules are included; however, demos, examples and tests are never included with custom builds.

npm run build:pkg:custom -- --include="fluid-inline-edit, fluid-ui-options"

# shorthand
npm run build:pkg:custom -- -i "fluid-inline-edit, fluid-ui-options"
-e, --exclude

value: "module(s)" (String) only available to custom builds

The --exclude option takes a comma-separated string of the Modules to be excluded from a custom package. By default, no modules are excluded. Excludes take priority over includes.

npm run build:pkg:custom -- --exclude=jquery

# shorthand
npm run build:pkg:custom -- -e jquery
-n, --name

value: "custom suffix" (String) only available to custom packages which have specified an include and/or exclude option

By default, custom packages are given a name in the form infusion-custom-{version}.zip and the concatenated JavaScript file is called infusion-custom.js. By supplying the --name option, you can replace "custom" with any valid string. If neither the --include nor --exclude options are specified, --name will be ignored and "custom" will be replaced with "all".

NOTE: If built from a tag, the version will correspond to the tag name. (e.g. infusion-custom-myTag.zip)

# this produces infusion-myPackage.js
npm run build:pkg:custom -- --name=myPackage

# shorthand
npm run build:pkg:custom -- -n myPackage

Producing builds for a GitHub release

The build commands producing the zip files which accompany a GitHub release (infusion-all-vx.y.z.zip and infusion-uio-vx.y.z.zip) can be produced by the following commands:

npm run build:pkg
npm run build:pkg:custom -- -i "fluid-ui-options" -n uio

The zip files will obliterate the contents of the products directory and must be copied out after each command.

Modules

Framework Modules

  • fluid-enhancement
  • fluid-framework
  • fluid-preferences
  • fluid-renderer

Component Modules

  • fluid-inline-edit
  • fluid-orator
  • fluid-overview-panel
  • fluid-pager
  • fluid-progress
  • fluid-reorderer
  • fluid-sliding-panel
  • fluid-switch
  • fluid-table-of-contents
  • fluid-textfield-controls
  • fluid-text-to-speech
  • fluid-tooltip
  • fluid-ui-options
  • fluid-undo
  • fluid-uploader

External Libraries

  • atkinson-hyperlegible
  • fast-xml-pull
  • hypher
  • jquery
  • jquery-ui
  • jquery-scrollto
  • jquery-ui-touch-punch
  • opendyslexic
  • opensans
  • roboto-slab

How Do I Run Tests?

Run Tests On Your Computer

To run both the browser and node tests for this package:

npm test

To run only the node tests:

npm run test:node

To run only the browser tests:

npm run test:browser

Testem will attempt to launch Chrome and Firefox sequentially with each browser running the full Infusion test suite. The results will be returned in your terminal in the TAP format.

If you would like to debug individual tests or view the test summary in a browser, you can:

  1. Host the working directory:

    npm start

    Your terminal will show you the local address for the working directory, which will normally be http://localhost:5000.

  2. Open the "rollup" file tests/all-tests.html that runs all tests in a browser. Continuing the above example, you would load the URL http://localhost:5000/tests/all-tests.html.

To run tests of Infusion's distribution bundles:

npm run test:bundles

Coverage Reporting

When you run the tests using npm test, the full test suite will run and a coverage report will be saved to the reports directory.

The npm test command has two additional associated scripts. The pretest script runs before the command defined for the test script. The posttest script runs after. In our case we use a pretest script to clean up previous coverage data before we run the tests, and a posttest script to compile the actual report (this can also be accomplished by running npm run test:report after running tests). You do not need to run the pretest script manually before running either the node or browser tests, or to run the posttest script afterwards.

Run Tests In a Docker Container

You can also run the tests from a Docker container.

Once you have Docker installed, run the following commands to build a Docker image and start a container:

  • Build the image: docker build -t infusion .
  • Run the container: docker run --name infusion -p 8000:80 infusion

Infusion will be available at http://localhost:8000

  • To stop and remove the container: docker rm -f infusion

If you make changes to Infusion, repeat the steps to build the image and start a new container.

Other Scripts

Host the working directory (this will make it available at http://localhost:5000 and let you access demos, examples, and tests in your browser):

npm start

Copy Infusion's dependencies from "node_modules" into the "src/lib" directory:

npm run deps

Lint JavaScript, JSON, Markdown and other files using fluid-lint-all:

npm run lint

Remove all of the copied or built directories and files:

npm run clean

Developing with the Preferences Framework

The Preferences Framework uses Sass for CSS pre-processing. Only Sass files are included in the GitHub repository.

For developing the Preferences Framework, run the following from the project root to compile Sass files to CSS:

# unminified
npm run build:sass

# minified
npm run build:sass:min

A watch task is also supplied to ease Sass development. This task launches a process that watches all Sass files in the src directory and recompiles them when they are changed. This task can be started using the following command:

# unminified
npm run watch:sass

# minified
npm run watch:sass:min

For more information on styling the Preferences Framework, please review the documentation on using Sass with the Preferences Framework.

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog. Infusion from v2.0.0 onwards adheres to Semantic Versioning.

Unreleased

Added

Changed

Deprecated

Removed

Fixed

Security

More Info

4.8.0 - 2025-01-15

Added

  • FLUID-6783 Text highlight should be styled using contrast themes

Fixed

  • FLUID-6782 Picking a contrast other than default will change the background of the separate panel to white before the styling should be applied
  • FLUID-6772 Removal of UIO iframe in Infusion 4.5.0 causes overflow issue
  • FLUID-5098 TOC container is not well defined in demo

Changed

  • FLUID-6784 Upgrade to the latest versions of jQuery and jQuery UI

More Info

4.7.1 - 2024-07-30

Fixed

  • FLUID-6781 404 error for sourcing open-sans font in SeparatedPanelPrefsEditor styles.

More Info

4.7.0 - 2024-07-29

Added

  • FLUID-6763 UI Options: Add Atkinson Hyperlegible font
  • FLUID-6754 Add a text style option for system-ui

Fixed

  • FLUID-6764 Infusion's jquery.standalone file throws an error when loaded in an AudioWorkletGlobalScope

More Info

4.6.0 - 2022-12-08

Fixed

  • FLUID-6758 Selection reading continues from where page reading stopped
  • FLUID-6757 Rendering and other methods for the selection reader are not invokers
  • FLUID-6756 regenerateCursor function defined in the global scope in both Fluid.js and FluidIoC.js

More Info

4.5.0 - 2022-10-21

Fixed

  • FLUID-6753 Framework error messages which attempt to dump the entire component are unreadable
  • FLUID-6749 Stop using iframe to render preferences editor

More Info

4.4.0 - 2022-09-27

Fixed

  • FLUID-6750 Model-driven relocalisation does not take account of initial model values

More Info

4.3.0 - 2022-08-08

Added

  • FLUID-6745 Improve TextNodeParser so that it can be configured with a free hash of selectors to ignore

Fixed

  • FLUID-6744 Failure distributing to gradeNames for component which has undefined options

Removed

  • FLUID-6748 Remove the auto save of panel index in separated panel UIO

More Info

4.2.0 - 2022-07-05

Fixed

  • FLUID-6742 Race condition in IoC Testing Framework tests exposed by upgrade to Chrome 103
  • FLUID-6741 Workflow failure when constructed lensed component from asynchronous resource

More Info

4.1.0 - 2022-05-12

Fixed

  • FLUID-6730 Removed some obsoleted utilities - fluid.accumulate, fluid.contains, fluid.add, fluid.stableSort
  • FLUID-6729 References into local record such as {source} and {sourcePath} can't be resolved in interpolated relay segments
  • FLUID-6728 A sourcePath into the first element of an array fails to resolve in contexts where expandImmediate is used
  • FLUID-6727 Improve documentation (retrospectively) about changes in DataSource API in the 3.0.0 release

More Info

4.0.0 - 2022-03-17

Added

  • FLUID-6698 Allow model relay from constant values
  • FLUID-6605 Allow contrast themes to be applied using custom properties only
  • FLUID-6580 "Integration constant lenses"
  • FLUID-6413 Model-driven resource localisation
  • FLUID-6390 "lensed components"
  • FLUID-6260 Enactors that modify the styling and presentation of content provide a class and/or CSS custom properties to hook into for custom styling
  • FLUID-6148 "Potentia II" holds aligned, transactional units of intent
  • FLUID-6147 Transactional units for component creation
  • FLUID-5790 cancellable promises
  • FLUID-4925 "wave of explosions"
  • FLUID-4483 Latched events acting as promises
  • A basic quality implementation of FLUID-4982 "asynchronous ginger world", sufficient to allow progress on new renderer for FLUID-4260, FLUID-6580
  • Browser-side implementation of fluid.dataSource.URL

Changed

  • FLUID-6695 Rationalise exception stripping code
  • FLUID-6420 Split start schema aux schema into separate schema grades. Consolidate component grades.
  • FLUID-6145 Make all component options immutable

For more details see: API Changes from 3.0 to 4.0

Deprecated

  • Core Framework
    • fluid.contains
    • fluid.stableSort
    • fluid.add
    • fluid.accumulate
  • Preferences Framework / UI Options
    • In Infusion 5.0, it's planned for the Preferences Framework and UI Options to undergo a re-write and redesign. The API, including Auxiliary Schemas, are likely to change or be removed. This is also the case for any components that are used by/within the Preferences Framework.
  • Components
    • UI widgets and other components included with Infusion will be evaluated for future releases. A number of these widgets are no longer required as native HTML options and other tools have filled in the gaps that they were meant to address.

For more details see: Deprecated in 4.0

Removed

  • FLUID-6710 Remove versioned globals and file guards from the framework

Fixed

  • FLUID-6705 Increasing line spacing pushes the sliding panel tab down
  • FLUID-6696 Table of Contents toggle initially has no effect if TOC container has display: none style
  • FLUID-6687 Adjusters/inputs are blue in iOS
  • FLUID-6482 fluid.getCallerInfo throws exception sometimes on Safari (atDepth exceeds stack.length)
  • FLUID-6438 Improved closure of ContextAwareness grades
  • FLUID-6418 Failure when referring to dynamic component location during afterDestroy
  • FLUID-6414 Allow dynamic grades to be contributed via expander
  • FLUID-6146 Mutual reference between createOnEvent components
  • FLUID-5912 {arguments} in members and models
  • FLUID-5614 "double deep trees"
  • FLUID-5519 Problematic timing of model init transaction

More Info

3.0.1 - 2022-05-11

Fixed

  • FLUID-6727 Improved release notes to point to warnings about DataSource API changes

3.0.0 - 2021-08-25

Added

  • Framework
    • Added model transformations for converting between:
      • Boolean values and Strings
        • fluid.transforms.booleanToString
        • fluid.transforms.stringToBoolean
      • Date/Time and Strings
        • fluid.transforms.dateToString
        • fluid.transforms.dateTimeToString
        • fluid.transforms.stringToDate
      • JSON Objects and Strings
        • fluid.transforms.objectToJSONString
        • fluid.transforms.JSONstringToObject
    • Updated model transformations:
      • Number to String transformation supports specifying decimal precision.
      • Round transformation can round to an integer or decimal value
      • fluid.stringTemplate updated to support nested objects for interpolating values
    • Added fluid.dataSource grade
    • Added fluid.remoteModelComponent for keeping remote and local models in sync.
  • Preference framework
    • Responsive design for small screens/mobile devices.
    • Added additional contrast themes based on Windows contrast themes.
    • Added the OpenDyslexic 3 font as an option to the Text Style panel
    • Added localized message bundles for Farsi, French, Portuguese, and Spanish.
    • New preferences:
      • Letter spacing
      • Syllabification preference
      • Text-to-speech preference using the Orator component
      • Word spacing preference
  • Orator
    • A self voicing widget with play/pause, text highlighting, selection reading.
      • NOTE: Currently there is a bug with Google supplied voice synthesizers that prevents text highlighting and long text being synthesized in Chrome. See FLUID-6635
  • Test Infrastructure
    • jqUnit.test supports async tests with promises

Changed

  • Builds
    • Only minified builds and distributions e.g.:
      • infusion-all.js
      • infusion-all-no-jquery.js
      • infusion-framework.js
      • infusion-framework-no-jquery.js
      • infusion-uio.js
      • infusion-uio-no-jquery.js
  • Framework
    • fluid.focus and fluid.blur return an ES6 promise
  • Preference framework
    • Switched from Stylus to SASS for CSS pre-processing
    • Updated look of on/off toggles and checkboxes
    • For preference maps, the keyword default has been replaced by value
    • Updated the markup template for the preferences editor
    • Updated message bundle keys

For more details see: API Changes from 2.0 to 3.0

Deprecated

  • Fast XML Pull
    • Will be completely removed in a future release.
  • Pager
    • fluid.pagedTable and fluid.table grades and related functionality will be removed in an upcoming release.
  • Renderer
    • The Renderer will be completely overhauled in an upcoming release. Expect API breakage, and that all of the existing Renderer implementation is deprecated. This includes potential API breakages for the Preferences Framework and Infusion components that use the Renderer.

For more details see: Deprecated in 3.0

Removed

  • Source builds and distributions. Only minified versions are provided.
  • For the Reorderer component, the stylisticOffset selector has been removed
  • fluid.tabs component has been removed
  • The Textfield Slider removed the option to use a jQuery UI Slider in favour only supporting native HTML5 range inputs.

For more details see: API Changes from 2.0 to 3.0

Fixed

  • FLUID-4000: "Larger" inputs doesn't change input size
  • FLUID-6137: Cannot use distributeOptions to distribute an option when the source points at a value of 0
  • FLUID-6169: fluid.prefs.tempStore acts as a fluid.prefs.cookieStore by default
  • FLUID-6228: tab focusing the contrast adjuster does not scroll it into view.

More Info

2.0.0 - 2016-12-08

Added

  • Constraint-based priorities, supported by listeners, modelListeners, modelRelay, distributeOptions, contextAwareness, and components. This allows the specific order of those items to be configured. (See: Priorities)
  • Context Awareness - and things it relies on:
    • Global Instantiator
      • Every Infusion component, regardless of how it is instantiated, ends up in a single-rooted tree of components
      • This enables use of modern IoC features such as model relay and declarative event binding
      • Enables use of the root distributeOptions context "/"
      • Useful debugging tip: Watch fluid.globalInstantiator in your JS debugging tools to see the structure of your application and its tree.
  • fluid.notImplemented function for implementing abstract grades
  • Lazy loading for UI Options and instructions for how to use the Preferences Framework with a zero initial load time.
    • This should assist in improving performance when using the Preferences Framework, particularly for resource intensive sites and applications
  • Much faster invokers and boiled listeners (c. 60x faster)
  • Support for using Infusion with npm for both Node.js and web-based projects.
    • Provides a variety of prebuilt versions of Infusion in the module's dist directory.
  • Source Maps are generated for the concatenated JavaScript files
  • View oriented IoC debugging tools
    • Including FluidViewDebugging.js on the page of any Infusion application gives you access to the IoC View Inspector . Click on the small cogwheel icon at the bottom right of the page to open a panel which shows the details of the view components and their grades, that are attached to DOM nodes in the browser pane. This interface works similarly to the DOM Inspector familiar from modern web browsers, but is an experimental implementation with an engineer-level UI.

Changed

  • Consolidated component grades
  • Order of merging component grades has reversed - grades at the right-hand end of the gradeNames list now take priority over those at the left
  • Progressive Enhancement becomes Context Awareness
  • fluid.event.makeEventFirer has been moved to fluid.makeEventFirer
  • Model sharing happens without additional configuring of the changeApplier
  • that.model should not be used directly
  • Preferences Framework
    • Panels
      • Message bundle keys
      • Selectors
      • Styles
    • Enactors
      • Renamed "fluid.prefs.enactors" to "fluid.prefs.enactor"
    • Schema
      • %prefix replaced by %templatePrefix and %messagePrefix
    • Preference Editor
      • Preference model values now stored under a preferences model path

For more details see: API Changes from 1.5 to 2.0

Deprecated

  • fluid.progress
  • jQuery UI Slider version of fluid.textfieldSlider
  • The no JavaScript version of fluid.uploader

For more details see: Deprecated in 2.0

Removed

  • Demands blocks
  • Component lifecycle events preInit, postInit and finalInit
  • Component events onAttach and onClear
  • Several Preferences Framework enactor styles
  • Several Preferences Framework preference editor styles and selectors

For more details see: API Changes from 1.5 to 2.0

Fixed

More Info

1.5.0 - 2014-06-17

Added

  • Preferences Framework

Changed

  • Redesigned UI Options component
  • Substantial improvements to the Infusion IoC system
  • Updated versions of jQuery and jQuery UI
  • Significant refactoring to the Pager component

For more details see: API Changes from 1.4 to 1.5

Deprecated

  • The Fluid Skinning System (FSS)
  • Demands blocks
  • fluid.applyGradeLinkage grade
  • All components that are not autoInit
  • Returning non-component material from a creator functions
  • Manually attaching components to trees
  • Manual lifecycle points: preInit, postInit, finalInit
  • Manual component initialization
  • Legacy IoC expressions
  • returnedPath
  • returnedOptions
  • Change Applier guards
  • Change Applier event type MERGE
  • fluid.makeSuperApplier
  • fluid.model.copyModel
  • Merge policy: preserve
  • fluid.tryCatch
  • fluid.event.getEventFier
  • unicast events
  • Progress events
    • onProgressBegin
    • afterProgressHidden
  • fluid.model.setBeanValue
  • fluid.model.getBeanValue
  • fluid.lightbox
  • fluid.keyForValue
  • Path utilities in DataBinding.js
  • fl-ProgEnhance-basic class name
  • Renderer API

For more details see: Deprecated in 1.5

Removed

  • Framework
    • fluid.alias removed
    • fluid.merge reverse merge policy removed
  • Uploader
    • Removed Flash version
    • Removed support for Firefox 3.x's implementation of HTML5 upload

For more details see: API Changes from 1.4 to 1.5

Fixed

  • FLUID-4337: Error when resolving listener specified by global name to boiled event
  • FLUID-4693: On current Chrome (18) layout reorderer demos will throw an exception when moving an element back to its original position
  • FLUID-5368: Using fluid.transforms.arrayToSetMembership with any other transformations in modelRelay option causes the source array value disappear
  • FLUID-5432: VoiceOver doesn't announce the remove buttons in Uploader

More Info

1.4.1 - 2016-12-02

Fixed

  • FLUID-6064: Remove aria-role application from Uploader and Pager

More Info

1.4.0 - 2010-10-14

Added

  • New for the Fluid Skinning system:
  • Improved user experience for Uploader, including error handling

Changed

  • Completely redesigned UI Options component, involving:
    • Three different versions of the interface
    • Greatly improved styling
    • Extensively refactored code
  • The Fluid Skinning system is easier to override: !importants have been removed
  • Substantial improvements to the Infusion IoC system
  • Updated versions of jQuery and jQuery UI
  • All view components require DataBinding.js as a dependency

Fixed

  • FLUID-4078: The HTML5 Upload strategy incorrectly interprets the fileSizeLimit option in megabytes instead of kilobytes.
  • FLUID-4159: The Uploader cannot be instantiated as a child component in an IoC tree

More Info

1.3.1 - 2011-02-25

Added

  • Better progress information for the HTML5 version of Uploader

Changed

  • Pager uses the Renderer by default
  • Simplified markup for the Uploader

Fixed

  • FLUID-3946: Tab order inconsistent in layout reorderer
  • FLUID-4017: Total file progress information is inaccurate when uploading files with the HTML 5 version of Uploader
  • FLUID-4018: The "Stop" button is unavailable in the HTML 5 version of Uploader
  • FLUID-4108: ProgressiveEnhancement.js causes errors in IE7 when included in any page

More Info

1.3.0 - 2010-12-23

Added

  • Sneak Peek at the new Inversion of Control (IoC) system
  • Uploader support for HTML 5
    • Flash-free for modern browsers!
    • Substantially improved keyboard and screen reader accessibility
    • Comprehensive automatic progressive enhancement based on browser capabilities
  • Tons of accessibility improvements
    • Better feedback for the Progress component
    • Enhanced screen reader support for the Inline Edit component
    • Location and movement announcements for the Reorderer component
    • No wrap option for the Reorderer component
  • ChangeApplier now supports transactions
  • Renderer improvements

Fixed

  • FLUID-1822: Image Reorderer does not provide context for screen reader user (Accessibility)
  • FLUID-2652: JAWS announces that an inline edit area is a button
  • FLUID-3494: FastXmlPull parser is not threadsafe, through use of global Regexp objects
  • FLUID-3507: ChangeApplier doesn't handle wildcards in change request paths
  • FLUID-3899: primeCacheFromResources fails with exception if IoC system is included

More Info

1.2.1 - 2010-09-10

Fixed

  • FLUID-3679: JavaScript error "'script.parentNode' is null or not an object" on IE when running multiple instances of fluid (swfobject.js)
  • FLUID-3692: The README and license information for fastXmlPull.js incorrectly includes reference to LGPL

More Info

1.2.0 - 2010-04-15

Added

  • Mobile FSS themes: stable, full-featured support for iPhone and Android
  • Rich Text InlineEdit now supports the new CKEditor 3 rich text editor
  • Improved internationalization for Undo
  • Better ARIA support for Inline Edit and Undo
  • Ubiquitous UTF-8 support

Changed

  • Support for jQuery 1.4.2 and jQuery UI 1.8
    • Paths/names of dependencies have been updated

For more details see: Upgrading to Infusion 1.2

Fixed

  • Bug fixes for Renderer, data binding, Inline Edit, Reorderer, and the keyboard-a11y plugin
  • FLUID-2054: Cannot Tab to the 'Browse More" button with Flash 10, using FF2
  • FLUID-2252: Inline Edit Rich Text - edited text lacks keyboard focus
  • FLUID-3077: Text inside inline editor is being lost after canceling the text edit.
  • FLUID-3592: Cannot grab layout reorderable objects with mouse cursor

More Info

1.2.0-beta.1 - 2010-04-07

A pre-release of 1.2.0.

More Info

1.1.3 - 2010-09-01

Fixed

  • FLUID-3679: JavaScript error "'script.parentNode' is null or not an object" on IE when running multiple instances of fluid (swfobject.js)

More Info

1.1.2 - 2009-10-16

Added

  • New Demo Portal with improved component demos
  • Sneak Peak for Mobile FSS iPhone theme
  • Uploader support for Firefox 3.5 and improved experience for Internet Explorer

Fixed

  • FLUID-2022: The "Add more" button is not present in Flash 10 version of uploader
  • FLUID-2582: Uploader is dependent on ProgressiveEnhancement.js, which is not included in InfusionAll.js
  • FLUID-2980: Renderer decorators can only be attached to one node at a time
  • FLUID-3121: Reorderers confuse handling of 'container' as selector/element
  • FLUID-3131: The default afterMove event listener code for the Image Reorderer doesn't get invoked, causing no results to be sent back to the server.

More Info

1.1.1 - 2009-08-13

Fixed

  • FLUID-3077: Text inside inline editor is being lost after canceling the text edit.
  • FLUID-1320: Typing "Click here to edit" is equivalent to erasing all the text
  • FLUID-2967: Item will drop to the right of an element when it should have dropped at the left.
  • FLUID-3054: tiny_mce Inline Edit text editor fails when used with advanced theme
  • FLUID-2277: Can't select text: using IE

More Info

1.1.0 - 2009-06-02

Added

  • Provides the ability to create custom builds:
  • Adds jQuery UI Themes for working with FSS themes
  • Adds new and powerful decorators for the Renderer:
    • The "fluid" decorator instantiates any Fluid Infusion component bound to the markup
    • New support for removing arbitrary attributes and CSS classes
  • Updates the Uploader:
    • User can manually switch to the standard non-Flash http file uploader
    • Uploader Browse button now respects DOM z-index in Flash 10
  • Pager: Improved handing of column sorting
  • Updates the User Interface Options:
    • Better cross browser support
    • Better keyboard and screen reader accessibility

Changed

  • Changes some class names in the FSS and components
  • Changes some Framework API

For more details see: Upgrading from Infusion 1.0 to Infusion 1.1.x

Fixed

  • FLUID-2371: Resizing the text does not change the size of the text's container, in the dialog
  • FLUID-2374: Pressing the "enter" key after changing the value in a textfield, has no effect
  • FLUID-2383: jQuery UI Slider is not screen reader accessible
  • FLUID-2412: Reset doesn't work after saving the initial cookie
  • FLUID-2722: Autobinding not working for <textarea> elements

More Info

1.0.0 - 2009-04-09

Added

  • New data binding framework: the ChangeApplier
  • New UI Options features:
    • table of contents
    • contrast
    • line spacing
  • 3 new Fluid Skinning System themes with graphics: Coal, Slate, and Inverted High Contrast
  • New preview component: Progress (previously part of the Uploader component)
  • Better error handling for the Uploader
  • Up to date ARIA support for the Reorderer
  • Ability to create custom packages for each component

Changed

  • Substantial UI Options improvements and refinements, including:
    • A better user interface: improved layout, easier to use, increased contrast
    • Configurable strategy for persisting user preferences, using cookies by default
    • Stable API
  • Consistency across the board: standardized APIs, class names, and source code layout

For more details see: Upgrading to Infusion 1.0

Removed

  • Remove No Preference from UI Options

Fixed

  • FLUID-1825: Undo should not require model to be inside 'value'
  • FLUID-2121: Focus is not placed on the first focusable item in the user interface options dialog
  • FLUID-2260: Activating the Reset or Cancel button will remove all elements of the UI Options dialog: using Opera
  • FLUID-2379: [Uploader] The total file progress bar no longer has ARIA roles and states applied to it.
  • FLUID-2392: In IE6 & IE7: Auto-binding not working properly - gets "behind"
  • FLUID-2351: [Uploader] rev 6621 of Uploader.js and Progress.js crash FF on the server

More Info

0.8.1 - 2009-07-22

Fixed

More Info

0.8.0 - 2009-02-20

Added

  • Fluid Skinning System
  • Preview of User Interface Options

Fixed

  • FLUID-822: Upload: After pausing queue wont resume but seems to "get stuck"
  • FLUID-954: Page won't scroll during DnD, using Opera
  • FLUID-1145: Pressing the 'esc' key, while in an inline edit field, will erase the content; using IE
  • FLUID-1824: [Keyboard accessibility] doesn't appear to be a way to make an elm un-activatable
  • FLUID-2017: Cannot click on links in a rich text inline edit field because it changes into edit mode.
  • FLUID-2053: Uploader not working with flash 9: using IE
  • FLUID-2203: Clicking on the text area, causes the rich-text inline edit to close

More Info

0.7.0 - 2009-01-15

Added

  • Graceful degradation support in the Uploader

Fixed

  • FLUID-873: Tabbing through uploader breaks keyboard navigation, using IE6
  • FLUID-1329: inline edit - undo/redo do not receive focus
  • FLUID-2046: Renderer version of pager throws an error; using IE

More Info

0.6.0 - 2008-12-19

Added

  • Two new flavours of Inline Edit: Dropdown and Rich Text
  • Sneak Peek of our new component: User Interface Options
  • Preview of the Fluid Skinning System

Changed

  • Completely Refactored Uploader
  • Updated Pager API

Deprecated

  • Inline Edit's finishedEditing function to be removed in v0.9

Fixed

  • FLUID-492: JAWS difficulty exiting Virtual PC Cursor to navigate in Lightbox
  • FLUID-844: Inline Edit assumes there will always be a container element wrapping the edit field. For simple scenarios, this is an unnecessary burden for the developer.
  • FLUID-1317: Can't tab to the undo/redo icons in Opera
  • FLUID-1616: The function selectable clashes with jQuery UI ui.selectable.js
  • FLUID-1624: List number of moved item disappears while reorderering a sortable list

More Info

0.6.0-beta.1 - 2008-10-31

A pre-release of 0.6.0.

More Info

0.5.0 - 2008-09-30

Added

  • New Inline Edit feature: Undo
  • Added fluid.version property

Changed

  • Improved/expanded Reorderer events
  • Updated Reorderer API to match styles of other components
  • Renamed Lightbox to Image Reorderer
  • Renamed Layout Customizer to Layout Reorderer

For more details see: Upgrading to version 0.5

Deprecated

  • The Lightbox name is deprecated and replaced by Image Reorderer
  • The Layout Customizer name is deprecated and replaced by Layout Reorderer

Fixed

  • FLUID-572: Reorderer: calls to document.writeln() while moving an item can cause the page to break.
  • FLUID-1137: Runtime Error when dragging a nested reorderable
  • FLUID-1322: The undo/redo icons are not in the correct tab order
  • FLUID-1323: Focus does not remain on undo/redo button after pressing enter

More Info

0.5.0-beta.1 - 2008-08-28

A pre-release of 0.5.0.

More Info

0.4.0 - 2008-07-30

Added

  • Preview versions of two new components:
    • Inline Edit
    • Pager
  • Keyboard-a11y plugin: Ability to add/remove elements from the list of selectables
  • Improved keyboard support for Uploader

Fixed

  • FLUID-602: Progress tests partially fail on IE6 and IE7
  • FLUID-904: Uploader inside a table element - removing a file from the list causes the uploader to disappear.
  • FLUID-956: Can only tab to the "Add Files" button in the pop-up version of uploader on first tab cycle, using IE

More Info

0.4.0-beta.1 - 2008-06-26

A pre-release of 0.4.0.

More Info

0.3.0 - 2008-06-02

Added

  • Layout Customizer
  • Preview version of Uploader
  • Keyboard accessibility plugin for jQuery
  • Uploader design pattern
  • Reorder supports multiples simultaneous key mappings

Changed

  • Simplified API for creating a Reorderer for grid, list and portlets/layouts

Fixed

  • FLUID-134: Cannot nest Reorderers
  • FLUID-401: In IE 6+, you have to press the arrow key twice when attempting to move an item with the keyboard.
  • FLUID-511: Key stroke captured when content of a selectable item has focus.

More Info

0.3.0-beta.1 - 2008-04-25

A pre-release of 0.3.0.

More Info

0.1.0 - 2007-11-30

Added

  • The Reorderer, a JavaScript library for sorting DOM elements
  • The Lightbox, a component for organizing image thumbnails
  • Drag and drop UI design patterns
  • Checklists and protocols for doing UX walkthroughs
  • Sample code, tutorials, and lots of documentation

More Info