@genexus/genexus-ide-ui 0.0.120 → 0.0.122

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 (40) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +21 -9
  3. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +59 -0
  5. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +2 -1
  8. package/dist/collection/components/object-selector/object-selector.js +21 -9
  9. package/dist/collection/components/object-selector/object-selector.js.map +1 -1
  10. package/dist/collection/components/wf-settings/gx-ide-assets/wf-settings/langs/wf-settings.lang.en.json +29 -0
  11. package/dist/collection/components/wf-settings/gx-ide-assets/wf-settings/langs/wf-settings.lang.ja.json +3 -0
  12. package/dist/collection/components/wf-settings/gx-ide-assets/wf-settings/langs/wf-settings.lang.zh.json +3 -0
  13. package/dist/collection/components/wf-settings/wf-settings.css +535 -0
  14. package/dist/collection/components/wf-settings/wf-settings.js +173 -0
  15. package/dist/collection/components/wf-settings/wf-settings.js.map +1 -0
  16. package/dist/components/gx-ide-object-selector.js +21 -9
  17. package/dist/components/gx-ide-object-selector.js.map +1 -1
  18. package/dist/components/gx-ide-wf-settings.d.ts +11 -0
  19. package/dist/components/gx-ide-wf-settings.js +156 -0
  20. package/dist/components/gx-ide-wf-settings.js.map +1 -0
  21. package/dist/esm/genexus-ide-ui.js +1 -1
  22. package/dist/esm/gx-ide-object-selector.entry.js +21 -9
  23. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  24. package/dist/esm/gx-ide-wf-settings.entry.js +55 -0
  25. package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -0
  26. package/dist/esm/loader.js +1 -1
  27. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  28. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  29. package/dist/genexus-ide-ui/gx-ide-assets/wf-settings/langs/wf-settings.lang.en.json +29 -0
  30. package/dist/genexus-ide-ui/gx-ide-assets/wf-settings/langs/wf-settings.lang.ja.json +3 -0
  31. package/dist/genexus-ide-ui/gx-ide-assets/wf-settings/langs/wf-settings.lang.zh.json +3 -0
  32. package/dist/genexus-ide-ui/{p-7ed89885.entry.js → p-debee72d.entry.js} +134 -118
  33. package/dist/genexus-ide-ui/p-debee72d.entry.js.map +1 -0
  34. package/dist/genexus-ide-ui/p-f19ec1c3.entry.js +100 -0
  35. package/dist/genexus-ide-ui/p-f19ec1c3.entry.js.map +1 -0
  36. package/dist/types/components/object-selector/object-selector.d.ts +4 -0
  37. package/dist/types/components/wf-settings/wf-settings.d.ts +42 -0
  38. package/dist/types/components.d.ts +66 -0
  39. package/package.json +1 -1
  40. package/dist/genexus-ide-ui/p-7ed89885.entry.js.map +0 -1
