@chill-sharp/ui-core 1.1.12

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 (204) hide show
  1. package/.agents/skills/chillsharp-current-user-preferences/SKILL.md +70 -0
  2. package/.agents/skills/chillsharp-ui-template/SKILL.md +18 -0
  3. package/README.md +103 -0
  4. package/chill-sharp-ui-core.d.ts.map +1 -0
  5. package/doc/AIAssistedDevelopment/README.md +185 -0
  6. package/doc/AttachmentModel/README.md +173 -0
  7. package/doc/AuthenticationModel/README.md +213 -0
  8. package/doc/AuthenticationModel/how-to-integreate-auth-minimal-api.md +293 -0
  9. package/doc/ChillSharpClient.md +464 -0
  10. package/doc/ClientGeneration/README.md +172 -0
  11. package/doc/ComplianceGuide/README.md +178 -0
  12. package/doc/Configuration/README.md +94 -0
  13. package/doc/CurrentUserPreferences.md +114 -0
  14. package/doc/DateTimePolicy/README.md +154 -0
  15. package/doc/DateTimeSerialization.md +423 -0
  16. package/doc/Endpoints.md +260 -0
  17. package/doc/HowTo/01-simple-blog-sqlite.md +153 -0
  18. package/doc/HowTo/02-blog-schema-labels.md +140 -0
  19. package/doc/HowTo/03-authentication.md +218 -0
  20. package/doc/HowTo/04-blog-posts-one-to-many.md +194 -0
  21. package/doc/HowTo/05-docker-env-variables.md +274 -0
  22. package/doc/HowTo/06-chunk-transactions-autocomplete.md +196 -0
  23. package/doc/Mcp/ChatGPT.md +291 -0
  24. package/doc/Mcp/README.md +799 -0
  25. package/doc/MenuGuide/README.md +49 -0
  26. package/doc/ModelPreparation.md +255 -0
  27. package/doc/PermissionModel/README.md +277 -0
  28. package/doc/README.md +228 -0
  29. package/doc/ReferenceExistence.md +130 -0
  30. package/doc/RegisterContext.md +217 -0
  31. package/doc/UiCore/CRUD.md +170 -0
  32. package/doc/UiCore/README.md +13 -0
  33. package/doc/ValidationModel/README.md +117 -0
  34. package/doc/it/AIAssistedDevelopment/README.md +185 -0
  35. package/doc/it/AttachmentModel/README.md +173 -0
  36. package/doc/it/AuthenticationModel/README.md +171 -0
  37. package/doc/it/AuthenticationModel/how-to-integreate-auth-minimal-api.md +292 -0
  38. package/doc/it/ChillSharpClient.md +464 -0
  39. package/doc/it/ClientGeneration/README.md +152 -0
  40. package/doc/it/ComplianceGuide/README.md +178 -0
  41. package/doc/it/Configuration/README.md +94 -0
  42. package/doc/it/CurrentUserPreferences.md +114 -0
  43. package/doc/it/DateTimePolicy/README.md +154 -0
  44. package/doc/it/DateTimeSerialization.md +423 -0
  45. package/doc/it/Endpoints.md +260 -0
  46. package/doc/it/HowTo/01-simple-blog-sqlite.md +152 -0
  47. package/doc/it/HowTo/02-blog-schema-labels.md +139 -0
  48. package/doc/it/HowTo/03-authentication.md +221 -0
  49. package/doc/it/HowTo/04-blog-posts-one-to-many.md +193 -0
  50. package/doc/it/HowTo/05-docker-env-variables.md +268 -0
  51. package/doc/it/HowTo/06-chunk-transactions-autocomplete.md +196 -0
  52. package/doc/it/Mcp/ChatGPT.md +291 -0
  53. package/doc/it/Mcp/README.md +799 -0
  54. package/doc/it/MenuGuide/README.md +49 -0
  55. package/doc/it/ModelPreparation.md +254 -0
  56. package/doc/it/PermissionModel/README.md +190 -0
  57. package/doc/it/README.md +172 -0
  58. package/doc/it/ReferenceExistence.md +130 -0
  59. package/doc/it/RegisterContext.md +218 -0
  60. package/doc/it/UiCore/CRUD.md +170 -0
  61. package/doc/it/UiCore/README.md +13 -0
  62. package/doc/it/ValidationModel/README.md +117 -0
  63. package/fesm2022/chill-sharp-ui-core.mjs +16725 -0
  64. package/fesm2022/chill-sharp-ui-core.mjs.map +1 -0
  65. package/index.d.ts +6 -0
  66. package/lib/chill-sharp-ui-root.component.d.ts +6 -0
  67. package/lib/chill-sharp-ui-root.component.d.ts.map +1 -0
  68. package/lib/chill-sharp-ui.routes.d.ts +3 -0
  69. package/lib/chill-sharp-ui.routes.d.ts.map +1 -0
  70. package/lib/chill.config.d.ts +5 -0
  71. package/lib/chill.config.d.ts.map +1 -0
  72. package/lib/layouts/auth-shell.component.d.ts +8 -0
  73. package/lib/layouts/auth-shell.component.d.ts.map +1 -0
  74. package/lib/layouts/workspace-page.component.d.ts +49 -0
  75. package/lib/layouts/workspace-page.component.d.ts.map +1 -0
  76. package/lib/lib/chill-form.component.d.ts +151 -0
  77. package/lib/lib/chill-form.component.d.ts.map +1 -0
  78. package/lib/lib/chill-i18n-button-label.component.d.ts +27 -0
  79. package/lib/lib/chill-i18n-button-label.component.d.ts.map +1 -0
  80. package/lib/lib/chill-i18n-label.component.d.ts +30 -0
  81. package/lib/lib/chill-i18n-label.component.d.ts.map +1 -0
  82. package/lib/lib/chill-json-input.component.d.ts +31 -0
  83. package/lib/lib/chill-json-input.component.d.ts.map +1 -0
  84. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-boolean-control.component.d.ts +12 -0
  85. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-boolean-control.component.d.ts.map +1 -0
  86. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-editor-control.component.d.ts +17 -0
  87. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-editor-control.component.d.ts.map +1 -0
  88. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-lookup-control.component.d.ts +45 -0
  89. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-lookup-control.component.d.ts.map +1 -0
  90. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-scalar-control.component.d.ts +19 -0
  91. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-scalar-control.component.d.ts.map +1 -0
  92. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-select-control.component.d.ts +12 -0
  93. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-select-control.component.d.ts.map +1 -0
  94. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-textarea-control.component.d.ts +13 -0
  95. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-textarea-control.component.d.ts.map +1 -0
  96. package/lib/lib/chill-polymorphic-input.component.d.ts +452 -0
  97. package/lib/lib/chill-polymorphic-input.component.d.ts.map +1 -0
  98. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-boolean-control.component.d.ts +7 -0
  99. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-boolean-control.component.d.ts.map +1 -0
  100. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-lookup-control.component.d.ts +7 -0
  101. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-lookup-control.component.d.ts.map +1 -0
  102. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-number-control.component.d.ts +7 -0
  103. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-number-control.component.d.ts.map +1 -0
  104. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-temporal-control.component.d.ts +8 -0
  105. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-temporal-control.component.d.ts.map +1 -0
  106. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-value-control.component.d.ts +7 -0
  107. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-value-control.component.d.ts.map +1 -0
  108. package/lib/lib/chill-polymorphic-output.component.d.ts +75 -0
  109. package/lib/lib/chill-polymorphic-output.component.d.ts.map +1 -0
  110. package/lib/lib/chill-table.component.d.ts +434 -0
  111. package/lib/lib/chill-table.component.d.ts.map +1 -0
  112. package/lib/lib/chill-text-editor-dialog.component.d.ts +14 -0
  113. package/lib/lib/chill-text-editor-dialog.component.d.ts.map +1 -0
  114. package/lib/lib/crud-configuration.utils.d.ts +4 -0
  115. package/lib/lib/crud-configuration.utils.d.ts.map +1 -0
  116. package/lib/lib/culture-name-options.d.ts +3 -0
  117. package/lib/lib/culture-name-options.d.ts.map +1 -0
  118. package/lib/lib/date-format-options.d.ts +3 -0
  119. package/lib/lib/date-format-options.d.ts.map +1 -0
  120. package/lib/lib/iana-time-zone-options.d.ts +3 -0
  121. package/lib/lib/iana-time-zone-options.d.ts.map +1 -0
  122. package/lib/lib/notice-transition.directive.d.ts +17 -0
  123. package/lib/lib/notice-transition.directive.d.ts.map +1 -0
  124. package/lib/lib/schema-property-dialog.component.d.ts +74 -0
  125. package/lib/lib/schema-property-dialog.component.d.ts.map +1 -0
  126. package/lib/models/chill-auth.models.d.ts +176 -0
  127. package/lib/models/chill-auth.models.d.ts.map +1 -0
  128. package/lib/models/chill-menu.models.d.ts +12 -0
  129. package/lib/models/chill-menu.models.d.ts.map +1 -0
  130. package/lib/models/chill-schema.models.d.ts +141 -0
  131. package/lib/models/chill-schema.models.d.ts.map +1 -0
  132. package/lib/models/workspace-dialog.models.d.ts +16 -0
  133. package/lib/models/workspace-dialog.models.d.ts.map +1 -0
  134. package/lib/models/workspace-task.models.d.ts +36 -0
  135. package/lib/models/workspace-task.models.d.ts.map +1 -0
  136. package/lib/pages/confirm-reset-page.component.d.ts +21 -0
  137. package/lib/pages/confirm-reset-page.component.d.ts.map +1 -0
  138. package/lib/pages/crud/attachment-upload-dialog.component.d.ts +24 -0
  139. package/lib/pages/crud/attachment-upload-dialog.component.d.ts.map +1 -0
  140. package/lib/pages/crud/crud-page.component.d.ts +244 -0
  141. package/lib/pages/crud/crud-page.component.d.ts.map +1 -0
  142. package/lib/pages/login-page.component.d.ts +21 -0
  143. package/lib/pages/login-page.component.d.ts.map +1 -0
  144. package/lib/pages/permissions/auth-role-dialog.component.d.ts +29 -0
  145. package/lib/pages/permissions/auth-role-dialog.component.d.ts.map +1 -0
  146. package/lib/pages/permissions/auth-search-select.component.d.ts +28 -0
  147. package/lib/pages/permissions/auth-search-select.component.d.ts.map +1 -0
  148. package/lib/pages/permissions/auth-user-dialog.component.d.ts +35 -0
  149. package/lib/pages/permissions/auth-user-dialog.component.d.ts.map +1 -0
  150. package/lib/pages/permissions/permission-editor.component.d.ts +55 -0
  151. package/lib/pages/permissions/permission-editor.component.d.ts.map +1 -0
  152. package/lib/pages/permissions/permissions-page.component.d.ts +38 -0
  153. package/lib/pages/permissions/permissions-page.component.d.ts.map +1 -0
  154. package/lib/pages/permissions/role-permission.component.d.ts +43 -0
  155. package/lib/pages/permissions/role-permission.component.d.ts.map +1 -0
  156. package/lib/pages/permissions/user-permission.component.d.ts +43 -0
  157. package/lib/pages/permissions/user-permission.component.d.ts.map +1 -0
  158. package/lib/pages/register-page.component.d.ts +24 -0
  159. package/lib/pages/register-page.component.d.ts.map +1 -0
  160. package/lib/pages/reset-password-page.component.d.ts +18 -0
  161. package/lib/pages/reset-password-page.component.d.ts.map +1 -0
  162. package/lib/provide-chill-sharp-ui-core.d.ts +8 -0
  163. package/lib/provide-chill-sharp-ui-core.d.ts.map +1 -0
  164. package/lib/services/chill.service.d.ts +249 -0
  165. package/lib/services/chill.service.d.ts.map +1 -0
  166. package/lib/services/workspace-dialog.service.d.ts +22 -0
  167. package/lib/services/workspace-dialog.service.d.ts.map +1 -0
  168. package/lib/services/workspace-layout.service.d.ts +13 -0
  169. package/lib/services/workspace-layout.service.d.ts.map +1 -0
  170. package/lib/services/workspace-task-registry.service.d.ts +35 -0
  171. package/lib/services/workspace-task-registry.service.d.ts.map +1 -0
  172. package/lib/services/workspace-toolbar.service.d.ts +23 -0
  173. package/lib/services/workspace-toolbar.service.d.ts.map +1 -0
  174. package/lib/services/workspace.service.d.ts +114 -0
  175. package/lib/services/workspace.service.d.ts.map +1 -0
  176. package/lib/storage-keys.d.ts +5 -0
  177. package/lib/storage-keys.d.ts.map +1 -0
  178. package/lib/tasks/crud-task/crud-task.component.d.ts +33 -0
  179. package/lib/tasks/crud-task/crud-task.component.d.ts.map +1 -0
  180. package/lib/tasks/goto-url-task/goto-url-task.component.d.ts +31 -0
  181. package/lib/tasks/goto-url-task/goto-url-task.component.d.ts.map +1 -0
  182. package/lib/workspace/confirm-message-dialog.component.d.ts +16 -0
  183. package/lib/workspace/confirm-message-dialog.component.d.ts.map +1 -0
  184. package/lib/workspace/entity-options-dialog.component.d.ts +29 -0
  185. package/lib/workspace/entity-options-dialog.component.d.ts.map +1 -0
  186. package/lib/workspace/external-task-api.d.ts +2 -0
  187. package/lib/workspace/external-task-api.d.ts.map +1 -0
  188. package/lib/workspace/user-profile-dialog.component.d.ts +30 -0
  189. package/lib/workspace/user-profile-dialog.component.d.ts.map +1 -0
  190. package/lib/workspace/workspace-dialog-host.component.d.ts +26 -0
  191. package/lib/workspace/workspace-dialog-host.component.d.ts.map +1 -0
  192. package/lib/workspace/workspace-menu-item-dialog.component.d.ts +61 -0
  193. package/lib/workspace/workspace-menu-item-dialog.component.d.ts.map +1 -0
  194. package/lib/workspace/workspace-menu.component.d.ts +104 -0
  195. package/lib/workspace/workspace-menu.component.d.ts.map +1 -0
  196. package/lib/workspace/workspace-taskbar.component.d.ts +14 -0
  197. package/lib/workspace/workspace-taskbar.component.d.ts.map +1 -0
  198. package/package.json +54 -0
  199. package/public-api.d.ts +56 -0
  200. package/public-api.d.ts.map +1 -0
  201. package/service-worker/chill-sharp-service-worker.js +166 -0
  202. package/styles/core-theme.scss +1268 -0
  203. package/template-customization/upgrade.ps1.template +342 -0
  204. package/template-customization/upgrade.sh.template +271 -0
