Commit df77a218 authored by dmacfarlane's avatar dmacfarlane
Browse files

Convert to cli library

parent 9a07f7ee
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -4,8 +4,6 @@
/dist
/dist
/tmp
/tmp
/aot
/aot
# module dist
/mention


# dependencies
# dependencies
/node_modules
/node_modules
@@ -27,6 +25,7 @@
npm-debug.log
npm-debug.log
testem.log
testem.log
/typings
/typings
/ignore


# e2e
# e2e
/e2e/*.js
/e2e/*.js
+1 −1
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@ To install and start the demo application:


Add the package as a dependency to your project using:
Add the package as a dependency to your project using:


    npm install --save angular-mentions
    npm install angular-mentions


Add the CSS to your index.html:
Add the CSS to your index.html:


+90 −49
Original line number Original line Diff line number Diff line
@@ -4,29 +4,73 @@
  "newProjectRoot": "projects",
  "newProjectRoot": "projects",
  "projects": {
  "projects": {
    "angular-mentions": {
    "angular-mentions": {
      "root": "",
      "root": "projects/angular-mentions",
      "sourceRoot": "src",
      "sourceRoot": "projects/angular-mentions/src",
      "projectType": "library",
      "prefix": "lib",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-ng-packagr:build",
          "options": {
            "tsConfig": "projects/angular-mentions/tsconfig.lib.json",
            "project": "projects/angular-mentions/ng-package.json"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "projects/angular-mentions/src/test.ts",
            "tsConfig": "projects/angular-mentions/tsconfig.spec.json",
            "karmaConfig": "projects/angular-mentions/karma.conf.js"
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "projects/angular-mentions/tsconfig.lib.json",
              "projects/angular-mentions/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "demo-app": {
      "root": "projects/demo-app/",
      "sourceRoot": "projects/demo-app/src",
      "projectType": "application",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
      "architect": {
        "build": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
          "options": {
            "outputPath": "dist",
            "outputPath": "dist/demo-app",
            "index": "src/index.html",
            "index": "projects/demo-app/src/index.html",
            "main": "src/main.ts",
            "main": "projects/demo-app/src/main.ts",
            "tsConfig": "src/tsconfig.app.json",
            "polyfills": "projects/demo-app/src/polyfills.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "projects/demo-app/tsconfig.app.json",
            "assets": [
            "assets": [
              "src/assets",
              "projects/demo-app/src/favicon.ico",
              "src/favicon.ico"
              "projects/demo-app/src/assets"
            ],
            ],
            "styles": [
            "styles": [
              "src/styles.css"
              "projects/demo-app/src/styles.css"
            ],
            ],
            "scripts": []
            "scripts": [],
            "es5BrowserSupport": true
          },
          },
          "configurations": {
          "configurations": {
            "production": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "projects/demo-app/src/environments/environment.ts",
                  "with": "projects/demo-app/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "optimization": true,
              "outputHashing": "all",
              "outputHashing": "all",
              "sourceMap": false,
              "sourceMap": false,
@@ -36,10 +80,11 @@
              "extractLicenses": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "vendorChunk": false,
              "buildOptimizer": true,
              "buildOptimizer": true,
              "fileReplacements": [
              "budgets": [
                {
                {
                  "replace": "src/environments/environment.ts",
                  "type": "initial",
                  "with": "src/environments/environment.prod.ts"
                  "maximumWarning": "2mb",
                  "maximumError": "5mb"
                }
                }
              ]
              ]
            }
            }
@@ -48,34 +93,34 @@
        "serve": {
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
          "options": {
            "browserTarget": "angular-mentions:build"
            "browserTarget": "demo-app:build"
          },
          },
          "configurations": {
          "configurations": {
            "production": {
            "production": {
              "browserTarget": "angular-mentions:build:production"
              "browserTarget": "demo-app:build:production"
            }
            }
          }
          }
        },
        },
        "extract-i18n": {
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
          "options": {
            "browserTarget": "angular-mentions:build"
            "browserTarget": "demo-app:build"
          }
          }
        },
        },
        "test": {
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
          "options": {
            "main": "src/test.ts",
            "main": "projects/demo-app/src/test.ts",
            "karmaConfig": "./karma.conf.js",
            "polyfills": "projects/demo-app/src/polyfills.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "projects/demo-app/tsconfig.spec.json",
            "tsConfig": "src/tsconfig.spec.json",
            "karmaConfig": "projects/demo-app/karma.conf.js",
            "scripts": [],
            "styles": [
            "styles": [
              "src/styles.css"
              "projects/demo-app/src/styles.css"
            ],
            ],
            "scripts": [],
            "assets": [
            "assets": [
              "src/assets",
              "projects/demo-app/src/favicon.ico",
              "src/favicon.ico"
              "projects/demo-app/src/assets"
            ]
            ]
          }
          }
        },
        },
@@ -83,48 +128,44 @@
          "builder": "@angular-devkit/build-angular:tslint",
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
          "options": {
            "tsConfig": [
            "tsConfig": [
              "src/tsconfig.app.json",
              "projects/demo-app/tsconfig.app.json",
              "src/tsconfig.spec.json"
              "projects/demo-app/tsconfig.spec.json"
            ],
            ],
            "exclude": []
            "exclude": [
              "**/node_modules/**"
            ]
          }
          }
        }
        }
      }
      }
    },
    },
    "angular-mentions-e2e": {
    "demo-app-e2e": {
      "root": "e2e",
      "root": "projects/demo-app-e2e/",
      "sourceRoot": "e2e",
      "projectType": "application",
      "projectType": "application",
      "prefix": "",
      "architect": {
      "architect": {
        "e2e": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
          "options": {
            "protractorConfig": "./protractor.conf.js",
            "protractorConfig": "projects/demo-app-e2e/protractor.conf.js",
            "devServerTarget": "angular-mentions:serve"
            "devServerTarget": "demo-app:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "demo-app:serve:production"
            }
          }
          }
        },
        },
        "lint": {
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
          "options": {
            "tsConfig": [
            "tsConfig": "projects/demo-app-e2e/tsconfig.e2e.json",
              "e2e/tsconfig.e2e.json"
            "exclude": [
            ],
              "**/node_modules/**"
            "exclude": []
            ]
          }
          }
        }
        }
      }
      }
    }
    }
  },
  },
  "defaultProject": "angular-mentions",
  "defaultProject": "angular-mentions"
  "schematics": {
    "@schematics/angular:component": {
      "inlineTemplate": false,
      "spec": true,
      "prefix": "app",
      "styleext": "css"
    },
    "@schematics/angular:directive": {
      "prefix": "app"
    }
  }
}
}
 No newline at end of file

e2e/demo-config.e2e-spec.ts

deleted100644 → 0
+0 −61
Original line number Original line Diff line number Diff line
import { element, by, protractor } from 'protractor';

import { AngularMentionsPage } from './app.po';

/**
 * Page is configured to test:
 *   - complex items using labelKey
 *   - format function
 *   - different trigger chars
 *   - updating configured items
 * 
 * Not tested:
 *   - combining mentions and mentions in config ? what behvaior is this?
 */

