@weeehaoooz/talos-ui 0.1.0 → 0.1.2

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 (187) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +115 -18
  3. package/fesm2022/weeehaoooz-talos-ui-button.mjs.map +1 -0
  4. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs +3110 -0
  5. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs.map +1 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs +2414 -0
  7. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs.map +1 -0
  8. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs +1039 -0
  9. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs.map +1 -0
  10. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs +2885 -0
  11. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs.map +1 -0
  12. package/fesm2022/weeehaoooz-talos-ui-form.mjs +10799 -0
  13. package/fesm2022/weeehaoooz-talos-ui-form.mjs.map +1 -0
  14. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +1320 -11
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +119 -72
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +22190 -15213
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -135
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +156 -7
  23. package/styles/_buttons.scss +156 -8
  24. package/styles/_dropdown.scss +438 -0
  25. package/styles/_form-controls.scss +13 -0
  26. package/styles/_progress-bar.scss +43 -0
  27. package/styles/_skeleton.scss +176 -0
  28. package/styles/_spinner.scss +58 -0
  29. package/styles/_variables.scss +37 -0
  30. package/styles/index.scss +6 -1
  31. package/types/weeehaoooz-talos-ui-button.d.ts +92 -0
  32. package/types/weeehaoooz-talos-ui-button.d.ts.map +1 -0
  33. package/types/weeehaoooz-talos-ui-data-display.d.ts +1018 -0
  34. package/types/weeehaoooz-talos-ui-data-display.d.ts.map +1 -0
  35. package/types/weeehaoooz-talos-ui-data-viz.d.ts +839 -0
  36. package/types/weeehaoooz-talos-ui-data-viz.d.ts.map +1 -0
  37. package/types/weeehaoooz-talos-ui-dropdown.d.ts +187 -0
  38. package/types/weeehaoooz-talos-ui-dropdown.d.ts.map +1 -0
  39. package/types/weeehaoooz-talos-ui-feedback.d.ts +1495 -0
  40. package/types/weeehaoooz-talos-ui-feedback.d.ts.map +1 -0
  41. package/types/weeehaoooz-talos-ui-form.d.ts +2639 -0
  42. package/types/weeehaoooz-talos-ui-form.d.ts.map +1 -0
  43. package/types/weeehaoooz-talos-ui-layout.d.ts +851 -3
  44. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -1
  45. package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
  46. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  47. package/types/weeehaoooz-talos-ui.d.ts +6949 -4137
  48. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -93
  51. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  60. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  70. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  78. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  80. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  82. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  84. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  86. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  88. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  96. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  98. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  100. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  102. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  104. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  106. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  108. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  110. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  112. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  114. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  116. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  118. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -59
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  120. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  122. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  124. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  125. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  126. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  127. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  128. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  129. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  130. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  131. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  132. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  133. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  134. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  135. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  136. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  138. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  139. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  140. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  141. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  142. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  143. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  144. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  145. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  146. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  147. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  148. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  149. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  150. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  151. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  152. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  153. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  154. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  155. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  156. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  157. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  158. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  159. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  160. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  161. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  162. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  163. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  164. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  165. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  166. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  167. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  168. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  169. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  170. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  171. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  172. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  173. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  174. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  175. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  176. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  177. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  178. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  179. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  180. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  181. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  182. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  183. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  184. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  185. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  186. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  187. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
package/README.md CHANGED
@@ -4,6 +4,8 @@ A modern, high-performance, and accessible UI component library for Angular 20+.
4
4
 
5
5
  Built natively with Angular signals, standalone components, native control flow, and WCAG AA accessibility standards.
6
6
 
7
+ **Documentation & Live Demo:** [https://talos.weeehaooz.dev](https://talos.weeehaooz.dev)
8
+
7
9
  ---
8
10
 
9
11
  ## Features
@@ -1,8 +1,91 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, signal, Directive, model, contentChildren, effect, Component, NgModule } from '@angular/core';
2
+ import { inject, ElementRef, input, Directive, signal, model, contentChildren, effect, Component, NgModule } from '@angular/core';
3
3
  import { SelectionModel } from '@angular/cdk/collections';
