Compare commits

..

133 commits

Author SHA1 Message Date
f925d39e74 ci: add bidirectional sync with Forgejo
All checks were successful
Mirror to Forgejo / mirror (push) Successful in 3s
Publish to NPM / build (21.x, ubuntu-latest) (push) Successful in 46s
2026-02-07 18:29:21 +01:00
Lorenzo Iovino
b8de85a4f9
Update README.md 2024-07-10 14:10:50 +02:00
Lorenzo Iovino
f1519e2dc9 release(ng2-fittext): 2.0.0 2024-07-10 06:07:13 +02:00
Lorenzo Iovino
20be9e90f8 docs(readme.md): correct typo 2024-07-10 06:03:41 +02:00
Lorenzo Iovino
da502ed7f5
Support angular >=18 (#107)
* fix peerDependencies to handle angular >=18
* build(package.json): upgrade angular 18
* refactor(lib): removed renderer2 not used
* docs(readme): add table installation dependencies
2024-07-10 05:59:58 +02:00
dependabot[bot]
64576c9250
Build(deps-dev): Bump follow-redirects from 1.15.4 to 1.15.6 (#103)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-18 12:31:02 +01:00
dependabot[bot]
f66675dd38
Build(deps-dev): Bump ip from 2.0.0 to 2.0.1 (#102) 2024-02-21 05:39:26 +01:00
Lorenzo Iovino
a7953268a0
Release 1.4.2 (#101) 2024-01-30 16:33:53 +01:00
Lorenzo Iovino
b4cbee2b05
Release 1.4.2 (#100) 2024-01-30 16:11:12 +01:00
Lorenzo Iovino
2d228edde5
Fix readme.md lint (#99) 2024-01-30 15:52:12 +01:00
Lorenzo Iovino
7c20b83d33
Fix .gitignore and build demo project (#98)
* Update package-lock.json

* Add gitignore editor folders

* Fix demo build missing dependency
2024-01-30 15:22:06 +01:00
Lorenzo Iovino
5f80320afd
Update README.md 2024-01-11 16:15:07 +01:00
Lorenzo Iovino
79b912b842
Update README.md 2024-01-11 16:03:14 +01:00
Lorenzo Iovino
cd6fbdd6bd
Add files via upload 2024-01-11 16:00:36 +01:00
Lorenzo Iovino
fea9ce80ca
Update README.md 2024-01-11 15:59:55 +01:00
Lorenzo Iovino
c039c05203
Update README.md 2024-01-11 15:44:44 +01:00
Lorenzo Iovino
08489d3e50
Update README.md 2024-01-11 15:44:10 +01:00
Lorenzo Iovino
8b7a07aeb3
Update README.md 2024-01-11 15:25:34 +01:00
Lorenzo Iovino
26b739726f Ref changed folder structure and lib 2024-01-10 01:34:41 +01:00
Lorenzo Iovino
f2a8edb15f
Update to angular 17 (#97)
* Added tags

* Update to angular 14

* Update to angular 15

* Update typescript to ^4.9.3

* Update to angular 16

* Ref added strict null checking for parentElement

* Update typescript to ^5.2

* Update zone.js to ^0.14.1

* Update typescript to 5.2.2

* Update to angular 17

* Fix fixed dependencies

* Fix test suite
2024-01-10 00:33:32 +01:00
Lorenzo Iovino
e0bc123cd7
Merge pull request #96 from thisloke/dependabot/npm_and_yarn/npm_and_yarn-security-group-fce814f1c4
Build(deps-dev): Bump the npm_and_yarn group group with 2 updates
2024-01-09 20:29:11 +01:00
dependabot[bot]
2591030747
Build(deps-dev): Bump the npm_and_yarn group group with 2 updates
Bumps the npm_and_yarn group group with 2 updates: [@angular-devkit/build-angular](https://github.com/angular/angular-cli) and [postcss](https://github.com/postcss/postcss).


Updates `@angular-devkit/build-angular` from 13.3.9 to 17.0.9
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.3.9...17.0.9)

Updates `postcss` from 8.4.5 to 8.4.31
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.5...8.4.31)

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:development
  dependency-group: npm_and_yarn-security-group
- dependency-name: postcss
  dependency-type: indirect
  dependency-group: npm_and_yarn-security-group
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 15:30:36 +00:00
Lorenzo Iovino
2f4bf93e8c
Merge pull request #95 from thisloke/dependabot/npm_and_yarn/npm_and_yarn-security-group-fce814f1c4
Build(deps-dev): Bump the npm_and_yarn group group with 2 updates
2024-01-09 16:28:44 +01:00
dependabot[bot]
4c087fd803
Build(deps-dev): Bump the npm_and_yarn group group with 2 updates
Bumps the npm_and_yarn group group with 2 updates: [@angular-devkit/build-angular](https://github.com/angular/angular-cli) and [postcss](https://github.com/postcss/postcss).


Updates `@angular-devkit/build-angular` from 13.3.9 to 17.0.9
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.3.9...17.0.9)

Updates `postcss` from 8.4.5 to 8.4.31
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.5...8.4.31)

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:development
  dependency-group: npm_and_yarn-security-group
- dependency-name: postcss
  dependency-type: indirect
  dependency-group: npm_and_yarn-security-group
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 15:28:25 +00:00
Lorenzo Iovino
92180ba8ff
Merge pull request #91 from thisloke/dependabot/npm_and_yarn/babel/traverse-7.23.7
Build(deps-dev): Bump @babel/traverse from 7.18.6 to 7.23.7
2024-01-09 16:26:24 +01:00
Lorenzo Iovino
ed2d307b54
Merge pull request #90 from thisloke/dependabot/npm_and_yarn/follow-redirects-1.15.4
Build(deps-dev): Bump follow-redirects from 1.15.1 to 1.15.4
2024-01-09 16:26:12 +01:00
Lorenzo Iovino
3b6e4fd0ba Merge branch 'master' into dependabot/npm_and_yarn/follow-redirects-1.15.4 2024-01-09 16:25:34 +01:00
dependabot[bot]
2df5003980
Build(deps-dev): Bump @babel/traverse from 7.18.6 to 7.23.7
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.18.6 to 7.23.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.7/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 15:24:25 +00:00
Lorenzo Iovino
56e9cf1095
Merge pull request #75 from thisloke/dependabot/npm_and_yarn/http-cache-semantics-4.1.1
Build(deps): Bump http-cache-semantics from 4.1.0 to 4.1.1
2024-01-09 16:23:50 +01:00
dependabot[bot]
5dc6090670
Build(deps-dev): Bump follow-redirects from 1.15.1 to 1.15.4
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.1 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.1...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 15:23:50 +00:00
Lorenzo Iovino
94a16c3e61
Merge pull request #74 from thisloke/dependabot/npm_and_yarn/ua-parser-js-0.7.33
Build(deps): Bump ua-parser-js from 0.7.31 to 0.7.33
2024-01-09 16:23:38 +01:00
Lorenzo Iovino
64885d6781
Merge pull request #73 from thisloke/dependabot/npm_and_yarn/json5-2.2.3
Build(deps): Bump json5 from 2.2.1 to 2.2.3
2024-01-09 16:23:25 +01:00
Lorenzo Iovino
9cbe58ed50
Merge pull request #72 from thisloke/dependabot/npm_and_yarn/decode-uri-component-0.2.2
Build(deps): Bump decode-uri-component from 0.2.0 to 0.2.2
2024-01-09 16:23:11 +01:00
Lorenzo Iovino
07f186e758
Merge pull request #71 from thisloke/dependabot/npm_and_yarn/engine.io-6.2.1
Build(deps): Bump engine.io from 6.2.0 to 6.2.1
2024-01-09 16:22:56 +01:00
Lorenzo Iovino
fdbdc1e59c
Merge pull request #70 from thisloke/dependabot/npm_and_yarn/loader-utils-2.0.4
Build(deps): Bump loader-utils from 2.0.3 to 2.0.4
2024-01-09 16:22:43 +01:00
Lorenzo Iovino
f609316826
Merge pull request #69 from thisloke/dependabot/npm_and_yarn/terser-and-angular-devkit/build-angular-5.14.2
Build(deps): Bump terser and @angular-devkit/build-angular
2024-01-09 16:21:03 +01:00
Lorenzo Iovino
a829d00c3b Merge branch 'master' into dependabot/npm_and_yarn/terser-and-angular-devkit/build-angular-5.14.2 2024-01-09 16:05:01 +01:00
Lorenzo Iovino
c0beb97251 Release 1.3.2 2024-01-09 15:21:34 +01:00
Lorenzo Iovino
3ab02f78f3 Fix repository url changed 2024-01-09 15:20:35 +01:00
Lorenzo Iovino
9f89679820 Release 1.3.1 2024-01-09 09:02:17 +01:00
Lorenzo Iovino
134c084a6d Add tests ci pipeline in gh actions 2024-01-09 08:45:55 +01:00
Lorenzo Iovino
29e5172002 Add tests ci pipeline in gh actions 2024-01-09 08:33:39 +01:00
Lorenzo Iovino
a5964427b3
Add tests ci pipeline in gh actions 2024-01-09 08:20:21 +01:00
Lorenzo Iovino
b6d12f3597 Added different pipeline for different version type 2024-01-09 08:09:49 +01:00
Lorenzo Iovino
ad73dde0d1 Fixed npmpub version node 2024-01-09 07:57:59 +01:00
Lorenzo Iovino
f6e386811e Add tests CI pipeline 2024-01-09 07:45:41 +01:00
dependabot[bot]
a1675cc7dc
Build(deps): Bump http-cache-semantics from 4.1.0 to 4.1.1
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 14:15:22 +00:00
dependabot[bot]
e76f81f934
Build(deps): Bump ua-parser-js from 0.7.31 to 0.7.33
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.31 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.31...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 13:36:21 +00:00
dependabot[bot]
80ce7fdf33
Build(deps): Bump json5 from 2.2.1 to 2.2.3
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 23:45:08 +00:00
dependabot[bot]
319dbe525a
Build(deps): Bump decode-uri-component from 0.2.0 to 0.2.2
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 22:13:46 +00:00
dependabot[bot]
fc3f2eea2d
Build(deps): Bump engine.io from 6.2.0 to 6.2.1
Bumps [engine.io](https://github.com/socketio/engine.io) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/socketio/engine.io/releases)
- [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/engine.io/compare/6.2.0...6.2.1)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-22 05:39:41 +00:00
dependabot[bot]
49f020c6d8
Build(deps): Bump loader-utils from 2.0.3 to 2.0.4
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-16 07:27:15 +00:00
dependabot[bot]
28e91082f5
Build(deps): Bump terser and @angular-devkit/build-angular
Bumps [terser](https://github.com/terser/terser) to 5.14.2 and updates ancestor dependency [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies need to be updated together.


Updates `terser` from 5.11.0 to 5.14.2
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.11.0...v5.14.2)

Updates `@angular-devkit/build-angular` from 13.3.8 to 13.3.9
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.3.8...13.3.9)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 18:29:24 +00:00
Lorenzo Iovino
a11957ab35
Merge pull request #68 from lokenxo/dependabot/npm_and_yarn/loader-utils-2.0.3
Build(deps): Bump loader-utils from 2.0.2 to 2.0.3
2022-11-14 19:28:30 +01:00
dependabot[bot]
96fb8a7dea
Build(deps): Bump loader-utils from 2.0.2 to 2.0.3
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-09 10:47:42 +00:00
Lorenzo Iovino
004e4a23e3
Merge pull request #67 from petrce/master
Updated to Angular 13
2022-07-07 12:46:50 +02:00
Petr Čečil
b2aa37eeb6 updated to Angular 13 2022-07-07 11:01:27 +01:00
Lorenzo Iovino
73b65ce50f
Merge pull request #44 from lokenxo/dependabot/npm_and_yarn/elliptic-6.5.4
Build(deps): Bump elliptic from 6.5.3 to 6.5.4
2021-03-13 23:21:02 +01:00
dependabot[bot]
95c8bb9c72
Build(deps): Bump elliptic from 6.5.3 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-09 00:45:42 +00:00
Lorenzo Iovino
08a03ae077
Merge pull request #42 from lokenxo/dependabot/npm_and_yarn/http-proxy-1.18.1
Bump http-proxy from 1.18.0 to 1.18.1
2020-12-01 15:11:53 +01:00
Lorenzo Iovino
293b1dc578
Merge pull request #40 from lokenxo/dependabot/npm_and_yarn/elliptic-6.5.3
Bump elliptic from 6.5.2 to 6.5.3
2020-12-01 15:11:41 +01:00
Lorenzo Iovino
80066b732f
Merge pull request #39 from lokenxo/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-12-01 15:11:30 +01:00
Lorenzo Iovino
7978593d15
Merge pull request #37 from lokenxo/dependabot/npm_and_yarn/websocket-extensions-0.1.4
Bump websocket-extensions from 0.1.3 to 0.1.4
2020-12-01 15:11:16 +01:00
dependabot[bot]
34ca5b65eb
Bump http-proxy from 1.18.0 to 1.18.1
Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/http-party/node-http-proxy/releases)
- [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-07 08:54:03 +00:00
dependabot[bot]
65f15d609e
Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-30 10:38:44 +00:00
dependabot[bot]
351d09beb9
Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-16 17:05:29 +00:00
dependabot[bot]
af88b0a6da
Bump websocket-extensions from 0.1.3 to 0.1.4
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-06 13:12:36 +00:00
Lorenzo Iovino
d2401650b6
Merge pull request #33 from giacomoferlaino/master
Refactored code to improve testing and expressiveness
2020-03-24 21:46:29 +01:00
Giacomo Ferlaino
0cd17ab15b ref: Created a dedicated method to determine if the element has overflow or not 2020-03-18 02:00:36 +01:00
Giacomo Ferlaino
0de40db2b6 ref: Decomposed checkOverflow method
Added hasXAxisOverflow method.
Added hasYAxisOverflow method.
2020-03-18 01:25:09 +01:00
lorenzo
8bc38a7afc Feat: added headless singleRun script in package.json and in build pipeline 2020-03-16 12:34:23 +01:00
Lorenzo Iovino
35736e9af0
Merge pull request #32 from giacomoferlaino/master
Added Ng2FittextDirective class unit tests
2020-03-16 12:28:51 +01:00
Lorenzo Iovino
c184e6c1ff
Update npmpub.yml 2020-03-16 12:23:46 +01:00
Giacomo Ferlaino
06c5055ab8 ref: Improved README file 2020-03-13 23:02:47 +01:00
Giacomo Ferlaino
e90507b6b6 feat: Added isVisible method tests 2020-03-13 22:27:30 +01:00
Giacomo Ferlaino
ce51adb1fa feat: Added isDone method test 2020-03-13 22:21:35 +01:00
Giacomo Ferlaino
2e73f1c9ee feat: Added getStartFontSizeFromWeight method tests 2020-03-13 22:10:33 +01:00
Giacomo Ferlaino
e0c4c6dd99 feat: Added checkOverflow method tests 2020-03-13 21:53:48 +01:00
Giacomo Ferlaino
afa67c729b feat: Added calculateFontSize method test 2020-03-13 21:26:45 +01:00
Giacomo Ferlaino
b3aab20ac2 feat: Added getFontSize method test 2020-03-13 21:26:11 +01:00
Giacomo Ferlaino
e54f881e55 feat: Added setFontSize method unit tests 2020-03-13 00:52:56 +01:00
Giacomo Ferlaino
889b0364a9 feat: Added headless test configuration
(vscode debug support)
2020-03-13 00:51:50 +01:00
Giacomo Ferlaino
7fe1b1ab30 feat: Added headless test command 2020-03-12 22:47:14 +01:00
Giacomo Ferlaino
4e79341410 fix: Enabled decorators support for VSCode 2020-03-12 22:32:26 +01:00
Lorenzo Iovino
59cddd4f47
Update package.json 2020-03-12 21:59:56 +01:00
Lorenzo Iovino
9469556b9f
Update npmpub.yml 2020-03-12 21:59:09 +01:00
Lorenzo Iovino
76d21cb348
Update npmpub.yml 2020-03-12 21:55:41 +01:00
Lorenzo Iovino
c60a68d20e
Update npmpub.yml 2020-03-12 21:53:28 +01:00
lorenzo
c0612489d7 Fix: typo in README.md; Fix: package.json script 2020-03-12 21:51:04 +01:00
Lorenzo Iovino
66b9fe7a7e
Create npmpub.yml 2020-03-12 21:43:44 +01:00
lorenzo
18e16fe2e8 Ref: changed file and folder organization 2020-03-12 21:43:21 +01:00
Lorenzo Iovino
8a191dc554
Merge pull request #31 from giacomoferlaino/master
Prettier code formatter integration
2020-03-12 12:41:00 +01:00
Giacomo Ferlaino
1c902e2d90 ref: Formatted code using Prettier rules 2020-03-12 00:00:35 +01:00
Giacomo Ferlaino
1badcaf080 feat: Added Prettier code formatter to standardize code formatting 2020-03-11 23:51:35 +01:00
lorenzo
37047b241d Update version 1.2.10 2020-02-12 15:27:47 +01:00
lorenzo
13eda2606c Fix: publish script in package.json 2020-02-12 15:26:32 +01:00
lorenzo
a1846c335a Feat: removed custom packaging script in favour of ng-packger; Feat: update with angular9 dependencies 2020-02-12 11:40:50 +01:00
Lorenzo Iovino
404f3d1c39
Merge pull request #26 from lokenxo/dependabot/npm_and_yarn/tar-2.2.2
Bump tar from 2.2.1 to 2.2.2
2019-11-22 20:05:28 +01:00
dependabot[bot]
950e00c90d
Bump tar from 2.2.1 to 2.2.2
Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v2.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-11-14 08:11:53 +00:00
Lorenzo Iovino
bb309d6c0c
Merge pull request #25 from lokenxo/dependabot/npm_and_yarn/mixin-deep-1.3.2
Bump mixin-deep from 1.3.1 to 1.3.2
2019-11-14 09:11:13 +01:00
Lorenzo Iovino
3010068b6e
Merge pull request #24 from lokenxo/dependabot/npm_and_yarn/fstream-1.0.12
Bump fstream from 1.0.11 to 1.0.12
2019-11-14 09:10:53 +01:00
Lorenzo Iovino
376a74075e Fix typo in README.md 2019-11-05 10:24:19 +01:00
dependabot[bot]
e98e96d2ca
Bump mixin-deep from 1.3.1 to 1.3.2
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-11-05 09:24:17 +00:00
dependabot[bot]
80c63fb056
Bump fstream from 1.0.11 to 1.0.12
Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/npm/fstream/releases)
- [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2019-11-05 09:24:17 +00:00
Lorenzo Iovino
e6df3f0926 Version upgrade 1.2.8 2019-11-05 10:22:39 +01:00
Lorenzo Iovino
c81bd1b8e9
Merge pull request #23 from ljupcospeci/patch-1
Output new font size when it changes
2019-11-05 10:19:08 +01:00
Ljupco Petkovski
9e3e3458f5
Output new font size when it changes 2019-10-21 13:03:54 +02:00
Lorenzo Iovino
5ec23f72c5 Version upgrade 1.2.7 2019-10-14 12:46:00 +02:00
Lorenzo Iovino
0ae3c60b21 Version upgrade 1.2.7 2019-10-14 12:40:22 +02:00
Lorenzo Iovino
5e254729e8
Merge pull request #22 from davidstellini/patch-1
Fix AOT issue
2019-10-10 21:52:12 +02:00
David Stellini
68a6a1b4ec
Fix AOT issue
This library breaks when running the production build on Angular 8 using AOT, as per https://github.com/DesertFoxNV/ngx-autosize-input/blob/master/projects/ngx-autosize-input/src/lib/auto-size-input.directive.ts
This is the error: `Ng2FittextDirective, Expected 0 arguments, but got 1.`
This MR fixes this issue.
2019-10-10 16:19:47 +03:00
Lorenzo Iovino
cf490022b4
Merge pull request #21 from lokenxo/add-license-1
Create LICENSE
2019-05-09 11:58:23 +02:00
Lorenzo Iovino
4e61062de8
Create LICENSE 2019-05-09 11:58:13 +02:00
Lorenzo Iovino
570ce06ea4 Version upgrade @1.2.6 2019-05-09 11:42:22 +02:00
Lorenzo Iovino
f68af94870 Fix: typo licence in README.md 2019-05-09 11:39:45 +02:00
Lorenzo Iovino
423ee0c237 Fix: added deprecated useMaxFontSize to prevent broken builds 2019-05-06 12:48:31 +02:00
Lorenzo Iovino
ca1576015d Ref: clean code
Ref: update examples
2019-05-06 10:21:16 +02:00
Lorenzo Iovino
43d4cf66f4 Ref: maxFontSize instead useMaxFontSize 2019-05-03 17:07:42 +02:00
Lorenzo Iovino
ded7196bcc Version upgrade @1.2.2 2019-05-03 16:20:58 +02:00
Lorenzo Iovino
9b02a1b1ff Ref: dev example updated;
Feat: update package.json;
2019-05-03 16:16:17 +02:00
Lorenzo Iovino
4be121c5ae Fix: Added README.md to published build 2019-02-07 22:25:17 +01:00
Lorenzo Iovino
a45f572a8c Ref: Changed description of publishPackage.json 2019-02-06 00:06:14 +01:00
Lorenzo Iovino
8c91a36e94 Feat: prepublish script added in package.json. Fix: at end of publish need to remove dist folder 2019-02-05 10:59:07 +01:00
Lorenzo Iovino
181595eeca Fix: npm run publich copy also readme.md in dist folder 2019-02-05 10:53:35 +01:00
Lorenzo Iovino
1b95571a88 Fix: name typo in package.json 2019-02-05 02:01:20 +01:00
Lorenzo Iovino
4fc1e71f5f Ref: Typo 2019-02-05 01:44:04 +01:00
Lorenzo Iovino
a4fc14af06 Fix: Issues #14,#15,#19,#20. Ref: Deleted angular-librarian and added scripts in package.json to manage publishing; Version upgrade 2019-02-05 01:42:22 +01:00
Lorenzo Iovino
f5b3989236
Merge pull request #18 from nischi/master
Set a frame of versions for angular, it works also in angular 5
2018-03-08 20:24:33 +01:00
Thierry Nischelwitzer
d0bb6f14e7 Set a frame of versions for angular, it works also in angular 5 2018-03-08 07:11:46 +01:00
Lorenzo Iovino
190b933404 README updated 2017-11-14 11:35:26 +01:00
Lorenzo Iovino
1434f1f949 fix 2017-11-14 11:23:23 +01:00
Lorenzo Iovino
3705c272fe 1.1.0 2017-11-14 11:08:54 +01:00
Lorenzo Iovino
e625f9fd30 Added angular-librarian for manage library 2017-11-14 11:07:08 +01:00
44 changed files with 14465 additions and 320 deletions

21
.github/workflows/mirror-to-forgejo.yml vendored Normal file
View file

@ -0,0 +1,21 @@
name: Mirror to Forgejo
on:
push:
branches: ["**"]
tags: ["**"]
delete:
jobs:
mirror:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push to Forgejo
run: |
git remote add forgejo https://loke:${{ secrets.FORGEJO_TOKEN }}@git.lorenzoiovino.com/loke/ng2-fittext.git
git push forgejo --all --force
git push forgejo --tags --force

22
.github/workflows/npmpub.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Publish to NPM
on:
push:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest]
node-version: [21.x]
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npm run pack
- run: cp README.md ./dist/lib/README.md
- uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
package: './dist/lib/package.json'

21
.github/workflows/tests.yml vendored Normal file
View file

@ -0,0 +1,21 @@
name: Run CI Tests
on:
push:
branches:
- '*'
- '!master'
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest]
node-version: [21.x]
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npm run test:headless:singleRun

17
.gitignore vendored
View file

@ -1,11 +1,10 @@
# Node generated files
build
coverage
dist
debug.log
node_modules
npm-debug.log
# OS generated files
Thumbs.db
.DS_Store
# Ignored files
*.js
*.map
*.d.ts
out-tsc
/.vs
/.angular
.idea
.DS_Store

6
.idea/vcs.xml generated
View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -1,7 +0,0 @@
# Node generated files
node_modules
npm-debug.log
# OS generated files
Thumbs.db
.DS_Store
# Ignored files

20
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,20 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "attach",
"name": "Unit tests",
"address": "localhost",
"port": 9333,
"sourceMaps": true,
"webRoot": "${workspaceFolder}",
"pathMapping": {
"/_karma_webpack_": "${workspaceFolder}"
}
}
]
}

5
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"prettier.configPath": "./src/.prettierrc",
"editor.formatOnSave": true,
"javascript.implicitProjectConfig.experimentalDecorators": true
}

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Lorenzo Iovino
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

