@enigmatry/entry-components 1.2.80 → 1.2.82

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 (78) hide show
  1. package/README.md +2 -2
  2. package/dialog/README.md +10 -0
  3. package/dialog/dialogs/alert/entry-alert-dialog.component.d.ts +1 -1
  4. package/dialog/dialogs/confirm/entry-confirm-dialog.component.d.ts +1 -1
  5. package/dialog/dialogs/entry-dialog.component.d.ts +1 -1
  6. package/dialog/styles/modules/components/dialogs/footers/_general.scss +1 -1
  7. package/dialog/styles/modules/components/dialogs/headers/_general.scss +1 -1
  8. package/dialog/styles/partials/core/components/dialogs/_general.scss +2 -2
  9. package/esm2020/dialog/dialogs/alert/entry-alert-dialog.component.mjs +5 -5
  10. package/esm2020/dialog/dialogs/confirm/entry-confirm-dialog.component.mjs +5 -5
  11. package/esm2020/dialog/dialogs/entry-dialog.component.mjs +4 -4
  12. package/esm2020/dialog/entry-dialog.module.mjs +6 -8
  13. package/esm2020/dialog/entry-dialog.service.mjs +4 -4
  14. package/esm2020/header/entry-header.component.mjs +5 -5
  15. package/esm2020/header/entry-header.module.mjs +5 -7
  16. package/esm2020/public-api.mjs +2 -1
  17. package/esm2020/search-filter/entry-search-filter.component.mjs +9 -9
  18. package/esm2020/search-filter/entry-search-filter.module.mjs +10 -12
  19. package/esm2020/search-filter/search-filter-base.mjs +1 -1
  20. package/esm2020/search-filter/search-filter-input.component.mjs +6 -6
  21. package/esm2020/toolbar/enigmatry-entry-components-toolbar.mjs +5 -0
  22. package/esm2020/toolbar/entry-toolbar.component.mjs +43 -0
  23. package/esm2020/toolbar/entry-toolbar.module.mjs +24 -0
  24. package/esm2020/toolbar/public-api.mjs +3 -0
  25. package/fesm2015/enigmatry-entry-components-dialog.mjs +19 -21
  26. package/fesm2015/enigmatry-entry-components-dialog.mjs.map +1 -1
  27. package/fesm2015/enigmatry-entry-components-header.mjs +8 -10
  28. package/fesm2015/enigmatry-entry-components-header.mjs.map +1 -1
  29. package/fesm2015/enigmatry-entry-components-search-filter.mjs +20 -22
  30. package/fesm2015/enigmatry-entry-components-search-filter.mjs.map +1 -1
  31. package/fesm2015/enigmatry-entry-components-toolbar.mjs +71 -0
  32. package/fesm2015/enigmatry-entry-components-toolbar.mjs.map +1 -0
  33. package/fesm2015/enigmatry-entry-components.mjs +1 -0
  34. package/fesm2015/enigmatry-entry-components.mjs.map +1 -1
  35. package/fesm2020/enigmatry-entry-components-dialog.mjs +19 -21
  36. package/fesm2020/enigmatry-entry-components-dialog.mjs.map +1 -1
  37. package/fesm2020/enigmatry-entry-components-header.mjs +8 -10
  38. package/fesm2020/enigmatry-entry-components-header.mjs.map +1 -1
  39. package/fesm2020/enigmatry-entry-components-search-filter.mjs +20 -22
  40. package/fesm2020/enigmatry-entry-components-search-filter.mjs.map +1 -1
  41. package/fesm2020/enigmatry-entry-components-toolbar.mjs +71 -0
  42. package/fesm2020/enigmatry-entry-components-toolbar.mjs.map +1 -0
  43. package/fesm2020/enigmatry-entry-components.mjs +1 -0
  44. package/fesm2020/enigmatry-entry-components.mjs.map +1 -1
  45. package/header/README.md +10 -0
  46. package/header/entry-header.component.d.ts +1 -1
  47. package/header/styles/modules/components/buttons/_general.scss +1 -1
  48. package/package.json +19 -11
  49. package/public-api.d.ts +1 -0
  50. package/search-filter/README.md +11 -1
  51. package/search-filter/entry-search-filter.component.d.ts +5 -5
  52. package/search-filter/search-filter-base.d.ts +1 -1
  53. package/search-filter/search-filter-input.component.d.ts +3 -3
  54. package/styles/_generate.scss +3 -0
  55. package/{dialog/styles → styles}/modules/states/_hover.scss +10 -2
  56. package/styles/modules/theming/_default-theming.scss +3 -1
  57. package/styles/modules/typography/_fonts.scss +4 -0
  58. package/toolbar/README.md +33 -0
  59. package/toolbar/entry-toolbar.component.d.ts +28 -0
  60. package/toolbar/entry-toolbar.module.d.ts +8 -0
  61. package/toolbar/index.d.ts +5 -0
  62. package/toolbar/public-api.d.ts +2 -0
  63. package/toolbar/styles/modules/_generate.scss +10 -0
  64. package/toolbar/styles/modules/components/toolbar/_general.scss +34 -0
  65. package/toolbar/styles/modules/theming/_default-theming.scss +8 -0
  66. package/toolbar/styles/partials/core/_index.scss +1 -0
  67. package/toolbar/styles/partials/core/components/_index.scss +1 -0
  68. package/toolbar/styles/partials/core/components/toolbar/_general.scss +100 -0
  69. package/toolbar/styles/partials/core/components/toolbar/_index.scss +1 -0
  70. package/toolbar/styles/partials/main.scss +1 -0
  71. package/dialog/package.json +0 -10
  72. package/header/package.json +0 -10
  73. package/header/styles/modules/states/_hover.scss +0 -7
  74. package/search-filter/package.json +0 -10
  75. /package/dialog/{enigmatry-entry-components-dialog.d.ts → index.d.ts} +0 -0
  76. /package/header/{enigmatry-entry-components-header.d.ts → index.d.ts} +0 -0
  77. /package/{enigmatry-entry-components.d.ts → index.d.ts} +0 -0
  78. /package/search-filter/{enigmatry-entry-components-search-filter.d.ts → index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"enigmatry-entry-components-search-filter.mjs","sources":["../../../../libs/entry-components/search-filter/search-filter-config.model.ts","../../../../libs/entry-components/search-filter/search-filter-input.component.ts","../../../../libs/entry-components/search-filter/search-filter-input.component.html","../../../../libs/entry-components/search-filter/entry-search-filter.component.ts","../../../../libs/entry-components/search-filter/entry-search-filter.component.html","../../../../libs/entry-components/search-filter/search-filter-base.ts","../../../../libs/entry-components/search-filter/search-filter-textbox.ts","../../../../libs/entry-components/search-filter/entry-search-filter.module.ts","../../../../libs/entry-components/search-filter/enigmatry-entry-components-search-filter.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Used to provide default configurations on module level.\n */\nexport class EntrySearchFilterConfig {\n /** Apply search filters button label (default 'Apply') */\n applyButtonText: string;\n\n constructor(config: Partial<EntrySearchFilterConfig> = {}) {\n this.applyButtonText = config.applyButtonText ?? 'Apply';\n }\n}\nexport const ENTRY_SEARCH_FILTER_CONFIG = new InjectionToken<EntrySearchFilterConfig>('EntrySearchFilterConfig',\n {\n providedIn: 'root',\n factory: () => new EntrySearchFilterConfig()\n }\n);\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SearchFilterBase } from './search-filter-base';\r\n\r\n@Component({\r\n selector: 'entry-search-filter-input',\r\n templateUrl: './search-filter-input.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntrySearchFilterInputComponent {\r\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\r\n @Input() searchFilter!: SearchFilterBase<string>;\r\n /** Form group to which the search-filter input component will be added. */\r\n @Input() form!: FormGroup;\r\n}\r\n","<mat-form-field [formGroup]=\"form\">\r\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\r\n\r\n <div [ngSwitch]=\"searchFilter.controlType\">\r\n\r\n <input *ngSwitchCase=\"'textbox'\" [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\"\r\n [type]=\"searchFilter.type\" matInput [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\r\n\r\n </div>\r\n</mat-form-field>","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { SearchFilterBase } from './search-filter-base';\r\nimport { SearchFilterParams } from './search-filter-params';\r\nimport { ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterConfig } from './search-filter-config.model';\r\n\r\n/**\r\n * Entry SearchFilter component.\r\n */\r\n@Component({\r\n selector: 'entry-search-filter',\r\n templateUrl: './entry-search-filter.component.html',\r\n styleUrls: ['./entry-search-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntrySearchFilterComponent implements OnInit {\r\n\r\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\r\n @Input() searchFilters: SearchFilterBase<string>[] = [];\r\n /**\r\n * Emits the change in SearchFilterParams so the containing component can apply them and retreive the filtered results.\r\n */\r\n @Output() searchFilterChange = new EventEmitter<SearchFilterParams>();\r\n\r\n searchFilterForm!: FormGroup;\r\n\r\n constructor(@Inject(ENTRY_SEARCH_FILTER_CONFIG) public config: EntrySearchFilterConfig) { }\r\n\r\n ngOnInit() {\r\n this.searchFilterForm = this.toFormGroup(this.searchFilters);\r\n }\r\n\r\n onSubmit() {\r\n const formValue = this.searchFilterForm.value;\r\n this.searchFilterChange.emit(formValue);\r\n }\r\n\r\n toFormGroup(searchFilters: SearchFilterBase<string>[]) {\r\n const group: any = {};\r\n\r\n searchFilters.forEach(searchFilter => {\r\n const formControl = new FormControl(searchFilter.value || '');\r\n group[searchFilter.key] = formControl;\r\n searchFilter.formControl = formControl;\r\n });\r\n return new FormGroup(group);\r\n }\r\n}\r\n","<div class=\"search-form-container\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\">\r\n <div class=\"search-form-fields\">\r\n <div *ngFor=\"let searchFilter of searchFilters\" class=\"search-form-field\">\r\n <entry-search-filter-input [searchFilter]=\"searchFilter\"\r\n [form]=\"searchFilterForm\"></entry-search-filter-input>\r\n </div>\r\n <div>\r\n <button type=\"button\" class=\"mat-raised-button mat-accent\" type=\"submit\">{{config.applyButtonText}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n</div>","import { FormControl } from '@angular/forms';\r\n\r\n/**\r\n * Base Entry search filter input component.\r\n */\r\nexport class SearchFilterBase<T> {\r\n /** Unique search-filter input key */\r\n key: string;\r\n /** Default value to be displayed/selected in the input control */\r\n value: T | undefined;\r\n /** Default */\r\n label: string;\r\n /** Label text to be displayed for the search-filter input control */\r\n placeholder: string;\r\n /** Type of input control e.g. 'email' */\r\n type: string;\r\n order: number;\r\n /** Control type to be overriden in implementing class, used to render the proper input type e.g. 'textbox' */\r\n controlType: string;\r\n /** Max text length to be enterd in the input component (default is 256) */\r\n maxLength: number;\r\n formControl: FormControl;\r\n\r\n constructor(options: Partial<SearchFilterBase<T>> = {}) {\r\n this.value = options.value;\r\n this.key = options.key || '';\r\n this.label = options.label || '';\r\n this.placeholder = options.placeholder || '';\r\n this.order = options.order === undefined ? 1 : options.order;\r\n this.controlType = options.controlType || '';\r\n this.type = options.type || '';\r\n this.maxLength = options.maxLength || 256;\r\n }\r\n\r\n setValue(value: T | undefined) {\r\n this.value = value;\r\n if (this.formControl) {\r\n this.formControl.patchValue(value);\r\n }\r\n }\r\n}\r\n","import { SearchFilterBase } from './search-filter-base';\r\n\r\nexport class SearchFilterInput extends SearchFilterBase<string> {\r\n override controlType = 'textbox';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { EntrySearchFilterComponent } from './entry-search-filter.component';\r\nimport { EntrySearchFilterInputComponent } from './search-filter-input.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n EntrySearchFilterComponent,\r\n EntrySearchFilterInputComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatListModule\r\n ],\r\n exports: [\r\n EntrySearchFilterComponent\r\n ]\r\n})\r\nexport class EntrySearchFilterModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EntrySearchFilterInputComponent"],"mappings":"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"}
