@nanahoshi/mona-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/fesm2022/nanahoshi-mona-ui-auto-complete.mjs +11 -11
  2. package/fesm2022/nanahoshi-mona-ui-breadcrumb.mjs +17 -17
  3. package/fesm2022/nanahoshi-mona-ui-button-group.mjs +26 -26
  4. package/fesm2022/nanahoshi-mona-ui-button.mjs +109 -107
  5. package/fesm2022/nanahoshi-mona-ui-calendar.mjs +53 -53
  6. package/fesm2022/nanahoshi-mona-ui-check-box.mjs +80 -80
  7. package/fesm2022/nanahoshi-mona-ui-chip.mjs +98 -98
  8. package/fesm2022/nanahoshi-mona-ui-circular-progress-bar.mjs +2 -2
  9. package/fesm2022/nanahoshi-mona-ui-color-gradient.mjs +38 -38
  10. package/fesm2022/nanahoshi-mona-ui-color-palette.mjs +25 -25
  11. package/fesm2022/nanahoshi-mona-ui-color-picker.mjs +41 -37
  12. package/fesm2022/nanahoshi-mona-ui-combo-box.mjs +17 -19
  13. package/fesm2022/nanahoshi-mona-ui-date-input.mjs +6 -6
  14. package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +11 -13
  15. package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +18 -20
  16. package/fesm2022/nanahoshi-mona-ui-dialog.mjs +40 -40
  17. package/fesm2022/nanahoshi-mona-ui-dropdown-list.mjs +14 -16
  18. package/fesm2022/nanahoshi-mona-ui-dropdowns.mjs +52 -52
  19. package/fesm2022/nanahoshi-mona-ui-editor.mjs +462 -81
  20. package/fesm2022/nanahoshi-mona-ui-expansion-panel.mjs +26 -26
  21. package/fesm2022/nanahoshi-mona-ui-fieldset.mjs +8 -8
  22. package/fesm2022/nanahoshi-mona-ui-filter.mjs +14 -14
  23. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-cell.component-B9SQH5N-.mjs → nanahoshi-mona-ui-grid-grid-footer-cell.component-B2ETh-uI.mjs} +14 -14
  24. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DlLwcCFT.mjs → nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DZk18LJC.mjs} +2 -2
  25. package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-C7WKhhig.mjs +128 -0
  26. package/fesm2022/{nanahoshi-mona-ui-grid-grid-toggle.component-DIUutx9s.mjs → nanahoshi-mona-ui-grid-grid-toggle.component-BRiY0CDX.mjs} +13 -13
  27. package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-BrYpFMyF.mjs +240 -0
  28. package/fesm2022/{nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-C3eZIaJK.mjs → nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-T9Bj98kl.mjs} +120 -120
  29. package/fesm2022/nanahoshi-mona-ui-grid.mjs +1 -1
  30. package/fesm2022/nanahoshi-mona-ui-internal-list.mjs +81 -81
  31. package/fesm2022/nanahoshi-mona-ui-internal-tree.mjs +35 -35
  32. package/fesm2022/nanahoshi-mona-ui-list-box.mjs +8 -8
  33. package/fesm2022/nanahoshi-mona-ui-list-view.mjs +7 -7
  34. package/fesm2022/nanahoshi-mona-ui-menubar.mjs +50 -50
  35. package/fesm2022/nanahoshi-mona-ui-multi-select.mjs +12 -14
  36. package/fesm2022/nanahoshi-mona-ui-notification.mjs +24 -24
  37. package/fesm2022/nanahoshi-mona-ui-numeric-text-box.mjs +69 -69
  38. package/fesm2022/nanahoshi-mona-ui-pager.mjs +29 -29
  39. package/fesm2022/nanahoshi-mona-ui-placeholder.mjs +9 -9
  40. package/fesm2022/nanahoshi-mona-ui-popover.mjs +12 -12
  41. package/fesm2022/nanahoshi-mona-ui-popup-menu.mjs +26 -26
  42. package/fesm2022/nanahoshi-mona-ui-popup.mjs +4 -4
  43. package/fesm2022/nanahoshi-mona-ui-progress-bar.mjs +2 -2
  44. package/fesm2022/nanahoshi-mona-ui-radio-button.mjs +55 -55
  45. package/fesm2022/nanahoshi-mona-ui-scroll-view.mjs +49 -49
  46. package/fesm2022/nanahoshi-mona-ui-slider.mjs +96 -96
  47. package/fesm2022/nanahoshi-mona-ui-split-button.mjs +30 -30
  48. package/fesm2022/nanahoshi-mona-ui-splitter.mjs +24 -24
  49. package/fesm2022/nanahoshi-mona-ui-stepper.mjs +29 -29
  50. package/fesm2022/nanahoshi-mona-ui-switch.mjs +42 -42
  51. package/fesm2022/nanahoshi-mona-ui-tabs.mjs +35 -39
  52. package/fesm2022/nanahoshi-mona-ui-text-area.mjs +22 -22
  53. package/fesm2022/nanahoshi-mona-ui-text-box.mjs +54 -54
  54. package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +11 -19
  55. package/fesm2022/nanahoshi-mona-ui-time-selector.mjs +29 -29
  56. package/fesm2022/nanahoshi-mona-ui-tooltip.mjs +51 -51
  57. package/fesm2022/nanahoshi-mona-ui-tree-view.mjs +2 -2
  58. package/fesm2022/nanahoshi-mona-ui-window.mjs +27 -28
  59. package/package.json +30 -5
  60. package/types/nanahoshi-mona-ui-button.d.ts +4 -3
  61. package/types/nanahoshi-mona-ui-color-picker.d.ts +0 -3
  62. package/types/nanahoshi-mona-ui-dialog.d.ts +2 -2
  63. package/types/nanahoshi-mona-ui-editor.d.ts +17 -17
  64. package/types/nanahoshi-mona-ui-fieldset.d.ts +1 -1
  65. package/types/nanahoshi-mona-ui-filter.d.ts +2 -2
  66. package/types/nanahoshi-mona-ui-grid.d.ts +3 -3
  67. package/types/nanahoshi-mona-ui-internal-tree.d.ts +16 -16
  68. package/types/nanahoshi-mona-ui-menubar.d.ts +2 -2
  69. package/types/nanahoshi-mona-ui-stepper.d.ts +2 -2
  70. package/types/nanahoshi-mona-ui-tabs.d.ts +2 -2
  71. package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-Dgea-O0X.mjs +0 -130
  72. package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-DRHycGIh.mjs +0 -240
@@ -40,11 +40,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
40
40
  }]
41
41
  }] });
42
42
 
43
- const expansionPanelBaseVariants = cva(`
44
- block w-full bg-background overflow-hidden
45
- border border-border
46
- not-last:border-b-transparent not-last:rounded-b-none
47
- not-first:rounded-t-none relative
43
+ const expansionPanelBaseVariants = cva(`
44
+ block w-full bg-background overflow-hidden
45
+ border border-border text-foreground
46
+ not-last:border-b-transparent not-last:rounded-b-none
47
+ not-first:rounded-t-none relative
48
48
  `, {
49
49
  variants: {
50
50
  rounded: {
@@ -55,18 +55,18 @@ const expansionPanelBaseVariants = cva(`
55
55
  }
56
56
  }
57
57
  });
58
- const expansionPanelHeaderVariants = cva(`
59
- w-full flex items-center justify-between
60
- px-2 py-1
61
- bg-background-dark
62
- cursor-pointer
63
- font-medium
64
- text-foreground
65
- select-none
66
- transition-border-b duration-200
67
- focus-visible:outline-primary/40 focus-visible:border-b-transparent
68
- focus-visible:ring-1 focus-visible:ring-primary/40
69
- focus-visible:z-10 focus-visible:relative
58
+ const expansionPanelHeaderVariants = cva(`
59
+ w-full flex items-center justify-between
60
+ px-2 py-1
61
+ bg-background-dark
62
+ cursor-pointer
63
+ font-medium
64
+ text-foreground
65
+ select-none
66
+ transition-border-b duration-200
67
+ focus-visible:outline-primary/40 focus-visible:border-b-transparent
68
+ focus-visible:ring-1 focus-visible:ring-primary/40
69
+ focus-visible:z-10 focus-visible:relative
70
70
  `, {
71
71
  variants: {
72
72
  collapsed: {
@@ -79,8 +79,8 @@ const expansionPanelHeaderVariants = cva(`
79
79
  }
80
80
  }
81
81
  });
