@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
@@ -1,16 +1,15 @@
1
1
  import { PreventableEvent } from '@nanahoshi/mona-ui/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, inject, computed, input, DestroyRef, signal, viewChild, viewChildren, ElementRef, model, output, afterRenderEffect, untracked, afterNextRender, ChangeDetectionStrategy, Component, contentChild, TemplateRef, contentChildren, linkedSignal } from '@angular/core';
3
+ import { Directive, inject, computed, input, DestroyRef, signal, viewChild, viewChildren, ElementRef, model, output, afterRenderEffect, untracked, afterNextRender, Component, contentChild, TemplateRef, ChangeDetectionStrategy, contentChildren, linkedSignal } from '@angular/core';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
- import { ThemeService } from '@nanahoshi/mona-ui/theme';
6
5
  import { firstOrDefault, select } from '@mirei/ts-collections';
6
+ import { ThemeService } from '@nanahoshi/mona-ui/theme';
7
+ import { twMerge } from 'tailwind-merge';
7
8
  import { cva } from 'class-variance-authority';
8
9
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
- import { FaIconComponent } from '@fortawesome/angular-fontawesome';
10
- import { faChevronLeft, faChevronRight, faXmark } from '@fortawesome/free-solid-svg-icons';
10
+ import { LucideChevronLeft, LucideChevronRight, LucideX } from '@lucide/angular';
11
11
  import { ButtonDirective } from '@nanahoshi/mona-ui/button';
12
12
  import { Subject, switchMap, EMPTY, timer, interval, tap, asapScheduler } from 'rxjs';
13
- import { twMerge } from 'tailwind-merge';
14
13
  import { createElementControlId } from '@nanahoshi/mona-ui/internal';
15
14
 
16
15
  class TabCloseEvent extends PreventableEvent {
@@ -64,11 +63,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
64
63
  }]
65
64
  }] });
66
65
 
67
- const tabListBaseVariants = cva(`
68
- w-fit max-w-full
69
- flex overflow-hidden
70
- bg-accent
71
- font-medium text-sm
66
+ const tabListBaseVariants = cva(`
67
+ w-fit max-w-full
68
+ flex overflow-hidden
69
+ bg-accent
70
+ font-medium text-sm
72
71
  `, {
73
72
  variants: {
74
73
  rounded: {
@@ -86,18 +85,18 @@ const tabListBaseVariants = cva(`
86
85
  }
87
86
  });
88
87
  const tabListListWrapperVariants = cva(`w-full h-full overflow-hidden`);
