@sankhyalabs/sankhyablocks 10.1.0-dev.50 → 10.1.0-dev.52
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.
- package/dist/cjs/{SnkMultiSelectionListDataSource-293bc3d2.js → SnkMultiSelectionListDataSource-d341dd02.js} +67 -20
- package/dist/cjs/snk-crud.cjs.entry.js +14 -0
- package/dist/cjs/snk-detail-view.cjs.entry.js +17 -3
- package/dist/cjs/snk-grid.cjs.entry.js +12 -3
- package/dist/cjs/{snk-guides-viewer-b4ca3437.js → snk-guides-viewer-8e7a503b.js} +1 -1
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +1 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.css +4 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +17 -3
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.css +1 -1
- package/dist/collection/components/snk-crud/utils/taskbarUtils.js +14 -0
- package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +67 -20
- package/dist/collection/components/snk-grid/snk-grid.css +10 -5
- package/dist/collection/components/snk-grid/snk-grid.js +10 -1
- package/dist/components/ContinuousInsertUtils.js +67 -20
- package/dist/components/snk-crud.js +14 -0
- package/dist/components/snk-detail-view2.js +17 -3
- package/dist/components/snk-grid2.js +11 -2
- package/dist/esm/{SnkMultiSelectionListDataSource-f6cabd15.js → SnkMultiSelectionListDataSource-18abafb1.js} +67 -20
- package/dist/esm/snk-crud.entry.js +14 -0
- package/dist/esm/snk-detail-view.entry.js +17 -3
- package/dist/esm/snk-grid.entry.js +12 -3
- package/dist/esm/{snk-guides-viewer-cc37535b.js → snk-guides-viewer-adf39ea2.js} +1 -1
- package/dist/esm/snk-guides-viewer.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +1 -1
- package/dist/sankhyablocks/p-0a4cdcde.entry.js +1 -0
- package/dist/sankhyablocks/p-3d294185.entry.js +1 -0
- package/dist/sankhyablocks/{p-fec88660.entry.js → p-57c184a2.entry.js} +1 -1
- package/dist/sankhyablocks/p-5c250661.js +1 -0
- package/dist/sankhyablocks/{p-771b137e.js → p-b1bb4cf1.js} +1 -1
- package/dist/sankhyablocks/p-bd3c1aaa.entry.js +1 -0
- package/dist/sankhyablocks/{p-33492640.entry.js → p-dbdbb77a.entry.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +2 -1
- package/dist/types/components/snk-data-exporter/interfaces/IExporterProvider.d.ts +8 -0
- package/dist/types/components/snk-grid/snk-grid.d.ts +1 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-134702f6.entry.js +0 -1
- package/dist/sankhyablocks/p-7ad91135.entry.js +0 -1
- package/dist/sankhyablocks/p-9e77e136.js +0 -1
- package/dist/sankhyablocks/p-c0d6a821.entry.js +0 -1
|
@@ -168,41 +168,35 @@ class CommonsExporter {
|
|
|
168
168
|
return this.columnsState;
|
|
169
169
|
}
|
|
170
170
|
async buildColumnsMetadata(gridColumns) {
|
|
171
|
-
var _a
|
|
171
|
+
var _a;
|
|
172
172
|
const columnsMetadata = [];
|
|
173
|
+
const searchPlusDescriptionIds = this.collectSearchPlusDescriptionIds(gridColumns);
|
|
173
174
|
for (const column of gridColumns) {
|
|
175
|
+
if (this.isHiddenColumn(column)) {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
174
178
|
/**
|
|
175
|
-
*
|
|
179
|
+
* A grid adiciona uma coluna auxiliar para a descrição de campos SEARCHPLUS
|
|
180
|
+
* (ex.: "ENTITYNAME.DESCRIPTIONFIELD"). A descrição já é emitida ao processar
|
|
181
|
+
* o próprio SEARCHPLUS, então pulamos a auxiliar para evitar duplicar a coluna.
|
|
176
182
|
*/
|
|
177
|
-
if (
|
|
183
|
+
if (searchPlusDescriptionIds.has(column.name)) {
|
|
178
184
|
continue;
|
|
179
185
|
}
|
|
180
186
|
const fieldData = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField(column.name);
|
|
181
187
|
const customFormatter = await this.grid.getCustomValueFormatter(column.name);
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
-
const labelColumn = isUserInterfaceSEARCH ? "Cód. " : column.label;
|
|
185
|
-
let descriptionColumn = undefined;
|
|
188
|
+
const isSearchField = this.isSearchUserInterface(fieldData);
|
|
189
|
+
const labelColumn = isSearchField ? "Cód. " : column.label;
|
|
186
190
|
let columnData = {
|
|
187
191
|
id: column.name,
|
|
188
192
|
label: labelColumn,
|
|
189
|
-
width:
|
|
193
|
+
width: isSearchField ? (labelColumn.length * this.DEFAULT_FONT_SIZE) : column.width,
|
|
190
194
|
type: fieldData === null || fieldData === void 0 ? void 0 : fieldData.dataType,
|
|
191
195
|
userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
|
|
192
196
|
customFormatter
|
|
193
197
|
};
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const mergedFrom = fieldData.properties.mergedFrom;
|
|
197
|
-
const descriptionField = `${fieldData.properties.ENTITYNAME}.${fieldData.properties.DESCRIPTIONFIELD}`;
|
|
198
|
-
descriptionColumn = {
|
|
199
|
-
id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
|
|
200
|
-
label: labelDescription,
|
|
201
|
-
width: isUserInterfaceSEARCH && labelDescription ? (labelDescription.length * this.DEFAULT_FONT_SIZE - widthColumnDefault) : column.width,
|
|
202
|
-
type: core.DataType.TEXT,
|
|
203
|
-
userInterface: UnitMetadata.UserInterface.LONGTEXT,
|
|
204
|
-
descriptionFrom: fieldData.name
|
|
205
|
-
};
|
|
198
|
+
let descriptionColumn = isSearchField ? this.buildDescriptionColumn(fieldData, column) : undefined;
|
|
199
|
+
if (descriptionColumn) {
|
|
206
200
|
const newWidth = this.getWidthByMetaData(column === null || column === void 0 ? void 0 : column.width, columnData === null || columnData === void 0 ? void 0 : columnData.width, descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.width);
|
|
207
201
|
columnData = Object.assign(Object.assign({}, columnData), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.codWidth });
|
|
208
202
|
descriptionColumn = Object.assign(Object.assign({}, descriptionColumn), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.descWidth, label: (descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.label) || (column === null || column === void 0 ? void 0 : column.label) });
|
|
@@ -213,6 +207,59 @@ class CommonsExporter {
|
|
|
213
207
|
}
|
|
214
208
|
return columnsMetadata || [];
|
|
215
209
|
}
|
|
210
|
+
collectSearchPlusDescriptionIds(gridColumns) {
|
|
211
|
+
var _a;
|
|
212
|
+
const descriptionIds = new Set();
|
|
213
|
+
for (const column of gridColumns) {
|
|
214
|
+
if (this.isHiddenColumn(column)) {
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
const fieldData = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField(column.name);
|
|
218
|
+
if (!this.isSearchUserInterface(fieldData)) {
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const descriptionId = this.buildDescriptionColumnId(fieldData);
|
|
222
|
+
if (descriptionId) {
|
|
223
|
+
descriptionIds.add(descriptionId);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return descriptionIds;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* TODO: Analisar e criar uma melhor forma de tratar essa validação do "RECDESP".
|
|
230
|
+
*/
|
|
231
|
+
isHiddenColumn(column) {
|
|
232
|
+
return column.hidden && column.name !== "RECDESP";
|
|
233
|
+
}
|
|
234
|
+
isSearchUserInterface(fieldData) {
|
|
235
|
+
return (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UnitMetadata.UserInterface.SEARCH
|
|
236
|
+
|| (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UnitMetadata.UserInterface.SEARCHPLUS;
|
|
237
|
+
}
|
|
238
|
+
buildDescriptionColumnId(fieldData) {
|
|
239
|
+
const properties = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties;
|
|
240
|
+
if ((properties === null || properties === void 0 ? void 0 : properties.DESCRIPTIONFIELD) == undefined) {
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
const descriptionField = `${properties.ENTITYNAME}.${properties.DESCRIPTIONFIELD}`;
|
|
244
|
+
return properties.mergedFrom ? `${properties.mergedFrom}.${descriptionField}` : descriptionField;
|
|
245
|
+
}
|
|
246
|
+
buildDescriptionColumn(fieldData, column) {
|
|
247
|
+
var _a;
|
|
248
|
+
const id = this.buildDescriptionColumnId(fieldData);
|
|
249
|
+
if (!id) {
|
|
250
|
+
return undefined;
|
|
251
|
+
}
|
|
252
|
+
const labelDescription = (_a = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _a === void 0 ? void 0 : _a.DESCRIPTIONENTITY;
|
|
253
|
+
const widthColumnDefault = 60;
|
|
254
|
+
return {
|
|
255
|
+
id,
|
|
256
|
+
label: labelDescription,
|
|
257
|
+
width: labelDescription ? (labelDescription.length * this.DEFAULT_FONT_SIZE - widthColumnDefault) : column.width,
|
|
258
|
+
type: core.DataType.TEXT,
|
|
259
|
+
userInterface: UnitMetadata.UserInterface.LONGTEXT,
|
|
260
|
+
descriptionFrom: fieldData.name
|
|
261
|
+
};
|
|
262
|
+
}
|
|
216
263
|
getWidthByMetaData(maxWidth, widthCod, widthDescription) {
|
|
217
264
|
const totalCurrentWidth = widthCod + widthDescription;
|
|
218
265
|
const codPercentage = widthCod / totalCurrentWidth;
|
|
@@ -118,6 +118,16 @@ function insertCustomButtonsBeforeSpacer(buttons, customButtons) {
|
|
|
118
118
|
}
|
|
119
119
|
return [...customButtons, ...buttons];
|
|
120
120
|
}
|
|
121
|
+
function buildNavigationDisabledBtns(dataState) {
|
|
122
|
+
const navigationDisabled = [];
|
|
123
|
+
if (!(dataState === null || dataState === void 0 ? void 0 : dataState.hasPrevious)) {
|
|
124
|
+
navigationDisabled.push(taskbarElements.TaskbarElement.PREVIOUS);
|
|
125
|
+
}
|
|
126
|
+
if (!(dataState === null || dataState === void 0 ? void 0 : dataState.hasNext)) {
|
|
127
|
+
navigationDisabled.push(taskbarElements.TaskbarElement.NEXT);
|
|
128
|
+
}
|
|
129
|
+
return navigationDisabled;
|
|
130
|
+
}
|
|
121
131
|
function buildNativeTaskbarManager(currentViewMode, mergeTaskbarManager, messagesBuilder) {
|
|
122
132
|
var _a, _b;
|
|
123
133
|
const CUSTOM_BUTTONS = [
|
|
@@ -188,6 +198,10 @@ function buildNativeTaskbarManager(currentViewMode, mergeTaskbarManager, message
|
|
|
188
198
|
if (!hasSelectedRecord && buttonsRequiringSelection.includes(buttonName)) {
|
|
189
199
|
return false;
|
|
190
200
|
}
|
|
201
|
+
const navigationDisabled = buildNavigationDisabledBtns(dataState);
|
|
202
|
+
if (navigationDisabled.includes(buttonName)) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
191
205
|
return (_a = mergeTaskbarManager === null || mergeTaskbarManager === void 0 ? void 0 : mergeTaskbarManager.isEnabled(_, dataState, buttonName, originalValue)) !== null && _a !== void 0 ? _a : originalValue;
|
|
192
206
|
},
|
|
193
207
|
getMoreOptions(taskbarId, configName, dataState, currentActions) {
|
|
@@ -16,7 +16,7 @@ require('./filter-item-type.enum-a7ffdaa6.js');
|
|
|
16
16
|
require('./form-config-fetcher-45d1964c.js');
|
|
17
17
|
const constants = require('./constants-6d82e405.js');
|
|
18
18
|
const taskbarElements = require('./taskbar-elements-80eddec8.js');
|
|
19
|
-
const snkGuidesViewer = require('./snk-guides-viewer-
|
|
19
|
+
const snkGuidesViewer = require('./snk-guides-viewer-8e7a503b.js');
|
|
20
20
|
const SnkMessageBuilder = require('./SnkMessageBuilder-a9300ebe.js');
|
|
21
21
|
const utils = require('@sankhyalabs/ezui/dist/collection/utils');
|
|
22
22
|
require('./ConfigStorage-a1fab5ca.js');
|
|
@@ -76,7 +76,7 @@ class GuideBuilder {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
const snkDetailViewCss = ".sc-snk-detail-view-h{display:flex;row-gap:24px;flex-direction:column;width:100%;height:100%}.level-path.sc-snk-detail-view{color:var(--color--title-primary, #2B3A54);font-weight:var(--text-weight--medium, 400);padding-right:3px}.form-taskbar.sc-snk-detail-view{padding-bottom:var(--space--medium)}.grid-container.sc-snk-detail-view{background-color:#FFF;min-height:100px;height:100%}.detail-header.sc-snk-detail-view{padding-bottom:0}snk-data-unit.sc-snk-detail-view{flex:1}snk-grid.sc-snk-detail-view{height:calc(100% -
|
|
79
|
+
const snkDetailViewCss = ".sc-snk-detail-view-h{display:flex;row-gap:24px;flex-direction:column;width:100%;height:100%}.level-path.sc-snk-detail-view{color:var(--color--title-primary, #2B3A54);font-weight:var(--text-weight--medium, 400);padding-right:3px}.form-taskbar.sc-snk-detail-view{padding-bottom:var(--space--medium)}.grid-container.sc-snk-detail-view{background-color:#FFF;min-height:100px;height:100%}.detail-header.sc-snk-detail-view{padding-bottom:0}snk-data-unit.sc-snk-detail-view{flex:1}snk-grid.sc-snk-detail-view{height:calc(100% - 56px);--snk-grid__header-padding:var(--space--4, 4px);--snk-grid-padding:var(--space--8, 8px);--snk-grid-box-shadow:unset}";
|
|
80
80
|
|
|
81
81
|
const SnkDetailView = class {
|
|
82
82
|
constructor(hostRef) {
|
|
@@ -262,6 +262,9 @@ const SnkDetailView = class {
|
|
|
262
262
|
return [];
|
|
263
263
|
}
|
|
264
264
|
emitSwitchEvent(mode) {
|
|
265
|
+
if (mode === constants.VIEW_MODE.GRID) {
|
|
266
|
+
this.dataUnit.isMultipleEdition = false;
|
|
267
|
+
}
|
|
265
268
|
const guideId = mode === constants.VIEW_MODE.GRID ? this.stripFormPattern(this.branchGuide.id) : this.getFormGuideId();
|
|
266
269
|
if (guideId) {
|
|
267
270
|
this.snkSwitchGuide.emit(guideId);
|
|
@@ -272,6 +275,11 @@ const SnkDetailView = class {
|
|
|
272
275
|
this.emitSwitchEvent(constants.VIEW_MODE.GRID);
|
|
273
276
|
evt.stopPropagation();
|
|
274
277
|
}
|
|
278
|
+
if (evt.detail === taskbarElements.TaskbarElement.UPDATE_MULTIPLE) {
|
|
279
|
+
this.dataUnit.isMultipleEdition = true;
|
|
280
|
+
this.emitSwitchEvent(constants.VIEW_MODE.FORM);
|
|
281
|
+
evt.stopPropagation();
|
|
282
|
+
}
|
|
275
283
|
if (evt.detail === taskbarElements.TaskbarElement.FORM_MODE || evt.detail === taskbarElements.TaskbarElement.UPDATE) {
|
|
276
284
|
this.emitSwitchEvent(constants.VIEW_MODE.FORM);
|
|
277
285
|
evt.stopPropagation();
|
|
@@ -316,6 +324,12 @@ const SnkDetailView = class {
|
|
|
316
324
|
this.addErrorBadgeToBranchGuide();
|
|
317
325
|
}
|
|
318
326
|
else if (action.type === core.Action.DATA_LOADED) {
|
|
327
|
+
this.handleDataLoaded();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
handleDataLoaded() {
|
|
331
|
+
var _a;
|
|
332
|
+
if (!((_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getSelectedRecord())) {
|
|
319
333
|
this.dataUnit.selectFirst();
|
|
320
334
|
}
|
|
321
335
|
}
|
|
@@ -372,7 +386,7 @@ const SnkDetailView = class {
|
|
|
372
386
|
render() {
|
|
373
387
|
this.updateLabel();
|
|
374
388
|
//const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
|
|
375
|
-
return (index.h(index.Host, null, index.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 === constants.VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, index.h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, index.h("stack-item", null, index.h("div", { class: "ez-box ez-box--shadow grid-container" }, index.h("div", { class: "ez-title--primary ez-size-width--full ez-padding--large detail-header" }, index.h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? index.h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), index.h("snk-grid", { class: "ez-size-width--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(constants.VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: this.presentationMode, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false, enableGridInsert: true, autoLoad: true }))), index.h("stack-item", null, index.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(), fieldToFocus: this._fieldToGetFocus, label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems), onSnkRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this), fieldSearch: this._fieldSearch, entityPath: this.entityName }, index.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,ACTIONS_BUTTON,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: this.presentationMode, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS", actionsSettingsList: this.getSettingsListForm() }, index.h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))))), index.h("snk-attach", { ref: (ref) => this._snkAttach = ref, registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName }))));
|
|
389
|
+
return (index.h(index.Host, null, index.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 === constants.VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, index.h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, index.h("stack-item", null, index.h("div", { class: "ez-box ez-box--shadow grid-container" }, index.h("div", { class: "ez-title--primary ez-size-width--full ez-padding--large detail-header" }, index.h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? index.h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), index.h("snk-grid", { class: "ez-size-width--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(constants.VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: this.presentationMode, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false, enableGridInsert: true, autoLoad: true, multipleEditionEnabled: true, multipleSelection: true }))), index.h("stack-item", null, index.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(), fieldToFocus: this._fieldToGetFocus, label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems), onSnkRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this), fieldSearch: this._fieldSearch, entityPath: this.entityName }, index.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,ACTIONS_BUTTON,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: this.presentationMode, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS", actionsSettingsList: this.getSettingsListForm() }, index.h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))))), index.h("snk-attach", { ref: (ref) => this._snkAttach = ref, registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName }))));
|
|
376
390
|
}
|
|
377
391
|
get _element() { return index.getElement(this); }
|
|
378
392
|
static get watchers() { return {
|
|
@@ -8,7 +8,7 @@ const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
|
|
|
8
8
|
const utils = require('@sankhyalabs/ezui/dist/collection/utils');
|
|
9
9
|
require('./DataFetcher-384d2ce8.js');
|
|
10
10
|
require('./ISave-ecbe9336.js');
|
|
11
|
-
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-
|
|
11
|
+
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-d341dd02.js');
|
|
12
12
|
const index$1 = require('./index-e3e39724.js');
|
|
13
13
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
|
14
14
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
|
@@ -84,7 +84,7 @@ class ServerSideExporterProvider extends SnkMultiSelectionListDataSource.Commons
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
const snkGridCss = ".sc-snk-grid-h{--snk-grid-min-height:300px;--snk-grid-padding:var(--space--small)}.snk-grid__container.sc-snk-grid{display:flex;height:100%;width:calc(100% - var(--space--12, 12px));margin:var(--snk-grid-
|
|
87
|
+
const snkGridCss = ".sc-snk-grid-h{--snk-grid-min-height:300px;--snk-grid-padding:unset;--snk-grid-margin:var(--space--small);--snk-grid-box-shadow:var(--shadow--small);--snk-grid__header-padding:unset}.snk-grid__container.sc-snk-grid{display:flex;height:100%;width:calc(100% - var(--space--12, 12px));margin:var(--snk-grid-margin);outline:none;border:1px solid var(--color--strokes, #E1E2E5);border-radius:var(--border--radius-12, 12px);box-shadow:var(--snk-grid-box-shadow);padding:var(--snk-grid-padding);--snk-grid-header--min-height:var(--space--52)}.snk-grid__header.sc-snk-grid{width:100%;display:flex;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;min-height:var(--snk-grid-header--min-height);padding-top:var(--snk-grid__header-padding);padding-right:var(--snk-grid__header-padding)}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--medium);margin-right:var(--space--0);align-self:stretch}.snk-grid__header.sc-snk-grid snk-taskbar.sc-snk-grid{display:flex;align-items:flex-start;min-height:var(--snk-grid-header--min-height)}.snk-grid__header.sc-snk-grid ez-tooltip.sc-snk-grid{width:auto;margin-inline:var(--space--8, 8px)}.snk-grid__table.sc-snk-grid{min-height:var(--snk-grid-min-height)}.snk-grid-container__without-shadow.sc-snk-grid{--ezgrid__container--shadow:unset}.snk-grid-container__footer.sc-snk-grid{background-color:var(--background--xlight, #FFF);border-top:1px solid var(--color--strokes, #E1E2E5);border-radius:0 0 var(--border--radius-medium) var(--border--radius-medium)}";
|
|
88
88
|
|
|
89
89
|
const SnkGrid = class {
|
|
90
90
|
constructor(hostRef) {
|
|
@@ -107,7 +107,7 @@ const SnkGrid = class {
|
|
|
107
107
|
'snkGridHeaderTaskbar.unselected': ['REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
108
108
|
'snkGridHeaderTaskbar.selected': this.getGridHeaderSelectedBtns(),
|
|
109
109
|
'snkGridHeaderTaskbar.detail.unselected': ['REFRESH', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
110
|
-
'snkGridHeaderTaskbar.detail.selected':
|
|
110
|
+
'snkGridHeaderTaskbar.detail.selected': this.getDetailGridSelectedBtns(),
|
|
111
111
|
'snkGridHeaderTaskbar.singleTaskbar.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
112
112
|
'snkGridHeaderTaskbar.singleTaskbar.selected': ['UPDATE', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'ATTACH', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON'],
|
|
113
113
|
'snkGridHeaderTaskbar.singleTaskbar.detail.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
@@ -174,6 +174,15 @@ const SnkGrid = class {
|
|
|
174
174
|
this.hideHeader = false;
|
|
175
175
|
this.hideGridTaskbar = false;
|
|
176
176
|
}
|
|
177
|
+
getDetailGridSelectedBtns() {
|
|
178
|
+
const btns = [
|
|
179
|
+
taskbarElements.TaskbarElement.UPDATE, taskbarElements.TaskbarElement.ATTACH, taskbarElements.TaskbarElement.CLONE, taskbarElements.TaskbarElement.MORE_OPTIONS,
|
|
180
|
+
taskbarElements.TaskbarElement.DIVIDER, taskbarElements.TaskbarElement.REFRESH, taskbarElements.TaskbarElement.ACTIONS_BUTTON
|
|
181
|
+
];
|
|
182
|
+
if (this.multipleEditionEnabled)
|
|
183
|
+
btns.unshift(taskbarElements.TaskbarElement.UPDATE_MULTIPLE);
|
|
184
|
+
return btns;
|
|
185
|
+
}
|
|
177
186
|
getGridHeaderSelectedBtns() {
|
|
178
187
|
const btns = [
|
|
179
188
|
taskbarElements.TaskbarElement.UPDATE, taskbarElements.TaskbarElement.CLONE, taskbarElements.TaskbarElement.REMOVE,
|
|
@@ -8,7 +8,7 @@ const constants = require('./constants-6d82e405.js');
|
|
|
8
8
|
const SnkFormConfigManager = require('./SnkFormConfigManager-44386305.js');
|
|
9
9
|
const taskbarElements = require('./taskbar-elements-80eddec8.js');
|
|
10
10
|
|
|
11
|
-
const snkGuidesViewerCss = ".sc-snk-guides-viewer-h{--snk-guides-viewer--space-large:var(--space--large, 24px);--snk-guides-viewer--space-small:var(--space--2xs, 8px);--snk-guides-viewer__header--min-height:132px;--snk-guides-viewer__header--z-index:var(--more-visible, 2);--snk-guides-viewer__header--background-color:var(--background--body, #fafcff);--snk-guides-viewer__guide-navigator--width:340px;--snk-workspace--header-height:40px;display:block;outline:none}ez-guide-navigator.sc-snk-guides-viewer{--ez-guide-navigator--border-radius:var(--space--12, 12px)}snk-form-view.sc-snk-guides-viewer{width:100%}stack-item.snk-guides-viewer.sc-snk-guides-viewer{display:grid}stack-item.sc-snk-guides-viewer.sc-snk-guides-viewer{display:grid;min-height:100%}.snk-guides-viewer.sc-snk-guides-viewer{position:relative;padding:0 var(--snk-guides-viewer--space-small);padding-bottom:var(--snk-guides-viewer--space-small)}.snk-guides-viewer__detail-container.sc-snk-guides-viewer{display:flex;row-gap:24px;flex-direction:column;max-height:calc(100vh - var(--snk-guides-viewer__header--min-height));overflow-y:auto}.snk-guides-viewer__header.sc-snk-guides-viewer{position:sticky;align-items:center;top:0;z-index:var(--snk-guides-viewer__header--z-index);background-color:var(--snk-guides-viewer__header--background-color);min-height:var(--snk-guides-viewer__header--min-height);width:calc(100% + (var(--snk-guides-viewer--space-large) * 2));padding-left:var(--snk-guides-viewer--space-large);padding-right:var(--snk-guides-viewer--space-large);padding-top:var(--snk-guides-viewer--space-large);padding-bottom:var(--snk-guides-viewer--space-small);margin-left:calc(var(--snk-guides-viewer--space-large) * -1);margin-right:calc(var(--snk-guides-viewer--space-large) * -1);margin-bottom:var(--snk-guides-viewer--space-small)}.snk-guides-viewer__header-breadcrumb.sc-snk-guides-viewer{width:25%;display:flex}.snk-guides-viewer__header-taskbar.sc-snk-guides-viewer{width:75%}.snk-guides-viewer__container.sc-snk-guides-viewer{display:grid;grid-template-columns:minmax(0, auto) minmax(0, 100%);height:100%;column-gap:var(--snk-guides-viewer--space-small)}.snk-guides-viewer__guide-navigator.sc-snk-guides-viewer{position:sticky;top:var(--snk-guides-viewer--space-small);height:
|
|
11
|
+
const snkGuidesViewerCss = ".sc-snk-guides-viewer-h{--snk-guides-viewer--space-large:var(--space--large, 24px);--snk-guides-viewer--space-small:var(--space--2xs, 8px);--snk-guides-viewer__header--min-height:132px;--snk-guides-viewer__header--z-index:var(--more-visible, 2);--snk-guides-viewer__header--background-color:var(--background--body, #fafcff);--snk-guides-viewer__guide-navigator--width:340px;--snk-workspace--header-height:40px;display:block;outline:none}ez-guide-navigator.sc-snk-guides-viewer{--ez-guide-navigator--border-radius:var(--space--12, 12px)}snk-form-view.sc-snk-guides-viewer{width:100%}stack-item.snk-guides-viewer.sc-snk-guides-viewer{display:grid}stack-item.sc-snk-guides-viewer.sc-snk-guides-viewer{display:grid;min-height:100%}.snk-guides-viewer.sc-snk-guides-viewer{position:relative;padding:0 var(--snk-guides-viewer--space-small);padding-bottom:var(--snk-guides-viewer--space-small)}.snk-guides-viewer__detail-container.sc-snk-guides-viewer{display:flex;row-gap:24px;flex-direction:column;max-height:calc(100vh - var(--snk-guides-viewer__header--min-height));overflow-y:auto}.snk-guides-viewer__header.sc-snk-guides-viewer{position:sticky;align-items:center;top:0;z-index:var(--snk-guides-viewer__header--z-index);background-color:var(--snk-guides-viewer__header--background-color);min-height:var(--snk-guides-viewer__header--min-height);width:calc(100% + (var(--snk-guides-viewer--space-large) * 2));padding-left:var(--snk-guides-viewer--space-large);padding-right:var(--snk-guides-viewer--space-large);padding-top:var(--snk-guides-viewer--space-large);padding-bottom:var(--snk-guides-viewer--space-small);margin-left:calc(var(--snk-guides-viewer--space-large) * -1);margin-right:calc(var(--snk-guides-viewer--space-large) * -1);margin-bottom:var(--snk-guides-viewer--space-small)}.snk-guides-viewer__header-breadcrumb.sc-snk-guides-viewer{width:25%;display:flex}.snk-guides-viewer__header-taskbar.sc-snk-guides-viewer{width:75%}.snk-guides-viewer__container.sc-snk-guides-viewer{display:grid;grid-template-columns:minmax(0, auto) minmax(0, 100%);height:100%;column-gap:var(--snk-guides-viewer--space-small)}.snk-guides-viewer__guide-navigator.sc-snk-guides-viewer{position:sticky;top:var(--snk-guides-viewer--space-small);height:calc(100vh - var(--snk-guides-viewer__header--min-height))}.snk-guides-viewer__guide-navigator[open].sc-snk-guides-viewer{width:var(--snk-guides-viewer__guide-navigator--width);max-width:var(--snk-guides-viewer__guide-navigator--width);min-width:var(--snk-guides-viewer__guide-navigator--width)}.snk-guides-viewer__detail-content.sc-snk-guides-viewer{min-height:100%;align-items:flex-start;align-content:flex-start}";
|
|
12
12
|
|
|
13
13
|
const FORM_NAME_PREFIX = "__FORM:";
|
|
14
14
|
const SnkGuidesViewer = class {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const snkGuidesViewer = require('./snk-guides-viewer-
|
|
5
|
+
const snkGuidesViewer = require('./snk-guides-viewer-8e7a503b.js');
|
|
6
6
|
require('./index-1894343a.js');
|
|
7
7
|
require('@sankhyalabs/core');
|
|
8
8
|
require('@sankhyalabs/ezui/dist/collection/utils');
|
|
@@ -9,7 +9,7 @@ const constants = require('./constants-6d82e405.js');
|
|
|
9
9
|
const taskbarElements = require('./taskbar-elements-80eddec8.js');
|
|
10
10
|
require('./DataFetcher-384d2ce8.js');
|
|
11
11
|
require('./ISave-ecbe9336.js');
|
|
12
|
-
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-
|
|
12
|
+
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-d341dd02.js');
|
|
13
13
|
const index$1 = require('./index-e3e39724.js');
|
|
14
14
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
|
15
15
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Action as DUAction, KeyboardManager, StringUtils } from '@sankhyalabs/core';
|
|
2
|
-
import {
|
|
2
|
+
import { forceUpdate, h, Host, } from '@stencil/core';
|
|
3
3
|
import { SnkFormConfigManager } from '../../../snk-form-config/SnkFormConfigManager';
|
|
4
|
-
import { buildFormMetadata } from
|
|
4
|
+
import { buildFormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
|
|
5
5
|
import { PresentationMode } from '../../../../lib';
|
|
6
6
|
import { TaskbarElement } from '../../../snk-taskbar/elements/taskbar-elements';
|
|
7
7
|
import { VIEW_MODE } from '../../../../lib/utils/constants';
|
|
@@ -189,6 +189,9 @@ export class SnkDetailView {
|
|
|
189
189
|
return [];
|
|
190
190
|
}
|
|
191
191
|
emitSwitchEvent(mode) {
|
|
192
|
+
if (mode === VIEW_MODE.GRID) {
|
|
193
|
+
this.dataUnit.isMultipleEdition = false;
|
|
194
|
+
}
|
|
192
195
|
const guideId = mode === VIEW_MODE.GRID ? this.stripFormPattern(this.branchGuide.id) : this.getFormGuideId();
|
|
193
196
|
if (guideId) {
|
|
194
197
|
this.snkSwitchGuide.emit(guideId);
|
|
@@ -199,6 +202,11 @@ export class SnkDetailView {
|
|
|
199
202
|
this.emitSwitchEvent(VIEW_MODE.GRID);
|
|
200
203
|
evt.stopPropagation();
|
|
201
204
|
}
|
|
205
|
+
if (evt.detail === TaskbarElement.UPDATE_MULTIPLE) {
|
|
206
|
+
this.dataUnit.isMultipleEdition = true;
|
|
207
|
+
this.emitSwitchEvent(VIEW_MODE.FORM);
|
|
208
|
+
evt.stopPropagation();
|
|
209
|
+
}
|
|
202
210
|
if (evt.detail === TaskbarElement.FORM_MODE || evt.detail === TaskbarElement.UPDATE) {
|
|
203
211
|
this.emitSwitchEvent(VIEW_MODE.FORM);
|
|
204
212
|
evt.stopPropagation();
|
|
@@ -243,6 +251,12 @@ export class SnkDetailView {
|
|
|
243
251
|
this.addErrorBadgeToBranchGuide();
|
|
244
252
|
}
|
|
245
253
|
else if (action.type === DUAction.DATA_LOADED) {
|
|
254
|
+
this.handleDataLoaded();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
handleDataLoaded() {
|
|
258
|
+
var _a;
|
|
259
|
+
if (!((_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getSelectedRecord())) {
|
|
246
260
|
this.dataUnit.selectFirst();
|
|
247
261
|
}
|
|
248
262
|
}
|
|
@@ -299,7 +313,7 @@ export class SnkDetailView {
|
|
|
299
313
|
render() {
|
|
300
314
|
this.updateLabel();
|
|
301
315
|
//const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
|
|
302
|
-
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-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", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: this.presentationMode, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false, enableGridInsert: true, autoLoad: 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(), fieldToFocus: this._fieldToGetFocus, label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems), onSnkRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this), fieldSearch: this._fieldSearch, entityPath: this.entityName }, 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,ACTIONS_BUTTON,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: this.presentationMode, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS", actionsSettingsList: this.getSettingsListForm() }, h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))))), h("snk-attach", { ref: (ref) => this._snkAttach = ref, registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName }))));
|
|
316
|
+
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-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", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: this.presentationMode, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false, enableGridInsert: true, autoLoad: true, multipleEditionEnabled: true, multipleSelection: 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(), fieldToFocus: this._fieldToGetFocus, label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems), onSnkRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this), fieldSearch: this._fieldSearch, entityPath: this.entityName }, 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,ACTIONS_BUTTON,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: this.presentationMode, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS", actionsSettingsList: this.getSettingsListForm() }, h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))))), h("snk-attach", { ref: (ref) => this._snkAttach = ref, registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName }))));
|
|
303
317
|
}
|
|
304
318
|
static get is() { return "snk-detail-view"; }
|
|
305
319
|
static get encapsulation() { return "scoped"; }
|
|
@@ -37,6 +37,16 @@ function insertCustomButtonsBeforeSpacer(buttons, customButtons) {
|
|
|
37
37
|
}
|
|
38
38
|
return [...customButtons, ...buttons];
|
|
39
39
|
}
|
|
40
|
+
function buildNavigationDisabledBtns(dataState) {
|
|
41
|
+
const navigationDisabled = [];
|
|
42
|
+
if (!(dataState === null || dataState === void 0 ? void 0 : dataState.hasPrevious)) {
|
|
43
|
+
navigationDisabled.push(TaskbarElement.PREVIOUS);
|
|
44
|
+
}
|
|
45
|
+
if (!(dataState === null || dataState === void 0 ? void 0 : dataState.hasNext)) {
|
|
46
|
+
navigationDisabled.push(TaskbarElement.NEXT);
|
|
47
|
+
}
|
|
48
|
+
return navigationDisabled;
|
|
49
|
+
}
|
|
40
50
|
export function buildNativeTaskbarManager(currentViewMode, mergeTaskbarManager, messagesBuilder) {
|
|
41
51
|
var _a, _b;
|
|
42
52
|
const CUSTOM_BUTTONS = [
|
|
@@ -107,6 +117,10 @@ export function buildNativeTaskbarManager(currentViewMode, mergeTaskbarManager,
|
|
|
107
117
|
if (!hasSelectedRecord && buttonsRequiringSelection.includes(buttonName)) {
|
|
108
118
|
return false;
|
|
109
119
|
}
|
|
120
|
+
const navigationDisabled = buildNavigationDisabledBtns(dataState);
|
|
121
|
+
if (navigationDisabled.includes(buttonName)) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
110
124
|
return (_a = mergeTaskbarManager === null || mergeTaskbarManager === void 0 ? void 0 : mergeTaskbarManager.isEnabled(_, dataState, buttonName, originalValue)) !== null && _a !== void 0 ? _a : originalValue;
|
|
111
125
|
},
|
|
112
126
|
getMoreOptions(taskbarId, configName, dataState, currentActions) {
|
|
@@ -17,41 +17,35 @@ export class CommonsExporter {
|
|
|
17
17
|
return this.columnsState;
|
|
18
18
|
}
|
|
19
19
|
async buildColumnsMetadata(gridColumns) {
|
|
20
|
-
var _a
|
|
20
|
+
var _a;
|
|
21
21
|
const columnsMetadata = [];
|
|
22
|
+
const searchPlusDescriptionIds = this.collectSearchPlusDescriptionIds(gridColumns);
|
|
22
23
|
for (const column of gridColumns) {
|
|
24
|
+
if (this.isHiddenColumn(column)) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
23
27
|
/**
|
|
24
|
-
*
|
|
28
|
+
* A grid adiciona uma coluna auxiliar para a descrição de campos SEARCHPLUS
|
|
29
|
+
* (ex.: "ENTITYNAME.DESCRIPTIONFIELD"). A descrição já é emitida ao processar
|
|
30
|
+
* o próprio SEARCHPLUS, então pulamos a auxiliar para evitar duplicar a coluna.
|
|
25
31
|
*/
|
|
26
|
-
if (
|
|
32
|
+
if (searchPlusDescriptionIds.has(column.name)) {
|
|
27
33
|
continue;
|
|
28
34
|
}
|
|
29
35
|
const fieldData = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField(column.name);
|
|
30
36
|
const customFormatter = await this.grid.getCustomValueFormatter(column.name);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const labelColumn = isUserInterfaceSEARCH ? "Cód. " : column.label;
|
|
34
|
-
let descriptionColumn = undefined;
|
|
37
|
+
const isSearchField = this.isSearchUserInterface(fieldData);
|
|
38
|
+
const labelColumn = isSearchField ? "Cód. " : column.label;
|
|
35
39
|
let columnData = {
|
|
36
40
|
id: column.name,
|
|
37
41
|
label: labelColumn,
|
|
38
|
-
width:
|
|
42
|
+
width: isSearchField ? (labelColumn.length * this.DEFAULT_FONT_SIZE) : column.width,
|
|
39
43
|
type: fieldData === null || fieldData === void 0 ? void 0 : fieldData.dataType,
|
|
40
44
|
userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
|
|
41
45
|
customFormatter
|
|
42
46
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const mergedFrom = fieldData.properties.mergedFrom;
|
|
46
|
-
const descriptionField = `${fieldData.properties.ENTITYNAME}.${fieldData.properties.DESCRIPTIONFIELD}`;
|
|
47
|
-
descriptionColumn = {
|
|
48
|
-
id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
|
|
49
|
-
label: labelDescription,
|
|
50
|
-
width: isUserInterfaceSEARCH && labelDescription ? (labelDescription.length * this.DEFAULT_FONT_SIZE - widthColumnDefault) : column.width,
|
|
51
|
-
type: DataType.TEXT,
|
|
52
|
-
userInterface: UserInterface.LONGTEXT,
|
|
53
|
-
descriptionFrom: fieldData.name
|
|
54
|
-
};
|
|
47
|
+
let descriptionColumn = isSearchField ? this.buildDescriptionColumn(fieldData, column) : undefined;
|
|
48
|
+
if (descriptionColumn) {
|
|
55
49
|
const newWidth = this.getWidthByMetaData(column === null || column === void 0 ? void 0 : column.width, columnData === null || columnData === void 0 ? void 0 : columnData.width, descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.width);
|
|
56
50
|
columnData = Object.assign(Object.assign({}, columnData), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.codWidth });
|
|
57
51
|
descriptionColumn = Object.assign(Object.assign({}, descriptionColumn), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.descWidth, label: (descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.label) || (column === null || column === void 0 ? void 0 : column.label) });
|
|
@@ -63,6 +57,59 @@ export class CommonsExporter {
|
|
|
63
57
|
;
|
|
64
58
|
return columnsMetadata || [];
|
|
65
59
|
}
|
|
60
|
+
collectSearchPlusDescriptionIds(gridColumns) {
|
|
61
|
+
var _a;
|
|
62
|
+
const descriptionIds = new Set();
|
|
63
|
+
for (const column of gridColumns) {
|
|
64
|
+
if (this.isHiddenColumn(column)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const fieldData = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField(column.name);
|
|
68
|
+
if (!this.isSearchUserInterface(fieldData)) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const descriptionId = this.buildDescriptionColumnId(fieldData);
|
|
72
|
+
if (descriptionId) {
|
|
73
|
+
descriptionIds.add(descriptionId);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return descriptionIds;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* TODO: Analisar e criar uma melhor forma de tratar essa validação do "RECDESP".
|
|
80
|
+
*/
|
|
81
|
+
isHiddenColumn(column) {
|
|
82
|
+
return column.hidden && column.name !== "RECDESP";
|
|
83
|
+
}
|
|
84
|
+
isSearchUserInterface(fieldData) {
|
|
85
|
+
return (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UserInterface.SEARCH
|
|
86
|
+
|| (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UserInterface.SEARCHPLUS;
|
|
87
|
+
}
|
|
88
|
+
buildDescriptionColumnId(fieldData) {
|
|
89
|
+
const properties = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties;
|
|
90
|
+
if ((properties === null || properties === void 0 ? void 0 : properties.DESCRIPTIONFIELD) == undefined) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
const descriptionField = `${properties.ENTITYNAME}.${properties.DESCRIPTIONFIELD}`;
|
|
94
|
+
return properties.mergedFrom ? `${properties.mergedFrom}.${descriptionField}` : descriptionField;
|
|
95
|
+
}
|
|
96
|
+
buildDescriptionColumn(fieldData, column) {
|
|
97
|
+
var _a;
|
|
98
|
+
const id = this.buildDescriptionColumnId(fieldData);
|
|
99
|
+
if (!id) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const labelDescription = (_a = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _a === void 0 ? void 0 : _a.DESCRIPTIONENTITY;
|
|
103
|
+
const widthColumnDefault = 60;
|
|
104
|
+
return {
|
|
105
|
+
id,
|
|
106
|
+
label: labelDescription,
|
|
107
|
+
width: labelDescription ? (labelDescription.length * this.DEFAULT_FONT_SIZE - widthColumnDefault) : column.width,
|
|
108
|
+
type: DataType.TEXT,
|
|
109
|
+
userInterface: UserInterface.LONGTEXT,
|
|
110
|
+
descriptionFrom: fieldData.name
|
|
111
|
+
};
|
|
112
|
+
}
|
|
66
113
|
getWidthByMetaData(maxWidth, widthCod, widthDescription) {
|
|
67
114
|
const totalCurrentWidth = widthCod + widthDescription;
|
|
68
115
|
const codPercentage = widthCod / totalCurrentWidth;
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
--snk-grid-min-height: 300px;
|
|
3
|
-
--snk-grid-padding:
|
|
3
|
+
--snk-grid-padding: unset;
|
|
4
|
+
--snk-grid-margin: var(--space--small);
|
|
5
|
+
--snk-grid-box-shadow: var(--shadow--small);
|
|
6
|
+
--snk-grid__header-padding: unset;
|
|
4
7
|
}
|
|
5
8
|
|
|
6
9
|
.snk-grid__container {
|
|
7
10
|
display: flex;
|
|
8
11
|
height: 100%;
|
|
9
12
|
width: calc(100% - var(--space--12, 12px));
|
|
10
|
-
|
|
11
|
-
margin: var(--snk-grid-padding);
|
|
13
|
+
margin: var(--snk-grid-margin);
|
|
12
14
|
outline: none;
|
|
13
15
|
border: 1px solid var(--color--strokes, #E1E2E5);
|
|
14
16
|
border-radius: var(--border--radius-12, 12px);
|
|
15
|
-
box-shadow: var(--shadow
|
|
17
|
+
box-shadow: var(--snk-grid-box-shadow);
|
|
18
|
+
padding: var(--snk-grid-padding);
|
|
16
19
|
|
|
17
20
|
--snk-grid-header--min-height: var(--space--52);
|
|
18
21
|
}
|
|
@@ -24,6 +27,8 @@
|
|
|
24
27
|
justify-content: flex-end;
|
|
25
28
|
align-items: flex-start;
|
|
26
29
|
min-height: var(--snk-grid-header--min-height);
|
|
30
|
+
padding-top: var(--snk-grid__header-padding);
|
|
31
|
+
padding-right: var(--snk-grid__header-padding);
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
.snk-grid__filter-bar {
|
|
@@ -60,4 +65,4 @@
|
|
|
60
65
|
background-color: var(--background--xlight, #FFF);
|
|
61
66
|
border-top: 1px solid var(--color--strokes, #E1E2E5);
|
|
62
67
|
border-radius: 0 0 var(--border--radius-medium) var(--border--radius-medium);
|
|
63
|
-
}
|
|
68
|
+
}
|
|
@@ -31,7 +31,7 @@ export class SnkGrid {
|
|
|
31
31
|
'snkGridHeaderTaskbar.unselected': ['REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
32
32
|
'snkGridHeaderTaskbar.selected': this.getGridHeaderSelectedBtns(),
|
|
33
33
|
'snkGridHeaderTaskbar.detail.unselected': ['REFRESH', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
34
|
-
'snkGridHeaderTaskbar.detail.selected':
|
|
34
|
+
'snkGridHeaderTaskbar.detail.selected': this.getDetailGridSelectedBtns(),
|
|
35
35
|
'snkGridHeaderTaskbar.singleTaskbar.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
36
36
|
'snkGridHeaderTaskbar.singleTaskbar.selected': ['UPDATE', 'CLONE', 'REMOVE', 'MORE_OPTIONS', 'DIVIDER', 'ATTACH', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'DATA_EXPORTER', 'ACTIONS_BUTTON'],
|
|
37
37
|
'snkGridHeaderTaskbar.singleTaskbar.detail.unselected': ['INSERT', 'FORM_MODE', 'CONFIGURATOR', 'REFRESH', 'ACTIONS_BUTTON', 'MORE_OPTIONS'],
|
|
@@ -98,6 +98,15 @@ export class SnkGrid {
|
|
|
98
98
|
this.hideHeader = false;
|
|
99
99
|
this.hideGridTaskbar = false;
|
|
100
100
|
}
|
|
101
|
+
getDetailGridSelectedBtns() {
|
|
102
|
+
const btns = [
|
|
103
|
+
TaskbarElement.UPDATE, TaskbarElement.ATTACH, TaskbarElement.CLONE, TaskbarElement.MORE_OPTIONS,
|
|
104
|
+
TaskbarElement.DIVIDER, TaskbarElement.REFRESH, TaskbarElement.ACTIONS_BUTTON
|
|
105
|
+
];
|
|
106
|
+
if (this.multipleEditionEnabled)
|
|
107
|
+
btns.unshift(TaskbarElement.UPDATE_MULTIPLE);
|
|
108
|
+
return btns;
|
|
109
|
+
}
|
|
101
110
|
getGridHeaderSelectedBtns() {
|
|
102
111
|
const btns = [
|
|
103
112
|
TaskbarElement.UPDATE, TaskbarElement.CLONE, TaskbarElement.REMOVE,
|