@sankhyalabs/sankhyablocks 8.2.0-dev.5 → 8.2.0-dev.7

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 (151) hide show
  1. package/dist/cjs/{ConfigStorage-12397f18.js → ConfigStorage-349cf0fd.js} +2 -2
  2. package/dist/cjs/{DataFetcher-f2da1f79.js → DataFetcher-7ba52c1d.js} +12 -206
  3. package/dist/cjs/PrintUtils-bcaeb82f.js +215 -0
  4. package/dist/cjs/{SnkFormConfigManager-13f79e37.js → SnkFormConfigManager-9083c12f.js} +2 -2
  5. package/dist/cjs/{auth-fetcher-319a4cb2.js → auth-fetcher-718ca8b4.js} +1 -1
  6. package/dist/cjs/{dataunit-fetcher-e72068c1.js → dataunit-fetcher-076fcbf7.js} +1 -1
  7. package/dist/cjs/{form-config-fetcher-5d62ab62.js → form-config-fetcher-c7ec4ff9.js} +1 -1
  8. package/dist/cjs/index-f9e81701.js +4 -0
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/{pesquisa-fetcher-8c363096.js → pesquisa-fetcher-a9c5a2f5.js} +1 -1
  11. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  12. package/dist/cjs/snk-actions-button.cjs.entry.js +4 -3
  13. package/dist/cjs/snk-application.cjs.entry.js +17 -6
  14. package/dist/cjs/snk-attach.cjs.entry.js +4 -3
  15. package/dist/cjs/snk-crud.cjs.entry.js +8 -6
  16. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -1
  17. package/dist/cjs/snk-detail-view.cjs.entry.js +10 -8
  18. package/dist/cjs/snk-filter-bar.cjs.entry.js +4 -3
  19. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +4 -3
  20. package/dist/cjs/snk-form-config.cjs.entry.js +3 -2
  21. package/dist/cjs/snk-form.cjs.entry.js +5 -4
  22. package/dist/cjs/snk-grid-config.cjs.entry.js +4 -3
  23. package/dist/cjs/snk-grid.cjs.entry.js +9 -5
  24. package/dist/cjs/{snk-guides-viewer-a7cd6fda.js → snk-guides-viewer-18e9666c.js} +8 -7
  25. package/dist/cjs/snk-guides-viewer.cjs.entry.js +8 -7
  26. package/dist/cjs/snk-personalized-filter.cjs.entry.js +4 -3
  27. package/dist/cjs/snk-print-selector.cjs.entry.js +2 -4
  28. package/dist/cjs/snk-simple-crud.cjs.entry.js +6 -5
  29. package/dist/cjs/snk-taskbar-custom-elements.cjs.entry.js +20 -0
  30. package/dist/cjs/snk-taskbar.cjs.entry.js +69 -4
  31. package/dist/cjs/{taskbar-elements-b98dd6e9.js → taskbar-elements-39949c7a.js} +4 -4
  32. package/dist/collection/collection-manifest.json +1 -0
  33. package/dist/collection/components/snk-application/snk-application.js +60 -0
  34. package/dist/collection/components/snk-crud/snk-crud.js +6 -4
  35. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +19 -1
  36. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +20 -2
  37. package/dist/collection/components/snk-grid/snk-grid.js +57 -1
  38. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +1 -1
  39. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +4 -4
  40. package/dist/collection/components/snk-taskbar/snk-taskbar-custom-elements.js +43 -0
  41. package/dist/collection/components/snk-taskbar/snk-taskbar.css +4 -0
  42. package/dist/collection/components/snk-taskbar/snk-taskbar.js +107 -4
  43. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +10 -4
  44. package/dist/collection/lib/utils/PrintUtils.js +18 -9
  45. package/dist/components/DataFetcher.js +13 -206
  46. package/dist/components/PrintUtils.js +213 -0
  47. package/dist/components/index.d.ts +1 -0
  48. package/dist/components/index.js +1 -0
  49. package/dist/components/snk-application2.js +11 -1
  50. package/dist/components/snk-crud.js +5 -3
  51. package/dist/components/snk-detail-view2.js +9 -5
  52. package/dist/components/snk-grid2.js +7 -1
  53. package/dist/components/snk-print-selector.js +1 -1
  54. package/dist/components/snk-simple-crud2.js +1 -1
  55. package/dist/components/snk-taskbar-custom-elements.d.ts +11 -0
  56. package/dist/components/snk-taskbar-custom-elements.js +35 -0
  57. package/dist/components/snk-taskbar2.js +78 -8
  58. package/dist/esm/{ConfigStorage-932ab366.js → ConfigStorage-8d420626.js} +2 -2
  59. package/dist/esm/{DataFetcher-7e18aa30.js → DataFetcher-e97b3942.js} +13 -206
  60. package/dist/esm/PrintUtils-3e4ff0f5.js +213 -0
  61. package/dist/esm/{SnkFormConfigManager-bb9afc3f.js → SnkFormConfigManager-4c6a5b41.js} +2 -2
  62. package/dist/esm/{auth-fetcher-6d9664b7.js → auth-fetcher-55e5cbce.js} +1 -1
  63. package/dist/esm/{dataunit-fetcher-91a4eb82.js → dataunit-fetcher-716a99ca.js} +1 -1
  64. package/dist/esm/{form-config-fetcher-aaaa79a6.js → form-config-fetcher-b69da2f1.js} +1 -1
  65. package/dist/esm/index-a7d3d3f1.js +4 -0
  66. package/dist/esm/loader.js +1 -1
  67. package/dist/esm/{pesquisa-fetcher-56b30fb4.js → pesquisa-fetcher-c9a53822.js} +1 -1
  68. package/dist/esm/sankhyablocks.js +1 -1
  69. package/dist/esm/snk-actions-button.entry.js +4 -3
  70. package/dist/esm/snk-application.entry.js +17 -6
  71. package/dist/esm/snk-attach.entry.js +4 -3
  72. package/dist/esm/snk-crud.entry.js +10 -8
  73. package/dist/esm/snk-data-exporter.entry.js +2 -1
  74. package/dist/esm/snk-detail-view.entry.js +10 -8
  75. package/dist/esm/snk-filter-bar.entry.js +4 -3
  76. package/dist/esm/snk-filter-modal-item.entry.js +4 -3
  77. package/dist/esm/snk-form-config.entry.js +3 -2
  78. package/dist/esm/snk-form.entry.js +5 -4
  79. package/dist/esm/snk-grid-config.entry.js +4 -3
  80. package/dist/esm/snk-grid.entry.js +9 -5
  81. package/dist/esm/{snk-guides-viewer-cc709b5f.js → snk-guides-viewer-2e97c0c3.js} +8 -7
  82. package/dist/esm/snk-guides-viewer.entry.js +8 -7
  83. package/dist/esm/snk-personalized-filter.entry.js +4 -3
  84. package/dist/esm/snk-print-selector.entry.js +1 -3
  85. package/dist/esm/snk-simple-crud.entry.js +6 -5
  86. package/dist/esm/snk-taskbar-custom-elements.entry.js +16 -0
  87. package/dist/esm/snk-taskbar.entry.js +69 -4
  88. package/dist/esm/{taskbar-elements-2c761819.js → taskbar-elements-0a6b8b95.js} +4 -4
  89. package/dist/sankhyablocks/p-0b19beb9.entry.js +1 -0
  90. package/dist/sankhyablocks/p-110136be.entry.js +1 -0
  91. package/dist/sankhyablocks/p-12e48665.entry.js +1 -0
  92. package/dist/sankhyablocks/p-236cd346.js +1 -0
  93. package/dist/sankhyablocks/p-34604220.entry.js +1 -0
  94. package/dist/sankhyablocks/{p-ed41b38c.js → p-41f81c72.js} +1 -1
  95. package/dist/sankhyablocks/p-4e701fa7.js +1 -0
  96. package/dist/sankhyablocks/{p-41e897f1.js → p-615874db.js} +1 -1
  97. package/dist/sankhyablocks/p-648a7c72.entry.js +1 -0
  98. package/dist/sankhyablocks/p-72fc257b.entry.js +1 -0
  99. package/dist/sankhyablocks/p-7453735e.entry.js +1 -0
  100. package/dist/sankhyablocks/p-776514a8.entry.js +11 -0
  101. package/dist/sankhyablocks/{p-a52a6c9d.js → p-81392ced.js} +1 -1
  102. package/dist/sankhyablocks/p-8d884fab.js +1 -0
  103. package/dist/sankhyablocks/p-a2854b5a.entry.js +1 -0
  104. package/dist/sankhyablocks/p-c149dca8.entry.js +1 -0
  105. package/dist/sankhyablocks/p-c303d74f.entry.js +1 -0
  106. package/dist/sankhyablocks/p-c51a4f28.entry.js +1 -0
  107. package/dist/sankhyablocks/{p-a2493d11.js → p-c9841939.js} +1 -1
  108. package/dist/sankhyablocks/p-ce6d7e3f.js +1 -0
  109. package/dist/sankhyablocks/p-cee68227.entry.js +1 -0
  110. package/dist/sankhyablocks/{p-2d333d22.js → p-e696a8f6.js} +1 -1
  111. package/dist/sankhyablocks/p-e6c00493.entry.js +1 -0
  112. package/dist/sankhyablocks/p-ecbb878e.entry.js +1 -0
  113. package/dist/sankhyablocks/{p-14eac6fe.js → p-f390386d.js} +1 -1
  114. package/dist/sankhyablocks/p-fbb4597a.entry.js +1 -0
  115. package/dist/sankhyablocks/p-ff2f2152.entry.js +1 -0
  116. package/dist/sankhyablocks/p-ff8778e6.entry.js +1 -0
  117. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  118. package/dist/types/components/snk-application/snk-application.d.ts +1 -9
  119. package/dist/types/components/snk-crud/snk-crud.d.ts +1 -0
  120. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +4 -0
  121. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +4 -0
  122. package/dist/types/components/snk-grid/snk-grid.d.ts +12 -0
  123. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +2 -2
  124. package/dist/types/components/snk-taskbar/snk-taskbar-custom-elements.d.ts +7 -0
  125. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +23 -0
  126. package/dist/types/components.d.ts +78 -1
  127. package/dist/types/lib/utils/PrintUtils.d.ts +1 -0
  128. package/package.json +1 -1
  129. package/react/components.d.ts +1 -0
  130. package/react/components.js +1 -0
  131. package/react/components.js.map +1 -1
  132. package/dist/sankhyablocks/p-01739b21.entry.js +0 -1
  133. package/dist/sankhyablocks/p-02b89228.entry.js +0 -1
  134. package/dist/sankhyablocks/p-03bb1aea.entry.js +0 -1
  135. package/dist/sankhyablocks/p-05dbc70e.entry.js +0 -1
  136. package/dist/sankhyablocks/p-611aa624.entry.js +0 -1
  137. package/dist/sankhyablocks/p-66bb8c20.entry.js +0 -1
  138. package/dist/sankhyablocks/p-6f154396.entry.js +0 -1
  139. package/dist/sankhyablocks/p-787071a8.js +0 -1
  140. package/dist/sankhyablocks/p-8818d8f6.entry.js +0 -1
  141. package/dist/sankhyablocks/p-93f6ca04.entry.js +0 -1
  142. package/dist/sankhyablocks/p-951e98c9.entry.js +0 -1
  143. package/dist/sankhyablocks/p-b6003974.entry.js +0 -1
  144. package/dist/sankhyablocks/p-cfb33a4a.entry.js +0 -1
  145. package/dist/sankhyablocks/p-d53a9169.entry.js +0 -1
  146. package/dist/sankhyablocks/p-d7638f45.entry.js +0 -11
  147. package/dist/sankhyablocks/p-e64f3e17.entry.js +0 -1
  148. package/dist/sankhyablocks/p-efc10705.entry.js +0 -1
  149. package/dist/sankhyablocks/p-f74fe358.js +0 -1
  150. package/dist/sankhyablocks/p-f8e6b97e.js +0 -1
  151. package/dist/sankhyablocks/p-fa523d6b.entry.js +0 -1