142
README.md
View file

@ -1,133 +1,141 @@
# ng2-fittext
<h1 align="center">
ng2-fittext
</h1>
An Angular2 directive written in pure typescript (and without jquery!), for autoscale the font size of an element to fit an upper level container.
<p align="center">An Angular 2+ directive, written in pure TypeScript (without jQuery!), to automatically scale the font size of an element so that it fits within its parent container.</p>
How many times your font doesn't scale automatically to fit the size of the container? Always, if you don't say it to do that!
How you can say it? ng2-fittext!
[![Download via NPM](https://img.shields.io/npm/v/ng2-fittext.svg)](https://www.npmjs.com/package/ng2-fittext)
![Angular](https://img.shields.io/badge/Angular-18-green.svg)
![Build Status](https://github.com/thisloke/ng2-fittext/actions/workflows/tests.yml/badge.svg)
![Contributions welcome](https://img.shields.io/badge/contributions-welcome-green.svg)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
### Demo
## Demo
Check out the live demo: [ng2-fittext Demo](https://stackblitz.com/edit/stackblitz-starters-7ghzat?file=src%2Fmain.ts)
<div>
<img src="ng2-fittext-example.gif" alt="ng2 fittext example" border="0" style="width: 70%" align="center"/>
</div>
http://plnkr.co/edit/v0TQaYepV4E2Heur02j5?p=preview
## Installation
### Installation
Install the library using npm according to your angular version (see table below):
| Angular | ng2-fittext | command |
|---------|-------------|-------------------------------|
| <= v17 | 1.4.3 | ```npm i ng2-fittext@1.4.3``` |
| >= v18 | 2.0.0 | ```npm i ng2-fittext@2.0.0``` |
Install the library
```sh
$ npm install --save ng2-fittext
```
### Usage
Import it in your Angular2 project like a module
1. Import the module in your Angular application:
```ts
import { Ng2FittextModule } from "ng2-fittext";
1) Declare it in your module
```sh
import {Ng2FittextModule} from "ng2-fittext/ng2fittext";
@NgModule({
imports: [
Ng2FittextModule
]
imports: [Ng2FittextModule]
})
```
2) Use it in your components
Fit with specified container (can be the parent or a deeper ancestor)
```sh
2. Use the directive in your components:
```ts
import { Component } from '@angular/core';
@Component({
selector: 'label',
template: `<div #container>
<div [fittext]="true" [activateOnResize]="true" [container]="container" [useMaxFontSize]="false">Bla bla bla...</div>
</div>`
template: `
<div #container>
<div [fittext]="true" [activateOnResize]="true" [container]="container">Bla bla bla...</div>
</div>
`
})
export class LabelComponent {}
```
### Examples
Fit with the parent element (this works if you have a variable number of element between element and parent)
```sh
Fit to the parent element (works if you have a variable number of elements between your element and its parent):
```ts
import { Component } from '@angular/core';
@Component({
selector: 'label',
template: `<div>
<div [fittext]="true" [activateOnResize]="true" [useMaxFontSize]="false">Bla bla bla...</div>
</div>`
template: `
<div>
<div [fittext]="true" [activateOnResize]="true">Bla bla bla...</div>
</div>
`
})
export class LabelComponent {}
```
**NEW! Support for auto-resize input box:**
**NEW! Support for autoresize input box!**
```sh
```ts
import { Component } from '@angular/core';
@Component({
selector: 'inputbox',
template: `<div #container>
<input [fittext]="true" [activateOnResize]="true" [container]="container" [activateOnInputEvents]="true" [useMaxFontSize]="false">`,
</div>`
template: `
<div #container>
<input [fittext]="true" [activateOnResize]="true" [container]="container" [activateOnInputEvents]="true">
</div>
`
})
export class InputBoxComponent {}
```
**NEW! Support for maxFontSize:**
**NEW! Support for maxFontSize!**
```sh
```ts
import { Component } from '@angular/core';
@Component({
selector: 'inputbox',
template: `<div>
<input [fittext]="true" [activateOnResize]="true" [activateOnInputEvents]="true" [useMaxFontSize]="true">`,
</div>`
template: `
<div>
<input [fittext]="true" [activateOnResize]="true" [activateOnInputEvents]="true" [minFontSize]="40" [maxFontSize]="100">
</div>
`
})
export class InputBoxComponent {}
```
Parameters:
Input Parameters:
| Parameter | Description | Values |
| --- | --- | --- |
| fittext | is the selector of the directive | true/false
| container | the container to fit (if not present it fit default to parent container)| ElementRef
| activateOnResize | enable/disable the autofit in case of window resize | true or false (default false)
| activateOnInputEvents | enbale/disable the autofit in case of input box events (keydown, keyup etc..) | true or false (default false)
| useMaxFontSize | Use font-size from element as maximum font-size | enable/disable the usage of max font-size of the lement
| minFontSize | minimal font size | number, default is 7
| modelToWatch | pass model to watch, when this model changes -> font size is automatically recalculated | any type of model
| ------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------- |
| fittext | Directive selector | true/false |
| container | The container to fit (if not present it fits to the parent container by default) | ElementRef |
| activateOnResize | Enable/disable the autofit on window resize | true or false (default false) |
| activateOnInputEvents | Enable/disable the auto-fit in case of input box events (keydown, keyup etc..) | true or false (default false) |
| maxFontSize | Maximum font size | Number (default is 1000) |
| **!deprecated!** useMaxFontSize | Use max font size if is true | Deprecated! |
| minFontSize | Minimum font size | Number (default is 7) |
| modelToWatch | Pass model to watch; when this model changes, font size is automatically recalculated | Any type of model |
Output Parameters:
| Parameter | Description | Values |
| --------------- | ----------------- | ------ |
| fontSizeChanged | Current font size | string |
### Development
Want to contribute? Great!
Simply, clone the repository!
I created this library because I always spended too much time for solve this problem and because i didn't find nothing on the web (13/03/2017) that do this without jquery and easily integrable in angular2.
For sure is not a good implementation, maybe is not the best way to do it, but, it do the job.
I created this library because I always spent too much time solving this problem and didn't find anything on the web (as of 13/03/2017) that does this without jQuery and is easily integrable in Angular 2+.
While it might not be the best implementation, it gets the job done.
### Todos
- Write tests
- Find a better algorithm to find the font-size who fits better the container
- Find a performant algorithm to find the font size that fits the container better
License
----
ISC
## License
MIT
**Lorenzo I.**

140
angular.json Normal file
View file

@ -0,0 +1,140 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"dev": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss",
"prefix": "app"
},
"@schematics/angular:directive": {
"prefix": "app"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist",
"index": "./src/index.html",
"main": "./src/main.ts",
"polyfills": [
"zone.js"
],
"tsConfig": "tsconfig.app.json",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
],
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all",
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
]
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"buildTarget": "dev:build"
},
"configurations": {
"production": {
"buildTarget": "dev:build:production"
},
"development": {
"buildTarget": "dev:build:development"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"zone.js",
"zone.js/testing"
],
"tsConfig": "tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
],
"scripts": []
}
}
}
},
"lib": {
"projectType": "library",
"root": "projects/lib",
"sourceRoot": "projects/lib/src",
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"project": "projects/lib/ng-package.json"
},
"configurations": {
"production": {
"tsConfig": "projects/lib/tsconfig.lib.prod.json"
},
"development": {
"tsConfig": "projects/lib/tsconfig.lib.json"
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"tsConfig": "projects/lib/tsconfig.spec.json",
"polyfills": [
"zone.js",
"zone.js/testing"
]
}
}
}
}
},
"cli": {
"analytics": false
}
}

View file

@ -1 +0,0 @@
export {Ng2FittextModule} from './src/ng2fittext.module';

BIN
ng2-fittext-example.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

View file

@ -1 +0,0 @@
export {Ng2FittextModule} from './src/ng2fittext.module';

13258
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,43 +1,46 @@
{
"name": "ng2-fittext",
"version": "1.0.24",
"description": "An Angular2 directive for autoscale the font size of an element to fit an upper level container.",
"main": "index.js",
"name": "dev",
"version": "0.0.0",
"scripts": {
"prepublish": "tsc",
"test": "echo \"Error: no test specified\" && exit 1"
"ng": "./node_modules/.bin/ng",
"start": "node node_modules/@angular/cli/bin/ng serve",
"build": "node node_modules/@angular/cli/bin/ng build --configuration production",
"test": "node node_modules/@angular/cli/bin/ng test lib",
"test:headless": "node node_modules/@angular/cli/bin/ng test --browsers=ChromeHeadless",
"test:headless:singleRun": "node node_modules/@angular/cli/bin/ng test --no-watch --no-progress --browsers=ChromeHeadless lib",
"release:minor": "cd ./projects/lib/ && npm version minor",
"release:major": "cd ./projects/lib/ && npm version major",
"release:patch": "cd ./projects/lib/ && npm version patch",
"pack": "npm run build lib && cp ./README.md ./dist/lib/README.md"
},
"repository": {
"type": "git",
"url": "git+https://github.com/lokenxo/ng2-fittext.git"
},
"keywords": [
"angular2",
"ng2",
"fittext",
"ng2-fittext",
"responsivefont",
"ng-fittext angular2",
"angular2 fittext",
"ng2 fittext"
],
"author": "Lorenzo Iovino",
"license": "ISC",
"bugs": {
"url": "https://github.com/lokenxo/ng2-fittext/issues"
},
"homepage": "https://github.com/lokenxo/ng2-fittext#readme",
"peerDependencies": {
"@angular/core": ">=4.0.1",
"rxjs": "^5.4.0"
"private": true,
"dependencies": {
"@angular/animations": "^18.0.6",
"@angular/common": "^18.0.6",
"@angular/compiler": "^18.0.6",
"@angular/core": "^18.0.6",
"@angular/forms": "^18.0.6",
"@angular/platform-browser": "^18.0.6",
"@angular/platform-browser-dynamic": "^18.0.6",
"@angular/router": "^18.0.6",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.2"
},
"devDependencies": {
"typescript": "~2.2.2"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"@angular/core": "^4.3.4"
"@angular-devkit/build-angular": "^18.0.7",
"@angular/cli": "^18.0.7",
"@angular/compiler-cli": "^18.0.6",
"@types/jasmine": "~5.1.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^18.18.0",
"jasmine-core": "~5.1.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"ng-packagr": "^18.0.0",
"typescript": "5.4.5"
}
}

24
projects/lib/README.md Normal file
View file

@ -0,0 +1,24 @@
# Lib
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.0.
## Code scaffolding
Run `ng generate component component-name --project lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project lib`.
> Note: Don't forget to add `--project lib` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build lib` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build lib`, go to the dist folder `cd dist/lib` and run `npm publish`.
## Running unit tests
Run `ng test lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.

View file

@ -0,0 +1,7 @@
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/lib",
"lib": {
"entryFile": "src/public-api.ts"
}
}

43
projects/lib/package.json Normal file
View file

@ -0,0 +1,43 @@
{
"name": "ng2-fittext",
"version": "2.0.0",
"description": "Ng2-fittext: An Angular2+ directive that change the font size until it fit the upper level container dimension.",
"keywords": [
"ng2-fittext",
"fittext",
"angular",
"angular 2",
"angular 4",
"angular 5",
"angular 6",
"angular 7",
"angular 8",
"angular 9",
"angular 10",
"angular 11",
"angular 12",
"angular 13",
"angular 14",
"angular 15",
"angular 16",
"angular 17",
"angular 18",
"fit text",
"responsive text",
"responsive font size",
"font size"
],
"author": "Lorenzo Iovino",
"license": "MIT",
"peerDependencies": {
"@angular/common": ">=18.0.0",
"@angular/core": ">=18.0.0"
},
"dependencies": {
"tslib": "^2.3.0"
},
"repository": {
"url": "https://github.com/thisloke/ng2-fittext.git"
},
"sideEffects": false
}

View file

@ -0,0 +1,310 @@
import { Ng2FittextDirective } from './ng2-fittext.directive';
import { Renderer2, ElementRef } from '@angular/core';
describe('Class: Ng2FittextDirective', () => {
let ng2FittextDirective: Ng2FittextDirective;
let elMock: ElementRef;
beforeEach(() => {
elMock = {} as ElementRef;
ng2FittextDirective = new Ng2FittextDirective(elMock);
});
describe('Method: setFontSize', () => {
let newFontSize: number;
let isVisibleSpy: jasmine.Spy;
let isDoneSpy: jasmine.Spy;
beforeEach(() => {
newFontSize = 100;
isVisibleSpy = spyOn(ng2FittextDirective, 'isVisible').and.returnValue(
true
);
isDoneSpy = spyOn(ng2FittextDirective, 'isDone').and.returnValue(false);
elMock.nativeElement = {
style: {
setProperty: () => {},
},
};
});
it('Should not change the font size if the element is not visible', () => {
isVisibleSpy.and.returnValue(false);
const previousFontSize: number = ng2FittextDirective.getFontSize();
ng2FittextDirective.setFontSize(newFontSize);
expect(ng2FittextDirective.getFontSize()).toEqual(previousFontSize);
});
it('Should not change the font size if the fitting operation is done', () => {
isDoneSpy.and.returnValue(true);
const previousFontSize: number = ng2FittextDirective.getFontSize();
ng2FittextDirective.setFontSize(newFontSize);
expect(ng2FittextDirective.getFontSize()).toEqual(previousFontSize);
});
it('Should use the minFontSize property value if the specified font size is smaller', () => {
const minFontSize: number = ng2FittextDirective.minFontSize;
newFontSize = 5;
ng2FittextDirective.setFontSize(newFontSize);
const currentFontSize: number = ng2FittextDirective.getFontSize();
expect(currentFontSize).toEqual(minFontSize);
});
it('Should use the maxFontSize property value if the specified font size is bigger', () => {
const maxFontSize: number = ng2FittextDirective.maxFontSize;
newFontSize = 1001;
ng2FittextDirective.setFontSize(newFontSize);
const currentFontSize: number = ng2FittextDirective.getFontSize();
expect(currentFontSize).toEqual(maxFontSize);
});
it('Should set a new fontSize value', () => {
newFontSize = 500;
ng2FittextDirective.setFontSize(newFontSize);
const currentFontSize: number = ng2FittextDirective.getFontSize();
expect(currentFontSize).toEqual(newFontSize);
});
it('Should emit the font size change', () => {
newFontSize = 500;
spyOn(ng2FittextDirective.fontSizeChanged, 'emit');
ng2FittextDirective.setFontSize(newFontSize);
expect(ng2FittextDirective.fontSizeChanged.emit).toHaveBeenCalledWith(
newFontSize
);
});
it('Should update the nativeElement with the new font size', () => {
newFontSize = 500;
spyOn(ng2FittextDirective.el.nativeElement.style, 'setProperty');
ng2FittextDirective.setFontSize(newFontSize);
expect(
ng2FittextDirective.el.nativeElement.style.setProperty
).toHaveBeenCalledWith('font-size', `${newFontSize}px`);
});
});
describe('Method: getFontSize', () => {
it('Should return the current font size', () => {
expect(ng2FittextDirective.getFontSize()).toEqual(1000);
});
});
describe('Method: calculateFontSize', () => {
it('Should return the font size rounded down', () => {
expect(ng2FittextDirective.calculateFontSize(10, 3)).toEqual(3);
expect(ng2FittextDirective.calculateFontSize(9, 3)).toEqual(3);
expect(ng2FittextDirective.calculateFontSize(8, 3)).toEqual(2);
});
});
describe('Method: checkOverflow', () => {
let parentElementMock: HTMLElement;
let childrenElementMock: HTMLElement;
let hasXAxisOverflowSpy: jasmine.Spy;
let hasYAxisOverflowSpy: jasmine.Spy;
beforeEach(() => {
parentElementMock = {} as HTMLElement;
childrenElementMock = {} as HTMLElement;
hasXAxisOverflowSpy = spyOn(
ng2FittextDirective,
'hasXAxisOverflow'
).and.returnValue(false);
hasYAxisOverflowSpy = spyOn(
ng2FittextDirective,
'hasYAxisOverflow'
).and.returnValue(false);
});
it('Should return false if no overflow is present', () => {
expect(
ng2FittextDirective.checkOverflow(
parentElementMock,
childrenElementMock
)
).toBe(false);
});
it('Should return true if x axis has overflow', () => {
hasXAxisOverflowSpy.and.returnValue(true);
expect(
ng2FittextDirective.checkOverflow(
parentElementMock,
childrenElementMock
)
).toBe(true);
});
it('Should return true if y axis has overflow', () => {
hasYAxisOverflowSpy.and.returnValue(true);
expect(
ng2FittextDirective.checkOverflow(
parentElementMock,
childrenElementMock
)
).toBe(true);
});
});
describe('Method: getStartFontSizeFromHeight', () => {
it('Should return the container clientHeight value if the container is present', () => {
const containerClientHeight = 10;
ng2FittextDirective.container = {
clientHeight: containerClientHeight,
} as HTMLElement;
expect(ng2FittextDirective.getStartFontSizeFromHeight()).toEqual(
containerClientHeight
);
});
it('Should return the parentElement clientHeight value if no container is present', () => {
const parentlientHeight = 11;
elMock.nativeElement = {
parentElement: {
clientHeight: parentlientHeight,
},
} as HTMLElement;
expect(ng2FittextDirective.getStartFontSizeFromHeight()).toEqual(
parentlientHeight
);
});
});
describe('Method: isDone', () => {
it('Should return the done property value', () => {
const defaultDoneValue = false;
expect(ng2FittextDirective.isDone()).toBe(defaultDoneValue);
});
});
describe('Method: isVisible', () => {
it('Should return the true if getStartFontSizeFromHeight() is greater than zero', () => {
spyOn(ng2FittextDirective, 'getStartFontSizeFromHeight').and.returnValue(
1
);
expect(ng2FittextDirective.isVisible()).toBe(true);
});
it('Should return the false if getStartFontSizeFromHeight() is smaller or equal to zero', () => {
const spy = spyOn(
ng2FittextDirective,
'getStartFontSizeFromHeight'
).and.returnValue(0);
expect(ng2FittextDirective.isVisible()).toBe(false);
spy.and.returnValue(-1);
expect(ng2FittextDirective.isVisible()).toBe(false);
});
});
describe('Method: hasXAxisOverflow', () => {
let parentElementMock: HTMLElement;
let childrenElementMock: HTMLElement;
beforeEach(() => {
parentElementMock = {
clientWidth: 0,
} as HTMLElement;
childrenElementMock = {
scrollWidth: 0,
} as HTMLElement;
});
it('Should return false if no overflow is present on the x axis', () => {
expect(
ng2FittextDirective.hasXAxisOverflow(
parentElementMock,
childrenElementMock
)
).toBe(false);
});
it('Should return true if overflow is present on the x axis', () => {
childrenElementMock = {
scrollWidth: 2,
} as HTMLElement;
expect(
ng2FittextDirective.hasXAxisOverflow(
parentElementMock,
childrenElementMock
)
).toBe(true);
});
});
describe('Method: hasYAxisOverflow', () => {
let parentElementMock: HTMLElement;
let childrenElementMock: HTMLElement;
beforeEach(() => {
parentElementMock = {
clientHeight: 0,
} as HTMLElement;
childrenElementMock = {
clientHeight: 0,
} as HTMLElement;
});
it('Should return false if no overflow is present on the x axis', () => {
expect(
ng2FittextDirective.hasYAxisOverflow(
parentElementMock,
childrenElementMock
)
).toBe(false);
});
it('Should return true if overflow is present on the x axis', () => {
childrenElementMock = {
clientHeight: 2,
} as HTMLElement;
expect(
ng2FittextDirective.hasYAxisOverflow(
parentElementMock,
childrenElementMock
)
).toBe(true);
});
});
describe('Method: hasOverflow', () => {
let containerMock: any;
let parentElementMock: any;
beforeEach(() => {
containerMock = {
isContainer: true,
};
parentElementMock = {
isParentElement: true,
};
ng2FittextDirective.container = { ...containerMock };
ng2FittextDirective.el.nativeElement = {
parentElement: { ...parentElementMock },
} as HTMLElement;
});
it('Should calculate the overflow using the container if is present', () => {
spyOn(ng2FittextDirective, 'checkOverflow').and.callFake(
(parentElement: any, childrenElement: any) => {
expect(parentElement).toEqual(containerMock);
return true;
}
);
expect(ng2FittextDirective.hasOverflow()).toBe(true);
});
it('Should calculate the overflow using the parent element if the container is not present', () => {
if(ng2FittextDirective) {
delete (ng2FittextDirective as any).container;
}
spyOn(ng2FittextDirective, 'checkOverflow').and.callFake(
(parentElement: any, childrenElement: any) => {
expect(parentElement).toEqual(parentElementMock);
return true;
}
);
expect(ng2FittextDirective.hasOverflow()).toBe(true);
});
});
});

View file

@ -0,0 +1,170 @@
import {
AfterViewChecked,
AfterViewInit,
Directive,
ElementRef,
HostListener,
Input,
Output,
EventEmitter,
OnChanges,
OnInit,
} from '@angular/core';
@Directive({
selector: '[fittext]',
})
export class Ng2FittextDirective
implements AfterViewInit, OnInit, OnChanges, AfterViewChecked {
@Input('fittext') fittext: any;
@Input('activateOnResize') activateOnResize: boolean = true;
@Input('container') container: HTMLElement | null = null;
@Input('activateOnInputEvents') activateOnInputEvents: boolean = false;
@Input('minFontSize') minFontSize = 7;
@Input('maxFontSize') maxFontSize = 1000;
/* Deprecated */
@Input('useMaxFontSize') useMaxFontSize = true;
@Input('modelToWatch') modelToWatch: any;
@Output() fontSizeChanged: EventEmitter<number> = new EventEmitter();
private fontSize = 1000;
private speed = 1.05;
private done = false;
constructor(public el: ElementRef<HTMLElement>) {}
setFontSize(fontSize: number): void {
if (this.isVisible() && !this.isDone()) {
if (fontSize < this.minFontSize) {
fontSize = this.minFontSize;
}
if (fontSize > this.maxFontSize) {
fontSize = this.maxFontSize;
}
this.fontSize = fontSize;
this.fontSizeChanged.emit(fontSize);
this.el.nativeElement.style.setProperty(
'font-size',
fontSize.toString() + 'px'
);
}
}
getFontSize(): number {
return this.fontSize;
}
calculateFontSize(fontSize: number, speed: number): number {
return Math.floor(fontSize / speed);
}
checkOverflow(parent: HTMLElement, children: HTMLElement): boolean {
return (
this.hasXAxisOverflow(parent, children) ||
this.hasYAxisOverflow(parent, children)
);
}
hasXAxisOverflow(parent: HTMLElement, children: HTMLElement): boolean {
return children.scrollWidth - parent.clientWidth > 0;
}
hasYAxisOverflow(parent: HTMLElement, children: HTMLElement): boolean {
return children.clientHeight - parent.clientHeight > 0;
}
@HostListener('window:resize', ['$event'])
onResize(event: Event) {
this.done = false;
if (this.activateOnResize && this.fittext) {
if (this.activateOnInputEvents && this.fittext) {
this.setFontSize(this.getStartFontSizeFromHeight());
} else {
this.setFontSize(this.getStartFontSizeFromWeight());
}
this.ngAfterViewInit();
}
}
@HostListener('input', ['$event'])
onInputEvents(event: Event) {
this.done = false;
if (this.activateOnInputEvents && this.fittext) {
this.setFontSize(this.getStartFontSizeFromHeight());
this.ngAfterViewInit();
}
}
ngOnInit() {
this.done = false;
this.el.nativeElement.style.setProperty('will-change', 'content');
this.ngAfterViewInit();
}
ngAfterViewInit() {
if (this.isVisible() && !this.isDone()) {
if (this.fittext) {
if (this.hasOverflow()) {
if (this.fontSize > this.minFontSize) {
// iterate only until font size is bigger than minimal value
this.setFontSize(this.calculateFontSize(this.fontSize, this.speed));
this.ngAfterViewInit();
}
} else {
this.done = true;
}
}
}
}
ngOnChanges(changes: any): void {
if (changes.modelToWatch) {
// change of model to watch - call ngAfterViewInit where is implemented logic to change size
setTimeout(() => {
this.done = false;
this.setFontSize(this.maxFontSize);
this.ngAfterViewInit();
});
}
}
ngAfterViewChecked() {
if (this.fontSize > this.minFontSize) {
this.setFontSize(this.getStartFontSizeFromHeight());
this.ngAfterViewInit();
}
}
getStartFontSizeFromHeight(): number {
return this.container
? this.container.clientHeight
: this.el.nativeElement.parentElement!.clientHeight;
}
private getStartFontSizeFromWeight(): number {
return this.container
? this.container.clientWidth
: this.el.nativeElement.parentElement!.clientWidth;
}
isDone(): boolean {
return this.done;
}
isVisible(): boolean {
return this.getStartFontSizeFromHeight() > 0;
}
hasOverflow(): boolean {
return this.container
? this.checkOverflow(this.container, this.el.nativeElement)
: this.checkOverflow(
this.el.nativeElement.parentElement!,
this.el.nativeElement
);
}
}

View file

@ -0,0 +1,19 @@
import { Ng2FittextDirective } from './ng2-fittext.directive';
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
export { Ng2FittextDirective } from './ng2-fittext.directive';
@NgModule({
declarations: [Ng2FittextDirective],
exports: [Ng2FittextDirective],
imports: [CommonModule],
})
export class Ng2FittextModule {
static forRoot() {
return {
ngModule: Ng2FittextModule,
providers: [],
};
}
}

View file

@ -0,0 +1,6 @@
/*
* Public API Surface of lib
*/
export * from './ng2-fittext.directive';
export * from './ng2-fittext.module';

View file

@ -0,0 +1,14 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": []
},
"exclude": [
"**/*.spec.ts"
]
}