4
- import { TalosButtonDirective } from '@weeehaoooz/talos-ui/button/button';
5
- import { TalosTooltipDirective, TalosTooltipComponent } from '@weeehaoooz/talos-ui/feedback/tooltip';
4
+
5
+ class TalosButtonDirective {
6
+ elementRef = inject(ElementRef);
7
+ /** Button visual style variant */
8
+ variant = input('primary', /* @ts-ignore */
9
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
10
+ /** Button size variant */
11
+ size = input('md', /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
13
+ /** Whether button has square aspect ratio for icon-only display */
14
+ iconOnly = input(false, /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "iconOnly" }] : /* istanbul ignore next */ []));
16
+ /** Expand button to fill 100% width of parent container */
17
+ fullWidth = input(false, /* @ts-ignore */
18
+ ...(ngDevMode ? [{ debugName: "fullWidth" }] : /* istanbul ignore next */ []));
19
+ /** Apply fully rounded pill shape */
20
+ pill = input(false, /* @ts-ignore */
21
+ ...(ngDevMode ? [{ debugName: "pill" }] : /* istanbul ignore next */ []));
22
+ /** Show loading spinner and disable interactive events */
23
+ loading = input(false, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
25
+ /** Disable button interaction */
26
+ disabled = input(false, /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
28
+ /** Micro-interaction animation preset to apply */
29
+ animation = input('none', /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
31
+ /** Convenience boolean signal for spinning icon / continuous refresh state */
32
+ spinning = input(false, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "spinning" }] : /* istanbul ignore next */ []));
34
+ /** Convenience boolean signal for pop / scale bounce feedback */
35
+ popping = input(false, /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "popping" }] : /* istanbul ignore next */ []));
37
+ /** Contextual temporary feedback state (e.g. green success pop or red error shake) */
38
+ feedback = input(null, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "feedback" }] : /* istanbul ignore next */ []));
40
+ onPointerDown(event) {
41
+ if (this.disabled() || this.loading())
42
+ return;
43
+ const pe = event;
44
+ const el = this.elementRef.nativeElement;
45
+ const rect = el.getBoundingClientRect();
46
+ const x = pe.clientX - rect.left;
47
+ const y = pe.clientY - rect.top;
48
+ el.style.setProperty('--ripple-x', `${x}px`);
49
+ el.style.setProperty('--ripple-y', `${y}px`);
50
+ }
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
52
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", type: TalosButtonDirective, isStandalone: true, selector: "button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, spinning: { classPropertyName: "spinning", publicName: "spinning", isSignal: true, isRequired: false, transformFunction: null }, popping: { classPropertyName: "popping", publicName: "popping", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerdown": "onPointerDown($event)" }, properties: { "class.talos-btn-primary": "variant() === \"primary\"", "class.talos-btn-secondary": "variant() === \"secondary\"", "class.talos-btn-outline": "variant() === \"outline\"", "class.talos-btn-ghost": "variant() === \"ghost\" || variant() === \"subtle\"", "class.talos-btn-danger": "variant() === \"danger\"", "class.talos-btn-success": "variant() === \"success\"", "class.talos-btn-link": "variant() === \"link\"", "class.talos-btn-xs": "size() === \"xs\"", "class.talos-btn-sm": "size() === \"sm\"", "class.talos-btn-md": "size() === \"md\"", "class.talos-btn-lg": "size() === \"lg\"", "class.talos-btn-icon": "iconOnly()", "class.talos-btn-full": "fullWidth()", "class.talos-btn-pill": "pill()", "class.is-loading": "loading()", "class.talos-anim-spin": "animation() === \"spin\" || spinning()", "class.talos-anim-spin-once": "animation() === \"spin-once\"", "class.talos-anim-pop": "animation() === \"pop\" || popping()", "class.talos-anim-shake": "animation() === \"shake\"", "class.talos-anim-pulse": "animation() === \"pulse\"", "class.talos-anim-bounce": "animation() === \"bounce\"", "class.talos-feedback-success": "feedback() === \"success\"", "class.talos-feedback-error": "feedback() === \"error\"", "attr.disabled": "(disabled() || loading()) ? true : null", "attr.aria-disabled": "(disabled() || loading()) ? \"true\" : null" }, classAttribute: "talos-btn" }, ngImport: i0 });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonDirective, decorators: [{
55
+ type: Directive,
56
+ args: [{
57
+ selector: 'button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]',
58
+ host: {
59
+ 'class': 'talos-btn',
60
+ '[class.talos-btn-primary]': 'variant() === "primary"',
61
+ '[class.talos-btn-secondary]': 'variant() === "secondary"',
62
+ '[class.talos-btn-outline]': 'variant() === "outline"',
63
+ '[class.talos-btn-ghost]': 'variant() === "ghost" || variant() === "subtle"',
64
+ '[class.talos-btn-danger]': 'variant() === "danger"',
65
+ '[class.talos-btn-success]': 'variant() === "success"',
66
+ '[class.talos-btn-link]': 'variant() === "link"',
67
+ '[class.talos-btn-xs]': 'size() === "xs"',
68
+ '[class.talos-btn-sm]': 'size() === "sm"',
69
+ '[class.talos-btn-md]': 'size() === "md"',
70
+ '[class.talos-btn-lg]': 'size() === "lg"',
71
+ '[class.talos-btn-icon]': 'iconOnly()',
72
+ '[class.talos-btn-full]': 'fullWidth()',
73
+ '[class.talos-btn-pill]': 'pill()',
74
+ '[class.is-loading]': 'loading()',
75
+ '[class.talos-anim-spin]': 'animation() === "spin" || spinning()',
76
+ '[class.talos-anim-spin-once]': 'animation() === "spin-once"',
77
+ '[class.talos-anim-pop]': 'animation() === "pop" || popping()',
78
+ '[class.talos-anim-shake]': 'animation() === "shake"',
79
+ '[class.talos-anim-pulse]': 'animation() === "pulse"',
80
+ '[class.talos-anim-bounce]': 'animation() === "bounce"',
81
+ '[class.talos-feedback-success]': 'feedback() === "success"',
82
+ '[class.talos-feedback-error]': 'feedback() === "error"',
83
+ '[attr.disabled]': '(disabled() || loading()) ? true : null',
84
+ '[attr.aria-disabled]': '(disabled() || loading()) ? "true" : null',
85
+ '(pointerdown)': 'onPointerDown($event)'
86
+ }
87
+ }]
88
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], pill: [{ type: i0.Input, args: [{ isSignal: true, alias: "pill", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], spinning: [{ type: i0.Input, args: [{ isSignal: true, alias: "spinning", required: false }] }], popping: [{ type: i0.Input, args: [{ isSignal: true, alias: "popping", required: false }] }], feedback: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedback", required: false }] }] } });
6
89
 
7
90
  class TalosButtonGroupItemDirective {
8
91
  elementRef = inject(ElementRef);
@@ -52,6 +135,9 @@ class TalosButtonGroupComponent {
52
135
  /** Apply fully rounded pill shape */
53
136
  pill = input(false, /* @ts-ignore */
54
137
  ...(ngDevMode ? [{ debugName: "pill" }] : /* istanbul ignore next */ []));
138
+ /** Allow mouse wheel vertical scrolling to translate to horizontal scrolling when overflowing on hover */
139
+ mouseWheelScroll = input(true, /* @ts-ignore */
140
+ ...(ngDevMode ? [{ debugName: "mouseWheelScroll" }] : /* istanbul ignore next */ []));
55
141
  /** Disable all buttons in group */
56
142
  disabled = input(false, /* @ts-ignore */
57
143
  ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
@@ -168,22 +254,40 @@ class TalosButtonGroupComponent {
168
254
  focusableButtons[targetIndex].focus();
169
255
  }
170
256
  }
257
+ onWheel(event) {
258
+ if (!this.mouseWheelScroll() || this.orientation() !== 'horizontal')
259
+ return;
260
+ const el = this.elementRef.nativeElement;
261
+ if (el.scrollWidth > el.clientWidth) {
262
+ if (Math.abs(event.deltaY) > Math.abs(event.deltaX)) {
263
+ const maxScrollLeft = el.scrollWidth - el.clientWidth;
264
+ const canScrollLeft = el.scrollLeft > 0 && event.deltaY < 0;
265
+ const canScrollRight = el.scrollLeft < maxScrollLeft && event.deltaY > 0;
266
+ if (canScrollLeft || canScrollRight) {
267
+ event.preventDefault();
268
+ el.scrollLeft += event.deltaY;
269
+ }
270
+ }
271
+ }
272
+ }
171
273
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.1", type: TalosButtonGroupComponent, isStandalone: true, selector: "talos-button-group", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown": "onKeydown($event)", "click": "onClick($event)" }, properties: { "class.talos-button-group-horizontal": "orientation() === \"horizontal\"", "class.talos-button-group-vertical": "orientation() === \"vertical\"", "class.talos-button-group-attached": "variant() === \"attached\"", "class.talos-button-group-segmented": "variant() === \"segmented\" || variant() === \"pill\"", "class.talos-button-group-outline": "variant() === \"outline\"", "class.talos-button-group-subtle": "variant() === \"subtle\"", "class.talos-button-group-pill": "pill() || variant() === \"pill\"", "class.talos-button-group-sm": "size() === \"sm\"", "class.talos-button-group-md": "size() === \"md\"", "class.talos-button-group-lg": "size() === \"lg\"", "attr.role": "selectionMode() !== \"none\" ? \"radiogroup\" : \"group\"", "attr.aria-orientation": "orientation()" }, classAttribute: "talos-button-group" }, queries: [{ propertyName: "items", predicate: TalosButtonGroupItemDirective, descendants: true, isSignal: true }, { propertyName: "buttons", predicate: TalosButtonDirective, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
274
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.1", type: TalosButtonGroupComponent, isStandalone: true, selector: "talos-button-group", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, mouseWheelScroll: { classPropertyName: "mouseWheelScroll", publicName: "mouseWheelScroll", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown": "onKeydown($event)", "click": "onClick($event)", "wheel": "onWheel($event)" }, properties: { "class.talos-button-group-horizontal": "orientation() === \"horizontal\"", "class.talos-button-group-vertical": "orientation() === \"vertical\"", "class.talos-button-group-attached": "variant() === \"attached\"", "class.talos-button-group-segmented": "variant() === \"segmented\" || variant() === \"pill\" || variant() === \"subtle\" || variant() === \"glow\"", "class.talos-button-group-outline": "variant() === \"outline\"", "class.talos-button-group-subtle": "variant() === \"subtle\"", "class.talos-button-group-glow": "variant() === \"glow\"", "class.talos-button-group-pill": "pill() || variant() === \"pill\"", "class.talos-button-group-sm": "size() === \"sm\"", "class.talos-button-group-md": "size() === \"md\"", "class.talos-button-group-lg": "size() === \"lg\"", "attr.role": "selectionMode() !== \"none\" ? \"radiogroup\" : \"group\"", "attr.aria-orientation": "orientation()" }, classAttribute: "talos-button-group" }, queries: [{ propertyName: "items", predicate: TalosButtonGroupItemDirective, descendants: true, isSignal: true }, { propertyName: "buttons", predicate: TalosButtonDirective, descendants: true, isSignal: true }], exportAs: ["talosButtonGroup"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
173
275
  }
174
276
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupComponent, decorators: [{
175
277
  type: Component,
176
278
  args: [{
177
279
  selector: 'talos-button-group',
280
+ exportAs: 'talosButtonGroup',
178
281
  template: `<ng-content></ng-content>`,
179
282
  host: {
180
283
  'class': 'talos-button-group',
181
284
  '[class.talos-button-group-horizontal]': 'orientation() === "horizontal"',
182
285
  '[class.talos-button-group-vertical]': 'orientation() === "vertical"',
183
286
  '[class.talos-button-group-attached]': 'variant() === "attached"',
184
- '[class.talos-button-group-segmented]': 'variant() === "segmented" || variant() === "pill"',
287
+ '[class.talos-button-group-segmented]': 'variant() === "segmented" || variant() === "pill" || variant() === "subtle" || variant() === "glow"',
185
288
  '[class.talos-button-group-outline]': 'variant() === "outline"',
186
289
  '[class.talos-button-group-subtle]': 'variant() === "subtle"',
290
+ '[class.talos-button-group-glow]': 'variant() === "glow"',
187
291
  '[class.talos-button-group-pill]': 'pill() || variant() === "pill"',
188
292
  '[class.talos-button-group-sm]': 'size() === "sm"',
189
293
  '[class.talos-button-group-md]': 'size() === "md"',
@@ -191,23 +295,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
191
295
  '[attr.role]': 'selectionMode() !== "none" ? "radiogroup" : "group"',
192
296
  '[attr.aria-orientation]': 'orientation()',
193
297
  '(keydown)': 'onKeydown($event)',
194
- '(click)': 'onClick($event)'
298
+ '(click)': 'onClick($event)',
299
+ '(wheel)': 'onWheel($event)'
195
300
  }
196
301
  }]
197
- }], ctorParameters: () => [], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], pill: [{ type: i0.Input, args: [{ isSignal: true, alias: "pill", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TalosButtonGroupItemDirective), { ...{ descendants: true }, isSignal: true }] }], buttons: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TalosButtonDirective), { ...{ descendants: true }, isSignal: true }] }] } });
302
+ }], ctorParameters: () => [], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], pill: [{ type: i0.Input, args: [{ isSignal: true, alias: "pill", required: false }] }], mouseWheelScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "mouseWheelScroll", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TalosButtonGroupItemDirective), { ...{ descendants: true }, isSignal: true }] }], buttons: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TalosButtonDirective), { ...{ descendants: true }, isSignal: true }] }] } });
198
303
 
