Conversation
to under "extensions"
making use of "@heximal/expressions" library.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
# Conflicts: # src/Umbraco.Web.UI.Client/src/packages/ufm/extensions/manifests.ts # src/Umbraco.Web.UI.Client/src/packages/ufm/extensions/types.ts
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
There was a problem hiding this comment.
Pull Request Overview
Adds JavaScript-like ${…} expression support to Umbraco Flavored Markdown (UFM) by integrating the Heximal Expressions library, providing a marked extension for inline parsing, and a LitElement to evaluate and render expressions with filters.
- Configure TypeScript path mapping and
package.jsonto include@heximal/expressions. - Register a new
ufmjsmarked extension and expose it via manifest. - Introduce
umb-ufm-js-expressioncomponent and extendUfmContextto supply filters.
Reviewed Changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Umbraco.Web.UI.Client/tsconfig.json | Add path mapping for heximal-expressions |
| src/Umbraco.Web.UI.Client/src/packages/ufm/extensions/ufmjs-marked-extension.api.ts | Implement inline marked extension for ${} tokens |
| src/Umbraco.Web.UI.Client/src/packages/ufm/extensions/types.ts | Export new marked extension API type |
| src/Umbraco.Web.UI.Client/src/packages/ufm/extensions/manifests.ts | Register the UFM JS marked extension manifest |
| src/Umbraco.Web.UI.Client/src/packages/ufm/contexts/ufm.context.ts | Add getFilters() method to retrieve all filters |
| src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-js-expression.element.ts | Define umb-ufm-js-expression element for parsing & rendering expressions |
| src/Umbraco.Web.UI.Client/src/packages/ufm/components/index.ts | Export the new umb-ufm-js-expression component |
| src/Umbraco.Web.UI.Client/src/external/heximal-expressions/index.ts | Re-export the heximal expressions package |
| src/Umbraco.Web.UI.Client/package.json | Add @heximal/expressions dependency and map external path |
Files not reviewed (1)
- src/Umbraco.Web.UI.Client/package-lock.json: Language not supported
Comments suppressed due to low confidence (3)
src/Umbraco.Web.UI.Client/src/packages/ufm/extensions/ufmjs-marked-extension.api.ts:5
- [nitpick] Consider using
UmbUfmJsMarkedExtensionApi(capitalizing theJSacronym) for consistency with other code elements (umb-ufm-js-expression, etc.) and improved readability.
export class UmbUfmjsMarkedExtensionApi implements UmbMarkedExtensionApi {
src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-js-expression.element.ts:36
- New expression parsing and evaluation logic isn’t covered by unit tests. Add tests for valid expressions, edge cases (syntax errors), caching behavior, and filter application to ensure correctness.
#labelTemplate(expression: string, model?: any): string {
src/Umbraco.Web.UI.Client/src/packages/ufm/contexts/ufm.context.ts:68
- [nitpick] Consider adding a JSDoc comment explaining that this method returns a map of filter aliases to their functions, and noting any expected structure of the returned object.
public getFilters() {
src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-js-expression.element.ts
Show resolved
Hide resolved
src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-js-expression.element.ts
Show resolved
Hide resolved
for consistency and improved readability.
making it simpler to add unit-tests.
added JSDocs for public methods
iOvergaard
left a comment
There was a problem hiding this comment.
Tested with different logical expressions ✅
Tested echoing deep values ✅
Tested registering my own markedExtension that preprocesses the HTML first (probably more related to the previous PR), and UFM still works ✅
Caching works (but hard to stress test it) ✅
|
This pull request has been mentioned on Umbraco community forum. There might be relevant details there: https://forum.umbraco.com/t/trying-to-be-clever-with-ufm-fallbacks/4533/2 |
Updated [Umbraco.Cms](https://github.com/umbraco/Umbraco-CMS) from 16.1.1 to 16.2.0. <details> <summary>Release notes</summary> _Sourced from [Umbraco.Cms's releases](https://github.com/umbraco/Umbraco-CMS/releases)._ ## 16.2.0 <!-- Release notes generated using configuration in .github/release.yml at release-16.2.0 --> ## What's Changed ### 🙌 Notable Changes * UFM: JavaScript-like Expressions by @leekelleher in umbraco/Umbraco-CMS#19685 * Make logging more friendly for docker by @Migaroez in umbraco/Umbraco-CMS#19818 * Adds abstraction around boot time checks for database availability by @AndyButland in umbraco/Umbraco-CMS#19848 * Optimize document and media seeding by looking up from database in batches by @AndyButland in umbraco/Umbraco-CMS#19890 * Added configuration option UseStrictDomainMatching, which allows control over whether content is routed without a matching domain by @AndyButland in umbraco/Umbraco-CMS#19815 ### 📦 Dependencies * Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#19819 * Tiptap RTE: Upgraded to latest v2.x by @leekelleher in umbraco/Umbraco-CMS#19869 * build(deps): bump @umbraco-ui/uui to 1.15.0 by @iOvergaard in umbraco/Umbraco-CMS#19981 ### 🚀 New Features * V16: Siblings endpoints by @nikolajlauridsen in umbraco/Umbraco-CMS#19657 * UFM: Adds `markedExtension` extension-type by @leekelleher in umbraco/Umbraco-CMS#19684 * UFM: Make Block Settings data available by @leekelleher in umbraco/Umbraco-CMS#19686 * Adds background worker to check timeout state by @iOvergaard in umbraco/Umbraco-CMS#19702 * V16: Build Backoffice externals with Vite by @iOvergaard in umbraco/Umbraco-CMS#19716 * Tiptap RTE: Custom CSS Variables for min/max height/width by @leekelleher in umbraco/Umbraco-CMS#19841 * Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer by @AndyButland in umbraco/Umbraco-CMS#19849 * Tiptap RTE: Refactor Table menus to use `menu` extension-type by @leekelleher in umbraco/Umbraco-CMS#19789 ### 🐛 Bug Fixes * Amend accessibility modifiers on file upload property editor components to support extension by @PeterKvayt in umbraco/Umbraco-CMS#19643 * Docs: Tree example by @madsrasmussen in umbraco/Umbraco-CMS#19624 * Hide Document/Media Collection Workspace View until the item is created by @madsrasmussen in umbraco/Umbraco-CMS#19644 * Title returns "Server Error" in non-debug mode by @PeterKvayt in umbraco/Umbraco-CMS#19665 * Fix issue with preview in delivery API for MNTP property editor by @AndyButland in umbraco/Umbraco-CMS#19668 * Adds support for custom granular permissions when aggregating across user groups by @AndyButland in umbraco/Umbraco-CMS#19660 * Fixes issues with creation of documents from blueprints that have populated file upload properties by @AndyButland in umbraco/Umbraco-CMS#19655 * Clear member cache by older user name when member user name is updated (16) by @AndyButland in umbraco/Umbraco-CMS#19690 * V16 QA Removed unused API acceptance tests by @nhudinh0309 in umbraco/Umbraco-CMS#19679 * V16 QA Added acceptance tests for granular document permission by @nhudinh0309 in umbraco/Umbraco-CMS#19546 * V16 QA Reverted npx command by @nhudinh0309 in umbraco/Umbraco-CMS#19699 * Fixes Block Catalogue Modal Filter by @leekelleher in umbraco/Umbraco-CMS#19700 * Fix issue forceHideContentEditorInOverlay not available in RTE by @NguyenThuyLan in umbraco/Umbraco-CMS#19698 * V16: Property editor file upload does not validate file types by @iOvergaard in umbraco/Umbraco-CMS#19714 * Fix failing integration tests in SQL Server by @lauraneto in umbraco/Umbraco-CMS#19725 * Populate name for content and media on URL picker if title is left empty by @AndyButland in umbraco/Umbraco-CMS#19677 * Forward merge #19720 to V16 by @kjac in umbraco/Umbraco-CMS#19735 * Include /.well-known/jwks in the paths covered by OpenIddict by @kjac in umbraco/Umbraco-CMS#19749 * Add flag to exclude trashed media by @rammi987 in umbraco/Umbraco-CMS#19746 * V16 Added acceptance tests for the regression issue #16985 by @nhudinh0309 in umbraco/Umbraco-CMS#19712 * V16 Added acceptance tests for the regression issue #19529 by @nhudinh0309 in umbraco/Umbraco-CMS#19713 * V16 QA Added acceptance tests for creating a document using blueprint by @nhudinh0309 in umbraco/Umbraco-CMS#19708 * Allow saving blueprints with validation errors by @lauraneto in umbraco/Umbraco-CMS#19748 * Make internal & private classes sealed where possible, to avoid code for virtual dispatch by @Henr1k80 in umbraco/Umbraco-CMS#19719 * add missing translation for DA by @rammi987 in umbraco/Umbraco-CMS#19740 * Add a backing field for EditorUIAlias and track changes when its set. by @KevinJump in umbraco/Umbraco-CMS#19733 * Template with Block List field with Inline Editing Mode causes Collection List View to shrink by @NguyenThuyLan in umbraco/Umbraco-CMS#19754 ... (truncated) ## 16.2.0-rc2 <!-- Release notes generated using configuration in .github/release.yml at release-16.2.0-rc2 --> ## What's Changed ### 📦 Dependencies * build(deps): bump @umbraco-ui/uui to 1.15.0 by @iOvergaard in umbraco/Umbraco-CMS#19981 ### 🐛 Bug Fixes * fix: pins the UmbracoExtension `@hey-api/*` versions to that of the Backoffice client by @iOvergaard in umbraco/Umbraco-CMS#20016 ### ✍️ Documentation * Chore: JSDocs for RTE CSS Props by @leekelleher in umbraco/Umbraco-CMS#20008 **Full Changelog**: umbraco/Umbraco-CMS@release-16.2.0-rc...release-16.2.0-rc2 ## 16.2.0-rc <!-- Release notes generated using configuration in .github/release.yml at release-16.2.0-rc --> ## What's Changed ### 🙌 Notable Changes * UFM: JavaScript-like Expressions by @leekelleher in umbraco/Umbraco-CMS#19685 * Make logging more friendly for docker by @Migaroez in umbraco/Umbraco-CMS#19818 * Adds abstraction around boot time checks for database availability by @AndyButland in umbraco/Umbraco-CMS#19848 * Optimize document and media seeding by looking up from database in batches by @AndyButland in umbraco/Umbraco-CMS#19890 * Added configuration option UseStrictDomainMatching, which allows control over whether content is routed without a matching domain by @AndyButland in umbraco/Umbraco-CMS#19815 ### 📦 Dependencies * Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#19819 * Tiptap RTE: Upgraded to latest v2.x by @leekelleher in umbraco/Umbraco-CMS#19869 * build(deps): bump @umbraco-ui/uui from 1.14.2 to 1.15.0-rc.0 by @iOvergaard in umbraco/Umbraco-CMS#19870 ### 🚀 New Features * V16: Siblings endpoints by @nikolajlauridsen in umbraco/Umbraco-CMS#19657 * UFM: Adds `markedExtension` extension-type by @leekelleher in umbraco/Umbraco-CMS#19684 * UFM: Make Block Settings data available by @leekelleher in umbraco/Umbraco-CMS#19686 * Adds background worker to check timeout state by @iOvergaard in umbraco/Umbraco-CMS#19702 * V16: Build Backoffice externals with Vite by @iOvergaard in umbraco/Umbraco-CMS#19716 * Tiptap RTE: Custom CSS Variables for min/max height/width by @leekelleher in umbraco/Umbraco-CMS#19841 * Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer by @AndyButland in umbraco/Umbraco-CMS#19849 * Tiptap RTE: Refactor Table menus to use `menu` extension-type by @leekelleher in umbraco/Umbraco-CMS#19789 ### 🐛 Bug Fixes * Amend accessibility modifiers on file upload property editor components to support extension by @PeterKvayt in umbraco/Umbraco-CMS#19643 * Docs: Tree example by @madsrasmussen in umbraco/Umbraco-CMS#19624 * Hide Document/Media Collection Workspace View until the item is created by @madsrasmussen in umbraco/Umbraco-CMS#19644 * Title returns "Server Error" in non-debug mode by @PeterKvayt in umbraco/Umbraco-CMS#19665 * Fix issue with preview in delivery API for MNTP property editor by @AndyButland in umbraco/Umbraco-CMS#19668 * Adds support for custom granular permissions when aggregating across user groups by @AndyButland in umbraco/Umbraco-CMS#19660 * Fixes issues with creation of documents from blueprints that have populated file upload properties by @AndyButland in umbraco/Umbraco-CMS#19655 * Clear member cache by older user name when member user name is updated (16) by @AndyButland in umbraco/Umbraco-CMS#19690 * V16 QA Removed unused API acceptance tests by @nhudinh0309 in umbraco/Umbraco-CMS#19679 * V16 QA Added acceptance tests for granular document permission by @nhudinh0309 in umbraco/Umbraco-CMS#19546 * V16 QA Reverted npx command by @nhudinh0309 in umbraco/Umbraco-CMS#19699 * Fixes Block Catalogue Modal Filter by @leekelleher in umbraco/Umbraco-CMS#19700 * Fix issue forceHideContentEditorInOverlay not available in RTE by @NguyenThuyLan in umbraco/Umbraco-CMS#19698 * V16: Property editor file upload does not validate file types by @iOvergaard in umbraco/Umbraco-CMS#19714 * Fix failing integration tests in SQL Server by @lauraneto in umbraco/Umbraco-CMS#19725 * Populate name for content and media on URL picker if title is left empty by @AndyButland in umbraco/Umbraco-CMS#19677 * Forward merge #19720 to V16 by @kjac in umbraco/Umbraco-CMS#19735 * Include /.well-known/jwks in the paths covered by OpenIddict by @kjac in umbraco/Umbraco-CMS#19749 * Add flag to exclude trashed media by @rammi987 in umbraco/Umbraco-CMS#19746 * V16 Added acceptance tests for the regression issue #16985 by @nhudinh0309 in umbraco/Umbraco-CMS#19712 * V16 Added acceptance tests for the regression issue #19529 by @nhudinh0309 in umbraco/Umbraco-CMS#19713 * V16 QA Added acceptance tests for creating a document using blueprint by @nhudinh0309 in umbraco/Umbraco-CMS#19708 * Allow saving blueprints with validation errors by @lauraneto in umbraco/Umbraco-CMS#19748 * Make internal & private classes sealed where possible, to avoid code for virtual dispatch by @Henr1k80 in umbraco/Umbraco-CMS#19719 * add missing translation for DA by @rammi987 in umbraco/Umbraco-CMS#19740 * Add a backing field for EditorUIAlias and track changes when its set. by @KevinJump in umbraco/Umbraco-CMS#19733 * Template with Block List field with Inline Editing Mode causes Collection List View to shrink by @NguyenThuyLan in umbraco/Umbraco-CMS#19754 ... (truncated) Commits viewable in [compare view](umbraco/Umbraco-CMS@release-16.1.1...release-16.2.0). </details> Updated [Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS) from 16.1.1 to 16.2.0. <details> <summary>Release notes</summary> _Sourced from [Umbraco.Cms.Persistence.Sqlite's releases](https://github.com/umbraco/Umbraco-CMS/releases)._ ## 16.2.0 <!-- Release notes generated using configuration in .github/release.yml at release-16.2.0 --> ## What's Changed ### 🙌 Notable Changes * UFM: JavaScript-like Expressions by @leekelleher in umbraco/Umbraco-CMS#19685 * Make logging more friendly for docker by @Migaroez in umbraco/Umbraco-CMS#19818 * Adds abstraction around boot time checks for database availability by @AndyButland in umbraco/Umbraco-CMS#19848 * Optimize document and media seeding by looking up from database in batches by @AndyButland in umbraco/Umbraco-CMS#19890 * Added configuration option UseStrictDomainMatching, which allows control over whether content is routed without a matching domain by @AndyButland in umbraco/Umbraco-CMS#19815 ### 📦 Dependencies * Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#19819 * Tiptap RTE: Upgraded to latest v2.x by @leekelleher in umbraco/Umbraco-CMS#19869 * build(deps): bump @umbraco-ui/uui to 1.15.0 by @iOvergaard in umbraco/Umbraco-CMS#19981 ### 🚀 New Features * V16: Siblings endpoints by @nikolajlauridsen in umbraco/Umbraco-CMS#19657 * UFM: Adds `markedExtension` extension-type by @leekelleher in umbraco/Umbraco-CMS#19684 * UFM: Make Block Settings data available by @leekelleher in umbraco/Umbraco-CMS#19686 * Adds background worker to check timeout state by @iOvergaard in umbraco/Umbraco-CMS#19702 * V16: Build Backoffice externals with Vite by @iOvergaard in umbraco/Umbraco-CMS#19716 * Tiptap RTE: Custom CSS Variables for min/max height/width by @leekelleher in umbraco/Umbraco-CMS#19841 * Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer by @AndyButland in umbraco/Umbraco-CMS#19849 * Tiptap RTE: Refactor Table menus to use `menu` extension-type by @leekelleher in umbraco/Umbraco-CMS#19789 ### 🐛 Bug Fixes * Amend accessibility modifiers on file upload property editor components to support extension by @PeterKvayt in umbraco/Umbraco-CMS#19643 * Docs: Tree example by @madsrasmussen in umbraco/Umbraco-CMS#19624 * Hide Document/Media Collection Workspace View until the item is created by @madsrasmussen in umbraco/Umbraco-CMS#19644 * Title returns "Server Error" in non-debug mode by @PeterKvayt in umbraco/Umbraco-CMS#19665 * Fix issue with preview in delivery API for MNTP property editor by @AndyButland in umbraco/Umbraco-CMS#19668 * Adds support for custom granular permissions when aggregating across user groups by @AndyButland in umbraco/Umbraco-CMS#19660 * Fixes issues with creation of documents from blueprints that have populated file upload properties by @AndyButland in umbraco/Umbraco-CMS#19655 * Clear member cache by older user name when member user name is updated (16) by @AndyButland in umbraco/Umbraco-CMS#19690 * V16 QA Removed unused API acceptance tests by @nhudinh0309 in umbraco/Umbraco-CMS#19679 * V16 QA Added acceptance tests for granular document permission by @nhudinh0309 in umbraco/Umbraco-CMS#19546 * V16 QA Reverted npx command by @nhudinh0309 in umbraco/Umbraco-CMS#19699 * Fixes Block Catalogue Modal Filter by @leekelleher in umbraco/Umbraco-CMS#19700 * Fix issue forceHideContentEditorInOverlay not available in RTE by @NguyenThuyLan in umbraco/Umbraco-CMS#19698 * V16: Property editor file upload does not validate file types by @iOvergaard in umbraco/Umbraco-CMS#19714 * Fix failing integration tests in SQL Server by @lauraneto in umbraco/Umbraco-CMS#19725 * Populate name for content and media on URL picker if title is left empty by @AndyButland in umbraco/Umbraco-CMS#19677 * Forward merge #19720 to V16 by @kjac in umbraco/Umbraco-CMS#19735 * Include /.well-known/jwks in the paths covered by OpenIddict by @kjac in umbraco/Umbraco-CMS#19749 * Add flag to exclude trashed media by @rammi987 in umbraco/Umbraco-CMS#19746 * V16 Added acceptance tests for the regression issue #16985 by @nhudinh0309 in umbraco/Umbraco-CMS#19712 * V16 Added acceptance tests for the regression issue #19529 by @nhudinh0309 in umbraco/Umbraco-CMS#19713 * V16 QA Added acceptance tests for creating a document using blueprint by @nhudinh0309 in umbraco/Umbraco-CMS#19708 * Allow saving blueprints with validation errors by @lauraneto in umbraco/Umbraco-CMS#19748 * Make internal & private classes sealed where possible, to avoid code for virtual dispatch by @Henr1k80 in umbraco/Umbraco-CMS#19719 * add missing translation for DA by @rammi987 in umbraco/Umbraco-CMS#19740 * Add a backing field for EditorUIAlias and track changes when its set. by @KevinJump in umbraco/Umbraco-CMS#19733 * Template with Block List field with Inline Editing Mode causes Collection List View to shrink by @NguyenThuyLan in umbraco/Umbraco-CMS#19754 ... (truncated) ## 16.2.0-rc2 <!-- Release notes generated using configuration in .github/release.yml at release-16.2.0-rc2 --> ## What's Changed ### 📦 Dependencies * build(deps): bump @umbraco-ui/uui to 1.15.0 by @iOvergaard in umbraco/Umbraco-CMS#19981 ### 🐛 Bug Fixes * fix: pins the UmbracoExtension `@hey-api/*` versions to that of the Backoffice client by @iOvergaard in umbraco/Umbraco-CMS#20016 ### ✍️ Documentation * Chore: JSDocs for RTE CSS Props by @leekelleher in umbraco/Umbraco-CMS#20008 **Full Changelog**: umbraco/Umbraco-CMS@release-16.2.0-rc...release-16.2.0-rc2 ## 16.2.0-rc <!-- Release notes generated using configuration in .github/release.yml at release-16.2.0-rc --> ## What's Changed ### 🙌 Notable Changes * UFM: JavaScript-like Expressions by @leekelleher in umbraco/Umbraco-CMS#19685 * Make logging more friendly for docker by @Migaroez in umbraco/Umbraco-CMS#19818 * Adds abstraction around boot time checks for database availability by @AndyButland in umbraco/Umbraco-CMS#19848 * Optimize document and media seeding by looking up from database in batches by @AndyButland in umbraco/Umbraco-CMS#19890 * Added configuration option UseStrictDomainMatching, which allows control over whether content is routed without a matching domain by @AndyButland in umbraco/Umbraco-CMS#19815 ### 📦 Dependencies * Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#19819 * Tiptap RTE: Upgraded to latest v2.x by @leekelleher in umbraco/Umbraco-CMS#19869 * build(deps): bump @umbraco-ui/uui from 1.14.2 to 1.15.0-rc.0 by @iOvergaard in umbraco/Umbraco-CMS#19870 ### 🚀 New Features * V16: Siblings endpoints by @nikolajlauridsen in umbraco/Umbraco-CMS#19657 * UFM: Adds `markedExtension` extension-type by @leekelleher in umbraco/Umbraco-CMS#19684 * UFM: Make Block Settings data available by @leekelleher in umbraco/Umbraco-CMS#19686 * Adds background worker to check timeout state by @iOvergaard in umbraco/Umbraco-CMS#19702 * V16: Build Backoffice externals with Vite by @iOvergaard in umbraco/Umbraco-CMS#19716 * Tiptap RTE: Custom CSS Variables for min/max height/width by @leekelleher in umbraco/Umbraco-CMS#19841 * Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer by @AndyButland in umbraco/Umbraco-CMS#19849 * Tiptap RTE: Refactor Table menus to use `menu` extension-type by @leekelleher in umbraco/Umbraco-CMS#19789 ### 🐛 Bug Fixes * Amend accessibility modifiers on file upload property editor components to support extension by @PeterKvayt in umbraco/Umbraco-CMS#19643 * Docs: Tree example by @madsrasmussen in umbraco/Umbraco-CMS#19624 * Hide Document/Media Collection Workspace View until the item is created by @madsrasmussen in umbraco/Umbraco-CMS#19644 * Title returns "Server Error" in non-debug mode by @PeterKvayt in umbraco/Umbraco-CMS#19665 * Fix issue with preview in delivery API for MNTP property editor by @AndyButland in umbraco/Umbraco-CMS#19668 * Adds support for custom granular permissions when aggregating across user groups by @AndyButland in umbraco/Umbraco-CMS#19660 * Fixes issues with creation of documents from blueprints that have populated file upload properties by @AndyButland in umbraco/Umbraco-CMS#19655 * Clear member cache by older user name when member user name is updated (16) by @AndyButland in umbraco/Umbraco-CMS#19690 * V16 QA Removed unused API acceptance tests by @nhudinh0309 in umbraco/Umbraco-CMS#19679 * V16 QA Added acceptance tests for granular document permission by @nhudinh0309 in umbraco/Umbraco-CMS#19546 * V16 QA Reverted npx command by @nhudinh0309 in umbraco/Umbraco-CMS#19699 * Fixes Block Catalogue Modal Filter by @leekelleher in umbraco/Umbraco-CMS#19700 * Fix issue forceHideContentEditorInOverlay not available in RTE by @NguyenThuyLan in umbraco/Umbraco-CMS#19698 * V16: Property editor file upload does not validate file types by @iOvergaard in umbraco/Umbraco-CMS#19714 * Fix failing integration tests in SQL Server by @lauraneto in umbraco/Umbraco-CMS#19725 * Populate name for content and media on URL picker if title is left empty by @AndyButland in umbraco/Umbraco-CMS#19677 * Forward merge #19720 to V16 by @kjac in umbraco/Umbraco-CMS#19735 * Include /.well-known/jwks in the paths covered by OpenIddict by @kjac in umbraco/Umbraco-CMS#19749 * Add flag to exclude trashed media by @rammi987 in umbraco/Umbraco-CMS#19746 * V16 Added acceptance tests for the regression issue #16985 by @nhudinh0309 in umbraco/Umbraco-CMS#19712 * V16 Added acceptance tests for the regression issue #19529 by @nhudinh0309 in umbraco/Umbraco-CMS#19713 * V16 QA Added acceptance tests for creating a document using blueprint by @nhudinh0309 in umbraco/Umbraco-CMS#19708 * Allow saving blueprints with validation errors by @lauraneto in umbraco/Umbraco-CMS#19748 * Make internal & private classes sealed where possible, to avoid code for virtual dispatch by @Henr1k80 in umbraco/Umbraco-CMS#19719 * add missing translation for DA by @rammi987 in umbraco/Umbraco-CMS#19740 * Add a backing field for EditorUIAlias and track changes when its set. by @KevinJump in umbraco/Umbraco-CMS#19733 * Template with Block List field with Inline Editing Mode causes Collection List View to shrink by @NguyenThuyLan in umbraco/Umbraco-CMS#19754 ... (truncated) Commits viewable in [compare view](umbraco/Umbraco-CMS@release-16.1.1...release-16.2.0). </details> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Description
Adds support for JavaScript-like expressions to UFM.
Using a syntax similar to JavaScript's Template literals, expressions are delimited by a dollar sign and curly braces:
${expression}.The implementation makes use of the Heximal Expressions library (source). The syntax should feel familiar to AngularJS expressions, with piped filters/transformers.
How to test?
Go to a document that can make use of UFM-syntax/label-templates, e.g. a block list item or a property's description.
Try adding syntax for various scenarios, for example...
${ propertyAlias }${ propertyAlias.length }${ propertyAlias.length > 0 ? "Yes" : "No" }${ propertyAlias | uppercase }