1
+ {"version":3,"file":"enigmatry-entry-components-search-filter.mjs","sources":["../../../../libs/entry-components/search-filter/search-filter-config.model.ts","../../../../libs/entry-components/search-filter/search-filter-input.component.ts","../../../../libs/entry-components/search-filter/search-filter-input.component.html","../../../../libs/entry-components/search-filter/entry-search-filter.component.ts","../../../../libs/entry-components/search-filter/entry-search-filter.component.html","../../../../libs/entry-components/search-filter/search-filter-base.ts","../../../../libs/entry-components/search-filter/search-filter-textbox.ts","../../../../libs/entry-components/search-filter/entry-search-filter.module.ts","../../../../libs/entry-components/search-filter/enigmatry-entry-components-search-filter.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Used to provide default configurations on module level.\n */\nexport class EntrySearchFilterConfig {\n /** Apply search filters button label (default 'Apply') */\n applyButtonText: string;\n\n constructor(config: Partial<EntrySearchFilterConfig> = {}) {\n this.applyButtonText = config.applyButtonText ?? 'Apply';\n }\n}\nexport const ENTRY_SEARCH_FILTER_CONFIG = new InjectionToken<EntrySearchFilterConfig>('EntrySearchFilterConfig',\n {\n providedIn: 'root',\n factory: () => new EntrySearchFilterConfig()\n }\n);\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { SearchFilterBase } from './search-filter-base';\r\n\r\n@Component({\r\n selector: 'entry-search-filter-input',\r\n templateUrl: './search-filter-input.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntrySearchFilterInputComponent {\r\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\r\n @Input() searchFilter!: SearchFilterBase<string>;\r\n /** Form group to which the search-filter input component will be added. */\r\n @Input() form!: UntypedFormGroup;\r\n}\r\n","<mat-form-field [formGroup]=\"form\">\r\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\r\n\r\n <div [ngSwitch]=\"searchFilter.controlType\">\r\n\r\n <input *ngSwitchCase=\"'textbox'\" [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\"\r\n [type]=\"searchFilter.type\" matInput [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\r\n\r\n </div>\r\n</mat-form-field>","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { SearchFilterBase } from './search-filter-base';\r\nimport { SearchFilterParams } from './search-filter-params';\r\nimport { ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterConfig } from './search-filter-config.model';\r\n\r\n/**\r\n * Entry SearchFilter component.\r\n */\r\n@Component({\r\n selector: 'entry-search-filter',\r\n templateUrl: './entry-search-filter.component.html',\r\n styleUrls: ['./entry-search-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntrySearchFilterComponent implements OnInit {\r\n\r\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\r\n @Input() searchFilters: SearchFilterBase<string>[] = [];\r\n /**\r\n * Emits the change in SearchFilterParams so the containing component can apply them and retrieve the filtered results.\r\n */\r\n @Output() searchFilterChange = new EventEmitter<SearchFilterParams>();\r\n\r\n searchFilterForm!: UntypedFormGroup;\r\n\r\n constructor(@Inject(ENTRY_SEARCH_FILTER_CONFIG) public config: EntrySearchFilterConfig) { }\r\n\r\n ngOnInit() {\r\n this.searchFilterForm = this.toFormGroup(this.searchFilters);\r\n }\r\n\r\n onSubmit() {\r\n const formValue = this.searchFilterForm.value;\r\n this.searchFilterChange.emit(formValue);\r\n }\r\n\r\n toFormGroup(searchFilters: SearchFilterBase<string>[]) {\r\n const group: any = {};\r\n\r\n searchFilters.forEach(searchFilter => {\r\n const formControl = new FormControl<string>(searchFilter.value || '');\r\n group[searchFilter.key] = formControl;\r\n searchFilter.formControl = formControl;\r\n });\r\n return new UntypedFormGroup(group);\r\n }\r\n}\r\n","<div class=\"search-form-container\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\">\r\n <div class=\"search-form-fields\">\r\n <div *ngFor=\"let searchFilter of searchFilters\" class=\"search-form-field\">\r\n <entry-search-filter-input [searchFilter]=\"searchFilter\"\r\n [form]=\"searchFilterForm\"></entry-search-filter-input>\r\n </div>\r\n <div>\r\n <button type=\"button\" class=\"mat-raised-button mat-accent\" type=\"submit\">{{config.applyButtonText}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n</div>","import { FormControl } from '@angular/forms';\r\n\r\n/**\r\n * Base Entry search filter input component.\r\n */\r\nexport class SearchFilterBase<T> {\r\n /** Unique search-filter input key */\r\n key: string;\r\n /** Default value to be displayed/selected in the input control */\r\n value: T | undefined;\r\n /** Default */\r\n label: string;\r\n /** Label text to be displayed for the search-filter input control */\r\n placeholder: string;\r\n /** Type of input control e.g. 'email' */\r\n type: string;\r\n order: number;\r\n /** Control type to be overriden in implementing class, used to render the proper input type e.g. 'textbox' */\r\n controlType: string;\r\n /** Max text length to be enterd in the input component (default is 256) */\r\n maxLength: number;\r\n formControl: FormControl<T>;\r\n\r\n constructor(options: Partial<SearchFilterBase<T>> = {}) {\r\n this.value = options.value;\r\n this.key = options.key || '';\r\n this.label = options.label || '';\r\n this.placeholder = options.placeholder || '';\r\n this.order = options.order === undefined ? 1 : options.order;\r\n this.controlType = options.controlType || '';\r\n this.type = options.type || '';\r\n this.maxLength = options.maxLength || 256;\r\n }\r\n\r\n setValue(value: T | undefined) {\r\n this.value = value;\r\n if (this.formControl) {\r\n this.formControl.patchValue(value);\r\n }\r\n }\r\n}\r\n","import { SearchFilterBase } from './search-filter-base';\r\n\r\nexport class SearchFilterInput extends SearchFilterBase<string> {\r\n override controlType = 'textbox';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { EntrySearchFilterComponent } from './entry-search-filter.component';\r\nimport { EntrySearchFilterInputComponent } from './search-filter-input.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n EntrySearchFilterComponent,\r\n EntrySearchFilterInputComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatListModule\r\n ],\r\n exports: [\r\n EntrySearchFilterComponent\r\n ]\r\n})\r\nexport class EntrySearchFilterModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.EntrySearchFilterInputComponent"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+
6
+ /**
7
+ * Toolbar component (`<entry-toolbar>`) is used to render header section in the applications containing menu items as a content.
8
+ * It offers build in support for toolbar title or logo, while other elements need to be provided via content projection.
9
+ * On smaller screens (mobile/tablet) it switches to compact view containing menu icon button used to toggle content visibility.
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <entry-toolbar
14
+ * titleUri="http://www.enigmatry.com"
15
+ * titleLogoSrc="assets/enigmatry-logo.png">
16
+ * <!-- SOME CUSTOM HTML CODE THAT RENDERS MENU ITEMS -->
17
+ * </entry-toolbar>
18
+ * ```
19
+ */
20
+ class EntryToolbarComponent {
21
+ constructor() {
22
+ /** Url to be redirected to if user click on the title (default value '/') */
23
+ this.titleUri = '/';
24
+ /** If provided, it replaces string title and renders logo image instead */
25
+ this.titleLogoSrc = undefined;
26
+ /** Used to hide the title section if not required (default value false) */
27
+ this.hideTitle = false;
28
+ this.menuOpened = false;
29
+ }
30
+ }
31
+ EntryToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntryToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ EntryToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EntryToolbarComponent, selector: "entry-toolbar", inputs: { title: "title", titleUri: "titleUri", titleLogoSrc: "titleLogoSrc", hideTitle: "hideTitle" }, ngImport: i0, template: "<header class=\"entry-toolbar\">\n <nav class=\"entry-toolbar-nav\">\n <div class=\"entry-toolbar-data\">\n <div class=\"entry-toolbar-logo\">\n <a *ngIf=\"!hideTitle\" [href]=\"titleUri\">\n <span *ngIf=\"!titleLogoSrc\">{{title}}</span>\n <img *ngIf=\"titleLogoSrc\" [src]=\"titleLogoSrc\"/>\n </a>\n </div>\n\n <div class=\"entry-toolbar-nav-toggle\"\n (click)=\"menuOpened = !menuOpened\"\n [ngClass]=\"{'show-toolbar-icon': menuOpened === true}\">\n <i class=\"nav-toggle-menu\">\n <span class=\"icon-menu\"></span>\n </i>\n <i class=\"nav-toggle-close\">\n <span class=\"icon-close\"></span>\n </i>\n </div>\n </div>\n <span class=\"entry-toolbar-content\"\n [ngClass]=\"{'show-toolbar-content': menuOpened === true}\">\n <ng-content></ng-content>\n </span>\n </nav>\n</header>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntryToolbarComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ selector: 'entry-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"entry-toolbar\">\n <nav class=\"entry-toolbar-nav\">\n <div class=\"entry-toolbar-data\">\n <div class=\"entry-toolbar-logo\">\n <a *ngIf=\"!hideTitle\" [href]=\"titleUri\">\n <span *ngIf=\"!titleLogoSrc\">{{title}}</span>\n <img *ngIf=\"titleLogoSrc\" [src]=\"titleLogoSrc\"/>\n </a>\n </div>\n\n <div class=\"entry-toolbar-nav-toggle\"\n (click)=\"menuOpened = !menuOpened\"\n [ngClass]=\"{'show-toolbar-icon': menuOpened === true}\">\n <i class=\"nav-toggle-menu\">\n <span class=\"icon-menu\"></span>\n </i>\n <i class=\"nav-toggle-close\">\n <span class=\"icon-close\"></span>\n </i>\n </div>\n </div>\n <span class=\"entry-toolbar-content\"\n [ngClass]=\"{'show-toolbar-content': menuOpened === true}\">\n <ng-content></ng-content>\n </span>\n </nav>\n</header>" }]
36
+ }], propDecorators: { title: [{
37
+ type: Input
38
+ }], titleUri: [{
39
+ type: Input
40
+ }], titleLogoSrc: [{
41
+ type: Input
42
+ }], hideTitle: [{
43
+ type: Input
44
+ }] } });
45
+
46
+ class EntryToolbarModule {
47
+ }
48
+ EntryToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntryToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
49
+ EntryToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: EntryToolbarModule, declarations: [EntryToolbarComponent], imports: [CommonModule], exports: [EntryToolbarComponent] });
50
+ EntryToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntryToolbarModule, imports: [CommonModule] });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntryToolbarModule, decorators: [{
52
+ type: NgModule,
53
+ args: [{
54
+ declarations: [
55
+ EntryToolbarComponent
56
+ ],
57
+ imports: [
58
+ CommonModule
59
+ ],
60
+ exports: [
61
+ EntryToolbarComponent
62
+ ]
63
+ }]
64
+ }] });
65
+
66
+ /**
67
+ * Generated bundle index. Do not edit.
68
+ */
69
+
70
+ export { EntryToolbarComponent, EntryToolbarModule };
71
+ //# sourceMappingURL=enigmatry-entry-components-toolbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enigmatry-entry-components-toolbar.mjs","sources":["../../../../libs/entry-components/toolbar/entry-toolbar.component.ts","../../../../libs/entry-components/toolbar/entry-toolbar.component.html","../../../../libs/entry-components/toolbar/entry-toolbar.module.ts","../../../../libs/entry-components/toolbar/enigmatry-entry-components-toolbar.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Toolbar component (`<entry-toolbar>`) is used to render header section in the applications containing menu items as a content.\n * It offers build in support for toolbar title or logo, while other elements need to be provided via content projection.\n * On smaller screens (mobile/tablet) it switches to compact view containing menu icon button used to toggle content visibility.\n *\n * @example\n * ```html\n * <entry-toolbar\n * titleUri=\"http://www.enigmatry.com\"\n * titleLogoSrc=\"assets/enigmatry-logo.png\">\n * <!-- SOME CUSTOM HTML CODE THAT RENDERS MENU ITEMS -->\n * </entry-toolbar>\n * ```\n */\n@Component({\n selector: 'entry-toolbar',\n templateUrl: './entry-toolbar.component.html',\n styleUrls: ['./entry-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryToolbarComponent {\n /** Toolbar title positioned in the left side */\n @Input() title: string;\n /** Url to be redirected to if user click on the title (default value '/') */\n @Input() titleUri = '/';\n /** If provided, it replaces string title and renders logo image instead */\n @Input() titleLogoSrc: string | undefined = undefined;\n /** Used to hide the title section if not required (default value false) */\n @Input() hideTitle = false;\n\n menuOpened = false;\n}\n","<header class=\"entry-toolbar\">\n <nav class=\"entry-toolbar-nav\">\n <div class=\"entry-toolbar-data\">\n <div class=\"entry-toolbar-logo\">\n <a *ngIf=\"!hideTitle\" [href]=\"titleUri\">\n <span *ngIf=\"!titleLogoSrc\">{{title}}</span>\n <img *ngIf=\"titleLogoSrc\" [src]=\"titleLogoSrc\"/>\n </a>\n </div>\n\n <div class=\"entry-toolbar-nav-toggle\"\n (click)=\"menuOpened = !menuOpened\"\n [ngClass]=\"{'show-toolbar-icon': menuOpened === true}\">\n <i class=\"nav-toggle-menu\">\n <span class=\"icon-menu\"></span>\n </i>\n <i class=\"nav-toggle-close\">\n <span class=\"icon-close\"></span>\n </i>\n </div>\n </div>\n <span class=\"entry-toolbar-content\"\n [ngClass]=\"{'show-toolbar-content': menuOpened === true}\">\n <ng-content></ng-content>\n </span>\n </nav>\n</header>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EntryToolbarComponent } from './entry-toolbar.component';\n\n@NgModule({\n declarations: [\n EntryToolbarComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n EntryToolbarComponent\n ]\n})\nexport class EntryToolbarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAEA;;;;;;;;;;;;;AAaG;MAOU,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;;QAUW,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;;QAEf,IAAY,CAAA,YAAA,GAAuB,SAAS,CAAC;;QAE7C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAE3B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACpB,KAAA;;kHAXY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6JCtBlC,yjCA0BS,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDJI,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yjCAAA,EAAA,CAAA;8BAItC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEfK,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAT3B,YAAA,EAAA,CAAA,qBAAqB,CAGrB,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGZ,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAN3B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAMH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;;ACdD;;AAEG;;;;"}
@@ -1,6 +1,7 @@
1
1
  export * from '@enigmatry/entry-components/header';
