@sankhyalabs/sankhyablocks 2.4.7 → 2.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +45 -7
  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} +121 -10
  9. package/dist/cjs/snk-form.cjs.entry.js +1 -1
  10. package/dist/cjs/snk-pesquisa.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-configurator/snk-configurator.css +30 -15
  15. package/dist/collection/components/snk-crud/snk-crud.js +23 -1
  16. package/dist/collection/components/snk-data-exporter/data/attachment.js +1 -0
  17. package/dist/collection/components/snk-data-exporter/data/email.js +1 -0
  18. package/dist/collection/components/snk-data-exporter/data/export-config.js +1 -0
  19. package/dist/collection/components/snk-data-exporter/data/export-result.js +1 -0
  20. package/dist/collection/components/snk-data-exporter/data/report.js +1 -0
  21. package/dist/collection/components/snk-data-exporter/exporter-email-sender/email-info-step.js +6 -0
  22. package/dist/collection/components/snk-data-exporter/exporter-email-sender/options-step.js +21 -0
  23. package/dist/collection/components/snk-data-exporter/exporter-email-sender/snk-exporter-email-sender.js +141 -0
  24. package/dist/collection/components/snk-grid/snk-grid.js +71 -6
  25. package/dist/collection/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.css +35 -20
  26. package/dist/collection/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.js +25 -8
  27. package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +36 -22
  28. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +3 -0
  29. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +9 -7
  30. package/dist/collection/components/snk-taskbar/snk-taskbar.js +2 -1
  31. package/dist/collection/lib/message/SnkMessageBuilder.js +3 -1
  32. package/dist/collection/lib/message/resources/snk-exporter.msg.js +21 -0
  33. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +1 -0
  34. package/dist/components/SnkMessageBuilder.js +24 -1
  35. package/dist/components/index.d.ts +1 -0
  36. package/dist/components/index.js +1 -0
  37. package/dist/components/snk-configurator2.js +1 -1
  38. package/dist/components/snk-crud.js +16 -5
  39. package/dist/components/snk-exporter-email-sender.d.ts +11 -0
  40. package/dist/components/snk-exporter-email-sender.js +6 -0
  41. package/dist/components/snk-exporter-email-sender2.js +136 -0
  42. package/dist/components/snk-grid-config2.js +7 -9
  43. package/dist/components/snk-grid2.js +53 -9
  44. package/dist/components/snk-pesquisa2.js +1 -1
  45. package/dist/components/snk-taskbar2.js +5 -1
  46. package/dist/components/taskbar-processor.js +9 -7
  47. package/dist/esm/{SnkMessageBuilder-f5ef87df.js → SnkMessageBuilder-7d583c9a.js} +24 -1
  48. package/dist/esm/loader.js +1 -1
  49. package/dist/esm/sankhyablocks.js +1 -1
  50. package/dist/esm/snk-application.entry.js +1 -1
  51. package/dist/esm/snk-configurator_3.entry.js +45 -7
  52. package/dist/esm/snk-crud.entry.js +6 -2
  53. package/dist/esm/snk-data-unit.entry.js +1 -1
  54. package/dist/esm/{snk-filter-bar_7.entry.js → snk-exporter-email-sender_8.entry.js} +123 -13
  55. package/dist/esm/snk-form.entry.js +1 -1
  56. package/dist/esm/snk-pesquisa.entry.js +1 -1
  57. package/dist/esm/{taskbar-elements-a0a8c3ac.js → taskbar-elements-b2bbe275.js} +3 -0
  58. package/dist/esm/{taskbar-processor-aa6772c9.js → taskbar-processor-c2a99aba.js} +9 -7
  59. package/dist/sankhyablocks/p-14af45cc.entry.js +1 -0
  60. package/dist/sankhyablocks/{p-a72a0a5d.entry.js → p-1b7f87cf.entry.js} +1 -1
  61. package/dist/sankhyablocks/p-37f489d3.entry.js +1 -0
  62. package/dist/sankhyablocks/p-5a3e0eb6.js +1 -0
  63. package/dist/sankhyablocks/{p-eb94df0b.entry.js → p-70e52fee.entry.js} +1 -1
  64. package/dist/sankhyablocks/p-c118ef2a.entry.js +1 -0
  65. package/dist/sankhyablocks/p-dbaad88c.js +1 -0
  66. package/dist/sankhyablocks/p-df53643b.entry.js +1 -0
  67. package/dist/sankhyablocks/p-e7f772ed.js +1 -0
  68. package/dist/sankhyablocks/{p-71997e4c.entry.js → p-fb96840c.entry.js} +1 -1
  69. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  70. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  71. package/dist/types/components/snk-data-exporter/data/attachment.d.ts +4 -0
  72. package/dist/types/components/snk-data-exporter/data/email.d.ts +7 -0
  73. package/dist/types/components/snk-data-exporter/data/export-config.d.ts +9 -0
  74. package/dist/types/components/snk-data-exporter/data/export-result.d.ts +8 -0
  75. package/dist/types/components/snk-data-exporter/data/report.d.ts +4 -0
  76. package/dist/types/components/snk-data-exporter/exporter-email-sender/email-info-step.d.ts +9 -0
  77. package/dist/types/components/snk-data-exporter/exporter-email-sender/options-step.d.ts +9 -0
  78. package/dist/types/components/snk-grid/subcomponents/snk-grid-config/snk-grid-config.d.ts +6 -3
  79. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +2 -1
  80. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -1
  81. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +1 -0
  82. package/dist/types/components.d.ts +43 -0
  83. package/dist/types/lib/message/resources/snk-exporter.msg.d.ts +2 -0
  84. package/package.json +1 -1
  85. package/react/components.d.ts +1 -0
  86. package/react/components.js +1 -0
  87. package/react/components.js.map +1 -1
  88. package/dist/sankhyablocks/p-03f9c407.js +0 -1
  89. package/dist/sankhyablocks/p-1bc8f32f.entry.js +0 -1
  90. package/dist/sankhyablocks/p-4cbc4ae3.js +0 -1
  91. package/dist/sankhyablocks/p-60038252.entry.js +0 -1
  92. package/dist/sankhyablocks/p-877bd6cf.js +0 -1
  93. package/dist/sankhyablocks/p-b05638d2.entry.js +0 -1
  94. package/dist/sankhyablocks/p-e6e0efe7.entry.js +0 -1
  95. package/dist/types/components/snk-grid/snk-grid.d.ts +0 -70
