@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
|
@@ -6,7 +6,7 @@ const index = require('./index-5a32426a.js');
|
|
|
6
6
|
const reserverdNames = require('./reserverd-names-1b00889a.js');
|
|
7
7
|
const helpers = require('./helpers-291cb1cb.js');
|
|
8
8
|
|
|
9
|
-
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,
|
|
9
|
+
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)}";
|
|
10
10
|
|
|
11
11
|
const CHECKBOX_ID = "checkbox";
|
|
12
12
|
const PARTS = (checked, indeterminate) => `${checked ? " checked" : ""}${indeterminate ? " indeterminate" : ""}`;
|
|
@@ -105,7 +105,7 @@ const scrollToEdge = (event, container, scrollSpeed, scrollThreshold) => {
|
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
-
const treeXCss = "ch-tree-x{display:flex;position:relative;overflow:auto}ch-tree-x
|
|
108
|
+
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%}";
|
|
109
109
|
|
|
110
110
|
const TREE_ITEM_TAG_NAME$1 = "ch-tree-x-list-item";
|
|
111
111
|
const TREE_TAG_NAME = "ch-tree-x";
|
|
@@ -115,8 +115,9 @@ const TEXT_FORMAT = "text/plain";
|
|
|
115
115
|
const ARROW_DOWN_KEY = "ArrowDown";
|
|
116
116
|
const ARROW_UP_KEY = "ArrowUp";
|
|
117
117
|
const EDIT_KEY = "F2";
|
|
118
|
-
const
|
|
119
|
-
const
|
|
118
|
+
const isTreeItem = (element) => element.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1;
|
|
119
|
+
const getFocusedTreeItem = () => helpers.focusComposedPath().find(isTreeItem);
|
|
120
|
+
const canMoveTreeItemFocus = (treeItem) => treeItem && !treeItem.editing;
|
|
120
121
|
const getDroppableZoneKey = (newContainerId, draggedItems) => `"newContainerId":"${newContainerId}","metadata":"${JSON.stringify(draggedItems)}"`;
|
|
121
122
|
const POSITION_X_DRAG_CUSTOM_VAR = "--ch-tree-x-dragging-item-x";
|
|
122
123
|
const POSITION_Y_DRAG_CUSTOM_VAR = "--ch-tree-x-dragging-item-y";
|
|
@@ -125,32 +126,34 @@ const ChTreeX = class {
|
|
|
125
126
|
index.registerInstance(this, hostRef);
|
|
126
127
|
this.droppableZoneEnter = index.createEvent(this, "droppableZoneEnter", 7);
|
|
127
128
|
this.expandedItemChange = index.createEvent(this, "expandedItemChange", 7);
|
|
129
|
+
this.itemContextmenu = index.createEvent(this, "itemContextmenu", 7);
|
|
128
130
|
this.selectedItemsChange = index.createEvent(this, "selectedItemsChange", 7);
|
|
129
131
|
this.itemsDropped = index.createEvent(this, "itemsDropped", 7);
|
|
130
132
|
// @todo TODO: Check if key codes works in Safari
|
|
131
133
|
this.keyDownEvents = {
|
|
132
134
|
[ARROW_DOWN_KEY]: event => {
|
|
133
|
-
|
|
135
|
+
const treeItem = getFocusedTreeItem();
|
|
136
|
+
if (!canMoveTreeItemFocus(treeItem)) {
|
|
134
137
|
return;
|
|
135
138
|
}
|
|
136
139
|
event.preventDefault();
|
|
137
|
-
const treeItem = document.activeElement;
|
|
138
140
|
treeItem.focusNextItem(helpers.mouseEventModifierKey(event));
|
|
139
141
|
},
|
|
140
142
|
[ARROW_UP_KEY]: event => {
|
|
141
|
-
|
|
143
|
+
const treeItem = getFocusedTreeItem();
|
|
144
|
+
if (!canMoveTreeItemFocus(treeItem)) {
|
|
142
145
|
return;
|
|
143
146
|
}
|
|
144
147
|
event.preventDefault();
|
|
145
|
-
const treeItem = document.activeElement;
|
|
146
148
|
treeItem.focusPreviousItem(helpers.mouseEventModifierKey(event));
|
|
147
149
|
},
|
|
148
150
|
[EDIT_KEY]: event => {
|
|
149
|
-
|
|
151
|
+
const treeItem = getFocusedTreeItem();
|
|
152
|
+
if (!treeItem || !treeItem.editable) {
|
|
150
153
|
return;
|
|
151
154
|
}
|
|
152
155
|
event.preventDefault();
|
|
153
|
-
|
|
156
|
+
treeItem.editing = true;
|
|
154
157
|
}
|
|
155
158
|
};
|
|
156
159
|
this.draggingSelectedItems = false;
|
|
@@ -223,6 +226,19 @@ const ChTreeX = class {
|
|
|
223
226
|
// selected: item.selected
|
|
224
227
|
// }));
|
|
225
228
|
// }
|
|
229
|
+
handleContextMenuEvent(event) {
|
|
230
|
+
const treeItem = event.target.closest(TREE_ITEM_TAG_NAME$1);
|
|
231
|
+
if (!treeItem) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
event.preventDefault();
|
|
235
|
+
this.itemContextmenu.emit({
|
|
236
|
+
id: treeItem.id,
|
|
237
|
+
itemRef: treeItem,
|
|
238
|
+
metadata: treeItem.metadata,
|
|
239
|
+
contextmenuEvent: event
|
|
240
|
+
});
|
|
241
|
+
}
|
|
226
242
|
// Set edit mode in items
|
|
227
243
|
handleKeyDownEvents(event) {
|
|
228
244
|
const keyHandler = this.keyDownEvents[event.key];
|
|
@@ -351,11 +367,11 @@ const ChTreeX = class {
|
|
|
351
367
|
if (!itemRef) {
|
|
352
368
|
return;
|
|
353
369
|
}
|
|
354
|
-
let parentItem = itemRef.parentElement
|
|
370
|
+
let parentItem = itemRef.parentElement;
|
|
355
371
|
// Expand all parents
|
|
356
372
|
while (parentItem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
|
|
357
373
|
parentItem.expanded = true;
|
|
358
|
-
parentItem = parentItem.parentElement
|
|
374
|
+
parentItem = parentItem.parentElement;
|
|
359
375
|
}
|
|
360
376
|
// Wait until the parents are expanded
|
|
361
377
|
requestAnimationFrame(() => {
|
|
@@ -369,7 +385,7 @@ const ChTreeX = class {
|
|
|
369
385
|
* @param draggedItems Information about the dragged items.
|
|
370
386
|
* @param validDrop Current state of the droppable zone.
|
|
371
387
|
*/
|
|
372
|
-
async
|
|
388
|
+
async updateValidDropZone(requestTimestamp, newContainerId, draggedItems, validDrop) {
|
|
373
389
|
var _a;
|
|
374
390
|
if (!this.draggingInTheDocument ||
|
|
375
391
|
requestTimestamp <= this.dragStartTimestamp) {
|
|
@@ -485,7 +501,7 @@ const ChTreeX = class {
|
|
|
485
501
|
}
|
|
486
502
|
getDirectParentsOfDraggableItems(draggingSelectedItems) {
|
|
487
503
|
if (!draggingSelectedItems) {
|
|
488
|
-
const parentTreeItemElem = this.currentDraggedItem.parentElement
|
|
504
|
+
const parentTreeItemElem = this.currentDraggedItem.parentElement;
|
|
489
505
|
if (parentTreeItemElem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
|
|
490
506
|
this.draggedParentIds.push(parentTreeItemElem.id);
|
|
491
507
|
}
|
|
@@ -531,43 +547,39 @@ const ChTreeX = class {
|
|
|
531
547
|
render() {
|
|
532
548
|
return (index.h(index.Host, { class: {
|
|
533
549
|
"ch-tree-x-dragging-item": this.draggingInTheDocument,
|
|
550
|
+
"ch-tree-x-not-dragging-item": !this.draggingInTheDocument,
|
|
534
551
|
"ch-tree-x--dragging-selected-items": this.draggingInTree && this.draggingSelectedItems,
|
|
535
552
|
"ch-tree-x-waiting-drop-processing": this.waitDropProcessing
|
|
536
|
-
} }, index.h("slot", null), this.draggingInTree && (index.h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
|
|
553
|
+
} }, index.h("div", { role: "tree", part: "tree-x-container", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-x-container" }, index.h("slot", null)), this.draggingInTree && (index.h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
|
|
537
554
|
}
|
|
538
555
|
get el() { return index.getElement(this); }
|
|
539
556
|
};
|
|
540
557
|
ChTreeX.style = treeXCss;
|
|
541
558
|
|
|
542
|
-
const
|
|
543
|
-
|
|
544
|
-
const ChTreeListX = class {
|
|
545
|
-
constructor(hostRef) {
|
|
546
|
-
index.registerInstance(this, hostRef);
|
|
547
|
-
/**
|
|
548
|
-
* Level in the tree at which the control is placed.
|
|
549
|
-
*/
|
|
550
|
-
this.level = 0;
|
|
551
|
-
}
|
|
552
|
-
render() {
|
|
553
|
-
return (index.h(index.Host, { role: this.level === 0 ? "tree" : "group" }, index.h("slot", null)));
|
|
554
|
-
}
|
|
555
|
-
get el() { return index.getElement(this); }
|
|
556
|
-
};
|
|
557
|
-
ChTreeListX.style = treeXListCss;
|
|
558
|
-
|
|
559
|
-
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}";
|
|
559
|
+
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}";
|
|
560
560
|
|
|
561
561
|
const resetDragImage = new Image();
|
|
562
|
+
const INITIAL_LEVEL = 0;
|
|
562
563
|
// Selectors
|
|
563
564
|
const TREE_ITEM_TAG_NAME = "ch-tree-x-list-item";
|
|
564
|
-
const DIRECT_TREE_ITEM_CHILDREN = `:scope
|
|
565
|
+
const DIRECT_TREE_ITEM_CHILDREN = `:scope>${TREE_ITEM_TAG_NAME}`;
|
|
565
566
|
const FIRST_ENABLED_SUB_ITEM = `${TREE_ITEM_TAG_NAME}:not([disabled])`;
|
|
566
|
-
const LAST_SUB_ITEM = `:scope
|
|
567
|
+
const LAST_SUB_ITEM = `:scope>${TREE_ITEM_TAG_NAME}:last-child`;
|
|
567
568
|
// Keys
|
|
568
569
|
const EXPANDABLE_ID = "expandable";
|
|
569
570
|
const ENTER_KEY = "Enter";
|
|
570
571
|
const ESCAPE_KEY = "Escape";
|
|
572
|
+
// Export Parts
|
|
573
|
+
const getCheckboxExportPart = (part) => `${part}:checkbox__${part}`;
|
|
574
|
+
const CHECKBOX_EXPORT_PARTS = [
|
|
575
|
+
"container",
|
|
576
|
+
"input",
|
|
577
|
+
"option",
|
|
578
|
+
"checked",
|
|
579
|
+
"indeterminate"
|
|
580
|
+
]
|
|
581
|
+
.map(getCheckboxExportPart)
|
|
582
|
+
.join(",");
|
|
571
583
|
const ChTreeXListItem = class {
|
|
572
584
|
constructor(hostRef) {
|
|
573
585
|
index.registerInstance(this, hostRef);
|
|
@@ -576,6 +588,7 @@ const ChTreeXListItem = class {
|
|
|
576
588
|
this.itemDragEnd = index.createEvent(this, "itemDragEnd", 7);
|
|
577
589
|
this.loadLazyContent = index.createEvent(this, "loadLazyContent", 7);
|
|
578
590
|
this.modifyCaption = index.createEvent(this, "modifyCaption", 7);
|
|
591
|
+
this.openReference = index.createEvent(this, "openReference", 7);
|
|
579
592
|
this.selectedItemChange = index.createEvent(this, "selectedItemChange", 7);
|
|
580
593
|
this.selectedItemSync = index.createEvent(this, "selectedItemSync", 7);
|
|
581
594
|
/**
|
|
@@ -648,7 +661,7 @@ const ChTreeXListItem = class {
|
|
|
648
661
|
/**
|
|
649
662
|
* Level in the tree at which the item is placed.
|
|
650
663
|
*/
|
|
651
|
-
this.level =
|
|
664
|
+
this.level = INITIAL_LEVEL;
|
|
652
665
|
/**
|
|
653
666
|
* `true` if the checkbox's value is indeterminate.
|
|
654
667
|
*/
|
|
@@ -722,16 +735,15 @@ const ChTreeXListItem = class {
|
|
|
722
735
|
this.expanded = !this.expanded;
|
|
723
736
|
}
|
|
724
737
|
this.selected = true;
|
|
725
|
-
this.selectedItemChange.emit(this.getSelectedInfo(helpers.mouseEventModifierKey(event),
|
|
738
|
+
this.selectedItemChange.emit(this.getSelectedInfo(helpers.mouseEventModifierKey(event), true));
|
|
726
739
|
};
|
|
727
|
-
this.getSelectedInfo = (ctrlKeyPressed,
|
|
740
|
+
this.getSelectedInfo = (ctrlKeyPressed, selected) => ({
|
|
728
741
|
ctrlKeyPressed: ctrlKeyPressed,
|
|
729
742
|
expanded: this.expanded,
|
|
730
|
-
goToReference: goToReference,
|
|
731
743
|
id: this.el.id,
|
|
732
744
|
itemRef: this.el,
|
|
733
745
|
metadata: this.metadata,
|
|
734
|
-
parentId: this.el.parentElement.
|
|
746
|
+
parentId: this.el.parentElement.id,
|
|
735
747
|
selected: selected
|
|
736
748
|
});
|
|
737
749
|
this.handleActionDblClick = (event) => {
|
|
@@ -740,8 +752,11 @@ const ChTreeXListItem = class {
|
|
|
740
752
|
this.toggleSelected();
|
|
741
753
|
return;
|
|
742
754
|
}
|
|
755
|
+
this.emitOpenReference();
|
|
743
756
|
// The Control key is not pressed, so the control can be expanded
|
|
744
|
-
this.
|
|
757
|
+
if (!this.leaf) {
|
|
758
|
+
this.toggleExpand(event);
|
|
759
|
+
}
|
|
745
760
|
};
|
|
746
761
|
/**
|
|
747
762
|
* Event triggered by the following actions on the main button:
|
|
@@ -761,6 +776,7 @@ const ChTreeXListItem = class {
|
|
|
761
776
|
this.toggleOrSelect(event);
|
|
762
777
|
return;
|
|
763
778
|
}
|
|
779
|
+
this.emitOpenReference();
|
|
764
780
|
// Enter or space
|
|
765
781
|
this.toggleExpand(event);
|
|
766
782
|
};
|
|
@@ -846,7 +862,6 @@ const ChTreeXListItem = class {
|
|
|
846
862
|
}
|
|
847
863
|
handleSelectedChange(newValue) {
|
|
848
864
|
this.selectedItemSync.emit(this.getSelectedInfo(true, // Does not matter in this case
|
|
849
|
-
false, // Does not matter in this case
|
|
850
865
|
newValue));
|
|
851
866
|
}
|
|
852
867
|
handleShowLinesChange(newShowLines) {
|
|
@@ -906,12 +921,11 @@ const ChTreeXListItem = class {
|
|
|
906
921
|
return;
|
|
907
922
|
}
|
|
908
923
|
// The item is the last one of the tree at the first level
|
|
909
|
-
if (this.level ===
|
|
924
|
+
if (this.level === INITIAL_LEVEL) {
|
|
910
925
|
return;
|
|
911
926
|
}
|
|
912
927
|
// Otherwise, ask the parent to focus the next sibling
|
|
913
|
-
const parentItem = this.el.parentElement
|
|
914
|
-
.parentElement;
|
|
928
|
+
const parentItem = this.el.parentElement;
|
|
915
929
|
parentItem.focusNextSibling(ctrlKeyPressed);
|
|
916
930
|
}
|
|
917
931
|
/**
|
|
@@ -927,12 +941,11 @@ const ChTreeXListItem = class {
|
|
|
927
941
|
return;
|
|
928
942
|
}
|
|
929
943
|
// The item is the first one of the tree at the first level
|
|
930
|
-
if (this.level ===
|
|
944
|
+
if (this.level === INITIAL_LEVEL) {
|
|
931
945
|
return;
|
|
932
946
|
}
|
|
933
947
|
// Otherwise, set focus in the parent element
|
|
934
|
-
const parentItem = this.el.parentElement
|
|
935
|
-
.parentElement;
|
|
948
|
+
const parentItem = this.el.parentElement;
|
|
936
949
|
// Check if the parent is not disabled
|
|
937
950
|
if (parentItem.disabled) {
|
|
938
951
|
parentItem.focusPreviousItem(ctrlKeyPressed);
|
|
@@ -970,7 +983,7 @@ const ChTreeXListItem = class {
|
|
|
970
983
|
this.headerRef.focus();
|
|
971
984
|
// Normal navigation auto selects the item.
|
|
972
985
|
if (!ctrlKeyPressed) {
|
|
973
|
-
this.setSelected(
|
|
986
|
+
this.setSelected();
|
|
974
987
|
}
|
|
975
988
|
}
|
|
976
989
|
getDirectTreeItems() {
|
|
@@ -1003,34 +1016,41 @@ const ChTreeXListItem = class {
|
|
|
1003
1016
|
toggleSelected() {
|
|
1004
1017
|
const selected = !this.selected;
|
|
1005
1018
|
this.selected = selected;
|
|
1006
|
-
this.selectedItemChange.emit(this.getSelectedInfo(true,
|
|
1019
|
+
this.selectedItemChange.emit(this.getSelectedInfo(true, selected));
|
|
1007
1020
|
}
|
|
1008
|
-
setSelected(
|
|
1021
|
+
setSelected() {
|
|
1009
1022
|
this.selected = true;
|
|
1010
|
-
this.selectedItemChange.emit(this.getSelectedInfo(false,
|
|
1023
|
+
this.selectedItemChange.emit(this.getSelectedInfo(false, true));
|
|
1011
1024
|
}
|
|
1012
1025
|
toggleOrSelect(event) {
|
|
1013
1026
|
if (helpers.mouseEventModifierKey(event)) {
|
|
1014
1027
|
this.toggleSelected();
|
|
1015
1028
|
}
|
|
1016
1029
|
else {
|
|
1017
|
-
this.setSelected(
|
|
1030
|
+
this.setSelected();
|
|
1018
1031
|
}
|
|
1019
1032
|
}
|
|
1033
|
+
emitOpenReference() {
|
|
1034
|
+
this.openReference.emit({
|
|
1035
|
+
id: this.el.id,
|
|
1036
|
+
leaf: this.leaf,
|
|
1037
|
+
metadata: this.metadata
|
|
1038
|
+
});
|
|
1039
|
+
}
|
|
1020
1040
|
componentWillLoad() {
|
|
1021
|
-
const
|
|
1041
|
+
const parentElementItem = this.el
|
|
1042
|
+
.parentElement;
|
|
1022
1043
|
// Check if must lazy load
|
|
1023
1044
|
this.lazyLoadItems(this.expanded);
|
|
1024
1045
|
// Sync selected state with the main tree
|
|
1025
1046
|
if (this.selected) {
|
|
1026
|
-
this.selectedItemChange.emit(this.getSelectedInfo(true,
|
|
1047
|
+
this.selectedItemChange.emit(this.getSelectedInfo(true, true));
|
|
1027
1048
|
}
|
|
1028
1049
|
// No need to update more the status
|
|
1029
|
-
if (this.level ===
|
|
1050
|
+
if (this.level === INITIAL_LEVEL) {
|
|
1030
1051
|
return;
|
|
1031
1052
|
}
|
|
1032
1053
|
// Update checkbox status
|
|
1033
|
-
const parentElementItem = parentElement.parentElement;
|
|
1034
1054
|
if (parentElementItem.checkbox) {
|
|
1035
1055
|
this.checked = parentElementItem.checked;
|
|
1036
1056
|
}
|
|
@@ -1053,11 +1073,14 @@ const ChTreeXListItem = class {
|
|
|
1053
1073
|
const expandableButtonNotVisible = !this.leaf && !this.showExpandableButton;
|
|
1054
1074
|
const acceptDrop = !this.dropDisabled && !this.leaf && this.dragState !== "start";
|
|
1055
1075
|
const hasContent = !this.leaf && !this.lazyLoad;
|
|
1056
|
-
const showAllLines = this.showLines === "all" && this.level !==
|
|
1057
|
-
const showLastLine = this.showLines === "last" &&
|
|
1058
|
-
|
|
1076
|
+
const showAllLines = this.showLines === "all" && this.level !== INITIAL_LEVEL;
|
|
1077
|
+
const showLastLine = this.showLines === "last" &&
|
|
1078
|
+
this.level !== INITIAL_LEVEL &&
|
|
1079
|
+
this.lastItem;
|
|
1080
|
+
return (index.h(index.Host, { role: "treeitem", "aria-level": this.level + 1, "aria-selected": this.selected ? "true" : null, class: {
|
|
1059
1081
|
[TREE_ITEM_TAG_NAME + "--downloading"]: this.downloading,
|
|
1060
1082
|
[TREE_ITEM_TAG_NAME + "--editing"]: this.editing,
|
|
1083
|
+
[TREE_ITEM_TAG_NAME + "--not-editing"]: !this.editing,
|
|
1061
1084
|
[TREE_ITEM_TAG_NAME + "--drag-" + this.dragState]: this.dragState !== "none" && this.dragState !== "start",
|
|
1062
1085
|
[TREE_ITEM_TAG_NAME + "--deny-drop"]: this.leaf
|
|
1063
1086
|
}, style: { "--level": `${this.level}` },
|
|
@@ -1072,25 +1095,28 @@ const ChTreeXListItem = class {
|
|
|
1072
1095
|
"header--odd": !evenLevel,
|
|
1073
1096
|
"header--even-expandable": evenLevel && expandableButtonVisible,
|
|
1074
1097
|
"header--odd-expandable": !evenLevel && expandableButtonVisible,
|
|
1075
|
-
"header--level-0": this.level ===
|
|
1098
|
+
"header--level-0": this.level === INITIAL_LEVEL
|
|
1076
1099
|
}, part: `header${this.disabled ? " disabled" : ""}${this.selected ? " selected" : ""}`, type: "button", disabled: this.disabled, onClick: this.handleActionClick, onKeyDown: !this.editing ? this.handleActionKeyDown : null,
|
|
1077
1100
|
// Drag and drop
|
|
1078
1101
|
draggable: !this.dragDisabled, onDragStart: this.handleDragStart, onDragEnd: !this.dragDisabled ? this.handleDragEnd : null, ref: el => (this.headerRef = el) }, !this.leaf && this.showExpandableButton && (index.h("button", { type: "button", class: {
|
|
1079
1102
|
"expandable-button": true,
|
|
1080
1103
|
"expandable-button--expanded": this.expanded,
|
|
1081
1104
|
"expandable-button--collapsed": !this.expanded
|
|
1082
|
-
}, part: `expandable-button${this.disabled ? " disabled" : ""}${this.expanded ? " expanded" : " collapsed"}`, disabled: this.disabled, onClick: this.toggleExpand })), this.checkbox && (index.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 ? (index.h("slot", { name: "custom-content" })) : ([
|
|
1105
|
+
}, part: `expandable-button${this.disabled ? " disabled" : ""}${this.expanded ? " expanded" : " collapsed"}`, disabled: this.disabled, onClick: this.toggleExpand })), this.checkbox && (index.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 ? (index.h("slot", { name: "custom-content" })) : ([
|
|
1083
1106
|
index.h("div", { class: {
|
|
1084
1107
|
action: true,
|
|
1085
1108
|
"readonly-mode": !this.editing
|
|
1086
|
-
}, part: `action
|
|
1109
|
+
}, 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 ? (index.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 &&
|
|
1087
1110
|
this.renderImg("right-img", this.rightImgSrc)),
|
|
1088
1111
|
this.showDownloadingSpinner && !this.leaf && this.downloading && (index.h("div", { class: "downloading", part: "downloading" }))
|
|
1089
1112
|
]), (showAllLines || showLastLine) && (index.h("div", { class: {
|
|
1090
1113
|
"dashed-line": true,
|
|
1091
1114
|
"last-all-line": showAllLines && this.lastItem,
|
|
1092
1115
|
"last-line": showLastLine
|
|
1093
|
-
}, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (index.h("div", { "aria-busy": this.downloading.toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: {
|
|
1116
|
+
}, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (index.h("div", { role: "group", "aria-busy": this.downloading.toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: {
|
|
1117
|
+
expandable: true,
|
|
1118
|
+
"expandable--collapsed": !this.expanded
|
|
1119
|
+
}, part: `expandable${this.expanded ? " expanded" : " collapsed"}` }, index.h("slot", null)))));
|
|
1094
1120
|
}
|
|
1095
1121
|
get el() { return index.getElement(this); }
|
|
1096
1122
|
static get watchers() { return {
|
|
@@ -1106,5 +1132,4 @@ ChTreeXListItem.style = treeXListItemCss;
|
|
|
1106
1132
|
|
|
1107
1133
|
exports.ch_checkbox = CheckBox;
|
|
1108
1134
|
exports.ch_tree_x = ChTreeX;
|
|
1109
|
-
exports.ch_tree_x_list = ChTreeListX;
|
|
1110
1135
|
exports.ch_tree_x_list_item = ChTreeXListItem;
|
package/dist/cjs/{ch-grid-action-refresh_6.cjs.entry.js → ch-grid-action-refresh_7.cjs.entry.js}
RENAMED
|
@@ -153,10 +153,24 @@ const ChPaginator = class {
|
|
|
153
153
|
}
|
|
154
154
|
loadElements() {
|
|
155
155
|
this.elPages = this.el.querySelector("ch-paginator-pages");
|
|
156
|
-
this.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
this.el
|
|
157
|
+
.querySelectorAll("ch-paginator-navigate")
|
|
158
|
+
.forEach((el) => {
|
|
159
|
+
switch (el.type) {
|
|
160
|
+
case "first":
|
|
161
|
+
this.elFirst = el;
|
|
162
|
+
break;
|
|
163
|
+
case "previous":
|
|
164
|
+
this.elPrevious = el;
|
|
165
|
+
break;
|
|
166
|
+
case "next":
|
|
167
|
+
this.elNext = el;
|
|
168
|
+
break;
|
|
169
|
+
case "last":
|
|
170
|
+
this.elLast = el;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
160
174
|
}
|
|
161
175
|
render() {
|
|
162
176
|
if (this.elPages) {
|
|
@@ -206,6 +220,155 @@ const ChPaginatorNavigate = class {
|
|
|
206
220
|
};
|
|
207
221
|
ChPaginatorNavigate.style = chPaginatorNavigateCss;
|
|
208
222
|
|
|
223
|
+
const chPaginatorPagesCss = "button{all:unset}.pages{display:flex;align-items:center;list-style-type:none;margin:0;padding:0}";
|
|
224
|
+
|
|
225
|
+
const ChPaginatorPages = class {
|
|
226
|
+
constructor(hostRef) {
|
|
227
|
+
index.registerInstance(this, hostRef);
|
|
228
|
+
this.pageChanged = index.createEvent(this, "pageChanged", 7);
|
|
229
|
+
/**
|
|
230
|
+
* The active page number.
|
|
231
|
+
*/
|
|
232
|
+
this.page = 1;
|
|
233
|
+
/**
|
|
234
|
+
* The total number of pages.
|
|
235
|
+
*/
|
|
236
|
+
this.totalPages = 1;
|
|
237
|
+
/**
|
|
238
|
+
* The maximum number of items to display in the pagination.
|
|
239
|
+
*/
|
|
240
|
+
this.maxSize = 9;
|
|
241
|
+
/**
|
|
242
|
+
* Flag to render the first and last pages.
|
|
243
|
+
*/
|
|
244
|
+
this.renderFirstLastPages = true;
|
|
245
|
+
/**
|
|
246
|
+
* The text to display for the dots.
|
|
247
|
+
*/
|
|
248
|
+
this.textDots = "...";
|
|
249
|
+
this.clickHandler = (eventInfo) => {
|
|
250
|
+
const button = eventInfo.target;
|
|
251
|
+
this.page = parseInt(button.value);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
pageHandler() {
|
|
255
|
+
this.pageChanged.emit({ page: this.page });
|
|
256
|
+
}
|
|
257
|
+
maxSizeHandler() {
|
|
258
|
+
this.validateMaxSize();
|
|
259
|
+
}
|
|
260
|
+
renderFirstLastPagesHandler() {
|
|
261
|
+
this.validateMaxSize();
|
|
262
|
+
}
|
|
263
|
+
componentDidUpdate() {
|
|
264
|
+
if (document.activeElement === this.el) {
|
|
265
|
+
this.buttonActive.focus();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
keyDownHandler(eventInfo) {
|
|
269
|
+
switch (eventInfo.key) {
|
|
270
|
+
case "ArrowLeft":
|
|
271
|
+
this.page = Math.max(this.page - 1, 1);
|
|
272
|
+
break;
|
|
273
|
+
case "ArrowRight":
|
|
274
|
+
this.page = Math.min(this.page + 1, this.totalPages);
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
focusHandler() {
|
|
279
|
+
this.buttonActive.focus();
|
|
280
|
+
}
|
|
281
|
+
getItems() {
|
|
282
|
+
const padLeft = Math.ceil((this.maxSize - 1) / 2);
|
|
283
|
+
const padRight = Math.floor((this.maxSize - 1) / 2);
|
|
284
|
+
let fillLeft, fillStart;
|
|
285
|
+
let fillRight, fillEnd;
|
|
286
|
+
if (this.maxSize === 0 || this.maxSize >= this.totalPages) {
|
|
287
|
+
fillStart = this.fillStart(false);
|
|
288
|
+
fillLeft = this.page - 1;
|
|
289
|
+
fillRight = this.totalPages - this.page;
|
|
290
|
+
fillEnd = this.fillEnd(false);
|
|
291
|
+
}
|
|
292
|
+
else if (this.page <= padLeft && this.page < this.totalPages - padRight) {
|
|
293
|
+
fillStart = this.fillStart(false);
|
|
294
|
+
fillLeft = this.page - 1;
|
|
295
|
+
fillEnd = this.fillEnd(true);
|
|
296
|
+
fillRight = padRight - fillEnd.length + (padLeft - fillLeft);
|
|
297
|
+
}
|
|
298
|
+
else if (this.page > padLeft && this.page < this.totalPages - padRight) {
|
|
299
|
+
fillStart = this.fillStart(true);
|
|
300
|
+
fillLeft = padLeft - fillStart.length;
|
|
301
|
+
fillEnd = this.fillEnd(true);
|
|
302
|
+
fillRight = padRight - fillEnd.length;
|
|
303
|
+
}
|
|
304
|
+
else if (this.page > padLeft && this.page >= this.totalPages - padRight) {
|
|
305
|
+
fillEnd = this.fillEnd(false);
|
|
306
|
+
fillRight = this.totalPages - this.page;
|
|
307
|
+
fillStart = this.fillStart(true);
|
|
308
|
+
fillLeft = padLeft - fillStart.length + padRight - fillRight;
|
|
309
|
+
}
|
|
310
|
+
const items = fillStart
|
|
311
|
+
.concat(this.getRangeItems(this.page - fillLeft, this.page - 1))
|
|
312
|
+
.concat([this.page])
|
|
313
|
+
.concat(this.getRangeItems(this.page + 1, this.page + fillRight))
|
|
314
|
+
.concat(fillEnd);
|
|
315
|
+
return {
|
|
316
|
+
items,
|
|
317
|
+
activeIndex: fillStart.length + fillLeft
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
fillStart(render) {
|
|
321
|
+
if (render) {
|
|
322
|
+
return this.renderFirstLastPages ? [1, this.textDots] : [this.textDots];
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
fillEnd(render) {
|
|
329
|
+
if (render) {
|
|
330
|
+
return this.renderFirstLastPages
|
|
331
|
+
? [this.textDots, this.totalPages]
|
|
332
|
+
: [this.textDots];
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
return [];
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
getRangeItems(start, end) {
|
|
339
|
+
return Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
340
|
+
}
|
|
341
|
+
validateMaxSize() {
|
|
342
|
+
if (this.maxSize > 0) {
|
|
343
|
+
if (!this.renderFirstLastPages && this.maxSize < 3) {
|
|
344
|
+
this.maxSize = 3;
|
|
345
|
+
}
|
|
346
|
+
else if (this.renderFirstLastPages && this.maxSize < 5) {
|
|
347
|
+
this.maxSize = 5;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
render() {
|
|
352
|
+
const { items, activeIndex } = this.getItems();
|
|
353
|
+
return (index.h("ol", { part: "pages", class: "pages" }, items.map((item, i) => {
|
|
354
|
+
if (typeof item === "number") {
|
|
355
|
+
return (index.h("li", null, index.h("button", { part: `page button ${i === activeIndex ? "active" : ""}`, value: item, onClick: this.clickHandler, ref: el => (this.buttonActive =
|
|
356
|
+
i === activeIndex ? el : this.buttonActive) }, item)));
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
return (index.h("li", null, index.h("button", { part: "page button dots", disabled: true }, item)));
|
|
360
|
+
}
|
|
361
|
+
})));
|
|
362
|
+
}
|
|
363
|
+
get el() { return index.getElement(this); }
|
|
364
|
+
static get watchers() { return {
|
|
365
|
+
"page": ["pageHandler"],
|
|
366
|
+
"maxSize": ["maxSizeHandler"],
|
|
367
|
+
"renderFirstLastPages": ["renderFirstLastPagesHandler"]
|
|
368
|
+
}; }
|
|
369
|
+
};
|
|
370
|
+
ChPaginatorPages.style = chPaginatorPagesCss;
|
|
371
|
+
|
|
209
372
|
var GxControlType;
|
|
210
373
|
(function (GxControlType) {
|
|
211
374
|
GxControlType[GxControlType["EDIT"] = 1] = "EDIT";
|
|
@@ -362,4 +525,5 @@ exports.ch_grid_action_settings = ChGridActionSettings;
|
|
|
362
525
|
exports.ch_grid_actionbar = ChGridActionbar;
|
|
363
526
|
exports.ch_paginator = ChPaginator;
|
|
364
527
|
exports.ch_paginator_navigate = ChPaginatorNavigate;
|
|
528
|
+
exports.ch_paginator_pages = ChPaginatorPages;
|
|
365
529
|
exports.gx_grid_chameleon_column_filter = GridChameleonColumnFilter;
|
|
@@ -125,6 +125,7 @@ const COLOR_MAPPINGS = {
|
|
|
125
125
|
error: "color-error-dark",
|
|
126
126
|
negative: "color-on-primary",
|
|
127
127
|
onbackground: "color-on-background",
|
|
128
|
+
indeterminate: "color-primary-active",
|
|
128
129
|
"primary-enabled": "color-primary-enabled",
|
|
129
130
|
"primary-active": "color-primary-active",
|
|
130
131
|
"primary-hover": "color-primary-hover",
|