@sankhyalabs/sankhyablocks 2.4.8 → 2.4.10

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 (95) hide show
  1. package/dist/cjs/{SnkMessageBuilder-61f00e7f.js → SnkMessageBuilder-370e23ae.js} +24 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  4. package/dist/cjs/snk-application.cjs.entry.js +1 -1
  5. package/dist/cjs/snk-configurator_3.cjs.entry.js +44 -6
  6. package/dist/cjs/snk-crud.cjs.entry.js +6 -2
  7. package/dist/cjs/snk-data-unit.cjs.entry.js +1 -1
  8. package/dist/cjs/{snk-filter-bar_7.cjs.entry.js → snk-exporter-email-sender_8.cjs.entry.js} +133 -15
  9. package/dist/cjs/snk-filter-detail.cjs.entry.js +8 -1
  10. package/dist/cjs/snk-form.cjs.entry.js +1 -1
  11. package/dist/cjs/{taskbar-elements-b995b84d.js → taskbar-elements-3807c809.js} +3 -0
  12. package/dist/cjs/{taskbar-processor-6bd0d35c.js → taskbar-processor-6f3d2a75.js} +9 -7
  13. package/dist/collection/collection-manifest.json +1 -0
  14. package/dist/collection/components/snk-crud/snk-crud.js +23 -1
  15. package/dist/collection/components/snk-data-exporter/data/attachment.js +1 -0
  16. package/dist/collection/components/snk-data-exporter/data/email.js +1 -0
  17. package/dist/collection/components/snk-data-exporter/data/export-config.js +1 -0
  18. package/dist/collection/components/snk-data-exporter/data/export-result.js +1 -0
  19. package/dist/collection/components/snk-data-exporter/data/report.js +1 -0
  20. package/dist/collection/components/snk-data-exporter/exporter-email-sender/email-info-step.js +6 -0
  21. package/dist/collection/components/snk-data-exporter/exporter-email-sender/options-step.js +21 -0
  22. package/dist/collection/components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender.js +146 -0
  23. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +8 -1
  24. package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +8 -6
  25. package/dist/collection/components/snk-grid/snk-grid.js +71 -6
  26. package/dist/collection/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.js +25 -8
  27. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +3 -0
  28. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +9 -7
  29. package/dist/collection/components/snk-taskbar/snk-taskbar.js +2 -1
  30. package/dist/collection/lib/message/SnkMessageBuilder.js +3 -1
  31. package/dist/collection/lib/message/resources/snk-exporter.msg.js +21 -0
  32. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +1 -0
  33. package/dist/components/SnkMessageBuilder.js +24 -1
  34. package/dist/components/index.d.ts +1 -0
  35. package/dist/components/index.js +1 -0
  36. package/dist/components/snk-crud.js +16 -5
  37. package/dist/components/snk-exporter-email-sender.d.ts +11 -0
  38. package/dist/components/snk-exporter-email-sender.js +6 -0
  39. package/dist/components/snk-exporter-email-sender2.js +141 -0
  40. package/dist/components/snk-filter-detail2.js +8 -1
  41. package/dist/components/snk-filter-list2.js +8 -6
  42. package/dist/components/snk-grid-config2.js +6 -8
  43. package/dist/components/snk-grid2.js +53 -9
  44. package/dist/components/snk-taskbar2.js +5 -1
  45. package/dist/components/taskbar-processor.js +9 -7
  46. package/dist/esm/{SnkMessageBuilder-f5ef87df.js → SnkMessageBuilder-7d583c9a.js} +24 -1
  47. package/dist/esm/loader.js +1 -1
  48. package/dist/esm/sankhyablocks.js +1 -1
  49. package/dist/esm/snk-application.entry.js +1 -1
  50. package/dist/esm/snk-configurator_3.entry.js +44 -6
  51. package/dist/esm/snk-crud.entry.js +6 -2
  52. package/dist/esm/snk-data-unit.entry.js +1 -1
  53. package/dist/esm/{snk-filter-bar_7.entry.js → snk-exporter-email-sender_8.entry.js} +135 -18
  54. package/dist/esm/snk-filter-detail.entry.js +8 -1
  55. package/dist/esm/snk-form.entry.js +1 -1
  56. package/dist/esm/{taskbar-elements-a0a8c3ac.js → taskbar-elements-b2bbe275.js} +3 -0
  57. package/dist/esm/{taskbar-processor-aa6772c9.js → taskbar-processor-c2a99aba.js} +9 -7
  58. package/dist/sankhyablocks/{p-a72a0a5d.entry.js → p-1b7f87cf.entry.js} +1 -1
  59. package/dist/sankhyablocks/p-2445b586.entry.js +1 -0
  60. package/dist/sankhyablocks/{p-cd486089.entry.js → p-2664ae24.entry.js} +1 -1
  61. package/dist/sankhyablocks/p-5a3e0eb6.js +1 -0
  62. package/dist/sankhyablocks/{p-eb94df0b.entry.js → p-70e52fee.entry.js} +1 -1
  63. package/dist/sankhyablocks/p-c118ef2a.entry.js +1 -0
  64. package/dist/sankhyablocks/p-dbaad88c.js +1 -0
  65. package/dist/sankhyablocks/p-df53643b.entry.js +1 -0
  66. package/dist/sankhyablocks/p-e7f772ed.js +1 -0
  67. package/dist/sankhyablocks/{p-71997e4c.entry.js → p-fb96840c.entry.js} +1 -1
  68. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  69. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  70. package/dist/types/components/snk-data-exporter/data/attachment.d.ts +4 -0
  71. package/dist/types/components/snk-data-exporter/data/email.d.ts +7 -0
  72. package/dist/types/components/snk-data-exporter/data/export-config.d.ts +9 -0
  73. package/dist/types/components/snk-data-exporter/data/export-result.d.ts +8 -0
  74. package/dist/types/components/snk-data-exporter/data/report.d.ts +4 -0
  75. package/dist/types/components/snk-data-exporter/exporter-email-sender/email-info-step.d.ts +9 -0
  76. package/dist/types/components/snk-data-exporter/exporter-email-sender/options-step.d.ts +9 -0
  77. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +1 -0
  78. package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +1 -0
  79. package/dist/types/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.d.ts +6 -3
  80. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +2 -1
  81. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -1
  82. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +1 -0
  83. package/dist/types/components.d.ts +43 -0
  84. package/dist/types/lib/message/resources/snk-exporter.msg.d.ts +2 -0
  85. package/package.json +1 -1
  86. package/react/components.d.ts +1 -0
  87. package/react/components.js +1 -0
  88. package/react/components.js.map +1 -1
  89. package/dist/sankhyablocks/p-03f0a380.entry.js +0 -1
  90. package/dist/sankhyablocks/p-03f9c407.js +0 -1
  91. package/dist/sankhyablocks/p-4cbc4ae3.js +0 -1
  92. package/dist/sankhyablocks/p-877bd6cf.js +0 -1
  93. package/dist/sankhyablocks/p-e6e0efe7.entry.js +0 -1
  94. package/dist/sankhyablocks/p-f1de5d1f.entry.js +0 -1
  95. package/dist/types/components/snk-grid/snk-grid.d.ts +0 -70