@@ -46,6 +46,7 @@ import { ConfirmCallback as ConfirmCallback5, GridContextMenuCallback, LoadCallb
46
46
  import { AddCallback, CancelCallback as CancelCallback12, ConfirmCallback as ConfirmCallback6, ObjectData as ObjectData1 } from "./components/team-dev/update-partial-selection/update-partial-selection";
47
47
  import { cancelCallbackFn, confirmCallbackFn } from "./components/team-dev/update-to-revision/update-to-revision";
48
48
  import { TitleAlignment as TitleAlignment1, TitleType as TitleType1 } from "./components/_helpers/title/title";
49
+ import { ConfigurationType, WFConfigData } from "./components/wf-settings/wf-settings";
49
50
  import { ContextMenuCallback, DeleteSelectionCallback, LoadCallback as LoadCallback5, LoadImageItemsCallback, NewObjectCallback as NewObjectCallback1, OpenSelectionCallback as OpenSelectionCallback1, SelectionObjectCallback, SelectModuleCallback as SelectModuleCallback3 } from "./components/ww-images/ww-images";
50
51
  export { AiStatus, Message, UserMessageCallback } from "./components/ai-assistant/ai-assistant";
51
52
  export { MessageType } from "./components/ai-assistant/ai-assistant";
@@ -88,6 +89,7 @@ export { ConfirmCallback as ConfirmCallback5, GridContextMenuCallback, LoadCallb
88
89
  export { AddCallback, CancelCallback as CancelCallback12, ConfirmCallback as ConfirmCallback6, ObjectData as ObjectData1 } from "./components/team-dev/update-partial-selection/update-partial-selection";
89
90
  export { cancelCallbackFn, confirmCallbackFn } from "./components/team-dev/update-to-revision/update-to-revision";
90
91
  export { TitleAlignment as TitleAlignment1, TitleType as TitleType1 } from "./components/_helpers/title/title";
92
+ export { ConfigurationType, WFConfigData } from "./components/wf-settings/wf-settings";
91
93
  export { ContextMenuCallback, DeleteSelectionCallback, LoadCallback as LoadCallback5, LoadImageItemsCallback, NewObjectCallback as NewObjectCallback1, OpenSelectionCallback as OpenSelectionCallback1, SelectionObjectCallback, SelectModuleCallback as SelectModuleCallback3 } from "./components/ww-images/ww-images";
92
94
  export namespace Components {
93
95
  interface GxIdeAiAssistant {
@@ -1574,6 +1576,24 @@ export namespace Components {
1574
1576
  */
1575
1577
  "topBarTitle": string;
1576
1578
  }
1579
+ interface GxIdeWfSettings {
1580
+ /**
1581
+ * Callback invoked when the user presses the 'Cancel' button.
1582
+ */
1583
+ "cancelCallback": () => Promise<void>;
1584
+ /**
1585
+ * The configuration type
1586
+ */
1587
+ "configurationType": ConfigurationType;
1588
+ /**
1589
+ * If true it displays the component title on the header
1590
+ */
1591
+ "displayTitle": false;
1592
+ /**
1593
+ * Callback invoked when the user presses the 'OK' button. As a parameter, it receives the data entered by the user
1594
+ */
1595
+ "saveCallback": (config: WFConfigData) => Promise<void>;
1596
+ }
1577
1597
  interface GxIdeWwImages {
1578
1598
  /**
1579
1599
  * The categories render in the filter category selector
@@ -1789,6 +1809,10 @@ export interface GxIdeTemplateCustomEvent<T> extends CustomEvent<T> {
1789
1809
  detail: T;
1790
1810
  target: HTMLGxIdeTemplateElement;
1791
1811
  }
1812
+ export interface GxIdeWfSettingsCustomEvent<T> extends CustomEvent<T> {
1813
+ detail: T;
1814
+ target: HTMLGxIdeWfSettingsElement;
1815
+ }
1792
1816
  export interface GxIdeWwImagesCustomEvent<T> extends CustomEvent<T> {
1793
1817
  detail: T;
1794
1818
  target: HTMLGxIdeWwImagesElement;
@@ -2383,6 +2407,23 @@ declare global {
2383
2407
  prototype: HTMLGxIdeTopBarElement;
2384
2408
  new (): HTMLGxIdeTopBarElement;
2385
2409
  };
2410
+ interface HTMLGxIdeWfSettingsElementEventMap {
2411
+ "componentDidRenderFirstTime": string;
2412
+ }
2413
+ interface HTMLGxIdeWfSettingsElement extends Components.GxIdeWfSettings, HTMLStencilElement {
2414
+ addEventListener<K extends keyof HTMLGxIdeWfSettingsElementEventMap>(type: K, listener: (this: HTMLGxIdeWfSettingsElement, ev: GxIdeWfSettingsCustomEvent<HTMLGxIdeWfSettingsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2415
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2416
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2417
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2418
+ removeEventListener<K extends keyof HTMLGxIdeWfSettingsElementEventMap>(type: K, listener: (this: HTMLGxIdeWfSettingsElement, ev: GxIdeWfSettingsCustomEvent<HTMLGxIdeWfSettingsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2419
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2420
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2421
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2422
+ }
2423
+ var HTMLGxIdeWfSettingsElement: {
2424
+ prototype: HTMLGxIdeWfSettingsElement;
2425
+ new (): HTMLGxIdeWfSettingsElement;
2426
+ };
2386
2427
  interface HTMLGxIdeWwImagesElementEventMap {
2387
2428
  "componentDidLoadEvent": boolean;
2388
2429
  "componentDidRenderFirstTime": string;
@@ -2443,6 +2484,7 @@ declare global {
2443
2484
  "gx-ide-test": HTMLGxIdeTestElement;
2444
2485
  "gx-ide-title": HTMLGxIdeTitleElement;
2445
2486
  "gx-ide-top-bar": HTMLGxIdeTopBarElement;
2487
+ "gx-ide-wf-settings": HTMLGxIdeWfSettingsElement;
2446
2488
  "gx-ide-ww-images": HTMLGxIdeWwImagesElement;
2447
2489
  }
2448
2490
  }
@@ -4039,6 +4081,28 @@ declare namespace LocalJSX {
4039
4081
  */
4040
4082
  "topBarTitle"?: string;
4041
4083
  }
4084
+ interface GxIdeWfSettings {
4085
+ /**
4086
+ * Callback invoked when the user presses the 'Cancel' button.
4087
+ */
4088
+ "cancelCallback"?: () => Promise<void>;
4089
+ /**
4090
+ * The configuration type
4091
+ */
4092
+ "configurationType"?: ConfigurationType;
4093
+ /**
4094
+ * If true it displays the component title on the header
4095
+ */
4096
+ "displayTitle"?: false;
4097
+ /**
4098
+ * @description Gets fired when the component has rendered for the first time.
4099
+ */
4100
+ "onComponentDidRenderFirstTime"?: (event: GxIdeWfSettingsCustomEvent<string>) => void;
4101
+ /**
4102
+ * Callback invoked when the user presses the 'OK' button. As a parameter, it receives the data entered by the user
4103
+ */
4104
+ "saveCallback"?: (config: WFConfigData) => Promise<void>;
4105
+ }
4042
4106
  interface GxIdeWwImages {
4043
4107
  /**
4044
4108
  * The categories render in the filter category selector
@@ -4175,6 +4239,7 @@ declare namespace LocalJSX {
4175
4239
  "gx-ide-test": GxIdeTest;
4176
4240
  "gx-ide-title": GxIdeTitle;
4177
4241
  "gx-ide-top-bar": GxIdeTopBar;
4242
+ "gx-ide-wf-settings": GxIdeWfSettings;
4178
4243
  "gx-ide-ww-images": GxIdeWwImages;
4179
4244
  }
4180
4245
  }
@@ -4223,6 +4288,7 @@ declare module "@stencil/core" {
4223
4288
  "gx-ide-test": LocalJSX.GxIdeTest & JSXBase.HTMLAttributes<HTMLGxIdeTestElement>;
4224
4289
  "gx-ide-title": LocalJSX.GxIdeTitle & JSXBase.HTMLAttributes<HTMLGxIdeTitleElement>;
4225
4290
  "gx-ide-top-bar": LocalJSX.GxIdeTopBar & JSXBase.HTMLAttributes<HTMLGxIdeTopBarElement>;
4291
+ "gx-ide-wf-settings": LocalJSX.GxIdeWfSettings & JSXBase.HTMLAttributes<HTMLGxIdeWfSettingsElement>;
4226
4292
  "gx-ide-ww-images": LocalJSX.GxIdeWwImages & JSXBase.HTMLAttributes<HTMLGxIdeWwImagesElement>;
4227
4293
  }
4228
4294
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genexus/genexus-ide-ui",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.120",
4
+ "version": "0.0.122",
5
5
  "description": "GeneXus IDE UI components",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"names":["objectSelectorCss","GxIdeObjectSelector","this","renderedFirstTime","shortcutsSrc","getAssetPath","loaderCancelCallbackHandler","async","cancelCallbackHandler","getObjects","modified","filterModifiedEl","checked","modifiedAfter","filterAfterTypeEl","value","user","_b","_a","filterUserEl","trim","filters","pattern","_c","filterPatternEl","type","_d","filterTypeEl","category","_e","filterCategoryEl","module","_g","_f","filterModuleEl","id","modifiedBy","modifiedDate","FILTER_AFTER","DATE_TIME","_h","filterModifiedDateEl","loadCallback","loader","loaderEl","show","then","items","objects","selectedObjectsIds","deselectAll","openSelectionCallbackHandler","e","stopPropagation","openSelectionCallback","cancelCallback","selectAll","chGridEl","selectAllRows","newObjectCallbackHandler","newObjectCallback","listenChanges","addEventListener","filterModified","detail","filterAfterType","ev","rowsId","chGridKeyDownHandler","key","hostKeyPressHandler","evaluateObjectsCount","length","_componentLocale","objCount","selected","none","one","many","matching","renderFilter","h","part","class","displayTitle","slot","label","filter","ref","el","patternValue","defaultType","disabled","types","renderComboItems","defaultCategory","categories","defaultModule","defaultValue","selectEntityCallback","selectModuleCallback","NONE","afterNone","IMPORT","LAST_BUILD","dateTime","renderObjects","noBorder","rowSelectionMode","multiSelection","onKeyDown","settingable","size","gridCommon","colSize","auto","tableHead","name","description","common","importDate","sort","a","b","nameA","toLowerCase","nameB","map","obj","rowid","onDblClick","icon","color","formatDate","componentWillLoad","Locale","getComponentStrings","componentDidLoadEvent","emit","componentDidLoad","container","focus","componentDidRender","componentDidRenderFirstTime","componentName","suspendShortcuts","gxgShortcutsEl","suspend","validate","isValid","render","Host","onKeyPress","containerTitle","noContentPadding","noAboveFooterPadding","noHeadingPadding","headingPaddingTop","noHeadingBorder","slimmerFooter","config","gxIdeContainer","textAlign","onClick","footer","btnCancel","btnConfirm","btnNew","btnSelectAll","src","cancelLabel","loaderTitle","title"],"sources":["src/components/object-selector/object-selector.scss?tag=gx-ide-object-selector&encapsulation=shadow","src/components/object-selector/object-selector.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\n/* Filters */\n.filter-grid {\n display: grid;\n padding: var(--mer-spacing--sm);\n row-gap: var(--gx-ide-grid-row-gap);\n column-gap: var(--gx-ide-grid-column-gap);\n border-block-start: 1px solid var(--gx-ide-container-border-color);\n border-block-end: 1px solid var(--gx-ide-container-border-color);\n\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n \"pattern type\"\n \"category module-folder\"\n \"modified-row modified-row\";\n .pattern {\n grid-area: pattern;\n }\n .type {\n grid-area: type;\n }\n .category {\n grid-area: category;\n }\n .module-folder {\n grid-area: module-folder;\n }\n .modified-row {\n grid-area: modified-row;\n }\n &--no-title {\n border-top: 0;\n }\n}\n\n/*modified row*/\n.modified-row {\n min-height: 24px;\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-column-gap);\n flex: 1;\n &__inner-wrapper {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-column-gap);\n flex: 1;\n .date-time {\n display: flex;\n align-items: center;\n }\n }\n .combo-modified {\n }\n .user {\n max-width: 205px !important;\n }\n .date-time {\n flex: 1;\n }\n}\n\n/*gxg-grid*/\n.grid-container {\n height: 100%;\n}\nch-grid-cell {\n --mer-spacing--xs: var(--mer-spacing--sm);\n}\n/* Objects Table */\n.objects-count {\n display: flex;\n justify-content: space-around;\n > * {\n flex: 1;\n padding: var(--mer-spacing--xxs);\n }\n > :not(:last-child) {\n border-inline-end: 1px solid var(--gx-ide-container-border-color);\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Method,\n getAssetPath\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\nimport { renderComboItems } from \"../../common/render-combo-items\";\nimport { EntityData, GxOption } from \"../../common/types\";\nimport { formatDate } from \"../../common/helpers\";\nimport { gridCommon } from \"../../common/grid\";\nimport { FILTER_AFTER } from \"../../common/constants\";\n\n@Component({\n tag: \"gx-ide-object-selector\",\n styleUrl: \"object-selector.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/object-selector\"]\n})\nexport class GxIdeObjectSelector {\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/object-selector/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeObjectSelectorElement;\n\n /* References needed to collect data */\n private filterPatternEl!: HTMLGxgFormTextElement;\n private filterTypeEl!: HTMLGxgComboBoxElement;\n private filterCategoryEl!: HTMLGxgComboBoxElement;\n private filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n private filterModifiedEl!: HTMLGxgFormCheckboxElement;\n private filterAfterTypeEl!: HTMLGxgComboBoxElement;\n private filterUserEl!: HTMLGxgFormTextElement;\n private filterModifiedDateEl!: HTMLGxgDatePickerElement;\n private chGridEl!: HTMLChGridElement;\n private gxgShortcutsEl: HTMLGxgShortcutsElement;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * The after types render in the after selector\n */\n @State() filterAfterType = \"\";\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() filterModified = false;\n\n /**\n * The objects rendered in the table\n */\n @State() objects: ObjectData[] = [];\n\n /**\n * The selected objects in the table of objects\n */\n @State() selectedObjectsIds: string[] = [];\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 * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * True' if multiple object selection is allowed. Default is 'True'\n */\n @Prop() readonly multiSelection: boolean = true;\n\n /**\n * Current value of the input pattern. It is also used to set the default value when initializing the component\n */\n @Prop() readonly patternValue: string;\n\n /**\n * The types render in the filter type selector\n */\n @Prop() readonly types!: ObjectType[];\n\n /**\n * The default value for the type filter\n */\n @Prop() readonly defaultType: string;\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n\n /**\n * The default id value for the category filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. 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 the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when the component needs to reload the list of attributes.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Callback invoked when the user presses the 'New' button.\n */\n @Prop() readonly newObjectCallback!: NewObjectCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of object that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n // 5.EVENTS (EMIT) //\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 /**\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 // 6.COMPONENT LIFECYCLE EVENTS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n }\n\n componentDidLoad() {\n this.listenChanges();\n this.loaderEl.container = this.chGridEl;\n this.getObjects();\n this.filterPatternEl.focus();\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 * 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 /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n // 9.LOCAL METHODS //\n\n private loaderCancelCallbackHandler = async () => {\n this.cancelCallbackHandler();\n };\n\n private getObjects = (): void => {\n /* 'modified' checkbox, should only be considered if 'date' || 'user' */\n const modified = this.filterModifiedEl.checked;\n const modifiedAfter = this.filterAfterTypeEl.value;\n const user = this.filterUserEl?.value?.trim();\n const filters: ObjectFiltersData = {\n pattern: this.filterPatternEl?.value,\n type: this.filterTypeEl?.value,\n category: this.filterCategoryEl?.value,\n module: this.filterModuleEl?.value?.id,\n modifiedAfter: modified && modifiedAfter ? modifiedAfter : null,\n modifiedBy: modified && user ? user : null,\n modifiedDate:\n modified && modifiedAfter === FILTER_AFTER.DATE_TIME\n ? (this.filterModifiedDateEl?.value as Date)\n : null\n };\n if (this.loadCallback) {\n if (this.loader) {\n this.loaderEl.show = true;\n }\n this.loadCallback(filters).then((items: ObjectData[]) => {\n if (items) {\n this.objects = items;\n }\n this.selectedObjectsIds = [];\n this.deselectAll();\n if (this.loader) {\n this.loaderEl.show = false;\n }\n });\n }\n };\n\n private openSelectionCallbackHandler = (\n e: MouseEvent | KeyboardEvent\n ): void => {\n e.stopPropagation();\n this.openSelectionCallback(this.selectedObjectsIds);\n };\n\n private cancelCallbackHandler = (): void => {\n this.cancelCallback();\n };\n\n private selectAll = (): void => {\n (this.chGridEl as any).selectAllRows();\n };\n\n private deselectAll = (): void => {\n (this.chGridEl as any).selectAllRows(false);\n };\n\n private newObjectCallbackHandler = (): void => {\n this.newObjectCallback();\n };\n\n private listenChanges = async (): Promise<void> => {\n /* pattern*/\n this.filterPatternEl.addEventListener(\"input\", () => {\n this.getObjects();\n });\n /* type*/\n this.filterTypeEl.addEventListener(\"valueChanged\", () => {\n this.getObjects();\n });\n /* category*/\n this.filterCategoryEl.addEventListener(\"valueChanged\", () => {\n this.getObjects();\n });\n /* module/folder*/\n this.filterModuleEl.addEventListener(\"valueChanged\", () => {\n this.getObjects();\n });\n /* modified */\n this.filterModifiedEl.addEventListener(\"change\", (e: any) => {\n this.filterModified = e.detail.value;\n this.getObjects();\n });\n /* modified after... */\n this.filterAfterTypeEl.addEventListener(\"valueChanged\", () => {\n this.filterAfterType = this.filterAfterTypeEl.value;\n this.getObjects();\n });\n /* user... */\n this.filterUserEl.addEventListener(\"input\", () => {\n this.getObjects();\n });\n /* Date/Time */\n this.filterModifiedDateEl.addEventListener(\"valueChanged\", () => {\n this.getObjects();\n });\n // for grid selection\n this.chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n });\n };\n\n private chGridKeyDownHandler = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n this.openSelectionCallbackHandler(e);\n }\n };\n\n private hostKeyPressHandler = (e: KeyboardEvent) => {\n // just prevent keypress propagation\n if (e.key === \"Enter\") {\n e.stopPropagation();\n }\n };\n\n private evaluateObjectsCount = (type: \"selected\" | \"matching\"): string => {\n if (type === \"selected\" && this.selectedObjectsIds.length === 0) {\n return this._componentLocale.objCount.selected.none;\n } else if (type === \"selected\" && this.selectedObjectsIds.length === 1) {\n return `1 ${this._componentLocale.objCount.selected.one}`;\n } else if (type === \"selected\" && this.selectedObjectsIds.length > 1) {\n return `${this.selectedObjectsIds.length} ${this._componentLocale.objCount.selected.many}`;\n } else if (type === \"matching\" && this.objects.length === 0) {\n return this._componentLocale.objCount.matching.none;\n } else if (type === \"matching\" && this.objects.length === 1) {\n return `1 ${this._componentLocale.objCount.matching.one}`;\n } else {\n // hopefully: type === \"matching\" && this.objects.length > 1\n return `${this.objects.length} ${this._componentLocale.objCount.matching.many}`;\n }\n };\n\n // 9.LOCAL METHODS -> RENDER//\n\n private renderFilter = (): Element => {\n return (\n <div\n part=\"filters-container\"\n class={{\n \"filter-grid\": true,\n \"filter-grid--no-title\": !this.displayTitle\n }}\n slot=\"header\"\n >\n <gxg-form-text\n label-position=\"above\"\n label={this._componentLocale.filter.pattern}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.filterPatternEl = el as HTMLGxgFormTextElement)\n }\n value={this.patternValue}\n class=\"pattern\"\n part=\"filter-pattern\"\n ></gxg-form-text>\n\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.type}\n value={this.defaultType}\n disabled={!this.types}\n display-validation-styles\n display-validation-message\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterTypeEl = el as HTMLGxgComboBoxElement)\n }\n class=\"type\"\n part=\"filter-type\"\n >\n {renderComboItems(this.types ?? [])}\n </gxg-combo-box>\n\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.category}\n value={this.defaultCategory}\n disabled={!this.categories}\n display-validation-styles\n display-validation-message\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterCategoryEl = el as HTMLGxgComboBoxElement)\n }\n class=\"category\"\n part=\"filter-category\"\n >\n {renderComboItems(this.categories ?? [])}\n </gxg-combo-box>\n\n <gx-ide-entity-selector\n label={this._componentLocale.filter.module}\n label-position=\"above\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"module-folder\"\n ></gx-ide-entity-selector>\n\n <div class=\"modified-row\">\n <gxg-form-checkbox\n label={this._componentLocale.filter.modified}\n class=\"align-center\"\n ref={(el: HTMLGxgFormCheckboxElement) =>\n (this.filterModifiedEl = el as HTMLGxgFormCheckboxElement)\n }\n part=\"filter-modified\"\n ></gxg-form-checkbox>\n\n <div class=\"modified-row__inner-wrapper\">\n <gxg-combo-box\n class={{\n \"gxi-hidden\": !this.filterModified,\n \"combo-modified\": true\n }}\n disable-filter\n value={this.filterAfterType}\n display-validation-styles\n display-validation-message\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterAfterTypeEl = el as HTMLGxgComboBoxElement)\n }\n part=\"filter-after-type\"\n >\n {renderComboItems([\n {\n id: FILTER_AFTER.NONE,\n label: this._componentLocale.filter.afterNone,\n value: FILTER_AFTER.NONE\n },\n {\n id: FILTER_AFTER.DATE_TIME,\n label: this._componentLocale.filter[FILTER_AFTER.DATE_TIME],\n value: FILTER_AFTER.DATE_TIME\n },\n {\n id: FILTER_AFTER.IMPORT,\n label: this._componentLocale.filter[FILTER_AFTER.IMPORT],\n value: FILTER_AFTER.IMPORT\n },\n {\n id: FILTER_AFTER.LAST_BUILD,\n label: this._componentLocale.filter[FILTER_AFTER.LAST_BUILD],\n value: FILTER_AFTER.LAST_BUILD\n }\n ])}\n </gxg-combo-box>\n\n <gxg-form-text\n class={{\n \"gxi-hidden\": !this.filterModified,\n \"user\": true\n }}\n label-position=\"start\"\n label={this._componentLocale.filter.user}\n max-width=\"150px\"\n ref={(el: HTMLGxgFormTextElement) =>\n (this.filterUserEl = el as HTMLGxgFormTextElement)\n }\n part=\"filter-user\"\n ></gxg-form-text>\n\n <div\n class={{\n \"date-time\": true,\n \"gxi-hidden\":\n !this.filterModified ||\n this.filterAfterType !== FILTER_AFTER.DATE_TIME\n }}\n part=\"filter-datetime\"\n >\n <gxg-label label-position=\"start\">\n {this._componentLocale.filter.dateTime}\n </gxg-label>\n <gxg-date-picker\n ref={(el: HTMLGxgDatePickerElement) =>\n (this.filterModifiedDateEl = el as HTMLGxgDatePickerElement)\n }\n class=\"date-time\"\n ></gxg-date-picker>\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n private renderObjects = (): Element => {\n return (\n <gxg-grid ellipsis-cell-wrapper noBorder>\n <ch-grid\n rowSelectionMode={this.multiSelection ? \"multiple\" : \"single\"}\n ref={(el: HTMLChGridElement) => (this.chGridEl = el)}\n onKeyDown={this.chGridKeyDownHandler}\n part=\"ch-grid-objects\"\n >\n <ch-grid-columnset>\n <ch-grid-column\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.auto}\n ></ch-grid-column>\n <ch-grid-column\n column-name={this._componentLocale.tableHead.name}\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.auto}\n ></ch-grid-column>\n <ch-grid-column\n column-name={this._componentLocale.tableHead.type}\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.auto}\n ></ch-grid-column>\n <ch-grid-column\n column-name={this._componentLocale.tableHead.module}\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.auto}\n ></ch-grid-column>\n <ch-grid-column\n column-name={this._componentLocale.tableHead.description}\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.common}\n ></ch-grid-column>\n <ch-grid-column\n column-name={this._componentLocale.tableHead.modifiedDate}\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.auto}\n ></ch-grid-column>\n <ch-grid-column\n column-name={this._componentLocale.tableHead.importDate}\n column-name-position=\"text\"\n settingable={false}\n size={gridCommon.colSize.auto}\n ></ch-grid-column>\n </ch-grid-columnset>\n {this.objects\n .sort((a, b) => {\n const nameA = a.name.toLowerCase(),\n nameB = b.name.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n })\n .map((obj: ObjectData) => (\n <ch-grid-row\n rowid={obj.id}\n onDblClick={this.openSelectionCallbackHandler}\n >\n <ch-grid-cell>\n <span class=\"cell-wrapper\">\n <gxg-icon\n type={obj.icon}\n color=\"auto\"\n size=\"small\"\n ></gxg-icon>\n </span>\n </ch-grid-cell>\n <ch-grid-cell>\n <span class=\"cell-wrapper\"> {obj.name} </span>\n </ch-grid-cell>\n <ch-grid-cell>\n <span class=\"cell-wrapper\">{obj.type}</span>\n </ch-grid-cell>\n <ch-grid-cell>\n <span class=\"cell-wrapper\">{obj.module}</span>\n </ch-grid-cell>\n <ch-grid-cell>\n <span class=\"cell-wrapper\">{obj.description}</span>\n </ch-grid-cell>\n <ch-grid-cell>\n <span class=\"cell-wrapper\">{`${formatDate(\n obj.modifiedDate,\n \"date-time\"\n )}`}</span>\n </ch-grid-cell>\n <ch-grid-cell>\n <span class=\"cell-wrapper\">{`${formatDate(\n obj.importDate,\n \"date-time\"\n )}`}</span>\n </ch-grid-cell>\n </ch-grid-row>\n ))}\n </ch-grid>\n </gxg-grid>\n );\n };\n\n // 10.RENDER() FUNCTION //\n\n render(): void {\n return (\n <Host class=\"gx-ide-component\" onKeyPress={this.hostKeyPressHandler}>\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n noContentPadding\n noAboveFooterPadding\n noHeadingPadding\n headingPaddingTop\n noHeadingBorder\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n {this.renderFilter()}\n {this.renderObjects()}\n\n <div class=\"objects-count\" slot=\"footer-above\">\n <gxg-text\n class=\"align-end\"\n part=\"objects-selected\"\n textAlign=\"center\"\n >\n {this.evaluateObjectsCount(\"selected\")}\n </gxg-text>\n <gxg-text\n class=\"align-end\"\n part=\"objects-matching\"\n textAlign=\"center\"\n >\n {this.evaluateObjectsCount(\"matching\")}\n </gxg-text>\n </div>\n\n {/* footer */}\n {/* button cancel */}\n <gxg-button\n type=\"outlined\"\n onClick={this.cancelCallbackHandler}\n part=\"gxg-button gxg-button--cancel\"\n slot=\"footer-end\"\n >\n {this._componentLocale.footer.btnCancel}\n </gxg-button>\n {/* button confirm */}\n <gxg-button\n type=\"primary-text-only\"\n onClick={this.openSelectionCallbackHandler}\n part=\"gxg-button gxg-button--ok\"\n slot=\"footer-end\"\n >\n {this._componentLocale.footer.btnConfirm}\n </gxg-button>\n {/* button new... */}\n <gxg-button\n type=\"secondary-text-icon\"\n icon=\"menus/new-object\"\n onClick={this.newObjectCallbackHandler}\n part=\"gxg-button gxg-button--new\"\n slot=\"footer-start\"\n >\n {this._componentLocale.footer.btnNew}\n </gxg-button>\n {/* button select all */}\n {this.multiSelection ? (\n <gxg-button\n type=\"secondary-text-only\"\n onClick={this.selectAll}\n part=\"gxg-button gxg-button--select-all\"\n slot=\"footer-start\"\n >\n {this._componentLocale.footer.btnSelectAll}\n </gxg-button>\n ) : null}\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 {/* loader*/}\n {this.loader ? (\n <gxg-ide-loader\n cancelLabel={this._componentLocale.loader.cancelLabel}\n loaderTitle={this._componentLocale.loader.title}\n ref={el => (this.loaderEl = el as HTMLGxgIdeLoaderElement)}\n cancelCallback={this.loaderCancelCallbackHandler}\n ></gxg-ide-loader>\n ) : null}\n </Host>\n );\n }\n}\n\nexport type ObjectType = {\n id: string;\n name: string;\n icon?: string;\n};\n\nexport type NewObjectCallback = () => Promise<void>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadCallback = (\n filters: ObjectFiltersData\n) => Promise<ObjectData[]>;\n\nexport type ObjectFiltersData = {\n pattern?: string;\n type: string;\n category?: string;\n module?: string;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n};\n\nexport type ObjectData = {\n id: string;\n icon: string;\n name: string;\n type: string;\n description: string;\n module: string;\n modifiedDate?: Date;\n importDate?: Date;\n};\n\nexport type ObjectSelectorFilterAfter =\n | typeof FILTER_AFTER.NONE\n | typeof FILTER_AFTER.DATE_TIME\n | typeof FILTER_AFTER.LAST_BUILD\n | typeof FILTER_AFTER.IMPORT;\n"],"mappings":"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"}