@coolon/angular-ui-powerups 11.0.0-alpha.8 → 11.0.1

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 (103) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +214 -27
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  7. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  8. package/esm2015/lib/components/table/default-cell-renderer/default-cell-renderer.component.js +1 -1
  9. package/esm2015/lib/components/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  10. package/esm2015/lib/components/table/default-cell-renderer/default-cell-renderer.component.metadata.json +1 -1
  11. package/esm2015/lib/components/table/table-model.js +9 -0
  12. package/esm2015/lib/components/table/table-model.js.map +1 -1
  13. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  14. package/esm2015/lib/components/track-by.js +5 -1
  15. package/esm2015/lib/components/track-by.js.map +1 -1
  16. package/esm2015/lib/directives/directives.module.js +8 -2
  17. package/esm2015/lib/directives/directives.module.js.map +1 -1
  18. package/esm2015/lib/directives/directives.module.metadata.json +1 -1
  19. package/esm2015/lib/directives/directives.module.ngfactory.js.map +1 -1
  20. package/esm2015/lib/directives/exports.js +2 -0
  21. package/esm2015/lib/directives/exports.js.map +1 -1
  22. package/esm2015/lib/directives/exports.metadata.json +1 -1
  23. package/esm2015/lib/directives/highlight-text-model.directive.js +25 -0
  24. package/esm2015/lib/directives/highlight-text-model.directive.js.map +1 -0
  25. package/esm2015/lib/directives/highlight-text-model.directive.metadata.json +1 -0
  26. package/esm2015/lib/directives/highlight-text-model.directive.ngfactory.js.map +1 -0
  27. package/esm2015/lib/directives/highlight.pipe.js +43 -0
  28. package/esm2015/lib/directives/highlight.pipe.js.map +1 -0
  29. package/esm2015/lib/directives/highlight.pipe.metadata.json +1 -0
  30. package/esm2015/lib/directives/highlight.pipe.ngfactory.js.map +1 -0
  31. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  32. package/esm2015/lib/place/components/abstract-place-navigation.component.js +18 -9
  33. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  34. package/esm2015/lib/place/components/abstract-place-navigation.component.metadata.json +1 -1
  35. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  36. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  37. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  38. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  39. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js.map +1 -1
  40. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  41. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  42. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  43. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  44. package/esm2015/lib/place/place-component.js +1 -3
  45. package/esm2015/lib/place/place-component.js.map +1 -1
  46. package/esm2015/lib/place/place-component.metadata.json +1 -1
  47. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  48. package/esm2015/lib/services/exports.js +5 -0
  49. package/esm2015/lib/services/exports.js.map +1 -0
  50. package/esm2015/lib/services/exports.metadata.json +1 -0
  51. package/esm2015/lib/services/visibility-service.js +74 -0
  52. package/esm2015/lib/services/visibility-service.js.map +1 -0
  53. package/esm2015/lib/services/visibility-service.metadata.json +1 -0
  54. package/esm2015/lib/services/visibility-service.ngfactory.js.map +1 -0
  55. package/esm2015/public-api.js +1 -0
  56. package/esm2015/public-api.js.map +1 -1
  57. package/esm2015/public-api.metadata.json +1 -1
  58. package/fesm2015/coolon-angular-ui-powerups.js +180 -22
  59. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  60. package/lib/components/table/table-model.d.ts +9 -0
  61. package/lib/components/track-by.d.ts +3 -1
  62. package/lib/directives/exports.d.ts +2 -0
  63. package/lib/directives/highlight-text-model.directive.d.ts +7 -0
  64. package/lib/directives/highlight.pipe.d.ts +11 -0
  65. package/lib/place/components/abstract-place-navigation.component.d.ts +9 -2
  66. package/lib/place/place-component.d.ts +1 -1
  67. package/lib/services/exports.d.ts +4 -0
  68. package/lib/services/visibility-service.d.ts +12 -0
  69. package/package.json +1 -1
  70. package/public-api.d.ts +1 -0
  71. package/schematics/aup-i18n/index.js +8 -28
  72. package/schematics/aup-i18n/index.js.map +1 -1
  73. package/schematics/aup-i18n/templates/app/aup.i18n.yml.template +80 -0
  74. package/schematics/bootstrap-app/index.js +5 -4
  75. package/schematics/bootstrap-app/index.js.map +1 -1
  76. package/schematics/bootstrap-app/templates/{i18n/config.json.template → i18n.config.json.template} +2 -0
  77. package/schematics/ng-add/index.js +2 -2
  78. package/schematics/ng-add/index.js.map +1 -1
  79. package/schematics/place-add/index.js +4 -5
  80. package/schematics/place-add/index.js.map +1 -1
  81. package/schematics/place-add/templates/component/__name@dasherize__.component.ts.template +3 -1
  82. package/schematics/place-add/templates/component/__name@dasherize__.i18n.yml.template +5 -0
  83. package/schematics/aup-i18n/templates/i18n/aup/components.yml.template +0 -69
  84. package/schematics/bootstrap-app/templates/i18n/notifications.yml.template +0 -19
  85. package/schematics/place-add/templates/files/i18n/places/__name@dasherize__.yml.template +0 -7
  86. /package/schematics/bootstrap-app/templates/{app → src/app}/app-routing.module.ts.template +0 -0
  87. /package/schematics/bootstrap-app/templates/{app → src/app}/app.component.html.template +0 -0
  88. /package/schematics/bootstrap-app/templates/{app → src/app}/app.component.scss.template +0 -0
  89. /package/schematics/bootstrap-app/templates/{app → src/app}/app.component.ts.template +0 -0
  90. /package/schematics/bootstrap-app/templates/{app → src/app}/app.module.ts.template +0 -0
  91. /package/schematics/bootstrap-app/templates/{app → src/app}/i18n.ts.template +0 -0
  92. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/MaterialIcons-Regular.eot +0 -0
  93. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/MaterialIcons-Regular.ijmap +0 -0
  94. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/MaterialIcons-Regular.svg +0 -0
  95. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/MaterialIcons-Regular.ttf +0 -0
  96. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/MaterialIcons-Regular.woff +0 -0
  97. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/MaterialIcons-Regular.woff2 +0 -0
  98. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/README.md +0 -0
  99. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/codepoints +0 -0
  100. /package/schematics/bootstrap-app/templates/{assets → src/assets}/fonts/material-design-icons/material-icons.css +0 -0
  101. /package/schematics/bootstrap-app/templates/{index.html.template → src/index.html.template} +0 -0
  102. /package/schematics/bootstrap-app/templates/{styles → src/styles}/global-variables.scss.template +0 -0
  103. /package/schematics/bootstrap-app/templates/{styles.scss.template → src/styles.scss.template} +0 -0
