* create a symlink between local Client .vscode snippets and global snippets for ease of use
* fix: no need to specify `Element` in the snippet as that is pulled from the filename
Because of our convention with `x.element.ts` you would have ended up with `UmbXElementElement`
* feat: adds new component `umb-input-dropzone`
* docs(storybook): more stories
* feat: construct the temporary files centrally along with an `AbortController` and use its signal
* feat: makes UmbInputDropzone form aware
* feat: introduces a change event
* chore: temporary changes before changing upload field
* feat: adds default slot
* docs: adds jsdocs
* feat: adds more properties
* feat: adds dashed styling
* feat: adds multiple support
* feat: allows to cancel file
* feat: separate **cancel** and **remove**
* fix stylibg
* move dropzone element
* move input-dropzone into dropzone package
* feat: introduces a 'dropzone' package
* import for backward compatibility
* remove ambigious export
* reexport everything from dropzone
* fix import
* cleanup test files
* use correct import paths
* test: make sure folder exists before writing to it
* adds export for modals
* adds entrypoint for dropzone package
* use the AbortController directly on the temporary file object
* uses correct icon name
* feat: adds ability to remove all files and cancel the request
* feat: adds styling for the uploader
and enables it to work in multiple mode with classes over id's
* do not let the content exceed its boundaries
* feat: formats progress with 2 decimals
* feat: formats with 0 decimals
* fix: returns cancel error
* fix: maps cancel errors back to the uploadable item
* fix: do not proceed with media items if the request was cancelled
* chore: mark exports from media <- dropzone as deprecated
* fix: use correct attribute and remove a todo with localizations
* fix: use correct attribute and remove a todo with localizations
* fix: allow to specify parent through attribute
* feat: align attribute `disableFolderUpload` between dropzone components
* add trash confirm modal
* make referenceRepo optional + adjust styling
* add referenceRepository to media trash action
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add null check
* change to use entity-item-ref element
* register media item ref
* add fallback element
* show 3 references
* wip data mapper concept
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* implement for document item ref
* Added $type to ReferenceResponseModels
* move logic to item data resolver
* render draft as a tag
* Update document-item-ref.element.ts
* generate server models
* add more helpers to data resolver
* export resolver
* add observables
* use observables in document item ref
* add data resolver to tree item
* add observable state
* use const
* align models
* get icon from document type object
* observe name and state
* update observed value when a new item is set
* update method name
* update method names
* pass model type
* pass context type
* use api prop instead of context
* use api prop instead of context
* fix types
* use addUniquePaths for modal registration
* add fallback
* use ref list
* use reference items for media
* make mapper name more generic
* make default ref item always readonly
* export types
* temp fake variants array
* add variants array to model
* Update media-references-workspace-info-app.element.ts
* add variants to model
* hardcode fake array
* register media ref item
* update mock data
* dot not allow conditions for data mappers
* add data mapper
* prefix info routes
* prefix all ref routes
* return undefined if there is not edit path
* add types for reference data source + repository
* split trash with relation into its own action
* render descendants with references
* fix length check
* set standalone attribute
* implement for media
* move trash
* wip delete with relation
* move to element
* fix name collision
* require data source identifier
* use management api mapper
* add management api mapper
* fix type errors
* Update index.ts
* align naming
* show references when deleting a document
* Update delete-with-relation-modal.element.ts
* use deleteWithRelation kind for media
* clean up
* localize trash
* fix type
* Update trash-with-relation.action.ts
* override confirm methods in trash and delete actions
* Update index.ts
* export constants
* Limit referenced-by document and media endpoints to references only.
* Update document-reference-table.element.ts
* add methods to get bulk references for documents
* wip bulk trash
* add todo comment
* implement path pattern for media item
* clean up
* more clean up
* sort imports
* member edit path pattern
* clean up
* remove unused variant id
* export extension types
* wip bulk trash with relation
* debounce incoming events
* look up items + notify
* add todo
* temp solution to make it non breaking
* add bulk delete
* better description
* implement methods for are referenced
* change to use bulk trash with relation
* implement delete with relation kind
* deprecation warnings
* move files
* move files
* export const
* use correct kind
* align naming
* upper case Trash
* correct uui-text impl
* add comment about the v2 name
* fix circular depdendencies
* rename const
* split to module
* import global components
* more explicit naming
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* build(deps-dev): update storybook from 8.4.7 to 8.5.6
* build(deps): update tiptap from 2.11.2 to 2.11.5
* build(deps-dev): update eslint stuff to latest
* build(deps): update element-internals-polyfill from 1.3.12 to 1.3.13
* build(deps): update marked from 15.0.6 to 15.0.7
* build(deps-dev): update vite from 5.4.14 to 6.1.0
* build(deps-dev): update globals to 15.15.0 (eslint dependency)
* build(deps): update icon libraries to latest
* build(deps-dev): update prettier from 3.4.2 to 3.5.1
* chore: generate consts
* build(deps-dev): update test-related libraries
* feat: copy over code from the tiny base64-js library because it is not exported as esm and has not been updated in 4 years
* build(deps-dev): remove dependency from base64-js
* build(deps-dev): upgrade rollup dependencies
* test: disable tests for tinyce
* build(deps-dev): update @babel/core to 7.26.9
* build(deps): update storybook to latest
* build(deps-dev): update types
* build(deps-dev): update typedoc from 0.27.6 to 0.27.7
* build(deps-dev): update @rollup/plugin-commonjs to latest
* build(deps): import tiny as default and re-export as module and default to make everyone happy (and avoid commonjs pitfalls)
* build: remove dependency on commonjs to build externals
* build(deps-dev): uninstall @rollup/plugin-commonjs as it is no longer needed
* test: reenable tinymce tests
* fix: sets a default label
this mistake was highlighted by the test runner
* test: reenable tinymce tests
* build: ignores autogenerated test file
* build: adds github error logging to icon generator
* build: log as error
* build: adds tests for generate:* scripts
* build: optimises icons with svgo to remove useless things like comments
this also ensures that icons are unchanged when we upgrade icon library packages as they would normally include things like versions as comments in the files
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add fallback element
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* implement for document item ref
* move logic to item data resolver
* render draft as a tag
* Update document-item-ref.element.ts
* add more helpers to data resolver
* export resolver
* add observables
* use observables in document item ref
* add data resolver to tree item
* add observable state
* use const
* align models
* get icon from document type object
* observe name and state
* update observed value when a new item is set
* update method name
* update method names
* pass model type
* pass context type
* use api prop instead of context
* use api prop instead of context
* fix types
* use addUniquePaths for modal registration
* fix type errors
* Update index.ts
* clean up
* use path pattern
* Added deliveries workspace view to the webhook details workspace.
* Front-end linting fixes.
* rename to unique
* update filter value
* make delivery feature folder
* move delivery workspace view for delivery feature folder
* correct details workspace view label and pathname to match name
* remove unused alias
* use singular form to align naming
* remove pagination as the default collection kind already includes this
* show icon
* remove double registration
* add observables for webhook data, add get methods + add jsdocs
* align UX with languages
* remove hardcoded fake name + make url the link
* remove redundant url in table
* render status code as tag
* use tags for enabled/disabled webhook state to align with users
* make the name more explicit
* move webhook root to a feature folder
* export consts
* fix webhook collection pagination
* move menu item manifests into root folder
* move webhook delivery filering responsibility from repo to workspace view
* reorganize
* move workspace
* fix import
* move entity actions
* export delivery consts
* dot not export const
* rename folder
* update name
* make event feature folder
* export consts
* move repository files
* more clean up
* split types
* add deprecation warning for a temp method
* bring back url to deliveries table
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* feat: shows notification when no suitable media type is found
* chore: rearrange imports
* feat: use a forward ref to find the dropzone
* chore: rearrange imports
* chore(mock): send back correct header
* feat: avoid using the context consumer to get a token, but instead mimick the OpenAPI generator
* chore(mock): allow more file types
* chore(mock): create more upload fields
* chore(mock): also look for mediaPicker fields
* chore(mock): improve media mock db
* chore(mock): add missing endpoints
* chore(mock): update media data
* chore(mock): fix aliases for media grid and table
* chore(mock): add urls to media
* chore(mock): adds missing endpoint for imaging
* fix: reverse order of properties to overwrite existing status
* feat: listen to progress updates on upload and update the `progress` property
* feat: adds tracking of upload progress to placeholders
* feat: bind the progress number up on the temporary file badge to indicate upload status
* feat: optimises progress calculation and makes the badge bigger to be able to show the progress in percent
* feat: allow text to be normal
* chore: use correct localization
* feat: shows error status for anything that isn't waiting or complete
* feat: makes `progress` optional
* feat: adds repository+store for temporary file configuration
* chore(mock): adds mock endpoint for temporary file configuration
* feat: set progress for createTemporaryFiles
* feat: allows a `whitespace` option to notifications
* feat: validates uploads before trying to query the server
* feat: adds `formatBytes` function to format numbers
* chore: export all consts
* feat: exports bytes function
* feat: set decimals to default to 2, which works nicely with the Intl numberformat
* feat: use `formatBytes` to format the error message
* chore(mock): set max file size for mock to 1.4 GB
* feat: adds localization
* Allowed retrieval of current user configuration when accessing user profile as a non-admin user.
* Update src/Umbraco.Web.UI.Client/src/packages/user/user/repository/config/current-user-config.repository.ts
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Escape HTML in strings provided as arguments for client-side localization.
* Used HTML sanitizer from dependency.
* Moved sanitization to controller.
* Fixed path to dependency.
* fix: move constants to their own respective files to avoid circular dependencies
* fix: import through import map
* fix: import `sanitizeHTML` from importmap
* chore: consts
* feat: add more ops/sec to `term` function
* fix: check specifically for `typeof 'undefined'` before determining if an arg is valid or not
in case where the sanitizer removes everything so the arg is just an empty string (`""`) we still want it to replace the token, i.e. with the empty string
* test: add tests to verify localization controller xss
* chore: try to improve ops/sec and readability of the `term` function
* test: add more tests for the sanitizer
* fix(dictionary workspace): rely on localization sanitization
* feat: adds new function to escape html entities
* fix: use `escapeHTML` to escape/encode only HTML entities
* test: update test to reflect correct escape
* test: add tests for sanitizeHTML and escapeHTML
* fix: update function to not escape all quotes as people may want to keep those
* chore: formatting
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* feat: adds userGroupIds to the current user model
* feat: generate new types
* feat: adds function to check for two array intersections
* feat: maps up userGroupIds
* feat: adds new condition to verify user's groups
* chore: add mocked data
* chore: add generated consts
* change structure of config to match other conditions
match, oneOf, allOf, noneOf
* rename condition from "group" to "groupId"
* feat: inherit from base `UserPresentationBase` to have a shared foundation across user models
* wip clipboard context + tests
* clean up property action module + register copy action
* split manifests
* add clipboard module
* import type
* export type
* mark all methods async
* scaffold copy + paste property actions
* scaffold workspace, collection, repo + data sources
* remove references to language
* register detail manifests
* call repo when creating
* load clipboard collection data
* remove debugger
* register clipboard item picker modal
* return value from picker
* accept native error
* clean up data source
* add tests for error states
* make clipboard local storage manager
* add clip entry entity type
* create unique in scaffold
* add clipboard entry item data
* align naming
* move around
* name alignment
* fix imports
* fix missing entityType
* clean up
* use picker input context
* remove unused context
* Update clipboard.context.ts
* map to item model
* poc paste property action
* register copy/paste as kinds
* lint fix
* add tests
* rename test
* add repository tests
* register delete clipboard action + enable action dropdown outside of context menu
* remove notifcation
* export entity type
* temp use repo instead of context
* delete unused copy property action
* make data source non breaking
* Update vite.config.ts
* add icons for clipboard copy, paste + entry
* remove unused
* return if there is no property value
* add kind interfaces
* pass entry type for copy and paste
* register clipboard for block list
* implement filter on entry type
* delete unused context
* remove references
* rename data to value and don't force an array
* make icons and single value
* allow to add create and update dates for clipboard entries
* use clipboard icon
* add create and update dates
* export constants
* don't set as an array
* reload picker content
* add copy to clipboard button to block list entry
* make picker element
* allow to pick multiple
* remove generic block list clipboard actions
* Revert "remove generic block list clipboard actions"
This reverts commit 6ea65a02ce6315a781b80d0ccf0da288df602a7d.
* add get methods
* wip construct block clipboard entry value
* add method to get exposes + add jsdocs
* add expose
* remove todo + add jsdocs
* move clipboard out of core package
* add package files
* load package again
* render entry icon
* render correct icon
* remove clipboard from core vite.config
* Update package-lock.json
* wip copy/paste resolvers
* allow multiple accepted entry types
* move logic to resolvers
* transforming clipboard block value to fit block list
* wip copy/paste resolvers
* clean up
* remove unused
* fix missing exports
* fix tests
* return clipboard entry unique from modal
* Update block-list-entries.context.ts
* clipboard feature: clipboard property value cloner (#17824)
* restructure of property package
* content data merge controller tests
* deprecate meta from propertyValueResolver
* temp work
* temp
* poc
* rename to cloner
* stached block value cloner work
* block list implementation
* correct property value implementation
* RTE Block Property Value Cloner
* Block Grid Value Cloner
* update with comments
* try out cloner
* wip translators
* Revert "delete unused context"
This reverts commit ec31ae55aaa9e958b64c44019398e9af7cd61df4.
* move translator + cloner logic to context
* clean up
* implement read from clipboard in block list property editor
* remove debugger
* values array
* handle paste
* Update types.ts
* move files
* Update clipboard-local-storage.manager.ts
* set both create and update date when creating a clipboard entry
* align naming
* handle paste
* clean up + wip block grid translators
* updates types
* add grid block copy translator
* only allow paste translator to handle a single value
* align copy and paste translators
* remove debugger
* move to folders
* add block const
* rename
* add tests
* Update index.ts
* use correct type
* add tests for UmbBlockListToBlockClipboardCopyTranslator
* fix tests
* add translator tests
* add tests
* organize
* organize
* clean up translator tests
* align naming
* remove unused button
* only render copy property action if property has a value
* use constants
* copy single grid block
* get block grid property value from clipboard entry
* add clear method to extension registry + add js docs
* Update index.ts
* add tests for copy value resolver
* add icon for clipboard
* use clipboard icon in modal
* add tests
* remove unused setting
* fix log
* only create array once
* filter for supported paste translators
* use write method instead of duplicating the code
* add condition config type
* use config type
* Update manifests.ts
* add support for multi picker
* move multiple look up logic to context
* add js docs
* add js docs
* remove unused
* remove unused
* remove unused
* implement paste translator filtering for block catalogue modal
* temp color translator
* adding a UmbPropertyValueDataPotentiallyWithEditorAlias
* simplify observer
* append user unique to local storage key
* remove temp color picker clipboard implementations
* more explicit extension type name
* more renaming
* type specifications
* fix test and missing type
* more types for test
* renaming of paste translators
* rename folder
* rename value resolvers
* correct variable name
* wip tests for clipboard context
* clean up tests correctly
* add more tests for clipboard context
* Update clipboard.context.test.ts
* use after each for clean up
* fix test that times out
* correct name
* optimize
* remove webkit
* newest first when picking
* use fingerprint local storage key to obfuscate user id
* rename method
* use const
* set content max length
* return object including the selection uniques
* show confirm dialog before pasting value
* only show confirm dialog if there is a value
* Feature: clipboard block insert (#17935)
* insert methods
* fix originData
* move logic to base class
* progress on Grid and RTE
* correct for Block Grid paste implementation
* update async across
* remove expose from block clipboard entry model
* remove expose from grid block clipboard entry
* remove todo
* wip move value expand responsibility
* wip split clipboard context
* experiment with an extendable property context
* create propertyContexts + proxy events
* rename methods
* move proxy to context + update grid copy logic
* split tests
* remove unused
* add property context extension type
* fix tests
* fix tests
* reorganize
* Update clipboard.property-context.ts
* use context
* register property context clipboard kind
* register for block grid
* remove redundant code
* rename to replace
* Revert "rename to replace"
This reverts commit eb0535edcfaa9f68d0fc4c431c93739a43c7b29c.
* rename prop
* rename label
* improve block clean-up abilities
* Update rte-base.element.ts
* make local get of clipboard context
* add asyncFilter option to the type
* add is compatible method to the interface
* support asyncFilter in picker
* add compatability check for block list
* more explicit name
* wip implementation of filter
* add compatability checks
* add temp types
* add clipboard filtering for grid and list
* lint corrections
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Link to content type and/or template from content/media/member info workspace view only if current user has access to sections.
* Fixed HTML
* add const for condition alias
* export const
* return permitted value in onChange callback
* use condition to check for access
* implement across content
* replace strings with consts
* replace strings with const
* remove attr with the ifDefined directive
* allow to pass in callback type
* Pass callback type
* Update index.ts
* add tests for UmbSectionUserPermissionCondition
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* chore: add validation to mocked endpoints
* feat: create new base context `UmbEntityNamedDetailWorkspaceContextBase` to use for named entities
* feat: extend from `UmbEntityNamedDetailWorkspaceContextBase` to be able to save some code
* feat: allow to pass on the generic parameters
* feat: add type-safety property
* chore: remove duplicate code by extending from correct interface
* chore: fix type casting
* feat: make class abstract and add explanatory comment
* feat: include the option whether a login provider has disabled local login
* feat: include information whether change password or two factor is allowed
* generate new OpenApi.json
* generate new ts client
* feat: request the server configuration and include in the UmbAppContext
* fix: for login screen, check that a provider did not disable the local login
* fix: use UmbAppContext to fetch the version check period
* chore: remove unused method
* revert current user configuration changes
* generate new ts client
* fix: add condition for "allow password change" on the change password button
* fix: create new IsDefaultKind condition to separate change password logic
* fix: update "allow change password" and "allow mfa" conditions to take the user configuration into consideration
* chore: export consts
* remove falsely named attribute that happens to not be useful anyway
* chore: revamp logic for early return to make it more readable
* convert `isInitialized` to a Promise as it is only being resolved once anyway, which then additionally saves a call to `this.observe` in the conditions
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* implement validation for media and prepare for member
* remove import
* port code from backoffice repo
* move repo into publishing module
* port get published methods
* cleanup
* wip render state
* align state UI
* post merge clean up
* move publish modal
* move schedule modal
* move unpublish modal
* move publish action and bulk action
* move unpublish action + bulk action
* lint fix
* Update document-workspace.context.ts
* wip move publishing methods to publishing context
* move publish with descendants
* fix more references
* Update document-publishing.workspace-context.ts
* export entity action
* add return type
* temp internal methods
* use repository response type
* expose methods for other contexts to use
* use public methods
* call publishing context methods
* fix import
* move manager into folder
* organise in folders
* add get method to get variants with changes
* preselect variants with pending changes
* observe data changes
* render pending changes client state
* observe unique
* Update document-publishing.server.data-source.ts
* use correct key
* clean up
* expose persisted data
* rename arg
* use persisted data instead of current
* add reload method
* reload data after publish
* remove headline
* handle all publish actions the same
* reset state as the first thing when creating + loading
* add method to get variants
* only load published if document has a published variant
* remove variants from observer
* add public method to get the changed variants
* align preselection with current logic
* add deprecation util
* add method deprecation warnings
* remove unused publish method
* move publishing workspace actions into publishing module
* use publishing context
* clean up
* add tests for published pending changes manager
* handle server the same way
* process pending changes when persisted data changes
* remove buggy updateDate
* remove unused
* lint fix
* add publish method back to avoid a breaking change
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* merge libs rollup configs to one rollup
* move css from libs to src/core
* run rollup on cms build
* move test-utils to /utils folder
* move css to src/core
* mark @umbraco-cms/backoffice as external when building for CMS
* rename all models to include @umbraco-cms/backoffice in their path to allow us to publish as a single module
* rename all imports to @umbraco-cms/backoffice/*
* rename events to umb-events to avoid rollup error of protected module name(?)
* test that libs can build
* move css to src/core
* move umb-lit-element and modal elements to src/core
* move some modal interfaces back to libs/modal
* move the icon store into src/core since it is very localized to the backoffice
* comment out build:libs for now since Github runs out of memory
* rename to match tsconfig alias
* add package.json to libs
* only make libs for lib folders
* turn off emit for typescript since we are handling types for libs separately
* build libs locally
* add script to move libs to final destination with some transform
* move libs after build
* move package.json to dist folder first (so we can publish from there)
* remove inline comments
* ensure the outputDir exists
* Remove re-export of extensions-registry library from models library
* move to individual files to avoid circular imports
* check if outputDir exists before trying to create it
* write transforms first in dist file and then copy the file to outputDir
* ensure all umbraco types are external
* copy information from main package.json file
Currently trying to see how the JSON schema would look like by writing it hand before attempting to then write a script to help write the same JSON to a file by looping over types