@@ -26,17 +26,19 @@
26
26
  /*@doc Define o peso da fonte utilizada para o subtitulo do componente.*/
27
27
  --snk-configurator__subtitle--font-weight: var(--text-weight--large, 600);
28
28
 
29
+ /* scrollbar */
30
+ /*@doc Define a cor da barra de rolagem do componente.*/
31
+ --snk-configurator__scrollbar--color-default: var(--scrollbar--default, #626e82);
32
+ /*@doc Define a cor de fundo da barra de rolagem do componente.*/
33
+ --snk-configurator__scrollbar--color-background: var(--scrollbar--background, #E5EAF0);
34
+ /*@doc Define a cor do hover na barra de rolagem do componente.*/
35
+ --snk-configurator__scrollbar--color-hover: var(--scrollbar--hover, #2B3A54);
36
+ /*@doc Define a cor do active na barra de rolagem do componente.*/
37
+ --snk-configurator__scrollbar--color-clicked: var(--scrollbar--clicked, #a2abb9);
29
38
  /*@doc Define o raio da borda da barra de rolagem do componente.*/
30
39
  --snk-configurator__scrollbar--border-radius: var(--border--radius-small, 6px);
31
-
32
40
  /*@doc Define a largura da barra de rolagem do componente.*/
33
41
  --snk-configurator__scrollbar--width: var(--space--medium, 12px);
34
-
35
- /*@doc Define a cor da barra de rolagem do componente.*/
36
- --snk-configurator__scrollbar--background-color-primary: var(--scrollbar--primary, #2B3A54);
37
-
38
- /*@doc Define a cor de fundo da barra de rolagem do componente.*/
39
- --snk-configurator__scrollbar--background-color-secondary: var(--scrollbar--secondary, #E5EAF0);
40
42
  }
41
43
 
42
44
  .snk-configurator {
@@ -101,24 +103,37 @@
101
103
  scrollbar-width: thin;
102
104
 
103
105
  /*public*/
104
- scrollbar-color: var(--snk-configurator__scrollbar--background-color-primary) var(--snk-configurator__scrollbar--background-color-secondary);
106
+ scrollbar-color: var(--snk-configurator__scrollbar--color-clicked) var(--snk-configurator__scrollbar--color-background);
107
+ }
108
+
109
+ .snk-configurator__main::-webkit-scrollbar {
110
+ /*public*/
111
+ background-color: var(--snk-configurator__scrollbar--color-background);
112
+ width: var(--snk-configurator__scrollbar--width);
113
+ max-width: var(--snk-configurator__scrollbar--width);
114
+ min-width: var(--snk-configurator__scrollbar--width);
105
115
  }
106
116
 
107
117
  .snk-configurator__main::-webkit-scrollbar-track {
108
118
  /*public*/
109
- background-color: var(--snk-configurator__scrollbar--background-color-secondary);
119
+ background-color: var(--snk-configurator__scrollbar--color-background);
120
+ border-radius: var(--snk-configurator__scrollbar--border-radius);
110
121
  }
111
122
 
112
123
  .snk-configurator__main::-webkit-scrollbar-thumb {
113
124
  /*public*/
114
- background-color: var(--snk-configurator__scrollbar--background-color-primary);
125
+ background-color: var(--snk-configurator__scrollbar--color-default);
115
126
  border-radius: var(--snk-configurator__scrollbar--border-radius);
116
127
  }
117
128
 
118
- .snk-configurator__main::-webkit-scrollbar {
129
+ .snk-configurator__main::-webkit-scrollbar-thumb:vertical:hover,
130
+ .snk-configurator__main::-webkit-scrollbar-thumb:horizontal:hover {
119
131
  /*public*/
120
- background-color: var(--snk-configurator__scrollbar--background-color-secondary);
121
- width: var(--snk-configurator__scrollbar--width);
122
- max-width: var(--snk-configurator__scrollbar--width);
123
- min-width: var(--snk-configurator__scrollbar--width);
132
+ background-color: var(--snk-configurator__scrollbar--color-hover);
133
+ }
134
+
135
+ .snk-configurator__main::-webkit-scrollbar-thumb:vertical:active,
136
+ .snk-configurator__main::-webkit-scrollbar-thumb:horizontal:active {
137
+ /*public*/
138
+ background-color: var(--snk-configurator__scrollbar--color-clicked);
124
139
  }
@@ -16,6 +16,10 @@ export class SnkCrud {
16
16
  * Determina se pode haver mais de uma linha selecionada na grade.
17
17
  */
18
18
  this.multipleSelection = true;
19
+ /**
20
+ * Determina se haverá exportação de dados
21
+ */
22
+ this.enableDataExporter = false;
19
23
  }
20
24
  /**
21
25
  * Usado para alternar a visão entre GRID e FORM externamente.
@@ -94,7 +98,7 @@ export class SnkCrud {
94
98
  ElementIDUtils.addIDInfo(this._element, null, dataInfo);
95
99
  }
96
100
  render() {
97
- 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) })));
101
+ 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) })));
98
102
  }
99
103
  static get is() { return "snk-crud"; }
100
104
  static get encapsulation() { return "scoped"; }
@@ -227,6 +231,24 @@ export class SnkCrud {
227
231
  "attribute": "multiple-selection",
228
232
  "reflect": false,
229
233
  "defaultValue": "true"
234
+ },
235
+ "enableDataExporter": {
236
+ "type": "boolean",
237
+ "mutable": false,
238
+ "complexType": {
239
+ "original": "boolean",
240
+ "resolved": "boolean",
241
+ "references": {}
242
+ },
243
+ "required": false,
244
+ "optional": false,
245
+ "docs": {
246
+ "tags": [],
247
+ "text": "Determina se haver\u00E1 exporta\u00E7\u00E3o de dados"
248
+ },
249
+ "attribute": "enable-data-exporter",
250
+ "reflect": false,
251
+ "defaultValue": "false"
230
252
  }
231
253
  };
232
254
  }
@@ -0,0 +1,6 @@
1
+ import { h } from "@stencil/core";
2
+ import { ElementIDUtils } from '@sankhyalabs/core';
3
+ export const EmailInfoStep = ({ getMessage, changeInfo, data }) => {
4
+ return h("div", null, 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")}` })), 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")}` })), 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")}` })), ((data === null || data === void 0 ? void 0 : data.attachments) || [])
5
+ .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)}` }))));
6
+ };
@@ -0,0 +1,21 @@
1
+ import { ElementIDUtils } from "@sankhyalabs/core";
2
+ import { h } from "@stencil/core";
3
+ export const OptionsStep = ({ getMessage, changeInfo, data }) => {
4
+ const selectionCount = (data === null || data === void 0 ? void 0 : data.selectedRows) || 0;
5
+ const formatOptions = [
6
+ { label: getMessage("snkExporter.emailSenderOptStep_formatPDF"), value: "pdf" },
7
+ { label: getMessage("snkExporter.emailSenderOptStep_formatXLSX"), value: "xlsx" }
8
+ ];
9
+ const typeOptions = [
10
+ { label: getMessage("snkExporter.emailSenderOptStep_allData"), value: "all" },
11
+ { label: getMessage("snkExporter.emailSenderOptStep_currentPage"), value: "page" },
12
+ ];
13
+ if (selectionCount > 0) {
14
+ const label = getMessage(selectionCount > 1 ? "snkExporter.emailSenderOptStep_someRecords" : "snkExporter.emailSenderOptStep_oneRecord", { SELECTION_COUNT: selectionCount });
15
+ typeOptions.push({
16
+ label,
17
+ value: "selection"
18
+ });
19
+ }
20
+ return h("div", null, 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 })), 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 })));
21
+ };
@@ -0,0 +1,141 @@
1
+ import { ElementIDUtils } from '@sankhyalabs/core';
2
+ import { h } from '@stencil/core';
3
+ import { EmailInfoStep } from './email-info-step';
4
+ import { OptionsStep } from './options-step';
5
+ export class SnkExporterEmailSender {
6
+ constructor() {
7
+ this._stepInfo = [
8
+ {
9
+ subTitle: "snkExporter.emailSenderOptStep_subtitle",
10
+ firstButton: "snkExporter.emailSenderCancelButton",
11
+ secondButton: "snkExporter.emailSenderNextButton",
12
+ firstButtonAction: () => this.close(),
13
+ secondButtonAction: () => this.changeStep(1)
14
+ },
15
+ {
16
+ subTitle: "snkExporter.emailSenderInfoStep_subtitle",
17
+ firstButton: "snkExporter.emailSenderBackButton",
18
+ secondButton: "snkExporter.emailSenderSendButton",
19
+ firstButtonAction: () => this.changeStep(0),
20
+ secondButtonAction: () => this.send(),
21
+ secondButtonEnabledTester: () => this.isFilled()
22
+ }
23
+ ];
24
+ this._opened = false;
25
+ this._currentStep = 0;
26
+ }
27
+ open(config) {
28
+ this._config = config;
29
+ this._opened = true;
30
+ this.changeStep(0);
31
+ return new Promise(accept => {
32
+ this._promiseResolver = accept;
33
+ });
34
+ }
35
+ getStepMessage(key) {
36
+ const stepInfo = this._stepInfo[this._currentStep] || {};
37
+ return this.getMessage(stepInfo[key]);
38
+ }
39
+ executeButtonAction(first) {
40
+ const stepInfo = this._stepInfo[this._currentStep] || {};
41
+ stepInfo[first ? "firstButtonAction" : "secondButtonAction"]();
42
+ }
43
+ checkButtonEnabled(first) {
44
+ const stepInfo = this._stepInfo[this._currentStep] || {};
45
+ const testFunction = stepInfo[first ? "firstButtonEnabledTester" : "secondButtonEnabledTester"];
46
+ if (testFunction) {
47
+ return testFunction();
48
+ }
49
+ return true;
50
+ }
51
+ changeStep(index) {
52
+ this._currentStep = index;
53
+ if (this._viewStack) {
54
+ this._viewStack.show(this._currentStep);
55
+ }
56
+ }
57
+ send() {
58
+ const { format, type, email } = this._config;
59
+ this._promiseResolver({ format, type, email, report: undefined });
60
+ }
61
+ close() {
62
+ this._opened = false;
63
+ }
64
+ isFilled() {
65
+ var _a, _b;
66
+ 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;
67
+ }
68
+ updateEmailInfo(field, value) {
69
+ this._config = Object.assign(Object.assign({}, this._config), { email: Object.assign(Object.assign({}, this._config.email), { [field]: value }) });
70
+ }
71
+ updateConfigInfo(field, value) {
72
+ this._config = Object.assign(Object.assign({}, this._config), { [field]: value });
73
+ }
74
+ render() {
75
+ var _a;
76
+ ElementIDUtils.addIDInfoIfNotExists(this._element, 'snkExporterEmailSender');
77
+ return (h("ez-popup", { useHeader: false, size: "x-small", heightMode: "auto", opened: this._opened }, h("ez-modal-container", { onEzModalAction: evt => {
78
+ if (evt.detail === "CLOSE")
79
+ this.close();
80
+ }, 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: "ez-button--secondary", label: this.getStepMessage("secondButton"), onClick: () => this.executeButtonAction(false), enabled: this.checkButtonEnabled(false) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `${ElementIDUtils.getInternalIDInfo("secondButton")}` }))))));
81
+ }
82
+ static get is() { return "snk-exporter-email-sender"; }
83
+ static get properties() {
84
+ return {
85
+ "getMessage": {
86
+ "type": "unknown",
87
+ "mutable": false,
88
+ "complexType": {
89
+ "original": "(key: string, params?: any) => string",
90
+ "resolved": "(key: string, params?: any) => string",
91
+ "references": {}
92
+ },
93
+ "required": false,
94
+ "optional": false,
95
+ "docs": {
96
+ "tags": [],
97
+ "text": ""
98
+ }
99
+ }
100
+ };
101
+ }
102
+ static get states() {
103
+ return {
104
+ "_config": {},
105
+ "_opened": {},
106
+ "_currentStep": {}
107
+ };
108
+ }
109
+ static get methods() {
110
+ return {
111
+ "open": {
112
+ "complexType": {
113
+ "signature": "(config: ExportConfig) => Promise<ExportResult>",
114
+ "parameters": [{
115
+ "tags": [],
116
+ "text": ""
117
+ }],
118
+ "references": {
119
+ "Promise": {
120
+ "location": "global"
121
+ },
122
+ "ExportResult": {
123
+ "location": "import",
124
+ "path": "../data/export-result"
125
+ },
126
+ "ExportConfig": {
127
+ "location": "import",
128
+ "path": "../data/export-config"
129
+ }
130
+ },
131
+ "return": "Promise<ExportResult>"
132
+ },
133
+ "docs": {
134
+ "text": "",
135
+ "tags": []
136
+ }
137
+ }
138
+ };
139
+ }
140
+ static get elementRef() { return "_element"; }
141
+ }
@@ -1,17 +1,22 @@
1
- import { ElementIDUtils } from '@sankhyalabs/core';
2
1
  import { h } from '@stencil/core';
2
+ import { ApplicationContext, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import TaskbarProcessor from '../snk-taskbar/processor/taskbar-processor';
4
4
  import { ConfigStorage } from '../../lib/configs/ConfigStorage';
5
+ import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
5
6
  export class SnkGrid {
6
7
  constructor() {
7
8
  this._topTaskbarProcessor = new TaskbarProcessor({
8
9
  "snkGridTopTaskbar": ["FORM_MODE", "CONFIGURATOR", "INSERT"]
9
10
  });
10
11
  this._headerTaskbarProcessor = new TaskbarProcessor({
11
- "snkGridHeaderTaskbar.unselected": ["REFRESH"],
12
- "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
12
+ "snkGridHeaderTaskbar.unselected": ["REFRESH", "EXPORT"],
13
+ "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH", "EXPORT"]
13
14
  });
14
15
  this._popUpGridConfig = false;
16
+ /**
17
+ * Determina se haverá exportação de dados
18
+ */
19
+ this.enableDataExporter = false;
15
20
  }
16
21
  /**
17
22
  * Exibe a janela de configurações da grade.
@@ -37,6 +42,37 @@ export class SnkGrid {
37
42
  async setConfig(config) {
38
43
  this.setGridConfig(config);
39
44
  }
45
+ actionClickHandler(event) {
46
+ if (event.detail === TaskbarElement.EXPORT) {
47
+ // TODO: Quando o exportador de grades for implementado, essa ação
48
+ // vai fazer mostrar as opções disponíveis. Enviar por email será
49
+ // apenas mais uma
50
+ const selectedRows = this._dataState.selectedRecords.length;
51
+ const config = {
52
+ format: "pdf",
53
+ type: selectedRows > 0 ? "selection" : "all",
54
+ selectedRows,
55
+ email: {
56
+ attachments: [
57
+ { name: "Movimentação Financeira.pdf", size: 1024 * 231 }
58
+ ]
59
+ }
60
+ };
61
+ this._snkEmailSender.open(config)
62
+ .then((result) => {
63
+ this._application.message("resultado", JSON.stringify(result));
64
+ });
65
+ }
66
+ }
67
+ /**
68
+ * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
69
+ * através de um pequeno modulo na estrutura da aplicação:
70
+ * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
71
+ * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-grid.msg.ts"
72
+ */
73
+ getMessage(key, params) {
74
+ return this._application.messagesBuilder.getMessage(key, params);
75
+ }
40
76
  openGridConfig() {
41
77
  this._grid.getColumnsState()
42
78
  .then((gridColumns) => {
@@ -72,6 +108,7 @@ export class SnkGrid {
72
108
  });
73
109
  }
74
110
  componentWillLoad() {
111
+ this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
75
112
  let parent = this._element.parentElement;
76
113
  while (parent) {
77
114
  if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
@@ -96,9 +133,10 @@ export class SnkGrid {
96
133
  this.loadConfig();
97
134
  }
98
135
  componentWillRender() {
136
+ const invisibleButtons = this.enableDataExporter ? [] : ["EXPORT"];
99
137
  const headerTaskbarId = this._dataState && this._dataState.selectedRecords.length > 0 ? "snkGridHeaderTaskbar.selected" : "snkGridHeaderTaskbar.unselected";
100
- this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState);
101
- this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState);
138
+ this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState, undefined, invisibleButtons);
139
+ this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState, undefined, invisibleButtons);
102
140
  }
103
141
  addElementID() {
104
142
  const dataInfo = { dataUnit: this._dataUnit };
@@ -108,7 +146,7 @@ export class SnkGrid {
108
146
  if (!this._dataUnit) {
109
147
  return undefined;
110
148
  }
111
- 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() }))));
149
+ 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() }))));
112
150
  }