@@ -1,14 +1,35 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('lodash'), require('typescript-string-enums'), require('resize-observer-polyfill'), require('@coolon/typescript-utilities'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@typescript-plus/fast-memoize-decorator/dist/src', 'lodash', 'typescript-string-enums', 'resize-observer-polyfill', '@coolon/typescript-utilities', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.src, global._, global.typescriptStringEnums, global.ResizeObserver, global.typescriptUtilities, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations));
5
- }(this, (function (exports, i2, i0, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, progressSpinner, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, src, _, typescriptStringEnums, ResizeObserver, typescriptUtilities, produce, flexLayout, i1, i1$1, overlay, list, fastMemoizeDecorator, reflectMetadata, animations$1) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@angular/platform-browser'), require('lodash'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('typescript-string-enums'), require('resize-observer-polyfill'), require('@coolon/typescript-utilities'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('wake-event')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@angular/platform-browser', 'lodash', '@typescript-plus/fast-memoize-decorator/dist/src', 'typescript-string-enums', 'resize-observer-polyfill', '@coolon/typescript-utilities', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'wake-event'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.ng.platformBrowser, global._, global.src, global.typescriptStringEnums, global.ResizeObserver, global.typescriptUtilities, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations, global.wakeEvent));
5
+ }(this, (function (exports, i2, i0, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, progressSpinner, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, platformBrowser, _, src, typescriptStringEnums, ResizeObserver, typescriptUtilities, produce, flexLayout, i1, i1$1, overlay, list, fastMemoizeDecorator, reflectMetadata, animations$1, wakeEvent) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () {
19
+ return e[k];
20
+ }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n['default'] = e;
26
+ return Object.freeze(n);
27
+ }
28
+
9
29
  var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
10
30
  var ResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(ResizeObserver);
11
31
  var produce__default = /*#__PURE__*/_interopDefaultLegacy(produce);
32
+ var wakeEvent__namespace = /*#__PURE__*/_interopNamespace(wakeEvent);
12
33
 
13
34
  /*! *****************************************************************************
14
35
  Copyright (c) Microsoft Corporation.
@@ -605,6 +626,71 @@
605
626
  onFocusOut: [{ type: i0.HostListener, args: ['focusout',] }]
606
627
  };
607
628
 
629
+ var HighlightTextModelDirective = /** @class */ (function (_super) {
630
+ __extends(HighlightTextModelDirective, _super);
631
+ function HighlightTextModelDirective() {
632
+ return _super.call(this) || this;
633
+ }
634
+ HighlightTextModelDirective.prototype.ngOnDestroy = function () {
635
+ this.dispose();
636
+ };
637
+ return HighlightTextModelDirective;
638
+ }(pectin.GarbageCollector));
639
+ HighlightTextModelDirective.decorators = [
640
+ { type: i0.Directive, args: [{
641
+ selector: '[aupHighlightTextModel]'
642
+ },] }
643
+ ];
644
+ HighlightTextModelDirective.ctorParameters = function () { return []; };
645
+ HighlightTextModelDirective.propDecorators = {
646
+ aupHighlightTextModel: [{ type: i0.Input }]
647
+ };
648
+ __decorate([
649
+ pectin.TrackExternal(),
650
+ __metadata("design:type", pectin.ValueModel)
651
+ ], HighlightTextModelDirective.prototype, "aupHighlightTextModel", void 0);
652
+
653
+ var HighlightPipe = /** @class */ (function (_super) {
654
+ __extends(HighlightPipe, _super);
655
+ function HighlightPipe(sanitizer, highlightContext) {
656
+ var _this = _super.call(this) || this;
657
+ _this.sanitizer = sanitizer;
658
+ _this.highlightContext = highlightContext;
659
+ return _this;
660
+ }
661
+ HighlightPipe.prototype.ngOnDestroy = function () {
662
+ this.dispose();
663
+ };
664
+ HighlightPipe.prototype.transform = function (value, searchModel) {
665
+ var _a;
666
+ var model = searchModel !== null && searchModel !== void 0 ? searchModel : (_a = this.highlightContext) === null || _a === void 0 ? void 0 : _a.aupHighlightTextModel;
667
+ var searchText = model === null || model === void 0 ? void 0 : model.value;
668
+ if (___default['default'].isEmpty(searchText) || !___default['default'].isString(value)) {
669
+ return value;
670
+ }
671
+ // Match in a case insensitive manner
672
+ var re = new RegExp(searchText, 'gi');
673
+ var match = value.match(re);
674
+ // If there's no match, just return the original value.
675
+ if (!match) {
676
+ return value;
677
+ }
678
+ var result = value.replace(re, '<mark>' + match[0] + '</mark>');
679
+ return this.sanitizer.bypassSecurityTrustHtml(result);
680
+ };
681
+ return HighlightPipe;
682
+ }(pectin.GarbageCollector));
683
+ HighlightPipe.decorators = [
684
+ { type: i0.Pipe, args: [{
685
+ name: 'aupHighlight',
686
+ pure: false
687
+ },] }
688
+ ];
689
+ HighlightPipe.ctorParameters = function () { return [
690
+ { type: platformBrowser.DomSanitizer },
691
+ { type: HighlightTextModelDirective, decorators: [{ type: i0.Optional }] }
692
+ ]; };
693
+
608
694
  var DirectivesModule = /** @class */ (function () {
609
695
  function DirectivesModule() {
610
696
  }
@@ -614,7 +700,9 @@
614
700
  { type: i0.NgModule, args: [{
615
701
  declarations: [
616
702
  CommandDirective,
617
- FocusBindingDirective
703
+ FocusBindingDirective,
704
+ HighlightPipe,
705
+ HighlightTextModelDirective
618
706
  ],
619
707
  imports: [
620
708
  i2.CommonModule,
@@ -627,7 +715,9 @@
627
715
  ],
628
716
  exports: [
629
717
  CommandDirective,
630
- FocusBindingDirective
718
+ FocusBindingDirective,
719
+ HighlightPipe,
720
+ HighlightTextModelDirective
631
721
  ]
632
722
  },] }
633
723
  ];
@@ -1207,7 +1297,11 @@
1207
1297
  ], MoreMenuComponent.prototype, "tooltip", void 0);
