ngx-feature-toggle
Version:
Your module to handle with feature toggles in Angular applications easier.
570 lines (376 loc) β’ 20.9 kB
Markdown
# Change Log
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased][]
## [12.0.0][] - 2023-02-20
### Updated
- Upgrading library to Angular v15
## [7.0.0][] - 2023-02-04
### Added
- 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 use `theme` coming from `NgxSkeletonLoaderModule.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.
```html
<!--
// ... 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-content` appearance. 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-content` usage
### Updated
- Updagrading module to Angular v15
### Fixed
- Removing build warnings
## [6.0.0][] - 2022-08-18
### Updated
- Adding Publishing setup using NPX
- Replacing CSS class namespace from `.loader` to `.skeleton-loader`
#### Breaking Change
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
### Updated
> Thanks @yharaskrik
#### Breaking Change
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/cli` to v13
- Applying project changes to v13
- Updating bundlesize check to point to `fesm2020`
## [4.0.0][] - 2021-07-28
### Fixed
#### Breaking Change
- 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
### Added
#### Breaking Change
- 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
### Fixed
- 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
### Added
- Adding module configuration support via `forRoot()` method. Now you can add configure your module via `forRoot()`. You can now set the default of `appearance`, `animation`, `theme`, `loadingText`, `count` and/or `items`.E.G.
```ts
@NgModule({
// ...
imports: [NgxSkeletonLoaderModule.forRoot({ appearance: 'circle', count: 3 )],
// ...
})
```
## [2.9.2][] - 2021-04-11
### Updated
- Updating link in README.md
### Fixed
- Bumping dev dependencies to avoid security issues
## [2.9.1][] - 2021-02-20
### Fixed
- Adding `appearance` attribute to be checked via `ngOnChanges`
### Updated
- Updating examples with new features
## [2.9.0][] - 2021-02-19
### Added
- Adding validation for @Input attributes that needs internal manipulation. After these changes:
- if `count` is not a numeric value, it will use the default value as `1`
- if `animation` is not a valid attribute, it will use the default value as `progress`
- PS: The other values alredy have a fallback, so nothing to worry here
- Adding error feedback for `appearance` attribute in case of wrong configuration. Now it will show a error message on the console in case of receiving a wrong value
### Updated
- Adding `ngOnChange` to validate `count` input in case of changes via binding
- Updating `README.md` with information about `appearance` and `theme` usage.
## [2.8.0][] - 2021-02-18
### Fixed
- Using `ngAcceptInputType_count` for template checking in count input. That solves issue https://github.com/willmendesneto/ngx-feature-toggle/issues/59. You can find more details about it in https://angular.io/guide/template-typecheck
- Fixing type issues on `yarn build:ssr` command
### Updated
- Updating `perf-marks` to `v1.14.1`
- Adding strict mode support in module
- Updating types for `theme` to match with `ngStyle`. More details in https://angular.io/api/common/NgStyle#properties
## [2.7.0][] - 2021-02-06
### Added
- Adding new `loadingText` attribute to be used as WAI-ARIA `aria-valuetext`. In this case, it will render the component using "Please wait ...". Otherwise, it defaults to "Loading..."
```html
<!-- 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>
```
### Updated
- Using OnPush as changeDetection mechanism into ngx-feature-toggle component
- Adding ability to pass `false` as string or boolean (coming from variable value via binding) on `animation` attribute in `ngx-feature-toggle` component configuration. animation will receive `false` as string when attribute field it's not using binding. Component now can receive `false` (boolean), "false" (string), or any other animation type via binding.
```html
<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
### Fixed
- 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
### Fixed
- Solving `forRoot()` types error `Generic type 'ModuleWithProviders<T>' requires 1 type argument(s)`. Closes https://github.com/willmendesneto/ngx-feature-toggle/issues/51
## [2.6.0][] - 2020-11-15
### Added
- Adding `NgxSkeletonLoaderModule.forRoot()` method. Usage:
```js
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
### Fixed
- Fixing bundle size command on CircleCI pipeline
### Updated
- Upgrading NodeJS to v14.11.0
- Updating `perf-marks` package to v1.14.0
- Improving skeleton animations fps by using `cubic-bezier` instead of `ease-in-out`
## [2.4.4][] - 2020-08-21
### Fixed
- Remove check requirements if perf-marks is running in a browser or not in Angular apps π₯
### Added
- Adding Angular Universal support for examples. Now we can run `npm run dev:ssr` and access `http://localhost:4200/index.html` and the page will run using angular universal πͺ
- Adding `.prettierrc` file with some of the code styling rules
## [2.4.3][] - 2020-08-13
### Fixed
- Avoiding perf-marks call if running in Angular Universal applications
## [2.4.2][] - 2020-08-01
### Updated
- Bumping `perf-marks` to latest version
## [2.4.1][] - 2020-08-01
### Updated
- Bumping `perf-marks` to latest version
## [2.4.0][] - 2020-08-01
### Added
- Adding User Timing API to track component render and content loader time
### Updated
- Updating examples with new skeleton simulation
- Adding Stackblitz link for user card skeleton loading demo
## [2.3.0][] - 2020-08-01
### Added
- Adding User Timing API to track component render and content loader time
### Updated
- Updating examples with new skeleton simulation
- Adding Stackblitz link for user card skeleton loading demo
## [2.2.1][] - 2020-06-30
### Fixed
- For compatibility with IE11 by using indexOf instead of `includes`
### Updated
- Updating `npm run postinstall` command to follow the new rules from update.angular.io website
## [2.2.0][] - 2020-06-01
### Added
- Using `prefers-reduced-motion` to respect userβs OS option to `Reduce Motion`. More details about `prefers-reduced-motion` in https://web.dev/prefers-reduced-motion/
## [2.1.0][] - 2020-06-01
### Updated
- Upgrading @angular/cli to version 9
- π Decreasing bundle size to 1.17KB π
## [2.0.0][] - 2020-05-15
### Updated
- Upgrading NodeJS to v12.16.2
- Updating documentation with `animation` attribute
### Added
- Supporting for new animation `progress-dark` to 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 it `progress` as animation;
- `pulse`: it will use `pulse` as animation;
> `progress` is the default animation, used as the single one previously. If you don't pass the animation attribute, it defaults to `progress`.
```html
<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 `animation` input. It's a string with `false` as 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
```js
<div class="item">
<ngx-feature-toggle animation="false"></ngx-feature-toggle>
</div>
```
## [1.2.7][] - 2020-04-13
### Updated
- Decreasing bundle size after disable Ivy in production build
- Adding description, keywords and github information on `package.json` files
## [1.2.6][] - 2020-02-26
### Fixed
- Changing angular library configuration to prod and forcing it at publish time
## [1.2.5][] - 2020-02-25
### Fixed
- Changing angular library configuration to prod
## [1.2.4][] - 2020-02-25
### Updated
- Updating Github templates
- Updating Angular CLI to v9
## [1.2.3][] - 2020-02-25
### Fixed
- Solving peerDependency warning when installing library in an Angular 9 project
## [1.2.2][] - 2019-06-22
### Fixed
- Fixing component dimensions via theme
## [1.2.1][] - 2019-06-08
### Updated
- Updating Angular CLI to v8
## [1.2.0][] - 2019-04-19
### Updated
- Updating Angular CLI to 7.3.8
## [1.1.2][] - 2019-01-07
### Added
- Adding badges for stackblitz, bundlephobia and license
### Updated
- Removing unnecessary CSS styles for skeleton
## [1.1.1][] - 2018-12-17
### Fixed
- Fixing Stackblitz link demo link
## [1.1.0][] - 2018-12-17
### Added
- Added GitHub urls into `package.json`
- Added Circle CI integration
- Added Coveralls integration
- Added GitHub templates
- Added `CODE_OF_CONDUCT.md` with the Code of conduct
- Added unit tests for skeletons and demo components
### Updated
- Decreased bundle size
- New gif showing `ngx-feature-toggle` in action
## [1.0.2][] - 2018-12-16
### Fixed
- Added markdown files in dist folder in build time
## [1.0.1][] - 2018-12-16
### Fixed
- Added markdown files in dist folder in build time
## [1.0.0][] - 2018-12-16
### Fixed
- Fixed build script
## [0.0.1][] - 2018-12-16
### Added
- Created `ngx-feature-toggle`
- Created test automation for the module
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v0.0.1...HEAD
[0.0.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v0.0.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.0.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.0.2...HEAD
[1.0.2]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.0.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.0.2...HEAD
[1.0.2]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.0.2
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.1.0...HEAD
[1.1.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.1.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.1.1...HEAD
[1.1.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.1.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.4...HEAD
[1.2.4]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.3...v1.2.4
[1.2.3]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.2...v1.2.3
[1.2.2]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.1...v1.2.2
[1.2.1]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.1.2...v1.2.0
[1.1.2]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.1.2
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.5...HEAD
[1.2.5]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.2.5
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.6...HEAD
[1.2.6]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.2.6
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v1.2.7...HEAD
[1.2.7]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v1.2.7
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.0.0...HEAD
[2.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.0.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.1.0...HEAD
[2.1.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.1.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.2.0...HEAD
[2.2.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.2.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.2.1...HEAD
[2.2.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.2.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.3.0...HEAD
[2.3.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.3.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.4.0...HEAD
[2.4.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.4.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.4.1...HEAD
[2.4.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.4.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.4.2...HEAD
[2.4.2]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.4.2
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.4.3...HEAD
[2.4.3]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.4.3
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.4.4...HEAD
[2.4.4]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.4.4
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.5.0...HEAD
[2.5.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.5.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.6.0...HEAD
[2.6.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.6.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.6.1...HEAD
[2.6.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.6.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.6.2...HEAD
[2.6.2]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.6.2
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.7.0...HEAD
[2.7.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.7.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.8.0...HEAD
[2.8.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.8.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.9.0...HEAD
[2.9.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.9.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.9.1...HEAD
[2.9.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.9.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.9.2...HEAD
[2.9.2]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.9.2
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.10.0...HEAD
[2.10.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.10.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v2.10.1...HEAD
[2.10.1]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v2.10.1
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v4.0.0...HEAD
[4.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v3.0.0...v4.0.0
[3.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v3.0.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v5.0.0...HEAD
[5.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v5.0.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v6.0.0...HEAD
[6.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v6.0.0
[unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v7.0.0...HEAD
[7.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v7.0.0
[Unreleased]: https://github.com/willmendesneto/ngx-feature-toggle/compare/v12.0.0...HEAD
[12.0.0]: https://github.com/willmendesneto/ngx-feature-toggle/tree/v12.0.0