# Changelog of version 3


## 3.0.0-dev - unreleased


### Features

-   pat-inject:  Don't rebase for some additional known prefixes to avoid that the links break when contained in an injected page snippet.
-   pat-gallery: Allow adding images directly to the gallery.
-   pat-validation: Allow for HTML5 style `required` attributes without a value.
-   pat-validation: Added the possibility to check for fields equality
-   pat-validation: Dont use :input jquery extension for better performance
-   pat-validation: Update validate.js to 0.13.1
-   Prevent "Modernizr.inputtypes is undefined" error
-   pat-validation: Do not trigger on empty dates. Fixes: #711
-   Remove PhantomJS - we're using ChromeHeadless already.
-   Simplify package.json and remove unused.
-   Upgrade moment and moment-timezone.
-   core/utils rebaseURL: Change a relative base url to an absolute URL using window.location.
-   pat-push: New pattern for replacing html content on push events.
-   pat-scroll-box: New pattern for scrolling detection. Replaces the previous "scroll detection" module.
-   pat-inject: Rename undocumented `selector` property to `defaultSelector`.
-   pat-inject: Fix typo in docs for the `source` property.
-   pat-scroll: Implement new special `selector:top` attribute value to scroll the scroll container just to the top of the page. Ref: #721.
-   scroll detection: Rework and optimize, set scroll classes on any scrolling event, fix problem with IE and set initial state. Fixes #701
-   pat-scroll: Implement new special `selector:top` attribute value to scroll the scroll container just to the top of the page. Ref: #721.
-   pat-scroll: To define the scrollable target search also for `overflow-x` and `overflow-y` declarations.
-   Rework push message support for the STOMP message protocoll instead of backends instead of WAMP.
    We are using the RabbitMQ message broker for push support instead of crossbar.io.
-   Navigation:
    -   Do not set the `.navigation-in-path` class for elenents already marked with `.current`.
    -   Allow configuration of "in path" and "current" classes via `in-path-class` and `current-class` configuration options.
    -   Allow empty `in-path-class` which then does not set the in-path class.
    -   Allow configuration of `item-wrapper` element on which `in-path-class` or `current-class` are set. Defaults to `li`.
    -   Set current class also on parent item-wrapper if not set.
    -   Fix case where current class was not set when not present on load.
    -   Set current class also when DOM elements are inserted or removed.
-   Add `utils.getCSSValue` for retrieving CSS property values for DOM nodes.
-   Add configurable scrolling behavior to pat-inject.
-   Add `webpack-visualizer-plugin` for analyzation of generated bundles.
-   Fix `pat-auto-scale` not correctly rescaling after fullscreen changes. Fixes #673
-   Use node-sass as suggested by https://sass-lang.com/install - the ruby version is deprecated.
-   Use `yarn` instead of `npm`.
-   Use babel for all files, allowing latest JavaScript features everywhere.
-   Add `pat-fullscreen` pattern to allow any element to be displayed in fullscreen-mode.
    A second pattern `pat-fullscreen-close` which is triggered on `close-fullscreen` CSS class allows for closing the fullscreen with custom buttons.