1208
1298
 
1209
1299
  (function (TrackBy) {
1210
- TrackBy.byIndex = function (data, index) { return index; };
1300
+ TrackBy.byIndex = function (index, item) { return index; };
1301
+ function trackByProperty(property) {
1302
+ return function (index, item) { return item[property]; };
1303
+ }
1304
+ TrackBy.trackByProperty = trackByProperty;
1211
1305
  })(exports.TrackBy || (exports.TrackBy = {}));
1212
1306
 
1213
1307
  exports.CommandContainer = /** @class */ (function (_super) {
@@ -2566,7 +2660,7 @@
2566
2660
  DefaultCellRendererComponent.decorators = [
2567
2661
  { type: i0.Component, args: [{
2568
2662
  selector: 'aup-default-cell-renderer',
2569
- template: "{{value}}\n",
2663
+ template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n",
2570
2664
  styles: [""]
2571
2665
  },] }
2572
2666
  ];
@@ -6003,6 +6097,15 @@
6003
6097
  * table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
6004
6098
  * });
6005
6099
  *
6100
+ * Template columns
6101
+ * @example
6102
+ * const model = TableModel.fromList(heroList, table => {
6103
+ * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model
6104
+ * table.addTemplateColumn("myTemplate");
6105
+ * });
6106
+ *
6107
+ * <div *aupColumnTemplate="let hero; columnId: 'myTemplate'">{{hero.age}}</div>
6108
+ *
6006
6109
  * I18n
