@tekus/design-system 1.0.3 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +86 -13
  2. package/components/search-bar/index.d.ts +5 -0
  3. package/components/search-bar/search-bar.component.d.ts +25 -0
  4. package/esm2022/components/search-bar/public-api.mjs +2 -0
  5. package/esm2022/components/search-bar/search-bar.component.mjs +83 -0
  6. package/esm2022/components/search-bar/tekus-design-system-components-search-bar.mjs +5 -0
  7. package/esm2022/index.mjs +2 -0
  8. package/esm2022/tekus-design-system.mjs +5 -0
  9. package/fesm2022/tekus-design-system-components-search-bar.mjs +90 -0
  10. package/fesm2022/tekus-design-system-components-search-bar.mjs.map +1 -0
  11. package/fesm2022/tekus-design-system.mjs +4 -0
  12. package/fesm2022/tekus-design-system.mjs.map +1 -0
  13. package/index.d.ts +1 -0
  14. package/package.json +21 -2
  15. package/.eslintrc.json +0 -37
  16. package/.storybook/main.ts +0 -19
  17. package/.storybook/preview.ts +0 -18
  18. package/.storybook/tsconfig.json +0 -23
  19. package/.storybook/typings.d.ts +0 -4
  20. package/components/search-bar/index.ts +0 -1
  21. package/components/search-bar/ng-package.json +0 -5
  22. package/components/search-bar/search-bar.component.css +0 -46
  23. package/components/search-bar/search-bar.component.spec.ts +0 -54
  24. package/components/search-bar/search-bar.component.stories.ts +0 -29
  25. package/components/search-bar/search-bar.component.ts +0 -75
  26. package/documentation.json +0 -371
  27. package/index.ts +0 -1
  28. package/karma-ci.conf.js +0 -54
  29. package/karma.conf.js +0 -33
  30. package/ng-package.json +0 -7
  31. package/tsconfig.lib.json +0 -14
  32. package/tsconfig.lib.prod.json +0 -10
  33. package/tsconfig.spec.json +0 -14
  34. /package/components/search-bar/{public-api.ts → public-api.d.ts} +0 -0
package/README.md CHANGED
@@ -1,24 +1,97 @@
1
- # DesignSystem
1
+ # Tekus Design System
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.0.
3
+ Welcome to the Tekus Design System brought to you by Tekus UX/UI team.
4
4
 
5
- ## Code scaffolding
5
+ - Tailored for building Tekus apps: Using the Design System results in UIs that reflect the Tekus look and feel.
6
+ - Continuously updated: As long as you’re using the latest version of the Design System, your pages are always up to date with Tekus UI changes.
6
7
 