-   Runs now on jQuery 3.
-   Integrated pat-display-time from https://github.com/ploneintranet/pat-display-time
-   Fixed an issue with pat-scroll when placed on an item without a href
-   Fixed an issue with pat-autofocus that would set focus on hidden items
-   Fixed an issue with pat-inject scroll that would scroll too much (#694)
-   Modal: Add example on how to open a modal on a button via a proxy anchor element.


### Fixes

-   Fix `pat-auto-suggest` to not show a placeholder if none is defined. Fixes #675
-   Fix `pat-auto-scale` not correctly rescaling after fullscreen changes. Fixes #673
-   Fix heisenbug with pat-scroll on testruns.
-   Fix minimum input length default so that you can display select results already on click.
-   Fix `pat-validation` to not skip `pat-autosuggest` inputs even though they're
    hidden. Fixes #683


## 3.0.0a5 - unreleased


### Features

-   Added support for a push subsystem using reethinkdb and horizon.
    That allows us to trigger an injection by sending a ``push_marker`` to all connected browsers.
    (This is still in an evaluation state)
-   pat-forward: understand the trigger auto option


### Fixes

-   pat-date-picker, pat-datetime-picker: Support the `first-day` parameter (#647)
-   pat-notification: fix how the close button is rendered (#639)
-   pat-modal: remove an handler after the modal is closed (allows for injection inside modals, see #550)
-   Enable babel transpiler
-   Interim condition to trigger: autoload-visible to abort injection in case the tartget element is no longer present.
-   pat-inject: autoload-visible now uses the intersection observer
-   Allow clearing a selection if the field is not required


## 3.0.0a1 - unreleased


### Breaking Changes

+++Big breaking upgrade changing the build system. Read the [version 2 to 3 upgrade guide](./UPGRADE-2-TO-3.md) for details.+++

-   Switched fully to npm for package retrieval, deprecating bower (pilz)
-   Introduce webpack to create the bundle and deprecate require.js (pilz)
    Read [version 2 to 3 upgrade guide](./UPGRADE-2-TO-3.md) for details.
-   Tests are upgraded to Jasmine 2.8.0 syntax
-   Testrunner is now karma 1.7
-   Coverage reports are generated
-   Removed deprecated packages

    -   jquery.tinymce
        Very big and unmaintained. We have never advertised it so we don't include it anymore to clean up.
    -   requirejs
        No longer required
    -   requirejs-text
        No longer required
    -   jquery.textchange
        needed for tinymce, not npm compatible, assumed unnecessary as we removed jquery.tinymce
    -   Showdown Table
        As of showdown v 1.2.0, table support was moved into core as an opt-in feature making this extension obsolete. See https://github.com/showdownjs/table-extension
    -   Showdown Github
        As of showdown v 1.2.0, github support was moved into core as an opt-in feature making this extension obsolete. See https://github.com/showdownjs/github-extension
    -   pat-validate
        Has been superceeded by pat-validation and is no longer maintained.
    -   pat-checkedflag will go away. Its functionality is duplicated by pat-select and pat-checklist

-   pat-inject: Fix autoload visible link inside collapsed elements
-   pat-inject: Fix double click on a pat-inject link
-   pat-checklist: understand injection
-   pat-auto-scale: support more sizing options.
-   pat-validation: fix date validation
-   pat-switch: after a switch occurs, trigger a resize event (some elements may have been appeared and we might need a redraw)
-   fixed path to spectrum-colorpicker
-   fixed #512 by also setting the data-option-value attribute
-   pat-tooltip: before hiding the tooltip wait for the injection to be triggered. (ale-rt)
-   Downgrading jquery to 1.11.0 to preserve a feature check for IE11 which otherwise breaks masonry on SVG files. See https://github.com/quaive/ploneintranet.prototype/issues/547
-   Include own modernizr config file and reduce amount of checks included to mainly css ones
-   New carousel pattern based on slick carousel (http://kenwheeler.github.io/slick/)
    The old carousel based on anythingslider is still available as pat-carousel-legacy
-   upgrade moment.js to 2.19.3 to address security vulnerability
-   pat-calendar: Fixed check for categories
-   Improve pat-checklist to allow select/deselect on subset of elements
-   Extend pat-focus to add `has-value` class, `data-placeholder` and `data-value` attributes.
-   Add idle trigger to injection.
-   Fixed injection so that urls with data: in them don't get prefixed with a / anymore.
-   pat-checklist now uses Sets to collect its siblings, that should make it much faster with large lists of icons.
-   pat-carousel gets infinite option
-   pat-subform that also have the pat-autosubmit can be submitted pressing enter
-   fixed the way how the tab with is calculated in pat-tabs.
-   improve pat-autosuggest to display max one selects as select instead of input
-   New comparator for depends parser.

