Compare commits

...

181 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
Lorenzo Iovino
9d174550f5 updated version 1.0.24 2017-08-24 09:46:51 +02:00
Lorenzo Iovino
34942e0852 Merge pull request #13 from nischi/master
Avoid rerendering
2017-08-24 09:42:42 +02:00
Thierry Nischelwitzer
f10725757b refactor and bugfix if box is invisible to begin 2017-08-24 08:01:28 +02:00
Thierry Nischelwitzer
1eaf665692 Avoid rendering if box is not visible and avoid rerendering if not needed 2017-08-24 07:04:09 +02:00
Thierry Nischelwitzer
144578c1cd Merge remote-tracking branch 'refs/remotes/lokenxo/master' 2017-08-24 07:03:11 +02:00
Lorenzo Iovino
14a7091b53 Fixed ngAfterwViewChecked, now compute size with height instead width 2017-08-11 14:15:31 +02:00
Lorenzo Iovino
fc5e5e800f up 2017-08-11 12:19:31 +02:00
Lorenzo Iovino
1c87abbf2a Added resize on contentViewChanged hook 2017-08-11 12:17:03 +02:00
Lorenzo Iovino
7106f1df24 Merge pull request #11 from senty/master
Missing documented parameters
2017-08-03 19:37:31 +02:00
senty
692722f1ee documentation 2017-08-03 09:02:50 +02:00
senty
2b6482999e documentation 2017-08-03 08:59:51 +02:00
Lorenzo Iovino
4b2a22f6ba Merge pull request #10 from senty/master
Model to watch
2017-08-02 22:09:27 +02:00
senty
f76196a816 minimal font size 2017-08-02 17:28:50 +02:00
senty
ebdcc0c7d6 model to watch can be "any" 2017-08-02 16:26:08 +02:00
senty
7aa80b161d reverted not needed change 2017-08-02 16:19:21 +02:00
senty
abba46a909 model to watch - when model change -> trigger change of test size 2017-08-02 16:17:28 +02:00
Lorenzo Iovino
ff9b79d956 Can't stop to commit fixes, need to sleep. Last fix and last version for today. 2017-06-19 11:54:44 +02:00
Lorenzo Iovino
5173c610e6 Missing condition for do work it in case of resize and not overflow 2017-06-19 11:49:51 +02:00
Lorenzo Iovino
85d3b3af89 Now max font size works also if container is resized 2017-06-19 11:42:53 +02:00
Lorenzo Iovino
e195405898 Version 1.0.18 (thanks to nischi) 2017-06-19 11:28:38 +02:00
Lorenzo Iovino
129cb1251c Removed console.log, added possibility of choose if fit a specified container (old way) or the element parent 2017-06-19 11:24:41 +02:00
Lorenzo Iovino
97c428f0af Merge pull request #7 from nischi/master
remove container dependency & implement usemaxfontsize
2017-06-19 10:21:04 +02:00
Thierry Nischelwitzer
d15bc1326e add maxfontsize
Add possibility to set maxfontsize from the element. if set to true, the
maxfontsize automaticaly set to the original font size of the element
2017-06-19 06:57:53 +02:00
Thierry Nischelwitzer
0d7652c618 remove container dependency
instead of container use direct parent element that we can use this
directive in variable template combination
2017-06-19 06:41:40 +02:00
Lorenzo Iovino
3fbf74c803 version 1.0.17 2017-06-11 22:20:22 +02:00
Lorenzo Iovino
7d2df82dd1 Merge pull request #5 from kiwikern/master
Update to peerDependencies
2017-06-10 15:32:58 +02:00
Kim Kern
38ae961908 Create package.json 2017-06-10 15:03:20 +02:00
Kim Kern
6c83eab8f3 fix(package.json): use peerDependencies
see https://github.com/angular/angular-cli/issues/4647
2017-06-10 15:00:54 +02:00
Lorenzo Iovino
d8bc84b91d Version 1.0.16 2017-05-22 12:40:44 +02:00
Lorenzo Iovino
0edd7f854a quick fix resize height 2017-05-22 12:40:22 +02:00
Lorenzo Iovino
c308b800df up 2017-05-22 12:31:08 +02:00
Lorenzo Iovino
b366d366c8 up 2017-05-22 12:30:39 +02:00
Lorenzo Iovino
7a1bcdc619 version 1.0.15 2017-05-22 12:29:41 +02:00
Lorenzo Iovino
191ea5102d quick fix activateOnInputevent 2017-05-22 12:29:03 +02:00
Lorenzo Iovino
ff241b1969 Release version 1.0.14 2017-05-19 13:29:05 +02:00
Lorenzo Iovino
c76d6dbb1a Added rxjs in packege.json; Added activateOnInputEvents proprierty for listen the events in input element and resize when it occurs 2017-05-19 13:17:30 +02:00
Lorenzo Iovino
9dc59fd560 Issue #1 fixed 2017-05-16 15:21:15 +02:00
Lorenzo Iovino
6193f140de Aggiornato versione 1.0.13 2017-04-04 15:28:24 +02:00
Lorenzo Iovino
40addfa6f1 Aggiornate versioni dipendenze 2017-04-04 15:27:59 +02:00
Lorenzo Iovino
fa661c5060 Refactoring 2017-03-26 18:04:41 +02:00
Lorenzo Iovino
8c4ed13876 Added file .ts in the publish 2017-03-17 01:03:12 +01:00
Lorenzo Iovino
07f7295ee9 Exposed as module 2017-03-17 00:47:36 +01:00
Lorenzo Iovino
8d6dfd3cd0 Exposed as module 2017-03-16 23:03:48 +01:00
Lorenzo Iovino
6f7cfd8479 new version 1.0.3 2017-03-14 18:34:37 +01:00
Lorenzo Iovino
9d15ae732f Resolved long word break fit 2017-03-14 18:33:01 +01:00
Lorenzo Iovino
7b51b80e91 up readme 2017-03-14 17:40:01 +01:00
Lorenzo Iovino
e664ffd5aa update readme.md 2017-03-14 17:20:13 +01:00
Lorenzo Iovino
6dec4928e2 added keywords in package.json 2017-03-14 17:10:27 +01:00
42 changed files with 14478 additions and 162 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