@@ -0,0 +1,213 @@
1
+ import { ApplicationContext, StringUtils } from '@sankhyalabs/core';
2
+
3
+ class PrintUtils {
4
+ constructor() {
5
+ this.appletImpressao = new AppletImpressao();
6
+ const application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
7
+ application.getDataFetcher().then(result => this.DataFetcher = result);
8
+ }
9
+ static getInstance() {
10
+ if (!PrintUtils.instance) {
11
+ PrintUtils.instance = new PrintUtils();
12
+ }
13
+ return PrintUtils.instance;
14
+ }
15
+ async processPendingPrinting(transactionId) {
16
+ await this.findPendingPrints(transactionId);
17
+ }
18
+ async findPendingPrints(transactionId) {
19
+ const requestBody = {
20
+ transactionIds: [
21
+ {
22
+ transactionId: {
23
+ $: transactionId
24
+ }
25
+ }
26
+ ]
27
+ };
28
+ Promise.resolve(this.DataFetcher).then(async (res) => {
29
+ res = await Promise.resolve(this.DataFetcher);
30
+ while (!res || !res.application) {
31
+ res = await Promise.resolve(this.DataFetcher);
32
+ }
33
+ const response = await res.application.callServiceBroker(PrintUtils.SERVICE_FIND_PENDING_PRINTS, JSON.stringify(requestBody));
34
+ const printJobData = this.parsePrintData(response);
35
+ const pendingPrints = await this.processDirectPrint(printJobData);
36
+ if (!pendingPrints.length)
37
+ return;
38
+ this.openSnkPrintSelector(Object.assign(Object.assign({}, printJobData), { pendingPrinters: pendingPrints }));
39
+ });
40
+ }
41
+ getLocalPrinters() {
42
+ const localPrinters = this.appletImpressao.findLocalPrinters();
43
+ const printers = [];
44
+ for (const printerName of localPrinters) {
45
+ printers.push({
46
+ nome: printerName,
47
+ printerUri: PrintUtils.LOCAL_SERVER_URI + printerName,
48
+ isLocal: true
49
+ });
50
+ }
51
+ return printers;
52
+ }
53
+ parsePrintData(payload) {
54
+ const pendingPrintJobData = payload.pendindPrintJobData;
55
+ if (!pendingPrintJobData)
56
+ return undefined;
57
+ let { printServers: { printServer }, pendingPrinters: { pendingPrinter } } = pendingPrintJobData;
58
+ printServer = printServer ? (Array.isArray(printServer) ? printServer : [printServer]) : [];
59
+ pendingPrinter = pendingPrinter ? (Array.isArray(pendingPrinter) ? pendingPrinter : [pendingPrinter]) : [];
60
+ const normalizedPrintServer = printServer.map(item => {
61
+ const printerList = Array.isArray(item.printerLocation) ? item.printerLocation : [item.printerLocation];
62
+ return {
63
+ printServerUri: item.printServerUri,
64
+ printerList: printerList.map(this.normalize)
65
+ };
66
+ });
67
+ const normalizedPendingPrinter = pendingPrinter.map(this.normalize);
68
+ return {
69
+ transactionId: pendingPrintJobData.transactionId.$,
70
+ printServers: normalizedPrintServer,
71
+ pendingPrinters: normalizedPendingPrinter,
72
+ printServerActive: pendingPrintJobData.printServers.printServerActive === 'true'
73
+ };
74
+ }
75
+ normalize(object) {
76
+ const normalizedObject = {};
77
+ Object.keys(object).forEach((key) => {
78
+ normalizedObject[key] = PrintUtils.ENCODED_PROPERTIES.includes(key) ? window.atob(object[key].$) : object[key].$;
79
+ });
80
+ return normalizedObject;
81
+ }
82
+ processLocalPrinting(localPrintings) {
83
+ const transactionIds = localPrintings.map((item) => item.transactionId);
84
+ this.appletImpressao.doLocalPrinting(transactionIds.join());
85
+ }
86
+ async openSnkPrintSelector(printJobData) {
87
+ let printSelector = document.querySelector('snk-print-selector');
88
+ if (!printSelector) {
89
+ printSelector = document.createElement('snk-print-selector');
90
+ printSelector.setAttribute('id', StringUtils.generateUUID());
91
+ window.document.body.appendChild(printSelector);
92
+ }
93
+ const { selectedPrinter, saveSubstitute } = await printSelector.openPrintSelector(printJobData);
94
+ if (!selectedPrinter)
95
+ return;
96
+ const params = {
97
+ transactionId: printJobData.transactionId,
98
+ pendingPrinters: printJobData.pendingPrinters,
99
+ printerUri: selectedPrinter.printerUri,
100
+ saveSubstitutePrinters: saveSubstitute
101
+ };
102
+ await this.saveSubstitutePrinter(params);
103
+ }
104
+ async saveSubstitutePrinter(params) {
105
+ const { transactionId, pendingPrinters, printerUri, saveSubstitutePrinters = false } = params;
106
+ const parsedPendingPrinters = pendingPrinters.map((item) => ({
107
+ printerUri: {
108
+ $: item.printerUri || printerUri
109
+ },
110
+ originalPrinterName: {
111
+ $: item.originalPrinterName
112
+ },
113
+ printJobCount: {
114
+ $: item.printJobCount
115
+ },
116
+ docType: {
117
+ $: item.docType
118
+ },
119
+ docTypeDescription: {
120
+ $: item.docTypeDescription
121
+ }
122
+ }));
123
+ const requestBody = {
124
+ substitutePrintersRequest: {
125
+ substitutePrinters: {
126
+ pendingPrinter: parsedPendingPrinters
127
+ },
128
+ saveSubstitutePrinters: {
129
+ $: saveSubstitutePrinters.toString()
130
+ },
131
+ transactionId: {
132
+ $: transactionId
133
+ }
134
+ }
135
+ };
136
+ Promise.resolve(this.DataFetcher).then(async (res) => {
137
+ await res.application.callServiceBroker(PrintUtils.SERVICE_SAVE_SUBSTITUTE_PRINTER, JSON.stringify(requestBody));
138
+ });
139
+ }
140
+ async processDirectPrint(printJobData) {
141
+ const isWCRunning = this.appletImpressao.checkWebConnection();
142
+ if (!isWCRunning) {
143
+ return [];
144
+ }
145
+ const localPrinters = this.getLocalPrinters();
146
+ if (!localPrinters.length)
147
+ return [];
148
+ const directPendingPrints = [];
149
+ const pendingPrints = printJobData.pendingPrinters.filter(item => {
150
+ const defaultPrinterName = this.getDefaultPrinterName(item.originalPrinterName);
151
+ const isDirectPrint = !!localPrinters.find(localPrinter => localPrinter.nome === defaultPrinterName) || this.isPrinterNameAFile(defaultPrinterName);
152
+ if (isDirectPrint) {
153
+ directPendingPrints.push(Object.assign(Object.assign({}, item), { printerUri: PrintUtils.LOCAL_SERVER_URI + defaultPrinterName }));
154
+ return false;
155
+ }
156
+ return true;
157
+ });
158
+ if (!directPendingPrints.length)
159
+ return pendingPrints;
160
+ const params = {
161
+ transactionId: printJobData.transactionId,
162
+ pendingPrinters: directPendingPrints
163
+ };
164
+ await this.saveSubstitutePrinter(params);
165
+ return pendingPrints;
166
+ }
167
+ getDefaultPrinterName(printerName) {
168
+ const defaultPrinterName = this.appletImpressao.getDefaultPrinter();
169
+ const isDefaultPrinterName = /padr[aã]o/ig.test(printerName);
170
+ return (defaultPrinterName && isDefaultPrinterName) ? defaultPrinterName : printerName;
171
+ }
172
+ isPrinterNameAFile(printerName) {
173
+ const regExp = new RegExp("^(\w:)?[/\\\w\s]+?\.\w{3}$", "mis");
174
+ return regExp.test(printerName);
175
+ }
176
+ }
177
+ PrintUtils.SERVICE_FIND_PENDING_PRINTS = 'mge@PrintServiceSP.findPendingPrinters';
178
+ PrintUtils.SERVICE_SAVE_SUBSTITUTE_PRINTER = 'mge@PrintServiceSP.saveSubstitutePrinter';
179
+ PrintUtils.LOCAL_SERVER_URI = 'LOCAL:0/';
180
+ PrintUtils.ENCODED_PROPERTIES = ['printerName', 'printerUri'];
181
+ class AppletImpressao {
182
+ constructor() {
183
+ this.appletImpressao = document.getElementById('centralNotaAppletImpressao');
184
+ }
185
+ checkWebConnection() {
186
+ if (!this.appletImpressao)
187
+ return false;
188
+ if (!this.appletImpressao.testRunningWC)
189
+ return false;
190
+ const isRunning = this.appletImpressao.testRunningWC();
191
+ return !!isRunning;
192
+ }
193
+ findLocalPrinters() {
194
+ if (!this.appletImpressao)
195
+ return [];
196
+ const localPrinters = this.appletImpressao.getLocalPrinters();
197
+ if (!localPrinters)
198
+ return [];
199
+ return localPrinters.split(",");
200
+ }
201
+ doLocalPrinting(transactionIds) {
202
+ if (!this.appletImpressao)
203
+ return;
204
+ this.appletImpressao.doLocalPrinting(transactionIds);
205
+ }
206
+ getDefaultPrinter() {
207
+ if (!this.appletImpressao)
208
+ return '';
209
+ return this.appletImpressao.getPrintDefault();
210
+ }
211
+ }
212
+
213
+ export { PrintUtils as P };
@@ -47,6 +47,7 @@ export { SnkSimpleBar as SnkSimpleBar } from '../types/components/snk-simple-bar
47
47
  export { SnkSimpleCrud as SnkSimpleCrud } from '../types/components/snk-simple-crud/snk-simple-crud';