113
151
  static get is() { return "snk-grid"; }
114
152
  static get encapsulation() { return "scoped"; }
@@ -220,6 +258,24 @@ export class SnkGrid {
220
258
  },
221
259
  "attribute": "multiple-selection",
222
260
  "reflect": false
261
+ },
262
+ "enableDataExporter": {
263
+ "type": "boolean",
264
+ "mutable": false,
265
+ "complexType": {
266
+ "original": "boolean",
267
+ "resolved": "boolean",
268
+ "references": {}
269
+ },
270
+ "required": false,
271
+ "optional": false,
272
+ "docs": {
273
+ "tags": [],
274
+ "text": "Determina se haver\u00E1 exporta\u00E7\u00E3o de dados"
275
+ },
276
+ "attribute": "enable-data-exporter",
277
+ "reflect": false,
278
+ "defaultValue": "false"
223
279
  }
224
280
  };
225
281
  }
@@ -324,4 +380,13 @@ export class SnkGrid {
324
380
  };
325
381
  }
326
382
  static get elementRef() { return "_element"; }
383
+ static get listeners() {
384
+ return [{
385
+ "name": "actionClick",
386
+ "method": "actionClickHandler",
387
+ "target": undefined,
388
+ "capture": false,
389
+ "passive": false
390
+ }];
391
+ }
327
392
  }