View file

@ -0,0 +1,10 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.lib.json",
"compilerOptions": {
"declarationMap": false
},
"angularCompilerOptions": {
"compilationMode": "partial"
}
}

View file

@ -0,0 +1,14 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/spec",
"types": [
"jasmine"
]
},
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

7
src/.prettierrc Normal file
View file

@ -0,0 +1,7 @@
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"arrowParens": "always"
}

View file

View file

@ -0,0 +1,30 @@
<h2>Add text or remove text from div (max and min font size)</h2>
<div style="border: 2px solid; overflow:hidden; width:100%; height:300px; font-size:520px;">
<div [fittext]="true"
[modelToWatch]="title"
[maxFontSize]="50"
[minFontSize]="30"
[activateOnResize]="true">{{title}}</div>
</div>
<h2>Add text or remove text from div (no max and no min font size)</h2>
<div style="border: 2px solid; overflow:hidden; width:100%; height:300px; font-size:520px;">
<div [fittext]="true"
[modelToWatch]="title"
[activateOnResize]="true">{{title}}</div>
</div>
<button (click)="click('add')"> ADD text</button>
<button (click)="click('remove')"> REMOVE text</button>
<br/>
<br/>
<h2>Write text in input box (text fit inside without overflowing)</h2>
<div #cont2 style="border: 2px solid; height:101px; width:300px;">
<input [fittext]="true"
style="width:100%; height:100px"
[activateOnResize]="true"
[activateOnInputEvents]="true"
[container]="cont2">
</div>

