primeng 18.0.0-beta.4 → 18.0.0-rc.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 (123) hide show
  1. package/accordion/accordion.d.ts +4 -4
  2. package/api/public_api.d.ts +0 -4
  3. package/autocomplete/autocomplete.d.ts +1 -0
  4. package/base/style/basestyle.d.ts +1 -1
  5. package/basecomponent/basecomponent.d.ts +3 -2
  6. package/config/index.d.ts +5 -0
  7. package/{api → config}/primeng.d.ts +3 -3
  8. package/{api/provideprimengconfig.d.ts → config/provideprimeng.d.ts} +3 -3
  9. package/config/public_api.d.ts +3 -0
  10. package/{api → config}/themeprovider.d.ts +1 -1
  11. package/confirmpopup/confirmpopup.d.ts +2 -3
  12. package/dialog/dialog.d.ts +1 -0
  13. package/editor/editor.d.ts +5 -2
  14. package/esm2022/accordion/accordion.mjs +9 -9
  15. package/esm2022/api/public_api.mjs +1 -5
  16. package/esm2022/autocomplete/autocomplete.mjs +4 -2
  17. package/esm2022/autofocus/autofocus.mjs +2 -2
  18. package/esm2022/base/style/basestyle.mjs +3 -3
  19. package/esm2022/basecomponent/basecomponent.mjs +9 -7
  20. package/esm2022/cascadeselect/cascadeselect.mjs +2 -2
  21. package/esm2022/checkbox/checkbox.mjs +2 -2
  22. package/esm2022/config/primeng-config.mjs +5 -0
  23. package/esm2022/config/primeng.mjs +189 -0
  24. package/esm2022/config/provideprimeng.mjs +11 -0
  25. package/esm2022/config/public_api.mjs +4 -0
  26. package/esm2022/config/themeprovider.mjs +74 -0
  27. package/esm2022/confirmpopup/confirmpopup.mjs +4 -6
  28. package/esm2022/dialog/dialog.mjs +23 -3
  29. package/esm2022/dropdown/dropdown.mjs +2 -2
  30. package/esm2022/editor/editor.mjs +15 -14
  31. package/esm2022/fileupload/style/fileuploadstyle.mjs +2 -2
  32. package/esm2022/galleria/galleria.mjs +16 -20
  33. package/esm2022/iconfield/iconfield.mjs +3 -5
  34. package/esm2022/inputnumber/inputnumber.mjs +3 -3
  35. package/esm2022/inputtext/inputtext.mjs +3 -3
  36. package/esm2022/inputtextarea/inputtextarea.mjs +3 -3
  37. package/esm2022/listbox/listbox.mjs +5 -5
  38. package/esm2022/megamenu/megamenu.mjs +4 -7
  39. package/esm2022/menubar/menubar.mjs +4 -7
  40. package/esm2022/multiselect/multiselect.mjs +86 -83
  41. package/esm2022/overlay/overlay.mjs +2 -2
  42. package/esm2022/password/password.mjs +4 -4
  43. package/esm2022/radiobutton/radiobutton.mjs +3 -3
  44. package/esm2022/scrolltop/scrolltop.mjs +22 -16
  45. package/esm2022/select/select.mjs +2 -2
  46. package/esm2022/textarea/textarea.mjs +3 -3
  47. package/esm2022/tree/tree.mjs +12 -8
  48. package/esm2022/treetable/treetable.mjs +7 -8
  49. package/fesm2022/primeng-accordion.mjs +8 -8
  50. package/fesm2022/primeng-accordion.mjs.map +1 -1
  51. package/fesm2022/primeng-api.mjs +3 -276
  52. package/fesm2022/primeng-api.mjs.map +1 -1
  53. package/fesm2022/primeng-autocomplete.mjs +4 -2
  54. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  55. package/fesm2022/primeng-autofocus.mjs +1 -1
  56. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  57. package/fesm2022/primeng-base.mjs +2 -2
  58. package/fesm2022/primeng-base.mjs.map +1 -1
  59. package/fesm2022/primeng-basecomponent.mjs +8 -6
  60. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  61. package/fesm2022/primeng-cascadeselect.mjs +1 -1
  62. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  63. package/fesm2022/primeng-checkbox.mjs +1 -1
  64. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  65. package/fesm2022/primeng-config.mjs +275 -0
  66. package/fesm2022/primeng-config.mjs.map +1 -0
  67. package/fesm2022/primeng-confirmpopup.mjs +3 -5
  68. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  69. package/fesm2022/primeng-dialog.mjs +22 -2
  70. package/fesm2022/primeng-dialog.mjs.map +1 -1
  71. package/fesm2022/primeng-dropdown.mjs +1 -1
  72. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  73. package/fesm2022/primeng-editor.mjs +14 -13
  74. package/fesm2022/primeng-editor.mjs.map +1 -1
  75. package/fesm2022/primeng-fileupload.mjs +1 -1
  76. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  77. package/fesm2022/primeng-galleria.mjs +15 -19
  78. package/fesm2022/primeng-galleria.mjs.map +1 -1
  79. package/fesm2022/primeng-iconfield.mjs +2 -4
  80. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  81. package/fesm2022/primeng-inputnumber.mjs +2 -2
  82. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  83. package/fesm2022/primeng-inputtext.mjs +2 -2
  84. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  85. package/fesm2022/primeng-inputtextarea.mjs +2 -2
  86. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  87. package/fesm2022/primeng-listbox.mjs +4 -4
  88. package/fesm2022/primeng-listbox.mjs.map +1 -1
  89. package/fesm2022/primeng-megamenu.mjs +3 -6
  90. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  91. package/fesm2022/primeng-menubar.mjs +3 -6
  92. package/fesm2022/primeng-menubar.mjs.map +1 -1
  93. package/fesm2022/primeng-multiselect.mjs +85 -82
  94. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  95. package/fesm2022/primeng-overlay.mjs +1 -1
  96. package/fesm2022/primeng-overlay.mjs.map +1 -1
  97. package/fesm2022/primeng-password.mjs +3 -3
  98. package/fesm2022/primeng-password.mjs.map +1 -1
  99. package/fesm2022/primeng-radiobutton.mjs +2 -2
  100. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  101. package/fesm2022/primeng-scrolltop.mjs +21 -15
  102. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  103. package/fesm2022/primeng-select.mjs +1 -1
  104. package/fesm2022/primeng-select.mjs.map +1 -1
  105. package/fesm2022/primeng-textarea.mjs +2 -2
  106. package/fesm2022/primeng-textarea.mjs.map +1 -1
  107. package/fesm2022/primeng-tree.mjs +11 -7
  108. package/fesm2022/primeng-tree.mjs.map +1 -1
  109. package/fesm2022/primeng-treetable.mjs +6 -7
  110. package/fesm2022/primeng-treetable.mjs.map +1 -1
  111. package/galleria/galleria.d.ts +4 -6
  112. package/megamenu/megamenu.d.ts +2 -3
  113. package/menubar/menubar.d.ts +2 -3
  114. package/multiselect/multiselect.d.ts +4 -4
  115. package/overlay/overlay.d.ts +1 -1
  116. package/package.json +135 -129
  117. package/scrolltop/scrolltop.d.ts +3 -1
  118. package/treetable/treetable.d.ts +3 -4
  119. package/api/primengconfig.d.ts +0 -9
  120. package/esm2022/api/primeng.mjs +0 -188
  121. package/esm2022/api/primengconfig.mjs +0 -15
  122. package/esm2022/api/provideprimengconfig.mjs +0 -11
  123. package/esm2022/api/themeprovider.mjs +0 -73