7
- Run `ng generate component component-name --project design-system` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project design-system`.
8
- > Note: Don't forget to add `--project design-system` or else it will be added to the default project in your `angular.json` file.
8
+ ## Getting Started 🚀
9
9
 
10
- ## Build
10
+ These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
11
11
 
12
- Run `ng build design-system` to build the project. The build artifacts will be stored in the `dist/` directory.
12
+ ### Prerequisites 📝
13
13
 
14
- ## Publishing
14
+ First start by cloning the project into your machine, then you need to run the following command within the source path:
15
15
 
16
- After building your library with `ng build design-system`, go to the dist folder `cd dist/design-system` and run `npm publish`.
16
+ ```
17
+ npm install
18
+ ```
17
19
 
18
- ## Running unit tests
20
+ Finally start the storybook to view and interact with all the available components using the following command:
19
21
 
20
- Run `ng test design-system` to execute the unit tests via [Karma](https://karma-runner.github.io).
22
+ ```
23
+ npm run storybook
24
+ ```
21
25
 
22
- ## Further help
26
+ And you will see something like this running in your local machine:
23
27
 
24
- 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.
28
+ <img src="assets/readme-images/storybook-main-page.png" width="821" alt="Storybook main page">
29
+
30
+ ## Use a component from the library
31
+
32
+ ### Prerequisites 📝
33
+
34
+ First you have to install the library inside the project where you want to use the component, using the following command:
35
+
36
+ ```
37
+ npm i @tekus/design-system
38
+ ```
39
+
40
+ Then you have to import the library component inside your component if you are working with standalone components or inside the target module of your project. Here you have an example to correctly import the search bar component from the library:
41
+
42
+ <img src="assets/readme-images/tks-library-import-example.png" width="821" alt="tekus library import example">
43
+
44
+ <br>
45
+
46
+ And do not forget to import inside your module or standalone component:
47
+
48
+ <br>
49
+
50
+ <img src="assets/readme-images/tks-library-module-import.png" width="400" alt="tekus library import example">
51
+
52
+ <br>
53
+
54
+ Once you have selected the component that you want to use and imported to your app, you can go to the storybook docs related with this specific component and click on the "show code" link:
55
+
56
+ <img src="assets/readme-images/storybook-docs-show-code.png" width="821" alt="Storybook show code">
57
+
58
+ <br>
59
+
60
+ Then you will see something like this:
61
+
62
+ <img src="assets/readme-images/storybook-copy-code.png" width="821" alt="Storybook copy code">
63
+
64
+ <br>
65
+
66
+ Now you can copy this code and paste it directly in you html file within the app you want to use the component, as follows:
67
+
68
+ <img src="assets/readme-images/storybook-use-case.png" width="821" alt="Storybook copy code">
69
+
70
+ <br>
71
+
72
+ ## Note:
73
+
74
+ You need to ensure that you have installed all the peer dependencies related with the exact component that you want to use.
75
+
76
+ ## Built with 🏗️
77
+
78
+ - [NPM](https://www.npmjs.com/)
79
+ - [Angular](https://angular.dev/)
80
+ - [StoryBook](https://storybook.js.org/)
81
+
82
+ ## Contributions 🖇️
83
+
84
+ If you want to contribute to Tekus Design System, please follow these guidelines:
85
+
86
+ - Send a pull request from a branch with a meaningful name.
87
+ - Make changes using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for easy versioning management. You will get an error message if you don't follow this, so you can either do it manually or use a vscode extension like [Conventional Commits](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits)
88
+
89
+ ## Versioning 🔩
90
+
91
+ We use [SemVer](https://semver.org/) for versioning. For the versions available, see the tags on this repository.
92
+
93
+ ## License
94
+
95
+ This library does not have an explicit license attached. All rights are reserved and any use or distribution is prohibited without the explicit permission of the copyright holder.
96
+
97
+ If you are interested in using, modifying, or distributing this library, please contact [Tekus](https://www.tekus.co/contacto/) for more information.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@tekus/design-system/components/search-bar" />
5
+ export * from './public-api';
@@ -0,0 +1,25 @@
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SearchBarComponent {
4
+ inputValue: string;
5
+ readonly faXmark: import("@fortawesome/fontawesome-common-types").IconDefinition;
6
+ readonly faMagnifyingGlass: import("@fortawesome/fontawesome-common-types").IconDefinition;
7
+ searchInput: ElementRef;
8
+ /**
9
+ * Search bar hint label
10
+ */
11
+ hintLabel: string;
12
+ /**
13
+ * What background color to use
14
+ */
15
+ backgroundColor?: string;
16
+ /**
17
+ * Input changes handler
18
+ */
19
+ inputValueChange: EventEmitter<string>;
20
+ onInputChange(): void;
21
+ onMouseEnter(): void;
22
+ onInputClear(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<SearchBarComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "lib-tks-search-bar", never, { "hintLabel": { "alias": "hintLabel"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; }, { "inputValueChange": "inputValueChange"; }, never, never, true, never>;
25
+ }
@@ -0,0 +1,2 @@
1
+ export * from './search-bar.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1zeXN0ZW0vY29tcG9uZW50cy9zZWFyY2gtYmFyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWJhci5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,83 @@
1
+ import { Input, Output, Component, ViewChild, EventEmitter, } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { NgClass, NgStyle, NgIf } from '@angular/common';
4
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
5
+ import { faMagnifyingGlass, faXmark } from '@fortawesome/pro-solid-svg-icons';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ import * as i2 from "@fortawesome/angular-fontawesome";
9
+ export class SearchBarComponent {
10
+ constructor() {
11
+ this.inputValue = '';
12
+ this.faXmark = faXmark;
13
+ this.faMagnifyingGlass = faMagnifyingGlass;
14
+ /**
15
+ * Search bar hint label
16
+ */
17
+ this.hintLabel = '';
18
+ /**
19
+ * Input changes handler
20
+ */
21
+ this.inputValueChange = new EventEmitter();
22
+ }
23
+ onInputChange() {
24
+ this.inputValueChange.emit(this.inputValue);
25
+ }
26
+ onMouseEnter() {
27
+ this.searchInput.nativeElement.focus();
28
+ }
29
+ onInputClear() {
30
+ this.inputValue = '';
31
+ this.inputValueChange.emit('');
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchBarComponent, isStandalone: true, selector: "lib-tks-search-bar", inputs: { hintLabel: "hintLabel", backgroundColor: "backgroundColor" }, outputs: { inputValueChange: "inputValueChange" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: `<div
35
+ class="search__bar"
36
+ (mouseenter)="onMouseEnter()"
37
+ [ngStyle]="{ 'background-color': backgroundColor }">
38
+ <input
39
+ class="search__bar__input"
40
+ type="text"
41
+ #searchInput
42
+ [(ngModel)]="inputValue"
43
+ [placeholder]="hintLabel"
44
+ (input)="onInputChange()" />
45
+ <fa-icon
46
+ class="search__bar__clear__mark__icon"
47
+ [icon]="faXmark"
48
+ *ngIf="inputValue !== ''"
49
+ (click)="onInputClear()"></fa-icon>
50
+ <fa-icon [icon]="faMagnifyingGlass"></fa-icon>
51
+ </div>`, isInline: true, styles: ["*{margin:0;padding:0;box-sizing:border-box}.search__bar{display:flex;cursor:pointer;max-width:15rem;padding:.3rem 0;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;background-color:#fff}.search__bar:hover{border-bottom:2px solid black}.search__bar:hover .search__bar__input{width:13rem}.search__bar__input{width:0;border:none;outline:none;font-weight:500;background:transparent;transition:all ease-in-out .5s;font-size:clamp(.8rem,.675rem + .333vw,.975rem)}.search__bar__input:focus{width:13rem}.search__bar__clear__mark__icon{margin:0 .5rem}.search__bar__clear__mark__icon:hover{scale:1.3;transition:all ease-in-out .1s}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchBarComponent, decorators: [{
54
+ type: Component,
55
+ args: [{ selector: 'lib-tks-search-bar', standalone: true, imports: [NgIf, NgClass, NgStyle, FormsModule, FontAwesomeModule], template: `<div
56
+ class="search__bar"
57
+ (mouseenter)="onMouseEnter()"
58
+ [ngStyle]="{ 'background-color': backgroundColor }">
59
+ <input
60
+ class="search__bar__input"
61
+ type="text"
62
+ #searchInput
63
+ [(ngModel)]="inputValue"
64
+ [placeholder]="hintLabel"
65
+ (input)="onInputChange()" />
66
+ <fa-icon
67
+ class="search__bar__clear__mark__icon"
68
+ [icon]="faXmark"
69
+ *ngIf="inputValue !== ''"
70
+ (click)="onInputClear()"></fa-icon>
71
+ <fa-icon [icon]="faMagnifyingGlass"></fa-icon>
72
+ </div>`, styles: ["*{margin:0;padding:0;box-sizing:border-box}.search__bar{display:flex;cursor:pointer;max-width:15rem;padding:.3rem 0;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;background-color:#fff}.search__bar:hover{border-bottom:2px solid black}.search__bar:hover .search__bar__input{width:13rem}.search__bar__input{width:0;border:none;outline:none;font-weight:500;background:transparent;transition:all ease-in-out .5s;font-size:clamp(.8rem,.675rem + .333vw,.975rem)}.search__bar__input:focus{width:13rem}.search__bar__clear__mark__icon{margin:0 .5rem}.search__bar__clear__mark__icon:hover{scale:1.3;transition:all ease-in-out .1s}\n"] }]
73
+ }], propDecorators: { searchInput: [{
74
+ type: ViewChild,
75
+ args: ['searchInput', { static: false }]
76
+ }], hintLabel: [{
77
+ type: Input
78
+ }], backgroundColor: [{
79
+ type: Input
80
+ }], inputValueChange: [{
81
+ type: Output
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tc3lzdGVtL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBMEI5RSxNQUFNLE9BQU8sa0JBQWtCO0lBeEIvQjtRQXlCUyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ1AsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUNsQixzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUl0RDs7V0FFRztRQUVILGNBQVMsR0FBRyxFQUFFLENBQUM7UUFRZjs7V0FFRztRQUVILHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FjL0M7SUFaUSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0FwQ1Usa0JBQWtCO21HQUFsQixrQkFBa0IscVRBcEJuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FpQkgsNHRCQWxCRyxJQUFJLDZGQUFXLE9BQU8sMEVBQUUsV0FBVyw4bUJBQUUsaUJBQWlCOzs0RkFxQnJELGtCQUFrQjtrQkF4QjlCLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxZQUN2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FpQkg7OEJBUXNDLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNM0MsU0FBUztzQkFEUixLQUFLO2dCQU9OLGVBQWU7c0JBRGQsS0FBSztnQkFPTixnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFNYWduaWZ5aW5nR2xhc3MsIGZhWG1hcmsgfSBmcm9tICdAZm9ydGF3ZXNvbWUvcHJvLXNvbGlkLXN2Zy1pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10a3Mtc2VhcmNoLWJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLCBGb3Jtc01vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaF9fYmFyXCJcbiAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGJhY2tncm91bmRDb2xvciB9XCI+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cInNlYXJjaF9fYmFyX19pbnB1dFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAjc2VhcmNoSW5wdXRcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaGludExhYmVsXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKClcIiAvPlxuICAgIDxmYS1pY29uXG4gICAgICBjbGFzcz1cInNlYXJjaF9fYmFyX19jbGVhcl9fbWFya19faWNvblwiXG4gICAgICBbaWNvbl09XCJmYVhtYXJrXCJcbiAgICAgICpuZ0lmPVwiaW5wdXRWYWx1ZSAhPT0gJydcIlxuICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGVhcigpXCI+PC9mYS1pY29uPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhTWFnbmlmeWluZ0dsYXNzXCI+PC9mYS1pY29uPlxuICA8L2Rpdj5gLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQ29tcG9uZW50IHtcbiAgcHVibGljIGlucHV0VmFsdWUgPSAnJztcbiAgcHVibGljIHJlYWRvbmx5IGZhWG1hcmsgPSBmYVhtYXJrO1xuICBwdWJsaWMgcmVhZG9ubHkgZmFNYWduaWZ5aW5nR2xhc3MgPSBmYU1hZ25pZnlpbmdHbGFzcztcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBiYXIgaGludCBsYWJlbFxuICAgKi9cbiAgQElucHV0KClcbiAgaGludExhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIFdoYXQgYmFja2dyb3VuZCBjb2xvciB0byB1c2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgY2hhbmdlcyBoYW5kbGVyXG4gICAqL1xuICBAT3V0cHV0KClcbiAgaW5wdXRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHVibGljIG9uSW5wdXRDbGVhcigpIHtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB0aGlzLmlucHV0VmFsdWVDaGFuZ2UuZW1pdCgnJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVrdXMtZGVzaWduLXN5c3RlbS1jb21wb25lbnRzLXNlYXJjaC1iYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tc3lzdGVtL2NvbXBvbmVudHMvc2VhcmNoLWJhci90ZWt1cy1kZXNpZ24tc3lzdGVtLWNvbXBvbmVudHMtc2VhcmNoLWJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tc3lzdGVtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVrdXMtZGVzaWduLXN5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1zeXN0ZW0vdGVrdXMtZGVzaWduLXN5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,90 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, ViewChild, Input, Output } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { NgIf, NgStyle, NgClass } from '@angular/common';
6
+ import * as i2 from '@fortawesome/angular-fontawesome';
7
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
8
+ import { faXmark, faMagnifyingGlass } from '@fortawesome/pro-solid-svg-icons';
9
+
10
+ class SearchBarComponent {
11
+ constructor() {
12
+ this.inputValue = '';
13
+ this.faXmark = faXmark;
14
+ this.faMagnifyingGlass = faMagnifyingGlass;
15
+ /**
16
+ * Search bar hint label
17
+ */
18
+ this.hintLabel = '';
19
+ /**
20
+ * Input changes handler
21
+ */
22
+ this.inputValueChange = new EventEmitter();
23
+ }
24
+ onInputChange() {
25
+ this.inputValueChange.emit(this.inputValue);
26
+ }
27
+ onMouseEnter() {
28
+ this.searchInput.nativeElement.focus();
29
+ }
30
+ onInputClear() {
31
+ this.inputValue = '';
32
+ this.inputValueChange.emit('');
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchBarComponent, isStandalone: true, selector: "lib-tks-search-bar", inputs: { hintLabel: "hintLabel", backgroundColor: "backgroundColor" }, outputs: { inputValueChange: "inputValueChange" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: `<div
36
+ class="search__bar"
37
+ (mouseenter)="onMouseEnter()"
38
+ [ngStyle]="{ 'background-color': backgroundColor }">
39
+ <input
40
+ class="search__bar__input"
41
+ type="text"
42
+ #searchInput
43
+ [(ngModel)]="inputValue"
44
+ [placeholder]="hintLabel"
45
+ (input)="onInputChange()" />
46
+ <fa-icon
47
+ class="search__bar__clear__mark__icon"
48
+ [icon]="faXmark"
49
+ *ngIf="inputValue !== ''"
50
+ (click)="onInputClear()"></fa-icon>
51
+ <fa-icon [icon]="faMagnifyingGlass"></fa-icon>
52
+ </div>`, isInline: true, styles: ["*{margin:0;padding:0;box-sizing:border-box}.search__bar{display:flex;cursor:pointer;max-width:15rem;padding:.3rem 0;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;background-color:#fff}.search__bar:hover{border-bottom:2px solid black}.search__bar:hover .search__bar__input{width:13rem}.search__bar__input{width:0;border:none;outline:none;font-weight:500;background:transparent;transition:all ease-in-out .5s;font-size:clamp(.8rem,.675rem + .333vw,.975rem)}.search__bar__input:focus{width:13rem}.search__bar__clear__mark__icon{margin:0 .5rem}.search__bar__clear__mark__icon:hover{scale:1.3;transition:all ease-in-out .1s}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchBarComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ selector: 'lib-tks-search-bar', standalone: true, imports: [NgIf, NgClass, NgStyle, FormsModule, FontAwesomeModule], template: `<div
57
+ class="search__bar"
58
+ (mouseenter)="onMouseEnter()"
59
+ [ngStyle]="{ 'background-color': backgroundColor }">
60
+ <input
61
+ class="search__bar__input"
62
+ type="text"
63
+ #searchInput
64
+ [(ngModel)]="inputValue"
65
+ [placeholder]="hintLabel"
66
+ (input)="onInputChange()" />
67
+ <fa-icon
68
+ class="search__bar__clear__mark__icon"
69
+ [icon]="faXmark"
70
+ *ngIf="inputValue !== ''"
71
+ (click)="onInputClear()"></fa-icon>
72
+ <fa-icon [icon]="faMagnifyingGlass"></fa-icon>
73
+ </div>`, styles: ["*{margin:0;padding:0;box-sizing:border-box}.search__bar{display:flex;cursor:pointer;max-width:15rem;padding:.3rem 0;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;background-color:#fff}.search__bar:hover{border-bottom:2px solid black}.search__bar:hover .search__bar__input{width:13rem}.search__bar__input{width:0;border:none;outline:none;font-weight:500;background:transparent;transition:all ease-in-out .5s;font-size:clamp(.8rem,.675rem + .333vw,.975rem)}.search__bar__input:focus{width:13rem}.search__bar__clear__mark__icon{margin:0 .5rem}.search__bar__clear__mark__icon:hover{scale:1.3;transition:all ease-in-out .1s}\n"] }]
74
+ }], propDecorators: { searchInput: [{
75
+ type: ViewChild,
76
+ args: ['searchInput', { static: false }]
77
+ }], hintLabel: [{
78
+ type: Input
79
+ }], backgroundColor: [{
80
+ type: Input
81
+ }], inputValueChange: [{
82
+ type: Output
83
+ }] } });
84
+
85
+ /**
86
+ * Generated bundle index. Do not edit.
87
+ */
88
+
89
+ export { SearchBarComponent };
90
+ //# sourceMappingURL=tekus-design-system-components-search-bar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tekus-design-system-components-search-bar.mjs","sources":["../../../projects/design-system/components/search-bar/search-bar.component.ts","../../../projects/design-system/components/search-bar/tekus-design-system-components-search-bar.ts"],"sourcesContent":["import {\n Input,\n Output,\n Component,\n ViewChild,\n ElementRef,\n EventEmitter,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass, NgStyle, NgIf } from '@angular/common';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { faMagnifyingGlass, faXmark } from '@fortawesome/pro-solid-svg-icons';\n\n@Component({\n selector: 'lib-tks-search-bar',\n standalone: true,\n imports: [NgIf, NgClass, NgStyle, FormsModule, FontAwesomeModule],\n template: `<div\n class=\"search__bar\"\n (mouseenter)=\"onMouseEnter()\"\n [ngStyle]=\"{ 'background-color': backgroundColor }\">\n <input\n class=\"search__bar__input\"\n type=\"text\"\n #searchInput\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"hintLabel\"\n (input)=\"onInputChange()\" />\n <fa-icon\n class=\"search__bar__clear__mark__icon\"\n [icon]=\"faXmark\"\n *ngIf=\"inputValue !== ''\"\n (click)=\"onInputClear()\"></fa-icon>\n <fa-icon [icon]=\"faMagnifyingGlass\"></fa-icon>\n </div>`,\n styleUrls: ['./search-bar.component.css'],\n})\nexport class SearchBarComponent {\n public inputValue = '';\n public readonly faXmark = faXmark;\n public readonly faMagnifyingGlass = faMagnifyingGlass;\n\n @ViewChild('searchInput', { static: false }) searchInput!: ElementRef;\n\n /**\n * Search bar hint label\n */\n @Input()\n hintLabel = '';\n\n /**\n * What background color to use\n */\n @Input()\n backgroundColor?: string;\n\n /**\n * Input changes handler\n */\n @Output()\n inputValueChange = new EventEmitter<string>();\n\n public onInputChange(): void {\n this.inputValueChange.emit(this.inputValue);\n }\n\n public onMouseEnter(): void {\n this.searchInput.nativeElement.focus();\n }\n\n public onInputClear() {\n this.inputValue = '';\n this.inputValueChange.emit('');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAqCa,kBAAkB,CAAA;AAxB/B,IAAA,WAAA,GAAA;QAyBS,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QACP,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAClB,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AAItD;;AAEG;QAEH,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAQf;;AAEG;AAEH,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;AAc/C,KAAA;IAZQ,aAAa,GAAA;QAClB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7C;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACxC;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChC;+GApCU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EApBnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,opBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlBG,IAAI,EAAW,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8mBAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAqBrD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAClB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,EACvD,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBH,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,opBAAA,CAAA,EAAA,CAAA;8BAQsC,WAAW,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAM3C,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,eAAe,EAAA,CAAA;sBADd,KAAK;gBAON,gBAAgB,EAAA,CAAA;sBADf,MAAM;;;AC3DT;;AAEG;;;;"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ //# sourceMappingURL=tekus-design-system.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tekus-design-system.mjs","sources":["../../../projects/design-system/tekus-design-system.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AAEG"}
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tekus/design-system",
3
3
  "description": "Tekus design system library",
