Metadata-Version: 2.4
Name: plone.patternslib
Version: 9.10.4.1a0
Summary: An add-on to make Patternslib available to Plone.
Home-page: https://github.com/plone/plone.patternslib
Author: Syslab.com
Author-email: devel@syslab.com
License: GPL version 2
Keywords: Python Plone Patternslib
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: Addon
Classifier: Framework :: Plone :: 6.0
Classifier: Framework :: Plone :: 6.1
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: setuptools
Requires-Dist: Products.CMFPlone
Requires-Dist: Products.GenericSetup
Requires-Dist: zope.interface
Provides-Extra: test
Requires-Dist: plone.api; extra == "test"
Requires-Dist: plone.app.testing; extra == "test"
Requires-Dist: plone.base; extra == "test"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# plone.patternslib

An add-on to make [Patternslib](http://patternslib.com/) available to Plone 6.

## References

- Patternslib repository: https://github.com/patternslib/Patterns
- Patternslib GitHub releases: https://github.com/Patternslib/Patterns/releases
- Patternslib npm packages: https://www.npmjs.com/package/@patternslib/patternslib

- plone.patternslib repository: https://github.com/plone/plone.patternslib
- plone.patternslib Python packages: https://pypi.org/project/plone.patternslib/


## Features

Plone and Mockup depend on Patternslib and it's Patterns registry infrastructure
since quite some time already.
Since Plone 6 there are also some core Patternslib patterns exposed in Plone,
like pat-inject, pat-validation, pat-date-picker and some more.

This package completes that and makes all Patternslib patterns available in
Plone. This includes pat-auto-submit, pat-auto-suggest, pat-carousel,
pat-gallery, the fullcalendar integration pat-calendar, the wysiwyg integration
pat-tiptap, pat-upload and more.

Please note - pat-leaflet is yet not included as it is not part of the
Patternslib distribution.
There are plans to make it available in a separate package.


## Versioning scheme

The version number of plone.patternslib directly follows the Patternslib version
numbers and can include a plone.patternlsib specific PATCH level.

This is the scheme:

PA ... Patternslib version
PL ... plone.patternslib version

```python
f"${PA_MAJOR}.${PA_MINOR}.${PA_PATCH}.${PL_PATCH}${PA_PRE_RELEASE}.${PL_DEV_VERSION}"
```

Possible version numbers are:

- 9.9.16      # Patternslib 9.9.16
- 9.9.16.1    # Patternslib 9.9.16 with a plone.patternslib specific patch
- 9.10.0a0    # Patternslib 9.10.0-alpha.0
- 9.10.1b2    # Patternslib 9.10.1-beta.2
- 9.10.1b2.dev0  # Development version of the above.
- 9.10.1.1b2  # Patternslib 9.10.1-beta.2 with a plone.patternslib specific patch
- 9.10.1      # Patternslib 9.10.1


Our update script updates the setup.py version from the Patternslib version
number, which is a [semver compatible version specifier](https://semver.org/).
When releasing, the [zest.releaser scripts](https://github.com/zestsoftware/zest.releaser)
replaces that to a [Python compatible version scheme](https://peps.python.org/pep-0440/#version-scheme).


## Updating Patternslib

Use a branch for updating Patternslib.

To update Patternslib to the latest released version run:

```bash
make update-patterns
```

or to update Patternslib to an arbitrary version - e.g. a pre-release:

```bash
PATTERNSLIB_VERSION=9.10.1-beta.2 make update-patterns
```

This does the following:

- Downloads the latest or a specified Patternslib release from GitHub.
- Copies the Patternslib bundle files to the resource directory at `src/plone/patternslib/static`.
- Updates the version number in the `setup.py` file.
- Generates a news file.
- Commits the changes.

You can then make further changes or push your branch and create a pull request.
Or update the version number for a plone.patternslib specific patch level.


## Implementation

This package includes the Patternslib bundle in a resource directory.

The default profile installs the `++resource++patternslib/remote.min.js` bundle
as a Module Federation remote bundle.
The module federation main bundle in Plone is the `plone` bundle.
You can also use the `++resource++patternslib/bundle.min.js` directly, but then
you need to update the plone bundle to use `remote.min.js` instead of
`bundle.min.js`.
You can find more info on module federation here:

https://github.com/Patternslib/Patterns/blob/master/docs/developer/module-federation.md


## Limitations

Some of the Patternslib patterns have the same name like patterns in Mockup.
They are still included but not registered. The Patterns registry does not
register patterns of the same name twice.


## Examples

There are example browser views for four patterns in the browser
directory. If all went well, you can test the following patterns by
calling their browser view examples on your plone site:

-   `@@pat-depends`
-   `@@pat-inject`
-   `@@pat-masonry`
-   `@@pat-switch`


## Development

To update Patternslib to the latest released version run:

```bash
make update-patterns
```

or to update Patternslib to an arbitrary version - e.g. a pre-release:

```bash
PATTERNSLIB_VERSION=9.10.1-beta.1 make update-patterns
```

## Contribute

-   Issue Tracker: <https://github.com/plone/plone.patternslib/issues>
-   Source Code: <https://github.com/plone/plone.patternslib>


## Support

If you are having issues, please put them into the issue tracker.


## License

The project is licensed under the GPLv2.


# Changelog

<!-- towncrier release notes start -->

## 9.10.4.1a0 (2025-09-10)

### New features:

- Update Patternslib to 9.10.4-alpha.0.


## 9.10.4a0 (2025-09-10)

### New features:

- Update Patternslib to 9.10.4-alpha.0.


## 9.10.3.1 (2025-09-04)

### Bug fixes:

- Blacklist unwanted Patterns.

  Add a patternslib-preinit.js resource as bundle in the resource registry.
  Currently this script blacklists any unwanted Patternslib Patterns. Most
  prominent this is "pat-legend" which would transform any "legend" tags to
  "p" tags and break form-tabbing with pat-autotoc. (patternslib-preinit)


## 9.10.3 (2025-07-04)

### New features:

- Update Patternslib to 9.10.3.


## 9.10.2 (2025-07-01)

### New features:

- Update Patternslib to 9.10.2.


## 9.10.1b3 (2025-04-07)

### New features:

- Update Patternslib to 9.10.1-beta.3.

### Bug fixes:

- Do not create a file extension when creating towncrier news fragments to comply with the towncrier configuration.
  [thet]


## 9.9.16 (2025-02-17)

No significant changes.


## 9.9.16.0a1 (2025-02-03)

### Breaking changes:

- Upgrade for Plone 6 and Python >= 3.9 only.
  [ale, thet]

### New features:

- Update Patternslib to 9.9.16.

### Internal:

- Update configuration files.
  [plone devs]


## 1.3.0 (2023-02-02)

-   Update jQuery to 1.12.4 and Patternslib to 2.1.5. Fixes:
    <https://github.com/plone/plone.patternslib/issues/73> (thet)
-   `pat-leaflet` AJAX geoJSON feature (petschki)

## 1.2.1 (2020-11-23)

-   Bugfix: Register upgrade step for the correct profile (frapell)

## 1.2.0 (2020-08-07)

-   Register `pat-datetime-picker` in the resource registry. (thet)
-   Restructure upgrades to follow bobtemplates.plone recommendations.
    (thet)

## 1.1.1 (2020-07-10)

-   Do not autoinclude ZCML (this was not needed here). (jensens)
-   Fix dependency chain, depend on `Products.CMFPlone` in `setup.py`.
    (jensens)
-   Upgrade to pat-leaflet 1.4.0. (thet)

## 1.1.0 (2019-04-11)

-   Upgrade pat-leaflet to 1.3.0. (thet)
-   Remove 2nd CSS resource from Leaflet Markercluster as Plone doesn\'t
    compile it properly. (thet)
-   Register `pat-date-picker`. (thet)
-   Update dependencies, deped on Patterns 2.1.x. (thet)
-   Update to latest Patterns. (thet)
-   Remove registry initialization in bundles. (cekk)
-   Declare support for python 3. (vincero)

## 1.0 (2017-02-28)

-   Git-un-exclude `dist` directory within the `static` folder. (thet)
-   Fix font-awesome web font path. (thet)
-   Fix Leaflet icon integration. (thet)
-   Register resources with their uncompressed files, wherever they are
    available. This helps debugging and the resource registry itself can
    handle compression on it\'s own. (thet)
-   Upgrade Patternslib to latest version. (thet)
-   Better `pat-gallery` integration. (thet)
-   Add `pat-leaflet` resources. (thet)
-   Use bower to manage resources instead of Makefile script. (thet)
-   Remove browserlayer and add upgrade step for removal from component
    registry. (thet)
-   Cleanup. (thet)

## 0.2 (2016-04-27)

-   Polyfill removeDuplicateObjects so that we can use version 2.0.13 of
    Patternslib with Plone/Mockup which still uses Patternslib 2.0.11.

## 0.1 (2016-04-27)

-   Initial release.