82
- const expansionPanelHeaderTitleVariants = cva(`
83
- p-1 flex-1
82
+ const expansionPanelHeaderTitleVariants = cva(`
83
+ p-1 flex-1
84
84
  `);
85
85
  const expansionPanelIconContainerVariants = cva(``, {
86
86
  variants: {
@@ -90,11 +90,11 @@ const expansionPanelIconContainerVariants = cva(``, {
90
90
  }
91
91
  }
92
92
  });
93
- const expansionPanelContentVariants = cva(`
94
- text-foreground
95
- grid
96
- transition-[grid-template-rows] duration-300 ease-out
97
- [&>div]:overflow-hidden
93
+ const expansionPanelContentVariants = cva(`
94
+ text-foreground
95
+ grid
96
+ transition-[grid-template-rows] duration-300 ease-out
97
+ [&>div]:overflow-hidden
98
98
  `, {
99
99
  variants: {
100
100
  expanded: {
@@ -222,13 +222,13 @@ class ExpansionPanelComponent {
222
222
  this.expanded.update(expanded => !expanded);
223
223
  }
224
224
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ExpansionPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ExpansionPanelComponent, isStandalone: true, selector: "mona-expansion-panel", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "userClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class": "baseClass()" } }, queries: [{ propertyName: "actionsTemplateList", predicate: ExpansionPanelActionsTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: ExpansionPanelIconTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "titleTemplate", first: true, predicate: ExpansionPanelTitleTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<div\r\n [class]=\"headerClass()\"\r\n role=\"button\"\r\n [attr.tabindex]=\"disabled() ? -1 : 0\"\r\n [attr.aria-expanded]=\"expanded()\"\r\n [attr.aria-controls]=\"contentId\"\r\n [attr.aria-disabled]=\"disabled() ? 'true' : undefined\"\r\n (click)=\"toggle()\"\r\n (keydown.enter)=\"$event.preventDefault(); toggle()\"\r\n (keydown.space)=\"$event.preventDefault(); toggle()\">\r\n <div [class]=\"headerTitleClass()\">\r\n @if (titleTemplate()) {\r\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\"></ng-container>\r\n } @else {\r\n {{ title() }}\r\n }\r\n </div>\r\n <div>\r\n @for (action of actionsTemplateList(); track $index) {\r\n <ng-container [ngTemplateOutlet]=\"action\"></ng-container>\r\n }\r\n </div>\r\n <div [class]=\"iconContainerClass()\">\r\n @if (iconTemplate()) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: expanded() }\"></ng-container>\r\n } @else {\r\n @if (expanded()) {\r\n <svg lucideMinus [size]=\"14\"></svg>\r\n } @else {\r\n <svg lucidePlus [size]=\"14\"></svg>\r\n }\r\n }\r\n </div>\r\n</div>\r\n<div\r\n [id]=\"contentId\"\r\n [class]=\"contentClass()\"\r\n [attr.aria-hidden]=\"!expanded()\"\r\n [attr.inert]=\"!expanded() ? true : undefined\">\r\n <div>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LucideMinus, selector: "svg[lucideMinus]" }, { kind: "component", type: LucidePlus, selector: "svg[lucidePlus]" }] }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ExpansionPanelComponent, isStandalone: true, selector: "mona-expansion-panel", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "userClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class": "baseClass()" } }, queries: [{ propertyName: "actionsTemplateList", predicate: ExpansionPanelActionsTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: ExpansionPanelIconTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "titleTemplate", first: true, predicate: ExpansionPanelTitleTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<div\n [class]=\"headerClass()\"\n role=\"button\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-disabled]=\"disabled() ? 'true' : undefined\"\n (click)=\"toggle()\"\n (keydown.enter)=\"$event.preventDefault(); toggle()\"\n (keydown.space)=\"$event.preventDefault(); toggle()\">\n <div [class]=\"headerTitleClass()\">\n @if (titleTemplate()) {\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\"></ng-container>\n } @else {\n {{ title() }}\n }\n </div>\n <div>\n @for (action of actionsTemplateList(); track $index) {\n <ng-container [ngTemplateOutlet]=\"action\"></ng-container>\n }\n </div>\n <div [class]=\"iconContainerClass()\">\n @if (iconTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: expanded() }\"></ng-container>\n } @else {\n @if (expanded()) {\n <svg lucideMinus [size]=\"14\"></svg>\n } @else {\n <svg lucidePlus [size]=\"14\"></svg>\n }\n }\n </div>\n</div>\n<div\n [id]=\"contentId\"\n [class]=\"contentClass()\"\n [attr.aria-hidden]=\"!expanded()\"\n [attr.inert]=\"!expanded() ? true : undefined\">\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LucideMinus, selector: "svg[lucideMinus]" }, { kind: "component", type: LucidePlus, selector: "svg[lucidePlus]" }] }); }
226
226
  }
227
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ExpansionPanelComponent, decorators: [{
228
228
  type: Component,
229
229
  args: [{ selector: "mona-expansion-panel", imports: [NgTemplateOutlet, LucideMinus, LucidePlus], host: {
230
230
  "[class]": "baseClass()"
231
- }, template: "<div\r\n [class]=\"headerClass()\"\r\n role=\"button\"\r\n [attr.tabindex]=\"disabled() ? -1 : 0\"\r\n [attr.aria-expanded]=\"expanded()\"\r\n [attr.aria-controls]=\"contentId\"\r\n [attr.aria-disabled]=\"disabled() ? 'true' : undefined\"\r\n (click)=\"toggle()\"\r\n (keydown.enter)=\"$event.preventDefault(); toggle()\"\r\n (keydown.space)=\"$event.preventDefault(); toggle()\">\r\n <div [class]=\"headerTitleClass()\">\r\n @if (titleTemplate()) {\r\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\"></ng-container>\r\n } @else {\r\n {{ title() }}\r\n }\r\n </div>\r\n <div>\r\n @for (action of actionsTemplateList(); track $index) {\r\n <ng-container [ngTemplateOutlet]=\"action\"></ng-container>\r\n }\r\n </div>\r\n <div [class]=\"iconContainerClass()\">\r\n @if (iconTemplate()) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: expanded() }\"></ng-container>\r\n } @else {\r\n @if (expanded()) {\r\n <svg lucideMinus [size]=\"14\"></svg>\r\n } @else {\r\n <svg lucidePlus [size]=\"14\"></svg>\r\n }\r\n }\r\n </div>\r\n</div>\r\n<div\r\n [id]=\"contentId\"\r\n [class]=\"contentClass()\"\r\n [attr.aria-hidden]=\"!expanded()\"\r\n [attr.inert]=\"!expanded() ? true : undefined\">\r\n <div>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n" }]
231
+ }, template: "<div\n [class]=\"headerClass()\"\n role=\"button\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-disabled]=\"disabled() ? 'true' : undefined\"\n (click)=\"toggle()\"\n (keydown.enter)=\"$event.preventDefault(); toggle()\"\n (keydown.space)=\"$event.preventDefault(); toggle()\">\n <div [class]=\"headerTitleClass()\">\n @if (titleTemplate()) {\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\"></ng-container>\n } @else {\n {{ title() }}\n }\n </div>\n <div>\n @for (action of actionsTemplateList(); track $index) {\n <ng-container [ngTemplateOutlet]=\"action\"></ng-container>\n }\n </div>\n <div [class]=\"iconContainerClass()\">\n @if (iconTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: expanded() }\"></ng-container>\n } @else {\n @if (expanded()) {\n <svg lucideMinus [size]=\"14\"></svg>\n } @else {\n <svg lucidePlus [size]=\"14\"></svg>\n }\n }\n </div>\n</div>\n<div\n [id]=\"contentId\"\n [class]=\"contentClass()\"\n [attr.aria-hidden]=\"!expanded()\"\n [attr.inert]=\"!expanded() ? true : undefined\">\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n" }]
232
232
  }], propDecorators: { actionsTemplateList: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ExpansionPanelActionsTemplateDirective), { ...{
233
233
  read: TemplateRef
234
234
  }, isSignal: true }] }], iconTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ExpansionPanelIconTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], titleTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ExpansionPanelTitleTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "userClass", required: false }] }] } });
@@ -16,13 +16,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
16
16
  }]
17
17
  }] });
18
18
 
