@provoly/dashboard 0.12.9 → 0.13.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 (96) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +3 -1
  2. package/components/sinceDate/sinceDate.pipe.d.ts +1 -1
  3. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +7 -1
  4. package/dataset/i18n/en.translations.d.ts +2 -0
  5. package/dataset/i18n/fr.translations.d.ts +2 -1
  6. package/dataset/style/_o-pry-dataset-detail.scss +13 -11
  7. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +8 -3
  8. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +2 -1
  9. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +7 -9
  10. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +26 -8
  11. package/esm2022/dataset/components/dataset.component.mjs +4 -2
  12. package/esm2022/dataset/i18n/en.translations.mjs +3 -1
  13. package/esm2022/dataset/i18n/fr.translations.mjs +4 -3
  14. package/esm2022/dataset/style/css.component.mjs +2 -2
  15. package/esm2022/filters/date/date-filter.component.mjs +3 -3
  16. package/esm2022/filters/number/number-filter.component.mjs +3 -3
  17. package/esm2022/filters/text/text-filter.component.mjs +3 -3
  18. package/esm2022/import/components/import.component.mjs +5 -16
  19. package/esm2022/import/store/import.actions.mjs +1 -1
  20. package/esm2022/import/store/import.effects.mjs +3 -3
  21. package/esm2022/import/store/import.reducer.mjs +5 -13
  22. package/esm2022/import/store/import.selectors.mjs +5 -7
  23. package/esm2022/import/store/import.service.mjs +1 -1
  24. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +42 -0
  25. package/esm2022/lib/core/components/accordion/accordion.component.mjs +13 -0
  26. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  27. package/esm2022/lib/core/core.module.mjs +26 -8
  28. package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
  29. package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
  30. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -2
  31. package/esm2022/lib/core/public-api.mjs +3 -1
  32. package/esm2022/lib/core/symbol/symbol.service.mjs +53 -15
  33. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +4 -4
  34. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +1 -1
  35. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +3 -2
  36. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +6 -4
  37. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +6 -11
  38. package/esm2022/pipeline/style/css.component.mjs +2 -2
  39. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -7
  40. package/esm2022/restitution/style/css.component.mjs +2 -2
  41. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +53 -194
  42. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +146 -0
  43. package/esm2022/widgets/widget-map/public-api.mjs +3 -1
  44. package/fesm2022/provoly-dashboard-admin.mjs +7 -2
  45. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  46. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +6 -8
  47. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
  48. package/fesm2022/provoly-dashboard-dataset.mjs +35 -12
  49. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  50. package/fesm2022/provoly-dashboard-filters-date.mjs +2 -2
  51. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  52. package/fesm2022/provoly-dashboard-filters-number.mjs +2 -2
  53. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  54. package/fesm2022/provoly-dashboard-filters-text.mjs +2 -2
  55. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  56. package/fesm2022/provoly-dashboard-import.mjs +14 -35
  57. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  58. package/fesm2022/provoly-dashboard-pipeline.mjs +15 -19
  59. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  60. package/fesm2022/provoly-dashboard-restitution.mjs +4 -8
  61. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  62. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +256 -257
  63. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  64. package/fesm2022/provoly-dashboard.mjs +143 -38
  65. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  66. package/import/components/import.component.d.ts +3 -9
  67. package/import/store/import.actions.d.ts +3 -16
  68. package/import/store/import.effects.d.ts +1 -1
  69. package/import/store/import.reducer.d.ts +2 -5
  70. package/import/store/import.selectors.d.ts +2 -7
  71. package/import/store/import.service.d.ts +2 -2
  72. package/lib/core/components/accordion/accordion-item/accordion-item.component.d.ts +17 -0
  73. package/lib/core/components/accordion/accordion.component.d.ts +6 -0
  74. package/lib/core/core.module.d.ts +15 -11
  75. package/lib/core/i18n/en.translations.d.ts +1 -0
  76. package/lib/core/i18n/fr.translations.d.ts +1 -0
  77. package/lib/core/model/widget-map-manifest.interface.d.ts +0 -1
  78. package/lib/core/public-api.d.ts +2 -0
  79. package/lib/core/symbol/symbol.service.d.ts +18 -2
  80. package/lib/dashboard/components/widgets/base-widget.component.d.ts +1 -1
  81. package/package.json +25 -25
  82. package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +1 -3
  83. package/pipeline/style/_o-pipeline.scss +0 -108
  84. package/restitution/components/restitution-list/restitution-list.component.d.ts +0 -2
  85. package/restitution/style/_o-restitution-list.scss +2 -24
  86. package/schematics/ng-add/index.spec.js +9 -0
  87. package/schematics/ng-add/index.spec.js.map +1 -1
  88. package/styles/abstracts/_mixins.scss +14 -0
  89. package/styles/components/_m-filter.scss +0 -1
  90. package/styles/components/_o-accordion.scss +91 -0
  91. package/styles-theme/components-theme/_o-accordion.theme.scss +30 -0
  92. package/styles-theme/components-theme/_o-pipeline.theme.scss +0 -26
  93. package/styles-theme/main-theme.scss +1 -0
  94. package/widgets/widget-map/component/widget-map.component.d.ts +13 -24
  95. package/widgets/widget-map/interaction/interaction-manager.class.d.ts +27 -0
  96. package/widgets/widget-map/public-api.d.ts +2 -0
@@ -10,7 +10,7 @@ import * as i1$2 from '@ngrx/effects';
10
10
  import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
11
11
  import * as i1 from '@ngrx/store';
12
12
  import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
13
- import * as i4 from '@provoly/dashboard';
13
+ import * as i3$2 from '@provoly/dashboard';
14
14
  import { SubscriptionnerDirective, DataSourceActions, ViewMode, ConfigActions, ConfigSelectors, PryCoreModule, PryIconModule, PryI18nModule, PrySortModule, PryToggleModule } from '@provoly/dashboard';
