@luzmo/analytics-components-kit 1.0.1-alpha.85 → 1.0.1-alpha.87

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 (54) hide show
  1. package/angular/README.md +1 -0
  2. package/angular/components/ai-interaction-textarea.component.ts +2 -0
  3. package/angular/components/dataset-icon.component.ts +21 -0
  4. package/angular/components/dataset-selector-row.component.ts +2 -0
  5. package/angular/esm/components/ai-interaction-textarea.component.d.ts +2 -1
  6. package/angular/esm/components/ai-interaction-textarea.component.js +7 -2
  7. package/angular/esm/components/dataset-icon.component.d.ts +9 -0
  8. package/angular/esm/components/dataset-icon.component.js +36 -0
  9. package/angular/esm/components/dataset-selector-row.component.d.ts +2 -1
  10. package/angular/esm/components/dataset-selector-row.component.js +7 -2
  11. package/angular/esm/index.d.ts +3 -1
  12. package/angular/esm/index.js +3 -0
  13. package/angular/esm/types.d.ts +14 -0
  14. package/angular/index.ts +3 -0
  15. package/angular/types.ts +13 -0
  16. package/components/ai-interaction-textarea/ai-interaction-textarea.d.ts +7 -1
  17. package/components/ai-interaction-textarea/index.cjs +32 -28
  18. package/components/ai-interaction-textarea/index.js +60 -48
  19. package/components/dataset-icon/dataset-icon.d.ts +45 -0
  20. package/components/dataset-icon/index.cjs +60 -0
  21. package/components/dataset-icon/index.d.ts +7 -0
  22. package/components/dataset-icon/index.js +166 -0
  23. package/components/dataset-selector-list/dataset-selector-list.d.ts +1 -0
  24. package/components/dataset-selector-list/index.cjs +10 -8
  25. package/components/dataset-selector-list/index.js +55 -58
  26. package/components/dataset-selector-row/dataset-selector-row.d.ts +7 -0
  27. package/components/dataset-selector-row/index.cjs +21 -18
  28. package/components/dataset-selector-row/index.js +61 -57
  29. package/components/display-settings-binning/index.js +1 -1
  30. package/components/display-settings-datetime/index.js +1 -1
  31. package/components/display-settings-grand-totals/index.js +1 -1
  32. package/components/display-settings-numeric/index.js +1 -1
  33. package/components/display-settings-period-over-period/index.js +1 -1
  34. package/components/draggable-data-item/index.js +1 -1
  35. package/components/droppable-slot/index.js +1 -1
  36. package/components/filter-data-item-picker/index.js +1 -1
  37. package/components/filter-expression-picker/index.js +1 -1
  38. package/components/filter-item/index.js +2 -2
  39. package/components/filter-value-picker/index.js +1 -1
  40. package/components/filter-value-picker-datetime/index.js +1 -1
  41. package/components/filter-value-picker-hierarchy/index.js +1 -1
  42. package/components/filter-value-picker-numeric/index.js +1 -1
  43. package/components/grid/index.js +1 -1
  44. package/components/{index-BDFBUGBc.js → index-DdyZ2g5L.js} +1 -1
  45. package/components/index.cjs +1 -1
  46. package/components/index.js +90 -88
  47. package/components/{set-locale-nv7fWEtl.js → set-locale-hKTMz37h.js} +6 -1
  48. package/components/slot-contents-picker/index.js +1 -1
  49. package/components/slot-menu/index.cjs +1 -1
  50. package/components/slot-menu/index.js +1 -1
  51. package/custom-elements.json +154 -0
  52. package/index.d.ts +1 -0
  53. package/package.json +8 -3
  54. package/types.d.ts +14 -0
package/angular/README.md CHANGED
@@ -26,6 +26,7 @@ bootstrapApplication(AiChatMessageAssistantComponent);
26
26
  - `AiChatMessageUserComponent` → <luzmo-ai-chat-message-user>
27
27
  - `AiChatMessagesContainerComponent` → <luzmo-ai-chat-messages-container>
28
28
  - `AiInteractionTextareaComponent` → <luzmo-ai-interaction-textarea>
29
+ - `DatasetIconComponent` → <luzmo-dataset-icon>
29
30
  - `DatasetSelectorListComponent` → <luzmo-dataset-selector-list>
30
31
  - `DatasetSelectorRowComponent` → <luzmo-dataset-selector-row>
31
32
  - `DisplaySettingsComponent` → <luzmo-display-settings>
@@ -13,6 +13,7 @@ import type { Dataset } from '../types';
13
13
  [attr.api-url]="apiUrl"
14
14
  [attr.app-server]="appServer"
15
15
  [attr.flag-opendata]="flagOpendata"
16
+ [attr.disabled]="disabled"
16
17
  (prompt-submitted)="promptSubmitted.emit($event)">
17
18
  <ng-content></ng-content>