48
48
  export { SnkTabConfig as SnkTabConfig } from '../types/components/snk-form/subcomponents/snk-tab-config/snk-tab-config';
49
49
  export { SnkTaskbar as SnkTaskbar } from '../types/components/snk-taskbar/snk-taskbar';
50
+ export { SnkTaskbarCustomElements as SnkTaskbarCustomElements } from '../types/components/snk-taskbar/snk-taskbar-custom-elements';
50
51
  export { TestePesquisa as TestePesquisa } from '../types/components/teste-pesquisa/teste-pesquisa';
51
52
 
52
53
  /**
@@ -47,4 +47,5 @@ export { SnkSimpleBar, defineCustomElement as defineCustomElementSnkSimpleBar }
47
47
  export { SnkSimpleCrud, defineCustomElement as defineCustomElementSnkSimpleCrud } from './snk-simple-crud.js';
48
48
  export { SnkTabConfig, defineCustomElement as defineCustomElementSnkTabConfig } from './snk-tab-config.js';
49
49
  export { SnkTaskbar, defineCustomElement as defineCustomElementSnkTaskbar } from './snk-taskbar.js';
50
+ export { SnkTaskbarCustomElements, defineCustomElement as defineCustomElementSnkTaskbarCustomElements } from './snk-taskbar-custom-elements.js';
50
51
  export { TestePesquisa, defineCustomElement as defineCustomElementTestePesquisa } from './teste-pesquisa.js';
@@ -296,6 +296,16 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
296
296
  });
297
297
  });
298
298
  }
299
+ /**
300
+ * Realiza a chamada ao Service Broker conforme o nome do serviço.
301
+ *
302
+ * @param serviceName - Nome do serviço
303
+ * @param payload - Dados que serão processados na ação
304
+ * @param options - Parâmetros de URL
305
+ */
306
+ async callServiceBroker(serviceName, payload, options) {
307
+ return DataFetcher.get().callServiceBroker(serviceName, payload, options);
308
+ }
299
309
  initOnboarding(onboardingKey) {
300
310
  OnboardingUtils.getInstance().init(onboardingKey, window.envContext);
301
311
  return Promise.resolve();
@@ -879,6 +889,7 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
879
889
  "messagesBuilder": [1040],
880
890
  "configName": [1, "config-name"],
881
891
  "isUserSup": [64],
892
+ "callServiceBroker": [64],
882
893
  "initOnboarding": [64],
883
894
  "hasAccess": [64],
884
895
  "getAllAccess": [64],
@@ -903,7 +914,6 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
903
914
  "addClientEvent": [64],
904
915
  "removeClientEvent": [64],
905
916
  "hasClientEvent": [64],
906
- "callServiceBroker": [64],
907
917
  "getResourceID": [64],
908
918
  "getUserID": [64],
909
919
  "alert": [64],
@@ -1,5 +1,5 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
- import { ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { StringUtils, ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
3
3
  import { T as TaskbarElement, d as defineCustomElement$2 } from './snk-taskbar2.js';
4
4
  import './DataFetcher.js';
5
5
  import './pesquisa-fetcher.js';
@@ -67,6 +67,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
67
67
  this.presentationMode = PresentationMode.PRIMARY;
68
68
  this.messagesBuilder = undefined;
69
69
  this.useEnterLikeTab = false;
70
+ this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
70
71
  }
71
72
  /**
72
73
  * Usado para alternar a visão entre GRID e FORM externamente.
@@ -208,7 +209,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
208
209
  return;
209
210
  }
210
211
  this._snkDataUnit.ignoreSaveMessage = this._currentViewMode === VIEW_MODE.GRID;
211
- return (h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID }, h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, resourceID: this._resourceID }, h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID }, h("div", { slot: "SnkConfigContainerSlot" }, h("slot", { name: "SnkConfigContainerSlot" })))));
212
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID }, h("div", { slot: "SnkConfigContainerSlot" }, h("slot", { name: "SnkConfigContainerSlot" })))), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
212
213
  }
213
214
  get _element() { return this; }
214
215
  static get watchers() { return {
@@ -233,6 +234,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
233
234
  "_currentViewMode": [32],
234
235
  "_canEdit": [32],
235
236
  "_resourceID": [32],
237
+ "customContainerId": [32],
236
238
  "goToView": [64],
237
239
  "openConfigurator": [64],
238
240
  "closeConfigurator": [64],
@@ -66,6 +66,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
66
66
  this.canEdit = true;
67
67
  this.presentationMode = undefined;
68
68
  this.resourceID = undefined;
69
+ this.detailTaskbarCustomContainerId = undefined;
69
70
  this._breadcrumbItems = [];
70
71
  this._guides = undefined;
71
72
  this._formEditorConfigManager = undefined;
@@ -267,7 +268,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
267
268
  else {
268
269
  detailBranch = this.selectedGuide;
269
270
  }
270
- content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID }));
271
+ content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId }));
271
272
  }
272
273
  else {
273
274
  const cardId = this.selectedGuide.id;
@@ -338,7 +339,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
338
339
  }
339
340
  buildTaskBar() {
340
341
  var _a;
341
- return h("div", { class: `ez-col ez-flex-item--align-center ez-col--sd-6 ez-col--tb-6 ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.actionsList, messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-taskbar-owner": "master", dataUnit: this.dataUnit, resourceID: this.resourceID }));
342
+ return h("div", { class: `ez-col ez-flex-item--align-center ez-col--sd-6 ez-col--tb-6 ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.actionsList, messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-taskbar-owner": "master", dataUnit: this.dataUnit, resourceID: this.resourceID, customSlotId: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" })));
342
343
  }
343
344
  render() {
344
345
  var _a, _b;
@@ -365,7 +366,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
365
366
  "masterFormConfig": ["observeMasterFormConfig"]
366
367
  }; }
367
368
  static get style() { return snkGuidesViewerCss; }
368
- }, [2, "snk-guides-viewer", {
369
+ }, [6, "snk-guides-viewer", {
369
370
  "dataUnit": [16],
370
371
  "dataState": [16],
371
372
  "configName": [1, "config-name"],
@@ -379,6 +380,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
379
380
  "canEdit": [4, "can-edit"],
380
381
  "presentationMode": [1, "presentation-mode"],
381
382
  "resourceID": [1, "resource-i-d"],
383
+ "detailTaskbarCustomContainerId": [1, "detail-taskbar-custom-container-id"],
382
384
  "_breadcrumbItems": [32],
383
385
  "_guides": [32],
384
386
  "_formEditorConfigManager": [32],
@@ -611,6 +613,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
611
613
  this.messagesBuilder = undefined;
612
614
  this.branchGuide = undefined;
613
615
  this.canEdit = true;
616
+ this.taskbarCustomContainerId = undefined;
614
617
  }
615
618
  observerDataState(newValue, oldValue) {
616
619
  const openInsertion = !(oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
@@ -780,13 +783,13 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
780
783
  render() {
781
784
  this.updateLabel();
782
785
  //const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
783
- return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-flex ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY, canEdit: this.canEdit, isDetail: true }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems) }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: PresentationMode.SECONDARY, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
786
+ return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-flex ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems) }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: PresentationMode.SECONDARY, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }, h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" })))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
784
787
  }
785
788
  static get watchers() { return {
786
789
  "dataState": ["observerDataState"]
787
790
  }; }
788
791
  static get style() { return snkDetailViewCss; }
789
- }, [2, "snk-detail-view", {
792
+ }, [6, "snk-detail-view", {
790
793
  "formConfigManager": [1040],
791
794
  "dataUnitName": [1, "data-unit-name"],
792
795
  "resourceID": [1, "resource-i-d"],
@@ -799,6 +802,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
799
802
  "messagesBuilder": [1040],
800
803
  "branchGuide": [16],
801
804
  "canEdit": [4, "can-edit"],
805
+ "taskbarCustomContainerId": [1, "taskbar-custom-container-id"],
802
806
  "_disabledButtons": [32],
803
807
  "_currentView": [32],
804
808
  "attachmentRegisterKey": [32],
@@ -62,6 +62,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
62
62
  this.useEnterLikeTab = false;
63
63
  this.recordsValidator = undefined;
64
64
  this.canEdit = true;
65
+ this.taskbarCustomContainerId = undefined;
66
+ this.gridHeaderCustomSlotId = 'GRID_HEADER_CUSTOM_ELEMENTS';
67
+ this.topTaskbarCustomSlotId = 'GRID_TASKBAR_CUSTOM_ELEMENTS';
65
68
  }
66
69
  /**
67
70
  * Exibe a janela de configurações da grade.
@@ -328,7 +331,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
328
331
  return undefined;
329
332
  }
330
333
  return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID }), ((_b = (_a = this._snkFilterBar) === null || _a === void 0 ? void 0 : _a.filterConfig) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
331
- h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID })), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList, resourceID: this.resourceID })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
334
+ h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, onComponentReady: () => this.onEzGridReady(), columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit }, h("snk-taskbar", { dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), application: this._application, selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
332
335
  }
333
336
  get _element() { return this; }
334
337
  static get style() { return snkGridCss; }
@@ -347,6 +350,9 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
347
350
  "useEnterLikeTab": [4, "use-enter-like-tab"],
348
351
  "recordsValidator": [16],
349
352
  "canEdit": [4, "can-edit"],
353
+ "taskbarCustomContainerId": [1, "taskbar-custom-container-id"],
354
+ "gridHeaderCustomSlotId": [1, "grid-header-custom-slot-id"],
355
+ "topTaskbarCustomSlotId": [1, "top-taskbar-custom-slot-id"],
350
356
  "_dataUnit": [32],
351
357
  "_dataState": [32],
352
358
  "_gridConfig": [32],
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
- import { P as PrintUtils } from './DataFetcher.js';
2
+ import { P as PrintUtils } from './PrintUtils.js';
3
3
  import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
4
4
  import { ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
5
5
  import ModalButtonStatus from '@sankhyalabs/ezui/dist/collection/components/ez-modal-container/modal-button-status';
@@ -277,7 +277,7 @@ const SnkSimpleCrud = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
277
277
  }
278
278
  render() {
279
279
  var _a;
280
- return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
280
+ return (h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-flex ez-box ez-box--shadow" }, h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }, h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })), h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), columnfilterDataSource: this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
281
281
  ? undefined
282
282
  : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab }, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
283
283
  }
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SnkTaskbarCustomElements extends Components.SnkTaskbarCustomElements, HTMLElement {}
4
+ export const SnkTaskbarCustomElements: {
5
+ prototype: SnkTaskbarCustomElements;
6
+ new (): SnkTaskbarCustomElements;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,35 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const snkTaskbarCss = ".sc-snk-taskbar-custom-elements-h{display:flex}.taskbar-custom-elements-container.sc-snk-taskbar-custom-elements{display:none}";
4
+
5
+ const SnkTaskbarCustomElements$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.__registerHost();
9
+ this.slot = 'TASKBAR_CUSTOM_ELEMENTS';
10
+ }
11
+ render() {
12
+ return (h(Host, { slot: this.slot }, h("div", { id: this.slot, class: "taskbar-custom-elements-container" }, h("slot", null))));
13
+ }
14
+ static get style() { return snkTaskbarCss; }
15
+ }, [6, "snk-taskbar-custom-elements", {
16
+ "slot": [1]
17
+ }]);
18
+ function defineCustomElement$1() {
19
+ if (typeof customElements === "undefined") {
20
+ return;
21
+ }
22
+ const components = ["snk-taskbar-custom-elements"];
23
+ components.forEach(tagName => { switch (tagName) {
24
+ case "snk-taskbar-custom-elements":
25
+ if (!customElements.get(tagName)) {
26
+ customElements.define(tagName, SnkTaskbarCustomElements$1);
27
+ }
28
+ break;
29
+ } });
30
+ }
31
+
32
+ const SnkTaskbarCustomElements = SnkTaskbarCustomElements$1;
33
+ const defineCustomElement = defineCustomElement$1;
34
+
35
+ export { SnkTaskbarCustomElements, defineCustomElement };