6007
6110
  * @example
6008
6111
  * [table.yml]
@@ -6369,6 +6472,7 @@
6369
6472
  _this._active = new pectin.MutableValueModel(false);
6370
6473
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
6371
6474
  when(_this._active).becomesTruthy(function () { return _this.onPlaceReady(); });
6475
+ _this.childPlaces = _this.placeDefinition.children.map(function (d) { return d.component; });
6372
6476
  return _this;
6373
6477
  }
6374
6478
  // @Trace()
@@ -6418,13 +6522,6 @@
6418
6522
  enumerable: false,
6419
6523
  configurable: true
6420
6524
  });
6421
- Object.defineProperty(PlaceComponent.prototype, "childPlaces", {
6422
- get: function () {
6423
- return this.placeDefinition.children.map(function (d) { return d.component; });
6424
- },
6425
- enumerable: false,
6426
- configurable: true
6427
- });
6428
6525
  Object.defineProperty(PlaceComponent.prototype, "active", {
6429
6526
  get: function () {
6430
6527
  return this._active.readonly;
@@ -8397,6 +8494,7 @@
8397
8494
  var _this = _super.call(this) || this;
8398
8495
  _this.placeRouter = placeRouter;
8399
8496
  _this._activePlaceComponent = new pectin.DelegatingValueModel();
8497
+ _this.trackByPlaceDef = function (data) { return data.place; };
8400
8498
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
8401
8499
  _this.placeDefinitions = chain(_this.placesModel)
8402
8500
  .map(function (c) { return exports.PlaceComponent.getDefinition(c); })
@@ -8408,15 +8506,26 @@
8408
8506
  _this.commandFactory = pectin.Command.createFactory(function (placeDefinition) {
8409
8507
  _this.placeOutlet.navigate(new Visit(placeDefinition));
8410
8508
  });
8411
- when(_this.placeOutletModel).changes(function (outlet) {
8412
- // NOTE: this updates during a change cycle and causes our isActiveMethod to return 2 different
8413
- // values in the one change detection cycle. So instead we delay the update to a different
8414
- // tick.
8415
- setTimeout(function () { return _this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null); });
8416
- });
8509
+ when(_this.placeOutletModel).changes(function (outlet) { return _this.handlePlaceOutLetChanged(outlet); }, { initialValue: "triggerChange" });
8417
8510
  _this.activePlaceDefinition = chain(_this._activePlaceComponent).pluck('placeDefinition');
8511
+ _this.menuItems = chain(_this.placeDefinitions).map(function (d) {
8512
+ return {
8513
+ place: d,
8514
+ active: _this.activePlaceDefinition.value === d
8515
+ };
8516
+ }, {
8517
+ dependsOn: _this.activePlaceDefinition
8518
+ });
8418
8519
  return _this;
8520
+ // const txo = new TransactionObserver({ verbose: true }).onEvent(e => console.log(e.name, e.payload));
8521
+ // txo.observe('this.placesModel', this.placesModel);
8522
+ // txo.observe('this.placeDefinitions', this.placeDefinitions);
8523
+ // txo.observe('this.activePlaceDefinition', this.activePlaceDefinition);
8524
+ // txo.observe('this.menuItems', this.menuItems);
8419
8525
  }
8526
+ AbstractPlaceNavigationComponent.prototype.handlePlaceOutLetChanged = function (outlet) {
8527
+ this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null);
8528
+ };
8420
8529
  AbstractPlaceNavigationComponent.prototype.getNavigationFace = function (placeDef) {
8421
8530
  var navItem = placeDef.getPlaceData('nav');
8422
8531
  return {
@@ -8425,9 +8534,6 @@
8425
8534
  icon: function () { return navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null); }
8426
8535
  };
