@provoly/dashboard 1.3.8 → 1.3.9

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 (200) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -2
  2. package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +47 -18
  3. package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +6 -2
  4. package/admin/components/admin-fields/admin-fields.component.d.ts +4 -1
  5. package/admin/components/admin-fields/store/admin-fields.model.d.ts +1 -1
  6. package/admin/components/admin-fields/store/fields.actions.d.ts +19 -12
  7. package/admin/components/admin-fields/store/fields.effects.d.ts +16 -3
  8. package/admin/i18n/en.translations.d.ts +33 -14
  9. package/admin/i18n/fr.translations.d.ts +33 -14
  10. package/components/checkbox/checkbox.component.d.ts +4 -2
  11. package/components/data-format/data-format.pipe.d.ts +11 -1
  12. package/components/paginator/index.d.ts +5 -0
  13. package/components/paginator/paginator.component.d.ts +19 -0
  14. package/components/paginator/paginator.module.d.ts +10 -0
  15. package/components/paginator/public-api.d.ts +3 -0
  16. package/components/paginator/style/_o-pry-paginator.scss +11 -0
  17. package/components/paginator/style/css.component.d.ts +5 -0
  18. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +5 -8
  19. package/dataset/dataset.module.d.ts +1 -1
  20. package/dataset/i18n/en.translations.d.ts +0 -12
  21. package/dataset/i18n/fr.translations.d.ts +0 -12
  22. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -6
  23. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
  24. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
  25. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +10 -12
  26. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +6 -5
  27. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +2 -2
  28. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +142 -63
  29. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +7 -8
  30. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +15 -11
  31. package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +1 -1
  32. package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +6 -5
  33. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +12 -6
  34. package/esm2022/admin/i18n/en.translations.mjs +34 -15
  35. package/esm2022/admin/i18n/fr.translations.mjs +34 -15
  36. package/esm2022/components/checkbox/checkbox.component.mjs +15 -7
  37. package/esm2022/components/data-format/data-format.pipe.mjs +88 -7
  38. package/esm2022/components/paginator/paginator.component.mjs +51 -0
  39. package/esm2022/components/paginator/paginator.module.mjs +20 -0
  40. package/esm2022/components/paginator/provoly-dashboard-components-paginator.mjs +5 -0
  41. package/esm2022/components/paginator/public-api.mjs +4 -0
  42. package/esm2022/components/paginator/style/css.component.mjs +11 -0
  43. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +16 -26
  44. package/esm2022/dataset/dataset.module.mjs +2 -5
  45. package/esm2022/dataset/i18n/en.translations.mjs +1 -13
  46. package/esm2022/dataset/i18n/fr.translations.mjs +2 -14
  47. package/esm2022/import/components/form/import-form.component.mjs +174 -0
  48. package/esm2022/import/components/list/import-list.component.mjs +73 -0
  49. package/esm2022/import/components/version-modal/version-modal.component.mjs +26 -0
  50. package/esm2022/import/i18n/en.translations.mjs +16 -2
  51. package/esm2022/import/i18n/fr.translations.mjs +16 -2
  52. package/esm2022/import/import-routing.module.mjs +3 -3
  53. package/esm2022/import/import.module.mjs +25 -10
  54. package/esm2022/import/public-api.mjs +4 -2
  55. package/esm2022/import/style/css.component.mjs +2 -2
  56. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  57. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +8 -8
  58. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +48 -0
  59. package/esm2022/lib/core/components/{modal-status/modal-status.module.mjs → status-modal/status-modal.module.mjs} +9 -9
  60. package/esm2022/lib/core/core.module.mjs +5 -5
  61. package/esm2022/lib/core/i18n/en.translations.mjs +35 -2
  62. package/esm2022/lib/core/i18n/fr.translations.mjs +37 -2
  63. package/esm2022/lib/core/model/admin-api.model.mjs +5 -69
  64. package/esm2022/lib/core/model/widget-analytic-manifest.interface.mjs +1 -1
  65. package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +1 -1
  66. package/esm2022/lib/core/public-api.mjs +3 -3
  67. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  68. package/esm2022/lib/core/store/class/class.selectors.mjs +2 -2
  69. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +3 -3
  70. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +7 -4
  71. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  72. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +5 -3
  73. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -11
  74. package/esm2022/lib/core/store/data-source/data-source.service.mjs +23 -5
  75. package/esm2022/lib/core/store/field/field.interface.mjs +1 -3
  76. package/esm2022/lib/core/store/field/field.service.mjs +7 -2
  77. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
  78. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +3 -11
  79. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +2 -2
  80. package/esm2022/lib/dashboard/item-utils.mjs +5 -5
  81. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -4
  82. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -19
  83. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -26
  84. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  85. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +3 -2
  86. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
  87. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
  88. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -5
  89. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
  90. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +5 -6
  91. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
  92. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  93. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +17 -19
  94. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -4
  95. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +54 -37
  96. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +4 -16
  97. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +9 -9
  98. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
  99. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +30 -32
  100. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +2 -5
  101. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +2 -2
  102. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +6 -10
  103. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +18 -14
  104. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +9 -5
  105. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
  106. package/esm2022/widgets/widget-table/public-api.mjs +1 -2
  107. package/esm2022/widgets/widget-table/widget-table.module.mjs +12 -7
  108. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -15
  109. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +8 -4
  110. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  111. package/fesm2022/provoly-dashboard-admin.mjs +249 -126
  112. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  113. package/fesm2022/provoly-dashboard-components-checkbox.mjs +14 -6
  114. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
  115. package/fesm2022/provoly-dashboard-components-data-format.mjs +88 -7
  116. package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
  117. package/fesm2022/provoly-dashboard-components-paginator.mjs +82 -0
  118. package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -0
  119. package/fesm2022/provoly-dashboard-dataset.mjs +21 -58
  120. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  121. package/fesm2022/provoly-dashboard-import.mjs +249 -116
  122. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  123. package/fesm2022/provoly-dashboard-search.mjs +15 -16
  124. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  125. package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
  126. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  127. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +20 -21
  128. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  129. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +53 -36
  130. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  131. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +3 -15
  132. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  133. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +9 -9
  134. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  135. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +4 -4
  136. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  137. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +36 -45
  138. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  139. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +32 -38
  140. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  141. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +16 -17
  142. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  143. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  144. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  145. package/fesm2022/provoly-dashboard.mjs +278 -330
  146. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  147. package/import/components/{import.component.d.ts → form/import-form.component.d.ts} +8 -4
  148. package/import/components/list/import-list.component.d.ts +34 -0
  149. package/import/components/version-modal/version-modal.component.d.ts +13 -0
  150. package/import/i18n/en.translations.d.ts +14 -0
  151. package/import/i18n/fr.translations.d.ts +14 -0
  152. package/import/import.module.d.ts +13 -10
  153. package/import/public-api.d.ts +3 -1
  154. package/import/style/_o-import.scss +50 -6
  155. package/lib/core/components/share/legacy-share/share.component.d.ts +1 -1
  156. package/lib/core/components/{modal-status/modal-status.component.d.ts → status-modal/status-modal.component.d.ts} +10 -6
  157. package/lib/core/components/{modal-status/modal-status.module.d.ts → status-modal/status-modal.module.d.ts} +5 -5
  158. package/lib/core/core.module.d.ts +2 -2
  159. package/lib/core/i18n/en.translations.d.ts +33 -0
  160. package/lib/core/i18n/fr.translations.d.ts +35 -0
  161. package/lib/core/model/admin-api.model.d.ts +6 -8
  162. package/lib/core/model/widget-analytic-manifest.interface.d.ts +0 -3
  163. package/lib/core/model/widget-table-manifest.interface.d.ts +2 -0
  164. package/lib/core/public-api.d.ts +2 -2
  165. package/lib/core/store/class/class.interface.d.ts +2 -1
  166. package/lib/core/store/class/class.selectors.d.ts +10 -10
  167. package/lib/core/store/data-source/data-source.actions.d.ts +21 -1
  168. package/lib/core/store/data-source/data-source.effects.d.ts +11 -1
  169. package/lib/core/store/data-source/data-source.model.d.ts +3 -2
  170. package/lib/core/store/data-source/data-source.reducer.d.ts +1 -0
  171. package/lib/core/store/data-source/data-source.selectors.d.ts +3 -3
  172. package/lib/core/store/data-source/data-source.service.d.ts +11 -2
  173. package/lib/core/store/field/field.interface.d.ts +8 -4
  174. package/lib/core/store/field/field.service.d.ts +1 -0
  175. package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +1 -1
  176. package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +3 -7
  177. package/lib/dashboard/item-utils.d.ts +1 -1
  178. package/lib/dashboard/store/dashboard.actions.d.ts +0 -11
  179. package/lib/dashboard/store/dashboard.effects.d.ts +0 -3
  180. package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +2 -1
  181. package/package.json +25 -19
  182. package/styles/base/_utils.scss +9 -1
  183. package/styles/components/_a-btn.scss +7 -0
  184. package/styles/components/_a-table.scss +2 -16
  185. package/styles/layout/_o-workspace.scss +1 -0
  186. package/tooltips/attribute/attribute-tooltip.component.d.ts +6 -6
  187. package/tooltips/attribute/attribute-tooltip.module.d.ts +2 -1
  188. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +16 -3
  189. package/widgets/widget-analytic/component/widget-analytic.component.d.ts +2 -3
  190. package/widgets/widget-detail/component/widget-detail.component.d.ts +1 -4
  191. package/widgets/widget-table/component/widget-table.component.d.ts +1 -0
  192. package/widgets/widget-table/expand-value/expand-value.component.d.ts +4 -2
  193. package/widgets/widget-table/public-api.d.ts +0 -1
  194. package/widgets/widget-table/widget-table.module.d.ts +9 -8
  195. package/widgets/widget-tile/component/widget-tile.component.d.ts +1 -0
  196. package/widgets/widget-tile/widget-tile.module.d.ts +2 -1
  197. package/esm2022/import/components/import.component.mjs +0 -167
  198. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +0 -45
  199. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +0 -24
  200. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +0 -10