@@ -69,6 +69,7 @@ const snkTaskbarMessages = {
69
69
  titleGridMode: "Modo Grade",
70
70
  titleFormMode: "Modo Formulário",
71
71
  titleConfigurator: "Configurações",
72
+ titleExportar: "Exportar",
72
73
  forbidden: "Permissão não liberada"
73
74
  };
74
75
 
@@ -76,6 +77,27 @@ const crudUtilsMessages = {
76
77
  errorArray: "CrudUtils.find deve receber um array de fields, ou uma lista separada por virgula.",
77
78
  };
78
79
 
80
+ const snkExporterMessages = {
81
+ emailSenderTitle: "Enviar por email",
82
+ emailSenderBackButton: "Voltar",
83
+ emailSenderNextButton: "Avançar",
84
+ emailSenderCancelButton: "Cancelar",
85
+ emailSenderSendButton: "Enviar",
86
+ emailSenderOptStep_subtitle: "Primeiro, escolha o formato do arquivo",
87
+ emailSenderOptStep_lblFormat: "Formato:",
88
+ emailSenderOptStep_formatPDF: "PDF (.pdf)",
89
+ emailSenderOptStep_formatXLSX: "Planilha (.xlsx)",
90
+ emailSenderOptStep_export: "Exportar:",
91
+ emailSenderOptStep_allData: "Toda a grade",
92
+ emailSenderOptStep_currentPage: "Somente a página atual",
93
+ emailSenderOptStep_someRecords: "{{SELECTION_COUNT}} linhas selecionadas",
94
+ emailSenderOptStep_oneRecord: "Somente a linha selecionada",
95
+ emailSenderInfoStep_subtitle: "Informações de email",
96
+ emailSenderInfoStep_sendTo: "Enviar para",
97
+ emailSenderInfoStep_subject: "Assunto",
98
+ emailSenderInfoStep_message: "Mensagem"
99
+ };
100
+
79
101
  const snkFormMessages = {
80
102
  title: {
81
103
  clone: "Duplicar registro",
@@ -197,7 +219,8 @@ class SnkMessageBuilder {
197
219
  snkTabConfig: snkTabConfigMessages,
198
220
  crudUtils: crudUtilsMessages,
199
221
  snkGrid: snkGridMessages,
200
- snkGridConfig: snkGridConfigMessages
222
+ snkGridConfig: snkGridConfigMessages,
223
+ snkExporter: snkExporterMessages
201
224
  };
202
225
  this._currentOperation = OperationMap.CLEAN;
203
226
  this.loadAppMessages().then((msgs) => {
@@ -4,6 +4,7 @@ export { SnkConfigOptions as SnkConfigOptions } from '../types/components/snk-fo
4
4
  export { SnkConfigurator as SnkConfigurator } from '../types/components/snk-configurator/snk-configurator';
5
5
  export { SnkCrud as SnkCrud } from '../types/components/snk-crud/snk-crud';
6
6
  export { SnkDataUnit as SnkDataUnit } from '../types/components/snk-data-unit/snk-data-unit';
7
+ export { SnkExporterEmailSender as SnkExporterEmailSender } from '../types/components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender';
7
8
  export { SnkFieldConfig as SnkFieldConfig } from '../types/components/snk-form/subcomponents/snk-field-config/snk-field-config';
8
9
  export { SnkFilterBar as SnkFilterBar } from '../types/components/snk-filter-bar/snk-filter-bar';
9
10
  export { SnkFilterBinarySelect as SnkFilterBinarySelect } from '../types/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select';
@@ -4,6 +4,7 @@ export { SnkConfigOptions, defineCustomElement as defineCustomElementSnkConfigOp
4
4
  export { SnkConfigurator, defineCustomElement as defineCustomElementSnkConfigurator } from './snk-configurator.js';
5
5
  export { SnkCrud, defineCustomElement as defineCustomElementSnkCrud } from './snk-crud.js';
6
6
  export { SnkDataUnit, defineCustomElement as defineCustomElementSnkDataUnit } from './snk-data-unit.js';
7
+ export { SnkExporterEmailSender, defineCustomElement as defineCustomElementSnkExporterEmailSender } from './snk-exporter-email-sender.js';
7
8
  export { SnkFieldConfig, defineCustomElement as defineCustomElementSnkFieldConfig } from './snk-field-config.js';
8
9
  export { SnkFilterBar, defineCustomElement as defineCustomElementSnkFilterBar } from './snk-filter-bar.js';
9
10
  export { SnkFilterBinarySelect, defineCustomElement as defineCustomElementSnkFilterBinarySelect } from './snk-filter-binary-select.js';
@@ -2,8 +2,9 @@ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/i
2
2
  import { ApplicationContext, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { V as VIEW_MODE } from './constants.js';
4
4
  import { T as TaskbarElement, d as defineCustomElement$2 } from './snk-taskbar2.js';
5
- import { d as defineCustomElement$g } from './snk-config-options2.js';
6
- import { d as defineCustomElement$f } from './snk-configurator2.js';
5
+ import { d as defineCustomElement$h } from './snk-config-options2.js';
6
+ import { d as defineCustomElement$g } from './snk-configurator2.js';
7
+ import { d as defineCustomElement$f } from './snk-exporter-email-sender2.js';
7
8
  import { d as defineCustomElement$e } from './snk-field-config2.js';
8
9
  import { d as defineCustomElement$d } from './snk-filter-bar2.js';
9
10
  import { d as defineCustomElement$c } from './snk-filter-detail2.js';
@@ -31,6 +32,10 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
31
32
  * Determina se pode haver mais de uma linha selecionada na grade.
32
33
  */
33
34
  this.multipleSelection = true;
35
+ /**
36
+ * Determina se haverá exportação de dados
37
+ */
38
+ this.enableDataExporter = false;
34
39
  }
35
40
  /**
36
41
  * Usado para alternar a visão entre GRID e FORM externamente.
@@ -109,7 +114,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
109
114
  ElementIDUtils.addIDInfo(this._element, null, dataInfo);
110
115
  }
111
116
  render() {
112
- 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), actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection }, h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-form", { ref: (ref) => this._snkForm = ref, "data-element-id": "crud_form", configName: this.configName, actionsList: this.actionsList, onExit: () => this.setViewMode(GRID_MODE), recordsValidator: this.recordsValidator, taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail) }, h("slot", { name: "SnkFormTaskBar" }))), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._viewMode, onConfigSelected: (evt) => this.executeAction(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail) })));
117
+ 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), actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, enableDataExporter: this.enableDataExporter }, h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-form", { ref: (ref) => this._snkForm = ref, "data-element-id": "crud_form", configName: this.configName, actionsList: this.actionsList, onExit: () => this.setViewMode(GRID_MODE), recordsValidator: this.recordsValidator, taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail) }, h("slot", { name: "SnkFormTaskBar" }))), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._viewMode, onConfigSelected: (evt) => this.executeAction(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail) })));
113
118
  }
114
119
  get _element() { return this; }
115
120
  static get style() { return snkCrudCss; }
@@ -120,6 +125,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
120
125
  "recordsValidator": [16],
121
126
  "statusResolver": [16],
122
127
  "multipleSelection": [4, "multiple-selection"],
128
+ "enableDataExporter": [4, "enable-data-exporter"],
123
129
  "_dataUnit": [32],
124
130
  "_dataState": [32],
125
131
  "_viewMode": [32],
@@ -129,7 +135,7 @@ function defineCustomElement$1() {
129
135
  if (typeof customElements === "undefined") {
130
136
  return;
131
137
  }
132
- const components = ["snk-crud", "snk-config-options", "snk-configurator", "snk-field-config", "snk-filter-bar", "snk-filter-detail", "snk-filter-item", "snk-filter-list", "snk-filter-modal", "snk-form", "snk-form-config", "snk-grid", "snk-grid-config", "snk-select-box", "snk-tab-config", "snk-taskbar"];
138
+ const components = ["snk-crud", "snk-config-options", "snk-configurator", "snk-exporter-email-sender", "snk-field-config", "snk-filter-bar", "snk-filter-detail", "snk-filter-item", "snk-filter-list", "snk-filter-modal", "snk-form", "snk-form-config", "snk-grid", "snk-grid-config", "snk-select-box", "snk-tab-config", "snk-taskbar"];
133
139
  components.forEach(tagName => { switch (tagName) {
134
140
  case "snk-crud":
135
141
  if (!customElements.get(tagName)) {
@@ -138,10 +144,15 @@ function defineCustomElement$1() {
138
144
  break;
139
145
  case "snk-config-options":
140
146
  if (!customElements.get(tagName)) {
141
- defineCustomElement$g();
147
+ defineCustomElement$h();
142
148
  }
143
149
  break;
144
150
  case "snk-configurator":
151
+ if (!customElements.get(tagName)) {
152
+ defineCustomElement$g();
153
+ }
154
+ break;
155
+ case "snk-exporter-email-sender":
145
156
  if (!customElements.get(tagName)) {
146
157
  defineCustomElement$f();
147
158
  }
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SnkExporterEmailSender extends Components.SnkExporterEmailSender, HTMLElement {}
4
+ export const SnkExporterEmailSender: {
5
+ prototype: SnkExporterEmailSender;
6
+ new (): SnkExporterEmailSender;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { S as SnkExporterEmailSender$1, d as defineCustomElement$1 } from './snk-exporter-email-sender2.js';
2
+
3
+ const SnkExporterEmailSender = SnkExporterEmailSender$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { SnkExporterEmailSender, defineCustomElement };
@@ -0,0 +1,141 @@
1
+ import { h, proxyCustomElement, HTMLElement } from '@stencil/core/internal/client';
2
+ import { ElementIDUtils } from '@sankhyalabs/core';
3
+
4
+ const EmailInfoStep = ({ getMessage, changeInfo, data }) => {
5
+ return h("div", null,
6
+ h("ez-text-input", Object.assign({ label: `${getMessage("snkExporter.emailSenderInfoStep_sendTo")} (obrigatório) *`, required: true, value: data === null || data === void 0 ? void 0 : data.to, onEzChange: evt => changeInfo("to", evt.detail) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("sendTo")}` })),
7
+ h("ez-text-input", Object.assign({ label: `${getMessage("snkExporter.emailSenderInfoStep_subject")} (obrigatório) *`, required: true, value: data === null || data === void 0 ? void 0 : data.subject, onEzChange: evt => changeInfo("subject", evt.detail) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("subject")}` })),
8
+ h("ez-text-area", Object.assign({ label: getMessage("snkExporter.emailSenderInfoStep_message"), value: data === null || data === void 0 ? void 0 : data.message, onEzChange: evt => changeInfo("message", evt.detail) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("message")}` })),
9
+ ((data === null || data === void 0 ? void 0 : data.attachments) || [])
10
+ .map((file, index) => h("ez-file-item", Object.assign({ class: "ez-padding-bottom--large", fileName: file.name, fileSize: file.size, canRemove: false }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("fileItem_") + (index + 1)}` }))));
11
+ };
12
+
13
+ const OptionsStep = ({ getMessage, changeInfo, data }) => {
14
+ const selectionCount = (data === null || data === void 0 ? void 0 : data.selectedRows) || 0;
15
+ const formatOptions = [
16
+ { label: getMessage("snkExporter.emailSenderOptStep_formatPDF"), value: "pdf" },
17
+ { label: getMessage("snkExporter.emailSenderOptStep_formatXLSX"), value: "xlsx" }
18
+ ];
19
+ const typeOptions = [
20
+ { label: getMessage("snkExporter.emailSenderOptStep_allData"), value: "all" },
21
+ { label: getMessage("snkExporter.emailSenderOptStep_currentPage"), value: "page" },
22
+ ];
23
+ if (selectionCount > 0) {
24
+ const label = getMessage(selectionCount > 1 ? "snkExporter.emailSenderOptStep_someRecords" : "snkExporter.emailSenderOptStep_oneRecord", { SELECTION_COUNT: selectionCount });
25
+ typeOptions.push({
26
+ label,
27
+ value: "selection"
28
+ });
29
+ }
30
+ return h("div", null,
31
+ h("ez-radio-button", Object.assign({ class: "ez-margin-bottom--large" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("formato")}` }, { label: getMessage("snkExporter.emailSenderOptStep_lblFormat"), direction: "horizontal", value: (data === null || data === void 0 ? void 0 : data.format) || "pdf", onEzChange: evt => changeInfo("format", evt.detail), options: formatOptions })),
32
+ h("ez-radio-button", Object.assign({ class: "ez-margin-bottom--large" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("type")}` }, { label: getMessage("snkExporter.emailSenderOptStep_export"), value: (data === null || data === void 0 ? void 0 : data.type) || "all", onEzChange: evt => changeInfo("type", evt.detail), options: typeOptions })));
33
+ };
34
+
35
+ const SnkExporterEmailSender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
36
+ constructor() {
37
+ super();
38
+ this.__registerHost();
39
+ this._stepInfo = [
40
+ {
41
+ subTitle: "snkExporter.emailSenderOptStep_subtitle",
42
+ firstButton: "snkExporter.emailSenderCancelButton",
43
+ secondButton: "snkExporter.emailSenderNextButton",
44
+ firstButtonAction: () => this.close(),
45
+ secondButtonAction: () => this.changeStep(1)
46
+ },
47
+ {
48
+ subTitle: "snkExporter.emailSenderInfoStep_subtitle",
49
+ firstButton: "snkExporter.emailSenderBackButton",
50
+ secondButton: "snkExporter.emailSenderSendButton",
51
+ firstButtonAction: () => this.changeStep(0),
52
+ secondButtonAction: () => this.send(),
53
+ secondButtonEnabledTester: () => this.isFilled(),
54
+ secondButtonClass: "ez-button--primary"
55
+ }
56
+ ];
57
+ this._opened = false;
58
+ this._currentStep = 0;
59
+ }
60
+ open(config) {
61
+ this._config = config;
62
+ this._opened = true;
63
+ this.changeStep(0);
64
+ return new Promise(accept => {
65
+ this._promiseResolver = accept;
66
+ });
67
+ }
68
+ getStepMessage(key) {
69
+ const stepInfo = this._stepInfo[this._currentStep] || {};
70
+ return this.getMessage(stepInfo[key]);
71
+ }
72
+ executeButtonAction(first) {
73
+ const stepInfo = this._stepInfo[this._currentStep] || {};
74
+ stepInfo[first ? "firstButtonAction" : "secondButtonAction"]();
75
+ }
76
+ checkButtonEnabled(first) {
77
+ const stepInfo = this._stepInfo[this._currentStep] || {};
78
+ const testFunction = stepInfo[first ? "firstButtonEnabledTester" : "secondButtonEnabledTester"];
79
+ if (testFunction) {
80
+ return testFunction();
81
+ }
82
+ return true;
83
+ }
84
+ changeStep(index) {
85
+ this._currentStep = index;
86
+ if (this._viewStack) {
87
+ this._viewStack.show(this._currentStep);
88
+ }
89
+ }
90
+ send() {
91
+ const { format, type, email } = this._config;
92
+ this._promiseResolver({ format, type, email, report: undefined });
93
+ }
94
+ close() {
95
+ this._opened = false;
96
+ }
97
+ isFilled() {
98
+ var _a, _b;
99
+ return ((_a = this._config.email) === null || _a === void 0 ? void 0 : _a.to) && ((_b = this._config.email) === null || _b === void 0 ? void 0 : _b.subject) ? true : false;
100
+ }
101
+ updateEmailInfo(field, value) {
102
+ this._config = Object.assign(Object.assign({}, this._config), { email: Object.assign(Object.assign({}, this._config.email), { [field]: value }) });
103
+ }
104
+ updateConfigInfo(field, value) {
105
+ this._config = Object.assign(Object.assign({}, this._config), { [field]: value });
106
+ }
107
+ getSecondButtonClass() {
108
+ const stepInfo = this._stepInfo[this._currentStep] || {};
109
+ return stepInfo["secondButtonClass"] || "ez-button--secondary";
110
+ }
111
+ render() {
112
+ var _a;
113
+ ElementIDUtils.addIDInfoIfNotExists(this._element, 'snkExporterEmailSender');
114
+ return (h("ez-popup", { useHeader: false, size: "x-small", heightMode: "auto", opened: this._opened }, h("ez-modal-container", { onEzModalAction: evt => {
115
+ if (evt.detail === "CLOSE")
116
+ this.close();
117
+ }, modalTitle: this.getMessage("snkExporter.emailSenderTitle"), modalSubTitle: this.getStepMessage("subTitle") }, h("ez-view-stack", { ref: ref => this._viewStack = ref }, h("stack-item", null, h(OptionsStep, { getMessage: this.getMessage, data: this._config, changeInfo: (field, value) => this.updateConfigInfo(field, value) })), h("stack-item", null, h(EmailInfoStep, { getMessage: this.getMessage, data: (_a = this._config) === null || _a === void 0 ? void 0 : _a.email, changeInfo: (field, value) => this.updateEmailInfo(field, value) }))), h("div", { class: "ez-col ez-col--sd-12 ez-flex--justify-end ez-margin-vertical--small" }, h("ez-button", Object.assign({ class: "ez-button--tertiary ez-padding-right--medium", label: this.getStepMessage("firstButton"), onClick: () => this.executeButtonAction(true), enabled: this.checkButtonEnabled(true) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("firstButton")}` })), h("ez-button", Object.assign({ class: this.getSecondButtonClass(), label: this.getStepMessage("secondButton"), onClick: () => this.executeButtonAction(false), enabled: this.checkButtonEnabled(false) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("secondButton")}` }))))));
118
+ }
119
+ get _element() { return this; }
120
+ }, [0, "snk-exporter-email-sender", {
121
+ "getMessage": [16],
122
+ "_config": [32],
123
+ "_opened": [32],
124
+ "_currentStep": [32],
125
+ "open": [64]
126
+ }]);
127
+ function defineCustomElement() {
128
+ if (typeof customElements === "undefined") {
129
+ return;
130
+ }
131
+ const components = ["snk-exporter-email-sender"];
132
+ components.forEach(tagName => { switch (tagName) {
133
+ case "snk-exporter-email-sender":
134
+ if (!customElements.get(tagName)) {
135
+ customElements.define(tagName, SnkExporterEmailSender);
136
+ }
137
+ break;
138
+ } });
139
+ }
140
+
141
+ export { SnkExporterEmailSender as S, defineCustomElement as d };
@@ -55,7 +55,14 @@ const SnkFilterDetail = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
55
55
  ]);
56
56
  }
57
57
  buildIcon(title, iconName, action) {
58
- return (h("button", { onClick: () => action(), class: "sc-snk-filter-bar snk-filter-item__editor-header-button" }, h("ez-icon", { title: title, iconName: iconName })));
58
+ return (h("button", { onClick: () => action(), class: "sc-snk-filter-bar snk-filter-item__editor-header-button", ref: elem => elem && this.buildIdButton(elem, title) }, h("ez-icon", Object.assign({ title: title, iconName: iconName }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo(`_${title}`)}` }))));
59
+ }
60
+ buildIdButton(buttonElement, title) {
61
+ if (!buttonElement)
62
+ return;
63
+ const dataElement = { id: title };
64
+ buttonElement.removeAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME);
65
+ ElementIDUtils.addIDInfoIfNotExists(buttonElement, "button", dataElement);
59
66
  }
60
67
  getNormalizedValue(params, value) {
61
68
  return params.reduce((arrayValues, currentParam, index) => {
@@ -61,15 +61,17 @@ const SnkFilterList = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
61
61
  this._popover.remove();
62
62
  }
63
63
  }
64
- this._element.querySelectorAll("button.sc-snk-filter-bar").forEach((itemListElement) => {
65
- const dataElement = { id: itemListElement.getAttribute("name") };
66
- itemListElement === null || itemListElement === void 0 ? void 0 : itemListElement.removeAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME);
67
- ElementIDUtils.addIDInfoIfNotExists(itemListElement, "filterItemList", dataElement);
68
- });
64
+ }
65
+ buildIdElement(buttonElement, name) {
66
+ if (!buttonElement)
67
+ return;
68
+ const dataElement = { id: name };
69
+ buttonElement.removeAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME);
70
+ ElementIDUtils.addIDInfoIfNotExists(buttonElement, "filterItemList", dataElement);
69
71
  }
70
72
  buildItemElement(item) {
71
73
  const itemId = ++this._selectableItemsCount;
72
- return (h("button", { id: `filter-item${itemId}`, onFocusin: () => this._preselection = itemId, class: `ez-col ez-col--sd-12 ez-align--middle ez-padding--small sc-snk-filter-bar snk-filter-bar__filter-list-item`, onClick: () => this.itemSelected(item.name), name: item.label, key: itemId }, item.iconName ? h("ez-icon", { iconName: item.iconName, size: "small", class: `ez-padding-right--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__icon ${item.iconClass || ""}` }) : undefined, h("div", { class: `ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__label ${item.labelClass || ""}` }, item.label)));
74
+ return (h("button", { ref: elem => elem && this.buildIdElement(elem, item.label), id: `filter-item${itemId}`, onFocusin: () => this._preselection = itemId, class: `ez-col ez-col--sd-12 ez-align--middle ez-padding--small sc-snk-filter-bar snk-filter-bar__filter-list-item`, onClick: () => this.itemSelected(item.name), name: item.label, key: itemId }, item.iconName ? h("ez-icon", { iconName: item.iconName, size: "small", class: `ez-padding-right--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__icon ${item.iconClass || ""}` }) : undefined, h("div", { class: `ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__label ${item.labelClass || ""}` }, item.label)));
73
75
  }
74
76
  itemSelected(itemName) {
75
77
  if (itemName === SHOW_MORE_ITEM_NAME) {
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
- import { StringUtils, ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
2
+ import { StringUtils, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
4
4
  import { C as ConfigStorage } from './ConfigStorage.js';
5
5
  import { O as ORDER_VALUES } from './constants.js';
@@ -21,7 +21,7 @@ const EzGridConfig = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
21
21
  this._componenteInternalKey = Date.now();
22
22
  /**
23
23
  * Aba selecionada das configurações da grade.
24
- */
24
+ */
25
25
  this.selectedIndex = 0;
26
26
  }
27
27
  /* Creation Methods */
@@ -30,10 +30,10 @@ const EzGridConfig = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
30
30
  */
31
31
  async saveConfig(config) {
32
32
  var _a;
33
- if (config == undefined || ((_a = this._application) === null || _a === void 0 ? void 0 : _a.configName) == undefined) {
33
+ if (config == undefined || ((_a = this.application) === null || _a === void 0 ? void 0 : _a.configName) == undefined) {
34
34
  return;
35
35
  }
36
- ConfigStorage.saveGridConfig(config, this._application.configName)
36
+ ConfigStorage.saveGridConfig(config, this.application.configName)
37
37
  .then((response) => {
38
38
  if ((response === null || response === void 0 ? void 0 : response.resource) != undefined) {
39
39
  this.configChange.emit(config);
@@ -48,7 +48,7 @@ const EzGridConfig = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
48
48
  * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-grid.msg.ts"
49
49
  */
50
50
  getMessage(key, params) {
51
- return this._application.messagesBuilder.getMessage(key, params);
51
+ return this.application.messagesBuilder.getMessage(key, params);
52
52
  }
53
53
  createOrderList() {
54
54
  let newList = [];
@@ -467,9 +467,6 @@ const EzGridConfig = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
467
467
  this.locateColumn(new KeyboardEvent("arrow-right", { key: "ArrowRight" }), this._searchElement.value);
468
468
  }
469
469
  }
470
- componentWillLoad() {
471
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
472
- }
473
470
  componentDidLoad() {
474
471
  ElementIDUtils.addIDInfo(this._element);
475
472
  }
@@ -481,6 +478,7 @@ const EzGridConfig = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
481
478
  static get style() { return snkGridConfigCss; }
482
479
  }, [2, "snk-grid-config", {
483
480
  "selectedIndex": [1026, "selected-index"],
481
+ "application": [16],
484
482
  "columns": [1040],
485
483
  "config": [1040],
486
484
  "saveConfig": [64]
@@ -1,7 +1,9 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
- import { ElementIDUtils } from '@sankhyalabs/core';
2
+ import { ApplicationContext, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { T as TaskbarProcessor } from './taskbar-processor.js';
4
4
  import { C as ConfigStorage } from './ConfigStorage.js';
5
+ import { T as TaskbarElement, d as defineCustomElement$1 } from './snk-taskbar2.js';
6
+ import { d as defineCustomElement$9 } from './snk-exporter-email-sender2.js';
5
7
  import { d as defineCustomElement$8 } from './snk-filter-bar2.js';
6
8
  import { d as defineCustomElement$7 } from './snk-filter-detail2.js';
7
9
  import { d as defineCustomElement$6 } from './snk-filter-item2.js';
@@ -9,7 +11,6 @@ import { d as defineCustomElement$5 } from './snk-filter-list2.js';
9
11
  import { d as defineCustomElement$4 } from './snk-filter-modal2.js';
10
12
  import { d as defineCustomElement$3 } from './snk-grid-config2.js';
11
13
  import { d as defineCustomElement$2 } from './snk-select-box2.js';
12
- import { d as defineCustomElement$1 } from './snk-taskbar2.js';
13
14
 
14
15
  const snkGridCss = ".snk-grid__container.sc-snk-grid{display:flex;height:100%;width:100%}.snk-grid__header.sc-snk-grid{display:flex;flex-wrap:nowrap;width:100%}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--small)}";
15
16
 
@@ -23,10 +24,14 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
23
24
  "snkGridTopTaskbar": ["FORM_MODE", "CONFIGURATOR", "INSERT"]
24
25
  });
25
26
  this._headerTaskbarProcessor = new TaskbarProcessor({
26
- "snkGridHeaderTaskbar.unselected": ["REFRESH"],
27
- "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
27
+ "snkGridHeaderTaskbar.unselected": ["REFRESH", "EXPORT"],
28
+ "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH", "EXPORT"]
28
29
  });
29
30
  this._popUpGridConfig = false;
31
+ /**
32
+ * Determina se haverá exportação de dados
33
+ */
34
+ this.enableDataExporter = false;
30
35
  }
31
36
  /**
32
37
  * Exibe a janela de configurações da grade.
@@ -52,6 +57,37 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
52
57
  async setConfig(config) {
53
58
  this.setGridConfig(config);
54
59
  }
60
+ actionClickHandler(event) {
61
+ if (event.detail === TaskbarElement.EXPORT) {
62
+ // TODO: Quando o exportador de grades for implementado, essa ação
63
+ // vai fazer mostrar as opções disponíveis. Enviar por email será
64
+ // apenas mais uma
65
+ const selectedRows = this._dataState.selectedRecords.length;
66
+ const config = {
67
+ format: "pdf",
68
+ type: selectedRows > 0 ? "selection" : "all",
69
+ selectedRows,
70
+ email: {
71
+ attachments: [
72
+ { name: "Movimentação Financeira.pdf", size: 1024 * 231 }
73
+ ]
74
+ }
75
+ };
76
+ this._snkEmailSender.open(config)
77
+ .then((result) => {
78
+ this._application.message("resultado", JSON.stringify(result));
79
+ });
80
+ }
81
+ }
82
+ /**
83
+ * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
84
+ * através de um pequeno modulo na estrutura da aplicação:
85
+ * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
86
+ * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-grid.msg.ts"
87
+ */
88
+ getMessage(key, params) {
89
+ return this._application.messagesBuilder.getMessage(key, params);
90
+ }
55
91
  openGridConfig() {
56
92
  this._grid.getColumnsState()
57
93
  .then((gridColumns) => {
@@ -87,6 +123,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
87
123
  });
88
124
  }
89
125
  componentWillLoad() {
126
+ this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
90
127
  let parent = this._element.parentElement;
91
128
  while (parent) {
92
129
  if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
@@ -111,9 +148,10 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
111
148
  this.loadConfig();
112
149
  }
113
150
  componentWillRender() {
151
+ const invisibleButtons = this.enableDataExporter ? [] : ["EXPORT"];
114
152
  const headerTaskbarId = this._dataState && this._dataState.selectedRecords.length > 0 ? "snkGridHeaderTaskbar.selected" : "snkGridHeaderTaskbar.unselected";
115
- this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState);
116
- this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState);
153
+ this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState, undefined, invisibleButtons);
154
+ this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState, undefined, invisibleButtons);
117
155
  }
118
156
  addElementID() {
119
157
  const dataInfo = { dataUnit: this._dataUnit };
@@ -123,7 +161,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
123
161
  if (!this._dataUnit) {
124
162
  return undefined;
125
163
  }
126
- 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-padding-bottom--medium ez-margin-bottom--medium" }, h("snk-filter-bar", { dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName }), 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, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: "INSERT" })), h("ez-grid", { ref: ref => this._grid = ref, "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.saveConfig(evt.detail); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection }, h("snk-taskbar", { dataUnit: this._dataUnit, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), 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), selectedIndex: 0, onConfigChange: (evt) => this.changeConfig(evt.detail), onConfigCancel: () => this.closeGridConfig() }))));
164
+ 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-padding-bottom--medium ez-margin-bottom--medium" }, h("snk-filter-bar", { dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName }), 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, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: "INSERT" })), h("ez-grid", { ref: ref => this._grid = ref, "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.saveConfig(evt.detail); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection }, h("snk-taskbar", { dataUnit: this._dataUnit, "data-element-id": "grid_left", buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("snk-exporter-email-sender", { ref: ref => this._snkEmailSender = ref, getMessage: (key, params) => this.getMessage(key, params) }), 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, onConfigChange: (evt) => this.changeConfig(evt.detail), onConfigCancel: () => this.closeGridConfig() }))));
127
165
  }