15
src/app/app.component.ts Normal file
View file

@ -0,0 +1,15 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'sdf fsd fsd fsdfsdfsdfsdfsfdf sdfsdf sdfs df fsdfsdfsdfsdfsfdf fsdfsdfsdfsdfsfdf fsdfsdfsdfsdfsfdf ' +
'fsdfsdfsdfsdfsfdf fsdfsdfsdfsdfsfdf';
click(par: string) {
this.title = par === 'add' ? (this.title + this.title) : (this.title.substring(0, this.title.length / 2 + 10));
}
}

17
src/app/app.module.ts Normal file
View file

@ -0,0 +1,17 @@
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { Ng2FittextModule } from '../../projects/lib/src/ng2-fittext.module';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
Ng2FittextModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

0
src/assets/.gitkeep Normal file
View file

View file

@ -0,0 +1,3 @@
export const environment = {
production: true
};

View file

@ -0,0 +1,15 @@
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
};
/*
* In development mode, to ignore zone related error stack frames such as
* `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
* import the following file, but please comment it out in production mode
* because it will have performance impact when throw error
*/
// import 'zone.js/dist/zone-error'; // Included with Angular CLI.

BIN
src/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

14
src/index.html Normal file
View file

@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Dev</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
</body>
</html>

12
src/main.ts Normal file
View file

