@genexus/genexus-ide-ui 0.0.101 → 0.0.102

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.
Files changed (29) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-new-object.cjs.entry.js +57 -7
  3. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gxg-list-box_2.cjs.entry.js +9 -0
  5. package/dist/cjs/gxg-list-box_2.cjs.entry.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/components/new-object/new-object.js +74 -7
  8. package/dist/collection/components/new-object/new-object.js.map +1 -1
  9. package/dist/components/gx-ide-new-object.js +58 -7
  10. package/dist/components/gx-ide-new-object.js.map +1 -1
  11. package/dist/components/list-box.js +12 -1
  12. package/dist/components/list-box.js.map +1 -1
  13. package/dist/esm/genexus-ide-ui.js +1 -1
  14. package/dist/esm/gx-ide-new-object.entry.js +57 -7
  15. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  16. package/dist/esm/gxg-list-box_2.entry.js +9 -0
  17. package/dist/esm/gxg-list-box_2.entry.js.map +1 -1
  18. package/dist/esm/loader.js +1 -1
  19. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  20. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  21. package/dist/genexus-ide-ui/{p-4a5ad686.entry.js → p-ac1a72d9.entry.js} +62 -11
  22. package/dist/genexus-ide-ui/p-ac1a72d9.entry.js.map +1 -0
  23. package/dist/genexus-ide-ui/{p-4e155cd5.entry.js → p-bf7c17a8.entry.js} +10 -1
  24. package/dist/genexus-ide-ui/p-bf7c17a8.entry.js.map +1 -0
  25. package/dist/types/components/new-object/new-object.d.ts +15 -1
  26. package/dist/types/components.d.ts +8 -0
  27. package/package.json +3 -3
  28. package/dist/genexus-ide-ui/p-4a5ad686.entry.js.map +0 -1
  29. package/dist/genexus-ide-ui/p-4e155cd5.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"file":"gx-ide-new-object.entry.cjs.js","mappings":"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","names":["getAssetPath","h","Locale","Host","config"],"sources":["src/components/new-object/new-object.scss?tag=gx-ide-new-object&encapsulation=shadow","src/components/new-object/new-object.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n border: 1px solid var(--gxg-border-color--regular);\n background-color: var(--mer-color__surface);\n}\n/*main*/\n.main {\n display: grid;\n grid-template-rows: 1fr auto;\n overflow: auto;\n height: 100%;\n}\n.categories-types-container {\n display: flex;\n flex-direction: row;\n flex-shrink: 1;\n overflow: hidden;\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n .categories {\n flex: 1;\n }\n .types {\n flex: 2;\n }\n}\n.api-description {\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n gap: var(--gx-ide-grid-row-gap);\n padding: var(--gx-ide-grid-row-gap);\n}\n.form {\n display: grid;\n grid-template-columns: minmax(95px, auto) 1fr;\n grid-template-areas:\n \"name-label name-input\"\n \"description-label description-input\"\n \"module-label module-input\";\n gap: var(--gx-ide-grid-row-gap);\n column-gap: 0;\n\n .name-label {\n grid-area: \"name-label\";\n }\n .name-input {\n grid-area: \"name-input\";\n }\n .description-label {\n grid-area: \"description-label\";\n }\n .description-input {\n grid-area: \"description-input\";\n }\n .module-label {\n grid-area: \"module-label\";\n }\n .module-input {\n grid-area: \"module-input\";\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { SelectionChangedEvent } from \"@genexus/gemini/dist/types/components/list-box/list-box\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\nimport { EntityData } from \"../../common/types\";\n\n@Component({\n tag: \"gx-ide-new-object\",\n styleUrl: \"new-object.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/new-object\"]\n})\nexport class GxIdeNewObject {\n /*\nINDEX:\n1.OWN PROPERTIES\n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE EVENTS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/new-object/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeNewObjectElement;\n\n /* References needed to collect data con \"Create\" button submit*/\n private nameEl!: HTMLGxgFormTextElement;\n private descriptionEl!: HTMLGxgFormTextElement;\n private moduleFolderEl!: HTMLGxIdeEntitySelectorElement;\n private descriptionModifiedByUser = false;\n private gxgShortcutsEl: HTMLGxgShortcutsElement;\n\n // 3.STATE() VARIABLES //\n\n @State() selectedCategory: TypeCategoryData | null;\n @State() selectedType: TypeData | null;\n @Watch(\"selectedType\")\n watchSelectedTypeHandler() {\n this.descriptionModifiedByUser = false;\n }\n @State() nameIsValid = false;\n // Name of the new object\n @State() name: string = undefined;\n // Description of the new object\n @State() description: string = undefined;\n\n // 4.PUBLIC PROPERTY API //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Applies a shadow all around\n */\n @Prop() readonly shadow = false;\n\n /**\n * Array containing category list and its corresponding types\n */\n @Prop() readonly typeCategories!: TypeCategoryData[];\n\n /**\n * Current value for Module/Folder\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when you must validate a name. Returns error message or 'undefined' if name is not valid.\n */\n @Prop() readonly validateNameCallback: ValidateNameCallback;\n\n /**\n * Callback invoked when user wants to cancel object creation\n */\n @Prop() readonly createCallback: CreateCallback;\n\n /**\n * Callback invoked when user wants to confirm object creation\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event emm=its the data needed to create a new object\n */\n @Event() create: EventEmitter<NewObjectData>;\n\n /**\n * This event is trigger after a validation of the object name is made. Returns undefined if its valid, otherwise an error message\n */\n @Event() validateName: EventEmitter<string | undefined>;\n\n /**\n * This event emits the 'cancel' event\n */\n @Event() cancel: EventEmitter<boolean>;\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n async componentWillLoad() {\n this.init();\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.nameEl.focus();\n this.setFirstFocusableElement();\n this.validateInitialName();\n this.componentDidLoadEvent.emit(true);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.gxgShortcutsEl.suspend = true;\n } else {\n this.gxgShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n\n private setFirstFocusableElement = () => {\n this.el.addEventListener(\"focus\", () => {\n this.nameEl.focus();\n });\n };\n\n private validateInitialName = async () => {\n const result: string | undefined = await this.validateNameCallback(\n this.name\n );\n this.validateNameHandler(result);\n };\n\n private renderModuleFolder = () => {\n if (this.selectedType.hasModule || this.selectedType.hasFolder) {\n let labelDescription = this._componentLocale.moduleFolder;\n if (!this.selectedType.hasFolder) {\n labelDescription = this._componentLocale.moduleOnly;\n } else if (!this.selectedType.hasModule) {\n labelDescription = this._componentLocale.folderOnly;\n }\n return [\n <gxg-label labelPosition=\"start\">{labelDescription}</gxg-label>,\n <gx-ide-entity-selector\n value={this.parent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.moduleFolderEl = el as HTMLGxIdeEntitySelectorElement)\n }\n id=\"module\"\n part=\"module\"\n ></gx-ide-entity-selector>\n ];\n }\n return null;\n };\n\n /**\n * This method initializes tha name value. It depends on 'this.selectedType'\n */\n private init = () => {\n this.selectedCategory = this.typeCategories[0];\n this.selectedType = this.typeCategories[0].types[0];\n\n if (this.selectedType && this.selectedType.name.length > 0) {\n this.name = this.getNameSuggestion(this.selectedType);\n this.description = this.selectedType.name;\n }\n };\n\n private getNameSuggestion = (selectedType:TypeData) => {\n //Type name can include whitespaces, we need to replace all whitespaces to avoid invalid suggestions:\n return selectedType.name.replace(/\\s/g, '');\n }\n\n private onInputNameHandler = (e: CustomEvent<string>) => {\n const name = e.detail;\n if (!this.descriptionModifiedByUser) {\n // description should be equal to name, unless the description was already modified by the user.\n this.descriptionEl.value = name;\n }\n };\n\n private onBlurNameHandler = async () => {\n const result: string | undefined = await this.validateNameCallback(\n this.nameEl.value\n );\n this.validateNameHandler(result);\n };\n\n private onNameValueChangedHandler = async (e: CustomEvent<string>) => {\n const name = e.detail;\n const result: string | undefined = await this.validateNameCallback(name);\n this.validateNameHandler(result);\n };\n\n private onInputDescriptionHandler = (e: CustomEvent<string>) => {\n this.description = e.detail;\n this.descriptionModifiedByUser = true;\n };\n\n /**\n * If the parameter is undefined, is because the name is valid. Otherwise, if it receives a string, is because the name is not valid. The string is the error message to display.\n */\n private validateNameHandler = (result: string | undefined): void => {\n if (result !== undefined) {\n // the name is not valid. display message\n this.nameEl.validationMessage = result;\n this.nameEl.validationStatus = \"error\";\n this.nameIsValid = false;\n } else {\n // valid name\n this.nameEl.validationMessage = null;\n this.nameEl.validationStatus = \"indeterminate\";\n this.nameIsValid = true;\n }\n };\n\n private createCallbackHandler = async (): Promise<void> => {\n const data: NewObjectData = {\n typeId: this.selectedType?.id,\n name: this.nameEl.value,\n description: !this.descriptionModifiedByUser\n ? undefined\n : this.descriptionEl.value,\n moduleId: this.moduleFolderEl?.value?.id\n };\n const result = await this.createCallback(data);\n this.validateNameHandler(result);\n };\n\n private cancelCallbackHandler = async (): Promise<void> => {\n await this.cancelCallback();\n };\n\n private categoryOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<SelectionChangedEvent>\n ): void => {\n const selection = selectionEvent.detail.items;\n if (selection.length > 0) {\n const selectedCategory = this.typeCategories[selection[0].index];\n if (selectedCategory) {\n this.selectedCategory = selectedCategory;\n if (selectedCategory.types.length > 0) {\n this.selectedType = selectedCategory.types[0];\n }\n }\n }\n };\n\n private typeOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<SelectionChangedEvent>\n ) => {\n const selection = selectionEvent.detail.items;\n if (selection.length > 0) {\n const selected = selection[0];\n this.selectedType = this.selectedCategory.types[selected.index];\n }\n };\n\n // 10.LOCAL METHODS (RENDER) //\n\n // 11.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n noContentPadding\n noContentGap\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n noHeadingBorder\n >\n <main class=\"main\">\n <div class=\"categories-types-container\">\n <div class=\"categories\">\n {/* select a category listbox*/}\n {this.typeCategories.length > 0 ? (\n <gxg-list-box\n class=\"category\"\n single-selection\n noBorder\n borderEnd\n the-title={this._componentLocale.categorySelectionTitle}\n onSelectionChanged={\n this.categoryOnSelectionChangedHandler\n }\n >\n {this.typeCategories.map(category => (\n <gxg-list-box-item\n key={category.id}\n value={category.id}\n icon={category.icon}\n part={`category-${category.id}`}\n >\n {category.name}\n </gxg-list-box-item>\n ))}\n </gxg-list-box>\n ) : null}\n </div>\n <div class=\"types\">\n {/* types listbox*/}\n {this.selectedCategory.types.length > 0 ? (\n <gxg-list-box\n class=\"types\"\n single-selection\n noBorder\n theTitle={\n this.selectedCategory.name\n ? `${this.selectedCategory.name} ${this._componentLocale.typeSelectionTitleSuffix}`\n : this._componentLocale.typeSelectionTitle\n }\n key={this.selectedCategory.id}\n onSelectionChanged={this.typeOnSelectionChangedHandler}\n >\n {this.selectedCategory.types.map(type => (\n <gxg-list-box-item\n key={`${this.selectedCategory.id}-${type.id}`}\n icon={type.icon}\n part={`type-${this.selectedCategory.id}-${type.id}`}\n >\n {type.name}\n </gxg-list-box-item>\n ))}\n </gxg-list-box>\n ) : (\n <p>No Categories to display</p>\n )}\n </div>\n </div>\n <div class=\"api-description\">\n {/* api description title*/}\n <gxg-title type=\"title-05\">\n {this.selectedType?.description}\n </gxg-title>\n <div class=\"form\">\n {/* selected type name */}\n <gxg-label labelPosition=\"start\">\n {this._componentLocale.objectName}\n </gxg-label>\n <gxg-form-text\n label-position=\"start\"\n placeholder=\"Name\"\n max-width=\"100%\"\n value={this.getNameSuggestion(this.selectedType)}\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.nameEl = el as HTMLGxgFormTextElement)\n }\n onInput={this.onInputNameHandler as any}\n onBlur={this.onBlurNameHandler}\n onValueChanged={this.onNameValueChangedHandler}\n debounce\n part=\"name\"\n display-validation-styles\n display-validation-message\n ></gxg-form-text>\n\n {/* description */}\n <gxg-label labelPosition=\"start\">\n {this._componentLocale.objectDescription}\n </gxg-label>\n <gxg-form-text\n label-position=\"start\"\n placeholder=\"Description\"\n max-width=\"100%\"\n value={this.selectedType.name}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.descriptionEl = el as HTMLGxgFormTextElement)\n }\n onInput={this.onInputDescriptionHandler as any}\n part=\"description\"\n display-validation-styles\n display-validation-message\n ></gxg-form-text>\n\n {this.renderModuleFolder()}\n </div>\n </div>\n </main>\n\n {/* Footer*/}\n {/* cancel button*/}\n <gxg-button\n id=\"button-cancel\"\n slot=\"footer-end\"\n type=\"outlined\"\n onClick={this.cancelCallbackHandler}\n part=\"gxg-button gxg-button--cancel\"\n >\n {this._componentLocale.footer.btnCancel}\n </gxg-button>\n {/* create button*/}\n <gxg-button\n id=\"button-create\"\n slot=\"footer-end\"\n type=\"primary-text-only\"\n onClick={this.createCallbackHandler}\n disabled={!this.nameIsValid}\n part=\"gxg-button gxg-button--create\"\n >\n {this._componentLocale.footer.btnCreate}\n </gxg-button>\n </gx-ide-container>\n </div>\n <gxg-shortcuts\n src={this.shortcutsSrc}\n ref={(el: HTMLGxgShortcutsElement) =>\n (this.gxgShortcutsEl = el as HTMLGxgShortcutsElement)\n }\n ></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport interface NewObjectData {\n typeId: string;\n name: string;\n description: string | undefined;\n moduleId: string;\n}\n\nexport type ValidateNameCallback = (\n name: string\n) => Promise<string | undefined>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type CreateCallback = (\n data: NewObjectData\n) => Promise<string | undefined>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type TypeCategoryData = {\n id: string;\n name: string;\n icon: string;\n types: TypeData[];\n};\n\nexport type TypeData = {\n id: string;\n name: string;\n icon: string;\n hasModule: boolean;\n hasFolder: boolean;\n description: string;\n};\n"],"version":3}