128
166
  get _element() { return this; }
129
167
  static get style() { return snkGridCss; }
@@ -133,6 +171,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
133
171
  "taskbarManager": [16],
134
172
  "statusResolver": [16],
135
173
  "multipleSelection": [4, "multiple-selection"],
174
+ "enableDataExporter": [4, "enable-data-exporter"],
136
175
  "_dataUnit": [32],
137
176
  "_dataState": [32],
138
177
  "_gridConfig": [32],
@@ -140,18 +179,23 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
140
179
  "showConfig": [64],
141
180
  "hideConfig": [64],
142
181
  "setConfig": [64]
143
- }]);
182
+ }, [[0, "actionClick", "actionClickHandler"]]]);
144
183
  function defineCustomElement() {
145
184
  if (typeof customElements === "undefined") {
146
185
  return;
147
186
  }
148
- const components = ["snk-grid", "snk-filter-bar", "snk-filter-detail", "snk-filter-item", "snk-filter-list", "snk-filter-modal", "snk-grid-config", "snk-select-box", "snk-taskbar"];
187
+ const components = ["snk-grid", "snk-exporter-email-sender", "snk-filter-bar", "snk-filter-detail", "snk-filter-item", "snk-filter-list", "snk-filter-modal", "snk-grid-config", "snk-select-box", "snk-taskbar"];
149
188
  components.forEach(tagName => { switch (tagName) {
150
189
  case "snk-grid":
151
190
  if (!customElements.get(tagName)) {
152
191
  customElements.define(tagName, SnkGrid);
153
192
  }
154
193
  break;
194
+ case "snk-exporter-email-sender":
195
+ if (!customElements.get(tagName)) {
196
+ defineCustomElement$9();
197
+ }
198
+ break;
155
199
  case "snk-filter-bar":
156
200
  if (!customElements.get(tagName)) {
157
201
  defineCustomElement$8();
@@ -18,6 +18,7 @@ var TaskbarElement;
18
18
  TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
19
19
  TaskbarElement["DIVIDER"] = "DIVIDER";
20
20
  TaskbarElement["CONFIGURATOR"] = "CONFIGURATOR";
21
+ TaskbarElement["EXPORT"] = "EXPORT";
21
22
  })(TaskbarElement || (TaskbarElement = {}));
22
23
  var AuthorizationElements;
23
24
  (function (AuthorizationElements) {
@@ -72,6 +73,8 @@ const buildElem = (element, className, dataElementId, getTitle, action, isEnable
72
73
  return iconButton("list", element, className, dataElementId, title, action, isEnabled);
73
74
  case TaskbarElement.CONFIGURATOR:
74
75
  return iconButton("settings-inverted", element, className, dataElementId, title, action, isEnabled);
76
+ case TaskbarElement.EXPORT:
77
+ return iconButton("file-download", element, className, dataElementId, title, action, isEnabled);
75
78
  case TaskbarElement.MORE_OPTIONS:
76
79
  return actionButton(element, className, dataElementId, title, action, isEnabled, actions);
77
80
  case TaskbarElement.DIVIDER:
@@ -115,7 +118,8 @@ const SnkTaskbar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
115
118
  [TaskbarElement.SAVE]: "snkTaskbar.titleSave",
116
119
  [TaskbarElement.GRID_MODE]: "snkTaskbar.titleGridMode",
117
120
  [TaskbarElement.FORM_MODE]: "snkTaskbar.titleFormMode",
118
- [TaskbarElement.CONFIGURATOR]: "snkTaskbar.titleConfigurator"
121
+ [TaskbarElement.CONFIGURATOR]: "snkTaskbar.titleConfigurator",
122
+ [TaskbarElement.EXPORT]: "snkTaskbar.titleExportar"
119
123
  };
120
124
  }
121
125
  observeButtons() {
@@ -2,7 +2,7 @@ class TaskbarProcessor {
2
2
  constructor(defaultButtons) {
3
3
  this._defaultButtons = defaultButtons;
4
4
  }
5
- process(taskbarId, taskbarManager, dataState, disabledButtons = []) {
5
+ process(taskbarId, taskbarManager, dataState, disabledButtons = [], invisibleButtons = []) {
6
6
  var _a;
7
7
  this.customButtons = new Map();
8
8
  this.buttons = "";
@@ -17,13 +17,15 @@ class TaskbarProcessor {
17
17
  this.customButtons.set(customBtn.name, customBtn);
18
18
  buttonName = customBtn.name;
19
19
  }
20
- if (!this.isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabledButtons)) {
21
- this.disabledButtons.push(buttonName);
20
+ if (!invisibleButtons.includes(buttonName)) {
21
+ if (!this.isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabledButtons)) {
22
+ this.disabledButtons.push(buttonName);
23
+ }
24
+ if (this.buttons.length > 0) {
25
+ this.buttons += ",";
26
+ }
27
+ this.buttons += buttonName;
22
28
  }
23
- if (this.buttons.length > 0) {
24
- this.buttons += ",";
25
- }
26
- this.buttons += buttonName;
27
29
  });
28
30
  }
29
31
  getButtonsArray(taskbarId, taskbarManager, dataState) {
@@ -69,6 +69,7 @@ const snkTaskbarMessages = {
69
69
  titleGridMode: "Modo Grade",
70
70
  titleFormMode: "Modo Formulário",
71
71
  titleConfigurator: "Configurações",
72
+ titleExportar: "Exportar",
72
73
  forbidden: "Permissão não liberada"
73
74
  };
74
75
 
@@ -76,6 +77,27 @@ const crudUtilsMessages = {
76
77
  errorArray: "CrudUtils.find deve receber um array de fields, ou uma lista separada por virgula.",
77
78
  };
78
79
 
80
+ const snkExporterMessages = {
81
+ emailSenderTitle: "Enviar por email",
82
+ emailSenderBackButton: "Voltar",
83
+ emailSenderNextButton: "Avançar",
84
+ emailSenderCancelButton: "Cancelar",
85
+ emailSenderSendButton: "Enviar",
86
+ emailSenderOptStep_subtitle: "Primeiro, escolha o formato do arquivo",
87
+ emailSenderOptStep_lblFormat: "Formato:",
88
+ emailSenderOptStep_formatPDF: "PDF (.pdf)",
89
+ emailSenderOptStep_formatXLSX: "Planilha (.xlsx)",
90
+ emailSenderOptStep_export: "Exportar:",
91
+ emailSenderOptStep_allData: "Toda a grade",
92
+ emailSenderOptStep_currentPage: "Somente a página atual",
93
+ emailSenderOptStep_someRecords: "{{SELECTION_COUNT}} linhas selecionadas",
94
+ emailSenderOptStep_oneRecord: "Somente a linha selecionada",
95
+ emailSenderInfoStep_subtitle: "Informações de email",
96
+ emailSenderInfoStep_sendTo: "Enviar para",
97
+ emailSenderInfoStep_subject: "Assunto",
98
+ emailSenderInfoStep_message: "Mensagem"
99
+ };
100
+
79
101
  const snkFormMessages = {
80
102
  title: {
81
103
  clone: "Duplicar registro",
@@ -197,7 +219,8 @@ class SnkMessageBuilder {
197
219
  snkTabConfig: snkTabConfigMessages,
198
220
  crudUtils: crudUtilsMessages,
199
221
  snkGrid: snkGridMessages,
200
- snkGridConfig: snkGridConfigMessages
222
+ snkGridConfig: snkGridConfigMessages,
223
+ snkExporter: snkExporterMessages
201
224
  };
202
225
  this._currentOperation = OperationMap.CLEAN;
203
226
  this.loadAppMessages().then((msgs) => {