@genexus/genexus-ide-ui 0.0.71 → 0.0.72
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 +75 -51
- package/dist/cjs/ch-shortcuts.cjs.entry.js +187 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +101 -0
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
- package/dist/cjs/gxg-form-textarea.cjs.entry.js +28 -9
- package/dist/cjs/gxg-text.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/_starting-template/template.css +1 -0
- package/dist/collection/components/ai-assistant/ai-assistant.css +389 -0
- package/dist/collection/components/ai-assistant/ai-assistant.js +268 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +5 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +3 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +3 -0
- package/dist/collection/components/bpm-application-declaration/bpm-app-declaration.css +1 -0
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.css +1 -0
- package/dist/collection/components/kb-manager-export/kb-manager-export.css +1 -0
- package/dist/collection/components/kb-manager-import/kb-manager-import.css +1 -0
- package/dist/collection/components/new-environment/new-environment.css +1 -0
- package/dist/collection/components/new-kb/new-kb.css +1 -0
- package/dist/collection/components/new-object/new-object.css +1 -0
- package/dist/collection/components/object-selector/object-selector.css +1 -0
- package/dist/collection/components/references/references.css +1 -0
- package/dist/collection/components/share-kb/share-kb.css +1 -0
- package/dist/collection/components/team-dev/commit/commit.css +1 -0
- package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +1 -0
- package/dist/collection/components/team-dev/update/update.css +1 -0
- package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +1 -0
- package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +1 -0
- package/dist/collection/components/ww-images/ww-images.css +1 -0
- package/dist/components/ch-shortcuts.js +217 -0
- package/dist/components/form-textarea.js +30 -9
- package/dist/components/gx-ide-ai-assistant.d.ts +11 -0
- package/dist/components/gx-ide-ai-assistant.js +150 -0
- package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +1 -1
- package/dist/components/gx-ide-kb-manager-export.js +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +1 -1
- package/dist/components/gx-ide-new-environment.js +1 -1
- package/dist/components/gx-ide-new-kb.js +1 -1
- package/dist/components/gx-ide-new-object.js +1 -1
- package/dist/components/gx-ide-object-selector.js +1 -1
- package/dist/components/gx-ide-references.js +1 -1
- package/dist/components/gx-ide-share-kb.js +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +1 -1
- package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
- package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
- package/dist/components/gx-ide-team-dev-update.js +1 -1
- package/dist/components/gx-ide-template.js +1 -1
- package/dist/components/gx-ide-ww-images.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/text.js +1 -1
- package/dist/components/tree-view-item.js +1 -1
- package/dist/components/tree-view-render.js +73 -48
- package/dist/components/tree-view.js +2 -2
- package/dist/esm/ch-checkbox_4.entry.js +75 -51
- package/dist/esm/ch-shortcuts.entry.js +183 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-assistant.entry.js +97 -0
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-new-object.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-references.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
- package/dist/esm/gx-ide-template.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +1 -1
- package/dist/esm/gxg-form-textarea.entry.js +28 -9
- package/dist/esm/gxg-text.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +5 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +3 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +3 -0
- package/dist/genexus-ide-ui/{p-aacd75fc.entry.js → p-11fa1c83.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-8f4d3169.entry.js → p-13085dd7.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-da1ae937.entry.js → p-3d410e77.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-3f8995ba.entry.js → p-3d4722f2.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-99a0cd49.entry.js → p-440fe7b3.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-4c0ecfe3.entry.js → p-446c0831.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-46c2406e.entry.js → p-7e52f6fb.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-7bcb1954.entry.js → p-8c5919ec.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-99277f8f.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-4313d9be.entry.js → p-9a15e22e.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-6929875a.entry.js → p-9ad85778.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-2b2acd3d.entry.js → p-abfa88ed.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-e23d6f44.entry.js → p-b34d258d.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-b417c899.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-c2ffd150.entry.js → p-ba31a49e.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-24b2988b.entry.js → p-baffd9b1.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-083e01a8.entry.js → p-c3895c79.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-8e68f1d3.entry.js → p-cb07fc99.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-46901569.entry.js → p-d2aca59f.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-7af7779b.entry.js → p-d664fa18.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-e090d88c.entry.js → p-e13a299b.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-f1922c2f.entry.js +1 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/shortcuts/ch-shortcuts.css +3 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-view-item/tree-view-item.css +0 -1
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-textarea/form-textarea.css +44 -2
- package/dist/node_modules/@genexus/gemini/dist/collection/components/text/text.css +4 -1
- package/dist/types/components/ai-assistant/ai-assistant.d.ts +65 -0
- package/dist/types/components.d.ts +70 -0
- package/package.json +3 -3
- package/dist/genexus-ide-ui/p-ee85040d.entry.js +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* GenexusIdeUi custom elements */
|
|
2
|
+
export { GxIdeTemplate as GxIdeAiAssistant } from '../types/components/ai-assistant/ai-assistant';
|
|
2
3
|
export { GxIdeBpmAppDeclaration as GxIdeBpmAppDeclaration } from '../types/components/bpm-application-declaration/bpm-app-declaration';
|
|
3
4
|
export { GxIdeContainer as GxIdeContainer } from '../types/components/_helpers/container/container';
|
|
4
5
|
export { GxIdeCreateKbFromServer as GxIdeCreateKbFromServer } from '../types/components/create-kb-from-server/create-kb-from-server';
|
package/dist/components/index.js
CHANGED
|
@@ -39,6 +39,7 @@ export { ChPaginatorPages, defineCustomElement as defineCustomElementChPaginator
|
|
|
39
39
|
export { ChQr, defineCustomElement as defineCustomElementChQr } from './ch-qr.js';
|
|
40
40
|
export { ChSelect, defineCustomElement as defineCustomElementChSelect } from './ch-select.js';
|
|
41
41
|
export { ChSelectOption, defineCustomElement as defineCustomElementChSelectOption } from './ch-select-option.js';
|
|
42
|
+
export { ChShortcuts, defineCustomElement as defineCustomElementChShortcuts } from './ch-shortcuts.js';
|
|
42
43
|
export { ChSidebarMenu, defineCustomElement as defineCustomElementChSidebarMenu } from './ch-sidebar-menu.js';
|
|
43
44
|
export { ChSidebarMenuList, defineCustomElement as defineCustomElementChSidebarMenuList } from './ch-sidebar-menu-list.js';
|
|
44
45
|
export { ChSidebarMenuListItem, defineCustomElement as defineCustomElementChSidebarMenuListItem } from './ch-sidebar-menu-list-item.js';
|
|
@@ -64,6 +65,7 @@ export { ChWindow, defineCustomElement as defineCustomElementChWindow } from './
|
|
|
64
65
|
export { ChWindowClose, defineCustomElement as defineCustomElementChWindowClose } from './ch-window-close.js';
|
|
65
66
|
export { GxGridChameleon, defineCustomElement as defineCustomElementGxGridChameleon } from './gx-grid-chameleon.js';
|
|
66
67
|
export { GxGridChameleonColumnFilter, defineCustomElement as defineCustomElementGxGridChameleonColumnFilter } from './gx-grid-chameleon-column-filter.js';
|
|
68
|
+
export { GxIdeAiAssistant, defineCustomElement as defineCustomElementGxIdeAiAssistant } from './gx-ide-ai-assistant.js';
|
|
67
69
|
export { GxIdeBpmAppDeclaration, defineCustomElement as defineCustomElementGxIdeBpmAppDeclaration } from './gx-ide-bpm-app-declaration.js';
|
|
68
70
|
export { GxIdeContainer, defineCustomElement as defineCustomElementGxIdeContainer } from './gx-ide-container.js';
|
|
69
71
|
export { GxIdeCreateKbFromServer, defineCustomElement as defineCustomElementGxIdeCreateKbFromServer } from './gx-ide-create-kb-from-server.js';
|
package/dist/components/text.js
CHANGED
|
@@ -3,7 +3,7 @@ import { s as state } from './store.js';
|
|
|
3
3
|
import { d as defineCustomElement$2 } from './icon.js';
|
|
4
4
|
import { d as defineCustomElement$1 } from './icon2.js';
|
|
5
5
|
|
|
6
|
-
const textCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0;}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px;}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-01--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-02{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-02--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-03{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-03--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-04{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-04--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-05{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em}.gxg-title-05--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em;color:var(--color-on-primary)}.gxg-text{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-text--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-text--gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--gray-05)}.gxg-quote{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;font-style:italic}.gxg-quote--negative{color:var(--color-on-primary)}.gxg-link{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--color-primary-hover)}.gxg-link:active{color:var(--color-primary-active)}.gxg-link-gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04)}.gxg-link-gray:hover{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04);color:var(--gray-06)}.gxg-alert-error{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-error-dark);display:inline-block}.gxg-alert-warning{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-warning-dark);display:inline-block}.gxg-alert-success{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-success-dark);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-button-styles{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb{background:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04);cursor:pointer}:host{display:flex;font-size:14px}:host .wrapper{display:flex;flex-direction:row;gap:var(--spacing-comp-02)}:host p,:host q,:host a{display:block;margin:0;padding:0;line-height:1.6em}:host p.no-line,:host q.no-line,:host a.no-line{text-decoration:none}:host .disabled{pointer-events:none;color:var(--gxg-color--disabled) !important}:host([text-align=start]){justify-content:flex-start}:host([text-align=center]){justify-content:center}:host([text-align=center]) .wrapper *{text-align:center}:host([text-align=end]){justify-content:flex-end}:host([padding=s]){padding:var(--spacing-comp-01)}:host([padding=m]){padding:var(--spacing-comp-02)}:host([type=button-like]) button{background-color:transparent;border:none;font-family:var(--font-family-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-primary-enabled);letter-spacing:var(--letter-spacing-xs);cursor:pointer}:host([type=button-like]) button:hover{color:var(--color-primary-hover)}:host([type=button-like]) button:focus{outline:none;text-decoration:underline}:host(.icon){display:flex;flex-direction:row}:host(.icon--center) .wrapper{align-items:center}:host(.icon--top) .wrapper{align-items:flex-start}:host(.large) .gxg-text,:host(.large) .gxg-text--gray,:host(.large) .gxg-quote,:host(.large) .gxg-link,:host(.large) .gxg-link-gray,:host(.large) .gxg-alert-error,:host(.large) .gxg-alert-warning,:host(.large) .gxg-alert-success{font-size:var(--font-size-lg)}:host(.mercury) .gxg-text,:host(.mercury) .gxg-link{font-size:var(--mc-font-size-xs)}:host(.mercury) .gxg-text{color:var(--gray-02)}:host(.mercury[italic]){font-style:italic}";
|
|
6
|
+
const textCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0;}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px;}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-01--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-02{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-02--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-03{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-03--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-04{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-04--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-05{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em}.gxg-title-05--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em;color:var(--color-on-primary)}.gxg-text{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-text--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-text--gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--gray-05)}.gxg-quote{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;font-style:italic}.gxg-quote--negative{color:var(--color-on-primary)}.gxg-link{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--color-primary-hover)}.gxg-link:active{color:var(--color-primary-active)}.gxg-link-gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04)}.gxg-link-gray:hover{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04);color:var(--gray-06)}.gxg-alert-error{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-error-dark);display:inline-block}.gxg-alert-warning{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-warning-dark);display:inline-block}.gxg-alert-success{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-success-dark);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-button-styles{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb{background:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04);cursor:pointer}:host{display:flex;font-size:14px}:host .wrapper{display:flex;flex-direction:row;gap:var(--spacing-comp-02)}:host p,:host q,:host a{display:block;margin:0;padding:0;line-height:1.6em}:host p.no-line,:host q.no-line,:host a.no-line{text-decoration:none}:host .disabled{pointer-events:none;color:var(--gxg-color--disabled) !important}:host([text-align=start]){justify-content:flex-start}:host([text-align=center]){justify-content:center}:host([text-align=center]) .wrapper *{text-align:center}:host([text-align=end]){justify-content:flex-end}:host([padding=s]){padding:var(--spacing-comp-01)}:host([padding=m]){padding:var(--spacing-comp-02)}:host([type=button-like]) button{background-color:transparent;border:none;font-family:var(--font-family-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-primary-enabled);letter-spacing:var(--letter-spacing-xs);cursor:pointer}:host([type=button-like]) button:hover{color:var(--color-primary-hover)}:host([type=button-like]) button:focus{outline:none;text-decoration:underline}:host(.icon){display:flex;flex-direction:row}:host(.icon--center) .wrapper{align-items:center}:host(.icon--top) .wrapper{align-items:flex-start}:host(.large) .gxg-text,:host(.large) .gxg-text--gray,:host(.large) .gxg-quote,:host(.large) .gxg-link,:host(.large) .gxg-link-gray,:host(.large) .gxg-alert-error,:host(.large) .gxg-alert-warning,:host(.large) .gxg-alert-success{font-size:var(--font-size-lg)}:host(.mercury){color:var(--gray-02)}:host(.mercury) .gxg-text,:host(.mercury) .gxg-link{font-size:var(--mc-font-size-xs)}:host(.mercury) .gxg-text{color:inherit}:host(.mercury[italic]){font-style:italic}";
|
|
7
7
|
|
|
8
8
|
const GxgText = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
9
9
|
constructor() {
|
|
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, createEvent, h, writeTask, Host } from
|
|
|
2
2
|
import { m as mouseEventModifierKey } from './helpers.js';
|
|
3
3
|
import { d as defineCustomElement$1 } from './checkbox.js';
|
|
4
4
|
|
|
5
|
-
const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content
|
|
5
|
+
const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:calc( var(--padding-inline-start) + var(--ch-tree-view-item-custom-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(--ch-tree-tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-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(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-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(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\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(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(\n var(--ch-tree-view-view__expandable-button-width) / 2\n )}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n );--parent-negative-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n )}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-view-item__dashed-line--inset-inline-start) + var(--ch-tree-view-item-custom-padding-inline-start) );height:1px;width:calc( var(--ch-tree-tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-view-item__dashed-line--inset-inline-start) - var(--ch-tree-view-item__dashed-line--inset-inline-end) );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(--ch-tree-view-item-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(--ch-tree-view-view__expandable-button-width);height:var(--ch-tree-view-view__expandable-button-width);margin-inline-end:var(--ch-tree-view-item-gap);z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--ch-tree-view-view__expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc( var(--ch-tree-view-view__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{width:var(--ch-tree-view-view__checkbox-size);margin-inline-end:var(--ch-tree-view-item-gap)}.checkbox::part(container){width:var(--ch-tree-view-view__checkbox-size);height:var(--ch-tree-view-view__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:var(--ch-tree-view-item-gap)}.right-img{grid-area:right-img;margin-inline-start:var(--ch-tree-view-item-gap)}.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}.expandable--lazy-loaded{content-visibility:auto;contain-intrinsic-size:auto 100px}.expandable--collapsed{display:none;overflow:hidden;content-visibility:hidden}";
|
|
6
6
|
|
|
7
7
|
const resetDragImage = new Image();
|
|
8
8
|
const DISTANCE_TO_CHECKBOX_CUSTOM_VAR = "--ch-tree-view-item-distance-to-checkbox";
|
|
@@ -3,12 +3,12 @@ import { d as defineCustomElement$3 } from './checkbox.js';
|
|
|
3
3
|
import { d as defineCustomElement$2 } from './tree-view.js';
|
|
4
4
|
import { d as defineCustomElement$1 } from './tree-view-item.js';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const filterWithCase = (stringToFilter, filter, matchCase) => matchCase
|
|
7
7
|
? stringToFilter.includes(filter)
|
|
8
8
|
: stringToFilter.toLowerCase().includes(filter.toLowerCase());
|
|
9
|
-
const filterWithString = (stringToFilter, filter, filterOptions) => filterOptions.regularExpression
|
|
9
|
+
const filterWithString = (stringToFilter, filter, filterOptions) => (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.regularExpression)
|
|
10
10
|
? stringToFilter.match(filter) !== null
|
|
11
|
-
:
|
|
11
|
+
: filterWithCase(stringToFilter, filter, filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.matchCase);
|
|
12
12
|
const filterDictionary = {
|
|
13
13
|
caption: (item, filterInfo) => {
|
|
14
14
|
var _a;
|
|
@@ -74,13 +74,16 @@ function getImage(name, gxImageConstructor) {
|
|
|
74
74
|
return gximage;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
const fromGxImageToURL = (
|
|
77
|
+
const fromGxImageToURL = (gxImage, Settings, gxImageConstructor) => {
|
|
78
|
+
if (!gxImage) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
78
81
|
let url = "";
|
|
79
|
-
if (
|
|
80
|
-
url = getImage(
|
|
82
|
+
if (gxImage.id) {
|
|
83
|
+
url = getImage(gxImage.id, gxImageConstructor).uri;
|
|
81
84
|
}
|
|
82
85
|
else {
|
|
83
|
-
url =
|
|
86
|
+
url = gxImage.uri;
|
|
84
87
|
}
|
|
85
88
|
if (!url) {
|
|
86
89
|
return "";
|
|
@@ -145,6 +148,17 @@ const GXRenderItem = (itemModel, treeState, treeHasFilter, lastItem, level) => {
|
|
|
145
148
|
? subModel.id === itemModel.lastItemId
|
|
146
149
|
: index === itemModel.items.length - 1), level + 1))));
|
|
147
150
|
};
|
|
151
|
+
const defaultSortItemsCallback = (subModel) => {
|
|
152
|
+
subModel.sort((a, b) => {
|
|
153
|
+
if (a.order < b.order) {
|
|
154
|
+
return -1;
|
|
155
|
+
}
|
|
156
|
+
if (a.order > b.order) {
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
return a.caption <= b.caption ? -1 : 0;
|
|
160
|
+
});
|
|
161
|
+
};
|
|
148
162
|
const ChTreeViewRender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
149
163
|
constructor() {
|
|
150
164
|
super();
|
|
@@ -239,6 +253,10 @@ const ChTreeViewRender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
239
253
|
* lines.
|
|
240
254
|
*/
|
|
241
255
|
this.showLines = "none";
|
|
256
|
+
/**
|
|
257
|
+
* Callback that is executed when the treeModel is changed to order its items.
|
|
258
|
+
*/
|
|
259
|
+
this.sortItemsCallback = defaultSortItemsCallback;
|
|
242
260
|
/**
|
|
243
261
|
* Set this attribute if you want all the children item's checkboxes to be
|
|
244
262
|
* checked when the parent item checkbox is checked, or to be unchecked when
|
|
@@ -304,10 +322,6 @@ const ChTreeViewRender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
304
322
|
this.itemContextmenu.emit(event.detail);
|
|
305
323
|
};
|
|
306
324
|
this.handleItemsDropped = (event) => {
|
|
307
|
-
if (!this.dropItemsCallback) {
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
event.stopPropagation();
|
|
311
325
|
const dataTransferInfo = event.detail;
|
|
312
326
|
const newContainer = dataTransferInfo.newContainer;
|
|
313
327
|
const newParentId = newContainer.id;
|
|
@@ -316,55 +330,24 @@ const ChTreeViewRender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
316
330
|
return;
|
|
317
331
|
}
|
|
318
332
|
const draggedItems = dataTransferInfo.draggedItems;
|
|
319
|
-
if (draggedItems.length === 0) {
|
|
333
|
+
if (draggedItems.length === 0 || !this.dropItemsCallback) {
|
|
320
334
|
return;
|
|
321
335
|
}
|
|
336
|
+
event.stopPropagation();
|
|
322
337
|
const promise = this.dropItemsCallback(dataTransferInfo);
|
|
323
338
|
this.waitDropProcessing = true;
|
|
324
339
|
promise.then(async (response) => {
|
|
340
|
+
this.dropItems(response.acceptDrop, dataTransferInfo, response.items);
|
|
325
341
|
this.waitDropProcessing = false;
|
|
326
|
-
if (!response.acceptDrop) {
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
const newParentUIModel = this.flattenedTreeModel.get(newParentId).item;
|
|
330
|
-
// Only move the items to the new parent, keeping the state
|
|
331
|
-
if (dataTransferInfo.dropInTheSameTree) {
|
|
332
|
-
// Add the UI models to the new container and remove the UI models from
|
|
333
|
-
// the old containers
|
|
334
|
-
draggedItems.forEach(this.moveItemToNewParent(newParentUIModel));
|
|
335
|
-
// When the selected items are moved, the tree must remove its internal
|
|
336
|
-
// state to not have undefined references
|
|
337
|
-
if (dataTransferInfo.draggingSelectedItems) {
|
|
338
|
-
await this.treeRef.clearSelectedItemsInfo();
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
// Add the new items
|
|
342
|
-
else {
|
|
343
|
-
if (response.items == null) {
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
// Add new items to the parent
|
|
347
|
-
newParentUIModel.items.push(...response.items);
|
|
348
|
-
// Flatten the new UI models
|
|
349
|
-
response.items.forEach(this.flattenItemUIModel(newParentUIModel));
|
|
350
|
-
}
|
|
351
|
-
this.sortItems(newParentUIModel.items);
|
|
352
|
-
// Open the item to visualize the new subitems
|
|
353
|
-
newParentUIModel.expanded = true;
|
|
354
|
-
// Re-sync checked items
|
|
355
|
-
this.emitCheckedItemsChange();
|
|
356
|
-
// Update filters
|
|
357
|
-
this.processFilters();
|
|
358
|
-
// There is no need to force and update, since the waitDropProcessing
|
|
359
|
-
// prop was modified
|
|
360
342
|
});
|
|
361
343
|
};
|
|
362
344
|
this.moveItemToNewParent = (newParentUIModel) => (dataTransferInfo) => {
|
|
363
345
|
const itemUIModelExtended = this.flattenedTreeModel.get(dataTransferInfo.id);
|
|
364
346
|
const item = itemUIModelExtended.item;
|
|
365
347
|
const oldParentItem = itemUIModelExtended.parentItem;
|
|
366
|
-
// Remove the UI model from the previous parent
|
|
367
|
-
|
|
348
|
+
// Remove the UI model from the previous parent. The equality function
|
|
349
|
+
// must be by index, not by object reference
|
|
350
|
+
oldParentItem.items.splice(oldParentItem.items.findIndex(el => el.id === item.id), 1);
|
|
368
351
|
// Add the UI Model to the new parent
|
|
369
352
|
newParentUIModel.items.push(item);
|
|
370
353
|
// Reference the new parent in the item
|
|
@@ -423,6 +406,47 @@ const ChTreeViewRender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
423
406
|
handleTreeModelChange() {
|
|
424
407
|
this.flattenModel();
|
|
425
408
|
}
|
|
409
|
+
/**
|
|
410
|
+
* Given the drop accepting, the data transfer info and the external items,
|
|
411
|
+
* it process the drops of the items in the tree.
|
|
412
|
+
*/
|
|
413
|
+
async dropItems(acceptDrop, dataTransferInfo, items) {
|
|
414
|
+
if (!acceptDrop) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
const newParentId = dataTransferInfo.newContainer.id;
|
|
418
|
+
const newParentUIModel = this.flattenedTreeModel.get(newParentId).item;
|
|
419
|
+
// Only move the items to the new parent, keeping the state
|
|
420
|
+
if (dataTransferInfo.dropInTheSameTree) {
|
|
421
|
+
// Add the UI models to the new container and remove the UI models from
|
|
422
|
+
// the old containers
|
|
423
|
+
dataTransferInfo.draggedItems.forEach(this.moveItemToNewParent(newParentUIModel));
|
|
424
|
+
// When the selected items are moved, the tree must remove its internal
|
|
425
|
+
// state to not have undefined references
|
|
426
|
+
if (dataTransferInfo.draggingSelectedItems) {
|
|
427
|
+
await this.treeRef.clearSelectedItemsInfo();
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
// Add the new items
|
|
431
|
+
else {
|
|
432
|
+
if (items == null) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
// Add new items to the parent
|
|
436
|
+
newParentUIModel.items.push(...items);
|
|
437
|
+
// Flatten the new UI models
|
|
438
|
+
items.forEach(this.flattenItemUIModel(newParentUIModel));
|
|
439
|
+
}
|
|
440
|
+
this.sortItems(newParentUIModel.items);
|
|
441
|
+
// Open the item to visualize the new subitems
|
|
442
|
+
newParentUIModel.expanded = true;
|
|
443
|
+
// Re-sync checked items
|
|
444
|
+
this.emitCheckedItemsChange();
|
|
445
|
+
// Update filters
|
|
446
|
+
this.processFilters();
|
|
447
|
+
// Force re-render
|
|
448
|
+
forceUpdate(this);
|
|
449
|
+
}
|
|
426
450
|
/**
|
|
427
451
|
* Given an item id, an array of items to add, the download status and the
|
|
428
452
|
* lazy state, updates the item's UI Model.
|
|
@@ -771,6 +795,7 @@ const ChTreeViewRender = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
771
795
|
"treeModel": [16],
|
|
772
796
|
"useGxRender": [4, "use-gx-render"],
|
|
773
797
|
"waitDropProcessing": [32],
|
|
798
|
+
"dropItems": [64],
|
|
774
799
|
"loadLazyContent": [64],
|
|
775
800
|
"scrollIntoVisible": [64],
|
|
776
801
|
"toggleItems": [64],
|
|
@@ -108,8 +108,8 @@ const ChTreeView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
108
108
|
this.needForRAF = false; // No need to call RAF up until next frame
|
|
109
109
|
requestAnimationFrame(() => {
|
|
110
110
|
this.needForRAF = true; // RAF now consumes the movement instruction so a new one can come
|
|
111
|
-
this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.
|
|
112
|
-
this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.
|
|
111
|
+
this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.clientX}px`);
|
|
112
|
+
this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.clientY}px`);
|
|
113
113
|
});
|
|
114
114
|
};
|
|
115
115
|
this.fixScrollPositionOnDrag = () => {
|
|
@@ -193,8 +193,8 @@ const ChTreeView = class {
|
|
|
193
193
|
this.needForRAF = false; // No need to call RAF up until next frame
|
|
194
194
|
requestAnimationFrame(() => {
|
|
195
195
|
this.needForRAF = true; // RAF now consumes the movement instruction so a new one can come
|
|
196
|
-
this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.
|
|
197
|
-
this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.
|
|
196
|
+
this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.clientX}px`);
|
|
197
|
+
this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.clientY}px`);
|
|
198
198
|
});
|
|
199
199
|
};
|
|
200
200
|
this.fixScrollPositionOnDrag = () => {
|
|
@@ -563,7 +563,7 @@ const ChTreeView = class {
|
|
|
563
563
|
};
|
|
564
564
|
ChTreeView.style = treeViewCss;
|
|
565
565
|
|
|
566
|
-
const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content
|
|
566
|
+
const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:calc( var(--padding-inline-start) + var(--ch-tree-view-item-custom-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(--ch-tree-tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-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(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-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(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\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(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(\n var(--ch-tree-view-view__expandable-button-width) / 2\n )}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n );--parent-negative-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n )}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-view-item__dashed-line--inset-inline-start) + var(--ch-tree-view-item-custom-padding-inline-start) );height:1px;width:calc( var(--ch-tree-tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-view-item__dashed-line--inset-inline-start) - var(--ch-tree-view-item__dashed-line--inset-inline-end) );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(--ch-tree-view-item-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(--ch-tree-view-view__expandable-button-width);height:var(--ch-tree-view-view__expandable-button-width);margin-inline-end:var(--ch-tree-view-item-gap);z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--ch-tree-view-view__expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc( var(--ch-tree-view-view__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{width:var(--ch-tree-view-view__checkbox-size);margin-inline-end:var(--ch-tree-view-item-gap)}.checkbox::part(container){width:var(--ch-tree-view-view__checkbox-size);height:var(--ch-tree-view-view__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:var(--ch-tree-view-item-gap)}.right-img{grid-area:right-img;margin-inline-start:var(--ch-tree-view-item-gap)}.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}.expandable--lazy-loaded{content-visibility:auto;contain-intrinsic-size:auto 100px}.expandable--collapsed{display:none;overflow:hidden;content-visibility:hidden}";
|
|
567
567
|
|
|
568
568
|
const resetDragImage = new Image();
|
|
569
569
|
const DISTANCE_TO_CHECKBOX_CUSTOM_VAR = "--ch-tree-view-item-distance-to-checkbox";
|
|
@@ -1162,12 +1162,12 @@ const ChTreeViewItem = class {
|
|
|
1162
1162
|
};
|
|
1163
1163
|
ChTreeViewItem.style = treeViewItemCss;
|
|
1164
1164
|
|
|
1165
|
-
const
|
|
1165
|
+
const filterWithCase = (stringToFilter, filter, matchCase) => matchCase
|
|
1166
1166
|
? stringToFilter.includes(filter)
|
|
1167
1167
|
: stringToFilter.toLowerCase().includes(filter.toLowerCase());
|
|
1168
|
-
const filterWithString = (stringToFilter, filter, filterOptions) => filterOptions.regularExpression
|
|
1168
|
+
const filterWithString = (stringToFilter, filter, filterOptions) => (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.regularExpression)
|
|
1169
1169
|
? stringToFilter.match(filter) !== null
|
|
1170
|
-
:
|
|
1170
|
+
: filterWithCase(stringToFilter, filter, filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.matchCase);
|
|
1171
1171
|
const filterDictionary = {
|
|
1172
1172
|
caption: (item, filterInfo) => {
|
|
1173
1173
|
var _a;
|
|
@@ -1233,13 +1233,16 @@ function getImage(name, gxImageConstructor) {
|
|
|
1233
1233
|
return gximage;
|
|
1234
1234
|
}
|
|
1235
1235
|
}
|
|
1236
|
-
const fromGxImageToURL = (
|
|
1236
|
+
const fromGxImageToURL = (gxImage, Settings, gxImageConstructor) => {
|
|
1237
|
+
if (!gxImage) {
|
|
1238
|
+
return;
|
|
1239
|
+
}
|
|
1237
1240
|
let url = "";
|
|
1238
|
-
if (
|
|
1239
|
-
url = getImage(
|
|
1241
|
+
if (gxImage.id) {
|
|
1242
|
+
url = getImage(gxImage.id, gxImageConstructor).uri;
|
|
1240
1243
|
}
|
|
1241
1244
|
else {
|
|
1242
|
-
url =
|
|
1245
|
+
url = gxImage.uri;
|
|
1243
1246
|
}
|
|
1244
1247
|
if (!url) {
|
|
1245
1248
|
return "";
|
|
@@ -1304,6 +1307,17 @@ const GXRenderItem = (itemModel, treeState, treeHasFilter, lastItem, level) => {
|
|
|
1304
1307
|
? subModel.id === itemModel.lastItemId
|
|
1305
1308
|
: index === itemModel.items.length - 1), level + 1))));
|
|
1306
1309
|
};
|
|
1310
|
+
const defaultSortItemsCallback = (subModel) => {
|
|
1311
|
+
subModel.sort((a, b) => {
|
|
1312
|
+
if (a.order < b.order) {
|
|
1313
|
+
return -1;
|
|
1314
|
+
}
|
|
1315
|
+
if (a.order > b.order) {
|
|
1316
|
+
return 0;
|
|
1317
|
+
}
|
|
1318
|
+
return a.caption <= b.caption ? -1 : 0;
|
|
1319
|
+
});
|
|
1320
|
+
};
|
|
1307
1321
|
const ChTreeViewRender = class {
|
|
1308
1322
|
constructor(hostRef) {
|
|
1309
1323
|
registerInstance(this, hostRef);
|
|
@@ -1397,6 +1411,10 @@ const ChTreeViewRender = class {
|
|
|
1397
1411
|
* lines.
|
|
1398
1412
|
*/
|
|
1399
1413
|
this.showLines = "none";
|
|
1414
|
+
/**
|
|
1415
|
+
* Callback that is executed when the treeModel is changed to order its items.
|
|
1416
|
+
*/
|
|
1417
|
+
this.sortItemsCallback = defaultSortItemsCallback;
|
|
1400
1418
|
/**
|
|
1401
1419
|
* Set this attribute if you want all the children item's checkboxes to be
|
|
1402
1420
|
* checked when the parent item checkbox is checked, or to be unchecked when
|
|
@@ -1462,10 +1480,6 @@ const ChTreeViewRender = class {
|
|
|
1462
1480
|
this.itemContextmenu.emit(event.detail);
|
|
1463
1481
|
};
|
|
1464
1482
|
this.handleItemsDropped = (event) => {
|
|
1465
|
-
if (!this.dropItemsCallback) {
|
|
1466
|
-
return;
|
|
1467
|
-
}
|
|
1468
|
-
event.stopPropagation();
|
|
1469
1483
|
const dataTransferInfo = event.detail;
|
|
1470
1484
|
const newContainer = dataTransferInfo.newContainer;
|
|
1471
1485
|
const newParentId = newContainer.id;
|
|
@@ -1474,55 +1488,24 @@ const ChTreeViewRender = class {
|
|
|
1474
1488
|
return;
|
|
1475
1489
|
}
|
|
1476
1490
|
const draggedItems = dataTransferInfo.draggedItems;
|
|
1477
|
-
if (draggedItems.length === 0) {
|
|
1491
|
+
if (draggedItems.length === 0 || !this.dropItemsCallback) {
|
|
1478
1492
|
return;
|
|
1479
1493
|
}
|
|
1494
|
+
event.stopPropagation();
|
|
1480
1495
|
const promise = this.dropItemsCallback(dataTransferInfo);
|
|
1481
1496
|
this.waitDropProcessing = true;
|
|
1482
1497
|
promise.then(async (response) => {
|
|
1498
|
+
this.dropItems(response.acceptDrop, dataTransferInfo, response.items);
|
|
1483
1499
|
this.waitDropProcessing = false;
|
|
1484
|
-
if (!response.acceptDrop) {
|
|
1485
|
-
return;
|
|
1486
|
-
}
|
|
1487
|
-
const newParentUIModel = this.flattenedTreeModel.get(newParentId).item;
|
|
1488
|
-
// Only move the items to the new parent, keeping the state
|
|
1489
|
-
if (dataTransferInfo.dropInTheSameTree) {
|
|
1490
|
-
// Add the UI models to the new container and remove the UI models from
|
|
1491
|
-
// the old containers
|
|
1492
|
-
draggedItems.forEach(this.moveItemToNewParent(newParentUIModel));
|
|
1493
|
-
// When the selected items are moved, the tree must remove its internal
|
|
1494
|
-
// state to not have undefined references
|
|
1495
|
-
if (dataTransferInfo.draggingSelectedItems) {
|
|
1496
|
-
await this.treeRef.clearSelectedItemsInfo();
|
|
1497
|
-
}
|
|
1498
|
-
}
|
|
1499
|
-
// Add the new items
|
|
1500
|
-
else {
|
|
1501
|
-
if (response.items == null) {
|
|
1502
|
-
return;
|
|
1503
|
-
}
|
|
1504
|
-
// Add new items to the parent
|
|
1505
|
-
newParentUIModel.items.push(...response.items);
|
|
1506
|
-
// Flatten the new UI models
|
|
1507
|
-
response.items.forEach(this.flattenItemUIModel(newParentUIModel));
|
|
1508
|
-
}
|
|
1509
|
-
this.sortItems(newParentUIModel.items);
|
|
1510
|
-
// Open the item to visualize the new subitems
|
|
1511
|
-
newParentUIModel.expanded = true;
|
|
1512
|
-
// Re-sync checked items
|
|
1513
|
-
this.emitCheckedItemsChange();
|
|
1514
|
-
// Update filters
|
|
1515
|
-
this.processFilters();
|
|
1516
|
-
// There is no need to force and update, since the waitDropProcessing
|
|
1517
|
-
// prop was modified
|
|
1518
1500
|
});
|
|
1519
1501
|
};
|
|
1520
1502
|
this.moveItemToNewParent = (newParentUIModel) => (dataTransferInfo) => {
|
|
1521
1503
|
const itemUIModelExtended = this.flattenedTreeModel.get(dataTransferInfo.id);
|
|
1522
1504
|
const item = itemUIModelExtended.item;
|
|
1523
1505
|
const oldParentItem = itemUIModelExtended.parentItem;
|
|
1524
|
-
// Remove the UI model from the previous parent
|
|
1525
|
-
|
|
1506
|
+
// Remove the UI model from the previous parent. The equality function
|
|
1507
|
+
// must be by index, not by object reference
|
|
1508
|
+
oldParentItem.items.splice(oldParentItem.items.findIndex(el => el.id === item.id), 1);
|
|
1526
1509
|
// Add the UI Model to the new parent
|
|
1527
1510
|
newParentUIModel.items.push(item);
|
|
1528
1511
|
// Reference the new parent in the item
|
|
@@ -1581,6 +1564,47 @@ const ChTreeViewRender = class {
|
|
|
1581
1564
|
handleTreeModelChange() {
|
|
1582
1565
|
this.flattenModel();
|
|
1583
1566
|
}
|
|
1567
|
+
/**
|
|
1568
|
+
* Given the drop accepting, the data transfer info and the external items,
|
|
1569
|
+
* it process the drops of the items in the tree.
|
|
1570
|
+
*/
|
|
1571
|
+
async dropItems(acceptDrop, dataTransferInfo, items) {
|
|
1572
|
+
if (!acceptDrop) {
|
|
1573
|
+
return;
|
|
1574
|
+
}
|
|
1575
|
+
const newParentId = dataTransferInfo.newContainer.id;
|
|
1576
|
+
const newParentUIModel = this.flattenedTreeModel.get(newParentId).item;
|
|
1577
|
+
// Only move the items to the new parent, keeping the state
|
|
1578
|
+
if (dataTransferInfo.dropInTheSameTree) {
|
|
1579
|
+
// Add the UI models to the new container and remove the UI models from
|
|
1580
|
+
// the old containers
|
|
1581
|
+
dataTransferInfo.draggedItems.forEach(this.moveItemToNewParent(newParentUIModel));
|
|
1582
|
+
// When the selected items are moved, the tree must remove its internal
|
|
1583
|
+
// state to not have undefined references
|
|
1584
|
+
if (dataTransferInfo.draggingSelectedItems) {
|
|
1585
|
+
await this.treeRef.clearSelectedItemsInfo();
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1588
|
+
// Add the new items
|
|
1589
|
+
else {
|
|
1590
|
+
if (items == null) {
|
|
1591
|
+
return;
|
|
1592
|
+
}
|
|
1593
|
+
// Add new items to the parent
|
|
1594
|
+
newParentUIModel.items.push(...items);
|
|
1595
|
+
// Flatten the new UI models
|
|
1596
|
+
items.forEach(this.flattenItemUIModel(newParentUIModel));
|
|
1597
|
+
}
|
|
1598
|
+
this.sortItems(newParentUIModel.items);
|
|
1599
|
+
// Open the item to visualize the new subitems
|
|
1600
|
+
newParentUIModel.expanded = true;
|
|
1601
|
+
// Re-sync checked items
|
|
1602
|
+
this.emitCheckedItemsChange();
|
|
1603
|
+
// Update filters
|
|
1604
|
+
this.processFilters();
|
|
1605
|
+
// Force re-render
|
|
1606
|
+
forceUpdate(this);
|
|
1607
|
+
}
|
|
1584
1608
|
/**
|
|
1585
1609
|
* Given an item id, an array of items to add, the download status and the
|
|
1586
1610
|
* lazy state, updates the item's UI Model.
|