2
2
  export * from '@enigmatry/entry-components/dialog';
3
3
  export * from '@enigmatry/entry-components/search-filter';
4
+ export * from '@enigmatry/entry-components/toolbar';
4
5
 
5
6
  /*
6
7
  * Public API Surface of entry-components
@@ -1 +1 @@
1
- {"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["/*\n * Public API Surface of entry-components\n */\n\nexport * from '@enigmatry/entry-components/header';\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/search-filter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAAA;;AAEG;;ACFH;;AAEG"}
1
+ {"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["/*\n * Public API Surface of entry-components\n */\n\nexport * from '@enigmatry/entry-components/header';\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/toolbar';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAAA;;AAEG;;ACFH;;AAEG"}
package/header/README.md CHANGED
@@ -8,6 +8,16 @@ Simple way of providing header layout and styling for the page or section header
8
8
  import { EntryHeaderModule } from '@enigmatry/entry-components/entry-header';
9
9
  ```
10
10
 
11
+ Styles import:
12
+
13
+ ```css
14
+ @use '@enigmatry/entry-components/styles/generate' as entry;
15
+
16
+ @include entry.generate(APP_THEME, APP_TYPOGRAPHY);
17
+ ```
18
+
19
+ Where `APP_THEME` represents application theming configuration, while `APP_TYPOGRAPHY` represents application fonts configuration.
20
+
11
21
  ## Basic usage
12
22
 
13
23
  `entry-header` is used to provide standard layout and styles:
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  export declare class EntryHeaderComponent {
3
3
  title: string;
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<EntryHeaderComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<EntryHeaderComponent, "entry-header", never, { "title": "title"; }, {}, never, ["[buttons]", "[content]"]>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntryHeaderComponent, "entry-header", never, { "title": "title"; }, {}, never, ["[buttons]", "[content]"], false>;
6
6
  }
@@ -1,5 +1,5 @@
1
1
  @use '@enigmatry/scss-foundation/src/modules/map';
2
- @use '../../states/hover';
2
+ @use '../../../../../styles/modules/states/hover';
3
3
 
4
4
  @mixin generate-buttons-from($theme) {
5
5
  .button-primary {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enigmatry/entry-components",
3
- "version": "1.2.80",
3
+ "version": "1.2.82",
4
4
  "author": "Enigmatry",
5
5
  "description": "Enigmatry entry angular material components",
6
6
  "homepage": "https://github.com/enigmatry/entry-angular-building-blocks/tree/master/libs/entry-components#readme",
@@ -10,11 +10,11 @@
10
10
  },
11
11
  "license": "Apache-2.0",
12
12
  "peerDependencies": {
13
- "@angular/animations": ">=13.0.0",
14
- "@angular/cdk": ">=13.0.0",
15
- "@angular/common": ">=13.0.0",
16
- "@angular/core": ">=13.0.0",
17
- "@angular/material": ">=13.0.0"
13
+ "@angular/animations": ">=14.0.0",
14
+ "@angular/cdk": ">=14.0.0",
15
+ "@angular/common": ">=14.0.0",
16
+ "@angular/core": ">=14.0.0",
17
+ "@angular/material": ">=14.0.0"
18
18
  },
19
19
  "dependencies": {
20
20
  "tslib": "^2.3.0"
@@ -27,13 +27,13 @@
27
27
  "esm2020": "esm2020/enigmatry-entry-components.mjs",
28
28
  "fesm2020": "fesm2020/enigmatry-entry-components.mjs",
29
29
  "fesm2015": "fesm2015/enigmatry-entry-components.mjs",
30
- "typings": "enigmatry-entry-components.d.ts",
30
+ "typings": "index.d.ts",
31
31
  "exports": {
32
32
  "./package.json": {
33
33
  "default": "./package.json"
34
34
  },
35
35
  ".": {
36
- "types": "./enigmatry-entry-components.d.ts",
36
+ "types": "./index.d.ts",
37
37
  "esm2020": "./esm2020/enigmatry-entry-components.mjs",
38
38
  "es2020": "./fesm2020/enigmatry-entry-components.mjs",
39
39
  "es2015": "./fesm2015/enigmatry-entry-components.mjs",
@@ -41,7 +41,7 @@
41
41
  "default": "./fesm2020/enigmatry-entry-components.mjs"
42
42
  },
43
43
  "./dialog": {
44
- "types": "./dialog/enigmatry-entry-components-dialog.d.ts",
44
+ "types": "./dialog/index.d.ts",
45
45
  "esm2020": "./esm2020/dialog/enigmatry-entry-components-dialog.mjs",
46
46
  "es2020": "./fesm2020/enigmatry-entry-components-dialog.mjs",
47
47
  "es2015": "./fesm2015/enigmatry-entry-components-dialog.mjs",
@@ -49,7 +49,7 @@
49
49
  "default": "./fesm2020/enigmatry-entry-components-dialog.mjs"
50
50
  },
51
51
  "./header": {
52
- "types": "./header/enigmatry-entry-components-header.d.ts",
52
+ "types": "./header/index.d.ts",
53
53
  "esm2020": "./esm2020/header/enigmatry-entry-components-header.mjs",
54
54
  "es2020": "./fesm2020/enigmatry-entry-components-header.mjs",
55
55
  "es2015": "./fesm2015/enigmatry-entry-components-header.mjs",
@@ -57,12 +57,20 @@
57
57
  "default": "./fesm2020/enigmatry-entry-components-header.mjs"
58
58
  },
59
59
  "./search-filter": {
60
- "types": "./search-filter/enigmatry-entry-components-search-filter.d.ts",
60
+ "types": "./search-filter/index.d.ts",
61
61
  "esm2020": "./esm2020/search-filter/enigmatry-entry-components-search-filter.mjs",
62
62
  "es2020": "./fesm2020/enigmatry-entry-components-search-filter.mjs",
63
63
  "es2015": "./fesm2015/enigmatry-entry-components-search-filter.mjs",
64
64
  "node": "./fesm2015/enigmatry-entry-components-search-filter.mjs",
65
65
  "default": "./fesm2020/enigmatry-entry-components-search-filter.mjs"
66
+ },
67
+ "./toolbar": {
68
+ "types": "./toolbar/index.d.ts",
69
+ "esm2020": "./esm2020/toolbar/enigmatry-entry-components-toolbar.mjs",
70
+ "es2020": "./fesm2020/enigmatry-entry-components-toolbar.mjs",
71
+ "es2015": "./fesm2015/enigmatry-entry-components-toolbar.mjs",
72
+ "node": "./fesm2015/enigmatry-entry-components-toolbar.mjs",
73
+ "default": "./fesm2020/enigmatry-entry-components-toolbar.mjs"
66
74
  }
67
75
  },
68
76
  "sideEffects": false
package/public-api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from '@enigmatry/entry-components/header';
2
2
  export * from '@enigmatry/entry-components/dialog';
3
3
  export * from '@enigmatry/entry-components/search-filter';
4
+ export * from '@enigmatry/entry-components/toolbar';
@@ -1,6 +1,6 @@
1
1
  # Entry Search Filter
2
2
 
3
- Entry component for providing standard filtering capabilities that can be consumed by entry-table component, but also any other list data represetation component like Angular material table component.
3
+ Entry component for providing standard filtering capabilities that can be consumed by entry-table component, but also any other list data representation component like Angular material table component.
4
4
 
5
5
  ## Imports
6
6
 
@@ -8,6 +8,16 @@ Entry component for providing standard filtering capabilities that can be consum
8
8
  import { EntrySearchFilterModule } from '@enigmatry/entry-components/search-filter';
9
9
  ```
10
10
 
11
+ Styles import:
12
+
13
+ ```css
14
+ @use '@enigmatry/entry-components/styles/generate' as entry;
15
+
16
+ @include entry.generate(APP_THEME, APP_TYPOGRAPHY);
17
+ ```
18
+
19
+ Where `APP_THEME` represents application theming configuration, while `APP_TYPOGRAPHY` represents application fonts configuration.
20
+
11
21
  ## Basic usage
12
22
 
13
23
  `entry-search-filter` is used to provide simple configuration and usage of data filtering:
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
2
+ import { UntypedFormGroup } from '@angular/forms';
3
3
  import { SearchFilterBase } from './search-filter-base';
4
4
  import { SearchFilterParams } from './search-filter-params';
5
5
  import { EntrySearchFilterConfig } from './search-filter-config.model';
@@ -12,14 +12,14 @@ export declare class EntrySearchFilterComponent implements OnInit {
12
12
  /** Configuration of the search filters inputs that will be displayed in the search-filter component. */
13
13
  searchFilters: SearchFilterBase<string>[];
14
14
  /**
15
- * Emits the change in SearchFilterParams so the containing component can apply them and retreive the filtered results.
15
+ * Emits the change in SearchFilterParams so the containing component can apply them and retrieve the filtered results.
16
16
  */
17
17
  searchFilterChange: EventEmitter<SearchFilterParams>;
18
- searchFilterForm: FormGroup;
18
+ searchFilterForm: UntypedFormGroup;
19
19
  constructor(config: EntrySearchFilterConfig);
20
20
  ngOnInit(): void;
21
21
  onSubmit(): void;
22
- toFormGroup(searchFilters: SearchFilterBase<string>[]): FormGroup;
22
+ toFormGroup(searchFilters: SearchFilterBase<string>[]): UntypedFormGroup;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<EntrySearchFilterComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<EntrySearchFilterComponent, "entry-search-filter", never, { "searchFilters": "searchFilters"; }, { "searchFilterChange": "searchFilterChange"; }, never, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntrySearchFilterComponent, "entry-search-filter", never, { "searchFilters": "searchFilters"; }, { "searchFilterChange": "searchFilterChange"; }, never, never, false>;
25
25
  }
@@ -18,7 +18,7 @@ export declare class SearchFilterBase<T> {
18
18
  controlType: string;
19
19
  /** Max text length to be enterd in the input component (default is 256) */
20
20
  maxLength: number;
21
- formControl: FormControl;
21
+ formControl: FormControl<T>;
22
22
  constructor(options?: Partial<SearchFilterBase<T>>);
23
23
  setValue(value: T | undefined): void;
24
24
  }
@@ -1,11 +1,11 @@
1
- import { FormGroup } from '@angular/forms';
1
+ import { UntypedFormGroup } from '@angular/forms';
2
2
  import { SearchFilterBase } from './search-filter-base';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class EntrySearchFilterInputComponent {
5
5
  /** Configuration of the search filters inputs that will be displayed in the search-filter component. */
6
6
  searchFilter: SearchFilterBase<string>;
7
7
  /** Form group to which the search-filter input component will be added. */
8
- form: FormGroup;
8
+ form: UntypedFormGroup;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<EntrySearchFilterInputComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<EntrySearchFilterInputComponent, "entry-search-filter-input", never, { "searchFilter": "searchFilter"; "form": "form"; }, {}, never, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntrySearchFilterInputComponent, "entry-search-filter-input", never, { "searchFilter": "searchFilter"; "form": "form"; }, {}, never, never, false>;
11
11
  }
@@ -2,6 +2,8 @@
2
2
  @use '../dialog/styles/partials/main.scss' as dialogPartials;
3
3
  @use '../header/styles/modules/generator' as header;
4
4
  @use '../header/styles/partials/main.scss' as headerPartials;
5
+ @use '../toolbar/styles/modules/generate' as toolbar;
6
+ @use '../toolbar/styles/partials/main.scss' as toolbarPartials;
5
7
  @use './modules/generate' as modules;
6
8
  @use 'sass:map';
7
9
 
@@ -9,4 +11,5 @@
9
11
  @include modules.generate($font-config);
10
12
  @include dialog.generate(map.get($theme, dialog));
11
13
  @include header.generate(map.get($theme, header));
14
+ @include toolbar.generate(map.get($theme, toolbar));
12
15
  }
