@sankhyalabs/sankhyablocks 1.3.31-beta.17 → 1.3.31-beta.18
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/{SnkMessageBuilder-cb132e6d.js → SnkMessageBuilder-02c2ca02.js} +7 -3
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +376 -256
- package/dist/cjs/snk-crud.cjs.entry.js +2 -1
- package/dist/cjs/snk-data-unit.cjs.entry.js +1 -1
- package/dist/cjs/snk-filter-bar.cjs.entry.js +61 -13
- package/dist/cjs/snk-filter-detail.cjs.entry.js +6 -1
- package/dist/cjs/snk-filter-item.cjs.entry.js +12 -0
- package/dist/cjs/snk-filter-list.cjs.entry.js +2 -2
- package/dist/cjs/snk-filter-multi-select.cjs.entry.js +23 -0
- package/dist/cjs/snk-filter-number.cjs.entry.js +2 -1
- package/dist/cjs/snk-filter-search.cjs.entry.js +1 -1
- package/dist/cjs/snk-form.cjs.entry.js +19 -1
- package/dist/cjs/snk-grid.cjs.entry.js +15 -5
- package/dist/cjs/snk-taskbar.cjs.entry.js +14 -11
- package/dist/cjs/{taskbar-elements-efa44ff1.js → taskbar-elements-283c737e.js} +36 -17
- package/dist/cjs/taskbar-processor-6bd0d35c.js +47 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/snk-crud/snk-crud.js +41 -3
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +64 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +2 -1
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +1 -1
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +6 -1
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +35 -0
- package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +53 -2
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +15 -0
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +60 -12
- package/dist/collection/components/snk-form/snk-form.js +41 -1
- package/dist/collection/components/snk-grid/snk-grid.js +35 -3
- package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +35 -17
- package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +43 -0
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +36 -11
- package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +375 -255
- package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +7 -3
- package/dist/components/SnkMessageBuilder.js +7 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/snk-application2.js +375 -255
- package/dist/components/snk-crud.js +4 -2
- package/dist/components/snk-filter-bar2.js +61 -13
- package/dist/components/snk-filter-detail2.js +6 -1
- package/dist/components/snk-filter-item2.js +14 -1
- package/dist/components/snk-filter-list2.js +5 -2
- package/dist/components/snk-filter-multi-select.d.ts +11 -0
- package/dist/components/snk-filter-multi-select.js +39 -0
- package/dist/components/snk-filter-number.js +2 -1
- package/dist/components/snk-filter-search.js +1 -1
- package/dist/components/snk-form2.js +20 -1
- package/dist/components/snk-grid2.js +15 -4
- package/dist/components/snk-taskbar2.js +49 -27
- package/dist/components/taskbar-processor.js +45 -0
- package/dist/{sankhyablocks/SnkMessageBuilder-cff80920.js → esm/SnkMessageBuilder-65d431bd.js} +7 -3
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-application.entry.js +376 -256
- package/dist/esm/snk-crud.entry.js +3 -2
- package/dist/esm/snk-data-unit.entry.js +1 -1
- package/dist/esm/snk-filter-bar.entry.js +61 -13
- package/dist/esm/snk-filter-detail.entry.js +6 -1
- package/dist/esm/snk-filter-item.entry.js +12 -0
- package/dist/esm/snk-filter-list.entry.js +2 -2
- package/dist/esm/snk-filter-multi-select.entry.js +19 -0
- package/dist/esm/snk-filter-number.entry.js +2 -1
- package/dist/esm/snk-filter-search.entry.js +1 -1
- package/dist/esm/snk-form.entry.js +19 -1
- package/dist/esm/snk-grid.entry.js +15 -5
- package/dist/esm/snk-taskbar.entry.js +14 -11
- package/dist/esm/taskbar-elements-35d64ff9.js +90 -0
- package/dist/esm/taskbar-processor-aa6772c9.js +45 -0
- package/dist/{esm/SnkMessageBuilder-cff80920.js → sankhyablocks/SnkMessageBuilder-65d431bd.js} +7 -3
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/sankhyablocks/snk-application.entry.js +376 -256
- package/dist/sankhyablocks/snk-crud.entry.js +3 -2
- package/dist/sankhyablocks/snk-data-unit.entry.js +1 -1
- package/dist/sankhyablocks/snk-filter-bar.entry.js +61 -13
- package/dist/sankhyablocks/snk-filter-detail.entry.js +6 -1
- package/dist/sankhyablocks/snk-filter-item.entry.js +12 -0
- package/dist/sankhyablocks/snk-filter-list.entry.js +2 -2
- package/dist/sankhyablocks/snk-filter-multi-select.entry.js +19 -0
- package/dist/sankhyablocks/snk-filter-number.entry.js +2 -1
- package/dist/sankhyablocks/snk-filter-search.entry.js +1 -1
- package/dist/sankhyablocks/snk-form.entry.js +19 -1
- package/dist/sankhyablocks/snk-grid.entry.js +15 -5
- package/dist/sankhyablocks/snk-taskbar.entry.js +14 -11
- package/dist/sankhyablocks/taskbar-elements-35d64ff9.js +90 -0
- package/dist/sankhyablocks/taskbar-processor-aa6772c9.js +45 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.d.ts +7 -0
- package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +1 -0
- package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +3 -0
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +5 -3
- package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +3 -2
- package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +12 -0
- package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +17 -1
- package/dist/types/components.d.ts +78 -2
- package/package.json +1 -1
- package/dist/esm/taskbar-elements-c119510a.js +0 -72
- package/dist/sankhyablocks/taskbar-elements-c119510a.js +0 -72
|
@@ -2,10 +2,11 @@ import { r as registerInstance, h, f as Host, g as getElement } from './index-2b
|
|
|
2
2
|
import { b as DataType, t as toString, a as ApplicationContext, E as ErrorException, O as ObjectUtils } from './index-e5b61043.js';
|
|
3
3
|
import { F as FilterItemType } from './filter-item-type.enum-61fbf80a.js';
|
|
4
4
|
|
|
5
|
-
const snkFilterBarCss = ".sc-snk-filter-bar-h{display:grid;grid-template-columns:minmax(100px, 100%) 1fr 1fr}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;z-index:var(--more-visible, 1);background-color:var(--background--xlight, #fff);border-radius:var(--border--radius-medium, 12px);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.snk-filter-item__editor-header.sc-snk-filter-bar{flex-grow:1;font-weight:var(--text-weight--medium, 400);color:var(--color--title-primary, #2B3A54)}.snk-filter__popover-rule.sc-snk-filter-bar{border-style:solid;border-color:var(--color--disable-secondary, #F2F5F8);border-radius:1px;border-width:1px;width:100%}.editor__ez-check.sc-snk-filter-bar{--ez-check__label--padding-left:0}.snk-filter-item__editor-header-button.sc-snk-filter-bar{cursor:pointer;flex-grow:0}.snk-filter-bar__divider.sc-snk-filter-bar{margin-bottom:var(--space--small)}.snk-filter-bar__filter-list-items-container.sc-snk-filter-bar{overflow-y:auto;max-height:360px;margin-top:var(--space--small, 6px)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar{cursor:pointer;border-radius:var(--border--radius-small, 6px)}.snk-filter-bar__filter-list-item__label.sc-snk-filter-bar{color:var(--title--primary)}.snk-filter-bar__filter-list-item__label--secondary.sc-snk-filter-bar{color:var(--text--primary)}.snk-filter-bar__filter-list-item__icon.sc-snk-filter-bar{--ez-icon--color:var(--title--primary)}.snk-filter-bar__filter-list-item__icon--secondary.sc-snk-filter-bar{--ez-icon--color:var(--text--secondary)}.snk-filter-bar__filter-list-item.preselected.sc-snk-filter-bar{background-color:var(--background--medium)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:hover{background-color:var(--background--medium)}.snk-filter-bar__filter-list-items-container--empty.sc-snk-filter-bar{width:100%;height:100px;display:flex;justify-content:center;align-self:center;align-items:center}";
|
|
5
|
+
const snkFilterBarCss = ".sc-snk-filter-bar-h{display:grid;grid-template-columns:minmax(100px, 100%) 1fr 1fr}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;z-index:var(--more-visible, 1);background-color:var(--background--xlight, #fff);border-radius:var(--border--radius-medium, 12px);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.snk-filter-item__editor-header.sc-snk-filter-bar{flex-grow:1;font-weight:var(--text-weight--medium, 400);color:var(--color--title-primary, #2B3A54)}.snk-filter__popover-rule.sc-snk-filter-bar{border-style:solid;border-color:var(--color--disable-secondary, #F2F5F8);border-radius:1px;border-width:1px;width:100%}.editor__ez-check.sc-snk-filter-bar{--ez-check__label--padding-left:0}.snk-filter-item__editor-header-button.sc-snk-filter-bar{cursor:pointer;flex-grow:0}.snk-filter-bar__divider.sc-snk-filter-bar{margin-bottom:var(--space--small)}.snk-filter-bar__filter-list-items-container.sc-snk-filter-bar{overflow-y:auto;max-height:360px;margin-top:var(--space--small, 6px)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar{cursor:pointer;border-radius:var(--border--radius-small, 6px)}.snk-filter-bar__filter-list-item__label.sc-snk-filter-bar{color:var(--title--primary)}.snk-filter-bar__filter-list-item__label--secondary.sc-snk-filter-bar{color:var(--text--primary)}.snk-filter-bar__filter-list-item__icon.sc-snk-filter-bar{--ez-icon--color:var(--title--primary)}.snk-filter-bar__filter-list-item__icon--secondary.sc-snk-filter-bar{--ez-icon--color:var(--text--secondary)}.snk-filter-bar__filter-list-item.preselected.sc-snk-filter-bar{background-color:var(--background--medium)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:hover{background-color:var(--background--medium)}.snk-filter-bar__filter-list-items-container--empty.sc-snk-filter-bar{width:100%;height:100px;display:flex;justify-content:center;align-self:center;align-items:center}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar{position:relative}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar::after{display:flex;position:absolute;content:\"\";width:8px;height:8px;top:7px;left:17px;background-color:var(--icon--alert--color, #008561);border-radius:50%}";
|
|
6
6
|
|
|
7
7
|
const PERSONALIZED_FILTER = "PERSONALIZED_FILTER";
|
|
8
8
|
const DEFAULT_FILTER = "DEFAULT_FILTER";
|
|
9
|
+
const CLEAR_ALL_FILTERS = "CLEAR_ALL_FILTERS";
|
|
9
10
|
const SnkFilterBar = class {
|
|
10
11
|
constructor(hostRef) {
|
|
11
12
|
registerInstance(this, hostRef);
|
|
@@ -52,6 +53,9 @@ const SnkFilterBar = class {
|
|
|
52
53
|
//FIXME: ajustar o backend para não exigir parametros
|
|
53
54
|
return { name: id, expression: selectedOption.expression, params: [] };
|
|
54
55
|
}
|
|
56
|
+
if (type === FilterItemType.MULTI_SELECT) {
|
|
57
|
+
return { name: id, expression: props.expression, params: [{ name: id, dataType: DataType.TEXT, value }] };
|
|
58
|
+
}
|
|
55
59
|
if (type === FilterItemType.PERIOD) {
|
|
56
60
|
const { end, start } = value;
|
|
57
61
|
const params = [];
|
|
@@ -123,11 +127,11 @@ const SnkFilterBar = class {
|
|
|
123
127
|
getFilterItems() {
|
|
124
128
|
const pinnedItems = [];
|
|
125
129
|
const unpinnedItems = [];
|
|
126
|
-
this.
|
|
130
|
+
this.filterConfig
|
|
127
131
|
.filter(item => item.visible)
|
|
128
132
|
.sort((a, b) => this._filtersComparator(a, b))
|
|
129
|
-
.
|
|
130
|
-
const filterItem = (h("snk-filter-item", { config: item, class: index > 0 ? "ez-padding-left--medium" : "", getMessage: (key, props) => this.getMessage(key, props), key: item.id }));
|
|
133
|
+
.forEach((item, index) => {
|
|
134
|
+
const filterItem = (h("snk-filter-item", { id: `filter-${item.id}`, config: item, class: index > 0 ? "ez-padding-left--medium" : "", getMessage: (key, props) => this.getMessage(key, props), key: item.id }));
|
|
131
135
|
if (item.fixed || item.hardFixed) {
|
|
132
136
|
pinnedItems.push(filterItem);
|
|
133
137
|
}
|
|
@@ -145,25 +149,36 @@ const SnkFilterBar = class {
|
|
|
145
149
|
return elements;
|
|
146
150
|
}
|
|
147
151
|
calculateUpdateSequence(item) {
|
|
148
|
-
|
|
149
|
-
|
|
152
|
+
if (item) {
|
|
153
|
+
this._updateSequence = this._updateSequence.filter(itemId => item.id !== itemId);
|
|
154
|
+
this._updateSequence.push(item.id);
|
|
155
|
+
}
|
|
150
156
|
}
|
|
151
157
|
filterChangeListener(evt) {
|
|
152
158
|
this.updateFilter(evt.detail);
|
|
153
159
|
}
|
|
154
|
-
updateFilter(newItem) {
|
|
160
|
+
updateFilter(newItem, clear = false) {
|
|
155
161
|
this.calculateUpdateSequence(newItem);
|
|
156
|
-
let
|
|
162
|
+
let upToDate = false;
|
|
157
163
|
this.filterConfig = this.filterConfig.map(item => {
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
|
|
164
|
+
if (clear) {
|
|
165
|
+
if (item.value != undefined) {
|
|
166
|
+
upToDate = true;
|
|
167
|
+
}
|
|
168
|
+
return Object.assign(Object.assign({}, item), { value: undefined });
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
if (item.id === newItem.id) {
|
|
172
|
+
upToDate = ObjectUtils.objectToString(item.value) !== ObjectUtils.objectToString(newItem.value);
|
|
173
|
+
return newItem;
|
|
174
|
+
}
|
|
161
175
|
}
|
|
162
176
|
return item;
|
|
163
177
|
});
|
|
164
|
-
if (
|
|
178
|
+
if (upToDate) {
|
|
165
179
|
this.dataUnit.loadData();
|
|
166
180
|
}
|
|
181
|
+
return upToDate;
|
|
167
182
|
}
|
|
168
183
|
getAddListItems() {
|
|
169
184
|
const hiddenItems = this.filterConfig
|
|
@@ -176,17 +191,50 @@ const SnkFilterBar = class {
|
|
|
176
191
|
{ name: DEFAULT_FILTER, label: this.getMessage("snkFilterBar.defaultFilter"), iconName: "configuration", kind: "FOOTER" }
|
|
177
192
|
]);
|
|
178
193
|
}
|
|
194
|
+
getActiveClass() {
|
|
195
|
+
const filterApplied = this.filterConfig.filter(item => item.value != undefined).length > 0;
|
|
196
|
+
return filterApplied ? "sc-snk-filter-bar snk-filter-bar__filter-list-items-button--active" : "";
|
|
197
|
+
}
|
|
198
|
+
getAppliedListItems() {
|
|
199
|
+
const appliedItems = this.filterConfig
|
|
200
|
+
.filter(item => item.value != undefined)
|
|
201
|
+
.sort(this._filtersComparator);
|
|
202
|
+
return appliedItems.map(filter => {
|
|
203
|
+
return { name: filter.id, label: filter.label, kind: "FILTER", iconName: null };
|
|
204
|
+
}).concat([
|
|
205
|
+
{ name: CLEAR_ALL_FILTERS, label: this.getMessage("snkFilterBar.clearAllFilters"), iconName: "cleaning", kind: "FOOTER" }
|
|
206
|
+
]);
|
|
207
|
+
}
|
|
179
208
|
addFilterHandler(itemName) {
|
|
180
209
|
const filterItem = this.filterConfig.find(currentFilter => currentFilter.id === itemName);
|
|
181
210
|
if (filterItem) {
|
|
182
211
|
this.updateFilter(Object.assign(Object.assign({}, filterItem), { visible: true }));
|
|
212
|
+
window.requestAnimationFrame(() => {
|
|
213
|
+
const itemElement = this._element.querySelector("#filter-" + itemName);
|
|
214
|
+
if (itemElement) {
|
|
215
|
+
itemElement.showUp();
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
appliedFilterHandler(itemName) {
|
|
221
|
+
if (itemName === CLEAR_ALL_FILTERS) {
|
|
222
|
+
if (this.updateFilter(null, true)) {
|
|
223
|
+
this._application.info(this.getMessage("snkFilterBar.successfullyCleaned"), { iconName: "check" });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
const itemElement = this._element.querySelector("#filter-" + itemName);
|
|
228
|
+
if (itemElement) {
|
|
229
|
+
itemElement.showUp(true);
|
|
230
|
+
}
|
|
183
231
|
}
|
|
184
232
|
}
|
|
185
233
|
render() {
|
|
186
234
|
if (!this.dataUnit || !this.filterConfig || this.filterConfig.length === 0) {
|
|
187
235
|
return undefined;
|
|
188
236
|
}
|
|
189
|
-
return (h(Host, null, h("ez-scroller", { direction: "horizontal" }, this.getFilterItems()), h("
|
|
237
|
+
return (h(Host, null, h("ez-scroller", { direction: "horizontal" }, this.getFilterItems()), h("snk-filter-list", { items: this.getAppliedListItems(), getMessage: (key, params) => this.getMessage(key, params), emptyText: this.getMessage("snkFilterBar.emptyAppliedFiltersList"), findFilterText: this.getMessage("snkFilterBar.findFilter"), iconName: "filter", class: "ez-padding-left--medium", buttonClass: this.getActiveClass(), onSnkItemSelected: evt => this.appliedFilterHandler(evt.detail) }), h("snk-filter-list", { items: this.getAddListItems(), label: this.getMessage("snkFilterBar.addFilter"), getMessage: (key, params) => this.getMessage(key, params), emptyText: this.getMessage("snkFilterBar.emptyFiltersList"), findFilterText: this.getMessage("snkFilterBar.findField"), class: "ez-padding-left--medium", onSnkItemSelected: evt => this.addFilterHandler(evt.detail) }, h("ez-icon", { slot: "leftIcon", class: "ez-padding-right--small", iconName: "plus" }))));
|
|
190
238
|
}
|
|
191
239
|
get _element() { return getElement(this); }
|
|
192
240
|
};
|
|
@@ -13,6 +13,8 @@ const SnkFilterDetail = class {
|
|
|
13
13
|
switch (this.config.type) {
|
|
14
14
|
case FilterItemType.BINARY_SELECT:
|
|
15
15
|
return "snk-filter-binary-select";
|
|
16
|
+
case FilterItemType.MULTI_SELECT:
|
|
17
|
+
return "snk-filter-multi-select";
|
|
16
18
|
case FilterItemType.PERIOD:
|
|
17
19
|
return "snk-filter-period";
|
|
18
20
|
case FilterItemType.SEARCH:
|
|
@@ -22,12 +24,15 @@ const SnkFilterDetail = class {
|
|
|
22
24
|
}
|
|
23
25
|
return "snk-filter-text";
|
|
24
26
|
}
|
|
27
|
+
removeItem() {
|
|
28
|
+
this.changeConfig(Object.assign(Object.assign({}, this.config), { visible: false, fixed: false, value: undefined }));
|
|
29
|
+
}
|
|
25
30
|
getPopUpHeaderButtons() {
|
|
26
31
|
if (this.config.hardFixed) {
|
|
27
32
|
return undefined;
|
|
28
33
|
}
|
|
29
34
|
return ([
|
|
30
|
-
h("ez-icon", { title: this.getMessage("snkFilterBar.removeFilter"), class: "sc-snk-filter-bar snk-filter-item__editor-header-button", iconName: "delete", onClick: () => this.
|
|
35
|
+
h("ez-icon", { title: this.getMessage("snkFilterBar.removeFilter"), class: "sc-snk-filter-bar snk-filter-item__editor-header-button", iconName: "delete", onClick: () => this.removeItem() }),
|
|
31
36
|
h("ez-icon", { title: this.getMessage(this.config.fixed ? "snkFilterBar.unpinFilter" : "snkFilterBar.pinFilter"), class: "ez-margin-left--small sc-snk-filter-bar snk-filter-item__editor-header-button", iconName: this.config.fixed ? "un-pin" : "push-pin", onClick: () => this.changeConfig(Object.assign(Object.assign({}, this.config), { fixed: !this.config.fixed })) })
|
|
32
37
|
]);
|
|
33
38
|
}
|
|
@@ -25,6 +25,14 @@ const SnkFilterItem = class {
|
|
|
25
25
|
return false;
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
async showUp(open = false) {
|
|
29
|
+
this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
|
|
30
|
+
if (open) {
|
|
31
|
+
window.requestAnimationFrame(() => {
|
|
32
|
+
this.showDetail();
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
28
36
|
showDetail() {
|
|
29
37
|
this._floatingID = FloatingManager.float(this._popover, this._popoverContainer, { autoClose: true, innerClickTest: this.innerClickCheck, left: this.getScrollOffset() });
|
|
30
38
|
this.detailIsVisible = true;
|
|
@@ -79,6 +87,10 @@ const SnkFilterItem = class {
|
|
|
79
87
|
return optTwo.label;
|
|
80
88
|
}
|
|
81
89
|
}
|
|
90
|
+
if (type === FilterItemType.MULTI_SELECT) {
|
|
91
|
+
const opt = props.options.find(opt => opt.value === value);
|
|
92
|
+
return `${label}: ${opt.label}`;
|
|
93
|
+
}
|
|
82
94
|
if (type === FilterItemType.PERIOD) {
|
|
83
95
|
const period = value;
|
|
84
96
|
const dateFormater = new Intl.DateTimeFormat("pt-BR");
|
|
@@ -66,7 +66,7 @@ const SnkFilterList = class {
|
|
|
66
66
|
getFilterItems() {
|
|
67
67
|
const items = this.items ? ArrayUtils.applyStringFilter(this._filterArgument, this.items.filter(item => item.kind === "FILTER")) : [];
|
|
68
68
|
if (items.length === 0) {
|
|
69
|
-
return h("div", { class: "ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-items-container--empty" }, this.
|
|
69
|
+
return h("div", { class: "ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-items-container--empty" }, this.emptyText);
|
|
70
70
|
}
|
|
71
71
|
const hideItems = !this._filterArgument && !this._showAll && (items.length > MAX_FILTERS + 1);
|
|
72
72
|
if (hideItems) {
|
|
@@ -79,7 +79,7 @@ const SnkFilterList = class {
|
|
|
79
79
|
return this.items.filter(item => item.kind === "FOOTER");
|
|
80
80
|
}
|
|
81
81
|
render() {
|
|
82
|
-
return (h(Host, { class: "ez-flex ez-flex--column" }, h("ez-button", { label: this.label, onClick: () => this.buttonClick(), mode: this.iconName ? "icon" : undefined, iconName: this.iconName, size: "small" }, h("slot", { name: "leftIcon" })), h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, h("div", { class: "sc-snk-filter-bar snk-filter__popover ez-padding--small", ref: elem => this._popover = elem }, h("ez-filter-input", { ref: ref => this._filterInput = ref, mode: "slim", label: this.
|
|
82
|
+
return (h(Host, { class: "ez-flex ez-flex--column" }, h("ez-button", { class: this.buttonClass, label: this.label, onClick: () => this.buttonClick(), mode: this.iconName ? "icon" : undefined, iconName: this.iconName, size: "small" }, h("slot", { name: "leftIcon" })), h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, h("div", { class: "sc-snk-filter-bar snk-filter__popover ez-padding--small", ref: elem => this._popover = elem }, h("ez-filter-input", { ref: ref => this._filterInput = ref, mode: "slim", label: this.findFilterText, value: this._filterArgument, onEzChange: (evt) => this._filterArgument = evt.detail }), this.getFilterItems(), h("hr", { class: "sc-snk-filter-bar snk-filter__popover-rule" }), this.items ? this.getFooterItems().map(item => this.buildItemElement(item)) : undefined))));
|
|
83
83
|
}
|
|
84
84
|
get _element() { return getElement(this); }
|
|
85
85
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { r as registerInstance, h } from './index-2b4d2d14.js';
|
|
2
|
+
import { F as FilterItemType } from './filter-item-type.enum-61fbf80a.js';
|
|
3
|
+
|
|
4
|
+
const SnkFilterMultiSelect = class {
|
|
5
|
+
constructor(hostRef) {
|
|
6
|
+
registerInstance(this, hostRef);
|
|
7
|
+
}
|
|
8
|
+
ezChangeListener(evt) {
|
|
9
|
+
this.value = evt.detail.value;
|
|
10
|
+
}
|
|
11
|
+
render() {
|
|
12
|
+
if (!this.config || this.config.type !== FilterItemType.MULTI_SELECT) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return (h("ez-combo-box", { label: this.config.label, value: this.config.value, options: this.config.props.options }));
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { SnkFilterMultiSelect as snk_filter_multi_select };
|
|
@@ -9,10 +9,11 @@ const SnkFilterPeriod = class {
|
|
|
9
9
|
this.value = evt.detail;
|
|
10
10
|
}
|
|
11
11
|
render() {
|
|
12
|
+
var _a;
|
|
12
13
|
if (!this.config || this.config.type !== FilterItemType.NUMBER) {
|
|
13
14
|
return undefined;
|
|
14
15
|
}
|
|
15
|
-
return (h("ez-number-input", { label: this.config.label, value: this.config.value }));
|
|
16
|
+
return (h("ez-number-input", { label: this.config.label, value: this.config.value, precision: (_a = this.config.props) === null || _a === void 0 ? void 0 : _a.precision }));
|
|
16
17
|
}
|
|
17
18
|
};
|
|
18
19
|
|
|
@@ -33,7 +33,7 @@ const SnkFilterSearch = class {
|
|
|
33
33
|
if (!this.config || this.config.type !== FilterItemType.SEARCH) {
|
|
34
34
|
return undefined;
|
|
35
35
|
}
|
|
36
|
-
return (h("ez-search", { value: this.config.value, label: this.config.label, ref: ref => this._searchInput = ref, optionLoader: ({ mode, argument }) => this.doSearch(mode, argument) }));
|
|
36
|
+
return (h("ez-search", { suppressEmptyOption: true, value: this.config.value, label: this.config.label, ref: ref => this._searchInput = ref, optionLoader: ({ mode, argument }) => this.doSearch(mode, argument) }));
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { r as registerInstance, e as createEvent, h, g as getElement } from './index-2b4d2d14.js';
|
|
2
2
|
import { a as ApplicationContext } from './index-e5b61043.js';
|
|
3
|
+
import { T as TaskbarProcessor } from './taskbar-processor-aa6772c9.js';
|
|
3
4
|
|
|
4
5
|
const snkFormCss = ".sc-snk-form-h{display:block}.snk-form.sc-snk-form{position:relative;padding:var(--space--large);padding-top:var(--space--medium)}.snk-form__header.sc-snk-form{position:relative;padding-top:var(--space--medium);padding-bottom:var(--space--medium);margin-bottom:var(--space--medium)}.snk-form__header--fixed.sc-snk-form{position:sticky;top:0;background:var(--background--body);z-index:var(--more-visible, 2);padding-left:var(--space--large);padding-right:var(--space--large);margin-left:calc(var(--space--large) * -1);margin-right:calc(var(--space--large) * -1);width:calc(100% + (var(--space--large) * 2))}";
|
|
5
6
|
|
|
@@ -8,6 +9,10 @@ const SnkForm = class {
|
|
|
8
9
|
registerInstance(this, hostRef);
|
|
9
10
|
this.exit = createEvent(this, "exit", 7);
|
|
10
11
|
this.actionClick = createEvent(this, "actionClick", 7);
|
|
12
|
+
this._taskbarProcessor = new TaskbarProcessor({
|
|
13
|
+
"snkForm.regular": ["PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "GRID_MODE", "INSERT"],
|
|
14
|
+
"snkForm.finish_edition": ["CANCEL", "SAVE"]
|
|
15
|
+
});
|
|
11
16
|
}
|
|
12
17
|
getFormConfig() {
|
|
13
18
|
return (this._dataState && this._dataState.insertionMode ? this._insertionFormConfig : this._editionFormConfig);
|
|
@@ -98,11 +103,24 @@ const SnkForm = class {
|
|
|
98
103
|
parent = parent.parentElement;
|
|
99
104
|
}
|
|
100
105
|
}
|
|
106
|
+
componentWillRender() {
|
|
107
|
+
var _a;
|
|
108
|
+
const taskbarId = ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "snkForm.finish_edition" : "snkForm.regular";
|
|
109
|
+
const disabledButtons = [];
|
|
110
|
+
if (!this._dataState || !this._dataState.hasPrevious) {
|
|
111
|
+
disabledButtons.push("PREVIOUS");
|
|
112
|
+
}
|
|
113
|
+
if (!this._dataState || !this._dataState.hasNext) {
|
|
114
|
+
disabledButtons.push("NEXT");
|
|
115
|
+
}
|
|
116
|
+
this._taskbarProcessor.process(taskbarId, this.taskbarManager, this._dataState, disabledButtons);
|
|
117
|
+
}
|
|
101
118
|
render() {
|
|
119
|
+
var _a;
|
|
102
120
|
if (!this._configLoaded || !this._dataUnit || !this._dataState) {
|
|
103
121
|
return undefined;
|
|
104
122
|
}
|
|
105
|
-
return (h("section", { class: "snk-form" }, h("div", { class: "snk-form__header snk-form__header--fixed ez-row" }, h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6", key: "formHeader" }, h("ez-button", { title: this.getMessage("snkForm.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small", onClick: () => this.exitForm() }), h("h1", { class: "ez-title ez-title--primary ez-title--xlarge ez-align--middle" }, this.getMessage("snkForm.title"))), h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6 ez-align--right" }, h("snk-taskbar", { key: "formTaskbar", buttons: this.
|
|
123
|
+
return (h("section", { class: "snk-form" }, h("div", { class: "snk-form__header snk-form__header--fixed ez-row" }, h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6", key: "formHeader" }, h("ez-button", { title: this.getMessage("snkForm.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small", onClick: () => this.exitForm() }), h("h1", { class: "ez-title ez-title--primary ez-title--xlarge ez-align--middle" }, this.getMessage("snkForm.title"))), h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6 ez-align--right" }, h("snk-taskbar", { key: "formTaskbar", buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.actionsList, primaryButton: ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", dataUnit: this._dataUnit }))), h("section", null, h("div", { class: "ez-row" }, h("div", { class: "ez-col ez-col--sd-12" }, h("ez-form", { key: "ezForm" + this._snkDataUnit.entityName, dataUnit: this._dataUnit, config: this.getFormConfig(), recordsValidator: this.recordsValidator }))))));
|
|
106
124
|
}
|
|
107
125
|
get _element() { return getElement(this); }
|
|
108
126
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { r as registerInstance, e as createEvent, h, g as getElement } from './index-2b4d2d14.js';
|
|
2
2
|
import { a as ApplicationContext } from './index-e5b61043.js';
|
|
3
|
-
import { T as TaskbarElement } from './taskbar-elements-
|
|
3
|
+
import { T as TaskbarElement } from './taskbar-elements-35d64ff9.js';
|
|
4
|
+
import { T as TaskbarProcessor } from './taskbar-processor-aa6772c9.js';
|
|
4
5
|
|
|
5
6
|
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)}";
|
|
6
7
|
|
|
@@ -9,9 +10,13 @@ const SnkGrid = class {
|
|
|
9
10
|
registerInstance(this, hostRef);
|
|
10
11
|
this.actionClick = createEvent(this, "actionClick", 7);
|
|
11
12
|
this.gridDoubleClick = createEvent(this, "gridDoubleClick", 7);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
this._topTaskbarProcessor = new TaskbarProcessor({
|
|
14
|
+
"snkGridTopTaskbar": ["FORM_MODE", "CONFIG_GRID", "INSERT"]
|
|
15
|
+
});
|
|
16
|
+
this._headerTaskbarProcessor = new TaskbarProcessor({
|
|
17
|
+
"snkGridHeaderTaskbar.unselected": ["REFRESH"],
|
|
18
|
+
"snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
|
|
19
|
+
});
|
|
15
20
|
}
|
|
16
21
|
actionClickHandler(evt) {
|
|
17
22
|
if (evt.detail === TaskbarElement.CONFIG_GRID && this._grid) {
|
|
@@ -52,11 +57,16 @@ const SnkGrid = class {
|
|
|
52
57
|
parent = parent.parentElement;
|
|
53
58
|
}
|
|
54
59
|
}
|
|
60
|
+
componentWillRender() {
|
|
61
|
+
const headerTaskbarId = this._dataState && this._dataState.selectedRecords.length > 0 ? "snkGridHeaderTaskbar.selected" : "snkGridHeaderTaskbar.unselected";
|
|
62
|
+
this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState);
|
|
63
|
+
this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState);
|
|
64
|
+
}
|
|
55
65
|
render() {
|
|
56
66
|
if (!this._configLoaded || !this._dataUnit) {
|
|
57
67
|
return undefined;
|
|
58
68
|
}
|
|
59
|
-
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", { class: "snk-grid__filter-bar ez-align--top" }), 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", onActionClick: evt => this.actionClickHandler(evt), key: "topTaskbar", dataUnit: this._dataUnit, buttons:
|
|
69
|
+
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", { class: "snk-grid__filter-bar ez-align--top" }), 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", onActionClick: evt => this.actionClickHandler(evt), key: "topTaskbar", 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, dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: evt => { this.saveConfig(evt.detail); }, onEzDoubleClick: () => this.gridDoubleClick.emit() }, h("snk-taskbar", { dataUnit: this._dataUnit, 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" }))));
|
|
60
70
|
}
|
|
61
71
|
get _element() { return getElement(this); }
|
|
62
72
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as registerInstance, e as createEvent, h, f as Host } from './index-2b4d2d14.js';
|
|
2
2
|
import { a as ApplicationContext } from './index-e5b61043.js';
|
|
3
|
-
import { T as TaskbarElement, V as VisibleWhenForbidden, A as AuthorizationElements, b as buildElem } from './taskbar-elements-
|
|
3
|
+
import { T as TaskbarElement, V as VisibleWhenForbidden, A as AuthorizationElements, b as buildElem, a as buildCustomButton } from './taskbar-elements-35d64ff9.js';
|
|
4
4
|
|
|
5
5
|
const snkTaskbarCss = ".sc-snk-taskbar-h{display:flex}";
|
|
6
6
|
|
|
@@ -100,13 +100,16 @@ const SnkTaskbar = class {
|
|
|
100
100
|
return !(this.disabledButtons && this.disabledButtons.includes(elem));
|
|
101
101
|
}
|
|
102
102
|
getElement(index, def) {
|
|
103
|
-
let element;
|
|
104
103
|
let className = def === this.primaryButton ? "ez-button--primary " : "";
|
|
105
104
|
if (index > 1) {
|
|
106
105
|
className += "ez-padding-left--medium";
|
|
107
106
|
}
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
if (TaskbarElement[def.toString()]) {
|
|
108
|
+
return buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem), this.actionsList);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return buildCustomButton(def, className, elem => this.elementClick(elem), elem => this.isEnabled(elem));
|
|
112
|
+
}
|
|
110
113
|
}
|
|
111
114
|
// Lifecycle
|
|
112
115
|
componentWillLoad() {
|
|
@@ -128,20 +131,20 @@ const SnkTaskbar = class {
|
|
|
128
131
|
return undefined;
|
|
129
132
|
}
|
|
130
133
|
let index = 0;
|
|
131
|
-
return (h(Host, null, this._definitions.map((
|
|
132
|
-
if (
|
|
134
|
+
return (h(Host, null, this._definitions.map((elem) => {
|
|
135
|
+
if (elem === TaskbarElement.DIVIDER) {
|
|
133
136
|
index = 0;
|
|
134
137
|
}
|
|
135
138
|
else {
|
|
136
139
|
index++;
|
|
137
140
|
}
|
|
138
|
-
if (TaskbarElement[
|
|
139
|
-
return this.getElement(index, TaskbarElement[
|
|
141
|
+
if (TaskbarElement[elem]) {
|
|
142
|
+
return this.getElement(index, TaskbarElement[elem]);
|
|
140
143
|
}
|
|
141
|
-
|
|
142
|
-
index;
|
|
143
|
-
return h("slot", { name: btn });
|
|
144
|
+
if (this.customButtons.has(elem)) {
|
|
145
|
+
return this.getElement(index, this.customButtons.get(elem));
|
|
144
146
|
}
|
|
147
|
+
return h("slot", { name: elem });
|
|
145
148
|
})));
|
|
146
149
|
}
|
|
147
150
|
static get watchers() { return {
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { h } from './index-2b4d2d14.js';
|
|
2
|
+
|
|
3
|
+
var TaskbarElement;
|
|
4
|
+
(function (TaskbarElement) {
|
|
5
|
+
TaskbarElement["PREVIOUS"] = "PREVIOUS";
|
|
6
|
+
TaskbarElement["NEXT"] = "NEXT";
|
|
7
|
+
TaskbarElement["REFRESH"] = "REFRESH";
|
|
8
|
+
TaskbarElement["UPDATE"] = "UPDATE";
|
|
9
|
+
TaskbarElement["CLONE"] = "CLONE";
|
|
10
|
+
TaskbarElement["REMOVE"] = "REMOVE";
|
|
11
|
+
TaskbarElement["INSERT"] = "INSERT";
|
|
12
|
+
TaskbarElement["CANCEL"] = "CANCEL";
|
|
13
|
+
TaskbarElement["SAVE"] = "SAVE";
|
|
14
|
+
TaskbarElement["GRID_MODE"] = "GRID_MODE";
|
|
15
|
+
TaskbarElement["FORM_MODE"] = "FORM_MODE";
|
|
16
|
+
TaskbarElement["CONFIG_GRID"] = "CONFIG_GRID";
|
|
17
|
+
TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
|
|
18
|
+
TaskbarElement["DIVIDER"] = "DIVIDER";
|
|
19
|
+
})(TaskbarElement || (TaskbarElement = {}));
|
|
20
|
+
var AuthorizationElements;
|
|
21
|
+
(function (AuthorizationElements) {
|
|
22
|
+
AuthorizationElements["UPDATE"] = "UPDATE";
|
|
23
|
+
AuthorizationElements["CLONE"] = "CLONE";
|
|
24
|
+
AuthorizationElements["REMOVE"] = "REMOVE";
|
|
25
|
+
AuthorizationElements["INSERT"] = "INSERT";
|
|
26
|
+
AuthorizationElements["CONFIG_GRID"] = "CONFIG_GRID";
|
|
27
|
+
})(AuthorizationElements || (AuthorizationElements = {}));
|
|
28
|
+
var VisibleWhenForbidden;
|
|
29
|
+
(function (VisibleWhenForbidden) {
|
|
30
|
+
VisibleWhenForbidden["CONFIG_GRID"] = "CONFIG_GRID";
|
|
31
|
+
})(VisibleWhenForbidden || (VisibleWhenForbidden = {}));
|
|
32
|
+
const buildCustomButton = (def, className, action, isEnabled) => {
|
|
33
|
+
const { hint, text, iconName } = def;
|
|
34
|
+
if (iconName) {
|
|
35
|
+
if (text) {
|
|
36
|
+
return iconTextButton(iconName, def.name, className, hint, text, action, isEnabled);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return iconButton(iconName, def.name, className, hint, action, isEnabled);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return textButton(def.name, className, text, hint, action, isEnabled);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const buildElem = (element, className, getTitle, action, isEnabled, actions) => {
|
|
47
|
+
const title = getTitle(element);
|
|
48
|
+
switch (element) {
|
|
49
|
+
case TaskbarElement.PREVIOUS:
|
|
50
|
+
return iconButton("chevron-left", element, className, title, action, isEnabled);
|
|
51
|
+
case TaskbarElement.NEXT:
|
|
52
|
+
return iconButton("chevron-right", element, className, title, action, isEnabled);
|
|
53
|
+
case TaskbarElement.REFRESH:
|
|
54
|
+
return iconButton("sync", element, className, title, action, isEnabled);
|
|
55
|
+
case TaskbarElement.UPDATE:
|
|
56
|
+
return iconButton("edit", element, className, title, action, isEnabled);
|
|
57
|
+
case TaskbarElement.CLONE:
|
|
58
|
+
return iconButton("copy", element, className, title, action, isEnabled);
|
|
59
|
+
case TaskbarElement.REMOVE:
|
|
60
|
+
return iconButton("delete", element, className, title, action, isEnabled);
|
|
61
|
+
case TaskbarElement.INSERT:
|
|
62
|
+
return iconTextButton("plus", element, className, title, title, action, isEnabled);
|
|
63
|
+
case TaskbarElement.CANCEL:
|
|
64
|
+
return textButton(element, className, title, title, action, isEnabled);
|
|
65
|
+
case TaskbarElement.SAVE:
|
|
66
|
+
return iconTextButton("save", element, className, title, title, action, isEnabled);
|
|
67
|
+
case TaskbarElement.GRID_MODE:
|
|
68
|
+
return iconButton("table", element, className, title, action, isEnabled);
|
|
69
|
+
case TaskbarElement.FORM_MODE:
|
|
70
|
+
return iconButton("list", element, className, title, action, isEnabled);
|
|
71
|
+
case TaskbarElement.CONFIG_GRID:
|
|
72
|
+
return iconButton("settings-inverted", element, className, title, action, isEnabled);
|
|
73
|
+
case TaskbarElement.MORE_OPTIONS:
|
|
74
|
+
return actions && actions.length > 0 ? h("ez-actions-button", { title: title, size: "small", class: className, enabled: isEnabled(element), onEzAction: (evt) => action(evt.detail.value), actions: actions }) : undefined;
|
|
75
|
+
case TaskbarElement.DIVIDER:
|
|
76
|
+
return h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-horizontal--medium" });
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
function textButton(name, className, text, title, action, isEnabled) {
|
|
80
|
+
return h("ez-button", { title: title, label: text, size: "small", class: className, enabled: isEnabled(name), onClick: () => action(name) });
|
|
81
|
+
}
|
|
82
|
+
function iconButton(iconName, name, className, title, action, isEnabled) {
|
|
83
|
+
return h("ez-button", { name: iconName, title: title, mode: "icon", size: "small", class: className, iconName: iconName, enabled: isEnabled(name), onClick: () => action(name) });
|
|
84
|
+
}
|
|
85
|
+
function iconTextButton(iconName, name, className, text, title, action, isEnabled) {
|
|
86
|
+
return h("ez-button", { name: iconName, title: title, label: text, size: "small", class: className, enabled: isEnabled(name), onClick: () => action(name) },
|
|
87
|
+
h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { AuthorizationElements as A, TaskbarElement as T, VisibleWhenForbidden as V, buildCustomButton as a, buildElem as b };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
class TaskbarProcessor {
|
|
2
|
+
constructor(defaultButtons) {
|
|
3
|
+
this._defaultButtons = defaultButtons;
|
|
4
|
+
}
|
|
5
|
+
process(taskbarId, taskbarManager, dataState, disabledButtons = []) {
|
|
6
|
+
var _a;
|
|
7
|
+
this.customButtons = new Map();
|
|
8
|
+
this.buttons = "";
|
|
9
|
+
this.disabledButtons = [];
|
|
10
|
+
(_a = this.getButtonsArray(taskbarId, taskbarManager, dataState)) === null || _a === void 0 ? void 0 : _a.forEach(btnDef => {
|
|
11
|
+
let buttonName;
|
|
12
|
+
if (typeof btnDef === "string") {
|
|
13
|
+
buttonName = btnDef;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
const customBtn = btnDef;
|
|
17
|
+
this.customButtons.set(customBtn.name, customBtn);
|
|
18
|
+
buttonName = customBtn.name;
|
|
19
|
+
}
|
|
20
|
+
if (!this.isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabledButtons)) {
|
|
21
|
+
this.disabledButtons.push(buttonName);
|
|
22
|
+
}
|
|
23
|
+
if (this.buttons.length > 0) {
|
|
24
|
+
this.buttons += ",";
|
|
25
|
+
}
|
|
26
|
+
this.buttons += buttonName;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
getButtonsArray(taskbarId, taskbarManager, dataState) {
|
|
30
|
+
const defaults = this._defaultButtons[taskbarId];
|
|
31
|
+
if (taskbarManager) {
|
|
32
|
+
return taskbarManager.getButtons(taskbarId, dataState, [...defaults]);
|
|
33
|
+
}
|
|
34
|
+
return defaults;
|
|
35
|
+
}
|
|
36
|
+
isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabled) {
|
|
37
|
+
const originalValue = disabled.includes(buttonName) ? false : true;
|
|
38
|
+
if (taskbarManager && taskbarManager.isEnabled) {
|
|
39
|
+
return taskbarManager.isEnabled(taskbarId, dataState, buttonName, originalValue);
|
|
40
|
+
}
|
|
41
|
+
return originalValue;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { TaskbarProcessor as T };
|
|
@@ -12,6 +12,9 @@ export declare class SnkFilterList {
|
|
|
12
12
|
iconName: string;
|
|
13
13
|
items: Array<ListItem>;
|
|
14
14
|
getMessage: (key: string, props?: any) => string;
|
|
15
|
+
emptyText: string;
|
|
16
|
+
findFilterText: string;
|
|
17
|
+
buttonClass: string;
|
|
15
18
|
snkItemSelected: EventEmitter<string>;
|
|
16
19
|
private showList;
|
|
17
20
|
innerClickCheck: (floatingContainer: HTMLElement, node: HTMLElement) => boolean;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { DataUnit } from '@sankhyalabs/core';
|
|
2
2
|
import { SnkApplication } from '../snk-application/snk-application';
|
|
3
|
-
import {
|
|
3
|
+
import { SnkFilterItemConfig } from './filter-item/snk-filter-item';
|
|
4
4
|
import { FilterProvider, Filter } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
|
5
5
|
import { ListItem } from './filter-list/snk-filter-list';
|
|
6
6
|
export declare class SnkFilterBar implements FilterProvider {
|
|
7
7
|
_element: HTMLElement;
|
|
8
8
|
_application: SnkApplication;
|
|
9
|
-
_items: Array<SnkFilterItem>;
|
|
10
9
|
_updateSequence: Array<string>;
|
|
11
10
|
_calculateSortIndex: (item: SnkFilterItemConfig) => number;
|
|
12
11
|
_filtersComparator: (a: SnkFilterItemConfig, b: SnkFilterItemConfig) => number;
|
|
@@ -36,8 +35,11 @@ export declare class SnkFilterBar implements FilterProvider {
|
|
|
36
35
|
getFilterItems(): Array<HTMLElement>;
|
|
37
36
|
calculateUpdateSequence(item: SnkFilterItemConfig): void;
|
|
38
37
|
filterChangeListener(evt: CustomEvent): void;
|
|
39
|
-
updateFilter(newItem: SnkFilterItemConfig):
|
|
38
|
+
updateFilter(newItem: SnkFilterItemConfig, clear?: boolean): boolean;
|
|
40
39
|
getAddListItems(): Array<ListItem>;
|
|
40
|
+
getActiveClass(): "" | "sc-snk-filter-bar snk-filter-bar__filter-list-items-button--active";
|
|
41
|
+
getAppliedListItems(): Array<ListItem>;
|
|
41
42
|
addFilterHandler(itemName: string): void;
|
|
43
|
+
appliedFilterHandler(itemName: string): void;
|
|
42
44
|
render(): any;
|
|
43
45
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Action } from "../snk-taskbar";
|
|
1
|
+
import { Action, CustomButton } from "../snk-taskbar";
|
|
2
2
|
export declare enum TaskbarElement {
|
|
3
3
|
PREVIOUS = "PREVIOUS",
|
|
4
4
|
NEXT = "NEXT",
|
|
@@ -25,4 +25,5 @@ export declare enum AuthorizationElements {
|
|
|
25
25
|
export declare enum VisibleWhenForbidden {
|
|
26
26
|
CONFIG_GRID = "CONFIG_GRID"
|
|
27
27
|
}
|
|
28
|
-
export declare const
|
|
28
|
+
export declare const buildCustomButton: (def: CustomButton, className: string, action: (name: string) => void, isEnabled: (name: string) => boolean) => HTMLElement;
|
|
29
|
+
export declare const buildElem: (element: TaskbarElement, className: string, getTitle: (name: string) => string, action: (name: string) => void, isEnabled: (name: string) => boolean, actions: Array<Action>) => HTMLElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DataState } from "../../snk-data-unit/snk-data-unit";
|
|
2
|
+
import { CustomButton, TaskbarManager } from "../snk-taskbar";
|
|
3
|
+
export default class TaskbarProcessor {
|
|
4
|
+
private _defaultButtons;
|
|
5
|
+
buttons: string;
|
|
6
|
+
disabledButtons: Array<string>;
|
|
7
|
+
customButtons: Map<string, CustomButton>;
|
|
8
|
+
constructor(defaultButtons: any);
|
|
9
|
+
process(taskbarId: string, taskbarManager: TaskbarManager, dataState: DataState, disabledButtons?: Array<string>): void;
|
|
10
|
+
private getButtonsArray;
|
|
11
|
+
private isEnabled;
|
|
12
|
+
}
|