* chore: revamps openid package to organise files in a 'src' folder
* feat: adds all externals as npm workspaces with a vite build
* feat: copies the correct uui assets
* feat: copies the backoffice static assets
* feat: creates the correct module for openid
* feat: copies the correct monaco-editor assets
* feat: moves monaco-editor into its package
* feat: moves dependencies to relevant external modules
* feat: gets rid of rollup
* build: uses tiny-glob instead of glob (one less dependency)
* feat: copies all css assets to dist-cms/css first, minifies them, then copies everything over to StaticAssets
* build: removes old static assets from vite static build
* fix: forwards the file extensions to the inner dropzone
* fix: ensures non-mimetype extensions start with a dot (.)
* chore: adds more details on how to set file extensions
* feat: adds a bit of styling to code snippets in UFM
* fix: return if no file in stream
* fix: prevents potential race condition if src changes
* chore: minor code improvement
* Adds variation by the header name Accept-Language to the develivery API output cache policy
* Removed obsolete constructor (not necessary as the class is internal).
* Introduce contants for header names.
* Fix issue forceHideContentEditorInOverlay not available in RTE
* remove href link when enable hide content editor setting:
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
* feat: converts tokenResponse into an object state
* feat: adds worker that checks token lifetime
* feat: initialises token worker to check up on tokens
* revert
* chore: defines typings for shared workers
* chore: uses correct assets url for core package
* feat: sets correct values for token check expiration
* feat: adds labels to confirm modal
* feat: separates logic for session monitoring to own controller
* feat: adds a timeout modal to correctly inform the user
* feat: opens the timeout modal (and closes it again) if a timeout occurs
* feat: log out when user clicks log out button
* feat: adds localization
* feat: sets sensible defaults for the web worker to check
* feat: adds more languages
* chore: adds more comments
* chore: removes nodejs types
* Update src/Umbraco.Web.UI.Client/src/packages/core/auth/workers/token-check.worker.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: removes nodejs types
* chore: resolves cyclic imports
* chore: removes circular dependencies from the 'modal' package
* chore: redefine SharedWorkerGlobalScope because of Github Actions CI
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Mock data updates
The `icon` is not part the block-type data.
* Adds `description` to the mock doctype model
* Refactors block catalogue modal
to make the filter/search work with a block-type's name & description.
This removes the need to use the `<umb-block-type-card>` component,
all element-type data is requested upfront.
* Reverted dev/debug change
* Abstracted out the element-type items observation to its own method
* Updated CSS rule
thanks to a Copilot suggestion.
* Adds `markedExtension` extension-type
* Relocates the Component and Filter extension-type interface code files
to under "extensions"
* Moves `UfmPlugin` type to its own referencable file
* Adds UFM support for JS expressions
making use of "@heximal/expressions" library.
* Modified regex pattern to match nested braces
* try/catch for invalid JS expressions
* Capitalizing the JS in `UmbUfmJsMarkedExtensionApi` class name
for consistency and improved readability.
* Abstracted out `ufmjs()` to its own Marked extension file
making it simpler to add unit-tests.
* Fixed up types in UFM context
added JSDocs for public methods
* Adds a generic Least Recently Used (LRU) cache implementation
* Pass notification state to cache refreshers.
Pass previous user name into member saved notification state and use when refreshing cache to clear the member by keys based on this.
* Fixed issue raised in code review.
* Fixed casing for state key.
* Added removed parameter to unit tests.
* Fix breaking change.
* Adds `markedExtension` extension-type
* Relocates the Component and Filter extension-type interface code files
to under "extensions"
* Moves `UfmPlugin` type to its own referencable file
* PoC implementation
* Move to controller base
* Implement solution that seems worse, but works better
* Don't require parent key in repository method
* Fix typos
* Add siblings for data type, media type and media
* Add endpoint for template
* Add DocumentType and DocumentBlueprint controllers
* Fix naming
* Fix case if siblings are under root
* Take item ordering into account
not all entities are ordered by sort order
* Add default implementation
* Fix parentkey
* Add tests
* Format optimizations for split view
* Add test covered requirement to description
* Cover positive case and make test case output more readable
* reduce allocations
* Clarify test
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Fixes issue where content created from blueprint would not persist file upload property values.
* Ensure a copy of a file upload is created when scaffolding content from a blueprint, like we do when copying content.
* Clarified comment.
* Removed unneeded usings.
* Fixed spelling.
* Handle create of blueprint from content to create a new uploaded file.
Handle delete of blueprint to delete uploaded files.
* Added abstraction for aggregation of granular permissions to support custom permissions.
* Refactor to move responsibility for aggregating granular permissions to the respective mappers.
* Added XML header comments for permission mappers.
* Tidied up/removed warnings in UserPresentationFactory interface and implementation.
* Optimized retrieval of documents in DocumentPermissionMapper.
* Fixed method header comment.
* Use entity service rather than content service to retrieve key and path.
* Passes the preview flag to the cache retrieval when resolving the delivery API object for the MNTP property editor.
* Added unit test verifying fix and adjusted mocks for tests to acoomodate.
* Provided preview flag for Razor rendering.
* Refactor section conditions into subfolders
Split section condition logic into 'section-alias' and 'section-user-permission' subfolders, each with their own constants, manifests, and types. Updated imports and manifest aggregation to use the new structure for improved modularity and maintainability.
* use const
* fix build
* Refactor section alias condition to use constant
Replaces hardcoded 'Umb.Condition.SectionAlias' strings with the UMB_SECTION_ALIAS_CONDITION_ALIAS constant across all manifests and related files. This improves maintainability and consistency by centralizing the section alias condition reference.
* clean up workspace conditions
* only show collection items workspace view when document is created
* do not pass null for collection
* only show media collection view when media is created
* add basic collection example
* add card view example
* update example readme
* Add workspace view example with collection
* wip tree example
* clean up
* Update README.md
* Update README.md
* fix: never reject a token response
If a token response is rejected, then the pipeline will also fail because it does not understand that error. Let the API interceptors do their job instead and simply return the old, now-invalid token which will prompt the API interceptors to store the request states and retry them afterwards.
* chore: removes unused timeoutsignal
* chore: captures the stale token before potentially clearing it
* Add null checks for editPath and name in render method
The render method now checks for the presence of both editPath and _name before rendering the button, preventing potential errors when these values are missing.
* Refactor dropdown open state handling
Replaces the public 'open' property with a private field and getter/setter to better control dropdown state. Moves popover open/close logic into the setter, removes the 'updated' lifecycle method, and conditionally renders dropdown content based on the open state.
* add opened and closed events
* dispatch opened and closed events
* Render dropdown content only when open
Introduces an _isOpen state to control rendering of the dropdown content in UmbEntityActionsBundleElement. Dropdown content is now only rendered when the dropdown is open, improving performance and preventing unnecessary DOM updates.
* Update dropdown.element.ts
* create a cache elements
* Optimize entity actions observation with IntersectionObserver
Adds an IntersectionObserver to only observe entity actions when the element is in the viewport, improving performance. Refactors element creation to use constructors, updates event handling, and ensures cleanup in disconnectedCallback.
* only observe once
* Update entity-actions-bundle.element.ts
* Update dropdown.element.ts
* Update entity-actions-bundle.element.ts
* split dropdown component
* pass compact prop
* fix label
* Update entity-actions-dropdown.element.ts
* Update entity-actions-dropdown.element.ts
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* build(deps-dev): bump storybook from v8 to v9
* chore: run storybook v9 migrations
* chore: updates import paths for storybook-webcomponents-vite (migration)
* chore: migrates eslint for storybook config
* fix: updates old link to composed storybook so we reference the latest production uui
* chore: formats eslint config file
* chore: changes import path to build mdx stories
* chore: updates language list to reflect v16
* Refactor descendant enumeration in DeliveryApiContentIndexHelper
Improved loop condition to allow for processing of more than 10.000 descendants for indexing.
* Add failing test for original issue.
* Renamed variable for clarity.
---------
Co-authored-by: Brynjar Þorsteinsson <brynjar@vettvangur.is>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Observe read-only guard rules in variant selector
Added observation of read-only guard rules in the workspace split view variant selector to ensure read-only cultures are updated when rules change.
* Improve save action to react to read-only rule changes
* remove unused
* Add entity-type and entity-unique condition support
Introduces new condition types for entity-type and entity-unique, including their constants, types, condition implementations, and manifests. Updates exports in core entity modules to include these new features, enabling more granular extension conditions based on entity type and uniqueness.
* register conditions
* add support for oneOf
* fix self imports
* Update manifests.ts
* remove unused
Reduce lookups needed in ConcurrentDictionaries and sort using List.Sort, make key removal O(1) by using hashsets and avoid duplicates, remove unneeded .ToList() and other minor tweaks
* Refactor section conditions into subfolders
Split section condition logic into 'section-alias' and 'section-user-permission' subfolders, each with their own constants, manifests, and types. Updated imports and manifest aggregation to use the new structure for improved modularity and maintainability.
* use const
* fix build
* Refactor section alias condition to use constant
Replaces hardcoded 'Umb.Condition.SectionAlias' strings with the UMB_SECTION_ALIAS_CONDITION_ALIAS constant across all manifests and related files. This improves maintainability and consistency by centralizing the section alias condition reference.
* Fix for https://github.com/umbraco/Umbraco-CMS/issues/18872
* Parsing added for current value
* Build fix.
* Cyclomatic complexity fix
* Resolved breaking change.
* Pass content key.
* Simplified collections.
* Added unit tests to verify behaviour.
* Allow file upload on block list.
* Added unit test verifying added property.
* Added unit test verifying removed property.
* Restored null return for null value fixing failing integration tests.
* Logic has been updated according edge cases
* Logic to copy files from block list items has been added.
* Logic to delete files from block list items on content deletion has been added
* Test fix.
* Refactoring.
* WIP: Resolved breaking changes, minor refactoring.
* Consistently return null over empty, resolving failure in integration test.
* Removed unnecessary code nesting.
* Handle distinct paths.
* Handles clean up of files added via file upload in rich text blocks on delete of the content.
* Update src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Fixed build of integration tests project.
* Handled delete of file uploads when deleting a block from an RTE using a file upload property.
* Refactored ensure of property type property populated on rich text values to a common helper extension method.
* Fixed integration tests build.
* Handle create of new file from file upload block in an RTE when the document is copied.
* Fixed failing integration tests.
* Refactored notification handlers relating to file uploads into separate classes.
* Handle nested rich text editor block with file upload when copying content.
* Handle nested rich text editor block with file upload when deleting content.
* Minor refactor.
* Integration test compatibility supressions.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Fix check for pending package migration to use the package not plan name.
* Cover all package name/identifier permutations and fix the API output for multiple plans
* Adjusted log message to not refer to unattended migrations as migrations may be being run attended.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* feat: adds new localization keys for forbidden routes
* feat: ignore all 400, 401, 403, and 404 errors as they are handled by the UI
* feat: adds new elements to show forbidden routes and entities
* feat: adds generic forbidden state to base entities
* feat: injects a forbidden route component to documents
* feat: adds 'forbidden' state to media workspace
* chore: aligns document and media workspaces
* test(mock): adds user configuration endpoint
* test(mock): adds calculate-start-nodes endpoint to users
* test(mock): adds missing endpoint for 'client-credentials'
* feat: clean up old observers on entity errors
* feat: aligns UI for better DX if there is no user
* fix: returns early if there is no user, instead of trying to append properties to the object
* feat: adds 'forbidden' state to members
* feat: adds support for forbidden document blueprints
* feat: allows parent to be undefined as well as null
* feat: forbidden route for members as a state
* chore: simplify language workspace
* test: adds forbidden mock data
* test: adds missing endpoints and a check for forbidden ids