18
19
  </luzmo-ai-interaction-textarea>`
@@ -25,5 +26,6 @@ export class AiInteractionTextareaComponent {
25
26
  @Input() apiUrl?: string;
26
27
  @Input() appServer?: string;
27
28
  @Input() flagOpendata?: boolean;
29
+ @Input() disabled?: boolean;
28
30
  @Output() promptSubmitted = new EventEmitter<CustomEvent>();
29
31
  }
@@ -0,0 +1,21 @@
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
+ import type { DatasetIcon } from '../types';
3
+
4
+ @Component({
5
+ selector: 'luzmo-dataset-icon',
6
+ standalone: true,
7
+ changeDetection: ChangeDetectionStrategy.OnPush,
8
+ template: `<luzmo-dataset-icon
9
+ [attr.dataset]="dataset"
10
+ [attr.size]="size"
11
+ [attr.app-url]="appUrl"
12
+ >
13
+ <ng-content></ng-content>
14
+ </luzmo-dataset-icon>`
15
+ })
16
+ export class DatasetIconComponent {
17
+ @Input() dataset?: DatasetIcon;
18
+ @Input() size?: '16px' | '24px' | '32px' | '48px' | '64px';
19
+ @Input() appUrl?: string;
20
+
21
+ }
@@ -13,6 +13,7 @@ import type { Dataset } from '../types';
13
13
  [attr.api-url]="apiUrl"
14
14
  [attr.app-server]="appServer"
15
15
  [attr.flag-opendata]="flagOpendata"
16
+ [attr.disabled]="disabled"
16
17
  (dataset-selected)="datasetSelected.emit($event)"
17
18
  (dataset-removed)="datasetRemoved.emit($event)">
18
19
  <ng-content></ng-content>
@@ -26,6 +27,7 @@ export class DatasetSelectorRowComponent {
26
27
  @Input() apiUrl?: string;
27
28
  @Input() appServer?: string;
28
29
  @Input() flagOpendata?: boolean;
30
+ @Input() disabled?: boolean;
29
31
  @Output() datasetSelected = new EventEmitter<CustomEvent>();
30
32
  @Output() datasetRemoved = new EventEmitter<CustomEvent>();
31
33
  }
@@ -9,7 +9,8 @@ export declare class AiInteractionTextareaComponent {
9
9
  apiUrl?: string;
10
10
  appServer?: string;
11
11
  flagOpendata?: boolean;
12
+ disabled?: boolean;
12
13
  promptSubmitted: EventEmitter<CustomEvent<any>>;
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AiInteractionTextareaComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<AiInteractionTextareaComponent, "luzmo-ai-interaction-textarea", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "selectedDatasets": { "alias": "selectedDatasets"; "required": false; }; "authKey": { "alias": "authKey"; "required": false; }; "authToken": { "alias": "authToken"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "appServer": { "alias": "appServer"; "required": false; }; "flagOpendata": { "alias": "flagOpendata"; "required": false; }; }, { "promptSubmitted": "promptSubmitted"; }, never, ["*"], true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AiInteractionTextareaComponent, "luzmo-ai-interaction-textarea", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "selectedDatasets": { "alias": "selectedDatasets"; "required": false; }; "authKey": { "alias": "authKey"; "required": false; }; "authToken": { "alias": "authToken"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "appServer": { "alias": "appServer"; "required": false; }; "flagOpendata": { "alias": "flagOpendata"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "promptSubmitted": "promptSubmitted"; }, never, ["*"], true, never>;
15
16
  }
@@ -8,9 +8,10 @@ export class AiInteractionTextareaComponent {
8
8
  apiUrl;
9
9
  appServer;
10
10
  flagOpendata;
11
+ disabled;
11
12
  promptSubmitted = new EventEmitter();
12
13
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AiInteractionTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: AiInteractionTextareaComponent, isStandalone: true, selector: "luzmo-ai-interaction-textarea", inputs: { placeholder: "placeholder", selectedDatasets: "selectedDatasets", authKey: "authKey", authToken: "authToken", apiUrl: "apiUrl", appServer: "appServer", flagOpendata: "flagOpendata" }, outputs: { promptSubmitted: "promptSubmitted" }, ngImport: i0, template: `<luzmo-ai-interaction-textarea
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: AiInteractionTextareaComponent, isStandalone: true, selector: "luzmo-ai-interaction-textarea", inputs: { placeholder: "placeholder", selectedDatasets: "selectedDatasets", authKey: "authKey", authToken: "authToken", apiUrl: "apiUrl", appServer: "appServer", flagOpendata: "flagOpendata", disabled: "disabled" }, outputs: { promptSubmitted: "promptSubmitted" }, ngImport: i0, template: `<luzmo-ai-interaction-textarea
14
15
  [attr.placeholder]="placeholder"
15
16
  [attr.selectedDatasets]="selectedDatasets"
16
17
  [attr.auth-key]="authKey"
@@ -18,9 +19,10 @@ export class AiInteractionTextareaComponent {
18
19
  [attr.api-url]="apiUrl"
19
20
  [attr.app-server]="appServer"
20
21
  [attr.flag-opendata]="flagOpendata"
22
+ [attr.disabled]="disabled"
21
23
  (prompt-submitted)="promptSubmitted.emit($event)">
22
24
  <ng-content></ng-content>
23
- </luzmo-ai-interaction-textarea>`, isInline: true, dependencies: [{ kind: "component", type: AiInteractionTextareaComponent, selector: "luzmo-ai-interaction-textarea", inputs: ["placeholder", "selectedDatasets", "authKey", "authToken", "apiUrl", "appServer", "flagOpendata"], outputs: ["promptSubmitted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
+ </luzmo-ai-interaction-textarea>`, isInline: true, dependencies: [{ kind: "component", type: AiInteractionTextareaComponent, selector: "luzmo-ai-interaction-textarea", inputs: ["placeholder", "selectedDatasets", "authKey", "authToken", "apiUrl", "appServer", "flagOpendata", "disabled"], outputs: ["promptSubmitted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
26
  }
25
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AiInteractionTextareaComponent, decorators: [{
26
28
  type: Component,
@@ -36,6 +38,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
36
38
  [attr.api-url]="apiUrl"
37
39
  [attr.app-server]="appServer"
38
40
  [attr.flag-opendata]="flagOpendata"
41
+ [attr.disabled]="disabled"
39
42
  (prompt-submitted)="promptSubmitted.emit($event)">
40
43
  <ng-content></ng-content>
41
44
  </luzmo-ai-interaction-textarea>`
@@ -54,6 +57,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
54
57
  type: Input
55
58
  }], flagOpendata: [{
56
59
  type: Input
60
+ }], disabled: [{
61
+ type: Input
57
62
  }], promptSubmitted: [{
58
63
  type: Output
59
64
  }] } });