4
- "version": "1.0.3",
4
+ "version": "1.0.6",
5
5
  "license": "UNLICENSED",
6
6
  "peerDependencies": {
7
7
  "@angular/core": "^16.2.0",
@@ -18,5 +18,24 @@
18
18
  "access": "public",
19
19
  "registry": "https://registry.npmjs.org/"
20
20
  },
21
- "sideEffects": false
21
+ "sideEffects": false,
22
+ "module": "fesm2022/tekus-design-system.mjs",
23
+ "typings": "index.d.ts",
24
+ "exports": {
25
+ "./package.json": {
26
+ "default": "./package.json"
27
+ },
28
+ ".": {
29
+ "types": "./index.d.ts",
30
+ "esm2022": "./esm2022/tekus-design-system.mjs",
31
+ "esm": "./esm2022/tekus-design-system.mjs",
32
+ "default": "./fesm2022/tekus-design-system.mjs"
33
+ },
34
+ "./components/search-bar": {
35
+ "types": "./components/search-bar/index.d.ts",
36
+ "esm2022": "./esm2022/components/search-bar/tekus-design-system-components-search-bar.mjs",
37
+ "esm": "./esm2022/components/search-bar/tekus-design-system-components-search-bar.mjs",
38
+ "default": "./fesm2022/tekus-design-system-components-search-bar.mjs"
39
+ }
40
+ }
22
41
  }