@ -0,0 +1,12 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));

View file

@ -1,8 +0,0 @@
import { FittextDirective } from './fittext.directive';
describe('FittextDirective', () => {
it('should create an instance', () => {
const directive = new FittextDirective();
expect(directive).toBeTruthy();
});
});

View file

@ -1,134 +0,0 @@
import {Directive, ElementRef, Renderer, Input, AfterViewInit, AfterViewChecked, HostListener, OnInit, OnChanges, SimpleChanges} from '@angular/core';
@Directive({
selector: '[fittext]'
})
export class Ng2FittextDirective implements AfterViewInit, OnInit, OnChanges, AfterViewChecked {
@Input('fittext') fittext: any;
@Input('activateOnResize') activateOnResize: boolean;
@Input('container') container: any;
@Input('activateOnInputEvents') activateOnInputEvents: boolean;
@Input('useMaxFontSize') useMaxFontSize: boolean;
@Input('minFontSize') minFontSize = 7;
@Input('modelToWatch') modelToWatch: any;
private maxFontSize: number = 1000;
private fontSize: number = 1000;
private speed: number = 1.05;
private done: boolean = false;
constructor(public el: ElementRef, public renderer: Renderer) { }
setFontSize(fontSize) {
if (this.isVisible() && this.done === false) {
if (fontSize < this.minFontSize) {
// force that font size will never be lower than minimal allowed font size
fontSize = this.minFontSize;
}
this.fontSize = fontSize;
return this.el.nativeElement.style.setProperty('font-size', (fontSize).toString() + 'px');
}
}
calculateFontSize(fontSize, speed) {
// TODO Do with Gauss
return Math.floor(fontSize / speed);
}
checkOverflow(parent: any, children: any) {
let overflowX = children.scrollWidth - parent.clientWidth;
let overflowY = children.clientHeight - parent.clientHeight;
return (overflowX > 1 || overflowY > 1);
}
@HostListener('window:resize', ['$event'])
onResize() {
this.done = false;
if (this.activateOnResize && this.fittext) {
if (this.activateOnInputEvents && this.fittext) {
this.setFontSize(this.getStartFontSizeFromHeight());
} else {
this.setFontSize(this.getStartFontSizeFromWeight());
}
this.ngAfterViewInit();
}
}
@HostListener('input', ['$event'])
onInputEvents() {
this.done = false;
if (this.activateOnInputEvents && this.fittext) {
this.setFontSize(this.getStartFontSizeFromHeight());
this.ngAfterViewInit();
}
}
ngOnInit() {
this.done = false;
if (this.useMaxFontSize) {
this.maxFontSize = parseInt(this.getComputetStyle().fontSize, null);
}
if (this.fittext) {
this.setFontSize(this.maxFontSize);
}
this.el.nativeElement.style.setProperty('will-change', 'content');
}
ngAfterViewInit() {
if (this.isVisible() && this.done === false) {
if (this.fittext) {
let overflow = this.container ? this.checkOverflow(this.container, this.el.nativeElement)
: this.checkOverflow(this.el.nativeElement.parentElement, this.el.nativeElement);
if (overflow) {
if (this.fontSize > this.minFontSize) {
// iterate only until font size is bigger than minimal value
this.setFontSize(this.calculateFontSize(this.fontSize, this.speed));
this.ngAfterViewInit();
}
} else {
if (this.useMaxFontSize) {
if (this.fontSize > this.maxFontSize) {
this.maxFontSize = parseInt(this.getComputetStyle().fontSize, null);
this.setFontSize(this.maxFontSize);
}
}
this.done = true;
}
}
}
}
ngOnChanges(changes: any): void {
if (changes.modelToWatch) {
// change of model to watch - call ngAfterViewInit where is implemented logic to change size
setTimeout(_ => this.ngAfterViewInit() );
}
}
ngAfterViewChecked() {
if (this.fontSize > this.minFontSize) {
this.setFontSize(this.getStartFontSizeFromHeight());
this.ngAfterViewInit();
}
}
private getComputetStyle(): CSSStyleDeclaration {
return window.getComputedStyle(this.container ? this.container : this.el.nativeElement.parentElement);
}
private getStartFontSizeFromHeight(): number {
return this.container ? this.container.clientHeight : this.el.nativeElement.parentElement.clientHeight;
}
private getStartFontSizeFromWeight(): number {
return this.container ? this.container.clientWidth : this.el.nativeElement.parentElement.clientWidth;
}
private isVisible(): boolean {
return this.getStartFontSizeFromHeight() > 0;
}
}