@@ -8,11 +8,13 @@ class PryCheckboxComponent {
8
8
  constructor(_cd) {
9
9
  this._cd = _cd;
10
10
  this.circle = true;
11
+ this.name = '';
12
+ this.inputId = '';
13
+ this.inhibit = true;
11
14
  this.onChange = () => { };
12
15
  this.onTouch = () => { };
13
16
  this.checked = false;
14
17
  this.disabled = false;
15
- this.inhibate = true;
16
18
  }
17
19
  registerOnChange(fn) {
18
20
  this.onChange = fn;
@@ -22,7 +24,7 @@ class PryCheckboxComponent {
22
24
  }
23
25
  // Define what should happen in this component, if something changes outside
24
26
  writeValue(checked) {
25
- if (this.checked !== checked && !this.inhibate) {
27
+ if (this.checked !== checked && !this.inhibit) {
26
28
  this.checked = checked;
27
29
  this.onChange(this.checked);
28
30
  this.onTouch();
@@ -34,16 +36,16 @@ class PryCheckboxComponent {
34
36
  this._cd.detectChanges();
35
37
  }
36
38
  ngAfterViewInit() {
37
- this.inhibate = false;
39
+ this.inhibit = false;
38
40
  }
39
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryCheckboxComponent, selector: "pry-checkbox", inputs: { circle: "circle" }, providers: [
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryCheckboxComponent, selector: "pry-checkbox", inputs: { circle: "circle", name: "name", inputId: "inputId", inhibit: "inhibit" }, providers: [
41
43
  {
42
44
  provide: NG_VALUE_ACCESSOR,
43
45
  useExisting: forwardRef(() => PryCheckboxComponent),
44
46
  multi: true
45
47
  }
46
- ], ngImport: i0, template: "<label class=\"a-checkbox\" [class.a-checkbox--circle]=\"circle\">\n <input\n class=\"a-checkbox__input\"\n type=\"checkbox\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"writeValue($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"a-checkbox__text\">\n <ng-content></ng-content>\n </span>\n</label>\n", dependencies: [{ kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
48
+ ], ngImport: i0, template: "<label class=\"a-checkbox\" [class.a-checkbox--circle]=\"circle\" [for]=\"inputId\">\n <input\n class=\"a-checkbox__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"writeValue($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"a-checkbox__text\">\n <ng-content></ng-content>\n </span>\n</label>\n", dependencies: [{ kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
47
49
  }
48
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryCheckboxComponent, decorators: [{
49
51
  type: Component,
@@ -53,9 +55,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
53
55
  useExisting: forwardRef(() => PryCheckboxComponent),
54
56
  multi: true
55
57
  }
56
- ], template: "<label class=\"a-checkbox\" [class.a-checkbox--circle]=\"circle\">\n <input\n class=\"a-checkbox__input\"\n type=\"checkbox\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"writeValue($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"a-checkbox__text\">\n <ng-content></ng-content>\n </span>\n</label>\n" }]
58
+ ], template: "<label class=\"a-checkbox\" [class.a-checkbox--circle]=\"circle\" [for]=\"inputId\">\n <input\n class=\"a-checkbox__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"writeValue($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"a-checkbox__text\">\n <ng-content></ng-content>\n </span>\n</label>\n" }]
57
59
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { circle: [{
58
60
  type: Input
61
+ }], name: [{
62
+ type: Input
63
+ }], inputId: [{
64
+ type: Input
65
+ }], inhibit: [{
66
+ type: Input
59
67
  }] } });
60
68
 
61
69
  const PRY_CHECKBOX_COMPONENTS = [PryCheckboxComponent];
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-components-checkbox.mjs","sources":["../../../../projects/provoly/dashboard/components/checkbox/checkbox.component.ts","../../../../projects/provoly/dashboard/components/checkbox/checkbox.component.html","../../../../projects/provoly/dashboard/components/checkbox/checkbox.module.ts","../../../../projects/provoly/dashboard/components/checkbox/provoly-dashboard-components-checkbox.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'pry-checkbox',\n templateUrl: './checkbox.component.html',\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PryCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class PryCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n @Input() circle = true;\n onChange: any = () => {};\n onTouch: any = () => {};\n checked = false;\n disabled = false;\n inhibate = true;\n\n constructor(private _cd: ChangeDetectorRef) {}\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n // Define what should happen in this component, if something changes outside\n writeValue(checked: boolean) {\n if (this.checked !== checked && !this.inhibate) {\n this.checked = checked;\n this.onChange(this.checked);\n this.onTouch();\n this._cd.detectChanges();\n }\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._cd.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.inhibate = false;\n }\n}\n","<label class=\"a-checkbox\" [class.a-checkbox--circle]=\"circle\">\n <input\n class=\"a-checkbox__input\"\n type=\"checkbox\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"writeValue($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"a-checkbox__text\">\n <ng-content></ng-content>\n </span>\n</label>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PryCheckboxComponent } from './checkbox.component';\n\nconst PRY_CHECKBOX_COMPONENTS = [PryCheckboxComponent];\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [...PRY_CHECKBOX_COMPONENTS],\n exports: [...PRY_CHECKBOX_COMPONENTS]\n})\nexport class PryCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-components-checkbox.mjs","sources":["../../../../projects/provoly/dashboard/components/checkbox/checkbox.component.ts","../../../../projects/provoly/dashboard/components/checkbox/checkbox.component.html","../../../../projects/provoly/dashboard/components/checkbox/checkbox.module.ts","../../../../projects/provoly/dashboard/components/checkbox/provoly-dashboard-components-checkbox.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'pry-checkbox',\n templateUrl: './checkbox.component.html',\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PryCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class PryCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n @Input() circle = true;\n @Input() name = '';\n @Input() inputId = '';\n @Input() inhibit = true;\n onChange: any = () => {};\n onTouch: any = () => {};\n checked = false;\n disabled = false;\n\n constructor(private _cd: ChangeDetectorRef) {}\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n // Define what should happen in this component, if something changes outside\n writeValue(checked: boolean) {\n if (this.checked !== checked && !this.inhibit) {\n this.checked = checked;\n this.onChange(this.checked);\n this.onTouch();\n this._cd.detectChanges();\n }\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._cd.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.inhibit = false;\n }\n}\n","<label class=\"a-checkbox\" [class.a-checkbox--circle]=\"circle\" [for]=\"inputId\">\n <input\n class=\"a-checkbox__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"writeValue($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"a-checkbox__text\">\n <ng-content></ng-content>\n </span>\n</label>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PryCheckboxComponent } from './checkbox.component';\n\nconst PRY_CHECKBOX_COMPONENTS = [PryCheckboxComponent];\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [...PRY_CHECKBOX_COMPONENTS],\n exports: [...PRY_CHECKBOX_COMPONENTS]\n})\nexport class PryCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,15 +1,35 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Pipe, NgModule } from '@angular/core';
3
3
 
4
+ const LOCALE = {
5
+ value: navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language
6
+ };
4
7
  class DataFormatPipe {
5
8
  constructor() { }
6
- transform(value, toLocale, suffix, ...args) {
9
+ transform(value, { isLocaleFormat, unit, decimalPrecision, format } = {}) {
7
10
  let result = value;
8
- if (toLocale) {
9
- result = toLocaleString(value);
11
+ if (value === null || value === undefined) {
12
+ return value;
13
+ }
14
+ if (typeof value === 'object') {
15
+ return JSON.stringify(value);
16
+ }
17
+ if (decimalPrecision) {
18
+ result = new Intl.NumberFormat(undefined, {
19
+ // @ts-ignore
20
+ roundingMode: 'floor',
21
+ minimumFractionDigits: decimalPrecision,
22
+ maximumFractionDigits: decimalPrecision
23
+ }).format(value);
10
24
  }
11
- if (suffix) {
12
- result = result + ' ' + suffix;
25
+ if (isLocaleFormat) {
26
+ result = toLocaleString(result);
27
+ }
28
+ if (unit) {
29
+ result = result + ' ' + unit;
30
+ }
31
+ if (format) {
32
+ result = new Intl.DateTimeFormat(LOCALE.value, dateFormatOptions.value[format]).format(getDate(value));
13
33
  }
14
34
  return result;
15
35
  }
@@ -20,16 +40,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
20
40
  type: Pipe,
21
41
  args: [{ name: 'dataFormat' }]
22
42
  }], ctorParameters: () => [] });
43
+ // number formatting methods
23
44
  const toLocaleString = (value) => {
24
45
  switch (typeof value) {
25
46
  case 'number':
26
- return new Intl.NumberFormat().format(value);
47
+ return new Intl.NumberFormat(LOCALE.value, { maximumFractionDigits: 20 }).format(value);
27
48
  case 'string':
28
49
  return value;
29
50
  default:
30
51
  return value;
31
52
  }
32
53
  };
54
+ // date formatting methods
55
+ const dateFormatOptions = {
56
+ value: {
57
+ DATETIME: {
58
+ year: 'numeric',
59
+ month: 'numeric',
60
+ day: 'numeric',
61
+ hour: 'numeric',
62
+ minute: 'numeric'
63
+ },
64
+ DATE: {
65
+ year: 'numeric',
66
+ month: '2-digit',
67
+ day: '2-digit'
68
+ },
69
+ MONTH_YEAR: {
70
+ month: '2-digit',
71
+ year: 'numeric'
72
+ },
73
+ DAY_MONTH: {
74
+ month: '2-digit',
75
+ day: '2-digit'
76
+ },
77
+ YEAR: {
78
+ year: 'numeric'
79
+ },
80
+ MONTH: {
81
+ month: '2-digit'
82
+ },
83
+ DAY: {
84
+ day: '2-digit'
85
+ }
86
+ }
87
+ };
88
+ const getDate = (value) => {
89
+ if (typeof value === 'string' || typeof value === 'number') {
90
+ return new Date(value);
91
+ }
92
+ return value;
93
+ };
94
+ const toD3Format = (format) => {
95
+ switch (format) {
96
+ case 'DATETIME':
97
+ return '%Y-%m-%dT%H:%M:%S';
98
+ case 'DATE':
99
+ return '%Y-%m-%d';
100
+ case 'MONTH_YEAR':
101
+ return '%m-%Y';
102
+ case 'DAY_MONTH':
103
+ return '%d-%m';
104
+ case 'YEAR':
105
+ return '%Y';
106
+ case 'MONTH':
107
+ return '%m';
108
+ case 'DAY':
109
+ return '%d';
110
+ default:
111
+ return '%Y-%B-%dT%H:%M:%S';
112
+ }
113
+ };
33
114
 
34
115
  class PryDataFormatModule {
35
116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDataFormatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -48,5 +129,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
48
129
  * Generated bundle index. Do not edit.
49
130
  */
50
131
 
51
- export { DataFormatPipe, PryDataFormatModule };
132
+ export { DataFormatPipe, LOCALE, PryDataFormatModule, dateFormatOptions, toD3Format };
52
133
  //# sourceMappingURL=provoly-dashboard-components-data-format.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-components-data-format.mjs","sources":["../../../../projects/provoly/dashboard/components/data-format/data-format.pipe.ts","../../../../projects/provoly/dashboard/components/data-format/data-format.module.ts","../../../../projects/provoly/dashboard/components/data-format/provoly-dashboard-components-data-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'dataFormat' })\nexport class DataFormatPipe implements PipeTransform {\n constructor() {}\n\n transform(value?: any, toLocale?: boolean, suffix?: string, ...args: any[]): any {\n let result = value;\n if (toLocale) {\n result = toLocaleString(value);\n }\n if (suffix) {\n result = result + ' ' + suffix;\n }\n\n return result;\n }\n}\n\nconst toLocaleString = (value?: string | number) => {\n switch (typeof value) {\n case 'number':\n return new Intl.NumberFormat().format(value);\n case 'string':\n return value;\n default:\n return value;\n }\n};\n","import { NgModule } from '@angular/core';\nimport { DataFormatPipe } from './data-format.pipe';\n\n@NgModule({\n declarations: [DataFormatPipe],\n exports: [DataFormatPipe]\n})\nexport class PryDataFormatModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAGa,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA,GAAgB;IAEhB,SAAS,CAAC,KAAW,EAAE,QAAkB,EAAE,MAAe,EAAE,GAAG,IAAW,EAAA;QACxE,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;SAChC;AAED,QAAA,OAAO,MAAM,CAAC;KACf;8GAbU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;;AAiB5B,MAAM,cAAc,GAAG,CAAC,KAAuB,KAAI;IACjD,QAAQ,OAAO,KAAK;AAClB,QAAA,KAAK,QAAQ;YACX,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,KAAK,CAAC;AACf,QAAA;AACE,YAAA,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;;MCrBY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,CAHf,cAAc,CAAA,EAAA,OAAA,EAAA,CACnB,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEb,mBAAmB,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,cAAc,CAAC;oBAC9B,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA,CAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"provoly-dashboard-components-data-format.mjs","sources":["../../../../projects/provoly/dashboard/components/data-format/data-format.pipe.ts","../../../../projects/provoly/dashboard/components/data-format/data-format.module.ts","../../../../projects/provoly/dashboard/components/data-format/provoly-dashboard-components-data-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { FormatOptions } from '@provoly/dashboard';\n\nexport const LOCALE = {\n value: navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language\n};\n\n@Pipe({ name: 'dataFormat' })\nexport class DataFormatPipe implements PipeTransform {\n constructor() {}\n\n transform(\n value: any,\n { isLocaleFormat, unit, decimalPrecision, format }: Partial<FormatOptions> | undefined = {}\n ): any {\n let result = value;\n\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n if (decimalPrecision) {\n result = new Intl.NumberFormat(undefined, {\n // @ts-ignore\n roundingMode: 'floor',\n minimumFractionDigits: decimalPrecision,\n maximumFractionDigits: decimalPrecision\n }).format(value);\n }\n\n if (isLocaleFormat) {\n result = toLocaleString(result);\n }\n if (unit) {\n result = result + ' ' + unit;\n }\n\n if (format) {\n result = new Intl.DateTimeFormat(LOCALE.value, dateFormatOptions.value[format]).format(getDate(value));\n }\n\n return result;\n }\n}\n\n// number formatting methods\nconst toLocaleString = (value?: string | number) => {\n switch (typeof value) {\n case 'number':\n return new Intl.NumberFormat(LOCALE.value, { maximumFractionDigits: 20 }).format(value);\n case 'string':\n return value;\n default:\n return value;\n }\n};\n\n// date formatting methods\nexport const dateFormatOptions: { value: { [key: string]: Intl.DateTimeFormatOptions } } = {\n value: {\n DATETIME: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n DATE: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n },\n MONTH_YEAR: {\n month: '2-digit',\n year: 'numeric'\n },\n DAY_MONTH: {\n month: '2-digit',\n day: '2-digit'\n },\n YEAR: {\n year: 'numeric'\n },\n MONTH: {\n month: '2-digit'\n },\n DAY: {\n day: '2-digit'\n }\n }\n};\n\nconst getDate = (value: string | number | Date): Date => {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value);\n }\n return value;\n};\n\nexport const toD3Format = (format?: string) => {\n switch (format) {\n case 'DATETIME':\n return '%Y-%m-%dT%H:%M:%S';\n case 'DATE':\n return '%Y-%m-%d';\n case 'MONTH_YEAR':\n return '%m-%Y';\n case 'DAY_MONTH':\n return '%d-%m';\n case 'YEAR':\n return '%Y';\n case 'MONTH':\n return '%m';\n case 'DAY':\n return '%d';\n default:\n return '%Y-%B-%dT%H:%M:%S';\n }\n};\n","import { NgModule } from '@angular/core';\nimport { DataFormatPipe } from './data-format.pipe';\n\n@NgModule({\n declarations: [DataFormatPipe],\n exports: [DataFormatPipe]\n})\nexport class PryDataFormatModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ViewEncapsulation, inject, input, computed, signal, EventEmitter, effect, Output, NgModule } from '@angular/core';
3
+ import { Store } from '@ngrx/store';
4
+ import * as i1 from '@provoly/dashboard';
5
+ import { PryIconModule } from '@provoly/dashboard';
6
+ import * as i2 from '@angular/common';
7
+ import { NgTemplateOutlet } from '@angular/common';
8
+
9
+ class PryPaginatorCssComponent {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryPaginatorCssComponent, selector: "pry-paginator-css", ngImport: i0, template: '', isInline: true, styles: [".o-paginator__page-counter{margin-bottom:.3125rem}.o-paginator--short{gap:0}\n"], encapsulation: i0.ViewEncapsulation.None }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorCssComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'pry-paginator-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-paginator__page-counter{margin-bottom:.3125rem}.o-paginator--short{gap:0}\n"] }]
16
+ }] });
17
+
18
+ class PryPaginatorComponent {
19
+ constructor() {
20
+ this.store = inject(Store);
21
+ this.action = input();
22
+ this.nbPerPage = input(10);
23
+ this.totalItemNb = input(100);
24
+ this.mode = input('long');
25
+ this.nbOfPages = computed(() => {
26
+ return Math.floor(this.totalItemNb() / this.nbPerPage());
27
+ });
28
+ this.pages = computed(() => {
29
+ return Array.from({ length: this.nbOfPages() }, (_, i) => i + 1);
30
+ });
31
+ this.currentPage = signal(1);
32
+ this.pageChange = new EventEmitter();
33
+ effect(() => {
34
+ if (this.currentPage()) {
35
+ this.dispatchPageChangeAction();
36
+ }
37
+ }, { allowSignalWrites: true });
38
+ }
39
+ dispatchPageChangeAction() {
40
+ if (this.action()) {
41
+ this.store.dispatch({
42
+ ...this.action(),
43
+ // @ts-ignore
44
+ offset: (this.currentPage() - 1) * this.nbPerPage(),
45
+ limit: this.nbPerPage()
46
+ });
47
+ }
48
+ }
49
+ changePage(page) {
50
+ this.currentPage.set(page);
51
+ this.pageChange.emit(page);
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryPaginatorComponent, selector: "pry-paginator", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, nbPerPage: { classPropertyName: "nbPerPage", publicName: "nbPerPage", isSignal: true, isRequired: false, transformFunction: null }, totalItemNb: { classPropertyName: "totalItemNb", publicName: "totalItemNb", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PryPaginatorCssComponent, selector: "pry-paginator-css" }] }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'pry-paginator', template: "<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n" }]
59
+ }], ctorParameters: () => [], propDecorators: { pageChange: [{
60
+ type: Output
61
+ }] } });
62
+
63
+ class PryPaginatorModule {
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
65
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorModule, declarations: [PryPaginatorComponent, PryPaginatorCssComponent], imports: [PryIconModule, NgTemplateOutlet], exports: [PryPaginatorComponent, PryPaginatorCssComponent] }); }
66
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorModule, imports: [PryIconModule] }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryPaginatorModule, decorators: [{
69
+ type: NgModule,
70
+ args: [{
71
+ declarations: [PryPaginatorComponent, PryPaginatorCssComponent],
72
+ imports: [PryIconModule, NgTemplateOutlet],
73
+ exports: [PryPaginatorComponent, PryPaginatorCssComponent]
74
+ }]
75
+ }] });
76
+
77
+ /**
78
+ * Generated bundle index. Do not edit.
79
+ */
80
+
81
+ export { PryPaginatorComponent, PryPaginatorCssComponent, PryPaginatorModule };
82
+ //# sourceMappingURL=provoly-dashboard-components-paginator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provoly-dashboard-components-paginator.mjs","sources":["../../../../projects/provoly/dashboard/components/paginator/style/css.component.ts","../../../../projects/provoly/dashboard/components/paginator/paginator.component.ts","../../../../projects/provoly/dashboard/components/paginator/paginator.component.html","../../../../projects/provoly/dashboard/components/paginator/paginator.module.ts","../../../../projects/provoly/dashboard/components/paginator/provoly-dashboard-components-paginator.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-paginator-css',\n template: '',\n styleUrls: ['./_o-pry-paginator.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPaginatorCssComponent {}\n","import { Component, computed, effect, EventEmitter, inject, input, Output, signal } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\n\n@Component({\n selector: 'pry-paginator',\n templateUrl: './paginator.component.html'\n})\nexport class PryPaginatorComponent {\n store = inject(Store);\n\n action = input<Action>();\n nbPerPage = input<number>(10);\n totalItemNb = input<number>(100);\n mode = input<'long' | 'short'>('long');\n\n nbOfPages = computed(() => {\n return Math.floor(this.totalItemNb() / this.nbPerPage());\n });\n pages = computed(() => {\n return Array.from({ length: this.nbOfPages() }, (_, i) => i + 1);\n });\n currentPage = signal(1);\n\n @Output() pageChange = new EventEmitter<number>();\n\n constructor() {\n effect(\n () => {\n if (this.currentPage()) {\n this.dispatchPageChangeAction();\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n dispatchPageChangeAction() {\n if (this.action()) {\n this.store.dispatch({\n ...this.action(),\n // @ts-ignore\n offset: (this.currentPage() - 1) * this.nbPerPage(),\n limit: this.nbPerPage()\n });\n }\n }\n\n changePage(page: number) {\n this.currentPage.set(page);\n this.pageChange.emit(page);\n }\n}\n","<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { PryPaginatorComponent } from './paginator.component';\nimport { PryIconModule } from '@provoly/dashboard';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { PryPaginatorCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [PryPaginatorComponent, PryPaginatorCssComponent],\n imports: [PryIconModule, NgTemplateOutlet],\n exports: [PryPaginatorComponent, PryPaginatorCssComponent]\n})\nexport class PryPaginatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.PryPaginatorCssComponent"],"mappings":"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"}