@@ -0,0 +1,9 @@
1
+ import type { DatasetIcon } from '../types';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DatasetIconComponent {
4
+ dataset?: DatasetIcon;
5
+ size?: '16px' | '24px' | '32px' | '48px' | '64px';
6
+ appUrl?: string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatasetIconComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatasetIconComponent, "luzmo-dataset-icon", never, { "dataset": { "alias": "dataset"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appUrl": { "alias": "appUrl"; "required": false; }; }, {}, never, ["*"], true, never>;
9
+ }
@@ -0,0 +1,36 @@
1
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DatasetIconComponent {
4
+ dataset;
5
+ size;
6
+ appUrl;
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: DatasetIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: DatasetIconComponent, isStandalone: true, selector: "luzmo-dataset-icon", inputs: { dataset: "dataset", size: "size", appUrl: "appUrl" }, ngImport: i0, template: `<luzmo-dataset-icon
9
+ [attr.dataset]="dataset"
10
+ [attr.size]="size"
11
+ [attr.app-url]="appUrl"
12
+ >
13
+ <ng-content></ng-content>
14
+ </luzmo-dataset-icon>`, isInline: true, dependencies: [{ kind: "component", type: DatasetIconComponent, selector: "luzmo-dataset-icon", inputs: ["dataset", "size", "appUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: DatasetIconComponent, decorators: [{
17
+ type: Component,
18
+ args: [{
19
+ selector: 'luzmo-dataset-icon',
20
+ standalone: true,
21
+ changeDetection: ChangeDetectionStrategy.OnPush,
22
+ template: `<luzmo-dataset-icon
23
+ [attr.dataset]="dataset"
24
+ [attr.size]="size"
25
+ [attr.app-url]="appUrl"
26
+ >
27
+ <ng-content></ng-content>
28
+ </luzmo-dataset-icon>`
29
+ }]
30
+ }], propDecorators: { dataset: [{
31
+ type: Input
32
+ }], size: [{
33
+ type: Input
34
+ }], appUrl: [{
35
+ type: Input
36
+ }] } });
@@ -9,8 +9,9 @@ export declare class DatasetSelectorRowComponent {
9
9
  apiUrl?: string;
10
10
  appServer?: string;
11
11
  flagOpendata?: boolean;
12
+ disabled?: boolean;
12
13
  datasetSelected: EventEmitter<CustomEvent<any>>;
13
14
  datasetRemoved: EventEmitter<CustomEvent<any>>;
14
15
  static ɵfac: i0.ɵɵFactoryDeclaration<DatasetSelectorRowComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<DatasetSelectorRowComponent, "luzmo-dataset-selector-row", never, { "selectedDatasets": { "alias": "selectedDatasets"; "required": false; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; }; "authKey": { "alias": "authKey"; "required": false; }; "authToken": { "alias": "authToken"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "appServer": { "alias": "appServer"; "required": false; }; "flagOpendata": { "alias": "flagOpendata"; "required": false; }; }, { "datasetSelected": "datasetSelected"; "datasetRemoved": "datasetRemoved"; }, never, ["*"], true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatasetSelectorRowComponent, "luzmo-dataset-selector-row", never, { "selectedDatasets": { "alias": "selectedDatasets"; "required": false; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; }; "authKey": { "alias": "authKey"; "required": false; }; "authToken": { "alias": "authToken"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "appServer": { "alias": "appServer"; "required": false; }; "flagOpendata": { "alias": "flagOpendata"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "datasetSelected": "datasetSelected"; "datasetRemoved": "datasetRemoved"; }, never, ["*"], true, never>;
16
17
  }
@@ -8,10 +8,11 @@ export class DatasetSelectorRowComponent {
8
8
  apiUrl;
9
9
  appServer;
10
10
  flagOpendata;
11
+ disabled;
11
12
  datasetSelected = new EventEmitter();
12
13
  datasetRemoved = new EventEmitter();
13
14
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: DatasetSelectorRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: DatasetSelectorRowComponent, isStandalone: true, selector: "luzmo-dataset-selector-row", inputs: { selectedDatasets: "selectedDatasets", buttonLabel: "buttonLabel", authKey: "authKey", authToken: "authToken", apiUrl: "apiUrl", appServer: "appServer", flagOpendata: "flagOpendata" }, outputs: { datasetSelected: "datasetSelected", datasetRemoved: "datasetRemoved" }, ngImport: i0, template: `<luzmo-dataset-selector-row
15
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: DatasetSelectorRowComponent, isStandalone: true, selector: "luzmo-dataset-selector-row", inputs: { selectedDatasets: "selectedDatasets", buttonLabel: "buttonLabel", authKey: "authKey", authToken: "authToken", apiUrl: "apiUrl", appServer: "appServer", flagOpendata: "flagOpendata", disabled: "disabled" }, outputs: { datasetSelected: "datasetSelected", datasetRemoved: "datasetRemoved" }, ngImport: i0, template: `<luzmo-dataset-selector-row
15
16
  [attr.selectedDatasets]="selectedDatasets"
16
17
  [attr.button-label]="buttonLabel"
17
18
  [attr.auth-key]="authKey"
@@ -19,10 +20,11 @@ export class DatasetSelectorRowComponent {
19
20
  [attr.api-url]="apiUrl"
20
21
  [attr.app-server]="appServer"
21
22
  [attr.flag-opendata]="flagOpendata"
23
+ [attr.disabled]="disabled"
22
24
  (dataset-selected)="datasetSelected.emit($event)"
23
25
  (dataset-removed)="datasetRemoved.emit($event)">
24
26
  <ng-content></ng-content>
25
- </luzmo-dataset-selector-row>`, isInline: true, dependencies: [{ kind: "component", type: DatasetSelectorRowComponent, selector: "luzmo-dataset-selector-row", inputs: ["selectedDatasets", "buttonLabel", "authKey", "authToken", "apiUrl", "appServer", "flagOpendata"], outputs: ["datasetSelected", "datasetRemoved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ </luzmo-dataset-selector-row>`, isInline: true, dependencies: [{ kind: "component", type: DatasetSelectorRowComponent, selector: "luzmo-dataset-selector-row", inputs: ["selectedDatasets", "buttonLabel", "authKey", "authToken", "apiUrl", "appServer", "flagOpendata", "disabled"], outputs: ["datasetSelected", "datasetRemoved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
26
28
  }
27
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: DatasetSelectorRowComponent, decorators: [{
28
30
  type: Component,
@@ -38,6 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
38
40
  [attr.api-url]="apiUrl"
39
41
  [attr.app-server]="appServer"
40
42
  [attr.flag-opendata]="flagOpendata"
43
+ [attr.disabled]="disabled"
41
44
  (dataset-selected)="datasetSelected.emit($event)"
42
45
  (dataset-removed)="datasetRemoved.emit($event)">
43
46
  <ng-content></ng-content>
@@ -57,6 +60,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
57
60
  type: Input
58
61
  }], flagOpendata: [{
59
62
  type: Input
63
+ }], disabled: [{
64
+ type: Input
60
65
  }], datasetSelected: [{
61
66
  type: Output
62
67
  }], datasetRemoved: [{
@@ -2,6 +2,7 @@ import { AiChatMessageAssistantComponent } from './components/ai-chat-message-as
2
2
  import { AiChatMessageUserComponent } from './components/ai-chat-message-user.component';
3
3
  import { AiChatMessagesContainerComponent } from './components/ai-chat-messages-container.component';
4
4
  import { AiInteractionTextareaComponent } from './components/ai-interaction-textarea.component';
5
+ import { DatasetIconComponent } from './components/dataset-icon.component';
5
6
  import { DatasetSelectorListComponent } from './components/dataset-selector-list.component';
6
7
  import { DatasetSelectorRowComponent } from './components/dataset-selector-row.component';
7
8
  import { DisplaySettingsComponent } from './components/display-settings.component';
@@ -35,6 +36,7 @@ export { AiChatMessageAssistantComponent } from './components/ai-chat-message-as
35
36
  export { AiChatMessageUserComponent } from './components/ai-chat-message-user.component';
36
37
  export { AiChatMessagesContainerComponent } from './components/ai-chat-messages-container.component';
37
38
  export { AiInteractionTextareaComponent } from './components/ai-interaction-textarea.component';
39
+ export { DatasetIconComponent } from './components/dataset-icon.component';
38
40
  export { DatasetSelectorListComponent } from './components/dataset-selector-list.component';
39
41
  export { DatasetSelectorRowComponent } from './components/dataset-selector-row.component';
40
42
  export { DisplaySettingsComponent } from './components/display-settings.component';
@@ -64,4 +66,4 @@ export { GridItemActionsMenuComponent } from './components/grid-item-actions-men
64
66
  export { SlotContentsPickerComponent } from './components/slot-contents-picker.component';
65
67
  export { SlotMenuComponent } from './components/slot-menu.component';
66
68
  export { SlotMenuListComponent } from './components/slot-menu-list.component';
67
- export declare const LUZMO_COMPONENTS: readonly [typeof AiChatMessageAssistantComponent, typeof AiChatMessageUserComponent, typeof AiChatMessagesContainerComponent, typeof AiInteractionTextareaComponent, typeof DatasetSelectorListComponent, typeof DatasetSelectorRowComponent, typeof DisplaySettingsComponent, typeof DisplaySettingsBinningComponent, typeof DisplaySettingsDatetimeComponent, typeof DisplaySettingsGrandTotalsComponent, typeof DisplaySettingsNumericComponent, typeof DisplaySettingsPeriodOverPeriodComponent, typeof DraggableDataItemComponent, typeof DraggableDataItemLevelComponent, typeof DroppableSlotComponent, typeof EditItemComponent, typeof EditOptionComponent, typeof EditOptionColorPickerComponent, typeof EditOptionColorRangeComponent, typeof FilterDataItemPickerComponent, typeof FilterExpressionPickerComponent, typeof FilterGroupComponent, typeof FilterItemComponent, typeof FilterParameterPickerComponent, typeof FilterValuePickerComponent, typeof FilterValuePickerDatetimeComponent, typeof FilterValuePickerHierarchyComponent, typeof FilterValuePickerNumericComponent, typeof GridComponent, typeof GridItemActionsMenuComponent, typeof SlotContentsPickerComponent, typeof SlotMenuComponent, typeof SlotMenuListComponent];
69
+ export declare const LUZMO_COMPONENTS: readonly [typeof AiChatMessageAssistantComponent, typeof AiChatMessageUserComponent, typeof AiChatMessagesContainerComponent, typeof AiInteractionTextareaComponent, typeof DatasetIconComponent, typeof DatasetSelectorListComponent, typeof DatasetSelectorRowComponent, typeof DisplaySettingsComponent, typeof DisplaySettingsBinningComponent, typeof DisplaySettingsDatetimeComponent, typeof DisplaySettingsGrandTotalsComponent, typeof DisplaySettingsNumericComponent, typeof DisplaySettingsPeriodOverPeriodComponent, typeof DraggableDataItemComponent, typeof DraggableDataItemLevelComponent, typeof DroppableSlotComponent, typeof EditItemComponent, typeof EditOptionComponent, typeof EditOptionColorPickerComponent, typeof EditOptionColorRangeComponent, typeof FilterDataItemPickerComponent, typeof FilterExpressionPickerComponent, typeof FilterGroupComponent, typeof FilterItemComponent, typeof FilterParameterPickerComponent, typeof FilterValuePickerComponent, typeof FilterValuePickerDatetimeComponent, typeof FilterValuePickerHierarchyComponent, typeof FilterValuePickerNumericComponent, typeof GridComponent, typeof GridItemActionsMenuComponent, typeof SlotContentsPickerComponent, typeof SlotMenuComponent, typeof SlotMenuListComponent];
@@ -2,6 +2,7 @@ import { AiChatMessageAssistantComponent } from './components/ai-chat-message-as
2
2
  import { AiChatMessageUserComponent } from './components/ai-chat-message-user.component';
3
3
  import { AiChatMessagesContainerComponent } from './components/ai-chat-messages-container.component';
4
4
  import { AiInteractionTextareaComponent } from './components/ai-interaction-textarea.component';
5
+ import { DatasetIconComponent } from './components/dataset-icon.component';
5
6
  import { DatasetSelectorListComponent } from './components/dataset-selector-list.component';
6
7
  import { DatasetSelectorRowComponent } from './components/dataset-selector-row.component';
7
8
  import { DisplaySettingsComponent } from './components/display-settings.component';
@@ -35,6 +36,7 @@ export { AiChatMessageAssistantComponent } from './components/ai-chat-message-as
35
36
  export { AiChatMessageUserComponent } from './components/ai-chat-message-user.component';
36
37
  export { AiChatMessagesContainerComponent } from './components/ai-chat-messages-container.component';
37
38
  export { AiInteractionTextareaComponent } from './components/ai-interaction-textarea.component';
39
+ export { DatasetIconComponent } from './components/dataset-icon.component';
38
40
  export { DatasetSelectorListComponent } from './components/dataset-selector-list.component';
39
41
  export { DatasetSelectorRowComponent } from './components/dataset-selector-row.component';
40
42
  export { DisplaySettingsComponent } from './components/display-settings.component';
@@ -69,6 +71,7 @@ export const LUZMO_COMPONENTS = [
69
71
  AiChatMessageUserComponent,
70
72
  AiChatMessagesContainerComponent,
71
73
  AiInteractionTextareaComponent,
74
+ DatasetIconComponent,
72
75
  DatasetSelectorListComponent,
73
76
  DatasetSelectorRowComponent,
74
77
  DisplaySettingsComponent,
@@ -64,6 +64,20 @@ export type DataItem = {
64
64
  lowestLevel?: string;
65
65
  };
66
66
  export type GridItemRenderer = (item: GridItemData, index: number) => TemplateResult;
67
+ /**
68
+ * Dataset icon interface matching the Angular component
69
+ */
70
+ export interface DatasetIcon {
71
+ subtype: string;
72
+ account?: {
73
+ plugin?: {
74
+ thumbnails?: {
75
+ url: string;
76
+ size: string;
77
+ }[];
78
+ };
79
+ };
80
+ }
67
81
  export type { ElementSize, Placement } from '@luzmo/lucero';
68
82
  export interface Dataset {
69
83
  id: string;
package/angular/index.ts CHANGED
@@ -2,6 +2,7 @@ import { AiChatMessageAssistantComponent } from './components/ai-chat-message-as
2
2
  import { AiChatMessageUserComponent } from './components/ai-chat-message-user.component';
3
3
  import { AiChatMessagesContainerComponent } from './components/ai-chat-messages-container.component';
4
4
  import { AiInteractionTextareaComponent } from './components/ai-interaction-textarea.component';
5
+ import { DatasetIconComponent } from './components/dataset-icon.component';
5
6
  import { DatasetSelectorListComponent } from './components/dataset-selector-list.component';
6
7
  import { DatasetSelectorRowComponent } from './components/dataset-selector-row.component';
7
8
  import { DisplaySettingsComponent } from './components/display-settings.component';
@@ -36,6 +37,7 @@ export { AiChatMessageAssistantComponent } from './components/ai-chat-message-as
36
37
  export { AiChatMessageUserComponent } from './components/ai-chat-message-user.component';
37
38
  export { AiChatMessagesContainerComponent } from './components/ai-chat-messages-container.component';
38
39
  export { AiInteractionTextareaComponent } from './components/ai-interaction-textarea.component';
40
+ export { DatasetIconComponent } from './components/dataset-icon.component';
39
41
  export { DatasetSelectorListComponent } from './components/dataset-selector-list.component';
40
42
  export { DatasetSelectorRowComponent } from './components/dataset-selector-row.component';
41
43
  export { DisplaySettingsComponent } from './components/display-settings.component';
@@ -71,6 +73,7 @@ export const LUZMO_COMPONENTS = [
71
73
  AiChatMessageUserComponent,
72
74
  AiChatMessagesContainerComponent,
73
75
  AiInteractionTextareaComponent,
76
+ DatasetIconComponent,
74
77
  DatasetSelectorListComponent,
75
78
  DatasetSelectorRowComponent,
76
79
  DisplaySettingsComponent,
package/angular/types.ts CHANGED
@@ -91,6 +91,19 @@ export type GridItemRenderer = (
91
91
  index: number
92
92
  ) => TemplateResult;
93
93
 
94
+ /**
95
+ * Dataset icon interface matching the Angular component
96
+ */
97
+
98
+ export interface DatasetIcon {
99
+ subtype: string;
100
+ account?: {
101
+ plugin?: {
102
+ thumbnails?: { url: string; size: string }[];
103
+ };
104
+ };
105
+ }
106
+
94
107
  export type { ElementSize, Placement } from '@luzmo/lucero';
95
108
 
96
109
  // Dataset interface for dataset selector components
@@ -1,11 +1,13 @@
1
1
  import { LitElement, TemplateResult } from 'lit';
2
2
  import { Dataset } from '../../types';
3
- import '../dataset-selector-row/index';
3
+ import '../dataset-selector-row';
4
4
  /**
5
5
  * @element luzmo-ai-interaction-textarea
6
6
  * @summary A textarea component for AI interaction with dataset selection
7
7
  * @fires prompt-submitted - Fired when a prompt is submitted with selected datasets
8
8
  *
9
+ * @attr {boolean} disabled - When true, disables the entire component (opacity 60%, no interactions)
10
+ *
9
11
  * @cssprop --luzmo-ai-interaction-textarea-background-color - Override for background color of the component (client customization)
10
12
  * @cssprop --ai-interaction-textarea-background-color - Background color of the component
11
13
  * @cssprop --ai-interaction-textarea-border-color - Border color of the component
@@ -63,6 +65,10 @@ export declare class LuzmoAiInteractionTextarea extends LitElement {
63
65
  * When true, restricts results to public datasets (opendata parity)
64
66
  */
65
67
  flagOpendata: boolean;
68
+ /**
69
+ * When true, disables the entire component (sets opacity to 60% and prevents all interactions)
70
+ */
71
+ disabled: boolean;
66
72
  private _promptValue;
67
73
  private _isPromptValid;
68
74
  private get _buttonDisabled();
@@ -17,34 +17,38 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@lit/localize"),u=require("@luzmo/icons"),l=require("lit"),i=require("lit/decorators.js");require("../dataset-selector-row/index.cjs");const m=":host{box-sizing:border-box;display:flex;flex-direction:column;background-color:var(--luzmo-ai-interaction-textarea-background-color, var(--ai-interaction-textarea-background-color));border:1px solid var(--luzmo-ai-interaction-textarea-border-color, var(--ai-interaction-textarea-border-color));border-radius:var(--luzmo-ai-interaction-textarea-border-radius, var(--ai-interaction-textarea-border-radius));padding:var(--luzmo-ai-interaction-textarea-padding, var(--ai-interaction-textarea-padding));gap:var(--luzmo-ai-interaction-textarea-gap, var(--ai-interaction-textarea-gap));font-family:var(--luzmo-ai-interaction-textarea-font-family, var(--ai-interaction-textarea-font-family));font-size:var(--luzmo-ai-interaction-textarea-font-size, var(--ai-interaction-textarea-font-size))}:host:has(textarea:focus){border-color:var(--luzmo-ai-interaction-textarea-focus-border-color, var(--ai-interaction-textarea-focus-border-color));box-shadow:var(--luzmo-ai-interaction-textarea-focus-box-shadow, var(--ai-interaction-textarea-focus-box-shadow))}:host textarea{background-color:var(--luzmo-ai-interaction-textarea-textarea-background, var(--ai-interaction-textarea-textarea-background));border:none;resize:none;outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;vertical-align:middle;padding:0;min-height:3rem;color:var(--luzmo-ai-interaction-textarea-textarea-color, var(--ai-interaction-textarea-textarea-color));font-family:var(--luzmo-ai-interaction-textarea-font-family, var(--ai-interaction-textarea-font-family));font-size:var(--luzmo-ai-interaction-textarea-font-size, var(--ai-interaction-textarea-font-size));line-height:1.5}:host textarea::placeholder{color:var(--luzmo-ai-interaction-textarea-textarea-placeholder-color, var(--ai-interaction-textarea-textarea-placeholder-color))}:host .button-container{text-align:var(--luzmo-ai-interaction-textarea-button-container-text-align, var(--ai-interaction-textarea-button-container-text-align))}:host .button-container button{padding:var(--luzmo-ai-interaction-textarea-button-padding, var(--ai-interaction-textarea-button-padding));min-width:var(--luzmo-ai-interaction-textarea-button-min-width, var(--ai-interaction-textarea-button-min-width));min-height:var(--luzmo-ai-interaction-textarea-button-min-height, var(--ai-interaction-textarea-button-min-height));border:none;border-radius:var(--luzmo-ai-interaction-textarea-button-border-radius, var(--ai-interaction-textarea-button-border-radius));font-size:var(--luzmo-ai-interaction-textarea-button-font-size, var(--ai-interaction-textarea-button-font-size));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s ease}:host .button-container button:disabled{opacity:.6;cursor:not-allowed}:host .button-container button.disabled{opacity:.6;cursor:not-allowed}:host .button-container button svg{display:flex;align-items:center;justify-content:center}:host .button-container button.btn-primary{background-color:var(--luzmo-ai-interaction-textarea-button-background-color, var(--ai-interaction-textarea-button-background-color));color:var(--luzmo-ai-interaction-textarea-button-color, var(--ai-interaction-textarea-button-color))}:host .button-container button.btn-primary:hover:not(:disabled):not(.disabled){background-color:var(--luzmo-ai-interaction-textarea-button-background-color-hover, var(--ai-interaction-textarea-button-background-color-hover))}:host .button-container button.btn-primary:disabled,:host .button-container button.btn-primary.disabled{background-color:var(--luzmo-ai-interaction-textarea-button-background-color-disabled, var(--ai-interaction-textarea-button-background-color-disabled));opacity:.6}:host{--ai-interaction-textarea-background-color: var(--luzmo-background-color-alt-2);--ai-interaction-textarea-border-color: var(--luzmo-border-color);--ai-interaction-textarea-border-radius: .5rem;--ai-interaction-textarea-padding: .75rem;--ai-interaction-textarea-gap: 1rem;--ai-interaction-textarea-focus-border-color: var(--luzmo-primary);--ai-interaction-textarea-focus-box-shadow: 0 0 1rem 0 var(--luzmo-primary-50);--ai-interaction-textarea-font-family: var(--luzmo-font-family);--ai-interaction-textarea-font-size: .875rem;--ai-interaction-textarea-textarea-background: transparent;--ai-interaction-textarea-textarea-color: var(--luzmo-font-color);--ai-interaction-textarea-textarea-placeholder-color: var(--luzmo-font-color-extra-dimmed);--ai-interaction-textarea-button-container-text-align: right;--ai-interaction-textarea-button-padding: 0;--ai-interaction-textarea-button-min-width: 2rem;--ai-interaction-textarea-button-min-height: 1.875rem;--ai-interaction-textarea-button-border-radius: .5rem;--ai-interaction-textarea-button-font-size: 1rem;--ai-interaction-textarea-button-background-color: var(--luzmo-primary);--ai-interaction-textarea-button-background-color-hover: var(--luzmo-primary-hover);--ai-interaction-textarea-button-background-color-disabled: var(--luzmo-primary);--ai-interaction-textarea-button-color: var(--luzmo-primary-inverse-color)}";var p=Object.defineProperty,b=Object.getOwnPropertyDescriptor,r=(n,t,a,e)=>{for(var o=e>1?void 0:e?b(t,a):t,c=n.length-1,s;c>=0;c--)(s=n[c])&&(o=(e?s(t,a,o):s(o))||o);return e&&o&&p(t,a,o),o};exports.LuzmoAiInteractionTextarea=class extends l.LitElement{constructor(){super(...arguments),this.placeholder="Type your prompt here...",this.selectedDatasets=[],this.authKey="",this.authToken="",this.apiUrl="https://api.luzmo.com",this.appServer="https://app.luzmo.com",this.flagOpendata=!1,this._promptValue="",this._isPromptValid=!1}get _buttonDisabled(){return this.selectedDatasets.length===0||!this._isPromptValid}_autoResizeTextarea(t){t.style.height="auto";const a=2*1.5*16,e=8*1.5*16,o=Math.max(a,Math.min(t.scrollHeight,e));t.style.height=`${o}px`}_handlePromptInput(t){const a=t.target;this._promptValue=a.value,this._isPromptValid=a.value.trim().length>0,this._autoResizeTextarea(a),a.scrollTo({top:a.scrollHeight})}_handleKeyDown(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),this._submitPrompt())}_submitPrompt(){if(this._buttonDisabled)return;const t=this._promptValue.trim();this.dispatchEvent(new CustomEvent("prompt-submitted",{detail:{prompt:t,selectedDatasets:this.selectedDatasets},bubbles:!0,composed:!0}))}_handleDatasetSelected(t){const a=t.detail;this.selectedDatasets.some(e=>e.id===a.id)||(this.selectedDatasets=[...this.selectedDatasets,a])}_handleDatasetRemoved(t){const a=t.detail;this.selectedDatasets=this.selectedDatasets.filter(e=>e.id!==a.id)}firstUpdated(){const t=this.shadowRoot?.querySelector("textarea");t&&this._autoResizeTextarea(t)}render(){return l.html`
21
- <luzmo-dataset-selector-row
22
- .selectedDatasets=${this.selectedDatasets}
23
- auth-key=${this.authKey}
24
- auth-token=${this.authToken}
25
- api-url=${this.apiUrl}
26
- app-server=${this.appServer}
27
- ?flag-opendata=${this.flagOpendata}
28
- @dataset-selected=${this._handleDatasetSelected}
29
- @dataset-removed=${this._handleDatasetRemoved}
30
- ></luzmo-dataset-selector-row>
20
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@lit/localize"),u=require("@luzmo/icons"),l=require("lit"),o=require("lit/decorators.js"),p=require("lit/directives/class-map.js");require("../dataset-selector-row/index.cjs");const m=":host{box-sizing:border-box;display:flex;flex-direction:column;background-color:var(--luzmo-ai-interaction-textarea-background-color, var(--ai-interaction-textarea-background-color));border:1px solid var(--luzmo-ai-interaction-textarea-border-color, var(--ai-interaction-textarea-border-color));border-radius:var(--luzmo-ai-interaction-textarea-border-radius, var(--ai-interaction-textarea-border-radius));padding:var(--luzmo-ai-interaction-textarea-padding, var(--ai-interaction-textarea-padding));gap:var(--luzmo-ai-interaction-textarea-gap, var(--ai-interaction-textarea-gap));font-family:var(--luzmo-ai-interaction-textarea-font-family, var(--ai-interaction-textarea-font-family));font-size:var(--luzmo-ai-interaction-textarea-font-size, var(--ai-interaction-textarea-font-size))}:host:has(textarea:focus){border-color:var(--luzmo-ai-interaction-textarea-focus-border-color, var(--ai-interaction-textarea-focus-border-color));box-shadow:var(--luzmo-ai-interaction-textarea-focus-box-shadow, var(--ai-interaction-textarea-focus-box-shadow))}:host .content-wrapper{display:flex;flex-direction:column;gap:var(--luzmo-ai-interaction-textarea-gap, var(--ai-interaction-textarea-gap))}:host .content-wrapper.disabled{opacity:.6;pointer-events:none;cursor:not-allowed}:host .content-wrapper.disabled *{pointer-events:none}:host textarea{background-color:var(--luzmo-ai-interaction-textarea-textarea-background, var(--ai-interaction-textarea-textarea-background));border:none;resize:none;outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;vertical-align:middle;padding:0;min-height:3rem;color:var(--luzmo-ai-interaction-textarea-textarea-color, var(--ai-interaction-textarea-textarea-color));font-family:var(--luzmo-ai-interaction-textarea-font-family, var(--ai-interaction-textarea-font-family));font-size:var(--luzmo-ai-interaction-textarea-font-size, var(--ai-interaction-textarea-font-size));line-height:1.5}:host textarea::placeholder{color:var(--luzmo-ai-interaction-textarea-textarea-placeholder-color, var(--ai-interaction-textarea-textarea-placeholder-color))}:host .button-container{text-align:var(--luzmo-ai-interaction-textarea-button-container-text-align, var(--ai-interaction-textarea-button-container-text-align))}:host .button-container button{padding:var(--luzmo-ai-interaction-textarea-button-padding, var(--ai-interaction-textarea-button-padding));min-width:var(--luzmo-ai-interaction-textarea-button-min-width, var(--ai-interaction-textarea-button-min-width));min-height:var(--luzmo-ai-interaction-textarea-button-min-height, var(--ai-interaction-textarea-button-min-height));border:none;border-radius:var(--luzmo-ai-interaction-textarea-button-border-radius, var(--ai-interaction-textarea-button-border-radius));font-size:var(--luzmo-ai-interaction-textarea-button-font-size, var(--ai-interaction-textarea-button-font-size));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s ease}:host .button-container button:disabled{opacity:.6;cursor:not-allowed}:host .button-container button.disabled{opacity:.6;cursor:not-allowed}:host .button-container button svg{display:flex;align-items:center;justify-content:center}:host .button-container button.btn-primary{background-color:var(--luzmo-ai-interaction-textarea-button-background-color, var(--ai-interaction-textarea-button-background-color));color:var(--luzmo-ai-interaction-textarea-button-color, var(--ai-interaction-textarea-button-color))}:host .button-container button.btn-primary:hover:not(:disabled):not(.disabled){background-color:var(--luzmo-ai-interaction-textarea-button-background-color-hover, var(--ai-interaction-textarea-button-background-color-hover))}:host .button-container button.btn-primary:disabled,:host .button-container button.btn-primary.disabled{background-color:var(--luzmo-ai-interaction-textarea-button-background-color-disabled, var(--ai-interaction-textarea-button-background-color-disabled));opacity:.6}:host{--ai-interaction-textarea-background-color: var(--luzmo-background-color-alt-2);--ai-interaction-textarea-border-color: var(--luzmo-border-color);--ai-interaction-textarea-border-radius: .5rem;--ai-interaction-textarea-padding: .75rem;--ai-interaction-textarea-gap: 1rem;--ai-interaction-textarea-focus-border-color: var(--luzmo-primary);--ai-interaction-textarea-focus-box-shadow: 0 0 1rem 0 var(--luzmo-primary-50);--ai-interaction-textarea-font-family: var(--luzmo-font-family);--ai-interaction-textarea-font-size: .875rem;--ai-interaction-textarea-textarea-background: transparent;--ai-interaction-textarea-textarea-color: var(--luzmo-font-color);--ai-interaction-textarea-textarea-placeholder-color: var(--luzmo-font-color-extra-dimmed);--ai-interaction-textarea-button-container-text-align: right;--ai-interaction-textarea-button-padding: 0;--ai-interaction-textarea-button-min-width: 2rem;--ai-interaction-textarea-button-min-height: 1.875rem;--ai-interaction-textarea-button-border-radius: .5rem;--ai-interaction-textarea-button-font-size: 1rem;--ai-interaction-textarea-button-background-color: var(--luzmo-primary);--ai-interaction-textarea-button-background-color-hover: var(--luzmo-primary-hover);--ai-interaction-textarea-button-background-color-disabled: var(--luzmo-primary);--ai-interaction-textarea-button-color: var(--luzmo-primary-inverse-color)}";var b=Object.defineProperty,h=Object.getOwnPropertyDescriptor,e=(n,t,a,r)=>{for(var i=r>1?void 0:r?h(t,a):t,s=n.length-1,c;s>=0;s--)(c=n[s])&&(i=(r?c(t,a,i):c(i))||i);return r&&i&&b(t,a,i),i};exports.LuzmoAiInteractionTextarea=class extends l.LitElement{constructor(){super(...arguments),this.placeholder="Type your prompt here...",this.selectedDatasets=[],this.authKey="",this.authToken="",this.apiUrl="https://api.luzmo.com",this.appServer="https://app.luzmo.com",this.flagOpendata=!1,this.disabled=!1,this._promptValue="",this._isPromptValid=!1}get _buttonDisabled(){return this.disabled||this.selectedDatasets.length===0||!this._isPromptValid}_autoResizeTextarea(t){t.style.height="auto";const a=2*1.5*16,r=8*1.5*16,i=Math.max(a,Math.min(t.scrollHeight,r));t.style.height=`${i}px`}_handlePromptInput(t){const a=t.target;this._promptValue=a.value,this._isPromptValid=a.value.trim().length>0,this._autoResizeTextarea(a),a.scrollTo({top:a.scrollHeight})}_handleKeyDown(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),this._submitPrompt())}_submitPrompt(){if(this._buttonDisabled)return;const t=this._promptValue.trim();this.dispatchEvent(new CustomEvent("prompt-submitted",{detail:{prompt:t,selectedDatasets:this.selectedDatasets},bubbles:!0,composed:!0}))}_handleDatasetSelected(t){const a=t.detail;this.selectedDatasets.some(r=>r.id===a.id)||(this.selectedDatasets=[...this.selectedDatasets,a])}_handleDatasetRemoved(t){const a=t.detail;this.selectedDatasets=this.selectedDatasets.filter(r=>r.id!==a.id)}firstUpdated(){const t=this.shadowRoot?.querySelector("textarea");t&&this._autoResizeTextarea(t)}render(){const t={"content-wrapper":!0,disabled:this.disabled};return l.html`
21
+ <div class=${p.classMap(t)}>
22
+ <luzmo-dataset-selector-row
23
+ .selectedDatasets=${this.selectedDatasets}
24
+ auth-key=${this.authKey}
25
+ auth-token=${this.authToken}
26
+ api-url=${this.apiUrl}
27
+ app-server=${this.appServer}
28
+ ?flag-opendata=${this.flagOpendata}
29
+ ?disabled=${this.disabled}
30
+ @dataset-selected=${this._handleDatasetSelected}
31
+ @dataset-removed=${this._handleDatasetRemoved}
32
+ ></luzmo-dataset-selector-row>
31
33
 
32
- <textarea
33
- autofocus
34
- .placeholder=${this.placeholder}
35
- .value=${this._promptValue}
36
- @input=${this._handlePromptInput}
37
- @keydown=${this._handleKeyDown}
38
- rows="2"
39
- ></textarea>
34
+ <textarea
35
+ ?autofocus=${!this.disabled}
36
+ ?disabled=${this.disabled}
37
+ .placeholder=${this.placeholder}
38
+ .value=${this._promptValue}
39
+ @input=${this._handlePromptInput}
40
+ @keydown=${this._handleKeyDown}
41
+ rows="2"
42
+ ></textarea>
40
43
 
41
- <div class="button-container">
42
- <button
43
- class="btn btn-primary"
44
- ?disabled=${this._buttonDisabled}
45
- @click=${this._submitPrompt}
46
- >
47
- ${u.luzmoIcon(u.luzmoArrowRight)}
48
- </button>
44
+ <div class="button-container">
45
+ <button
46
+ class="btn btn-primary"
47
+ ?disabled=${this._buttonDisabled}
48
+ @click=${this._submitPrompt}
49
+ >
50
+ ${u.luzmoIcon(u.luzmoArrowRight)}
51
+ </button>
52
+ </div>
49
53
  </div>
50
- `}};exports.LuzmoAiInteractionTextarea.styles=l.unsafeCSS(m);exports.LuzmoAiInteractionTextarea.tagName="luzmo-ai-interaction-textarea";r([i.property({type:String})],exports.LuzmoAiInteractionTextarea.prototype,"placeholder",2);r([i.property({type:Array})],exports.LuzmoAiInteractionTextarea.prototype,"selectedDatasets",2);r([i.property({type:String,attribute:"auth-key"})],exports.LuzmoAiInteractionTextarea.prototype,"authKey",2);r([i.property({type:String,attribute:"auth-token"})],exports.LuzmoAiInteractionTextarea.prototype,"authToken",2);r([i.property({type:String,attribute:"api-url"})],exports.LuzmoAiInteractionTextarea.prototype,"apiUrl",2);r([i.property({type:String,attribute:"app-server"})],exports.LuzmoAiInteractionTextarea.prototype,"appServer",2);r([i.property({type:Boolean,attribute:"flag-opendata"})],exports.LuzmoAiInteractionTextarea.prototype,"flagOpendata",2);r([i.state()],exports.LuzmoAiInteractionTextarea.prototype,"_promptValue",2);r([i.state()],exports.LuzmoAiInteractionTextarea.prototype,"_isPromptValid",2);exports.LuzmoAiInteractionTextarea=r([d.localized()],exports.LuzmoAiInteractionTextarea);customElements.get("luzmo-ai-interaction-textarea")||customElements.define("luzmo-ai-interaction-textarea",exports.LuzmoAiInteractionTextarea);
54
+ `}};exports.LuzmoAiInteractionTextarea.styles=l.unsafeCSS(m);exports.LuzmoAiInteractionTextarea.tagName="luzmo-ai-interaction-textarea";e([o.property({type:String})],exports.LuzmoAiInteractionTextarea.prototype,"placeholder",2);e([o.property({type:Array})],exports.LuzmoAiInteractionTextarea.prototype,"selectedDatasets",2);e([o.property({type:String,attribute:"auth-key"})],exports.LuzmoAiInteractionTextarea.prototype,"authKey",2);e([o.property({type:String,attribute:"auth-token"})],exports.LuzmoAiInteractionTextarea.prototype,"authToken",2);e([o.property({type:String,attribute:"api-url"})],exports.LuzmoAiInteractionTextarea.prototype,"apiUrl",2);e([o.property({type:String,attribute:"app-server"})],exports.LuzmoAiInteractionTextarea.prototype,"appServer",2);e([o.property({type:Boolean,attribute:"flag-opendata"})],exports.LuzmoAiInteractionTextarea.prototype,"flagOpendata",2);e([o.property({type:Boolean,reflect:!0,attribute:"disabled"})],exports.LuzmoAiInteractionTextarea.prototype,"disabled",2);e([o.state()],exports.LuzmoAiInteractionTextarea.prototype,"_promptValue",2);e([o.state()],exports.LuzmoAiInteractionTextarea.prototype,"_isPromptValid",2);exports.LuzmoAiInteractionTextarea=e([d.localized()],exports.LuzmoAiInteractionTextarea);customElements.get("luzmo-ai-interaction-textarea")||customElements.define("luzmo-ai-interaction-textarea",exports.LuzmoAiInteractionTextarea);