All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
13.0.0 - 2026-03-26
- Upgrading project to Angular v21
- Users now can redirect when Path is an empty string. When you configure home page to have path = '', and use NgxFeatureToggleRouteGuard with redirectTo = '', redirect does not happen. Thanks @brandonsmith86 🎉
- Fixing
redirecTotypes
- Adding typescript types validation on pipeline
12.0.0 - 2023-02-20
- Upgrading library to Angular v15
7.0.0 - 2023-02-04
- Adding support for extending global theme added via
NgxSkeletonLoaderModule.forRoot({ theme: /* ...list of CSS atributes */} })
By default when using NgxSkeletonLoaderModule.forRoot({ theme: /* ...list of CSS atributes */} }) the application is using this value as source of truth, overriding any local theming passed to <ngx-feature-toggle> component via [theme] input.
By using NgxSkeletonLoaderModule.forRoot({ theme: { extendsFromRoot: true, /* ...list of CSS atributes */} }) in your application, you should also be aware that:
- By default, every
<ngx-feature-toggle>component will usethemecoming fromNgxSkeletonLoaderModule.forRoot()as the source of truth - If there's any CSS attribute on the component locally which overrides the CSS spec, it combines both themes, but overriding global CSS attributes in favor of local ones.
<!--
// ... E.G: App is using this configuration below
NgxSkeletonLoaderModule.forRoot({
theme: {
// Enabliong theme combination
extendsFromRoot: true,
// ... list of CSS theme attributes
height: '30px',
},
}),
-->
<div class="item">
<ngx-feature-toggle></ngx-feature-toggle>
<!-- above line will produce a skeleton component using `height: 30px;`" -->
<ngx-feature-toggle [theme]="{background: 'blue'}"></ngx-feature-toggle>
<!-- above line will produce a skeleton component using `height: 30px; background: blue;`" -->
<ngx-feature-toggle [theme]="{height: '50px', background: 'red'}"></ngx-feature-toggle>
<!-- above line will produce a skeleton component using `height: 50px; background: red;`" -->
</div>- Adding new
custom-contentappearance. From now on, consumers can now add their own content inside<ng-skeleton-loader></ng-skeleton-loader>component. So that, they can add some custom content, such as SVG, as an example - Adding examples for
custom-contentusage
- Updagrading module to Angular v15
- Removing build warnings
6.0.0 - 2022-08-18
- Adding Publishing setup using NPX
- Replacing CSS class namespace from
.loaderto.skeleton-loader
The CSS class used as namespace was changed. Previously, it was called .loader and now is .skeleton-loader. It might cause some issues in cases of :host DOM style scoping usage. For the sake of semantic versioning, please bear in mind this scenario in case of :host usage.
5.0.0 - 2022-02-08
Thanks @yharaskrik
Bundle distribution are now esm2020, fesm2015 and fesm2020. UMD and CommonJS versions were support were removed from Angular CLI directly. So the next version for the package will be a major version to cover these changes accordingly.
- Updating package bundle distribution
- Updating
@angular/clito v13 - Applying project changes to v13
- Updating bundlesize check to point to
fesm2020
4.0.0 - 2021-07-28
- Rolling back "Adding mechanism to prevents calling
forRoot()more than once if module is loaded asynchronously in a submodule.". Unfortunately, this was affecting consumers and it needed to be reverted to avoid friction in other applications.
If you need to have this feature in place, the suggestion is to create a specific module in your app and apply the changes on your application.
3.0.0 - 2021-07-23
- Adding mechanism to prevents calling
forRoot()more than once if module is loaded asynchronously in a submodule. This is required in order to avoid issues in consumers. To avoid that, consumers should load the module once on the main module instead - if loading submodules async.
2.10.1 - 2021-07-13
- Ensures every ARIA progressbar node has an accessible name. This is caused by missing aria-label on the
<span>element.
Thanks @rkristelijn for raising the issue and the pull request!
2.10.0 - 2021-06-15
- Adding module configuration support via
forRoot()method. Now you can add configure your module viaforRoot(). You can now set the default ofappearance,animation,theme,loadingText,countand/oritems.E.G.
@NgModule({
// ...
imports: [NgxSkeletonLoaderModule.forRoot({ appearance: 'circle', count: 3 )],
// ...
})2.9.2 - 2021-04-11
- Updating link in README.md
- Bumping dev dependencies to avoid security issues
2.9.1 - 2021-02-20
- Adding
appearanceattribute to be checked viangOnChanges
- Updating examples with new features
2.9.0 - 2021-02-19
- Adding validation for @Input attributes that needs internal manipulation. After these changes:
- if
countis not a numeric value, it will use the default value as1 - if
animationis not a valid attribute, it will use the default value asprogress - PS: The other values alredy have a fallback, so nothing to worry here
- if
- Adding error feedback for
appearanceattribute in case of wrong configuration. Now it will show a error message on the console in case of receiving a wrong value
- Adding
ngOnChangeto validatecountinput in case of changes via binding - Updating
README.mdwith information aboutappearanceandthemeusage.
2.8.0 - 2021-02-18
- Using
ngAcceptInputType_countfor template checking in count input. That solves issue willmendesneto/ngx-feature-toggle#59. You can find more details about it in https://angular.io/guide/template-typecheck - Fixing type issues on
yarn build:ssrcommand
- Updating
perf-markstov1.14.1 - Adding strict mode support in module
- Updating types for
themeto match withngStyle. More details in https://angular.io/api/common/NgStyle#properties
2.7.0 - 2021-02-06
- Adding new
loadingTextattribute to be used as WAI-ARIAaria-valuetext. In this case, it will render the component using "Please wait ...". Otherwise, it defaults to "Loading..."
<!-- Passing loading text to be used as WAI-ARIA `aria-valuetext` -->
<!-- In this case, it will render the component using "Please wait ..." -->
<!-- Otherwise, it defaults to "Loading..." -->
<div class="skeleton-with-specific-loading-text">
<ngx-feature-toggle loadingText="Please wait ..."></ngx-feature-toggle>
</div>- Using OnPush as changeDetection mechanism into ngx-feature-toggle component
- Adding ability to pass
falseas string or boolean (coming from variable value via binding) onanimationattribute inngx-feature-togglecomponent configuration. animation will receivefalseas string when attribute field it's not using binding. Component now can receivefalse(boolean), "false" (string), or any other animation type via binding.
<div class="item">
<!-- Disables the animation -->
<ngx-feature-toggle animation="false"></ngx-feature-toggle>
<!-- Disables the animation, but receiving boolean value from binding -->
<!-- Via binding it can receive `false` (boolean), "false" (string), or any other animation type -->
<ngx-feature-toggle [animation]="classAttributeWithBooleanFalseValue"></ngx-feature-toggle>
<!-- Uses `progress` as animation -->
<ngx-feature-toggle animation="progress"></ngx-feature-toggle>
<ngx-feature-toggle></ngx-feature-toggle>
<!-- Uses `pulse` as animation -->
<ngx-feature-toggle animation="pulse"></ngx-feature-toggle>
</div>2.6.2 - 2020-12-08
-
Removing Lighthouse "Avoid non-composited animations" issue. Lighthouse shows warnings from ngx-feature-toggle.scss -file (progress).
-
"Avoid non-composited animations":
-
"Animations which are not composited can be janky and contribute to CLS"
To solve that, instead of using CSS background-position the module is now using CSS translate3d, which improves the animation by using GPU instead of CPU. Issue fixed and performance boost added 🎉
2.6.1 - 2020-11-30
- Solving
forRoot()types errorGeneric type 'ModuleWithProviders<T>' requires 1 type argument(s). Closes willmendesneto/ngx-feature-toggle#51
2.6.0 - 2020-11-15
- Adding
NgxSkeletonLoaderModule.forRoot()method. Usage:
import { NgModule } from '@angular/core';
import { NgxSkeletonLoaderModule } from 'ngx-feature-toggle';
// ... list of other app dependencies
import { AppComponent } from './app.component';
// ... list of other app components/modules
@NgModule({
declarations: [AppComponent],
imports: [NgxSkeletonLoaderModule.forRoot()],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}2.5.0 - 2020-10-10
- Fixing bundle size command on CircleCI pipeline
- Upgrading NodeJS to v14.11.0
- Updating
perf-markspackage to v1.14.0 - Improving skeleton animations fps by using
cubic-bezierinstead ofease-in-out
2.4.4 - 2020-08-21
- Remove check requirements if perf-marks is running in a browser or not in Angular apps 🔥
- Adding Angular Universal support for examples. Now we can run
npm run dev:ssrand accesshttp://localhost:4200/index.htmland the page will run using angular universal 💪 - Adding
.prettierrcfile with some of the code styling rules
2.4.3 - 2020-08-13
- Avoiding perf-marks call if running in Angular Universal applications
2.4.2 - 2020-08-01
- Bumping
perf-marksto latest version
2.4.1 - 2020-08-01
- Bumping
perf-marksto latest version
2.4.0 - 2020-08-01
- Adding User Timing API to track component render and content loader time
- Updating examples with new skeleton simulation
- Adding Stackblitz link for user card skeleton loading demo
2.3.0 - 2020-08-01
- Adding User Timing API to track component render and content loader time
- Updating examples with new skeleton simulation
- Adding Stackblitz link for user card skeleton loading demo
2.2.1 - 2020-06-30
- For compatibility with IE11 by using indexOf instead of
includes
- Updating
npm run postinstallcommand to follow the new rules from update.angular.io website
2.2.0 - 2020-06-01
- Using
prefers-reduced-motionto respect user’s OS option toReduce Motion. More details aboutprefers-reduced-motionin https://web.dev/prefers-reduced-motion/
2.1.0 - 2020-06-01
- Upgrading @angular/cli to version 9
- 🎉 Decreasing bundle size to 1.17KB 🎉
2.0.0 - 2020-05-15
- Upgrading NodeJS to v12.16.2
- Updating documentation with
animationattribute
- Supporting for new animation
progress-darkto enable users when using theme with darker color schema - Supporting for different animations 🎉
Now we can define the animation we want to use in <ngx-feature-toggle> component via animation input. It's a string that can defined the animation used during the loading, having as options:
false: it will disable the animation;progress- default: it will use itprogressas animation;pulse: it will usepulseas animation;
progressis the default animation, used as the single one previously. If you don't pass the animation attribute, it defaults toprogress.
<div class="item">
<!-- Disables the animation -->
<ngx-feature-toggle animation="false"></ngx-feature-toggle>
<!-- Uses `progress` as animation -->
<ngx-feature-toggle animation="progress"></ngx-feature-toggle>
<ngx-feature-toggle></ngx-feature-toggle>
<!-- Uses `pulse` as animation -->
<ngx-feature-toggle animation="pulse"></ngx-feature-toggle>
</div>- Supporting enabling/disabling animations.
Now the users will be able to enable/disable animations by using
animationinput. It's a string withfalseas value that the component receives to check if it should not load progress animation.
It works only to disable it. In case you want to keep enable it
<div class="item">
<ngx-feature-toggle animation="false"></ngx-feature-toggle>
</div>1.2.7 - 2020-04-13
- Decreasing bundle size after disable Ivy in production build
- Adding description, keywords and github information on
package.jsonfiles
1.2.6 - 2020-02-26
- Changing angular library configuration to prod and forcing it at publish time
1.2.5 - 2020-02-25
- Changing angular library configuration to prod
1.2.4 - 2020-02-25
- Updating Github templates
- Updating Angular CLI to v9
1.2.3 - 2020-02-25
- Solving peerDependency warning when installing library in an Angular 9 project
1.2.2 - 2019-06-22
- Fixing component dimensions via theme
1.2.1 - 2019-06-08
- Updating Angular CLI to v8
1.2.0 - 2019-04-19
- Updating Angular CLI to 7.3.8
1.1.2 - 2019-01-07
- Adding badges for stackblitz, bundlephobia and license
- Removing unnecessary CSS styles for skeleton
1.1.1 - 2018-12-17
- Fixing Stackblitz link demo link
1.1.0 - 2018-12-17
- Added GitHub urls into
package.json - Added Circle CI integration
- Added Coveralls integration
- Added GitHub templates
- Added
CODE_OF_CONDUCT.mdwith the Code of conduct - Added unit tests for skeletons and demo components
- Decreased bundle size
- New gif showing
ngx-feature-togglein action
1.0.2 - 2018-12-16
- Added markdown files in dist folder in build time
1.0.1 - 2018-12-16
- Added markdown files in dist folder in build time
1.0.0 - 2018-12-16
- Fixed build script
0.0.1 - 2018-12-16
- Created
ngx-feature-toggle - Created test automation for the module