199
304
  class TalosButtonGroupModule {
200
305
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
201
306
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupModule, imports: [TalosButtonGroupComponent,
202
307
  TalosButtonGroupItemDirective,
203
- TalosTooltipDirective,
204
- TalosTooltipComponent,
205
308
  TalosButtonDirective], exports: [TalosButtonGroupComponent,
206
309
  TalosButtonGroupItemDirective,
207
- TalosTooltipDirective,
208
- TalosTooltipComponent,
209
310
  TalosButtonDirective] });
210
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupModule, imports: [TalosTooltipComponent] });
311
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupModule });
211
312
  }
212
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosButtonGroupModule, decorators: [{
213
314
  type: NgModule,
@@ -215,15 +316,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
215
316
  imports: [
216
317
  TalosButtonGroupComponent,
217
318
  TalosButtonGroupItemDirective,
218
- TalosTooltipDirective,
219
- TalosTooltipComponent,
220
319
  TalosButtonDirective
221
320
  ],
222
321
  exports: [
223
322
  TalosButtonGroupComponent,
224
323
  TalosButtonGroupItemDirective,
225
- TalosTooltipDirective,
226
- TalosTooltipComponent,
227
324
  TalosButtonDirective
228
325
  ]
229
326
  }]
@@ -233,5 +330,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
233
330
  * Generated bundle index. Do not edit.