15
15
  import * as i6 from '@provoly/dashboard/components/sinceDate';
16
16
  import { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';
@@ -163,7 +163,7 @@ class PryPipelineDetailsComponent extends SubscriptionnerDirective {
163
163
  };
164
164
  }
165
165
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineDetailsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
166
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineDetailsComponent, selector: "pry-pipeline-details", inputs: { pipeline: "pipeline" }, outputs: { goToList: "goToList", goToConsult: "goToConsult", goToEditor: "goToEditor", executeConfirm: "executeConfirm" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n <div class=\"\" *ngIf=\"isSaved$ | async\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n <label\n for=\"title\"\n *ngIf=\"form.get('title')?.touched && form.get('title')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n <label for=\"title\" *ngIf=\"form.get('title')?.hasError('maxlength')\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n <label\n for=\"description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n <div *ngIf=\"pipeline.lastJobExecution\">\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.PrySinceDatePipe, name: "sinceDate" }] }); }
166
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineDetailsComponent, selector: "pry-pipeline-details", inputs: { pipeline: "pipeline" }, outputs: { goToList: "goToList", goToConsult: "goToConsult", goToEditor: "goToEditor", executeConfirm: "executeConfirm" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n <div class=\"\" *ngIf=\"isSaved$ | async\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n <label\n for=\"title\"\n *ngIf=\"form.get('title')?.touched && form.get('title')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n <label for=\"title\" *ngIf=\"form.get('title')?.hasError('maxlength')\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n <label\n for=\"description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n <div *ngIf=\"pipeline.lastJobExecution\">\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$2.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.PrySinceDatePipe, name: "sinceDate" }] }); }
167
167
  }
168
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineDetailsComponent, decorators: [{
169
169
  type: Component,
@@ -376,11 +376,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
376
376
 
377
377
  class PryPipelineCssComponent {
378
378
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
379
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineCssComponent, selector: "pry-pipeline-css", ngImport: i0, template: '', isInline: true, styles: [".o-pipeline__menu .o-accordion__panel .o-pipeline__components{margin:0;padding:0}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li{list-style:none}.o-pipeline-layout{height:100%}.o-pipeline-layout__toolbox{display:flex;align-items:center;gap:1.25rem;padding:.8125rem 1.25rem;margin-bottom:1.25rem}.o-pipeline-layout__toolbox:first-of-type{padding-top:1.25rem;min-height:4.625rem}.o-pipeline-layout__toolbox .a-label{margin:0}.o-pipeline-layout__details{padding:1.25rem}.o-pipeline-layout__details .row{gap:2.8125rem}.o-pipeline-layout__details :first-child{flex:0 1 50%}.o-pipeline-layout__details .a-form-field{margin-bottom:.9375rem}.o-pipeline-layout__details .property-value{font-weight:400;font-size:1rem}.o-pipeline-layout .a-h1{margin:0 1.25rem}.o-pipeline-layout .a-table{margin-left:20px;width:calc(100% - 40px)}.o-pipeline-layout .a-table,.o-pipeline-layout .a-table td{cursor:default}.o-pipeline-layout .a-table .a-btn--secondary.-size-sm,.o-pipeline-layout .a-table td .a-btn--secondary.-size-sm{font-size:.875rem}.o-pipeline-layout .canvas{flex:1 1 auto}.o-pipeline-layout .litegraph.dialog{display:none}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:before,.o-pipeline__menu .o-accordion__panel__head:before,.o-pipeline__menu .o-accordion__title:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px}.o-pipeline{display:flex;flex-direction:row;height:100%}.o-pipeline__menu{min-width:16.875rem;overflow-y:auto}.o-pipeline__menu .o-accordion{min-width:16.875rem}.o-pipeline__menu .o-accordion__title{position:relative;border-bottom-style:solid;border-bottom-width:.0625rem}.o-pipeline__menu .o-accordion__title:before{background-color:var(--border-color)}.o-pipeline__menu .o-accordion__title__btn{width:100%;height:70%;padding:0;text-transform:uppercase;text-align:left}.o-pipeline__menu .o-accordion__title.is-active{border-bottom:none}.o-pipeline__menu .o-accordion__panel{position:relative}.o-pipeline__menu .o-accordion__panel[aria-hidden=false]{border-bottom-style:solid;border-bottom-width:.0625rem}.o-pipeline__menu .o-accordion__panel__head{position:relative;padding:.125rem .625rem 1.25rem}.o-pipeline__menu .o-accordion__panel__head:before{background-color:var(--border-color)}.o-pipeline__menu .o-accordion__panel__head pry-icon{position:absolute;top:.75rem;left:1.4375rem}.o-pipeline__menu .o-accordion__panel__head .a-form-field{padding-left:2.5rem}.o-pipeline__menu .o-accordion__panel .o-pipeline__components{position:relative;z-index:1}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li{position:relative;display:flex;align-items:center;justify-content:space-between;min-height:40px;padding:0 .9375rem;border-top-width:1px;border-top-style:solid;cursor:grab}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:before{background-color:var(--border-color)}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:hover{background-color:#fff}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:active{cursor:grabbing}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li .a-p{margin-bottom:0}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li .a-icon{transform:scale(2.2)}.o-pipeline__workspace{flex:1;display:flex;flex-direction:column;overflow:auto}.o-pipeline .o-pipeline-editor{flex:1;display:flex;flex-direction:row;margin:0 1.25rem;background-color:#fff}.o-pipeline .o-pipeline-editor__grid{flex:1}.o-pipeline .o-pipeline-editor__properties{display:flex;flex-direction:column;width:16.875rem;padding:1.5625rem 1.25rem}.o-pipeline .o-pipeline-editor__properties__node .a-h3{margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__node .a-h4{margin-bottom:0;padding-bottom:.3125rem;text-transform:uppercase;font-size:.875rem;line-height:1.125rem}.o-pipeline .o-pipeline-editor__properties__node .a-p--type{padding-bottom:.625rem;font-size:.875rem;line-height:1.125rem;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties .a-label{font-weight:700;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties__detail{display:flex;flex-direction:column}.o-pipeline .o-pipeline-editor__properties__errors__title{display:flex;align-items:flex-end;gap:.625rem;margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__errors__title .a-p{margin-bottom:0;font-weight:700;text-transform:uppercase}.o-pipeline .o-pipeline-editor__properties__errors ul li .type{display:inline-block;padding:.0625rem .3125rem;border-radius:.3125rem}\n"], encapsulation: i0.ViewEncapsulation.None }); }
379
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineCssComponent, selector: "pry-pipeline-css", ngImport: i0, template: '', isInline: true, styles: [".o-pipeline-layout{height:100%}.o-pipeline-layout__toolbox{display:flex;align-items:center;gap:1.25rem;padding:.8125rem 1.25rem;margin-bottom:1.25rem}.o-pipeline-layout__toolbox:first-of-type{padding-top:1.25rem;min-height:4.625rem}.o-pipeline-layout__toolbox .a-label{margin:0}.o-pipeline-layout__details{padding:1.25rem}.o-pipeline-layout__details .row{gap:2.8125rem}.o-pipeline-layout__details :first-child{flex:0 1 50%}.o-pipeline-layout__details .a-form-field{margin-bottom:.9375rem}.o-pipeline-layout__details .property-value{font-weight:400;font-size:1rem}.o-pipeline-layout .a-h1{margin:0 1.25rem}.o-pipeline-layout .a-table{margin-left:20px;width:calc(100% - 40px)}.o-pipeline-layout .a-table,.o-pipeline-layout .a-table td{cursor:default}.o-pipeline-layout .a-table .a-btn--secondary.-size-sm,.o-pipeline-layout .a-table td .a-btn--secondary.-size-sm{font-size:.875rem}.o-pipeline-layout .canvas{flex:1 1 auto}.o-pipeline-layout .litegraph.dialog{display:none}.o-pipeline{display:flex;flex-direction:row;height:100%}.o-pipeline__menu{min-width:16.875rem;overflow-y:auto}.o-pipeline__menu .o-accordion{min-width:16.875rem}.o-pipeline__workspace{flex:1;display:flex;flex-direction:column;overflow:auto}.o-pipeline .o-pipeline-editor{flex:1;display:flex;flex-direction:row;margin:0 1.25rem;background-color:#fff}.o-pipeline .o-pipeline-editor__grid{flex:1}.o-pipeline .o-pipeline-editor__properties{display:flex;flex-direction:column;width:16.875rem;padding:1.5625rem 1.25rem}.o-pipeline .o-pipeline-editor__properties__node .a-h3{margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__node .a-h4{margin-bottom:0;padding-bottom:.3125rem;text-transform:uppercase;font-size:.875rem;line-height:1.125rem}.o-pipeline .o-pipeline-editor__properties__node .a-p--type{padding-bottom:.625rem;font-size:.875rem;line-height:1.125rem;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties .a-label{font-weight:700;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties__detail{display:flex;flex-direction:column}.o-pipeline .o-pipeline-editor__properties__errors__title{display:flex;align-items:flex-end;gap:.625rem;margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__errors__title .a-p{margin-bottom:0;font-weight:700;text-transform:uppercase}.o-pipeline .o-pipeline-editor__properties__errors ul li .type{display:inline-block;padding:.0625rem .3125rem;border-radius:.3125rem}\n"], encapsulation: i0.ViewEncapsulation.None }); }
380
380
  }