@@ -1,4 +1,4 @@
1
- @use '../../../../styles/modules/variables' as vars;
1
+ @use '../variables' as vars;
2
2
 
3
3
  // TODO: remove this once implemented https://jira.enigmatry.com/browse/ETL-484
4
4
  @mixin default($default: vars.$accent, $hover: vars.$body-font-color) {
@@ -9,11 +9,19 @@
9
9
  color: $hover;
10
10
  }
11
11
 
12
- // Had to be done this way since at least Chrome isn't triggering ontouchend on mobile so hover state remains.
12
+ // Had to be done this way since at least Chrome isn't triggering on-touch-end on mobile so hover state remains.
13
13
  /* stylelint-disable-next-line at-rule-allowed-list, media-feature-name-allowed-list */
14
14
  @media (hover: hover) {
15
15
  &:hover {
16
16
  color: $hover;
17
17
  }
18
18
  }
19
+ }
20
+
21
+ @mixin background-hover($regular-background, $hover-background) {
22
+ background-color: $regular-background;
23
+
24
+ &:hover {
25
+ background-color: $hover-background;
26
+ }
19
27
  }
@@ -1,7 +1,9 @@
1
1
  @use '../../../dialog/styles/modules/theming/default-theming' as dialogTheme;
2
2
  @use '../../../header/styles/modules/theming/default-theming' as headerTheme;
