@genexus/genexus-ide-ui 1.1.26 → 1.1.28
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/{common-8c725d8c.js → common-8e7923c5.js} +2 -2
- package/dist/cjs/{common-8c725d8c.js.map → common-8e7923c5.js.map} +1 -1
- package/dist/cjs/genexus-ide-ui.cjs.js +2 -2
- package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-card.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-container_2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +162 -0
- package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-file-item.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +2 -6
- package/dist/cjs/gx-ide-sc-chat-container.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-user-team.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-sign-in.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-sign-in.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-switch-panel.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-switcher.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-top-bar.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js +77 -30
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
- package/dist/cjs/{helpers-b30b36b4.js → helpers-8e625231.js} +2 -2
- package/dist/cjs/{helpers-b30b36b4.js.map → helpers-8e625231.js.map} +1 -1
- package/dist/cjs/{index-e227aefb.js → index-408303ce.js} +9 -4
- package/dist/cjs/index-408303ce.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{render-list-item-7c6449c4.js → render-list-item-5c33517f.js} +2 -2
- package/dist/cjs/{render-list-item-7c6449c4.js.map → render-list-item-5c33517f.js.map} +1 -1
- package/dist/cjs/{utilities-0b308992.js → utilities-d0de7967.js} +2 -2
- package/dist/cjs/{utilities-0b308992.js.map → utilities-d0de7967.js.map} +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
- package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
- package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
- package/dist/collection/components/curl-inspector/curl-inspector.css +50 -0
- package/dist/collection/components/curl-inspector/curl-inspector.js +327 -0
- package/dist/collection/components/curl-inspector/curl-inspector.js.map +1 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
- package/dist/collection/components/sign-in/sign-in.css +0 -1
- package/dist/collection/components/start-page/start-page.js +2 -2
- package/dist/collection/components/start-page/start-page.js.map +1 -1
- package/dist/collection/components/ww-files/ww-files.js +76 -29
- package/dist/collection/components/ww-files/ww-files.js.map +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js +1 -5
- package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
- package/dist/collection/testing/locale.e2e.js +2 -1
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/gx-ide-curl-inspector.d.ts +11 -0
- package/dist/components/gx-ide-curl-inspector.js +194 -0
- package/dist/components/gx-ide-curl-inspector.js.map +1 -0
- package/dist/components/gx-ide-sc-chat-container.js +1 -5
- package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
- package/dist/components/gx-ide-sign-in.js +1 -1
- package/dist/components/gx-ide-sign-in.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +2 -2
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/components/gx-ide-ww-files.js +75 -28
- package/dist/components/gx-ide-ww-files.js.map +1 -1
- package/dist/esm/{common-c25d8c2f.js → common-c8407100.js} +2 -2
- package/dist/esm/{common-c25d8c2f.js.map → common-c8407100.js.map} +1 -1
- package/dist/esm/genexus-ide-ui.js +3 -3
- package/dist/esm/gx-ide-about.entry.js +1 -1
- package/dist/esm/gx-ide-ai-assistant.entry.js +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +2 -2
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-files.entry.js +2 -2
- package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-objects-selector.entry.js +2 -2
- package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
- package/dist/esm/gx-ide-card.entry.js +1 -1
- package/dist/esm/gx-ide-chat-container_2.entry.js +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
- package/dist/esm/gx-ide-container_2.entry.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
- package/dist/esm/gx-ide-curl-inspector.entry.js +158 -0
- package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -0
- package/dist/esm/gx-ide-current-user-info.entry.js +1 -1
- package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
- package/dist/esm/gx-ide-data-selector.entry.js +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
- package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
- package/dist/esm/gx-ide-design-import.entry.js +1 -1
- package/dist/esm/gx-ide-directory-selector.entry.js +1 -1
- package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
- package/dist/esm/gx-ide-empty-state.entry.js +1 -1
- package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
- package/dist/esm/gx-ide-file-item.entry.js +1 -1
- package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
- package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
- package/dist/esm/gx-ide-loader.entry.js +1 -1
- package/dist/esm/gx-ide-manage-module-references-v2.entry.js +2 -2
- package/dist/esm/gx-ide-manage-module-references.entry.js +2 -2
- package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +3 -3
- package/dist/esm/gx-ide-new-kb.entry.js +3 -3
- package/dist/esm/gx-ide-new-object.entry.js +1 -1
- package/dist/esm/gx-ide-new-version.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +2 -2
- package/dist/esm/gx-ide-open-api-import.entry.js +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js +1 -1
- package/dist/esm/gx-ide-plugin-explorer.entry.js +1 -1
- package/dist/esm/gx-ide-references.entry.js +1 -1
- package/dist/esm/gx-ide-sc-chat-container.entry.js +2 -6
- package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
- package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +1 -1
- package/dist/esm/gx-ide-sign-in-team.entry.js +1 -1
- package/dist/esm/gx-ide-sign-in.entry.js +2 -2
- package/dist/esm/gx-ide-sign-in.entry.js.map +1 -1
- package/dist/esm/gx-ide-splash.entry.js +2 -2
- package/dist/esm/gx-ide-start-page.entry.js +3 -3
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
- package/dist/esm/gx-ide-switch-panel.entry.js +1 -1
- package/dist/esm/gx-ide-switcher.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
- package/dist/esm/gx-ide-team-dev-history.entry.js +3 -3
- package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
- package/dist/esm/gx-ide-template.entry.js +1 -1
- package/dist/esm/gx-ide-test.entry.js +1 -1
- package/dist/esm/gx-ide-top-bar.entry.js +1 -1
- package/dist/esm/gx-ide-welcome-page.entry.js +1 -1
- package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
- package/dist/esm/gx-ide-ww-files.entry.js +77 -30
- package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +3 -3
- package/dist/esm/{helpers-a4f16ffb.js → helpers-37946d65.js} +2 -2
- package/dist/esm/{helpers-a4f16ffb.js.map → helpers-37946d65.js.map} +1 -1
- package/dist/esm/{index-10af18cf.js → index-25ff5600.js} +9 -4
- package/dist/esm/index-25ff5600.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{render-list-item-f5836c31.js → render-list-item-b79501ca.js} +2 -2
- package/dist/esm/{render-list-item-f5836c31.js.map → render-list-item-b79501ca.js.map} +1 -1
- package/dist/esm/{utilities-00ec1b22.js → utilities-76a18030.js} +2 -2
- package/dist/esm/{utilities-00ec1b22.js.map → utilities-76a18030.js.map} +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +3 -3
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
- package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
- package/dist/genexus-ide-ui/{p-0c0eb8ae.js → p-0090f914.js} +2 -2
- package/dist/genexus-ide-ui/{p-0a0ab008.entry.js → p-04597fd0.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-6b957e82.entry.js → p-06fbe725.entry.js} +3 -3
- package/dist/genexus-ide-ui/p-06fbe725.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-75d6c740.entry.js → p-070628a8.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-bfe3277f.entry.js → p-0e2da68a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ded7444c.entry.js → p-1191a6f0.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-8e34e92b.entry.js → p-149e771e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-1664d366.entry.js → p-1622e339.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-1dd7be84.entry.js → p-1bb1c9cc.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-46ffec64.entry.js → p-2698d51a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-4ad7826c.entry.js → p-277999c2.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-731b8947.entry.js → p-29db37fd.entry.js} +4 -5
- package/dist/genexus-ide-ui/p-29db37fd.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-e9f8b156.entry.js → p-2e0ace7b.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e7fb3ee3.entry.js → p-2e559ead.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-5ff6fe1d.entry.js → p-2e8b3151.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-05b04291.entry.js → p-3090813a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d4ca8530.entry.js → p-312ea200.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-11b8f81d.entry.js → p-32262d7f.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-f722955f.entry.js → p-34af745b.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-68969051.entry.js → p-36e62da4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-4bb2c398.entry.js → p-3d143a80.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-25a9f1d7.js → p-4406e156.js} +11 -5
- package/dist/genexus-ide-ui/p-4406e156.js.map +1 -0
- package/dist/genexus-ide-ui/{p-b58fb87b.entry.js → p-44eacccd.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-e162771e.entry.js → p-45267d6e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-94904819.entry.js → p-4cafeee4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-0937c905.entry.js → p-52d48fba.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-e02e3694.entry.js → p-541c43a2.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-9d985956.entry.js → p-5770d8b7.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-8c0b4d9f.js → p-5cb98d5b.js} +2 -2
- package/dist/genexus-ide-ui/{p-dce532ea.entry.js → p-61c8d171.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-8714eeb1.entry.js → p-693be6bb.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-538594e2.entry.js → p-6c0cc0fc.entry.js} +6 -6
- package/dist/genexus-ide-ui/{p-d7a91333.js → p-6c5cc7e2.js} +19 -19
- package/dist/genexus-ide-ui/{p-04c6bd23.entry.js → p-74882b8f.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-1bc2613e.entry.js → p-7884efd9.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-19d197c5.entry.js → p-78d65da3.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-f49bb305.entry.js → p-7965af56.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d095a37c.entry.js → p-7a8aeb4e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-960d9108.entry.js → p-7ba4e229.entry.js} +5 -5
- package/dist/genexus-ide-ui/{p-957046fd.js → p-7c2a9252.js} +9 -9
- package/dist/genexus-ide-ui/{p-e24902a0.entry.js → p-7de1daee.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-a708a870.entry.js → p-7f756647.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-45996535.entry.js → p-811ff88b.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-35f9ebbc.entry.js → p-832ec678.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-4b38fffc.entry.js → p-847cd613.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-f52ea9d4.entry.js → p-8657d13c.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-6e958b79.entry.js → p-888d029f.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-05f1ff03.entry.js → p-8b4fac7e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-2d04b927.entry.js → p-987081c1.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-cbe2dd13.entry.js → p-9b2a1619.entry.js} +5 -5
- package/dist/genexus-ide-ui/{p-b2928645.entry.js → p-9d5dc6a7.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d8379699.entry.js → p-9e15d58d.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-f3f068f6.entry.js → p-9e8a71db.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-304d5629.entry.js → p-a29936cd.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-86365635.entry.js → p-a4c35113.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-494b3955.entry.js → p-a5de63cc.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-f4a60017.entry.js → p-a7194c97.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-de7f0c1f.entry.js → p-a92f1884.entry.js} +11 -11
- package/dist/genexus-ide-ui/{p-f83ceb69.entry.js → p-aae7f543.entry.js} +6 -4
- package/dist/genexus-ide-ui/p-aae7f543.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-c3abc0f5.entry.js → p-afd84bc7.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-03dbccde.entry.js → p-b3aa0ecb.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-88581fe4.entry.js → p-ba9b9aa5.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-c3400671.entry.js +217 -0
- package/dist/genexus-ide-ui/p-c3400671.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-80c1ddc3.entry.js → p-cd8831e4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-caa5ee2f.entry.js → p-ddbd4891.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-2ad98d24.entry.js → p-de83b5d7.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-36c7a87b.entry.js → p-df148798.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-4328be14.entry.js → p-e0eda984.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-5e7f8ae6.entry.js → p-e267e84e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-163bfc6a.entry.js → p-e27f0e14.entry.js} +268 -234
- package/dist/genexus-ide-ui/p-e27f0e14.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-14165308.entry.js → p-e40929cd.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-f7421997.entry.js → p-e94c0ad6.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c58e0a92.entry.js → p-eaa0d5ce.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-3dbd3842.entry.js → p-eb3caba5.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-767e0f6d.entry.js → p-eea24d19.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-b1851e6b.entry.js → p-f15c84ab.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-fa52a417.entry.js → p-f5157be1.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-31beae9e.entry.js → p-fb62d808.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-b0aa8cdb.entry.js → p-fdd75b9c.entry.js} +3 -3
- package/dist/types/components/curl-inspector/curl-inspector.d.ts +56 -0
- package/dist/types/components/ww-files/ww-files.d.ts +2 -1
- package/dist/types/components.d.ts +126 -55
- package/package.json +1 -1
- package/dist/cjs/index-e227aefb.js.map +0 -1
- package/dist/esm/index-10af18cf.js.map +0 -1
- package/dist/genexus-ide-ui/p-163bfc6a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-25a9f1d7.js.map +0 -1
- package/dist/genexus-ide-ui/p-6b957e82.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-731b8947.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-f83ceb69.entry.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-0c0eb8ae.js.map → p-0090f914.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-0a0ab008.entry.js.map → p-04597fd0.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-75d6c740.entry.js.map → p-070628a8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-bfe3277f.entry.js.map → p-0e2da68a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ded7444c.entry.js.map → p-1191a6f0.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-8e34e92b.entry.js.map → p-149e771e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-1664d366.entry.js.map → p-1622e339.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-1dd7be84.entry.js.map → p-1bb1c9cc.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-46ffec64.entry.js.map → p-2698d51a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4ad7826c.entry.js.map → p-277999c2.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e9f8b156.entry.js.map → p-2e0ace7b.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e7fb3ee3.entry.js.map → p-2e559ead.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-5ff6fe1d.entry.js.map → p-2e8b3151.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-05b04291.entry.js.map → p-3090813a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d4ca8530.entry.js.map → p-312ea200.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-11b8f81d.entry.js.map → p-32262d7f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f722955f.entry.js.map → p-34af745b.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-68969051.entry.js.map → p-36e62da4.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4bb2c398.entry.js.map → p-3d143a80.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b58fb87b.entry.js.map → p-44eacccd.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e162771e.entry.js.map → p-45267d6e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-94904819.entry.js.map → p-4cafeee4.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-0937c905.entry.js.map → p-52d48fba.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e02e3694.entry.js.map → p-541c43a2.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-9d985956.entry.js.map → p-5770d8b7.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-8c0b4d9f.js.map → p-5cb98d5b.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-dce532ea.entry.js.map → p-61c8d171.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-8714eeb1.entry.js.map → p-693be6bb.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-538594e2.entry.js.map → p-6c0cc0fc.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d7a91333.js.map → p-6c5cc7e2.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-04c6bd23.entry.js.map → p-74882b8f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-1bc2613e.entry.js.map → p-7884efd9.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-19d197c5.entry.js.map → p-78d65da3.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f49bb305.entry.js.map → p-7965af56.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d095a37c.entry.js.map → p-7a8aeb4e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-960d9108.entry.js.map → p-7ba4e229.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-957046fd.js.map → p-7c2a9252.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e24902a0.entry.js.map → p-7de1daee.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-a708a870.entry.js.map → p-7f756647.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-45996535.entry.js.map → p-811ff88b.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-35f9ebbc.entry.js.map → p-832ec678.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4b38fffc.entry.js.map → p-847cd613.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f52ea9d4.entry.js.map → p-8657d13c.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-6e958b79.entry.js.map → p-888d029f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-05f1ff03.entry.js.map → p-8b4fac7e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2d04b927.entry.js.map → p-987081c1.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-cbe2dd13.entry.js.map → p-9b2a1619.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b2928645.entry.js.map → p-9d5dc6a7.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d8379699.entry.js.map → p-9e15d58d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f3f068f6.entry.js.map → p-9e8a71db.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-304d5629.entry.js.map → p-a29936cd.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-86365635.entry.js.map → p-a4c35113.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-494b3955.entry.js.map → p-a5de63cc.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f4a60017.entry.js.map → p-a7194c97.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-de7f0c1f.entry.js.map → p-a92f1884.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c3abc0f5.entry.js.map → p-afd84bc7.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-03dbccde.entry.js.map → p-b3aa0ecb.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-88581fe4.entry.js.map → p-ba9b9aa5.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-80c1ddc3.entry.js.map → p-cd8831e4.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-caa5ee2f.entry.js.map → p-ddbd4891.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2ad98d24.entry.js.map → p-de83b5d7.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-36c7a87b.entry.js.map → p-df148798.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4328be14.entry.js.map → p-e0eda984.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-5e7f8ae6.entry.js.map → p-e267e84e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-14165308.entry.js.map → p-e40929cd.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f7421997.entry.js.map → p-e94c0ad6.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c58e0a92.entry.js.map → p-eaa0d5ce.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-3dbd3842.entry.js.map → p-eb3caba5.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-767e0f6d.entry.js.map → p-eea24d19.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b1851e6b.entry.js.map → p-f15c84ab.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-fa52a417.entry.js.map → p-f5157be1.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-31beae9e.entry.js.map → p-fb62d808.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b0aa8cdb.entry.js.map → p-fdd75b9c.entry.js.map} +0 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f)
|
|
3
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
5
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
6
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
9
|
+
if (kind === "m")
|
|
10
|
+
throw new TypeError("Private method is not writable");
|
|
11
|
+
if (kind === "a" && !f)
|
|
12
|
+
throw new TypeError("Private accessor was defined without a setter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
14
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var _GxIdeCurlInspector_componentLocale, _GxIdeCurlInspector_chShortcutsEl, _GxIdeCurlInspector_descriptionEl, _GxIdeCurlInspector_moduleEntitySelector, _GxIdeCurlInspector_nameEl, _GxIdeCurlInspector_editorEl, _GxIdeCurlInspector_curlContentChangeHandler, _GxIdeCurlInspector_keydownHandler, _GxIdeCurlInspector_initializeValidatableControls, _GxIdeCurlInspector_evaluateTooltipRender, _GxIdeCurlInspector_validateForm, _GxIdeCurlInspector_handleEditorChange, _GxIdeCurlInspector_handleSlotChange, _GxIdeCurlInspector_createHandler;
|
|
18
|
+
import { Host, h } from "@stencil/core";
|
|
19
|
+
import { config } from "../../common/config";
|
|
20
|
+
import { Locale } from "../../common/locale";
|
|
21
|
+
import { validateControls } from "../../common/form-validation";
|
|
22
|
+
const CSS_BUNDLES = [
|
|
23
|
+
"resets/box-sizing",
|
|
24
|
+
"components/tooltip",
|
|
25
|
+
"utils/form--full",
|
|
26
|
+
"utils/layout",
|
|
27
|
+
"utils/typography",
|
|
28
|
+
"utils/spacing",
|
|
29
|
+
"chameleon/scrollbar"
|
|
30
|
+
];
|
|
31
|
+
export class GxIdeCurlInspector {
|
|
32
|
+
constructor() {
|
|
33
|
+
_GxIdeCurlInspector_componentLocale.set(this, void 0);
|
|
34
|
+
_GxIdeCurlInspector_chShortcutsEl.set(this, void 0);
|
|
35
|
+
_GxIdeCurlInspector_descriptionEl.set(this, void 0);
|
|
36
|
+
_GxIdeCurlInspector_moduleEntitySelector.set(this, void 0);
|
|
37
|
+
_GxIdeCurlInspector_nameEl.set(this, void 0);
|
|
38
|
+
_GxIdeCurlInspector_editorEl.set(this, void 0);
|
|
39
|
+
_GxIdeCurlInspector_curlContentChangeHandler.set(this, void 0);
|
|
40
|
+
_GxIdeCurlInspector_keydownHandler.set(this, void 0);
|
|
41
|
+
_GxIdeCurlInspector_initializeValidatableControls.set(this, () => {
|
|
42
|
+
const validatableControls = [
|
|
43
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f"),
|
|
44
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f")
|
|
45
|
+
];
|
|
46
|
+
validatableControls.forEach(validatableControl => {
|
|
47
|
+
if (validatableControl.id) {
|
|
48
|
+
this.validatableControls.set(validatableControl.id, {
|
|
49
|
+
reference: validatableControl,
|
|
50
|
+
hasError: false,
|
|
51
|
+
message: undefined
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
_GxIdeCurlInspector_evaluateTooltipRender.set(this, (controlReference) => {
|
|
57
|
+
var _a, _b, _c;
|
|
58
|
+
return ((_b = (_a = this.validatableControls) === null || _a === void 0 ? void 0 : _a.get(controlReference === null || controlReference === void 0 ? void 0 : controlReference.id)) === null || _b === void 0 ? void 0 : _b.hasError) &&
|
|
59
|
+
((_c = this.validatableControls.get(controlReference.id)) === null || _c === void 0 ? void 0 : _c.message) && (h("ch-tooltip", { class: "tooltip", actionElement: controlReference, blockAlign: config.tooltipSettings.blockAlign, inlineAlign: config.tooltipSettings.inlineAlign, delay: config.tooltipSettings.delay }, this.validatableControls.get(controlReference.id).message));
|
|
60
|
+
});
|
|
61
|
+
_GxIdeCurlInspector_validateForm.set(this, () => {
|
|
62
|
+
var _a, _b, _c, _d, _e;
|
|
63
|
+
const name = ((_b = (_a = __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f")) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.trim()) || "";
|
|
64
|
+
const parentId = ((_d = (_c = __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f")) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.id) || "";
|
|
65
|
+
const curl = ((_e = this.curlContent) === null || _e === void 0 ? void 0 : _e.trim()) || "";
|
|
66
|
+
const isNameValid = this.validateNameCallback
|
|
67
|
+
? this.validateNameCallback(name)
|
|
68
|
+
: Boolean(name);
|
|
69
|
+
const isParentValid = Boolean(parentId);
|
|
70
|
+
const isCurlValid = Boolean(curl);
|
|
71
|
+
this.isFormValid = isNameValid && isParentValid && isCurlValid;
|
|
72
|
+
});
|
|
73
|
+
_GxIdeCurlInspector_handleEditorChange.set(this, () => {
|
|
74
|
+
if (__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f")) {
|
|
75
|
+
this.curlContent = __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").text;
|
|
76
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_validateForm, "f").call(this);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
_GxIdeCurlInspector_handleSlotChange.set(this, (e) => {
|
|
80
|
+
const elements = e.target.assignedElements();
|
|
81
|
+
if (elements.length) {
|
|
82
|
+
__classPrivateFieldSet(this, _GxIdeCurlInspector_editorEl, elements[0], "f");
|
|
83
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").addEventListener("input", __classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f"));
|
|
84
|
+
__classPrivateFieldSet(this, _GxIdeCurlInspector_curlContentChangeHandler, ((event) => {
|
|
85
|
+
this.curlContent = event.detail.content;
|
|
86
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f").call(this);
|
|
87
|
+
}), "f");
|
|
88
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").addEventListener("curl-content-change", __classPrivateFieldGet(this, _GxIdeCurlInspector_curlContentChangeHandler, "f"));
|
|
89
|
+
__classPrivateFieldSet(this, _GxIdeCurlInspector_keydownHandler, (event) => {
|
|
90
|
+
if ((event.ctrlKey || event.metaKey) && event.key === "v") {
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f").call(this);
|
|
93
|
+
}, 0);
|
|
94
|
+
}
|
|
95
|
+
}, "f");
|
|
96
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").addEventListener("keydown", __classPrivateFieldGet(this, _GxIdeCurlInspector_keydownHandler, "f"));
|
|
97
|
+
this.curlContent = __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").text;
|
|
98
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_validateForm, "f").call(this);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
_GxIdeCurlInspector_createHandler.set(this, () => {
|
|
102
|
+
var _a;
|
|
103
|
+
const data = {
|
|
104
|
+
name: __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f").value,
|
|
105
|
+
description: __classPrivateFieldGet(this, _GxIdeCurlInspector_descriptionEl, "f").value,
|
|
106
|
+
parentId: (_a = __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f").value) === null || _a === void 0 ? void 0 : _a.id,
|
|
107
|
+
curl: this.curlContent
|
|
108
|
+
};
|
|
109
|
+
this.confirmCallback(data).then((formSubmitResult) => {
|
|
110
|
+
this.validatableControls = validateControls(formSubmitResult, this.validatableControls);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
this.showTooltipError = false;
|
|
114
|
+
this.isFormValid = false;
|
|
115
|
+
this.curlContent = "";
|
|
116
|
+
this.validatableControls = new Map();
|
|
117
|
+
this.cancelCallback = undefined;
|
|
118
|
+
this.confirmCallback = undefined;
|
|
119
|
+
this.defaultParent = undefined;
|
|
120
|
+
this.parent = undefined;
|
|
121
|
+
this.selectModuleCallback = undefined;
|
|
122
|
+
this.validateNameCallback = undefined;
|
|
123
|
+
}
|
|
124
|
+
async componentWillLoad() {
|
|
125
|
+
__classPrivateFieldSet(this, _GxIdeCurlInspector_componentLocale, await Locale.getComponentStrings(this.el), "f");
|
|
126
|
+
}
|
|
127
|
+
componentDidLoad() {
|
|
128
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_initializeValidatableControls, "f").call(this);
|
|
129
|
+
}
|
|
130
|
+
disconnectedCallback() {
|
|
131
|
+
if (__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f") && __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener) {
|
|
132
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener("input", __classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f"));
|
|
133
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener("curl-content-change", __classPrivateFieldGet(this, _GxIdeCurlInspector_curlContentChangeHandler, "f"));
|
|
134
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener("keydown", __classPrivateFieldGet(this, _GxIdeCurlInspector_keydownHandler, "f"));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Suspends or reactivates the shortcuts
|
|
139
|
+
*/
|
|
140
|
+
async suspendShortcuts(suspendShortcuts) {
|
|
141
|
+
__classPrivateFieldGet(this, _GxIdeCurlInspector_chShortcutsEl, "f").suspend = suspendShortcuts;
|
|
142
|
+
}
|
|
143
|
+
render() {
|
|
144
|
+
return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: "./gx-ide-assets/curl-inspector/shortcuts.json", ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { class: "header field-group spacing-body control-header" }, h("div", { class: "field-group field-group-name-description-module" }, h("label", { class: "label name-label", htmlFor: "input-name" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").header.nameFieldLabel), h("ch-edit", { class: "input name-input", id: "input-name", ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_nameEl, el, "f")), onInput: __classPrivateFieldGet(this, _GxIdeCurlInspector_validateForm, "f") }), __classPrivateFieldGet(this, _GxIdeCurlInspector_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f")), h("label", { class: "label description-label", htmlFor: "input-description" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").header.descriptionFieldLabel), h("ch-edit", { class: "input description-input", id: "input-description", ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_descriptionEl, el, "f")) }), h("label", { class: "label module-label", htmlFor: "input-module" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").header.moduleFolderLabel), h("gx-ide-entity-selector", { class: "module module-entity-selector", id: "module", value: this.defaultParent, ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_moduleEntitySelector, el, "f")), labelPosition: "none", defaultValue: this.defaultParent, selectEntityCallback: this.selectModuleCallback }), __classPrivateFieldGet(this, _GxIdeCurlInspector_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f")))), h("div", { class: "main field-group scrollable" }, h("slot", { name: "CurlTextEditor", onSlotchange: __classPrivateFieldGet(this, _GxIdeCurlInspector_handleSlotChange, "f") })), h("footer", { class: "control-footer control-footer spacing-body-block-end spacing-body-inline" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", id: "button-cancel", onClick: this.cancelCallback, part: "button-cancel" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").footer.btnCancel), h("button", { class: "button-primary", id: "button-ok", onClick: __classPrivateFieldGet(this, _GxIdeCurlInspector_createHandler, "f"), part: "button-ok", disabled: !this.isFormValid }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").footer.btnCreate))))));
|
|
145
|
+
}
|
|
146
|
+
static get is() { return "gx-ide-curl-inspector"; }
|
|
147
|
+
static get encapsulation() { return "shadow"; }
|
|
148
|
+
static get originalStyleUrls() {
|
|
149
|
+
return {
|
|
150
|
+
"$": ["curl-inspector.scss"]
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
static get styleUrls() {
|
|
154
|
+
return {
|
|
155
|
+
"$": ["curl-inspector.css"]
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
static get assetsDirs() { return ["gx-ide-assets/curl-inspector"]; }
|
|
159
|
+
static get properties() {
|
|
160
|
+
return {
|
|
161
|
+
"cancelCallback": {
|
|
162
|
+
"type": "unknown",
|
|
163
|
+
"mutable": false,
|
|
164
|
+
"complexType": {
|
|
165
|
+
"original": "() => Promise<void>",
|
|
166
|
+
"resolved": "() => Promise<void>",
|
|
167
|
+
"references": {
|
|
168
|
+
"Promise": {
|
|
169
|
+
"location": "global",
|
|
170
|
+
"id": "global::Promise"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"required": false,
|
|
175
|
+
"optional": false,
|
|
176
|
+
"docs": {
|
|
177
|
+
"tags": [],
|
|
178
|
+
"text": "Callback that must be invoked when the user wants to cancel the operation"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"confirmCallback": {
|
|
182
|
+
"type": "unknown",
|
|
183
|
+
"mutable": false,
|
|
184
|
+
"complexType": {
|
|
185
|
+
"original": "(\n data: CurlImportData\n ) => Promise<FormSubmitResult>",
|
|
186
|
+
"resolved": "(data: CurlImportData) => Promise<FormSubmitResult>",
|
|
187
|
+
"references": {
|
|
188
|
+
"CurlImportData": {
|
|
189
|
+
"location": "local",
|
|
190
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/curl-inspector/curl-inspector.tsx",
|
|
191
|
+
"id": "src/components/curl-inspector/curl-inspector.tsx::CurlImportData"
|
|
192
|
+
},
|
|
193
|
+
"Promise": {
|
|
194
|
+
"location": "global",
|
|
195
|
+
"id": "global::Promise"
|
|
196
|
+
},
|
|
197
|
+
"FormSubmitResult": {
|
|
198
|
+
"location": "import",
|
|
199
|
+
"path": "../../common/types",
|
|
200
|
+
"id": "src/common/types.ts::FormSubmitResult"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"required": true,
|
|
205
|
+
"optional": false,
|
|
206
|
+
"docs": {
|
|
207
|
+
"tags": [],
|
|
208
|
+
"text": "Callback that must be invoked when the user confirms the creation. Receives the data\nnecessary to create the procedure."
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"defaultParent": {
|
|
212
|
+
"type": "unknown",
|
|
213
|
+
"mutable": false,
|
|
214
|
+
"complexType": {
|
|
215
|
+
"original": "EntityData",
|
|
216
|
+
"resolved": "{ id: string; name: string; iconSrc?: string; }",
|
|
217
|
+
"references": {
|
|
218
|
+
"EntityData": {
|
|
219
|
+
"location": "local",
|
|
220
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/curl-inspector/curl-inspector.tsx",
|
|
221
|
+
"id": "src/components/curl-inspector/curl-inspector.tsx::EntityData"
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"required": false,
|
|
226
|
+
"optional": false,
|
|
227
|
+
"docs": {
|
|
228
|
+
"tags": [],
|
|
229
|
+
"text": "Default value for Module/Folder field"
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"parent": {
|
|
233
|
+
"type": "unknown",
|
|
234
|
+
"mutable": false,
|
|
235
|
+
"complexType": {
|
|
236
|
+
"original": "EntityData",
|
|
237
|
+
"resolved": "{ id: string; name: string; iconSrc?: string; }",
|
|
238
|
+
"references": {
|
|
239
|
+
"EntityData": {
|
|
240
|
+
"location": "local",
|
|
241
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/curl-inspector/curl-inspector.tsx",
|
|
242
|
+
"id": "src/components/curl-inspector/curl-inspector.tsx::EntityData"
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"required": false,
|
|
247
|
+
"optional": false,
|
|
248
|
+
"docs": {
|
|
249
|
+
"tags": [],
|
|
250
|
+
"text": "Actual value for Module/Folder field"
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
"selectModuleCallback": {
|
|
254
|
+
"type": "unknown",
|
|
255
|
+
"mutable": false,
|
|
256
|
+
"complexType": {
|
|
257
|
+
"original": "SelectModuleCallback",
|
|
258
|
+
"resolved": "() => Promise<EntityData>",
|
|
259
|
+
"references": {
|
|
260
|
+
"SelectModuleCallback": {
|
|
261
|
+
"location": "local",
|
|
262
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/curl-inspector/curl-inspector.tsx",
|
|
263
|
+
"id": "src/components/curl-inspector/curl-inspector.tsx::SelectModuleCallback"
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"required": false,
|
|
268
|
+
"optional": false,
|
|
269
|
+
"docs": {
|
|
270
|
+
"tags": [],
|
|
271
|
+
"text": "Callback invoked when the action is executed in the Module/Folder filter. It returns the\ninformation of the selected object (id and name) or 'undefined' if it was canceled."
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
"validateNameCallback": {
|
|
275
|
+
"type": "unknown",
|
|
276
|
+
"mutable": false,
|
|
277
|
+
"complexType": {
|
|
278
|
+
"original": "(name: string) => boolean",
|
|
279
|
+
"resolved": "(name: string) => boolean",
|
|
280
|
+
"references": {}
|
|
281
|
+
},
|
|
282
|
+
"required": false,
|
|
283
|
+
"optional": true,
|
|
284
|
+
"docs": {
|
|
285
|
+
"tags": [],
|
|
286
|
+
"text": "Callback to validate the name. Should return true if the name is valid, false otherwise."
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
static get states() {
|
|
292
|
+
return {
|
|
293
|
+
"showTooltipError": {},
|
|
294
|
+
"isFormValid": {},
|
|
295
|
+
"curlContent": {},
|
|
296
|
+
"validatableControls": {}
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
static get methods() {
|
|
300
|
+
return {
|
|
301
|
+
"suspendShortcuts": {
|
|
302
|
+
"complexType": {
|
|
303
|
+
"signature": "(suspendShortcuts: boolean) => Promise<void>",
|
|
304
|
+
"parameters": [{
|
|
305
|
+
"name": "suspendShortcuts",
|
|
306
|
+
"type": "boolean",
|
|
307
|
+
"docs": ""
|
|
308
|
+
}],
|
|
309
|
+
"references": {
|
|
310
|
+
"Promise": {
|
|
311
|
+
"location": "global",
|
|
312
|
+
"id": "global::Promise"
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
"return": "Promise<void>"
|
|
316
|
+
},
|
|
317
|
+
"docs": {
|
|
318
|
+
"text": "Suspends or reactivates the shortcuts",
|
|
319
|
+
"tags": []
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
static get elementRef() { return "el"; }
|
|
325
|
+
}
|
|
326
|
+
_GxIdeCurlInspector_componentLocale = new WeakMap(), _GxIdeCurlInspector_chShortcutsEl = new WeakMap(), _GxIdeCurlInspector_descriptionEl = new WeakMap(), _GxIdeCurlInspector_moduleEntitySelector = new WeakMap(), _GxIdeCurlInspector_nameEl = new WeakMap(), _GxIdeCurlInspector_editorEl = new WeakMap(), _GxIdeCurlInspector_curlContentChangeHandler = new WeakMap(), _GxIdeCurlInspector_keydownHandler = new WeakMap(), _GxIdeCurlInspector_initializeValidatableControls = new WeakMap(), _GxIdeCurlInspector_evaluateTooltipRender = new WeakMap(), _GxIdeCurlInspector_validateForm = new WeakMap(), _GxIdeCurlInspector_handleEditorChange = new WeakMap(), _GxIdeCurlInspector_handleSlotChange = new WeakMap(), _GxIdeCurlInspector_createHandler = new WeakMap();
|
|
327
|
+
//# sourceMappingURL=curl-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curl-inspector.js","sourceRoot":"","sources":["../../../src/components/curl-inspector/curl-inspector.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n Prop,\n Element,\n State,\n Method,\n h\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-curl-inspector\",\n styleUrl: \"curl-inspector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/curl-inspector\"]\n})\nexport class GxIdeCurlInspector {\n #componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #moduleEntitySelector!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #editorEl: TextProviderElement;\n #curlContentChangeHandler: EventListener;\n #keydownHandler: EventListener;\n\n @Element() el: HTMLGxIdeCurlInspectorElement;\n\n @State() showTooltipError: boolean = false;\n @State() isFormValid: boolean = false;\n @State() curlContent: string = \"\";\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the user wants to cancel the operation\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the user confirms the creation. Receives the data\n * necessary to create the procedure.\n */\n @Prop() readonly confirmCallback!: (\n data: CurlImportData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Actual value for Module/Folder field\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. It returns the\n * information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback to validate the name. Should return true if the name is valid, false otherwise.\n */\n @Prop() readonly validateNameCallback?: (name: string) => boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n disconnectedCallback() {\n if (this.#editorEl && this.#editorEl.removeEventListener) {\n this.#editorEl.removeEventListener(\"input\", this.#handleEditorChange);\n this.#editorEl.removeEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n this.#editorEl.removeEventListener(\"keydown\", this.#keydownHandler);\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #initializeValidatableControls = () => {\n const validatableControls: HTMLElement[] = [\n this.#nameEl,\n this.#moduleEntitySelector\n ];\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 #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 #validateForm = () => {\n const name = this.#nameEl?.value?.trim() || \"\";\n const parentId = this.#moduleEntitySelector?.value?.id || \"\";\n const curl = this.curlContent?.trim() || \"\";\n\n const isNameValid = this.validateNameCallback\n ? this.validateNameCallback(name)\n : Boolean(name);\n const isParentValid = Boolean(parentId);\n const isCurlValid = Boolean(curl);\n\n this.isFormValid = isNameValid && isParentValid && isCurlValid;\n };\n\n #handleEditorChange = () => {\n if (this.#editorEl) {\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #handleSlotChange = (e: Event) => {\n const elements = (e.target as HTMLSlotElement).assignedElements();\n if (elements.length) {\n this.#editorEl = elements[0] as TextProviderElement;\n\n this.#editorEl.addEventListener(\"input\", this.#handleEditorChange);\n\n this.#curlContentChangeHandler = ((event: CustomEvent) => {\n this.curlContent = event.detail.content;\n this.#handleEditorChange();\n }) as EventListener;\n\n this.#editorEl.addEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n\n this.#keydownHandler = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === \"v\") {\n setTimeout(() => {\n this.#handleEditorChange();\n }, 0);\n }\n };\n\n this.#editorEl.addEventListener(\"keydown\", this.#keydownHandler);\n\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #createHandler = () => {\n const data: CurlImportData = {\n name: this.#nameEl.value,\n description: this.#descriptionEl.value,\n parentId: this.#moduleEntitySelector.value?.id,\n curl: this.curlContent\n };\n this.confirmCallback(data).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={\"./gx-ide-assets/curl-inspector/shortcuts.json\"}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group spacing-body control-header\">\n <div class=\"field-group field-group-name-description-module\">\n <label class=\"label name-label\" htmlFor=\"input-name\">\n {this.#componentLocale.header.nameFieldLabel}\n </label>\n <ch-edit\n class=\"input name-input\"\n id=\"input-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onInput={this.#validateForm}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#nameEl)}\n\n <label\n class=\"label description-label\"\n htmlFor=\"input-description\"\n >\n {this.#componentLocale.header.descriptionFieldLabel}\n </label>\n <ch-edit\n class=\"input description-input\"\n id=\"input-description\"\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n <label class=\"label module-label\" htmlFor=\"input-module\">\n {this.#componentLocale.header.moduleFolderLabel}\n </label>\n <gx-ide-entity-selector\n class=\"module module-entity-selector\"\n id=\"module\"\n value={this.defaultParent}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEntitySelector =\n el as HTMLGxIdeEntitySelectorElement)\n }\n labelPosition=\"none\"\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ></gx-ide-entity-selector>\n {this.#evaluateTooltipRender(this.#moduleEntitySelector)}\n </div>\n </header>\n <div class=\"main field-group scrollable\">\n <slot\n name=\"CurlTextEditor\"\n onSlotchange={this.#handleSlotChange}\n ></slot>\n </div>\n <footer class=\"control-footer control-footer spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.cancelCallback}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-ok\"\n onClick={this.#createHandler}\n part=\"button-ok\"\n disabled={!this.isFormValid}\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type CurlImportData = {\n name: string;\n description: string;\n parentId: string;\n curl: string;\n};\n\nexport type EntityData = {\n id: string;\n name: string;\n iconSrc?: string;\n};\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\ninterface ItextProvider {\n readonly text: string;\n}\n\ntype TextProviderElement = HTMLElement & ItextProvider;\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"header": {
|
|
3
|
+
"nameFieldLabel": "Name",
|
|
4
|
+
"descriptionFieldLabel": "Description",
|
|
5
|
+
"moduleFolderLabel": "Module/Folder"
|
|
6
|
+
},
|
|
7
|
+
"footer": {
|
|
8
|
+
"btnCancel": "Cancel",
|
|
9
|
+
"btnCreate": "Create Procedure"
|
|
10
|
+
},
|
|
11
|
+
"error": {
|
|
12
|
+
"errorMessage": "Error"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"header": {
|
|
3
|
+
"nameFieldLabel": "Name",
|
|
4
|
+
"descriptionFieldLabel": "Description",
|
|
5
|
+
"moduleFolderLabel": "Module/Folder"
|
|
6
|
+
},
|
|
7
|
+
"footer": {
|
|
8
|
+
"btnCancel": "Cancel",
|
|
9
|
+
"btnCreate": "Create Procedure"
|
|
10
|
+
},
|
|
11
|
+
"error": {
|
|
12
|
+
"errorMessage": "Error"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"header": {
|
|
3
|
+
"nameFieldLabel": "Name",
|
|
4
|
+
"descriptionFieldLabel": "Description",
|
|
5
|
+
"moduleFolderLabel": "Module/Folder"
|
|
6
|
+
},
|
|
7
|
+
"footer": {
|
|
8
|
+
"btnCancel": "Cancel",
|
|
9
|
+
"btnCreate": "Create Procedure"
|
|
10
|
+
},
|
|
11
|
+
"error": {
|
|
12
|
+
"errorMessage": "Error"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"selector": "[part='button-ok']",
|
|
4
|
+
"keyShortcuts": "Enter",
|
|
5
|
+
"action": "click",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"focusExclude": "[part='button-cancel']"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"selector": "[part='button-ok']",
|
|
12
|
+
"keyShortcuts": "Ctrl+Enter",
|
|
13
|
+
"action": "click",
|
|
14
|
+
"conditions": {
|
|
15
|
+
"focusExclude": "[part='button-cancel']"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"selector": "[part='button-ok']",
|
|
20
|
+
"keyShortcuts": "Cmd+Enter",
|
|
21
|
+
"action": "click",
|
|
22
|
+
"conditions": {
|
|
23
|
+
"focusExclude": "[part='button-cancel']"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"selector": "[part='button-cancel']",
|
|
28
|
+
"keyShortcuts": "Escape",
|
|
29
|
+
"action": "click"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
@@ -94,10 +94,10 @@ export class GxIdeStartPage {
|
|
|
94
94
|
}
|
|
95
95
|
return (h("section", { class: "section-kbs" }, h("header", { class: {
|
|
96
96
|
"section-kbs__header": true
|
|
97
|
-
} }, h("
|
|
97
|
+
} }, h("label", { class: "subtitle-regular-s section-kbs__title", htmlFor: "filter-kbs" }, __classPrivateFieldGet(this, _GxIdeStartPage_componentLocale, "f").recentKBs.title), h("ch-edit", {
|
|
98
98
|
// Render always, and display or hide, ro prevent FOUC, and also prevent
|
|
99
99
|
// the header block-size from growing a little bit when the input renders.
|
|
100
|
-
value: this.kbFilterValue, class: {
|
|
100
|
+
id: "filter-kbs", value: this.kbFilterValue, class: {
|
|
101
101
|
"input": true,
|
|
102
102
|
"section-kbs__filter--hidden": hideKbsFilter
|
|
103
103
|
}, startImgSrc: SEARCH_ICON, placeholder: __classPrivateFieldGet(this, _GxIdeStartPage_componentLocale, "f").recentKBs.filterKbsPlaceholder, onInput: !hideKbsFilter && __classPrivateFieldGet(this, _GxIdeStartPage_filterKbs, "f"), disabled: hideKbsFilter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-page.js","sourceRoot":"","sources":["../../../src/components/start-page/start-page.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,UAAU;AACV,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChF,kBAAkB;AAClB,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAA2B,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGjD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,wFAAwF;AAExF,MAAM,kBAAkB,GAAgB;IACtC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,eAAe,GAAG,WAAW,CAAC;IAClC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,gBAAgB;CACvB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;IACrB,kBAAkB;CACnB,CAAC;AAQF,MAAM,OAAO,cAAc;;;QACzB;;WAEG;QACH,wEAAwE;QACxE,kDAAsB;QACtB,+CAA6B;QAgE7B,+CAAwB,CAAC,UAAmB,EAAE,EAAE,CAAC,CAAC,KAAiB,EAAE,EAAE;YACrE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,EAAC;QAEF,6CAAsB,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC5D,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,EAAC;QAEF,oCAAa,CAAC,KAA6C,EAAE,EAAE;YAC7D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAgB,CAAC;QAC9C,CAAC,EAAC;QAEF,2CAAoB,GAAG,EAAE;YACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;YACnD,IAAI,eAAwD,CAAC;YAE7D,2CAA2C;YAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,eAAe,GAAG,uBAAA,IAAI,iCAAW,MAAf,IAAI,CAAa,CAAC;aACrC;iBAAM;gBACL,qDAAqD;gBACrD,eAAe,GAAG,CAChB,0BACE,UAAU,QACV,YAAY,EAAE,WAAW,EACzB,UAAU,EAAE,uBAAA,IAAI,uCAAiB,CAAC,SAAS,CAAC,SAAS,GACjC,CACvB,CAAC;aACH;YAED,OAAO,CACL,eAAS,KAAK,EAAC,aAAa;gBAC1B,cACE,KAAK,EAAE;wBACL,qBAAqB,EAAE,IAAI;qBAC5B;oBAED,UAAI,KAAK,EAAC,uCAAuC,IAC9C,uBAAA,IAAI,uCAAiB,CAAC,SAAS,CAAC,KAAK,CACnC;oBACL;wBACE,wEAAwE;wBACxE,0EAA0E;wBAC1E,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,KAAK,EAAE;4BACL,OAAO,EAAE,IAAI;4BACb,6BAA6B,EAAE,aAAa;yBAC7C,EACD,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,uBAAA,IAAI,uCAAiB,CAAC,SAAS,CAAC,oBAAoB,EACjE,OAAO,EAAE,CAAC,aAAa,IAAI,uBAAA,IAAI,iCAAW,EAC1C,QAAQ,EAAE,aAAa,GACd,CACJ;gBAET,WACE,KAAK,EAAE;wBACL,mBAAmB,EAAE,IAAI;wBACzB,0BAA0B,EAAE,YAAY;wBACxC,YAAY,EAAE,IAAI;qBACnB,IAEA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAA,IAAI,iCAAW,MAAf,IAAI,CAAa,CAAC,CAAC,CAAC,eAAe,CAC9D,CACE,CACX,CAAC;QACJ,CAAC,EAAC;QAEF,oCAAa,GAAkB,EAAE;;YAC/B,OAAO,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACzC,oBAAoB;;gBAEpB,MAAM,YAAY,GAAG,EAAE,CAAC,cAAc;oBACpC,CAAC,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE;wBAC/C,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,uBAAA,IAAI,oCAAc;qBAC3B,CAAC;oBACJ,CAAC,CAAC,SAAS,CAAC;gBAEd,OAAO;gBACP,MAAM,MAAM,GAAG,MAAA,EAAE,CAAC,IAAI,mCAAI,eAAe,CAAC;gBAE1C,OAAO,CACL,eAAS,KAAK,EAAC,UAAU,EAAC,GAAG,EAAE,KAAK;oBAClC,WAAK,KAAK,EAAC,aAAa;wBACtB,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,MAAM,GAAa;wBAClD,SACE,KAAK,EAAC,yBAAyB,EAC/B,OAAO,EAAE,uBAAA,IAAI,0CAAoB,MAAxB,IAAI,EAAqB,EAAE,CAAC,EAAE,CAAC,IAEvC,EAAE,CAAC,IAAI,CACN,CACA;oBACL,YAAY,IAAI,CACf,WAAK,KAAK,EAAC,6BAA6B,IACrC,GAAG,uBAAA,IAAI,uCAAiB,CAAC,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE,CACxD,CACP,CACO,CACX,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,EAAC;QAQF,iDAA0B,GAAuB,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,OAAO,IAAI,CAAC;aACb;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAE7D,OAAO,CACL;gBACE,yBAAyB;gBACzB,KAAK,EAAC,mBAAmB;gBAEzB;oBACE,UAAI,KAAK,EAAC,oBAAoB,IAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAM,CAC1D;gBAET,eACE,KAAK,EAAE;wBACL,4BAA4B,EAAE,IAAI;wBAClC,uCAAuC,EAAE,CAAC,aAAa;wBACvD,4CAA4C,EAAE,aAAa;wBAC3D,YAAY,EAAE,IAAI;qBACnB,IAEA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC/C,OAAO,CACL,eAAS,KAAK,EAAC,oBAAoB,EAAC,GAAG,EAAE,KAAK;wBAC5C,cAAQ,KAAK,EAAC,cAAc;4BAC1B,YAAM,KAAK,EAAC,cAAc;gCACxB,gBACE,KAAK,EAAC,uBAAuB,EAC7B,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,gBACN,IAAI,CAAC,IAAI,CAAC,SAAS,GACrB,CACP;4BACP,WAAK,KAAK,EAAC,0BAA0B;gCACnC,UAAI,KAAK,EAAC,oBAAoB,IAAE,IAAI,CAAC,KAAK,CAAM;gCAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CACjC,SAAG,KAAK,EAAC,gBAAgB,IAAE,SAAS,CAAK,CAC1C,CAAC,CACE,CACC;wBACT,cAAQ,KAAK,EAAC,cAAc,IACzB,IAAI,CAAC,MAAM,IAAI,CACd,cACE,KAAK,EAAC,sCAAsC,EAC5C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;4BAErD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa;4BACtD,IAAI,CAAC,MAAM,CAAC,OAAO,CACb,CACV,CACM,CACD,CACX,CAAC;gBACJ,CAAC,CAAC,CACM,CACF,CACX,CAAC;QACJ,CAAC,EAAC;6BAvO+B,EAAE;;uBAgBP,IAAI;;;;;;;IAdhC,oBAAoB,CAAC,gBAAwB;QAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CACtC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC;IAgCD,UAAU,CAAC,MAAsB;QAC/B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,eAAe;IAC1C,CAAC;IAOD,KAAK,CAAC,iBAAiB;QACrB,uBAAA,IAAI,mCAAoB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QAElE,yBAAyB;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1B,uFAAuF;QACvF,MAAM,YAAY,GAAsB,QAAQ,CAAC,eAAe;aAC7D,IAAyB,CAAC;QAC7B,uBAAA,IAAI,gCAAiB,kBAAkB,CAAC,YAAY,CAAC,MAAA,CAAC;IACxD,CAAC;IA+KD,MAAM;;QACJ,IAAI,CAAC,OAAO;YACV,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,MAAM,MAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAClE,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAC,gCAAgC;YAC1C,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,YAAM,KAAK,EAAC,iBAAiB;gBAC3B;oBACE,8BAA8B;oBAC9B,KAAK,EAAC,uBAAuB;oBAE7B;wBACE,cAAc;wBACd,KAAK,EAAC,4BAA4B;wBAElC,UAAI,KAAK,EAAC,WAAW,IAAE,uBAAA,IAAI,uCAAiB,CAAC,QAAQ,CAAC,KAAK,CAAM;wBACjE,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,uCAAiB,CAAC,QAAQ,CAAC,WAAW,CACzC,CACG;oBAET,eAAS,KAAK,EAAC,2CAA2C;wBACxD;4BACE,iBAAiB;4BACjB,KAAK,EAAC,kBAAkB;4BAExB,cAAQ,KAAK,EAAC,cAAc;gCAC1B,WAAK,KAAK,EAAC,0BAA0B;oCACnC,UAAI,KAAK,EAAC,oBAAoB,IAC3B,uBAAA,IAAI,uCAAiB,CAAC,aAAa,CAAC,KAAK,CACvC;oCACL,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,uCAAiB,CAAC,aAAa,CAAC,WAAW,CAC9C,CACA,CACC;4BACT,cAAQ,KAAK,EAAC,cAAc;gCAC1B,cACE,KAAK,EAAC,gBAAgB,EACtB,OAAO,EAAE,uBAAA,IAAI,4CAAsB,MAA1B,IAAI,EAAuB,KAAK,CAAC,IAEzC,uBAAA,IAAI,uCAAiB,CAAC,aAAa,CAAC,aAAa,CAC3C,CACF,CACD;wBAEV;4BACE,wBAAwB;4BACxB,KAAK,EAAC,aAAa;4BAEnB,cAAQ,KAAK,EAAC,cAAc;gCAC1B,WAAK,KAAK,EAAC,0BAA0B;oCACnC,UAAI,KAAK,EAAC,oBAAoB,IAC3B,uBAAA,IAAI,uCAAiB,CAAC,mBAAmB,CAAC,KAAK,CAC7C;oCACL,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,uCAAiB,CAAC,mBAAmB,CAAC,WAAW,CACpD,CACA,CACC;4BACT,cAAQ,KAAK,EAAC,cAAc;gCAC1B,cACE,KAAK,EAAC,6BAA6B,EACnC,OAAO,EAAE,uBAAA,IAAI,4CAAsB,MAA1B,IAAI,EAAuB,IAAI,CAAC,IAExC,uBAAA,IAAI,uCAAiB,CAAC,mBAAmB,CAAC,aAAa,CACjD,CACF,CACD,CACF,CACF;gBACV,eAAS,KAAK,EAAC,8BAA8B,IAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,qBACE,KAAK,EAAC,QAAQ,EACd,WAAW,EAAE,uBAAA,IAAI,uCAAiB,CAAC,SAAS,CAAC,WAAW,EACxD,WAAW,EAAE,uBAAA,IAAI,uCAAiB,CAAC,SAAS,CAAC,iBAAiB,EAC9D,IAAI,SACW,CAClB,CAAC,CAAC,CAAC,CACF,uBAAA,IAAI,0EAAyB,MAA7B,IAAI,CAA2B,CAChC,CACO,CACL,CACF,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF;;IAzJG,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;QACpC,CAAC,CAAC,uBAAA,IAAI,wCAAkB,MAAtB,IAAI,CAAoB;QAC1B,CAAC,CAAC,uBAAA,IAAI,8CAAwB,MAA5B,IAAI,CAA0B,CAAC;AACrC,CAAC","sourcesContent":["// Stencil\nimport { Component, Host, h, Prop, State, Element, Watch } from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { formatDistanceToNow, Locale as LocaleDateFns } from \"date-fns\";\nimport { ja, zhCN, enUS } from \"date-fns/locale\";\n// import { enUS } from \"date-fns/locale\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\n// Custom\nimport { Locale } from \"../../common/locale\";\n\n// const locale = enUS; // use `zhCN` for Chinese, `ja` for Japanese, `enUS` for English\n\nconst LANGS_DATE_FNS_MAP: LanguageMap = {\n \"en\": enUS,\n \"ja\": ja,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhCN,\n \"zh-HK\": zhCN\n};\n\nconst DETAIL_ICON = getIconPath({\n category: \"system\",\n name: \"detail\",\n colorType: \"primary\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst KB_DEFAULT_ICON = getIconPath({\n category: \"objects\",\n name: \"knowledge-base\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/layout\",\n \"components/edit\",\n \"components/icon\",\n \"components/button\",\n \"chameleon/scrollbar\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-start-page\",\n styleUrl: \"start-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/start-page\"]\n})\nexport class GxIdeStartPage {\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 #userLanguage: LocaleDateFns;\n\n @Element() el: HTMLGxIdeStartPageElement;\n\n @State() kbFilterValue: string = \"\";\n @Watch(\"kbFilterValue\")\n kbFilterValueChanged(newKbFilterValue: string) {\n this.filteredKbs = this.kbs.filter(kb =>\n kb.name.toLowerCase().includes(newKbFilterValue.toLocaleLowerCase())\n );\n }\n\n /**\n * The kbs after the filter value.\n */\n @State() filteredKbs: RecentKBData[];\n\n /**\n * True if the start page is waiting, either for the kb's list or the secondary section.\n */\n @State() loading: boolean = true;\n\n /**\n * Callback invoked to create a new KB. It must be specified whether this create is create from server or not, through the parameter 'fromServer'.\n */\n @Prop() readonly createKBCallback!: (fromServer: boolean) => Promise<void>;\n\n /**\n * Callback invoked to open a KB when the user clicks on a KB card.\n */\n @Prop() readonly openKbCallback!: (id: string) => Promise<void>;\n\n /**\n * The secondary section that will appear below the \"Create a new Knowledge Base\" main section. This section will be displayed if there are no recent kbs.\n */\n @Prop() readonly secondarySection?: SecondarySection;\n\n /**\n * User's kbs array\n */\n @Prop() readonly kbs: RecentKBData[];\n @Watch(\"kbs\")\n kbsChanged(newKbs: RecentKBData[]) {\n this.filteredKbs = newKbs;\n this.kbFilterValue = \"\"; // clear filter\n }\n\n /**\n * The minimum required of kbs to display a filter.\n */\n @Prop() readonly kbsFilterThreshold: number;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize filteredKbs\n this.kbsChanged(this.kbs);\n\n // get user language to display the kb \"last opened\" value in the appropriate language.\n const userLanguage: keyof LanguageMap = document.documentElement\n .lang as keyof LanguageMap;\n this.#userLanguage = LANGS_DATE_FNS_MAP[userLanguage];\n }\n\n #createKBClickHandler = (fromServer: boolean) => (event: MouseEvent) => {\n event.stopPropagation();\n this.createKBCallback(fromServer);\n };\n\n #openKbClickHandler = (kbId: string) => (event: MouseEvent) => {\n event.stopPropagation();\n this.openKbCallback(kbId);\n };\n\n #filterKbs = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbFilterValue = event.detail as string;\n };\n\n #renderKbsSection = () => {\n const hideKbsFilter = this.kbs.length < this.kbsFilterThreshold;\n const kbsListEmpty = this.filteredKbs.length === 0;\n let contentToRender: HTMLGxgIdeLoaderElement | HTMLElement[];\n\n // Evaluate what is the content to display.\n if (this.filteredKbs.length > 0) {\n contentToRender = this.#renderKbs();\n } else {\n // No kb has pass the filter. Display an empty-state.\n contentToRender = (\n <gx-ide-empty-state\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.recentKBs.noMatches}\n ></gx-ide-empty-state>\n );\n }\n\n return (\n <section class=\"section-kbs\">\n <header\n class={{\n \"section-kbs__header\": true\n }}\n >\n <h2 class=\"subtitle-regular-s section-kbs__title\">\n {this.#componentLocale.recentKBs.title}\n </h2>\n <ch-edit\n // Render always, and display or hide, ro prevent FOUC, and also prevent\n // the header block-size from growing a little bit when the input renders.\n value={this.kbFilterValue}\n class={{\n \"input\": true,\n \"section-kbs__filter--hidden\": hideKbsFilter\n }}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.recentKBs.filterKbsPlaceholder}\n onInput={!hideKbsFilter && this.#filterKbs}\n disabled={hideKbsFilter}\n ></ch-edit>\n </header>\n\n <div\n class={{\n \"section-kbs__list\": true,\n \"section-kbs__list--empty\": kbsListEmpty,\n \"scrollable\": true\n }}\n >\n {this.filteredKbs.length > 0 ? this.#renderKbs() : contentToRender}\n </div>\n </section>\n );\n };\n\n #renderKbs = (): HTMLElement[] => {\n return this.filteredKbs?.map((kb, index) => {\n // relative time ago\n\n const relativeDate = kb.lastOpenedDate\n ? formatDistanceToNow(new Date(kb.lastOpenedDate), {\n addSuffix: true,\n locale: this.#userLanguage\n })\n : undefined;\n\n // icon\n const kbIcon = kb.icon ?? KB_DEFAULT_ICON;\n\n return (\n <article class=\"kb__item\" key={index}>\n <div class=\"kb__details\">\n <ch-image class=\"icon-md\" src={kbIcon}></ch-image>\n <p\n class=\"body-regular-m kb__name\"\n onClick={this.#openKbClickHandler(kb.id)}\n >\n {kb.name}\n </p>\n </div>\n {relativeDate && (\n <div class=\"body-regular-m kb__modified\">\n {`${this.#componentLocale.recentKBs.opened} ${relativeDate}`}\n </div>\n )}\n </article>\n );\n });\n };\n\n #evaluateContentToRender() {\n return this.kbs && this.kbs.length > 0\n ? this.#renderKbsSection()\n : this.#renderSecondarySection();\n }\n\n #renderSecondarySection = (): HTMLElement | null => {\n if (!this.secondarySection) {\n return null;\n }\n\n const multipleCards = this.secondarySection.cards.length > 2;\n\n return (\n <section\n // Recent Knowledge Bases\n class=\"section-secondary\"\n >\n <header>\n <h2 class=\"subtitle-regular-s\">{this.secondarySection.title}</h2>\n </header>\n\n <section\n class={{\n \"section-secondary__actions\": true,\n \"section-secondary__actions--two-cards\": !multipleCards,\n \"section-secondary__actions--multiple-cards\": multipleCards,\n \"scrollable\": true\n }}\n >\n {this.secondarySection.cards.map((card, index) => {\n return (\n <article class=\"card card-outlined\" key={index}>\n <header class=\"card__header\">\n <span class=\"icon-capsule\">\n <ch-image\n class=\"icon-md icon-circular\"\n src={card.icon.src}\n aria-label={card.icon.ariaLabel}\n ></ch-image>\n </span>\n <div class=\"card__header-description\">\n <h2 class=\"subtitle-regular-s\">{card.title}</h2>\n {card.description.map(paragraph => (\n <p class=\"body-regular-m\">{paragraph}</p>\n ))}\n </div>\n </header>\n <footer class=\"card__footer\">\n {card.action && (\n <button\n class=\"button-tertiary button-icon-and-text\"\n onClick={card.action.callback && card.action.callback}\n >\n <ch-image class=\"icon-md\" src={DETAIL_ICON}></ch-image>\n {card.action.caption}\n </button>\n )}\n </footer>\n </article>\n );\n })}\n </section>\n </section>\n );\n };\n\n render() {\n this.loading =\n (!this.kbs || this.kbs?.length === 0) && !this.secondarySection;\n return (\n <Host class=\"widget scrollable spacing-body\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"main scrollable\">\n <section\n // Create a new Knowledge Base\n class=\"section-create-new-kb\"\n >\n <header\n // main header\n class=\"section-create-new__header\"\n >\n <h1 class=\"heading-4\">{this.#componentLocale.createKB.title}</h1>\n <p class=\"body-regular-m\">\n {this.#componentLocale.createKB.description}\n </p>\n </header>\n\n <section class=\"section-create-new-kb__actions scrollable\">\n <article\n // create project\n class=\"card card-filled\"\n >\n <header class=\"card__header\">\n <div class=\"card__header-description\">\n <h2 class=\"subtitle-regular-s\">\n {this.#componentLocale.createProject.title}\n </h2>\n <p class=\"body-regular-m\">\n {this.#componentLocale.createProject.description}\n </p>\n </div>\n </header>\n <footer class=\"card__footer\">\n <button\n class=\"button-primary\"\n onClick={this.#createKBClickHandler(false)}\n >\n {this.#componentLocale.createProject.buttonCaption}\n </button>\n </footer>\n </article>\n\n <article\n // open existing project\n class=\"card-filled\"\n >\n <header class=\"card__header\">\n <div class=\"card__header-description\">\n <h2 class=\"subtitle-regular-s\">\n {this.#componentLocale.openExistingProject.title}\n </h2>\n <p class=\"body-regular-m\">\n {this.#componentLocale.openExistingProject.description}\n </p>\n </div>\n </header>\n <footer class=\"card__footer\">\n <button\n class=\"button-secondary cancel-btn\"\n onClick={this.#createKBClickHandler(true)}\n >\n {this.#componentLocale.openExistingProject.buttonCaption}\n </button>\n </footer>\n </article>\n </section>\n </section>\n <section class=\"section-secondary scrollable\">\n {this.loading ? (\n <gx-ide-loader\n class=\"loader\"\n loaderTitle={this.#componentLocale.recentKBs.loaderTitle}\n description={this.#componentLocale.recentKBs.loaderDescription}\n show\n ></gx-ide-loader>\n ) : (\n this.#evaluateContentToRender()\n )}\n </section>\n </main>\n </Host>\n );\n }\n}\n\nexport type RecentKBData = {\n id?: string;\n name: string;\n lastOpenedDate?: Date;\n icon: string;\n};\n\nexport type SecondarySection = {\n title: string;\n cards: CardInfo[];\n};\n\nexport type CardInfo = {\n icon?: {\n src: string;\n ariaLabel: string;\n };\n title: string;\n description: string[];\n action?: {\n iconSrc: string;\n caption: string;\n callback?: () => void;\n };\n};\n\ntype LanguageMap = {\n \"en\": LocaleDateFns;\n \"ja\": LocaleDateFns;\n \"zh-CN\": LocaleDateFns;\n \"zh-TW\": LocaleDateFns;\n \"zh-HK\": LocaleDateFns;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"start-page.js","sourceRoot":"","sources":["../../../src/components/start-page/start-page.tsx"],"names":[],"mappings":"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","sourcesContent":["// Stencil\nimport { Component, Host, h, Prop, State, Element, Watch } from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { formatDistanceToNow, Locale as LocaleDateFns } from \"date-fns\";\nimport { ja, zhCN, enUS } from \"date-fns/locale\";\n// import { enUS } from \"date-fns/locale\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\n// Custom\nimport { Locale } from \"../../common/locale\";\n\n// const locale = enUS; // use `zhCN` for Chinese, `ja` for Japanese, `enUS` for English\n\nconst LANGS_DATE_FNS_MAP: LanguageMap = {\n \"en\": enUS,\n \"ja\": ja,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhCN,\n \"zh-HK\": zhCN\n};\n\nconst DETAIL_ICON = getIconPath({\n category: \"system\",\n name: \"detail\",\n colorType: \"primary\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst KB_DEFAULT_ICON = getIconPath({\n category: \"objects\",\n name: \"knowledge-base\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/layout\",\n \"components/edit\",\n \"components/icon\",\n \"components/button\",\n \"chameleon/scrollbar\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-start-page\",\n styleUrl: \"start-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/start-page\"]\n})\nexport class GxIdeStartPage {\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 #userLanguage: LocaleDateFns;\n\n @Element() el: HTMLGxIdeStartPageElement;\n\n @State() kbFilterValue: string = \"\";\n @Watch(\"kbFilterValue\")\n kbFilterValueChanged(newKbFilterValue: string) {\n this.filteredKbs = this.kbs.filter(kb =>\n kb.name.toLowerCase().includes(newKbFilterValue.toLocaleLowerCase())\n );\n }\n\n /**\n * The kbs after the filter value.\n */\n @State() filteredKbs: RecentKBData[];\n\n /**\n * True if the start page is waiting, either for the kb's list or the secondary section.\n */\n @State() loading: boolean = true;\n\n /**\n * Callback invoked to create a new KB. It must be specified whether this create is create from server or not, through the parameter 'fromServer'.\n */\n @Prop() readonly createKBCallback!: (fromServer: boolean) => Promise<void>;\n\n /**\n * Callback invoked to open a KB when the user clicks on a KB card.\n */\n @Prop() readonly openKbCallback!: (id: string) => Promise<void>;\n\n /**\n * The secondary section that will appear below the \"Create a new Knowledge Base\" main section. This section will be displayed if there are no recent kbs.\n */\n @Prop() readonly secondarySection?: SecondarySection;\n\n /**\n * User's kbs array\n */\n @Prop() readonly kbs: RecentKBData[];\n @Watch(\"kbs\")\n kbsChanged(newKbs: RecentKBData[]) {\n this.filteredKbs = newKbs;\n this.kbFilterValue = \"\"; // clear filter\n }\n\n /**\n * The minimum required of kbs to display a filter.\n */\n @Prop() readonly kbsFilterThreshold: number;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize filteredKbs\n this.kbsChanged(this.kbs);\n\n // get user language to display the kb \"last opened\" value in the appropriate language.\n const userLanguage: keyof LanguageMap = document.documentElement\n .lang as keyof LanguageMap;\n this.#userLanguage = LANGS_DATE_FNS_MAP[userLanguage];\n }\n\n #createKBClickHandler = (fromServer: boolean) => (event: MouseEvent) => {\n event.stopPropagation();\n this.createKBCallback(fromServer);\n };\n\n #openKbClickHandler = (kbId: string) => (event: MouseEvent) => {\n event.stopPropagation();\n this.openKbCallback(kbId);\n };\n\n #filterKbs = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbFilterValue = event.detail as string;\n };\n\n #renderKbsSection = () => {\n const hideKbsFilter = this.kbs.length < this.kbsFilterThreshold;\n const kbsListEmpty = this.filteredKbs.length === 0;\n let contentToRender: HTMLGxgIdeLoaderElement | HTMLElement[];\n\n // Evaluate what is the content to display.\n if (this.filteredKbs.length > 0) {\n contentToRender = this.#renderKbs();\n } else {\n // No kb has pass the filter. Display an empty-state.\n contentToRender = (\n <gx-ide-empty-state\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.recentKBs.noMatches}\n ></gx-ide-empty-state>\n );\n }\n\n return (\n <section class=\"section-kbs\">\n <header\n class={{\n \"section-kbs__header\": true\n }}\n >\n <label\n class=\"subtitle-regular-s section-kbs__title\"\n htmlFor=\"filter-kbs\"\n >\n {this.#componentLocale.recentKBs.title}\n </label>\n <ch-edit\n // Render always, and display or hide, ro prevent FOUC, and also prevent\n // the header block-size from growing a little bit when the input renders.\n id=\"filter-kbs\"\n value={this.kbFilterValue}\n class={{\n \"input\": true,\n \"section-kbs__filter--hidden\": hideKbsFilter\n }}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.recentKBs.filterKbsPlaceholder}\n onInput={!hideKbsFilter && this.#filterKbs}\n disabled={hideKbsFilter}\n ></ch-edit>\n </header>\n\n <div\n class={{\n \"section-kbs__list\": true,\n \"section-kbs__list--empty\": kbsListEmpty,\n \"scrollable\": true\n }}\n >\n {this.filteredKbs.length > 0 ? this.#renderKbs() : contentToRender}\n </div>\n </section>\n );\n };\n\n #renderKbs = (): HTMLElement[] => {\n return this.filteredKbs?.map((kb, index) => {\n // relative time ago\n\n const relativeDate = kb.lastOpenedDate\n ? formatDistanceToNow(new Date(kb.lastOpenedDate), {\n addSuffix: true,\n locale: this.#userLanguage\n })\n : undefined;\n\n // icon\n const kbIcon = kb.icon ?? KB_DEFAULT_ICON;\n\n return (\n <article class=\"kb__item\" key={index}>\n <div class=\"kb__details\">\n <ch-image class=\"icon-md\" src={kbIcon}></ch-image>\n <p\n class=\"body-regular-m kb__name\"\n onClick={this.#openKbClickHandler(kb.id)}\n >\n {kb.name}\n </p>\n </div>\n {relativeDate && (\n <div class=\"body-regular-m kb__modified\">\n {`${this.#componentLocale.recentKBs.opened} ${relativeDate}`}\n </div>\n )}\n </article>\n );\n });\n };\n\n #evaluateContentToRender() {\n return this.kbs && this.kbs.length > 0\n ? this.#renderKbsSection()\n : this.#renderSecondarySection();\n }\n\n #renderSecondarySection = (): HTMLElement | null => {\n if (!this.secondarySection) {\n return null;\n }\n\n const multipleCards = this.secondarySection.cards.length > 2;\n\n return (\n <section\n // Recent Knowledge Bases\n class=\"section-secondary\"\n >\n <header>\n <h2 class=\"subtitle-regular-s\">{this.secondarySection.title}</h2>\n </header>\n\n <section\n class={{\n \"section-secondary__actions\": true,\n \"section-secondary__actions--two-cards\": !multipleCards,\n \"section-secondary__actions--multiple-cards\": multipleCards,\n \"scrollable\": true\n }}\n >\n {this.secondarySection.cards.map((card, index) => {\n return (\n <article class=\"card card-outlined\" key={index}>\n <header class=\"card__header\">\n <span class=\"icon-capsule\">\n <ch-image\n class=\"icon-md icon-circular\"\n src={card.icon.src}\n aria-label={card.icon.ariaLabel}\n ></ch-image>\n </span>\n <div class=\"card__header-description\">\n <h2 class=\"subtitle-regular-s\">{card.title}</h2>\n {card.description.map(paragraph => (\n <p class=\"body-regular-m\">{paragraph}</p>\n ))}\n </div>\n </header>\n <footer class=\"card__footer\">\n {card.action && (\n <button\n class=\"button-tertiary button-icon-and-text\"\n onClick={card.action.callback && card.action.callback}\n >\n <ch-image class=\"icon-md\" src={DETAIL_ICON}></ch-image>\n {card.action.caption}\n </button>\n )}\n </footer>\n </article>\n );\n })}\n </section>\n </section>\n );\n };\n\n render() {\n this.loading =\n (!this.kbs || this.kbs?.length === 0) && !this.secondarySection;\n return (\n <Host class=\"widget scrollable spacing-body\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"main scrollable\">\n <section\n // Create a new Knowledge Base\n class=\"section-create-new-kb\"\n >\n <header\n // main header\n class=\"section-create-new__header\"\n >\n <h1 class=\"heading-4\">{this.#componentLocale.createKB.title}</h1>\n <p class=\"body-regular-m\">\n {this.#componentLocale.createKB.description}\n </p>\n </header>\n\n <section class=\"section-create-new-kb__actions scrollable\">\n <article\n // create project\n class=\"card card-filled\"\n >\n <header class=\"card__header\">\n <div class=\"card__header-description\">\n <h2 class=\"subtitle-regular-s\">\n {this.#componentLocale.createProject.title}\n </h2>\n <p class=\"body-regular-m\">\n {this.#componentLocale.createProject.description}\n </p>\n </div>\n </header>\n <footer class=\"card__footer\">\n <button\n class=\"button-primary\"\n onClick={this.#createKBClickHandler(false)}\n >\n {this.#componentLocale.createProject.buttonCaption}\n </button>\n </footer>\n </article>\n\n <article\n // open existing project\n class=\"card-filled\"\n >\n <header class=\"card__header\">\n <div class=\"card__header-description\">\n <h2 class=\"subtitle-regular-s\">\n {this.#componentLocale.openExistingProject.title}\n </h2>\n <p class=\"body-regular-m\">\n {this.#componentLocale.openExistingProject.description}\n </p>\n </div>\n </header>\n <footer class=\"card__footer\">\n <button\n class=\"button-secondary cancel-btn\"\n onClick={this.#createKBClickHandler(true)}\n >\n {this.#componentLocale.openExistingProject.buttonCaption}\n </button>\n </footer>\n </article>\n </section>\n </section>\n <section class=\"section-secondary scrollable\">\n {this.loading ? (\n <gx-ide-loader\n class=\"loader\"\n loaderTitle={this.#componentLocale.recentKBs.loaderTitle}\n description={this.#componentLocale.recentKBs.loaderDescription}\n show\n ></gx-ide-loader>\n ) : (\n this.#evaluateContentToRender()\n )}\n </section>\n </main>\n </Host>\n );\n }\n}\n\nexport type RecentKBData = {\n id?: string;\n name: string;\n lastOpenedDate?: Date;\n icon: string;\n};\n\nexport type SecondarySection = {\n title: string;\n cards: CardInfo[];\n};\n\nexport type CardInfo = {\n icon?: {\n src: string;\n ariaLabel: string;\n };\n title: string;\n description: string[];\n action?: {\n iconSrc: string;\n caption: string;\n callback?: () => void;\n };\n};\n\ntype LanguageMap = {\n \"en\": LocaleDateFns;\n \"ja\": LocaleDateFns;\n \"zh-CN\": LocaleDateFns;\n \"zh-TW\": LocaleDateFns;\n \"zh-HK\": LocaleDateFns;\n};\n"]}
|