89
- const tabListListVariants = cva(`
90
- flex h-full w-full overflow-hidden
91
- list-none cursor-default
92
- select-none whitespace-nowrap
93
- p-[3px]
94
- transition-colors duration-300 ease-out
88
+ const tabListListVariants = cva(`
89
+ flex h-full w-full overflow-hidden
90
+ list-none cursor-default
91
+ select-none whitespace-nowrap
92
+ p-[3px]
93
+ transition-colors duration-300 ease-out
95
94
  `);
96
- const tabListListItemVariants = cva(`
97
- flex items-center justify-center
98
- cursor-pointer
99
- px-2 outline-none
100
- focus-visible:ring-2 focus-visible:ring-primary/40
95
+ const tabListListItemVariants = cva(`
96
+ flex items-center justify-center
97
+ cursor-pointer
98
+ px-2 outline-none
99
+ focus-visible:ring-2 focus-visible:ring-primary/40
101
100
  `, {
102
101
  variants: {
103
102
  active: {
@@ -120,14 +119,14 @@ const tabListListItemVariants = cva(`
120
119
  rounded: "medium"
121
120
  }
122
121
  });
123
- const tabListScrollButtonVariants = cva(`
124
- flex items-center justify-center
125
- h-full px-2
122
+ const tabListScrollButtonVariants = cva(`
123
+ flex items-center justify-center
124
+ h-full px-2
126
125
  `);
127
- const tabContentVariants = cva(`
128
- w-full overflow-auto flex-1
129
- border border-border shadow-sm
130
- bg-background
126
+ const tabContentVariants = cva(`
127
+ w-full overflow-auto flex-1
128
+ border border-border shadow-sm
129
+ bg-background text-foreground
131
130
  `, {
132
131
  variants: {
133
132
  rounded: {
@@ -142,9 +141,9 @@ const tabContentVariants = cva(`
142
141
  rounded: "medium"
143
142
  }
144
143
  });
145
- const tabsBaseVariants = cva(`
146
- max-w-full
147
- flex flex-col gap-2
144
+ const tabsBaseVariants = cva(`
145
+ max-w-full
146
+ flex flex-col gap-2
148
147
  `);
149
148
 
150
149
  const tabListBaseThemeVariants = (theme) => {
@@ -265,11 +264,8 @@ class TabListComponent {
265
264
  return tabListScrollButtonThemeVariants(theme)();
266
265
  }, /* @ts-ignore */
267
266
  ...(ngDevMode ? [{ debugName: "scrollButtonClass" }] : /* istanbul ignore next */ []));
268
- this.scrollLeftIcon = faChevronLeft;
269
- this.scrollRightIcon = faChevronRight;
270
267
  this.scrollsVisible = signal(false, /* @ts-ignore */
271
268
  ...(ngDevMode ? [{ debugName: "scrollsVisible" }] : /* istanbul ignore next */ []));
272
- this.tabCloseIcon = faXmark;
273
269
  this.tabListElement = viewChild.required("tabListElement", /* @ts-ignore */
274
270
  ...(ngDevMode ? [{ debugName: "tabListElement" }] : /* istanbul ignore next */ []));
275
271
  this.tabListItems = viewChildren(TabListItemDirective, { ...(ngDevMode ? { debugName: "tabListItems" } : /* istanbul ignore next */ {}), read: ElementRef });
@@ -474,14 +470,14 @@ class TabListComponent {
474
470
  });
475
471
  }
476
472
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TabListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
477
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TabListComponent, isStandalone: true, selector: "mona-tab-list", inputs: { closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: true, transformFunction: null }, selectedTabId: { classPropertyName: "selectedTabId", publicName: "selectedTabId", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, tabList: { classPropertyName: "tabList", publicName: "tabList", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedTabId: "selectedTabIdChange", tabClose: "tabClose", tabSelect: "tabSelect" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class": "baseClass()" } }, viewQueries: [{ propertyName: "tabListElement", first: true, predicate: ["tabListElement"], descendants: true, isSignal: true }, { propertyName: "tabListItems", predicate: TabListItemDirective, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (scrollsVisible()) {\r\n <button\r\n monaButton\r\n look=\"link\"\r\n size=\"small\"\r\n [class]=\"scrollButtonClass()\"\r\n (click)=\"startScrolling(tabListElement, 'left', 'single')\"\r\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'left')\"\r\n (pointerup)=\"stopScrolling()\"\r\n [attr.aria-hidden]=\"true\"\r\n tabindex=\"-1\">\r\n <fa-icon [icon]=\"scrollLeftIcon\"></fa-icon>\r\n </button>\r\n}\r\n<div class=\"w-full h-full overflow-hidden\">\r\n <ul [class]=\"listClass()\" #tabListElement role=\"tablist\">\r\n @for (tab of tabList(); track tab) {\r\n @let selected = tab.id === selectedTabId();\r\n @let itemDisabled = tab.disabled || disabled();\r\n <li\r\n monaTabListItem\r\n [id]=\"tab.id + '-tab'\"\r\n [active]=\"selected\"\r\n [disabled]=\"itemDisabled\"\r\n [rounded]=\"rounded()\"\r\n role=\"tab\"\r\n [tabindex]=\"selected ? 0 : -1\"\r\n [attr.aria-selected]=\"selected\"\r\n [attr.aria-disabled]=\"itemDisabled\"\r\n [attr.aria-controls]=\"tab.id + '-panel'\"\r\n [attr.data-selected]=\"selected\"\r\n [attr.data-tab-id]=\"tab.id\"\r\n (click)=\"onTabClick(tab, tabListElement, $event)\">\r\n <div>\r\n @if (tab.titleTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"tab.titleTemplate\"></ng-container>\r\n } @else {\r\n <span>{{ tab.title }}</span>\r\n }\r\n </div>\r\n @if (tab.closable || closable()) {\r\n <button\r\n monaButton\r\n look=\"link\"\r\n [disabled]=\"itemDisabled\"\r\n (click)=\"onTabClose(tab, $event)\"\r\n class=\"px-0 h-fit ml-1 w-min\"\r\n tabindex=\"-1\">\r\n <fa-icon [icon]=\"tabCloseIcon\" class=\"text-xs flex\"></fa-icon>\r\n </button>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n@if (scrollsVisible()) {\r\n <button\r\n monaButton\r\n look=\"link\"\r\n size=\"small\"\r\n [class]=\"scrollButtonClass()\"\r\n (click)=\"startScrolling(tabListElement, 'right', 'single')\"\r\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'right')\"\r\n (pointerup)=\"stopScrolling()\"\r\n [attr.aria-hidden]=\"true\"\r\n tabindex=\"-1\">\r\n <fa-icon [icon]=\"scrollRightIcon\"></fa-icon>\r\n </button>\r\n}\r\n", dependencies: [{ 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: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TabListItemDirective, selector: "li[monaTabListItem]", inputs: ["active", "disabled", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
473
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TabListComponent, isStandalone: true, selector: "mona-tab-list", inputs: { closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: true, transformFunction: null }, selectedTabId: { classPropertyName: "selectedTabId", publicName: "selectedTabId", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, tabList: { classPropertyName: "tabList", publicName: "tabList", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedTabId: "selectedTabIdChange", tabClose: "tabClose", tabSelect: "tabSelect" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class": "baseClass()" } }, viewQueries: [{ propertyName: "tabListElement", first: true, predicate: ["tabListElement"], descendants: true, isSignal: true }, { propertyName: "tabListItems", predicate: TabListItemDirective, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (scrollsVisible()) {\n <button\n monaButton\n look=\"link\"\n size=\"small\"\n [class]=\"scrollButtonClass()\"\n (click)=\"startScrolling(tabListElement, 'left', 'single')\"\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'left')\"\n (pointerup)=\"stopScrolling()\"\n [attr.aria-hidden]=\"true\"\n tabindex=\"-1\">\n <svg lucideChevronLeft [size]=\"16\"></svg>\n </button>\n}\n<div class=\"w-full h-full overflow-hidden\">\n <ul [class]=\"listClass()\" #tabListElement role=\"tablist\">\n @for (tab of tabList(); track tab) {\n @let selected = tab.id === selectedTabId();\n @let itemDisabled = tab.disabled || disabled();\n <li\n monaTabListItem\n [id]=\"tab.id + '-tab'\"\n [active]=\"selected\"\n [disabled]=\"itemDisabled\"\n [rounded]=\"rounded()\"\n role=\"tab\"\n [tabindex]=\"selected ? 0 : -1\"\n [attr.aria-selected]=\"selected\"\n [attr.aria-disabled]=\"itemDisabled\"\n [attr.aria-controls]=\"tab.id + '-panel'\"\n [attr.data-selected]=\"selected\"\n [attr.data-tab-id]=\"tab.id\"\n (click)=\"onTabClick(tab, tabListElement, $event)\">\n <div>\n @if (tab.titleTemplate) {\n <ng-container [ngTemplateOutlet]=\"tab.titleTemplate\"></ng-container>\n } @else {\n <span>{{ tab.title }}</span>\n }\n </div>\n @if (tab.closable || closable()) {\n <button\n monaButton\n look=\"link\"\n [disabled]=\"itemDisabled\"\n (click)=\"onTabClose(tab, $event)\"\n class=\"px-0 h-fit ml-1 w-min\"\n tabindex=\"-1\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n </li>\n }\n </ul>\n</div>\n@if (scrollsVisible()) {\n <button\n monaButton\n look=\"link\"\n size=\"small\"\n [class]=\"scrollButtonClass()\"\n (click)=\"startScrolling(tabListElement, 'right', 'single')\"\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'right')\"\n (pointerup)=\"stopScrolling()\"\n [attr.aria-hidden]=\"true\"\n tabindex=\"-1\">\n <svg lucideChevronRight [size]=\"16\"></svg>\n </button>\n}\n", dependencies: [{ 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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TabListItemDirective, selector: "li[monaTabListItem]", inputs: ["active", "disabled", "rounded"] }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }] }); }
478
474
  }
479
475
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TabListComponent, decorators: [{
480
476
  type: Component,
481
- args: [{ selector: "mona-tab-list", imports: [ButtonDirective, FaIconComponent, NgTemplateOutlet, TabListItemDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
477
+ args: [{ selector: "mona-tab-list", imports: [ButtonDirective, NgTemplateOutlet, TabListItemDirective, LucideChevronLeft, LucideChevronRight, LucideX], host: {
482
478
  "[class]": "baseClass()",
483
479
  "(keydown)": "onKeydown($event)"
484
- }, template: "@if (scrollsVisible()) {\r\n <button\r\n monaButton\r\n look=\"link\"\r\n size=\"small\"\r\n [class]=\"scrollButtonClass()\"\r\n (click)=\"startScrolling(tabListElement, 'left', 'single')\"\r\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'left')\"\r\n (pointerup)=\"stopScrolling()\"\r\n [attr.aria-hidden]=\"true\"\r\n tabindex=\"-1\">\r\n <fa-icon [icon]=\"scrollLeftIcon\"></fa-icon>\r\n </button>\r\n}\r\n<div class=\"w-full h-full overflow-hidden\">\r\n <ul [class]=\"listClass()\" #tabListElement role=\"tablist\">\r\n @for (tab of tabList(); track tab) {\r\n @let selected = tab.id === selectedTabId();\r\n @let itemDisabled = tab.disabled || disabled();\r\n <li\r\n monaTabListItem\r\n [id]=\"tab.id + '-tab'\"\r\n [active]=\"selected\"\r\n [disabled]=\"itemDisabled\"\r\n [rounded]=\"rounded()\"\r\n role=\"tab\"\r\n [tabindex]=\"selected ? 0 : -1\"\r\n [attr.aria-selected]=\"selected\"\r\n [attr.aria-disabled]=\"itemDisabled\"\r\n [attr.aria-controls]=\"tab.id + '-panel'\"\r\n [attr.data-selected]=\"selected\"\r\n [attr.data-tab-id]=\"tab.id\"\r\n (click)=\"onTabClick(tab, tabListElement, $event)\">\r\n <div>\r\n @if (tab.titleTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"tab.titleTemplate\"></ng-container>\r\n } @else {\r\n <span>{{ tab.title }}</span>\r\n }\r\n </div>\r\n @if (tab.closable || closable()) {\r\n <button\r\n monaButton\r\n look=\"link\"\r\n [disabled]=\"itemDisabled\"\r\n (click)=\"onTabClose(tab, $event)\"\r\n class=\"px-0 h-fit ml-1 w-min\"\r\n tabindex=\"-1\">\r\n <fa-icon [icon]=\"tabCloseIcon\" class=\"text-xs flex\"></fa-icon>\r\n </button>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n@if (scrollsVisible()) {\r\n <button\r\n monaButton\r\n look=\"link\"\r\n size=\"small\"\r\n [class]=\"scrollButtonClass()\"\r\n (click)=\"startScrolling(tabListElement, 'right', 'single')\"\r\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'right')\"\r\n (pointerup)=\"stopScrolling()\"\r\n [attr.aria-hidden]=\"true\"\r\n tabindex=\"-1\">\r\n <fa-icon [icon]=\"scrollRightIcon\"></fa-icon>\r\n </button>\r\n}\r\n" }]
480
+ }, template: "@if (scrollsVisible()) {\n <button\n monaButton\n look=\"link\"\n size=\"small\"\n [class]=\"scrollButtonClass()\"\n (click)=\"startScrolling(tabListElement, 'left', 'single')\"\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'left')\"\n (pointerup)=\"stopScrolling()\"\n [attr.aria-hidden]=\"true\"\n tabindex=\"-1\">\n <svg lucideChevronLeft [size]=\"16\"></svg>\n </button>\n}\n<div class=\"w-full h-full overflow-hidden\">\n <ul [class]=\"listClass()\" #tabListElement role=\"tablist\">\n @for (tab of tabList(); track tab) {\n @let selected = tab.id === selectedTabId();\n @let itemDisabled = tab.disabled || disabled();\n <li\n monaTabListItem\n [id]=\"tab.id + '-tab'\"\n [active]=\"selected\"\n [disabled]=\"itemDisabled\"\n [rounded]=\"rounded()\"\n role=\"tab\"\n [tabindex]=\"selected ? 0 : -1\"\n [attr.aria-selected]=\"selected\"\n [attr.aria-disabled]=\"itemDisabled\"\n [attr.aria-controls]=\"tab.id + '-panel'\"\n [attr.data-selected]=\"selected\"\n [attr.data-tab-id]=\"tab.id\"\n (click)=\"onTabClick(tab, tabListElement, $event)\">\n <div>\n @if (tab.titleTemplate) {\n <ng-container [ngTemplateOutlet]=\"tab.titleTemplate\"></ng-container>\n } @else {\n <span>{{ tab.title }}</span>\n }\n </div>\n @if (tab.closable || closable()) {\n <button\n monaButton\n look=\"link\"\n [disabled]=\"itemDisabled\"\n (click)=\"onTabClose(tab, $event)\"\n class=\"px-0 h-fit ml-1 w-min\"\n tabindex=\"-1\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n </li>\n }\n </ul>\n</div>\n@if (scrollsVisible()) {\n <button\n monaButton\n look=\"link\"\n size=\"small\"\n [class]=\"scrollButtonClass()\"\n (click)=\"startScrolling(tabListElement, 'right', 'single')\"\n (pointerdown)=\"startContinuousScroll($event, tabListElement, 'right')\"\n (pointerup)=\"stopScrolling()\"\n [attr.aria-hidden]=\"true\"\n tabindex=\"-1\">\n <svg lucideChevronRight [size]=\"16\"></svg>\n </button>\n}\n" }]
485
481
  }], ctorParameters: () => [], propDecorators: { tabListElement: [{ type: i0.ViewChild, args: ["tabListElement", { isSignal: true }] }], tabListItems: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => TabListItemDirective), { ...{ read: ElementRef }, isSignal: true }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: true }] }], selectedTabId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTabId", required: false }] }, { type: i0.Output, args: ["selectedTabIdChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: true }] }], tabClose: [{ type: i0.Output, args: ["tabClose"] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], tabList: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabList", required: true }] }] } });
486
482
 
487
483
  class TabComponent {
@@ -643,13 +639,13 @@ class TabsComponent {
643
639
  }
644
640
  }
645
641
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
646
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TabsComponent, isStandalone: true, selector: "mona-tabs", inputs: { closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, keepTabContent: { classPropertyName: "keepTabContent", publicName: "keepTabContent", 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 }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabClose: "tabClose", tabSelect: "tabSelect" }, host: { properties: { "class": "baseClass()" } }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }], viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: TabListComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<mona-tab-list\r\n [closable]=\"closable()\"\r\n [disabled]=\"disabled()\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n [tabList]=\"tabList()\"\r\n [selectedTabId]=\"selectedTabId()\"\r\n (selectedTabIdChange)=\"selectedTabId.set($event)\"\r\n (tabClose)=\"tabClose.emit($event)\"\r\n (tabSelect)=\"tabSelect.emit($event)\"></mona-tab-list>\r\n<div [class]=\"contentClass()\">\r\n @for (tab of tabList(); track tab) {\r\n @let selected = tab.id === selectedTabId();\r\n @let tabLoaded = keepTabContent() || selected;\r\n @let tabHidden = keepTabContent() && !selected;\r\n @if (tabLoaded) {\r\n <div\r\n class=\"w-full h-full outline-none\"\r\n [class.hidden]=\"tabHidden\"\r\n role=\"tabpanel\"\r\n [id]=\"tab.id + '-panel'\"\r\n tabindex=\"0\"\r\n (keydown)=\"handlePanelKeyDown($event)\"\r\n [attr.aria-hidden]=\"tabHidden\"\r\n [attr.aria-labelledby]=\"tab.id + '-tab'\">\r\n <ng-container [ngTemplateOutlet]=\"tab.contentTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TabListComponent, selector: "mona-tab-list", inputs: ["closable", "disabled", "rounded", "selectedTabId", "size", "tabList"], outputs: ["selectedTabIdChange", "tabClose", "tabSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
642
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TabsComponent, isStandalone: true, selector: "mona-tabs", inputs: { closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, keepTabContent: { classPropertyName: "keepTabContent", publicName: "keepTabContent", 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 }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabClose: "tabClose", tabSelect: "tabSelect" }, host: { properties: { "class": "baseClass()" } }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }], viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: TabListComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<mona-tab-list\n [closable]=\"closable()\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [tabList]=\"tabList()\"\n [selectedTabId]=\"selectedTabId()\"\n (selectedTabIdChange)=\"selectedTabId.set($event)\"\n (tabClose)=\"tabClose.emit($event)\"\n (tabSelect)=\"tabSelect.emit($event)\"></mona-tab-list>\n<div [class]=\"contentClass()\">\n @for (tab of tabList(); track tab) {\n @let selected = tab.id === selectedTabId();\n @let tabLoaded = keepTabContent() || selected;\n @let tabHidden = keepTabContent() && !selected;\n @if (tabLoaded) {\n <div\n class=\"w-full h-full outline-none\"\n [class.hidden]=\"tabHidden\"\n role=\"tabpanel\"\n [id]=\"tab.id + '-panel'\"\n tabindex=\"0\"\n (keydown)=\"handlePanelKeyDown($event)\"\n [attr.aria-hidden]=\"tabHidden\"\n [attr.aria-labelledby]=\"tab.id + '-tab'\">\n <ng-container [ngTemplateOutlet]=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TabListComponent, selector: "mona-tab-list", inputs: ["closable", "disabled", "rounded", "selectedTabId", "size", "tabList"], outputs: ["selectedTabIdChange", "tabClose", "tabSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
647
643
  }
648
644
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TabsComponent, decorators: [{
649
645
  type: Component,
650
646
  args: [{ selector: "mona-tabs", changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, TabListComponent], host: {
651
647
  "[class]": "baseClass()"
652
- }, template: "<mona-tab-list\r\n [closable]=\"closable()\"\r\n [disabled]=\"disabled()\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n [tabList]=\"tabList()\"\r\n [selectedTabId]=\"selectedTabId()\"\r\n (selectedTabIdChange)=\"selectedTabId.set($event)\"\r\n (tabClose)=\"tabClose.emit($event)\"\r\n (tabSelect)=\"tabSelect.emit($event)\"></mona-tab-list>\r\n<div [class]=\"contentClass()\">\r\n @for (tab of tabList(); track tab) {\r\n @let selected = tab.id === selectedTabId();\r\n @let tabLoaded = keepTabContent() || selected;\r\n @let tabHidden = keepTabContent() && !selected;\r\n @if (tabLoaded) {\r\n <div\r\n class=\"w-full h-full outline-none\"\r\n [class.hidden]=\"tabHidden\"\r\n role=\"tabpanel\"\r\n [id]=\"tab.id + '-panel'\"\r\n tabindex=\"0\"\r\n (keydown)=\"handlePanelKeyDown($event)\"\r\n [attr.aria-hidden]=\"tabHidden\"\r\n [attr.aria-labelledby]=\"tab.id + '-tab'\">\r\n <ng-container [ngTemplateOutlet]=\"tab.contentTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n" }]
648
+ }, template: "<mona-tab-list\n [closable]=\"closable()\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [tabList]=\"tabList()\"\n [selectedTabId]=\"selectedTabId()\"\n (selectedTabIdChange)=\"selectedTabId.set($event)\"\n (tabClose)=\"tabClose.emit($event)\"\n (tabSelect)=\"tabSelect.emit($event)\"></mona-tab-list>\n<div [class]=\"contentClass()\">\n @for (tab of tabList(); track tab) {\n @let selected = tab.id === selectedTabId();\n @let tabLoaded = keepTabContent() || selected;\n @let tabHidden = keepTabContent() && !selected;\n @if (tabLoaded) {\n <div\n class=\"w-full h-full outline-none\"\n [class.hidden]=\"tabHidden\"\n role=\"tabpanel\"\n [id]=\"tab.id + '-panel'\"\n tabindex=\"0\"\n (keydown)=\"handlePanelKeyDown($event)\"\n [attr.aria-hidden]=\"tabHidden\"\n [attr.aria-labelledby]=\"tab.id + '-tab'\">\n <ng-container [ngTemplateOutlet]=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n }\n</div>\n" }]
653
649
  }], propDecorators: { tabListComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TabListComponent), { isSignal: true }] }], tabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TabComponent), { isSignal: true }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], keepTabContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepTabContent", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], tabClose: [{ type: i0.Output, args: ["tabClose"] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
654
650
 
655
651
  /*
@@ -4,28 +4,28 @@ import { twMerge } from 'tailwind-merge';
4
4
  import { ThemeService } from '@nanahoshi/mona-ui/theme';
5
5
  import { cva } from 'class-variance-authority';
6
6
 
7
- const textAreaVariants = cva(`
8
- bg-input-background
9
-
10
- border border-input-border outline-none
11
- selection:bg-primary selection:text-primary-foreground
12
- transition-[color,box-shadow,border] ease-in-out duration-300
13
-
14
- shadow-xs
15
- px-2 py-1 text-sm
16
-
17
- placeholder:text-muted-foreground
18
-
19
- focus-visible:ring-2 focus-visible:ring-primary/40
20
- focus-visible:border-primary
21
-
22
- disabled:pointer-events-none disabled:opacity-50
23
- disabled:cursor-not-allowed disabled:select-none
24
-
25
- [&.ng-touched.ng-invalid]:border-error
26
- [&.ng-touched.ng-invalid]:ring-error/40
27
- data-[invalid='true']:border-error
28
- data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
7
+ const textAreaVariants = cva(`
8
+ bg-input-background
9
+
10
+ border border-input-border outline-none
11
+ selection:bg-primary selection:text-primary-foreground
12
+ transition-[color,box-shadow,border] ease-in-out duration-300
13
+
14
+ shadow-xs
15
+ px-2 py-1 text-sm
16
+
17
+ placeholder:text-muted-foreground
18
+
19
+ focus-visible:ring-2 focus-visible:ring-primary/40
20
+ focus-visible:border-primary
21
+
22
+ disabled:pointer-events-none disabled:opacity-50
23
+ disabled:cursor-not-allowed disabled:select-none
24
+
25
+ [&.ng-touched.ng-invalid]:border-error
26
+ [&.ng-touched.ng-invalid]:ring-error/40
27
+ data-[invalid='true']:border-error
28
+ data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
29
29
  `, {
30
30
  variants: {
31
31
  rounded: {
@@ -32,31 +32,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
32
32
  }]
33
33
  }] });
34
34
 
35
- const textBoxVariants = cva(`
36
- flex items-center w-full min-w-0
37
- overflow-hidden
38
-
39
- bg-input-background
40
- border border-input-border outline-none
41
- selection:bg-primary selection:text-primary-foreground
42
-
43
- transition-[color,box-shadow,border] ease-in-out duration-300
44
-
45
- data-[disabled='true']:pointer-events-none
46
- data-[disabled='true']:cursor-not-allowed
47
- data-[disabled='true']:opacity-50
48
-
49
- focus-within:ring-2 focus-within:ring-primary/40
50
- focus-within:border-primary
51
-
52
- [&>input]:w-full [&>input]:h-full
53
- [&>input]:bg-transparent
54
- [&>input]:border-0 [&>input]:outline-none
55
- [&>input]:placeholder:text-muted-foreground
56
- [&>input]:px-2
57
-
58
- data-[invalid='true']:border-error
59
- data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
35
+ const textBoxVariants = cva(`
36
+ flex items-center w-full min-w-0
37
+ overflow-hidden
38
+
39
+ bg-input-background text-foreground
40
+ border border-input-border outline-none
41
+ selection:bg-primary selection:text-primary-foreground
42
+
43
+ transition-[color,box-shadow,border] ease-in-out duration-300
44
+
45
+ data-[disabled='true']:pointer-events-none
46
+ data-[disabled='true']:cursor-not-allowed
47
+ data-[disabled='true']:opacity-50
48
+
49
+ focus-within:ring-2 focus-within:ring-primary/40
50
+ focus-within:border-primary
51
+
52
+ [&>input]:w-full [&>input]:h-full
53
+ [&>input]:bg-transparent
54
+ [&>input]:border-0 [&>input]:outline-none
55
+ [&>input]:placeholder:text-muted-foreground
56
+ [&>input]:px-2
57
+
58
+ data-[invalid='true']:border-error
59
+ data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
60
60
  `, {
61
61
  variants: {
62
62
  rounded: {
@@ -73,33 +73,33 @@ const textBoxVariants = cva(`
73
73
  }
74
74
  }
75
75
  });
