@genexus/genexus-ide-ui 0.0.56 → 0.0.58
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/{ch-checkbox_4.cjs.entry.js → ch-checkbox_3.cjs.entry.js} +90 -65
- package/dist/cjs/{ch-grid-action-refresh_6.cjs.entry.js → ch-grid-action-refresh_7.cjs.entry.js} +168 -4
- package/dist/cjs/ch-icon_2.cjs.entry.js +1 -0
- package/dist/cjs/ch-suggest_4.cjs.entry.js +7 -3
- package/dist/cjs/ch-test-suggest.cjs.entry.js +84 -0
- package/dist/cjs/ch-test-tree-x.cjs.entry.js +83 -43
- package/dist/cjs/ch-tooltip.cjs.entry.js +85 -0
- package/dist/cjs/config-082c7c76.js +9 -0
- package/dist/cjs/{form-a22de8f3.js → form-a2de5b1c.js} +14 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-grid-chameleon.cjs.entry.js +21 -3
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +10 -9
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +2 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +76 -116
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +3 -2
- package/dist/cjs/gx-ide-test.cjs.entry.js +51 -5
- package/dist/cjs/gxg-combo-box_2.cjs.entry.js +9 -4
- package/dist/cjs/gxg-form-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/gxg-form-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/gxg-form-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/gxg-form-text.cjs.entry.js +19 -4
- package/dist/cjs/gxg-form-textarea.cjs.entry.js +8 -4
- package/dist/cjs/gxg-label_2.cjs.entry.js +40 -2
- package/dist/cjs/gxg-list-box_2.cjs.entry.js +2 -2
- package/dist/cjs/gxg-select.cjs.entry.js +1 -1
- package/dist/cjs/gxg-test.cjs.entry.js +1 -16
- package/dist/cjs/gxg-tree-view.cjs.entry.js +108 -45
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/common/config.js +5 -0
- package/dist/collection/common/helpers.js +3 -0
- package/dist/collection/components/new-kb/new-kb.js +10 -9
- package/dist/collection/components/new-object/new-object.js +2 -1
- package/dist/collection/components/references/helpers.js +16 -19
- package/dist/collection/components/references/references.css +8 -0
- package/dist/collection/components/references/references.js +60 -98
- package/dist/collection/components/share-kb/share-kb.js +3 -2
- package/dist/components/ch-paginator-pages.js +1 -171
- package/dist/{esm/ch-paginator-pages.entry.js → components/ch-paginator-pages2.js} +29 -8
- package/dist/components/ch-paginator2.js +18 -4
- package/dist/components/ch-suggest2.js +6 -2
- package/dist/components/ch-test-suggest.js +119 -0
- package/dist/components/ch-test-tree-x.js +96 -58
- package/dist/components/ch-tooltip.js +115 -0
- package/dist/components/checkbox.js +1 -1
- package/dist/components/combo-box.js +10 -4
- package/dist/components/config.js +7 -0
- package/dist/components/form-checkbox.js +1 -1
- package/dist/components/form-text.js +20 -4
- package/dist/components/form-textarea.js +9 -4
- package/dist/components/form.js +14 -1
- package/dist/components/gx-grid-chameleon.js +52 -28
- package/dist/components/gx-ide-new-kb.js +10 -9
- package/dist/components/gx-ide-new-object.js +2 -1
- package/dist/components/gx-ide-references.js +122 -150
- package/dist/components/gx-ide-share-kb.js +3 -2
- package/dist/components/gx-ide-test.js +48 -2
- package/dist/components/gxg-test.js +25 -22
- package/dist/components/gxg-tree-view.js +2 -389
- package/dist/components/icon2.js +1 -0
- package/dist/components/index.js +2 -1
- package/dist/components/list-box.js +1 -1
- package/dist/components/suggest.js +1 -1
- package/dist/components/tooltip.js +45 -3
- package/dist/components/tree-view.js +453 -0
- package/dist/components/tree-x-list-item.js +59 -32
- package/dist/components/tree-x.js +34 -17
- package/dist/esm/{ch-checkbox_4.entry.js → ch-checkbox_3.entry.js} +92 -66
- package/dist/esm/{ch-grid-action-refresh_6.entry.js → ch-grid-action-refresh_7.entry.js} +168 -5
- package/dist/esm/ch-icon_2.entry.js +1 -0
- package/dist/esm/ch-suggest_4.entry.js +7 -3
- package/dist/esm/ch-test-suggest.entry.js +80 -0
- package/dist/esm/ch-test-tree-x.entry.js +84 -44
- package/dist/esm/ch-tooltip.entry.js +81 -0
- package/dist/esm/config-94445cc2.js +7 -0
- package/dist/esm/{form-5e68671c.js → form-9c41f579.js} +14 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-grid-chameleon.entry.js +21 -3
- package/dist/esm/gx-ide-new-kb.entry.js +10 -9
- package/dist/esm/gx-ide-new-object.entry.js +2 -1
- package/dist/esm/gx-ide-references.entry.js +76 -116
- package/dist/esm/gx-ide-share-kb.entry.js +3 -2
- package/dist/esm/gx-ide-test.entry.js +48 -2
- package/dist/esm/gxg-combo-box_2.entry.js +9 -4
- package/dist/esm/gxg-form-checkbox-group.entry.js +1 -1
- package/dist/esm/gxg-form-checkbox.entry.js +2 -2
- package/dist/esm/gxg-form-radio-group.entry.js +1 -1
- package/dist/esm/gxg-form-text.entry.js +19 -4
- package/dist/esm/gxg-form-textarea.entry.js +8 -4
- package/dist/esm/gxg-label_2.entry.js +41 -3
- package/dist/esm/gxg-list-box_2.entry.js +2 -2
- package/dist/esm/gxg-select.entry.js +1 -1
- package/dist/esm/gxg-test.entry.js +1 -16
- package/dist/esm/gxg-tree-view.entry.js +109 -46
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.css +4 -2
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/icon-assets/gemini-tools/error.svg +1 -1
- package/dist/genexus-ide-ui/icon-assets/gemini-tools/success.svg +1 -1
- package/dist/genexus-ide-ui/icon-assets/gemini-tools/warning.svg +1 -1
- package/dist/genexus-ide-ui/{p-afe9515e.entry.js → p-0268cc45.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-0aa11d6f.entry.js +1 -0
- package/dist/genexus-ide-ui/p-0f4fe7ad.js +1 -0
- package/dist/genexus-ide-ui/p-109209dc.entry.js +1 -0
- package/dist/genexus-ide-ui/p-123b8351.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-a440a73f.entry.js → p-1294d220.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-4eaffd02.entry.js → p-2096031c.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-f3a1dc7c.entry.js → p-2537b4d6.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-3657924a.entry.js +1 -0
- package/dist/genexus-ide-ui/p-3ec2f036.entry.js +1 -0
- package/dist/genexus-ide-ui/p-4923cffa.entry.js +1 -0
- package/dist/genexus-ide-ui/p-4e81926d.entry.js +1 -0
- package/dist/genexus-ide-ui/p-71c6da54.entry.js +1 -0
- package/dist/genexus-ide-ui/p-86b98a99.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-e586d05e.entry.js → p-875e5979.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-9e428123.entry.js +1 -0
- package/dist/genexus-ide-ui/p-a8b8baf9.entry.js +1 -0
- package/dist/genexus-ide-ui/p-cd00ba19.entry.js +1 -0
- package/dist/genexus-ide-ui/p-ce9fef1a.entry.js +1 -0
- package/dist/genexus-ide-ui/p-d47ed4e3.entry.js +1 -0
- package/dist/genexus-ide-ui/p-d7b452ef.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-5cb871e3.entry.js → p-ebcdef37.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-f1ff6b48.entry.js +1 -0
- package/dist/genexus-ide-ui/p-f62d9b6d.entry.js +1 -0
- package/dist/genexus-ide-ui/p-f82f25e2.js +1 -0
- package/dist/genexus-ide-ui/p-f9f1d95d.entry.js +1 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/checkbox/checkbox.css +3 -3
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-suggest/test-suggest.css +114 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-tree-x.css +1 -47
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tooltip/tooltip.css +120 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/{tree-x → tree-view/tree-x}/tree-x.css +4 -5
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/{tree-x-list-item → tree-view/tree-x-list-item}/tree-x-list-item.css +8 -9
- package/dist/node_modules/@genexus/gemini/dist/collection/components/combo-box/combo-box.css +5 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-checkbox/form-checkbox.css +18 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-text/form-text.css +37 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-textarea/form-textarea.css +22 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/list-box/list-box.css +18 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/suggest/styles.css +18 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/tooltip/tooltip.css +58 -3
- package/dist/node_modules/@genexus/gemini/dist/collection/components/tree-view/tree-view.css +68 -13
- package/dist/types/common/config.d.ts +3 -0
- package/dist/types/common/helpers.d.ts +1 -0
- package/dist/types/components/references/helpers.d.ts +3 -3
- package/dist/types/components/references/references.d.ts +7 -19
- package/package.json +3 -3
- package/dist/cjs/ch-paginator-pages.cjs.entry.js +0 -156
- package/dist/cjs/update-tree-model-8b154db1.js +0 -53
- package/dist/components/ch-tree-x-list.js +0 -6
- package/dist/components/tree-x-list.js +0 -37
- package/dist/components/update-tree-model.js +0 -50
- package/dist/esm/update-tree-model-6c612f05.js +0 -50
- package/dist/genexus-ide-ui/p-01406cbc.js +0 -1
- package/dist/genexus-ide-ui/p-03efca69.entry.js +0 -1
- package/dist/genexus-ide-ui/p-1d7c22d5.entry.js +0 -1
- package/dist/genexus-ide-ui/p-395a65de.entry.js +0 -1
- package/dist/genexus-ide-ui/p-3b4fca51.entry.js +0 -1
- package/dist/genexus-ide-ui/p-447c3a31.entry.js +0 -1
- package/dist/genexus-ide-ui/p-46d393f5.entry.js +0 -1
- package/dist/genexus-ide-ui/p-58f882c6.entry.js +0 -1
- package/dist/genexus-ide-ui/p-60bea19c.entry.js +0 -1
- package/dist/genexus-ide-ui/p-64cbe277.entry.js +0 -1
- package/dist/genexus-ide-ui/p-71ecc7fd.js +0 -1
- package/dist/genexus-ide-ui/p-9a6cb543.entry.js +0 -1
- package/dist/genexus-ide-ui/p-a2fa3132.entry.js +0 -1
- package/dist/genexus-ide-ui/p-a708db45.entry.js +0 -1
- package/dist/genexus-ide-ui/p-c0edbeb5.entry.js +0 -1
- package/dist/genexus-ide-ui/p-c7425416.entry.js +0 -1
- package/dist/genexus-ide-ui/p-cd5482fa.entry.js +0 -1
- package/dist/genexus-ide-ui/p-d312fe25.entry.js +0 -1
- package/dist/genexus-ide-ui/p-e6ae0460.entry.js +0 -1
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-x-list/tree-x-list.css +0 -6
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement, w as writeTask } from './index-0da01575.js';
|
|
2
2
|
import { D as DISABLED_CLASS } from './reserverd-names-2a2d0fb3.js';
|
|
3
|
-
import { m as mouseEventModifierKey } from './helpers-1ecd5e26.js';
|
|
3
|
+
import { f as focusComposedPath, m as mouseEventModifierKey } from './helpers-1ecd5e26.js';
|
|
4
4
|
|
|
5
|
-
const checkboxCss = "*,::before,::after{box-sizing:border-box}:host{display:flex;align-items:center;align-self:stretch;outline:unset;touch-action:manipulation;user-select:none}:host(.ch-checkbox--actionable) :is(.input,.label){cursor:pointer}.container{position:relative;width:min(1em, 20px);height:min(1em, 20px);border:1px solid var(--option-border-color,
|
|
5
|
+
const checkboxCss = "*,::before,::after{box-sizing:border-box}:host{display:flex;align-items:center;align-self:stretch;outline:unset;touch-action:manipulation;user-select:none}:host(.ch-checkbox--actionable) :is(.input,.label){cursor:pointer}.container{position:relative;width:min(1em, 20px);height:min(1em, 20px);border:1px solid var(--option-border-color, currentColor);border-radius:18.75%}.container--checked{background-color:var(--option-checked-color, #ffffff00)}.container:focus-within{box-shadow:0 0 1px 1px color-mix(in srgb, currentColor 25%, transparent)}.input{display:flex;width:100%;height:100%;opacity:0;margin:0;padding:0}.option{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);width:50%;height:50%;background-color:currentColor;opacity:0;pointer-events:none}.option--checked{opacity:1;-webkit-mask:url(\"data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' %3E%3Cpath fill='currentColor' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z' /%3E%3C/svg%3E\")}.option--indeterminate{opacity:1}.label{margin-inline-start:min(0.35em, 7px)}";
|
|
6
6
|
|
|
7
7
|
const CHECKBOX_ID = "checkbox";
|
|
8
8
|
const PARTS = (checked, indeterminate) => `${checked ? " checked" : ""}${indeterminate ? " indeterminate" : ""}`;
|
|
@@ -101,7 +101,7 @@ const scrollToEdge = (event, container, scrollSpeed, scrollThreshold) => {
|
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
const treeXCss = "ch-tree-x{display:flex;position:relative;overflow:auto}ch-tree-x
|
|
104
|
+
const treeXCss = "ch-tree-x{display:flex;position:relative;width:100%;overflow:auto}ch-tree-x>.ch-tree-x-container{position:absolute;inset:0}ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list-item{pointer-events:var(--ch-tree-x-pointer-events, all)}ch-tree-x.ch-tree-x-dragging-item .ch-tree-x-list-item--deny-drop{pointer-events:none}ch-tree-x.ch-tree-x--dragging-selected-items ch-tree-x-list-item[selected]{--ch-tree-x-pointer-events:none}ch-tree-x.ch-tree-x-waiting-drop-processing{cursor:wait}ch-tree-x.ch-tree-x-waiting-drop-processing>.ch-tree-x-container{pointer-events:none}.ch-tree-x-drag-info{--rtl-offset:16px;position:fixed;left:0;top:0;transform:translate(calc(var(--ch-tree-x-dragging-item-x) + var(--rtl-offset)), calc(var(--ch-tree-x-dragging-item-y) + 8px));pointer-events:none;z-index:1;animation:ch-tree-x-drag-info-fade-in 10ms}@keyframes ch-tree-x-drag-info-fade-in{0%,100%{opacity:0}}html[dir=rtl] .ch-tree-x-drag-info{--rtl-offset:-100%}";
|
|
105
105
|
|
|
106
106
|
const TREE_ITEM_TAG_NAME$1 = "ch-tree-x-list-item";
|
|
107
107
|
const TREE_TAG_NAME = "ch-tree-x";
|
|
@@ -111,8 +111,9 @@ const TEXT_FORMAT = "text/plain";
|
|
|
111
111
|
const ARROW_DOWN_KEY = "ArrowDown";
|
|
112
112
|
const ARROW_UP_KEY = "ArrowUp";
|
|
113
113
|
const EDIT_KEY = "F2";
|
|
114
|
-
const
|
|
115
|
-
const
|
|
114
|
+
const isTreeItem = (element) => element.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1;
|
|
115
|
+
const getFocusedTreeItem = () => focusComposedPath().find(isTreeItem);
|
|
116
|
+
const canMoveTreeItemFocus = (treeItem) => treeItem && !treeItem.editing;
|
|
116
117
|
const getDroppableZoneKey = (newContainerId, draggedItems) => `"newContainerId":"${newContainerId}","metadata":"${JSON.stringify(draggedItems)}"`;
|
|
117
118
|
const POSITION_X_DRAG_CUSTOM_VAR = "--ch-tree-x-dragging-item-x";
|
|
118
119
|
const POSITION_Y_DRAG_CUSTOM_VAR = "--ch-tree-x-dragging-item-y";
|
|
@@ -121,32 +122,34 @@ const ChTreeX = class {
|
|
|
121
122
|
registerInstance(this, hostRef);
|
|
122
123
|
this.droppableZoneEnter = createEvent(this, "droppableZoneEnter", 7);
|
|
123
124
|
this.expandedItemChange = createEvent(this, "expandedItemChange", 7);
|
|
125
|
+
this.itemContextmenu = createEvent(this, "itemContextmenu", 7);
|
|
124
126
|
this.selectedItemsChange = createEvent(this, "selectedItemsChange", 7);
|
|
125
127
|
this.itemsDropped = createEvent(this, "itemsDropped", 7);
|
|
126
128
|
// @todo TODO: Check if key codes works in Safari
|
|
127
129
|
this.keyDownEvents = {
|
|
128
130
|
[ARROW_DOWN_KEY]: event => {
|
|
129
|
-
|
|
131
|
+
const treeItem = getFocusedTreeItem();
|
|
132
|
+
if (!canMoveTreeItemFocus(treeItem)) {
|
|
130
133
|
return;
|
|
131
134
|
}
|
|
132
135
|
event.preventDefault();
|
|
133
|
-
const treeItem = document.activeElement;
|
|
134
136
|
treeItem.focusNextItem(mouseEventModifierKey(event));
|
|
135
137
|
},
|
|
136
138
|
[ARROW_UP_KEY]: event => {
|
|
137
|
-
|
|
139
|
+
const treeItem = getFocusedTreeItem();
|
|
140
|
+
if (!canMoveTreeItemFocus(treeItem)) {
|
|
138
141
|
return;
|
|
139
142
|
}
|
|
140
143
|
event.preventDefault();
|
|
141
|
-
const treeItem = document.activeElement;
|
|
142
144
|
treeItem.focusPreviousItem(mouseEventModifierKey(event));
|
|
143
145
|
},
|
|
144
146
|
[EDIT_KEY]: event => {
|
|
145
|
-
|
|
147
|
+
const treeItem = getFocusedTreeItem();
|
|
148
|
+
if (!treeItem || !treeItem.editable) {
|
|
146
149
|
return;
|
|
147
150
|
}
|
|
148
151
|
event.preventDefault();
|
|
149
|
-
|
|
152
|
+
treeItem.editing = true;
|
|
150
153
|
}
|
|
151
154
|
};
|
|
152
155
|
this.draggingSelectedItems = false;
|
|
@@ -219,6 +222,19 @@ const ChTreeX = class {
|
|
|
219
222
|
// selected: item.selected
|
|
220
223
|
// }));
|
|
221
224
|
// }
|
|
225
|
+
handleContextMenuEvent(event) {
|
|
226
|
+
const treeItem = event.target.closest(TREE_ITEM_TAG_NAME$1);
|
|
227
|
+
if (!treeItem) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
event.preventDefault();
|
|
231
|
+
this.itemContextmenu.emit({
|
|
232
|
+
id: treeItem.id,
|
|
233
|
+
itemRef: treeItem,
|
|
234
|
+
metadata: treeItem.metadata,
|
|
235
|
+
contextmenuEvent: event
|
|
236
|
+
});
|
|
237
|
+
}
|
|
222
238
|
// Set edit mode in items
|
|
223
239
|
handleKeyDownEvents(event) {
|
|
224
240
|
const keyHandler = this.keyDownEvents[event.key];
|
|
@@ -347,11 +363,11 @@ const ChTreeX = class {
|
|
|
347
363
|
if (!itemRef) {
|
|
348
364
|
return;
|
|
349
365
|
}
|
|
350
|
-
let parentItem = itemRef.parentElement
|
|
366
|
+
let parentItem = itemRef.parentElement;
|
|
351
367
|
// Expand all parents
|
|
352
368
|
while (parentItem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
|
|
353
369
|
parentItem.expanded = true;
|
|
354
|
-
parentItem = parentItem.parentElement
|
|
370
|
+
parentItem = parentItem.parentElement;
|
|
355
371
|
}
|
|
356
372
|
// Wait until the parents are expanded
|
|
357
373
|
requestAnimationFrame(() => {
|
|
@@ -365,7 +381,7 @@ const ChTreeX = class {
|
|
|
365
381
|
* @param draggedItems Information about the dragged items.
|
|
366
382
|
* @param validDrop Current state of the droppable zone.
|
|
367
383
|
*/
|
|
368
|
-
async
|
|
384
|
+
async updateValidDropZone(requestTimestamp, newContainerId, draggedItems, validDrop) {
|
|
369
385
|
var _a;
|
|
370
386
|
if (!this.draggingInTheDocument ||
|
|
371
387
|
requestTimestamp <= this.dragStartTimestamp) {
|
|
@@ -481,7 +497,7 @@ const ChTreeX = class {
|
|
|
481
497
|
}
|
|
482
498
|
getDirectParentsOfDraggableItems(draggingSelectedItems) {
|
|
483
499
|
if (!draggingSelectedItems) {
|
|
484
|
-
const parentTreeItemElem = this.currentDraggedItem.parentElement
|
|
500
|
+
const parentTreeItemElem = this.currentDraggedItem.parentElement;
|
|
485
501
|
if (parentTreeItemElem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
|
|
486
502
|
this.draggedParentIds.push(parentTreeItemElem.id);
|
|
487
503
|
}
|
|
@@ -527,43 +543,39 @@ const ChTreeX = class {
|
|
|
527
543
|
render() {
|
|
528
544
|
return (h(Host, { class: {
|
|
529
545
|
"ch-tree-x-dragging-item": this.draggingInTheDocument,
|
|
546
|
+
"ch-tree-x-not-dragging-item": !this.draggingInTheDocument,
|
|
530
547
|
"ch-tree-x--dragging-selected-items": this.draggingInTree && this.draggingSelectedItems,
|
|
531
548
|
"ch-tree-x-waiting-drop-processing": this.waitDropProcessing
|
|
532
|
-
} }, h("slot", null), this.draggingInTree && (h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
|
|
549
|
+
} }, h("div", { role: "tree", part: "tree-x-container", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-x-container" }, h("slot", null)), this.draggingInTree && (h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
|
|
533
550
|
}
|
|
534
551
|
get el() { return getElement(this); }
|
|
535
552
|
};
|
|
536
553
|
ChTreeX.style = treeXCss;
|
|
537
554
|
|
|
538
|
-
const
|
|
539
|
-
|
|
540
|
-
const ChTreeListX = class {
|
|
541
|
-
constructor(hostRef) {
|
|
542
|
-
registerInstance(this, hostRef);
|
|
543
|
-
/**
|
|
544
|
-
* Level in the tree at which the control is placed.
|
|
545
|
-
*/
|
|
546
|
-
this.level = 0;
|
|
547
|
-
}
|
|
548
|
-
render() {
|
|
549
|
-
return (h(Host, { role: this.level === 0 ? "tree" : "group" }, h("slot", null)));
|
|
550
|
-
}
|
|
551
|
-
get el() { return getElement(this); }
|
|
552
|
-
};
|
|
553
|
-
ChTreeListX.style = treeXListCss;
|
|
554
|
-
|
|
555
|
-
const treeXListItemCss = ":where(button){all:unset;display:flex;cursor:pointer;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--checkbox-size:1em;--expandable-button-width:0.75em;--ch-tree-x-list-item-dashed-line--offset:0px;--tab-width:calc(\n var(--checkbox-size) + var(--expandable-button-width) +\n (5px * 2)\n );display:grid;grid-template-rows:min-content;overflow:hidden}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:var(--padding-inline-start)}.header--disabled{opacity:0.5;pointer-events:none}.header--even{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--even-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--odd-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--level-0{--padding-inline-start:0px}.header--level-0+.expandable{--parent-padding-inline-start--even:0px}.header--expandable-offset{--own-offset:calc(\n var(--expandable-button-width) + 5px\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(var(--expandable-button-width) / 2)}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(var(--checkbox-size) / 2);--parent-negative-checkbox-offset:calc(var(--checkbox-size) / 2)}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-x-list-item-dashed-line--offset) );height:1px;width:calc( var(--tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-x-list-item-dashed-line--offset) - 4px );border:0 dashed #a9a9a9;border-block-end-width:1px;pointer-events:none;content-visibility:hidden;z-index:1}.last-all-line{inset-block-start:0;height:calc(100% - var(--distance-to-checkbox));border-inline-start-width:1px;border-end-start-radius:2px}.last-line{inset-block-start:0;height:100%;border-inline-start-width:1px;border-style:solid;border-block-end:unset}.expandable-button{display:grid;place-items:center;width:var(--expandable-button-width);height:var(--expandable-button-width);margin-inline-end:5px;z-index:1;content-visibility:auto;contain-intrinsic-size:auto var(--expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc(var(--expandable-button-width) - 2px)}.expandable-button--collapsed::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H8.54v5.61h-1V8.5H1.93v-1H7.54V1.89h1V7.5h5.61Z\"/></svg>')}.expandable-button--expanded::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H1.93v-1H14.15Z\"/></svg>')}.expandable-button:focus-visible{outline:1px solid #000}.checkbox{margin-inline-end:5px}.checkbox::part(container){width:var(--checkbox-size);height:var(--checkbox-size)}.action{display:grid;grid-template:\"left-img text right-img\"/max-content 1fr max-content;align-items:center;height:100%;flex:1}.readonly-mode{padding-block:0.75px}.left-img,.right-img{display:block;width:0.875em;height:0.875em;content-visibility:auto;contain-intrinsic-size:auto 0.875em}.left-img{grid-area:left-img;margin-inline-end:5px}.right-img{grid-area:right-img;margin-inline-start:5px}.edit-name{grid-area:text;width:100%;height:100%;background-color:unset;padding:0;margin:0;border:1px solid currentColor;font:unset;outline:unset}.downloading{width:0.75em;height:0.75em;margin-inline-start:8px;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;opacity:0.75;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.expandable{--parent-expandable-offset:0px;--parent-negative-checkbox-offset:0px;--parent-checkbox-offset:0px;display:grid;grid-template-rows:0fr;content-visibility:auto;contain-intrinsic-size:auto 100px}.expanded{grid-template-rows:1fr}:not(.expanded) ::slotted([slot=tree]){display:none;overflow:hidden;content-visibility:hidden}";
|
|
555
|
+
const treeXListItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--checkbox-size:1em;--expandable-button-width:0.75em;--ch-tree-x-list-item-dashed-line--offset:0px;--tab-width:calc(\n var(--checkbox-size) + var(--expandable-button-width) +\n (5px * 2)\n );display:grid;grid-template-rows:min-content;overflow:hidden}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:var(--padding-inline-start)}.header--disabled{opacity:0.5;pointer-events:none}.header--even{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--even-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--odd-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--level-0{--padding-inline-start:0px}.header--level-0+.expandable{--parent-padding-inline-start--even:0px}.header--expandable-offset{--own-offset:calc(\n var(--expandable-button-width) + 5px\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(var(--expandable-button-width) / 2)}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(var(--checkbox-size) / 2);--parent-negative-checkbox-offset:calc(var(--checkbox-size) / 2)}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-x-list-item-dashed-line--offset) );height:1px;width:calc( var(--tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-x-list-item-dashed-line--offset) - 4px );border:0 dashed color-mix(in srgb, currentColor 65%, transparent);border-block-end-width:1px;pointer-events:none;content-visibility:hidden;z-index:1}.last-all-line{inset-block-start:0;height:calc(100% - var(--distance-to-checkbox));border-inline-start-width:1px;border-end-start-radius:2px}.last-line{inset-block-start:0;height:100%;border-inline-start-width:1px;border-style:solid;border-block-end:unset}.expandable-button{display:grid;place-items:center;width:var(--expandable-button-width);height:var(--expandable-button-width);margin-inline-end:5px;z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc(var(--expandable-button-width) - 2px)}.expandable-button--collapsed::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H8.54v5.61h-1V8.5H1.93v-1H7.54V1.89h1V7.5h5.61Z\"/></svg>')}.expandable-button--expanded::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H1.93v-1H14.15Z\"/></svg>')}.expandable-button:focus-visible{outline:1px solid #000}.checkbox{margin-inline-end:5px}.checkbox::part(container){width:var(--checkbox-size);height:var(--checkbox-size)}.action{display:grid;grid-template:\"left-img text right-img\"/max-content 1fr max-content;align-items:center;height:100%;flex:1;cursor:pointer}.readonly-mode{padding-block:0.75px}.left-img,.right-img{display:block;width:0.875em;height:0.875em;content-visibility:auto;contain-intrinsic-size:auto 0.875em}.left-img{grid-area:left-img;margin-inline-end:5px}.right-img{grid-area:right-img;margin-inline-start:5px}.edit-name{grid-area:text;width:100%;height:100%;padding:0;margin:0;background-color:unset;color:unset;border:1px solid currentColor;font:unset;outline:unset}.downloading{width:0.75em;height:0.75em;margin-inline-start:8px;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;opacity:0.75;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.expandable{--parent-expandable-offset:0px;--parent-negative-checkbox-offset:0px;--parent-checkbox-offset:0px;display:grid;grid-auto-rows:min-content;position:relative;content-visibility:auto;contain-intrinsic-size:auto 100px}.expandable--collapsed{display:none;overflow:hidden;content-visibility:hidden}";
|
|
556
556
|
|
|
557
557
|
const resetDragImage = new Image();
|
|
558
|
+
const INITIAL_LEVEL = 0;
|
|
558
559
|
// Selectors
|
|
559
560
|
const TREE_ITEM_TAG_NAME = "ch-tree-x-list-item";
|
|
560
|
-
const DIRECT_TREE_ITEM_CHILDREN = `:scope
|
|
561
|
+
const DIRECT_TREE_ITEM_CHILDREN = `:scope>${TREE_ITEM_TAG_NAME}`;
|
|
561
562
|
const FIRST_ENABLED_SUB_ITEM = `${TREE_ITEM_TAG_NAME}:not([disabled])`;
|
|
562
|
-
const LAST_SUB_ITEM = `:scope
|
|
563
|
+
const LAST_SUB_ITEM = `:scope>${TREE_ITEM_TAG_NAME}:last-child`;
|
|
563
564
|
// Keys
|
|
564
565
|
const EXPANDABLE_ID = "expandable";
|
|
565
566
|
const ENTER_KEY = "Enter";
|
|
566
567
|
const ESCAPE_KEY = "Escape";
|
|
568
|
+
// Export Parts
|
|
569
|
+
const getCheckboxExportPart = (part) => `${part}:checkbox__${part}`;
|
|
570
|
+
const CHECKBOX_EXPORT_PARTS = [
|
|
571
|
+
"container",
|
|
572
|
+
"input",
|
|
573
|
+
"option",
|
|
574
|
+
"checked",
|
|
575
|
+
"indeterminate"
|
|
576
|
+
]
|
|
577
|
+
.map(getCheckboxExportPart)
|
|
578
|
+
.join(",");
|
|
567
579
|
const ChTreeXListItem = class {
|
|
568
580
|
constructor(hostRef) {
|
|
569
581
|
registerInstance(this, hostRef);
|
|
@@ -572,6 +584,7 @@ const ChTreeXListItem = class {
|
|
|
572
584
|
this.itemDragEnd = createEvent(this, "itemDragEnd", 7);
|
|
573
585
|
this.loadLazyContent = createEvent(this, "loadLazyContent", 7);
|
|
574
586
|
this.modifyCaption = createEvent(this, "modifyCaption", 7);
|
|
587
|
+
this.openReference = createEvent(this, "openReference", 7);
|
|
575
588
|
this.selectedItemChange = createEvent(this, "selectedItemChange", 7);
|
|
576
589
|
this.selectedItemSync = createEvent(this, "selectedItemSync", 7);
|
|
577
590
|
/**
|
|
@@ -644,7 +657,7 @@ const ChTreeXListItem = class {
|
|
|
644
657
|
/**
|
|
645
658
|
* Level in the tree at which the item is placed.
|
|
646
659
|
*/
|
|
647
|
-
this.level =
|
|
660
|
+
this.level = INITIAL_LEVEL;
|
|
648
661
|
/**
|
|
649
662
|
* `true` if the checkbox's value is indeterminate.
|
|
650
663
|
*/
|
|
@@ -718,16 +731,15 @@ const ChTreeXListItem = class {
|
|
|
718
731
|
this.expanded = !this.expanded;
|
|
719
732
|
}
|
|
720
733
|
this.selected = true;
|
|
721
|
-
this.selectedItemChange.emit(this.getSelectedInfo(mouseEventModifierKey(event),
|
|
734
|
+
this.selectedItemChange.emit(this.getSelectedInfo(mouseEventModifierKey(event), true));
|
|
722
735
|
};
|
|
723
|
-
this.getSelectedInfo = (ctrlKeyPressed,
|
|
736
|
+
this.getSelectedInfo = (ctrlKeyPressed, selected) => ({
|
|
724
737
|
ctrlKeyPressed: ctrlKeyPressed,
|
|
725
738
|
expanded: this.expanded,
|
|
726
|
-
goToReference: goToReference,
|
|
727
739
|
id: this.el.id,
|
|
728
740
|
itemRef: this.el,
|
|
729
741
|
metadata: this.metadata,
|
|
730
|
-
parentId: this.el.parentElement.
|
|
742
|
+
parentId: this.el.parentElement.id,
|
|
731
743
|
selected: selected
|
|
732
744
|
});
|
|
733
745
|
this.handleActionDblClick = (event) => {
|
|
@@ -736,8 +748,11 @@ const ChTreeXListItem = class {
|
|
|
736
748
|
this.toggleSelected();
|
|
737
749
|
return;
|
|
738
750
|
}
|
|
751
|
+
this.emitOpenReference();
|
|
739
752
|
// The Control key is not pressed, so the control can be expanded
|
|
740
|
-
this.
|
|
753
|
+
if (!this.leaf) {
|
|
754
|
+
this.toggleExpand(event);
|
|
755
|
+
}
|
|
741
756
|
};
|
|
742
757
|
/**
|
|
743
758
|
* Event triggered by the following actions on the main button:
|
|
@@ -757,6 +772,7 @@ const ChTreeXListItem = class {
|
|
|
757
772
|
this.toggleOrSelect(event);
|
|
758
773
|
return;
|
|
759
774
|
}
|
|
775
|
+
this.emitOpenReference();
|
|
760
776
|
// Enter or space
|
|
761
777
|
this.toggleExpand(event);
|
|
762
778
|
};
|
|
@@ -842,7 +858,6 @@ const ChTreeXListItem = class {
|
|
|
842
858
|
}
|
|
843
859
|
handleSelectedChange(newValue) {
|
|
844
860
|
this.selectedItemSync.emit(this.getSelectedInfo(true, // Does not matter in this case
|
|
845
|
-
false, // Does not matter in this case
|
|
846
861
|
newValue));
|
|
847
862
|
}
|
|
848
863
|
handleShowLinesChange(newShowLines) {
|
|
@@ -902,12 +917,11 @@ const ChTreeXListItem = class {
|
|
|
902
917
|
return;
|
|
903
918
|
}
|
|
904
919
|
// The item is the last one of the tree at the first level
|
|
905
|
-
if (this.level ===
|
|
920
|
+
if (this.level === INITIAL_LEVEL) {
|
|
906
921
|
return;
|
|
907
922
|
}
|
|
908
923
|
// Otherwise, ask the parent to focus the next sibling
|
|
909
|
-
const parentItem = this.el.parentElement
|
|
910
|
-
.parentElement;
|
|
924
|
+
const parentItem = this.el.parentElement;
|
|
911
925
|
parentItem.focusNextSibling(ctrlKeyPressed);
|
|
912
926
|
}
|
|
913
927
|
/**
|
|
@@ -923,12 +937,11 @@ const ChTreeXListItem = class {
|
|
|
923
937
|
return;
|
|
924
938
|
}
|
|
925
939
|
// The item is the first one of the tree at the first level
|
|
926
|
-
if (this.level ===
|
|
940
|
+
if (this.level === INITIAL_LEVEL) {
|
|
927
941
|
return;
|
|
928
942
|
}
|
|
929
943
|
// Otherwise, set focus in the parent element
|
|
930
|
-
const parentItem = this.el.parentElement
|
|
931
|
-
.parentElement;
|
|
944
|
+
const parentItem = this.el.parentElement;
|
|
932
945
|
// Check if the parent is not disabled
|
|
933
946
|
if (parentItem.disabled) {
|
|
934
947
|
parentItem.focusPreviousItem(ctrlKeyPressed);
|
|
@@ -966,7 +979,7 @@ const ChTreeXListItem = class {
|
|
|
966
979
|
this.headerRef.focus();
|
|
967
980
|
// Normal navigation auto selects the item.
|
|
968
981
|
if (!ctrlKeyPressed) {
|
|
969
|
-
this.setSelected(
|
|
982
|
+
this.setSelected();
|
|
970
983
|
}
|
|
971
984
|
}
|
|
972
985
|
getDirectTreeItems() {
|
|
@@ -999,34 +1012,41 @@ const ChTreeXListItem = class {
|
|
|
999
1012
|
toggleSelected() {
|
|
1000
1013
|
const selected = !this.selected;
|
|
1001
1014
|
this.selected = selected;
|
|
1002
|
-
this.selectedItemChange.emit(this.getSelectedInfo(true,
|
|
1015
|
+
this.selectedItemChange.emit(this.getSelectedInfo(true, selected));
|
|
1003
1016
|
}
|
|
1004
|
-
setSelected(
|
|
1017
|
+
setSelected() {
|
|
1005
1018
|
this.selected = true;
|
|
1006
|
-
this.selectedItemChange.emit(this.getSelectedInfo(false,
|
|
1019
|
+
this.selectedItemChange.emit(this.getSelectedInfo(false, true));
|
|
1007
1020
|
}
|
|
1008
1021
|
toggleOrSelect(event) {
|
|
1009
1022
|
if (mouseEventModifierKey(event)) {
|
|
1010
1023
|
this.toggleSelected();
|
|
1011
1024
|
}
|
|
1012
1025
|
else {
|
|
1013
|
-
this.setSelected(
|
|
1026
|
+
this.setSelected();
|
|
1014
1027
|
}
|
|
1015
1028
|
}
|
|
1029
|
+
emitOpenReference() {
|
|
1030
|
+
this.openReference.emit({
|
|
1031
|
+
id: this.el.id,
|
|
1032
|
+
leaf: this.leaf,
|
|
1033
|
+
metadata: this.metadata
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1016
1036
|
componentWillLoad() {
|
|
1017
|
-
const
|
|
1037
|
+
const parentElementItem = this.el
|
|
1038
|
+
.parentElement;
|
|
1018
1039
|
// Check if must lazy load
|
|
1019
1040
|
this.lazyLoadItems(this.expanded);
|
|
1020
1041
|
// Sync selected state with the main tree
|
|
1021
1042
|
if (this.selected) {
|
|
1022
|
-
this.selectedItemChange.emit(this.getSelectedInfo(true,
|
|
1043
|
+
this.selectedItemChange.emit(this.getSelectedInfo(true, true));
|
|
1023
1044
|
}
|
|
1024
1045
|
// No need to update more the status
|
|
1025
|
-
if (this.level ===
|
|
1046
|
+
if (this.level === INITIAL_LEVEL) {
|
|
1026
1047
|
return;
|
|
1027
1048
|
}
|
|
1028
1049
|
// Update checkbox status
|
|
1029
|
-
const parentElementItem = parentElement.parentElement;
|
|
1030
1050
|
if (parentElementItem.checkbox) {
|
|
1031
1051
|
this.checked = parentElementItem.checked;
|
|
1032
1052
|
}
|
|
@@ -1049,11 +1069,14 @@ const ChTreeXListItem = class {
|
|
|
1049
1069
|
const expandableButtonNotVisible = !this.leaf && !this.showExpandableButton;
|
|
1050
1070
|
const acceptDrop = !this.dropDisabled && !this.leaf && this.dragState !== "start";
|
|
1051
1071
|
const hasContent = !this.leaf && !this.lazyLoad;
|
|
1052
|
-
const showAllLines = this.showLines === "all" && this.level !==
|
|
1053
|
-
const showLastLine = this.showLines === "last" &&
|
|
1054
|
-
|
|
1072
|
+
const showAllLines = this.showLines === "all" && this.level !== INITIAL_LEVEL;
|
|
1073
|
+
const showLastLine = this.showLines === "last" &&
|
|
1074
|
+
this.level !== INITIAL_LEVEL &&
|
|
1075
|
+
this.lastItem;
|
|
1076
|
+
return (h(Host, { role: "treeitem", "aria-level": this.level + 1, "aria-selected": this.selected ? "true" : null, class: {
|
|
1055
1077
|
[TREE_ITEM_TAG_NAME + "--downloading"]: this.downloading,
|
|
1056
1078
|
[TREE_ITEM_TAG_NAME + "--editing"]: this.editing,
|
|
1079
|
+
[TREE_ITEM_TAG_NAME + "--not-editing"]: !this.editing,
|
|
1057
1080
|
[TREE_ITEM_TAG_NAME + "--drag-" + this.dragState]: this.dragState !== "none" && this.dragState !== "start",
|
|
1058
1081
|
[TREE_ITEM_TAG_NAME + "--deny-drop"]: this.leaf
|
|
1059
1082
|
}, style: { "--level": `${this.level}` },
|
|
@@ -1068,25 +1091,28 @@ const ChTreeXListItem = class {
|
|
|
1068
1091
|
"header--odd": !evenLevel,
|
|
1069
1092
|
"header--even-expandable": evenLevel && expandableButtonVisible,
|
|
1070
1093
|
"header--odd-expandable": !evenLevel && expandableButtonVisible,
|
|
1071
|
-
"header--level-0": this.level ===
|
|
1094
|
+
"header--level-0": this.level === INITIAL_LEVEL
|
|
1072
1095
|
}, part: `header${this.disabled ? " disabled" : ""}${this.selected ? " selected" : ""}`, type: "button", disabled: this.disabled, onClick: this.handleActionClick, onKeyDown: !this.editing ? this.handleActionKeyDown : null,
|
|
1073
1096
|
// Drag and drop
|
|
1074
1097
|
draggable: !this.dragDisabled, onDragStart: this.handleDragStart, onDragEnd: !this.dragDisabled ? this.handleDragEnd : null, ref: el => (this.headerRef = el) }, !this.leaf && this.showExpandableButton && (h("button", { type: "button", class: {
|
|
1075
1098
|
"expandable-button": true,
|
|
1076
1099
|
"expandable-button--expanded": this.expanded,
|
|
1077
1100
|
"expandable-button--collapsed": !this.expanded
|
|
1078
|
-
}, part: `expandable-button${this.disabled ? " disabled" : ""}${this.expanded ? " expanded" : " collapsed"}`, disabled: this.disabled, onClick: this.toggleExpand })), this.checkbox && (h("ch-checkbox", { accessibleName: this.caption, class: "checkbox", part: `checkbox${this.disabled ? " disabled" : ""}${this.checked ? " checked" : ""}${this.indeterminate ? " indeterminate" : ""}`, checkedValue: "true", disabled: this.disabled, indeterminate: this.indeterminate, unCheckedValue: "false", value: `${this.checked}`, onInput: this.handleCheckedChange })), this.customRender ? (h("slot", { name: "custom-content" })) : ([
|
|
1101
|
+
}, part: `expandable-button${this.disabled ? " disabled" : ""}${this.expanded ? " expanded" : " collapsed"}`, disabled: this.disabled, onClick: this.toggleExpand })), this.checkbox && (h("ch-checkbox", { accessibleName: this.caption, class: "checkbox", exportparts: CHECKBOX_EXPORT_PARTS, part: `checkbox${this.disabled ? " disabled" : ""}${this.checked ? " checked" : ""}${this.indeterminate ? " indeterminate" : ""}`, checkedValue: "true", disabled: this.disabled, indeterminate: this.indeterminate, unCheckedValue: "false", value: `${this.checked}`, onInput: this.handleCheckedChange })), this.customRender ? (h("slot", { name: "custom-content" })) : ([
|
|
1079
1102
|
h("div", { class: {
|
|
1080
1103
|
action: true,
|
|
1081
1104
|
"readonly-mode": !this.editing
|
|
1082
|
-
}, part: `action
|
|
1105
|
+
}, part: `action${!this.editing ? " readonly-mode" : ""}${!this.leaf && this.expanded ? " expanded" : ""}`, onDblClick: !this.editing ? this.handleActionDblClick : null }, this.leftImgSrc && this.renderImg("left-img", this.leftImgSrc), this.editable && this.editing ? (h("input", { class: "edit-name", part: "edit-name", disabled: this.disabled, type: "text", value: this.caption, onBlur: this.removeEditMode(false), onKeyDown: this.checkIfShouldRemoveEditMode, ref: el => (this.inputRef = el) })) : (this.caption), this.rightImgSrc &&
|
|
1083
1106
|
this.renderImg("right-img", this.rightImgSrc)),
|
|
1084
1107
|
this.showDownloadingSpinner && !this.leaf && this.downloading && (h("div", { class: "downloading", part: "downloading" }))
|
|
1085
1108
|
]), (showAllLines || showLastLine) && (h("div", { class: {
|
|
1086
1109
|
"dashed-line": true,
|
|
1087
1110
|
"last-all-line": showAllLines && this.lastItem,
|
|
1088
1111
|
"last-line": showLastLine
|
|
1089
|
-
}, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (h("div", { "aria-busy": this.downloading.toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: {
|
|
1112
|
+
}, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (h("div", { role: "group", "aria-busy": this.downloading.toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: {
|
|
1113
|
+
expandable: true,
|
|
1114
|
+
"expandable--collapsed": !this.expanded
|
|
1115
|
+
}, part: `expandable${this.expanded ? " expanded" : " collapsed"}` }, h("slot", null)))));
|
|
1090
1116
|
}
|
|
1091
1117
|
get el() { return getElement(this); }
|
|
1092
1118
|
static get watchers() { return {
|
|
@@ -1100,4 +1126,4 @@ const ChTreeXListItem = class {
|
|
|
1100
1126
|
};
|
|
1101
1127
|
ChTreeXListItem.style = treeXListItemCss;
|
|
1102
1128
|
|
|
1103
|
-
export { CheckBox as ch_checkbox, ChTreeX as ch_tree_x,
|
|
1129
|
+
export { CheckBox as ch_checkbox, ChTreeX as ch_tree_x, ChTreeXListItem as ch_tree_x_list_item };
|
|
@@ -149,10 +149,24 @@ const ChPaginator = class {
|
|
|
149
149
|
}
|
|
150
150
|
loadElements() {
|
|
151
151
|
this.elPages = this.el.querySelector("ch-paginator-pages");
|
|
152
|
-
this.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
152
|
+
this.el
|
|
153
|
+
.querySelectorAll("ch-paginator-navigate")
|
|
154
|
+
.forEach((el) => {
|
|
155
|
+
switch (el.type) {
|
|
156
|
+
case "first":
|
|
157
|
+
this.elFirst = el;
|
|
158
|
+
break;
|
|
159
|
+
case "previous":
|
|
160
|
+
this.elPrevious = el;
|
|
161
|
+
break;
|
|
162
|
+
case "next":
|
|
163
|
+
this.elNext = el;
|
|
164
|
+
break;
|
|
165
|
+
case "last":
|
|
166
|
+
this.elLast = el;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
156
170
|
}
|
|
157
171
|
render() {
|
|
158
172
|
if (this.elPages) {
|
|
@@ -202,6 +216,155 @@ const ChPaginatorNavigate = class {
|
|
|
202
216
|
};
|
|
203
217
|
ChPaginatorNavigate.style = chPaginatorNavigateCss;
|
|
204
218
|
|
|
219
|
+
const chPaginatorPagesCss = "button{all:unset}.pages{display:flex;align-items:center;list-style-type:none;margin:0;padding:0}";
|
|
220
|
+
|
|
221
|
+
const ChPaginatorPages = class {
|
|
222
|
+
constructor(hostRef) {
|
|
223
|
+
registerInstance(this, hostRef);
|
|
224
|
+
this.pageChanged = createEvent(this, "pageChanged", 7);
|
|
225
|
+
/**
|
|
226
|
+
* The active page number.
|
|
227
|
+
*/
|
|
228
|
+
this.page = 1;
|
|
229
|
+
/**
|
|
230
|
+
* The total number of pages.
|
|
231
|
+
*/
|
|
232
|
+
this.totalPages = 1;
|
|
233
|
+
/**
|
|
234
|
+
* The maximum number of items to display in the pagination.
|
|
235
|
+
*/
|
|
236
|
+
this.maxSize = 9;
|
|
237
|
+
/**
|
|
238
|
+
* Flag to render the first and last pages.
|
|
239
|
+
*/
|
|
240
|
+
this.renderFirstLastPages = true;
|
|
241
|
+
/**
|
|
242
|
+
* The text to display for the dots.
|
|
243
|
+
*/
|
|
244
|
+
this.textDots = "...";
|
|
245
|
+
this.clickHandler = (eventInfo) => {
|
|
246
|
+
const button = eventInfo.target;
|
|
247
|
+
this.page = parseInt(button.value);
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
pageHandler() {
|
|
251
|
+
this.pageChanged.emit({ page: this.page });
|
|
252
|
+
}
|
|
253
|
+
maxSizeHandler() {
|
|
254
|
+
this.validateMaxSize();
|
|
255
|
+
}
|
|
256
|
+
renderFirstLastPagesHandler() {
|
|
257
|
+
this.validateMaxSize();
|
|
258
|
+
}
|
|
259
|
+
componentDidUpdate() {
|
|
260
|
+
if (document.activeElement === this.el) {
|
|
261
|
+
this.buttonActive.focus();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
keyDownHandler(eventInfo) {
|
|
265
|
+
switch (eventInfo.key) {
|
|
266
|
+
case "ArrowLeft":
|
|
267
|
+
this.page = Math.max(this.page - 1, 1);
|
|
268
|
+
break;
|
|
269
|
+
case "ArrowRight":
|
|
270
|
+
this.page = Math.min(this.page + 1, this.totalPages);
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
focusHandler() {
|
|
275
|
+
this.buttonActive.focus();
|
|
276
|
+
}
|
|
277
|
+
getItems() {
|
|
278
|
+
const padLeft = Math.ceil((this.maxSize - 1) / 2);
|
|
279
|
+
const padRight = Math.floor((this.maxSize - 1) / 2);
|
|
280
|
+
let fillLeft, fillStart;
|
|
281
|
+
let fillRight, fillEnd;
|
|
282
|
+
if (this.maxSize === 0 || this.maxSize >= this.totalPages) {
|
|
283
|
+
fillStart = this.fillStart(false);
|
|
284
|
+
fillLeft = this.page - 1;
|
|
285
|
+
fillRight = this.totalPages - this.page;
|
|
286
|
+
fillEnd = this.fillEnd(false);
|
|
287
|
+
}
|
|
288
|
+
else if (this.page <= padLeft && this.page < this.totalPages - padRight) {
|
|
289
|
+
fillStart = this.fillStart(false);
|
|
290
|
+
fillLeft = this.page - 1;
|
|
291
|
+
fillEnd = this.fillEnd(true);
|
|
292
|
+
fillRight = padRight - fillEnd.length + (padLeft - fillLeft);
|
|
293
|
+
}
|
|
294
|
+
else if (this.page > padLeft && this.page < this.totalPages - padRight) {
|
|
295
|
+
fillStart = this.fillStart(true);
|
|
296
|
+
fillLeft = padLeft - fillStart.length;
|
|
297
|
+
fillEnd = this.fillEnd(true);
|
|
298
|
+
fillRight = padRight - fillEnd.length;
|
|
299
|
+
}
|
|
300
|
+
else if (this.page > padLeft && this.page >= this.totalPages - padRight) {
|
|
301
|
+
fillEnd = this.fillEnd(false);
|
|
302
|
+
fillRight = this.totalPages - this.page;
|
|
303
|
+
fillStart = this.fillStart(true);
|
|
304
|
+
fillLeft = padLeft - fillStart.length + padRight - fillRight;
|
|
305
|
+
}
|
|
306
|
+
const items = fillStart
|
|
307
|
+
.concat(this.getRangeItems(this.page - fillLeft, this.page - 1))
|
|
308
|
+
.concat([this.page])
|
|
309
|
+
.concat(this.getRangeItems(this.page + 1, this.page + fillRight))
|
|
310
|
+
.concat(fillEnd);
|
|
311
|
+
return {
|
|
312
|
+
items,
|
|
313
|
+
activeIndex: fillStart.length + fillLeft
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
fillStart(render) {
|
|
317
|
+
if (render) {
|
|
318
|
+
return this.renderFirstLastPages ? [1, this.textDots] : [this.textDots];
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
return [];
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
fillEnd(render) {
|
|
325
|
+
if (render) {
|
|
326
|
+
return this.renderFirstLastPages
|
|
327
|
+
? [this.textDots, this.totalPages]
|
|
328
|
+
: [this.textDots];
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
return [];
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
getRangeItems(start, end) {
|
|
335
|
+
return Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
336
|
+
}
|
|
337
|
+
validateMaxSize() {
|
|
338
|
+
if (this.maxSize > 0) {
|
|
339
|
+
if (!this.renderFirstLastPages && this.maxSize < 3) {
|
|
340
|
+
this.maxSize = 3;
|
|
341
|
+
}
|
|
342
|
+
else if (this.renderFirstLastPages && this.maxSize < 5) {
|
|
343
|
+
this.maxSize = 5;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
render() {
|
|
348
|
+
const { items, activeIndex } = this.getItems();
|
|
349
|
+
return (h("ol", { part: "pages", class: "pages" }, items.map((item, i) => {
|
|
350
|
+
if (typeof item === "number") {
|
|
351
|
+
return (h("li", null, h("button", { part: `page button ${i === activeIndex ? "active" : ""}`, value: item, onClick: this.clickHandler, ref: el => (this.buttonActive =
|
|
352
|
+
i === activeIndex ? el : this.buttonActive) }, item)));
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
return (h("li", null, h("button", { part: "page button dots", disabled: true }, item)));
|
|
356
|
+
}
|
|
357
|
+
})));
|
|
358
|
+
}
|
|
359
|
+
get el() { return getElement(this); }
|
|
360
|
+
static get watchers() { return {
|
|
361
|
+
"page": ["pageHandler"],
|
|
362
|
+
"maxSize": ["maxSizeHandler"],
|
|
363
|
+
"renderFirstLastPages": ["renderFirstLastPagesHandler"]
|
|
364
|
+
}; }
|
|
365
|
+
};
|
|
366
|
+
ChPaginatorPages.style = chPaginatorPagesCss;
|
|
367
|
+
|
|
205
368
|
var GxControlType;
|
|
206
369
|
(function (GxControlType) {
|
|
207
370
|
GxControlType[GxControlType["EDIT"] = 1] = "EDIT";
|
|
@@ -353,4 +516,4 @@ const GridChameleonColumnFilter = class {
|
|
|
353
516
|
};
|
|
354
517
|
GridChameleonColumnFilter.style = gxGridChameleonColumnFilterCss;
|
|
355
518
|
|
|
356
|
-
export { ChGridActionRefresh as ch_grid_action_refresh, ChGridActionSettings as ch_grid_action_settings, ChGridActionbar as ch_grid_actionbar, ChPaginator as ch_paginator, ChPaginatorNavigate as ch_paginator_navigate, GridChameleonColumnFilter as gx_grid_chameleon_column_filter };
|
|
519
|
+
export { ChGridActionRefresh as ch_grid_action_refresh, ChGridActionSettings as ch_grid_action_settings, ChGridActionbar as ch_grid_actionbar, ChPaginator as ch_paginator, ChPaginatorNavigate as ch_paginator_navigate, ChPaginatorPages as ch_paginator_pages, GridChameleonColumnFilter as gx_grid_chameleon_column_filter };
|
|
@@ -121,6 +121,7 @@ const COLOR_MAPPINGS = {
|
|
|
121
121
|
error: "color-error-dark",
|
|
122
122
|
negative: "color-on-primary",
|
|
123
123
|
onbackground: "color-on-background",
|
|
124
|
+
indeterminate: "color-primary-active",
|
|
124
125
|
"primary-enabled": "color-primary-enabled",
|
|
125
126
|
"primary-active": "color-primary-active",
|
|
126
127
|
"primary-hover": "color-primary-hover",
|