Changelog
[1.0.3] - 2023-01-05
Changed
- [BREAKING] Added peer dependency @mui/x-date-pickers. You need to add this dependency if updating from previous versions
- Updated internal dependencies fix blank initial screen.
- Backport of MFA from v2
- Backport of image resizing from v2
[1.0.2] - 2022-07-02
Changed
- Fix for bug when saving new entities with React 18.
[1.0.0] - 2022-05-10
Changed
- Fix for entity collections in read-only mode showing incorrect resolved properties
- Fix for filter combinations bug
Added
- Enabled phone authentication
- Added max size validation for file uploads
[1.0.0-rc.5] - 2022-04-11
Changed
- Fix for draggable bug in arrays with duplicated values.
- Reversed icons in header tables. Also, now the initial sort option is "asc" as it is typical in most apps.
- Fix for cursor jumping to the end of an inline text field
[1.0.0-rc.4] - 2022-03-14
Changed
- Added
LoginViewProps
toFirebaseCMSApp
. You can use it to customise the login flow, using thedisableSignupScreen
prop to prevent users from creating accounts inpassword
mode. And to display aNoUserComponent
- when the user logging in
password
mode is not found - Fix for hidden CMS views bug.
- Fix for array select filters
- Fixed inline date popups
- Fix for not editable tables not updating on data changes
[1.0.0-rc.3] - 2022-02-28
Changed
- Fixed edge case of references in arrays not being resolved properly with property builders. Thanks, Paul Aranzamendez!
[1.0.0-rc.2] - 2022-02-08
Changed
- Fix for Portal import bug related to mui 5.4 version.
- Allowing
optional
custom ids - Small cosmetic updates
[1.0.0-rc.1] - 2022-01-23
Changed
- Fix for "heap limit Allocation failed" error
[1.0.0-beta11] - 2022-01-22
Changed
- Fix for array components losing focus
- Added custom
regexMessage
for displaying when there is a stringregex
validation error. - Property builders now include the
previousValues
prop, in case you need to compare the updates with the original values (only in the form view and the popup view in the collection). - Changed page not found error message.
[1.0.0-beta10] - 2022-01-11
Changed
- Drag and drop implementation replaced for
react-beautiful-dnd
, for simpler code and better performance. - Fix callbacks to open side panel, (by Kyle Fang)
- Fix for latest version of
react-router
types - General dependencies update
- Many internal React eslint warning fixes
[1.0.0-beta9] - 2021-12-17
Added
- Optional
dependencies
prop inAdditionalFieldDelegate
so that additional columns are always up-to-date when they depend on another entity property. Just pass an array of property keys
Changed
- Many performance enhancements, related to avoiding re-renders, especially in the entity collection view table cells.
- Fix for popup form field in the collection view, not displaying the correct field in some occasions.
[1.0.0-beta8] - 2021-12-13
Added
- Fix for side dialog not opening when creating a new entity
- Performance tweaks
Changed
useSchemaRegistry
has been removed and all it's functionality has been merged intouseNavigationContext
[1.0.0-beta7] - 2021-12-11
Added
- Not found page when reaching a non-existing route.
- Indicator for selected page in navigation drawer
- Some performance enhancements
Changed
- Fix for missing
index.js
export in version beta6 - Internal rework for persisting user configuration, like collection sizes or column widths.
[1.0.0-beta6] - 2021-12-06
Added
- New custom login screen that replaces FirebaseUi.
- Replaced
react-csv
with custom CSV implementation - The previous changes were blocking SSR and build tools such as Vite, but more testing is needed.
- New type added
EntitySchemaResolver
, used mostly internally for resolving entity schemas (that means computing the property builders and transforming them to aResolvedEntitySchema
)
Changed
- Fix for collections not refreshing correctly
- [BREAKING]
schemaResolver
at theFireCMS
level has been renamed toschemaOverrideHandler
.
[1.0.0-beta5] - 2021-11-22
Added
snackbarController
added toFireCMSContext
so it can be used in callbacks.width
parameter added toSideEntityController
'sopen
function, so you can select the width of the side view.- The user selection regarding dark mode is now persisted in local storage (if different from the system selection)
Changed
- Fix for data not being refreshed correctly in collections.
[1.0.0-beta4] - 2021-11-14
Added
- Added additional props to
NavigationBuilder
andAuthenticator
, includingdataSource
andstorageSource
. These are useful if you need to fetch some data from your datasource (such as if you want to check if a logged user has an entry in Firestore) and apply the corresponding permissions or navigation. - Added
SelectionController
toEntityCollectionView
. You can useuseSelectionController
and pass it your customEntityCollectionView
if you want to control the selected entities. If you are usingFirebaseCMSApp
as an entry point, you can define yourAutheticator
as:
import { User as FirebaseUser } from "firebase/auth";
const myAuthenticator: Authenticator<FirebaseUser> = async ({
user,
authController
}) => {
console.log("Allowing access to", user?.email);
// ...
return true;
};
- Implemented dark mode for markdown fields
- Column sizes and collections tables are now persisted in local storage
Changed
- The
User
types have been replaced by generics all through the app. Types likeAuthController
orNavigationBuilder
now have a generic argument that allows to define the user type. In the case of - Internal work around to prevent collections going back to the start due to Firestore returning incomplete collection data.
- [BREAKING]
useCollectionFetch
now usessortBy
in the format[Extract<keyof M, string>, "asc" | "desc"]
for consistency - [BREAKING]
extraActions
inEntityCollection
now receivesselectionController
instead ofselectedEntities
. - Fix for filters in tables including
enumValues
[1.0.0-beta3] - 2021-11-07
Changed
EntityCollectionTable
has been renamed toEntityCollectionView
- Reference visual fix 144
- Removed
entityId
toPropertyBuilder
when copying an entity 145 - Fix and reimplemented navigation blocking behaviour 146
- Hiding correctly
hidden
properties if they are in a `MapProperty
Added
- New
Table
component used internally byCollectionTable
.Table
is not coupled with our entities and collections models and can be used as a single component. It includes generic sorting and filtering capabilities.
[1.0.0-beta2] - 2021-10-07
Changed
- When copying an entity the permission used is
create
now, instead ofedit
. - Fix for entities not being saved when new or copy was clicked
- Fix for multiple delete keeping old state.
- Fix multiple form styles.
- Fix for array of number enums.
Added
Added hidden
configuration to disabled fields:
buildProperty({
dataType: "string",
title: "Hidden field",
disabled: {
hidden: true
}
})
[1.0.0-beta1] - 2021-10-01
Many breaking changes in this version unfortunately, but it's for the better! We have done a lot of internal refactorings with the primary goal of making internal and external APIs more predictable and consistent.
You can find a list of all the changes and help in Migrating from alpha versions
[0.50.0] - 2021-08-15
Changed
- Added post process to storage metadata. @zhigang1992 thanks!
- Disabling add button on disabled array properties
[0.49.1] - 2021-08-15
Changed
- Fix for broken custom entity views and new entities.
[0.49.0] - 2021-08-13
Changed
[BREAKING] Big types refactor. This only affects you if you use Typescript.
All the key signatures affecting schemas (EntitySchema
and related) have
changed from EntitySchema<Key extends string = string>
to EntitySchema<M>
where M
is simply your model, though you can omit it.
You are now encouraged to define your model like:
type Product = {
name: string;
price: number;
}
const productSchema = buildSchema<Product>({
// ...
properties: {
name: {
dataType: "string",
// ...
},
// ...
}
// ...
});
If you would still like to use inferred types from schemas using something like
typeof productSchema
, you can still do it if you wrap it in a new type
InferSchemaType
, but this is not encouraged. In the previous
example InferSchemaType<typeOf productSchema>
is the same type as Product
.
Related changes:
- Wherever you had defined your own schema, using
buildSchema()
and where using that as a type parameter, it can be changed to the defined type or just removed. buildSchemaFrom
has been deleted since now it's identical tobuildSchema
If you need more info: https://firecms.co/blog/types_refactor
[0.48.0] - 2021-08-13
Changed
- Fix for changes in forms not updating correctly when a real time update happened in Firestore
- Fix for popup view position
- Fix for popup view validating only the corresponding cell and not the whole property, which was provoking unfixable saving errors.
[0.47.0] - 2021-08-10
Changed
- [BREAKING]
EntityCustomViewBuilder
has been renamed toEntityCustomView
- Big form performance enhancements
- Fixes related to
oneOf
array properties. - Fixed missing permission error in cell
- Added
collectionPath
toPropertyBuilder
[0.46.0] - 2021-08-02
Added
collectionPath
andcontext
toExtraActionsParams
- Green border indicator on collection tables to indicate that the value was saved successfully in Firestore.
[0.45.0] - 2021-07-19
Added
- New
oneOf
field inArrayProperty
. This new configuration allows the user to build complex array of objects structures, where the object is determined by a discriminator ortype
field and stored in thevalue
field (both those fields are customizable). You can se an example of this in the content of blog entries in the demo - You can now add custom views to your entity schemas, that get rendered next to the entity form. You can use these views for anything you need, such as rendering a custom form, building a dashboard or displaying a post preview.
- The
collectionPath
and appcontext
props have been added toPermissionBuilder
so you can get better info of the context of an entity.
Changed
- Subcollection views and new schema custom views are now displayed side by side when you open the tabs in the side view (useful for better context switching)
- The markdown component has been replaced by a better one.
- Many bugfixes in the form popup view and enhanced behaviour. You can now keep a popup open and continue editing other fields. The popup doesn't close automatically now when you click on a different cell.
[0.44.0] - 2021-07-19
Changed
- [BREAKING] renamed
useAuthContext
touseAuthController
- Including
authController
inPermissionBuilder
so you can access additional data for a user. - Improved sample code and quickstart to include custom user logic
[0.43.0] - 2021-07-06
Changed
- Filtering in collections has been changed from a single dropdown to dropdowns in each column header.
- Added Timestamp filters
filterableProperties
has no longer effect since every field is filterable now and will be removed in the future.
Added
indexes
property where you can specify the indexes in your Firestore configuration. That allows to filter/sort by multiple properties.
[0.42.0] - 2021-06-22
Changed
- Big internal refactor to have a better modularised code, also to generate better docs
- [BREAKING] EntityCollectionView (previously renamed to EntityCollection) has been removed. Simply rename to EntityCollection
[0.41.1] - 2021-06-22
Changed
- Fix for export component that was fetching the complete collections on mount. Now opening the CMS does not trigger excessive reads by default.
[0.41.0] - 2021-06-19
Changed
- Internal type fixes.
- [BREAKING]
ArrayProperty
first generic type changed from T to T[] - [BREAKING]
CMSFormField
component (used for generating custom fields) has been replaced by a function calledbuildPropertyField
that takes the same props - Fix for jumping search bar while loading
[0.40.0] - 2021-06-06
Changed
- [BREAKING] Change EntityStatus from JS enum to TS type. This only affects you if you are using a save callback.
- [BREAKING] AlgoliaTextSearchDelegate is now a function instead of a class. You instantiate it the same, just remove the new keyword
[0.39.1] - 2021-05-23
Added
- Added
extra
andsetExtra
fields inauthController
to store custom user data.
Changed
- Fix for home page
- Minor layout updates
- Removed
authResult
from auth context since it was actually useless and confusing
[0.39.0] - 2021-05-13
Added
- Allowing adding customized columns to CSV exports
- Added builder
- Allowing changing pagination size
- Allowing multiple paths per CMSView and
hideFromNavigation
flag added
Changed
- [BREAKING] Material dependencies have been moved to
peerDependencies
If your build breaks, simply add these dependencies to your project:
"@mui/material": "^4.11.4",
"@mui/icons-material": "^4.11.2",
"@mui/lab": "^4.0.0-alpha.58",
"@material-ui/pickers": "^3.3.10",
[0.38.2] - 2021-05-05
Changed
- Custom id values are now trimmed
- Fix for entity actions dropdown
- Fix for being able to use side entity dialogs without having a rendered main view
- [BREAKING] If you are using provider and main view, you need to move the theme related fields from the main view to the provider (colors and fonts)
[0.38.1] - 2021-05-03
Changed
- Fix for unique in array validation and null values
[0.38.0] - 2021-05-03
Added
- New
uniqueInArray
validation prop. If you set it totrue
, the user will only be allowed to have the value of that property once in the parentArrayProperty
. It works on direct children properties or on first level children of aMapProperty
(if set as the.of
property of theArrayProperty
)
Changed
- Fix for dates in new documents, being set to the current time
- The popup form field in the table now has a save button instead of saving automatically.
[0.37.0] - 2021-04-29
Changed
- Mono typeface import css has been removed from the core library and needs to be imported in every implementation now, like the Rubik typeface. Examples and Readme updated. Useful for SSR.
- Enhanced feedback for references configuration errors, no longer crashing the app.
- Changed double click behaviour in collections table to open the inline editor, replaced by a triple click. You can double click to select the content of the cell.
[0.36.1] - 2021-04-29
Changed
- Fix for navigation loading bug using NavigationBuilder
[0.36.0] - 2021-04-29
Changed
CMSApp
has been split internally into 3 components:CMSApp
which now is only in charge of initialising FirebaseCMSAppProvider
which is in charge of providing all the contexts used by the CMS hooks.CMSMainView
which includes the views of the app including login screen and main collection and entity components. You can see an example here
- Fix for a bug when saving entities.
- [BREAKING]
AuthContextController
has been renamed toAuthController
[0.35.0] - 2021-04-26
Added
- Added
useNavigationFrom
hook andgetNavigationFrom
- Added
context
to save and delete callbacks, so you can accessgetNavigationFrom
from within them. NavigationBuilder
now supports returning a promise with the navigation result, useful if you need to check permissions based on the logged user.
Changed
- [BREAKING]
SchemaSidePanelProps
has been renamed toSchemaConfig
used in theschemaResolver
prop. - [BREAKING]
useAppConfigContext
has been renamed touseCMSAppContext
[0.34.1] - 2021-04-07
Changed
- Fix for broken collection detail buttons