8427
8536
  };
8428
- AbstractPlaceNavigationComponent.prototype.isActive = function (place) {
8429
- return this.activePlaceDefinition.query().equals(place);
8430
- };
8431
8537
  AbstractPlaceNavigationComponent.prototype.ngOnInit = function () {
8432
8538
  };
8433
8539
  return AbstractPlaceNavigationComponent;
@@ -8479,7 +8585,7 @@
8479
8585
  ListPlaceNavComponent.decorators = [
8480
8586
  { type: i0.Component, args: [{
8481
8587
  selector: 'aup-list-place-nav',
8482
- template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(placeDefinition)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
8588
+ template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
8483
8589
  styles: [":host{display:flex;flex-direction:column;--selected-border-color:#838383;--selected-color:inherit;--selected-background:#f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}"]
8484
8590
  },] }
8485
8591
  ];
@@ -8550,7 +8656,7 @@
8550
8656
  SidePlaceNavigationComponent.decorators = [
8551
8657
  { type: i0.Component, args: [{
8552
8658
  selector: 'aup-side-place-navigation',
8553
- template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(placeDefinition).icon()\" [icon]=\"getNavigationFace(placeDefinition).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(placeDefinition).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
8659
+ template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
8554
8660
  styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width:var(--nav-width,56px);--resolved-nav-item-height:var(--nav-item-height,var(--resolved-nav-item-width));--resolved-expanded-width:var(--nav-expanded-width,235px);--resolved-color:var(--nav-color,hsla(0,0%,100%,0.9));--resolved-background-color:var(--nav-background-color,#555);width:var(--resolved-nav-item-width);transition:width 125ms linear;background-color:var(--resolved-background-color);color:var(--resolved-color)}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item aup-icon:not(.collapsed-only){margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--resolved-nav-item-width);height:var(--resolved-nav-item-height);color:inherit}.mat-list-item.active{background-color:#444}.mat-list-item.home{text-align:left}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}"]
8555
8661
  },] }
8556
8662
  ];
@@ -8572,7 +8678,7 @@
8572
8678
  TabbedPlaceNavigationComponent.decorators = [
8573
8679
  { type: i0.Component, args: [{
8574
8680
  selector: 'aup-tabbed-place-navigation',
8575
- template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(placeDefinition)]\"></aup-command-face>\n </a>\n</nav>\n",
8681
+ template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</nav>\n",
8576
8682
  styles: [""]
8577
8683
  },] }
8578
8684
  ];
@@ -9178,6 +9284,84 @@
9178
9284
  };
9179
9285
  }
9180
9286
 