describe('angular-mentions demo-config', function() {
  var EC = protractor.ExpectedConditions;
  let page: AngularMentionsPage;

  beforeEach(() => {
    page = new AngularMentionsPage();
    page.navigateToDemoConfig();
    expect(page.getHeadingText()).toEqual('Angular Mentions');
    expect(page.getSubHeadingText()).toEqual('Configuration');
  })

  it('test mentions config', () => {
    let el = element.all(by.css('input')).first();

    el.getTagName().then(function(tagName){
      let menu = element(by.css('.dropdown-menu'));
      el.click();
      expect(page.getValue(el, tagName)).toEqual('');

      // basic mention
      el.sendKeys('Hello @Gav');
      expect(menu.isDisplayed()).toBe(true);
      expect(page.getValue(el, tagName)).toEqual('Hello @Gav');
      
      // select the mention
      el.sendKeys(protractor.Key.ENTER);
      expect(menu.isDisplayed()).toBe(false);
      expect(page.getValue(el, tagName)).toEqual('Hello @Gavin');

      // select another mention
      el.sendKeys(' and #');
      expect(element(by.css('.dropdown-menu li:nth-child(2) a')).getText()).toEqual('User 2');
      element(by.css('.dropdown-menu li:nth-child(3) a')).click();
      expect(page.getValue(el, tagName)).toEqual('Hello @Gavin and USER3');

      // press button to add a user, testing updates to the data
      element(by.buttonText('Add User')).click();
      el.click();
      el.sendKeys(' or #');
      expect(element(by.css('.dropdown-menu li:nth-child(4) a')).getText()).toEqual('User 4');
      element(by.css('.dropdown-menu li:nth-child(4) a')).click();
      expect(page.getValue(el, tagName)).toEqual('Hello @Gavin and USER3 or USER4');
    });  
  });
  
});

e2e/typings.d.ts

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
/// <reference path="../typings/main.d.ts" />
Loading