18
.gitignore vendored
View file

@ -1,10 +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

View file

@ -1,9 +0,0 @@
# Node generated files
node_modules
npm-debug.log
# OS generated files
Thumbs.db
.DS_Store
# Ignored files
*.ts
!*.d.ts

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.

169
README.md
View file

@ -1,76 +1,141 @@
# ng2-fittext
<h1 align="center">
ng2-fittext
</h1>
An Angular2 directive written in pure typescript (and without jquery!), inspired from http://fittextjs.com/, 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>
### Demo
[![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)
http://plnkr.co/edit/v0TQaYepV4E2Heur02j5?p=preview
## 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>
### 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 directive
1. Import the module in your Angular application:
```ts
import { Ng2FittextModule } from "ng2-fittext";
1) Declare it in your module
```sh
import {FittextDirective} from "ng2-fittext/ng2-fittext";
@NgModule({
imports: [
...
],
declarations: [
FittextDirective
]
})
```
1) Use it in your components
```sh
import {Component} from '@angular/core';
@Component({
selector: 'label',
template: `<div #container>
<div [fittext]="true" [onResize]="true" [container]="container">Bla bla bla...</div>
</div>`
})
export class LabelComponent {}
@NgModule({
imports: [Ng2FittextModule]
})
```
```
2. Use the directive in your components:
```ts
import { Component } from '@angular/core';
Parameters:
| Parameter | Description | Values |
| --- | --- | --- |
| fittext | is the selector of the directive | true/false
| container | the container to fit | ElementRef
| onResize | enable/disable the autofit in case of window resize | true or false (default false)
@Component({
selector: 'label',
template: `
<div #container>
<div [fittext]="true" [activateOnResize]="true" [container]="container">Bla bla bla...</div>
</div>
`
})
export class LabelComponent {}
```
### Examples
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">Bla bla bla...</div>
</div>
`
})
export class LabelComponent {}
```
**NEW! Support for auto-resize input box:**
```ts
import { Component } from '@angular/core';
@Component({
selector: 'inputbox',
template: `
<div #container>
<input [fittext]="true" [activateOnResize]="true" [container]="container" [activateOnInputEvents]="true">
</div>
`
})
export class InputBoxComponent {}
```
**NEW! Support for maxFontSize:**
```ts
import { Component } from '@angular/core';
@Component({
selector: 'inputbox',
template: `
<div>
<input [fittext]="true" [activateOnResize]="true" [activateOnInputEvents]="true" [minFontSize]="40" [maxFontSize]="100">
</div>
`
})
export class InputBoxComponent {}
```
Input Parameters:
| Parameter | Description | Values |
| ------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------- |
| 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 and start to improve the code.
Simply, clone the repository!
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.
- Write tests
- 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 {FittextDirective} from './src/fittext.directive';

BIN
ng2-fittext-example.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

View file

@ -1 +0,0 @@
export {FittextDirective} from './src/fittext.directive';

13258
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,36 +1,46 @@
{
"name": "ng2-fittext",
"version": "1.0.2",
"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"
],
"author": "Lorenzo Iovino",
"license": "ISC",
"bugs": {
"url": "https://github.com/lokenxo/ng2-fittext/issues"
},
"homepage": "https://github.com/lokenxo/ng2-fittext#readme",
"private": true,
"dependencies": {
"@angular/core": "^2.4.0"
"@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.0.0"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/"
"@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

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,43 +0,0 @@
import {Directive, ElementRef, Renderer, Input, AfterViewInit, HostListener} from '@angular/core';
@Directive({
selector: '[fittext]'
})
export class FittextDirective implements AfterViewInit {
@Input('fittext') fittext: any;
@Input('container') container: any;
@Input('onResize') activateOnResize: boolean;
public fontSize:number = 0;
public speed:number = 1.05;
constructor(public el: ElementRef, public renderer: Renderer) {
}
checkOverflowX(parent:any, children:any) {
return children.clientHeight > parent.clientHeight;
}
@HostListener('window:resize', ['$event'])
onResize() {
if(this.activateOnResize){
this.fontSize = 0;
this.ngAfterViewInit();
}
}
ngAfterViewInit() {
if (this.fittext) {
if(this.fontSize == 0){
this.fontSize = this.container.clientWidth;
this.el.nativeElement.style.setProperty('font-size', (this.fontSize).toString()+'px');
}
let overflow = this.checkOverflowX(this.container, this.el.nativeElement);
if(overflow) {
this.fontSize = Math.floor(this.fontSize/this.speed);
this.el.nativeElement.style.setProperty('font-size', (this.fontSize).toString()+'px');
this.ngAfterViewInit();
}
}
}
}

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));

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": [
"ng2-fittext.ts",
"ng2-fittext.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"
]
}