19
- const fieldsetBaseVariants = cva(`
20
- block
19
+ const fieldsetBaseVariants = cva(`
20
+ block
21
21
  `);
22
- const fieldsetVariants = cva(`
23
- bg-background
24
- border border-border
25
- text-foreground
22
+ const fieldsetVariants = cva(`
23
+ bg-background
24
+ border border-border
25
+ text-foreground
26
26
  `, {
27
27
  variants: {
28
28
  rounded: {
@@ -41,8 +41,8 @@ const fieldsetVariants = cva(`
41
41
  disabled: false
42
42
  }
43
43
  });
44
- const fieldsetLegendVariants = cva(`
45
- ml-2
44
+ const fieldsetLegendVariants = cva(`
45
+ ml-2
46
46
  `, {
47
47
  variants: {
48
48
  hasTemplate: {
@@ -219,11 +219,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
219
219
  type: Injectable
220
220
  }] });
221
221
 
222
- const filterMenuBaseVariants = cva(`
223
- w-full flex flex-col
224
- p-1 gap-2
225
- bg-background-dark border border-border
226
- shadow-lg
222
+ const filterMenuBaseVariants = cva(`
223
+ w-full flex flex-col
224
+ p-1 gap-2
225
+ bg-background-dark text-foreground border border-border
226
+ shadow-lg
227
227
  `, {
228
228
  variants: {
229
229
  rounded: {
@@ -239,14 +239,14 @@ const filterMenuBaseVariants = cva(`
239
239
  }
240
240
  }
241
241
  });
242
- const filterMenuItemVariants = cva(`
243
- flex flex-col gap-1
244
- [&>mona-button-group>button]:flex-1
242
+ const filterMenuItemVariants = cva(`
243
+ flex flex-col gap-1
244
+ [&>mona-button-group>button]:flex-1
245
245
  `);
246
- const filterMenuActionVariants = cva(`
247
- flex flex-row
248
- items-center justify-center
249
- gap-1 [&>button]:flex-1
246
+ const filterMenuActionVariants = cva(`
247
+ flex flex-row
248
+ items-center justify-center
249
+ gap-1 [&>button]:flex-1
250
250
  `);
251
251
 
252
252
  const filterMenuBaseThemeVariants = (theme) => {
@@ -649,7 +649,7 @@ class FilterMenuComponent {
649
649
  }
650
650
  }
651
651
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: FilterMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
652
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: FilterMenuComponent, isStandalone: true, selector: "mona-filter-menu", inputs: { dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, operators: { classPropertyName: "operators", publicName: "operators", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply", field: "fieldChange", operators: "operatorsChange", type: "typeChange", value: "valueChange" }, host: { properties: { "class": "baseClass()" } }, ngImport: i0, template: "<div [class]=\"filterMenuItemClass()\">\r\n @if (type() === \"string\") {\r\n <mona-dropdown-list\r\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n <mona-text-box\r\n [ngModel]=\"stringFilterValues()[0]\"\r\n (ngModelChange)=\"stringFilterValues.set([$event, stringFilterValues()[1]])\"\r\n [size]=\"size()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-text-box>\r\n }\r\n\r\n @if (type() === \"number\") {\r\n <mona-dropdown-list\r\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n <mona-numeric-text-box\r\n [ngModel]=\"numberFilterValues()[0]\"\r\n (ngModelChange)=\"numberFilterValues.set([$event, numberFilterValues()[1]])\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-numeric-text-box>\r\n }\r\n\r\n @if (type() === \"date\") {\r\n <mona-dropdown-list\r\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n\r\n @if (type() === \"date\") {\r\n <mona-date-picker\r\n [ngModel]=\"dateFilterValues()[0]\"\r\n (ngModelChange)=\"dateFilterValues.set([$event, dateFilterValues()[1]])\"\r\n [format]=\"effectiveDateOptions().format\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-date-picker>\r\n }\r\n }\r\n\r\n @if (type() === \"boolean\") {\r\n <mona-dropdown-list\r\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n }\r\n</div>\r\n@if (firstFilterValid()) {\r\n <div [class]=\"filterMenuItemClass()\">\r\n <mona-button-group selection=\"single\" [size]=\"size()\" [rounded]=\"rounded()\" [disabled]=\"!firstFilterValid()\">\r\n @for (item of connectorDataItems; track item) {\r\n <button\r\n monaButton\r\n [selected]=\"item.value === selectedConnectorItem()?.value\"\r\n (selectedChange)=\"onConnectorChange(item, $event)\">\r\n {{ item.text }}\r\n </button>\r\n }\r\n </mona-button-group>\r\n </div>\r\n}\r\n@if (!!selectedConnectorItem()) {\r\n <div [class]=\"filterMenuItemClass()\">\r\n @if (type() === \"string\") {\r\n <mona-dropdown-list\r\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n <mona-text-box\r\n [ngModel]=\"stringFilterValues()[1]\"\r\n (ngModelChange)=\"stringFilterValues.set([stringFilterValues()[0], $event])\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-text-box>\r\n }\r\n\r\n @if (type() === \"number\") {\r\n <mona-dropdown-list\r\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n\r\n <mona-numeric-text-box\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"numberFilterValues()[1]\"\r\n (ngModelChange)=\"numberFilterValues.set([numberFilterValues()[0], $event])\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-numeric-text-box>\r\n }\r\n\r\n @if (type() === \"date\") {\r\n <mona-dropdown-list\r\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n\r\n @if (type() === \"date\") {\r\n <mona-date-picker\r\n [ngModel]=\"dateFilterValues()[1]\"\r\n (ngModelChange)=\"dateFilterValues.set([dateFilterValues()[0], $event])\"\r\n [format]=\"effectiveDateOptions().format\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-date-picker>\r\n }\r\n }\r\n\r\n @if (type() === \"boolean\") {\r\n <mona-dropdown-list\r\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n }\r\n </div>\r\n}\r\n<div [class]=\"`${filterMenuItemClass()} ${filterMenuActionsClass()}`\">\r\n <button\r\n monaButton\r\n (click)=\"onFilterApply()\"\r\n [look]=\"'primary'\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"applyDisabled()\">\r\n Apply\r\n </button>\r\n <button monaButton (click)=\"onFilterClear()\" [look]=\"'default'\" [size]=\"size()\" [rounded]=\"rounded()\">Clear</button>\r\n</div>\r\n", dependencies: [{ kind: "component", type: DropdownListComponent, selector: "mona-dropdown-list", inputs: ["aria-label", "aria-labelledby", "data", "disabled", "itemDisabled", "invalid", "loading", "placeholder", "popupClass", "popupHeight", "popupWidth", "readonly", "required", "rounded", "showClearButton", "size", "textField", "touched", "class", "valueField", "value"], outputs: ["close", "closed", "disabledChange", "open", "opened", "touch", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextBoxComponent, selector: "mona-text-box", inputs: ["clearButton", "disabled", "inputAttributes", "inputClass", "inputStyle", "invalid", "placeholder", "readonly", "required", "rounded", "size", "touched", "type", "class", "value"], outputs: ["inputBlur", "inputFocus", "touch", "valueChange"] }, { kind: "component", type: NumericTextBoxComponent, selector: "mona-numeric-text-box", inputs: ["aria-label", "decimals", "disabled", "formatter", "maxValue", "minValue", "nullable", "readonly", "required", "invalid", "rounded", "size", "spinners", "step", "tabindex", "touched", "class", "value"], outputs: ["inputBlur", "inputFocus", "inputFocusOut", "touch", "valueChange"] }, { kind: "component", type: DatePickerComponent, selector: "mona-date-picker", inputs: ["disabled", "disabledDates", "firstDay", "format", "invalid", "max", "min", "placeholder", "popupClass", "popupHeight", "popupWidth", "readonly", "readonlyInput", "required", "rounded", "showClearButton", "size", "touched", "class", "value", "weekNumber"], outputs: ["close", "closed", "open", "opened", "touch", "valueChange"] }, { kind: "component", type: ButtonGroupComponent, selector: "mona-button-group", inputs: ["allowEmpty", "aria-label", "disabled", "look", "rounded", "selection", "size", "class"], outputs: ["buttonClick", "disabledChange", "selectionChange"] }, { kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "pipe", type: ValuelessOperatorPipe, name: "valuelessOperator" }, { kind: "pipe", type: OperatorFilterPipe, name: "operatorFilter" }] }); }
652
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: FilterMenuComponent, isStandalone: true, selector: "mona-filter-menu", inputs: { dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, operators: { classPropertyName: "operators", publicName: "operators", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply", field: "fieldChange", operators: "operatorsChange", type: "typeChange", value: "valueChange" }, host: { properties: { "class": "baseClass()" } }, ngImport: i0, template: "<div [class]=\"filterMenuItemClass()\">\n @if (type() === \"string\") {\n <mona-dropdown-list\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n <mona-text-box\n [ngModel]=\"stringFilterValues()[0]\"\n (ngModelChange)=\"stringFilterValues.set([$event, stringFilterValues()[1]])\"\n [size]=\"size()\"\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-text-box>\n }\n\n @if (type() === \"number\") {\n <mona-dropdown-list\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n <mona-numeric-text-box\n [ngModel]=\"numberFilterValues()[0]\"\n (ngModelChange)=\"numberFilterValues.set([$event, numberFilterValues()[1]])\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-numeric-text-box>\n }\n\n @if (type() === \"date\") {\n <mona-dropdown-list\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n\n @if (type() === \"date\") {\n <mona-date-picker\n [ngModel]=\"dateFilterValues()[0]\"\n (ngModelChange)=\"dateFilterValues.set([$event, dateFilterValues()[1]])\"\n [format]=\"effectiveDateOptions().format\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-date-picker>\n }\n }\n\n @if (type() === \"boolean\") {\n <mona-dropdown-list\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n }\n</div>\n@if (firstFilterValid()) {\n <div [class]=\"filterMenuItemClass()\">\n <mona-button-group selection=\"single\" [size]=\"size()\" [rounded]=\"rounded()\" [disabled]=\"!firstFilterValid()\">\n @for (item of connectorDataItems; track item) {\n <button\n monaButton\n [selected]=\"item.value === selectedConnectorItem()?.value\"\n (selectedChange)=\"onConnectorChange(item, $event)\">\n {{ item.text }}\n </button>\n }\n </mona-button-group>\n </div>\n}\n@if (!!selectedConnectorItem()) {\n <div [class]=\"filterMenuItemClass()\">\n @if (type() === \"string\") {\n <mona-dropdown-list\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n <mona-text-box\n [ngModel]=\"stringFilterValues()[1]\"\n (ngModelChange)=\"stringFilterValues.set([stringFilterValues()[0], $event])\"\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-text-box>\n }\n\n @if (type() === \"number\") {\n <mona-dropdown-list\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n\n <mona-numeric-text-box\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"numberFilterValues()[1]\"\n (ngModelChange)=\"numberFilterValues.set([numberFilterValues()[0], $event])\"\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-numeric-text-box>\n }\n\n @if (type() === \"date\") {\n <mona-dropdown-list\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n\n @if (type() === \"date\") {\n <mona-date-picker\n [ngModel]=\"dateFilterValues()[1]\"\n (ngModelChange)=\"dateFilterValues.set([dateFilterValues()[0], $event])\"\n [format]=\"effectiveDateOptions().format\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-date-picker>\n }\n }\n\n @if (type() === \"boolean\") {\n <mona-dropdown-list\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n }\n </div>\n}\n<div [class]=\"`${filterMenuItemClass()} ${filterMenuActionsClass()}`\">\n <button\n monaButton\n (click)=\"onFilterApply()\"\n [look]=\"'primary'\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"applyDisabled()\">\n Apply\n </button>\n <button monaButton (click)=\"onFilterClear()\" [look]=\"'default'\" [size]=\"size()\" [rounded]=\"rounded()\">Clear</button>\n</div>\n", dependencies: [{ kind: "component", type: DropdownListComponent, selector: "mona-dropdown-list", inputs: ["aria-label", "aria-labelledby", "data", "disabled", "itemDisabled", "invalid", "loading", "placeholder", "popupClass", "popupHeight", "popupWidth", "readonly", "required", "rounded", "showClearButton", "size", "textField", "touched", "class", "valueField", "value"], outputs: ["close", "closed", "disabledChange", "open", "opened", "touch", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextBoxComponent, selector: "mona-text-box", inputs: ["clearButton", "disabled", "inputAttributes", "inputClass", "inputStyle", "invalid", "placeholder", "readonly", "required", "rounded", "size", "touched", "type", "class", "value"], outputs: ["inputBlur", "inputFocus", "touch", "valueChange"] }, { kind: "component", type: NumericTextBoxComponent, selector: "mona-numeric-text-box", inputs: ["aria-label", "decimals", "disabled", "formatter", "maxValue", "minValue", "nullable", "readonly", "required", "invalid", "rounded", "size", "spinners", "step", "tabindex", "touched", "class", "value"], outputs: ["inputBlur", "inputFocus", "inputFocusOut", "touch", "valueChange"] }, { kind: "component", type: DatePickerComponent, selector: "mona-date-picker", inputs: ["disabled", "disabledDates", "firstDay", "format", "invalid", "max", "min", "placeholder", "popupClass", "popupHeight", "popupWidth", "readonly", "readonlyInput", "required", "rounded", "showClearButton", "size", "touched", "class", "value", "weekNumber"], outputs: ["close", "closed", "open", "opened", "touch", "valueChange"] }, { kind: "component", type: ButtonGroupComponent, selector: "mona-button-group", inputs: ["allowEmpty", "aria-label", "disabled", "look", "rounded", "selection", "size", "class"], outputs: ["buttonClick", "disabledChange", "selectionChange"] }, { kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "pipe", type: ValuelessOperatorPipe, name: "valuelessOperator" }, { kind: "pipe", type: OperatorFilterPipe, name: "operatorFilter" }] }); }
653
653
  }
654
654
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: FilterMenuComponent, decorators: [{
655
655
  type: Component,
@@ -665,7 +665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
665
665
  OperatorFilterPipe
666
666
  ], host: {
667
667
  "[class]": "baseClass()"
668
- }, template: "<div [class]=\"filterMenuItemClass()\">\r\n @if (type() === \"string\") {\r\n <mona-dropdown-list\r\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n <mona-text-box\r\n [ngModel]=\"stringFilterValues()[0]\"\r\n (ngModelChange)=\"stringFilterValues.set([$event, stringFilterValues()[1]])\"\r\n [size]=\"size()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-text-box>\r\n }\r\n\r\n @if (type() === \"number\") {\r\n <mona-dropdown-list\r\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n <mona-numeric-text-box\r\n [ngModel]=\"numberFilterValues()[0]\"\r\n (ngModelChange)=\"numberFilterValues.set([$event, numberFilterValues()[1]])\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-numeric-text-box>\r\n }\r\n\r\n @if (type() === \"date\") {\r\n <mona-dropdown-list\r\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n\r\n @if (type() === \"date\") {\r\n <mona-date-picker\r\n [ngModel]=\"dateFilterValues()[0]\"\r\n (ngModelChange)=\"dateFilterValues.set([$event, dateFilterValues()[1]])\"\r\n [format]=\"effectiveDateOptions().format\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-date-picker>\r\n }\r\n }\r\n\r\n @if (type() === \"boolean\") {\r\n <mona-dropdown-list\r\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\r\n }\r\n</div>\r\n@if (firstFilterValid()) {\r\n <div [class]=\"filterMenuItemClass()\">\r\n <mona-button-group selection=\"single\" [size]=\"size()\" [rounded]=\"rounded()\" [disabled]=\"!firstFilterValid()\">\r\n @for (item of connectorDataItems; track item) {\r\n <button\r\n monaButton\r\n [selected]=\"item.value === selectedConnectorItem()?.value\"\r\n (selectedChange)=\"onConnectorChange(item, $event)\">\r\n {{ item.text }}\r\n </button>\r\n }\r\n </mona-button-group>\r\n </div>\r\n}\r\n@if (!!selectedConnectorItem()) {\r\n <div [class]=\"filterMenuItemClass()\">\r\n @if (type() === \"string\") {\r\n <mona-dropdown-list\r\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n <mona-text-box\r\n [ngModel]=\"stringFilterValues()[1]\"\r\n (ngModelChange)=\"stringFilterValues.set([stringFilterValues()[0], $event])\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-text-box>\r\n }\r\n\r\n @if (type() === \"number\") {\r\n <mona-dropdown-list\r\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n\r\n <mona-numeric-text-box\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"numberFilterValues()[1]\"\r\n (ngModelChange)=\"numberFilterValues.set([numberFilterValues()[0], $event])\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-numeric-text-box>\r\n }\r\n\r\n @if (type() === \"date\") {\r\n <mona-dropdown-list\r\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n\r\n @if (type() === \"date\") {\r\n <mona-date-picker\r\n [ngModel]=\"dateFilterValues()[1]\"\r\n (ngModelChange)=\"dateFilterValues.set([dateFilterValues()[0], $event])\"\r\n [format]=\"effectiveDateOptions().format\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-date-picker>\r\n }\r\n }\r\n\r\n @if (type() === \"boolean\") {\r\n <mona-dropdown-list\r\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\r\n textField=\"text\"\r\n valueField=\"value\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\r\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\r\n }\r\n </div>\r\n}\r\n<div [class]=\"`${filterMenuItemClass()} ${filterMenuActionsClass()}`\">\r\n <button\r\n monaButton\r\n (click)=\"onFilterApply()\"\r\n [look]=\"'primary'\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [disabled]=\"applyDisabled()\">\r\n Apply\r\n </button>\r\n <button monaButton (click)=\"onFilterClear()\" [look]=\"'default'\" [size]=\"size()\" [rounded]=\"rounded()\">Clear</button>\r\n</div>\r\n" }]
668
+ }, template: "<div [class]=\"filterMenuItemClass()\">\n @if (type() === \"string\") {\n <mona-dropdown-list\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n <mona-text-box\n [ngModel]=\"stringFilterValues()[0]\"\n (ngModelChange)=\"stringFilterValues.set([$event, stringFilterValues()[1]])\"\n [size]=\"size()\"\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-text-box>\n }\n\n @if (type() === \"number\") {\n <mona-dropdown-list\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n <mona-numeric-text-box\n [ngModel]=\"numberFilterValues()[0]\"\n (ngModelChange)=\"numberFilterValues.set([$event, numberFilterValues()[1]])\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-numeric-text-box>\n }\n\n @if (type() === \"date\") {\n <mona-dropdown-list\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n\n @if (type() === \"date\") {\n <mona-date-picker\n [ngModel]=\"dateFilterValues()[0]\"\n (ngModelChange)=\"dateFilterValues.set([$event, dateFilterValues()[1]])\"\n [format]=\"effectiveDateOptions().format\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"selectedFilterMenuDataItemList()[0]?.value | valuelessOperator\"></mona-date-picker>\n }\n }\n\n @if (type() === \"boolean\") {\n <mona-dropdown-list\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [ngModel]=\"selectedFilterMenuDataItemList()[0]\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n (ngModelChange)=\"onFilterOperatorChange(0, $event)\"></mona-dropdown-list>\n }\n</div>\n@if (firstFilterValid()) {\n <div [class]=\"filterMenuItemClass()\">\n <mona-button-group selection=\"single\" [size]=\"size()\" [rounded]=\"rounded()\" [disabled]=\"!firstFilterValid()\">\n @for (item of connectorDataItems; track item) {\n <button\n monaButton\n [selected]=\"item.value === selectedConnectorItem()?.value\"\n (selectedChange)=\"onConnectorChange(item, $event)\">\n {{ item.text }}\n </button>\n }\n </mona-button-group>\n </div>\n}\n@if (!!selectedConnectorItem()) {\n <div [class]=\"filterMenuItemClass()\">\n @if (type() === \"string\") {\n <mona-dropdown-list\n [data]=\"stringFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n <mona-text-box\n [ngModel]=\"stringFilterValues()[1]\"\n (ngModelChange)=\"stringFilterValues.set([stringFilterValues()[0], $event])\"\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-text-box>\n }\n\n @if (type() === \"number\") {\n <mona-dropdown-list\n [data]=\"numericFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n\n <mona-numeric-text-box\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"numberFilterValues()[1]\"\n (ngModelChange)=\"numberFilterValues.set([numberFilterValues()[0], $event])\"\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-numeric-text-box>\n }\n\n @if (type() === \"date\") {\n <mona-dropdown-list\n [data]=\"dateFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n\n @if (type() === \"date\") {\n <mona-date-picker\n [ngModel]=\"dateFilterValues()[1]\"\n (ngModelChange)=\"dateFilterValues.set([dateFilterValues()[0], $event])\"\n [format]=\"effectiveDateOptions().format\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"selectedFilterMenuDataItemList()[1]?.value | valuelessOperator\"></mona-date-picker>\n }\n }\n\n @if (type() === \"boolean\") {\n <mona-dropdown-list\n [data]=\"booleanFilterMenuDataItems | operatorFilter: operators()\"\n textField=\"text\"\n valueField=\"value\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [ngModel]=\"selectedFilterMenuDataItemList()[1]\"\n (ngModelChange)=\"onFilterOperatorChange(1, $event)\"></mona-dropdown-list>\n }\n </div>\n}\n<div [class]=\"`${filterMenuItemClass()} ${filterMenuActionsClass()}`\">\n <button\n monaButton\n (click)=\"onFilterApply()\"\n [look]=\"'primary'\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [disabled]=\"applyDisabled()\">\n Apply\n </button>\n <button monaButton (click)=\"onFilterClear()\" [look]=\"'default'\" [size]=\"size()\" [rounded]=\"rounded()\">Clear</button>\n</div>\n" }]
669
669
  }], ctorParameters: () => [], propDecorators: { apply: [{ type: i0.Output, args: ["apply"] }], dateOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateOptions", required: false }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }, { type: i0.Output, args: ["fieldChange"] }], operators: [{ type: i0.Input, args: [{ isSignal: true, alias: "operators", required: false }] }, { type: i0.Output, args: ["operatorsChange"] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }, { type: i0.Output, args: ["typeChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
670
670
 
671
671
  /*
@@ -2,7 +2,7 @@ import { NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, computed, input, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { ImmutableDictionary } from '@mirei/ts-collections';
5
- import { c as GridService } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-C3eZIaJK.mjs';
5
+ import { c as GridService } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-T9Bj98kl.mjs';
6
6
 
7
7
  class GridFooterCellComponent {
8
8
  constructor() {
@@ -77,24 +77,24 @@ class GridFooterCellComponent {
77
77
  }
78
78
  #gridService;
79
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: GridFooterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: GridFooterCellComponent, isStandalone: true, selector: "mona-grid-footer-cell", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, columnIndex: { classPropertyName: "columnIndex", publicName: "columnIndex", isSignal: true, isRequired: true, transformFunction: null }, groupKey: { classPropertyName: "groupKey", publicName: "groupKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
81
- @if (templateRef(); as templateRef) {
82
- <ng-container [ngTemplateOutlet]="templateRef" [ngTemplateOutletContext]="templateContext()"></ng-container>
83
- } @else if (displayValue() != null) {
84
- <span class="block truncate font-medium">{{ displayValue() }}</span>
85
- }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: GridFooterCellComponent, isStandalone: true, selector: "mona-grid-footer-cell", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, columnIndex: { classPropertyName: "columnIndex", publicName: "columnIndex", isSignal: true, isRequired: true, transformFunction: null }, groupKey: { classPropertyName: "groupKey", publicName: "groupKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
81
+ @if (templateRef(); as templateRef) {
82
+ <ng-container [ngTemplateOutlet]="templateRef" [ngTemplateOutletContext]="templateContext()"></ng-container>
83
+ } @else if (displayValue() != null) {
84
+ <span class="block truncate font-medium">{{ displayValue() }}</span>
85
+ }
86
86
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
87
87
  }
88
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: GridFooterCellComponent, decorators: [{
89
89
  type: Component,
90
90
  args: [{
91
91
  selector: "mona-grid-footer-cell",
92
- template: `
93
- @if (templateRef(); as templateRef) {
94
- <ng-container [ngTemplateOutlet]="templateRef" [ngTemplateOutletContext]="templateContext()"></ng-container>
95
- } @else if (displayValue() != null) {
96
- <span class="block truncate font-medium">{{ displayValue() }}</span>
97
- }
92
+ template: `
93
+ @if (templateRef(); as templateRef) {
94
+ <ng-container [ngTemplateOutlet]="templateRef" [ngTemplateOutletContext]="templateContext()"></ng-container>
95
+ } @else if (displayValue() != null) {
96
+ <span class="block truncate font-medium">{{ displayValue() }}</span>
97
+ }
98
98
  `,
99
99
  changeDetection: ChangeDetectionStrategy.OnPush,
100
100
  imports: [NgTemplateOutlet]
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
102
102
  }], propDecorators: { column: [{ type: i0.Input, args: [{ isSignal: true, alias: "column", required: true }] }], columnIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnIndex", required: true }] }], groupKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupKey", required: false }] }] } });
103
103
 
104
104
  export { GridFooterCellComponent };
105
- //# sourceMappingURL=nanahoshi-mona-ui-grid-grid-footer-cell.component-B9SQH5N-.mjs.map
105
+ //# sourceMappingURL=nanahoshi-mona-ui-grid-grid-footer-cell.component-B2ETh-uI.mjs.map
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, computed, input, Directive } from '@angular/core';
3
3
  import { ThemeService } from '@nanahoshi/mona-ui/theme';
4
- import { v as gridFooterTableCellThemeVariants } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-C3eZIaJK.mjs';
4
+ import { v as gridFooterTableCellThemeVariants } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-T9Bj98kl.mjs';
5
5
 
6
6
  class GridFooterTableCellDirective {
7
7
  constructor() {
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
39
39
  }], propDecorators: { footerCellMinWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerCellMinWidth", required: false }] }], footerCellWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerCellWidth", required: false }] }], footerColumn: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerColumn", required: false }] }] } });
40
40
 
41
41
  export { GridFooterTableCellDirective };
42
- //# sourceMappingURL=nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DlLwcCFT.mjs.map
42
+ //# sourceMappingURL=nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DZk18LJC.mjs.map
@@ -0,0 +1,128 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, DestroyRef, ElementRef, viewChild, computed, input, afterNextRender, Component } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { ImmutableList, ImmutableSet, span } from '@mirei/ts-collections';
6
+ import { SlicePipe } from '@nanahoshi/mona-ui/common';
7
+ import { ContextMenuComponent } from '@nanahoshi/mona-ui/contextmenu';
8
+ import { ThemeService } from '@nanahoshi/mona-ui/theme';
9
+ import { fromEvent } from 'rxjs';
10
+ import { G as GridAddRowComponent, a as GridCellComponent, b as GridRowDirective, c as GridCellDirective, d as GridDetailRowDirective, e as GridDetailIndentCellDirective, f as GridDetailContentCellDirective, g as GridToggleComponent } from './nanahoshi-mona-ui-grid-grid-toggle.component-BRiY0CDX.mjs';
11
+ import { GridFooterTableCellDirective } from './nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DZk18LJC.mjs';
12
+ import { G as GridNavigationService, a as GridRowFlattenerService, g as gridListBaseThemeVariants, b as gridFooterTableRowThemeVariants, c as GridService, d as gridGroupRowThemeVariants, e as gridListTableThemeVariants, f as GridLogicalCellDirective, h as GridLockedCellDirective } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-T9Bj98kl.mjs';
13
+ import { GridFooterCellComponent } from './nanahoshi-mona-ui-grid-grid-footer-cell.component-B2ETh-uI.mjs';
14
+
15
+ class GridListComponent {
16
+ #destroyRef;
17
+ #gridNavigationService;
18
+ #hostElementRef;
19
+ #rowFlattener;
20
+ #themeService;
21
+ constructor() {
22
+ this.#destroyRef = inject(DestroyRef);
23
+ this.#gridNavigationService = inject(GridNavigationService);
24
+ this.#hostElementRef = inject((ElementRef));
25
+ this.#rowFlattener = inject(GridRowFlattenerService);
26
+ this.#themeService = inject(ThemeService);
27
+ this.bodyTableElementRef = viewChild.required("bodyTable", /* @ts-ignore */
28
+ ...(ngDevMode ? [{ debugName: "bodyTableElementRef" }] : /* istanbul ignore next */ []));
29
+ this.baseClass = computed(() => {
30
+ const theme = this.#themeService.theme();
31
+ return gridListBaseThemeVariants(theme)({ virtual: false });
32
+ }, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "baseClass" }] : /* istanbul ignore next */ []));
34
+ this.flattenedGroupedRows = computed(() => {
35
+ const groupColumns = this.gridService.groupColumns();
36
+ if (groupColumns.length === 0) {
37
+ return [];
38
+ }
39
+ const collapsedKeys = new Set(this.gridService.collapsedGroupKeys());
40
+ const groupAggregateDict = this.gridService.groupAggregateMap().toDictionary(e => e.key, e => e.value);
41
+ const showFooter = this.gridService.groupableOptions().showFooter;
42
+ return this.#rowFlattener.flatten(this.data(), groupColumns, collapsedKeys, showFooter, groupAggregateDict);
43
+ }, /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "flattenedGroupedRows" }] : /* istanbul ignore next */ []));
45
+ this.footerTableRowClass = computed(() => {
46
+ const theme = this.#themeService.theme();
47
+ return gridFooterTableRowThemeVariants(theme)();
48
+ }, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "footerTableRowClass" }] : /* istanbul ignore next */ []));
50
+ this.gridService = inject(GridService);
51
+ this.groupRowClass = computed(() => {
52
+ const theme = this.#themeService.theme();
53
+ return gridGroupRowThemeVariants(theme)();
54
+ }, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "groupRowClass" }] : /* istanbul ignore next */ []));
56
+ this.tableClass = computed(() => {
57
+ const theme = this.#themeService.theme();
58
+ return gridListTableThemeVariants(theme)();
59
+ }, /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "tableClass" }] : /* istanbul ignore next */ []));
61
+ this.columns = input(ImmutableList.create(), /* @ts-ignore */
62
+ ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
63
+ this.data = input(ImmutableSet.create(), /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
65
+ this.span = span;
66
+ afterNextRender({
67
+ read: () => {
68
+ const bodyTableElement = this.bodyTableElementRef().nativeElement;
69
+ const bodyScrollElement = this.#hostElementRef.nativeElement;
70
+ this.gridService.bodyTableElement.set(bodyTableElement);
71
+ this.gridService.bodyScrollElement.set(bodyScrollElement);
72
+ this.setSubscriptions();
73
+ this.#destroyRef.onDestroy(() => {
74
+ if (this.gridService.bodyTableElement() === bodyTableElement) {
75
+ this.gridService.bodyTableElement.set(null);
76
+ }
77
+ if (this.gridService.bodyScrollElement() === bodyScrollElement) {
78
+ this.gridService.bodyScrollElement.set(null);
79
+ }
80
+ });
81
+ }
82
+ });
83
+ }
84
+ onGridRowClick(event, row) {
85
+ this.gridService.handleRowClick(event, row);
86
+ }
87
+ onGroupExpandChange(groupKey) {
88
+ this.gridService.toggleGroupCollapse(groupKey);
89
+ }
90
+ onToggleDetailClick(row) {
91
+ const expanded = this.gridService.isRowExpanded(row);
92
+ this.gridService.setRowExpanded(row, !expanded);
93
+ }
94
+ setSubscriptions() {
95
+ fromEvent(this.#hostElementRef.nativeElement, "focus")
96
+ .pipe(takeUntilDestroyed(this.#destroyRef))
97
+ .subscribe(() => {
98
+ this.#gridNavigationService.focusActiveCellOrFirstHeader();
99
+ });
100
+ }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: GridListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: GridListComponent, isStandalone: true, selector: "mona-grid-list", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "baseClass()" } }, viewQueries: [{ propertyName: "bodyTableElementRef", first: true, predicate: ["bodyTable"], descendants: true, isSignal: true }], ngImport: i0, template: "<table #bodyTable [class]=\"tableClass()\" [style.width.px]=\"gridService.tableWidth()\">\n <colgroup>\n @for (_ of gridService.groupColumns(); track $index) {\n <col [style.width.px]=\"gridService.groupColumnWidth\" />\n }\n @if (gridService.masterDetailTemplate()) {\n <col [style.width.px]=\"gridService.groupColumnWidth\" />\n }\n @for (col of columns(); track $index) {\n <col [style.width.px]=\"col.calculatedWidth\" />\n }\n </colgroup>\n <tbody role=\"rowgroup\">\n @if (gridService.addRowVisible()) {\n <tr monaGridAddRow [columns]=\"columns()\"></tr>\n }\n @if (gridService.groupColumns().length === 0) {\n @for (row of data(); track row.uid) {\n @let rowIndex = $index;\n <tr\n (click)=\"onGridRowClick($event, row)\"\n monaGridRow\n [index]=\"rowIndex\"\n [row]=\"row\"\n #gridRow=\"monaGridRow\"\n #rowElement>\n @if (gridService.masterDetailTemplate()) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"0\"\n [masterDetailToggle]=\"true\"\n monaGridLogicalCell\n [cellKind]=\"'detail'\"\n [colIndex]=\"0\"\n [firstInRow]=\"true\"\n [lastInRow]=\"columns().length === 0\"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"row.uid\"\n [section]=\"'body'\"\n [style.width.px]=\"gridService.detailColumnWidth\"\n [attr.colspan]=\"1\">\n <span class=\"flex h-full w-full items-stretch justify-center\">\n <mona-grid-toggle\n [expanded]=\"gridRow.expanded()\"\n [type]=\"'detail'\"\n [width]=\"gridService.detailColumnWidth\"\n (expandedChange)=\"onToggleDetailClick(row)\"></mona-grid-toggle>\n </span>\n </td>\n }\n @for (column of columns(); track $index) {\n @let colIndex = gridService.masterDetailTemplate() ? $index + 1 : $index;\n <td\n monaGridCell\n monaGridLockedCell\n [column]=\"column\"\n [dataCell]=\"true\"\n monaGridLogicalCell\n [cellKind]=\"column.kind\"\n [colIndex]=\"colIndex\"\n [columnId]=\"column.id\"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"row.uid\"\n [section]=\"'body'\"\n [firstInRow]=\"colIndex === 0\"\n [lastInRow]=\"colIndex === columns().length - (gridService.masterDetailTemplate() ? 0 : 1)\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"column.calculatedWidth\"\n [style.min-width.px]=\"column.minWidth\"\n (edit)=\"gridCell.handleLogicalCellEnter()\">\n <mona-grid-cell #gridCell [column]=\"column\" [row]=\"row\"></mona-grid-cell>\n </td>\n }\n @if (gridService.contextMenuItems().length !== 0) {\n <ng-container\n [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row.data, element: rowElement, index: $index }\">\n </ng-container>\n }\n </tr>\n @if (gridRow.expanded()) {\n <tr monaGridDetailRow [style.width.px]=\"gridService.masterDetailRowWidth()\">\n <td\n monaGridCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"0\"\n [indentCell]=\"true\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.masterDetailEmptyCellWidth()\"></td>\n <td monaGridCell [masterDetailContent]=\"true\" [attr.colspan]=\"columns().length\">\n <ng-container\n [ngTemplateOutlet]=\"gridService.masterDetailTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: row.data }\"></ng-container>\n </td>\n </tr>\n }\n }\n } @else {\n @for (viewRow of flattenedGroupedRows(); track $index) {\n @let rowIndex = $index;\n @if (viewRow.type === \"group\") {\n @let isCollapsed = gridService.isGroupCollapsed(viewRow.groupKey);\n @let prevRow = flattenedGroupedRows()[rowIndex - 1];\n\n <tr\n [class]=\"groupRowClass()\"\n role=\"row\"\n [attr.aria-level]=\"viewRow.depth + 1\"\n [attr.aria-expanded]=\"!isCollapsed\">\n @for (_ of gridService.groupColumns() | monaSlice: 0 : viewRow.depth; track $index) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [grouped]=\"true\"\n [indentCell]=\"true\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.groupColumnWidth\"></td>\n }\n @let colspan =\n columns().length +\n gridService.groupColumns().length +\n (gridService.masterDetailTemplate() ? 1 : 0) -\n viewRow.depth +\n 1;\n\n <td\n monaGridCell\n monaGridLogicalCell\n [cellKind]=\"'group'\"\n [rowIndex]=\"rowIndex\"\n [colIndex]=\"0\"\n [section]=\"'body'\"\n [grouped]=\"true\"\n [groupHeader]=\"true\"\n [prevRowType]=\"prevRow?.type\"\n [firstInRow]=\"true\"\n [lastInRow]=\"columns().length === 0\"\n [groupKey]=\"viewRow.groupKey\"\n (toggle)=\"onGroupExpandChange(viewRow.groupKey)\"\n [attr.colspan]=\"colspan\">\n <p class=\"flex h-full items-center text-sm whitespace-nowrap\">\n <mona-grid-toggle\n [expanded]=\"!isCollapsed\"\n [width]=\"gridService.groupColumnWidth\"\n [type]=\"'group'\"\n (expandedChange)=\"onGroupExpandChange(viewRow.groupKey)\"></mona-grid-toggle>\n <span class=\"font-bold\">{{ viewRow.title }}: {{ viewRow.groupValue }}</span>\n </p>\n </td>\n </tr>\n } @else if (viewRow.type === \"groupFooter\") {\n <tr role=\"row\" [class]=\"footerTableRowClass()\">\n @for (_ of gridService.groupColumns(); track $index) {\n <td\n monaGridFooterTableCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [footerCellWidth]=\"gridService.groupColumnWidth\"></td>\n }\n @if (gridService.masterDetailTemplate()) {\n <td\n monaGridFooterTableCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"\n gridService.groupColumns().length * gridService.groupColumnWidth\n \"\n [footerCellWidth]=\"gridService.detailColumnWidth\"></td>\n }\n @for (column of columns(); track $index) {\n <td\n monaGridFooterTableCell\n monaGridLockedCell\n [column]=\"column\"\n [lockedCellHeader]=\"true\"\n [footerColumn]=\"column\">\n <mona-grid-footer-cell\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [groupKey]=\"viewRow.groupAggregate.groupKey\"></mona-grid-footer-cell>\n </td>\n }\n </tr>\n } @else {\n @let nextRow = flattenedGroupedRows()[rowIndex + 1];\n @let prevRow = flattenedGroupedRows()[rowIndex - 1];\n <tr\n (click)=\"onGridRowClick($event, viewRow.row)\"\n monaGridRow\n [index]=\"rowIndex\"\n [row]=\"viewRow.row\"\n #gridRow=\"monaGridRow\"\n #rowElement>\n @for (_ of gridService.groupColumns(); track $index) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [grouped]=\"true\"\n [indentCell]=\"true\"\n [style.width.px]=\"gridService.groupColumnWidth\"></td>\n }\n\n @if (gridService.masterDetailTemplate()) {\n <td\n monaGridCell\n monaGridLogicalCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"\n gridService.groupColumns().length * gridService.groupColumnWidth\n \"\n [grouped]=\"true\"\n [masterDetailToggle]=\"true\"\n [prevRowType]=\"prevRow?.type\"\n [nextRowType]=\"nextRow?.type\"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"viewRow.row.uid\"\n [section]=\"'body'\"\n [cellKind]=\"'detail'\"\n [colIndex]=\"0\"\n [firstInRow]=\"true\"\n [lastInRow]=\"columns().length === 0\"\n [style.width.px]=\"gridService.detailColumnWidth\">\n <span class=\"flex h-full w-full items-stretch justify-center\">\n <mona-grid-toggle\n [expanded]=\"gridRow.expanded()\"\n [type]=\"'detail'\"\n [width]=\"gridService.detailColumnWidth\"\n (expandedChange)=\"onToggleDetailClick(viewRow.row)\"></mona-grid-toggle>\n </span>\n </td>\n }\n @for (column of columns(); track $index) {\n @let colIndex = gridService.masterDetailTemplate() ? $index + 1 : $index;\n <td\n monaGridCell\n monaGridLockedCell\n [column]=\"column\"\n [grouped]=\"true\"\n [dataCell]=\"true\"\n [prevRowType]=\"prevRow?.type\"\n [nextRowType]=\"nextRow?.type\"\n monaGridLogicalCell\n [cellKind]=\"column.kind\"\n [colIndex]=\"colIndex\"\n [columnId]=\"column.id\"\n [firstInRow]=\"colIndex === 0\"\n [lastInRow]=\"\n colIndex === columns().length - (gridService.masterDetailTemplate() ? 0 : 1)\n \"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"viewRow.row.uid\"\n [section]=\"'body'\"\n [style.width.px]=\"column.calculatedWidth\"\n [style.min-width.px]=\"column.minWidth\"\n (edit)=\"gridCell.handleLogicalCellEnter()\">\n <mona-grid-cell #gridCell [column]=\"column\" [row]=\"viewRow.row\"></mona-grid-cell>\n </td>\n }\n @if (gridService.contextMenuItems().length !== 0) {\n <ng-container\n [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: viewRow.row.data,\n element: rowElement,\n index: rowIndex\n }\">\n </ng-container>\n }\n </tr>\n @if (gridRow.expanded()) {\n <tr monaGridDetailRow [style.width.px]=\"gridService.masterDetailRowWidth()\">\n @for (_ of gridService.groupColumns() | monaSlice: 0 : viewRow.depth + 1; track $index) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [grouped]=\"true\"\n [indentCell]=\"true\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.groupColumnWidth\"></td>\n }\n @let colspan = columns().length + gridService.groupColumns().length - 1;\n <td\n monaGridDetailIndentCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"(viewRow.depth + 1) * gridService.groupColumnWidth\"\n [nextRowType]=\"nextRow?.type\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.masterDetailEmptyCellWidth()\"></td>\n <td monaGridDetailContentCell [nextRowType]=\"nextRow?.type\" [attr.colspan]=\"colspan\">\n <ng-container\n [ngTemplateOutlet]=\"gridService.masterDetailTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: viewRow.row.data }\"></ng-container>\n </td>\n </tr>\n }\n }\n }\n }\n </tbody>\n</table>\n\n<ng-template let-rowData let-element=\"element\" let-rowIndex=\"index\" #contextMenuTemplate>\n <mona-contextmenu [target]=\"element\" [items]=\"gridService.contextMenuItems()\"></mona-contextmenu>\n <!-- [context]=\"{rowData, element, rowIndex}\"-->\n</ng-template>\n", dependencies: [{ kind: "component", type: GridAddRowComponent, selector: "tr[monaGridAddRow]", inputs: ["columns"] }, { kind: "component", type: GridCellComponent, selector: "mona-grid-cell", inputs: ["column", "row"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ContextMenuComponent, selector: "mona-contextmenu", inputs: ["ariaLabel", "items", "minWidth", "rounded", "size", "target", "width"], outputs: ["menuClick"] }, { kind: "directive", type: GridRowDirective, selector: "tr[monaGridRow]", inputs: ["index", "row"], exportAs: ["monaGridRow"] }, { kind: "directive", type: GridCellDirective, selector: "td[monaGridCell]", inputs: ["dataCell", "groupHeader", "groupToggle", "grouped", "indentCell", "lastInRow", "masterDetailContent", "masterDetailToggle", "nextRowType", "prevRowType"] }, { kind: "directive", type: GridDetailRowDirective, selector: "tr[monaGridDetailRow]" }, { kind: "directive", type: GridDetailIndentCellDirective, selector: "td[monaGridDetailIndentCell]", inputs: ["nextRowType"] }, { kind: "directive", type: GridDetailContentCellDirective, selector: "td[monaGridDetailContentCell]", inputs: ["nextRowType"] }, { kind: "component", type: GridToggleComponent, selector: "mona-grid-toggle", inputs: ["expanded", "type", "width"], outputs: ["expandedChange"] }, { kind: "directive", type: GridFooterTableCellDirective, selector: "td[monaGridFooterTableCell]", inputs: ["footerCellMinWidth", "footerCellWidth", "footerColumn"] }, { kind: "directive", type: GridLogicalCellDirective, selector: "td[monaGridLogicalCell], th[monaGridLogicalCell]", inputs: ["cellKind", "colIndex", "columnId", "firstInRow", "groupHeader", "groupKey", "lastInRow", "rowIndex", "rowUid", "section"], outputs: ["edit", "toggle"] }, { kind: "directive", type: GridLockedCellDirective, selector: "td[monaGridLockedCell], th[monaGridLockedCell]", inputs: ["column", "lockedCellHeader", "lockedStructuralOffset"] }, { kind: "component", type: GridFooterCellComponent, selector: "mona-grid-footer-cell", inputs: ["column", "columnIndex", "groupKey"] }, { kind: "pipe", type: SlicePipe, name: "monaSlice" }] }); }
103
+ }
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: GridListComponent, decorators: [{
105
+ type: Component,
106
+ args: [{ selector: "mona-grid-list", imports: [
107
+ GridAddRowComponent,
108
+ GridCellComponent,
109
+ NgTemplateOutlet,
110
+ ContextMenuComponent,
111
+ GridRowDirective,
112
+ GridCellDirective,
113
+ GridDetailRowDirective,
114
+ GridDetailIndentCellDirective,
115
+ GridDetailContentCellDirective,
116
+ SlicePipe,
117
+ GridToggleComponent,
118
+ GridFooterTableCellDirective,
119
+ GridLogicalCellDirective,
120
+ GridLockedCellDirective,
121
+ GridFooterCellComponent
122
+ ], host: {
123
+ "[class]": "baseClass()"
124
+ }, template: "<table #bodyTable [class]=\"tableClass()\" [style.width.px]=\"gridService.tableWidth()\">\n <colgroup>\n @for (_ of gridService.groupColumns(); track $index) {\n <col [style.width.px]=\"gridService.groupColumnWidth\" />\n }\n @if (gridService.masterDetailTemplate()) {\n <col [style.width.px]=\"gridService.groupColumnWidth\" />\n }\n @for (col of columns(); track $index) {\n <col [style.width.px]=\"col.calculatedWidth\" />\n }\n </colgroup>\n <tbody role=\"rowgroup\">\n @if (gridService.addRowVisible()) {\n <tr monaGridAddRow [columns]=\"columns()\"></tr>\n }\n @if (gridService.groupColumns().length === 0) {\n @for (row of data(); track row.uid) {\n @let rowIndex = $index;\n <tr\n (click)=\"onGridRowClick($event, row)\"\n monaGridRow\n [index]=\"rowIndex\"\n [row]=\"row\"\n #gridRow=\"monaGridRow\"\n #rowElement>\n @if (gridService.masterDetailTemplate()) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"0\"\n [masterDetailToggle]=\"true\"\n monaGridLogicalCell\n [cellKind]=\"'detail'\"\n [colIndex]=\"0\"\n [firstInRow]=\"true\"\n [lastInRow]=\"columns().length === 0\"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"row.uid\"\n [section]=\"'body'\"\n [style.width.px]=\"gridService.detailColumnWidth\"\n [attr.colspan]=\"1\">\n <span class=\"flex h-full w-full items-stretch justify-center\">\n <mona-grid-toggle\n [expanded]=\"gridRow.expanded()\"\n [type]=\"'detail'\"\n [width]=\"gridService.detailColumnWidth\"\n (expandedChange)=\"onToggleDetailClick(row)\"></mona-grid-toggle>\n </span>\n </td>\n }\n @for (column of columns(); track $index) {\n @let colIndex = gridService.masterDetailTemplate() ? $index + 1 : $index;\n <td\n monaGridCell\n monaGridLockedCell\n [column]=\"column\"\n [dataCell]=\"true\"\n monaGridLogicalCell\n [cellKind]=\"column.kind\"\n [colIndex]=\"colIndex\"\n [columnId]=\"column.id\"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"row.uid\"\n [section]=\"'body'\"\n [firstInRow]=\"colIndex === 0\"\n [lastInRow]=\"colIndex === columns().length - (gridService.masterDetailTemplate() ? 0 : 1)\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"column.calculatedWidth\"\n [style.min-width.px]=\"column.minWidth\"\n (edit)=\"gridCell.handleLogicalCellEnter()\">\n <mona-grid-cell #gridCell [column]=\"column\" [row]=\"row\"></mona-grid-cell>\n </td>\n }\n @if (gridService.contextMenuItems().length !== 0) {\n <ng-container\n [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row.data, element: rowElement, index: $index }\">\n </ng-container>\n }\n </tr>\n @if (gridRow.expanded()) {\n <tr monaGridDetailRow [style.width.px]=\"gridService.masterDetailRowWidth()\">\n <td\n monaGridCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"0\"\n [indentCell]=\"true\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.masterDetailEmptyCellWidth()\"></td>\n <td monaGridCell [masterDetailContent]=\"true\" [attr.colspan]=\"columns().length\">\n <ng-container\n [ngTemplateOutlet]=\"gridService.masterDetailTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: row.data }\"></ng-container>\n </td>\n </tr>\n }\n }\n } @else {\n @for (viewRow of flattenedGroupedRows(); track $index) {\n @let rowIndex = $index;\n @if (viewRow.type === \"group\") {\n @let isCollapsed = gridService.isGroupCollapsed(viewRow.groupKey);\n @let prevRow = flattenedGroupedRows()[rowIndex - 1];\n\n <tr\n [class]=\"groupRowClass()\"\n role=\"row\"\n [attr.aria-level]=\"viewRow.depth + 1\"\n [attr.aria-expanded]=\"!isCollapsed\">\n @for (_ of gridService.groupColumns() | monaSlice: 0 : viewRow.depth; track $index) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [grouped]=\"true\"\n [indentCell]=\"true\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.groupColumnWidth\"></td>\n }\n @let colspan =\n columns().length +\n gridService.groupColumns().length +\n (gridService.masterDetailTemplate() ? 1 : 0) -\n viewRow.depth +\n 1;\n\n <td\n monaGridCell\n monaGridLogicalCell\n [cellKind]=\"'group'\"\n [rowIndex]=\"rowIndex\"\n [colIndex]=\"0\"\n [section]=\"'body'\"\n [grouped]=\"true\"\n [groupHeader]=\"true\"\n [prevRowType]=\"prevRow?.type\"\n [firstInRow]=\"true\"\n [lastInRow]=\"columns().length === 0\"\n [groupKey]=\"viewRow.groupKey\"\n (toggle)=\"onGroupExpandChange(viewRow.groupKey)\"\n [attr.colspan]=\"colspan\">\n <p class=\"flex h-full items-center text-sm whitespace-nowrap\">\n <mona-grid-toggle\n [expanded]=\"!isCollapsed\"\n [width]=\"gridService.groupColumnWidth\"\n [type]=\"'group'\"\n (expandedChange)=\"onGroupExpandChange(viewRow.groupKey)\"></mona-grid-toggle>\n <span class=\"font-bold\">{{ viewRow.title }}: {{ viewRow.groupValue }}</span>\n </p>\n </td>\n </tr>\n } @else if (viewRow.type === \"groupFooter\") {\n <tr role=\"row\" [class]=\"footerTableRowClass()\">\n @for (_ of gridService.groupColumns(); track $index) {\n <td\n monaGridFooterTableCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [footerCellWidth]=\"gridService.groupColumnWidth\"></td>\n }\n @if (gridService.masterDetailTemplate()) {\n <td\n monaGridFooterTableCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"\n gridService.groupColumns().length * gridService.groupColumnWidth\n \"\n [footerCellWidth]=\"gridService.detailColumnWidth\"></td>\n }\n @for (column of columns(); track $index) {\n <td\n monaGridFooterTableCell\n monaGridLockedCell\n [column]=\"column\"\n [lockedCellHeader]=\"true\"\n [footerColumn]=\"column\">\n <mona-grid-footer-cell\n [column]=\"column\"\n [columnIndex]=\"$index\"\n [groupKey]=\"viewRow.groupAggregate.groupKey\"></mona-grid-footer-cell>\n </td>\n }\n </tr>\n } @else {\n @let nextRow = flattenedGroupedRows()[rowIndex + 1];\n @let prevRow = flattenedGroupedRows()[rowIndex - 1];\n <tr\n (click)=\"onGridRowClick($event, viewRow.row)\"\n monaGridRow\n [index]=\"rowIndex\"\n [row]=\"viewRow.row\"\n #gridRow=\"monaGridRow\"\n #rowElement>\n @for (_ of gridService.groupColumns(); track $index) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [grouped]=\"true\"\n [indentCell]=\"true\"\n [style.width.px]=\"gridService.groupColumnWidth\"></td>\n }\n\n @if (gridService.masterDetailTemplate()) {\n <td\n monaGridCell\n monaGridLogicalCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"\n gridService.groupColumns().length * gridService.groupColumnWidth\n \"\n [grouped]=\"true\"\n [masterDetailToggle]=\"true\"\n [prevRowType]=\"prevRow?.type\"\n [nextRowType]=\"nextRow?.type\"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"viewRow.row.uid\"\n [section]=\"'body'\"\n [cellKind]=\"'detail'\"\n [colIndex]=\"0\"\n [firstInRow]=\"true\"\n [lastInRow]=\"columns().length === 0\"\n [style.width.px]=\"gridService.detailColumnWidth\">\n <span class=\"flex h-full w-full items-stretch justify-center\">\n <mona-grid-toggle\n [expanded]=\"gridRow.expanded()\"\n [type]=\"'detail'\"\n [width]=\"gridService.detailColumnWidth\"\n (expandedChange)=\"onToggleDetailClick(viewRow.row)\"></mona-grid-toggle>\n </span>\n </td>\n }\n @for (column of columns(); track $index) {\n @let colIndex = gridService.masterDetailTemplate() ? $index + 1 : $index;\n <td\n monaGridCell\n monaGridLockedCell\n [column]=\"column\"\n [grouped]=\"true\"\n [dataCell]=\"true\"\n [prevRowType]=\"prevRow?.type\"\n [nextRowType]=\"nextRow?.type\"\n monaGridLogicalCell\n [cellKind]=\"column.kind\"\n [colIndex]=\"colIndex\"\n [columnId]=\"column.id\"\n [firstInRow]=\"colIndex === 0\"\n [lastInRow]=\"\n colIndex === columns().length - (gridService.masterDetailTemplate() ? 0 : 1)\n \"\n [rowIndex]=\"rowIndex\"\n [rowUid]=\"viewRow.row.uid\"\n [section]=\"'body'\"\n [style.width.px]=\"column.calculatedWidth\"\n [style.min-width.px]=\"column.minWidth\"\n (edit)=\"gridCell.handleLogicalCellEnter()\">\n <mona-grid-cell #gridCell [column]=\"column\" [row]=\"viewRow.row\"></mona-grid-cell>\n </td>\n }\n @if (gridService.contextMenuItems().length !== 0) {\n <ng-container\n [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: viewRow.row.data,\n element: rowElement,\n index: rowIndex\n }\">\n </ng-container>\n }\n </tr>\n @if (gridRow.expanded()) {\n <tr monaGridDetailRow [style.width.px]=\"gridService.masterDetailRowWidth()\">\n @for (_ of gridService.groupColumns() | monaSlice: 0 : viewRow.depth + 1; track $index) {\n <td\n monaGridCell\n monaGridLockedCell\n [lockedCellHeader]=\"true\"\n [lockedStructuralOffset]=\"$index * gridService.groupColumnWidth\"\n [grouped]=\"true\"\n [indentCell]=\"true\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.groupColumnWidth\"></td>\n }\n @let colspan = columns().length + gridService.groupColumns().length - 1;\n <td\n monaGridDetailIndentCell\n monaGridLockedCell\n [lockedStructuralOffset]=\"(viewRow.depth + 1) * gridService.groupColumnWidth\"\n [nextRowType]=\"nextRow?.type\"\n [attr.colspan]=\"1\"\n [style.width.px]=\"gridService.masterDetailEmptyCellWidth()\"></td>\n <td monaGridDetailContentCell [nextRowType]=\"nextRow?.type\" [attr.colspan]=\"colspan\">\n <ng-container\n [ngTemplateOutlet]=\"gridService.masterDetailTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: viewRow.row.data }\"></ng-container>\n </td>\n </tr>\n }\n }\n }\n }\n </tbody>\n</table>\n\n<ng-template let-rowData let-element=\"element\" let-rowIndex=\"index\" #contextMenuTemplate>\n <mona-contextmenu [target]=\"element\" [items]=\"gridService.contextMenuItems()\"></mona-contextmenu>\n <!-- [context]=\"{rowData, element, rowIndex}\"-->\n</ng-template>\n" }]
125
+ }], ctorParameters: () => [], propDecorators: { bodyTableElementRef: [{ type: i0.ViewChild, args: ["bodyTable", { isSignal: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }] } });
126
+
127
+ export { GridListComponent };
128
+ //# sourceMappingURL=nanahoshi-mona-ui-grid-grid-list.component-C7WKhhig.mjs.map