@@ -36,7 +36,7 @@ export declare class ScrollTop extends BaseComponent implements OnInit, OnDestro
36
36
  * Name of the icon or JSX.Element for icon.
37
37
  * @group Props
38
38
  */
39
- icon: string | undefined;
39
+ get icon(): string | undefined;
40
40
  /**
41
41
  * Defines the scrolling behavior, "smooth" adds an animation and "auto" scrolls with a jump.
42
42
  * @group Props
@@ -67,6 +67,8 @@ export declare class ScrollTop extends BaseComponent implements OnInit, OnDestro
67
67
  * @group Templates
68
68
  */
69
69
  iconTemplate: TemplateRef<any> | undefined;
70
+ private _icon;
71
+ set icon(value: string | undefined);
70
72
  documentScrollListener: VoidFunction | null | undefined;
71
73
  parentScrollListener: VoidFunction | null | undefined;
72
74
  visible: boolean;
@@ -1,5 +1,5 @@
1
1
  import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, TemplateRef } from '@angular/core';
2
- import { BlockableUI, FilterMetadata, FilterService, PrimeNGConfig, ScrollerOptions, SortMeta, TreeNode, TreeTableNode } from 'primeng/api';
2
+ import { BlockableUI, FilterMetadata, FilterService, ScrollerOptions, SortMeta, TreeNode, TreeTableNode } from 'primeng/api';
3
3
  import { BaseComponent } from 'primeng/basecomponent';
4
4
  import { Scroller } from 'primeng/scroller';
5
5
  import { Nullable, VoidListener } from 'primeng/ts-helpers';
@@ -961,11 +961,10 @@ export declare class TTRow {
961
961
  static ɵfac: i0.ɵɵFactoryDeclaration<TTRow, never>;
962
962
  static ɵdir: i0.ɵɵDirectiveDeclaration<TTRow, "[ttRow]", never, { "rowNode": { "alias": "ttRow"; "required": false; }; }, {}, never, never, false, never>;
963
963
  }
