@genexus/genexus-ide-ui 2.1.2 → 2.1.4
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/gx-ide-about.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-about.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-name-picker.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js +5 -4
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-starting-template.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js.map +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-partial-selection.cjs.entry.js.map +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-to-revision.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-test.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
- package/dist/collection/components/_helpers/comments-viewer/comments-viewer.css +1 -1
- package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +1 -0
- package/dist/collection/components/_helpers/ide-loader/ide-loader.css +4 -0
- package/dist/collection/components/_helpers/list-selector/list-selector.css +1 -0
- package/dist/collection/components/_starting-template/starting-template.css +4 -0
- package/dist/collection/components/_test/test.css +1 -0
- package/dist/collection/components/about/about.css +4 -0
- package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +5 -0
- package/dist/collection/components/bpm/assign-roles/bpm-assign-roles.css +1 -0
- package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.css +1 -0
- package/dist/collection/components/bpm/import-files/bpm-import-files.css +1 -0
- package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.css +1 -0
- package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.css +1 -0
- package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.css +4 -0
- package/dist/collection/components/bpm/task-documents/task-documents.css +4 -0
- package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.css +1 -0
- package/dist/collection/components/curl-inspector/curl-inspector.css +4 -0
- package/dist/collection/components/data-selector/data-selector.css +4 -0
- package/dist/collection/components/data-type-selector/data-type-selector.css +4 -0
- package/dist/collection/components/deployment-tool/deployment-tool.css +1 -0
- package/dist/collection/components/design-import/design-import.css +5 -0
- package/dist/collection/components/details-acknowledgements/details-acknowledgements.css +4 -0
- package/dist/collection/components/file-uploader/file-uploader.css +5 -0
- package/dist/collection/components/gam-installation-settings/gam-installation-settings.css +5 -0
- package/dist/collection/components/json-import/json-import.css +4 -0
- package/dist/collection/components/kb-manager-export/kb-manager-export.css +4 -0
- package/dist/collection/components/kb-manager-import/kb-manager-import.css +4 -0
- package/dist/collection/components/launchpad/native-apps/launchpad-native-apps.css +4 -0
- package/dist/collection/components/modules/edit-module-server/edit-module-server.css +4 -0
- package/dist/collection/components/name-picker/name-picker.css +4 -0
- package/dist/collection/components/navigation-report/navigation-report.css +4 -0
- package/dist/collection/components/new-environment/new-environment.css +4 -0
- package/dist/collection/components/new-kb/new-kb.css +4 -0
- package/dist/collection/components/new-object/new-object.css +4 -0
- package/dist/collection/components/new-version/new-version.css +4 -0
- package/dist/collection/components/object-selector/object-selector.css +4 -0
- package/dist/collection/components/open-api-import/open-api-import.css +4 -0
- package/dist/collection/components/references/references.css +1 -0
- package/dist/collection/components/restore-version/restore-version.css +7 -14
- package/dist/collection/components/restore-version/restore-version.js +4 -3
- package/dist/collection/components/restore-version/restore-version.js.map +1 -1
- package/dist/collection/components/select-kb-items/select-kb-items.css +4 -0
- package/dist/collection/components/select-user-team/select-user-team.css +4 -0
- package/dist/collection/components/splash/splash.css +4 -0
- package/dist/collection/components/start-page/start-page.css +4 -0
- package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.css +4 -0
- package/dist/collection/components/team-dev/bring-changes/bring-changes.css +4 -0
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.css +4 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +4 -0
- package/dist/collection/components/team-dev/history/history.css +4 -0
- package/dist/collection/components/team-dev/preview/team-dev-preview.css +1 -0
- package/dist/collection/components/team-dev/preview/team-dev-preview.js +2 -2
- package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -1
- package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +5 -0
- package/dist/collection/components/team-dev/server-selector/server-selector.css +4 -0
- package/dist/collection/components/team-dev/share-kb/share-kb.css +4 -0
- package/dist/collection/components/team-dev/update/update.css +4 -0
- package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +4 -0
- package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +4 -0
- package/dist/collection/components/team-dev/version-control/commit/commit.css +4 -0
- package/dist/collection/components/wf-settings/wf-settings.css +1 -0
- package/dist/collection/components/ww-files/ww-files.css +4 -0
- package/dist/collection/components/ww-images/ww-images.css +4 -0
- package/dist/components/bpm-objects-selector.js +1 -1
- package/dist/components/bpm-objects-selector.js.map +1 -1
- package/dist/components/gx-ide-about.js +1 -1
- package/dist/components/gx-ide-about.js.map +1 -1
- package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
- package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
- package/dist/components/gx-ide-bpm-assign-roles.js +1 -1
- package/dist/components/gx-ide-bpm-assign-roles.js.map +1 -1
- package/dist/components/gx-ide-bpm-export-xpdl.js +1 -1
- package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
- package/dist/components/gx-ide-bpm-import-files.js +1 -1
- package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
- package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
- package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
- package/dist/components/gx-ide-bpm-sync-gam-roles.js +1 -1
- package/dist/components/gx-ide-bpm-sync-gam-roles.js.map +1 -1
- package/dist/components/gx-ide-bpm-task-documents.js +1 -1
- package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
- package/dist/components/gx-ide-bpm-timer-duration.js +1 -1
- package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
- package/dist/components/gx-ide-comments-viewer.js +1 -1
- package/dist/components/gx-ide-comments-viewer.js.map +1 -1
- package/dist/components/gx-ide-connect-gx-server.js +1 -1
- package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-curl-inspector.js +1 -1
- package/dist/components/gx-ide-curl-inspector.js.map +1 -1
- package/dist/components/gx-ide-data-selector.js +1 -1
- package/dist/components/gx-ide-data-selector.js.map +1 -1
- package/dist/components/gx-ide-data-type-selector.js +1 -1
- package/dist/components/gx-ide-data-type-selector.js.map +1 -1
- package/dist/components/gx-ide-deployment-tool.js +1 -1
- package/dist/components/gx-ide-deployment-tool.js.map +1 -1
- package/dist/components/gx-ide-design-import.js +1 -1
- package/dist/components/gx-ide-design-import.js.map +1 -1
- package/dist/components/gx-ide-details-acknowledgements.js +1 -1
- package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
- package/dist/components/gx-ide-edit-module-server.js +1 -1
- package/dist/components/gx-ide-edit-module-server.js.map +1 -1
- package/dist/components/gx-ide-empty-state2.js +1 -1
- package/dist/components/gx-ide-empty-state2.js.map +1 -1
- package/dist/components/gx-ide-file-uploader.js +1 -1
- package/dist/components/gx-ide-file-uploader.js.map +1 -1
- package/dist/components/gx-ide-gam-installation-settings.js +1 -1
- package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
- package/dist/components/gx-ide-json-import.js +1 -1
- package/dist/components/gx-ide-json-import.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-export.js +1 -1
- package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +1 -1
- package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
- package/dist/components/gx-ide-name-picker.js +1 -1
- package/dist/components/gx-ide-name-picker.js.map +1 -1
- package/dist/components/gx-ide-navigation-report.js +1 -1
- package/dist/components/gx-ide-navigation-report.js.map +1 -1
- package/dist/components/gx-ide-new-environment.js +1 -1
- package/dist/components/gx-ide-new-environment.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +1 -1
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/components/gx-ide-new-object.js +1 -1
- package/dist/components/gx-ide-new-object.js.map +1 -1
- package/dist/components/gx-ide-new-version.js +1 -1
- package/dist/components/gx-ide-new-version.js.map +1 -1
- package/dist/components/gx-ide-object-selector.js +1 -1
- package/dist/components/gx-ide-object-selector.js.map +1 -1
- package/dist/components/gx-ide-open-api-import.js +1 -1
- package/dist/components/gx-ide-open-api-import.js.map +1 -1
- package/dist/components/gx-ide-references.js +1 -1
- package/dist/components/gx-ide-references.js.map +1 -1
- package/dist/components/gx-ide-restore-version.js +5 -4
- package/dist/components/gx-ide-restore-version.js.map +1 -1
- package/dist/components/gx-ide-select-user-team.js +1 -1
- package/dist/components/gx-ide-select-user-team.js.map +1 -1
- package/dist/components/gx-ide-server-selector.js +1 -1
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +1 -1
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-splash.js +1 -1
- package/dist/components/gx-ide-splash.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +1 -1
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/components/gx-ide-starting-template.js +1 -1
- package/dist/components/gx-ide-starting-template.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +1 -1
- package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +1 -1
- package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +1 -1
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/gx-ide-team-dev-preview.js +3 -3
- package/dist/components/gx-ide-team-dev-preview.js.map +1 -1
- package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
- package/dist/components/gx-ide-team-dev-select-recent-comment.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
- package/dist/components/gx-ide-team-dev-update-to-revision.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +1 -1
- package/dist/components/gx-ide-team-dev-update.js.map +1 -1
- package/dist/components/gx-ide-test.js +1 -1
- package/dist/components/gx-ide-test.js.map +1 -1
- package/dist/components/gx-ide-wf-settings.js +1 -1
- package/dist/components/gx-ide-wf-settings.js.map +1 -1
- package/dist/components/gx-ide-ww-files.js +1 -1
- package/dist/components/gx-ide-ww-files.js.map +1 -1
- package/dist/components/gx-ide-ww-images.js +1 -1
- package/dist/components/gx-ide-ww-images.js.map +1 -1
- package/dist/components/ide-loader.js +1 -1
- package/dist/components/ide-loader.js.map +1 -1
- package/dist/components/launchpad-native-apps.js +1 -1
- package/dist/components/launchpad-native-apps.js.map +1 -1
- package/dist/components/list-selector.js +1 -1
- package/dist/components/list-selector.js.map +1 -1
- package/dist/components/select-kb-items.js +1 -1
- package/dist/components/select-kb-items.js.map +1 -1
- package/dist/esm/gx-ide-about.entry.js +1 -1
- package/dist/esm/gx-ide-about.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-assign-roles.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
- package/dist/esm/gx-ide-comments-viewer.entry.js +1 -1
- package/dist/esm/gx-ide-comments-viewer.entry.js.map +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
- package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -1
- package/dist/esm/gx-ide-data-selector.entry.js +1 -1
- package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
- package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
- package/dist/esm/gx-ide-design-import.entry.js +1 -1
- package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js +1 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
- package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
- package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-empty-state.entry.js +1 -1
- package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
- package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
- package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
- package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
- package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +1 -1
- package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-launchpad-apis_3.entry.js +1 -1
- package/dist/esm/gx-ide-launchpad-apis_3.entry.js.map +1 -1
- package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
- package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
- package/dist/esm/gx-ide-loader.entry.js +1 -1
- package/dist/esm/gx-ide-loader.entry.js.map +1 -1
- package/dist/esm/gx-ide-name-picker.entry.js +1 -1
- package/dist/esm/gx-ide-name-picker.entry.js.map +1 -1
- package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
- package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-object.entry.js +1 -1
- package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-version.entry.js +1 -1
- package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-open-api-import.entry.js +1 -1
- package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-references.entry.js +1 -1
- package/dist/esm/gx-ide-references.entry.js.map +1 -1
- package/dist/esm/gx-ide-restore-version.entry.js +5 -4
- package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
- package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-splash.entry.js +1 -1
- package/dist/esm/gx-ide-splash.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +1 -1
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-starting-template.entry.js +1 -1
- package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-preview.entry.js +3 -3
- package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
- package/dist/esm/gx-ide-test.entry.js +1 -1
- package/dist/esm/gx-ide-test.entry.js.map +1 -1
- package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
- package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-files.entry.js +1 -1
- package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/{p-5929f575.entry.js → p-00705e1c.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-00705e1c.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-18c3c961.entry.js → p-056955be.entry.js} +17 -17
- package/dist/genexus-ide-ui/p-056955be.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-3ff33154.entry.js → p-0620e8f2.entry.js} +33 -33
- package/dist/genexus-ide-ui/p-0620e8f2.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-4af50a00.entry.js → p-06c31f23.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-06c31f23.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-76fdea52.entry.js → p-0be24413.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-0be24413.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-8019e064.entry.js → p-0e4daeb7.entry.js} +11 -11
- package/dist/genexus-ide-ui/p-0e4daeb7.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-840c09d2.entry.js → p-123ef674.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-70cd77bc.entry.js → p-217bd2d7.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-217bd2d7.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-d6e7a813.entry.js → p-24247ec3.entry.js} +11 -11
- package/dist/genexus-ide-ui/p-24247ec3.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-af2f9983.entry.js → p-2b3f161f.entry.js} +21 -21
- package/dist/genexus-ide-ui/p-2b3f161f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-750eb88a.entry.js → p-34577955.entry.js} +9 -9
- package/dist/genexus-ide-ui/p-34577955.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-bdaae26a.entry.js → p-35c2a2f9.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-35c2a2f9.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-ee77b260.entry.js → p-37812762.entry.js} +8 -8
- package/dist/genexus-ide-ui/p-37812762.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-0a7cbbd0.entry.js → p-3bbdad29.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-3bbdad29.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-f05a137a.entry.js → p-42860e7e.entry.js} +71 -71
- package/dist/genexus-ide-ui/p-42860e7e.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-168d3c83.entry.js → p-4431f46f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-24cf1cd2.entry.js → p-4bafe061.entry.js} +39 -39
- package/dist/genexus-ide-ui/p-4bafe061.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-e4116b36.entry.js → p-4d7433e0.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-4d7433e0.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-dcfae3da.entry.js → p-4f58397f.entry.js} +53 -53
- package/dist/genexus-ide-ui/p-4f58397f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-2567883a.entry.js → p-508c4bee.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-8cee1076.entry.js → p-55cb0614.entry.js} +14 -14
- package/dist/genexus-ide-ui/p-55cb0614.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-6b430ac1.entry.js → p-5727fce7.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-5727fce7.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-520c3763.entry.js → p-572fdc25.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-572fdc25.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-a50c520c.entry.js → p-5864a82d.entry.js} +18 -18
- package/dist/genexus-ide-ui/p-5864a82d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-2a59b523.entry.js → p-60db2f02.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-60db2f02.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-178805d6.entry.js → p-632d3a74.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-632d3a74.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-36462e51.entry.js → p-63abf7e8.entry.js} +41 -41
- package/dist/genexus-ide-ui/p-63abf7e8.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-bb5a5c23.entry.js → p-69e7d46b.entry.js} +12 -12
- package/dist/genexus-ide-ui/p-69e7d46b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-1d3da80d.entry.js → p-7b76b0e4.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-7b76b0e4.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-875b8615.entry.js → p-83a7e6fb.entry.js} +6 -6
- package/dist/genexus-ide-ui/p-83a7e6fb.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js → p-886dc9c1.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-79d4490e.entry.js → p-90a50197.entry.js} +58 -58
- package/dist/genexus-ide-ui/p-90a50197.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-49c1d667.entry.js → p-90b2307f.entry.js} +7 -7
- package/dist/genexus-ide-ui/p-90b2307f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-38d3adf1.entry.js → p-944a589f.entry.js} +21 -21
- package/dist/genexus-ide-ui/p-944a589f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-ca47bb29.entry.js → p-98820155.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ca47bb29.entry.js.map → p-98820155.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-27786355.entry.js → p-98dbb43d.entry.js} +25 -25
- package/dist/genexus-ide-ui/p-98dbb43d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-b167052a.entry.js → p-9a10fa97.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d0e61bdc.entry.js → p-9ca0c042.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-9ca0c042.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-c31f9478.entry.js → p-aad714a5.entry.js} +31 -31
- package/dist/genexus-ide-ui/p-aad714a5.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-f61bde09.entry.js → p-af267991.entry.js} +49 -49
- package/dist/genexus-ide-ui/p-af267991.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-22c0058b.entry.js → p-b5f2603f.entry.js} +11 -11
- package/dist/genexus-ide-ui/p-b5f2603f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-0dfa813a.entry.js → p-b6d59827.entry.js} +16 -16
- package/dist/genexus-ide-ui/p-b6d59827.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-a8465dff.entry.js → p-c05dc058.entry.js} +5 -5
- package/dist/genexus-ide-ui/p-c05dc058.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-885e5d1c.entry.js → p-c2f2d79f.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-c2f2d79f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-14c82d16.entry.js → p-c3a355c6.entry.js} +48 -48
- package/dist/genexus-ide-ui/p-c3a355c6.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-1356ec09.entry.js → p-cd9e9e2b.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-cd9e9e2b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js → p-cdd2e79d.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js → p-d68412ac.entry.js} +8 -8
- package/dist/genexus-ide-ui/{p-b2966a6b.entry.js → p-d7964c12.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-8735d37c.entry.js → p-dbf9a97d.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-14823abe.entry.js → p-e0fb6257.entry.js} +9 -9
- package/dist/genexus-ide-ui/p-e0fb6257.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-734d5fa1.entry.js → p-e32f5b19.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-af3cc463.entry.js → p-e3ff125f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-899ec74e.entry.js → p-e883cd82.entry.js} +35 -35
- package/dist/genexus-ide-ui/p-e883cd82.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-e4c250eb.entry.js → p-ebb56b65.entry.js} +23 -23
- package/dist/genexus-ide-ui/p-ebb56b65.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-b44a875d.entry.js → p-f1b452fb.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-f1b452fb.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-ebfc64a5.entry.js → p-fb5dd0a2.entry.js} +10 -10
- package/dist/genexus-ide-ui/p-fb5dd0a2.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-392bdfaa.entry.js → p-fb64e0b1.entry.js} +20 -20
- package/dist/genexus-ide-ui/p-fb64e0b1.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-747fbbd8.entry.js → p-fdaeb19a.entry.js} +2 -2
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-0a7cbbd0.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-0dfa813a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-1356ec09.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-14823abe.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-14c82d16.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-178805d6.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-18c3c961.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-1d3da80d.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-22c0058b.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-24cf1cd2.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-27786355.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-2a59b523.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-36462e51.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-38d3adf1.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-392bdfaa.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-3ff33154.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-49c1d667.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-4af50a00.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-520c3763.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-5929f575.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-6b430ac1.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-70cd77bc.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-750eb88a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-76fdea52.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-79d4490e.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8019e064.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-875b8615.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-885e5d1c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-899ec74e.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8cee1076.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a50c520c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a8465dff.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-af2f9983.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-b44a875d.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-bb5a5c23.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-bdaae26a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-c31f9478.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-d0e61bdc.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-d6e7a813.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-dcfae3da.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-e4116b36.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-e4c250eb.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-ebfc64a5.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-ee77b260.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-f05a137a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-f61bde09.entry.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-840c09d2.entry.js.map → p-123ef674.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-168d3c83.entry.js.map → p-4431f46f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2567883a.entry.js.map → p-508c4bee.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js.map → p-886dc9c1.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b167052a.entry.js.map → p-9a10fa97.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js.map → p-cdd2e79d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js.map → p-d68412ac.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b2966a6b.entry.js.map → p-d7964c12.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-8735d37c.entry.js.map → p-dbf9a97d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-734d5fa1.entry.js.map → p-e32f5b19.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-af3cc463.entry.js.map → p-e3ff125f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-747fbbd8.entry.js.map → p-fdaeb19a.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ACTIVE_ITEM_DEFAULT_ICON","getIconPath","category","name","colorType","convertItemsNodeListToFlattenedTreeViewModel","itemsList","checkboxType","itemsListFlattenedTreeViewModel","processNode","item","startImgSrc","active","iconStart","leaf","_a","nodes","length","checkbox","metaData","JSON","stringify","versionType","type","push","caption","checked","endImgSrc","iconEnd","expanded","id","toString","items","metadata","parts","selected","order","forEach","childNode","convertItemsListToTreeViewModel","itemsListTreeViewModel","parseInt","findItemNode","itemNode","result","findItemInArray","itemsNodes","setAllLeafsCheckedFalse","uncheck","unselectAllNodes","unselect","checkItems","idsChecked","itemFind","expandItems","selectItems","idsSelected","searchInNode","node","parents","searchParentsItems","ids","rootItem","results","findFirstActiveNode","findActiveWithPath","nodeList","currentPath","nodePath","path","selectKbItemsCss","CSS_BUNDLES","SYSTEM_SEARCH_ICON","VIEW_AS_TREE_ID","VIEW_AS_LIST_ID","TOGGLE_CHECKBOXES_CHECKED_VALUE","GxIdeSelectKbItems","_GxIdeSelectKbItems__componentLocale","set","this","_GxIdeSelectKbItems_chShortcutsEl","_GxIdeSelectKbItems_selectedNodesIds","_GxIdeSelectKbItems_shortcutsSrc","getAssetPath","_GxIdeSelectKbItems_updatedModelList","_GxIdeSelectKbItems_viewItemsAsModel","_GxIdeSelectKbItems_treeViewRenderEl","_GxIdeSelectKbItems_cancelHandler","cancelCallback","_GxIdeSelectKbItems_checkedItemsChangeHandler","async","e","checkedNodesIds","detail","singleChecks","lastCheckedId","find","includes","__classPrivateFieldGet","updateItemsProperties","Array","from","keys","filter","__classPrivateFieldSet","checkedChanged","_GxIdeSelectKbItems_confirmHandler","confirmCallback","_GxIdeSelectKbItems_contextMenuHandler","itemContextMenuCallback","info","isSelected","clientX","contextmenuEvent","clientY","selection","_GxIdeSelectKbItems_executeDialogAction","callback","_GxIdeSelectKbItems_patternSearchValueChangedHandler","event","searchPatternValue","_GxIdeSelectKbItems_renderActionButtons","h","dialogActions","map","action","class","part","onClick","call","disabled","loading","_GxIdeSelectKbItems_renderFooter","footer","cancel","select","_GxIdeSelectKbItems_selectedItemsChangeHandler","selectedNodesIds","selectionChanged","_GxIdeSelectKbItems_toggleAndSelectNodesInModelItems","selectedItemsIds","nodesToToggle","newItemsSelected","newItemsExpanded","_GxIdeSelectKbItems_updateViews","_GxIdeSelectKbItems_toggleCheckedNodesInModelItems","newItemsList","nodeVersionsListTreeModel","nodeListFlattenedTreeModel","_GxIdeSelectKbItems_viewItemsAsChangedHandler","selectedViewType","nodesVersionsViewType","_GxIdeSelectKbItems_toggleCheckboxesChangedHandler","toggleCheckboxes","_GxIdeSelectKbItems_scrollIntoActiveVersionNode","doScrollIntoView","activeItemNode","scrollIntoVisible","activeItemCallback","componentWillLoad","Locale","getComponentStrings","el","showToggleCheckboxes","value","main","tree","renderFooter","_GxIdeSelectKbItems_instances","_GxIdeSelectKbItems_loadItems","reloadItems","suspendShortcuts","suspend","updateSelection","updateCheckedItems","checkedItemsIds","render","Host","widget","model","src","ref","htmlFor","onChange","checkedValue","onInput","showActiveItemLink","placeholder","header","searchPatternPlaceholder","accessibleName","containerRef","activeItem","useLoader","loaderTitle","loader","title","description","show","expandableButton","onItemContextmenu","onCheckedItemsChange","onSelectedItemsChange","expandOnClick","multiSelection","filterType","loadItemsCallback","error","console"],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType, ActiveNode } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath } from \"@genexus/mercury\";\n\nexport const ACTIVE_ITEM_DEFAULT_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"primary\"\n});\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: startImgSrc,\n endImgSrc: item.iconEnd,\n expanded: item.expanded,\n id: item.id.toString(),\n items: null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n selected: item.selected,\n order: item.order\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const expanded = item.expanded;\n const iconStart = startImgSrc;\n const iconEnd = item.iconEnd;\n const metaData = JSON.stringify({\n versionType: item.type\n });\n const order = parseInt(item.id);\n itemsListTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: iconStart,\n endImgSrc: iconEnd,\n expanded: expanded,\n id: item.id.toString(),\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n order: order,\n selected: item.selected\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n\n/**\n * Recursively searches for the first node with the active=true property\n * @param nodes Array of nodes to search through\n * @returns An object with caption, iconStart, and path to the first active node found, or null if none is found\n */\nexport const findFirstActiveNode = (nodes: ItemNode[]): ActiveNode | null => {\n // Helper function that keeps track of the path during recursion\n const findActiveWithPath = (\n nodeList: ItemNode[],\n currentPath: string[] = []\n ): ActiveNode | null => {\n // Base case: if nodes is undefined or empty\n if (!nodeList || nodeList.length === 0) {\n return null;\n }\n\n // Iterate through each node in the array\n for (const node of nodeList) {\n // Create a new path that includes the current node\n const nodePath = [...currentPath, node.id];\n\n // Check if the current node is active\n if (node.active === true) {\n return {\n caption: node.name,\n iconStart: node.iconStart,\n path: nodePath\n };\n }\n\n // If the node has children, search through them with the updated path\n if (node.nodes && node.nodes.length > 0) {\n const result = findActiveWithPath(node.nodes, nodePath);\n // If we find an active node in this subtree, return it immediately\n if (result !== null) {\n return result;\n }\n }\n }\n\n // No active node found in any of the nodes\n return null;\n };\n\n // Start the search with an empty path\n return findActiveWithPath(nodes);\n};\n",":host {\n --search-input-max-inline-size: 400px;\n display: grid;\n block-size: 100%;\n}\n:host(:not(.has-footer)) {\n grid-template-rows: max-content 1fr;\n}\n:host(.has-footer) {\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header.has-active-item {\n grid-area: header;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n &__first-row,\n &__second-row {\n display: grid;\n grid-auto-flow: column;\n }\n &__first-row {\n grid-auto-columns: max-content;\n }\n &__second-row {\n grid-template-columns:\n minmax(150px, var(--search-input-max-inline-size))\n max-content;\n\n &--one-row {\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size));\n }\n }\n}\n\n.active-item {\n background-color: var(--color-accent-surface-elevation-1);\n border-radius: 4px;\n padding: var(--control-padding-block) var(--control-padding-inline);\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n}\n.active-item {\n &__icon-container {\n display: contents;\n }\n &__icon {\n pointer-events: none; // We do not want the icon to change the colors, since the clickable area is the caption only\n }\n &__link {\n text-decoration: underline;\n // TODO: There should be a class in Merucry to apply link styles\n color: var(--color-text-primary-default);\n cursor: pointer;\n &:hover {\n color: var(--color-text-primary-hover);\n }\n &:active {\n color: var(--color-text-primary-pressed);\n }\n }\n}\n\n.trees {\n position: relative;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes,\n findFirstActiveNode\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nimport { ACTIVE_ITEM_DEFAULT_ICON } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n #viewItemsAsModel: RadioGroupItemModel[];\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n\n /**\n * Represents the active version node caption and icon (if any)\n */\n @State() activeItemNode: ActiveNode;\n\n /**\n * Represents the selected nodes ids\n */\n @State() checkedNodesIds: string[] = [];\n\n /**\n * If true, the footer will be rendered\n */\n @State() renderFooter: boolean = false;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean;\n\n /**\n * Represents the itemLis list model\n */\n @State() itemsList: ItemNode[] = [];\n\n /**\n * Callback emitted when the user clicks on the \"Active item\"\n */\n @Prop() readonly activeItemCallback?: () => Promise<void>;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Define if a item node is expanded on click interaction. If false item-node will only be expanded on double click.\n */\n @Prop() readonly expandOnClick: boolean = true;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Callback to load the items list model\n */\n @Prop() readonly loadItemsCallback!: () => Promise<ItemNode[]>;\n\n /**\n * Used to define if the component must show the \"Toggle Checkboxes\" option or not\n */\n @Prop() readonly showToggleCheckboxes: boolean = true;\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * This define if the checks are unique or not\n */\n @Prop() readonly singleChecks?: boolean = false;\n\n /**\n * Used to define if the component must show the \"Active item\" link or not\n */\n @Prop() readonly showActiveItemLink?: boolean = false;\n\n /**\n * Defines whether to show a loader while loading items\n */\n @Prop() readonly useLoader?: boolean = true;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.toggleCheckboxes = this.showToggleCheckboxes;\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.renderFooter =\n this.dialogActions.length > 0 ||\n !!this.cancelCallback ||\n !!this.confirmCallback;\n\n this.#loadItems();\n }\n\n @Method()\n async reloadItems() {\n await this.#loadItems();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n /**\n * Allow to update the checked items\n */\n @Method()\n async updateCheckedItems(checkedItemsIds: string[]) {\n // first clear checks\n this.#treeViewRenderEl.updateItemsProperties(this.checkedNodesIds, {\n checked: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(checkedItemsIds, {\n checked: true\n });\n this.checkedNodesIds = checkedItemsIds;\n }\n\n async #loadItems() {\n try {\n this.loading = true;\n this.itemsList = await this.loadItemsCallback();\n this.#updateViews(this.itemsList);\n // Check and update activeItem\n this.activeItemNode = findFirstActiveNode(this.itemsList);\n } catch (error) {\n console.error(\"Error loading items:\", error);\n } finally {\n this.loading = false;\n }\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n let checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n if (node.item.checked) {\n checkedNodesIds.push(node.item.id);\n }\n });\n\n if (this.singleChecks) {\n // Detect the last change by comparing previous and new state\n let lastCheckedId: string | null = null;\n // If there are more in the new state, it was a check; if less, it was an uncheck\n if (checkedNodesIds.length > this.checkedNodesIds.length) {\n // Find the newly checked item\n lastCheckedId =\n checkedNodesIds.find(id => !this.checkedNodesIds.includes(id)) ||\n null;\n } else if (checkedNodesIds.length < this.checkedNodesIds.length) {\n // Find the unchecked item (not used in single check, but kept for clarity)\n lastCheckedId =\n this.checkedNodesIds.find(id => !checkedNodesIds.includes(id)) ||\n null;\n }\n\n // Only allow one if multiChecks is false\n if (this.singleChecks && checkedNodesIds.length > 1) {\n // If we detected the last checked, keep it; otherwise, keep the first\n checkedNodesIds = lastCheckedId\n ? [lastCheckedId]\n : [checkedNodesIds[0]];\n // Uncheck the others\n this.#treeViewRenderEl.updateItemsProperties(\n Array.from(e.detail.keys()).filter(id => id !== checkedNodesIds[0]),\n { checked: false }\n );\n }\n }\n\n this.checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n disabled={this.loading}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer dialog-footer-with-border spacing-body-inline spacing-body-block-end dialog-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n disabled={this.loading || this.checkedNodesIds?.length === 0}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n #scrollIntoActiveVersionNode = async () => {\n const doScrollIntoView =\n this.#treeViewRenderEl && this.activeItemNode?.path;\n if (doScrollIntoView) {\n await this.#treeViewRenderEl.scrollIntoVisible(this.activeItemNode.path);\n }\n\n if (this.activeItemCallback) {\n await this.activeItemCallback();\n }\n };\n\n render() {\n return (\n <Host class={{ \"widget\": true, \"has-footer\": this.renderFooter }}>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header\n part=\"header\"\n class=\"header dialog-header field-group spacing-body-block-start spacing-body-inline\"\n >\n <div class=\"header__first-row field-group\">\n <div class=\"field field-inline\">\n <span>\n {/*\n WA: this span prevents field-inline applying padding-block-start on the label\n TODO: See how to ignore padding-block-start when using field-inline with a control\n that is not an input, combo-box, etc..\n */}\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n </span>\n <ch-radio-group-render\n class=\"radio-group dummy-control-block-size\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n {this.checkboxType !== \"none\" && this.showToggleCheckboxes && (\n <ch-checkbox\n class=\"checkbox dummy-control-block-size\"\n caption=\"Toggle Checkboxes\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n )}\n </div>\n\n <div\n class={{\n \"field-group\": true,\n \"header__second-row\": true,\n \"header__second-row--one-row\": !this.showActiveItemLink\n }}\n >\n <ch-edit\n class=\"input\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n accessibleName=\"search pattern\"\n ></ch-edit>\n {this.activeItemNode && this.showActiveItemLink && (\n <div class=\"active-item\">\n <span\n class=\"active-item__icon-container\"\n // make this span the icon container, to prevent icon state changes when\n // interacting with div.active-item\n >\n <ch-image\n class=\"icon-m active-item__icon\"\n src={\n this.activeItemNode.iconStart ||\n ACTIVE_ITEM_DEFAULT_ICON\n }\n containerRef={null}\n ></ch-image>\n </span>\n {this.#_componentLocale.header.activeItem}\n <button\n class=\"active-item__link\"\n onClick={this.#scrollIntoActiveVersionNode}\n >\n {this.activeItemNode.caption}\n </button>\n </div>\n )}\n </div>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n {this.useLoader && this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n expandOnClick={this.expandOnClick}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n )}\n </div>\n {this.renderFooter && this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n active?: boolean;\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n iconStart?: string;\n iconEnd?: string;\n id: string;\n name: string;\n guid?: string;\n nodes?: ItemNode[];\n parts?: string;\n selected?: boolean;\n type?: ItemType;\n order?: number;\n};\n\nexport type ActiveNode = {\n caption: string;\n iconStart?: string;\n path: string[]; // for using the scrollIntoVisible method of the tree-view-render\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["startingTemplateCss","CSS_BUNDLES","SYSTEM_ICON","getIconPath","category","name","colorType","GxIdeStartingTemplate","_GxIdeStartingTemplate_chShortcutsEl","set","this","_GxIdeStartingTemplate_shortcutsSrc","getAssetPath","_GxIdeStartingTemplate_cancelButtonClickedHandler","cancelCallback","_GxIdeStartingTemplate_saveButtonClickedHandler","saveCallback","firstNameChanged","newValue","console","log","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidLoad","suspendShortcuts","__classPrivateFieldGet","suspend","render","h","Host","class","model","src","ref","__classPrivateFieldSet","htmlFor","main","firstName","id","value","onClick","part","footer","btnCancel","btnSave"],"sources":["src/components/_starting-template/starting-template.scss?tag=gx-ide-starting-template&encapsulation=shadow","src/components/_starting-template/starting-template.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n // section is just for semantics if a header is present\n display: contents;\n}\n\n// header\n.header {\n}\n\n// main\n.main {\n overflow: auto;\n // The following styles are just to center the text.\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n// footer\n.footer {\n}\n","// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport {\n Component,\n Host,\n Prop,\n Element,\n State,\n getAssetPath,\n Method,\n h,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"components/edit\",\n \"components/button\",\n \"components/icon\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst SYSTEM_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"on-primary\"\n});\n\n@Component({\n tag: \"gx-ide-starting-template\",\n styleUrl: \"starting-template.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/starting-template\"]\n})\nexport class GxIdeStartingTemplate {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeStartingTemplateElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-kb/shortcuts.json`);\n\n /**\n * Description of my state variable.\n */\n @State() myStateVariable: string;\n\n /**\n * Description of my prop variable.\n */\n @Prop() readonly firstName: string;\n @Watch(\"firstName\")\n firstNameChanged(newValue: string[]) {\n console.log(\"First name changed:\", newValue);\n }\n\n /**\n * Callback that will be invoked when the user cancels.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback that will be invoked when the user saves.\n */\n @Prop() readonly saveCallback!: SaveCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n // Here you can do any additional setup after the component has been rendered.\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #cancelButtonClickedHandler = () => {\n this.cancelCallback();\n };\n\n #saveButtonClickedHandler = () => {\n this.saveCallback();\n };\n\n render() {\n return (\n <Host class=\"widget spacing-body\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header dialog-header dialog-header-with-border\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"first-name\">\n {this._componentLocale.main.firstName}\n </label>\n <ch-edit class=\"input\" id=\"first-name\" value={this.firstName} />\n </div>\n </header>\n\n <div class=\"main\">The main content here</div>\n\n <footer class=\"footer dialog-footer dialog-footer-with-border\">\n <div class=\"buttons-spacer\">\n <button\n // #cancel\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelButtonClickedHandler}\n part=\"button-cancel\"\n >\n {this._componentLocale.footer.btnCancel}\n </button>\n <button\n // #create\n class=\"button-primary button-icon-and-text\"\n id=\"button-create\"\n onClick={this.#saveButtonClickedHandler}\n part=\"button-create\"\n >\n <ch-image class=\"icon-m\" src={SYSTEM_ICON}></ch-image>\n {this._componentLocale.footer.btnSave}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"],"mappings":";;;;;;;;;;;;;;AAAA,MAAMA,IAAsB;;;;;;;;;;;;;;;;;;;ACmB5B,MAAMC,IAA8B;;AAElC,qBACA,mBACA,qBACA,mBACA,gBACA,cACA,oBACA,iBACA;;AAGF,MAAMC,IAAcC,EAAY;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;MASAC,IAAqB;;;IAKhCC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAAgBE,EAAa;IA8C7BC,EAAAJ,IAAAC,OAA8B;MAC5BA,KAAKI;AAAgB;IAGvBC,EAAAN,IAAAC,OAA4B;MAC1BA,KAAKM;AAAc;;;;;;EAvCrB,gBAAAC,CAAiBC;IACfC,QAAQC,IAAI,uBAAuBF;;EAarC,uBAAMG;IACJX,KAAKY,yBAAyBC,EAAOC,oBAAoBd,KAAKe;;EAGhE,gBAAAC;;;;;SAQA,sBAAMC,CAAiBA;IACrB,IAAIA,GAAkB;MACpBC,EAAAlB,MAAIF,GAAA,KAAgBqB,UAAU;WACzB;MACLD,EAAAlB,MAAIF,GAAA,KAAgBqB,UAAU;;;EAYlC,MAAAC;IACE,OACEC,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAUG,OAAOjC;QACjB8B,EAAA;MACEI,KAAKP,EAAAlB,MAAIC,GAAA;MACTyB,KAAMX,KACHY,EAAA3B,MAAIF,GAAkBiB,GAA4B;QAGvDM,EAAA;MAASE,OAAM;OACbF,EAAA;MAAQE,OAAM;OACZF,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAOE,OAAM;MAAQK,SAAQ;OAC1B5B,KAAKY,iBAAiBiB,KAAKC,YAE9BT,EAAA;MAASE,OAAM;MAAQQ,IAAG;MAAaC,OAAOhC,KAAK8B;UAIvDT,EAAA;MAAKE,OAAM;OAAM,0BAEjBF,EAAA;MAAQE,OAAM;OACZF,EAAA;MAAKE,OAAM;OACTF,EAAA;;MAEEE,OAAM;MACNQ,IAAG;MACHE,SAASf,EAAAlB,MAAIG,GAAA;MACb+B,MAAK;OAEJlC,KAAKY,iBAAiBuB,OAAOC,YAEhCf,EAAA;;MAEEE,OAAM;MACNQ,IAAG;MACHE,SAASf,EAAAlB,MAAIK,GAAA;MACb6B,MAAK;OAELb,EAAA;MAAUE,OAAM;MAASE,KAAKjC;QAC7BQ,KAAKY,iBAAiBuB,OAAOE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["clearGridSelection","gridSource","selectedRowsIds","pendingIdsSet","ignoredIdsSet","gridReference","filteredSelectedRowsIds","length","forEach","async","selectedRowId","has","selectRow","push","headerDetail","type","caption","description","callback","cssClass","h","class","onClick","headerTitle","changesetToComboBoxModel","changesetModel","map","changeset","value","id","name","label","foldersToComboBoxModel","foldersModel","folder","typesToComboBoxItemModel","objectTypeModel","objectType","startImgSrc","icon","commitCss","FILTER_SECONDARY_CONTAINER_ID","FILTER_SECONDARY_BUTTON_ID","CSS_BUNDLES","GxIdeTeamDevCommit","_GxIdeTeamDevCommit_componentLocale","set","this","_GxIdeTeamDevCommit_localStatesComboBoxModel","_GxIdeTeamDevCommit_rowCheckedChangedByTheUser","_GxIdeTeamDevCommit_chGridPendingForUpdateEl","_GxIdeTeamDevCommit_commitCheckedClickedHandler","__classPrivateFieldGet","_GxIdeTeamDevCommit_commitObjectsHandler","call","markedObjectsSet","_GxIdeTeamDevCommit_commitSingleObject","objectId","newobjectsStatusMap","Map","objectsStatusMap","selection","commentsValue","commentInputHasError","committing","itemToUpdate","commitResult","commitCallback","objectResult","messages","objectsMessagesDataMap","delete","result","alreadyCommittedObjectsIdsSet","Set","markRow","_GxIdeTeamDevCommit_rowMarkingChangedHandler","event","markedRowsIds","detail","rowsId","filter","markedObjectId","_GxIdeTeamDevCommit_updatePendingCheckedItems","_GxIdeTeamDevCommit_rowSelectionChangedHandler","firstSelectedRowId","selectCallback","_GxIdeTeamDevCommit_commentsInputHandler","_GxIdeTeamDevCommit_applyClientFilter","pendingObjectsAfterFilter","_GxIdeTeamDevCommit_filteredObjects","pendingAndIgnored","pendingForCommit","ignoredObjectsAfterFilter","ignoredObjects","objects","filtered","searchValue","object","nameFiltered","toLowerCase","includes","descriptionFiltered","selectedState","ALL_VALUE","state","_GxIdeTeamDevCommit_evaluateSecondaryFilterHasConditions","selectedFolder","filterSecondaryHasConditions","_GxIdeTeamDevCommit_toggleFiltersHandler","filterSecondaryIsHidden","_GxIdeTeamDevCommit_searchInputHandler","trim","_GxIdeTeamDevCommit_typeChangedHandler","selectedType","_GxIdeTeamDevCommit_loadData","_GxIdeTeamDevCommit_stateChangedHandler","_GxIdeTeamDevCommit_folderChanged","_GxIdeTeamDevCommit_onRowContextMenuHandler","ev","preventDefault","stopPropagation","getSelectedRows","objectsContextMenuCallback","clientX","clientY","__classPrivateFieldSet","addedRowsIds","addedRowsId","removedRowsId","pendingItemCheckedResult","pendingItemsCheckedCallback","itemsChecked","itemsUnchecked","undefined","_GxIdeTeamDevCommit_revertPendingCommitsCheckboxes","_GxIdeTeamDevCommit_togglePendingCommitsCheckboxes","_a","_GxIdeTeamDevCommit_setInitialObjectsStatus","pendingObject","status","ignoredObject","loading","loadCallback","search","selectedChangeset","category","selectedCategory","_GxIdeTeamDevCommit_markPendingObjects","pendingId","rowId","itemsToToggle","itemsToCheck","itemsToUncheck","_GxIdeTeamDevCommit_sortTabularGridColumnCallback","e","columnId","objectProperty","dateType","COLUMNS_IDS","modifiedOn","lastSynchronized","sortTabularGridColumn","_GxIdeTeamDevCommit_columnSelectorClickedCallback","allRowsChecked","getMarkedRows","ignoredMarkedRowsIds","uncheckIgnoredObjects","alreadyCommittedObjectsIdsSetChanged","newCommittedObjectsIdsSet","pendingIdsSetAndCommittedIdsSetAreEqual","areSetsEqual","allPendingAreCommitted","size","markedObjectsSetChanged","newMarkedObjectsSet","atLeastOneObjectIsChecked","objectsStatusMapChanged","newObjectsStatusMap","someObjectIsUpdating","entries","find","pendingAndIgnoredChanged","newPendingAndIgnored","clear","pending","add","_b","ignored","typesChanged","newTypes","typesComboBoxModel","changesetChanged","newChangesetOptions","changesetsComboBoxModel","folderChanged","newFolderOptions","foldersComboBoxModel","componentWillLoad","Locale","getComponentStrings","el","states","all","inserted","modified","conflicted","deleted","types","folders","componentDidLoad","reload","disableCommit","isCommitDisabled","render","disableControls","gridIsEmpty","filterIcon","ICONS","filterWithConditions","commitButtonEnabled","Host","model","CLASSES","HEADER","HEADER_DETAILS","commitDetail","title","genexusServer","serverDetails","serverUrl","openServerCallback","knowledgeBase","kbName","version","versionName","FILTER","disabled","accessibleName","searchAccessibleName","placeholder","searchPlaceholder","onInput","typeAccesibleName","typePlaceholder","localStateAccesibleName","localStatePlaceholder","secondaryFilterAriaLabel","src","refresh","commit","inert","hidden","folderAccesibleName","folderPlaceholder","multiline","autoGrow","commitCommentPlaceholder","MAIN","keyboardNavigationMode","rowSelectionMode","onSelectionChanged","onRowMarkingChanged","onRowContextMenu","ref","renderTabularGridColumns","pendingCommits","renderTabularGridRows","updatePillAsButton","isAnimated","stateIconSrc","stateTitle","cancelLabel","loader","loaderTitle","show"],"sources":["src/components/team-dev/version-control/common/clear-grid-selection.ts","src/components/team-dev/version-control/common/header-renders.tsx","src/components/team-dev/version-control/commit/utilities/changeset-to-combo-box.ts","src/components/team-dev/version-control/commit/utilities/folders-to-combo-box.ts","src/components/team-dev/version-control/commit/utilities/types-to-combo-box.ts","src/components/team-dev/version-control/commit/commit.scss?tag=gx-ide-team-dev-commit&encapsulation=shadow","src/components/team-dev/version-control/commit/commit.tsx"],"sourcesContent":["import { SourceType } from \"./types\";\n\n/**\n * Filters a grid selection to only include rows from the given source (\"pending\" or \"ignored\").\n * Rows from the other category are unselected.\n *\n * @param {SourceType} gridSource - The source category of the selection.\n * @param {string[]} selectedRowsIds - The currently selected row IDs.\n * @returns {string[]} Filtered row IDs belonging to the specified source.\n */\nconst clearGridSelection = (\n gridSource: SourceType,\n selectedRowsIds: string[],\n pendingIdsSet: Set<string>,\n ignoredIdsSet: Set<string>,\n gridReference: HTMLChTabularGridElement\n): string[] => {\n let filteredSelectedRowsIds: string[] = [];\n if (selectedRowsIds.length > 1 && gridSource === \"pending\") {\n selectedRowsIds.forEach(async selectedRowId => {\n if (ignoredIdsSet.has(selectedRowId)) {\n await gridReference.selectRow(selectedRowId, false);\n } else {\n filteredSelectedRowsIds.push(selectedRowId);\n }\n });\n } else if (selectedRowsIds.length > 1 && gridSource === \"ignored\") {\n selectedRowsIds.forEach(async selectedRowId => {\n if (pendingIdsSet.has(selectedRowId)) {\n await gridReference.selectRow(selectedRowId, false);\n } else {\n filteredSelectedRowsIds.push(selectedRowId);\n }\n });\n } else {\n filteredSelectedRowsIds = selectedRowsIds;\n }\n return filteredSelectedRowsIds;\n};\n\nexport default clearGridSelection;\n","import { h, JSX } from \"@stencil/core\";\n\nconst headerDetail = (\n type: \"text\" | \"link\" = \"text\",\n caption: string,\n description: string,\n callback?: () => void,\n cssClass?: string\n): JSX.Element => {\n return (\n <div class={{ [cssClass]: true, \"field field-block\": true }}>\n <span class=\"detail__label body-semi-bold-s\">{caption}</span>\n {type === \"text\" ? (\n <p class=\"body-regular-s\">{description}</p>\n ) : (\n <button class=\"detail__link body-regular-s\" onClick={callback}>\n {description}\n </button>\n )}\n </div>\n );\n};\nexport default headerDetail;\n\nexport const headerTitle = (caption: string, cssClass?: string) => {\n return (\n <h2\n class={{ [cssClass]: true, \"header__title subtitle-semi-bold-s\": true }}\n >\n {caption}\n </h2>\n );\n};\n\nexport const headerSubtitle = (caption: string, cssClass?: string) => {\n return (\n <p\n class={{ [cssClass]: true, \"detail__title subtitle-semi-bold-xs\": true }}\n >\n {caption}\n </p>\n );\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../../../../components\";\n\nexport const changesetToComboBoxModel = (\n changesetModel: GxOption[]\n): ComboBoxModel => {\n if (!changesetModel) return [];\n\n return changesetModel.map(changeset => ({\n value: changeset.id,\n caption:\n changeset.name === \"All\"\n ? \"All Changesets\"\n : changeset.label || changeset.name || \"\"\n }));\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../../../../components\";\n\nexport const foldersToComboBoxModel = (\n foldersModel: GxOption[]\n): ComboBoxModel =>\n foldersModel.map(folder => ({\n value: folder.name,\n caption:\n folder.name === \"All\" ? \"All Modules\" : folder.label || folder.name || \"\"\n }));\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../../../components\";\n\nexport const typesToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxModel =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name === \"All\" ? \"All Types\" : objectType.name || \"\",\n startImgSrc: objectType.icon\n }));\n","@use \"../common/common.scss\" as *;\n@import \"../../common/styles.scss\";\n@import \"../../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../../global/gx-ide-mixins.scss\";\n\n// header detail\n.header__details {\n grid-template-areas:\n \"detail-heading-gx . . .\"\n \"detail-genexus-server detail-knowledge-base detail-version detail-last-full-update\";\n}\n\n.detail__heading-genexus-server {\n grid-area: detail-heading-gx;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-detail-start;\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-detail-common;\n}\n.detail__version {\n grid-area: detail-version;\n @extend %header-detail-end;\n}\n\n// filter\n.filter-container {\n container-type: inline-size;\n box-sizing: border-box;\n display: grid;\n column-gap: var(--spacing-gap-l);\n grid-template-areas:\n \"filter-primary filter-toggle-button filter-action-buttons\"\n \"filter-secondary . .\"\n \"comments comments comments\";\n grid-template-columns: minmax(0, max-content) max-content 1fr;\n}\n.filter {\n @extend %filter;\n}\n.filter-primary {\n grid-area: filter-primary;\n grid-template-columns: $filterControlInlineSize $filterControlInlineSize $filterControlInlineSize;\n}\n.filter-container > :nth-child(2) {\n grid-area: filter-toggle-button;\n}\n.filter-container > :nth-child(3) {\n grid-area: filter-action-buttons;\n justify-content: end;\n}\n.filter__toggle-secondary-filter-btn {\n grid-area: filter-toggle-button;\n}\n\n.filter__buttons {\n grid-area: filter-buttons;\n margin-inline-start: auto;\n}\n\n// secondary filter (hidden by default)\n.filter-secondary {\n display: grid;\n grid-template-rows: 0fr;\n grid-area: filter-secondary;\n transition: grid-template-rows var(--timing-fast);\n}\n.filter-secondary--visible {\n grid-template-rows: 1fr;\n}\n.filter-secondary > div {\n @extend %filter;\n display: grid;\n overflow: hidden;\n font-size: 0; // WA Remove unwanted additional space\n grid-template-columns: repeat(3, $filterControlInlineSize);\n}\n\n.filter-secondary > div > .combo-box,\n.comments {\n margin-block-start: $filterRowGap;\n}\n.comments {\n grid-area: comments;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control-border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--color-accent-surface-surface);\n transition:\n var(--timing-super-fast) block-size,\n var(--timing-super-fast) background-color,\n var(--timing-super-fast) padding-block,\n var(--timing-super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: $filterControlInlineSize;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--color-accent-surface-elevation-1);\n padding-block: var(--control-padding-block) !important;\n padding-inline: var(--control-padding-inline) !important;\n}\n","// stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Watch\n} from \"@stencil/core\";\n\n// external libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridColumnSelectorClickedEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\n\n// local\nimport { Locale } from \"../../../../common/locale\";\nimport {\n GxOption,\n ItemsCheckedResult,\n ObjectType\n} from \"../../../../common/types\";\nimport clearGridSelection from \"../common/clear-grid-selection\";\nimport areSetsEqual from \"../common/are-sets-equal\";\nimport uncheckIgnoredObjects from \"../common/uncheck-ignored\";\n\nimport type {\n StateForFilter,\n StatusInternal,\n MessageData,\n ModifiedObjectData,\n CommitData,\n CommitCallback,\n ContextMenuCallback,\n LoadLocalChangesCallback,\n PendingItemsCheckedCallback,\n SelectCallback,\n ServerDetails,\n SourceType\n} from \"../common/types\";\n\nimport headerDetail, { headerTitle } from \"../common/header-renders\";\nimport { changesetToComboBoxModel } from \"./utilities/changeset-to-combo-box\";\nimport { foldersToComboBoxModel } from \"./utilities/folders-to-combo-box\";\nimport { typesToComboBoxItemModel } from \"./utilities/types-to-combo-box\";\nimport renderTabularGridRows, {\n renderTabularGridColumns,\n COLUMNS_IDS\n} from \"../common/tabular-grid-render\";\nimport sortTabularGridColumn, {\n type SortTabularGridColumnDataType\n} from \"../../../../common/chameleon/tabular-grid-column-sort\";\n\nimport { CSS_SELECTORS as CLASSES, ALL_VALUE } from \"../common/constants\";\nimport ICONS from \"../common/constants\";\n\nconst FILTER_SECONDARY_CONTAINER_ID = \"filters-secondary-container\";\nconst FILTER_SECONDARY_BUTTON_ID = \"filter-toggle-button\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-team-dev-commit\",\n styleUrl: \"commit.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-commit\"]\n})\nexport class GxIdeTeamDevCommit {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n /**\n * The ComboBoxModel for \"Local State\" filter.\n */\n #localStatesComboBoxModel: { caption: string; value: StateForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be\n * called or not. It should be ignored if the grid checkboxes state is\n * changed programmatically, by setting markRow to false once the object\n * has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevCommitElement;\n\n /**\n * A reference to the tablar grid. Used to call methods.\n */\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // sets\n\n /**\n * A boolean that indicates if all the pending objects, have been committed\n * already.\n */\n @State() allPendingAreCommitted: boolean = false;\n\n /**\n * A set that holds the id's of the objects that have been committed already.\n */\n @State() alreadyCommittedObjectsIdsSet: Set<string> = new Set<string>([]);\n @Watch(\"alreadyCommittedObjectsIdsSet\")\n alreadyCommittedObjectsIdsSetChanged(newCommittedObjectsIdsSet: Set<string>) {\n const pendingIdsSetAndCommittedIdsSetAreEqual = areSetsEqual(\n newCommittedObjectsIdsSet,\n this.pendingIdsSet\n );\n\n this.allPendingAreCommitted =\n pendingIdsSetAndCommittedIdsSetAreEqual && this.pendingIdsSet.size > 0;\n }\n\n /**\n * A set that holds the ids of all the ignored objects. Used to quickly\n * determine if the selected rows belong to \"ignored\" or not. This\n * information is required for the ContextMenuCallback. This set\n * has to be updated on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly\n * determine if the selected rows belong to \"pending\" or \"ignored\". This\n * information is required for the ContextMenuCallback. This set\n * has to be updated after every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that stores the marked state of each row. This is\n * required because filtering the grid causes marked cells to lose\n * their marked state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>([]);\n @Watch(\"markedObjectsSet\")\n markedObjectsSetChanged(newMarkedObjectsSet: Set<string>) {\n this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;\n }\n\n // maps\n\n /**\n * A map that holds the current state of every row (\"inserted\" |\n * \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" |\n * \"update\")\n */\n @State() objectsStatusMap: Map<string, StatusInternal> = new Map();\n @Watch(\"objectsStatusMap\")\n objectsStatusMapChanged(newObjectsStatusMap: Map<string, StatusInternal>) {\n const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(\n ([, state]) => state === \"committing\"\n );\n\n if (!someObjectIsUpdating) {\n this.committing = false;\n }\n }\n\n /**\n * A map that holds object messages, after trying to commit ('info' |\n * 'success' | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n // boolean\n\n /**\n * It holds a boolean indicating if at least one object from the\n * tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * A boolean to indicate if the comments input has error or not.\n */\n @State() commentInputHasError: boolean = false;\n\n /**\n * Set to true when objects are being committed. This helps disabling\n * controls until all objects are done.\n */\n @State() committing: boolean = false;\n\n /**\n * Hides or shows the filter secondary controls\n */\n @State() filterSecondaryIsHidden = true;\n\n /**\n * Indicates if any of the filter secondary controls have a condition\n * (have a value other than default \"All\"). This changes the filter\n * toggle button icon, from \"filter\" to \"filterWithConditions\".\n */\n @State() filterSecondaryHasConditions = false;\n\n /**\n * Used to display a loader. Set to true when loadCallback is called.\n */\n @State() loading: boolean = true;\n\n // models\n\n /**\n * changeset options as ComboBoxModel\n */\n @State() changesetsComboBoxModel: ComboBoxModel;\n\n /**\n * categories options as ComboBoxModel\n */\n // @State() categoriesComboBoxModel: ComboBoxModel;\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * The ComboBoxModel for \"Types\" filter.\n */\n @State() typesComboBoxModel: ComboBoxModel = [];\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before\n * \"state\" filter\n */\n @State() pendingAndIgnored: CommitData = {\n pendingForCommit: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged(newPendingAndIgnored: CommitData) {\n // clear previous state\n this.pendingIdsSet.clear(); // before pendingIdsSet.add\n this.ignoredIdsSet.clear(); // before ignoredIdsSet.add\n this.objectsMessagesDataMap = new Map();\n this.alreadyCommittedObjectsIdsSet = new Set();\n this.commentInputHasError = false;\n this.markedObjectsSet = new Set(); // before #markPendingObjects\n\n newPendingAndIgnored.pendingForCommit?.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n newPendingAndIgnored.ignoredObjects?.forEach(ignored => {\n this.ignoredIdsSet.add(ignored.id);\n });\n\n this.#markPendingObjects(); // after pendingIdsSet.add and ignoredIdsSet.add\n this.#setInitialObjectsStatus(); // after pendingIdsSet.add and ignoredIdsSet.add\n\n this.#applyClientFilter();\n }\n\n // current values\n\n /**\n * Holds the current value for the commit \"comments\"\n */\n @State() commentsValue: string = \"\";\n\n /**\n * The current search filter value.\n */\n @State() searchValue: string = \"\";\n\n /**\n * Holds the current value for the \"type\" filter\n */\n @State() selectedType: string;\n\n /**\n * Holds the current value for the \"local state\" filter\n */\n @State() selectedState: StateForFilter = ALL_VALUE;\n\n /**\n * Holds the current value for the \"changeset\" filter\n */\n @State() selectedChangeset: string;\n\n /**\n * Holds the current value for the \"folder\" filter\n */\n @State() selectedFolder: string;\n\n /**\n * Holds the current value for the \"category\" filter\n */\n @State() selectedCategory: string;\n\n /**\n * folder options as ComboBoxModel\n */\n @State() foldersComboBoxModel: ComboBoxModel;\n\n /**\n * Indicates if the commit button should be disabled\n */\n @State() isCommitDisabled: boolean = false;\n\n // callbacks\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback: CommitCallback;\n\n /**\n * Invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly objectsContextMenuCallback!: ContextMenuCallback;\n\n /**\n * Invoked to return the list of local changes\n */\n @Prop() readonly loadCallback!: LoadLocalChangesCallback;\n\n /**\n * Invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Invoked when the user selects rows from the grid\n */\n @Prop() readonly selectCallback: SelectCallback;\n\n // models\n\n /**\n * \"types\" options for the filter.\n */\n @Prop() readonly types: ObjectType[];\n @Watch(\"types\")\n typesChanged(newTypes: ObjectType[]) {\n this.typesComboBoxModel = typesToComboBoxItemModel(newTypes);\n }\n\n /**\n * \"changeset\" options for the filter.\n */\n @Prop() readonly changeset: GxOption[];\n @Watch(\"changeset\")\n changesetChanged(newChangesetOptions: GxOption[]) {\n this.changesetsComboBoxModel =\n changesetToComboBoxModel(newChangesetOptions);\n }\n\n /**\n * \"folder\" options for the filter.\n */\n @Prop() readonly folders: GxOption[];\n @Watch(\"folders\")\n folderChanged(newFolderOptions: GxOption[]) {\n this.foldersComboBoxModel = foldersToComboBoxModel(newFolderOptions);\n }\n\n /**\n * \"category\" options for the filter.\n */\n // @Prop() readonly categories: GxOption[];\n // @Watch(\"categories\")\n // categoryChanged(newCategoryOptions: GxOption[]) {\n // this.categoriesComboBoxModel =\n // categoriesToComboBoxModel(newCategoryOptions);\n // }\n\n // boolean\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill,\n * only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly serverDetails: ServerDetails;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#localStatesComboBoxModel = [\n {\n caption: this.#componentLocale.states.all,\n value: ALL_VALUE\n },\n {\n caption: this.#componentLocale.states.inserted,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.states.modified,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.states.conflicted,\n value: \"conflicted\"\n },\n {\n caption: this.#componentLocale.states.deleted,\n value: \"deleted\"\n }\n ];\n\n // intialize combo-box models\n\n this.typesComboBoxModel = typesToComboBoxItemModel(this.types);\n this.selectedType = this.typesComboBoxModel[0].value;\n\n this.selectedState = this.#localStatesComboBoxModel[0].value;\n\n this.changesetChanged(this.changeset);\n this.selectedChangeset =\n this.changesetsComboBoxModel.length > 0\n ? this.changesetsComboBoxModel[0].value\n : ALL_VALUE;\n\n this.folderChanged(this.folders);\n this.selectedFolder =\n this.foldersComboBoxModel && this.foldersComboBoxModel.length > 0\n ? this.foldersComboBoxModel[0].value\n : ALL_VALUE;\n\n // this.categoryChanged(this.categories);\n // this.selectedCategory =\n // this.categoriesComboBoxModel.length > 0\n // ? this.categoriesComboBoxModel[0].value\n // : ALL_VALUE;\n\n this.#evaluateSecondaryFilterHasConditions();\n }\n\n async componentDidLoad() {\n await this.#loadData();\n\n // initialize \"allPendingAreCommitted\"\n this.alreadyCommittedObjectsIdsSetChanged(\n this.alreadyCommittedObjectsIdsSet\n );\n }\n\n /**\n * Used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n await this.#loadData();\n }\n\n /**\n * Used by the host to instruct the component to disable the commit button.\n */\n @Method()\n async disableCommit(value: boolean) {\n this.isCommitDisabled = value;\n }\n\n // commit related\n\n #commitCheckedClickedHandler = () => {\n this.#commitObjectsHandler([...this.markedObjectsSet]);\n };\n\n #commitSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"committing\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#commitObjectsHandler([objectId]);\n };\n\n #commitObjectsHandler = async (selection: string[]) => {\n if (this.commentsValue.length === 0) {\n // A comment is required to commit.\n this.commentInputHasError = true;\n return;\n }\n this.commentInputHasError = false;\n this.committing = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"committing\");\n });\n\n const commitResult = await this.commitCallback(\n selection,\n this.commentsValue\n );\n\n commitResult.forEach(async objectResult => {\n const messages = objectResult.messages;\n if (messages.length) {\n this.objectsMessagesDataMap.set(objectResult.id, objectResult.messages);\n } else {\n // clear messages\n this.objectsMessagesDataMap.delete(objectResult.id);\n }\n if (objectResult.result === \"committed\") {\n // Apply a new Set to \"alreadyCommittedObjectsIdsSet\" in order for the Watch to fire.\n this.alreadyCommittedObjectsIdsSet = new Set([\n ...this.alreadyCommittedObjectsIdsSet,\n objectResult.id\n ]);\n this.objectsStatusMap.set(objectResult.id, \"committed\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n\n this.committing = false;\n this.commentsValue = \"\";\n };\n\n // handlers\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyCommittedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #rowSelectionChangedHandler = async (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedRowsIds = event.detail.rowsId;\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource: SourceType = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n const filteredSelectedRowsIds = clearGridSelection(\n gridSource,\n selectedRowsIds,\n this.pendingIdsSet,\n this.ignoredIdsSet,\n this.#chGridPendingForUpdateEl\n );\n\n await this.selectCallback(gridSource, filteredSelectedRowsIds);\n };\n\n #commentsInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.commentsValue = event.detail as string;\n if (this.commentsValue.length && this.commentInputHasError) {\n // remove error style and tooltip\n this.commentInputHasError = false;\n }\n };\n\n // filter related\n\n #applyClientFilter = () => {\n this.pendingObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.pendingForCommit\n );\n this.ignoredObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.ignoredObjects\n );\n };\n\n #filteredObjects = (objects: ModifiedObjectData[]): ModifiedObjectData[] => {\n let filtered = objects;\n\n // name or description\n if (this.searchValue.length) {\n filtered = filtered.filter(object => {\n const nameFiltered = object.name\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n\n const descriptionFiltered = object.description\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n\n return nameFiltered || descriptionFiltered;\n });\n }\n\n // status\n if (this.selectedState && this.selectedState !== ALL_VALUE) {\n filtered = filtered.filter(object => object.state === this.selectedState);\n }\n\n return filtered;\n };\n\n #evaluateSecondaryFilterHasConditions = () => {\n if (\n // this.selectedChangeset !== ALL_VALUE ||\n this.selectedFolder !== ALL_VALUE\n // this.selectedCategory !== ALL_VALUE\n ) {\n this.filterSecondaryHasConditions = true;\n } else {\n this.filterSecondaryHasConditions = false;\n }\n };\n\n #toggleFiltersHandler = () => {\n this.filterSecondaryIsHidden = !this.filterSecondaryIsHidden;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).trim();\n this.#applyClientFilter();\n };\n\n #typeChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedState = event.detail as StateForFilter;\n this.#applyClientFilter();\n };\n\n // changeset is a WIP.\n // #changesetChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedChangeset = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #folderChanged = (event: CustomEvent<string> | InputEvent) => {\n this.selectedFolder = event.detail as string;\n this.#loadData();\n this.#evaluateSecondaryFilterHasConditions();\n };\n\n // #categoryChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedCategory = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selectedRowsIds =\n await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n await this.objectsContextMenuCallback(gridSource, {\n selection: selectedRowsIds,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n // other methods\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n this.#rowCheckedChangedByTheUser = false;\n const addedRowsIds = event.detail.addedRowsId;\n const removedRowsId = event.detail.removedRowsId;\n\n try {\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n } catch {\n //catch exception if necessary\n } finally {\n this.#rowCheckedChangedByTheUser = true;\n }\n };\n\n #setInitialObjectsStatus = (): void => {\n this.pendingAndIgnored.pendingForCommit.forEach(pendingObject => {\n const status: StatusInternal = \"pending\";\n this.objectsStatusMap.set(pendingObject.id, status);\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal = \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (): Promise<void> => {\n this.loading = true;\n\n this.pendingAndIgnored = await this.loadCallback({\n search: this.searchValue,\n type: this.selectedType,\n changeset: this.selectedChangeset,\n folder: this.selectedFolder,\n category: this.selectedCategory\n });\n\n this.loading = false;\n // Is is required to mark/check all objects after loadCallback.\n // this.#markPendingObjects();\n };\n\n /**\n * Marks all pending objects that have not been committed yet.\n *\n * Iterates through all pending object IDs and adds them to the marked objects set\n * if they are not already in the committed objects set. This effectively identifies\n * and marks all the pending objects that still need to be processed.\n **/\n #markPendingObjects = () => {\n for (const pendingId of this.pendingIdsSet) {\n if (!this.alreadyCommittedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n // render methods\n\n #revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n for (const rowId of addedRowsIds) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n }\n };\n\n #togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n }\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n const columnId = e.detail.columnId;\n\n let objectProperty;\n let dateType: SortTabularGridColumnDataType = \"string\";\n if (columnId === COLUMNS_IDS.type) {\n objectProperty = \"name\"; // the type name\n dateType = \"object\";\n } else if (\n columnId === COLUMNS_IDS.modifiedOn ||\n columnId === COLUMNS_IDS.lastSynchronized\n ) {\n dateType = \"dateString\";\n }\n this.pendingObjectsAfterFilter = [\n ...sortTabularGridColumn(\n e,\n this.pendingObjectsAfterFilter,\n dateType,\n objectProperty\n )\n ];\n this.ignoredObjectsAfterFilter = [\n ...sortTabularGridColumn(\n e,\n this.ignoredObjectsAfterFilter,\n dateType,\n objectProperty\n )\n ];\n };\n\n /**\n * WA: Ignored objects must always remain unchecked.\n * Because `tabular-grid` selects all rows when the checkbox column is toggled,\n * we need to manually unselect the ignored IDs. // TODO: Move this function\n * to common\n */\n #columnSelectorClickedCallback = async (\n e: CustomEvent<TabularGridColumnSelectorClickedEvent>\n ) => {\n const allRowsChecked = e.detail;\n if (allRowsChecked) {\n const markedRowsIds =\n await this.#chGridPendingForUpdateEl.getMarkedRows();\n const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {\n return this.ignoredIdsSet.has(rowId);\n });\n if (ignoredMarkedRowsIds.length) {\n uncheckIgnoredObjects(\n ignoredMarkedRowsIds,\n this.#chGridPendingForUpdateEl\n );\n }\n }\n };\n\n render() {\n const disableControls =\n this.committing || this.loading || this.isCommitDisabled;\n const gridIsEmpty =\n this.pendingObjectsAfterFilter.length === 0 &&\n this.ignoredObjectsAfterFilter.length === 0;\n\n const filterIcon = this.filterSecondaryHasConditions\n ? ICONS.filterWithConditions\n : ICONS.filter;\n\n const commitButtonEnabled =\n this.atLeastOneObjectIsChecked &&\n this.commentsValue.length > 0 &&\n !this.allPendingAreCommitted &&\n !this.isCommitDisabled;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class={{ [CLASSES.HEADER]: true }}>\n <div\n // header details\n class={{ [CLASSES.HEADER_DETAILS]: true }}\n >\n {headerTitle(this.#componentLocale.commitDetail.title)}\n\n {\n // genexus server\n headerDetail(\n \"link\",\n this.#componentLocale.commitDetail.genexusServer,\n this.serverDetails ? this.serverDetails.serverUrl : \"\",\n this.openServerCallback,\n \"detail__genexus-server\"\n )\n }\n\n {\n // knowledge base\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.knowledgeBase,\n this.serverDetails ? this.serverDetails.kbName : \"\",\n undefined,\n \"detail__knowledge-base\"\n )\n }\n\n {\n // version\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.version,\n this.serverDetails ? this.serverDetails.versionName : \"\",\n undefined,\n \"detail__version\"\n )\n }\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class={{ [CLASSES.FILTER]: true, \"filter-primary\": true }}>\n <ch-edit\n // searchch-edit\n class=\"input filter__combo\"\n disabled={disableControls}\n startImgSrc={ICONS.search}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.typesComboBoxModel}\n value={this.selectedType}\n accessibleName={this.#componentLocale.filter.typeAccesibleName}\n placeholder={this.#componentLocale.filter.typePlaceholder}\n onInput={this.#typeChangedHandler}\n ></ch-combo-box-render>\n\n <ch-combo-box-render\n // local states\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.#localStatesComboBoxModel}\n value={this.selectedState}\n onInput={this.#stateChangedHandler}\n accessibleName={\n this.#componentLocale.filter.localStateAccesibleName\n }\n placeholder={this.#componentLocale.filter.localStatePlaceholder}\n ></ch-combo-box-render>\n </div>\n\n <button\n // toggle secondary filter button\n id={FILTER_SECONDARY_BUTTON_ID}\n class=\"button-secondary button-icon-only\"\n disabled={disableControls}\n aria-label={this.#componentLocale.filter.secondaryFilterAriaLabel}\n aria-expanded={this.filterSecondaryIsHidden ? \"false\" : \"true\"}\n aria-controls={FILTER_SECONDARY_CONTAINER_ID}\n onClick={this.#toggleFiltersHandler}\n title={this.#componentLocale.filter.secondaryFilterAriaLabel}\n >\n <ch-image class=\"icon-m\" src={filterIcon}></ch-image>\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#loadData}\n >\n <ch-image class=\"icon-m\" src={ICONS.refresh}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n\n <button\n // commit button\n class=\"button-primary\"\n disabled={!commitButtonEnabled || disableControls}\n onClick={this.#commitCheckedClickedHandler}\n >\n {this.#componentLocale.filter.commit}\n </button>\n </div>\n\n <div\n // secondary filter\n id={FILTER_SECONDARY_CONTAINER_ID}\n aria-labelledby={FILTER_SECONDARY_BUTTON_ID}\n class={{\n [CLASSES.FILTER]: true,\n \"filter-secondary\": true,\n \"filter-secondary--visible\": !this.filterSecondaryIsHidden\n }}\n inert={this.filterSecondaryIsHidden}\n hidden={this.filterSecondaryIsHidden}\n >\n <div>\n {/* \n // changeset is a WIP.\n <ch-combo-box-render\n // changeset\n class=\"combo-box\"\n disabled={disableControls}\n model={this.changesetsComboBoxModel}\n value={this.selectedChangeset}\n onInput={this.#changesetChangedHandler}\n accessibleName={\n this.#componentLocale.filter.changesetAccesibleName\n }\n placeholder={\n this.#componentLocale.filter.changesetPlaceholder\n }\n ></ch-combo-box-render> */}\n\n <ch-combo-box-render\n // folder\n class=\"combo-box\"\n disabled={disableControls}\n model={this.foldersComboBoxModel}\n value={this.selectedFolder}\n onInput={this.#folderChanged}\n accessibleName={\n this.#componentLocale.filter.folderAccesibleName\n }\n placeholder={this.#componentLocale.filter.folderPlaceholder}\n ></ch-combo-box-render>\n\n {/* <ch-combo-box-render\n // category\n class=\"combo-box\"\n disabled={disableControls}\n model={this.categoriesComboBoxModel}\n value={this.selectedCategory}\n onInput={this.#categoryChangedHandler}\n accessibleName={\n this.#componentLocale.filter.categoryPlaceholder\n }\n placeholder={this.#componentLocale.filter.categoryPlaceholder}\n ></ch-combo-box-render> */}\n </div>\n </div>\n\n <ch-edit\n // commit comments\n class=\"input comments\"\n multiline={true}\n autoGrow={true}\n placeholder={this.#componentLocale.commitCommentPlaceholder}\n onInput={this.#commentsInputHandler}\n value={this.commentsValue}\n ></ch-edit>\n </div>\n\n <div class={CLASSES.MAIN}>\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.committing,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onSelectionChanged={this.#rowSelectionChangedHandler}\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n {renderTabularGridColumns(\n [\"action\"],\n gridIsEmpty,\n this.#sortTabularGridColumnCallback,\n this.#columnSelectorClickedCallback,\n this.#componentLocale,\n !this.allPendingAreCommitted\n )}\n\n {!gridIsEmpty\n ? [\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.pendingCommits}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"pending\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommittedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>,\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.ignoredObjects}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"ignored\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommittedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>\n ]\n : null}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {gridIsEmpty && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={ICONS.filter}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["dataSelectorCss","CSS_BUNDLES","FILTER_ICON","getIconPath","category","name","colorType","GxIdeDataSelector","_GxIdeDataSelector_firstGridObjectId","set","this","_GxIdeDataSelector_loadItemsCallbackJustCalled","_GxIdeDataSelector_componentLocale","_GxIdeDataSelector_animateEmptyState","_GxIdeDataSelector_shortcutsSrc","getAssetPath","_GxIdeDataSelector_filterPatternEl","_GxIdeDataSelector_filterObjectEl","_GxIdeDataSelector_chShortcutsEl","_GxIdeDataSelector_chTabularGridObjectsEl","_GxIdeDataSelector_evaluateFirstRowSelection","__classPrivateFieldGet","selectRow","__classPrivateFieldSet","_GxIdeDataSelector_chGridKeyDownHandler","e","key","_GxIdeDataSelector_confirmCallbackHandler","call","stopPropagation","confirmCallback","selectedObjectsIds","_GxIdeDataSelector_editCallbackHandler","async","result","editCallback","_GxIdeDataSelector_refreshUIWithNewConfiguration","_GxIdeDataSelector_hostKeyPressHandler","_GxIdeDataSelector_objectsSelectionChangedHandler","event","detail","rowsId","_GxIdeDataSelector_newVariableCallbackHandler","response","newVariableCallback","objects","filters","pattern","_a","value","object","_c","_b","id","loading","loadItemsCallback","then","items","length","_GxIdeDataSelector_sortObjectsByName","_GxIdeDataSelector_renderFilter","h","class","htmlFor","filter","autoFocus","part","debounce","config","inputDebounce","onInput","ref","el","defaultModule","defaultValue","selectEntityCallback","selectObjectCallback","onValueChanged","_GxIdeDataSelector_renderObjects","gridIsEmpty","displayLoader","loader","data","rowSelectionMode","selectionType","onKeyDown","onSelectionChanged","undefined","settingable","sortable","size","tabularGrid","colSize","maxContent","tableHead","common","dataType","description","map","obj","rowid","onDblClick","src","type","loaderTitle","title","show","isAnimated","stateIconSrc","stateTitle","emptyState","_GxIdeDataSelector_renderEditButtons","newVariableButtonEnabled","editButtonEnabled","disabled","onClick","footer","btnNew","btnEdit","sort","a","b","nameA","toLowerCase","nameB","componentWillLoad","Locale","getComponentStrings","connectedCallback","componentDidLoad","focus","componentDidRender","suspendShortcuts","suspend","validate","isValid","render","okButtonEnabled","footerJustifySpaceBetween","Host","onKeyPress","model","cancelCallback","btnCancel","btnConfirm"],"sources":["src/components/data-selector/data-selector.scss?tag=gx-ide-data-selector&encapsulation=shadow","src/components/data-selector/data-selector.tsx"],"sourcesContent":["@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\"; // for the tabular-grid-cell-layout mixin\n\n:host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n block-size: 100%;\n}\n\n.section {\n display: contents;\n}\n\n.header__field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n\n.tabular-grid {\n contain: size;\n}\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".data\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\nch-tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n // to make the loader be positioned relative to 'ch-tabular-grid-rowset-empty'\n position: relative;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport { config } from \"../../common/config\";\nimport { EntityData } from \"../../common/types\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { TabularGridSelectionChangedEvent } from \"@genexus/chameleon-controls-library\";\n\n// Best performance bundle\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-data-selector\",\n styleUrl: \"data-selector.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/data-selector\"]\n})\nexport class GxIdeDataSelector {\n #firstGridObjectId: string; // used to select the first item after \"loadItemsCallback\"\n #loadItemsCallbackJustCalled: boolean = false; // used to select the first item after \"loadItemsCallback\"\n\n #componentLocale: any;\n #animateEmptyState: boolean = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/data-selector/shortcuts.json`);\n /* References needed to collect data */\n #filterPatternEl!: HTMLChEditElement;\n #filterObjectEl!: HTMLGxIdeEntitySelectorElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #chTabularGridObjectsEl: HTMLChTabularGridElement;\n\n @Element() el: HTMLGxIdeDataSelectorElement;\n\n /**\n * True if loadItemsCallback has been called and has not been resolved yet.\n */\n @State() loading: boolean = true;\n\n /**\n * The objects rendered in the table\n */\n @State() objects: ItemData[] = [];\n\n /**\n * The selected objects in the table of objects\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * Callback invoked when the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when the user presses the 'OK' button\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user presses the edit button. Receives the first\n * selected element id as a parameter.\n */\n @Prop() readonly editCallback: EditCallback;\n\n /**\n * Callback invoked when the component needs to reload the list of attributes.\n */\n @Prop() readonly loadItemsCallback!: LoadItemsCallback;\n\n /**\n * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * Callback invoked when the user presses the 'New' button.\n */\n @Prop() readonly newVariableCallback: NewVariableCallback;\n\n /**\n * Callback invoked when the action is executed in the Object filter. It returns\n * the information of the selected object (id and name) or 'undefined' if it was\n * canceled.\n */\n @Prop() readonly selectObjectCallback: SelectObjectCallback;\n\n /**\n * Single if multiple object selection is not allowed. Default is multiple\n */\n @Prop() readonly selectionType: \"single\" | \"multiple\" = \"multiple\";\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n connectedCallback() {\n this.#refreshUIWithNewConfiguration();\n }\n\n componentDidLoad() {\n this.#filterPatternEl.focus();\n }\n\n componentDidRender() {\n this.#evaluateFirstRowSelection();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n /**\n * After items have been loaded and rendered, the first row should be selected.\n */\n #evaluateFirstRowSelection = () => {\n if (this.#loadItemsCallbackJustCalled) {\n this.#chTabularGridObjectsEl.selectRow(this.#firstGridObjectId);\n }\n this.#loadItemsCallbackJustCalled = false;\n };\n\n #chGridKeyDownHandler = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n this.#confirmCallbackHandler(e);\n }\n };\n\n #confirmCallbackHandler = (e: MouseEvent | KeyboardEvent): void => {\n e.stopPropagation();\n this.confirmCallback(this.selectedObjectsIds);\n };\n\n #editCallbackHandler = async (e: MouseEvent): Promise<void> => {\n e.stopPropagation();\n if (this.selectedObjectsIds[0]) {\n const result = await this.editCallback(this.selectedObjectsIds[0]);\n if (result) {\n this.#refreshUIWithNewConfiguration();\n }\n }\n };\n\n #hostKeyPressHandler = (e: KeyboardEvent) => {\n // TODO : revise why this is necessary\n // just prevent keypress propagation\n if (e.key === \"Enter\") {\n e.stopPropagation();\n }\n };\n\n #objectsSelectionChangedHandler = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n this.selectedObjectsIds = event.detail.rowsId;\n };\n\n #newVariableCallbackHandler = async () => {\n const response = await this.newVariableCallback();\n if (response) {\n this.#refreshUIWithNewConfiguration();\n }\n };\n #refreshUIWithNewConfiguration = (): void => {\n this.objects = [];\n const filters: FiltersData = {\n pattern: this.#filterPatternEl?.value,\n object: this.#filterObjectEl?.value?.id\n };\n this.loading = true;\n this.loadItemsCallback(filters).then((items: ItemData[]) => {\n if (items.length) {\n this.objects = this.#sortObjectsByName(items);\n this.#firstGridObjectId = this.objects[0].id;\n this.#loadItemsCallbackJustCalled = true;\n }\n this.selectedObjectsIds = [];\n this.loading = false;\n });\n };\n\n #renderFilter = (): Element[] => {\n return [\n <div class=\"header__field-group field-group\">\n <div class=\"field field-block pattern-field\">\n <label class=\"label\" htmlFor=\"filter-pattern\">\n {this.#componentLocale.filter.pattern}\n </label>\n <ch-edit\n autoFocus\n id=\"filter-pattern\"\n name=\"filter-pattern\"\n class=\"input pattern-input\"\n part=\"filter-pattern\"\n debounce={config.inputDebounce}\n onInput={this.#refreshUIWithNewConfiguration}\n ref={(el: HTMLChEditElement) =>\n (this.#filterPatternEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n <gx-ide-entity-selector\n id=\"object-selector\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectObjectCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterObjectEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"entity\"\n onValueChanged={this.#refreshUIWithNewConfiguration}\n ></gx-ide-entity-selector>\n </div>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n const displayLoader = this.loader && this.loading;\n if (!gridIsEmpty || displayLoader) {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"empty-result\": this.objects.length === 0,\n \"data\": true\n }}\n rowSelectionMode={this.selectionType}\n onKeyDown={this.#chGridKeyDownHandler}\n part=\"ch-grid-objects\"\n onSelectionChanged={\n this.objects.length ? this.#objectsSelectionChangedHandler : undefined\n }\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chTabularGridObjectsEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name-position=\"text\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.name}\n column-name-position=\"text\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.dataType}\n column-name-position=\"text\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.description}\n column-name-position=\"text\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: ItemData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n onDblClick={this.#confirmCallbackHandler}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image\n src={\n obj.type === \"attribute\"\n ? \"objects/attribute\"\n : \"objects-parts/variables\"\n }\n class=\"icon-s\"\n ></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.dataType}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {displayLoader ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderEditButtons = (): JSX.Element | null => {\n if (!this.editCallback && !this.newVariableCallback) {\n return null;\n }\n\n const newVariableButtonEnabled = this.newVariableCallback && !this.loading;\n const editButtonEnabled =\n this.editCallback && !this.loading && this.selectedObjectsIds.length;\n\n return (\n <div class=\"buttons-spacer\">\n {this.newVariableCallback ? (\n <button\n // New Variable Button\n class=\"button-secondary\"\n disabled={!newVariableButtonEnabled}\n part=\"button button-new\"\n type=\"button\"\n onClick={this.#newVariableCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n ) : (\n []\n )}\n {this.editCallback ? (\n <button\n // Edit Button\n class=\"button-secondary\"\n disabled={!editButtonEnabled}\n part=\"button button-edit\"\n type=\"button\"\n onClick={editButtonEnabled && this.#editCallbackHandler}\n >\n {this.#componentLocale.footer.btnEdit}\n </button>\n ) : (\n []\n )}\n </div>\n );\n };\n\n #sortObjectsByName = (objects: ItemData[]): ItemData[] =>\n // TODO (make this a common helper function\n // and use it in other dialog grids that\n // require filter by name).\n objects.sort((a, b) => {\n const nameA = a.name.toLowerCase(),\n nameB = b.name.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n\n render() {\n const okButtonEnabled = !this.loading;\n const footerJustifySpaceBetween: boolean =\n !!this.newVariableCallback || !!this.editCallback;\n\n return (\n <Host onKeyPress={this.#hostKeyPressHandler} class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header dialog-header-with-border spacing-body-block-start spacing-body-inline\">\n {this.#renderFilter()}\n </header>\n {this.#renderObjects()}\n <footer\n class={{\n \"footer\": true,\n \"dialog-footer-with-border\": true,\n \"dialog-footer-space-between\": footerJustifySpaceBetween,\n \"spacing-body-inline\": true,\n \"spacing-body-block-end\": true\n }}\n >\n {this.#renderEditButtons()}\n <div class=\"buttons-spacer\">\n <button\n // Cancel Button\n class=\"button-secondary\"\n part=\"button button-cancel\"\n type=\"button\"\n onClick={this.cancelCallback}\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // Confirm Button\n class=\"button-primary\"\n part=\"button button-ok\"\n disabled={!okButtonEnabled}\n type=\"button\"\n onClick={okButtonEnabled && this.#confirmCallbackHandler}\n >\n {this.#componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type NewVariableCallback = () => Promise<boolean> | undefined;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SelectObjectCallback = () => Promise<EntityData | undefined>;\n\nexport type EditCallback = (id: string) => Promise<boolean> | undefined;\n\nexport type ConfirmCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadItemsCallback = (filters: FiltersData) => Promise<ItemData[]>;\n\nexport type FiltersData = {\n pattern?: string;\n object?: string;\n};\n\nexport type ItemData = {\n type: ItemType;\n id: string;\n name: string;\n dataType: string;\n description: string;\n};\n\nexport type ItemType = \"variable\" | \"attribute\";\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,MAAMA,IAAkB;;;;;;;;;;;;;;;;;0BCqBxB;MAAMC,IAA8B,EAClC,qBACA,qBACA,mBACA,2BACA,mBACA,cACA,gBACA,iBACA;;AAGF,MAAMC,IAAcC,EAAY;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;MASAC,IAAiB;;;IAC5BC,EAAAC,IAAAC,WAAA;;QACAC,EAAAF,IAAAC,MAAwC;;QAExCE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,MAA8B;IAC9BI,EAAAL,IAAAC,MAAgBK,EAAa;+CAE7BC,EAAAP,IAAAC,WAAA;IACAO,EAAAR,IAAAC,WAAA;IACAQ,EAAAT,IAAAC,WAAA;IACAS,EAAAV,IAAAC,WAAA;;;eAgHAU,EAAAX,IAAAC,OAA6B;MAC3B,IAAIW,EAAAX,MAAIC,GAAA,MAA+B;QACrCU,EAAAX,MAAIS,GAAA,KAAyBG,UAAUD,EAAAX,MAAIF,GAAA;;MAE7Ce,EAAAb,MAAIC,GAAgC,OAAK;AAAA;IAG3Ca,EAAAf,IAAAC,OAAyBe;MACvB,IAAIA,EAAEC,QAAQ,SAAS;QACrBL,EAAAX,MAAIiB,GAAA,KAAwBC,KAA5BlB,MAA6Be;;;IAIjCE,EAAAlB,IAAAC,OAA2Be;MACzBA,EAAEI;MACFnB,KAAKoB,gBAAgBpB,KAAKqB;AAAmB;IAG/CC,EAAAvB,IAAAC,OAAuBuB,MAAOR;MAC5BA,EAAEI;MACF,IAAInB,KAAKqB,mBAAmB,IAAI;QAC9B,MAAMG,UAAexB,KAAKyB,aAAazB,KAAKqB,mBAAmB;QAC/D,IAAIG,GAAQ;UACVb,EAAAX,MAAI0B,GAAA,KAA+BR,KAAnClB;;;;IAKN2B,EAAA5B,IAAAC,OAAwBe;;;MAGtB,IAAIA,EAAEC,QAAQ,SAAS;QACrBD,EAAEI;;;IAINS,EAAA7B,IAAAC,OACE6B;MAEA7B,KAAKqB,qBAAqBQ,EAAMC,OAAOC;AAAM;IAG/CC,EAAAjC,IAAAC,OAA8BuB;MAC5B,MAAMU,UAAiBjC,KAAKkC;MAC5B,IAAID,GAAU;QACZtB,EAAAX,MAAI0B,GAAA,KAA+BR,KAAnClB;;;IAGJ0B,EAAA3B,IAAAC,OAAiC;;MAC/BA,KAAKmC,UAAU;MACf,MAAMC,IAAuB;QAC3BC,UAASC,IAAA3B,EAAAX,MAAIM,GAAA,UAAiB,QAAAgC,WAAA,aAAAA,EAAEC;QAChCC,SAAQC,KAAAC,IAAA/B,EAAAX,MAAIO,GAAA,UAAgB,QAAAmC,WAAA,aAAAA,EAAEH,WAAK,QAAAE,WAAA,aAAAA,EAAEE;;MAEvC3C,KAAK4C,UAAU;MACf5C,KAAK6C,kBAAkBT,GAASU,MAAMC;QACpC,IAAIA,EAAMC,QAAQ;UAChBhD,KAAKmC,UAAUxB,EAAAX,MAAIiD,GAAA,KAAmB/B,KAAvBlB,MAAwB+C;UACvClC,EAAAb,MAAIF,GAAsBE,KAAKmC,QAAQ,GAAGQ,IAAE;UAC5C9B,EAAAb,MAAIC,GAAgC,MAAI;;QAE1CD,KAAKqB,qBAAqB;QAC1BrB,KAAK4C,UAAU;AAAK;AACpB;IAGJM,EAAAnD,IAAAC,OAAgB,MACP,EACLmD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQC,SAAQ;OAC1B1C,EAAAX,MAAIE,GAAA,KAAkBoD,OAAOjB,UAEhCc,EAAA;MACEI,WAAS;MACTZ,IAAG;MACHhD,MAAK;MACLyD,OAAM;MACNI,MAAK;MACLC,UAAUC,EAAOC;MACjBC,SAASjD,EAAAX,MAAI0B,GAAA;MACbmC,KAAMC,KACHjD,EAAAb,MAAIM,GAAoBwD,GAAuB;SAItDX,EAAA;MACER,IAAG;MACHJ,OAAOvC,KAAK+D;MACZC,cAAchE,KAAK+D;MACnBE,sBAAsBjE,KAAKkE;MAC3BL,KAAMC,KACHjD,EAAAb,MAAIO,GAAmBuD,GAAoC;MAE9DV,OAAM;MACNe,gBAAgBxD,EAAAX,MAAI0B,GAAA;;IAM5B0C,EAAArE,IAAAC,OAAiB;MACf,MAAMqE,KAAerE,KAAKmC,QAAQa;MAClC,MAAMsB,IAAgBtE,KAAKuE,UAAUvE,KAAK4C;MAC1C,KAAKyB,KAAeC,GAAe;QACjCzD,EAAAb,MAAIG,GAAsB,MAAI;;;MAEhC,OACEgD,EAAA;QACEC,OAAO;UACL,gBAAgB;UAChB,gBAAgBpD,KAAKmC,QAAQa,WAAW;UACxCwB,MAAQ;;QAEVC,kBAAkBzE,KAAK0E;QACvBC,WAAWhE,EAAAX,MAAIc,GAAA;QACf0C,MAAK;QACLoB,oBACE5E,KAAKmC,QAAQa,SAASrC,EAAAX,MAAI4B,GAAA,OAAmCiD;QAE/DhB,KAAMC,KACHjD,EAAAb,MAAIS,GAA2BqD,GAA8B;SAGhEX,EAAA;QAA2BC,OAAM;SAC/BD,EAAA;QAAA,wBACuB;QACrB2B,aAAa;QACbC,UAAU;QACVC,MAAMtB,EAAOuB,YAAYC,QAAQC;QACjC/B,OAAM;UAERD,EAAA;QAAA,eACexC,EAAAX,MAAIE,GAAA,KAAkBkF,UAAUzF;QAAI,wBAC5B;QACrBmF,aAAa;QACbC,UAAU;QACVC,MAAMtB,EAAOuB,YAAYC,QAAQG;QACjCjC,OAAM;UAERD,EAAA;QAAA,eACexC,EAAAX,MAAIE,GAAA,KAAkBkF,UAAUE;QAAQ,wBAChC;QACrBR,aAAa;QACbC,UAAU;QACVC,MAAMtB,EAAOuB,YAAYC,QAAQG;QACjCjC,OAAM;UAERD,EAAA;QAAA,eACexC,EAAAX,MAAIE,GAAA,KAAkBkF,UAAUG;QAAW,wBACnC;QACrBT,aAAa;QACbC,UAAU;QACVC,MAAMtB,EAAOuB,YAAYC,QAAQG;QACjCjC,OAAM;YAIRiB,IACAlB,EAAA;QAAwBC,OAAM;SAC3BpD,KAAKmC,QAAQqD,KAAKC,KACjBtC,EAAA;QACEuC,OAAOD,EAAI9C;QACXgD,YAAYhF,EAAAX,MAAIiB,GAAA;QAChBmC,OAAM;SAEND,EAAA;QAAsBC,OAAM;SAC1BD,EAAA;QACEyC,KACEH,EAAII,SAAS,cACT,sBACA;QAENzC,OAAM;WAGVD,EAAA;QAAsBC,OAAM;SACzBqC,EAAI9F,OAEPwD,EAAA;QAAsBC,OAAM;SACzBqC,EAAIH,WAEPnC,EAAA;QAAsBC,OAAM;SACzBqC,EAAIF,mBAMbpC,EAAA;QAAwBC,OAAM;SAC5BD,EAAA,sCACGmB,IACCnB,EAAA;QACE2C,aAAanF,EAAAX,MAAIE,GAAA,KAAkBqE,OAAOwB;QAC1CC,MAAI;WAGN7C,EAAA;QACE8C,YAAYtF,EAAAX,MAAIG,GAAA;QAChB+F,cAAc1G;QACd2G,YAAYxF,EAAAX,MAAIE,GAAA,KAAkBkG,WAAWL;;AAMvC;IAItBM,EAAAtG,IAAAC,OAAqB;MACnB,KAAKA,KAAKyB,iBAAiBzB,KAAKkC,qBAAqB;QACnD,OAAO;;MAGT,MAAMoE,IAA2BtG,KAAKkC,wBAAwBlC,KAAK4C;MACnE,MAAM2D,IACJvG,KAAKyB,iBAAiBzB,KAAK4C,WAAW5C,KAAKqB,mBAAmB2B;MAEhE,OACEG,EAAA;QAAKC,OAAM;SACRpD,KAAKkC,sBACJiB,EAAA;;QAEEC,OAAM;QACNoD,WAAWF;QACX9C,MAAK;QACLqC,MAAK;QACLY,SAAS9F,EAAAX,MAAIgC,GAAA;SAEZrB,EAAAX,MAAIE,GAAA,KAAkBwG,OAAOC,UACvB,IAIV3G,KAAKyB,eACJ0B,EAAA;;QAEEC,OAAM;QACNoD,WAAWD;QACX/C,MAAK;QACLqC,MAAK;QACLY,SAASF,KAAqB5F,EAAAX,MAAIsB,GAAA;SAEjCX,EAAAX,MAAIE,GAAA,KAAkBwG,OAAOE,WACvB;AAIP;IAIV3D,EAAAlD,IAAAC,OAAsBmC;;;;IAIpBA,EAAQ0E,MAAK,CAACC,GAAGC;MACf,MAAMC,IAAQF,EAAEnH,KAAKsH,eACnBC,IAAQH,EAAEpH,KAAKsH;MACjB,IAAID,IAAQE,GAAO;QACjB,QAAQ;;MAEV,IAAIF,IAAQE,GAAO;QACjB,OAAO;;MAET,OAAO;AAAC;mBAnXgB;mBAKG;8BAKS;;;;wBAoBR;;;kBAgBN;;;yBAiB8B;;EAExD,uBAAMC;IACJtG,EAAAb,MAAIE,SAA0BkH,EAAOC,oBAAoBrH,KAAK8D,KAAG;;EAGnE,iBAAAwD;IACE3G,EAAAX,MAAI0B,GAAA,KAA+BR,KAAnClB;;EAGF,gBAAAuH;IACE5G,EAAAX,MAAIM,GAAA,KAAkBkH;;EAGxB,kBAAAC;IACE9G,EAAAX,MAAIU,GAAA,KAA2BQ,KAA/BlB;;;;SAOF,sBAAM0H,CAAiBA;IACrB,IAAIA,GAAkB;MACpB/G,EAAAX,MAAIQ,GAAA,KAAgBmH,UAAU;WACzB;MACLhH,EAAAX,MAAIQ,GAAA,KAAgBmH,UAAU;;;;;SAQlC,cAAMC;IACJ,MAAMC,IAAU;IAChB,OAAOA;;EAmRT,MAAAC;IACE,MAAMC,KAAmB/H,KAAK4C;IAC9B,MAAMoF,MACFhI,KAAKkC,yBAAyBlC,KAAKyB;IAEvC,OACE0B,EAAC8E,GAAI;MAACC,YAAYvH,EAAAX,MAAI2B,GAAA;MAAuByB,OAAM;OACjDD,EAAA;MAAUgF,OAAO5I;QACjB4D,EAAA;MACEyC,KAAKjF,EAAAX,MAAII,GAAA;MACTyD,KAAMC,KACHjD,EAAAb,MAAIQ,GAAkBsD,GAA4B;QAIvDX,EAAA;MAASC,OAAM;OACbD,EAAA;MAAQC,OAAM;OACXzC,EAAAX,MAAIkD,GAAA,KAAchC,KAAlBlB,QAEFW,EAAAX,MAAIoE,GAAA,KAAelD,KAAnBlB,OACDmD,EAAA;MACEC,OAAO;QACLsD,QAAU;QACV,6BAA6B;QAC7B,+BAA+BsB;QAC/B,uBAAuB;QACvB,0BAA0B;;OAG3BrH,EAAAX,MAAIqG,GAAA,KAAmBnF,KAAvBlB,OACDmD,EAAA;MAAKC,OAAM;OACTD,EAAA;;MAEEC,OAAM;MACNI,MAAK;MACLqC,MAAK;MACLY,SAASzG,KAAKoI;OAEbzH,EAAAX,MAAIE,GAAA,KAAkBwG,OAAO2B,YAEhClF,EAAA;;MAEEC,OAAM;MACNI,MAAK;MACLgD,WAAWuB;MACXlC,MAAK;MACLY,SAASsB,KAAmBpH,EAAAX,MAAIiB,GAAA;OAE/BN,EAAAX,MAAIE,GAAA,KAAkBwG,OAAO4B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["newVersionCss","CSS_BUNDLES","CHECKED_VALUE","SET_NEW_VERSION_AS_ACTIVE_ID","CREATE_LINKED_LOCAL_VERSION_ID","CREATE_AS_PROTECTED_VERSION_ID","GxIdeNewVersion","_GxIdeNewVersion_componentLocale","set","this","_GxIdeNewVersion_versionNameEl","_GxIdeNewVersion_shortcutsSrc","getAssetPath","_GxIdeNewVersion_handleCheckBoxValueChange","event","target","id","setNewVersionAsActive","detail","createLinkedLocalVersion","createAsProtectedVersion","_GxIdeNewVersion_handleNameValueChange","versionName","versionDescriptionEdited","versionDescription","_GxIdeNewVersion_handleDescriptionValueChange","_GxIdeNewVersion_cancelClickHandler","async","cancelCallback","_GxIdeNewVersion_createClickHandler","newVersionData","createLocalLinkedVersion","createProtectedVersion","formSubmitResult","createCallback","validatableControls","validateControls","_GxIdeNewVersion_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","hasError","message","undefined","_GxIdeNewVersion_evaluateTooltipRender","controlReference","_b","_a","get","_c","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","Map","defaultInputValuesChanged","newDefaultInputValues","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","defaultInputValues","componentDidLoad","call","render","createButtonDisabled","length","Host","model","src","htmlFor","labels","name","type","placeholder","placeHolders","value","onInput","ref","autoFocus","description","isRemoteOperation","checkedValue","caption","setActive","showLinkedLocalVersionCheckbox","isFreezeOperation","onClick","buttons","cancel","disabled","create"],"sources":["src/components/new-version/new-version.scss?tag=gx-ide-new-version&encapsulation=shadow","src/components/new-version/new-version.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.field-group {\n grid-auto-rows: max-content;\n}\n\n.main {\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.tooltip {\n position: absolute;\n}\n\n.checkbox {\n inline-size: max-content;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n h,\n Host,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport { ChCheckboxCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../components\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\nimport { config } from \"../../common/config\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/spacing\",\n \"utils/layout\",\n \"chameleon/scrollbar\",\n \"components/checkbox\",\n \"components/button\",\n \"components/edit\",\n \"components/tooltip\"\n];\n\n// ch-checkbox\nconst CHECKED_VALUE = \"on\";\nconst SET_NEW_VERSION_AS_ACTIVE_ID = \"set-new-version-as-active\";\nconst CREATE_LINKED_LOCAL_VERSION_ID = \"create-linked-local-version\";\nconst CREATE_AS_PROTECTED_VERSION_ID = \"create-as-protected-version\";\n\n@Component({\n tag: \"gx-ide-new-version\",\n styleUrl: \"new-version.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/new-version\"]\n})\nexport class GxIdeNewVersion {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #versionNameEl!: HTMLChEditElement;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-version/shortcuts.json`);\n\n @Element() el: HTMLGxIdeNewVersionElement;\n\n /**\n * The version selected name\n */\n @State() versionName: string;\n\n /**\n * The version selected description\n */\n @State() versionDescription: string;\n\n /**\n * Indicates if the version description has been edited\n */\n @State() versionDescriptionEdited: boolean = false;\n\n /**\n * Checkbox value to set the new version as active\n */\n @State() setNewVersionAsActive: boolean = false;\n\n /**\n * Checkbox value to create new remote version linked to the local version\n */\n @State() createLinkedLocalVersion: boolean = false;\n\n /**\n * Checkbox value to create new remote version as protected version\n */\n @State() createAsProtectedVersion: boolean = false;\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Indicates if the component is going to be used to create a new remote version\n */\n @Prop() readonly isRemoteOperation: boolean = false;\n\n /**\n * Indicates if the component is going to be used to create a new remote frozen version\n */\n @Prop() readonly isFreezeOperation: boolean = false;\n\n /**\n * Indicates if the component must show the checkbox to create a linked local version\n */\n @Prop() readonly showLinkedLocalVersionCheckbox: boolean = false;\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create' button is pressed.\n */\n @Prop() readonly createCallback: (\n newVersionData: NewVersionData\n ) => Promise<FormSubmitResult>;\n\n /**\n * This property is used to set the initial values of the input fields when the component is loaded.\n */\n @Prop() readonly defaultInputValues: NewVersionData;\n @Watch(\"defaultInputValues\")\n defaultInputValuesChanged(newDefaultInputValues: NewVersionData) {\n this.versionName = newDefaultInputValues?.versionName;\n this.versionDescription = newDefaultInputValues?.versionDescription;\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.defaultInputValuesChanged(this.defaultInputValues);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #handleCheckBoxValueChange = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n const target = event.target as HTMLInputElement;\n if (target.id === SET_NEW_VERSION_AS_ACTIVE_ID) {\n this.setNewVersionAsActive = event.detail === CHECKED_VALUE;\n } else if (target.id === CREATE_LINKED_LOCAL_VERSION_ID) {\n this.createLinkedLocalVersion = event.detail === CHECKED_VALUE;\n } else if (target.id === CREATE_AS_PROTECTED_VERSION_ID) {\n this.createAsProtectedVersion = event.detail === CHECKED_VALUE;\n }\n };\n\n #handleNameValueChange = (event: CustomEvent<string> | InputEvent) => {\n this.versionName = event.detail as string;\n if (!this.versionDescriptionEdited) {\n this.versionDescription = event.detail as string;\n }\n };\n\n #handleDescriptionValueChange = (event: CustomEvent<string> | InputEvent) => {\n this.versionDescription = event.detail as string;\n if (this.versionDescription === \"\") {\n this.versionDescriptionEdited = false;\n this.versionDescription = this.versionName;\n } else {\n this.versionDescriptionEdited = true;\n }\n };\n\n #cancelClickHandler = async () => {\n this.cancelCallback();\n };\n\n #createClickHandler = async () => {\n const newVersionData: NewVersionData = {\n versionName: this.versionName,\n versionDescription: this.versionDescription,\n setNewVersionAsActive: this.setNewVersionAsActive,\n createLocalLinkedVersion: this.createLinkedLocalVersion,\n createProtectedVersion: this.createAsProtectedVersion\n };\n const formSubmitResult = await this.createCallback(newVersionData);\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#versionNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n render() {\n const createButtonDisabled =\n !this.versionName || this.versionName.length === 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n <section class=\"section\">\n <div class=\"main scrollable field-group spacing-body\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"version-name\">\n {this.#componentLocale.labels.name}\n </label>\n <ch-edit\n type=\"text\"\n id=\"version-name\"\n class=\"input\"\n placeholder={this.#componentLocale.placeHolders.name}\n value={this.versionName}\n onInput={this.#handleNameValueChange}\n ref={(el: HTMLChEditElement) =>\n (this.#versionNameEl = el as HTMLChEditElement)\n }\n autoFocus\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#versionNameEl)}\n </div>\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"version-description\">\n {this.#componentLocale.labels.description}\n </label>\n <ch-edit\n type=\"text\"\n id=\"version-description\"\n class=\"input\"\n placeholder={this.#componentLocale.placeHolders.description}\n value={this.versionDescription}\n onInput={this.#handleDescriptionValueChange}\n ></ch-edit>\n </div>\n {!this.isRemoteOperation ? (\n <div class=\"field field-inline\">\n <ch-checkbox\n class=\"checkbox\"\n id=\"set-new-version-as-active\"\n checkedValue={CHECKED_VALUE}\n onInput={this.#handleCheckBoxValueChange}\n caption={this.#componentLocale.labels.setActive}\n ></ch-checkbox>\n </div>\n ) : (\n <div class=\"layout layout--cols-2\">\n {this.showLinkedLocalVersionCheckbox && (\n <div class=\"layout__panel\">\n <ch-checkbox\n class=\"checkbox\"\n id=\"create-linked-local-version\"\n checkedValue={CHECKED_VALUE}\n onInput={this.#handleCheckBoxValueChange}\n caption={\n this.#componentLocale.labels.createLinkedLocalVersion\n }\n ></ch-checkbox>\n </div>\n )}\n {!this.isFreezeOperation && (\n <div class=\"layout__panel\">\n <ch-checkbox\n class=\"checkbox\"\n id=\"create-as-protected-version\"\n checkedValue={CHECKED_VALUE}\n onInput={this.#handleCheckBoxValueChange}\n caption={\n this.#componentLocale.labels.createAsProtectedVersion\n }\n ></ch-checkbox>\n </div>\n )}\n </div>\n )}\n </div>\n\n <footer class=\"dialog-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n id=\"cancel-button\"\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.buttons.cancel}\n </button>\n\n <button\n id=\"create-button\"\n class=\"button-primary\"\n onClick={this.#createClickHandler}\n disabled={createButtonDisabled}\n >\n {this.#componentLocale.buttons.create}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type NewVersionData = {\n versionName: string;\n versionDescription: string;\n setNewVersionAsActive?: boolean;\n createLocalLinkedVersion?: boolean;\n createProtectedVersion?: boolean;\n};\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAgB;;;;;;;;;;;;;;;;;ACqBtB,MAAMC,IAA8B,EAClC,qBACA,cACA,iBACA,gBACA,uBACA,uBACA,qBACA,mBACA;;cAIF;MAAMC,IAAgB;;AACtB,MAAMC,IAA+B;;AACrC,MAAMC,IAAiC;;AACvC,MAAMC,IAAiC;;MAQ1BC,IAAe;;;;;;;QAK1BC,EAAAC,IAAAC,WAAA;IAEAC,EAAAF,IAAAC,WAAA;IACAE,EAAAH,IAAAC,MAAgBG,EAAa;IAkF7BC,EAAAL,IAAAC,OACEK;MAEA,MAAMC,IAASD,EAAMC;MACrB,IAAIA,EAAOC,OAAOb,GAA8B;QAC9CM,KAAKQ,wBAAwBH,EAAMI,WAAWhB;aACzC,IAAIa,EAAOC,OAAOZ,GAAgC;QACvDK,KAAKU,2BAA2BL,EAAMI,WAAWhB;aAC5C,IAAIa,EAAOC,OAAOX,GAAgC;QACvDI,KAAKW,2BAA2BN,EAAMI,WAAWhB;;;IAIrDmB,EAAAb,IAAAC,OAA0BK;MACxBL,KAAKa,cAAcR,EAAMI;MACzB,KAAKT,KAAKc,0BAA0B;QAClCd,KAAKe,qBAAqBV,EAAMI;;;IAIpCO,EAAAjB,IAAAC,OAAiCK;MAC/BL,KAAKe,qBAAqBV,EAAMI;MAChC,IAAIT,KAAKe,uBAAuB,IAAI;QAClCf,KAAKc,2BAA2B;QAChCd,KAAKe,qBAAqBf,KAAKa;aAC1B;QACLb,KAAKc,2BAA2B;;;IAIpCG,EAAAlB,IAAAC,OAAsBkB;MACpBlB,KAAKmB;AAAgB;IAGvBC,EAAArB,IAAAC,OAAsBkB;MACpB,MAAMG,IAAiC;QACrCR,aAAab,KAAKa;QAClBE,oBAAoBf,KAAKe;QACzBP,uBAAuBR,KAAKQ;QAC5Bc,0BAA0BtB,KAAKU;QAC/Ba,wBAAwBvB,KAAKW;;MAE/B,MAAMa,UAAyBxB,KAAKyB,eAAeJ;MACnDrB,KAAK0B,sBAAsBC,EACzBH,GACAxB,KAAK0B;AACN;IAGHE,EAAA7B,IAAAC,OAAiC;;MAE/B,MAAM0B,IAAqC,EAACG,EAAA7B,MAAIC,GAAA;MAChDyB,EAAoBI,SAAQC;QAC1B,IAAIA,EAAmBxB,IAAI;UACzBP,KAAK0B,oBAAoB3B,IAAIgC,EAAmBxB,IAAI;YAClDyB,WAAWD;YACXE,UAAU;YACVC,SAASC;;;;AAGb;;;QAKJC,EAAArC,IAAAC,OACEqC;;MAEA,SAAAC,KAAAC,IAAAvC,KAAK0B,yBAAmB,QAAAa,WAAA,aAAAA,EAAEC,IAAIH,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkB9B,SAAG,QAAA+B,WAAA,aAAAA,EAAEL,eACrDQ,IAAAzC,KAAK0B,oBAAoBc,IAAIH,EAAiB9B,SAAG,QAAAkC,WAAA,aAAAA,EAAEP,YACjDQ,EAAA;QACEC,OAAM;QACNC,eAAeP;QACfQ,YAAYC,EAAOC,gBAAgBF;QACnCG,aAAaF,EAAOC,gBAAgBC;QACpCC,OAAOH,EAAOC,gBAAgBE;SAE7BjD,KAAK0B,oBAAoBc,IAAIH,EAAiB9B,IAAI2B;AAEtD;;;oCAhJ0C;iCAKH;oCAKG;oCAKA;+BAEd,IAAIgB;6BAKW;6BAKA;0CAKa;;;;;EAmB3D,yBAAAC,CAA0BC;IACxBpD,KAAKa,cAAcuC,MAAqB,QAArBA,WAAqB,aAArBA,EAAuBvC;IAC1Cb,KAAKe,qBAAqBqC,MAAqB,QAArBA,WAAqB,aAArBA,EAAuBrC;;EAGnD,uBAAMsC;IACJC,EAAAtD,MAAIF,SAA0ByD,EAAOC,oBAAoBxD,KAAKyD,KAAG;IACjEzD,KAAKmD,0BAA0BnD,KAAK0D;;EAGtC,gBAAAC;IACE9B,EAAA7B,MAAI4B,GAAA,KAA+BgC,KAAnC5D;;EAoFF,MAAA6D;IACE,MAAMC,KACH9D,KAAKa,eAAeb,KAAKa,YAAYkD,WAAW;IAEnD,OACErB,EAACsB,GAAI;MAACrB,OAAM;OACVD,EAAA;MAAUuB,OAAOzE;QACjBkD,EAAA;MAAcwB,KAAKrC,EAAA7B,MAAIE,GAAA;QACvBwC,EAAA;MAASC,OAAM;OACbD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQwB,SAAQ;OAC1BtC,EAAA7B,MAAIF,GAAA,KAAkBsE,OAAOC,OAEhC3B,EAAA;MACE4B,MAAK;MACL/D,IAAG;MACHoC,OAAM;MACN4B,aAAa1C,EAAA7B,MAAIF,GAAA,KAAkB0E,aAAaH;MAChDI,OAAOzE,KAAKa;MACZ6D,SAAS7C,EAAA7B,MAAIY,GAAA;MACb+D,KAAMlB,KACHH,EAAAtD,MAAIC,GAAkBwD,GAAuB;MAEhDmB,WAAS;QAEV/C,EAAA7B,MAAIoC,GAAA,KAAuBwB,KAA3B5D,MAA4B6B,EAAA7B,MAAIC,GAAA,QAEnCyC,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQwB,SAAQ;OAC1BtC,EAAA7B,MAAIF,GAAA,KAAkBsE,OAAOS,cAEhCnC,EAAA;MACE4B,MAAK;MACL/D,IAAG;MACHoC,OAAM;MACN4B,aAAa1C,EAAA7B,MAAIF,GAAA,KAAkB0E,aAAaK;MAChDJ,OAAOzE,KAAKe;MACZ2D,SAAS7C,EAAA7B,MAAIgB,GAAA;UAGfhB,KAAK8E,oBACLpC,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAM;MACNpC,IAAG;MACHwE,cAActF;MACdiF,SAAS7C,EAAA7B,MAAII,GAAA;MACb4E,SAASnD,EAAA7B,MAAIF,GAAA,KAAkBsE,OAAOa;UAI1CvC,EAAA;MAAKC,OAAM;OACR3C,KAAKkF,kCACJxC,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAM;MACNpC,IAAG;MACHwE,cAActF;MACdiF,SAAS7C,EAAA7B,MAAII,GAAA;MACb4E,SACEnD,EAAA7B,MAAIF,GAAA,KAAkBsE,OAAO1D;UAKnCV,KAAKmF,qBACLzC,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAM;MACNpC,IAAG;MACHwE,cAActF;MACdiF,SAAS7C,EAAA7B,MAAII,GAAA;MACb4E,SACEnD,EAAA7B,MAAIF,GAAA,KAAkBsE,OAAOzD;WAS3C+B,EAAA;MAAQC,OAAM;OACZD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEnC,IAAG;MACHoC,OAAM;MACNyC,SAASvD,EAAA7B,MAAIiB,GAAA;OAEZY,EAAA7B,MAAIF,GAAA,KAAkBuF,QAAQC,SAGjC5C,EAAA;MACEnC,IAAG;MACHoC,OAAM;MACNyC,SAASvD,EAAA7B,MAAIoB,GAAA;MACbmE,UAAUzB;OAETjC,EAAA7B,MAAIF,GAAA,KAAkBuF,QAAQG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapTeamsToComboBoxItemModel","teams","map","team","value","id","caption","name","selectUserTeamCss","COPYRIGHTS_ILLUSTRATION","getAssetPath","ICON_NEXT","CSS_BUNDLES","GxIdeSelectUserTeam","_GxIdeSelectUserTeam_componentLocale","set","this","_GxIdeSelectUserTeam_userTeamsModel","_GxIdeSelectUserTeam_chSelectTeamEl","_GxIdeSelectUserTeam_displayTeamsTransitionTime","_GxIdeSelectUserTeam_continueHandler","async","continueCallback","__classPrivateFieldGet","_GxIdeSelectUserTeam_cancelHandler","cancelCallback","teamsChanged","newTeams","slideIsVisible","setTimeout","length","__classPrivateFieldSet","teamsModelReady","componentWillLoad","Locale","getComponentStrings","el","style","setProperty","toString","componentDidLoad","render","h","Host","model","class","src","alt","slide__main","title","infoMessage","htmlFor","accessibleName","_a","ref","onClick","continueButtonCaption","cancelButtonCaption","show","loaderTitle","loader","description"],"sources":["src/components/select-user-team/helpers.tsx","src/components/select-user-team/select-user-team.scss?tag=gx-ide-select-user-team&encapsulation=shadow","src/components/select-user-team/select-user-team.tsx"],"sourcesContent":["import { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { TeamData } from \"./select-user-team\";\n\nexport const mapTeamsToComboBoxItemModel = (\n teams: TeamData[]\n): ComboBoxItemModel[] => {\n return teams?.map(team => {\n return {\n value: team.id,\n caption: team.name\n };\n });\n};\n",":host {\n display: grid;\n container-type: inline-size;\n container-name: host-container;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.slide {\n display: grid;\n grid-template-columns: 1fr 1fr;\n block-size: 100%;\n max-block-size: 700px;\n max-inline-size: 1100px;\n background-color: var(--color-accent-surface-elevation-1);\n overflow: hidden;\n\n &__illustration {\n overflow: hidden;\n object-fit: cover;\n object-position: left;\n block-size: 100%;\n inline-size: 100%;\n }\n\n &__main {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: 48px;\n transform: translateY(4px);\n transition: var(--display-teams-transtion-time) all;\n opacity: 0;\n\n position: relative;\n\n &--visible {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n &__main-container {\n display: grid;\n place-self: center;\n gap: var(--spacing-gap-xxl);\n max-inline-size: 480px;\n }\n\n &__main-header {\n display: grid;\n gap: var(--spacing-gap-xxl);\n }\n\n &__main-title {\n display: flex;\n flex-direction: column;\n font-size: var(--font-size-header-h2);\n font-weight: var(--font-style-semi-bold);\n letter-spacing: 0.02em;\n color: var(--color-text-neutral-strawberry);\n }\n\n &__main-description {\n display: grid;\n gap: 40px;\n font-size: var(--font-size-body-l);\n font-weight: var(--font-style-regular);\n line-height: var(--line-height-spacious);\n color: var(--color-text-neutral-disabled);\n }\n}\n\n.terms-conditions {\n text-decoration: underline;\n}\n\n.teams-list {\n inline-size: 100%;\n max-inline-size: 400px;\n}\n\n.buttons-container {\n display: flex;\n gap: var(--spacing-gap-xl);\n}\n\n.continue-btn,\n.cancel-btn {\n flex: 1;\n}\n\n@container host-container (max-width: 768px) {\n .slide {\n grid-template-columns: 1fr 2fr;\n }\n}\n\n@container host-container (max-width: 640px) {\n .slide {\n grid-template-columns: 1fr 5fr;\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n State,\n Watch,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\nimport { mapTeamsToComboBoxItemModel } from \"./helpers\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/welcome-page/images/copyrights-illustration.png`\n);\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\",\n \"components/combo-box\"\n];\n\n@Component({\n tag: \"gx-ide-select-user-team\",\n styleUrl: \"select-user-team.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-user-team\"]\n})\nexport class GxIdeSelectUserTeam {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n // Select User Team References :\n #userTeamsModel: ComboBoxItemModel[] = [];\n #chSelectTeamEl: HTMLChComboBoxRenderElement;\n #displayTeamsTransitionTime: number = 100;\n\n @Element() el: HTMLGxIdeSelectUserTeamElement;\n\n /**\n * Defines if the main slide is visible or not. Used for smooth transitions between slides.\n */\n @State() slideIsVisible: boolean = false;\n\n /**\n * Defines if the team model is redy to be rendered.\n */\n @State() teamsModelReady: boolean = false;\n\n /**\n * Callback executed when the user clicks the 'Cancel' button\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks the 'Continue' button\n */\n @Prop() readonly continueCallback!: (teamId: string) => Promise<void>;\n\n /**\n * Array that contains the user's teams\n */\n @Prop() readonly teams!: TeamData[];\n @Watch(\"teams\")\n teamsChanged(newTeams: TeamData[]) {\n this.slideIsVisible = false;\n // switch step\n setTimeout(() => {\n if (newTeams.length) {\n this.#userTeamsModel = mapTeamsToComboBoxItemModel(newTeams);\n this.teamsModelReady = true;\n } else {\n this.teamsModelReady = false;\n }\n }, this.#displayTeamsTransitionTime);\n // show slide\n setTimeout(() => {\n this.slideIsVisible = true;\n }, this.#displayTeamsTransitionTime * 2);\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.teamsChanged(this.teams);\n\n this.el.style.setProperty(\n \"--display-teams-transtion-time\",\n this.#displayTeamsTransitionTime.toString() + \"ms\"\n );\n }\n\n componentDidLoad() {\n this.slideIsVisible = true;\n }\n\n #continueHandler = async () => {\n await this.continueCallback(this.#chSelectTeamEl.value);\n };\n\n #cancelHandler = async () => {\n await this.cancelCallback();\n };\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"slide\">\n <img\n src={COPYRIGHTS_ILLUSTRATION}\n class=\"slide__illustration\"\n alt=\"\" // decorative\n />\n\n <div\n class={{\n \"slide__main\": true,\n \"slide__main--visible\": this.slideIsVisible\n }}\n >\n <div class=\"slide__main-container\">\n {this.teamsModelReady ? (\n [\n <header class=\"slide__main-header\">\n <img\n src={ICON_NEXT}\n alt=\"\" // decorative\n />\n <h2\n // Split the title into two spans for better styling\n class=\"slide__main-title\"\n >\n <span>{this.#componentLocale.title}</span>\n </h2>\n </header>,\n <div class=\"slide__select-team-description\">\n <p class=\"body-semi-bold-l\">\n {this.#componentLocale.infoMessage}\n </p>\n </div>,\n <div class=\"field-group\">\n <div class=\"field field-block\">\n <label htmlFor=\"teams\">\n {this.#componentLocale.teams}\n </label>\n <ch-combo-box-render\n id=\"teams\"\n accessibleName=\"Teams\"\n class=\"combo-box teams-list\"\n model={this.#userTeamsModel}\n value={\n this.#userTeamsModel && this.#userTeamsModel[0]?.value\n }\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#chSelectTeamEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n </div>,\n <div class=\"buttons-container\">\n <button\n class=\"button-primary continue-btn\"\n onClick={this.#continueHandler}\n >\n {this.#componentLocale.continueButtonCaption}\n </button>\n <button\n class=\"button-secondary cancel-btn\"\n onClick={this.#cancelHandler}\n >\n {this.#componentLocale.cancelButtonCaption}\n </button>\n </div>\n ]\n ) : (\n <gx-ide-loader\n show\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n ></gx-ide-loader>\n )}\n </div>\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type TeamData = {\n id: string;\n name: string;\n};\n"],"mappings":";;;;AAGO,MAAMA,8BACXC,KAEOA,MAAK,QAALA,WAAK,aAALA,EAAOC,KAAIC,MACT;EACLC,OAAOD,EAAKE;EACZC,SAASH,EAAKI;;;ACTpB,MAAMC,IAAoB;;;;;;;;;;;;;;;;;ACkB1B,MAAMC,IAA0BC,EAC9B;;AAEF,MAAMC,IAAYD,EAChB;;AAEF,MAAME,IAA8B,EAClC,qBACA,oBACA,qBACA;;MASWC,IAAmB;;;;;;;QAK9BC,EAAAC,IAAAC,WAAA;;QAEAC,EAAAF,IAAAC,MAAuC;IACvCE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,MAAsC;IA4DtCI,EAAAL,IAAAC,OAAmBK;YACXL,KAAKM,iBAAiBC,EAAAP,MAAIE,GAAA,KAAiBd;AAAM;IAGzDoB,EAAAT,IAAAC,OAAiBK;YACTL,KAAKS;AAAgB;0BA1DM;2BAKC;;;;;EAiBpC,YAAAC,CAAaC;IACXX,KAAKY,iBAAiB;;QAEtBC,YAAW;MACT,IAAIF,EAASG,QAAQ;QACnBC,EAAAf,MAAIC,GAAmBjB,4BAA4B2B,IAAS;QAC5DX,KAAKgB,kBAAkB;aAClB;QACLhB,KAAKgB,kBAAkB;;QAExBT,EAAAP,MAAIG,GAAA;;QAEPU,YAAW;MACTb,KAAKY,iBAAiB;AAAI,QACzBL,EAAAP,MAAIG,GAAA,OAA+B;;EAGxC,uBAAMc;IACJF,EAAAf,MAAIF,SAA0BoB,EAAOC,oBAAoBnB,KAAKoB,KAAG;IACjEpB,KAAKU,aAAaV,KAAKf;IAEvBe,KAAKoB,GAAGC,MAAMC,YACZ,kCACAf,EAAAP,MAAIG,GAAA,KAA6BoB,aAAa;;EAIlD,gBAAAC;IACExB,KAAKY,iBAAiB;;EAWxB,MAAAa;;IACE,OACEC,EAACC,GAAI,MACHD,EAAA;MAAUE,OAAOhC;QACjB8B,EAAA;MAASG,OAAM;OACbH,EAAA;MACEI,KAAKrC;MACLoC,OAAM;MACNE,KAAI;QAGNL,EAAA;MACEG,OAAO;QACLG,aAAe;QACf,wBAAwBhC,KAAKY;;OAG/Bc,EAAA;MAAKG,OAAM;OACR7B,KAAKgB,kBAAe,EAEjBU,EAAA;MAAQG,OAAM;OACZH,EAAA;MACEI,KAAKnC;MACLoC,KAAI;QAENL,EAAA;;MAEEG,OAAM;OAENH,EAAA,cAAOnB,EAAAP,MAAIF,GAAA,KAAkBmC,UAGjCP,EAAA;MAAKG,OAAM;OACTH,EAAA;MAAGG,OAAM;OACNtB,EAAAP,MAAIF,GAAA,KAAkBoC,eAG3BR,EAAA;MAAKG,OAAM;OACTH,EAAA;MAAKG,OAAM;OACTH,EAAA;MAAOS,SAAQ;OACZ5B,EAAAP,MAAIF,GAAA,KAAkBb,QAEzByC,EAAA;MACErC,IAAG;MACH+C,gBAAe;MACfP,OAAM;MACND,OAAOrB,EAAAP,MAAIC,GAAA;MACXb,OACEmB,EAAAP,MAAIC,GAAA,UAAoBoC,IAAA9B,EAAAP,MAAIC,GAAA,KAAiB,QAAE,QAAAoC,WAAA,aAAAA,EAAEjD;MAEnDkD,KAAMlB,KACHL,EAAAf,MAAIE,GACHkB,GAAiC;UAK3CM,EAAA;MAAKG,OAAM;OACTH,EAAA;MACEG,OAAM;MACNU,SAAShC,EAAAP,MAAII,GAAA;OAEZG,EAAAP,MAAIF,GAAA,KAAkB0C,wBAEzBd,EAAA;MACEG,OAAM;MACNU,SAAShC,EAAAP,MAAIQ,GAAA;OAEZD,EAAAP,MAAIF,GAAA,KAAkB2C,0BAK7Bf,EAAA;MACEgB,MAAI;MACJC,aAAapC,EAAAP,MAAIF,GAAA,KAAkB8C,OAAOX;MAC1CY,aAAatC,EAAAP,MAAIF,GAAA,KAAkB8C,OAAOC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["commentsViewerCss","CSS_BUNDLES","GxIdeCommentsViewer","_GxIdeCommentsViewer_componentLocale","set","this","_GxIdeCommentsViewer_renderCommentItem","commentData","h","class","formatDate","Date","date","user","comment","_GxIdeCommentsViewer_renderFooter","onClick","__classPrivateFieldGet","_GxIdeCommentsViewer_closeHandler","buttons","close","async","closeCallback","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","render","Host","model","commentsData","map","idx","call","length"],"sources":["src/components/_helpers/comments-viewer/comments-viewer.scss?tag=gx-ide-comments-viewer&encapsulation=shadow","src/components/_helpers/comments-viewer/comments-viewer.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.comment-item {\n display: flex;\n flex-direction: column;\n gap: var(--control-mer-control-label-vertical-spacing, 4px);\n}\n\n.comments-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xl);\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.divider {\n border: none;\n border-top: 1px solid var(--color-border-surface-on-elevation-1, #333d47);\n margin: 0;\n}\n\n.row {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xl);\n}\n\n.comments-container {\n overflow-y: auto;\n flex: 1;\n}\n\n.comment-title {\n color: var(--mer-color__neutral-gray--400);\n}\n","import { MercuryBundles } from \"@genexus/mercury\";\nimport { Component, Element, Host, Prop, h } from \"@stencil/core\";\nimport { formatDate } from \"../../../common/helpers\";\nimport { Locale } from \"../../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-comments-viewer\",\n styleUrl: \"comments-viewer.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/comments-viewer\"]\n})\nexport class GxIdeCommentsViewer {\n #componentLocale: any;\n @Element() el: HTMLGxIdeCommentsViewerElement;\n\n /**\n * Comments data to display\n */\n @Prop() readonly commentsData: CommentData[] = [];\n\n /**\n * Callback to be executed when the user closes the viewer\n */\n @Prop() readonly closeCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #renderCommentItem = (commentData: CommentData) => {\n return (\n <div class=\"comment-item\">\n <header>\n <span class=\"body-semi-bold-s comment-title\">\n {formatDate(new Date(commentData.date))} - {commentData.user}\n </span>\n </header>\n\n <p class=\"body-regular-m\">{commentData.comment}</p>\n </div>\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button class=\"button-primary\" onClick={this.#closeHandler}>\n {this.#componentLocale.buttons.close}\n </button>\n </div>\n </footer>\n );\n };\n\n #closeHandler = async () => {\n await this.closeCallback();\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"spacing-body comments-container scrollable\">\n <ul class=\"comments-list\">\n {this.commentsData.map((comment, idx) => (\n <li class=\"row\">\n {this.#renderCommentItem(comment)}\n\n {idx < this.commentsData.length - 1 && <hr class=\"divider\" />}\n </li>\n ))}\n </ul>\n </div>\n {this.#renderFooter()}\n </Host>\n );\n }\n}\n\nexport type CommentData = {\n date: string;\n user: string;\n comment: string;\n};\n"],"mappings":";;;;;;AAAA,MAAMA,IAAoB;;;;;;;;;;;;;;;;;ACK1B,MAAMC,IAA8B,EAClC,qBACA,oBACA,gBACA,oBACA,iBACA;;MASWC,IAAmB;;;IAC9BC,EAAAC,IAAAC,WAAA;IAiBAC,EAAAF,IAAAC,OAAsBE,KAElBC,EAAA;MAAKC,OAAM;OACTD,EAAA,gBACEA,EAAA;MAAMC,OAAM;OACTC,EAAW,IAAIC,KAAKJ,EAAYK,QAAM,OAAKL,EAAYM,QAI5DL,EAAA;MAAGC,OAAM;OAAkBF,EAAYO;IAK7CC,EAAAX,IAAAC,OAAgB,MAEZG,EAAA;MAAQC,OAAM;OACZD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAQC,OAAM;MAAiBO,SAASC,EAAAZ,MAAIa,GAAA;OACzCD,EAAAZ,MAAIF,GAAA,KAAkBgB,QAAQC;IAOzCF,EAAAd,IAAAC,OAAgBgB;YACRhB,KAAKiB;AAAe;wBAtCmB;;;EAO/C,uBAAMC;IACJC,EAAAnB,MAAIF,SAA0BsB,EAAOC,oBAAoBrB,KAAKsB,KAAG;;EAiCnE,MAAAC;IACE,OACEpB,EAACqB,GAAI;MAACpB,OAAM;OACVD,EAAA;MAAUsB,OAAO7B;QACjBO,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAIC,OAAM;OACPJ,KAAK0B,aAAaC,KAAI,CAAClB,GAASmB,MAC/BzB,EAAA;MAAIC,OAAM;OACPQ,EAAAZ,MAAIC,GAAA,KAAmB4B,KAAvB7B,MAAwBS,IAExBmB,IAAM5B,KAAK0B,aAAaI,SAAS,KAAK3B,EAAA;MAAIC,OAAM;aAKxDQ,EAAAZ,MAAIU,GAAA,KAAcmB,KAAlB7B"}
|