381
381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineCssComponent, decorators: [{
382
382
  type: Component,
383
- args: [{ selector: 'pry-pipeline-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-pipeline__menu .o-accordion__panel .o-pipeline__components{margin:0;padding:0}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li{list-style:none}.o-pipeline-layout{height:100%}.o-pipeline-layout__toolbox{display:flex;align-items:center;gap:1.25rem;padding:.8125rem 1.25rem;margin-bottom:1.25rem}.o-pipeline-layout__toolbox:first-of-type{padding-top:1.25rem;min-height:4.625rem}.o-pipeline-layout__toolbox .a-label{margin:0}.o-pipeline-layout__details{padding:1.25rem}.o-pipeline-layout__details .row{gap:2.8125rem}.o-pipeline-layout__details :first-child{flex:0 1 50%}.o-pipeline-layout__details .a-form-field{margin-bottom:.9375rem}.o-pipeline-layout__details .property-value{font-weight:400;font-size:1rem}.o-pipeline-layout .a-h1{margin:0 1.25rem}.o-pipeline-layout .a-table{margin-left:20px;width:calc(100% - 40px)}.o-pipeline-layout .a-table,.o-pipeline-layout .a-table td{cursor:default}.o-pipeline-layout .a-table .a-btn--secondary.-size-sm,.o-pipeline-layout .a-table td .a-btn--secondary.-size-sm{font-size:.875rem}.o-pipeline-layout .canvas{flex:1 1 auto}.o-pipeline-layout .litegraph.dialog{display:none}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:before,.o-pipeline__menu .o-accordion__panel__head:before,.o-pipeline__menu .o-accordion__title:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px}.o-pipeline{display:flex;flex-direction:row;height:100%}.o-pipeline__menu{min-width:16.875rem;overflow-y:auto}.o-pipeline__menu .o-accordion{min-width:16.875rem}.o-pipeline__menu .o-accordion__title{position:relative;border-bottom-style:solid;border-bottom-width:.0625rem}.o-pipeline__menu .o-accordion__title:before{background-color:var(--border-color)}.o-pipeline__menu .o-accordion__title__btn{width:100%;height:70%;padding:0;text-transform:uppercase;text-align:left}.o-pipeline__menu .o-accordion__title.is-active{border-bottom:none}.o-pipeline__menu .o-accordion__panel{position:relative}.o-pipeline__menu .o-accordion__panel[aria-hidden=false]{border-bottom-style:solid;border-bottom-width:.0625rem}.o-pipeline__menu .o-accordion__panel__head{position:relative;padding:.125rem .625rem 1.25rem}.o-pipeline__menu .o-accordion__panel__head:before{background-color:var(--border-color)}.o-pipeline__menu .o-accordion__panel__head pry-icon{position:absolute;top:.75rem;left:1.4375rem}.o-pipeline__menu .o-accordion__panel__head .a-form-field{padding-left:2.5rem}.o-pipeline__menu .o-accordion__panel .o-pipeline__components{position:relative;z-index:1}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li{position:relative;display:flex;align-items:center;justify-content:space-between;min-height:40px;padding:0 .9375rem;border-top-width:1px;border-top-style:solid;cursor:grab}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:before{background-color:var(--border-color)}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:hover{background-color:#fff}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li:active{cursor:grabbing}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li .a-p{margin-bottom:0}.o-pipeline__menu .o-accordion__panel .o-pipeline__components li .a-icon{transform:scale(2.2)}.o-pipeline__workspace{flex:1;display:flex;flex-direction:column;overflow:auto}.o-pipeline .o-pipeline-editor{flex:1;display:flex;flex-direction:row;margin:0 1.25rem;background-color:#fff}.o-pipeline .o-pipeline-editor__grid{flex:1}.o-pipeline .o-pipeline-editor__properties{display:flex;flex-direction:column;width:16.875rem;padding:1.5625rem 1.25rem}.o-pipeline .o-pipeline-editor__properties__node .a-h3{margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__node .a-h4{margin-bottom:0;padding-bottom:.3125rem;text-transform:uppercase;font-size:.875rem;line-height:1.125rem}.o-pipeline .o-pipeline-editor__properties__node .a-p--type{padding-bottom:.625rem;font-size:.875rem;line-height:1.125rem;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties .a-label{font-weight:700;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties__detail{display:flex;flex-direction:column}.o-pipeline .o-pipeline-editor__properties__errors__title{display:flex;align-items:flex-end;gap:.625rem;margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__errors__title .a-p{margin-bottom:0;font-weight:700;text-transform:uppercase}.o-pipeline .o-pipeline-editor__properties__errors ul li .type{display:inline-block;padding:.0625rem .3125rem;border-radius:.3125rem}\n"] }]
383
+ args: [{ selector: 'pry-pipeline-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-pipeline-layout{height:100%}.o-pipeline-layout__toolbox{display:flex;align-items:center;gap:1.25rem;padding:.8125rem 1.25rem;margin-bottom:1.25rem}.o-pipeline-layout__toolbox:first-of-type{padding-top:1.25rem;min-height:4.625rem}.o-pipeline-layout__toolbox .a-label{margin:0}.o-pipeline-layout__details{padding:1.25rem}.o-pipeline-layout__details .row{gap:2.8125rem}.o-pipeline-layout__details :first-child{flex:0 1 50%}.o-pipeline-layout__details .a-form-field{margin-bottom:.9375rem}.o-pipeline-layout__details .property-value{font-weight:400;font-size:1rem}.o-pipeline-layout .a-h1{margin:0 1.25rem}.o-pipeline-layout .a-table{margin-left:20px;width:calc(100% - 40px)}.o-pipeline-layout .a-table,.o-pipeline-layout .a-table td{cursor:default}.o-pipeline-layout .a-table .a-btn--secondary.-size-sm,.o-pipeline-layout .a-table td .a-btn--secondary.-size-sm{font-size:.875rem}.o-pipeline-layout .canvas{flex:1 1 auto}.o-pipeline-layout .litegraph.dialog{display:none}.o-pipeline{display:flex;flex-direction:row;height:100%}.o-pipeline__menu{min-width:16.875rem;overflow-y:auto}.o-pipeline__menu .o-accordion{min-width:16.875rem}.o-pipeline__workspace{flex:1;display:flex;flex-direction:column;overflow:auto}.o-pipeline .o-pipeline-editor{flex:1;display:flex;flex-direction:row;margin:0 1.25rem;background-color:#fff}.o-pipeline .o-pipeline-editor__grid{flex:1}.o-pipeline .o-pipeline-editor__properties{display:flex;flex-direction:column;width:16.875rem;padding:1.5625rem 1.25rem}.o-pipeline .o-pipeline-editor__properties__node .a-h3{margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__node .a-h4{margin-bottom:0;padding-bottom:.3125rem;text-transform:uppercase;font-size:.875rem;line-height:1.125rem}.o-pipeline .o-pipeline-editor__properties__node .a-p--type{padding-bottom:.625rem;font-size:.875rem;line-height:1.125rem;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties .a-label{font-weight:700;overflow-wrap:break-word}.o-pipeline .o-pipeline-editor__properties__detail{display:flex;flex-direction:column}.o-pipeline .o-pipeline-editor__properties__errors__title{display:flex;align-items:flex-end;gap:.625rem;margin-bottom:.9375rem}.o-pipeline .o-pipeline-editor__properties__errors__title .a-p{margin-bottom:0;font-weight:700;text-transform:uppercase}.o-pipeline .o-pipeline-editor__properties__errors ul li .type{display:inline-block;padding:.0625rem .3125rem;border-radius:.3125rem}\n"] }]
384
384
  }] });
385
385
 
386
386
  const MIME_TYPE_PIPELINE_COMPONENT = 'pipeline/component';
@@ -395,7 +395,6 @@ class PryPipelineEditorComponent extends SubscriptionnerDirective {
395
395
  this.lGraphs = [];
396
396
  this.actions = [];
397
397
  this.disableEditing = false;
398
- this.categoryOpened = '';
399
398
  this.search$ = new BehaviorSubject({});
400
399
  BaseNode.store = store;
401
400
  BaseNode.check = () => this.check();
@@ -645,19 +644,16 @@ class PryPipelineEditorComponent extends SubscriptionnerDirective {
645
644
  goBack() {
646
645
  this.goToConsult.emit(this.pipeline);
647
646
  }
648
- toggle(category) {
649
- this.categoryOpened = this.categoryOpened === category ? '' : category;
647
+ search($event) {
648
+ this.search$.next({ ...$event });
650
649
  }
651
- search(category, $event) {
652
- this.search$.next({ ...this.search$.getValue(), [category]: $event });
653
- }
654
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineEditorComponent, deps: [{ token: i1.Store }, { token: PipelineComponentFactoryService }, { token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
655
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineEditorComponent, selector: "pry-pipeline-editor", inputs: { pipeline: "pipeline" }, outputs: { goToConsult: "goToConsult" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "canvasParent", first: true, predicate: ["canvasParent"], descendants: true }, { propertyName: "componentRef", first: true, predicate: ["specific"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <div class=\"o-accordion\" role=\"tablist\" aria-multiselectable=\"false\">\n <ng-container *ngFor=\"let category of categories$ | async\">\n <h2\n class=\"o-accordion__title\"\n [class.is-active]=\"categoryOpened === category\"\n [style.--border-color]=\"(types$ | async)![category][0].color\"\n >\n <button\n type=\"button\"\n class=\"o-accordion__title__btn\"\n [id]=\"'button_' + category\"\n role=\"tab\"\n [attr.aria-controls]=\"'panel_' + category\"\n [attr.aria-selected]=\"categoryOpened === category\"\n [attr.aria-expanded]=\"categoryOpened === category\"\n (click)=\"toggle(category)\"\n >\n <span>{{ '@pry.pipeline.' + category | i18n }}</span>\n <pry-icon\n [width]=\"15\"\n [height]=\"15\"\n [iconSvg]=\"categoryOpened === category ? 'chevron_top_rounded' : 'chevron_bottom_rounded'\"\n ></pry-icon>\n </button>\n </h2>\n <div\n class=\"o-accordion__panel\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'button_' + category\"\n [id]=\"'panel_' + category\"\n [attr.aria-hidden]=\"categoryOpened !== category\"\n [style.--border-color]=\"(types$ | async)![category][0].color\"\n >\n <ng-container *ngIf=\"categoryOpened === category\">\n <div class=\"o-accordion__panel__head\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.toolbox.catalog.filter.name' | i18n\"\n [ngModel]=\"(search$ | async)[category]\"\n (ngModelChange)=\"search(category, $event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </ng-container>\n <ng-container *ngIf=\"categoryOpened === category\">\n <ul class=\"o-pipeline__components\">\n <ng-container *ngFor=\"let type of (types$ | async)![category]\">\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary --size-md\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n <ng-container *ngFor=\"let action of actions\">\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary --size-md\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n </ng-container>\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n <div\n class=\"o-pipeline-editor__properties__node\"\n *ngIf=\"selectedNode$ | async as node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n <div *ngIf=\"((errors$ | async)?.length ?? 0) > 0\" class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n <li *ngFor=\"let error of errors$ | async\">\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryPipelineCssComponent, selector: "pry-pipeline-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
650
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineEditorComponent, deps: [{ token: i1.Store }, { token: PipelineComponentFactoryService }, { token: i3$2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
651
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineEditorComponent, selector: "pry-pipeline-editor", inputs: { pipeline: "pipeline" }, outputs: { goToConsult: "goToConsult" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "canvasParent", first: true, predicate: ["canvasParent"], descendants: true }, { propertyName: "componentRef", first: true, predicate: ["specific"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n <pry-accordion-item\n *ngFor=\"let category of categories$ | async; let index = index\"\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n <ng-container *ngFor=\"let type of (types$ | async)![category]\">\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n </ng-container>\n </ul>\n </pry-accordion-item>\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary --size-md\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n <ng-container *ngFor=\"let action of actions\">\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary --size-md\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n </ng-container>\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n <div\n class=\"o-pipeline-editor__properties__node\"\n *ngIf=\"selectedNode$ | async as node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n <div *ngIf=\"((errors$ | async)?.length ?? 0) > 0\" class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n <li *ngFor=\"let error of errors$ | async\">\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.AccordionComponent, selector: "pry-accordion" }, { kind: "component", type: i3$2.AccordionItemComponent, selector: "pry-accordion-item", inputs: ["item", "borderColor", "index", "translationStringBase", "length", "showSearchBar", "search$"], outputs: ["search"] }, { kind: "component", type: i3$2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PryPipelineCssComponent, selector: "pry-pipeline-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$2.I18nPipe, name: "i18n" }] }); }
656
652
  }
657
653
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineEditorComponent, decorators: [{
658
654
  type: Component,
659
- args: [{ selector: 'pry-pipeline-editor', template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <div class=\"o-accordion\" role=\"tablist\" aria-multiselectable=\"false\">\n <ng-container *ngFor=\"let category of categories$ | async\">\n <h2\n class=\"o-accordion__title\"\n [class.is-active]=\"categoryOpened === category\"\n [style.--border-color]=\"(types$ | async)![category][0].color\"\n >\n <button\n type=\"button\"\n class=\"o-accordion__title__btn\"\n [id]=\"'button_' + category\"\n role=\"tab\"\n [attr.aria-controls]=\"'panel_' + category\"\n [attr.aria-selected]=\"categoryOpened === category\"\n [attr.aria-expanded]=\"categoryOpened === category\"\n (click)=\"toggle(category)\"\n >\n <span>{{ '@pry.pipeline.' + category | i18n }}</span>\n <pry-icon\n [width]=\"15\"\n [height]=\"15\"\n [iconSvg]=\"categoryOpened === category ? 'chevron_top_rounded' : 'chevron_bottom_rounded'\"\n ></pry-icon>\n </button>\n </h2>\n <div\n class=\"o-accordion__panel\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'button_' + category\"\n [id]=\"'panel_' + category\"\n [attr.aria-hidden]=\"categoryOpened !== category\"\n [style.--border-color]=\"(types$ | async)![category][0].color\"\n >\n <ng-container *ngIf=\"categoryOpened === category\">\n <div class=\"o-accordion__panel__head\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.toolbox.catalog.filter.name' | i18n\"\n [ngModel]=\"(search$ | async)[category]\"\n (ngModelChange)=\"search(category, $event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </ng-container>\n <ng-container *ngIf=\"categoryOpened === category\">\n <ul class=\"o-pipeline__components\">\n <ng-container *ngFor=\"let type of (types$ | async)![category]\">\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary --size-md\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n <ng-container *ngFor=\"let action of actions\">\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary --size-md\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n </ng-container>\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n <div\n class=\"o-pipeline-editor__properties__node\"\n *ngIf=\"selectedNode$ | async as node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n <div *ngIf=\"((errors$ | async)?.length ?? 0) > 0\" class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n <li *ngFor=\"let error of errors$ | async\">\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
660
- }], ctorParameters: function () { return [{ type: i1.Store }, { type: PipelineComponentFactoryService }, { type: i4.PryI18nService }]; }, propDecorators: { pipeline: [{
655
+ args: [{ selector: 'pry-pipeline-editor', template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n <pry-accordion-item\n *ngFor=\"let category of categories$ | async; let index = index\"\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n <ng-container *ngFor=\"let type of (types$ | async)![category]\">\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n </ng-container>\n </ul>\n </pry-accordion-item>\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary --size-md\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n <ng-container *ngFor=\"let action of actions\">\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary --size-md\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n </ng-container>\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n <div\n class=\"o-pipeline-editor__properties__node\"\n *ngIf=\"selectedNode$ | async as node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n <div *ngIf=\"((errors$ | async)?.length ?? 0) > 0\" class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n <li *ngFor=\"let error of errors$ | async\">\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
656
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: PipelineComponentFactoryService }, { type: i3$2.PryI18nService }]; }, propDecorators: { pipeline: [{
661
657
  type: Input
662
658
  }], goToConsult: [{
663
659
  type: Output
@@ -803,7 +799,7 @@ class PryPipelineListComponent {
803
799
  this.confirm.nativeElement.focus();
804
800
  }
805
801
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineListComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
806
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineListComponent, selector: "pry-pipeline-list", viewQueries: [{ propertyName: "templateDropdown", first: true, predicate: ["dropdown"], descendants: true, read: TemplateRef }, { propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "actions", first: true, predicate: ["actions"], descendants: true }, { propertyName: "toggleActions", first: true, predicate: ["toggleActions"], descendants: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }], ngImport: i0, template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--primary a-btn--icon-text\" type=\"button\" (click)=\"create()\">\n {{ '@pry.pipeline.create' | i18n }}\n </button>\n </div>\n <h1 class=\"a-h1\">{{ '@pry.pipeline.transformation_catalog' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"date\"\n prySortDirection=\"desc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.pipeline.transformation_catalog' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th prySortHeader=\"state\">{{ '@pry.pipeline.details.state' | i18n }}</th>\n <th prySortHeader=\"title\">{{ '@pry.pipeline.details.title' | i18n }}</th>\n <th prySortHeader=\"date\">{{ '@pry.pipeline.details.last_execution_date' | i18n }}</th>\n <th>\n <div class=\"u-display-flex -align-center -column\">\n {{ '@pry.pipeline.details.execution_status' | i18n }}\n </div>\n </th>\n <th>{{ '@pry.pipeline.action' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let transfo of transformation$ | async | prySortData: sortActive : sortDirection; let index = index\"\n >\n <td>\n <div *ngIf=\"transfo.active; else deactivated\" class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"check\" class=\"check\"></pry-icon>\n <span> {{ '@pry.pipeline.activated' | i18n }}</span>\n </div>\n <ng-template #deactivated>\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"stop\" class=\"stop\"></pry-icon>\n <span>{{ '@pry.pipeline.deactivated' | i18n }}</span>\n </div>\n </ng-template>\n </td>\n <td>{{ transfo.title }}</td>\n <td>{{ transfo?.lastJobExecution?.executionDate | sinceDate }}</td>\n <td *ngIf=\"transfo.lastJobExecution\" class=\"u-display-flex -align-center -column\">\n <div [ngSwitch]=\"transfo.lastJobExecution.status\">\n <ng-container *ngSwitchCase=\"ExecutionState.TERMINATED\">\n <pry-icon iconSvg=\"check\" [height]=\"25\" [width]=\"25\" class=\"check\"></pry-icon>\n </ng-container>\n <ng-container *ngSwitchCase=\"ExecutionState.STARTED\">\n <pry-icon iconSvg=\"synchro\" [height]=\"25\" [width]=\"25\" class=\"warning\"></pry-icon>\n </ng-container>\n <ng-container *ngSwitchCase=\"ExecutionState.ERROR\">\n <pry-icon iconSvg=\"close\" [height]=\"25\" [width]=\"25\" class=\"danger\"></pry-icon>\n </ng-container>\n </div>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"consult(transfo)\">\n {{ '@pry.pipeline.consult' | i18n }}\n <span class=\"u-visually-hidden\"> {{ transfo.title }} </span>\n </button>\n </td>\n <td>\n <button\n class=\"a-btn a-btn--more\"\n type=\"button\"\n id=\"actions\"\n #actions\n aria-controls=\"panelActions\"\n [attr.aria-expanded]=\"!!this.overlayRef\"\n (click)=\"toggleMoreDropdown($event, index, transfo)\"\n >\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CONSULT\">\n <ng-container *ngIf=\"selectedTransfo\">\n <pry-pipeline-details\n [pipeline]=\"selectedTransfo\"\n (goToList)=\"list()\"\n (goToEditor)=\"savePipeline($event)\"\n (executeConfirm)=\"toggleExecuteConfirm()\"\n ></pry-pipeline-details>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-pipeline-details (goToList)=\"list()\" (goToEditor)=\"savePipeline($event)\"></pry-pipeline-details>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITOR\">\n <pry-pipeline-editor [pipeline]=\"selectedTransfo\" (goToConsult)=\"consult($event)\"></pry-pipeline-editor>\n </ng-container>\n</div>\n<ng-template #noExecution>\n <div class=\"container-state\">\n <span>{{ '@pry.pipeline.ko' | i18n }}</span>\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"danger\" class=\"danger\"></pry-icon>\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n <div\n class=\"m-context-menu\"\n id=\"panelActions\"\n *ngIf=\"selectedTransfo\"\n (click)=\"$event.stopPropagation()\"\n (keydown.escape)=\"closeDropdown()\"\n >\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog panelActions\">\n <li class=\"m-context-menu__list__item\" role=\"none\" tabindex=\"-1\">\n <button\n type=\"button\"\n #toggleActions\n class=\"a-btn\"\n role=\"menuitem\"\n (click)=\"toggleState(selectedTransfo)\"\n (keydown.tab)=\"disableSelectedTranso()\"\n >\n <span>{{ (selectedTransfo.active ? '@pry.pipeline.deactivate' : '@pry.pipeline.activate') | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" tabindex=\"-1\">\n <button\n type=\"button\"\n role=\"menuitem\"\n id=\"execute\"\n class=\"a-btn\"\n (keydown.tab)=\"closeDropdown()\"\n [disabled]=\"selectedTransfo.active === false\"\n (click)=\"toggleExecuteConfirm()\"\n >\n <span>{{ '@pry.pipeline.execute' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n *ngIf=\"selectedTransfo\"\n (keydown.escape)=\"toggleExecuteConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"cancelRemoveConfirm()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" #cancel (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #confirm\n id=\"confirm\"\n class=\"a-btn a-btn--primary\"\n (click)=\"confirmExecution(selectedTransfo)\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PrySortHeaderComponent, selector: "th[prySortHeader]", inputs: ["prySortHeader"], outputs: ["sortChange"] }, { kind: "directive", type: i4.PrySortHeaderDirective, selector: "[prySortHeader]" }, { kind: "directive", type: i4.PrySortTableDirective, selector: "[prySortTable]", inputs: ["prySortActive", "prySortDirection"], outputs: ["prySortChange"] }, { kind: "component", type: PryPipelineEditorComponent, selector: "pry-pipeline-editor", inputs: ["pipeline"], outputs: ["goToConsult"] }, { kind: "component", type: PryPipelineCssComponent, selector: "pry-pipeline-css" }, { kind: "component", type: PryPipelineDetailsComponent, selector: "pry-pipeline-details", inputs: ["pipeline"], outputs: ["goToList", "goToConsult", "goToEditor", "executeConfirm"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i4.PrySortDataPipe, name: "prySortData" }, { kind: "pipe", type: i6.PrySinceDatePipe, name: "sinceDate" }] }); }
802
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPipelineListComponent, selector: "pry-pipeline-list", viewQueries: [{ propertyName: "templateDropdown", first: true, predicate: ["dropdown"], descendants: true, read: TemplateRef }, { propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "actions", first: true, predicate: ["actions"], descendants: true }, { propertyName: "toggleActions", first: true, predicate: ["toggleActions"], descendants: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }], ngImport: i0, template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--primary a-btn--icon-text\" type=\"button\" (click)=\"create()\">\n {{ '@pry.pipeline.create' | i18n }}\n </button>\n </div>\n <h1 class=\"a-h1\">{{ '@pry.pipeline.transformation_catalog' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"date\"\n prySortDirection=\"desc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.pipeline.transformation_catalog' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th prySortHeader=\"state\">{{ '@pry.pipeline.details.state' | i18n }}</th>\n <th prySortHeader=\"title\">{{ '@pry.pipeline.details.title' | i18n }}</th>\n <th prySortHeader=\"date\">{{ '@pry.pipeline.details.last_execution_date' | i18n }}</th>\n <th>\n <div class=\"u-display-flex -align-center -column\">\n {{ '@pry.pipeline.details.execution_status' | i18n }}\n </div>\n </th>\n <th>{{ '@pry.pipeline.action' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let transfo of transformation$ | async | prySortData: sortActive : sortDirection; let index = index\"\n >\n <td>\n <div *ngIf=\"transfo.active; else deactivated\" class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"check\" class=\"check\"></pry-icon>\n <span> {{ '@pry.pipeline.activated' | i18n }}</span>\n </div>\n <ng-template #deactivated>\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"stop\" class=\"stop\"></pry-icon>\n <span>{{ '@pry.pipeline.deactivated' | i18n }}</span>\n </div>\n </ng-template>\n </td>\n <td>{{ transfo.title }}</td>\n <td>{{ transfo?.lastJobExecution?.executionDate | sinceDate }}</td>\n <td *ngIf=\"transfo.lastJobExecution\" class=\"u-display-flex -align-center -column\">\n <div [ngSwitch]=\"transfo.lastJobExecution.status\">\n <ng-container *ngSwitchCase=\"ExecutionState.TERMINATED\">\n <pry-icon iconSvg=\"check\" [height]=\"25\" [width]=\"25\" class=\"check\"></pry-icon>\n </ng-container>\n <ng-container *ngSwitchCase=\"ExecutionState.STARTED\">\n <pry-icon iconSvg=\"synchro\" [height]=\"25\" [width]=\"25\" class=\"warning\"></pry-icon>\n </ng-container>\n <ng-container *ngSwitchCase=\"ExecutionState.ERROR\">\n <pry-icon iconSvg=\"close\" [height]=\"25\" [width]=\"25\" class=\"danger\"></pry-icon>\n </ng-container>\n </div>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"consult(transfo)\">\n {{ '@pry.pipeline.consult' | i18n }}\n <span class=\"u-visually-hidden\"> {{ transfo.title }} </span>\n </button>\n </td>\n <td>\n <button\n class=\"a-btn a-btn--more\"\n type=\"button\"\n id=\"actions\"\n #actions\n aria-controls=\"panelActions\"\n [attr.aria-expanded]=\"!!this.overlayRef\"\n (click)=\"toggleMoreDropdown($event, index, transfo)\"\n >\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CONSULT\">\n <ng-container *ngIf=\"selectedTransfo\">\n <pry-pipeline-details\n [pipeline]=\"selectedTransfo\"\n (goToList)=\"list()\"\n (goToEditor)=\"savePipeline($event)\"\n (executeConfirm)=\"toggleExecuteConfirm()\"\n ></pry-pipeline-details>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-pipeline-details (goToList)=\"list()\" (goToEditor)=\"savePipeline($event)\"></pry-pipeline-details>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITOR\">\n <pry-pipeline-editor [pipeline]=\"selectedTransfo\" (goToConsult)=\"consult($event)\"></pry-pipeline-editor>\n </ng-container>\n</div>\n<ng-template #noExecution>\n <div class=\"container-state\">\n <span>{{ '@pry.pipeline.ko' | i18n }}</span>\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"danger\" class=\"danger\"></pry-icon>\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n <div\n class=\"m-context-menu\"\n id=\"panelActions\"\n *ngIf=\"selectedTransfo\"\n (click)=\"$event.stopPropagation()\"\n (keydown.escape)=\"closeDropdown()\"\n >\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog panelActions\">\n <li class=\"m-context-menu__list__item\" role=\"none\" tabindex=\"-1\">\n <button\n type=\"button\"\n #toggleActions\n class=\"a-btn\"\n role=\"menuitem\"\n (click)=\"toggleState(selectedTransfo)\"\n (keydown.tab)=\"disableSelectedTranso()\"\n >\n <span>{{ (selectedTransfo.active ? '@pry.pipeline.deactivate' : '@pry.pipeline.activate') | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" tabindex=\"-1\">\n <button\n type=\"button\"\n role=\"menuitem\"\n id=\"execute\"\n class=\"a-btn\"\n (keydown.tab)=\"closeDropdown()\"\n [disabled]=\"selectedTransfo.active === false\"\n (click)=\"toggleExecuteConfirm()\"\n >\n <span>{{ '@pry.pipeline.execute' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n *ngIf=\"selectedTransfo\"\n (keydown.escape)=\"toggleExecuteConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"cancelRemoveConfirm()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" #cancel (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #confirm\n id=\"confirm\"\n class=\"a-btn a-btn--primary\"\n (click)=\"confirmExecution(selectedTransfo)\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3$2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i3$2.PrySortHeaderComponent, selector: "th[prySortHeader]", inputs: ["prySortHeader"], outputs: ["sortChange"] }, { kind: "directive", type: i3$2.PrySortHeaderDirective, selector: "[prySortHeader]" }, { kind: "directive", type: i3$2.PrySortTableDirective, selector: "[prySortTable]", inputs: ["prySortActive", "prySortDirection"], outputs: ["prySortChange"] }, { kind: "component", type: PryPipelineEditorComponent, selector: "pry-pipeline-editor", inputs: ["pipeline"], outputs: ["goToConsult"] }, { kind: "component", type: PryPipelineCssComponent, selector: "pry-pipeline-css" }, { kind: "component", type: PryPipelineDetailsComponent, selector: "pry-pipeline-details", inputs: ["pipeline"], outputs: ["goToList", "goToConsult", "goToEditor", "executeConfirm"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i3$2.PrySortDataPipe, name: "prySortData" }, { kind: "pipe", type: i6.PrySinceDatePipe, name: "sinceDate" }] }); }
807
803
  }
808
804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineListComponent, decorators: [{
809
805
  type: Component,
@@ -1079,12 +1075,12 @@ class PipelineEffects {
1079
1075
  .get(action.id)
1080
1076
  .pipe(map$1((transfo) => PipelineActions.getTransformationSuccess({ transfo }))))));
1081
1077
  }
1082
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PipelineEffects, deps: [{ token: i1$2.Actions }, { token: PipelineService }, { token: i4.PrySnackbarService }, { token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1078
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PipelineEffects, deps: [{ token: i1$2.Actions }, { token: PipelineService }, { token: i3$2.PrySnackbarService }, { token: i3$2.PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1083
1079
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PipelineEffects }); }
1084
1080
  }
1085
1081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PipelineEffects, decorators: [{
1086
1082
  type: Injectable
1087
- }], ctorParameters: function () { return [{ type: i1$2.Actions }, { type: PipelineService }, { type: i4.PrySnackbarService }, { type: i4.PryI18nService }]; } });
1083
+ }], ctorParameters: function () { return [{ type: i1$2.Actions }, { type: PipelineService }, { type: i3$2.PrySnackbarService }, { type: i3$2.PryI18nService }]; } });
1088
1084
 
1089
1085
  const components = [
1090
1086
  PryPipelineEditorComponent,
@@ -1098,7 +1094,7 @@ class PryPipelineModule {
1098
1094
  this.pryTranslateService.addLangObject('fr', 'pipeline', frTranslations);
1099
1095
  this.pryTranslateService.addLangObject('en', 'pipeline', enTranslations);
1100
1096
  }
1101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineModule, deps: [{ token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
1097
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineModule, deps: [{ token: i3$2.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
1102
1098
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: PryPipelineModule, declarations: [PryPipelineEditorComponent,
1103
1099
  PryPipelineCssComponent,
1104
1100
  PryPipelineListComponent,
@@ -1147,7 +1143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
1147
1143
  declarations: [...components],
1148
1144
  exports: [...components]
1149
1145
  }]
1150
- }], ctorParameters: function () { return [{ type: i4.PryI18nService }]; } });
1146
+ }], ctorParameters: function () { return [{ type: i3$2.PryI18nService }]; } });
1151
1147
 
1152
1148
  class PipelinePropertiesPanelComponent {
1153
1149
  constructor() {