3
+ @use '../../../toolbar/styles/modules/theming/default-theming' as toolbarTheme;
3
4
 
4
5
  $theme: (
5
6
  header: headerTheme.$theme,
6
- dialog: dialogTheme.$theme
7
+ dialog: dialogTheme.$theme,
8
+ toolbar: toolbarTheme.$theme
7
9
  );
@@ -60,6 +60,10 @@
60
60
  .icon-close::before {
61
61
  content: '\e900';
62
62
  }
63
+
64
+ .icon-menu:before {
65
+ content: "\e9bd";
66
+ }
63
67
  }
64
68
 
65
69
  // TODO: Hardcoded mixins (currently not ins use) that should be configurable!
@@ -0,0 +1,33 @@
1
+ # Entry Toolbar
2
+
3
+ Toolbar component (`<entry-toolbar>`) is used as a header section in the applications. It offers built-in support for title or logo on the left side, while other elements, like menu items, must be provided via content projection. The component is responsive in a way that on smaller screens (mobile/tablet) switches to _the compact view_ containing menu icon button used to toggle content visibility.
4
+
5
+ ## Imports
6
+
7
+ ```ts
8
+ import { EntryDialogModule } from '@enigmatry/entry-components/toolbar';
9
+ ```
10
+
11
+ Styles import:
12
+
13
+ ```css
14
+ @use '@enigmatry/entry-components/styles/generate' as entry;
15
+
16
+ @include entry.generate(APP_THEME, APP_TYPOGRAPHY);
17
+ ```
18
+
19
+ Where `APP_THEME` represents application theming configuration, while `APP_TYPOGRAPHY` represents application fonts configuration.
20
+
21
+ ## Basic usage
22
+
23
+ ```html
24
+ <entry-toolbar
25
+ title="Food & Drinks"
26
+ titleUri="http://food-n-drinks.com">
27
+ <ul>
28
+ <li>Meals</li>
29
+ <li>Order</li>
30
+ <li>About</li>
31
+ </ul>
32
+ </entry-toolbar>
33
+ ```
@@ -0,0 +1,28 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Toolbar component (`<entry-toolbar>`) is used to render header section in the applications containing menu items as a content.
4
+ * It offers build in support for toolbar title or logo, while other elements need to be provided via content projection.
5
+ * On smaller screens (mobile/tablet) it switches to compact view containing menu icon button used to toggle content visibility.
6
+ *
7
+ * @example
8
+ * ```html
9
+ * <entry-toolbar
10
+ * titleUri="http://www.enigmatry.com"
11
+ * titleLogoSrc="assets/enigmatry-logo.png">
12
+ * <!-- SOME CUSTOM HTML CODE THAT RENDERS MENU ITEMS -->
13
+ * </entry-toolbar>
14
+ * ```
15
+ */
16
+ export declare class EntryToolbarComponent {
17
+ /** Toolbar title positioned in the left side */
18
+ title: string;
19
+ /** Url to be redirected to if user click on the title (default value '/') */
20
+ titleUri: string;
21
+ /** If provided, it replaces string title and renders logo image instead */
22
+ titleLogoSrc: string | undefined;
23
+ /** Used to hide the title section if not required (default value false) */
24
+ hideTitle: boolean;
25
+ menuOpened: boolean;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntryToolbarComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntryToolbarComponent, "entry-toolbar", never, { "title": "title"; "titleUri": "titleUri"; "titleLogoSrc": "titleLogoSrc"; "hideTitle": "hideTitle"; }, {}, never, ["*"], false>;
28
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./entry-toolbar.component";
3
+ import * as i2 from "@angular/common";
4
+ export declare class EntryToolbarModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntryToolbarModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<EntryToolbarModule, [typeof i1.EntryToolbarComponent], [typeof i2.CommonModule], [typeof i1.EntryToolbarComponent]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<EntryToolbarModule>;
8
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@enigmatry/entry-components/toolbar" />
5
+ export * from './public-api';
@@ -0,0 +1,2 @@
1
+ export { EntryToolbarComponent } from './entry-toolbar.component';
2
+ export { EntryToolbarModule } from './entry-toolbar.module';
@@ -0,0 +1,10 @@
1
+ @use 'sass:map';
2
+ @use 'theming/default-theming' as default;
3
+ @use 'components/toolbar/general' as toolbar;
4
+
5
+ $default-theme: default.$theme;
6
+
7
+ @mixin generate($custom-theme: ()) {
8
+ $merged-theme: map.deep-merge($default-theme, $custom-theme);
9
+ @include toolbar.generate($merged-theme);
10
+ }
@@ -0,0 +1,34 @@
1
+ @use '@enigmatry/scss-foundation/src/modules/map';
2
+ @use '../../../../../styles/modules/variables' as vars;
3
+ @use '../../../../../styles/modules/states/hover' as hover;
4
+
5
+ @mixin generate($theme) {
6
+ .entry-toolbar {
7
+ background-color: map.value-from($theme, 'background');
8
+
9
+ .entry-toolbar-nav {
10
+ height: map.value-from($theme, 'height');
11
+
12
+ .entry-toolbar-logo {
13
+ a {
14
+ color: map.value-from($theme, 'title-color');
15
+ @include hover.default(
16
+ map.value-from($theme, 'title-color'),
17
+ map.value-from($theme, 'title-hover-color'));
18
+
19
+ img {
20
+ height: map.value-from($theme, 'height');
21
+ }
22
+ }
23
+ }
24
+
25
+ .entry-toolbar-nav-toggle {
26
+ .nav-toggle-menu, .nav-toggle-close {
27
+ @include hover.default(
28
+ map.value-from($theme, 'title-color'),
29
+ map.value-from($theme, 'title-hover-color'));
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,8 @@
1
+ @use '../../../../styles/modules/variables' as vars;
2
+
3
+ $theme: (
4
+ background: vars.$primary-lightest,
5
+ height: 56px,
6
+ title-color: vars.$primary,
7
+ title-hover-color: vars.$accent
8
+ );
@@ -0,0 +1 @@
1
+ @use 'components';
@@ -0,0 +1 @@
1
+ @use 'toolbar';