@weeehaoooz/talos-ui 0.1.1 → 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 (190) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +91 -15
  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 +1316 -7
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +3 -3
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +21592 -16293
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -139
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +2 -1
  23. package/styles/_buttons.scss +51 -0
  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 +33 -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 +1 -1
  46. package/types/weeehaoooz-talos-ui.d.ts +7148 -4629
  47. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  48. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -94
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  51. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs +0 -1627
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs.map +0 -1
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  60. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  70. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  78. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  80. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  82. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  84. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  86. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  88. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  96. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  98. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  100. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  102. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  104. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  106. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  108. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  110. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  112. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  114. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  116. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  118. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -62
  120. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  122. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  124. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  125. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts +0 -272
  126. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts.map +0 -1
  127. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  128. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  129. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  130. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  131. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  132. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  133. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  134. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  135. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  136. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  138. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  139. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  140. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  141. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  142. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  143. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  144. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  145. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  146. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  147. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  148. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  149. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  150. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  151. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  152. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  153. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  154. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  155. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  156. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  157. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  158. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  159. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  160. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  161. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  162. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  163. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  164. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  165. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  166. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  167. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  168. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  169. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  170. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  171. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  172. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  173. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  174. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  175. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  176. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  177. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  178. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  179. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  180. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  181. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  182. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  183. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  184. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  185. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  186. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  187. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  188. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  189. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  190. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"weeehaoooz-talos-ui-form-range-input.mjs","sources":["../../../projects/talos-ui/form/range-input/range-input.directive.ts","../../../projects/talos-ui/form/range-input/range-input.component.ts","../../../projects/talos-ui/form/range-input/range-input.component.html","../../../projects/talos-ui/form/range-input/range-input.module.ts","../../../projects/talos-ui/form/range-input/weeehaoooz-talos-ui-form-range-input.ts"],"sourcesContent":["import { Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { RangeInputSize, RangeInputVariant } from './range-input.types';\n\n@Directive({\n selector: 'input[type=\"range\"][talosRangeInput], input[type=\"range\"][talos-range-input]',\n host: {\n 'class': 'talos-range-native-input',\n '[class.talos-range-input-sm]': 'size() === \"sm\"',\n '[class.talos-range-input-md]': 'size() === \"md\"',\n '[class.talos-range-input-lg]': 'size() === \"lg\"',\n '[class.talos-range-input-primary]': 'variant() === \"primary\"',\n '[class.talos-range-input-secondary]': 'variant() === \"secondary\"',\n '[class.talos-range-input-success]': 'variant() === \"success\"',\n '[class.talos-range-input-warning]': 'variant() === \"warning\"',\n '[class.talos-range-input-danger]': 'variant() === \"danger\"',\n '[class.talos-range-input-info]': 'variant() === \"info\"',\n '[class.is-invalid]': 'invalid()',\n '[style.--range-fill-percent]': 'fillPercentStyle()'\n }\n})\nexport class TalosRangeInputDirective {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** Size variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Error state */\n readonly invalid = input<boolean>(false);\n\n protected readonly fillPercentStyle = computed(() => {\n const el = this.elementRef.nativeElement;\n const min = parseFloat(el.min) || 0;\n const max = parseFloat(el.max) || 100;\n const val = parseFloat(el.value) || min;\n const percent = max > min ? ((val - min) / (max - min)) * 100 : 0;\n return `${Math.max(0, Math.min(100, percent))}%`;\n });\n}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RangeInputChangeEvent,\n RangeInputMark,\n RangeInputSize,\n RangeInputTick,\n RangeInputTooltipMode,\n RangeInputValue,\n RangeInputVariant\n} from './range-input.types';\n\nlet rangeInputCounter = 0;\n\n@Component({\n selector: 'talos-range-input, talos-range-slider, talos-slider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRangeInputComponent),\n multi: true\n }\n ],\n templateUrl: './range-input.component.html',\n styleUrl: './range-input.component.scss',\n host: {\n 'class': 'talos-range-input-host',\n '[class.talos-range-disabled]': 'effectiveDisabled()',\n '[class.talos-range-invalid]': 'effectiveInvalid()',\n '[class.is-floating]': 'isFloatingMode()'\n }\n})\nexport class TalosRangeInputComponent implements ControlValueAccessor {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly trackContainerRef = viewChild<ElementRef<HTMLDivElement>>('sliderTrackContainer');\n private readonly thumb0Ref = viewChild<ElementRef<HTMLDivElement>>('thumb0');\n private readonly thumb1Ref = viewChild<ElementRef<HTMLDivElement>>('thumb1');\n\n /** Minimum allowed value */\n readonly min = input<number>(0);\n\n /** Maximum allowed value */\n readonly max = input<number>(100);\n\n /** Step increment for values */\n readonly step = input<number>(1);\n\n /** Step interval for tick marks / labels generation (e.g. 10, 20, 25) */\n readonly interval = input<number | null>(null);\n\n /** Whether the slider operates in dual-thumb range mode */\n readonly range = input<boolean>(false);\n\n /** Minimum distance between handles in dual mode */\n readonly minRange = input<number>(0);\n\n /** Maximum distance between handles in dual mode */\n readonly maxRange = input<number | null>(null);\n\n /** Discrete tick marks with optional custom labels */\n readonly marks = input<RangeInputMark[] | number[] | null>(null);\n\n /** Whether to show tick mark notches on the track */\n readonly showTicks = input<boolean>(false);\n\n /** Whether to show interval/tick labels under the track */\n readonly showIntervals = input<boolean>(false);\n\n /** Alias for showIntervals */\n readonly showLabels = input<boolean>(false);\n\n /** Whether to snap slider thumb only to configured tick marks */\n readonly snapToTicks = input<boolean>(false);\n\n /** Sizing variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Read-only state */\n readonly readonly = input<boolean>(false);\n\n /** Invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Top label text */\n readonly label = input<string>('');\n\n /** Floating label mode toggle */\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n\n /** Helper hint text */\n readonly hint = input<string>('');\n\n /** Whether to render synchronized number inputs */\n readonly showInputs = input<boolean>(false);\n\n /** Whether to show top value badge when inputs are disabled */\n readonly showValueBadge = input<boolean>(true);\n\n /** Tooltip display mode ('always' | 'hover' | 'drag' | 'none') */\n readonly showTooltip = input<RangeInputTooltipMode>('hover');\n\n /** Optional prefix string (e.g. '$') */\n readonly prefix = input<string>('');\n\n /** Optional suffix string (e.g. '%', '°C') */\n readonly suffix = input<string>('');\n\n /** Custom value formatter function */\n readonly formatter = input<((value: number) => string) | null>(null);\n\n /** Accessibility label for single slider */\n readonly ariaLabel = input<string>('Range slider');\n\n /** Accessibility label for start thumb in range mode */\n readonly ariaLabelStart = input<string>('Minimum range value');\n\n /** Accessibility label for end thumb in range mode */\n readonly ariaLabelEnd = input<string>('Maximum range value');\n\n /** Element unique ID */\n readonly id = input<string>('');\n\n /** Standalone value input binding */\n readonly value = input<RangeInputValue | null>(null);\n\n /** Emitted when value changes */\n readonly valueChange = output<RangeInputValue>();\n\n /** Emitted during active dragging or keyboard movement */\n readonly inputChange = output<RangeInputChangeEvent>();\n\n /** Emitted on drag end, click release or input commit */\n readonly change = output<RangeInputChangeEvent>();\n\n // Internal reactive states\n private readonly defaultId = `talos-range-${++rangeInputCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<RangeInputValue | null>(null);\n readonly isCvaDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Active interaction tracking\n readonly focusedThumb = signal<number | null>(null);\n readonly hoveredThumb = signal<number | null>(null);\n readonly draggingThumb = signal<number | null>(null);\n\n // Effective state computations\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly effectiveDisabled = computed(() => this.disabled() || this.isCvaDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n /** Determines whether the component is in dual-handle range mode */\n readonly isDualRange = computed<boolean>(() => {\n if (this.range()) return true;\n const v = this.internalValue() ?? this.value();\n return Array.isArray(v);\n });\n\n /** Resolved start value (single value or lower bound of range) */\n readonly startValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[0] === 'number' ? v[0] : min;\n return this.clamp(val, min, max);\n }\n const val = typeof v === 'number' ? v : min;\n return this.clamp(val, min, max);\n });\n\n /** Resolved end value (upper bound of range mode) */\n readonly endValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[1] === 'number' ? v[1] : max;\n return this.clamp(Math.max(this.startValue(), val), min, max);\n }\n return max;\n });\n\n /** Overall span */\n readonly span = computed<number>(() => {\n const diff = this.max() - this.min();\n return diff > 0 ? diff : 1;\n });\n\n /** Percentage position of thumb 0 */\n readonly thumb0Percent = computed<number>(() => {\n return this.valueToPercent(this.startValue());\n });\n\n /** Percentage position of thumb 1 */\n readonly thumb1Percent = computed<number>(() => {\n return this.valueToPercent(this.endValue());\n });\n\n /** Fill bar left percentage */\n readonly fillLeftPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return this.thumb0Percent();\n }\n return 0;\n });\n\n /** Fill bar width percentage */\n readonly fillWidthPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return Math.max(0, this.thumb1Percent() - this.thumb0Percent());\n }\n return this.thumb0Percent();\n });\n\n /** Computed list of tick marks */\n readonly ticks = computed<RangeInputTick[]>(() => {\n const min = this.min();\n const max = this.max();\n const customMarks = this.marks();\n const intervalVal = this.interval();\n const startVal = this.startValue();\n const endVal = this.isDualRange() ? this.endValue() : startVal;\n const isDual = this.isDualRange();\n\n if (customMarks && customMarks.length > 0) {\n return customMarks.map(m => {\n const val = typeof m === 'number' ? m : m.value;\n const label = typeof m === 'number' ? undefined : m.label;\n const tooltip = typeof m === 'number' ? undefined : m.tooltip;\n const percent = this.valueToPercent(val);\n const active = isDual\n ? val >= startVal && val <= endVal\n : val <= startVal;\n return { value: val, percent, label, tooltip, active };\n });\n }\n\n if (intervalVal && intervalVal > 0) {\n const list: RangeInputTick[] = [];\n for (let v = min; v <= max; v += intervalVal) {\n const percent = this.valueToPercent(v);\n const active = isDual\n ? v >= startVal && v <= endVal\n : v <= startVal;\n list.push({\n value: v,\n percent,\n label: this.formatDisplayValue(v),\n active\n });\n }\n // Ensure max is included if not strictly a multiple\n if ((max - min) % intervalVal !== 0) {\n list.push({\n value: max,\n percent: 100,\n label: this.formatDisplayValue(max),\n active: isDual ? endVal >= max : startVal >= max\n });\n }\n return list;\n }\n\n return [];\n });\n\n /** Computed list of interval/tick labels */\n readonly labels = computed<RangeInputTick[]>(() => {\n const customMarks = this.marks();\n const ticksList = this.ticks();\n\n if (customMarks && customMarks.length > 0) {\n return ticksList.filter(t => t.label !== undefined);\n }\n return ticksList;\n });\n\n readonly isDragging = computed(() => this.draggingThumb() !== null);\n\n private onChange: (val: RangeInputValue) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Implementation ---\n writeValue(val: RangeInputValue | null): void {\n if (val === null || val === undefined) {\n this.internalValue.set(this.range() ? [this.min(), this.max()] : this.min());\n } else {\n this.internalValue.set(val);\n }\n }\n\n registerOnChange(fn: (val: RangeInputValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isCvaDisabled.set(isDisabled);\n }\n\n // --- Value Helpers & Formatting ---\n private clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private valueToPercent(value: number): number {\n const min = this.min();\n const span = this.span();\n const percent = ((value - min) / span) * 100;\n return Math.max(0, Math.min(100, percent));\n }\n\n private percentToValue(percent: number): number {\n const min = this.min();\n const span = this.span();\n return min + (percent / 100) * span;\n }\n\n private snapValue(value: number): number {\n const min = this.min();\n const max = this.max();\n\n if (this.snapToTicks()) {\n const availableTicks = this.ticks();\n if (availableTicks.length > 0) {\n let closest = availableTicks[0].value;\n let minDiff = Math.abs(value - closest);\n for (const t of availableTicks) {\n const diff = Math.abs(value - t.value);\n if (diff < minDiff) {\n minDiff = diff;\n closest = t.value;\n }\n }\n return closest;\n }\n }\n\n const step = this.step();\n if (step <= 0) return this.clamp(value, min, max);\n\n const stepsCount = Math.round((value - min) / step);\n const steppedVal = min + stepsCount * step;\n\n // Handle floating-point rounding precision\n const stepDecimals = (step.toString().split('.')[1] || '').length;\n const roundedVal = parseFloat(steppedVal.toFixed(stepDecimals));\n\n return this.clamp(roundedVal, min, max);\n }\n\n formatDisplayValue(val: number): string {\n const customFormatter = this.formatter();\n if (customFormatter) {\n return customFormatter(val);\n }\n const pre = this.prefix();\n const suf = this.suffix();\n return `${pre}${val.toLocaleString()}${suf}`;\n }\n\n isTooltipVisible(thumbIndex: number): boolean {\n const mode = this.showTooltip();\n if (mode === 'none') return false;\n if (mode === 'always') return true;\n if (mode === 'drag') return this.draggingThumb() === thumbIndex;\n if (mode === 'hover') {\n return (\n this.hoveredThumb() === thumbIndex ||\n this.draggingThumb() === thumbIndex ||\n this.focusedThumb() === thumbIndex\n );\n }\n return false;\n }\n\n // --- Interaction & Event Handlers ---\n private emitUpdate(newVal: RangeInputValue, source: 'drag' | 'keyboard' | 'input' | 'track-click', isFinal = false): void {\n this.internalValue.set(newVal);\n this.onChange(newVal);\n this.valueChange.emit(newVal);\n\n const event: RangeInputChangeEvent = { value: newVal, source };\n this.inputChange.emit(event);\n\n if (isFinal) {\n this.change.emit(event);\n this.markAsTouched();\n }\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n onThumbFocus(thumbIndex: number): void {\n this.focusedThumb.set(thumbIndex);\n }\n\n onThumbBlur(thumbIndex: number): void {\n if (this.focusedThumb() === thumbIndex) {\n this.focusedThumb.set(null);\n }\n this.markAsTouched();\n }\n\n onThumbMouseEnter(thumbIndex: number): void {\n this.hoveredThumb.set(thumbIndex);\n }\n\n onThumbMouseLeave(thumbIndex: number): void {\n if (this.hoveredThumb() === thumbIndex) {\n this.hoveredThumb.set(null);\n }\n }\n\n onThumbPointerDown(thumbIndex: number, event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.draggingThumb.set(thumbIndex);\n this.focusedThumb.set(thumbIndex);\n\n const target = event.currentTarget as HTMLElement;\n target.setPointerCapture(event.pointerId);\n\n const onPointerMove = (e: PointerEvent) => {\n if (this.draggingThumb() !== thumbIndex) return;\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', false);\n };\n\n const onPointerUp = (e: PointerEvent) => {\n target.removeEventListener('pointermove', onPointerMove);\n target.removeEventListener('pointerup', onPointerUp);\n target.removeEventListener('pointercancel', onPointerUp);\n\n try {\n target.releasePointerCapture(e.pointerId);\n } catch { }\n\n if (this.draggingThumb() === thumbIndex) {\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', true);\n this.draggingThumb.set(null);\n }\n };\n\n target.addEventListener('pointermove', onPointerMove);\n target.addEventListener('pointerup', onPointerUp);\n target.addEventListener('pointercancel', onPointerUp);\n }\n\n onTrackPointerDown(event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const clickX = event.clientX;\n const clickRatio = (clickX - rect.left) / rect.width;\n const rawVal = this.percentToValue(clickRatio * 100);\n\n let chosenThumb = 0;\n if (this.isDualRange()) {\n const dist0 = Math.abs(rawVal - this.startValue());\n const dist1 = Math.abs(rawVal - this.endValue());\n chosenThumb = dist0 <= dist1 ? 0 : 1;\n }\n\n this.updateValueFromPointer(chosenThumb, clickX, 'track-click', true);\n\n // Focus chosen thumb\n if (chosenThumb === 0) {\n this.thumb0Ref()?.nativeElement.focus();\n } else {\n this.thumb1Ref()?.nativeElement.focus();\n }\n }\n\n private updateValueFromPointer(thumbIndex: number, clientX: number, source: 'drag' | 'track-click', isFinal: boolean): void {\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const rawVal = this.percentToValue(ratio * 100);\n const steppedVal = this.snapValue(rawVal);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n const maxDistance = this.maxRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n start = end - maxDistance;\n }\n } else {\n end = Math.max(steppedVal, start + minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n end = start + maxDistance;\n }\n }\n\n this.emitUpdate([start, end], source, isFinal);\n } else {\n this.emitUpdate(steppedVal, source, isFinal);\n }\n }\n\n onThumbKeyDown(thumbIndex: number, event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = this.step();\n const span = this.span();\n const largeStep = Math.max(step * 10, span / 10);\n\n let delta = 0;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = -step;\n break;\n case 'PageUp':\n delta = largeStep;\n break;\n case 'PageDown':\n delta = -largeStep;\n break;\n case 'Home':\n delta = -(span + 1);\n break;\n case 'End':\n delta = span + 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n const nextVal = this.snapValue(start + delta);\n start = Math.min(nextVal, end - minDistance);\n } else {\n const nextVal = this.snapValue(end + delta);\n end = Math.max(nextVal, start + minDistance);\n }\n\n this.emitUpdate([start, end], 'keyboard', true);\n } else {\n const nextVal = this.snapValue(this.startValue() + delta);\n this.emitUpdate(nextVal, 'keyboard', true);\n }\n }\n\n onNumberInputChange(thumbIndex: number, event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const parsed = parseFloat(inputEl.value);\n if (isNaN(parsed)) return;\n\n const steppedVal = this.snapValue(parsed);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n } else {\n end = Math.max(steppedVal, start + minDistance);\n }\n\n inputEl.value = (thumbIndex === 0 ? start : end).toString();\n this.emitUpdate([start, end], 'input', true);\n } else {\n inputEl.value = steppedVal.toString();\n this.emitUpdate(steppedVal, 'input', true);\n }\n }\n\n onTickClick(tick: RangeInputTick, event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.stopPropagation();\n\n const targetVal = tick.value;\n if (this.isDualRange()) {\n const dist0 = Math.abs(targetVal - this.startValue());\n const dist1 = Math.abs(targetVal - this.endValue());\n let start = this.startValue();\n let end = this.endValue();\n\n if (dist0 <= dist1) {\n start = Math.min(targetVal, end - this.minRange());\n } else {\n end = Math.max(targetVal, start + this.minRange());\n }\n this.emitUpdate([start, end], 'track-click', true);\n } else {\n this.emitUpdate(targetVal, 'track-click', true);\n }\n }\n\n onLabelClick(tick: RangeInputTick, event: MouseEvent): void {\n this.onTickClick(tick, event);\n }\n}\n","<div class=\"talos-range-wrapper\" [class.is-disabled]=\"effectiveDisabled()\" [class.is-readonly]=\"readonly()\"\n [class.is-invalid]=\"effectiveInvalid()\" [class.is-range]=\"isDualRange()\" [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\" [class.size-lg]=\"size() === 'lg'\" [class.variant-primary]=\"variant() === 'primary'\"\n [class.variant-secondary]=\"variant() === 'secondary'\" [class.variant-success]=\"variant() === 'success'\"\n [class.variant-warning]=\"variant() === 'warning'\" [class.variant-danger]=\"variant() === 'danger'\"\n [class.variant-info]=\"variant() === 'info'\">\n <!-- Header: Label, Hint & Optional Value Display / Synchronized Number Inputs -->\n @if (label() || hint() || showValueBadge() || showInputs()) {\n <div class=\"talos-range-header\">\n <div class=\"talos-range-label-group\" [class.is-floating-label]=\"isFloatingMode()\">\n @if (label()) {\n <label class=\"talos-range-label\" [class.is-floated]=\"isFloatingMode()\" [attr.for]=\"elementId() + '-thumb-0'\">\n {{ label() }}\n </label>\n }\n @if (hint()) {\n <span class=\"talos-range-hint\">{{ hint() }}</span>\n }\n </div>\n\n @if (showInputs()) {\n <div class=\"talos-range-inputs-group\">\n @if (isDualRange()) {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-0'\" [min]=\"min()\"\n [max]=\"endValue()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n <span class=\"talos-range-inputs-separator\">–</span>\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-1'\" [min]=\"startValue()\"\n [max]=\"max()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"endValue()\"\n (change)=\"onNumberInputChange(1, $event)\" (keydown.enter)=\"onNumberInputChange(1, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n } @else {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num'\" [min]=\"min()\" [max]=\"max()\"\n [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n }\n </div>\n } @else if (showValueBadge()) {\n <div class=\"talos-range-value-badge\">\n @if (isDualRange()) {\n <span>{{ formatDisplayValue(startValue()) }} – {{ formatDisplayValue(endValue()) }}</span>\n } @else {\n <span>{{ formatDisplayValue(startValue()) }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Range Slider Container (Track, Fills, Ticks, Thumbs) -->\n <div #sliderTrackContainer class=\"talos-range-slider\" [class.is-active]=\"isDragging()\"\n (pointerdown)=\"onTrackPointerDown($event)\">\n <!-- Background Track -->\n <div class=\"talos-range-track\">\n <!-- Active Filled Range Segment -->\n <div class=\"talos-range-fill\" [style.left.%]=\"fillLeftPercent()\" [style.width.%]=\"fillWidthPercent()\"></div>\n\n <!-- Tick Marks -->\n @if (ticks().length > 0 && (showTicks() || marks())) {\n <div class=\"talos-range-ticks\">\n @for (tick of ticks(); track tick.value) {\n <div class=\"talos-range-tick\" [class.is-active]=\"tick.active\" [style.left.%]=\"tick.percent\"\n (click)=\"onTickClick(tick, $event)\"></div>\n }\n </div>\n }\n </div>\n\n <!-- Thumb 0 (Primary or Lower Bound Handle) -->\n <div #thumb0 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 0\"\n [class.is-dragging]=\"draggingThumb() === 0\" [class.is-tooltip-visible]=\"isTooltipVisible(0)\"\n [style.left.%]=\"thumb0Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-0'\"\n [attr.aria-label]=\"isDualRange() ? ariaLabelStart() : ariaLabel()\" [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"isDualRange() ? endValue() : max()\" [attr.aria-valuenow]=\"startValue()\"\n [attr.aria-valuetext]=\"formatDisplayValue(startValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(0, $event)\"\n (keydown)=\"onThumbKeyDown(0, $event)\" (focus)=\"onThumbFocus(0)\" (blur)=\"onThumbBlur(0)\"\n (mouseenter)=\"onThumbMouseEnter(0)\" (mouseleave)=\"onThumbMouseLeave(0)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(0)\">\n {{ formatDisplayValue(startValue()) }}\n </div>\n }\n </div>\n\n <!-- Thumb 1 (Upper Bound Handle for Dual Range) -->\n @if (isDualRange()) {\n <div #thumb1 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 1\"\n [class.is-dragging]=\"draggingThumb() === 1\" [class.is-tooltip-visible]=\"isTooltipVisible(1)\"\n [style.left.%]=\"thumb1Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-1'\"\n [attr.aria-label]=\"ariaLabelEnd()\" [attr.aria-valuemin]=\"startValue()\" [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"endValue()\" [attr.aria-valuetext]=\"formatDisplayValue(endValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(1, $event)\"\n (keydown)=\"onThumbKeyDown(1, $event)\" (focus)=\"onThumbFocus(1)\" (blur)=\"onThumbBlur(1)\"\n (mouseenter)=\"onThumbMouseEnter(1)\" (mouseleave)=\"onThumbMouseLeave(1)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(1)\">\n {{ formatDisplayValue(endValue()) }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Interval / Step Labels under track -->\n @if (labels().length > 0 && (showIntervals() || showLabels() || marks())) {\n <div class=\"talos-range-labels\">\n @for (item of labels(); track item.value) {\n <span class=\"talos-range-label-item\" [class.is-active]=\"item.active\" [style.left.%]=\"item.percent\"\n (click)=\"onLabelClick(item, $event)\">\n {{ item.label }}\n </span>\n }\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TalosRangeInputComponent } from './range-input.component';\nimport { TalosRangeInputDirective } from './range-input.directive';\n\n@NgModule({\n imports: [TalosRangeInputComponent, TalosRangeInputDirective],\n exports: [TalosRangeInputComponent, TalosRangeInputDirective]\n})\nexport class TalosRangeInputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,346 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, output, computed, signal, forwardRef, Component, NgModule } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
-
5
- let ratingCounter = 0;
6
- class TalosRatingComponent {
7
- elementRef = inject((ElementRef));
8
- animationTimeout = null;
9
- // --- Inputs ---
10
- /** Current numerical rating value */
11
- value = input(0, /* @ts-ignore */
12
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
13
- /** Maximum rating count / total stars (default: 5) */
14
- max = input(5, /* @ts-ignore */
15
- ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
16
- /** Whether clicking the current value resets/clears to 0 (default: true) */
17
- allowClear = input(true, /* @ts-ignore */
18
- ...(ngDevMode ? [{ debugName: "allowClear" }] : /* istanbul ignore next */ []));
19
- /** Read-only display mode */
20
- readonly = input(false, /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
22
- /** Disabled state */
23
- disabled = input(false, /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
25
- /** Sizing scale ('sm' | 'md' | 'lg' | 'xl') */
26
- size = input('md', /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
28
- /** Visual color variant ('warning' | 'primary' | 'danger' | 'success' | 'purple' | 'custom') */
29
- variant = input('warning', /* @ts-ignore */
30
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
31
- /** Custom HEX or CSS color code when variant is 'custom' or overriding */
32
- color = input('', /* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
34
- /** Animation mode ('none' | 'subtle' | 'pop' | 'particles' | 'full') */
35
- animation = input('full', /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
37
- /** Whether animations are enabled (default: true) */
38
- animated = input(true, /* @ts-ignore */
39
- ...(ngDevMode ? [{ debugName: "animated" }] : /* istanbul ignore next */ []));
40
- /** Tooltip/label strings for each star index (1-based) */
41
- tooltips = input([], /* @ts-ignore */
42
- ...(ngDevMode ? [{ debugName: "tooltips" }] : /* istanbul ignore next */ []));
43
- /** Whether to show numeric score badge */
44
- showScore = input(false, /* @ts-ignore */
45
- ...(ngDevMode ? [{ debugName: "showScore" }] : /* istanbul ignore next */ []));
46
- /** Whether to show text label from tooltips or current state */
47
- showLabel = input(false, /* @ts-ignore */
48
- ...(ngDevMode ? [{ debugName: "showLabel" }] : /* istanbul ignore next */ []));
49
- /** Position of score/tooltip label */
50
- labelPosition = input('right', /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "labelPosition" }] : /* istanbul ignore next */ []));
52
- /** Component HTML ID */
53
- id = input('', /* @ts-ignore */
54
- ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
55
- /** Accessibility label */
56
- ariaLabel = input('Rating', /* @ts-ignore */
57
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
58
- // --- Outputs ---
59
- /** Emitted when value changes */
60
- valueChange = output();
61
- /** Emitted with old and new values */
62
- rateChange = output();
63
- /** Emitted when hovering over rating items */
64
- hoverChange = output();
65
- /** Emitted when rating is cleared */
66
- cleared = output();
67
- // --- Internal State ---
68
- defaultId = `talos-rating-${++ratingCounter}`;
69
- elementId = computed(() => this.id() || this.defaultId, /* @ts-ignore */
70
- ...(ngDevMode ? [{ debugName: "elementId" }] : /* istanbul ignore next */ []));
71
- internalValue = signal(0, /* @ts-ignore */
72
- ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
73
- hoverValue = signal(null, /* @ts-ignore */
74
- ...(ngDevMode ? [{ debugName: "hoverValue" }] : /* istanbul ignore next */ []));
75
- isDisabled = signal(false, /* @ts-ignore */
76
- ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
77
- isTouched = signal(false, /* @ts-ignore */
78
- ...(ngDevMode ? [{ debugName: "isTouched" }] : /* istanbul ignore next */ []));
79
- isFocused = signal(false, /* @ts-ignore */
80
- ...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
81
- /** Index of currently pop-animating star */
82
- animatingIndex = signal(null, /* @ts-ignore */
83
- ...(ngDevMode ? [{ debugName: "animatingIndex" }] : /* istanbul ignore next */ []));
84
- /** Index of currently particle-bursting star */
85
- activeBurstIndex = signal(null, /* @ts-ignore */
86
- ...(ngDevMode ? [{ debugName: "activeBurstIndex" }] : /* istanbul ignore next */ []));
87
- // --- Computed States ---
88
- effectiveDisabled = computed(() => this.disabled() || this.isDisabled(), /* @ts-ignore */
89
- ...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
90
- effectiveReadonly = computed(() => this.readonly(), /* @ts-ignore */
91
- ...(ngDevMode ? [{ debugName: "effectiveReadonly" }] : /* istanbul ignore next */ []));
92
- effectiveAnimation = computed(() => {
93
- if (!this.animated())
94
- return 'none';
95
- return this.animation();
96
- }, /* @ts-ignore */
97
- ...(ngDevMode ? [{ debugName: "effectiveAnimation" }] : /* istanbul ignore next */ []));
98
- showParticles = computed(() => {
99
- const anim = this.effectiveAnimation();
100
- return anim === 'particles' || anim === 'full';
101
- }, /* @ts-ignore */
102
- ...(ngDevMode ? [{ debugName: "showParticles" }] : /* istanbul ignore next */ []));
103
- showPop = computed(() => {
104
- const anim = this.effectiveAnimation();
105
- return anim === 'pop' || anim === 'full';
106
- }, /* @ts-ignore */
107
- ...(ngDevMode ? [{ debugName: "showPop" }] : /* istanbul ignore next */ []));
108
- currentValue = computed(() => {
109
- const internal = this.internalValue();
110
- const prop = this.value();
111
- const val = internal !== 0 || this.isTouched() ? internal : prop;
112
- return Math.max(0, Math.min(this.max(), Math.round(Number(val) || 0)));
113
- }, /* @ts-ignore */
114
- ...(ngDevMode ? [{ debugName: "currentValue" }] : /* istanbul ignore next */ []));
115
- displayValue = computed(() => {
116
- const hover = this.hoverValue();
117
- if (hover !== null) {
118
- return hover;
119
- }
120
- return this.currentValue();
121
- }, /* @ts-ignore */
122
- ...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
123
- /** Array of star item indices [1, 2, ..., max] */
124
- items = computed(() => {
125
- const count = Math.max(1, Math.floor(this.max()));
126
- return Array.from({ length: count }, (_, i) => i + 1);
127
- }, /* @ts-ignore */
128
- ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
129
- /** Active tooltip text based on current display value */
130
- activeTooltip = computed(() => {
131
- const list = this.tooltips();
132
- if (!list || list.length === 0)
133
- return '';
134
- const val = this.displayValue();
135
- if (val <= 0)
136
- return '';
137
- const index = Math.min(list.length - 1, Math.max(0, Math.ceil(val) - 1));
138
- return list[index] || '';
139
- }, /* @ts-ignore */
140
- ...(ngDevMode ? [{ debugName: "activeTooltip" }] : /* istanbul ignore next */ []));
141
- // --- ControlValueAccessor ---
142
- onChange = () => { };
143
- onTouched = () => { };
144
- writeValue(val) {
145
- const num = val === null || val === undefined || isNaN(val) ? 0 : Math.round(Number(val));
146
- this.internalValue.set(Math.max(0, Math.min(this.max(), num)));
147
- }
148
- registerOnChange(fn) {
149
- this.onChange = fn;
150
- }
151
- registerOnTouched(fn) {
152
- this.onTouched = fn;
153
- }
154
- setDisabledState(isDisabled) {
155
- this.isDisabled.set(isDisabled);
156
- }
157
- // --- Hover and Click Handlers ---
158
- onItemMouseEnter(index) {
159
- if (this.effectiveDisabled() || this.effectiveReadonly())
160
- return;
161
- this.hoverValue.set(index);
162
- this.hoverChange.emit({ value: index, index });
163
- }
164
- onItemClick(index) {
165
- if (this.effectiveDisabled() || this.effectiveReadonly())
166
- return;
167
- const current = this.currentValue();
168
- let nextVal = index;
169
- // Clearable toggle on re-clicking the current rating
170
- if (this.allowClear() && current === index) {
171
- nextVal = 0;
172
- this.cleared.emit();
173
- }
174
- else {
175
- // Trigger click pop & particle explosion if animation enabled
176
- if (this.effectiveAnimation() !== 'none') {
177
- this.triggerClickEffects(index);
178
- }
179
- }
180
- this.setValue(nextVal);
181
- }
182
- onMouseLeave() {
183
- if (this.effectiveDisabled() || this.effectiveReadonly())
184
- return;
185
- this.hoverValue.set(null);
186
- this.hoverChange.emit({ value: 0, index: -1 });
187
- }
188
- triggerClickEffects(index) {
189
- if (this.animationTimeout) {
190
- clearTimeout(this.animationTimeout);
191
- this.animationTimeout = null;
192
- }
193
- this.animatingIndex.set(index);
194
- this.activeBurstIndex.set(index);
195
- this.animationTimeout = setTimeout(() => {
196
- this.animatingIndex.set(null);
197
- this.activeBurstIndex.set(null);
198
- this.animationTimeout = null;
199
- }, 600);
200
- }
201
- // --- Keyboard Navigation ---
202
- onKeyDown(event) {
203
- if (this.effectiveDisabled() || this.effectiveReadonly())
204
- return;
205
- const current = this.currentValue();
206
- let nextVal = current;
207
- switch (event.key) {
208
- case 'ArrowRight':
209
- case 'ArrowUp':
210
- event.preventDefault();
211
- nextVal = Math.min(this.max(), current + 1);
212
- if (this.effectiveAnimation() !== 'none' && nextVal > current) {
213
- this.triggerClickEffects(nextVal);
214
- }
215
- this.setValue(nextVal);
216
- break;
217
- case 'ArrowLeft':
218
- case 'ArrowDown':
219
- event.preventDefault();
220
- nextVal = Math.max(0, current - 1);
221
- this.setValue(nextVal);
222
- break;
223
- case 'Home':
224
- event.preventDefault();
225
- nextVal = 0;
226
- this.setValue(nextVal);
227
- break;
228
- case 'End':
229
- event.preventDefault();
230
- nextVal = this.max();
231
- if (this.effectiveAnimation() !== 'none') {
232
- this.triggerClickEffects(nextVal);
233
- }
234
- this.setValue(nextVal);
235
- break;
236
- case 'Enter':
237
- case ' ':
238
- event.preventDefault();
239
- if (this.effectiveAnimation() !== 'none' && current > 0) {
240
- this.triggerClickEffects(current);
241
- }
242
- this.setValue(current);
243
- break;
244
- }
245
- }
246
- onFocus() {
247
- if (this.effectiveDisabled())
248
- return;
249
- this.isFocused.set(true);
250
- }
251
- onBlur() {
252
- this.isFocused.set(false);
253
- this.markAsTouched();
254
- }
255
- setValue(val) {
256
- const oldValue = this.currentValue();
257
- const clamped = Math.max(0, Math.min(this.max(), Math.round(val)));
258
- this.internalValue.set(clamped);
259
- this.hoverValue.set(null);
260
- this.onChange(clamped);
261
- this.valueChange.emit(clamped);
262
- this.rateChange.emit({ value: clamped, oldValue });
263
- this.markAsTouched();
264
- }
265
- markAsTouched() {
266
- if (!this.isTouched()) {
267
- this.isTouched.set(true);
268
- this.onTouched();
269
- }
270
- }
271
- isItemActive(index) {
272
- return this.displayValue() >= index;
273
- }
274
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
275
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: TalosRatingComponent, isStandalone: true, selector: "talos-rating, talos-rate", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null }, tooltips: { classPropertyName: "tooltips", publicName: "tooltips", isSignal: true, isRequired: false, transformFunction: null }, showScore: { classPropertyName: "showScore", publicName: "showScore", isSignal: true, isRequired: false, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", rateChange: "rateChange", hoverChange: "hoverChange", cleared: "cleared" }, host: { listeners: { "keydown": "onKeyDown($event)", "focus": "onFocus()", "blur": "onBlur()", "mouseleave": "onMouseLeave()" }, properties: { "class.is-disabled": "effectiveDisabled()", "class.is-readonly": "effectiveReadonly()", "class.is-interactive": "!effectiveDisabled() && !effectiveReadonly()", "class.is-focused": "isFocused()", "class.rating-sm": "size() === \"sm\"", "class.rating-md": "size() === \"md\"", "class.rating-lg": "size() === \"lg\"", "class.rating-xl": "size() === \"xl\"", "class.variant-warning": "variant() === \"warning\"", "class.variant-primary": "variant() === \"primary\"", "class.variant-danger": "variant() === \"danger\"", "class.variant-success": "variant() === \"success\"", "class.variant-purple": "variant() === \"purple\"", "class.variant-custom": "variant() === \"custom\"", "class.label-bottom": "labelPosition() === \"bottom\"", "class.anim-none": "effectiveAnimation() === \"none\"", "class.anim-subtle": "effectiveAnimation() === \"subtle\"", "class.anim-pop": "effectiveAnimation() === \"pop\"", "class.anim-particles": "effectiveAnimation() === \"particles\"", "class.anim-full": "effectiveAnimation() === \"full\"", "attr.role": "\"slider\"", "attr.tabindex": "effectiveDisabled() ? -1 : 0", "attr.aria-label": "ariaLabel()", "attr.aria-valuenow": "currentValue()", "attr.aria-valuemin": "0", "attr.aria-valuemax": "max()", "attr.aria-readonly": "effectiveReadonly()", "attr.aria-disabled": "effectiveDisabled()" }, classAttribute: "talos-rating-host" }, providers: [
276
- {
277
- provide: NG_VALUE_ACCESSOR,
278
- useExisting: forwardRef(() => TalosRatingComponent),
279
- multi: true
280
- }
281
- ], ngImport: i0, template: "<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;outline:none;border-radius:var(--talos-radius-sm, 4px);transition:box-shadow var(--talos-transition, .18s ease);--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fbbf24;--talos-rating-unfilled: var(--talos-border-default, #cbd5e1);--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem)}:host.variant-warning{--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fcd34d}:host.variant-primary{--talos-rating-fill: var(--talos-primary, #2563eb);--talos-rating-spark-alt: #60a5fa}:host.variant-danger{--talos-rating-fill: var(--talos-danger, #ef4444);--talos-rating-spark-alt: #f87171}:host.variant-success{--talos-rating-fill: var(--talos-success, #16a34a);--talos-rating-spark-alt: #4ade80}:host.variant-purple{--talos-rating-fill: var(--talos-purple, #8b5cf6);--talos-rating-spark-alt: #c084fc}:host.variant-custom{--talos-rating-fill: var(--talos-rating-custom-color, var(--talos-warning, #f59e0b));--talos-rating-spark-alt: var(--talos-rating-custom-color, #fbbf24)}:host.rating-sm{--talos-rating-size: 1.125rem;--talos-rating-gap: .25rem;--talos-rating-font-size: var(--talos-font-size-xs, .75rem);--particle-dist: 12px}:host.rating-md{--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem);--particle-dist: 16px}:host.rating-lg{--talos-rating-size: 1.75rem;--talos-rating-gap: .5rem;--talos-rating-font-size: var(--talos-font-size-md, .875rem);--particle-dist: 22px}:host.rating-xl{--talos-rating-size: 2.25rem;--talos-rating-gap: .625rem;--talos-rating-font-size: var(--talos-font-size-lg, 1rem);--particle-dist: 28px}:host.is-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}:host.is-readonly{cursor:default}:host:focus-visible{box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .2))}.talos-rating-container{display:inline-flex;align-items:center;gap:.625rem;-webkit-user-select:none;user-select:none;font-family:var(--talos-font-sans, inherit)}:host(.label-bottom) .talos-rating-container{flex-direction:column;align-items:flex-start;gap:.375rem}.talos-rating-stars{display:inline-flex;align-items:center;gap:var(--talos-rating-gap)}.talos-rating-star-btn{position:relative;background:transparent;border:none;padding:0;margin:0;line-height:0;display:inline-flex;align-items:center;justify-content:center;width:var(--talos-rating-size);height:var(--talos-rating-size);color:var(--talos-rating-unfilled);outline:none;cursor:default;transform-origin:center center;overflow:visible}:host(.is-interactive) .talos-rating-star-btn{cursor:pointer}.talos-rating-star-btn .talos-star-svg{width:var(--talos-rating-size);height:var(--talos-rating-size);stroke-width:1.75;stroke:var(--talos-rating-unfilled);fill:transparent;transition:color .15s ease,fill .15s ease,stroke .15s ease,transform .15s ease;transform-origin:center center}:host(.is-interactive:not(.anim-none)) .talos-rating-star-btn:hover .talos-star-svg{transform:scale(1.12)}.talos-rating-star-btn.is-active,.talos-rating-star-btn.is-hovered{color:var(--talos-rating-fill)}.talos-rating-star-btn.is-active .talos-star-svg,.talos-rating-star-btn.is-hovered .talos-star-svg{fill:var(--talos-rating-fill);stroke:var(--talos-rating-fill);filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.talos-rating-star-btn.is-animating .talos-star-svg{animation:talosStarPop .44s cubic-bezier(.175,.885,.32,1.275)}.talos-rating-star-btn:disabled{cursor:not-allowed}.talos-rating-particles{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:10}.talos-rating-particles .particle{position:absolute;top:0;left:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background-color:var(--talos-rating-fill);pointer-events:none;box-shadow:0 0 4px var(--talos-rating-fill);animation-duration:.5s;animation-timing-function:cubic-bezier(.165,.84,.44,1);animation-fill-mode:forwards}.talos-rating-particles .particle.p-1,.talos-rating-particles .particle.p-3,.talos-rating-particles .particle.p-5,.talos-rating-particles .particle.p-7{background-color:var(--talos-rating-spark-alt);box-shadow:0 0 5px var(--talos-rating-spark-alt)}.talos-rating-particles .particle.p-1{width:3.5px;height:3.5px;animation-name:burstNorthWest}.talos-rating-particles .particle.p-2{width:4.5px;height:4.5px;animation-name:burstNorth}.talos-rating-particles .particle.p-3{width:3px;height:3px;animation-name:burstNorthEast}.talos-rating-particles .particle.p-4{width:4.5px;height:4.5px;animation-name:burstEast}.talos-rating-particles .particle.p-5{width:3.5px;height:3.5px;animation-name:burstSouthEast}.talos-rating-particles .particle.p-6{width:4px;height:4px;animation-name:burstSouth}.talos-rating-particles .particle.p-7{width:3px;height:3px;animation-name:burstSouthWest}.talos-rating-particles .particle.p-8{width:4.5px;height:4.5px;animation-name:burstWest}@keyframes talosStarPop{0%{transform:scale(1)}30%{transform:scale(1.38) rotate(-6deg)}65%{transform:scale(.9) rotate(3deg)}85%{transform:scale(1) rotate(0)}to{transform:scale(1) rotate(0)}}@keyframes burstNorthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstNorth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}@keyframes burstNorthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstSouth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}.talos-rating-label-wrapper{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--talos-rating-font-size);line-height:1}.talos-rating-score-pill{display:inline-flex;align-items:baseline;padding:.15rem .45rem;font-weight:700;border-radius:var(--talos-radius-sm, 4px);background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-primary, #0f172a);border:1px solid var(--talos-border-subtle, #e2e8f0)}.talos-rating-score-pill .score-max{font-size:.85em;font-weight:500;color:var(--talos-text-muted, #64748b);margin-left:1px}.talos-rating-desc-text{font-weight:500;color:var(--talos-text-secondary, #334155)}:host(.anim-none) .talos-rating-star-btn,:host(.anim-none) .talos-star-svg,:host(.anim-none) .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}:host(.anim-subtle) .talos-rating-star-btn.is-animating .talos-star-svg{animation:none;transform:scale(1);transition:transform .15s ease}:host(.anim-pop) .talos-rating-particles{display:none!important}@media(prefers-reduced-motion:reduce){:host .talos-rating-star-btn,:host .talos-star-svg,:host .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}}:root[data-theme=dark],:root.dark,[data-theme=dark],[data-mode=dark],.dark,.dark-theme{--talos-rating-unfilled: rgba(255, 255, 255, .2)}:root[data-theme=dark] .talos-rating-star-btn .talos-star-svg,:root.dark .talos-rating-star-btn .talos-star-svg,[data-theme=dark] .talos-rating-star-btn .talos-star-svg,[data-mode=dark] .talos-rating-star-btn .talos-star-svg,.dark .talos-rating-star-btn .talos-star-svg,.dark-theme .talos-rating-star-btn .talos-star-svg{stroke:#ffffff40}:root[data-theme=dark] .talos-rating-score-pill,:root.dark .talos-rating-score-pill,[data-theme=dark] .talos-rating-score-pill,[data-mode=dark] .talos-rating-score-pill,.dark .talos-rating-score-pill,.dark-theme .talos-rating-score-pill{background-color:var(--talos-bg-subtle, #131d31);border-color:var(--talos-border-subtle, rgba(255, 255, 255, .08));color:var(--talos-text-primary, #f8fafc)}:root[data-theme=dark] .talos-rating-score-pill .score-max,:root.dark .talos-rating-score-pill .score-max,[data-theme=dark] .talos-rating-score-pill .score-max,[data-mode=dark] .talos-rating-score-pill .score-max,.dark .talos-rating-score-pill .score-max,.dark-theme .talos-rating-score-pill .score-max{color:var(--talos-text-muted, #94a3b8)}:root[data-theme=dark] .talos-rating-desc-text,:root.dark .talos-rating-desc-text,[data-theme=dark] .talos-rating-desc-text,[data-mode=dark] .talos-rating-desc-text,.dark .talos-rating-desc-text,.dark-theme .talos-rating-desc-text{color:var(--talos-text-secondary, #e2e8f0)}\n"] });
282
- }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingComponent, decorators: [{
284
- type: Component,
285
- args: [{ selector: 'talos-rating, talos-rate', providers: [
286
- {
287
- provide: NG_VALUE_ACCESSOR,
288
- useExisting: forwardRef(() => TalosRatingComponent),
289
- multi: true
290
- }
291
- ], host: {
292
- 'class': 'talos-rating-host',
293
- '[class.is-disabled]': 'effectiveDisabled()',
294
- '[class.is-readonly]': 'effectiveReadonly()',
295
- '[class.is-interactive]': '!effectiveDisabled() && !effectiveReadonly()',
296
- '[class.is-focused]': 'isFocused()',
297
- '[class.rating-sm]': 'size() === "sm"',
298
- '[class.rating-md]': 'size() === "md"',
299
- '[class.rating-lg]': 'size() === "lg"',
300
- '[class.rating-xl]': 'size() === "xl"',
301
- '[class.variant-warning]': 'variant() === "warning"',
302
- '[class.variant-primary]': 'variant() === "primary"',
303
- '[class.variant-danger]': 'variant() === "danger"',
304
- '[class.variant-success]': 'variant() === "success"',
305
- '[class.variant-purple]': 'variant() === "purple"',
306
- '[class.variant-custom]': 'variant() === "custom"',
307
- '[class.label-bottom]': 'labelPosition() === "bottom"',
308
- '[class.anim-none]': 'effectiveAnimation() === "none"',
309
- '[class.anim-subtle]': 'effectiveAnimation() === "subtle"',
310
- '[class.anim-pop]': 'effectiveAnimation() === "pop"',
311
- '[class.anim-particles]': 'effectiveAnimation() === "particles"',
312
- '[class.anim-full]': 'effectiveAnimation() === "full"',
313
- '[attr.role]': '"slider"',
314
- '[attr.tabindex]': 'effectiveDisabled() ? -1 : 0',
315
- '[attr.aria-label]': 'ariaLabel()',
316
- '[attr.aria-valuenow]': 'currentValue()',
317
- '[attr.aria-valuemin]': '0',
318
- '[attr.aria-valuemax]': 'max()',
319
- '[attr.aria-readonly]': 'effectiveReadonly()',
320
- '[attr.aria-disabled]': 'effectiveDisabled()',
321
- '(keydown)': 'onKeyDown($event)',
322
- '(focus)': 'onFocus()',
323
- '(blur)': 'onBlur()',
324
- '(mouseleave)': 'onMouseLeave()'
325
- }, template: "<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;outline:none;border-radius:var(--talos-radius-sm, 4px);transition:box-shadow var(--talos-transition, .18s ease);--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fbbf24;--talos-rating-unfilled: var(--talos-border-default, #cbd5e1);--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem)}:host.variant-warning{--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fcd34d}:host.variant-primary{--talos-rating-fill: var(--talos-primary, #2563eb);--talos-rating-spark-alt: #60a5fa}:host.variant-danger{--talos-rating-fill: var(--talos-danger, #ef4444);--talos-rating-spark-alt: #f87171}:host.variant-success{--talos-rating-fill: var(--talos-success, #16a34a);--talos-rating-spark-alt: #4ade80}:host.variant-purple{--talos-rating-fill: var(--talos-purple, #8b5cf6);--talos-rating-spark-alt: #c084fc}:host.variant-custom{--talos-rating-fill: var(--talos-rating-custom-color, var(--talos-warning, #f59e0b));--talos-rating-spark-alt: var(--talos-rating-custom-color, #fbbf24)}:host.rating-sm{--talos-rating-size: 1.125rem;--talos-rating-gap: .25rem;--talos-rating-font-size: var(--talos-font-size-xs, .75rem);--particle-dist: 12px}:host.rating-md{--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem);--particle-dist: 16px}:host.rating-lg{--talos-rating-size: 1.75rem;--talos-rating-gap: .5rem;--talos-rating-font-size: var(--talos-font-size-md, .875rem);--particle-dist: 22px}:host.rating-xl{--talos-rating-size: 2.25rem;--talos-rating-gap: .625rem;--talos-rating-font-size: var(--talos-font-size-lg, 1rem);--particle-dist: 28px}:host.is-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}:host.is-readonly{cursor:default}:host:focus-visible{box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .2))}.talos-rating-container{display:inline-flex;align-items:center;gap:.625rem;-webkit-user-select:none;user-select:none;font-family:var(--talos-font-sans, inherit)}:host(.label-bottom) .talos-rating-container{flex-direction:column;align-items:flex-start;gap:.375rem}.talos-rating-stars{display:inline-flex;align-items:center;gap:var(--talos-rating-gap)}.talos-rating-star-btn{position:relative;background:transparent;border:none;padding:0;margin:0;line-height:0;display:inline-flex;align-items:center;justify-content:center;width:var(--talos-rating-size);height:var(--talos-rating-size);color:var(--talos-rating-unfilled);outline:none;cursor:default;transform-origin:center center;overflow:visible}:host(.is-interactive) .talos-rating-star-btn{cursor:pointer}.talos-rating-star-btn .talos-star-svg{width:var(--talos-rating-size);height:var(--talos-rating-size);stroke-width:1.75;stroke:var(--talos-rating-unfilled);fill:transparent;transition:color .15s ease,fill .15s ease,stroke .15s ease,transform .15s ease;transform-origin:center center}:host(.is-interactive:not(.anim-none)) .talos-rating-star-btn:hover .talos-star-svg{transform:scale(1.12)}.talos-rating-star-btn.is-active,.talos-rating-star-btn.is-hovered{color:var(--talos-rating-fill)}.talos-rating-star-btn.is-active .talos-star-svg,.talos-rating-star-btn.is-hovered .talos-star-svg{fill:var(--talos-rating-fill);stroke:var(--talos-rating-fill);filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.talos-rating-star-btn.is-animating .talos-star-svg{animation:talosStarPop .44s cubic-bezier(.175,.885,.32,1.275)}.talos-rating-star-btn:disabled{cursor:not-allowed}.talos-rating-particles{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:10}.talos-rating-particles .particle{position:absolute;top:0;left:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background-color:var(--talos-rating-fill);pointer-events:none;box-shadow:0 0 4px var(--talos-rating-fill);animation-duration:.5s;animation-timing-function:cubic-bezier(.165,.84,.44,1);animation-fill-mode:forwards}.talos-rating-particles .particle.p-1,.talos-rating-particles .particle.p-3,.talos-rating-particles .particle.p-5,.talos-rating-particles .particle.p-7{background-color:var(--talos-rating-spark-alt);box-shadow:0 0 5px var(--talos-rating-spark-alt)}.talos-rating-particles .particle.p-1{width:3.5px;height:3.5px;animation-name:burstNorthWest}.talos-rating-particles .particle.p-2{width:4.5px;height:4.5px;animation-name:burstNorth}.talos-rating-particles .particle.p-3{width:3px;height:3px;animation-name:burstNorthEast}.talos-rating-particles .particle.p-4{width:4.5px;height:4.5px;animation-name:burstEast}.talos-rating-particles .particle.p-5{width:3.5px;height:3.5px;animation-name:burstSouthEast}.talos-rating-particles .particle.p-6{width:4px;height:4px;animation-name:burstSouth}.talos-rating-particles .particle.p-7{width:3px;height:3px;animation-name:burstSouthWest}.talos-rating-particles .particle.p-8{width:4.5px;height:4.5px;animation-name:burstWest}@keyframes talosStarPop{0%{transform:scale(1)}30%{transform:scale(1.38) rotate(-6deg)}65%{transform:scale(.9) rotate(3deg)}85%{transform:scale(1) rotate(0)}to{transform:scale(1) rotate(0)}}@keyframes burstNorthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstNorth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}@keyframes burstNorthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstSouth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}.talos-rating-label-wrapper{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--talos-rating-font-size);line-height:1}.talos-rating-score-pill{display:inline-flex;align-items:baseline;padding:.15rem .45rem;font-weight:700;border-radius:var(--talos-radius-sm, 4px);background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-primary, #0f172a);border:1px solid var(--talos-border-subtle, #e2e8f0)}.talos-rating-score-pill .score-max{font-size:.85em;font-weight:500;color:var(--talos-text-muted, #64748b);margin-left:1px}.talos-rating-desc-text{font-weight:500;color:var(--talos-text-secondary, #334155)}:host(.anim-none) .talos-rating-star-btn,:host(.anim-none) .talos-star-svg,:host(.anim-none) .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}:host(.anim-subtle) .talos-rating-star-btn.is-animating .talos-star-svg{animation:none;transform:scale(1);transition:transform .15s ease}:host(.anim-pop) .talos-rating-particles{display:none!important}@media(prefers-reduced-motion:reduce){:host .talos-rating-star-btn,:host .talos-star-svg,:host .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}}:root[data-theme=dark],:root.dark,[data-theme=dark],[data-mode=dark],.dark,.dark-theme{--talos-rating-unfilled: rgba(255, 255, 255, .2)}:root[data-theme=dark] .talos-rating-star-btn .talos-star-svg,:root.dark .talos-rating-star-btn .talos-star-svg,[data-theme=dark] .talos-rating-star-btn .talos-star-svg,[data-mode=dark] .talos-rating-star-btn .talos-star-svg,.dark .talos-rating-star-btn .talos-star-svg,.dark-theme .talos-rating-star-btn .talos-star-svg{stroke:#ffffff40}:root[data-theme=dark] .talos-rating-score-pill,:root.dark .talos-rating-score-pill,[data-theme=dark] .talos-rating-score-pill,[data-mode=dark] .talos-rating-score-pill,.dark .talos-rating-score-pill,.dark-theme .talos-rating-score-pill{background-color:var(--talos-bg-subtle, #131d31);border-color:var(--talos-border-subtle, rgba(255, 255, 255, .08));color:var(--talos-text-primary, #f8fafc)}:root[data-theme=dark] .talos-rating-score-pill .score-max,:root.dark .talos-rating-score-pill .score-max,[data-theme=dark] .talos-rating-score-pill .score-max,[data-mode=dark] .talos-rating-score-pill .score-max,.dark .talos-rating-score-pill .score-max,.dark-theme .talos-rating-score-pill .score-max{color:var(--talos-text-muted, #94a3b8)}:root[data-theme=dark] .talos-rating-desc-text,:root.dark .talos-rating-desc-text,[data-theme=dark] .talos-rating-desc-text,[data-mode=dark] .talos-rating-desc-text,.dark .talos-rating-desc-text,.dark-theme .talos-rating-desc-text{color:var(--talos-text-secondary, #e2e8f0)}\n"] }]
326
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], allowClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowClear", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }], tooltips: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltips", required: false }] }], showScore: [{ type: i0.Input, args: [{ isSignal: true, alias: "showScore", required: false }] }], showLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabel", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], rateChange: [{ type: i0.Output, args: ["rateChange"] }], hoverChange: [{ type: i0.Output, args: ["hoverChange"] }], cleared: [{ type: i0.Output, args: ["cleared"] }] } });
327
-
328
- class TalosRatingModule {
329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
330
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingModule, imports: [TalosRatingComponent], exports: [TalosRatingComponent] });
331
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingModule });
332
- }
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingModule, decorators: [{
334
- type: NgModule,
335
- args: [{
336
- imports: [TalosRatingComponent],
337
- exports: [TalosRatingComponent]
338
- }]
339
- }] });
340
-
341
- /**
342
- * Generated bundle index. Do not edit.
343
- */
344
-
345
- export { TalosRatingComponent, TalosRatingModule };
346
- //# sourceMappingURL=weeehaoooz-talos-ui-form-rating.mjs.map