@@ -29,18 +29,6 @@
29
29
  /*@doc Define o tamanho da fonte utilizada para o subtitulo do componente.*/
30
30
  --snk-grid-config__subtitle--font-size: var(--text--medium, 14px);
31
31
 
32
- /*@doc Define a largura da barra de rolagem do componente.*/
33
- --snk-grid-config__scrollbar--width: var(--space--medium, 12px);
34
-
35
- /*@doc Define a cor da barra de rolagem do componente.*/
36
- --snk-grid-config__scrollbar--background-color-primary: var(--scrollbar--primary, #2B3A54);
37
-
38
- /*@doc Define a cor de fundo da barra de rolagem do componente.*/
39
- --snk-grid-config__scrollbar--background-color-secondary: var(--scrollbar--secondary, #E5EAF0);
40
-
41
- /*@doc Define o raio da borda da barra de rolagem do componente.*/
42
- --snk-grid-config__scrollbar--border-radius: var(--border--radius-small, 6px);
43
-
44
32
  /* @doc Define o estilo do texto do grupo da lista. */
45
33
  --snk-grid-config__group--font-family: var(--font-pattern, "Roboto");
46
34
 
@@ -53,6 +41,20 @@
53
41
  /* @doc Define o espaçamento inferior do grupo da lista. */
54
42
  --snk-grid-config__group--padding-bottom: var(--space-small, 6px);
55
43
 
44
+ /* scrollbar */
45
+ /*@doc Define a cor da barra de rolagem do componente.*/
46
+ --snk-grid-config__scrollbar--color-default: var(--scrollbar--default, #626e82);
47
+ /*@doc Define a cor de fundo da barra de rolagem do componente.*/
48
+ --snk-grid-config__scrollbar--color-background: var(--scrollbar--background, #E5EAF0);
49
+ /*@doc Define a cor do hover na barra de rolagem do componente.*/
50
+ --snk-grid-config__scrollbar--color-hover: var(--scrollbar--hover, #2B3A54);
51
+ /*@doc Define a cor do active na barra de rolagem do componente.*/
52
+ --snk-grid-config__scrollbar--color-clicked: var(--scrollbar--clicked, #a2abb9);
53
+ /*@doc Define o raio da borda da barra de rolagem do componente.*/
54
+ --snk-grid-config__scrollbar--border-radius: var(--border--radius-small, 6px);
55
+ /*@doc Define a largura da barra de rolagem do componente.*/
56
+ --snk-grid-config__scrollbar--width: var(--space--medium, 12px);
57
+
56
58
  display: grid;
57
59
  grid-template-rows: auto 1fr auto;
58
60
  max-height: 100%;
@@ -134,27 +136,40 @@ ez-list {
134
136
  scrollbar-width: thin;
135
137
 
136
138
  /*public*/
137
- scrollbar-color: var(--snk-grid-config__scrollbar--background-color-primary) var(--snk-grid-config__scrollbar--background-color-secondary);
139
+ scrollbar-color: var(--snk-grid-config__scrollbar--color-clicked) var(--snk-grid-config__scrollbar--color-background);
138
140
  padding-right: var(--snk-grid-config__main--padding-right);
139
141
  }
140
142
 
143
+ .grid-config__main::-webkit-scrollbar {
144
+ /*public*/
145
+ width: var(--snk-grid-config__scrollbar--width);
146
+ max-width: var(--snk-grid-config__scrollbar--width);
147
+ min-width: var(--snk-grid-config__scrollbar--width);
148
+ background-color: var(--snk-grid-config__scrollbar--color-background);
149
+ }
150
+
141
151
  .grid-config__main::-webkit-scrollbar-track {
142
152
  /*public*/
143
- background-color: var(--snk-grid-config__scrollbar--background-color-secondary);
153
+ background-color: var(--snk-grid-config__scrollbar--color-background);
154
+ border-radius: var(--snk-grid-config__scrollbar--border-radius);
144
155
  }
145
156
 
146
157
  .grid-config__main::-webkit-scrollbar-thumb {
147
158
  /*public*/
148
- background-color: var(--snk-grid-config__scrollbar--background-color-primary);
159
+ background-color: var(--snk-grid-config__scrollbar--color-default);
149
160
  border-radius: var(--snk-grid-config__scrollbar--border-radius);
150
161
  }
151
162
 
152
- .grid-config__main::-webkit-scrollbar {
163
+ .grid-config__main::-webkit-scrollbar-thumb:vertical:hover,
164
+ .grid-config__main::-webkit-scrollbar-thumb:horizontal:hover {
153
165
  /*public*/
154
- width: var(--snk-grid-config__scrollbar--width);
155
- max-width: var(--snk-grid-config__scrollbar--width);
156
- min-width: var(--snk-grid-config__scrollbar--width);
157
- background-color: var(--snk-grid-config__scrollbar--background-color-secondary);
166
+ background-color: var(--snk-grid-config__scrollbar--color-hover);
167
+ }
168
+
169
+ .grid-config__main::-webkit-scrollbar-thumb:vertical:active,
170
+ .grid-config__main::-webkit-scrollbar-thumb:horizontal:active {
171
+ /*public*/
172
+ background-color: var(--snk-grid-config__scrollbar--color-clicked);
158
173
  }
159
174
 
160
175
  .group-name {
@@ -1,4 +1,4 @@
1
- import { ApplicationContext, StringUtils, ElementIDUtils } from '@sankhyalabs/core';
1
+ import { StringUtils, ElementIDUtils } from '@sankhyalabs/core';
2
2
  import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
3
3
  import { h, Host } from '@stencil/core';
4
4
  import { ConfigStorage } from '../../../../lib/configs/ConfigStorage';
@@ -13,7 +13,7 @@ export class EzGridConfig {
13
13
  this._componenteInternalKey = Date.now();
14
14
  /**
15
15
  * Aba selecionada das configurações da grade.
16
- */
16
+ */
17
17
  this.selectedIndex = 0;
18
18
  }
19
19
  /* Creation Methods */
@@ -22,10 +22,10 @@ export class EzGridConfig {
22
22
  */
23
23
  async saveConfig(config) {
24
24
  var _a;
25
- if (config == undefined || ((_a = this._application) === null || _a === void 0 ? void 0 : _a.configName) == undefined) {
25
+ if (config == undefined || ((_a = this.application) === null || _a === void 0 ? void 0 : _a.configName) == undefined) {
26
26
  return;
27
27
  }
28
- ConfigStorage.saveGridConfig(config, this._application.configName)
28
+ ConfigStorage.saveGridConfig(config, this.application.configName)
29
29
  .then((response) => {
30
30
  if ((response === null || response === void 0 ? void 0 : response.resource) != undefined) {
31
31
  this.configChange.emit(config);
@@ -40,7 +40,7 @@ export class EzGridConfig {
40
40
  * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-grid.msg.ts"
41
41
  */
42
42
  getMessage(key, params) {
43
- return this._application.messagesBuilder.getMessage(key, params);
43
+ return this.application.messagesBuilder.getMessage(key, params);
44
44
  }
45
45
  createOrderList() {
46
46
  let newList = [];
@@ -459,9 +459,6 @@ export class EzGridConfig {
459
459
  this.locateColumn(new KeyboardEvent("arrow-right", { key: "ArrowRight" }), this._searchElement.value);
460
460
  }
461
461
  }
462
- componentWillLoad() {
463
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
464
- }
465
462
  componentDidLoad() {
466
463
  ElementIDUtils.addIDInfo(this._element);
467
464
  }
@@ -501,6 +498,26 @@ export class EzGridConfig {
501
498
  "reflect": false,
502
499
  "defaultValue": "0"
503
500
  },
501
+ "application": {
502
+ "type": "unknown",
503
+ "mutable": false,
504
+ "complexType": {
505
+ "original": "SnkApplication",
506
+ "resolved": "SnkApplication",
507
+ "references": {
508
+ "SnkApplication": {
509
+ "location": "import",
510
+ "path": "../../../snk-application/snk-application"
511
+ }
512
+ }
513
+ },
514
+ "required": false,
515
+ "optional": false,
516
+ "docs": {
517
+ "tags": [],
518
+ "text": "Refer\u00EAncia para o SnkApplication"
519
+ }
520
+ },
504
521
  "columns": {
505
522
  "type": "unknown",
506
523
  "mutable": true,