package/.eslintrc.json DELETED
@@ -1,37 +0,0 @@
1
- {
2
- "extends": "../../.eslintrc.json",
3
- "ignorePatterns": [
4
- "!**/*"
5
- ],
6
- "overrides": [
7
- {
8
- "files": [
9
- "*.ts"
10
- ],
11
- "rules": {
12
- "@angular-eslint/directive-selector": [
13
- "error",
14
- {
15
- "type": "attribute",
16
- "prefix": "lib",
17
- "style": "camelCase"
18
- }
19
- ],
20
- "@angular-eslint/component-selector": [
21
- "error",
22
- {
23
- "type": "element",
24
- "prefix": "lib",
25
- "style": "kebab-case"
26
- }
27
- ]
28
- }
29
- },
30
- {
31
- "files": [
32
- "*.html"
33
- ],
34
- "rules": {}
35
- }
36
- ]
37
- }
@@ -1,19 +0,0 @@
1
- import type { StorybookConfig } from '@storybook/angular';
2
-
3
- const config: StorybookConfig = {
4
- stories: ['../**/*.mdx', '../**/*.stories.@(js|jsx|mjs|ts|tsx)'],
5
- addons: [
6
- '@storybook/addon-a11y',
7
- '@storybook/addon-links',
8
- '@storybook/addon-essentials',
9
- '@storybook/addon-interactions',
10
- ],
11
- framework: {
12
- name: '@storybook/angular',
13
- options: {},
14
- },
15
- docs: {
16
- autodocs: 'tag',
17
- },
18
- };
19
- export default config;
@@ -1,18 +0,0 @@
1
- import type { Preview } from "@storybook/angular";
2
- import { setCompodocJson } from "@storybook/addon-docs/angular";
3
- import docJson from "../documentation.json";
4
- setCompodocJson(docJson);
5
-
6
- const preview: Preview = {
7
- parameters: {
8
- actions: { argTypesRegex: "^on[A-Z].*" },
9
- controls: {
10
- matchers: {
11
- color: /(background|color)$/i,
12
- date: /Date$/i,
13
- },
14
- },
15
- },
16
- };
17
-
18
- export default preview;
@@ -1,23 +0,0 @@
1
- {
2
- "extends": "../tsconfig.lib.json",
3
- "compilerOptions": {
4
- "types": [
5
- "node"
6
- ],
7
- "allowSyntheticDefaultImports": true,
8
- "resolveJsonModule": true
9
- },
10
- "exclude": [
11
- "../test.ts",
12
- "../**/*.spec.ts"
13
- ],
14
- "include": [
15
- "../**/*",
16
- "./preview.ts",
17
- "../stories/**/*",
18
- "../projects/**/*"
19
- ],
20
- "files": [
21
- "./typings.d.ts"
22
- ]
23
- }
@@ -1,4 +0,0 @@
1
- declare module '*.md' {
2
- const content: string;
3
- export default content;
4
- }
@@ -1 +0,0 @@
1
- export * from './public-api';
@@ -1,5 +0,0 @@
1
- {
2
- "lib": {
3
- "entryFile": "public-api.ts"
4
- }
5
- }
@@ -1,46 +0,0 @@
1
- * {
2
- margin: 0;
3
- padding: 0;
4
- box-sizing: border-box;
5
- }
6
-
7
- .search__bar {
8
- display: flex;
9
- cursor: pointer;
10
- max-width: 15rem;
11
- padding: 0.3rem 0;
12
- width: fit-content;
13
- align-items: center;
14
- justify-content: center;
15
- background-color: white;
16
- }
17
-
18
- .search__bar:hover {
19
- border-bottom: 2px solid black;
20
- .search__bar__input {
21
- width: 13rem;
22
- }
23
- }
24
-
25
- .search__bar__input {
26
- width: 0;
27
- border: none;
28
- outline: none;
29
- font-weight: 500;
30
- background: transparent;
31
- transition: all ease-in-out 0.5s;
32
- font-size: clamp(0.8rem, 0.675rem + 0.333vw, 0.975rem);
33
- }
34
-
35
- .search__bar__input:focus {
36
- width: 13rem;
37
- }
38
-
39
- .search__bar__clear__mark__icon {
40
- margin: 0 0.5rem;
41
- }
42
-
43
- .search__bar__clear__mark__icon:hover {
44
- scale: 1.3;
45
- transition: all ease-in-out 0.1s;
46
- }
@@ -1,54 +0,0 @@
1
- import { SearchBarComponent } from './search-bar.component';
2
- import { ComponentFixture, TestBed } from '@angular/core/testing';
3
-
4
- describe('SearchBarComponent', () => {
5
- let component: SearchBarComponent;
6
- let fixture: ComponentFixture<SearchBarComponent>;
7
-
8
- beforeEach(() => {
9
- TestBed.configureTestingModule({
10
- imports: [SearchBarComponent],
11
- });
12
- fixture = TestBed.createComponent(SearchBarComponent);
13
- component = fixture.componentInstance;
14
- fixture.detectChanges();
15
- });
16
-
17
- it('should create', () => {
18
- expect(component).toBeTruthy();
19
- });
20
-
21
- it('should emit inputValueChange event with the input value when onInputChange is called', () => {
22
- const inputValue = 'test input';
23
- component.inputValue = inputValue;
24
- spyOn(component.inputValueChange, 'emit');
25
- component.onInputChange();
26
- expect(component.inputValueChange.emit).toHaveBeenCalledWith(inputValue);
27
- });
28
-
29
- it('should focus on searchInput when onMouseEnter is called', () => {
30
- const focusSpy = spyOn(component.searchInput.nativeElement, 'focus');
31
- component.onMouseEnter();
32
- expect(focusSpy).toHaveBeenCalled();
33
- });
34
-
35
- it('should clear inputValue and emit inputValueChange event with empty string when onInputClear is called', () => {
36
- component.inputValue = 'test input';
37
- spyOn(component.inputValueChange, 'emit');
38
- component.onInputClear();
39
- expect(component.inputValue).toBe('');
40
- expect(component.inputValueChange.emit).toHaveBeenCalledWith('');
41
- });
42
-
43
- it('should set hintLabel input correctly', () => {
44
- const hintLabel = 'test hint';
45
- component.hintLabel = hintLabel;
46
- expect(component.hintLabel).toBe(hintLabel);
47
- });
48
-
49
- it('should set backgroundColor input correctly', () => {
50
- const backgroundColor = 'red';
51
- component.backgroundColor = backgroundColor;
52
- expect(component.backgroundColor).toBe(backgroundColor);
53
- });
54
- });
@@ -1,29 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/angular';
2
- import { SearchBarComponent } from './search-bar.component';
3
-
4
- const meta: Meta<SearchBarComponent> = {
5
- title: 'Components/Search bar',
6
- component: SearchBarComponent,
7
- tags: ['autodocs'],
8
- render: (args: SearchBarComponent) => ({
9
- props: {
10
- backgroundColor: null,
11
- ...args,
12
- },
13
- }),
14
- argTypes: {
15
- backgroundColor: {
16
- control: 'color',
17
- },
18
- },
19
- };
20
-
21
- export default meta;
22
- type Story = StoryObj<SearchBarComponent>;
23
-
24
- export const Default: Story = {
25
- args: {
26
- hintLabel: 'Search...',
27
- backgroundColor: 'white',
28
- },
29
- };
@@ -1,75 +0,0 @@
1
- import {
2
- Input,
3
- Output,
4
- Component,
5
- ViewChild,
6
- ElementRef,
7
- EventEmitter,
8
- } from '@angular/core';
9
- import { FormsModule } from '@angular/forms';
10
- import { NgClass, NgStyle, NgIf } from '@angular/common';
11
- import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
12
- import { faMagnifyingGlass, faXmark } from '@fortawesome/pro-solid-svg-icons';
13
-
14
- @Component({
15
- selector: 'lib-tks-search-bar',
16
- standalone: true,
17
- imports: [NgIf, NgClass, NgStyle, FormsModule, FontAwesomeModule],
18
- template: `<div
19
- class="search__bar"
20
- (mouseenter)="onMouseEnter()"
21
- [ngStyle]="{ 'background-color': backgroundColor }">
22
- <input
23
- class="search__bar__input"
24
- type="text"
25
- #searchInput
26
- [(ngModel)]="inputValue"
27
- [placeholder]="hintLabel"
28
- (input)="onInputChange()" />
29
- <fa-icon
30
- class="search__bar__clear__mark__icon"
31
- [icon]="faXmark"
32
- *ngIf="inputValue !== ''"
33
- (click)="onInputClear()"></fa-icon>
34
- <fa-icon [icon]="faMagnifyingGlass"></fa-icon>
35
- </div>`,
36
- styleUrls: ['./search-bar.component.css'],
37
- })
38
- export class SearchBarComponent {
39
- public inputValue = '';
40
- public readonly faXmark = faXmark;
41
- public readonly faMagnifyingGlass = faMagnifyingGlass;
42
-
43
- @ViewChild('searchInput', { static: false }) searchInput!: ElementRef;
44
-
45
- /**
46
- * Search bar hint label
47
- */
48
- @Input()
49
- hintLabel = '';
50
-
51
- /**
52
- * What background color to use
53
- */
54
- @Input()
55
- backgroundColor?: string;
56
-
57
- /**
58
- * Input changes handler
59
- */
60
- @Output()
61
- inputValueChange = new EventEmitter<string>();
62
-
63
- public onInputChange(): void {
64
- this.inputValueChange.emit(this.inputValue);
65
- }
66
-
67
- public onMouseEnter(): void {
68
- this.searchInput.nativeElement.focus();
69
- }
70
-
71
- public onInputClear() {
72
- this.inputValue = '';
73
- this.inputValueChange.emit('');
74
- }
75
- }
@@ -1,371 +0,0 @@
1
- {
2
- "pipes": [],
3
- "interfaces": [],
4
- "injectables": [],
5
- "guards": [],
6
- "interceptors": [],
7
- "classes": [],
8
- "directives": [],
9
- "components": [
10
- {
11
- "name": "SearchBarComponent",
12
- "id": "component-SearchBarComponent-4ee13de11aa08b3cb3fd2d16bf08aacfbb0762a33c8ee74339eb947d2daab9a0bb34821c6028bf478dda6035cb325bb44af1a09ef1589f9e8c18f162e0cedeec",
13
- "file": "projects/design-system/components/search-bar/search-bar.component.ts",
14
- "encapsulation": [],
15
- "entryComponents": [],
16
- "inputs": [],
17
- "outputs": [],
18
- "providers": [],
19
- "selector": "lib-tks-search-bar",
20
- "styleUrls": [
21
- "./search-bar.component.css"
22
- ],
23
- "styles": [],
24
- "template": "<div class=\"search__bar\"\n #searchBar\n (mouseenter)=\"onMouseEnter()\"\n [ngStyle]=\"{ 'background-color': backgroundColor }\">\n <input\n class=\"search__bar__input\"\n type=\"text\"\n #searchInput\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"hintLabel\"\n (input)=\"onInputChange()\" />\n <fa-icon\n class=\"search__bar__clear__mark__icon\"\n [icon]=\"faXmark\"\n *ngIf=\"inputValue !== ''\"\n (click)=\"onInputClear()\"></fa-icon>\n <fa-icon [icon]=\"faMagnifyingGlass\"></fa-icon>\n </div>",
25
- "templateUrl": [],
26
- "viewProviders": [],
27
- "hostDirectives": [],
28
- "inputsClass": [
29
- {
30
- "name": "backgroundColor",
31
- "deprecated": false,
32
- "deprecationMessage": "",
33
- "rawdescription": "\n\nWhat background color to use\n",
34
- "description": "<p>What background color to use</p>\n",
35
- "line": 57,
36
- "type": "string",
37
- "decorators": []
38
- },
39
- {
40
- "name": "hintLabel",
41
- "defaultValue": "''",
42
- "deprecated": false,
43
- "deprecationMessage": "",
44
- "rawdescription": "\n\nSearch bar hint label\n",
45
- "description": "<p>Search bar hint label</p>\n",
46
- "line": 51,
47
- "type": "string",
48
- "decorators": []
49
- }
50
- ],
51
- "outputsClass": [
52
- {
53
- "name": "inputValueChange",
54
- "defaultValue": "new EventEmitter<string>()",
55
- "deprecated": false,
56
- "deprecationMessage": "",
57
- "rawdescription": "\n\nInput changes handler\n",
58
- "description": "<p>Input changes handler</p>\n",
59
- "line": 63,
60
- "type": "EventEmitter"
61
- }
62
- ],
63
- "propertiesClass": [
64
- {
65
- "name": "faMagnifyingGlass",
66
- "defaultValue": "faMagnifyingGlass",
67
- "deprecated": false,
68
- "deprecationMessage": "",
69
- "type": "",
70
- "optional": false,
71
- "description": "",
72
- "line": 42,
73
- "modifierKind": [
74
- 125,
75
- 148
76
- ]
77
- },
78
- {
79
- "name": "faXmark",
80
- "defaultValue": "faXmark",
81
- "deprecated": false,
82
- "deprecationMessage": "",
83
- "type": "",
84
- "optional": false,
85
- "description": "",
86
- "line": 41,
87
- "modifierKind": [
88
- 125,
89
- 148
90
- ]
91
- },
92
- {
93
- "name": "inputValue",
94
- "defaultValue": "''",
95
- "deprecated": false,
96
- "deprecationMessage": "",
97
- "type": "string",
98
- "optional": false,
99
- "description": "",
100
- "line": 40,
101
- "modifierKind": [
102
- 125
103
- ]
104
- },
105
- {
106
- "name": "searchBar",
107
- "deprecated": false,
108
- "deprecationMessage": "",
109
- "type": "ElementRef",
110
- "optional": false,
111
- "description": "",
112
- "line": 44,
113
- "decorators": [
114
- {
115
- "name": "ViewChild",
116
- "stringifiedArguments": "'searchBar', {static: false}"
117
- }
118
- ],
119
- "modifierKind": [
120
- 170
121
- ]
122
- },
123
- {
124
- "name": "searchInput",
125
- "deprecated": false,
126
- "deprecationMessage": "",
127
- "type": "ElementRef",
128
- "optional": false,
129
- "description": "",
130
- "line": 45,
131
- "decorators": [
132
- {
133
- "name": "ViewChild",
134
- "stringifiedArguments": "'searchInput', {static: false}"
135
- }
136
- ],
137
- "modifierKind": [
138
- 170
139
- ]
140
- }
141
- ],
142
- "methodsClass": [
143
- {
144
- "name": "onInputChange",
145
- "args": [],
146
- "optional": false,
147
- "returnType": "void",
148
- "typeParameters": [],
149
- "line": 65,
150
- "deprecated": false,
151
- "deprecationMessage": "",
152
- "modifierKind": [
153
- 125
154
- ]
155
- },
156
- {
157
- "name": "onInputClear",
158
- "args": [],
159
- "optional": false,
160
- "returnType": "void",
161
- "typeParameters": [],
162
- "line": 74,
163
- "deprecated": false,
164
- "deprecationMessage": "",
165
- "modifierKind": [
166
- 125
167
- ]
168
- },
169
- {
170
- "name": "onMouseEnter",
171
- "args": [],
172
- "optional": false,
173
- "returnType": "void",
174
- "typeParameters": [],
175
- "line": 69,
176
- "deprecated": false,
177
- "deprecationMessage": "",
178
- "modifierKind": [
179
- 125
180
- ]
181
- }
182
- ],
183
- "deprecated": false,
184
- "deprecationMessage": "",
185
- "hostBindings": [],
186
- "hostListeners": [],
187
- "standalone": true,
188
- "imports": [
189
- {
190
- "name": "NgIf"
191
- },
192
- {
193
- "name": "NgClass"
194
- },
195
- {
196
- "name": "NgStyle"
197
- },
198
- {
199
- "name": "FormsModule",
200
- "type": "module"
201
- },
202
- {
203
- "name": "FontAwesomeModule",
204
- "type": "module"
205
- }
206
- ],
207
- "description": "",
208
- "rawdescription": "\n",
209
- "type": "component",
210
- "sourceCode": "import {\r\n Input,\r\n Output,\r\n Component,\r\n ViewChild,\r\n ElementRef,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass, NgStyle, NgIf } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faMagnifyingGlass, faXmark } from '@fortawesome/pro-solid-svg-icons';\r\n\r\n@Component({\r\n selector: 'lib-tks-search-bar',\r\n standalone: true,\r\n imports: [NgIf, NgClass, NgStyle, FormsModule, FontAwesomeModule],\r\n template: `<div\r\n class=\"search__bar\"\r\n #searchBar\r\n (mouseenter)=\"onMouseEnter()\"\r\n [ngStyle]=\"{ 'background-color': backgroundColor }\">\r\n <input\r\n class=\"search__bar__input\"\r\n type=\"text\"\r\n #searchInput\r\n [(ngModel)]=\"inputValue\"\r\n [placeholder]=\"hintLabel\"\r\n (input)=\"onInputChange()\" />\r\n <fa-icon\r\n class=\"search__bar__clear__mark__icon\"\r\n [icon]=\"faXmark\"\r\n *ngIf=\"inputValue !== ''\"\r\n (click)=\"onInputClear()\"></fa-icon>\r\n <fa-icon [icon]=\"faMagnifyingGlass\"></fa-icon>\r\n </div>`,\r\n styleUrls: ['./search-bar.component.css'],\r\n})\r\nexport class SearchBarComponent {\r\n public inputValue = '';\r\n public readonly faXmark = faXmark;\r\n public readonly faMagnifyingGlass = faMagnifyingGlass;\r\n\r\n @ViewChild('searchBar', { static: false }) searchBar!: ElementRef;\r\n @ViewChild('searchInput', { static: false }) searchInput!: ElementRef;\r\n\r\n /**\r\n * Search bar hint label\r\n */\r\n @Input()\r\n hintLabel = '';\r\n\r\n /**\r\n * What background color to use\r\n */\r\n @Input()\r\n backgroundColor?: string;\r\n\r\n /**\r\n * Input changes handler\r\n */\r\n @Output()\r\n inputValueChange = new EventEmitter<string>();\r\n\r\n public onInputChange(): void {\r\n this.inputValueChange.emit(this.inputValue);\r\n }\r\n\r\n public onMouseEnter(): void {\r\n this.searchInput.nativeElement.focus();\r\n this.searchBar.nativeElement.focus();\r\n }\r\n\r\n public onInputClear() {\r\n this.inputValue = '';\r\n this.inputValueChange.emit('');\r\n }\r\n}\r\n",
211
- "assetsDirs": [],
212
- "styleUrlsData": [
213
- {
214
- "data": "* {\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n}\r\n\r\n.search__bar {\r\n display: flex;\r\n cursor: pointer;\r\n max-width: 15rem;\r\n padding: 0.3rem 0;\r\n width: fit-content;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: white;\r\n}\r\n\r\n.search__bar:hover {\r\n border-bottom: 2px solid black;\r\n .search__bar__input {\r\n width: 13rem;\r\n }\r\n}\r\n\r\n.search__bar__input {\r\n width: 0;\r\n border: none;\r\n outline: none;\r\n font-weight: 500;\r\n background: transparent;\r\n transition: all ease-in-out 0.5s;\r\n font-size: clamp(0.8rem, 0.675rem + 0.333vw, 0.975rem);\r\n}\r\n\r\n.search__bar__input:focus {\r\n width: 13rem;\r\n}\r\n\r\n.search__bar__clear__mark__icon {\r\n margin: 0 0.5rem;\r\n}\r\n\r\n.search__bar__clear__mark__icon:hover {\r\n scale: 1.3;\r\n transition: all ease-in-out 0.1s;\r\n}\r\n",
215
- "styleUrl": "./search-bar.component.css"
216
- }
217
- ],
218
- "stylesData": "",
219
- "extends": []
220
- }
221
- ],
222
- "modules": [],
223
- "miscellaneous": {
224
- "variables": [
225
- {
226
- "name": "Default",
227
- "ctype": "miscellaneous",
228
- "subtype": "variable",
229
- "file": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
230
- "deprecated": false,
231
- "deprecationMessage": "",
232
- "type": "Story",
233
- "defaultValue": "{\r\n args: {\r\n hintLabel: 'Search...',\r\n backgroundColor: 'white',\r\n },\r\n}"
234
- },
235
- {
236
- "name": "meta",
237
- "ctype": "miscellaneous",
238
- "subtype": "variable",
239
- "file": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
240
- "deprecated": false,
241
- "deprecationMessage": "",
242
- "type": "Meta<SearchBarComponent>",
243
- "defaultValue": "{\r\n title: 'Components/Search bar',\r\n component: SearchBarComponent,\r\n tags: ['autodocs'],\r\n render: (args: SearchBarComponent) => ({\r\n props: {\r\n backgroundColor: null,\r\n ...args,\r\n },\r\n }),\r\n argTypes: {\r\n backgroundColor: {\r\n control: 'color',\r\n },\r\n },\r\n}"
244
- },
245
- {
246
- "name": "preview",
247
- "ctype": "miscellaneous",
248
- "subtype": "variable",
249
- "file": "projects/design-system/.storybook/preview.ts",
250
- "deprecated": false,
251
- "deprecationMessage": "",
252
- "type": "Preview",
253
- "defaultValue": "{\n parameters: {\n actions: { argTypesRegex: \"^on[A-Z].*\" },\n controls: {\n matchers: {\n color: /(background|color)$/i,\n date: /Date$/i,\n },\n },\n },\n}"
254
- }
255
- ],
256
- "functions": [],
257
- "typealiases": [
258
- {
259
- "name": "Story",
260
- "ctype": "miscellaneous",
261
- "subtype": "typealias",
262
- "rawtype": "StoryObj<SearchBarComponent>",
263
- "file": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
264
- "deprecated": false,
265
- "deprecationMessage": "",
266
- "description": "",
267
- "kind": 183
268
- }
269
- ],
270
- "enumerations": [],
271
- "groupedVariables": {
272
- "projects/design-system/components/search-bar/search-bar.component.stories.ts": [
273
- {
274
- "name": "Default",
275
- "ctype": "miscellaneous",
276
- "subtype": "variable",
277
- "file": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
278
- "deprecated": false,
279
- "deprecationMessage": "",
280
- "type": "Story",
281
- "defaultValue": "{\r\n args: {\r\n hintLabel: 'Search...',\r\n backgroundColor: 'white',\r\n },\r\n}"
282
- },
283
- {
284
- "name": "meta",
285
- "ctype": "miscellaneous",
286
- "subtype": "variable",
287
- "file": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
288
- "deprecated": false,
289
- "deprecationMessage": "",
290
- "type": "Meta<SearchBarComponent>",
291
- "defaultValue": "{\r\n title: 'Components/Search bar',\r\n component: SearchBarComponent,\r\n tags: ['autodocs'],\r\n render: (args: SearchBarComponent) => ({\r\n props: {\r\n backgroundColor: null,\r\n ...args,\r\n },\r\n }),\r\n argTypes: {\r\n backgroundColor: {\r\n control: 'color',\r\n },\r\n },\r\n}"
292
- }
293
- ],
294
- "projects/design-system/.storybook/preview.ts": [
295
- {
296
- "name": "preview",
297
- "ctype": "miscellaneous",
298
- "subtype": "variable",
299
- "file": "projects/design-system/.storybook/preview.ts",
300
- "deprecated": false,
301
- "deprecationMessage": "",
302
- "type": "Preview",
303
- "defaultValue": "{\n parameters: {\n actions: { argTypesRegex: \"^on[A-Z].*\" },\n controls: {\n matchers: {\n color: /(background|color)$/i,\n date: /Date$/i,\n },\n },\n },\n}"
304
- }
305
- ]
306
- },
307
- "groupedFunctions": {},
308
- "groupedEnumerations": {},
309
- "groupedTypeAliases": {
310
- "projects/design-system/components/search-bar/search-bar.component.stories.ts": [
311
- {
312
- "name": "Story",
313
- "ctype": "miscellaneous",
314
- "subtype": "typealias",
315
- "rawtype": "StoryObj<SearchBarComponent>",
316
- "file": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
317
- "deprecated": false,
318
- "deprecationMessage": "",
319
- "description": "",
320
- "kind": 183
321
- }
322
- ]
323
- }
324
- },
325
- "routes": [],
326
- "coverage": {
327
- "count": 6,
328
- "status": "low",
329
- "files": [
330
- {
331
- "filePath": "projects/design-system/.storybook/preview.ts",
332
- "type": "variable",
333
- "linktype": "miscellaneous",
334
- "linksubtype": "variable",
335
- "name": "preview",
336
- "coveragePercent": 0,
337
- "coverageCount": "0/1",
338
- "status": "low"
339
- },
340
- {
341
- "filePath": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
342
- "type": "variable",
343
- "linktype": "miscellaneous",
344
- "linksubtype": "variable",
345
- "name": "Default",
346
- "coveragePercent": 0,
347
- "coverageCount": "0/1",
348
- "status": "low"
349
- },
350
- {
351
- "filePath": "projects/design-system/components/search-bar/search-bar.component.stories.ts",
352
- "type": "variable",
353
- "linktype": "miscellaneous",
354
- "linksubtype": "variable",
355
- "name": "meta",
356
- "coveragePercent": 0,
357
- "coverageCount": "0/1",
358
- "status": "low"
359
- },
360
- {
361
- "filePath": "projects/design-system/components/search-bar/search-bar.component.ts",
362
- "type": "component",
363
- "linktype": "component",
364
- "name": "SearchBarComponent",
365
- "coveragePercent": 25,
366
- "coverageCount": "3/12",
367
- "status": "low"
368
- }
369
- ]
370
- }
371
- }
package/index.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/karma-ci.conf.js DELETED
@@ -1,54 +0,0 @@
1
- // Karma configuration file, see link for more information
2
- // https://karma-runner.github.io/1.0/config/configuration-file.html
3
-
4
- module.exports = function (config) {
5
- config.set({
6
- basePath: "",
7
- frameworks: ["jasmine", "@angular-devkit/build-angular"],
8
- plugins: [
9
- require("karma-jasmine"),
10
- require("karma-chrome-launcher"),
11
- require("karma-jasmine-html-reporter"),
12
- require("karma-coverage"),
13
- require("@angular-devkit/build-angular/plugins/karma"),
14
- ],
15
- client: {
16
- clearContext: false, // leave Jasmine Spec Runner output visible in browser
17
- },
18
- jasmineHtmlReporter: {
19
- suppressAll: true, // removes the duplicated traces
20
- },
21
- coverageReporter: {
22
- dir: require("path").join(__dirname, "../../coverage/design-system"),
23
- subdir: ".",
24
- reporters: [{ type: "lcov" }],
25
- fixWebpackSourcePaths: true,
26
- thresholds: {
27
- statements: 50,
28
- lines: 50,
29
- branches: 50,
30
- functions: 50,
31
- },
32
- },
33
- reporters: ["progress", "kjhtml"],
34
- port: 9876,
35
- colors: true,
36
- logLevel: config.LOG_INFO,
37
- autoWatch: false,
38
- restartOnFileChange: true,
39
- browsers: ["ChromeHeadless"],
40
- customLaunchers: {
41
- ChromeHeadless: {
42
- base: "Chrome",
43
- flags: [
44
- "--headless",
45
- "--disable-gpu",
46
- "--no-sandbox",
47
- "--remote-debugging-port=9222",
48
- ],
49
- },
50
- },
51
- singleRun: true,
52
- browserNoActivityTimeout: 40000,
53
- });
54
- };
package/karma.conf.js DELETED
@@ -1,33 +0,0 @@
1
- // Karma configuration file, see link for more information
2
- // https://karma-runner.github.io/1.0/config/configuration-file.html
3
-
4
- module.exports = function (config) {
5
- config.set({
6
- basePath: "",
7
- frameworks: ["jasmine", "@angular-devkit/build-angular"],
8
- files: [
9
- "projects/**/*.ts", // Buscará todos los archivos .ts dentro de la carpeta design-system y sus subdirectorios
10
- ],
11
- plugins: [
12
- require("karma-jasmine"),
13
- require("karma-chrome-launcher"),
14
- require("karma-jasmine-html-reporter"),
15
- require("karma-coverage"),
16
- require("@angular-devkit/build-angular/plugins/karma"),
17
- ],
18
- client: {
19
- clearContext: false, // leave Jasmine Spec Runner output visible in browser
20
- },
21
- jasmineHtmlReporter: {
22
- suppressAll: true, // removes the duplicated traces
23
- },
24
- coverageReporter: {
25
- dir: require("path").join(__dirname, "../../coverage/design-system"),
26
- subdir: ".",
27
- reporters: [{ type: "html" }, { type: "text-summary" }],
28
- },
29
- reporters: ["progress", "kjhtml"],
30
- browsers: ["Chrome"],
31
- restartOnFileChange: true,
32
- });
33
- };
package/ng-package.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
- "dest": "../../dist/design-system",
4
- "lib": {
5
- "entryFile": "./index.ts"
6
- }
7
- }
package/tsconfig.lib.json DELETED
@@ -1,14 +0,0 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
- {
3
- "extends": "../../tsconfig.json",
4
- "compilerOptions": {
5
- "outDir": "../../out-tsc/lib",
6
- "declaration": true,
7
- "declarationMap": true,
8
- "inlineSources": true,
9
- "types": []
10
- },
11
- "exclude": [
12
- "**/*.spec.ts"
13
- ]
14
- }
@@ -1,10 +0,0 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
- {
3
- "extends": "./tsconfig.lib.json",
4
- "compilerOptions": {
5
- "declarationMap": false
6
- },
7
- "angularCompilerOptions": {
8
- "compilationMode": "partial"
9
- }
10
- }
@@ -1,14 +0,0 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
- {
3
- "extends": "../../tsconfig.json",
4
- "compilerOptions": {
5
- "outDir": "../../out-tsc/spec",
6
- "types": [
7
- "jasmine"
8
- ]
9
- },
10
- "include": [
11
- "**/*.spec.ts",
12
- "**/*.d.ts"
13
- ]
14
- }