1
+ {"file":"gx-ide-new-object.entry.cjs.js","mappings":"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","names":["getAssetPath","h","Locale","Host","config"],"sources":["src/components/new-object/new-object.scss?tag=gx-ide-new-object&encapsulation=shadow","src/components/new-object/new-object.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n border: 1px solid var(--gxg-border-color--regular);\n background-color: var(--mer-color__surface);\n}\n/*main*/\n.main {\n display: grid;\n grid-template-rows: 1fr auto;\n overflow: auto;\n height: 100%;\n}\n.categories-types-container {\n display: flex;\n flex-direction: row;\n flex-shrink: 1;\n overflow: hidden;\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n .categories {\n flex: 1;\n }\n .types {\n flex: 2;\n }\n}\n.api-description {\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n gap: var(--gx-ide-grid-row-gap);\n padding: var(--gx-ide-grid-row-gap);\n}\n.form {\n display: grid;\n grid-template-columns: minmax(95px, auto) 1fr;\n grid-template-areas:\n \"name-label name-input\"\n \"description-label description-input\"\n \"module-label module-input\";\n gap: var(--gx-ide-grid-row-gap);\n column-gap: 0;\n\n .name-label {\n grid-area: \"name-label\";\n }\n .name-input {\n grid-area: \"name-input\";\n }\n .description-label {\n grid-area: \"description-label\";\n }\n .description-input {\n grid-area: \"description-input\";\n }\n .module-label {\n grid-area: \"module-label\";\n }\n .module-input {\n grid-area: \"module-input\";\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { SelectionChangedEvent } from \"@genexus/gemini/dist/types/components/list-box/list-box\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\nimport { EntityData } from \"../../common/types\";\n\n@Component({\n tag: \"gx-ide-new-object\",\n styleUrl: \"new-object.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/new-object\"]\n})\nexport class GxIdeNewObject {\n /*\nINDEX:\n1.OWN PROPERTIES\n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE EVENTS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/new-object/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeNewObjectElement;\n\n /* References needed to collect data con \"Create\" button submit*/\n private nameEl!: HTMLGxgFormTextElement;\n private descriptionEl!: HTMLGxgFormTextElement;\n private moduleFolderEl!: HTMLGxIdeEntitySelectorElement;\n private descriptionModifiedByUser = false;\n private nameModifiedByUser = false;\n private gxgShortcutsEl: HTMLGxgShortcutsElement;\n private categoryListBox!: HTMLGxgListBoxElement;\n private typeListBox!: HTMLGxgListBoxElement;\n\n // 3.STATE() VARIABLES //\n\n @State() selectedCategory: TypeCategoryData | null;\n @State() selectedType: TypeData | null;\n @Watch(\"selectedType\")\n watchSelectedTypeHandler() {\n this.descriptionModifiedByUser = false;\n }\n @State() nameIsValid = false;\n // Name of the new object\n @State() name: string = undefined;\n // Description of the new object\n @State() description: string = undefined;\n\n // 4.PUBLIC PROPERTY API //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Applies a shadow all around\n */\n @Prop() readonly shadow = false;\n\n /**\n * Array containing category list and its corresponding types\n */\n @Prop() readonly typeCategories!: TypeCategoryData[];\n\n /**\n * Current value for Module/Folder\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Allows you to define the type selected by default when instantiating the dialog. Represented by the type identifier\n */\n @Prop() readonly defaultTypeId: string;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when you must validate a name. Returns error message or 'undefined' if name is not valid.\n */\n @Prop() readonly validateNameCallback: ValidateNameCallback;\n\n /**\n * Callback invoked when user wants to cancel object creation\n */\n @Prop() readonly createCallback: CreateCallback;\n\n /**\n * Callback invoked when user wants to confirm object creation\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event emm=its the data needed to create a new object\n */\n @Event() create: EventEmitter<NewObjectData>;\n\n /**\n * This event is trigger after a validation of the object name is made. Returns undefined if its valid, otherwise an error message\n */\n @Event() validateName: EventEmitter<string | undefined>;\n\n /**\n * This event emits the 'cancel' event\n */\n @Event() cancel: EventEmitter<boolean>;\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n async componentWillLoad() {\n this.init();\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.nameEl.focus();\n this.setFirstFocusableElement();\n this.validateInitialName();\n this.componentDidLoadEvent.emit(true);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n this.scrollIntoViewListBoxes();\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.gxgShortcutsEl.suspend = true;\n } else {\n this.gxgShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n\n /**\n * Scroll into view on both list-boxes. Only makes sense if defaultTypeId is not undefined, since otherwise in both list-boxes the initial selected item should be the first one, in which case is not needed to do scrollIntoView. Only call this method after the first render on new-object.\n */\n private scrollIntoViewListBoxes = () => {\n if (this.defaultTypeId) {\n this.categoryListBox.scrollToSelected();\n this.typeListBox.scrollToSelected();\n }\n };\n\n private setFirstFocusableElement = () => {\n this.el.addEventListener(\"focus\", () => {\n this.nameEl.focus();\n });\n };\n\n private validateInitialName = async () => {\n const result: string | undefined = await this.validateNameCallback(\n this.name\n );\n this.validateNameHandler(result);\n };\n\n private renderModuleFolder = () => {\n if (this.selectedType.hasModule || this.selectedType.hasFolder) {\n let labelDescription = this._componentLocale.moduleFolder;\n if (!this.selectedType.hasFolder) {\n labelDescription = this._componentLocale.moduleOnly;\n } else if (!this.selectedType.hasModule) {\n labelDescription = this._componentLocale.folderOnly;\n }\n return [\n <gxg-label labelPosition=\"start\">{labelDescription}</gxg-label>,\n <gx-ide-entity-selector\n value={this.parent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.moduleFolderEl = el as HTMLGxIdeEntitySelectorElement)\n }\n id=\"module\"\n part=\"module\"\n ></gx-ide-entity-selector>\n ];\n }\n return null;\n };\n\n /**\n * This method defines the initial selected category and type, and it thens initializes tha name value.\n */\n private init = () => {\n const defaultTypeFound = this.setDefaultType(this.defaultTypeId);\n if (!defaultTypeFound) {\n this.selectedCategory = this.typeCategories[0];\n this.selectedType = this.selectedCategory.types[0];\n }\n if (this.selectedType && this.selectedType.name.length > 0) {\n this.name = this.getNameSuggestion(this.selectedType);\n this.description = this.selectedType.name;\n }\n };\n\n private setDefaultType = (typeId: string | undefined): boolean => {\n if (!typeId) {\n return false;\n }\n let found = false;\n outerLoop: for (let i = 0; i < this.typeCategories.length; i++) {\n for (let j = 0; j < this.typeCategories[i].types.length; j++) {\n const loopTypeId = this.typeCategories[i].types[j].id;\n if (loopTypeId === typeId) {\n this.selectedCategory = this.typeCategories[i];\n this.selectedType = this.typeCategories[i].types[j];\n found = true;\n break outerLoop;\n }\n }\n }\n return found;\n };\n\n private getNameSuggestion = (selectedType: TypeData) => {\n // Type name can include whitespaces, we need to replace all whitespaces to avoid invalid suggestions:\n return selectedType.name.replace(/\\s/g, \"\");\n };\n\n private nameValueHandler = (): string => {\n if (this.nameModifiedByUser) {\n return this.nameEl.value;\n } else {\n return this.getNameSuggestion(this.selectedType);\n }\n };\n\n private descriptionValueHandler = () => {\n if (this.nameModifiedByUser) {\n return this.descriptionEl.value;\n } else {\n return this.selectedType.name;\n }\n };\n\n private onInputNameHandler = (e: CustomEvent<string>) => {\n const name = e.detail;\n if (!this.descriptionModifiedByUser) {\n // description should be equal to name, unless the description was already modified by the user.\n this.descriptionEl.value = name;\n }\n this.nameModifiedByUser = true;\n };\n\n private onBlurNameHandler = async () => {\n const result: string | undefined = await this.validateNameCallback(\n this.nameEl.value\n );\n this.validateNameHandler(result);\n };\n\n private onNameValueChangedHandler = async (e: CustomEvent<string>) => {\n const name = e.detail;\n const result: string | undefined = await this.validateNameCallback(name);\n this.validateNameHandler(result);\n };\n\n private onInputDescriptionHandler = (e: CustomEvent<string>) => {\n this.description = e.detail;\n this.descriptionModifiedByUser = true;\n };\n\n /**\n * If the parameter is undefined, is because the name is valid. Otherwise, if it receives a string, is because the name is not valid. The string is the error message to display.\n */\n private validateNameHandler = (result: string | undefined): void => {\n if (result !== undefined) {\n // the name is not valid. display message\n this.nameEl.validationMessage = result;\n this.nameEl.validationStatus = \"error\";\n this.nameIsValid = false;\n } else {\n // valid name\n this.nameEl.validationMessage = null;\n this.nameEl.validationStatus = \"indeterminate\";\n this.nameIsValid = true;\n }\n };\n\n private createCallbackHandler = async (): Promise<void> => {\n const data: NewObjectData = {\n typeId: this.selectedType?.id,\n name: this.nameEl.value,\n description: !this.descriptionModifiedByUser\n ? undefined\n : this.descriptionEl.value,\n moduleId: this.moduleFolderEl?.value?.id\n };\n const result = await this.createCallback(data);\n this.validateNameHandler(result);\n };\n\n private cancelCallbackHandler = async (): Promise<void> => {\n await this.cancelCallback();\n };\n\n private categoryOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<SelectionChangedEvent>\n ): void => {\n const selection = selectionEvent.detail.items;\n if (selection.length > 0) {\n const selectedCategory = this.typeCategories[selection[0].index];\n if (selectedCategory) {\n this.selectedCategory = selectedCategory;\n if (selectedCategory.types.length > 0) {\n this.selectedType = selectedCategory.types[0];\n }\n }\n }\n };\n\n private typeOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<SelectionChangedEvent>\n ) => {\n const selection = selectionEvent.detail.items;\n if (selection.length > 0) {\n const selected = selection[0];\n this.selectedType = this.selectedCategory.types[selected.index];\n }\n };\n\n // 10.LOCAL METHODS (RENDER) //\n\n // 11.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n noContentPadding\n noContentGap\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n noHeadingBorder\n >\n <main class=\"main\">\n <div class=\"categories-types-container\">\n <div class=\"categories\">\n {/* select a category listbox*/}\n {this.typeCategories.length > 0 ? (\n <gxg-list-box\n class=\"category\"\n single-selection\n noBorder\n borderEnd\n the-title={this._componentLocale.categorySelectionTitle}\n onSelectionChanged={\n this.categoryOnSelectionChangedHandler\n }\n ref={el =>\n (this.categoryListBox = el as HTMLGxgListBoxElement)\n }\n >\n {this.typeCategories.map(category => (\n <gxg-list-box-item\n key={category.id}\n value={category.id}\n icon={category.icon}\n part={`category-${category.id}`}\n selected={this.selectedCategory.id === category.id}\n >\n {category.name}\n </gxg-list-box-item>\n ))}\n </gxg-list-box>\n ) : null}\n </div>\n <div class=\"types\">\n {/* types listbox*/}\n {this.selectedCategory.types.length > 0 ? (\n <gxg-list-box\n class=\"types\"\n single-selection\n noBorder\n theTitle={\n this.selectedCategory.name\n ? `${this.selectedCategory.name} ${this._componentLocale.typeSelectionTitleSuffix}`\n : this._componentLocale.typeSelectionTitle\n }\n key={this.selectedCategory.id}\n onSelectionChanged={this.typeOnSelectionChangedHandler}\n ref={el =>\n (this.typeListBox = el as HTMLGxgListBoxElement)\n }\n >\n {this.selectedCategory.types.map(type => (\n <gxg-list-box-item\n key={`${this.selectedCategory.id}-${type.id}`}\n icon={type.icon}\n part={`type-${this.selectedCategory.id}-${type.id}`}\n selected={this.selectedType.id === type.id}\n >\n {type.name}\n </gxg-list-box-item>\n ))}\n </gxg-list-box>\n ) : (\n <p>No Categories to display</p>\n )}\n </div>\n </div>\n <div class=\"api-description\">\n {/* api description title*/}\n <gxg-title type=\"title-05\">\n {this.selectedType?.description}\n </gxg-title>\n <div class=\"form\">\n {/* selected type name */}\n <gxg-label labelPosition=\"start\">\n {this._componentLocale.objectName}\n </gxg-label>\n <gxg-form-text\n label-position=\"start\"\n placeholder=\"Name\"\n max-width=\"100%\"\n value={this.nameValueHandler()}\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.nameEl = el as HTMLGxgFormTextElement)\n }\n onInput={this.onInputNameHandler as any}\n onBlur={this.onBlurNameHandler}\n onValueChanged={this.onNameValueChangedHandler}\n debounce\n part=\"name\"\n display-validation-styles\n display-validation-message\n ></gxg-form-text>\n\n {/* description */}\n <gxg-label labelPosition=\"start\">\n {this._componentLocale.objectDescription}\n </gxg-label>\n <gxg-form-text\n label-position=\"start\"\n placeholder=\"Description\"\n max-width=\"100%\"\n value={this.descriptionValueHandler()}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.descriptionEl = el as HTMLGxgFormTextElement)\n }\n onInput={this.onInputDescriptionHandler as any}\n part=\"description\"\n display-validation-styles\n display-validation-message\n ></gxg-form-text>\n\n {this.renderModuleFolder()}\n </div>\n </div>\n </main>\n\n {/* Footer*/}\n {/* cancel button*/}\n <gxg-button\n id=\"button-cancel\"\n slot=\"footer-end\"\n type=\"outlined\"\n onClick={this.cancelCallbackHandler}\n part=\"gxg-button gxg-button--cancel\"\n >\n {this._componentLocale.footer.btnCancel}\n </gxg-button>\n {/* create button*/}\n <gxg-button\n id=\"button-create\"\n slot=\"footer-end\"\n type=\"primary-text-only\"\n onClick={this.createCallbackHandler}\n disabled={!this.nameIsValid}\n part=\"gxg-button gxg-button--create\"\n >\n {this._componentLocale.footer.btnCreate}\n </gxg-button>\n </gx-ide-container>\n </div>\n <gxg-shortcuts\n src={this.shortcutsSrc}\n ref={(el: HTMLGxgShortcutsElement) =>\n (this.gxgShortcutsEl = el as HTMLGxgShortcutsElement)\n }\n ></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport interface NewObjectData {\n typeId: string;\n name: string;\n description: string | undefined;\n moduleId: string;\n}\n\nexport type ValidateNameCallback = (\n name: string\n) => Promise<string | undefined>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type CreateCallback = (\n data: NewObjectData\n) => Promise<string | undefined>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type TypeCategoryData = {\n id: string;\n name: string;\n icon: string;\n types: TypeData[];\n};\n\nexport type TypeData = {\n id: string;\n name: string;\n icon: string;\n hasModule: boolean;\n hasFolder: boolean;\n description: string;\n};\n"],"version":3}
@@ -287,6 +287,7 @@ const GxgListBox = class {
287
287
  this.borderEnd = false;
288
288
  this.borderBottom = false;
289
289
  this.borderStart = false;
290
+ this.initialScrollToSelected = false;
290
291
  this.selectedItems = [];
291
292
  this.checkedItems = [];
292
293
  this.hideKeyboardSuggestions = true;
@@ -315,6 +316,13 @@ const GxgListBox = class {
315
316
  });
316
317
  return selectedItemsInformation;
317
318
  }
319
+ async scrollToSelected() {
320
+ const selectedItems = this.getSelectedItemsFunc();
321
+ if (selectedItems.length) {
322
+ const firstSelectedItem = selectedItems[0];
323
+ firstSelectedItem.scrollIntoView();
324
+ }
325
+ }
318
326
  componentDidRender() {
319
327
  if (this.theTitle) {
320
328
  this.headerHeight = this.header.clientHeight;
@@ -322,6 +330,7 @@ const GxgListBox = class {
322
330
  }
323
331
  componentDidLoad() {
324
332
  //this.setInitialActive();
333
+ this.initialScrollToSelected && this.scrollToSelected();
325
334
  }
326
335
  checkboxClickedHandler() {
327
336
  this.containerEl.focus();