@genexus/genexus-ide-ui 2.1.4 → 3.0.1
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/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-breadcrumb-item.cjs.entry.js +97 -0
- package/dist/cjs/gx-ide-breadcrumb-item.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-breadcrumb.cjs.entry.js +85 -0
- package/dist/cjs/gx-ide-breadcrumb.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +16 -20
- package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.css +179 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.js +302 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb.css +141 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js +267 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/collection/components/breadcrumb/types.js +2 -0
- package/dist/collection/components/breadcrumb/types.js.map +1 -0
- package/dist/collection/components/new-object/new-object.js +22 -47
- package/dist/collection/components/new-object/new-object.js.map +1 -1
- package/dist/collection/testing/locale.e2e.js +6 -2
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/breadcrumb-item.js +120 -0
- package/dist/components/breadcrumb-item.js.map +1 -0
- package/dist/components/gx-ide-breadcrumb-item.d.ts +11 -0
- package/dist/components/gx-ide-breadcrumb-item.js +8 -0
- package/dist/components/gx-ide-breadcrumb-item.js.map +1 -0
- package/dist/components/gx-ide-breadcrumb.d.ts +11 -0
- package/dist/components/gx-ide-breadcrumb.js +113 -0
- package/dist/components/gx-ide-breadcrumb.js.map +1 -0
- package/dist/components/gx-ide-new-object.js +17 -22
- package/dist/components/gx-ide-new-object.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-breadcrumb-item.entry.js +93 -0
- package/dist/esm/gx-ide-breadcrumb-item.entry.js.map +1 -0
- package/dist/esm/gx-ide-breadcrumb.entry.js +81 -0
- package/dist/esm/gx-ide-breadcrumb.entry.js.map +1 -0
- package/dist/esm/gx-ide-new-object.entry.js +16 -20
- package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/{p-90a50197.entry.js → p-73d848a6.entry.js} +14 -19
- package/dist/genexus-ide-ui/p-73d848a6.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-7452f3e9.entry.js +105 -0
- package/dist/genexus-ide-ui/p-7452f3e9.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-be7a6b7f.entry.js +145 -0
- package/dist/genexus-ide-ui/p-be7a6b7f.entry.js.map +1 -0
- package/dist/types/components/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +49 -0
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +44 -0
- package/dist/types/components/breadcrumb/types.d.ts +48 -0
- package/dist/types/components/new-object/new-object.d.ts +8 -10
- package/dist/types/components.d.ts +202 -14
- package/package.json +2 -1
- package/dist/genexus-ide-ui/p-90a50197.entry.js.map +0 -1
|
@@ -16,6 +16,7 @@ import { SelectionData } from "./components/bpm/objects-selector/bpm-objects-sel
|
|
|
16
16
|
import { SyncData } from "./components/bpm/sync-gam-roles/bpm-sync-gam-roles";
|
|
17
17
|
import { CancelCallback as CancelCallback3, ConfirmCallback as ConfirmCallback2, SelectDocumentCallback, SuggestDocumentsCallback, TaskDocumentData } from "./components/bpm/task-documents/task-documents";
|
|
18
18
|
import { TimerDuration } from "./components/bpm/timer-duration/bpm-timer-duration";
|
|
19
|
+
import { BreadcrumbItemModel, BreadcrumbModel, GetImagePathCallback, ItemLink, SelectedLink } from "./components/breadcrumb/types";
|
|
19
20
|
import { CommentData } from "./components/_helpers/comments-viewer/comments-viewer";
|
|
20
21
|
import { AuthenticationType, GXServerConnectionData } from "./components/team-dev/connect-gx-server/connect-gx-server";
|
|
21
22
|
import { ContextMenuInfo, EntityData as EntityData1, FormSubmitResult, GxOption, ImportItemResultData, LabelPosition, ObjectBaseData, ObjectType } from "./common/types";
|
|
@@ -46,7 +47,7 @@ import { ContextMenuCallback, ContextMenuInfo as ContextMenuInfo1, FormSubmitRes
|
|
|
46
47
|
import { CancelCallback as CancelCallback10, CloseCallback, ConfirmCallback as ConfirmCallback6, HeaderData, ItemSelectedCallback, NavigationData } from "./components/navigation-report/navigation-report";
|
|
47
48
|
import { CancelCallback as CancelCallback11, CreateCallback, GetDataSourcesCallback, GetEnvironmentNameCallback, GetFrontEndsCallback, GetLanguagesCallback } from "./components/new-environment/new-environment";
|
|
48
49
|
import { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, GetPrototypingEnvironmentsCallback, SelectLocationCallback } from "./components/new-kb/new-kb";
|
|
49
|
-
import { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback3,
|
|
50
|
+
import { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback3, SuggestCallback, TypeCategoryData, ValidateNameCallback } from "./components/new-object/new-object";
|
|
50
51
|
import { NewVersionData } from "./components/new-version/new-version";
|
|
51
52
|
import { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as SelectModuleCallback4 } from "./components/object-selector/object-selector";
|
|
52
53
|
import { CancelCallback as CancelCallback15, ImportCallback as ImportCallback1, LoadCallback as LoadCallback3, SelectParentCallback } from "./components/open-api-import/open-api-import";
|
|
@@ -89,6 +90,7 @@ export { SelectionData } from "./components/bpm/objects-selector/bpm-objects-sel
|
|
|
89
90
|
export { SyncData } from "./components/bpm/sync-gam-roles/bpm-sync-gam-roles";
|
|
90
91
|
export { CancelCallback as CancelCallback3, ConfirmCallback as ConfirmCallback2, SelectDocumentCallback, SuggestDocumentsCallback, TaskDocumentData } from "./components/bpm/task-documents/task-documents";
|
|
91
92
|
export { TimerDuration } from "./components/bpm/timer-duration/bpm-timer-duration";
|
|
93
|
+
export { BreadcrumbItemModel, BreadcrumbModel, GetImagePathCallback, ItemLink, SelectedLink } from "./components/breadcrumb/types";
|
|
92
94
|
export { CommentData } from "./components/_helpers/comments-viewer/comments-viewer";
|
|
93
95
|
export { AuthenticationType, GXServerConnectionData } from "./components/team-dev/connect-gx-server/connect-gx-server";
|
|
94
96
|
export { ContextMenuInfo, EntityData as EntityData1, FormSubmitResult, GxOption, ImportItemResultData, LabelPosition, ObjectBaseData, ObjectType } from "./common/types";
|
|
@@ -119,7 +121,7 @@ export { ContextMenuCallback, ContextMenuInfo as ContextMenuInfo1, FormSubmitRes
|
|
|
119
121
|
export { CancelCallback as CancelCallback10, CloseCallback, ConfirmCallback as ConfirmCallback6, HeaderData, ItemSelectedCallback, NavigationData } from "./components/navigation-report/navigation-report";
|
|
120
122
|
export { CancelCallback as CancelCallback11, CreateCallback, GetDataSourcesCallback, GetEnvironmentNameCallback, GetFrontEndsCallback, GetLanguagesCallback } from "./components/new-environment/new-environment";
|
|
121
123
|
export { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, GetPrototypingEnvironmentsCallback, SelectLocationCallback } from "./components/new-kb/new-kb";
|
|
122
|
-
export { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback3,
|
|
124
|
+
export { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback3, SuggestCallback, TypeCategoryData, ValidateNameCallback } from "./components/new-object/new-object";
|
|
123
125
|
export { NewVersionData } from "./components/new-version/new-version";
|
|
124
126
|
export { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as SelectModuleCallback4 } from "./components/object-selector/object-selector";
|
|
125
127
|
export { CancelCallback as CancelCallback15, ImportCallback as ImportCallback1, LoadCallback as LoadCallback3, SelectParentCallback } from "./components/open-api-import/open-api-import";
|
|
@@ -371,6 +373,82 @@ export namespace Components {
|
|
|
371
373
|
*/
|
|
372
374
|
"duration"?: TimerDuration;
|
|
373
375
|
}
|
|
376
|
+
interface GxIdeBreadcrumb {
|
|
377
|
+
/**
|
|
378
|
+
* aria-label for the navigation container (accessible-name attribute).
|
|
379
|
+
*/
|
|
380
|
+
"accessibleName"?: string;
|
|
381
|
+
/**
|
|
382
|
+
* When true, disables all interaction with the breadcrumb.
|
|
383
|
+
*/
|
|
384
|
+
"disabled": boolean;
|
|
385
|
+
/**
|
|
386
|
+
* Optional callback to resolve image path for each item.
|
|
387
|
+
*/
|
|
388
|
+
"getImagePathCallback"?: GetImagePathCallback;
|
|
389
|
+
/**
|
|
390
|
+
* List of breadcrumb items to display.
|
|
391
|
+
*/
|
|
392
|
+
"model"?: BreadcrumbModel;
|
|
393
|
+
/**
|
|
394
|
+
* Currently selected link (for highlighting the current page).
|
|
395
|
+
*/
|
|
396
|
+
"selectedLink": SelectedLink;
|
|
397
|
+
/**
|
|
398
|
+
* When true, show visual indicator on the item matching selectedLink (selected-link-indicator attribute).
|
|
399
|
+
*/
|
|
400
|
+
"selectedLinkIndicator": boolean;
|
|
401
|
+
/**
|
|
402
|
+
* Text shown between items. Examples: "›" (recommended), "/", ">", "·", "•". Default "›" (single right-pointing angle quotation mark, U+203A).
|
|
403
|
+
*/
|
|
404
|
+
"separator": string;
|
|
405
|
+
}
|
|
406
|
+
interface GxIdeBreadcrumbItem {
|
|
407
|
+
/**
|
|
408
|
+
* aria-label for the item. Falls back to accessibleName or caption when not set.
|
|
409
|
+
*/
|
|
410
|
+
"accessibleName"?: string;
|
|
411
|
+
/**
|
|
412
|
+
* Visible text. Falls back to model.caption when not set.
|
|
413
|
+
*/
|
|
414
|
+
"caption"?: string;
|
|
415
|
+
/**
|
|
416
|
+
* Whether the item is disabled.
|
|
417
|
+
*/
|
|
418
|
+
"disabled"?: boolean;
|
|
419
|
+
/**
|
|
420
|
+
* Optional callback to resolve image path for this item.
|
|
421
|
+
*/
|
|
422
|
+
"getImagePathCallback"?: GetImagePathCallback;
|
|
423
|
+
/**
|
|
424
|
+
* Item id used by the container for click delegation (data-item-id).
|
|
425
|
+
*/
|
|
426
|
+
"itemId": string;
|
|
427
|
+
/**
|
|
428
|
+
* When set, the item renders as an anchor; otherwise as a button.
|
|
429
|
+
*/
|
|
430
|
+
"link"?: ItemLink;
|
|
431
|
+
/**
|
|
432
|
+
* Model of the item (used for image resolution and data).
|
|
433
|
+
*/
|
|
434
|
+
"model": BreadcrumbItemModel;
|
|
435
|
+
/**
|
|
436
|
+
* Whether this item is the current page (selected).
|
|
437
|
+
*/
|
|
438
|
+
"selected": boolean;
|
|
439
|
+
/**
|
|
440
|
+
* Whether to show visual indicator when selected is true.
|
|
441
|
+
*/
|
|
442
|
+
"selectedLinkIndicator": boolean;
|
|
443
|
+
/**
|
|
444
|
+
* Image source (URL or CSS url()).
|
|
445
|
+
*/
|
|
446
|
+
"startImgSrc"?: string;
|
|
447
|
+
/**
|
|
448
|
+
* How to render the start image: "background" or "mask".
|
|
449
|
+
*/
|
|
450
|
+
"startImgType"?: "background" | "mask";
|
|
451
|
+
}
|
|
374
452
|
interface GxIdeChatContainer {
|
|
375
453
|
/**
|
|
376
454
|
* The chat title
|
|
@@ -1628,13 +1706,9 @@ export namespace Components {
|
|
|
1628
1706
|
*/
|
|
1629
1707
|
"shadow": false;
|
|
1630
1708
|
/**
|
|
1631
|
-
* Callback to suggest
|
|
1632
|
-
*/
|
|
1633
|
-
"suggestDescriptionCallback"?: SuggestDescriptionCallback;
|
|
1634
|
-
/**
|
|
1635
|
-
* Callback to suggest a name when creating an object from another object. Returns the suggested name or undefined if not applicable.
|
|
1709
|
+
* Callback to suggest name and description based on the given type. Returns the suggested data or undefined if not applicable.
|
|
1636
1710
|
*/
|
|
1637
|
-
"
|
|
1711
|
+
"suggestCallback"?: SuggestCallback;
|
|
1638
1712
|
/**
|
|
1639
1713
|
* Suspends or reactivates the shortcuts
|
|
1640
1714
|
*/
|
|
@@ -2782,6 +2856,10 @@ export interface GxIdeBpmTimerDurationCustomEvent<T> extends CustomEvent<T> {
|
|
|
2782
2856
|
detail: T;
|
|
2783
2857
|
target: HTMLGxIdeBpmTimerDurationElement;
|
|
2784
2858
|
}
|
|
2859
|
+
export interface GxIdeBreadcrumbCustomEvent<T> extends CustomEvent<T> {
|
|
2860
|
+
detail: T;
|
|
2861
|
+
target: HTMLGxIdeBreadcrumbElement;
|
|
2862
|
+
}
|
|
2785
2863
|
export interface GxIdeDeploymentToolCustomEvent<T> extends CustomEvent<T> {
|
|
2786
2864
|
detail: T;
|
|
2787
2865
|
target: HTMLGxIdeDeploymentToolElement;
|
|
@@ -3025,6 +3103,30 @@ declare global {
|
|
|
3025
3103
|
prototype: HTMLGxIdeBpmTimerDurationElement;
|
|
3026
3104
|
new (): HTMLGxIdeBpmTimerDurationElement;
|
|
3027
3105
|
};
|
|
3106
|
+
interface HTMLGxIdeBreadcrumbElementEventMap {
|
|
3107
|
+
"hyperlinkClick": BreadcrumbItemModel;
|
|
3108
|
+
"buttonClick": BreadcrumbItemModel;
|
|
3109
|
+
}
|
|
3110
|
+
interface HTMLGxIdeBreadcrumbElement extends Components.GxIdeBreadcrumb, HTMLStencilElement {
|
|
3111
|
+
addEventListener<K extends keyof HTMLGxIdeBreadcrumbElementEventMap>(type: K, listener: (this: HTMLGxIdeBreadcrumbElement, ev: GxIdeBreadcrumbCustomEvent<HTMLGxIdeBreadcrumbElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3112
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3113
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3114
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3115
|
+
removeEventListener<K extends keyof HTMLGxIdeBreadcrumbElementEventMap>(type: K, listener: (this: HTMLGxIdeBreadcrumbElement, ev: GxIdeBreadcrumbCustomEvent<HTMLGxIdeBreadcrumbElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
3116
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3117
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3118
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3119
|
+
}
|
|
3120
|
+
var HTMLGxIdeBreadcrumbElement: {
|
|
3121
|
+
prototype: HTMLGxIdeBreadcrumbElement;
|
|
3122
|
+
new (): HTMLGxIdeBreadcrumbElement;
|
|
3123
|
+
};
|
|
3124
|
+
interface HTMLGxIdeBreadcrumbItemElement extends Components.GxIdeBreadcrumbItem, HTMLStencilElement {
|
|
3125
|
+
}
|
|
3126
|
+
var HTMLGxIdeBreadcrumbItemElement: {
|
|
3127
|
+
prototype: HTMLGxIdeBreadcrumbItemElement;
|
|
3128
|
+
new (): HTMLGxIdeBreadcrumbItemElement;
|
|
3129
|
+
};
|
|
3028
3130
|
interface HTMLGxIdeChatContainerElement extends Components.GxIdeChatContainer, HTMLStencilElement {
|
|
3029
3131
|
}
|
|
3030
3132
|
var HTMLGxIdeChatContainerElement: {
|
|
@@ -3728,6 +3830,8 @@ declare global {
|
|
|
3728
3830
|
"gx-ide-bpm-sync-gam-roles": HTMLGxIdeBpmSyncGamRolesElement;
|
|
3729
3831
|
"gx-ide-bpm-task-documents": HTMLGxIdeBpmTaskDocumentsElement;
|
|
3730
3832
|
"gx-ide-bpm-timer-duration": HTMLGxIdeBpmTimerDurationElement;
|
|
3833
|
+
"gx-ide-breadcrumb": HTMLGxIdeBreadcrumbElement;
|
|
3834
|
+
"gx-ide-breadcrumb-item": HTMLGxIdeBreadcrumbItemElement;
|
|
3731
3835
|
"gx-ide-chat-container": HTMLGxIdeChatContainerElement;
|
|
3732
3836
|
"gx-ide-chat-welcome": HTMLGxIdeChatWelcomeElement;
|
|
3733
3837
|
"gx-ide-comments-viewer": HTMLGxIdeCommentsViewerElement;
|
|
@@ -4053,6 +4157,90 @@ declare namespace LocalJSX {
|
|
|
4053
4157
|
*/
|
|
4054
4158
|
"onComponentDidRenderFirstTime"?: (event: GxIdeBpmTimerDurationCustomEvent<string>) => void;
|
|
4055
4159
|
}
|
|
4160
|
+
interface GxIdeBreadcrumb {
|
|
4161
|
+
/**
|
|
4162
|
+
* aria-label for the navigation container (accessible-name attribute).
|
|
4163
|
+
*/
|
|
4164
|
+
"accessibleName"?: string;
|
|
4165
|
+
/**
|
|
4166
|
+
* When true, disables all interaction with the breadcrumb.
|
|
4167
|
+
*/
|
|
4168
|
+
"disabled"?: boolean;
|
|
4169
|
+
/**
|
|
4170
|
+
* Optional callback to resolve image path for each item.
|
|
4171
|
+
*/
|
|
4172
|
+
"getImagePathCallback"?: GetImagePathCallback;
|
|
4173
|
+
/**
|
|
4174
|
+
* List of breadcrumb items to display.
|
|
4175
|
+
*/
|
|
4176
|
+
"model"?: BreadcrumbModel;
|
|
4177
|
+
/**
|
|
4178
|
+
* Fired when the user clicks an item without a link (button).
|
|
4179
|
+
*/
|
|
4180
|
+
"onButtonClick"?: (event: GxIdeBreadcrumbCustomEvent<BreadcrumbItemModel>) => void;
|
|
4181
|
+
/**
|
|
4182
|
+
* Fired when the user clicks an item that has a link.
|
|
4183
|
+
*/
|
|
4184
|
+
"onHyperlinkClick"?: (event: GxIdeBreadcrumbCustomEvent<BreadcrumbItemModel>) => void;
|
|
4185
|
+
/**
|
|
4186
|
+
* Currently selected link (for highlighting the current page).
|
|
4187
|
+
*/
|
|
4188
|
+
"selectedLink"?: SelectedLink;
|
|
4189
|
+
/**
|
|
4190
|
+
* When true, show visual indicator on the item matching selectedLink (selected-link-indicator attribute).
|
|
4191
|
+
*/
|
|
4192
|
+
"selectedLinkIndicator"?: boolean;
|
|
4193
|
+
/**
|
|
4194
|
+
* Text shown between items. Examples: "›" (recommended), "/", ">", "·", "•". Default "›" (single right-pointing angle quotation mark, U+203A).
|
|
4195
|
+
*/
|
|
4196
|
+
"separator"?: string;
|
|
4197
|
+
}
|
|
4198
|
+
interface GxIdeBreadcrumbItem {
|
|
4199
|
+
/**
|
|
4200
|
+
* aria-label for the item. Falls back to accessibleName or caption when not set.
|
|
4201
|
+
*/
|
|
4202
|
+
"accessibleName"?: string;
|
|
4203
|
+
/**
|
|
4204
|
+
* Visible text. Falls back to model.caption when not set.
|
|
4205
|
+
*/
|
|
4206
|
+
"caption"?: string;
|
|
4207
|
+
/**
|
|
4208
|
+
* Whether the item is disabled.
|
|
4209
|
+
*/
|
|
4210
|
+
"disabled"?: boolean;
|
|
4211
|
+
/**
|
|
4212
|
+
* Optional callback to resolve image path for this item.
|
|
4213
|
+
*/
|
|
4214
|
+
"getImagePathCallback"?: GetImagePathCallback;
|
|
4215
|
+
/**
|
|
4216
|
+
* Item id used by the container for click delegation (data-item-id).
|
|
4217
|
+
*/
|
|
4218
|
+
"itemId": string;
|
|
4219
|
+
/**
|
|
4220
|
+
* When set, the item renders as an anchor; otherwise as a button.
|
|
4221
|
+
*/
|
|
4222
|
+
"link"?: ItemLink;
|
|
4223
|
+
/**
|
|
4224
|
+
* Model of the item (used for image resolution and data).
|
|
4225
|
+
*/
|
|
4226
|
+
"model": BreadcrumbItemModel;
|
|
4227
|
+
/**
|
|
4228
|
+
* Whether this item is the current page (selected).
|
|
4229
|
+
*/
|
|
4230
|
+
"selected"?: boolean;
|
|
4231
|
+
/**
|
|
4232
|
+
* Whether to show visual indicator when selected is true.
|
|
4233
|
+
*/
|
|
4234
|
+
"selectedLinkIndicator"?: boolean;
|
|
4235
|
+
/**
|
|
4236
|
+
* Image source (URL or CSS url()).
|
|
4237
|
+
*/
|
|
4238
|
+
"startImgSrc"?: string;
|
|
4239
|
+
/**
|
|
4240
|
+
* How to render the start image: "background" or "mask".
|
|
4241
|
+
*/
|
|
4242
|
+
"startImgType"?: "background" | "mask";
|
|
4243
|
+
}
|
|
4056
4244
|
interface GxIdeChatContainer {
|
|
4057
4245
|
/**
|
|
4058
4246
|
* The chat title
|
|
@@ -5348,13 +5536,9 @@ declare namespace LocalJSX {
|
|
|
5348
5536
|
*/
|
|
5349
5537
|
"shadow"?: false;
|
|
5350
5538
|
/**
|
|
5351
|
-
* Callback to suggest
|
|
5352
|
-
*/
|
|
5353
|
-
"suggestDescriptionCallback"?: SuggestDescriptionCallback;
|
|
5354
|
-
/**
|
|
5355
|
-
* Callback to suggest a name when creating an object from another object. Returns the suggested name or undefined if not applicable.
|
|
5539
|
+
* Callback to suggest name and description based on the given type. Returns the suggested data or undefined if not applicable.
|
|
5356
5540
|
*/
|
|
5357
|
-
"
|
|
5541
|
+
"suggestCallback"?: SuggestCallback;
|
|
5358
5542
|
/**
|
|
5359
5543
|
* Array containing category list and its corresponding types
|
|
5360
5544
|
*/
|
|
@@ -6410,6 +6594,8 @@ declare namespace LocalJSX {
|
|
|
6410
6594
|
"gx-ide-bpm-sync-gam-roles": GxIdeBpmSyncGamRoles;
|
|
6411
6595
|
"gx-ide-bpm-task-documents": GxIdeBpmTaskDocuments;
|
|
6412
6596
|
"gx-ide-bpm-timer-duration": GxIdeBpmTimerDuration;
|
|
6597
|
+
"gx-ide-breadcrumb": GxIdeBreadcrumb;
|
|
6598
|
+
"gx-ide-breadcrumb-item": GxIdeBreadcrumbItem;
|
|
6413
6599
|
"gx-ide-chat-container": GxIdeChatContainer;
|
|
6414
6600
|
"gx-ide-chat-welcome": GxIdeChatWelcome;
|
|
6415
6601
|
"gx-ide-comments-viewer": GxIdeCommentsViewer;
|
|
@@ -6497,6 +6683,8 @@ declare module "@stencil/core" {
|
|
|
6497
6683
|
"gx-ide-bpm-sync-gam-roles": LocalJSX.GxIdeBpmSyncGamRoles & JSXBase.HTMLAttributes<HTMLGxIdeBpmSyncGamRolesElement>;
|
|
6498
6684
|
"gx-ide-bpm-task-documents": LocalJSX.GxIdeBpmTaskDocuments & JSXBase.HTMLAttributes<HTMLGxIdeBpmTaskDocumentsElement>;
|
|
6499
6685
|
"gx-ide-bpm-timer-duration": LocalJSX.GxIdeBpmTimerDuration & JSXBase.HTMLAttributes<HTMLGxIdeBpmTimerDurationElement>;
|
|
6686
|
+
"gx-ide-breadcrumb": LocalJSX.GxIdeBreadcrumb & JSXBase.HTMLAttributes<HTMLGxIdeBreadcrumbElement>;
|
|
6687
|
+
"gx-ide-breadcrumb-item": LocalJSX.GxIdeBreadcrumbItem & JSXBase.HTMLAttributes<HTMLGxIdeBreadcrumbItemElement>;
|
|
6500
6688
|
"gx-ide-chat-container": LocalJSX.GxIdeChatContainer & JSXBase.HTMLAttributes<HTMLGxIdeChatContainerElement>;
|
|
6501
6689
|
"gx-ide-chat-welcome": LocalJSX.GxIdeChatWelcome & JSXBase.HTMLAttributes<HTMLGxIdeChatWelcomeElement>;
|
|
6502
6690
|
"gx-ide-comments-viewer": LocalJSX.GxIdeCommentsViewer & JSXBase.HTMLAttributes<HTMLGxIdeCommentsViewerElement>;
|
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": "
|
|
4
|
+
"version": "3.0.1",
|
|
5
5
|
"description": "GeneXus IDE UI components",
|
|
6
6
|
"main": "dist/index.cjs.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"test.spec": "stencil test --spec --coverage --no-cache --config stencil-test-watch.config.ts",
|
|
28
28
|
"test.watch": "npm run test -- --watchAll",
|
|
29
29
|
"generate": "stencil generate",
|
|
30
|
+
"generate:component": "node scripts/generate-component.js",
|
|
30
31
|
"validate": "npm run test && npm run build",
|
|
31
32
|
"validate.ci": "npm run build -- --max-workers 1 --debug && npm run test"
|
|
32
33
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapTypeCategoryDataToActionListModel","categories","map","category","id","type","additionalInformation","center","imgSrc","icon","undefined","caption","name","part","mapTypeDataToActionListModel","types","selectedCategoryId","selectedTypeId","imageSrc","selected","sortActionListDefault","subModel","newObjectCss","CSS_BUNDLES","GxIdeNewObject","_GxIdeNewObject_componentLocale","set","this","_GxIdeNewObject_shortcutsSrc","getAssetPath","_GxIdeNewObject_categoriesActionListEl","_GxIdeNewObject_chShortcutsEl","_GxIdeNewObject_descriptionEl","_GxIdeNewObject_descriptionModifiedByUser","_GxIdeNewObject_moduleFolderEl","_GxIdeNewObject_nameEl","_GxIdeNewObject_nameModifiedByUser","_GxIdeNewObject_cancelCallbackHandler","async","cancelCallback","_GxIdeNewObject_categoryOnSelectionChangedHandler","selectionEvent","selection","detail","length","selectedCategory","typeCategories","find","item","selectedType","selectedTypeMap","get","_GxIdeNewObject_createCallbackHandler","nameValidation","validateNameCallback","__classPrivateFieldGet","value","_GxIdeNewObject_validateNameHandler","call","data","typeId","_a","description","moduleId","_c","_b","result","createCallback","_GxIdeNewObject_descriptionValueHandler","suggestDescriptionCallback","_GxIdeNewObject_getNameSuggestion","suggestNameCallback","suggestedName","replace","_GxIdeNewObject_getDescriptionSuggestion","suggestedDescription","_GxIdeNewObject_updateSuggestions","_GxIdeNewObject_init","defaultTypeFound","_GxIdeNewObject_setDefaultType","defaultTypeId","_GxIdeNewObject_onBlurNameHandler","_GxIdeNewObject_onInputDescriptionHandler","e","__classPrivateFieldSet","_GxIdeNewObject_onInputNameHandler","_GxIdeNewObject_onNameValueChangedHandler","_GxIdeNewObject_renderModuleFolder","hasModule","hasFolder","labelDescription","moduleFolder","moduleOnly","folderOnly","h","class","htmlFor","labelPosition","parent","defaultValue","defaultParent","selectEntityCallback","selectModuleCallback","ref","el","found","outerLoop","i","j","loopTypeId","_GxIdeNewObject_setSelectedCategoryOnActionList","updateItemProperties","_GxIdeNewObject_typeChangedHandler","nameValidationErrorMessage","Map","typeCategoriesChanged","newValue","typeCategoriesActionListModel","connectedCallback","componentWillLoad","Locale","getComponentStrings","_GxIdeNewObject_instances","_GxIdeNewObject_initializeSelectedTypeMap","componentDidLoad","suspendShortcuts","suspend","render","Host","model","src","categorySelectionTitle","sortItemsCallback","onSelectedItemsChange","typeSelectionTitleSuffix","typeSelectionTitle","objectName","autoFocus","input","placeholder","onChange","onInput","onBlur","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","objectDescription","onClick","footer","btnCancel","disabled","btnCreate","forEach"],"sources":["src/components/new-object/helpers.tsx","src/common/chameleon-helpers.ts","src/components/new-object/new-object.scss?tag=gx-ide-new-object&encapsulation=shadow","src/components/new-object/new-object.tsx"],"sourcesContent":["import { ActionListModel } from \"@genexus/chameleon-controls-library\";\nimport { TypeCategoryData } from \"../..\";\nimport { TypeData } from \"./new-object\";\n\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nexport const mapTypeCategoryDataToActionListModel = (\n categories: TypeCategoryData[]\n): ActionListModel => {\n return categories.map(category => {\n return {\n id: category.id,\n type: \"actionable\",\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: category.icon || undefined }]\n }\n },\n caption: category.name,\n part: `category-${category.id}`\n };\n });\n};\n\nexport const mapTypeDataToActionListModel = (\n types: TypeData[],\n selectedCategoryId: string,\n selectedTypeId?: string\n): ActionListModel => {\n return types.map(type => {\n return {\n id: `${type.id}`,\n type: \"actionable\",\n imageSrc: \"objects/design\",\n selected: selectedTypeId === type.id,\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: type.icon }]\n }\n },\n caption: type.name,\n part: `type-${selectedCategoryId}-${type.id}`\n };\n });\n};\n","import { ActionListModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\n\n/**\n * Order the items in the same order as they come.\n */\nexport const sortActionListDefault = (subModel: ActionListModel) => {\n return subModel;\n};\n","@import \"../../global/temporary-mercury-overrides/_button.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n}\n\n.main {\n display: grid;\n grid-template-rows: 1fr max-content max-content;\n}\n.categories-types-layout {\n grid-template-columns: 1fr 1fr;\n}\n.api-description-layout {\n padding-block: calc(\n 12px * 2\n ); // WA until we define a class for internal spacing.\n display: grid;\n grid-template:\n \"api-description-title api-description-title\"\n \"api-name-label api-name-control\"\n \"api-description-label api-description-control\"\n \"api-module-label api-module-control\";\n grid-template-columns: max-content 1fr;\n}\n.api-description-title {\n grid-area: api-description-title;\n padding-block-end: var(--spacing-padding-m);\n}\n.api-name-label {\n grid-area: api-name-label;\n}\n.api-name-control {\n grid-area: api-name-control;\n}\n.api-description-label {\n grid-area: api-description-label;\n}\n.api-description-control {\n grid-area: api-description-control;\n}\n.api-module-label {\n grid-area: api-module-label;\n}\n.api-module-control {\n grid-area: api-module-control;\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 { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport {\n ActionListItemModelExtended,\n ActionListModel\n} from \"@genexus/chameleon-controls-library\";\nimport {\n mapTypeCategoryDataToActionListModel,\n mapTypeDataToActionListModel\n} from \"./helpers\";\n\nimport { sortActionListDefault } from \"../../common/chameleon-helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\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 /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeNewObjectElement;\n\n /* References needed to collect data on \"Create\" button submit */\n #categoriesActionListEl: HTMLChActionListRenderElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #descriptionModifiedByUser = false;\n #moduleFolderEl!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #nameModifiedByUser = false;\n\n /**\n * Description of the new object\n */\n @State() description: string = undefined;\n\n /**\n * Name of the new object\n */\n @State() name: string = undefined;\n @State() nameValidationErrorMessage: string;\n @State() selectedCategory: TypeCategoryData | null;\n @State() selectedType: TypeData | null;\n // representations of TypeCategoryData[] as ComboBoxModel.\n @State() typeCategoriesActionListModel: ActionListModel = [];\n @State() typesActionListModel: ActionListModel = [];\n\n @State() selectedTypeMap: Map<string, string> = new Map();\n\n /**\n * Allows you to define the type selected by default when instantiating the dialog.\n * Represented by the type identifier.\n */\n @Prop() readonly defaultTypeId: string;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user wants to cancel object creation\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when user wants to confirm object creation\n */\n @Prop() readonly createCallback: CreateCallback;\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({ mutable: true }) typeCategories!: TypeCategoryData[];\n @Watch(\"typeCategories\")\n typeCategoriesChanged(newValue: TypeCategoryData[]) {\n if (newValue?.length) {\n this.typeCategoriesActionListModel = mapTypeCategoryDataToActionListModel(\n this.typeCategories\n );\n }\n }\n\n /**\n * Current value for Module/Folder\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter\n * (button '...'). It returns the information of the selected object (id and\n * 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 an error message or\n * 'undefined' if the name is not valid.\n */\n @Prop() readonly validateNameCallback: ValidateNameCallback;\n\n /**\n * Callback to suggest a name when creating an object from another object.\n * Returns the suggested name or undefined if not applicable.\n */\n @Prop() readonly suggestNameCallback?: SuggestNameCallback;\n\n /**\n * Callback to suggest a description when creating an object from another object.\n * Returns the suggested description or undefined if not applicable.\n */\n @Prop() readonly suggestDescriptionCallback?: SuggestDescriptionCallback;\n\n /**\n * This event emits the 'cancel' event\n */\n @Event() cancel: EventEmitter<boolean>;\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 triggered after a validation of the object name is made.\n * Returns 'undefined' if it's valid, otherwise an error message.\n */\n @Event() validateName: EventEmitter<string | undefined>;\n\n connectedCallback() {\n // this.#validateInitialName();\n }\n\n async componentWillLoad() {\n await this.#init();\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.typeCategoriesChanged(this.typeCategories);\n this.#initializeSelectedTypeMap();\n }\n\n componentDidLoad() {\n this.#setSelectedCategoryOnActionList();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // - - - - - - - - - - -\n\n #cancelCallbackHandler = async (): Promise<void> => {\n await this.cancelCallback();\n };\n\n #categoryOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n const selectedCategory = this.typeCategories.find(\n category => category.id === selection[0].item.id\n );\n if (selectedCategory) {\n this.selectedCategory = selectedCategory;\n if (selectedCategory.types.length > 0) {\n this.selectedType = selectedCategory.types.find(\n type => type.id === this.selectedTypeMap.get(selectedCategory.id)\n );\n }\n }\n }\n };\n\n #createCallbackHandler = async (): Promise<void> => {\n // validate name first\n const nameValidation: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n if (!!nameValidation) {\n // name is invalid\n this.#validateNameHandler(nameValidation);\n return;\n }\n\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 #descriptionValueHandler = () => {\n if (this.#nameModifiedByUser || this.#descriptionModifiedByUser) {\n return this.#descriptionEl.value;\n } else {\n // First try to get suggested description if callback exists\n if (this.suggestDescriptionCallback) {\n return this.description ?? this.selectedType.name;\n }\n return this.selectedType.name;\n }\n };\n\n /**\n * Gets the suggested name based on the context\n * @param selectedType The currently selected type\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #getNameSuggestion = async (selectedType: TypeData) => {\n if (this.suggestNameCallback) {\n const suggestedName = await this.suggestNameCallback();\n if (suggestedName) {\n return suggestedName.replace(/\\s/g, \"\");\n }\n }\n return selectedType.name.replace(/\\s/g, \"\");\n };\n\n /**\n * Gets the suggested description based on the context\n * @param selectedType The currently selected type\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #getDescriptionSuggestion = async (selectedType: TypeData) => {\n if (this.suggestDescriptionCallback) {\n const suggestedDescription = await this.suggestDescriptionCallback();\n if (suggestedDescription) {\n return suggestedDescription;\n }\n }\n return selectedType.name;\n };\n\n /**\n * Updates both name and description suggestions\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateSuggestions = async () => {\n if (!this.selectedType) {\n return;\n }\n\n if (!this.#nameModifiedByUser) {\n this.name = await this.#getNameSuggestion(this.selectedType);\n }\n\n if (!this.#descriptionModifiedByUser) {\n this.description = await this.#getDescriptionSuggestion(\n this.selectedType\n );\n }\n };\n\n /**\n * This method defines the initial selected category and type, and it then\n * initializes the name and description values.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #init = async () => {\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\n await this.#updateSuggestions();\n };\n\n /**\n * Initializes the selectedTypeMap with the defaultTypeId if it exists, otherwise\n * it initializes the selectedTypeMap with the first type of each category.\n */\n // eslint-disable-next-line @stencil-community/own-methods-must-be-private\n #initializeSelectedTypeMap() {\n this.typeCategories.forEach(category => {\n if (this.defaultTypeId && category.id === this.selectedCategory.id) {\n this.selectedTypeMap.set(category.id, this.selectedType.id);\n } else {\n this.selectedTypeMap.set(category.id, category.types[0].id);\n }\n });\n }\n\n #onBlurNameHandler = async () => {\n if (this.#nameEl.value) {\n const result: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n this.#validateNameHandler(result);\n }\n };\n\n #onInputDescriptionHandler = (e: CustomEvent<string>) => {\n this.description = e.detail;\n this.#descriptionModifiedByUser = true;\n };\n\n #onInputNameHandler = async (e: CustomEvent<any> | InputEvent) => {\n const name = e.detail;\n if (!this.#descriptionModifiedByUser) {\n // Description should be equal to name, unless the description was already\n // modified by the user.\n this.#descriptionEl.value = name;\n }\n this.#nameModifiedByUser = true;\n };\n\n #onNameValueChangedHandler = async (e: CustomEvent<string>) => {\n const name = e.detail;\n if (name) {\n const result: string | undefined = await this.validateNameCallback(name);\n this.#validateNameHandler(result);\n }\n };\n\n #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 <label\n // Module/folder\n class=\"label api-module-label\"\n htmlFor=\"module\"\n >\n {labelDescription}\n </label>,\n <gx-ide-entity-selector\n id=\"module\"\n class=\"api-module-control\"\n part=\"module\"\n labelPosition=\"none\"\n value={this.parent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleFolderEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n ];\n }\n return null;\n };\n\n #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 #setSelectedCategoryOnActionList = () => {\n if (this.selectedCategory) {\n // update model by setting the selected category\n this.#categoriesActionListEl.updateItemProperties(\n this.selectedCategory.id,\n {\n selected: true,\n type: \"actionable\"\n }\n );\n }\n };\n\n #typeChangedHandler = async (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ) => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n this.selectedType = this.selectedCategory.types.find(\n type => type.id === selection[0].item.id\n );\n this.selectedTypeMap.set(this.selectedCategory.id, this.selectedType.id);\n\n await this.#updateSuggestions();\n }\n };\n\n /**\n * If the parameter is undefined, it means the name is valid. Otherwise, if it\n * receives a string, it indicates that the name is not valid. The string is the\n * error message to display.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #validateNameHandler = (result: string | undefined): void => {\n this.nameValidationErrorMessage = result;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"main\">\n <section class=\"field-group categories-types-layout spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#componentLocale.categorySelectionTitle}\n </label>\n <ch-action-list-render\n // #select a category\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n model={this.typeCategoriesActionListModel}\n sortItemsCallback={sortActionListDefault}\n onSelectedItemsChange={this.#categoryOnSelectionChangedHandler}\n ref={(el: HTMLChActionListRenderElement) =>\n (this.#categoriesActionListEl =\n el as HTMLChActionListRenderElement)\n }\n ></ch-action-list-render>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.selectedCategory.name\n ? `${this.selectedCategory.name} ${\n this.#componentLocale.typeSelectionTitleSuffix\n }`\n : this.#componentLocale.typeSelectionTitle}\n </label>\n <ch-action-list-render\n // #data management types\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n sortItemsCallback={sortActionListDefault}\n model={mapTypeDataToActionListModel(\n this.selectedCategory.types,\n this.selectedCategory.id,\n this.selectedType.id\n )}\n onSelectedItemsChange={this.#typeChangedHandler}\n ></ch-action-list-render>\n </div>\n </section>\n\n <section class=\"api-description-layout field-group-justified-start spacing-body-inline\">\n <h2\n // API Description\n class=\"text-align-center api-description-title subtitle-regular-xs\t\"\n >\n {this.selectedType?.description}\n </h2>\n\n <label\n // Name\n class=\"label api-name-label\"\n htmlFor=\"name\"\n >\n {this.#componentLocale.objectName}\n </label>\n <div>\n <ch-edit\n autoFocus\n class={{\n \"input\": true,\n \"api-name-control\": true,\n \"input-error\": !!this.nameValidationErrorMessage\n }}\n placeholder=\"Name\"\n value={this.name}\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onChange={this.#onNameValueChangedHandler}\n onInput={this.#onInputNameHandler as any}\n onBlur={this.#onBlurNameHandler}\n part=\"name\"\n ></ch-edit>\n {this.nameValidationErrorMessage && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={this.#nameEl as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.nameValidationErrorMessage}\n </ch-tooltip>\n )}\n </div>\n\n <label\n // Description\n class=\"label api-description-label\"\n htmlFor=\"description\"\n >\n {this.#componentLocale.objectDescription}\n </label>\n <ch-edit\n autoFocus\n class=\"input api-description-control\"\n placeholder=\"Description\"\n value={this.#descriptionValueHandler()}\n // TODO: toolTip={config.tooltip}\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n onInput={this.#onInputDescriptionHandler as any}\n part=\"description\"\n ></ch-edit>\n\n {this.#renderModuleFolder()}\n </section>\n <footer class=\"footer dialog-footer-with-border spacing-body-inline spacing-body-block-end \">\n <div class=\"buttons-spacer\">\n <button\n // cancel\n class=\"button-secondary\"\n onClick={this.#cancelCallbackHandler}\n part=\"button button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n\n <button\n // create\n class=\"button-primary\"\n onClick={this.#createCallbackHandler}\n disabled={!!this.nameValidationErrorMessage}\n part=\"button button-create\"\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\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\nexport type SuggestNameCallback = () => Promise<string | undefined>;\nexport type SuggestDescriptionCallback = () => Promise<string | undefined>;\n"],"mappings":"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"}
|