76
- const inputVariants = cva(`
77
- bg-input-background
78
- px-2
79
-
80
- border border-input-border outline-none
81
- selection:bg-primary selection:text-primary-foreground
82
-
83
- transition-[color,box-shadow,border] ease-in-out duration-300
84
-
85
- shadow-xs
86
-
87
- file:text-foreground
88
- file:inline-flex file:border-0
89
- file:bg-transparent file:text-xs
90
- file:font-medium
91
-
92
- placeholder:text-muted-foreground
93
-
94
- disabled:pointer-events-none
95
- disabled:cursor-not-allowed
96
- disabled:opacity-50
97
-
98
- focus-visible:ring-2 focus-visible:ring-primary/40
99
- focus-visible:border-primary
100
-
101
- [&.ng-touched.ng-invalid]:border-error
102
- [&.ng-touched.ng-invalid]:ring-error/40
76
+ const inputVariants = cva(`
77
+ bg-input-background
78
+ px-2
79
+
80
+ border border-input-border outline-none
81
+ selection:bg-primary selection:text-primary-foreground
82
+
83
+ transition-[color,box-shadow,border] ease-in-out duration-300
84
+
85
+ shadow-xs
86
+
87
+ file:text-foreground
88
+ file:inline-flex file:border-0
89
+ file:bg-transparent file:text-xs
90
+ file:font-medium
91
+
92
+ placeholder:text-muted-foreground
93
+
94
+ disabled:pointer-events-none
95
+ disabled:cursor-not-allowed
96
+ disabled:opacity-50
97
+
98
+ focus-visible:ring-2 focus-visible:ring-primary/40
99
+ focus-visible:border-primary
100
+
101
+ [&.ng-touched.ng-invalid]:border-error
102
+ [&.ng-touched.ng-invalid]:ring-error/40
103
103
  `, {
104
104
  variants: {
105
105
  rounded: {
@@ -300,7 +300,7 @@ class TextBoxComponent {
300
300
  this.touch.emit();
301
301
  }
302
302
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TextBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
303
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TextBoxComponent, isStandalone: true, selector: "mona-text-box", inputs: { clearButton: { classPropertyName: "clearButton", publicName: "clearButton", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputAttributes: { classPropertyName: "inputAttributes", publicName: "inputAttributes", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", 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 }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputBlur: "inputBlur", inputFocus: "inputFocus", touch: "touch", value: "valueChange" }, host: { properties: { "attr.data-disabled": "disabled() || null", "attr.data-readonly": "readonly() || null", "attr.data-required": "required() || null", "attr.data-invalid": "invalidInput() || null", "class": "classes()" } }, queries: [{ propertyName: "prefixTemplateList", predicate: TextBoxPrefixTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "suffixTemplateList", predicate: TextBoxSuffixTemplateDirective, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "@for (prefixTemplate of prefixTemplateList(); track $index) {\r\n <span class=\"flex items-center flex-wrap h-full\">\r\n <ng-container *ngTemplateOutlet=\"prefixTemplate\"></ng-container>\r\n </span>\r\n}\r\n<input\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [required]=\"required()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n [class]=\"inputClass()\"\r\n [style]=\"inputStyle()\"\r\n [attr.aria-invalid]=\"invalidInput() ? 'true' : null\"\r\n [monaAttributeBinder]=\"inputAttributes()\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n (focus)=\"inputFocus.emit($event)\"\r\n #input />\r\n\r\n@let textBoxValue = value();\r\n@if (clearButton() && textBoxValue && textBoxValue.length !== 0) {\r\n <button monaButton look=\"link\" size=\"small\" class=\"p-0 mr-2\" aria-label=\"Clear\" (click)=\"onClearClick()\">\r\n <svg lucideX class=\"opacity-50 size-4 hover:opacity-90\"></svg>\r\n </button>\r\n}\r\n\r\n@for (suffixTemplate of suffixTemplateList(); track $index) {\r\n <span class=\"flex items-center flex-wrap h-full\">\r\n <ng-container *ngTemplateOutlet=\"suffixTemplate\"></ng-container>\r\n </span>\r\n}\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "directive", type: AttributeBinderDirective, selector: "[monaAttributeBinder]", inputs: ["monaAttributeBinder"] }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }] }); }
303
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TextBoxComponent, isStandalone: true, selector: "mona-text-box", inputs: { clearButton: { classPropertyName: "clearButton", publicName: "clearButton", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputAttributes: { classPropertyName: "inputAttributes", publicName: "inputAttributes", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", 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 }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputBlur: "inputBlur", inputFocus: "inputFocus", touch: "touch", value: "valueChange" }, host: { properties: { "attr.data-disabled": "disabled() || null", "attr.data-readonly": "readonly() || null", "attr.data-required": "required() || null", "attr.data-invalid": "invalidInput() || null", "class": "classes()" } }, queries: [{ propertyName: "prefixTemplateList", predicate: TextBoxPrefixTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "suffixTemplateList", predicate: TextBoxSuffixTemplateDirective, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "@for (prefixTemplate of prefixTemplateList(); track $index) {\n <span class=\"flex items-center flex-wrap h-full\">\n <ng-container *ngTemplateOutlet=\"prefixTemplate\"></ng-container>\n </span>\n}\n<input\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [placeholder]=\"placeholder()\"\n [type]=\"type()\"\n [class]=\"inputClass()\"\n [style]=\"inputStyle()\"\n [attr.aria-invalid]=\"invalidInput() ? 'true' : null\"\n [monaAttributeBinder]=\"inputAttributes()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"inputFocus.emit($event)\"\n #input />\n\n@let textBoxValue = value();\n@if (clearButton() && textBoxValue && textBoxValue.length !== 0) {\n <button monaButton look=\"link\" size=\"small\" class=\"p-0 mr-2\" aria-label=\"Clear\" (click)=\"onClearClick()\">\n <svg lucideX class=\"opacity-50 size-4 hover:opacity-90\"></svg>\n </button>\n}\n\n@for (suffixTemplate of suffixTemplateList(); track $index) {\n <span class=\"flex items-center flex-wrap h-full\">\n <ng-container *ngTemplateOutlet=\"suffixTemplate\"></ng-container>\n </span>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "directive", type: AttributeBinderDirective, selector: "[monaAttributeBinder]", inputs: ["monaAttributeBinder"] }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }] }); }
304
304
  }
305
305
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TextBoxComponent, decorators: [{
306
306
  type: Component,
@@ -310,7 +310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
310
310
  "[attr.data-required]": "required() || null",
311
311
  "[attr.data-invalid]": "invalidInput() || null",
312
312
  "[class]": "classes()"
313
- }, template: "@for (prefixTemplate of prefixTemplateList(); track $index) {\r\n <span class=\"flex items-center flex-wrap h-full\">\r\n <ng-container *ngTemplateOutlet=\"prefixTemplate\"></ng-container>\r\n </span>\r\n}\r\n<input\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [required]=\"required()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n [class]=\"inputClass()\"\r\n [style]=\"inputStyle()\"\r\n [attr.aria-invalid]=\"invalidInput() ? 'true' : null\"\r\n [monaAttributeBinder]=\"inputAttributes()\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n (focus)=\"inputFocus.emit($event)\"\r\n #input />\r\n\r\n@let textBoxValue = value();\r\n@if (clearButton() && textBoxValue && textBoxValue.length !== 0) {\r\n <button monaButton look=\"link\" size=\"small\" class=\"p-0 mr-2\" aria-label=\"Clear\" (click)=\"onClearClick()\">\r\n <svg lucideX class=\"opacity-50 size-4 hover:opacity-90\"></svg>\r\n </button>\r\n}\r\n\r\n@for (suffixTemplate of suffixTemplateList(); track $index) {\r\n <span class=\"flex items-center flex-wrap h-full\">\r\n <ng-container *ngTemplateOutlet=\"suffixTemplate\"></ng-container>\r\n </span>\r\n}\r\n" }]
313
+ }, template: "@for (prefixTemplate of prefixTemplateList(); track $index) {\n <span class=\"flex items-center flex-wrap h-full\">\n <ng-container *ngTemplateOutlet=\"prefixTemplate\"></ng-container>\n </span>\n}\n<input\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [placeholder]=\"placeholder()\"\n [type]=\"type()\"\n [class]=\"inputClass()\"\n [style]=\"inputStyle()\"\n [attr.aria-invalid]=\"invalidInput() ? 'true' : null\"\n [monaAttributeBinder]=\"inputAttributes()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"inputFocus.emit($event)\"\n #input />\n\n@let textBoxValue = value();\n@if (clearButton() && textBoxValue && textBoxValue.length !== 0) {\n <button monaButton look=\"link\" size=\"small\" class=\"p-0 mr-2\" aria-label=\"Clear\" (click)=\"onClearClick()\">\n <svg lucideX class=\"opacity-50 size-4 hover:opacity-90\"></svg>\n </button>\n}\n\n@for (suffixTemplate of suffixTemplateList(); track $index) {\n <span class=\"flex items-center flex-wrap h-full\">\n <ng-container *ngTemplateOutlet=\"suffixTemplate\"></ng-container>\n </span>\n}\n" }]
314
314
  }], propDecorators: { inputRef: [{ type: i0.ViewChild, args: ["input", { isSignal: true }] }], prefixTemplateList: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextBoxPrefixTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], suffixTemplateList: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextBoxSuffixTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], clearButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearButton", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], inputAttributes: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputAttributes", required: false }] }], inputBlur: [{ type: i0.Output, args: ["inputBlur"] }], inputFocus: [{ type: i0.Output, args: ["inputFocus"] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }], inputStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyle", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
315
315
 
316
316
  class TextBoxDirective {
@@ -2,7 +2,6 @@ import { CdkTrapFocus } from '@angular/cdk/a11y';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, DestroyRef, ElementRef, computed, linkedSignal, signal, viewChild, output, input, model, afterNextRender, effect, untracked, forwardRef, Component } from '@angular/core';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
- import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
6
5
  import { ButtonDirective } from '@nanahoshi/mona-ui/button';
7
6
  import * as i1 from '@nanahoshi/mona-ui/dropdowns';
8
7
  import { DropdownService, dropdownPopupThemeVariants, DropdownPopupInputToken, DropdownPopupHandlerDirective } from '@nanahoshi/mona-ui/dropdowns';
@@ -15,14 +14,14 @@ import { fromEvent } from 'rxjs';
15
14
  import { twMerge } from 'tailwind-merge';
16
15
  import { cva } from 'class-variance-authority';
17
16
 
18
- const timePickerBaseVariants = cva(`
19
- flex items-center w-full
20
- border border-border
21
- focus-within:ring-2 focus-within:ring-primary/40 focus-within:border-primary
22
- data-[invalid='true']:border-error
23
- data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
24
- [&_mona-text-box]:h-full
25
- [&_mona-text-box]:border-none
17
+ const timePickerBaseVariants = cva(`
18
+ flex items-center w-full
19
+ border border-border
20
+ focus-within:ring-2 focus-within:ring-primary/40 focus-within:border-primary
21
+ data-[invalid='true']:border-error
22
+ data-[invalid='true']:ring-2 data-[invalid='true']:ring-error/40
23
+ [&_mona-text-box]:h-full
24
+ [&_mona-text-box]:border-none
26
25
  `, {
27
26
  variants: {
28
27
  focused: {
@@ -410,7 +409,7 @@ class TimePickerComponent {
410
409
  useExisting: forwardRef(() => TimePickerComponent),
411
410
  multi: false
412
411
  }
413
- ], viewQueries: [{ propertyName: "timePopupTemplateRef", first: true, predicate: ["timePopupTemplate"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.DropdownPopupHandlerDirective }], ngImport: i0, template: "<mona-text-box\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly() || readonlyInput()\"\r\n [required]=\"required()\"\r\n [value]=\"currentDateString()\"\r\n [inputAttributes]=\"inputAttributes()\"\r\n [invalid]=\"invalid()\"\r\n [placeholder]=\"placeholder()\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n [touched]=\"touched()\"\r\n [clearButton]=\"showClearButton()\"\r\n (valueChange)=\"onDateStringEdit($event)\"\r\n (inputBlur)=\"onTimeInputBlur()\">\r\n <ng-template monaTextBoxSuffixTemplate>\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [iconOnly]=\"true\"\r\n [size]=\"size()\"\r\n [rounded]=\"'none'\"\r\n (click)=\"onTimeInputButtonClick()\"\r\n class=\"h-full w-auto aspect-square\"\r\n [attr.aria-label]=\"'Open time picker'\"\r\n [attr.aria-expanded]=\"expanded()\"\r\n [attr.aria-controls]=\"popupId\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [tabindex]=\"-1\">\r\n <i class=\"ri-time-line\"></i>\r\n </button>\r\n </ng-template>\r\n</mona-text-box>\r\n\r\n<ng-template #timePopupTemplate>\r\n <div\r\n [class]=\"pickerPopupClass()\"\r\n [id]=\"popupId\"\r\n aria-modal=\"true\"\r\n role=\"dialog\"\r\n aria-label=\"Time picker\"\r\n cdkTrapFocus>\r\n <mona-time-selector\r\n [value]=\"value()\"\r\n (valueChange)=\"onTimeSelectorValueChange($event)\"\r\n [max]=\"max()\"\r\n [min]=\"min()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [hourFormat]=\"hourFormat()\"\r\n [hourStep]=\"hourStep()\"\r\n [minuteStep]=\"minuteStep()\"\r\n [secondStep]=\"secondStep()\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [showSeconds]=\"showSeconds()\"></mona-time-selector>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ 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: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: TimeSelectorComponent, selector: "mona-time-selector", inputs: ["ariaLabel", "disabled", "focusOnMount", "footer", "hourFormat", "hourStep", "invalid", "max", "min", "minuteStep", "readonly", "required", "rounded", "secondStep", "showSeconds", "size", "touched", "value"], outputs: ["touch", "valueChange"] }, { 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: "directive", type: TextBoxSuffixTemplateDirective, selector: "ng-template[monaTextBoxSuffixTemplate]" }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] }); }
412
+ ], viewQueries: [{ propertyName: "timePopupTemplateRef", first: true, predicate: ["timePopupTemplate"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.DropdownPopupHandlerDirective }], ngImport: i0, template: "<mona-text-box\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || readonlyInput()\"\n [required]=\"required()\"\n [value]=\"currentDateString()\"\n [inputAttributes]=\"inputAttributes()\"\n [invalid]=\"invalid()\"\n [placeholder]=\"placeholder()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [touched]=\"touched()\"\n [clearButton]=\"showClearButton()\"\n (valueChange)=\"onDateStringEdit($event)\"\n (inputBlur)=\"onTimeInputBlur()\">\n <ng-template monaTextBoxSuffixTemplate>\n <button\n monaButton\n look=\"ghost\"\n [iconOnly]=\"true\"\n [size]=\"size()\"\n [rounded]=\"'none'\"\n (click)=\"onTimeInputButtonClick()\"\n class=\"h-full w-auto aspect-square\"\n [attr.aria-label]=\"'Open time picker'\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"popupId\"\n [disabled]=\"disabled() || readonly()\"\n [tabindex]=\"-1\">\n <i class=\"ri-time-line\"></i>\n </button>\n </ng-template>\n</mona-text-box>\n\n<ng-template #timePopupTemplate>\n <div\n [class]=\"pickerPopupClass()\"\n [id]=\"popupId\"\n aria-modal=\"true\"\n role=\"dialog\"\n aria-label=\"Time picker\"\n cdkTrapFocus>\n <mona-time-selector\n [value]=\"value()\"\n (valueChange)=\"onTimeSelectorValueChange($event)\"\n [max]=\"max()\"\n [min]=\"min()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [hourFormat]=\"hourFormat()\"\n [hourStep]=\"hourStep()\"\n [minuteStep]=\"minuteStep()\"\n [secondStep]=\"secondStep()\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [showSeconds]=\"showSeconds()\"></mona-time-selector>\n </div>\n</ng-template>\n", dependencies: [{ 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: "component", type: TimeSelectorComponent, selector: "mona-time-selector", inputs: ["ariaLabel", "disabled", "focusOnMount", "footer", "hourFormat", "hourStep", "invalid", "max", "min", "minuteStep", "readonly", "required", "rounded", "secondStep", "showSeconds", "size", "touched", "value"], outputs: ["touch", "valueChange"] }, { 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: "directive", type: TextBoxSuffixTemplateDirective, selector: "ng-template[monaTextBoxSuffixTemplate]" }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] }); }
414
413
  }
415
414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TimePickerComponent, decorators: [{
416
415
  type: Component,
@@ -421,21 +420,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
421
420
  useExisting: forwardRef(() => TimePickerComponent),
422
421
  multi: false
423
422
  }
424
- ], imports: [
425
- ButtonDirective,
426
- FontAwesomeModule,
427
- TimeSelectorComponent,
428
- TextBoxComponent,
429
- TextBoxSuffixTemplateDirective,
430
- CdkTrapFocus
431
- ], hostDirectives: [DropdownPopupHandlerDirective], host: {
423
+ ], imports: [ButtonDirective, TimeSelectorComponent, TextBoxComponent, TextBoxSuffixTemplateDirective, CdkTrapFocus], hostDirectives: [DropdownPopupHandlerDirective], host: {
432
424
  "[attr.tabindex]": "disabled() ? null : -1",
433
425
  "[attr.aria-invalid]": "invalidState() ? 'true' : null",
434
426
  "[attr.data-expanded]": "expanded()",
435
427
  "[attr.data-invalid]": "invalidState() || null",
436
428
  "[class]": "baseClass()",
437
429
  "(blur)": "onTimeInputBlur()"
438
- }, template: "<mona-text-box\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly() || readonlyInput()\"\r\n [required]=\"required()\"\r\n [value]=\"currentDateString()\"\r\n [inputAttributes]=\"inputAttributes()\"\r\n [invalid]=\"invalid()\"\r\n [placeholder]=\"placeholder()\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n [touched]=\"touched()\"\r\n [clearButton]=\"showClearButton()\"\r\n (valueChange)=\"onDateStringEdit($event)\"\r\n (inputBlur)=\"onTimeInputBlur()\">\r\n <ng-template monaTextBoxSuffixTemplate>\r\n <button\r\n monaButton\r\n look=\"ghost\"\r\n [iconOnly]=\"true\"\r\n [size]=\"size()\"\r\n [rounded]=\"'none'\"\r\n (click)=\"onTimeInputButtonClick()\"\r\n class=\"h-full w-auto aspect-square\"\r\n [attr.aria-label]=\"'Open time picker'\"\r\n [attr.aria-expanded]=\"expanded()\"\r\n [attr.aria-controls]=\"popupId\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [tabindex]=\"-1\">\r\n <i class=\"ri-time-line\"></i>\r\n </button>\r\n </ng-template>\r\n</mona-text-box>\r\n\r\n<ng-template #timePopupTemplate>\r\n <div\r\n [class]=\"pickerPopupClass()\"\r\n [id]=\"popupId\"\r\n aria-modal=\"true\"\r\n role=\"dialog\"\r\n aria-label=\"Time picker\"\r\n cdkTrapFocus>\r\n <mona-time-selector\r\n [value]=\"value()\"\r\n (valueChange)=\"onTimeSelectorValueChange($event)\"\r\n [max]=\"max()\"\r\n [min]=\"min()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [hourFormat]=\"hourFormat()\"\r\n [hourStep]=\"hourStep()\"\r\n [minuteStep]=\"minuteStep()\"\r\n [secondStep]=\"secondStep()\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n [showSeconds]=\"showSeconds()\"></mona-time-selector>\r\n </div>\r\n</ng-template>\r\n" }]
430
+ }, template: "<mona-text-box\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || readonlyInput()\"\n [required]=\"required()\"\n [value]=\"currentDateString()\"\n [inputAttributes]=\"inputAttributes()\"\n [invalid]=\"invalid()\"\n [placeholder]=\"placeholder()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [touched]=\"touched()\"\n [clearButton]=\"showClearButton()\"\n (valueChange)=\"onDateStringEdit($event)\"\n (inputBlur)=\"onTimeInputBlur()\">\n <ng-template monaTextBoxSuffixTemplate>\n <button\n monaButton\n look=\"ghost\"\n [iconOnly]=\"true\"\n [size]=\"size()\"\n [rounded]=\"'none'\"\n (click)=\"onTimeInputButtonClick()\"\n class=\"h-full w-auto aspect-square\"\n [attr.aria-label]=\"'Open time picker'\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"popupId\"\n [disabled]=\"disabled() || readonly()\"\n [tabindex]=\"-1\">\n <i class=\"ri-time-line\"></i>\n </button>\n </ng-template>\n</mona-text-box>\n\n<ng-template #timePopupTemplate>\n <div\n [class]=\"pickerPopupClass()\"\n [id]=\"popupId\"\n aria-modal=\"true\"\n role=\"dialog\"\n aria-label=\"Time picker\"\n cdkTrapFocus>\n <mona-time-selector\n [value]=\"value()\"\n (valueChange)=\"onTimeSelectorValueChange($event)\"\n [max]=\"max()\"\n [min]=\"min()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [hourFormat]=\"hourFormat()\"\n [hourStep]=\"hourStep()\"\n [minuteStep]=\"minuteStep()\"\n [secondStep]=\"secondStep()\"\n [size]=\"size()\"\n [rounded]=\"rounded()\"\n [showSeconds]=\"showSeconds()\"></mona-time-selector>\n </div>\n</ng-template>\n" }]
439
431
  }], ctorParameters: () => [], propDecorators: { timePopupTemplateRef: [{ type: i0.ViewChild, args: ["timePopupTemplate", { isSignal: true }] }], close: [{ type: i0.Output, args: ["close"] }], closed: [{ type: i0.Output, args: ["closed"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], hourFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourFormat", required: false }] }], hourStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourStep", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], minuteStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteStep", required: false }] }], open: [{ type: i0.Output, args: ["open"] }], opened: [{ type: i0.Output, args: ["opened"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], popupClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupClass", required: false }] }], popupHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeight", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], readonlyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonlyInput", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], secondStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondStep", required: false }] }], showClearButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClearButton", required: false }] }], showSeconds: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSeconds", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
440
432
 
441
433
  /*