v1.2
v1.2.5
Improvements
DataTablenow accepts sort componentSelectcomponent now supportsNoFloatLabelpropertyComponentDescriptor<T>now hasOverride(...)method to allow overriding existing componentsIComponentDescriptorandComponentDescriptor<T>now allowsTypeto be set after its initializationComponentDescriptor<T>now allowsSchemato be set after its initialization
v1.2.4
Improvements
- Add implicit string conversion to
Id
Bugfixes
- Remove
targetparameter and move id parameters to their own parameter name in action model
v1.2.3
Improvements
- Generic support for the data drill of below componets are added
ParameterSelectandParameterSelectButton, default isInlineDataTypeFieldsetandMethodDataTable, default isRemoteData
- Data drill has become optional for
TypeFieldsetandMethodDataTable - Non-public initializers were causing rich transients not to be recognized, fixed
- Posting selected value as object in
SelectandSelectButtonis now available viaTargetProp ISelectcomponent interface is provided for bothSelectandSelectButtonto configure them at once through a parent configuration such asInputSelectnow providesFilter- Data convention for locatables under
Fieldsetis now added
v1.2.2
Improvements
InputTextandTextcomponents were not created for nullable value types, fixed
v1.2.1
Improvements
DataTablenow supports server side pagination viaServerPaginatorDataTablefrozen columns had wrong z-index, fixedLabelCodingStylenow supports value types in addition to string propertiesentityTyperenamed tolocatableTypeinTryGetLocatableTypeextension
v1.2.0
This release brings major improvements on the backend side. Although there seems a lot of breaking changes occured, we expect an easier transition compared for
v1.1.x -> v1.2.0thanv1.0.x -> v1.1.0. Most breaking changes are about moving around attributes and conventions and renaming, and adding minor changes to what already existed, exceptGuid Id -> Id Idtransition andcomputedSync -> computedmigration. Please read the breaking changes carefully and one by one to complete a smooth migration.
Features
IdCodingStylefeature is now added which configures primary key and foreign key references for entities- A property with
Baked.Business.Idtype is required for a property to be configured as primary key Idcan be mapped asGenerated,AutoIncrementorAssigned
- A property with
LocatableCodingStylefeature is now added which manages binding of locatable transientsILocator<>generic interface is now introduced for configuring locators forRichTransientandEntitytypes and their extensionsQueryCodingStylefeature is now added to find and mark query classes of locatablesUniqueCodingStylefeature is now added that adds unique attribute to properties with aSingleBy...orAnyBy...queryValueTypeCodingStylefeature is now added that allows defining value types which gets automatically mapped to string db columns and gets parsed in api endpointsClientCodingStylefeature is now added that identifies client interfaces, removes controller for their implementations and add singleton mock automatically
Improvements
- Computed data and composite data now support sync load
- If there is no async in the parts of composite data, it performs a sync load
- Computed data does a sync load unless specified otherwise
IDatanow has aIsAsyncproperty- It is set to
trueinRemoteData - It is set to
falseinInlineDataandContextData - In
CompositeData, it is set tofalseif all of the parts are not async - In
ComputedData, it is set tofalsevalue unless it is provided externally orOptionsis async
- It is set to
Datas.Composablesnow provideUseLoginRedirectextensionuseDataMountercomposable is now added for a more convenient data fetching- Default assignments in
ui/*.cscomponents are removed, defaults are provided incomponents/*.vuecomponents - Locatable domain objects were only supported in API parameters, now they are
rendered as
{ id: "..." }in API record inputs as well - Relations of a locatable is rendered as a ref object
{ id: "...", label: "..." }- It includes id and all label properties
- It works only for locatable relations, e.g.,
Child.Parentproperty will render only id and label properties of the parent - Any locatable under a record will include all of their properties, e.g.,
Child.ParentWrapper.Parentwill render all properties of the parent
ExtendedContractResolveris added as a default contract resolver to allow customization of json serialization throughRestApiLayerOrm.UniqueAttributeis introduced in abstractions which causesAutoMapOrmFeatureto set unique constraint for the properties that have itDefaultThemeFeaturenow usesTextto render locatable propertiesDataTableDefaultsUxFeaturenow uses label (or id) property to display locatable propertiesDataTableDefaultsUxFeaturenow hides columns of the same type as the pageDataTable.Columnnow hasHiddenproperty to hide it in front end without removing the column from descriptorLabelsAreFrozenUxFeature(formerDesignatedStringPropertiesAreLabelUxFeature) now sets order of label properties to-10to have them before any other- Recipes now allow configuring coding styles that provide configuration
UseBuiltInTypesCodingStyleFeatureaddsDescriptionfor the defaulttextPropertySuffixesconfiguration
Breaking Changes
- All
computeSyncrenamed tocompute, in composables IDatanow has aIsAsyncpropertycreatefactory method ofuseEventsis now removed, you may useuseEventscomposable directly- Entity and rich transient domain objects are now rendered ID objects instead
of ID strings in API endpoints
- E.g., for a method like
public void Sample(Entity entity);- Request object was
{ "entityId": "..." }, - Now it has become
{ "entity": { "id": "..." } }
- Request object was
- E.g., for a method like
AutoMapOrmFeatureno longer configuresIdproperties and foreign keysIdproperty type is now changed fromSystem.GuidtoBaked.Business.Id// not supported public Guid Id { get; set; } // use 'Baked.Business.Id' public Id Id { get; set; }RichTransientfeature now requires initializer to be with single parameter ofBusiness.Idtype and contain property withBusiness.Idtype// not supported public RichTransient With(string id) { ... } // add 'Baked.Business.Id' property public Business.Id Id { get; set; } public RichTransient With(Id id) { Id = id; }EntityExtensionViaCompositioncoding style feature is renamed toLocatableExtensioncoding style featureLocatableExtension(former:EntityExtensionViaComposition) feature now requires a property withBusiness.Idtype// not supported Entity _entity = default!; internal EntityExtension With(Entity entity) { ... } // add 'Baked.Business.Id' property Entity _entity = default!; internal EntityExtension With(Entity entity) { ... } internal Business.Id Id => _entity.Id;SingleByIdConventionis now moved toLocatableCodingStylefeatureSingleByIdandByIdsare now removed fromIQueryContext, injectILocator<>to get entities by id/ids// not supported IQueryContext<Entity>.SingleById(id); // add 'Baked.Business.Id' property ILocator<Entity>.Locate(id);SingleByIdconvention is renamed toAddLocateActionAddLocateAction(former:SingleById) convention now requiresLocatabletype instead ofQuerytype// previous usage builder.Conventions.AddSingleById<Entities>(); // use locatable type instead builder.Conventions.AddLocateAction<Entity>();WithMethodCodingStyleFeatureis now renamed toInitializableCodingStyleFeatureEntitySubclassViaCompositionCodingStyleFeatureis renamed toEntitySubclassCodingStyleFeatureDesignatedStringPropertiesAreLabelUxFeatureis now split into two,LabelCodingStyleFeatureandLabelsAreFrozenUxFeatureLabelAttributeandQueryAttributeare moved toBaked.BusinessnamespaceEntityAttribute.QueryTypeproperty is now removed, useLocatableAttribute.QueryType- This change allows query domain objets for any locatable domain object, such as rich transients
- For this reason, the convention that sets
QueryTypefor entities is now pushed from order0to order30to make sure all domain objects getsLocatableAttribute - If you have conventions that depend on query type of an entity or depend on
TryGetQueryTypeextension, make sure you set its order after30
TryGetEntityAttributeis removed, useTryGetLocatableAttributeTryGetQueryContextTypeis now redundant and removedBusiness.DomainAssemblies.Regexesis moved toCodingStyle.Query.Regexes
Library Upgrades
| NuGet Package | Old Version | New Version |
|---|---|---|
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.11 | 9.0.13 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 9.0.11 | 9.0.13 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.11 | 9.0.13 |
| Microsoft.Data.Sqlite.Core | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.Caching.Abstractions | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.Configuration.Abstractions | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.Configuration.Binder | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.FileProviders.Abstractions | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.Localization | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.Localization.Abstractions | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.Logging.Abstractions | 10.0.1 | 10.0.3 |
| Microsoft.Extensions.TimeProvider.Testing | 10.1.0 | 10.3.0 |
| MySql.Data | 9.5.0 | 9.6.0 |
| NUnit3TestAdapter | 6.0.1 | 6.1.0 |
| Oracle.ManagedDataAccess.Core | 23.26.0 | 23.26.100 |
| System.IdentityModel.Tokens.Jwt | 8.15.0 | 8.16.0 |
| npm Package | Old Version | New Version |
|---|---|---|
| @nuxtjs/i18n | 10.2.1 | 10.2.3 |
| @primeuix/themes | 2.0.2 | 2.0.3 |