@cdevhub/ngx-tw 0.2.0 → 0.3.0

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 (144) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +35 -22
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +416 -216
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +152 -81
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +42 -29
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +205 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +141 -74
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +395 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +142 -72
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +227 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +47 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +102 -52
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +16 -8
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +100 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/package.json +45 -17
  121. package/theme/_dark.css +16 -12
  122. package/theme/_semantic.css +3 -2
  123. package/theme/index.css +10 -2
  124. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  125. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  126. package/types/cdevhub-ngx-tw-code-block.d.ts +8 -7
  127. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  128. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  129. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  130. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  131. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  132. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  133. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  134. package/types/cdevhub-ngx-tw-select.d.ts +1 -1
  135. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  136. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  137. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  138. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  139. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  140. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  141. package/types/cdevhub-ngx-tw-toast.d.ts +1 -1
  142. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  143. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  144. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -130,11 +130,12 @@ function findLastEnabled(items) {
130
130
  /** Optional explicit grouping wrapper. Items placed inside inherit its label. */
131
131
  class CommandPaletteGroupDirective {
132
132
  /** Group heading text shown above the items. Required. */
133
- label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
134
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
135
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: CommandPaletteGroupDirective, isStandalone: true, selector: "[twCommandPaletteGroup]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
133
+ label = input.required(/* @ts-ignore */
134
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
136
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: CommandPaletteGroupDirective, isStandalone: true, selector: "[twCommandPaletteGroup]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
136
137
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteGroupDirective, decorators: [{
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteGroupDirective, decorators: [{
138
139
  type: Directive,
139
140
  args: [{
140
141
  selector: '[twCommandPaletteGroup]',
@@ -144,25 +145,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
144
145
  /** A declarative palette item. Consumers project its rendered content as children. */
145
146
  class CommandPaletteItemDirective {
146
147
  /** Stable identifier for the item. Used as DOM id and in selection payloads. Required. */
147
- id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
148
+ id = input.required(/* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
148
150
  /** Plain-text label used for filtering and default rendering. Defaults to `''`. */
149
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
151
+ label = input('', /* @ts-ignore */
152
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
150
153
  /** Additional search keywords that match the query but are not rendered. Defaults to `[]`. */
151
- keywords = input([], ...(ngDevMode ? [{ debugName: "keywords" }] : /* istanbul ignore next */ []));
154
+ keywords = input([], /* @ts-ignore */
155
+ ...(ngDevMode ? [{ debugName: "keywords" }] : /* istanbul ignore next */ []));
152
156
  /** Explicit group name. Overrides any enclosing `twCommandPaletteGroup`. Defaults to `undefined`. */
153
- group = input(undefined, ...(ngDevMode ? [{ debugName: "group" }] : /* istanbul ignore next */ []));
157
+ group = input(undefined, /* @ts-ignore */
158
+ ...(ngDevMode ? [{ debugName: "group" }] : /* istanbul ignore next */ []));
154
159
  /** Whether the item is disabled. Disabled items render but cannot be activated. Defaults to `false`. */
155
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
160
+ disabled = input(false, /* @ts-ignore */
161
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
156
162
  /** Keyboard shortcut hint. A string renders as one kbd; an array renders each key separately. Defaults to `undefined`. */
157
- shortcut = input(undefined, ...(ngDevMode ? [{ debugName: "shortcut" }] : /* istanbul ignore next */ []));
163
+ shortcut = input(undefined, /* @ts-ignore */
164
+ ...(ngDevMode ? [{ debugName: "shortcut" }] : /* istanbul ignore next */ []));
158
165
  /** Secondary description text rendered under the label. Defaults to `''`. */
159
- description = input('', ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
166
+ description = input('', /* @ts-ignore */
167
+ ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
160
168
  /** Callback run before `activated` emits. Defaults to `undefined`. */
161
- run = input(undefined, ...(ngDevMode ? [{ debugName: "run" }] : /* istanbul ignore next */ []));
169
+ run = input(undefined, /* @ts-ignore */
170
+ ...(ngDevMode ? [{ debugName: "run" }] : /* istanbul ignore next */ []));
162
171
  /** Fires when this specific item is activated (Enter or click). */
163
172
  activated = output();
164
173
  /** Projected template used by the palette overlay to render this item's content. */
165
- contentTemplate = viewChild('content', ...(ngDevMode ? [{ debugName: "contentTemplate" }] : /* istanbul ignore next */ []));
174
+ contentTemplate = viewChild('content', /* @ts-ignore */
175
+ ...(ngDevMode ? [{ debugName: "contentTemplate" }] : /* istanbul ignore next */ []));
166
176
  parentGroup = inject(CommandPaletteGroupDirective, {
167
177
  optional: true,
168
178
  skipSelf: true,
@@ -177,11 +187,12 @@ class CommandPaletteItemDirective {
177
187
  shortcut: this.shortcut(),
178
188
  description: this.description() || undefined,
179
189
  run: this.run(),
180
- }), ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
181
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
182
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.14", type: CommandPaletteItemDirective, isStandalone: true, selector: "tw-command-palette-item", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, keywords: { classPropertyName: "keywords", publicName: "keywords", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, run: { classPropertyName: "run", publicName: "run", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activated: "activated" }, host: { styleAttribute: "display: none" }, viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: `<ng-template #content><ng-content /></ng-template>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
190
+ }), /* @ts-ignore */
191
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.7", type: CommandPaletteItemDirective, isStandalone: true, selector: "tw-command-palette-item", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, keywords: { classPropertyName: "keywords", publicName: "keywords", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, run: { classPropertyName: "run", publicName: "run", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activated: "activated" }, host: { styleAttribute: "display: none" }, viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: `<ng-template #content><ng-content /></ng-template>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
183
194
  }
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteItemDirective, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteItemDirective, decorators: [{
185
196
  type: Component,
186
197
  args: [{
187
198
  selector: 'tw-command-palette-item',
@@ -195,10 +206,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
195
206
  // ── Item decoration directives ──
196
207
  /** Styles a leading icon inside a palette item. */
197
208
  class CommandPaletteItemIconDirective {
198
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteItemIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
199
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: CommandPaletteItemIconDirective, isStandalone: true, selector: "[twCommandPaletteItemIcon]", host: { classAttribute: "size-4 shrink-0 text-fg-muted" }, ngImport: i0 });
209
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteItemIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
210
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: CommandPaletteItemIconDirective, isStandalone: true, selector: "[twCommandPaletteItemIcon]", host: { classAttribute: "size-4 shrink-0 text-fg-muted" }, ngImport: i0 });
200
211
  }
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteItemIconDirective, decorators: [{
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteItemIconDirective, decorators: [{
202
213
  type: Directive,
203
214
  args: [{
204
215
  selector: '[twCommandPaletteItemIcon]',
@@ -209,10 +220,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
209
220
  }] });
210
221
  /** Styles secondary description text inside a palette item. */
211
222
  class CommandPaletteItemDescriptionDirective {
212
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteItemDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
213
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: CommandPaletteItemDescriptionDirective, isStandalone: true, selector: "[twCommandPaletteItemDescription]", host: { classAttribute: "block text-xs text-fg-muted mt-0.5 min-w-0 truncate" }, ngImport: i0 });
223
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteItemDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
224
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: CommandPaletteItemDescriptionDirective, isStandalone: true, selector: "[twCommandPaletteItemDescription]", host: { classAttribute: "block text-xs text-fg-muted mt-0.5 min-w-0 truncate" }, ngImport: i0 });
214
225
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteItemDescriptionDirective, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteItemDescriptionDirective, decorators: [{
216
227
  type: Directive,
217
228
  args: [{
218
229
  selector: '[twCommandPaletteItemDescription]',
@@ -225,10 +236,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
225
236
  /** Structural directive — consumer template rendered when no items match the query. */
226
237
  class CommandPaletteEmptyDirective {
227
238
  template = inject((TemplateRef));
228
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteEmptyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
229
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: CommandPaletteEmptyDirective, isStandalone: true, selector: "[twCommandPaletteEmpty]", ngImport: i0 });
239
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteEmptyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
240
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: CommandPaletteEmptyDirective, isStandalone: true, selector: "[twCommandPaletteEmpty]", ngImport: i0 });
230
241
  }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteEmptyDirective, decorators: [{
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteEmptyDirective, decorators: [{
232
243
  type: Directive,
233
244
  args: [{
234
245
  selector: '[twCommandPaletteEmpty]',
@@ -237,10 +248,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
237
248
  /** Structural directive — consumer template rendered as a sticky footer inside the palette. */
238
249
  class CommandPaletteFooterDirective {
239
250
  template = inject((TemplateRef));
240
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
241
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: CommandPaletteFooterDirective, isStandalone: true, selector: "[twCommandPaletteFooter]", ngImport: i0 });
251
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
252
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: CommandPaletteFooterDirective, isStandalone: true, selector: "[twCommandPaletteFooter]", ngImport: i0 });
242
253
  }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteFooterDirective, decorators: [{
254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteFooterDirective, decorators: [{
244
255
  type: Directive,
245
256
  args: [{
246
257
  selector: '[twCommandPaletteFooter]',
@@ -251,25 +262,40 @@ class CommandPaletteOverlayComponent {
251
262
  /** Host palette instance — provided via the content injector on attach. */
252
263
  palette = inject(CommandPaletteComponent);
253
264
  listId = `tw-command-palette-list-${nextPaletteId++}`;
254
- searchInputRef = viewChild('searchInput', ...(ngDevMode ? [{ debugName: "searchInputRef" }] : /* istanbul ignore next */ []));
255
- variantResult = computed(() => commandPaletteVariants({ size: this.palette.size() }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
265
+ searchInputRef = viewChild('searchInput', /* @ts-ignore */
266
+ ...(ngDevMode ? [{ debugName: "searchInputRef" }] : /* istanbul ignore next */ []));
267
+ variantResult = computed(() => commandPaletteVariants({ size: this.palette.size() }), /* @ts-ignore */
268
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
256
269
  panelClasses = computed(() => {
257
270
  const base = this.variantResult().panel();
258
271
  const custom = this.palette.panelClassResolved();
259
272
  return custom ? `${base} ${custom}` : base;
260
- }, ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
261
- searchWrapperClasses = computed(() => this.variantResult().searchWrapper(), ...(ngDevMode ? [{ debugName: "searchWrapperClasses" }] : /* istanbul ignore next */ []));
262
- searchInputClasses = computed(() => this.variantResult().searchInput(), ...(ngDevMode ? [{ debugName: "searchInputClasses" }] : /* istanbul ignore next */ []));
263
- searchIconClasses = computed(() => this.variantResult().searchIcon(), ...(ngDevMode ? [{ debugName: "searchIconClasses" }] : /* istanbul ignore next */ []));
264
- listClasses = computed(() => this.variantResult().list(), ...(ngDevMode ? [{ debugName: "listClasses" }] : /* istanbul ignore next */ []));
265
- groupHeaderClasses = computed(() => this.variantResult().groupHeader(), ...(ngDevMode ? [{ debugName: "groupHeaderClasses" }] : /* istanbul ignore next */ []));
266
- itemBodyClasses = computed(() => this.variantResult().itemBody(), ...(ngDevMode ? [{ debugName: "itemBodyClasses" }] : /* istanbul ignore next */ []));
267
- itemLabelClasses = computed(() => this.variantResult().itemLabel(), ...(ngDevMode ? [{ debugName: "itemLabelClasses" }] : /* istanbul ignore next */ []));
268
- itemDescriptionClasses = computed(() => this.variantResult().itemDescription(), ...(ngDevMode ? [{ debugName: "itemDescriptionClasses" }] : /* istanbul ignore next */ []));
269
- itemShortcutClasses = computed(() => this.variantResult().itemShortcut(), ...(ngDevMode ? [{ debugName: "itemShortcutClasses" }] : /* istanbul ignore next */ []));
270
- itemKbdClasses = computed(() => this.variantResult().itemKbd(), ...(ngDevMode ? [{ debugName: "itemKbdClasses" }] : /* istanbul ignore next */ []));
271
- emptyClasses = computed(() => this.variantResult().empty(), ...(ngDevMode ? [{ debugName: "emptyClasses" }] : /* istanbul ignore next */ []));
272
- footerClasses = computed(() => this.variantResult().footer(), ...(ngDevMode ? [{ debugName: "footerClasses" }] : /* istanbul ignore next */ []));
273
+ }, /* @ts-ignore */
274
+ ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
275
+ searchWrapperClasses = computed(() => this.variantResult().searchWrapper(), /* @ts-ignore */
276
+ ...(ngDevMode ? [{ debugName: "searchWrapperClasses" }] : /* istanbul ignore next */ []));
277
+ searchInputClasses = computed(() => this.variantResult().searchInput(), /* @ts-ignore */
278
+ ...(ngDevMode ? [{ debugName: "searchInputClasses" }] : /* istanbul ignore next */ []));
279
+ searchIconClasses = computed(() => this.variantResult().searchIcon(), /* @ts-ignore */
280
+ ...(ngDevMode ? [{ debugName: "searchIconClasses" }] : /* istanbul ignore next */ []));
281
+ listClasses = computed(() => this.variantResult().list(), /* @ts-ignore */
282
+ ...(ngDevMode ? [{ debugName: "listClasses" }] : /* istanbul ignore next */ []));
283
+ groupHeaderClasses = computed(() => this.variantResult().groupHeader(), /* @ts-ignore */
284
+ ...(ngDevMode ? [{ debugName: "groupHeaderClasses" }] : /* istanbul ignore next */ []));
285
+ itemBodyClasses = computed(() => this.variantResult().itemBody(), /* @ts-ignore */
286
+ ...(ngDevMode ? [{ debugName: "itemBodyClasses" }] : /* istanbul ignore next */ []));
287
+ itemLabelClasses = computed(() => this.variantResult().itemLabel(), /* @ts-ignore */
288
+ ...(ngDevMode ? [{ debugName: "itemLabelClasses" }] : /* istanbul ignore next */ []));
289
+ itemDescriptionClasses = computed(() => this.variantResult().itemDescription(), /* @ts-ignore */
290
+ ...(ngDevMode ? [{ debugName: "itemDescriptionClasses" }] : /* istanbul ignore next */ []));
291
+ itemShortcutClasses = computed(() => this.variantResult().itemShortcut(), /* @ts-ignore */
292
+ ...(ngDevMode ? [{ debugName: "itemShortcutClasses" }] : /* istanbul ignore next */ []));
293
+ itemKbdClasses = computed(() => this.variantResult().itemKbd(), /* @ts-ignore */
294
+ ...(ngDevMode ? [{ debugName: "itemKbdClasses" }] : /* istanbul ignore next */ []));
295
+ emptyClasses = computed(() => this.variantResult().empty(), /* @ts-ignore */
296
+ ...(ngDevMode ? [{ debugName: "emptyClasses" }] : /* istanbul ignore next */ []));
297
+ footerClasses = computed(() => this.variantResult().footer(), /* @ts-ignore */
298
+ ...(ngDevMode ? [{ debugName: "footerClasses" }] : /* istanbul ignore next */ []));
273
299
  itemClasses(active, disabled) {
274
300
  return commandPaletteVariants({
275
301
  size: this.palette.size(),
@@ -291,46 +317,59 @@ class CommandPaletteOverlayComponent {
291
317
  focusSearch() {
292
318
  this.searchInputRef()?.nativeElement.focus();
293
319
  }
294
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
295
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: CommandPaletteOverlayComponent, isStandalone: true, selector: "tw-command-palette-overlay", host: { properties: { "attr.data-command-palette-overlay": "\"\"", "animate.enter": "\"scale-in\"", "animate.leave": "\"scale-out\"" }, classAttribute: "fixed inset-0 flex items-start justify-center p-4 pointer-events-none origin-top" }, viewQueries: [{ propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"'true'\" [attr.aria-label]=\"palette.ariaLabel()\">\n <div [class]=\"searchWrapperClasses()\">\n <svg [class]=\"searchIconClasses()\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n [class]=\"searchInputClasses()\"\n [placeholder]=\"palette.placeholder()\"\n [value]=\"palette.query()\"\n (input)=\"onSearchInput($event)\"\n [attr.aria-label]=\"palette.searchAriaLabel()\"\n [attr.aria-expanded]=\"'true'\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"palette.activeItemId()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <div [class]=\"listClasses()\" role=\"listbox\" [id]=\"listId\">\n @if (palette.grouped().length === 0) {\n @if (palette.emptyTemplate(); as emptyTpl) {\n <div [class]=\"emptyClasses()\">\n <ng-container [ngTemplateOutlet]=\"emptyTpl\" [ngTemplateOutletContext]=\"{ $implicit: palette.query() }\" />\n </div>\n } @else {\n <div [class]=\"emptyClasses()\">No results found</div>\n }\n } @else {\n @for (group of palette.grouped(); track group.id) {\n <div role=\"group\" [attr.aria-label]=\"group.label ?? null\">\n @if (group.label) {\n <div [class]=\"groupHeaderClasses()\" role=\"presentation\">{{ group.label }}</div>\n }\n @for (item of group.items; track item.data.id) {\n <div\n [id]=\"item.data.id\"\n role=\"option\"\n [class]=\"itemClasses(item.data.id === palette.activeItemId(), item.data.disabled ?? false)\"\n [attr.aria-selected]=\"item.data.id === palette.activeItemId()\"\n [attr.aria-disabled]=\"(item.data.disabled ?? false) ? 'true' : null\"\n (click)=\"onItemClick(item)\"\n (mousemove)=\"onItemHover(item)\"\n >\n <span [class]=\"itemBodyClasses()\">\n @if (item.template; as tpl) {\n <span [class]=\"itemLabelClasses()\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </span>\n } @else {\n <span [class]=\"itemLabelClasses()\">{{ item.data.label }}</span>\n }\n @if (item.data.description) {\n <span [class]=\"itemDescriptionClasses()\">{{ item.data.description }}</span>\n }\n </span>\n @if (item.shortcutKeys.length > 0) {\n <span [class]=\"itemShortcutClasses()\" aria-hidden=\"true\">\n @for (key of item.shortcutKeys; track $index) {\n <kbd [class]=\"itemKbdClasses()\">{{ key }}</kbd>\n }\n </span>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n @if (palette.footerTemplate(); as footerTpl) {\n <div [class]=\"footerClasses()\">\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
320
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
321
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: CommandPaletteOverlayComponent, isStandalone: true, selector: "tw-command-palette-overlay", host: { properties: { "attr.data-command-palette-overlay": "\"\"", "animate.enter": "\"scale-in\"", "animate.leave": "\"scale-out\"" }, classAttribute: "fixed inset-0 flex items-start justify-center p-4 pointer-events-none origin-top" }, viewQueries: [{ propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"'true'\" [attr.aria-label]=\"palette.ariaLabel()\">\n <div [class]=\"searchWrapperClasses()\">\n <svg [class]=\"searchIconClasses()\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n [class]=\"searchInputClasses()\"\n [placeholder]=\"palette.placeholder()\"\n [value]=\"palette.query()\"\n (input)=\"onSearchInput($event)\"\n [attr.aria-label]=\"palette.searchAriaLabel()\"\n [attr.aria-expanded]=\"'true'\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"palette.activeItemId()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <div [class]=\"listClasses()\" role=\"listbox\" [id]=\"listId\">\n @if (palette.grouped().length === 0) {\n @if (palette.emptyTemplate(); as emptyTpl) {\n <div [class]=\"emptyClasses()\">\n <ng-container [ngTemplateOutlet]=\"emptyTpl\" [ngTemplateOutletContext]=\"{ $implicit: palette.query() }\" />\n </div>\n } @else {\n <div [class]=\"emptyClasses()\">No results found</div>\n }\n } @else {\n @for (group of palette.grouped(); track group.id) {\n <div role=\"group\" [attr.aria-label]=\"group.label ?? null\">\n @if (group.label) {\n <div [class]=\"groupHeaderClasses()\" role=\"presentation\">{{ group.label }}</div>\n }\n @for (item of group.items; track item.data.id) {\n <!-- ARIA activedescendant listbox: navigation lives on the search\n input above; option elements never receive DOM focus and have\n no keyboard handlers of their own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n [id]=\"item.data.id\"\n role=\"option\"\n [class]=\"itemClasses(item.data.id === palette.activeItemId(), item.data.disabled ?? false)\"\n [attr.aria-selected]=\"item.data.id === palette.activeItemId()\"\n [attr.aria-disabled]=\"(item.data.disabled ?? false) ? 'true' : null\"\n (click)=\"onItemClick(item)\"\n (mousemove)=\"onItemHover(item)\"\n >\n <span [class]=\"itemBodyClasses()\">\n @if (item.template; as tpl) {\n <span [class]=\"itemLabelClasses()\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </span>\n } @else {\n <span [class]=\"itemLabelClasses()\">{{ item.data.label }}</span>\n }\n @if (item.data.description) {\n <span [class]=\"itemDescriptionClasses()\">{{ item.data.description }}</span>\n }\n </span>\n @if (item.shortcutKeys.length > 0) {\n <span [class]=\"itemShortcutClasses()\" aria-hidden=\"true\">\n @for (key of item.shortcutKeys; track $index) {\n <kbd [class]=\"itemKbdClasses()\">{{ key }}</kbd>\n }\n </span>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n @if (palette.footerTemplate(); as footerTpl) {\n <div [class]=\"footerClasses()\">\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
296
322
  }
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteOverlayComponent, decorators: [{
323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteOverlayComponent, decorators: [{
298
324
  type: Component,
299
325
  args: [{ selector: 'tw-command-palette-overlay', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet], host: {
300
326
  class: 'fixed inset-0 flex items-start justify-center p-4 pointer-events-none origin-top',
301
327
  '[attr.data-command-palette-overlay]': '""',
302
328
  '[animate.enter]': '"scale-in"',
303
329
  '[animate.leave]': '"scale-out"',
304
- }, template: "<div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"'true'\" [attr.aria-label]=\"palette.ariaLabel()\">\n <div [class]=\"searchWrapperClasses()\">\n <svg [class]=\"searchIconClasses()\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n [class]=\"searchInputClasses()\"\n [placeholder]=\"palette.placeholder()\"\n [value]=\"palette.query()\"\n (input)=\"onSearchInput($event)\"\n [attr.aria-label]=\"palette.searchAriaLabel()\"\n [attr.aria-expanded]=\"'true'\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"palette.activeItemId()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <div [class]=\"listClasses()\" role=\"listbox\" [id]=\"listId\">\n @if (palette.grouped().length === 0) {\n @if (palette.emptyTemplate(); as emptyTpl) {\n <div [class]=\"emptyClasses()\">\n <ng-container [ngTemplateOutlet]=\"emptyTpl\" [ngTemplateOutletContext]=\"{ $implicit: palette.query() }\" />\n </div>\n } @else {\n <div [class]=\"emptyClasses()\">No results found</div>\n }\n } @else {\n @for (group of palette.grouped(); track group.id) {\n <div role=\"group\" [attr.aria-label]=\"group.label ?? null\">\n @if (group.label) {\n <div [class]=\"groupHeaderClasses()\" role=\"presentation\">{{ group.label }}</div>\n }\n @for (item of group.items; track item.data.id) {\n <div\n [id]=\"item.data.id\"\n role=\"option\"\n [class]=\"itemClasses(item.data.id === palette.activeItemId(), item.data.disabled ?? false)\"\n [attr.aria-selected]=\"item.data.id === palette.activeItemId()\"\n [attr.aria-disabled]=\"(item.data.disabled ?? false) ? 'true' : null\"\n (click)=\"onItemClick(item)\"\n (mousemove)=\"onItemHover(item)\"\n >\n <span [class]=\"itemBodyClasses()\">\n @if (item.template; as tpl) {\n <span [class]=\"itemLabelClasses()\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </span>\n } @else {\n <span [class]=\"itemLabelClasses()\">{{ item.data.label }}</span>\n }\n @if (item.data.description) {\n <span [class]=\"itemDescriptionClasses()\">{{ item.data.description }}</span>\n }\n </span>\n @if (item.shortcutKeys.length > 0) {\n <span [class]=\"itemShortcutClasses()\" aria-hidden=\"true\">\n @for (key of item.shortcutKeys; track $index) {\n <kbd [class]=\"itemKbdClasses()\">{{ key }}</kbd>\n }\n </span>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n @if (palette.footerTemplate(); as footerTpl) {\n <div [class]=\"footerClasses()\">\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\n </div>\n }\n</div>\n" }]
330
+ }, template: "<div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"'true'\" [attr.aria-label]=\"palette.ariaLabel()\">\n <div [class]=\"searchWrapperClasses()\">\n <svg [class]=\"searchIconClasses()\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n [class]=\"searchInputClasses()\"\n [placeholder]=\"palette.placeholder()\"\n [value]=\"palette.query()\"\n (input)=\"onSearchInput($event)\"\n [attr.aria-label]=\"palette.searchAriaLabel()\"\n [attr.aria-expanded]=\"'true'\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"palette.activeItemId()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <div [class]=\"listClasses()\" role=\"listbox\" [id]=\"listId\">\n @if (palette.grouped().length === 0) {\n @if (palette.emptyTemplate(); as emptyTpl) {\n <div [class]=\"emptyClasses()\">\n <ng-container [ngTemplateOutlet]=\"emptyTpl\" [ngTemplateOutletContext]=\"{ $implicit: palette.query() }\" />\n </div>\n } @else {\n <div [class]=\"emptyClasses()\">No results found</div>\n }\n } @else {\n @for (group of palette.grouped(); track group.id) {\n <div role=\"group\" [attr.aria-label]=\"group.label ?? null\">\n @if (group.label) {\n <div [class]=\"groupHeaderClasses()\" role=\"presentation\">{{ group.label }}</div>\n }\n @for (item of group.items; track item.data.id) {\n <!-- ARIA activedescendant listbox: navigation lives on the search\n input above; option elements never receive DOM focus and have\n no keyboard handlers of their own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n [id]=\"item.data.id\"\n role=\"option\"\n [class]=\"itemClasses(item.data.id === palette.activeItemId(), item.data.disabled ?? false)\"\n [attr.aria-selected]=\"item.data.id === palette.activeItemId()\"\n [attr.aria-disabled]=\"(item.data.disabled ?? false) ? 'true' : null\"\n (click)=\"onItemClick(item)\"\n (mousemove)=\"onItemHover(item)\"\n >\n <span [class]=\"itemBodyClasses()\">\n @if (item.template; as tpl) {\n <span [class]=\"itemLabelClasses()\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </span>\n } @else {\n <span [class]=\"itemLabelClasses()\">{{ item.data.label }}</span>\n }\n @if (item.data.description) {\n <span [class]=\"itemDescriptionClasses()\">{{ item.data.description }}</span>\n }\n </span>\n @if (item.shortcutKeys.length > 0) {\n <span [class]=\"itemShortcutClasses()\" aria-hidden=\"true\">\n @for (key of item.shortcutKeys; track $index) {\n <kbd [class]=\"itemKbdClasses()\">{{ key }}</kbd>\n }\n </span>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n @if (palette.footerTemplate(); as footerTpl) {\n <div [class]=\"footerClasses()\">\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\n </div>\n }\n</div>\n" }]
305
331
  }], propDecorators: { searchInputRef: [{ type: i0.ViewChild, args: ['searchInput', { isSignal: true }] }] } });
306
332
  // ── Public palette component ──
307
333
  class CommandPaletteComponent {
308
334
  /** Controls item density and padding across the palette. Defaults to `'md'`. */
309
- size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
335
+ size = input('md', /* @ts-ignore */
336
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
310
337
  /** Placeholder text shown inside the search input. Defaults to `'Type a command or search…'`. */
311
- placeholder = input('Type a command or search…', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
338
+ placeholder = input('Type a command or search…', /* @ts-ignore */
339
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
312
340
  /** Two-way bindable search query. Reads or resets the current filter. Defaults to `''`. */
313
- query = model('', ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
341
+ query = model('', /* @ts-ignore */
342
+ ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
314
343
  /** Two-way bindable open state. Setting to `true` opens the palette; closing updates it to `false`. Defaults to `false`. */
315
- open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
344
+ open = model(false, /* @ts-ignore */
345
+ ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
316
346
  /** Data-driven command list. Merged with projected items and filtered by `query`. Defaults to `[]`. */
317
- commands = input([], ...(ngDevMode ? [{ debugName: "commands" }] : /* istanbul ignore next */ []));
347
+ commands = input([], /* @ts-ignore */
348
+ ...(ngDevMode ? [{ debugName: "commands" }] : /* istanbul ignore next */ []));
318
349
  /** Custom filter function. Receives the merged item list and current query, returns the filtered result. Defaults to `undefined` (case-insensitive substring match). */
319
- filterFn = input(undefined, ...(ngDevMode ? [{ debugName: "filterFn" }] : /* istanbul ignore next */ []));
350
+ filterFn = input(undefined, /* @ts-ignore */
351
+ ...(ngDevMode ? [{ debugName: "filterFn" }] : /* istanbul ignore next */ []));
320
352
  /** Whether the palette closes automatically after an item is activated. Defaults to `true` — a command palette is a fire-and-dismiss surface; the special case is a "run many" launcher that opts out. */
321
- closeOnSelect = input(true, ...(ngDevMode ? [{ debugName: "closeOnSelect" }] : /* istanbul ignore next */ []));
353
+ closeOnSelect = input(true, /* @ts-ignore */
354
+ ...(ngDevMode ? [{ debugName: "closeOnSelect" }] : /* istanbul ignore next */ []));
322
355
  /** Whether Escape closes the palette. Defaults to `true` — Escape is the universal dismiss key for modal surfaces; the special case is a non-dismissible palette. */
323
- closeOnEscape = input(true, ...(ngDevMode ? [{ debugName: "closeOnEscape" }] : /* istanbul ignore next */ []));
356
+ closeOnEscape = input(true, /* @ts-ignore */
357
+ ...(ngDevMode ? [{ debugName: "closeOnEscape" }] : /* istanbul ignore next */ []));
324
358
  /** Whether clicking the backdrop closes the palette. Defaults to `true` — clicking outside a modal is the expected dismiss gesture; the special case is enforcing an explicit choice. */
325
- closeOnBackdropClick = input(true, ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
359
+ closeOnBackdropClick = input(true, /* @ts-ignore */
360
+ ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
326
361
  /** Whether the search input is auto-focused when the palette opens. Defaults to `true` — without auto-focus the user must click into the input before typing, defeating the keyboard-first design. */
327
- autoFocus = input(true, ...(ngDevMode ? [{ debugName: "autoFocus" }] : /* istanbul ignore next */ []));
362
+ autoFocus = input(true, /* @ts-ignore */
363
+ ...(ngDevMode ? [{ debugName: "autoFocus" }] : /* istanbul ignore next */ []));
328
364
  /** Accessible label used for the dialog role. Defaults to `'Command palette'`. */
329
- ariaLabel = input('Command palette', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
365
+ ariaLabel = input('Command palette', /* @ts-ignore */
366
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
330
367
  /** Accessible label applied to the search input (`role="combobox"`). Defaults to `'Search commands'`. */
331
- searchAriaLabel = input('Search commands', ...(ngDevMode ? [{ debugName: "searchAriaLabel" }] : /* istanbul ignore next */ []));
368
+ searchAriaLabel = input('Search commands', /* @ts-ignore */
369
+ ...(ngDevMode ? [{ debugName: "searchAriaLabel" }] : /* istanbul ignore next */ []));
332
370
  /** Additional classes appended to the overlay panel for consumer customization. Defaults to `''`. */
333
- panelClass = input('', ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
371
+ panelClass = input('', /* @ts-ignore */
372
+ ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
334
373
  /** Fires when a command is activated (via click or Enter). Payload is the resolved `CommandPaletteItem`. */
335
374
  itemSelected = output();
336
375
  /** Fires after the palette becomes fully visible. */
@@ -344,8 +383,10 @@ class CommandPaletteComponent {
344
383
  focusTrapFactory = inject(FocusTrapFactory);
345
384
  announcer = inject(LiveAnnouncer);
346
385
  declarativeItems = contentChildren(CommandPaletteItemDirective, { ...(ngDevMode ? { debugName: "declarativeItems" } : /* istanbul ignore next */ {}), descendants: true });
347
- emptyDirective = contentChild(CommandPaletteEmptyDirective, ...(ngDevMode ? [{ debugName: "emptyDirective" }] : /* istanbul ignore next */ []));
348
- footerDirective = contentChild(CommandPaletteFooterDirective, ...(ngDevMode ? [{ debugName: "footerDirective" }] : /* istanbul ignore next */ []));
386
+ emptyDirective = contentChild(CommandPaletteEmptyDirective, /* @ts-ignore */
387
+ ...(ngDevMode ? [{ debugName: "emptyDirective" }] : /* istanbul ignore next */ []));
388
+ footerDirective = contentChild(CommandPaletteFooterDirective, /* @ts-ignore */
389
+ ...(ngDevMode ? [{ debugName: "footerDirective" }] : /* istanbul ignore next */ []));
349
390
  overlayRef = null;
350
391
  overlayInstance = null;
351
392
  focusTrap = null;
@@ -354,7 +395,8 @@ class CommandPaletteComponent {
354
395
  closing = false;
355
396
  closeTimer = null;
356
397
  announceTimer = null;
357
- isAttached = signal(false, ...(ngDevMode ? [{ debugName: "isAttached" }] : /* istanbul ignore next */ []));
398
+ isAttached = signal(false, /* @ts-ignore */
399
+ ...(ngDevMode ? [{ debugName: "isAttached" }] : /* istanbul ignore next */ []));
358
400
  /** Merged (declarative + data-array) items keyed by id — declarative wins on collision. */
359
401
  allItems = computed(() => {
360
402
  const declarative = this.declarativeItems();
@@ -377,7 +419,8 @@ class CommandPaletteComponent {
377
419
  });
378
420
  }
379
421
  return [...declarativeResolved, ...arrayResolved];
380
- }, ...(ngDevMode ? [{ debugName: "allItems" }] : /* istanbul ignore next */ []));
422
+ }, /* @ts-ignore */
423
+ ...(ngDevMode ? [{ debugName: "allItems" }] : /* istanbul ignore next */ []));
381
424
  /** Items after applying the filter function. */
382
425
  filteredItems = computed(() => {
383
426
  const all = this.allItems();
@@ -395,7 +438,8 @@ class CommandPaletteComponent {
395
438
  result.push(resolved);
396
439
  }
397
440
  return result;
398
- }, ...(ngDevMode ? [{ debugName: "filteredItems" }] : /* istanbul ignore next */ []));
441
+ }, /* @ts-ignore */
442
+ ...(ngDevMode ? [{ debugName: "filteredItems" }] : /* istanbul ignore next */ []));
399
443
  /** Filtered items grouped by their `group` field. */
400
444
  grouped = computed(() => {
401
445
  const items = this.filteredItems();
@@ -413,7 +457,8 @@ class CommandPaletteComponent {
413
457
  g.items.push(item);
414
458
  }
415
459
  return groups;
416
- }, ...(ngDevMode ? [{ debugName: "grouped" }] : /* istanbul ignore next */ []));
460
+ }, /* @ts-ignore */
461
+ ...(ngDevMode ? [{ debugName: "grouped" }] : /* istanbul ignore next */ []));
417
462
  /**
418
463
  * Active item index, auto-resets to the first enabled item when the filtered
419
464
  * *id set* changes. Keyed off the id sequence (not the array reference) so a
@@ -440,20 +485,31 @@ class CommandPaletteComponent {
440
485
  const idx = this.activeIndex();
441
486
  const items = this.filteredItems();
442
487
  return items[idx]?.data.id ?? null;
443
- }, ...(ngDevMode ? [{ debugName: "activeItemId" }] : /* istanbul ignore next */ []));
488
+ }, /* @ts-ignore */
489
+ ...(ngDevMode ? [{ debugName: "activeItemId" }] : /* istanbul ignore next */ []));
444
490
  /** Template-ref of the projected empty state (if any). */
445
- emptyTemplate = computed(() => this.emptyDirective()?.template ?? null, ...(ngDevMode ? [{ debugName: "emptyTemplate" }] : /* istanbul ignore next */ []));
491
+ emptyTemplate = computed(() => this.emptyDirective()?.template ?? null, /* @ts-ignore */
492
+ ...(ngDevMode ? [{ debugName: "emptyTemplate" }] : /* istanbul ignore next */ []));
446
493
  /** Template-ref of the projected footer (if any). */
447
- footerTemplate = computed(() => this.footerDirective()?.template ?? null, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : /* istanbul ignore next */ []));
494
+ footerTemplate = computed(() => this.footerDirective()?.template ?? null, /* @ts-ignore */
495
+ ...(ngDevMode ? [{ debugName: "footerTemplate" }] : /* istanbul ignore next */ []));
448
496
  /** Resolved panel-class string (array merged into a single string). */
449
497
  panelClassResolved = computed(() => {
450
498
  const raw = this.panelClass();
451
499
  return Array.isArray(raw) ? raw.join(' ') : raw;
452
- }, ...(ngDevMode ? [{ debugName: "panelClassResolved" }] : /* istanbul ignore next */ []));
500
+ }, /* @ts-ignore */
501
+ ...(ngDevMode ? [{ debugName: "panelClassResolved" }] : /* istanbul ignore next */ []));
453
502
  constructor() {
454
503
  // React to model changes from the consumer
455
504
  effect(() => {
456
505
  const shouldOpen = this.open();
506
+ if (shouldOpen && this.closing && this.overlayInstance) {
507
+ // Reopened before the leave animation finished — cancel the pending
508
+ // close rather than letting its deferred callback write `false` back
509
+ // over the consumer's `true`. Same shape as `popover.ts`.
510
+ this.cancelPendingClose();
511
+ return;
512
+ }
457
513
  if (shouldOpen && !this.overlayInstance && !this.closing) {
458
514
  this.openPalette();
459
515
  }
@@ -684,6 +740,17 @@ class CommandPaletteComponent {
684
740
  this.overlayRef = null;
685
741
  this.overlayInstance = null;
686
742
  }
743
+ /**
744
+ * Aborts an in-flight close, leaving the palette open.
745
+ *
746
+ * The overlay is still attached (only the detach is deferred), so this
747
+ * restores the focus trap that `closePalette` tore down up front.
748
+ */
749
+ cancelPendingClose() {
750
+ this.clearCloseTimer();
751
+ this.closing = false;
752
+ this.setupFocusTrap();
753
+ }
687
754
  clearCloseTimer() {
688
755
  if (this.closeTimer !== null) {
689
756
  clearTimeout(this.closeTimer);
@@ -696,10 +763,10 @@ class CommandPaletteComponent {
696
763
  this.announceTimer = null;
697
764
  }
698
765
  }
699
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
700
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.14", type: CommandPaletteComponent, isStandalone: true, selector: "tw-command-palette", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, commands: { classPropertyName: "commands", publicName: "commands", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, searchAriaLabel: { classPropertyName: "searchAriaLabel", publicName: "searchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { query: "queryChange", open: "openChange", itemSelected: "itemSelected", opened: "opened", closed: "closed" }, host: { styleAttribute: "display: none" }, queries: [{ propertyName: "declarativeItems", predicate: CommandPaletteItemDirective, descendants: true, isSignal: true }, { propertyName: "emptyDirective", first: true, predicate: CommandPaletteEmptyDirective, descendants: true, isSignal: true }, { propertyName: "footerDirective", first: true, predicate: CommandPaletteFooterDirective, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
766
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
767
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.7", type: CommandPaletteComponent, isStandalone: true, selector: "tw-command-palette", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, commands: { classPropertyName: "commands", publicName: "commands", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, searchAriaLabel: { classPropertyName: "searchAriaLabel", publicName: "searchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { query: "queryChange", open: "openChange", itemSelected: "itemSelected", opened: "opened", closed: "closed" }, host: { styleAttribute: "display: none" }, queries: [{ propertyName: "declarativeItems", predicate: CommandPaletteItemDirective, descendants: true, isSignal: true }, { propertyName: "emptyDirective", first: true, predicate: CommandPaletteEmptyDirective, descendants: true, isSignal: true }, { propertyName: "footerDirective", first: true, predicate: CommandPaletteFooterDirective, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
701
768
  }
702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CommandPaletteComponent, decorators: [{
769
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CommandPaletteComponent, decorators: [{
703
770
  type: Component,
704
771
  args: [{
705
772
  selector: 'tw-command-palette',