@@ -0,0 +1,16 @@
1
+ import { WorkspaceDialogService } from '../services/workspace-dialog.service';
2
+ import * as i0 from "@angular/core";
3
+ export interface ConfirmMessageDialogButton<TResult = unknown> {
4
+ label: string;
5
+ value: TResult;
6
+ primary?: boolean;
7
+ }
8
+ export declare class ConfirmMessageDialogComponent {
9
+ readonly dialog: WorkspaceDialogService;
10
+ readonly description: import("@angular/core").InputSignal<string>;
11
+ readonly buttons: import("@angular/core").InputSignal<ConfirmMessageDialogButton<unknown>[]>;
12
+ select(value: unknown): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmMessageDialogComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmMessageDialogComponent, "app-confirm-message-dialog", never, { "description": { "alias": "description"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
+ }
16
+ //# sourceMappingURL=confirm-message-dialog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-message-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/confirm-message-dialog.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;;AAE9E,MAAM,WAAW,0BAA0B,CAAC,OAAO,GAAG,OAAO;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBA6Ea,6BAA6B;IACxC,QAAQ,CAAC,MAAM,yBAAkC;IACjD,QAAQ,CAAC,WAAW,8CAAa;IACjC,QAAQ,CAAC,OAAO,6EAA2C;IAE3D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;yCALjB,6BAA6B;2CAA7B,6BAA6B;CAQzC"}
@@ -0,0 +1,29 @@
1
+ import { FormControl, FormGroup } from '@angular/forms';
2
+ import type { JsonValue } from '@chill-sharp/ng-client';
3
+ import { type ChillEntityOptions, type ChillSchema } from '../models/chill-schema.models';
4
+ import { ChillService } from '../services/chill.service';
5
+ import * as i0 from "@angular/core";
6
+ type EntityOptionsFormGroup = FormGroup<Record<string, FormControl<JsonValue>>>;
7
+ export declare class EntityOptionsDialogComponent {
8
+ readonly chill: ChillService;
9
+ private readonly dialog;
10
+ readonly chillType: import("@angular/core").InputSignal<string>;
11
+ readonly displayName: import("@angular/core").InputSignal<string>;
12
+ readonly isLoading: import("@angular/core").WritableSignal<boolean>;
13
+ readonly isValid: import("@angular/core").WritableSignal<boolean>;
14
+ readonly loadError: import("@angular/core").WritableSignal<string>;
15
+ readonly entityOptions: import("@angular/core").WritableSignal<ChillEntityOptions | null>;
16
+ readonly schema: import("@angular/core").Signal<ChillSchema>;
17
+ readonly form: EntityOptionsFormGroup;
18
+ private readonly properties;
19
+ constructor();
20
+ canDialogSubmit(): boolean;
21
+ submit(): Promise<void>;
22
+ private loadEntityOptions;
23
+ private readOptionalString;
24
+ private readBoolean;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntityOptionsDialogComponent, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntityOptionsDialogComponent, "app-entity-options-dialog", never, { "chillType": { "alias": "chillType"; "required": false; "isSignal": true; }; "displayName": { "alias": "displayName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=entity-options-dialog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-options-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/entity-options-dialog.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAuB,KAAK,kBAAkB,EAAsD,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEnK,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAEzD,KAAK,sBAAsB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEhF,qBA4Da,4BAA4B;IACvC,QAAQ,CAAC,KAAK,eAAwB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAEzD,QAAQ,CAAC,SAAS,8CAAa;IAC/B,QAAQ,CAAC,WAAW,8CAAa;IAEjC,QAAQ,CAAC,SAAS,kDAAgB;IAClC,QAAQ,CAAC,OAAO,kDAAgB;IAChC,QAAQ,CAAC,SAAS,iDAAc;IAChC,QAAQ,CAAC,aAAa,oEAA2C;IACjE,QAAQ,CAAC,MAAM,8CAMX;IAEJ,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CASlC;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAyDzB;;IAqBF,eAAe,IAAI,OAAO;IAIpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBf,iBAAiB;IAoB/B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;yCAjKR,4BAA4B;2CAA5B,4BAA4B;CAoKxC"}
@@ -0,0 +1,2 @@
1
+ export type { WorkspaceTaskComponentInterface, WorkspaceTaskComponent, WorkspaceTaskComponentType, WorkspaceTaskConfiguration, WorkspaceRemoteTaskDefinition, WorkspaceTaskSourceIndex } from '../models/workspace-task.models';
2
+ //# sourceMappingURL=external-task-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-task-api.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/external-task-api.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { FormControl, FormGroup } from '@angular/forms';
2
+ import type { AuthUserDetailsResponse, JsonValue } from '@chill-sharp/ng-client';
3
+ import { type ChillSchema } from '../models/chill-schema.models';
4
+ import { ChillService } from '../services/chill.service';
5
+ import * as i0 from "@angular/core";
6
+ type UserProfileFormGroup = FormGroup<Record<string, FormControl<JsonValue>>>;
7
+ export declare class UserProfileDialogComponent {
8
+ readonly chill: ChillService;
9
+ private readonly dialog;
10
+ readonly userGuid: import("@angular/core").InputSignal<string>;
11
+ readonly isLoading: import("@angular/core").WritableSignal<boolean>;
12
+ readonly isValid: import("@angular/core").WritableSignal<boolean>;
13
+ readonly loadError: import("@angular/core").WritableSignal<string>;
14
+ readonly user: import("@angular/core").WritableSignal<AuthUserDetailsResponse | null>;
15
+ readonly schema: import("@angular/core").Signal<ChillSchema>;
16
+ readonly form: UserProfileFormGroup;
17
+ private readonly cultureNameOptions;
18
+ private readonly dateFormatOptions;
19
+ private readonly timeZoneOptions;
20
+ private readonly properties;
21
+ constructor();
22
+ canDialogSubmit(): boolean;
23
+ submit(): Promise<void>;
24
+ private loadUser;
25
+ private readString;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserProfileDialogComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<UserProfileDialogComponent, "app-user-profile-dialog", never, { "userGuid": { "alias": "userGuid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=user-profile-dialog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/user-profile-dialog.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMjF,OAAO,EAA2E,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG1I,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAEzD,KAAK,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAE9E,qBAkDa,0BAA0B;IACrC,QAAQ,CAAC,KAAK,eAAwB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAEzD,QAAQ,CAAC,QAAQ,8CAAa;IAE9B,QAAQ,CAAC,SAAS,kDAAgB;IAClC,QAAQ,CAAC,OAAO,kDAAgB;IAChC,QAAQ,CAAC,SAAS,iDAAc;IAChC,QAAQ,CAAC,IAAI,yEAAgD;IAC7D,QAAQ,CAAC,MAAM,8CAMX;IAEJ,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAMhC;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAE5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CA6CzB;;IAsBF,eAAe,IAAI,OAAO;IAIpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAmBf,QAAQ;IAiBtB,OAAO,CAAC,UAAU;yCAxIP,0BAA0B;2CAA1B,0BAA0B;CA4ItC"}
@@ -0,0 +1,26 @@
1
+ import { ChillService } from '../services/chill.service';
2
+ import { WorkspaceDialogService } from '../services/workspace-dialog.service';
3
+ import { WorkspaceToolbarService } from '../services/workspace-toolbar.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class WorkspaceDialogHostComponent {
6
+ readonly chill: ChillService;
7
+ readonly dialog: WorkspaceDialogService;
8
+ readonly toolbar: WorkspaceToolbarService;
9
+ private readonly contentHosts;
10
+ readonly isBusy: import("@angular/core").WritableSignal<boolean>;
11
+ readonly errorMessage: import("@angular/core").WritableSignal<string>;
12
+ readonly toolbarButtons: import("@angular/core").Signal<import("@chill-sharp/ui-core").WorkspaceToolbarButton[]>;
13
+ private readonly contentRefs;
14
+ private readonly activeDialog;
15
+ private activeDialogId;
16
+ constructor();
17
+ isTopDialog(dialogId: number): boolean;
18
+ cancel(dialogId?: number): void;
19
+ confirm(dialogId?: number): Promise<void>;
20
+ canConfirm(): boolean;
21
+ private isDialogTask;
22
+ private isDialogSubmitter;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceDialogHostComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<WorkspaceDialogHostComponent, "app-workspace-dialog-host", never, {}, {}, never, never, true, never>;
25
+ }
26
+ //# sourceMappingURL=workspace-dialog-host.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-dialog-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/workspace-dialog-host.component.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;;AAOhF,qBAqUa,4BAA4B;IACvC,QAAQ,CAAC,KAAK,eAAwB;IACtC,QAAQ,CAAC,MAAM,yBAAkC;IACjD,QAAQ,CAAC,OAAO,0BAAmC;IAEnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2D;IAExF,QAAQ,CAAC,MAAM,kDAAiB;IAChC,QAAQ,CAAC,YAAY,iDAAc;IACnC,QAAQ,CAAC,cAAc,0FAAkD;IAEzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8C;IAC3E,OAAO,CAAC,cAAc,CAAK;;IAkD3B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzB,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C,UAAU,IAAI,OAAO;IAUrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;yCAzHd,4BAA4B;2CAA5B,4BAA4B;CA4HxC"}
@@ -0,0 +1,61 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import type { JsonValue } from '@chill-sharp/ng-client';
4
+ import { type ChillPropertySchema, type ChillSchema } from '../models/chill-schema.models';
5
+ import type { ChillMenuItem } from '../models/chill-menu.models';
6
+ import { ChillService } from '../services/chill.service';
7
+ import { WorkspaceService } from '../services/workspace.service';
8
+ import type { WorkspaceTaskComponent } from '../models/workspace-task.models';
9
+ import { WorkspaceToolbarService } from '../services/workspace-toolbar.service';
10
+ import * as i0 from "@angular/core";
11
+ type MenuFormGroup = FormGroup<Record<string, FormControl<JsonValue>>>;
12
+ interface MenuItemDialogResult {
13
+ value: ChillMenuItem;
14
+ }
15
+ export declare class WorkspaceMenuItemDialogComponent implements WorkspaceTaskComponent<MenuItemDialogResult>, OnDestroy {
16
+ readonly chill: ChillService;
17
+ readonly workspace: WorkspaceService;
18
+ readonly toolbar: WorkspaceToolbarService;
19
+ readonly item: import("@angular/core").InputSignal<ChillMenuItem | null>;
20
+ readonly parent: import("@angular/core").InputSignal<ChillMenuItem | null>;
21
+ readonly visible: import("@angular/core").InputSignal<boolean>;
22
+ readonly isValid: import("@angular/core").WritableSignal<boolean>;
23
+ readonly isGeneratingConfigurationExample: import("@angular/core").WritableSignal<boolean>;
24
+ readonly selectedComponentName: import("@angular/core").WritableSignal<string>;
25
+ readonly componentOptions: import("@angular/core").Signal<[string, string][]>;
26
+ readonly selectedTaskDefinition: import("@angular/core").Signal<import("@chill-sharp/ui-core").WorkspaceTaskDefinition | null>;
27
+ readonly selectedComponentConfigurationJsonExample: import("@angular/core").Signal<string>;
28
+ readonly properties: import("@angular/core").Signal<ChillPropertySchema[]>;
29
+ readonly schema: import("@angular/core").Signal<ChillSchema>;
30
+ readonly form: MenuFormGroup;
31
+ private readonly componentNameSubscription;
32
+ constructor();
33
+ ngOnDestroy(): void;
34
+ canDialogSubmit(): boolean;
35
+ dialogResult(): MenuItemDialogResult;
36
+ parentTitle(): string;
37
+ applyComponentConfigurationJsonExample(): Promise<void>;
38
+ private readString;
39
+ private readOptionalString;
40
+ private generateCrudComponentConfigurationJsonExample;
41
+ private buildCrudConfigurationFromSchema;
42
+ private buildCrudRelationConfiguration;
43
+ private composeCrudConfigurationSeed;
44
+ private createCrudConfigurationObject;
45
+ private createEmptyCrudConfiguration;
46
+ private createEmptyRelationLabel;
47
+ private parseConfigurationJson;
48
+ private readConfigurationString;
49
+ private readConfigurationBoolean;
50
+ private readConfigurationRecord;
51
+ private readRelationLabelValue;
52
+ private readAdditionalConfigurationEntries;
53
+ private readConfigurationValue;
54
+ private mapRelationLabel;
55
+ private normalizeJsonRecord;
56
+ private normalizeString;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceMenuItemDialogComponent, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<WorkspaceMenuItemDialogComponent, "app-workspace-menu-item-dialog", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "parent": { "alias": "parent"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
59
+ }
60
+ export {};
61
+ //# sourceMappingURL=workspace-menu-item-dialog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-menu-item-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/workspace-menu-item-dialog.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,SAAS,EAA2C,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAGjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;;AAEhF,KAAK,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvE,UAAU,oBAAoB;IAC5B,KAAK,EAAE,aAAa,CAAC;CACtB;AAmBD,qBA8Ca,gCAAiC,YAAW,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,SAAS;IAC9G,QAAQ,CAAC,KAAK,eAAwB;IACtC,QAAQ,CAAC,SAAS,mBAA4B;IAC9C,QAAQ,CAAC,OAAO,0BAAmC;IAEnD,QAAQ,CAAC,IAAI,4DAAqC;IAClD,QAAQ,CAAC,MAAM,4DAAqC;IACpD,QAAQ,CAAC,OAAO,+CAAe;IAE/B,QAAQ,CAAC,OAAO,kDAAgB;IAChC,QAAQ,CAAC,gCAAgC,kDAAiB;IAC1D,QAAQ,CAAC,qBAAqB,iDAAc;IAC5C,QAAQ,CAAC,gBAAgB,qDAStB;IACH,QAAQ,CAAC,sBAAsB,gGAO5B;IACH,QAAQ,CAAC,yCAAyC,yCAEhD;IACF,QAAQ,CAAC,UAAU,wDAuChB;IACH,QAAQ,CAAC,MAAM,8CAMX;IAEJ,QAAQ,CAAC,IAAI,EAAE,aAAa,CAMzB;IACH,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAe;;IAuCzD,WAAW,IAAI,IAAI;IAKnB,eAAe,IAAI,OAAO;IAI1B,YAAY,IAAI,oBAAoB;IAiBpC,WAAW,IAAI,MAAM;IAIf,sCAAsC,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB7D,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,kBAAkB;YAKZ,6CAA6C;YA4B7C,gCAAgC;YA2BhC,8BAA8B;IA0B5C,OAAO,CAAC,4BAA4B;IA6DpC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,kCAAkC;IAO1C,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,eAAe;yCA5dZ,gCAAgC;2CAAhC,gCAAgC;CAie5C"}
@@ -0,0 +1,104 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import type { ChillMenuItem } from '../models/chill-menu.models';
3
+ import { ChillService } from '../services/chill.service';
4
+ import { WorkspaceDialogService } from '../services/workspace-dialog.service';
5
+ import { WorkspaceLayoutService } from '../services/workspace-layout.service';
6
+ import { WorkspaceService } from '../services/workspace.service';
7
+ import * as i0 from "@angular/core";
8
+ interface CrudSchemaOption {
9
+ module: string;
10
+ chillType: string;
11
+ queryChillType: string;
12
+ displayName: string;
13
+ viewCode: string;
14
+ }
15
+ interface EntityOptionsSchemaOption {
16
+ module: string;
17
+ chillType: string;
18
+ displayName: string;
19
+ kind: 'Entity' | 'Query';
20
+ }
21
+ interface WorkspaceMenuNode {
22
+ item: ChillMenuItem;
23
+ children: WorkspaceMenuNode[];
24
+ childrenLoaded: boolean;
25
+ isExpanded: boolean;
26
+ isLoadingChildren: boolean;
27
+ childrenError: string;
28
+ hasChildren: boolean;
29
+ }
30
+ export declare class WorkspaceMenuComponent implements OnInit, OnDestroy {
31
+ readonly chill: ChillService;
32
+ readonly workspace: WorkspaceService;
33
+ readonly dialog: WorkspaceDialogService;
34
+ readonly layout: WorkspaceLayoutService;
35
+ readonly isLoadingSchemas: import("@angular/core").WritableSignal<boolean>;
36
+ readonly schemaLoadError: import("@angular/core").WritableSignal<string>;
37
+ readonly crudTypes: import("@angular/core").WritableSignal<CrudSchemaOption[]>;
38
+ readonly entityOptionsTypes: import("@angular/core").WritableSignal<EntityOptionsSchemaOption[]>;
39
+ readonly selectedModule: import("@angular/core").WritableSignal<string>;
40
+ readonly selectedChillType: import("@angular/core").WritableSignal<string>;
41
+ readonly selectedEntityOptionsModule: import("@angular/core").WritableSignal<string>;
42
+ readonly selectedEntityOptionsChillType: import("@angular/core").WritableSignal<string>;
43
+ readonly viewCode: import("@angular/core").WritableSignal<string>;
44
+ readonly isLoadingMenu: import("@angular/core").WritableSignal<boolean>;
45
+ readonly menuLoadError: import("@angular/core").WritableSignal<string>;
46
+ readonly menuRoots: import("@angular/core").WritableSignal<WorkspaceMenuNode[]>;
47
+ readonly draggedMenuItemGuid: import("@angular/core").WritableSignal<string>;
48
+ readonly dragHoverExpandGuid: import("@angular/core").WritableSignal<string>;
49
+ private readonly dragHoverExpandTimers;
50
+ readonly quickTasks: import("@angular/core").Signal<import("@chill-sharp/ui-core").WorkspaceTaskDefinition[]>;
51
+ readonly moduleOptions: import("@angular/core").Signal<string[]>;
52
+ readonly filteredCrudTypes: import("@angular/core").Signal<CrudSchemaOption[]>;
53
+ readonly selectedCrudSchema: import("@angular/core").Signal<CrudSchemaOption | null>;
54
+ readonly entityOptionsModuleOptions: import("@angular/core").Signal<string[]>;
55
+ readonly filteredEntityOptionsTypes: import("@angular/core").Signal<EntityOptionsSchemaOption[]>;
56
+ readonly selectedEntityOptionsSchema: import("@angular/core").Signal<EntityOptionsSchemaOption | null>;
57
+ ngOnInit(): void;
58
+ ngOnDestroy(): void;
59
+ selectModule(module: string): void;
60
+ selectEntityOptionsModule(module: string): void;
61
+ openCrudTask(): void;
62
+ addCrudTaskToMenu(): Promise<void>;
63
+ openEntityOptionsDialog(): Promise<void>;
64
+ openQuickTask(componentName: string): void;
65
+ normalizeViewCode(value: string): string;
66
+ toggleNode(node: WorkspaceMenuNode): void;
67
+ openMenuItem(item: ChillMenuItem): void;
68
+ beginMenuDrag(item: ChillMenuItem): void;
69
+ hoverMenuItem(node: WorkspaceMenuNode): void;
70
+ leaveMenuItem(node: WorkspaceMenuNode, event: DragEvent): void;
71
+ allowMenuDrop(event: DragEvent): void;
72
+ dropMenuItem(parent: ChillMenuItem | null, targetIndex: number): Promise<void>;
73
+ dropMenuItemAsChild(node: WorkspaceMenuNode, event: DragEvent): Promise<void>;
74
+ endMenuDrag(): void;
75
+ isDropTarget(parent: ChillMenuItem | null, targetIndex: number): boolean;
76
+ isMenuTaskActive(item: ChillMenuItem): boolean;
77
+ createMenuItem(parent: ChillMenuItem | null): Promise<void>;
78
+ editMenuItem(item: ChillMenuItem): Promise<void>;
79
+ deleteMenuItem(item: ChillMenuItem): Promise<void>;
80
+ private loadCrudTypes;
81
+ private loadRootMenu;
82
+ private preloadNodeChildren;
83
+ private loadNodeChildren;
84
+ private isQuerySchema;
85
+ private toCrudSchemaOption;
86
+ private toEntityOptionsSchemaOption;
87
+ private createNode;
88
+ private buildCrudMenuConfiguration;
89
+ private expandNodeForHover;
90
+ private findNodeContext;
91
+ private findChildCollection;
92
+ private isDescendantOf;
93
+ private reindexMenuItems;
94
+ private toParentReference;
95
+ private updateNodeCollection;
96
+ private clearDragHoverExpandTimer;
97
+ private clearAllDragHoverExpandTimers;
98
+ private editOrCreateMenuItem;
99
+ private refreshMenuBranch;
100
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceMenuComponent, never>;
101
+ static ɵcmp: i0.ɵɵComponentDeclaration<WorkspaceMenuComponent, "app-workspace-menu", never, {}, {}, never, never, true, never>;
102
+ }
103
+ export {};
104
+ //# sourceMappingURL=workspace-menu.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-menu.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/workspace-menu.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,SAAS,EAAE,MAAM,EAA4B,MAAM,eAAe,CAAC;AAIvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;;AAEjE,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1B;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qBAmTa,sBAAuB,YAAW,MAAM,EAAE,SAAS;IAC9D,QAAQ,CAAC,KAAK,eAAwB;IACtC,QAAQ,CAAC,SAAS,mBAA4B;IAC9C,QAAQ,CAAC,MAAM,yBAAkC;IACjD,QAAQ,CAAC,MAAM,yBAAkC;IACjD,QAAQ,CAAC,gBAAgB,kDAAgB;IACzC,QAAQ,CAAC,eAAe,iDAAc;IACtC,QAAQ,CAAC,SAAS,6DAAkC;IACpD,QAAQ,CAAC,kBAAkB,sEAA2C;IACtE,QAAQ,CAAC,cAAc,iDAAc;IACrC,QAAQ,CAAC,iBAAiB,iDAAc;IACxC,QAAQ,CAAC,2BAA2B,iDAAc;IAClD,QAAQ,CAAC,8BAA8B,iDAAc;IACrD,QAAQ,CAAC,QAAQ,iDAAqB;IACtC,QAAQ,CAAC,aAAa,kDAAgB;IACtC,QAAQ,CAAC,aAAa,iDAAc;IACpC,QAAQ,CAAC,SAAS,8DAAmC;IACrD,QAAQ,CAAC,mBAAmB,iDAAc;IAC1C,QAAQ,CAAC,mBAAmB,iDAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoD;IAC1F,QAAQ,CAAC,UAAU,2FACmG;IACtH,QAAQ,CAAC,aAAa,2CAAiF;IACvG,QAAQ,CAAC,iBAAiB,qDACsC;IAChE,QAAQ,CAAC,kBAAkB,0DACiD;IAC5E,QAAQ,CAAC,0BAA0B,2CAA0F;IAC7H,QAAQ,CAAC,0BAA0B,8DAC0C;IAC7E,QAAQ,CAAC,2BAA2B,mEACqD;IAEzF,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAInB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMlC,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/C,YAAY,IAAI,IAAI;IAcd,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBlC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9C,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI1C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKxC,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAgBzC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIvC,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAQxC,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IA6B5C,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAS9D,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ/B,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE9E,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnF,WAAW,IAAI,IAAI;IAKnB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAoBxE,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAIxC,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD,OAAO,CAAC,aAAa;YAyCP,YAAY;YAiBZ,mBAAmB;YAiCnB,gBAAgB;IA8B9B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,UAAU;YAYJ,0BAA0B;YAe1B,kBAAkB;IAgBhC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,6BAA6B;YASvB,oBAAoB;YAuBpB,iBAAiB;yCA1oBpB,sBAAsB;2CAAtB,sBAAsB;CAqqBlC"}
@@ -0,0 +1,14 @@
1
+ import { WorkspaceService, type WorkspaceTaskInstance } from '../services/workspace.service';
2
+ import * as i0 from "@angular/core";
3
+ export declare class WorkspaceTaskbarComponent {
4
+ readonly workspace: WorkspaceService;
5
+ activateTask(taskId: string): void;
6
+ closeTask(taskId: string): void;
7
+ taskBreadcrumb(task: WorkspaceTaskInstance): string;
8
+ private entityBreadcrumbLabel;
9
+ private readText;
10
+ private isRecord;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceTaskbarComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<WorkspaceTaskbarComponent, "app-workspace-taskbar", never, {}, {}, never, never, true, never>;
13
+ }
14
+ //# sourceMappingURL=workspace-taskbar.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-taskbar.component.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/workspace-taskbar.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;;AAE7F,qBA8Ea,yBAAyB;IACpC,QAAQ,CAAC,SAAS,mBAA4B;IAE9C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM;IAqBnD,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,QAAQ;yCA7DL,yBAAyB;2CAAzB,yBAAyB;CAgErC"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@chill-sharp/ui-core",
3
+ "repository": {
4
+ "type": "git",
5
+ "url": "git+https://github.com/e-500/chill-sharp.git",
6
+ "directory": "extra/chill-sharp-ui-core"
7
+ },
8
+ "version": "1.1.12",
9
+ "description": "Shared Angular UI core for ChillSharp applications.",
10
+ "keywords": [
11
+ "angular",
12
+ "chillsharp",
13
+ "ui",
14
+ "library"
15
+ ],
16
+ "license": "AGPL-3.0-or-later",
17
+ "sideEffects": false,
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "exports": {
22
+ "./service-worker/chill-sharp-service-worker.js": {
23
+ "default": "./service-worker/chill-sharp-service-worker.js"
24
+ },
25
+ "./styles/core-theme.scss": {
26
+ "default": "./styles/core-theme.scss"
27
+ },
28
+ "./package.json": {
29
+ "default": "./package.json"
30
+ },
31
+ ".": {
32
+ "types": "./index.d.ts",
33
+ "default": "./fesm2022/chill-sharp-ui-core.mjs"
34
+ }
35
+ },
36
+ "peerDependencies": {
37
+ "@angular/cdk": "^19.2.19",
38
+ "@angular/common": "^19.2.0",
39
+ "@angular/core": "^19.2.0",
40
+ "@angular/forms": "^19.2.0",
41
+ "@angular/router": "^19.2.0",
42
+ "@angular/platform-browser-dynamic": "^19.2.0",
43
+ "rxjs": "~7.8.0",
44
+ "zone.js": "~0.15.0"
45
+ },
46
+ "dependencies": {
47
+ "@chill-sharp/ng-client": "^1.1.12",
48
+ "@chill-sharp/ts-client": "^1.1.12",
49
+ "monaco-editor": "^0.52.2",
50
+ "tslib": "^2.3.0"
51
+ },
52
+ "module": "fesm2022/chill-sharp-ui-core.mjs",
53
+ "typings": "index.d.ts"
54
+ }
@@ -0,0 +1,56 @@
1
+ export * from './lib/chill.config';
2
+ export * from './lib/storage-keys';
3
+ export * from './lib/chill-sharp-ui-root.component';
4
+ export * from './lib/chill-sharp-ui.routes';
5
+ export * from './lib/provide-chill-sharp-ui-core';
6
+ export * from './lib/layouts/auth-shell.component';
7
+ export * from './lib/layouts/workspace-page.component';
8
+ export * from './lib/lib/chill-form.component';
9
+ export * from './lib/lib/chill-i18n-button-label.component';
10
+ export * from './lib/lib/chill-i18n-label.component';
11
+ export * from './lib/lib/chill-json-input.component';
12
+ export * from './lib/lib/chill-polymorphic-input.component';
13
+ export * from './lib/lib/chill-polymorphic-output.component';
14
+ export * from './lib/lib/chill-table.component';
15
+ export * from './lib/lib/chill-text-editor-dialog.component';
16
+ export * from './lib/lib/crud-configuration.utils';
17
+ export * from './lib/lib/culture-name-options';
18
+ export * from './lib/lib/date-format-options';
19
+ export * from './lib/lib/iana-time-zone-options';
20
+ export * from './lib/lib/notice-transition.directive';
21
+ export * from './lib/lib/schema-property-dialog.component';
22
+ export * from './lib/models/chill-auth.models';
23
+ export * from './lib/models/chill-menu.models';
24
+ export * from './lib/models/chill-schema.models';
25
+ export * from './lib/models/workspace-dialog.models';
26
+ export * from './lib/models/workspace-task.models';
27
+ export * from './lib/pages/confirm-reset-page.component';
28
+ export * from './lib/pages/crud/attachment-upload-dialog.component';
29
+ export * from './lib/pages/crud/crud-page.component';
30
+ export * from './lib/pages/login-page.component';
31
+ export * from './lib/pages/permissions/auth-role-dialog.component';
32
+ export * from './lib/pages/permissions/auth-search-select.component';
33
+ export * from './lib/pages/permissions/auth-user-dialog.component';
34
+ export * from './lib/pages/permissions/permission-editor.component';
35
+ export * from './lib/pages/permissions/permissions-page.component';
36
+ export * from './lib/pages/permissions/role-permission.component';
37
+ export * from './lib/pages/permissions/user-permission.component';
38
+ export * from './lib/pages/register-page.component';
39
+ export * from './lib/pages/reset-password-page.component';
40
+ export * from './lib/services/chill.service';
41
+ export * from './lib/services/workspace-dialog.service';
42
+ export * from './lib/services/workspace-layout.service';
43
+ export * from './lib/services/workspace-task-registry.service';
44
+ export * from './lib/services/workspace-toolbar.service';
45
+ export * from './lib/services/workspace.service';
46
+ export * from './lib/tasks/crud-task/crud-task.component';
47
+ export * from './lib/tasks/goto-url-task/goto-url-task.component';
48
+ export * from './lib/workspace/confirm-message-dialog.component';
49
+ export * from './lib/workspace/entity-options-dialog.component';
50
+ export * from './lib/workspace/external-task-api';
51
+ export * from './lib/workspace/user-profile-dialog.component';
52
+ export * from './lib/workspace/workspace-dialog-host.component';
53
+ export * from './lib/workspace/workspace-menu-item-dialog.component';
54
+ export * from './lib/workspace/workspace-menu.component';
55
+ export * from './lib/workspace/workspace-taskbar.component';
56
+ //# sourceMappingURL=public-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAEA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAElD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AAEvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,iCAAiC,CAAC;AAChD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qDAAqD,CAAC;AACpE,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAE1D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAElE,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,mCAAmC,CAAC;AAClD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,0CAA0C,CAAC;AACzD,cAAc,6CAA6C,CAAC"}
@@ -0,0 +1,166 @@
1
+ // Shared worker, loaded by the client-owned public/sw.js through importScripts().
2
+ // Set self.CHILL_SHARP_SW_OPTIONS before importing to customize these defaults.
3
+ const OPTIONS = {
4
+ cachePrefix: 'chill-sharp-ui',
5
+ cacheVersion: 'v2',
6
+ cacheTimeoutMs: 10 * 60 * 1000,
7
+ appShell: ['/', '/index.html'],
8
+ legacyCacheNames: [],
9
+ ...self.CHILL_SHARP_SW_OPTIONS
10
+ };
11
+
12
+ const SHELL_CACHE = `${OPTIONS.cachePrefix}-shell-${OPTIONS.cacheVersion}`;
13
+ const METADATA_CACHE = `${OPTIONS.cachePrefix}-metadata-${OPTIONS.cacheVersion}`;
14
+ const CACHED_AT = 'X-ChillSharp-Cached-At';
15
+ const METADATA_READS = new Set(['get-schema', 'get-schema-list', 'get-entity-options']);
16
+ const METADATA_WRITES = new Set(['set-schema', 'set-entity-options']);
17
+ let metadataGeneration = 0;
18
+ let pendingMutation = Promise.resolve();
19
+ let cacheOperations = Promise.resolve();
20
+
21
+ // Order cache writes/deletions so a pre-update fetch cannot refill an invalidated cache.
22
+ function changeMetadataCache(action) {
23
+ const operation = cacheOperations.then(action);
24
+ cacheOperations = operation.catch(() => {});
25
+ return operation;
26
+ }
27
+
28
+ function schemaAction(url) {
29
+ const match = url.pathname.match(/\/chill-schema\/([^/]+)\/?$/i);
30
+ return match ? match[1].toLowerCase() : '';
31
+ }
32
+
33
+ function isSchemaUpdate(url, action) {
34
+ return action === 'get-schema' && [...url.searchParams].some(
35
+ ([name, value]) => name.toLowerCase() === 'update' && value.toLowerCase() === 'true'
36
+ );
37
+ }
38
+
39
+ async function freshCachedResponse(cacheName, request) {
40
+ const cache = await caches.open(cacheName);
41
+ const response = await cache.match(request);
42
+ if (!response) return undefined;
43
+ const cachedAt = Number(response.headers.get(CACHED_AT));
44
+ const age = Date.now() - cachedAt;
45
+ if (cachedAt > 0 && age >= 0 && age < OPTIONS.cacheTimeoutMs) return response;
46
+ await cache.delete(request);
47
+ return undefined;
48
+ }
49
+
50
+ async function storeResponse(cacheName, request, response) {
51
+ if (!response.ok || [204, 205, 206].includes(response.status) || response.type === 'opaque' ||
52
+ /\bno-store\b/i.test(response.headers.get('Cache-Control') || '') ||
53
+ (response.headers.get('Vary') || '').split(',').some((name) => name.trim() === '*')) return;
54
+
55
+ const headers = new Headers(response.headers);
56
+ headers.set(CACHED_AT, String(Date.now()));
57
+ // Cache API does not distinguish bearer tokens unless the response varies by them.
58
+ const vary = new Set((headers.get('Vary') || '').split(',').map((v) => v.trim()).filter(Boolean));
59
+ vary.add('Authorization');
60
+ headers.set('Vary', [...vary].join(', '));
61
+ const copy = new Response(await response.clone().blob(), {
62
+ status: response.status, statusText: response.statusText, headers
63
+ });
64
+ await (await caches.open(cacheName)).put(request, copy);
65
+ }
66
+
67
+ function fetchFresh(request) {
68
+ return fetch(new Request(request, { cache: 'no-store' }));
69
+ }
70
+
71
+ async function readMetadata(request) {
72
+ await pendingMutation;
73
+ const generation = metadataGeneration;
74
+ const cached = await changeMetadataCache(() => freshCachedResponse(METADATA_CACHE, request)).catch(() => undefined);
75
+ if (cached && generation === metadataGeneration) return cached;
76
+ const response = await fetchFresh(request);
77
+ await changeMetadataCache(async () => {
78
+ if (generation === metadataGeneration) await storeResponse(METADATA_CACHE, request, response);
79
+ }).catch(() => {}); // Storage quota errors must not discard a successful network response.
80
+ return response;
81
+ }
82
+
83
+ function mutateMetadata(request) {
84
+ metadataGeneration++;
85
+ const operation = pendingMutation.then(async () => {
86
+ await changeMetadataCache(() => caches.delete(METADATA_CACHE));
87
+ try {
88
+ // update=true must reach the server on every click, including repeated updates.
89
+ return await fetchFresh(request);
90
+ } finally {
91
+ // Clear all types/views/cultures and entity options, including schema-list summaries.
92
+ // Normal GETs after the update (also after a reload) must fetch the saved schema.
93
+ await changeMetadataCache(() => caches.delete(METADATA_CACHE));
94
+ }
95
+ });
96
+ pendingMutation = operation.then(() => {}, () => {});
97
+ return operation;
98
+ }
99
+
100
+ self.addEventListener('install', (event) => {
101
+ event.waitUntil((async () => {
102
+ const cache = await caches.open(SHELL_CACHE);
103
+ await cache.addAll(OPTIONS.appShell.map((url) => new Request(new URL(url, self.location.href), { cache: 'reload' })));
104
+ await self.skipWaiting();
105
+ })());
106
+ });
107
+
108
+ self.addEventListener('activate', (event) => {
109
+ event.waitUntil((async () => {
110
+ const current = new Set([SHELL_CACHE, METADATA_CACHE]);
111
+ await Promise.all((await caches.keys())
112
+ .filter((key) => OPTIONS.legacyCacheNames.includes(key) ||
113
+ (key.startsWith(`${OPTIONS.cachePrefix}-`) && !current.has(key)))
114
+ .map((key) => caches.delete(key)));
115
+ await self.clients.claim();
116
+ })());
117
+ });
118
+
119
+ self.addEventListener('fetch', (event) => {
120
+ const request = event.request;
121
+ const url = new URL(request.url);
122
+ const action = schemaAction(url);
123
+
124
+ if ((request.method === 'GET' && isSchemaUpdate(url, action)) ||
125
+ (request.method === 'POST' && METADATA_WRITES.has(action))) {
126
+ const response = mutateMetadata(request);
127
+ event.respondWith(response);
128
+ event.waitUntil(response.then(() => {}, () => {}));
129
+ return;
130
+ }
131
+
132
+ if (request.method !== 'GET') return;
133
+ if (METADATA_READS.has(action)) {
134
+ const response = readMetadata(request);
135
+ event.respondWith(response);
136
+ event.waitUntil(response.then(() => {}, () => {}));
137
+ return;
138
+ }
139
+
140
+ // Only metadata APIs above are cached. Other APIs and runtime settings stay fresh.
141
+ if (action || /\/api(?:\/|$)/i.test(url.pathname) ||
142
+ /\/(?:env|runtime-config|sw)\.js$/i.test(url.pathname)) {
143
+ event.respondWith(fetchFresh(request));
144
+ return;
145
+ }
146
+
147
+ if (url.origin !== self.location.origin || request.headers.has('Authorization')) return;
148
+ if (request.mode === 'navigate') {
149
+ event.respondWith(fetchFresh(request).catch(async () => {
150
+ const shell = await (await caches.open(SHELL_CACHE)).match('/index.html');
151
+ return shell || Response.error();
152
+ }));
153
+ return;
154
+ }
155
+
156
+ if (!['script', 'style', 'image', 'font', 'manifest'].includes(request.destination)) return;
157
+ const response = (async () => {
158
+ const cached = await freshCachedResponse(SHELL_CACHE, request);
159
+ if (cached) return cached;
160
+ const result = await fetchFresh(request);
161
+ await storeResponse(SHELL_CACHE, request, result).catch(() => {});
162
+ return result;
163
+ })();
164
+ event.respondWith(response);
165
+ event.waitUntil(response.then(() => {}, () => {}));
166
+ });