View file

@ -1,11 +0,0 @@
import { NgModule } from '@angular/core';
import { Ng2FittextDirective } from "./ng2fittext.directive";
@NgModule({
declarations: [
Ng2FittextDirective
],
exports: [Ng2FittextDirective]
})
export class Ng2FittextModule {};

14
src/test.ts Normal file
View file

@ -0,0 +1,14 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);

15
tsconfig.app.json Normal file
View file

@ -0,0 +1,15 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": [
"node"
]
},
"files": [
"src/main.ts"
],
"include": [
"src/**/*.d.ts"
]
}

View file

@ -1,19 +1,41 @@
{
"compileOnSave": false,
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"target": "es5",
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"paths": {
"lib": [
"./dist/lib"
]
},
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"esModuleInterop": true,
"sourceMap": true,
"inlineSources": false,
"declaration": false,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"stripInternal": true,
"skipLibCheck": true
"moduleResolution": "node",
"importHelpers": true,
"target": "ES2022",
"module": "ES2022",
"useDefineForClassFields": false,
"lib": [
"ES2022",
"dom"
],
},
"files": [
"ng2fittext.ts",
"ng2fittext.d.ts",
"index.ts"
]
"./src/main.ts"
],
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}

14
tsconfig.spec.json Normal file
View file

@ -0,0 +1,14 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
]
},
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}