9287
+ /**
9288
+ * @file Automatically generated by barrelsby.
9289
+ */
9290
+
9291
+ // Taken from: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
9292
+ var VisibilityService = /** @class */ (function (_super) {
9293
+ __extends(VisibilityService, _super);
9294
+ // private _wakeEvents = new MutableStream<Instant>();
9295
+ // private _throttledWakeEvents: Stream<Instant>;
9296
+ function VisibilityService(document) {
9297
+ var _this = _super.call(this) || this;
9298
+ _this._visibleModel = new pectin.MutableValueModel();
9299
+ _this.document = document; // see https://stackoverflow.com/a/53715642
9300
+ var chain = pectin.Dsl.disposeWith(_this).chain;
9301
+ // Set the name of the hidden property and the change event for visibility
9302
+ if (typeof _this.document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
9303
+ _this.attributeName = 'hidden';
9304
+ _this.eventName = 'visibilitychange';
9305
+ }
9306
+ else if (typeof _this.document['msHidden'] !== 'undefined') {
9307
+ _this.attributeName = 'msHidden';
9308
+ _this.eventName = 'msvisibilitychange';
9309
+ }
9310
+ else if (typeof _this.document['webkitHidden'] !== 'undefined') {
9311
+ _this.attributeName = 'webkitHidden';
9312
+ _this.eventName = 'webkitvisibilitychange';
9313
+ }
9314
+ // Warn if the browser doesn't support addEventListener or the Page Visibility API
9315
+ if (typeof _this.document.addEventListener === 'undefined' || typeof document[_this.attributeName] === 'undefined') {
9316
+ console.log('This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.');
9317
+ }
9318
+ else {
9319
+ // Handle page visibility change
9320
+ var handler_1 = function () { return _this.updateVisibilityState(); };
9321
+ _this.document.addEventListener(_this.eventName, handler_1, false);
9322
+ _this.onDispose(function () {
9323
+ _this.document.removeEventListener(_this.eventName, handler_1);
9324
+ });
9325
+ }
9326
+ wakeEvent__namespace(function () { return _this.updateVisibilityState(); });
9327
+ _this._visibleModel.value = _this.isVisible();
9328
+ return _this;
9329
+ // give the network a chance to come back or we end up with a bunch of failed requests.
9330
+ // should probably also implement a connection service so that we can go
9331
+ // connectionServer.ensureConnectedThen(fireWakeEvent);
9332
+ // this._throttledWakeEvents = chain(this._wakeEvents).throttle(300);
9333
+ }
9334
+ // get wakeEvents(): Stream<Instant> {
9335
+ // return this._throttledWakeEvents;
9336
+ // }
9337
+ // @trace
9338
+ VisibilityService.prototype.updateVisibilityState = function () {
9339
+ this._visibleModel.value = this.isVisible();
9340
+ // this._wakeEvents.publish(Instant.now());
9341
+ };
9342
+ Object.defineProperty(VisibilityService.prototype, "visibleModel", {
9343
+ get: function () {
9344
+ return this._visibleModel.readonly;
9345
+ },
9346
+ enumerable: false,
9347
+ configurable: true
9348
+ });
9349
+ VisibilityService.prototype.isHidden = function () {
9350
+ return !!this.document[this.attributeName];
9351
+ };
9352
+ VisibilityService.prototype.isVisible = function () {
9353
+ return !this.isHidden();
9354
+ };
9355
+ return VisibilityService;
9356
+ }(pectin.GarbageCollector));
9357
+ VisibilityService.ɵprov = i0.ɵɵdefineInjectable({ factory: function VisibilityService_Factory() { return new VisibilityService(i0.ɵɵinject(i2.DOCUMENT)); }, token: VisibilityService, providedIn: "root" });
9358
+ VisibilityService.decorators = [
9359
+ { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9360
+ ];
9361
+ VisibilityService.ctorParameters = function () { return [
9362
+ { type: undefined, decorators: [{ type: i0.Inject, args: [i2.DOCUMENT,] }] }
9363
+ ]; };
9364
+
9181
9365
  /**
9182
9366
  * @file Automatically generated by barrelsby.
9183
9367
  */
@@ -9251,6 +9435,8 @@
9251
9435
  exports.FocusContainerComponent = FocusContainerComponent;
9252
9436
  exports.FocusableComponent = FocusableComponent;
9253
9437
  exports.HEADER_CELL_RENDERER_PORTAL = HEADER_CELL_RENDERER_PORTAL;
9438
+ exports.HighlightPipe = HighlightPipe;
9439
+ exports.HighlightTextModelDirective = HighlightTextModelDirective;
9254
9440
  exports.InPlaceInteractionContextComponent = InPlaceInteractionContextComponent;
9255
9441
  exports.InteractionContextTriggerFor = InteractionContextTriggerFor;
9256
9442
  exports.InteractionModule = InteractionModule;
@@ -9324,6 +9510,7 @@
9324
9510
  exports.TreeToListModel = TreeToListModel;
9325
9511
  exports.UrlService = UrlService;
9326
9512
  exports.VerticalFocusContainerComponent = VerticalFocusContainerComponent;
9513
+ exports.VisibilityService = VisibilityService;
9327
9514
  exports.Visit = Visit;
9328
9515
  exports.VisitParameter = VisitParameter;
9329
9516
  exports.VisitParameterList = VisitParameterList;