964
- export declare class TreeTableToggler {
964
+ export declare class TreeTableToggler extends BaseComponent {
965
965
  tt: TreeTable;
966
- private config;
967
966
  rowNode: any;
968
- constructor(tt: TreeTable, config: PrimeNGConfig);
967
+ constructor(tt: TreeTable);
969
968
  get toggleButtonAriaLabel(): string;
970
969
  onClick(event: Event): void;
971
970
  static ɵfac: i0.ɵɵFactoryDeclaration<TreeTableToggler, never>;
@@ -1,9 +0,0 @@
1
- import { PrimeNG } from './primeng';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated since v18.0.0. Use PrimeNG instead.
5
- */
6
- export declare class PrimeNGConfig extends PrimeNG {
7
- static ɵfac: i0.ɵɵFactoryDeclaration<PrimeNGConfig, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<PrimeNGConfig>;
9
- }
@@ -1,188 +0,0 @@
1
- import { Inject, inject, Injectable, Optional, PLATFORM_ID, signal } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { FilterMatchMode } from './filtermatchmode';
4
- import { PRIME_NG_CONFIG } from './provideprimengconfig';
5
- import { ThemeProvider } from './themeprovider';
6
- import * as i0 from "@angular/core";
7
- export class PrimeNG extends ThemeProvider {
8
- _config;
9
- ripple = signal(false);
10
- platformId = inject(PLATFORM_ID);
11
- inputStyle = signal('outlined');
12
- overlayOptions = {};
13
- csp = signal({ nonce: undefined });
14
- filterMatchModeOptions = {
15
- text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],
16
- numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],
17
- date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]
18
- };
19
- translation = {
20
- startsWith: 'Starts with',
21
- contains: 'Contains',
22
- notContains: 'Not contains',
23
- endsWith: 'Ends with',
24
- equals: 'Equals',
25
- notEquals: 'Not equals',
26
- noFilter: 'No Filter',
27
- lt: 'Less than',
28
- lte: 'Less than or equal to',
29
- gt: 'Greater than',
30
- gte: 'Greater than or equal to',
31
- is: 'Is',
32
- isNot: 'Is not',
33
- before: 'Before',
34
- after: 'After',
35
- dateIs: 'Date is',
36
- dateIsNot: 'Date is not',
37
- dateBefore: 'Date is before',
38
- dateAfter: 'Date is after',
39
- clear: 'Clear',
40
- apply: 'Apply',
41
- matchAll: 'Match All',
42
- matchAny: 'Match Any',
43
- addRule: 'Add Rule',
44
- removeRule: 'Remove Rule',
45
- accept: 'Yes',
46
- reject: 'No',
47
- choose: 'Choose',
48
- upload: 'Upload',
49
- cancel: 'Cancel',
50
- pending: 'Pending',
51
- fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
52
- dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
53
- dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
54
- dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
55
- monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
56
- monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
57
- chooseYear: 'Choose Year',
58
- chooseMonth: 'Choose Month',
59
- chooseDate: 'Choose Date',
60
- prevDecade: 'Previous Decade',
61
- nextDecade: 'Next Decade',
62
- prevYear: 'Previous Year',
63
- nextYear: 'Next Year',
64
- prevMonth: 'Previous Month',
65
- nextMonth: 'Next Month',
66
- prevHour: 'Previous Hour',
67
- nextHour: 'Next Hour',
68
- prevMinute: 'Previous Minute',
69
- nextMinute: 'Next Minute',
70
- prevSecond: 'Previous Second',
71
- nextSecond: 'Next Second',
72
- am: 'am',
73
- pm: 'pm',
74
- dateFormat: 'mm/dd/yy',
75
- firstDayOfWeek: 0,
76
- today: 'Today',
77
- weekHeader: 'Wk',
78
- weak: 'Weak',
79
- medium: 'Medium',
80
- strong: 'Strong',
81
- passwordPrompt: 'Enter a password',
82
- emptyMessage: 'No results found',
83
- searchMessage: 'Search results are available',
84
- selectionMessage: 'Items selected',
85
- emptySelectionMessage: 'No selected item',
86
- emptySearchMessage: 'No results found',
87
- emptyFilterMessage: 'No results found',
88
- fileChosenMessage: 'Files',
89
- noFileChosenMessage: 'No file chosen',
90
- aria: {
91
- trueLabel: 'True',
92
- falseLabel: 'False',
93
- nullLabel: 'Not Selected',
94
- star: '1 star',
95
- stars: '{star} stars',
96
- selectAll: 'All items selected',
97
- unselectAll: 'All items unselected',
98
- close: 'Close',
99
- previous: 'Previous',
100
- next: 'Next',
101
- navigation: 'Navigation',
102
- scrollTop: 'Scroll Top',
103
- moveTop: 'Move Top',
104
- moveUp: 'Move Up',
105
- moveDown: 'Move Down',
106
- moveBottom: 'Move Bottom',
107
- moveToTarget: 'Move to Target',
108
- moveToSource: 'Move to Source',
109
- moveAllToTarget: 'Move All to Target',
110
- moveAllToSource: 'Move All to Source',
111
- pageLabel: '{page}',
112
- firstPageLabel: 'First Page',
113
- lastPageLabel: 'Last Page',
114
- nextPageLabel: 'Next Page',
115
- prevPageLabel: 'Previous Page',
116
- rowsPerPageLabel: 'Rows per page',
117
- previousPageLabel: 'Previous Page',
118
- jumpToPageDropdownLabel: 'Jump to Page Dropdown',
119
- jumpToPageInputLabel: 'Jump to Page Input',
120
- selectRow: 'Row Selected',
121
- unselectRow: 'Row Unselected',
122
- expandRow: 'Row Expanded',
123
- collapseRow: 'Row Collapsed',
124
- showFilterMenu: 'Show Filter Menu',
125
- hideFilterMenu: 'Hide Filter Menu',
126
- filterOperator: 'Filter Operator',
127
- filterConstraint: 'Filter Constraint',
128
- editRow: 'Row Edit',
129
- saveEdit: 'Save Edit',
130
- cancelEdit: 'Cancel Edit',
131
- listView: 'List View',
132
- gridView: 'Grid View',
133
- slide: 'Slide',
134
- slideNumber: '{slideNumber}',
135
- zoomImage: 'Zoom Image',
136
- zoomIn: 'Zoom In',
137
- zoomOut: 'Zoom Out',
138
- rotateRight: 'Rotate Right',
139
- rotateLeft: 'Rotate Left',
140
- listLabel: 'Option List',
141
- selectColor: 'Select a color',
142
- removeLabel: 'Remove',
143
- browseFiles: 'Browse Files',
144
- maximizeLabel: 'Maximize'
145
- }
146
- };
147
- zIndex = {
148
- modal: 1100,
149
- overlay: 1000,
150
- menu: 1000,
151
- tooltip: 1100
152
- };
153
- translationSource = new Subject();
154
- translationObserver = this.translationSource.asObservable();
155
- constructor(_config) {
156
- super(_config);
157
- this._config = _config;
158
- this.setConfig(_config);
159
- }
160
- getTranslation(key) {
161
- return this.translation[key];
162
- }
163
- setTranslation(value) {
164
- this.translation = { ...this.translation, ...value };
165
- this.translationSource.next(this.translation);
166
- }
167
- setConfig(config) {
168
- const { csp, ripple, inputStyle } = config || {};
169
- if (csp)
170
- this.csp.set(csp);
171
- if (ripple)
172
- this.ripple.set(ripple);
173
- if (inputStyle)
174
- this.inputStyle.set(inputStyle);
175
- }
176
- static ɵfac = function PrimeNG_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrimeNG)(i0.ɵɵinject(PRIME_NG_CONFIG, 8)); };
177
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrimeNG, factory: PrimeNG.ɵfac, providedIn: 'root' });
178
- }
179
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrimeNG, [{
180
- type: Injectable,
181
- args: [{ providedIn: 'root' }]
182
- }], () => [{ type: undefined, decorators: [{
183
- type: Inject,
184
- args: [PRIME_NG_CONFIG]
185
- }, {
186
- type: Optional
187
- }] }], null); })();
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcHJpbWVuZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBWWhELE1BQU0sT0FBTyxPQUFRLFNBQVEsYUFBYTtJQTZKa0I7SUE1SnhELE1BQU0sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFekIsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU3QyxVQUFVLEdBQUcsTUFBTSxDQUF3QixVQUFVLENBQUMsQ0FBQztJQUV2RCxjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUVwQyxHQUFHLEdBQUcsTUFBTSxDQUFnQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLHNCQUFzQixHQUFHO1FBQ3JCLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDO1FBQzFLLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxlQUFlLENBQUMs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NUQsWUFBd0QsT0FBMEI7UUFDOUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRHFDLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBRTlFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFvQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFrQjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUF5QjtRQUN2QyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksVUFBVTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7aUdBaExRLE9BQU8sY0E2SkksZUFBZTtnRUE3SjFCLE9BQU8sV0FBUCxPQUFPLG1CQURNLE1BQU07O2lGQUNuQixPQUFPO2NBRG5CLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQThKakIsTUFBTTt1QkFBQyxlQUFlOztzQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXJNYXRjaE1vZGUgfSBmcm9tICcuL2ZpbHRlcm1hdGNobW9kZSc7XG5pbXBvcnQgeyBPdmVybGF5T3B0aW9ucyB9IGZyb20gJy4vb3ZlcmxheW9wdGlvbnMnO1xuaW1wb3J0IHsgUFJJTUVfTkdfQ09ORklHLCBQcmltZU5HQ29uZmlnVHlwZSB9IGZyb20gJy4vcHJvdmlkZXByaW1lbmdjb25maWcnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gJy4vdGhlbWVwcm92aWRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsYXRpb24nO1xuXG4vLyBUeXBlIGZvciB6SW5kZXhcbmV4cG9ydCB0eXBlIFpJbmRleCA9IHtcbiAgICBtb2RhbDogbnVtYmVyO1xuICAgIG92ZXJsYXk6IG51bWJlcjtcbiAgICBtZW51OiBudW1iZXI7XG4gICAgdG9vbHRpcDogbnVtYmVyO1xufTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcmltZU5HIGV4dGVuZHMgVGhlbWVQcm92aWRlciB7XG4gICAgcmlwcGxlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHB1YmxpYyBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgaW5wdXRTdHlsZSA9IHNpZ25hbDwnb3V0bGluZWQnIHwgJ2ZpbGxlZCc+KCdvdXRsaW5lZCcpO1xuXG4gICAgb3ZlcmxheU9wdGlvbnM6IE92ZXJsYXlPcHRpb25zID0ge307XG5cbiAgICBjc3AgPSBzaWduYWw8eyBub25jZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0+KHsgbm9uY2U6IHVuZGVmaW5lZCB9KTtcblxuICAgIGZpbHRlck1hdGNoTW9kZU9wdGlvbnMgPSB7XG4gICAgICAgIHRleHQ6IFtGaWx0ZXJNYXRjaE1vZGUuU1RBUlRTX1dJVEgsIEZpbHRlck1hdGNoTW9kZS5DT05UQUlOUywgRmlsdGVyTWF0Y2hNb2RlLk5PVF9DT05UQUlOUywgRmlsdGVyTWF0Y2hNb2RlLkVORFNfV0lUSCwgRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUywgRmlsdGVyTWF0Y2hNb2RlLk5PVF9FUVVBTFNdLFxuICAgICAgICBudW1lcmljOiBbRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUywgRmlsdGVyTWF0Y2hNb2RlLk5PVF9FUVVBTFMsIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU4sIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU5fT1JfRVFVQUxfVE8sIEZpbHRlck1hdGNoTW9kZS5HUkVBVEVSX1RIQU4sIEZpbHRlck1hdGNoTW9kZS5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9dLFxuICAgICAgICBkYXRlOiBbRmlsdGVyTWF0Y2hNb2RlLkRBVEVfSVMsIEZpbHRlck1hdGNoTW9kZS5EQVRFX0lTX05PVCwgRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQkVGT1JFLCBGaWx0ZXJNYXRjaE1vZGUuREFURV9BRlRFUl1cbiAgICB9O1xuXG4gICAgcHVibGljIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbiA9IHtcbiAgICAgICAgc3RhcnRzV2l0aDogJ1N0YXJ0cyB3aXRoJyxcbiAgICAgICAgY29udGFpbnM6ICdDb250YWlucycsXG4gICAgICAgIG5vdENvbnRhaW5zOiAnTm90IGNvbnRhaW5zJyxcbiAgICAgICAgZW5kc1dpdGg6ICdFbmRzIHdpdGgnLFxuICAgICAgICBlcXVhbHM6ICdFcXVhbHMnLFxuICAgICAgICBub3RFcXVhbHM6ICdOb3QgZXF1YWxzJyxcbiAgICAgICAgbm9GaWx0ZXI6ICdObyBGaWx0ZXInLFxuICAgICAgICBsdDogJ0xlc3MgdGhhbicsXG4gICAgICAgIGx0ZTogJ0xlc3MgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgICAgIGd0OiAnR3JlYXRlciB0aGFuJyxcbiAgICAgICAgZ3RlOiAnR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICAgaXM6ICdJcycsXG4gICAgICAgIGlzTm90OiAnSXMgbm90JyxcbiAgICAgICAgYmVmb3JlOiAnQmVmb3JlJyxcbiAgICAgICAgYWZ0ZXI6ICdBZnRlcicsXG4gICAgICAgIGRhdGVJczogJ0RhdGUgaXMnLFxuICAgICAgICBkYXRlSXNOb3Q6ICdEYXRlIGlzIG5vdCcsXG4gICAgICAgIGRhdGVCZWZvcmU6ICdEYXRlIGlzIGJlZm9yZScsXG4gICAgICAgIGRhdGVBZnRlcjogJ0RhdGUgaXMgYWZ0ZXInLFxuICAgICAgICBjbGVhcjogJ0NsZWFyJyxcbiAgICAgICAgYXBwbHk6ICdBcHBseScsXG4gICAgICAgIG1hdGNoQWxsOiAnTWF0Y2ggQWxsJyxcbiAgICAgICAgbWF0Y2hBbnk6ICdNYXRjaCBBbnknLFxuICAgICAgICBhZGRSdWxlOiAnQWRkIFJ1bGUnLFxuICAgICAgICByZW1vdmVSdWxlOiAnUmVtb3ZlIFJ1bGUnLFxuICAgICAgICBhY2NlcHQ6ICdZZXMnLFxuICAgICAgICByZWplY3Q6ICdObycsXG4gICAgICAgIGNob29zZTogJ0Nob29zZScsXG4gICAgICAgIHVwbG9hZDogJ1VwbG9hZCcsXG4gICAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgICAgIHBlbmRpbmc6ICdQZW5kaW5nJyxcbiAgICAgICAgZmlsZVNpemVUeXBlczogWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ10sXG4gICAgICAgIGRheU5hbWVzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sXG4gICAgICAgIGRheU5hbWVzU2hvcnQ6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgICAgIGRheU5hbWVzTWluOiBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ10sXG4gICAgICAgIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgICAgICBtb250aE5hbWVzU2hvcnQ6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgY2hvb3NlWWVhcjogJ0Nob29zZSBZZWFyJyxcbiAgICAgICAgY2hvb3NlTW9udGg6ICdDaG9vc2UgTW9udGgnLFxuICAgICAgICBjaG9vc2VEYXRlOiAnQ2hvb3NlIERhdGUnLFxuICAgICAgICBwcmV2RGVjYWRlOiAnUHJldmlvdXMgRGVjYWRlJyxcbiAgICAgICAgbmV4dERlY2FkZTogJ05leHQgRGVjYWRlJyxcbiAgICAgICAgcHJldlllYXI6ICdQcmV2aW91cyBZZWFyJyxcbiAgICAgICAgbmV4dFllYXI6ICdOZXh0IFllYXInLFxuICAgICAgICBwcmV2TW9udGg6ICdQcmV2aW91cyBNb250aCcsXG4gICAgICAgIG5leHRNb250aDogJ05leHQgTW9udGgnLFxuICAgICAgICBwcmV2SG91cjogJ1ByZXZpb3VzIEhvdXInLFxuICAgICAgICBuZXh0SG91cjogJ05leHQgSG91cicsXG4gICAgICAgIHByZXZNaW51dGU6ICdQcmV2aW91cyBNaW51dGUnLFxuICAgICAgICBuZXh0TWludXRlOiAnTmV4dCBNaW51dGUnLFxuICAgICAgICBwcmV2U2Vjb25kOiAnUHJldmlvdXMgU2Vjb25kJyxcbiAgICAgICAgbmV4dFNlY29uZDogJ05leHQgU2Vjb25kJyxcbiAgICAgICAgYW06ICdhbScsXG4gICAgICAgIHBtOiAncG0nLFxuICAgICAgICBkYXRlRm9ybWF0OiAnbW0vZGQveXknLFxuICAgICAgICBmaXJzdERheU9mV2VlazogMCxcbiAgICAgICAgdG9kYXk6ICdUb2RheScsXG4gICAgICAgIHdlZWtIZWFkZXI6ICdXaycsXG4gICAgICAgIHdlYWs6ICdXZWFrJyxcbiAgICAgICAgbWVkaXVtOiAnTWVkaXVtJyxcbiAgICAgICAgc3Ryb25nOiAnU3Ryb25nJyxcbiAgICAgICAgcGFzc3dvcmRQcm9tcHQ6ICdFbnRlciBhIHBhc3N3b3JkJyxcbiAgICAgICAgZW1wdHlNZXNzYWdlOiAnTm8gcmVzdWx0cyBmb3VuZCcsXG4gICAgICAgIHNlYXJjaE1lc3NhZ2U6ICdTZWFyY2ggcmVzdWx0cyBhcmUgYXZhaWxhYmxlJyxcbiAgICAgICAgc2VsZWN0aW9uTWVzc2FnZTogJ0l0ZW1zIHNlbGVjdGVkJyxcbiAgICAgICAgZW1wdHlTZWxlY3Rpb25NZXNzYWdlOiAnTm8gc2VsZWN0ZWQgaXRlbScsXG4gICAgICAgIGVtcHR5U2VhcmNoTWVzc2FnZTogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICAgICAgZmlsZUNob3Nlbk1lc3NhZ2U6ICdGaWxlcycsXG4gICAgICAgIG5vRmlsZUNob3Nlbk1lc3NhZ2U6ICdObyBmaWxlIGNob3NlbicsXG4gICAgICAgIGFyaWE6IHtcbiAgICAgICAgICAgIHRydWVMYWJlbDogJ1RydWUnLFxuICAgICAgICAgICAgZmFsc2VMYWJlbDogJ0ZhbHNlJyxcbiAgICAgICAgICAgIG51bGxMYWJlbDogJ05vdCBTZWxlY3RlZCcsXG4gICAgICAgICAgICBzdGFyOiAnMSBzdGFyJyxcbiAgICAgICAgICAgIHN0YXJzOiAne3N0YXJ9IHN0YXJzJyxcbiAgICAgICAgICAgIHNlbGVjdEFsbDogJ0FsbCBpdGVtcyBzZWxlY3RlZCcsXG4gICAgICAgICAgICB1bnNlbGVjdEFsbDogJ0FsbCBpdGVtcyB1bnNlbGVjdGVkJyxcbiAgICAgICAgICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgICAgICAgICAgcHJldmlvdXM6ICdQcmV2aW91cycsXG4gICAgICAgICAgICBuZXh0OiAnTmV4dCcsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uOiAnTmF2aWdhdGlvbicsXG4gICAgICAgICAgICBzY3JvbGxUb3A6ICdTY3JvbGwgVG9wJyxcbiAgICAgICAgICAgIG1vdmVUb3A6ICdNb3ZlIFRvcCcsXG4gICAgICAgICAgICBtb3ZlVXA6ICdNb3ZlIFVwJyxcbiAgICAgICAgICAgIG1vdmVEb3duOiAnTW92ZSBEb3duJyxcbiAgICAgICAgICAgIG1vdmVCb3R0b206ICdNb3ZlIEJvdHRvbScsXG4gICAgICAgICAgICBtb3ZlVG9UYXJnZXQ6ICdNb3ZlIHRvIFRhcmdldCcsXG4gICAgICAgICAgICBtb3ZlVG9Tb3VyY2U6ICdNb3ZlIHRvIFNvdXJjZScsXG4gICAgICAgICAgICBtb3ZlQWxsVG9UYXJnZXQ6ICdNb3ZlIEFsbCB0byBUYXJnZXQnLFxuICAgICAgICAgICAgbW92ZUFsbFRvU291cmNlOiAnTW92ZSBBbGwgdG8gU291cmNlJyxcbiAgICAgICAgICAgIHBhZ2VMYWJlbDogJ3twYWdlfScsXG4gICAgICAgICAgICBmaXJzdFBhZ2VMYWJlbDogJ0ZpcnN0IFBhZ2UnLFxuICAgICAgICAgICAgbGFzdFBhZ2VMYWJlbDogJ0xhc3QgUGFnZScsXG4gICAgICAgICAgICBuZXh0UGFnZUxhYmVsOiAnTmV4dCBQYWdlJyxcbiAgICAgICAgICAgIHByZXZQYWdlTGFiZWw6ICdQcmV2aW91cyBQYWdlJyxcbiAgICAgICAgICAgIHJvd3NQZXJQYWdlTGFiZWw6ICdSb3dzIHBlciBwYWdlJyxcbiAgICAgICAgICAgIHByZXZpb3VzUGFnZUxhYmVsOiAnUHJldmlvdXMgUGFnZScsXG4gICAgICAgICAgICBqdW1wVG9QYWdlRHJvcGRvd25MYWJlbDogJ0p1bXAgdG8gUGFnZSBEcm9wZG93bicsXG4gICAgICAgICAgICBqdW1wVG9QYWdlSW5wdXRMYWJlbDogJ0p1bXAgdG8gUGFnZSBJbnB1dCcsXG4gICAgICAgICAgICBzZWxlY3RSb3c6ICdSb3cgU2VsZWN0ZWQnLFxuICAgICAgICAgICAgdW5zZWxlY3RSb3c6ICdSb3cgVW5zZWxlY3RlZCcsXG4gICAgICAgICAgICBleHBhbmRSb3c6ICdSb3cgRXhwYW5kZWQnLFxuICAgICAgICAgICAgY29sbGFwc2VSb3c6ICdSb3cgQ29sbGFwc2VkJyxcbiAgICAgICAgICAgIHNob3dGaWx0ZXJNZW51OiAnU2hvdyBGaWx0ZXIgTWVudScsXG4gICAgICAgICAgICBoaWRlRmlsdGVyTWVudTogJ0hpZGUgRmlsdGVyIE1lbnUnLFxuICAgICAgICAgICAgZmlsdGVyT3BlcmF0b3I6ICdGaWx0ZXIgT3BlcmF0b3InLFxuICAgICAgICAgICAgZmlsdGVyQ29uc3RyYWludDogJ0ZpbHRlciBDb25zdHJhaW50JyxcbiAgICAgICAgICAgIGVkaXRSb3c6ICdSb3cgRWRpdCcsXG4gICAgICAgICAgICBzYXZlRWRpdDogJ1NhdmUgRWRpdCcsXG4gICAgICAgICAgICBjYW5jZWxFZGl0OiAnQ2FuY2VsIEVkaXQnLFxuICAgICAgICAgICAgbGlzdFZpZXc6ICdMaXN0IFZpZXcnLFxuICAgICAgICAgICAgZ3JpZFZpZXc6ICdHcmlkIFZpZXcnLFxuICAgICAgICAgICAgc2xpZGU6ICdTbGlkZScsXG4gICAgICAgICAgICBzbGlkZU51bWJlcjogJ3tzbGlkZU51bWJlcn0nLFxuICAgICAgICAgICAgem9vbUltYWdlOiAnWm9vbSBJbWFnZScsXG4gICAgICAgICAgICB6b29tSW46ICdab29tIEluJyxcbiAgICAgICAgICAgIHpvb21PdXQ6ICdab29tIE91dCcsXG4gICAgICAgICAgICByb3RhdGVSaWdodDogJ1JvdGF0ZSBSaWdodCcsXG4gICAgICAgICAgICByb3RhdGVMZWZ0OiAnUm90YXRlIExlZnQnLFxuICAgICAgICAgICAgbGlzdExhYmVsOiAnT3B0aW9uIExpc3QnLFxuICAgICAgICAgICAgc2VsZWN0Q29sb3I6ICdTZWxlY3QgYSBjb2xvcicsXG4gICAgICAgICAgICByZW1vdmVMYWJlbDogJ1JlbW92ZScsXG4gICAgICAgICAgICBicm93c2VGaWxlczogJ0Jyb3dzZSBGaWxlcycsXG4gICAgICAgICAgICBtYXhpbWl6ZUxhYmVsOiAnTWF4aW1pemUnXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgekluZGV4OiBaSW5kZXggPSB7XG4gICAgICAgIG1vZGFsOiAxMTAwLFxuICAgICAgICBvdmVybGF5OiAxMDAwLFxuICAgICAgICBtZW51OiAxMDAwLFxuICAgICAgICB0b29sdGlwOiAxMTAwXG4gICAgfTtcblxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25Tb3VyY2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICB0cmFuc2xhdGlvbk9ic2VydmVyID0gdGhpcy50cmFuc2xhdGlvblNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUFJJTUVfTkdfQ09ORklHKSBAT3B0aW9uYWwoKSBwdWJsaWMgX2NvbmZpZzogUHJpbWVOR0NvbmZpZ1R5cGUpIHtcbiAgICAgICAgc3VwZXIoX2NvbmZpZyk7XG4gICAgICAgIHRoaXMuc2V0Q29uZmlnKF9jb25maWcpO1xuICAgIH1cblxuICAgIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25ba2V5IGFzIGtleW9mIHR5cGVvZiB0aGlzLnRyYW5zbGF0aW9uXTtcbiAgICB9XG5cbiAgICBzZXRUcmFuc2xhdGlvbih2YWx1ZTogVHJhbnNsYXRpb24pIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHsgLi4udGhpcy50cmFuc2xhdGlvbiwgLi4udmFsdWUgfTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblNvdXJjZS5uZXh0KHRoaXMudHJhbnNsYXRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29uZmlnKGNvbmZpZzogUHJpbWVOR0NvbmZpZ1R5cGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBjc3AsIHJpcHBsZSwgaW5wdXRTdHlsZSB9ID0gY29uZmlnIHx8IHt9O1xuICAgICAgICBpZiAoY3NwKSB0aGlzLmNzcC5zZXQoY3NwKTtcbiAgICAgICAgaWYgKHJpcHBsZSkgdGhpcy5yaXBwbGUuc2V0KHJpcHBsZSk7XG4gICAgICAgIGlmIChpbnB1dFN0eWxlKSB0aGlzLmlucHV0U3R5bGUuc2V0KGlucHV0U3R5bGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { PrimeNG } from './primeng';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * @deprecated since v18.0.0. Use PrimeNG instead.
6
- */
7
- export class PrimeNGConfig extends PrimeNG {
8
- static ɵfac = /*@__PURE__*/ (() => { let ɵPrimeNGConfig_BaseFactory; return function PrimeNGConfig_Factory(__ngFactoryType__) { return (ɵPrimeNGConfig_BaseFactory || (ɵPrimeNGConfig_BaseFactory = i0.ɵɵgetInheritedFactory(PrimeNGConfig)))(__ngFactoryType__ || PrimeNGConfig); }; })();
9
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrimeNGConfig, factory: PrimeNGConfig.ɵfac, providedIn: 'root' });
10
- }
11
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrimeNGConfig, [{
12
- type: Injectable,
13
- args: [{ providedIn: 'root' }]
14
- }], null, null); })();
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZ2NvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcHJpbWVuZ2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRXBDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxPQUFPO2lPQUE3QixhQUFhLHlCQUFiLGFBQWE7Z0VBQWIsYUFBYSxXQUFiLGFBQWEsbUJBREEsTUFBTTs7aUZBQ25CLGFBQWE7Y0FEekIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaW1lTkcgfSBmcm9tICcuL3ByaW1lbmcnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHNpbmNlIHYxOC4wLjAuIFVzZSBQcmltZU5HIGluc3RlYWQuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJpbWVOR0NvbmZpZyBleHRlbmRzIFByaW1lTkcge31cbiJdfQ==
@@ -1,11 +0,0 @@
1
- import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
2
- export const PRIME_NG_CONFIG = new InjectionToken('PRIME_NG_CONFIG');
3
- export function providePrimeNgConfig(...features) {
4
- const providers = features.map((feature) => ({
5
- provide: PRIME_NG_CONFIG,
6
- useValue: feature,
7
- multi: false
8
- }));
9
- return makeEnvironmentProviders(providers);
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXByaW1lbmdjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3Byb3ZpZGVwcmltZW5nY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9GLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBb0IsaUJBQWlCLENBQUMsQ0FBQztBQUV4RixNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBRyxRQUE2QjtJQUNqRSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLEtBQUssRUFBRSxLQUFLO0tBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgSW5qZWN0aW9uVG9rZW4sIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBUaGVtZVR5cGUgPSB7IHByZXNldDogYW55OyBvcHRpb25zOiBhbnkgfSB8ICdub25lJyB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgUHJpbWVOR0NvbmZpZ1R5cGUgPSB7IHRoZW1lPzogVGhlbWVUeXBlOyByaXBwbGU/OiBib29sZWFuOyBpbnB1dFN0eWxlPzogJ291dGxpbmVkJyB8ICdmaWxsZWQnOyBjc3A/OiB7IG5vbmNlOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB9O1xuXG5leHBvcnQgY29uc3QgUFJJTUVfTkdfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFByaW1lTkdDb25maWdUeXBlPignUFJJTUVfTkdfQ09ORklHJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUHJpbWVOZ0NvbmZpZyguLi5mZWF0dXJlczogUHJpbWVOR0NvbmZpZ1R5cGVbXSk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgICBjb25zdCBwcm92aWRlcnMgPSBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+ICh7XG4gICAgICAgIHByb3ZpZGU6IFBSSU1FX05HX0NPTkZJRyxcbiAgICAgICAgdXNlVmFsdWU6IGZlYXR1cmUsXG4gICAgICAgIG11bHRpOiBmYWxzZVxuICAgIH0pKTtcblxuICAgIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cbiJdfQ==
@@ -1,73 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { effect, inject, Inject, Injectable, Optional, signal, untracked } from '@angular/core';
3
- import { Theme, ThemeService } from '@primeuix/styled';
4
- import { BaseStyle } from 'primeng/base';
5
- import { PRIME_NG_CONFIG } from './provideprimengconfig';
6
- import * as i0 from "@angular/core";
7
- export class ThemeProvider {
8
- config;
9
- // @todo define type for theme
10
- theme = signal(undefined);
11
- isThemeChanged = false;
12
- document = inject(DOCUMENT);
13
- baseStyle = inject(BaseStyle);
14
- constructor(config) {
15
- this.config = config;
16
- if (this.config?.theme) {
17
- this.theme.set(this.config.theme);
18
- }
19
- effect(() => {
20
- ThemeService.on('theme:change', (newTheme) => {
21
- untracked(() => {
22
- this.isThemeChanged = true;
23
- this.theme.set(newTheme);
24
- // this.onThemeChange(this.theme());
25
- });
26
- });
27
- }, { allowSignalWrites: true });
28
- effect(() => {
29
- const themeValue = this.theme();
30
- if (this.document && themeValue) {
31
- if (!this.isThemeChanged) {
32
- this.onThemeChange(themeValue);
33
- }
34
- this.isThemeChanged = false;
35
- }
36
- });
37
- }
38
- ngOnDestroy() {
39
- Theme.clearLoadedStyleNames();
40
- ThemeService.clear();
41
- }
42
- onThemeChange(value) {
43
- Theme.setTheme(value);
44
- if (this.document) {
45
- this.loadCommonTheme();
46
- }
47
- }
48
- loadCommonTheme() {
49
- if (this.theme() === 'none')
50
- return;
51
- // common
52
- if (!Theme.isStyleNameLoaded('common')) {
53
- const { primitive, semantic } = this.baseStyle.getCommonTheme?.() || {};
54
- const styleOptions = { nonce: undefined };
55
- this.baseStyle.load(primitive?.css, { name: 'primitive-variables', ...styleOptions });
56
- this.baseStyle.load(semantic?.css, { name: 'semantic-variables', ...styleOptions });
57
- this.baseStyle.loadTheme({ name: 'global-style', ...styleOptions });
58
- Theme.setLoadedStyleName('common');
59
- }
60
- }
61
- static ɵfac = function ThemeProvider_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ThemeProvider)(i0.ɵɵinject(PRIME_NG_CONFIG, 8)); };
62
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ThemeProvider, factory: ThemeProvider.ɵfac, providedIn: 'root' });
63
- }
64
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ThemeProvider, [{
65
- type: Injectable,
66
- args: [{ providedIn: 'root' }]
67
- }], () => [{ type: undefined, decorators: [{
68
- type: Inject,
69
- args: [PRIME_NG_CONFIG]
70
- }, {
71
- type: Optional
72
- }] }], null); })();
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWVwcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdGhlbWVwcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQzs7QUFHNUUsTUFBTSxPQUFPLGFBQWE7SUFVbUM7SUFUekQsOEJBQThCO0lBQzlCLEtBQUssR0FBRyxNQUFNLENBQU0sU0FBUyxDQUFDLENBQUM7SUFFL0IsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV6QixRQUFRLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdDLFNBQVMsR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFekMsWUFBeUQsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDOUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE1BQU0sQ0FDRixHQUFHLEVBQUU7WUFDRCxZQUFZLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDekIsb0NBQW9DO2dCQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzlCLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUNoQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlCLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDcEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssTUFBTTtZQUFFLE9BQU87UUFFcEMsU0FBUztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDeEUsTUFBTSxZQUFZLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUVwRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7dUdBL0RRLGFBQWEsY0FVRixlQUFlO2dFQVYxQixhQUFhLFdBQWIsYUFBYSxtQkFEQSxNQUFNOztpRkFDbkIsYUFBYTtjQUR6QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztzQkFXakIsTUFBTTt1QkFBQyxlQUFlOztzQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZWZmZWN0LCBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZSwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHByaW1ldWl4L3N0eWxlZCc7XG5pbXBvcnQgeyBCYXNlU3R5bGUgfSBmcm9tICdwcmltZW5nL2Jhc2UnO1xuaW1wb3J0IHsgUFJJTUVfTkdfQ09ORklHLCBQcmltZU5HQ29uZmlnVHlwZSB9IGZyb20gJy4vcHJvdmlkZXByaW1lbmdjb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1lUHJvdmlkZXIge1xuICAgIC8vIEB0b2RvIGRlZmluZSB0eXBlIGZvciB0aGVtZVxuICAgIHRoZW1lID0gc2lnbmFsPGFueT4odW5kZWZpbmVkKTtcblxuICAgIGlzVGhlbWVDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIGJhc2VTdHlsZTogQmFzZVN0eWxlID0gaW5qZWN0KEJhc2VTdHlsZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBSSU1FX05HX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWc6IFByaW1lTkdDb25maWdUeXBlKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8udGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUuc2V0KHRoaXMuY29uZmlnLnRoZW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBUaGVtZVNlcnZpY2Uub24oJ3RoZW1lOmNoYW5nZScsIChuZXdUaGVtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1RoZW1lQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZW1lLnNldChuZXdUaGVtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLm9uVGhlbWVDaGFuZ2UodGhpcy50aGVtZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aGVtZVZhbHVlID0gdGhpcy50aGVtZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnQgJiYgdGhlbWVWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RoZW1lQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGhlbWVDaGFuZ2UodGhlbWVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuaXNUaGVtZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIFRoZW1lLmNsZWFyTG9hZGVkU3R5bGVOYW1lcygpO1xuICAgICAgICBUaGVtZVNlcnZpY2UuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBvblRoZW1lQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgVGhlbWUuc2V0VGhlbWUodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ29tbW9uVGhlbWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRDb21tb25UaGVtZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGhlbWUoKSA9PT0gJ25vbmUnKSByZXR1cm47XG5cbiAgICAgICAgLy8gY29tbW9uXG4gICAgICAgIGlmICghVGhlbWUuaXNTdHlsZU5hbWVMb2FkZWQoJ2NvbW1vbicpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHByaW1pdGl2ZSwgc2VtYW50aWMgfSA9IHRoaXMuYmFzZVN0eWxlLmdldENvbW1vblRoZW1lPy4oKSB8fCB7fTtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlT3B0aW9ucyA9IHsgbm9uY2U6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZChwcmltaXRpdmU/LmNzcywgeyBuYW1lOiAncHJpbWl0aXZlLXZhcmlhYmxlcycsIC4uLnN0eWxlT3B0aW9ucyB9KTtcbiAgICAgICAgICAgIHRoaXMuYmFzZVN0eWxlLmxvYWQoc2VtYW50aWM/LmNzcywgeyBuYW1lOiAnc2VtYW50aWMtdmFyaWFibGVzJywgLi4uc3R5bGVPcHRpb25zIH0pO1xuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZFRoZW1lKHsgbmFtZTogJ2dsb2JhbC1zdHlsZScsIC4uLnN0eWxlT3B0aW9ucyB9KTtcblxuICAgICAgICAgICAgVGhlbWUuc2V0TG9hZGVkU3R5bGVOYW1lKCdjb21tb24nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==