@factor_ec/ui 1.0.5 → 1.0.8

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 (53) hide show
  1. package/esm2020/lib/display/avatar/avatar.component.mjs +74 -0
  2. package/esm2020/lib/display/content/content.component.mjs +19 -0
  3. package/esm2020/lib/display/display.module.mjs +66 -0
  4. package/esm2020/lib/display/icon/icon.component.mjs +97 -0
  5. package/esm2020/lib/{image → display/image}/image.component.mjs +1 -1
  6. package/esm2020/lib/{message → display/message}/message.component.mjs +1 -1
  7. package/esm2020/lib/display/message.service.mjs +58 -0
  8. package/esm2020/lib/display/observe-intersecting.directive.mjs +43 -0
  9. package/esm2020/lib/display/progress/progress.component.mjs +42 -0
  10. package/esm2020/lib/display/progress.service.mjs +50 -0
  11. package/esm2020/lib/inputs/inputs.module.mjs +24 -0
  12. package/esm2020/lib/{rating → inputs/rating}/rating.component.mjs +1 -1
  13. package/esm2020/lib/models/action.mjs +1 -1
  14. package/esm2020/lib/models/module-configuration.mjs +2 -0
  15. package/esm2020/lib/navigation/list/list.component.mjs +56 -0
  16. package/esm2020/lib/navigation/navbar/navbar.component.mjs +72 -0
  17. package/esm2020/lib/navigation/navigation.module.mjs +55 -0
  18. package/esm2020/lib/navigation/searchbox/searchbox.component.mjs +106 -0
  19. package/esm2020/lib/navigation/toolbar/toolbar.component.mjs +51 -0
  20. package/esm2020/lib/ui.module.mjs +15 -52
  21. package/esm2020/public-api.mjs +18 -8
  22. package/fesm2015/factor_ec-ui.mjs +559 -145
  23. package/fesm2015/factor_ec-ui.mjs.map +1 -1
  24. package/fesm2020/factor_ec-ui.mjs +553 -143
  25. package/fesm2020/factor_ec-ui.mjs.map +1 -1
  26. package/lib/{avatar → display/avatar}/avatar.component.d.ts +1 -1
  27. package/lib/{content → display/content}/content.component.d.ts +3 -4
  28. package/lib/display/display.module.d.ts +17 -0
  29. package/lib/{icon → display/icon}/icon.component.d.ts +1 -1
  30. package/lib/{image → display/image}/image.component.d.ts +0 -0
  31. package/lib/{message → display/message}/message.component.d.ts +0 -0
  32. package/lib/{message.service.d.ts → display/message.service.d.ts} +2 -2
  33. package/lib/{observe-intersecting.directive.d.ts → display/observe-intersecting.directive.d.ts} +2 -1
  34. package/lib/{progress → display/progress}/progress.component.d.ts +0 -0
  35. package/lib/display/progress.service.d.ts +15 -0
  36. package/lib/inputs/inputs.module.d.ts +8 -0
  37. package/lib/{rating → inputs/rating}/rating.component.d.ts +0 -0
  38. package/lib/models/action.d.ts +11 -3
  39. package/lib/models/module-configuration.d.ts +6 -0
  40. package/lib/navigation/list/list.component.d.ts +19 -0
  41. package/lib/navigation/navbar/navbar.component.d.ts +23 -0
  42. package/lib/navigation/navigation.module.d.ts +15 -0
  43. package/lib/navigation/searchbox/searchbox.component.d.ts +34 -0
  44. package/lib/navigation/toolbar/toolbar.component.d.ts +18 -0
  45. package/lib/ui.module.d.ts +7 -14
  46. package/package.json +1 -1
  47. package/public-api.d.ts +17 -7
  48. package/esm2020/lib/avatar/avatar.component.mjs +0 -74
  49. package/esm2020/lib/content/content.component.mjs +0 -14
  50. package/esm2020/lib/icon/icon.component.mjs +0 -97
  51. package/esm2020/lib/message.service.mjs +0 -58
  52. package/esm2020/lib/observe-intersecting.directive.mjs +0 -36
  53. package/esm2020/lib/progress/progress.component.mjs +0 -42
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
70
70
  }], value: [{
71
71
  type: Input
72
72
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvcmF0aW5nL3JhdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3JhdGluZy9yYXRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBY3pFLE1BQU0sT0FBTyxlQUFlO0lBZTFCO1FBZEEsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixvQkFBZSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixVQUFLLEdBQVU7WUFDYixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDWixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDWixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDWixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDWixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7U0FDYixDQUFDO0lBR2MsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsRUFBb0I7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELGlCQUFpQixDQUFDLEVBQXFCO1FBQ3JDLDRCQUE0QjtJQUM5QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFhLEVBQUUsT0FBaUI7UUFDdEMsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7NEdBaERVLGVBQWU7Z0dBQWYsZUFBZSxzRkFSZjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUM5QyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMEJDYkgscW5DQWFBOzJGREVhLGVBQWU7a0JBWjNCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjswRUFPRCxRQUFRO3NCQURQLEtBQUs7Z0JBbUJGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBmb3J3YXJkUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdC1yYXRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmF0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmF0aW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmF0aW5nQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBob3ZlclZhbHVlITogbnVtYmVyO1xuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIHN0YXJzOiBhbnlbXSA9IFtcbiAgICB7IHZhbHVlOiAxIH0sXG4gICAgeyB2YWx1ZTogMiB9LFxuICAgIHsgdmFsdWU6IDMgfSxcbiAgICB7IHZhbHVlOiA0IH0sXG4gICAgeyB2YWx1ZTogNSB9XG4gIF07XG4gIF92YWx1ZSE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogIChfOiBhbnkpID0+IHZvaWQpIHtcbiAgICAvL3RoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbiAgc2V0UmF0ZSh2YWx1ZTogbnVtYmVyLCBpc0hvdmVyPzogYm9vbGVhbikge1xuICAgIGlmIChpc0hvdmVyKSB7XG4gICAgICB0aGlzLmhvdmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICB1cGRhdGVWYWx1ZShldmVudDogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhciBvZiBzdGFyc1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIXJlYWRPbmx5PyBidXR0b25UZW1wbGF0ZSA6IHN0YXJUZW1wbGF0ZTsgY29udGV4dDp7c3RhcjpzdGFyfVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlIGxldC1zdGFyPVwic3RhclwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFyZWFkT25seTsgZWxzZSBzdGFyVGVtcGxhdGVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAobW91c2VvdmVyKT1cInNldFJhdGUoc3Rhci52YWx1ZSwgdHJ1ZSlcIiAoZm9jdXMpPVwic2V0UmF0ZShzdGFyLnZhbHVlLCB0cnVlKVwiIChibHVyKT1cInNldFJhdGUoMCwgdHJ1ZSlcIiAobW91c2VvdXQpPVwic2V0UmF0ZSgwLCB0cnVlKVwiIChjbGljayk9XCJzZXRSYXRlKHN0YXIudmFsdWUpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXJUZW1wbGF0ZTsgY29udGV4dDp7c3RhcjpzdGFyfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N0YXJUZW1wbGF0ZSBsZXQtc3Rhcj1cInN0YXJcIj5cbiAgPHN2ZyBbbmdDbGFzc109XCJ7aG92ZXI6IGhvdmVyVmFsdWUgPj0gc3Rhci52YWx1ZSwgYWN0aXZlOiB2YWx1ZSA+PSBzdGFyLnZhbHVlfVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aCBkPVwiTTE3LjkzIDIxLjMxNWMtLjUzNC40MDgtNS4yMi0zLjE4Ni01Ljg4MS0zLjE4MS0uNjYzIDAtNS4zMDcgMy42NTYtNS44NDYgMy4yNTQtLjUzNy0uNDAzIDEuMjktNi4xNjUgMS4wODEtNi44MjItLjIwOS0uNjU2LTQuOTcyLTQuMTM4LTQuNzcyLTQuNzk2LjIwMS0uNjU4IDYuMDE1LS42MjcgNi41NS0xLjAzNi41MzMtLjQxIDIuMjMzLTYuMjE1IDIuODk1LTYuMjE5LjY2MyAwIDIuNDMgNS43NzkgMi45NjggNi4xODIuNTM5LjQwMyA2LjM1Mi4yOTcgNi41Ni45NTMuMjEuNjU2LTQuNTEzIDQuMTk3LTQuNzE0IDQuODU2LS4yLjY1OCAxLjY5MiA2LjM5OCAxLjE1OSA2LjgwOHpcIiAvPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL3JhdGluZy9yYXRpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvcmF0aW5nL3JhdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFjekUsTUFBTSxPQUFPLGVBQWU7SUFlMUI7UUFkQSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBVTtZQUNiLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNaLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNaLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNaLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNaLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtTQUNiLENBQUM7SUFHYyxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUNJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFvQjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBcUI7UUFDckMsNEJBQTRCO0lBQzlCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxDQUFDLEtBQWEsRUFBRSxPQUFpQjtRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjtJQUNILENBQUM7SUFDRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDOzs0R0FoRFUsZUFBZTtnR0FBZixlQUFlLHNGQVJmO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzlDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNiSCxxbkNBYUE7MkZERWEsZUFBZTtrQkFaM0IsU0FBUzsrQkFDRSxXQUFXLGFBR1Y7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBFQU9ELFFBQVE7c0JBRFAsS0FBSztnQkFtQkYsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z0LXJhdGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYXRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYXRpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYXRpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmF0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGhvdmVyVmFsdWUhOiBudW1iZXI7XG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcbiAgQElucHV0KClcbiAgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3RhcnM6IGFueVtdID0gW1xuICAgIHsgdmFsdWU6IDEgfSxcbiAgICB7IHZhbHVlOiAyIH0sXG4gICAgeyB2YWx1ZTogMyB9LFxuICAgIHsgdmFsdWU6IDQgfSxcbiAgICB7IHZhbHVlOiA1IH1cbiAgXTtcbiAgX3ZhbHVlITogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAgKF86IGFueSkgPT4gdm9pZCkge1xuICAgIC8vdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuICBzZXRSYXRlKHZhbHVlOiBudW1iZXIsIGlzSG92ZXI/OiBib29sZWFuKSB7XG4gICAgaWYgKGlzSG92ZXIpIHtcbiAgICAgIHRoaXMuaG92ZXJWYWx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHVwZGF0ZVZhbHVlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGFyIG9mIHN0YXJzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCIhcmVhZE9ubHk/IGJ1dHRvblRlbXBsYXRlIDogc3RhclRlbXBsYXRlOyBjb250ZXh0OntzdGFyOnN0YXJ9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uVGVtcGxhdGUgbGV0LXN0YXI9XCJzdGFyXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIXJlYWRPbmx5OyBlbHNlIHN0YXJUZW1wbGF0ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChtb3VzZW92ZXIpPVwic2V0UmF0ZShzdGFyLnZhbHVlLCB0cnVlKVwiIChmb2N1cyk9XCJzZXRSYXRlKHN0YXIudmFsdWUsIHRydWUpXCIgKGJsdXIpPVwic2V0UmF0ZSgwLCB0cnVlKVwiIChtb3VzZW91dCk9XCJzZXRSYXRlKDAsIHRydWUpXCIgKGNsaWNrKT1cInNldFJhdGUoc3Rhci52YWx1ZSlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhclRlbXBsYXRlOyBjb250ZXh0OntzdGFyOnN0YXJ9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc3RhclRlbXBsYXRlIGxldC1zdGFyPVwic3RhclwiPlxuICA8c3ZnIFtuZ0NsYXNzXT1cIntob3ZlcjogaG92ZXJWYWx1ZSA+PSBzdGFyLnZhbHVlLCBhY3RpdmU6IHZhbHVlID49IHN0YXIudmFsdWV9XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGQ9XCJNMTcuOTMgMjEuMzE1Yy0uNTM0LjQwOC01LjIyLTMuMTg2LTUuODgxLTMuMTgxLS42NjMgMC01LjMwNyAzLjY1Ni01Ljg0NiAzLjI1NC0uNTM3LS40MDMgMS4yOS02LjE2NSAxLjA4MS02LjgyMi0uMjA5LS42NTYtNC45NzItNC4xMzgtNC43NzItNC43OTYuMjAxLS42NTggNi4wMTUtLjYyNyA2LjU1LTEuMDM2LjUzMy0uNDEgMi4yMzMtNi4yMTUgMi44OTUtNi4yMTkuNjYzIDAgMi40MyA1Ljc3OSAyLjk2OCA2LjE4Mi41MzkuNDAzIDYuMzUyLjI5NyA2LjU2Ljk1My4yMS42NTYtNC41MTMgNC4xOTctNC43MTQgNC44NTYtLjIuNjU4IDEuNjkyIDYuMzk4IDEuMTU5IDYuODA4elwiIC8+XG4gIDwvc3ZnPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9tb2RlbHMvYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiBhbnk7XG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9tb2RlbHMvYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4gICAgY2hpbGRyZW4/OiBBY3Rpb25bXTtcbiAgICBjbGFzcz86IHN0cmluZztcbiAgICBjbGljaz86IChldmVudD86IEV2ZW50KSA9PiB2b2lkO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpY29uQ29sbGVjdGlvbj86IHN0cmluZztcbiAgICBpY29uTmFtZT86IHN0cmluZztcbiAgICBpZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBtZXRhZGF0YT86IGFueTtcbiAgICB2YWx1ZT86IGFueTtcbiAgICBjb2xvcj86IHN0cmluZztcbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL21vZGVscy9tb2R1bGUtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNb2R1bGVDb25maWd1cmF0aW9uIHtcbiAgICBpY29uPzoge1xuICAgICAgICBwYXRoPzogc3RyaW5nLFxuICAgICAgICBjb2xsZWN0aW9uPzogc3RyaW5nXG4gICAgfVxufSJdfQ==
@@ -0,0 +1,56 @@
1
+ import { Component, EventEmitter, Output, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/router";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../../display/icon/icon.component";
6
+ export class ListComponent {
7
+ constructor(router) {
8
+ this.router = router;
9
+ this.change = new EventEmitter();
10
+ this.iconNameField = 'iconName';
11
+ this.labelField = 'label';
12
+ }
13
+ getComponentType(item) {
14
+ let type = 'text';
15
+ if (!item.url || item.url.match(/^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/)) {
16
+ type = 'button';
17
+ }
18
+ else {
19
+ type = 'link';
20
+ }
21
+ return type;
22
+ }
23
+ setItem(item) {
24
+ if (item.url) {
25
+ if (item.url.match(/^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/)) {
26
+ window.location.href = item.url;
27
+ }
28
+ }
29
+ else if (item.click) {
30
+ item.click();
31
+ }
32
+ }
33
+ toggleCollapsible(action) {
34
+ action.metadata.show = !action.metadata.show;
35
+ this.change.emit(action);
36
+ }
37
+ }
38
+ ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ListComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
39
+ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: ListComponent, selector: "ft-list", inputs: { iconCollection: "iconCollection", iconNameField: "iconNameField", iconPath: "iconPath", labelField: "labelField", items: "items" }, outputs: { change: "change" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"switch; context: { children: items }\"></ng-container>\n<ng-template #switch let-children=\"children\" let-level=\"level\">\n <ng-container *ngFor=\"let item of children\" [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"'collapsible'\">\n <ng-container *ngTemplateOutlet=\"collapsible; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'header'\">\n <ng-container *ngTemplateOutlet=\"header; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"action; context: { item: item }\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<ng-template #action let-item=\"item\">\n <ng-container [ngSwitch]=\"getComponentType(item)\">\n <button *ngSwitchCase=\"'button'\" type=\"button\" matRipple class=\"list__item\" [ngClass]=\"item.class\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </button>\n <a *ngSwitchCase=\"'link'\" [routerLink]=\"item.url\" routerLinkActive=\"active\" matRipple class=\"list__item\" [ngClass]=\"item.class\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </a>\n </ng-container>\n</ng-template>\n<ng-template #collapsible let-item=\"item\">\n <button type=\"button\" matRipple class=\"collapsible-header list__item\" [ngClass]=\"{ show: item.metadata.show }\" (click)=\"toggleCollapsible(item)\">\n <div class=\"d-flex align-items-center flex-grow-1\">\n <ft-icon class=\"item__icon\" *ngIf=\"item[iconNameField]\" [name]=\"item[iconNameField]\" [collection]=\"iconCollection\" [path]=\"iconPath\"></ft-icon>\n <div class=\"item__label flex-grow-1\">{{ item[labelField] }}</div>\n <ft-icon class=\"item__toggle\" name=\"angle-right\" size=\"1\"></ft-icon>\n </div>\n </button>\n <div class=\"collapsible\" [ngClass]=\"{show:item.metadata.show}\" *ngIf=\"item.children\">\n <ng-container *ngTemplateOutlet=\"switch; context: { children: item.children }\"></ng-container>\n </div>\n</ng-template>\n<ng-template #header let-item=\"item\">\n <div class=\"header\" [ngClass]=\"item.class\">\n {{ item[labelField] }}\n </div>\n</ng-template>\n<ng-template #text let-item=\"item\">\n <div class=\"d-flex align-items-center\">\n <ft-icon class=\"item__icon\" *ngIf=\"item[iconNameField]\" [name]=\"item[iconNameField]\" [collection]=\"iconCollection\" [path]=\"iconPath\"></ft-icon>\n <div class=\"item__label\">{{ item[labelField] }}</div>\n </div>\n</ng-template>\n", styles: [":host{--background-color: var(--background-color, #F8F9FA);--background-color-hover: rgba(0, 0, 0, .03);--background-color-active: rgba(var(--primary-rgb), .1);--text-color: #333;--text-color-hover: var(--primary);--text-color-active: var(--primary);display:block;overflow:auto}.list__item{border:0;box-sizing:border-box;color:var(--text-color);background-color:var(--background-color);cursor:pointer;display:flex;outline:none;transition:background-color .3s,color .3s;text-align:left;padding:.75rem 1.5rem;width:100%}@media (min-width: var(--breakpoint-md)){.list__item{width:100%}}.list__item:hover{text-decoration:none}.list__item:hover:not(.active){--background-color: var(--background-color-hover);--text-color: var(--text-color-hover)}.list__item.active,.list__item:active{--background-color: var(--background-color-active);--text-color: var(--text-color-active)}.list__item>div{max-width:100%}.list__item .item__icon{font-size:1.5rem}.list__item .item__icon+.item__label{display:block;margin-left:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list__item .item__icon,.list__item .item__label{transition:margin-left .3s}.list__item .item__toggle{transition:transform .2s}.collapsible{overflow:hidden;transition:max-height .2s;max-height:100vh;background-color:#00000003;box-shadow:inset 0 4px 9px -7px #0006}.collapsible-header{font-weight:500}.collapsible-header.show .item__toggle{transform:rotate(90deg)}.collapsible:not(.show){max-height:0;background-color:transparent}.header{text-transform:uppercase;font-weight:700;padding:.75rem 1.5rem .25rem;font-size:.75rem;opacity:.3}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.IconComponent, selector: "ft-icon", inputs: ["class", "collection", "mode", "name", "path", "size", "src"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ListComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'ft-list', template: "<ng-container *ngTemplateOutlet=\"switch; context: { children: items }\"></ng-container>\n<ng-template #switch let-children=\"children\" let-level=\"level\">\n <ng-container *ngFor=\"let item of children\" [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"'collapsible'\">\n <ng-container *ngTemplateOutlet=\"collapsible; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'header'\">\n <ng-container *ngTemplateOutlet=\"header; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"action; context: { item: item }\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<ng-template #action let-item=\"item\">\n <ng-container [ngSwitch]=\"getComponentType(item)\">\n <button *ngSwitchCase=\"'button'\" type=\"button\" matRipple class=\"list__item\" [ngClass]=\"item.class\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </button>\n <a *ngSwitchCase=\"'link'\" [routerLink]=\"item.url\" routerLinkActive=\"active\" matRipple class=\"list__item\" [ngClass]=\"item.class\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </a>\n </ng-container>\n</ng-template>\n<ng-template #collapsible let-item=\"item\">\n <button type=\"button\" matRipple class=\"collapsible-header list__item\" [ngClass]=\"{ show: item.metadata.show }\" (click)=\"toggleCollapsible(item)\">\n <div class=\"d-flex align-items-center flex-grow-1\">\n <ft-icon class=\"item__icon\" *ngIf=\"item[iconNameField]\" [name]=\"item[iconNameField]\" [collection]=\"iconCollection\" [path]=\"iconPath\"></ft-icon>\n <div class=\"item__label flex-grow-1\">{{ item[labelField] }}</div>\n <ft-icon class=\"item__toggle\" name=\"angle-right\" size=\"1\"></ft-icon>\n </div>\n </button>\n <div class=\"collapsible\" [ngClass]=\"{show:item.metadata.show}\" *ngIf=\"item.children\">\n <ng-container *ngTemplateOutlet=\"switch; context: { children: item.children }\"></ng-container>\n </div>\n</ng-template>\n<ng-template #header let-item=\"item\">\n <div class=\"header\" [ngClass]=\"item.class\">\n {{ item[labelField] }}\n </div>\n</ng-template>\n<ng-template #text let-item=\"item\">\n <div class=\"d-flex align-items-center\">\n <ft-icon class=\"item__icon\" *ngIf=\"item[iconNameField]\" [name]=\"item[iconNameField]\" [collection]=\"iconCollection\" [path]=\"iconPath\"></ft-icon>\n <div class=\"item__label\">{{ item[labelField] }}</div>\n </div>\n</ng-template>\n", styles: [":host{--background-color: var(--background-color, #F8F9FA);--background-color-hover: rgba(0, 0, 0, .03);--background-color-active: rgba(var(--primary-rgb), .1);--text-color: #333;--text-color-hover: var(--primary);--text-color-active: var(--primary);display:block;overflow:auto}.list__item{border:0;box-sizing:border-box;color:var(--text-color);background-color:var(--background-color);cursor:pointer;display:flex;outline:none;transition:background-color .3s,color .3s;text-align:left;padding:.75rem 1.5rem;width:100%}@media (min-width: var(--breakpoint-md)){.list__item{width:100%}}.list__item:hover{text-decoration:none}.list__item:hover:not(.active){--background-color: var(--background-color-hover);--text-color: var(--text-color-hover)}.list__item.active,.list__item:active{--background-color: var(--background-color-active);--text-color: var(--text-color-active)}.list__item>div{max-width:100%}.list__item .item__icon{font-size:1.5rem}.list__item .item__icon+.item__label{display:block;margin-left:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list__item .item__icon,.list__item .item__label{transition:margin-left .3s}.list__item .item__toggle{transition:transform .2s}.collapsible{overflow:hidden;transition:max-height .2s;max-height:100vh;background-color:#00000003;box-shadow:inset 0 4px 9px -7px #0006}.collapsible-header{font-weight:500}.collapsible-header.show .item__toggle{transform:rotate(90deg)}.collapsible:not(.show){max-height:0;background-color:transparent}.header{text-transform:uppercase;font-weight:700;padding:.75rem 1.5rem .25rem;font-size:.75rem;opacity:.3}\n"] }]
43
+ }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { change: [{
44
+ type: Output
45
+ }], iconCollection: [{
46
+ type: Input
47
+ }], iconNameField: [{
48
+ type: Input
49
+ }], iconPath: [{
50
+ type: Input
51
+ }], labelField: [{
52
+ type: Input
53
+ }], items: [{
54
+ type: Input
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL25hdmlnYXRpb24vbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbmF2aWdhdGlvbi9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVdkUsTUFBTSxPQUFPLGFBQWE7SUFjeEIsWUFDVSxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJ4QixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUlwQyxrQkFBYSxHQUFXLFVBQVUsQ0FBQztRQUluQyxlQUFVLEdBQVcsT0FBTyxDQUFDO0lBTXpCLENBQUM7SUFFTCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksSUFBSSxHQUFXLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxFQUFFO1lBQ2pILElBQUksR0FBRyxRQUFRLENBQUM7U0FDakI7YUFBTTtZQUNMLElBQUksR0FBRyxNQUFNLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0ZBQWdGLENBQUMsRUFBRTtnQkFDcEcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNqQztTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUNELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDOzswR0F2Q1UsYUFBYTs4RkFBYixhQUFhLDROQ1YxQix3b0ZBK0NBOzJGRHJDYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7NkZBTW5CLE1BQU07c0JBREwsTUFBTTtnQkFHUCxjQUFjO3NCQURiLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGlzdENvbXBvbmVudCB7XG4gIEBPdXRwdXQoKVxuICBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbj4oKTtcbiAgQElucHV0KClcbiAgaWNvbkNvbGxlY3Rpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGljb25OYW1lRmllbGQ6IHN0cmluZyA9ICdpY29uTmFtZSc7XG4gIEBJbnB1dCgpXG4gIGljb25QYXRoITogc3RyaW5nO1xuICBASW5wdXQoKVxuICBsYWJlbEZpZWxkOiBzdHJpbmcgPSAnbGFiZWwnO1xuICBASW5wdXQoKVxuICBpdGVtcyE6IEFjdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7IH1cblxuICBnZXRDb21wb25lbnRUeXBlKGl0ZW06IEFjdGlvbik6IHN0cmluZyB7XG4gICAgbGV0IHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcbiAgICBpZiAoIWl0ZW0udXJsIHx8IGl0ZW0udXJsLm1hdGNoKC9eKGh0dHB8aHR0cHMpOlxcL1xcLyhcXHcrOnswLDF9XFx3KkApPyhcXFMrKSg6WzAtOV0rKT8oXFwvfFxcLyhbXFx3IyE6Lj8rPSYlQCFcXC1cXC9dKSk/LykpIHtcbiAgICAgIHR5cGUgPSAnYnV0dG9uJztcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9ICdsaW5rJztcbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbiAgc2V0SXRlbShpdGVtOiBBY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoaXRlbS51cmwpIHtcbiAgICAgIGlmIChpdGVtLnVybC5tYXRjaCgvXihodHRwfGh0dHBzKTpcXC9cXC8oXFx3Kzp7MCwxfVxcdypAKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJUAhXFwtXFwvXSkpPy8pKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaXRlbS51cmw7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpdGVtLmNsaWNrKSB7XG4gICAgICBpdGVtLmNsaWNrKCk7XG4gICAgfVxuICB9XG4gIHRvZ2dsZUNvbGxhcHNpYmxlKGFjdGlvbjogQWN0aW9uKTogdm9pZCB7XG4gICAgYWN0aW9uLm1ldGFkYXRhLnNob3cgPSAhYWN0aW9uLm1ldGFkYXRhLnNob3c7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChhY3Rpb24pO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzd2l0Y2g7IGNvbnRleHQ6IHsgY2hpbGRyZW46IGl0ZW1zIH1cIj48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjc3dpdGNoIGxldC1jaGlsZHJlbj1cImNoaWxkcmVuXCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjaGlsZHJlblwiIFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29sbGFwc2libGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sbGFwc2libGU7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2hlYWRlcidcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXI7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbjsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNhY3Rpb24gbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImdldENvbXBvbmVudFR5cGUoaXRlbSlcIj5cbiAgICA8YnV0dG9uICpuZ1N3aXRjaENhc2U9XCInYnV0dG9uJ1wiIHR5cGU9XCJidXR0b25cIiBtYXRSaXBwbGUgY2xhc3M9XCJsaXN0X19pdGVtXCIgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIChjbGljayk9XCJzZXRJdGVtKGl0ZW0pXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGV4dDsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YSAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCIgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgbWF0UmlwcGxlIGNsYXNzPVwibGlzdF9faXRlbVwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIiAoY2xpY2spPVwic2V0SXRlbShpdGVtKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHQ7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2NvbGxhcHNpYmxlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRSaXBwbGUgY2xhc3M9XCJjb2xsYXBzaWJsZS1oZWFkZXIgbGlzdF9faXRlbVwiIFtuZ0NsYXNzXT1cInsgc2hvdzogaXRlbS5tZXRhZGF0YS5zaG93IH1cIiAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2libGUoaXRlbSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMVwiPlxuICAgICAgPGZ0LWljb24gY2xhc3M9XCJpdGVtX19pY29uXCIgKm5nSWY9XCJpdGVtW2ljb25OYW1lRmllbGRdXCIgW25hbWVdPVwiaXRlbVtpY29uTmFtZUZpZWxkXVwiIFtjb2xsZWN0aW9uXT1cImljb25Db2xsZWN0aW9uXCIgW3BhdGhdPVwiaWNvblBhdGhcIj48L2Z0LWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbV9fbGFiZWwgZmxleC1ncm93LTFcIj57eyBpdGVtW2xhYmVsRmllbGRdIH19PC9kaXY+XG4gICAgICA8ZnQtaWNvbiBjbGFzcz1cIml0ZW1fX3RvZ2dsZVwiIG5hbWU9XCJhbmdsZS1yaWdodFwiIHNpemU9XCIxXCI+PC9mdC1pY29uPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlXCIgW25nQ2xhc3NdPVwie3Nob3c6aXRlbS5tZXRhZGF0YS5zaG93fVwiICpuZ0lmPVwiaXRlbS5jaGlsZHJlblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzd2l0Y2g7IGNvbnRleHQ6IHsgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW4gfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRlciBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIj5cbiAgICB7eyBpdGVtW2xhYmVsRmllbGRdIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGV4dCBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZnQtaWNvbiBjbGFzcz1cIml0ZW1fX2ljb25cIiAqbmdJZj1cIml0ZW1baWNvbk5hbWVGaWVsZF1cIiBbbmFtZV09XCJpdGVtW2ljb25OYW1lRmllbGRdXCIgW2NvbGxlY3Rpb25dPVwiaWNvbkNvbGxlY3Rpb25cIiBbcGF0aF09XCJpY29uUGF0aFwiPjwvZnQtaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbV9fbGFiZWxcIj57eyBpdGVtW2xhYmVsRmllbGRdIH19PC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { Component, Input, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/router";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../../display/icon/icon.component";
6
+ export class NavbarComponent {
7
+ constructor(router) {
8
+ this.router = router;
9
+ this.class = '';
10
+ this.iconNameField = 'iconName';
11
+ this.labelField = 'label';
12
+ this.labelPlacement = 'auto';
13
+ this.position = 'auto';
14
+ }
15
+ ngOnInit() { }
16
+ get hostClasses() {
17
+ return [
18
+ this.class,
19
+ this.position
20
+ ].join(' ');
21
+ }
22
+ getComponentType(item) {
23
+ let type = 'text';
24
+ if (!item.url || item.url.match(/^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/)) {
25
+ type = 'button';
26
+ }
27
+ else {
28
+ type = 'link';
29
+ }
30
+ return type;
31
+ }
32
+ setItem(item) {
33
+ if (item.url) {
34
+ if (item.url.match(/^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/)) {
35
+ window.location.href = item.url;
36
+ }
37
+ }
38
+ else if (item.click) {
39
+ item.click();
40
+ }
41
+ }
42
+ toggleCollapsible(action) {
43
+ action.metadata.show = !action.metadata.show;
44
+ }
45
+ trackByItem(index, item) {
46
+ return `${item.label} ${item.url}`;
47
+ }
48
+ }
49
+ NavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: NavbarComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
50
+ NavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: NavbarComponent, selector: "ft-navbar", inputs: { class: "class", iconCollection: "iconCollection", iconNameField: "iconNameField", labelField: "labelField", labelPlacement: "labelPlacement", items: "items", position: "position" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-content select=\"[ftStart]\"></ng-content>\n<div class=\"list\" *ngIf=\"items\">\n <ng-container *ngFor=\"let item of items; trackBy: trackByItem\">\n <ng-container *ngTemplateOutlet=\"action; context: { item: item }\"></ng-container>\n </ng-container>\n</div>\n<ng-content select=\"[ftEnd]\"></ng-content>\n<ng-template #action let-item=\"item\">\n <ng-container [ngSwitch]=\"getComponentType(item)\">\n <button *ngSwitchCase=\"'button'\" type=\"button\" matRipple class=\"list__item\" [ngClass]=\"[labelPlacement, item.class || '' ]\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </button>\n <a *ngSwitchCase=\"'link'\" [routerLink]=\"item.url\" routerLinkActive=\"active\" matRipple class=\"list__item\" [ngClass]=\"[labelPlacement, item.class || '' ]\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </a>\n </ng-container>\n</ng-template>\n<ng-template #text let-item=\"item\">\n <div class=\"item\">\n <ft-icon class=\"item__icon\" *ngIf=\"item[iconNameField]\" [name]=\"item[iconNameField]\" [collection]=\"iconCollection\" [title]=\"labelPlacement === 'none' ? item[labelField] : '' \"></ft-icon>\n <div class=\"item__label\" *ngIf=\"labelPlacement !== 'none'\">{{ item[labelField] }}</div>\n </div>\n</ng-template>\n", styles: [":host{--min-width: 4rem;--min-height: 3.5rem;--background-color: #FFF;--background-color-hover: rgba(0, 0, 0, .1);--background-color-active: rgba(0, 0, 0, .1);--text-color: #333;--text-color-hover: #333;--text-color-active: #FFF;background-color:var(--background-color);position:fixed;transition:transform .3s ease-in-out,width .3s,color .3s,background-color .3s;z-index:var(--z-index, 990);font-size:.875rem;display:flex}@media (min-width: 576px){:host{--min-width: 13.75rem}}:host.left,:host.right{top:0;bottom:0;box-shadow:0 1px 1px #00000024,0 1px 3px #0000001f;min-width:var(--min-width)}:host.left{left:0}:host.right{right:0}:host.bottom,:host.top{left:0;right:0;min-height:var(--min-height)}:host.bottom .list,:host.top .list{display:flex}:host.bottom .list__item,:host.top .list__item{flex-grow:1;justify-content:center}:host.bottom{bottom:0;box-shadow:0 0 1px #00000024,0 -1px 3px #0000001f}:host.top{top:0;box-shadow:0 0 1px #00000024,0 1px 3px #0000001f}@media (min-width: 768px){:host.auto{left:0;top:0;bottom:0;box-shadow:0 1px 1px #00000024,0 1px 3px #0000001f;min-width:var(--min-width);flex-direction:column}}@media (max-width: 767.98px){:host.auto{bottom:0;left:0;right:0;box-shadow:0 0 1px #00000024,0 -1px 3px #0000001f;min-height:var(--min-height)}:host.auto .list{display:flex}}.list{display:block;flex-grow:1;overflow:auto}.list__item{border:0;box-sizing:border-box;color:var(--text-color);cursor:pointer;outline:none;transition:background-color .3s,color .3s;display:flex;align-items:center;padding:.75rem 1rem;width:100%}.list__item:hover{text-decoration:none}.list__item:hover:not(.active){background:var(--hover-background-color);color:var(--hover-text-color)}.list__item.active{background:var(--active-background-color);color:var(--active-text-color)}.list__item.left{justify-content:flex-start}.list__item.left .item__icon{margin-right:.5rem}.list__item.right{justify-content:flex-end}.list__item.right .item{flex-direction:row-reverse}.list__item.right .item__icon{margin-left:.5rem}.list__item.top{justify-content:center;flex-grow:1;padding:.5rem}.list__item.top .item{flex-direction:column-reverse}.list__item.bottom{justify-content:center;flex-grow:1;padding:.5rem}.list__item.bottom .item{flex-direction:column}@media (min-width: 768px){.list__item.auto .item{flex-direction:row}.list__item.auto .item__icon{margin-right:.5rem}}@media (max-width: 767.98px){.list__item.auto{justify-content:center;flex-grow:1;padding:.5rem}.list__item.auto .item{flex-direction:column;font-size:.6875rem}}.list__item .item{display:flex;align-items:center}.list__item .item__icon{font-size:1.5rem}.list__item .item__label{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.IconComponent, selector: "ft-icon", inputs: ["class", "collection", "mode", "name", "path", "size", "src"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: NavbarComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'ft-navbar', template: "<ng-content select=\"[ftStart]\"></ng-content>\n<div class=\"list\" *ngIf=\"items\">\n <ng-container *ngFor=\"let item of items; trackBy: trackByItem\">\n <ng-container *ngTemplateOutlet=\"action; context: { item: item }\"></ng-container>\n </ng-container>\n</div>\n<ng-content select=\"[ftEnd]\"></ng-content>\n<ng-template #action let-item=\"item\">\n <ng-container [ngSwitch]=\"getComponentType(item)\">\n <button *ngSwitchCase=\"'button'\" type=\"button\" matRipple class=\"list__item\" [ngClass]=\"[labelPlacement, item.class || '' ]\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </button>\n <a *ngSwitchCase=\"'link'\" [routerLink]=\"item.url\" routerLinkActive=\"active\" matRipple class=\"list__item\" [ngClass]=\"[labelPlacement, item.class || '' ]\" (click)=\"setItem(item)\">\n <ng-container *ngTemplateOutlet=\"text; context: { item: item }\"></ng-container>\n </a>\n </ng-container>\n</ng-template>\n<ng-template #text let-item=\"item\">\n <div class=\"item\">\n <ft-icon class=\"item__icon\" *ngIf=\"item[iconNameField]\" [name]=\"item[iconNameField]\" [collection]=\"iconCollection\" [title]=\"labelPlacement === 'none' ? item[labelField] : '' \"></ft-icon>\n <div class=\"item__label\" *ngIf=\"labelPlacement !== 'none'\">{{ item[labelField] }}</div>\n </div>\n</ng-template>\n", styles: [":host{--min-width: 4rem;--min-height: 3.5rem;--background-color: #FFF;--background-color-hover: rgba(0, 0, 0, .1);--background-color-active: rgba(0, 0, 0, .1);--text-color: #333;--text-color-hover: #333;--text-color-active: #FFF;background-color:var(--background-color);position:fixed;transition:transform .3s ease-in-out,width .3s,color .3s,background-color .3s;z-index:var(--z-index, 990);font-size:.875rem;display:flex}@media (min-width: 576px){:host{--min-width: 13.75rem}}:host.left,:host.right{top:0;bottom:0;box-shadow:0 1px 1px #00000024,0 1px 3px #0000001f;min-width:var(--min-width)}:host.left{left:0}:host.right{right:0}:host.bottom,:host.top{left:0;right:0;min-height:var(--min-height)}:host.bottom .list,:host.top .list{display:flex}:host.bottom .list__item,:host.top .list__item{flex-grow:1;justify-content:center}:host.bottom{bottom:0;box-shadow:0 0 1px #00000024,0 -1px 3px #0000001f}:host.top{top:0;box-shadow:0 0 1px #00000024,0 1px 3px #0000001f}@media (min-width: 768px){:host.auto{left:0;top:0;bottom:0;box-shadow:0 1px 1px #00000024,0 1px 3px #0000001f;min-width:var(--min-width);flex-direction:column}}@media (max-width: 767.98px){:host.auto{bottom:0;left:0;right:0;box-shadow:0 0 1px #00000024,0 -1px 3px #0000001f;min-height:var(--min-height)}:host.auto .list{display:flex}}.list{display:block;flex-grow:1;overflow:auto}.list__item{border:0;box-sizing:border-box;color:var(--text-color);cursor:pointer;outline:none;transition:background-color .3s,color .3s;display:flex;align-items:center;padding:.75rem 1rem;width:100%}.list__item:hover{text-decoration:none}.list__item:hover:not(.active){background:var(--hover-background-color);color:var(--hover-text-color)}.list__item.active{background:var(--active-background-color);color:var(--active-text-color)}.list__item.left{justify-content:flex-start}.list__item.left .item__icon{margin-right:.5rem}.list__item.right{justify-content:flex-end}.list__item.right .item{flex-direction:row-reverse}.list__item.right .item__icon{margin-left:.5rem}.list__item.top{justify-content:center;flex-grow:1;padding:.5rem}.list__item.top .item{flex-direction:column-reverse}.list__item.bottom{justify-content:center;flex-grow:1;padding:.5rem}.list__item.bottom .item{flex-direction:column}@media (min-width: 768px){.list__item.auto .item{flex-direction:row}.list__item.auto .item__icon{margin-right:.5rem}}@media (max-width: 767.98px){.list__item.auto{justify-content:center;flex-grow:1;padding:.5rem}.list__item.auto .item{flex-direction:column;font-size:.6875rem}}.list__item .item{display:flex;align-items:center}.list__item .item__icon{font-size:1.5rem}.list__item .item__label{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
54
+ }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { class: [{
55
+ type: Input
56
+ }], iconCollection: [{
57
+ type: Input
58
+ }], iconNameField: [{
59
+ type: Input
60
+ }], labelField: [{
61
+ type: Input
62
+ }], labelPlacement: [{
63
+ type: Input
64
+ }], items: [{
65
+ type: Input
66
+ }], position: [{
67
+ type: Input
68
+ }], hostClasses: [{
69
+ type: HostBinding,
70
+ args: ['class']
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbmF2aWdhdGlvbi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbmF2aWdhdGlvbi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTdEUsTUFBTSxPQUFPLGVBQWU7SUFnQjFCLFlBQ1UsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFmeEIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUluQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztRQUVuQyxlQUFVLEdBQVcsT0FBTyxDQUFDO1FBRTdCLG1CQUFjLEdBQTBELE1BQU0sQ0FBQztRQUkvRSxhQUFRLEdBQWlELE1BQU0sQ0FBQztJQUk1RCxDQUFDO0lBRUwsUUFBUSxLQUFLLENBQUM7SUFDZCxJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsUUFBUTtTQUNkLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsSUFBSSxJQUFJLEdBQVcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdGQUFnRixDQUFDLEVBQUU7WUFDakgsSUFBSSxHQUFHLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxFQUFFO2dCQUNwRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ2pDO1NBQ0Y7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsTUFBYztRQUM5QixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQy9DLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBYSxFQUFFLElBQVk7UUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7OzRHQW5EVSxlQUFlO2dHQUFmLGVBQWUsd1NDVDVCLHkzQ0F1QkE7MkZEZGEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxXQUFXOzZGQU1yQixLQUFLO3NCQURKLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBU0YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z0LW5hdmJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXZiYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOYXZiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpXG4gIGljb25Db2xsZWN0aW9uITogc3RyaW5nO1xuICBASW5wdXQoKVxuICBpY29uTmFtZUZpZWxkOiBzdHJpbmcgPSAnaWNvbk5hbWUnO1xuICBASW5wdXQoKVxuICBsYWJlbEZpZWxkOiBzdHJpbmcgPSAnbGFiZWwnO1xuICBASW5wdXQoKVxuICBsYWJlbFBsYWNlbWVudDogJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAnYXV0bycgfCAnbm9uZScgPSAnYXV0byc7XG4gIEBJbnB1dCgpXG4gIGl0ZW1zITogQWN0aW9uW107XG4gIEBJbnB1dCgpXG4gIHBvc2l0aW9uOiAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdhdXRvJyA9ICdhdXRvJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgdGhpcy5wb3NpdGlvblxuICAgIF0uam9pbignICcpO1xuICB9XG4gIGdldENvbXBvbmVudFR5cGUoaXRlbTogQWN0aW9uKTogc3RyaW5nIHtcbiAgICBsZXQgdHlwZTogc3RyaW5nID0gJ3RleHQnO1xuICAgIGlmICghaXRlbS51cmwgfHwgaXRlbS51cmwubWF0Y2goL14oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6ezAsMX1cXHcqQCk/KFxcUyspKDpbMC05XSspPyhcXC98XFwvKFtcXHcjITouPys9JiVAIVxcLVxcL10pKT8vKSkge1xuICAgICAgdHlwZSA9ICdidXR0b24nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlID0gJ2xpbmsnO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICBzZXRJdGVtKGl0ZW06IEFjdGlvbik6IHZvaWQge1xuICAgIGlmIChpdGVtLnVybCkge1xuICAgICAgaWYgKGl0ZW0udXJsLm1hdGNoKC9eKGh0dHB8aHR0cHMpOlxcL1xcLyhcXHcrOnswLDF9XFx3KkApPyhcXFMrKSg6WzAtOV0rKT8oXFwvfFxcLyhbXFx3IyE6Lj8rPSYlQCFcXC1cXC9dKSk/LykpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBpdGVtLnVybDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGl0ZW0uY2xpY2spIHtcbiAgICAgIGl0ZW0uY2xpY2soKTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlQ29sbGFwc2libGUoYWN0aW9uOiBBY3Rpb24pOiB2b2lkIHtcbiAgICBhY3Rpb24ubWV0YWRhdGEuc2hvdyA9ICFhY3Rpb24ubWV0YWRhdGEuc2hvdztcbiAgfVxuICB0cmFja0J5SXRlbShpbmRleDogbnVtYmVyLCBpdGVtOiBBY3Rpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtpdGVtLmxhYmVsfSAke2l0ZW0udXJsfWA7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Z0U3RhcnRdXCI+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImxpc3RcIiAqbmdJZj1cIml0ZW1zXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbjsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cIltmdEVuZF1cIj48L25nLWNvbnRlbnQ+XG48bmctdGVtcGxhdGUgI2FjdGlvbiBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZ2V0Q29tcG9uZW50VHlwZShpdGVtKVwiPlxuICAgIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cIididXR0b24nXCIgdHlwZT1cImJ1dHRvblwiIG1hdFJpcHBsZSBjbGFzcz1cImxpc3RfX2l0ZW1cIiBbbmdDbGFzc109XCJbbGFiZWxQbGFjZW1lbnQsIGl0ZW0uY2xhc3MgfHwgJycgXVwiIChjbGljayk9XCJzZXRJdGVtKGl0ZW0pXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGV4dDsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YSAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCIgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgbWF0UmlwcGxlIGNsYXNzPVwibGlzdF9faXRlbVwiIFtuZ0NsYXNzXT1cIltsYWJlbFBsYWNlbWVudCwgaXRlbS5jbGFzcyB8fCAnJyBdXCIgKGNsaWNrKT1cInNldEl0ZW0oaXRlbSlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0OyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0ZXh0IGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwiaXRlbVwiPlxuICAgIDxmdC1pY29uIGNsYXNzPVwiaXRlbV9faWNvblwiICpuZ0lmPVwiaXRlbVtpY29uTmFtZUZpZWxkXVwiIFtuYW1lXT1cIml0ZW1baWNvbk5hbWVGaWVsZF1cIiBbY29sbGVjdGlvbl09XCJpY29uQ29sbGVjdGlvblwiIFt0aXRsZV09XCJsYWJlbFBsYWNlbWVudCA9PT0gJ25vbmUnID8gaXRlbVtsYWJlbEZpZWxkXSA6ICcnIFwiPjwvZnQtaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbV9fbGFiZWxcIiAqbmdJZj1cImxhYmVsUGxhY2VtZW50ICE9PSAnbm9uZSdcIj57eyBpdGVtW2xhYmVsRmllbGRdIH19PC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,55 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatMenuModule } from '@angular/material/menu';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { ListComponent } from './list/list.component';
6
+ import { NavbarComponent } from './navbar/navbar.component';
7
+ import { ToolbarComponent } from './toolbar/toolbar.component';
8
+ import { SearchboxComponent } from './searchbox/searchbox.component';
9
+ import { DisplayModule } from '../display/display.module';
10
+ import { RouterModule } from '@angular/router';
11
+ import * as i0 from "@angular/core";
12
+ export class NavigationModule {
13
+ }
14
+ NavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: NavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ NavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.0", ngImport: i0, type: NavigationModule, declarations: [ListComponent,
16
+ NavbarComponent,
17
+ ToolbarComponent,
18
+ SearchboxComponent], imports: [CommonModule,
19
+ DisplayModule,
20
+ RouterModule,
21
+ MatMenuModule,
22
+ MatButtonModule], exports: [ListComponent,
23
+ NavbarComponent,
24
+ ToolbarComponent,
25
+ SearchboxComponent] });
26
+ NavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: NavigationModule, imports: [CommonModule,
27
+ DisplayModule,
28
+ RouterModule,
29
+ MatMenuModule,
30
+ MatButtonModule] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: NavigationModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [
35
+ ListComponent,
36
+ NavbarComponent,
37
+ ToolbarComponent,
38
+ SearchboxComponent
39
+ ],
40
+ exports: [
41
+ ListComponent,
42
+ NavbarComponent,
43
+ ToolbarComponent,
44
+ SearchboxComponent
45
+ ],
46
+ imports: [
47
+ CommonModule,
48
+ DisplayModule,
49
+ RouterModule,
50
+ MatMenuModule,
51
+ MatButtonModule
52
+ ]
53
+ }]
54
+ }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBdUIvQyxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBbkJ6QixhQUFhO1FBQ2IsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixrQkFBa0IsYUFTbEIsWUFBWTtRQUNaLGFBQWE7UUFDYixZQUFZO1FBQ1osYUFBYTtRQUNiLGVBQWUsYUFWZixhQUFhO1FBQ2IsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixrQkFBa0I7OEdBVVQsZ0JBQWdCLFlBUHpCLFlBQVk7UUFDWixhQUFhO1FBQ2IsWUFBWTtRQUNaLGFBQWE7UUFDYixlQUFlOzJGQUdOLGdCQUFnQjtrQkFyQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7IExpc3RDb21wb25lbnQgfSBmcm9tICcuL2xpc3QvbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2YmFyQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGJveENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheU1vZHVsZSB9IGZyb20gJy4uL2Rpc3BsYXkvZGlzcGxheS5tb2R1bGUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTGlzdENvbXBvbmVudCxcbiAgICBOYXZiYXJDb21wb25lbnQsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBTZWFyY2hib3hDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIExpc3RDb21wb25lbnQsXG4gICAgTmF2YmFyQ29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2VhcmNoYm94Q29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRGlzcGxheU1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,106 @@
1
+ import { Component, ViewChild, forwardRef, Input, HostBinding, Output, EventEmitter } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../../display/icon/icon.component";
6
+ import * as i3 from "@angular/material/button";
7
+ export class SearchboxComponent {
8
+ constructor() {
9
+ this.execute = new EventEmitter();
10
+ this.showChange = new EventEmitter();
11
+ this.onChange = (_) => { };
12
+ this.onTouched = (_) => { };
13
+ }
14
+ get hostClasses() {
15
+ return [
16
+ this.class,
17
+ this.shown ? 'show' : ''
18
+ ].join(' ');
19
+ }
20
+ set show(value) {
21
+ this.shown = value;
22
+ if (value) {
23
+ setTimeout(() => {
24
+ this.getNativeElement().focus();
25
+ }, 300);
26
+ }
27
+ }
28
+ set value(value) {
29
+ this._value = value || '';
30
+ this.getNativeElement().value = this._value;
31
+ this.onChange(this._value);
32
+ this.onTouched(this._value);
33
+ }
34
+ get value() {
35
+ return this._value;
36
+ }
37
+ ngOnInit() {
38
+ }
39
+ closeSearch() {
40
+ this.showChange.emit(false);
41
+ }
42
+ getNativeElement() {
43
+ const input = this.placeholder ? this.inputPlaceholder : this.input;
44
+ return input.nativeElement;
45
+ }
46
+ registerOnChange(fn) {
47
+ this.onChange = fn;
48
+ }
49
+ registerOnTouched(fn) {
50
+ this.onTouched = fn;
51
+ }
52
+ setDisabledState(isDisabled) {
53
+ this.disabled = isDisabled;
54
+ }
55
+ onSearch(event) {
56
+ event.preventDefault();
57
+ this.getNativeElement().value = '';
58
+ this.execute.emit(this._value);
59
+ }
60
+ updateValue(event) {
61
+ this.value = event.target.value;
62
+ }
63
+ writeValue(value) {
64
+ this.value = value;
65
+ }
66
+ }
67
+ SearchboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: SearchboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ SearchboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: SearchboxComponent, selector: "ft-searchbox", inputs: { class: "class", placeholder: "placeholder", show: "show", value: "value" }, outputs: { execute: "execute", showChange: "showChange" }, host: { properties: { "class": "this.hostClasses" } }, providers: [
69
+ {
70
+ provide: NG_VALUE_ACCESSOR,
71
+ useExisting: forwardRef(() => SearchboxComponent),
72
+ multi: true
73
+ }
74
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputPlaceholder", first: true, predicate: ["inputPlaceholder"], descendants: true }], ngImport: i0, template: "<form (submit)=\"onSearch($event)\" class=\"container p-2 p-sm-3 pb-md-3 pt-md-5 px-md-3 px-lg-5\">\n <div class=\"d-flex align-items-center\">\n <button type=\"button\" mat-icon-button class=\"p-2 mr-2\" (click)=\"closeSearch()\">\n <ft-icon name=\"arrow-left\" size=\"2\"></ft-icon>\n </button>\n <input\n #input\n type=\"search\"\n matInput\n class=\"flex-grow-1\"\n i18n-placeholder\n placeholder=\"Search criteria\"\n [disabled]=\"disabled\"\n (change)=\"updateValue($event)\"\n (keyup)=\"updateValue($event)\"\n *ngIf=\"!placeholder\"\n />\n <input\n #inputPlaceholder\n type=\"search\"\n matInput\n class=\"flex-grow-1\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (change)=\"updateValue($event)\"\n (keyup)=\"updateValue($event)\"\n *ngIf=\"placeholder\"\n />\n <button type=\"submit\" mat-icon-button class=\"p-2 ml-2\">\n <ft-icon name=\"search\" size=\"2\"></ft-icon>\n </button>\n </div>\n </form>\n ", styles: [":host{z-index:var(--z-index, 980);background-color:var(--background-color, #FFF);display:block;transition:background-color .2s,box-shadow .2s;position:sticky;top:-1px;margin-top:-3.5rem;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}:host.show{opacity:1;visibility:visible}@media (min-width: 576px){:host{margin-top:-4.5rem}}@media (min-width: 768px){:host{top:-2rem;margin-top:-6.5rem}}:host button{min-width:0;line-height:inherit}:host input{border:0;background-color:transparent}:host input:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "ft-icon", inputs: ["class", "collection", "mode", "name", "path", "size", "src"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: SearchboxComponent, decorators: [{
76
+ type: Component,
77
+ args: [{ selector: 'ft-searchbox', providers: [
78
+ {
79
+ provide: NG_VALUE_ACCESSOR,
80
+ useExisting: forwardRef(() => SearchboxComponent),
81
+ multi: true
82
+ }
83
+ ], template: "<form (submit)=\"onSearch($event)\" class=\"container p-2 p-sm-3 pb-md-3 pt-md-5 px-md-3 px-lg-5\">\n <div class=\"d-flex align-items-center\">\n <button type=\"button\" mat-icon-button class=\"p-2 mr-2\" (click)=\"closeSearch()\">\n <ft-icon name=\"arrow-left\" size=\"2\"></ft-icon>\n </button>\n <input\n #input\n type=\"search\"\n matInput\n class=\"flex-grow-1\"\n i18n-placeholder\n placeholder=\"Search criteria\"\n [disabled]=\"disabled\"\n (change)=\"updateValue($event)\"\n (keyup)=\"updateValue($event)\"\n *ngIf=\"!placeholder\"\n />\n <input\n #inputPlaceholder\n type=\"search\"\n matInput\n class=\"flex-grow-1\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (change)=\"updateValue($event)\"\n (keyup)=\"updateValue($event)\"\n *ngIf=\"placeholder\"\n />\n <button type=\"submit\" mat-icon-button class=\"p-2 ml-2\">\n <ft-icon name=\"search\" size=\"2\"></ft-icon>\n </button>\n </div>\n </form>\n ", styles: [":host{z-index:var(--z-index, 980);background-color:var(--background-color, #FFF);display:block;transition:background-color .2s,box-shadow .2s;position:sticky;top:-1px;margin-top:-3.5rem;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}:host.show{opacity:1;visibility:visible}@media (min-width: 576px){:host{margin-top:-4.5rem}}@media (min-width: 768px){:host{top:-2rem;margin-top:-6.5rem}}:host button{min-width:0;line-height:inherit}:host input{border:0;background-color:transparent}:host input:focus{outline:none}\n"] }]
84
+ }], ctorParameters: function () { return []; }, propDecorators: { class: [{
85
+ type: Input
86
+ }], input: [{
87
+ type: ViewChild,
88
+ args: ['input', { static: false }]
89
+ }], inputPlaceholder: [{
90
+ type: ViewChild,
91
+ args: ['inputPlaceholder', { static: false }]
92
+ }], placeholder: [{
93
+ type: Input
94
+ }], execute: [{
95
+ type: Output
96
+ }], showChange: [{
97
+ type: Output
98
+ }], hostClasses: [{
99
+ type: HostBinding,
100
+ args: ['class']
101
+ }], show: [{
102
+ type: Input
103
+ }], value: [{
104
+ type: Input
105
+ }] } });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbmF2aWdhdGlvbi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbmF2aWdhdGlvbi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFjLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWN6RSxNQUFNLE9BQU8sa0JBQWtCO0lBZ0Q3QjtRQWhDQSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVF6QyxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQixjQUFTLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQXFCWixDQUFDO0lBN0JqQixJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDekIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBR0QsSUFDSSxJQUFJLENBQUMsS0FBYztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLEtBQUssRUFBRTtZQUNULFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBQ0QsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsUUFBUTtJQUNSLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELGdCQUFnQjtRQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwRSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDN0IsQ0FBQztJQUNELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFDRCxRQUFRLENBQUMsS0FBa0I7UUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDOzsrR0E5RVUsa0JBQWtCO21HQUFsQixrQkFBa0IsK09BUmxCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7WUFDakQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLGlPQ2JILHFtQ0FpQ0U7MkZEbEJXLGtCQUFrQjtrQkFaOUIsU0FBUzsrQkFDRSxjQUFjLGFBR2I7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBFQU9ELEtBQUs7c0JBREosS0FBSztnQkFHTixLQUFLO3NCQURKLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHckMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU1oRCxXQUFXO3NCQURWLEtBQUs7Z0JBR04sT0FBTztzQkFETixNQUFNO2dCQUdQLFVBQVU7c0JBRFQsTUFBTTtnQkFHSCxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFVaEIsSUFBSTtzQkFEUCxLQUFLO2dCQVVGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBIb3N0QmluZGluZywgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnQtc2VhcmNoYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaGJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGJveC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlYXJjaGJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogQ2xhc2UgbyBjbGFzZXMgYXNpZ25hZGFzIGFsIGNvbXBvbmVudGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNsYXNzITogc3RyaW5nO1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBpbnB1dCE6IEVsZW1lbnRSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRQbGFjZWhvbGRlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBpbnB1dFBsYWNlaG9sZGVyITogRWxlbWVudFJlZjxhbnk+O1xuICBkaXNhYmxlZCE6IGJvb2xlYW47XG4gIHByaXZhdGUgX3ZhbHVlITogc3RyaW5nO1xuICBwcml2YXRlIHNob3duITogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIhOiBzdHJpbmc7XG4gIEBPdXRwdXQoKVxuICBleGVjdXRlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKVxuICBzaG93Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICB0aGlzLnNob3duID8gJ3Nob3cnIDogJydcbiAgICBdLmpvaW4oJyAnKTtcbiAgfVxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcbiAgb25Ub3VjaGVkID0gKF86IGFueSkgPT4geyB9O1xuICBASW5wdXQoKVxuICBzZXQgc2hvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd24gPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldE5hdGl2ZUVsZW1lbnQoKS5mb2N1cygpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIHRoaXMuZ2V0TmF0aXZlRWxlbWVudCgpLnZhbHVlID0gdGhpcy5fdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQodGhpcy5fdmFsdWUpO1xuICB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG4gIGNsb3NlU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuICBnZXROYXRpdmVFbGVtZW50KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5wbGFjZWhvbGRlciA/IHRoaXMuaW5wdXRQbGFjZWhvbGRlciA6IHRoaXMuaW5wdXQ7XG4gICAgcmV0dXJuIGlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG4gIG9uU2VhcmNoKGV2ZW50OiBTdWJtaXRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5nZXROYXRpdmVFbGVtZW50KCkudmFsdWUgPSAnJztcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdCh0aGlzLl92YWx1ZSk7XG4gIH1cbiAgdXBkYXRlVmFsdWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbn1cbiIsIjxmb3JtIChzdWJtaXQpPVwib25TZWFyY2goJGV2ZW50KVwiIGNsYXNzPVwiY29udGFpbmVyIHAtMiBwLXNtLTMgcGItbWQtMyBwdC1tZC01IHB4LW1kLTMgcHgtbGctNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJwLTIgbXItMlwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgpXCI+XG4gICAgICAgIDxmdC1pY29uIG5hbWU9XCJhcnJvdy1sZWZ0XCIgc2l6ZT1cIjJcIj48L2Z0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGNsYXNzPVwiZmxleC1ncm93LTFcIlxuICAgICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNyaXRlcmlhXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgKGtleXVwKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxuICAgICAgICAqbmdJZj1cIiFwbGFjZWhvbGRlclwiXG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFBsYWNlaG9sZGVyXG4gICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgKGtleXVwKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxuICAgICAgICAqbmdJZj1cInBsYWNlaG9sZGVyXCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJwLTIgbWwtMlwiPlxuICAgICAgICA8ZnQtaWNvbiBuYW1lPVwic2VhcmNoXCIgc2l6ZT1cIjJcIj48L2Z0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICAiXX0=
@@ -0,0 +1,51 @@
1
+ import { Component, Input, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../../display/icon/icon.component";
5
+ import * as i3 from "../../display/observe-intersecting.directive";
6
+ import * as i4 from "@angular/material/menu";
7
+ import * as i5 from "@angular/material/button";
8
+ export class ToolbarComponent {
9
+ constructor() {
10
+ this.rootMargin = { rootMargin: '0px 0px 0px 0px' };
11
+ this.class = '';
12
+ const breakpointSm = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--breakpoint-sm'));
13
+ if (window.innerWidth < breakpointSm) {
14
+ this.rootMargin = { rootMargin: '0px 0px 0px 0px' };
15
+ }
16
+ }
17
+ ngOnInit() {
18
+ if (this.titleOptions && !this.currentTitleOption) {
19
+ this.currentTitleOption = this.titleOptions[0];
20
+ }
21
+ }
22
+ get hostClasses() {
23
+ return [
24
+ this.class,
25
+ this.overlapped ? 'overlapped' : ''
26
+ ].join(' ');
27
+ }
28
+ setOverlapped(overlapped) {
29
+ this.overlapped = !overlapped;
30
+ }
31
+ }
32
+ ToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: ToolbarComponent, selector: "ft-toolbar", inputs: { actionOptions: "actionOptions", currentTitleOption: "currentTitleOption", title: "title", titleOptions: "titleOptions", class: "class" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<div (ftObserveIntersecting)=\"setOverlapped($event)\" [ftObserveIntersectingOptions]=\"rootMargin\"></div>\n<div class=\"content\">\n <div class=\"container p-2 p-sm-3 pb-md-3 pt-md-5 px-md-3 px-lg-5\">\n <div class=\"d-flex align-items-center\">\n <h5 class=\"title ml-2 ml-md-0 mb-0 mr-auto\" *ngIf=\"!titleOptions; else titleForm\">{{ title }}</h5>\n <ng-container *ngFor=\"let option of actionOptions\">\n <button type=\"button\" class=\"p-2\" mat-button [ngClass]=\"option.class || ''\" *ngIf=\"!option.children\" (click)=\"option.click ? option.click($event) : null\" title=\"{{ option.label }}\">\n <div class=\"d-flex align-items-center\">\n <ft-icon *ngIf=\"option.iconName\" [name]=\"option.iconName\" size=\"2\"></ft-icon>\n <div *ngIf=\"option.label\" class=\"label d-none d-sm-inline-block ml-1\">{{ option.label }}</div>\n </div>\n </button>\n <ng-container *ngIf=\"option.children\">\n <button type=\"button\" class=\"p-2\" mat-button [matMenuTriggerFor]=\"menu\" [ngClass]=\"option.class || ''\" title=\"{{ option.label }}\">\n <div class=\"d-flex align-items-center\">\n <ft-icon *ngIf=\"option.iconName\" [name]=\"option.iconName\" size=\"2\"></ft-icon>\n <div *ngIf=\"option.label\" class=\"label d-none d-sm-inline-block ml-1\">{{ option.label }}</div>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let childOption of option.children\" (click)=\"childOption.click ? childOption.click($event): null\">{{ childOption.label }}</button>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<ng-template #titleForm>\n <button type=\"button\" class=\"title p-2 pl-3 mr-auto\" mat-button [matMenuTriggerFor]=\"titleMenu\">\n <div class=\"d-flex align-items-center\">\n <div class=\"label mr-1\">{{ currentTitleOption.label }}</div>\n <ft-icon name=\"angle-down\" size=\"1\"></ft-icon>\n </div>\n </button>\n <mat-menu #titleMenu=\"matMenu\">\n <button class=\"mr-4\" mat-menu-item [disabled]=\"option == currentTitleOption\" *ngFor=\"let option of titleOptions\" (click)=\"currentTitleOption = option; option.click ? option.click($event) : null\">\n <div class=\"d-flex align-items-center\">\n <ft-icon [name]=\"option == currentTitleOption? 'check' : ''\" class=\"mr-1\"></ft-icon>\n <div>{{ option.label }}</div>\n </div>\n </button>\n </mat-menu>\n</ng-template>\n", styles: [":host{z-index:var(--z-index, 980);background-color:var(--background-color, #FFF);transition:background-color .2s,box-shadow .2s;display:block;position:sticky;top:-1px}:host.overlapped{box-shadow:0 0 1px #00000024,0 0 6px #0000001f}@media (min-width: 768px){:host{top:-2rem}}.content button{min-width:0}.content button .label{line-height:initial}.content .title{font-size:1.21rem;font-weight:500}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "ft-icon", inputs: ["class", "collection", "mode", "name", "path", "size", "src"] }, { kind: "directive", type: i3.ObserveIntersectingDirective, selector: "[ftObserveIntersecting]", inputs: ["ftObserveIntersectingOptions"], outputs: ["ftObserveIntersecting"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ToolbarComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'ft-toolbar', template: "<div (ftObserveIntersecting)=\"setOverlapped($event)\" [ftObserveIntersectingOptions]=\"rootMargin\"></div>\n<div class=\"content\">\n <div class=\"container p-2 p-sm-3 pb-md-3 pt-md-5 px-md-3 px-lg-5\">\n <div class=\"d-flex align-items-center\">\n <h5 class=\"title ml-2 ml-md-0 mb-0 mr-auto\" *ngIf=\"!titleOptions; else titleForm\">{{ title }}</h5>\n <ng-container *ngFor=\"let option of actionOptions\">\n <button type=\"button\" class=\"p-2\" mat-button [ngClass]=\"option.class || ''\" *ngIf=\"!option.children\" (click)=\"option.click ? option.click($event) : null\" title=\"{{ option.label }}\">\n <div class=\"d-flex align-items-center\">\n <ft-icon *ngIf=\"option.iconName\" [name]=\"option.iconName\" size=\"2\"></ft-icon>\n <div *ngIf=\"option.label\" class=\"label d-none d-sm-inline-block ml-1\">{{ option.label }}</div>\n </div>\n </button>\n <ng-container *ngIf=\"option.children\">\n <button type=\"button\" class=\"p-2\" mat-button [matMenuTriggerFor]=\"menu\" [ngClass]=\"option.class || ''\" title=\"{{ option.label }}\">\n <div class=\"d-flex align-items-center\">\n <ft-icon *ngIf=\"option.iconName\" [name]=\"option.iconName\" size=\"2\"></ft-icon>\n <div *ngIf=\"option.label\" class=\"label d-none d-sm-inline-block ml-1\">{{ option.label }}</div>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let childOption of option.children\" (click)=\"childOption.click ? childOption.click($event): null\">{{ childOption.label }}</button>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<ng-template #titleForm>\n <button type=\"button\" class=\"title p-2 pl-3 mr-auto\" mat-button [matMenuTriggerFor]=\"titleMenu\">\n <div class=\"d-flex align-items-center\">\n <div class=\"label mr-1\">{{ currentTitleOption.label }}</div>\n <ft-icon name=\"angle-down\" size=\"1\"></ft-icon>\n </div>\n </button>\n <mat-menu #titleMenu=\"matMenu\">\n <button class=\"mr-4\" mat-menu-item [disabled]=\"option == currentTitleOption\" *ngFor=\"let option of titleOptions\" (click)=\"currentTitleOption = option; option.click ? option.click($event) : null\">\n <div class=\"d-flex align-items-center\">\n <ft-icon [name]=\"option == currentTitleOption? 'check' : ''\" class=\"mr-1\"></ft-icon>\n <div>{{ option.label }}</div>\n </div>\n </button>\n </mat-menu>\n</ng-template>\n", styles: [":host{z-index:var(--z-index, 980);background-color:var(--background-color, #FFF);transition:background-color .2s,box-shadow .2s;display:block;position:sticky;top:-1px}:host.overlapped{box-shadow:0 0 1px #00000024,0 0 6px #0000001f}@media (min-width: 768px){:host{top:-2rem}}.content button{min-width:0}.content button .label{line-height:initial}.content .title{font-size:1.21rem;font-weight:500}\n"] }]
37
+ }], ctorParameters: function () { return []; }, propDecorators: { actionOptions: [{
38
+ type: Input
39
+ }], currentTitleOption: [{
40
+ type: Input
41
+ }], title: [{
42
+ type: Input
43
+ }], titleOptions: [{
44
+ type: Input
45
+ }], class: [{
46
+ type: Input
47
+ }], hostClasses: [{
48
+ type: HostBinding,
49
+ args: ['class']
50
+ }] } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL25hdmlnYXRpb24vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvbmF2aWdhdGlvbi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBU3RFLE1BQU0sT0FBTyxnQkFBZ0I7SUFRM0I7UUFGQSxlQUFVLEdBQVEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztRQWVwRCxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBWmpCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxZQUFZLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBR0QsSUFDSSxXQUFXO1FBQ2IsT0FBTztZQUNMLElBQUksQ0FBQyxLQUFLO1lBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ3BDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELGFBQWEsQ0FBQyxVQUFtQjtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ2hDLENBQUM7OzZHQS9CVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiw2UENUN0Isc2hGQTJDQTsyRkRsQ2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFlBQVk7MEVBS2IsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBaUJOLEtBQUs7c0JBREosS0FBSztnQkFHRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z0LXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYWN0aW9uT3B0aW9ucyE6IEFjdGlvbltdO1xuICBASW5wdXQoKSBjdXJyZW50VGl0bGVPcHRpb24hOiBBY3Rpb247XG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZU9wdGlvbnMhOiBBY3Rpb25bXTtcbiAgb3ZlcmxhcHBlZCE6IGJvb2xlYW47XG4gIHJvb3RNYXJnaW46IGFueSA9IHsgcm9vdE1hcmdpbjogJzBweCAwcHggMHB4IDBweCcgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBicmVha3BvaW50U20gPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1icmVha3BvaW50LXNtJykpO1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IGJyZWFrcG9pbnRTbSkge1xuICAgICAgdGhpcy5yb290TWFyZ2luID0geyByb290TWFyZ2luOiAnMHB4IDBweCAwcHggMHB4JyB9O1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpdGxlT3B0aW9ucyAmJiAhdGhpcy5jdXJyZW50VGl0bGVPcHRpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFRpdGxlT3B0aW9uID0gdGhpcy50aXRsZU9wdGlvbnNbMF07XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgdGhpcy5vdmVybGFwcGVkID8gJ292ZXJsYXBwZWQnIDogJydcbiAgICBdLmpvaW4oJyAnKTtcbiAgfVxuICBzZXRPdmVybGFwcGVkKG92ZXJsYXBwZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXBwZWQgPSAhb3ZlcmxhcHBlZDtcbiAgfVxuXG59XG4iLCI8ZGl2IChmdE9ic2VydmVJbnRlcnNlY3RpbmcpPVwic2V0T3ZlcmxhcHBlZCgkZXZlbnQpXCIgW2Z0T2JzZXJ2ZUludGVyc2VjdGluZ09wdGlvbnNdPVwicm9vdE1hcmdpblwiPjwvZGl2PlxuPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBwLTIgcC1zbS0zIHBiLW1kLTMgcHQtbWQtNSBweC1tZC0zIHB4LWxnLTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGg1IGNsYXNzPVwidGl0bGUgbWwtMiBtbC1tZC0wIG1iLTAgbXItYXV0b1wiICpuZ0lmPVwiIXRpdGxlT3B0aW9uczsgZWxzZSB0aXRsZUZvcm1cIj57eyB0aXRsZSB9fTwvaDU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYWN0aW9uT3B0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtMlwiIG1hdC1idXR0b24gW25nQ2xhc3NdPVwib3B0aW9uLmNsYXNzIHx8ICcnXCIgKm5nSWY9XCIhb3B0aW9uLmNoaWxkcmVuXCIgKGNsaWNrKT1cIm9wdGlvbi5jbGljayA/IG9wdGlvbi5jbGljaygkZXZlbnQpIDogbnVsbFwiIHRpdGxlPVwie3sgb3B0aW9uLmxhYmVsIH19XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxmdC1pY29uICpuZ0lmPVwib3B0aW9uLmljb25OYW1lXCIgW25hbWVdPVwib3B0aW9uLmljb25OYW1lXCIgc2l6ZT1cIjJcIj48L2Z0LWljb24+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uLmxhYmVsXCIgY2xhc3M9XCJsYWJlbCBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2sgbWwtMVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbi5jaGlsZHJlblwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC0yXCIgbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIFtuZ0NsYXNzXT1cIm9wdGlvbi5jbGFzcyB8fCAnJ1wiIHRpdGxlPVwie3sgb3B0aW9uLmxhYmVsIH19XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZnQtaWNvbiAqbmdJZj1cIm9wdGlvbi5pY29uTmFtZVwiIFtuYW1lXT1cIm9wdGlvbi5pY29uTmFtZVwiIHNpemU9XCIyXCI+PC9mdC1pY29uPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uLmxhYmVsXCIgY2xhc3M9XCJsYWJlbCBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2sgbWwtMVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBjaGlsZE9wdGlvbiBvZiBvcHRpb24uY2hpbGRyZW5cIiAoY2xpY2spPVwiY2hpbGRPcHRpb24uY2xpY2sgPyBjaGlsZE9wdGlvbi5jbGljaygkZXZlbnQpOiBudWxsXCI+e3sgY2hpbGRPcHRpb24ubGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0aXRsZUZvcm0+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGl0bGUgcC0yIHBsLTMgbXItYXV0b1wiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRpdGxlTWVudVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgbXItMVwiPnt7IGN1cnJlbnRUaXRsZU9wdGlvbi5sYWJlbCB9fTwvZGl2PlxuICAgICAgPGZ0LWljb24gbmFtZT1cImFuZ2xlLWRvd25cIiBzaXplPVwiMVwiPjwvZnQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjdGl0bGVNZW51PVwibWF0TWVudVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJtci00XCIgbWF0LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwib3B0aW9uID09IGN1cnJlbnRUaXRsZU9wdGlvblwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdGl0bGVPcHRpb25zXCIgKGNsaWNrKT1cImN1cnJlbnRUaXRsZU9wdGlvbiA9IG9wdGlvbjsgb3B0aW9uLmNsaWNrID8gb3B0aW9uLmNsaWNrKCRldmVudCkgOiBudWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZnQtaWNvbiBbbmFtZV09XCJvcHRpb24gPT0gY3VycmVudFRpdGxlT3B0aW9uPyAnY2hlY2snIDogJydcIiBjbGFzcz1cIm1yLTFcIj48L2Z0LWljb24+XG4gICAgICAgIDxkaXY+e3sgb3B0aW9uLmxhYmVsIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=