234
331
  */
235
332
 
236
- export { TalosButtonGroupComponent, TalosButtonGroupItemDirective, TalosButtonGroupModule };
237
- //# sourceMappingURL=weeehaoooz-talos-ui-button-button-group.mjs.map
333
+ export { TalosButtonDirective, TalosButtonGroupComponent, TalosButtonGroupItemDirective, TalosButtonGroupModule };
334
+ //# sourceMappingURL=weeehaoooz-talos-ui-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeehaoooz-talos-ui-button.mjs","sources":["../../../projects/talos-ui/button/button/button.directive.ts","../../../projects/talos-ui/button/button-group/button-group-item/button-group-item.directive.ts","../../../projects/talos-ui/button/button-group/button-group/button-group.component.ts","../../../projects/talos-ui/button/button-group/button-group.module.ts","../../../projects/talos-ui/button/weeehaoooz-talos-ui-button.ts"],"sourcesContent":["import { Directive, ElementRef, inject, input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'subtle' | 'danger' | 'success' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type ButtonAnimation = 'spin' | 'spin-once' | 'pop' | 'shake' | 'pulse' | 'bounce' | 'none';\nexport type ButtonFeedbackState = 'success' | 'error' | null;\n\n@Directive({\n selector: 'button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]',\n host: {\n 'class': 'talos-btn',\n '[class.talos-btn-primary]': 'variant() === \"primary\"',\n '[class.talos-btn-secondary]': 'variant() === \"secondary\"',\n '[class.talos-btn-outline]': 'variant() === \"outline\"',\n '[class.talos-btn-ghost]': 'variant() === \"ghost\" || variant() === \"subtle\"',\n '[class.talos-btn-danger]': 'variant() === \"danger\"',\n '[class.talos-btn-success]': 'variant() === \"success\"',\n '[class.talos-btn-link]': 'variant() === \"link\"',\n '[class.talos-btn-xs]': 'size() === \"xs\"',\n '[class.talos-btn-sm]': 'size() === \"sm\"',\n '[class.talos-btn-md]': 'size() === \"md\"',\n '[class.talos-btn-lg]': 'size() === \"lg\"',\n '[class.talos-btn-icon]': 'iconOnly()',\n '[class.talos-btn-full]': 'fullWidth()',\n '[class.talos-btn-pill]': 'pill()',\n '[class.is-loading]': 'loading()',\n '[class.talos-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.talos-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.talos-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.talos-anim-shake]': 'animation() === \"shake\"',\n '[class.talos-anim-pulse]': 'animation() === \"pulse\"',\n '[class.talos-anim-bounce]': 'animation() === \"bounce\"',\n '[class.talos-feedback-success]': 'feedback() === \"success\"',\n '[class.talos-feedback-error]': 'feedback() === \"error\"',\n '[attr.disabled]': '(disabled() || loading()) ? true : null',\n '[attr.aria-disabled]': '(disabled() || loading()) ? \"true\" : null',\n '(pointerdown)': 'onPointerDown($event)'\n }\n})\nexport class TalosButtonDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Button visual style variant */\n readonly variant = input<ButtonVariant>('primary');\n\n /** Button size variant */\n readonly size = input<ButtonSize>('md');\n\n /** Whether button has square aspect ratio for icon-only display */\n readonly iconOnly = input<boolean>(false);\n\n /** Expand button to fill 100% width of parent container */\n readonly fullWidth = input<boolean>(false);\n\n /** Apply fully rounded pill shape */\n readonly pill = input<boolean>(false);\n\n /** Show loading spinner and disable interactive events */\n readonly loading = input<boolean>(false);\n\n /** Disable button interaction */\n readonly disabled = input<boolean>(false);\n\n /** Micro-interaction animation preset to apply */\n readonly animation = input<ButtonAnimation>('none');\n\n /** Convenience boolean signal for spinning icon / continuous refresh state */\n readonly spinning = input<boolean>(false);\n\n /** Convenience boolean signal for pop / scale bounce feedback */\n readonly popping = input<boolean>(false);\n\n /** Contextual temporary feedback state (e.g. green success pop or red error shake) */\n readonly feedback = input<ButtonFeedbackState>(null);\n\n onPointerDown(event: Event): void {\n if (this.disabled() || this.loading()) return;\n const pe = event as PointerEvent;\n const el = this.elementRef.nativeElement;\n const rect = el.getBoundingClientRect();\n const x = pe.clientX - rect.left;\n const y = pe.clientY - rect.top;\n el.style.setProperty('--ripple-x', `${x}px`);\n el.style.setProperty('--ripple-y', `${y}px`);\n }\n}\n","import { Directive, ElementRef, inject, input, signal } from '@angular/core';\n\n@Directive({\n selector: 'button[talosButtonGroupItem], a[talosButtonGroupItem], [talos-button-group-item]',\n host: {\n 'class': 'talos-button-group-item',\n '[class.is-selected]': 'selected()',\n '[class.is-active]': 'selected()',\n '[attr.aria-pressed]': 'selected() ? \"true\" : \"false\"'\n }\n})\nexport class TalosButtonGroupItemDirective {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Value associated with this button item in selection mode */\n readonly value = input<any>(undefined);\n\n /** Explicit selected / active state override */\n readonly selected = signal<boolean>(false);\n\n /** Focus target method */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n model,\n contentChildren,\n effect,\n HostListener\n} from '@angular/core';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { TalosButtonDirective, ButtonSize } from '../../button/button.directive';\n\nimport { TalosButtonGroupItemDirective } from '../button-group-item/button-group-item.directive';\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical';\nexport type ButtonGroupVariant = 'attached' | 'segmented' | 'outline' | 'subtle' | 'pill' | 'glow';\nexport type ButtonGroupSelectionMode = 'none' | 'single' | 'multiple';\n\n@Component({\n selector: 'talos-button-group',\n exportAs: 'talosButtonGroup',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'talos-button-group',\n '[class.talos-button-group-horizontal]': 'orientation() === \"horizontal\"',\n '[class.talos-button-group-vertical]': 'orientation() === \"vertical\"',\n '[class.talos-button-group-attached]': 'variant() === \"attached\"',\n '[class.talos-button-group-segmented]': 'variant() === \"segmented\" || variant() === \"pill\" || variant() === \"subtle\" || variant() === \"glow\"',\n '[class.talos-button-group-outline]': 'variant() === \"outline\"',\n '[class.talos-button-group-subtle]': 'variant() === \"subtle\"',\n '[class.talos-button-group-glow]': 'variant() === \"glow\"',\n '[class.talos-button-group-pill]': 'pill() || variant() === \"pill\"',\n '[class.talos-button-group-sm]': 'size() === \"sm\"',\n '[class.talos-button-group-md]': 'size() === \"md\"',\n '[class.talos-button-group-lg]': 'size() === \"lg\"',\n '[attr.role]': 'selectionMode() !== \"none\" ? \"radiogroup\" : \"group\"',\n '[attr.aria-orientation]': 'orientation()',\n '(keydown)': 'onKeydown($event)',\n '(click)': 'onClick($event)',\n '(wheel)': 'onWheel($event)'\n }\n})\nexport class TalosButtonGroupComponent {\n public readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Layout orientation: horizontal or vertical */\n readonly orientation = input<ButtonGroupOrientation>('horizontal');\n\n /** Visual variant style */\n readonly variant = input<ButtonGroupVariant>('attached');\n\n /** Button size propagation */\n readonly size = input<ButtonSize>('md');\n\n /** Selection behavior: none, single (radio), or multiple (checkbox) */\n readonly selectionMode = input<ButtonGroupSelectionMode>('none');\n\n /** Model value for single or multiple selection */\n readonly value = model<any>(undefined);\n\n /** Apply fully rounded pill shape */\n readonly pill = input<boolean>(false);\n\n /** Allow mouse wheel vertical scrolling to translate to horizontal scrolling when overflowing on hover */\n readonly mouseWheelScroll = input<boolean>(true);\n\n /** Disable all buttons in group */\n readonly disabled = input<boolean>(false);\n\n /** Child items using TalosButtonGroupItemDirective */\n readonly items = contentChildren(TalosButtonGroupItemDirective, { descendants: true });\n\n /** Child directives using TalosButtonDirective */\n readonly buttons = contentChildren(TalosButtonDirective, { descendants: true });\n\n private selectionModel = new SelectionModel<any>(false, []);\n\n constructor() {\n // Sync SelectionModel mode when selectionMode changes\n effect(() => {\n const mode = this.selectionMode();\n const isMulti = mode === 'multiple';\n const currentVal = this.value();\n\n const initial = currentVal !== undefined\n ? (Array.isArray(currentVal) ? currentVal : [currentVal])\n : [];\n\n this.selectionModel = new SelectionModel<any>(isMulti, initial);\n this.syncChildSelectionStates();\n });\n\n // Sync external model value changes to internal selection model\n effect(() => {\n const val = this.value();\n if (val !== undefined && this.selectionMode() !== 'none') {\n const selectedValues = Array.isArray(val) ? val : [val];\n this.selectionModel.clear();\n selectedValues.forEach(v => this.selectionModel.select(v));\n this.syncChildSelectionStates();\n }\n });\n\n // Propagate item selected state changes\n effect(() => {\n const childItems = this.items();\n this.syncChildSelectionStates();\n });\n }\n\n private syncChildSelectionStates(): void {\n const childItems = this.items();\n if (!childItems || childItems.length === 0) return;\n\n childItems.forEach((item, index) => {\n const itemVal = item.value() !== undefined ? item.value() : index;\n const isSelected = this.selectionModel.isSelected(itemVal);\n item.selected.set(isSelected);\n });\n }\n\n onClick(event: MouseEvent): void {\n if (this.disabled()) return;\n const mode = this.selectionMode();\n if (mode === 'none') return;\n\n const target = event.target as HTMLElement;\n const buttonEl = target.closest('button, a') as HTMLElement;\n if (!buttonEl) return;\n\n const childItems = this.items();\n const childButtons = this.buttons();\n\n // Match clicked button to item directive or index\n let matchedValue: any = undefined;\n let matchedItem: TalosButtonGroupItemDirective | undefined = undefined;\n\n if (childItems && childItems.length > 0) {\n childItems.forEach((item, index) => {\n if (item.elementRef.nativeElement === buttonEl || item.elementRef.nativeElement.contains(buttonEl)) {\n matchedValue = item.value() !== undefined ? item.value() : index;\n matchedItem = item;\n }\n });\n }\n\n if (matchedValue === undefined && childButtons && childButtons.length > 0) {\n const allButtons = Array.from(this.elementRef.nativeElement.querySelectorAll('button, a'));\n const index = allButtons.indexOf(buttonEl);\n if (index !== -1) {\n matchedValue = index;\n }\n }\n\n if (matchedValue !== undefined) {\n if (mode === 'single') {\n this.selectionModel.clear();\n this.selectionModel.select(matchedValue);\n this.value.set(matchedValue);\n } else if (mode === 'multiple') {\n this.selectionModel.toggle(matchedValue);\n this.value.set(this.selectionModel.selected);\n }\n this.syncChildSelectionStates();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n const isHoriz = this.orientation() === 'horizontal';\n const focusableButtons = Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLButtonElement | HTMLAnchorElement>('button:not([disabled]), a:not([disabled])')\n );\n\n if (focusableButtons.length === 0) return;\n\n const activeEl = document.activeElement as HTMLElement;\n let currentIndex = focusableButtons.indexOf(activeEl as any);\n\n if (currentIndex === -1) return;\n\n let targetIndex = -1;\n\n if ((isHoriz && event.key === 'ArrowRight') || (!isHoriz && event.key === 'ArrowDown')) {\n targetIndex = (currentIndex + 1) % focusableButtons.length;\n } else if ((isHoriz && event.key === 'ArrowLeft') || (!isHoriz && event.key === 'ArrowUp')) {\n targetIndex = (currentIndex - 1 + focusableButtons.length) % focusableButtons.length;\n } else if (event.key === 'Home') {\n targetIndex = 0;\n } else if (event.key === 'End') {\n targetIndex = focusableButtons.length - 1;\n }\n\n if (targetIndex !== -1) {\n event.preventDefault();\n focusableButtons[targetIndex].focus();\n }\n }\n\n onWheel(event: WheelEvent): void {\n if (!this.mouseWheelScroll() || this.orientation() !== 'horizontal') return;\n const el = this.elementRef.nativeElement;\n\n if (el.scrollWidth > el.clientWidth) {\n if (Math.abs(event.deltaY) > Math.abs(event.deltaX)) {\n const maxScrollLeft = el.scrollWidth - el.clientWidth;\n const canScrollLeft = el.scrollLeft > 0 && event.deltaY < 0;\n const canScrollRight = el.scrollLeft < maxScrollLeft && event.deltaY > 0;\n\n if (canScrollLeft || canScrollRight) {\n event.preventDefault();\n el.scrollLeft += event.deltaY;\n }\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosButtonGroupComponent } from './button-group/button-group.component';\nimport { TalosButtonGroupItemDirective } from './button-group-item/button-group-item.directive';\nimport { TalosButtonDirective } from '../button/button.directive';\n\n@NgModule({\n imports: [\n TalosButtonGroupComponent,\n TalosButtonGroupItemDirective,\n TalosButtonDirective\n ],\n exports: [\n TalosButtonGroupComponent,\n TalosButtonGroupItemDirective,\n TalosButtonDirective\n ]\n})\nexport class TalosButtonGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}