├── .editorconfig
├── .eslintrc.json
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── LIST.md
├── README.md
├── angular.json
├── docs.js
├── generate.js
├── package-lock.json
├── package.json
├── projects
└── angular-feather
│ ├── .browserslistrc
│ ├── .eslintrc.json
│ ├── icons
│ ├── all.ts
│ ├── index.ts
│ ├── ng-package.json
│ └── svg
│ │ ├── activity.ts
│ │ ├── airplay.ts
│ │ ├── alert-circle.ts
│ │ ├── alert-octagon.ts
│ │ ├── alert-triangle.ts
│ │ ├── align-center.ts
│ │ ├── align-justify.ts
│ │ ├── align-left.ts
│ │ ├── align-right.ts
│ │ ├── anchor.ts
│ │ ├── aperture.ts
│ │ ├── archive.ts
│ │ ├── arrow-down-circle.ts
│ │ ├── arrow-down-left.ts
│ │ ├── arrow-down-right.ts
│ │ ├── arrow-down.ts
│ │ ├── arrow-left-circle.ts
│ │ ├── arrow-left.ts
│ │ ├── arrow-right-circle.ts
│ │ ├── arrow-right.ts
│ │ ├── arrow-up-circle.ts
│ │ ├── arrow-up-left.ts
│ │ ├── arrow-up-right.ts
│ │ ├── arrow-up.ts
│ │ ├── at-sign.ts
│ │ ├── award.ts
│ │ ├── bar-chart-2.ts
│ │ ├── bar-chart.ts
│ │ ├── battery-charging.ts
│ │ ├── battery.ts
│ │ ├── bell-off.ts
│ │ ├── bell.ts
│ │ ├── bluetooth.ts
│ │ ├── bold.ts
│ │ ├── book-open.ts
│ │ ├── book.ts
│ │ ├── bookmark.ts
│ │ ├── box.ts
│ │ ├── briefcase.ts
│ │ ├── calendar.ts
│ │ ├── camera-off.ts
│ │ ├── camera.ts
│ │ ├── cast.ts
│ │ ├── check-circle.ts
│ │ ├── check-square.ts
│ │ ├── check.ts
│ │ ├── chevron-down.ts
│ │ ├── chevron-left.ts
│ │ ├── chevron-right.ts
│ │ ├── chevron-up.ts
│ │ ├── chevrons-down.ts
│ │ ├── chevrons-left.ts
│ │ ├── chevrons-right.ts
│ │ ├── chevrons-up.ts
│ │ ├── chrome.ts
│ │ ├── circle.ts
│ │ ├── clipboard.ts
│ │ ├── clock.ts
│ │ ├── cloud-drizzle.ts
│ │ ├── cloud-lightning.ts
│ │ ├── cloud-off.ts
│ │ ├── cloud-rain.ts
│ │ ├── cloud-snow.ts
│ │ ├── cloud.ts
│ │ ├── code.ts
│ │ ├── codepen.ts
│ │ ├── codesandbox.ts
│ │ ├── coffee.ts
│ │ ├── columns.ts
│ │ ├── command.ts
│ │ ├── compass.ts
│ │ ├── copy.ts
│ │ ├── corner-down-left.ts
│ │ ├── corner-down-right.ts
│ │ ├── corner-left-down.ts
│ │ ├── corner-left-up.ts
│ │ ├── corner-right-down.ts
│ │ ├── corner-right-up.ts
│ │ ├── corner-up-left.ts
│ │ ├── corner-up-right.ts
│ │ ├── cpu.ts
│ │ ├── credit-card.ts
│ │ ├── crop.ts
│ │ ├── crosshair.ts
│ │ ├── database.ts
│ │ ├── delete.ts
│ │ ├── disc.ts
│ │ ├── divide-circle.ts
│ │ ├── divide-square.ts
│ │ ├── divide.ts
│ │ ├── dollar-sign.ts
│ │ ├── download-cloud.ts
│ │ ├── download.ts
│ │ ├── dribbble.ts
│ │ ├── droplet.ts
│ │ ├── edit-2.ts
│ │ ├── edit-3.ts
│ │ ├── edit.ts
│ │ ├── external-link.ts
│ │ ├── eye-off.ts
│ │ ├── eye.ts
│ │ ├── facebook.ts
│ │ ├── fast-forward.ts
│ │ ├── feather.ts
│ │ ├── figma.ts
│ │ ├── file-minus.ts
│ │ ├── file-plus.ts
│ │ ├── file-text.ts
│ │ ├── file.ts
│ │ ├── film.ts
│ │ ├── filter.ts
│ │ ├── flag.ts
│ │ ├── folder-minus.ts
│ │ ├── folder-plus.ts
│ │ ├── folder.ts
│ │ ├── framer.ts
│ │ ├── frown.ts
│ │ ├── gift.ts
│ │ ├── git-branch.ts
│ │ ├── git-commit.ts
│ │ ├── git-merge.ts
│ │ ├── git-pull-request.ts
│ │ ├── github.ts
│ │ ├── gitlab.ts
│ │ ├── globe.ts
│ │ ├── grid.ts
│ │ ├── hard-drive.ts
│ │ ├── hash.ts
│ │ ├── headphones.ts
│ │ ├── heart.ts
│ │ ├── help-circle.ts
│ │ ├── hexagon.ts
│ │ ├── home.ts
│ │ ├── image.ts
│ │ ├── inbox.ts
│ │ ├── info.ts
│ │ ├── instagram.ts
│ │ ├── italic.ts
│ │ ├── key.ts
│ │ ├── layers.ts
│ │ ├── layout.ts
│ │ ├── life-buoy.ts
│ │ ├── link-2.ts
│ │ ├── link.ts
│ │ ├── linkedin.ts
│ │ ├── list.ts
│ │ ├── loader.ts
│ │ ├── lock.ts
│ │ ├── log-in.ts
│ │ ├── log-out.ts
│ │ ├── mail.ts
│ │ ├── map-pin.ts
│ │ ├── map.ts
│ │ ├── maximize-2.ts
│ │ ├── maximize.ts
│ │ ├── meh.ts
│ │ ├── menu.ts
│ │ ├── message-circle.ts
│ │ ├── message-square.ts
│ │ ├── mic-off.ts
│ │ ├── mic.ts
│ │ ├── minimize-2.ts
│ │ ├── minimize.ts
│ │ ├── minus-circle.ts
│ │ ├── minus-square.ts
│ │ ├── minus.ts
│ │ ├── monitor.ts
│ │ ├── moon.ts
│ │ ├── more-horizontal.ts
│ │ ├── more-vertical.ts
│ │ ├── mouse-pointer.ts
│ │ ├── move.ts
│ │ ├── music.ts
│ │ ├── navigation-2.ts
│ │ ├── navigation.ts
│ │ ├── octagon.ts
│ │ ├── package.ts
│ │ ├── paperclip.ts
│ │ ├── pause-circle.ts
│ │ ├── pause.ts
│ │ ├── pen-tool.ts
│ │ ├── percent.ts
│ │ ├── phone-call.ts
│ │ ├── phone-forwarded.ts
│ │ ├── phone-incoming.ts
│ │ ├── phone-missed.ts
│ │ ├── phone-off.ts
│ │ ├── phone-outgoing.ts
│ │ ├── phone.ts
│ │ ├── pie-chart.ts
│ │ ├── play-circle.ts
│ │ ├── play.ts
│ │ ├── plus-circle.ts
│ │ ├── plus-square.ts
│ │ ├── plus.ts
│ │ ├── pocket.ts
│ │ ├── power.ts
│ │ ├── printer.ts
│ │ ├── radio.ts
│ │ ├── refresh-ccw.ts
│ │ ├── refresh-cw.ts
│ │ ├── repeat.ts
│ │ ├── rewind.ts
│ │ ├── rotate-ccw.ts
│ │ ├── rotate-cw.ts
│ │ ├── rss.ts
│ │ ├── save.ts
│ │ ├── scissors.ts
│ │ ├── search.ts
│ │ ├── send.ts
│ │ ├── server.ts
│ │ ├── settings.ts
│ │ ├── share-2.ts
│ │ ├── share.ts
│ │ ├── shield-off.ts
│ │ ├── shield.ts
│ │ ├── shopping-bag.ts
│ │ ├── shopping-cart.ts
│ │ ├── shuffle.ts
│ │ ├── sidebar.ts
│ │ ├── skip-back.ts
│ │ ├── skip-forward.ts
│ │ ├── slack.ts
│ │ ├── slash.ts
│ │ ├── sliders.ts
│ │ ├── smartphone.ts
│ │ ├── smile.ts
│ │ ├── speaker.ts
│ │ ├── square.ts
│ │ ├── star.ts
│ │ ├── stop-circle.ts
│ │ ├── sun.ts
│ │ ├── sunrise.ts
│ │ ├── sunset.ts
│ │ ├── table.ts
│ │ ├── tablet.ts
│ │ ├── tag.ts
│ │ ├── target.ts
│ │ ├── terminal.ts
│ │ ├── thermometer.ts
│ │ ├── thumbs-down.ts
│ │ ├── thumbs-up.ts
│ │ ├── toggle-left.ts
│ │ ├── toggle-right.ts
│ │ ├── tool.ts
│ │ ├── trash-2.ts
│ │ ├── trash.ts
│ │ ├── trello.ts
│ │ ├── trending-down.ts
│ │ ├── trending-up.ts
│ │ ├── triangle.ts
│ │ ├── truck.ts
│ │ ├── tv.ts
│ │ ├── twitch.ts
│ │ ├── twitter.ts
│ │ ├── type.ts
│ │ ├── umbrella.ts
│ │ ├── underline.ts
│ │ ├── unlock.ts
│ │ ├── upload-cloud.ts
│ │ ├── upload.ts
│ │ ├── user-check.ts
│ │ ├── user-minus.ts
│ │ ├── user-plus.ts
│ │ ├── user-x.ts
│ │ ├── user.ts
│ │ ├── users.ts
│ │ ├── video-off.ts
│ │ ├── video.ts
│ │ ├── voicemail.ts
│ │ ├── volume-1.ts
│ │ ├── volume-2.ts
│ │ ├── volume-x.ts
│ │ ├── volume.ts
│ │ ├── watch.ts
│ │ ├── wifi-off.ts
│ │ ├── wifi.ts
│ │ ├── wind.ts
│ │ ├── x-circle.ts
│ │ ├── x-octagon.ts
│ │ ├── x-square.ts
│ │ ├── x.ts
│ │ ├── youtube.ts
│ │ ├── zap-off.ts
│ │ ├── zap.ts
│ │ ├── zoom-in.ts
│ │ └── zoom-out.ts
│ ├── karma.conf.js
│ ├── ng-package.json
│ ├── package.json
│ ├── src
│ ├── lib
│ │ ├── feather.component.html
│ │ ├── feather.component.scss
│ │ ├── feather.component.ts
│ │ ├── feather.module.ts
│ │ ├── icons.provider.ts
│ │ └── utils.ts
│ ├── public-api.ts
│ ├── templates
│ │ └── component.ts.tpl
│ └── test.ts
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ └── tsconfig.spec.json
└── tsconfig.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "ignorePatterns": [
4 | "projects/**/*"
5 | ],
6 | "overrides": [
7 | {
8 | "files": [
9 | "*.ts"
10 | ],
11 | "parserOptions": {
12 | "project": [
13 | "tsconfig.json",
14 | "e2e/tsconfig.json"
15 | ],
16 | "createDefaultProgram": true
17 | },
18 | "extends": [
19 | "plugin:@angular-eslint/recommended",
20 | "plugin:@angular-eslint/template/process-inline-templates"
21 | ],
22 | "rules": {
23 | "@angular-eslint/component-selector": [
24 | "error",
25 | {
26 | "prefix": "feather",
27 | "style": "kebab-case",
28 | "type": "element"
29 | }
30 | ],
31 | "@angular-eslint/directive-selector": [
32 | "error",
33 | {
34 | "prefix": "feather",
35 | "style": "camelCase",
36 | "type": "attribute"
37 | }
38 | ]
39 | }
40 | },
41 | {
42 | "files": [
43 | "*.html"
44 | ],
45 | "extends": [
46 | "plugin:@angular-eslint/template/recommended"
47 | ],
48 | "rules": {}
49 | }
50 | ]
51 | }
52 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 | # Only exists if Bazel was run
8 | /bazel-out
9 |
10 | # dependencies
11 | **/node_modules
12 | *.tgz
13 |
14 | # profiling files
15 | chrome-profiler-events*.json
16 | speed-measure-plugin*.json
17 |
18 | # IDEs and editors
19 | /.idea
20 | .project
21 | .classpath
22 | .c9/
23 | *.launch
24 | .settings/
25 | *.sublime-workspace
26 |
27 | # IDE - VSCode
28 | .vscode/*
29 | !.vscode/settings.json
30 | !.vscode/tasks.json
31 | !.vscode/launch.json
32 | !.vscode/extensions.json
33 | .history/*
34 |
35 | # misc
36 | /.angular/cache
37 | /.sass-cache
38 | /connect.lock
39 | /coverage
40 | /libpeerconnection.log
41 | npm-debug.log
42 | yarn-error.log
43 | testem.log
44 | /typings
45 |
46 | # System Files
47 | .DS_Store
48 | Thumbs.db
49 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 | All notable changes to this project will be documented in this file.
3 |
4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6 |
7 | ## [Unreleased]
8 |
9 | ## [6.5.0] - 2022-07-17
10 |
11 | ### Changed
12 | - Update to Feather 4.29.0
13 | - Relax peer dependency so Angular >=12 is allowed
14 |
15 | ### Chore
16 | - Use eslint instead of tslint
17 |
18 | ## [6.4.1] - 2022-07-13
19 |
20 | ### Fixed
21 | - Use Angular 14 as peer dependency
22 |
23 | ## [6.4.0] - 2022-07-07
24 |
25 | ## [6.3.0] - 2022-01-30
26 |
27 | ## [6.2.0] - 2022-01-30
28 |
29 | ## [6.1.0] - 2020-12-16
30 |
31 |
32 | [Unreleased]: https://github.com/michaelbazos/angular-feather/compare/v6.5.0...HEAD
33 | [6.5.0]: https://github.com/michaelbazos/angular-feather/compare/v6.4.1...v6.5.0
34 | [6.4.1]: https://github.com/michaelbazos/angular-feather/compare/v6.4.0...v6.4.1
35 | [6.4.0]: https://github.com/michaelbazos/angular-feather/compare/v6.3.0...v6.4.0
36 | [6.3.0]: https://github.com/michaelbazos/angular-feather/compare/v6.2.0...v6.3.0
37 | [6.2.0]: https://github.com/michaelbazos/angular-feather/compare/v6.1.0...v6.2.0
38 | [6.1.0]: https://github.com/michaelbazos/angular-feather/releases/tag/v6.1.0
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2017-2022 Michael Bazos
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "angular-feather": {
7 | "projectType": "library",
8 | "root": "projects/angular-feather",
9 | "sourceRoot": "projects/angular-feather/src",
10 | "prefix": "feather",
11 | "architect": {
12 | "build": {
13 | "builder": "@angular-devkit/build-angular:ng-packagr",
14 | "options": {
15 | "tsConfig": "projects/angular-feather/tsconfig.lib.json",
16 | "project": "projects/angular-feather/ng-package.json"
17 | },
18 | "configurations": {
19 | "production": {
20 | "tsConfig": "projects/angular-feather/tsconfig.lib.prod.json"
21 | }
22 | }
23 | },
24 | "test": {
25 | "builder": "@angular-devkit/build-angular:karma",
26 | "options": {
27 | "main": "projects/angular-feather/src/test.ts",
28 | "tsConfig": "projects/angular-feather/tsconfig.spec.json",
29 | "karmaConfig": "projects/angular-feather/karma.conf.js"
30 | }
31 | },
32 | "lint": {
33 | "builder": "@angular-eslint/builder:lint",
34 | "options": {
35 | "lintFilePatterns": [
36 | "projects/angular-feather/**/*.ts",
37 | "projects/angular-feather/**/*.html"
38 | ]
39 | }
40 | }
41 | }
42 | }
43 | },
44 | "cli": {
45 | "analytics": false,
46 | "defaultCollection": "@angular-eslint/schematics"
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/docs.js:
--------------------------------------------------------------------------------
1 | const del = require('del');
2 | const fs = require('fs-extra');
3 | const uppercamelcase = require('uppercamelcase');
4 |
5 | const iconsSrcFolder = 'node_modules/feather-icons/dist/icons';
6 |
7 | const iconListFile = 'LIST.md';
8 |
9 | const version = require('./projects/angular-feather/package.json').dependencies['feather-icons'];
10 |
11 | // const rawgitUrl = `https://cdn.rawgit.com/feathericons/feather/v${version}/icons`;
12 | const unpkgUrl = `https://unpkg.com/feather-icons@${version}/dist/icons`
13 |
14 | return Promise.resolve()
15 | // delete previous output
16 | .then(() => del([iconListFile]))
17 | // create destination folder
18 | .then(() => {
19 | fs.appendFileSync(iconListFile, `| | Symbol to import | HTML template |\n`);
20 | fs.appendFileSync(iconListFile, `| --- | ---------------- | ------------------ |\n`);
21 |
22 | fs.readdirSync(`${iconsSrcFolder}`).forEach(filename => {
23 | 'use strict';
24 | const name = stripExtension(filename);
25 | const svgUrl = `${unpkgUrl}/${filename}`;
26 |
27 | fs.appendFileSync(
28 | iconListFile,
29 | `|  | \`${uppercamelcase(name)}\` | \`\` |\n`
30 | );
31 | });
32 |
33 | })
34 | .catch((err) => console.log(err));
35 |
36 |
37 | function stripExtension(str) {
38 | return str.substr(0, str.lastIndexOf('.'));
39 | }
40 |
--------------------------------------------------------------------------------
/generate.js:
--------------------------------------------------------------------------------
1 | const del = require('del');
2 | const fs = require('fs-extra');
3 | const uppercamelcase = require('uppercamelcase');
4 |
5 | const iconsSrcFolder = 'node_modules/feather-icons/dist/icons';
6 |
7 | const prefixPath = 'projects/angular-feather';
8 |
9 | const iconsDestFolder = `${prefixPath}/icons/svg`;
10 | const indexFile = `${prefixPath}/icons/index.ts`;
11 | const allFile = `${prefixPath}/icons/all.ts`;
12 | const templateFile = `${prefixPath}/src/templates/component.ts.tpl`;
13 |
14 | let exportAllString = `\nexport const allIcons = {\n`;
15 |
16 | const componentTemplate = fs.readFileSync(templateFile, 'utf-8');
17 |
18 | return Promise.resolve()
19 | // delete feather folder and index
20 | .then(() => del([iconsDestFolder, indexFile, allFile]))
21 | // create destination folder
22 | .then(() => fs.mkdirSync(iconsDestFolder))
23 | .then(() => {
24 | fs.readdirSync(`${iconsSrcFolder}`).forEach(filename => {
25 | 'use strict';
26 | const iconName = stripExtension(filename);
27 | const exportName = uppercamelcase(iconName);
28 |
29 | const markup = fs.readFileSync(`${iconsSrcFolder}/${filename}`);
30 | const payload = String(markup).match(/^